From 4ade006528a64f0fe648c5f1066c9cabb6adf48d Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 1 Aug 2026 01:55:23 +0200 Subject: [PATCH] fix(timeline): exclude attachments from canonical prompt text Structured provider prompts can include hidden history attachments before the user's text. Persist only plain prompt blocks so authoritative user messages match what the composer displayed while provider input remains unchanged. --- .../src/server/agent/agent-manager.test.ts | 17 ++++++++++++++--- .../server/src/server/agent/agent-manager.ts | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/server/src/server/agent/agent-manager.test.ts b/packages/server/src/server/agent/agent-manager.test.ts index 77fd2b42de..a768c67b7b 100644 --- a/packages/server/src/server/agent/agent-manager.test.ts +++ b/packages/server/src/server/agent/agent-manager.test.ts @@ -8183,9 +8183,20 @@ test("authoritative timeline includes provider-emitted submitted user prompt", a workspaceId: undefined, }); - await manager.runAgent(snapshot.id, "hello from composer", { - clientMessageId: "msg-client-1", - }); + await manager.runAgent( + snapshot.id, + [ + { + type: "text", + mimeType: "text/plain", + contextKind: "chat_history", + title: "Chat history", + text: "hidden fork history", + }, + { type: "text", text: "hello from composer" }, + ], + { clientMessageId: "msg-client-1" }, + ); const liveEvents = events.filter( (event): event is Extract => diff --git a/packages/server/src/server/agent/agent-manager.ts b/packages/server/src/server/agent/agent-manager.ts index a973b5cae4..23f3fbf2bd 100644 --- a/packages/server/src/server/agent/agent-manager.ts +++ b/packages/server/src/server/agent/agent-manager.ts @@ -95,7 +95,7 @@ function submittedPromptText(prompt: AgentPromptInput): string { return prompt; } return prompt - .flatMap((block) => (block.type === "text" ? [block.text] : [])) + .flatMap((block) => (block.type === "text" && !("mimeType" in block) ? [block.text] : [])) .join("\n") .trim(); }