From 5c61d6bc9245a72a53a2d61c44ae0b024ac7ed41 Mon Sep 17 00:00:00 2001 From: Sviatoslav Abakumov Date: Wed, 4 Mar 2026 11:55:30 +0400 Subject: [PATCH] fix(coding-agent): queue messages during branch summarization (#1803) Messages submitted while a branch summary was being generated were processed immediately instead of being queued. This happened because isCompacting only checked compaction abort controllers, not the branch summary abort controller. Include _branchSummaryAbortController in the isCompacting getter so all existing guards (message queueing, reload blocking) also apply during branch summarization. --- packages/coding-agent/src/core/agent-session.ts | 8 ++++++-- .../test/agent-session-tree-navigation.test.ts | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/src/core/agent-session.ts b/packages/coding-agent/src/core/agent-session.ts index 1542a509..57ae3dbb 100644 --- a/packages/coding-agent/src/core/agent-session.ts +++ b/packages/coding-agent/src/core/agent-session.ts @@ -677,9 +677,13 @@ export class AgentSession { this.agent.setSystemPrompt(this._baseSystemPrompt); } - /** Whether auto-compaction is currently running */ + /** Whether compaction or branch summarization is currently running */ get isCompacting(): boolean { - return this._autoCompactionAbortController !== undefined || this._compactionAbortController !== undefined; + return ( + this._autoCompactionAbortController !== undefined || + this._compactionAbortController !== undefined || + this._branchSummaryAbortController !== undefined + ); } /** All messages including custom types like BashExecutionMessage */ diff --git a/packages/coding-agent/test/agent-session-tree-navigation.test.ts b/packages/coding-agent/test/agent-session-tree-navigation.test.ts index 4e71448b..35abae1e 100644 --- a/packages/coding-agent/test/agent-session-tree-navigation.test.ts +++ b/packages/coding-agent/test/agent-session-tree-navigation.test.ts @@ -193,6 +193,10 @@ describe.skipIf(!API_KEY)("AgentSession tree navigation e2e", () => { // Abort after a short delay (let the LLM call start) await new Promise((resolve) => setTimeout(resolve, 100)); + + // isCompacting should be true during branch summarization + expect(session.isCompacting).toBe(true); + session.abortBranchSummary(); const result = await navigationPromise;