Files
vscode/src/vs/platform
Tyler James Leonhardt 47523f72f5 agentHost/claude: Phase 9 — abort + steering + changeModel + crash recovery (#316292)
* agentHost/claude: Phase 9 — abort + steering + changeModel + crash recovery

Implements the runtime mutation surface for live Claude sessions:

- abortSession via _abortController.abort() (mirrors production reference)
- setPendingMessages steering via priority:'now' SDKUserMessage with
  steering_consumed signal on iterable yield
- changeModel hot-swap via Query.setModel + Query.applyFlagSettings, with
  'max' effort runtime clamp to 'xhigh' (single seam in claudeModelConfig)
- Yield-restart primitive: ClaudeMaterializer gains 'fresh'|'resume' start
  modes and a sibling materializeResume() for crash/abort recovery without
  re-firing onDidMaterializeSession
- Subprocess crash recovery without permanent _fatalError latch — sessions
  stay reusable across aborts and crashes via _rebindQuery + bijective
  state replay (model + effort + permissionMode)

Refactored claudeAgentSession into three focused units:

- ClaudePromptQueue — owns the SDKUserMessage iterable handed to query(),
  parks/wakes via DeferredPromise, batches turn completion at full drain
  (M10), fires steering_consumed on yield
- ClaudeSdkMessageRouter — dispatches each SDK message through the
  per-turn mapper, swallowing handler failures
- ClaudeSdkPipeline — orchestrates the WarmQuery + AbortController +
  queue + router lifecycle, including rebind on abort/crash with
  bijective state replay

Each new class has standalone unit test coverage:
- claudePromptQueue.test.ts (13 tests)
- claudeSdkMessageRouter.test.ts (5 tests)
- claudeSdkPipeline.test.ts (10 tests, synchronous lifecycle surface)

Plus 10 new Phase 9 integration tests in claudeAgent.test.ts covering
abort/resend, steering preempt + consumed signal, changeModel
provisional + materialized + 'max' clamp + id-only paths, crash
recovery via resume, and bijective state survival across restart.

Live E2E (smoke.md Scenarios A-D) verified 2026-05-13.

See src/vs/platform/agentHost/node/claude/phase9-plan.md for the full
contract, decisions, deviations, and risks.

* feedback
2026-05-13 14:11:23 -07:00
..
2026-04-20 13:41:49 -07:00
2026-05-12 10:53:13 -07:00