Steer active agent turns from follow-up messages#781
Draft
boudra wants to merge 2 commits into
Draft
Conversation
e2e4154 to
8a07961
Compare
7ec394c to
5c90449
Compare
8a07961 to
e077d7d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linked issue
None
Type of change
What does this PR do
Follow-up messages sent while an agent is already running now steer the active turn when the provider supports it, instead of always replacing the run. Claude follow-ups are pushed into the existing input stream with next priority, Codex app-server follow-ups call the turn steering endpoint, and unsupported providers keep the existing replace behavior.
The shared send path now centralizes out-of-band command handling, unarchive/load behavior, user-message recording, and run startup so MCP, CLI, and websocket sends use the same policy. The app also marks local steering messages with a small “Steering conversation” hint while the daemon catches up.
How did you verify it
npm installnpm run build:daemonnpm run typechecknpm run lintnpm run formatCI is being watched by the existing babysit schedule for PR #781.
Extra review surface: this touches active-run concurrency and the client/server stream shape. The new message field is optional for old clients, but it is worth smoke-checking one active Claude or Codex follow-up from the app before merge.
Checklist
npm run typecheckpassesnpm run lintpassesnpm run formatran (Biome)