feat(external_websocket_sync): mirror ACP elicitations to Helix and accept answers - #83
Closed
lukemarsden wants to merge 7 commits into
Closed
lukemarsden wants to merge 7 commits into
lukemarsden wants to merge 7 commits into
Conversation
…ccept answers Spec-Ref: helix-specs@7f9f3cc63:002731_implement-the-feature
…-end-agent Spec-Ref: helix-specs@5878c07a9:002731_implement-the-feature
Spec-Ref: helix-specs@fad4986b2:002750_finish-agent-questions
Spec-Ref: helix-specs@fad4986b2:002750_finish-agent-questions
Spec-Ref: helix-specs@fad4986b2:002750_finish-agent-questions
…est_id Spec-Ref: helix-specs@fad4986b2:002750_finish-agent-questions
Spec-Ref: helix-specs@b30683e41:002750_finish-agent-questions
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Superseded by the merged transport in #95 and the merged Helix implementation in helixml/helix#3220. Closing to keep one maintained implementation path. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Companion to helixml/helix#3009, which pins this branch via
ZED_COMMITinsandbox-versions.txt. Merge this one first.crates/external_websocket_sync/mirrors the Zed agent thread into Helix, but its entry mapping inthread_service.rsmatched onlyUserMessage | AssistantMessage | ToolCalland_ => returned everything else.acp_thread::AgentThreadEntry::Elicitationwas silently dropped, so when Claude Code asked the user a question throughAskUserQuestion— whichclaude-agent-acpturns into an ACP form elicitation that blocks the turn — Helix saw nothing answerable and the turn eventually died withTool use aborted.What this adds
SyncEvent::{ElicitationRequested, ElicitationResolved, ElicitationResync, ElicitationResponseAck}with theirto_outgoing_message()arms, and oneelicitation_status_str()mapping Zed'sCanceledto the wire'scancelledso the two spellings cannot spread.AcpThreadEvent::ElicitationRequested/ElicitationRespondedand theEntryUpdatedarm, with therequested_schemaserialized verbatim — Helix renders the options, so nothing may be lossily flattened.open_thread, so Helix can tell "the agent still holds this question" from "the process that held it is gone" without guessing from the reconnect itself.respond_elicitationcommand:GLOBAL_ELICITATION_RESPONSE_CALLBACK+ pending queue, dispatched to a GPUI task callingAcpThread::respond_to_elicitation, which already no-ops safely on an unknown id or a non-Pendingstatus. The ack reportsaccepted/noop/not_foundrather than failing silently.This deliberately does not touch
agent_ui: the Zed agent panel's elicitation card renders with no option controls, and it stays that way — Helix is self-sufficient.Testing
The full dockerized suite is green with Phase 18 (single
zed-agentround):Adding a phase also pushed a
zed-agentround to ~190s, pastrun_e2e.sh'sDEFAULT_TIMEOUT=300 * AGENT_COUNT; that budget is raised to 450s/round, which matters for CI since it uses the default.Not verified: the two-agent matrix (
E2E_AGENTS="zed-agent,claude"). Thezed-agentround passes; theclauderound stalls at Phase 1 — before any elicitation code runs — inside the runtime-installedclaude-agent-acpstartup. Believed unrelated, but unverified. No live end-to-end run has been done yet either; that is in progress and both PRs should wait for it.🤖 Generated with Claude Code