Skip to content

tracking: mid-turn steer queue design surface (from #1501) #1531

@donle

Description

@donle

From #1501 — the first implementation adds queued mid-turn steer handling for busy turns. The core behavior is useful: when the user submits text while a turn is already running, the UI can queue that text as guidance for the current turn instead of dropping it or starting a second turn.

The PR should land the minimal queueing behavior, but the surrounding design surface is bigger than that one implementation. Tracking the follow-ups here so prompt-shape, UI state, persistence, and retry/abort behavior do not get buried in the PR thread.

Punch list

  • (1) Steer payload shape. Decide whether mid-turn steer text should be injected as raw user text, wrapped user text, or a structured marker the model/runtime recognizes. The current wrapper is intentionally centralized so it can be revised without hunting through the loop.

  • (2) Wrapper text ownership and prompt behavior. If we keep a wrapper, tune the wording deliberately. This affects model behavior across every busy-turn submit, so it should be treated as prompt-surface design rather than incidental implementation text.

  • (3) Queued vs. consumed UI state. Specify how the CLI and dashboard should represent a steer that has been submitted, queued, consumed by the loop, and persisted into the conversation. The ghost-message path is enough for the first PR, but the state model should be explicit.

  • (4) Public loop signal. Confirm whether steerConsumed is the right signal for preventing duplicate submit / ghost-message behavior, or whether the loop should expose a clearer queue-state event.

  • (5) Persistence, retry, and abort interactions. Audit how queued steers behave across abort, retry, session persistence, context truncation, and resumed sessions. The important invariant is that user guidance is neither silently dropped nor replayed in the wrong turn.

  • (6) Multiple queued steers and ordering. Keep FIFO behavior covered and decide whether future UI should expose queue depth, collapse repeated steers, or leave ordering entirely loop-internal.

  • (7) User-facing copy accuracy. Review the new CLI/dashboard/i18n strings for whether they accurately describe queued mid-turn steer behavior in English and Chinese. The copy should make clear that the text is guidance for the current busy turn, not a new task or a dropped submit.

Why tracking issue

Mid-turn steer is a new interaction primitive, not just a composer tweak. It crosses the UI, loop scheduling, message construction, session persistence, and prompt behavior surfaces. Splitting those questions immediately would scatter the design discussion, while leaving them only in #1501 would make future busy-input changes hard to reason about. Keeping one tracking issue gives the next person a public pointer for the whole surface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    v1Legacy TypeScript line (0.x) — v1 branch, maintenance only

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions