fix(coding-agent): preserve active operation UI during tree navigation

Follow-up to e687434a6.

Recheck compaction state after navigation dialogs and response cancellation before replacing status indicators or escape handlers. Document navigation conflicts and add regression coverage.
This commit is contained in:
Vegard Stikbakke
2026-09-07 12:59:20 +02:00
parent 1f78cea7ad
commit 47acd8e6cf
5 changed files with 156 additions and 2 deletions
+1 -1
View File
@@ -1203,7 +1203,7 @@ Options:
### ctx.navigateTree(targetId, options?)
Navigate to a different point in the session tree:
Navigate to a different point in the session tree. Rejects while an agent response, manual or automatic compaction, or another tree navigation is active, even with `summarize: false`. These conflicts leave the active branch unchanged and reject the promise rather than returning `{ cancelled: true }`. Wait for the active operation to finish (for example, with `await ctx.waitForIdle()` in a command handler) and retry:
```typescript
const result = await ctx.navigateTree("entry-id-456", {
+2
View File
@@ -111,6 +111,8 @@ interface AgentSession {
}
```
`session.navigateTree()` rejects while an agent response, manual or automatic compaction, or another tree navigation is active, even with `summarize: false`. It does not queue navigation or return `{ cancelled: true }` for these conflicts. Wait for the active operation to finish (for example, with `await session.waitForIdle()`) and retry. Rejection leaves the active branch unchanged.
Session replacement APIs such as new-session, resume, fork, and import live on `AgentSessionRuntime`, not on `AgentSession`.
### createAgentSessionRuntime() and AgentSessionRuntime