Skip to content

Agent Mode: optional mid-run steer alongside queue #792

Description

@AnthonyRonning

Summary

Maple Agent now has a staged FIFO queue: mid-run composer sends stay as chips and are promoted only after the current Goose Agent::reply finishes (the whole agentic loop). Some people would rather steer: inject follow-ups at the next model turn so the live loop can change course before it finishes every tool.

Queue is a strict improvement even for steer-preferring users. The workaround today is: queue chips, Stop, then Send. That works.

This issue is the follow-up to add steer as a second behavior, not to replace queue.

Why this is not a small flip

Goose already has Agent::steer (pinned 064244e). Maple used it in 14c62af8 and replaced it with the Maple-owned FIFO in fa85309c after race/QA issues.

Goose steer:

  • does not interrupt the current completion or current tool batch
  • drains pending steers at the next model turn of the same reply
  • persists those messages immediately (metadata.steer = true)
  • has no public edit-one / remove-one API
  • keeps pending steers across cancel for resume

That is earlier than queue, but it is not a chip list. Chips, in-place edit, Discard, and Stop-leaves-chips assume Maple still owns the stack.

Proposed product shape

Keep queue as the default.

Add steer as an explicit second mode (setting TBD: per-task, per-account, or a composer control):

  • Queue: wait for the current reply to finish; chips stay Maple-owned and editable.
  • Steer: hand the follow-up to Goose at Send; the next model turn sees it; that item leaves the chip list and is no longer in-place-editable.

Do not silently make the current chips steer. ACP should stay out of this unless we explicitly take Goose's unstable _goose/unstable/session/steer.

Out of scope

  • Replacing queue
  • Interrupting an in-flight token stream or in-flight tool
  • ACP steer unless product explicitly wants the unstable Goose wire method

Related: PR #781.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions