refactor: dedupe embedded prompt append

This commit is contained in:
Peter Steinberger
2026-01-08 00:08:22 +00:00
parent 4f58e6aa7c
commit 5c38d17c4b
2 changed files with 48 additions and 4 deletions

View File

@@ -119,10 +119,18 @@ describe("createSystemPromptAppender", () => {
const appender = createSystemPromptAppender("APPEND_SECTION");
const finalPrompt = appender(defaultPrompt);
const occurrences = finalPrompt.split(sentinel).length - 1;
const contextHeaders = finalPrompt.split("# Project Context").length - 1;
expect(typeof appender).toBe("function");
expect(occurrences).toBe(1);
expect(contextHeaders).toBe(1);
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", () => {

View File

@@ -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(
appendPrompt: string,
): (defaultPrompt: string) => string {
@@ -784,7 +820,7 @@ export async function compactEmbeddedPiSession(params: {
params.config?.agent?.userTimezone,
);
const userTime = formatUserTime(new Date(), userTimezone);
const appendPrompt = buildAgentSystemPromptAppend({
const appendPrompt = buildEmbeddedAppendPrompt({
workspaceDir: effectiveWorkspace,
defaultThinkLevel: params.thinkLevel,
extraSystemPrompt: params.extraSystemPrompt,
@@ -795,7 +831,7 @@ export async function compactEmbeddedPiSession(params: {
),
runtimeInfo,
sandboxInfo,
toolNames: tools.map((tool) => tool.name),
tools,
modelAliasLines: buildModelAliasLines(params.config),
userTimezone,
userTime,
@@ -1104,7 +1140,7 @@ export async function runEmbeddedPiAgent(params: {
params.config?.agent?.userTimezone,
);
const userTime = formatUserTime(new Date(), userTimezone);
const appendPrompt = buildAgentSystemPromptAppend({
const appendPrompt = buildEmbeddedAppendPrompt({
workspaceDir: effectiveWorkspace,
defaultThinkLevel: thinkLevel,
extraSystemPrompt: params.extraSystemPrompt,
@@ -1115,7 +1151,7 @@ export async function runEmbeddedPiAgent(params: {
),
runtimeInfo,
sandboxInfo,
toolNames: tools.map((tool) => tool.name),
tools,
modelAliasLines: buildModelAliasLines(params.config),
userTimezone,
userTime,