You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Engineering is DONE + merged; this tracks the one remaining piece — the live kind-cluster e2e for the Claude SDK HITL bridge (deferred to a watched session: it drives the cluster + spends real model calls). Sibling of #58 (harness-resume live e2e); can be run in the same watched session.
What's landed
Centaur fork (gbasin/centaur, branch main): services/sandbox/claude-sdk-bridge.mjs (commit c79ebb0) maps the Claude Agent SDK AskUserQuestion / canUseTool path to Atrium/Centaur question_requested frames and answers back, with defer/resume. Wired via the Dockerfile (/usr/local/bin/claude-sdk-bridge) + entrypoint.sh (CENTAUR_CLAUDE_APP_BRIDGE_COMMAND).
Atrium (master): product-side HITL already lands question_requested → pendingQuestion → the pane's input banner → POST /api/sessions/:id/answer. The @atrium/centaur-clientclaudeQuestions.ts mapper carries multiSelect + option previews.
Tests: harness-server integration tests use a fake SDK — claude_sdk_bridge_maps_ask_user_question_with_fake_sdk, claude_blocks_mode_uses_sdk_bridge_for_hitl_questions, fake_claude_blocks_mode_relays_sdk_question_answers. No real-SDK / real-cluster validation yet.
Spawn a Claude session and drive a turn that triggers a real AskUserQuestion (a prompt that makes the agent ask the user to choose between options — ideally one multiSelect and one with option previews).
Confirm the question surfaces in the Atrium session pane (the question_requested banner) with correct options / multiSelect / preview rendering.
Answer via the pane → confirm it round-trips back into the Claude run (updatedInput.answers, keyed by question text) and the agent proceeds with the chosen answer.
Pass = a real Claude AskUserQuestion surfaces in the Atrium pane, the human answer round-trips into the SDK run, and multiSelect + previews render correctly.
Refs: ATRIUM_FORK.md (fork surface), notes/claude-sdk-hitl-poc.md (Atrium POC + the "Next Centaur Work", now built). Sibling: #58.
Engineering is DONE + merged; this tracks the one remaining piece — the live kind-cluster e2e for the Claude SDK HITL bridge (deferred to a watched session: it drives the cluster + spends real model calls). Sibling of #58 (harness-resume live e2e); can be run in the same watched session.
What's landed
gbasin/centaur, branchmain):services/sandbox/claude-sdk-bridge.mjs(commitc79ebb0) maps the Claude Agent SDKAskUserQuestion/canUseToolpath to Atrium/Centaurquestion_requestedframes and answers back, with defer/resume. Wired via the Dockerfile (/usr/local/bin/claude-sdk-bridge) +entrypoint.sh(CENTAUR_CLAUDE_APP_BRIDGE_COMMAND).master): product-side HITL already landsquestion_requested→pendingQuestion→ the pane's input banner →POST /api/sessions/:id/answer. The@atrium/centaur-clientclaudeQuestions.tsmapper carriesmultiSelect+ option previews.claude_sdk_bridge_maps_ask_user_question_with_fake_sdk,claude_blocks_mode_uses_sdk_bridge_for_hitl_questions,fake_claude_blocks_mode_relays_sdk_question_answers. No real-SDK / real-cluster validation yet.E2E to run (no drive-script written yet)
api-rs+sandboximages to the kindcentaurcluster (just build-one … && just deploy) — same setup as Harness-resume: live cluster e2e (Claude + Codex teardown→resume) #58.AskUserQuestion(a prompt that makes the agent ask the user to choose between options — ideally onemultiSelectand one with option previews).question_requestedbanner) with correct options / multiSelect / preview rendering.updatedInput.answers, keyed by question text) and the agent proceeds with the chosen answer.Pass = a real Claude
AskUserQuestionsurfaces in the Atrium pane, the human answer round-trips into the SDK run, and multiSelect + previews render correctly.Refs:
ATRIUM_FORK.md(fork surface),notes/claude-sdk-hitl-poc.md(Atrium POC + the "Next Centaur Work", now built). Sibling: #58.