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.
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::replyfinishes (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(pinned064244e). Maple used it in14c62af8and replaced it with the Maple-owned FIFO infa85309cafter race/QA issues.Goose steer:
replymetadata.steer = true)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):
replyto finish; chips stay Maple-owned and 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
Related: PR #781.