Skip to content

Commit 216ccca

Browse files
committed
fix(agent-core): track open exchange during pre-scan and remove cleaned messages from replay
- Pre-scan now tracks hasOpenToolExchange: a user message arriving while a tool exchange is open is deferred, not a turn boundary. This prevents valid same-turn tool calls from being marked stale. - cleanupOrphanedToolCalls now removes orphaned messages from the replay builder via removeLastMessages(), so ResumeSessionResult doesn't include stale messages.
1 parent e966bbd commit 216ccca

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

  • packages/agent-core/src/agent/context

packages/agent-core/src/agent/context/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,17 @@ export class ContextMemory {
360360
}
361361
}
362362

363-
this._history = this._history.filter((_, index) => !indicesToRemove.has(index));
363+
const removedMessages = new Set<ContextMessage>();
364+
this._history = this._history.filter((message, index) => {
365+
if (indicesToRemove.has(index)) {
366+
removedMessages.add(message);
367+
return false;
368+
}
369+
return true;
370+
});
371+
// Also remove from replay builder so ResumeSessionResult doesn't
372+
// include stale orphaned messages.
373+
this.agent.replayBuilder.removeLastMessages(removedMessages);
364374
}
365375

366376
// Flush any deferred messages that were blocked by the stale pending set.

0 commit comments

Comments
 (0)