From 15f2a5659024fed2cce17c9820dfd678e68895b8 Mon Sep 17 00:00:00 2001 From: Vincent Koc <25068+vincentkoc@users.noreply.github.com> Date: Sun, 21 Jun 2026 06:42:55 +0800 Subject: [PATCH] fix(harness): preserve empty prompt ranges --- .../prompt-compaction-hook-helpers.test.ts | 19 +++++++++++++++++++ .../harness/prompt-compaction-hook-helpers.ts | 7 ++++++- 2 files changed, 25 insertions(+), 1 deletion(-) 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: