refactor: dedupe embedded prompt append
This commit is contained in:
@@ -119,10 +119,18 @@ describe("createSystemPromptAppender", () => {
|
|||||||
const appender = createSystemPromptAppender("APPEND_SECTION");
|
const appender = createSystemPromptAppender("APPEND_SECTION");
|
||||||
const finalPrompt = appender(defaultPrompt);
|
const finalPrompt = appender(defaultPrompt);
|
||||||
const occurrences = finalPrompt.split(sentinel).length - 1;
|
const occurrences = finalPrompt.split(sentinel).length - 1;
|
||||||
|
const contextHeaders = finalPrompt.split("# Project Context").length - 1;
|
||||||
expect(typeof appender).toBe("function");
|
expect(typeof appender).toBe("function");
|
||||||
expect(occurrences).toBe(1);
|
expect(occurrences).toBe(1);
|
||||||
|
expect(contextHeaders).toBe(1);
|
||||||
expect(finalPrompt).toContain("APPEND_SECTION");
|
expect(finalPrompt).toContain("APPEND_SECTION");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("returns the default prompt when append text is empty", () => {
|
||||||
|
const defaultPrompt = buildSystemPrompt({ cwd: "/tmp" });
|
||||||
|
const appender = createSystemPromptAppender(" \n ");
|
||||||
|
expect(appender(defaultPrompt)).toBe(defaultPrompt);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("applyGoogleTurnOrderingFix", () => {
|
describe("applyGoogleTurnOrderingFix", () => {
|
||||||
|
|||||||
@@ -491,6 +491,42 @@ export function buildEmbeddedSandboxInfo(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildEmbeddedAppendPrompt(params: {
|
||||||
|
workspaceDir: string;
|
||||||
|
defaultThinkLevel?: ThinkLevel;
|
||||||
|
extraSystemPrompt?: string;
|
||||||
|
ownerNumbers?: string[];
|
||||||
|
reasoningTagHint: boolean;
|
||||||
|
heartbeatPrompt?: string;
|
||||||
|
runtimeInfo: {
|
||||||
|
host: string;
|
||||||
|
os: string;
|
||||||
|
arch: string;
|
||||||
|
node: string;
|
||||||
|
model: string;
|
||||||
|
};
|
||||||
|
sandboxInfo?: EmbeddedSandboxInfo;
|
||||||
|
tools: AgentTool[];
|
||||||
|
modelAliasLines: string[];
|
||||||
|
userTimezone: string;
|
||||||
|
userTime?: string;
|
||||||
|
}): string {
|
||||||
|
return buildAgentSystemPromptAppend({
|
||||||
|
workspaceDir: params.workspaceDir,
|
||||||
|
defaultThinkLevel: params.defaultThinkLevel,
|
||||||
|
extraSystemPrompt: params.extraSystemPrompt,
|
||||||
|
ownerNumbers: params.ownerNumbers,
|
||||||
|
reasoningTagHint: params.reasoningTagHint,
|
||||||
|
heartbeatPrompt: params.heartbeatPrompt,
|
||||||
|
runtimeInfo: params.runtimeInfo,
|
||||||
|
sandboxInfo: params.sandboxInfo,
|
||||||
|
toolNames: params.tools.map((tool) => tool.name),
|
||||||
|
modelAliasLines: params.modelAliasLines,
|
||||||
|
userTimezone: params.userTimezone,
|
||||||
|
userTime: params.userTime,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function createSystemPromptAppender(
|
export function createSystemPromptAppender(
|
||||||
appendPrompt: string,
|
appendPrompt: string,
|
||||||
): (defaultPrompt: string) => string {
|
): (defaultPrompt: string) => string {
|
||||||
@@ -784,7 +820,7 @@ export async function compactEmbeddedPiSession(params: {
|
|||||||
params.config?.agent?.userTimezone,
|
params.config?.agent?.userTimezone,
|
||||||
);
|
);
|
||||||
const userTime = formatUserTime(new Date(), userTimezone);
|
const userTime = formatUserTime(new Date(), userTimezone);
|
||||||
const appendPrompt = buildAgentSystemPromptAppend({
|
const appendPrompt = buildEmbeddedAppendPrompt({
|
||||||
workspaceDir: effectiveWorkspace,
|
workspaceDir: effectiveWorkspace,
|
||||||
defaultThinkLevel: params.thinkLevel,
|
defaultThinkLevel: params.thinkLevel,
|
||||||
extraSystemPrompt: params.extraSystemPrompt,
|
extraSystemPrompt: params.extraSystemPrompt,
|
||||||
@@ -795,7 +831,7 @@ export async function compactEmbeddedPiSession(params: {
|
|||||||
),
|
),
|
||||||
runtimeInfo,
|
runtimeInfo,
|
||||||
sandboxInfo,
|
sandboxInfo,
|
||||||
toolNames: tools.map((tool) => tool.name),
|
tools,
|
||||||
modelAliasLines: buildModelAliasLines(params.config),
|
modelAliasLines: buildModelAliasLines(params.config),
|
||||||
userTimezone,
|
userTimezone,
|
||||||
userTime,
|
userTime,
|
||||||
@@ -1104,7 +1140,7 @@ export async function runEmbeddedPiAgent(params: {
|
|||||||
params.config?.agent?.userTimezone,
|
params.config?.agent?.userTimezone,
|
||||||
);
|
);
|
||||||
const userTime = formatUserTime(new Date(), userTimezone);
|
const userTime = formatUserTime(new Date(), userTimezone);
|
||||||
const appendPrompt = buildAgentSystemPromptAppend({
|
const appendPrompt = buildEmbeddedAppendPrompt({
|
||||||
workspaceDir: effectiveWorkspace,
|
workspaceDir: effectiveWorkspace,
|
||||||
defaultThinkLevel: thinkLevel,
|
defaultThinkLevel: thinkLevel,
|
||||||
extraSystemPrompt: params.extraSystemPrompt,
|
extraSystemPrompt: params.extraSystemPrompt,
|
||||||
@@ -1115,7 +1151,7 @@ export async function runEmbeddedPiAgent(params: {
|
|||||||
),
|
),
|
||||||
runtimeInfo,
|
runtimeInfo,
|
||||||
sandboxInfo,
|
sandboxInfo,
|
||||||
toolNames: tools.map((tool) => tool.name),
|
tools,
|
||||||
modelAliasLines: buildModelAliasLines(params.config),
|
modelAliasLines: buildModelAliasLines(params.config),
|
||||||
userTimezone,
|
userTimezone,
|
||||||
userTime,
|
userTime,
|
||||||
|
|||||||
Reference in New Issue
Block a user