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
Hermes v0.13 (#18114, #20279, #20296, #20433, @HenkDz) — the Agent Communication Protocol surface added /steer (mid-run
course correction — already in CrowClaw v0.5.0 #54 over WS) and/queue (queue follow-up turns while the agent is mid-run, dispatched after
the current iteration). Plus atomic session persistence and reasoning-metadata preservation across restarts.
ACP surface (packages/acp/) does not expose /steer or /queue to IDE integrations (Zed, VS Code, JetBrains).
No queue primitive — additional user inputs during a long run are appended to the next-turn user message but not held as a structured queue.
Scope
Modified: packages/acp/src/ — add acp.steer and acp.queue method handlers
New: packages/core/src/queue.ts — per-session pendingQueue: UserMessage[] drained between iterations
Modified: AgentLoop to consume queue before sending next-turn user message
Tests: tests/acp-steer-queue.test.ts
Implementation sketch
acp.steer({ sessionId, guidance }) mirrors the REST handler; same [OPERATOR STEER] injection
acp.queue({ sessionId, message }) appends to session.pendingQueue; emits session:queue_appended event
AgentLoop at iteration-end checks pendingQueue; if non-empty, drains into the next user-turn message (concatenated with operator separator)
Atomic session persistence: queue writes use the same atomic-rename pattern as checkpoints
Reasoning metadata preservation across restarts: session.reasoningHistory persisted (companion to v0.6.0 reasoning-content scrub)
Acceptance criteria
IDE plugin (mock ACP client) can call acp.steer and the agent picks up guidance at next iteration
acp.queue multiple messages while agent is mid-run; all drained at next user turn in order
Session restart preserves queue and reasoning metadata
Tests cover ordering, concurrent steer + queue, and persistence
Effort
M — primitives exist on the WS side; ACP wiring + queue primitive + persistence.
Effect
Closes the IDE-plugin gap. Without /queue, every IDE plugin reimplements its own "stash my next idea" buffer. ACP is the IDE-facing contract
— this is how CrowClaw stays usable from Zed / VS Code.
Background
Hermes v0.13 (#18114, #20279, #20296, #20433, @HenkDz) — the Agent Communication Protocol surface added
/steer(mid-runcourse correction — already in CrowClaw v0.5.0 #54 over WS) and
/queue(queue follow-up turns while the agent is mid-run, dispatched afterthe current iteration). Plus atomic session persistence and reasoning-metadata preservation across restarts.
Current state in CrowClaw
/steerover the REST + WS surface — handled byAgentLoop.steer(sessionId, guidance).packages/acp/) does not expose/steeror/queueto IDE integrations (Zed, VS Code, JetBrains).Scope
packages/acp/src/— addacp.steerandacp.queuemethod handlerspackages/core/src/queue.ts— per-sessionpendingQueue: UserMessage[]drained between iterationsAgentLoopto consume queue before sending next-turn user messagetests/acp-steer-queue.test.tsImplementation sketch
acp.steer({ sessionId, guidance })mirrors the REST handler; same[OPERATOR STEER]injectionacp.queue({ sessionId, message })appends tosession.pendingQueue; emitssession:queue_appendedeventpendingQueue; if non-empty, drains into the next user-turn message (concatenated with operator separator)session.reasoningHistorypersisted (companion to v0.6.0 reasoning-content scrub)Acceptance criteria
acp.steerand the agent picks up guidance at next iterationacp.queuemultiple messages while agent is mid-run; all drained at next user turn in orderEffort
M — primitives exist on the WS side; ACP wiring + queue primitive + persistence.
Effect
Closes the IDE-plugin gap. Without
/queue, every IDE plugin reimplements its own "stash my next idea" buffer. ACP is the IDE-facing contract— this is how CrowClaw stays usable from Zed / VS Code.
Source
Hermes #18114, #20279, #20296, #20433 · CrowClaw current:
packages/acp/src/,packages/core/src/index.ts:645