diff --git a/src/agents/harness/prompt-compaction-hook-helpers.test.ts b/src/agents/harness/prompt-compaction-hook-helpers.test.ts index dd88a8f8ce6..e3cea47b335 100644 --- a/src/agents/harness/prompt-compaction-hook-helpers.test.ts +++ b/src/agents/harness/prompt-compaction-hook-helpers.test.ts @@ -44,4 +44,23 @@ describe("resolveAgentHarnessBeforePromptBuildResult", () => { promptInputRange: { start: 16, end: 21 }, }); }); + + it("keeps an empty input range between prepended and appended context", async () => { + const result = await resolveAgentHarnessBeforePromptBuildResult({ + prompt: "", + developerInstructions: "base instructions", + messages: [], + ctx: {}, + beforeAgentStartResult: { + appendContext: "appended context", + prependContext: "prepended context", + }, + }); + + expect(result).toEqual({ + prompt: "prepended context\n\nappended context", + developerInstructions: "base instructions", + promptInputRange: { start: 17, end: 17 }, + }); + }); }); diff --git a/src/agents/harness/prompt-compaction-hook-helpers.ts b/src/agents/harness/prompt-compaction-hook-helpers.ts index 2b1f641c313..a47748c8a46 100644 --- a/src/agents/harness/prompt-compaction-hook-helpers.ts +++ b/src/agents/harness/prompt-compaction-hook-helpers.ts @@ -88,7 +88,12 @@ export async function resolveAgentHarnessBeforePromptBuildResult(params: { ]); const prompt = joinPresentTextSegments([promptPrefix, params.prompt, promptSuffix]) ?? params.prompt; - const promptInputStart = promptPrefix ? promptPrefix.length + 2 : 0; + const promptInputStart = + params.prompt.length === 0 + ? (promptPrefix?.length ?? 0) + : promptPrefix + ? promptPrefix.length + 2 + : 0; return { prompt, developerInstructions: