Skip to content

[Fix] Web task-page sends steer the active turn instead of queueing silently - #32

Merged
daniel-lxs merged 1 commit into
developfrom
fix/web-sends-steer-active-turn
Jul 9, 2026
Merged

[Fix] Web task-page sends steer the active turn instead of queueing silently#32
daniel-lxs merged 1 commit into
developfrom
fix/web-sends-steer-active-turn

Conversation

@daniel-lxs

Copy link
Copy Markdown
Member

What problem this solves

Messages typed on the web task page while a turn was in flight were only appended to the runtime prompt queue and were never delivered until the turn ended — unlike Slack/Teams/Telegram follow-ups, which steer. Two user-facing consequences (found during the staging steering test pass, tasks 190holbb4xm2k, 11nl0xsy05oyl, 31qvhb7uek4gy on openmote):

  • A mid-turn direction change silently sat in "Queued" for the whole turn; during a plan-mode run the agent asked the user structured questions while the user's steer — which answered them — sat undelivered.
  • With a request_user_input question pending, the task deadlocked outright: the turn never ends, so the queued message never drains, and the queued message can only be rescued via the (hard to discover) queued-row steer control.

What changed

  • sandboxSession.sendPrompt (web) → sandbox-server commands.sendPromptHarnessManager.sendFollowUpPrompt now pass autoSteerWhenQueued end to end, and the task-page prompt input sends with autoSteerWhenQueued: true.
  • Delivery semantics now match provider follow-ups: native mid-turn injection into the active OpenCode session when possible (no abort, no interruption narration), falling back to queued-prompt cancel/replay when injection fails or a question is pending.
  • The optimistic UI places running-turn sends in the transcript instead of the queued-messages surface to match the new delivery path. Explicit queue-only messages and the Enter-on-empty "steer oldest queued message" affordance are unchanged.
  • Updated the stale steering paragraph in .agent-guidance/architecture/cloud-job-execution.md (it still described steering as cancel/replay only).

Validation

  • vitest: new apps/worker sendPrompt procedure tests (flag forwarded / left unset), extended web send-prompt command test, updated PromptInput client tests — full src/app/(sandbox)/task/ suite green (476 tests), all worker procedure tests green.
  • pnpm lint:fast and pnpm check-types:fast clean. Local pnpm knip output is unchanged from base (worktree-environment noise; CI knip is authoritative).

🤖 Generated with Claude Code

…ilently

Messages typed on the task page while a turn is in flight were only
appended to the runtime prompt queue and never delivered until the turn
ended - unlike Slack/Teams/Telegram follow-ups, which steer. With a
request_user_input question pending this deadlocked the task entirely:
the turn never ends, so the queued message never drains.

The web sendPrompt path now passes autoSteerWhenQueued: true end to end
(web command -> sandbox-server procedure -> harness manager), so running
sends use OpenCode native mid-turn injection, falling back to
queued-prompt cancel/replay when injection fails or a question is
pending. The optimistic UI places the message in the transcript rather
than the queued-messages surface to match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@roomote-roomote-v1

roomote-roomote-v1 Bot commented Jul 9, 2026

Copy link
Copy Markdown

No code issues found. See task

@daniel-lxs
daniel-lxs marked this pull request as ready for review July 9, 2026 15:21
@daniel-lxs
daniel-lxs merged commit abf27ed into develop Jul 9, 2026
1 check passed
@mrubens
mrubens deleted the fix/web-sends-steer-active-turn branch July 12, 2026 04:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant