Skip to content

Buddy's chat: a message sent while Buddy works must steer his running turn (Hermes session.steer), never stop it #138

Open

Description

@immakermatty

Product owner's requirement (Matěj, 2026-10-28): a message the person sends while Buddy works must steer him: Buddy keeps working and takes the message into account. It must never stop his work. "People won't wait for an answer."

Today. Buddy's chat in Lazurio steers by default (the Admin's decision of 2026-10-22), but steering is done as stop and send:

  • the client cancels the running turn (session/cancel), then submits the message as a new prompt;
  • the Lazurio Hermes overlay acp: after the editor's Stop, its next prompt carries the interrupted request glues the stopped request to that prompt.

Seen on a Personal Environment, 2026-10-28:

What Hermes already has. Native steering into a running turn:

  • the gateway's session.steer RPC, which the ACP viewer reaches through /steer (acp_adapter/gateway_commands.py _steer);
  • the guidance is appended after the current tool batch, before the next model call (apply_pending_steer_to_tool_results), so the turn continues;
  • a turn that ended meanwhile (stale_generation) leaves the text for the next prompt.

Expected.

  • While Buddy's turn runs, the chat submits the person's message through Hermes's steer for that turn. No session/cancel.
  • If the turn has ended, the message is the next prompt, as today.
  • Stop stays a separate, explicit control, and only Stop cancels.
  • Attachments ride along: either steered with the text, or sent as the next prompt. They are never dropped.
  • Delegation notices queue (t3 thread send --mode queue) and never steer.

Contract test, against a Hermes fixture running a multi-step turn:

  • a message sent mid-turn reaches the turn as guidance, the turn completes, and no cancel was sent;
  • a message sent just after the turn ended becomes the next prompt;
  • Stop cancels.

Related: Lazurio/hermes-agent#21. Once nothing cancels on a send, that overlay only matters for an explicit Stop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions