diff --git a/packages/server/src/server/agent/providers/claude-agent.ts b/packages/server/src/server/agent/providers/claude-agent.ts index 8d7ebf500..c27355636 100644 --- a/packages/server/src/server/agent/providers/claude-agent.ts +++ b/packages/server/src/server/agent/providers/claude-agent.ts @@ -770,6 +770,7 @@ type TimelineMessageState = { class TimelineAssembler { private readonly messages = new Map(); + private readonly finalizedMessageIds = new Set(); private readonly activeMessageByRun = new Map(); private syntheticMessageCounter = 0; @@ -799,6 +800,9 @@ class TimelineAssembler { if (!messageId) { return []; } + if (this.finalizedMessageIds.has(messageId)) { + return []; + } const state = this.ensureMessageState(messageId, runId); const fragments = this.extractFragments(message.message?.content); return this.applyAbsoluteFragments(state, fragments); @@ -922,6 +926,8 @@ class TimelineAssembler { if (runId && this.activeMessageByRun.get(runId) === messageId) { this.activeMessageByRun.delete(runId); } + this.finalizedMessageIds.add(messageId); + this.messages.delete(messageId); return items; }