fix: align embedded runner with session API changes
This commit is contained in:
parent
bcbb447357
commit
3367b2aa27
4 changed files with 55 additions and 15 deletions
|
|
@ -18,7 +18,7 @@ import { ensureAuthProfileStore, saveAuthProfileStore } from "./store.js";
|
||||||
const OAUTH_PROVIDER_IDS = new Set(getOAuthProviders().map((provider) => provider.id));
|
const OAUTH_PROVIDER_IDS = new Set(getOAuthProviders().map((provider) => provider.id));
|
||||||
|
|
||||||
const resolveOAuthProvider = (provider: string): OAuthProvider | null =>
|
const resolveOAuthProvider = (provider: string): OAuthProvider | null =>
|
||||||
OAUTH_PROVIDER_IDS.has(provider as OAuthProvider) ? (provider as OAuthProvider) : null;
|
OAUTH_PROVIDER_IDS.has(provider) ? provider : null;
|
||||||
|
|
||||||
function buildOAuthApiKey(provider: string, credentials: OAuthCredentials): string {
|
function buildOAuthApiKey(provider: string, credentials: OAuthCredentials): string {
|
||||||
const needsProjectId = provider === "google-gemini-cli" || provider === "google-antigravity";
|
const needsProjectId = provider === "google-gemini-cli" || provider === "google-antigravity";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import {
|
import {
|
||||||
createAgentSession,
|
createAgentSession,
|
||||||
estimateTokens,
|
estimateTokens,
|
||||||
|
DefaultResourceLoader,
|
||||||
SessionManager,
|
SessionManager,
|
||||||
SettingsManager,
|
SettingsManager,
|
||||||
} from "@mariozechner/pi-coding-agent";
|
} from "@mariozechner/pi-coding-agent";
|
||||||
|
|
@ -64,7 +65,11 @@ import { log } from "./logger.js";
|
||||||
import { buildModelAliasLines, resolveModel } from "./model.js";
|
import { buildModelAliasLines, resolveModel } from "./model.js";
|
||||||
import { buildEmbeddedSandboxInfo } from "./sandbox-info.js";
|
import { buildEmbeddedSandboxInfo } from "./sandbox-info.js";
|
||||||
import { prewarmSessionFile, trackSessionManagerAccess } from "./session-manager-cache.js";
|
import { prewarmSessionFile, trackSessionManagerAccess } from "./session-manager-cache.js";
|
||||||
import { buildEmbeddedSystemPrompt, createSystemPromptOverride } from "./system-prompt.js";
|
import {
|
||||||
|
applySystemPromptOverrideToSession,
|
||||||
|
buildEmbeddedSystemPrompt,
|
||||||
|
createSystemPromptOverride,
|
||||||
|
} from "./system-prompt.js";
|
||||||
import { splitSdkTools } from "./tool-split.js";
|
import { splitSdkTools } from "./tool-split.js";
|
||||||
import { describeUnknownError, mapThinkingLevel, resolveExecToolDefaults } from "./utils.js";
|
import { describeUnknownError, mapThinkingLevel, resolveExecToolDefaults } from "./utils.js";
|
||||||
|
|
||||||
|
|
@ -347,7 +352,7 @@ export async function compactEmbeddedPiSessionDirect(
|
||||||
userTimeFormat,
|
userTimeFormat,
|
||||||
contextFiles,
|
contextFiles,
|
||||||
});
|
});
|
||||||
const systemPrompt = createSystemPromptOverride(appendPrompt);
|
const systemPromptOverride = createSystemPromptOverride(appendPrompt);
|
||||||
|
|
||||||
const sessionLock = await acquireSessionWriteLock({
|
const sessionLock = await acquireSessionWriteLock({
|
||||||
sessionFile: params.sessionFile,
|
sessionFile: params.sessionFile,
|
||||||
|
|
@ -383,6 +388,13 @@ export async function compactEmbeddedPiSessionDirect(
|
||||||
sandboxEnabled: !!sandbox?.enabled,
|
sandboxEnabled: !!sandbox?.enabled,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const resourceLoader = new DefaultResourceLoader({
|
||||||
|
cwd: resolvedWorkspace,
|
||||||
|
agentDir,
|
||||||
|
settingsManager,
|
||||||
|
additionalExtensionPaths,
|
||||||
|
});
|
||||||
|
await resourceLoader.reload();
|
||||||
const { session } = await createAgentSession({
|
const { session } = await createAgentSession({
|
||||||
cwd: resolvedWorkspace,
|
cwd: resolvedWorkspace,
|
||||||
agentDir,
|
agentDir,
|
||||||
|
|
@ -394,11 +406,9 @@ export async function compactEmbeddedPiSessionDirect(
|
||||||
customTools,
|
customTools,
|
||||||
sessionManager,
|
sessionManager,
|
||||||
settingsManager,
|
settingsManager,
|
||||||
systemPrompt,
|
resourceLoader,
|
||||||
additionalExtensionPaths,
|
|
||||||
skills: [],
|
|
||||||
contextFiles: [],
|
|
||||||
});
|
});
|
||||||
|
applySystemPromptOverrideToSession(session, systemPromptOverride);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const prior = await sanitizeSessionHistory({
|
const prior = await sanitizeSessionHistory({
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
||||||
import type { ImageContent } from "@mariozechner/pi-ai";
|
import type { ImageContent } from "@mariozechner/pi-ai";
|
||||||
import { streamSimple } from "@mariozechner/pi-ai";
|
import { streamSimple } from "@mariozechner/pi-ai";
|
||||||
import { createAgentSession, SessionManager, SettingsManager } from "@mariozechner/pi-coding-agent";
|
import {
|
||||||
|
createAgentSession,
|
||||||
|
DefaultResourceLoader,
|
||||||
|
SessionManager,
|
||||||
|
SettingsManager,
|
||||||
|
} from "@mariozechner/pi-coding-agent";
|
||||||
import fs from "node:fs/promises";
|
import fs from "node:fs/promises";
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
import type { EmbeddedRunAttemptParams, EmbeddedRunAttemptResult } from "./types.js";
|
import type { EmbeddedRunAttemptParams, EmbeddedRunAttemptResult } from "./types.js";
|
||||||
|
|
@ -78,7 +83,11 @@ import {
|
||||||
import { buildEmbeddedSandboxInfo } from "../sandbox-info.js";
|
import { buildEmbeddedSandboxInfo } from "../sandbox-info.js";
|
||||||
import { prewarmSessionFile, trackSessionManagerAccess } from "../session-manager-cache.js";
|
import { prewarmSessionFile, trackSessionManagerAccess } from "../session-manager-cache.js";
|
||||||
import { prepareSessionManagerForRun } from "../session-manager-init.js";
|
import { prepareSessionManagerForRun } from "../session-manager-init.js";
|
||||||
import { buildEmbeddedSystemPrompt, createSystemPromptOverride } from "../system-prompt.js";
|
import {
|
||||||
|
applySystemPromptOverrideToSession,
|
||||||
|
buildEmbeddedSystemPrompt,
|
||||||
|
createSystemPromptOverride,
|
||||||
|
} from "../system-prompt.js";
|
||||||
import { splitSdkTools } from "../tool-split.js";
|
import { splitSdkTools } from "../tool-split.js";
|
||||||
import { describeUnknownError, mapThinkingLevel } from "../utils.js";
|
import { describeUnknownError, mapThinkingLevel } from "../utils.js";
|
||||||
import { detectAndLoadPromptImages } from "./images.js";
|
import { detectAndLoadPromptImages } from "./images.js";
|
||||||
|
|
@ -385,7 +394,8 @@ export async function runEmbeddedAttempt(
|
||||||
skillsPrompt,
|
skillsPrompt,
|
||||||
tools,
|
tools,
|
||||||
});
|
});
|
||||||
const systemPrompt = createSystemPromptOverride(appendPrompt);
|
const systemPromptOverride = createSystemPromptOverride(appendPrompt);
|
||||||
|
const systemPromptText = systemPromptOverride();
|
||||||
|
|
||||||
const sessionLock = await acquireSessionWriteLock({
|
const sessionLock = await acquireSessionWriteLock({
|
||||||
sessionFile: params.sessionFile,
|
sessionFile: params.sessionFile,
|
||||||
|
|
@ -457,6 +467,13 @@ export async function runEmbeddedAttempt(
|
||||||
|
|
||||||
const allCustomTools = [...customTools, ...clientToolDefs];
|
const allCustomTools = [...customTools, ...clientToolDefs];
|
||||||
|
|
||||||
|
const resourceLoader = new DefaultResourceLoader({
|
||||||
|
cwd: resolvedWorkspace,
|
||||||
|
agentDir,
|
||||||
|
settingsManager,
|
||||||
|
additionalExtensionPaths,
|
||||||
|
});
|
||||||
|
await resourceLoader.reload();
|
||||||
({ session } = await createAgentSession({
|
({ session } = await createAgentSession({
|
||||||
cwd: resolvedWorkspace,
|
cwd: resolvedWorkspace,
|
||||||
agentDir,
|
agentDir,
|
||||||
|
|
@ -468,11 +485,9 @@ export async function runEmbeddedAttempt(
|
||||||
customTools: allCustomTools,
|
customTools: allCustomTools,
|
||||||
sessionManager,
|
sessionManager,
|
||||||
settingsManager,
|
settingsManager,
|
||||||
systemPrompt,
|
resourceLoader,
|
||||||
additionalExtensionPaths,
|
|
||||||
skills: [],
|
|
||||||
contextFiles: [],
|
|
||||||
}));
|
}));
|
||||||
|
applySystemPromptOverrideToSession(session, systemPromptOverride);
|
||||||
if (!session) {
|
if (!session) {
|
||||||
throw new Error("Embedded agent session missing");
|
throw new Error("Embedded agent session missing");
|
||||||
}
|
}
|
||||||
|
|
@ -513,7 +528,7 @@ export async function runEmbeddedAttempt(
|
||||||
if (cacheTrace) {
|
if (cacheTrace) {
|
||||||
cacheTrace.recordStage("session:loaded", {
|
cacheTrace.recordStage("session:loaded", {
|
||||||
messages: activeSession.messages,
|
messages: activeSession.messages,
|
||||||
system: systemPrompt,
|
system: systemPromptText,
|
||||||
note: "after session create",
|
note: "after session create",
|
||||||
});
|
});
|
||||||
activeSession.agent.streamFn = cacheTrace.wrapStreamFn(activeSession.agent.streamFn);
|
activeSession.agent.streamFn = cacheTrace.wrapStreamFn(activeSession.agent.streamFn);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
||||||
|
import type { AgentSession } from "@mariozechner/pi-coding-agent";
|
||||||
import type { ResolvedTimeFormat } from "../date-time.js";
|
import type { ResolvedTimeFormat } from "../date-time.js";
|
||||||
import type { EmbeddedContextFile } from "../pi-embedded-helpers.js";
|
import type { EmbeddedContextFile } from "../pi-embedded-helpers.js";
|
||||||
import type { EmbeddedSandboxInfo } from "./types.js";
|
import type { EmbeddedSandboxInfo } from "./types.js";
|
||||||
|
|
@ -79,3 +80,17 @@ export function createSystemPromptOverride(
|
||||||
const trimmed = systemPrompt.trim();
|
const trimmed = systemPrompt.trim();
|
||||||
return () => trimmed;
|
return () => trimmed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function applySystemPromptOverrideToSession(
|
||||||
|
session: AgentSession,
|
||||||
|
override: (defaultPrompt?: string) => string,
|
||||||
|
) {
|
||||||
|
const prompt = override().trim();
|
||||||
|
session.agent.setSystemPrompt(prompt);
|
||||||
|
const mutableSession = session as unknown as {
|
||||||
|
_baseSystemPrompt?: string;
|
||||||
|
_rebuildSystemPrompt?: (toolNames: string[]) => string;
|
||||||
|
};
|
||||||
|
mutableSession._baseSystemPrompt = prompt;
|
||||||
|
mutableSession._rebuildSystemPrompt = () => prompt;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue