Skip to content

[ENHANCEMENT] Add queue and steer delivery modes for running conversations - #138

Closed
allquixotic wants to merge 2 commits into
Zoo-Code-Org:mainfrom
allquixotic:zoo-port/queue-steer
Closed

[ENHANCEMENT] Add queue and steer delivery modes for running conversations#138
allquixotic wants to merge 2 commits into
Zoo-Code-Org:mainfrom
allquixotic:zoo-port/queue-steer

Conversation

@allquixotic

Copy link
Copy Markdown

Related GitHub Issue

Closes: #133

Description

This PR adds explicit queue and steer delivery modes for messages sent while a conversation is running. It is stacked on the concurrent-conversations work from PR #128.

Dependency PR: #128. Please review/merge #128 first; until then this PR is intentionally opened as a stacked draft and its GitHub diff against main may include the concurrent-conversations prerequisite.

Key changes:

  • Adds QueuedMessageDeliveryMode and extends queued-message payloads with createdAt, updatedAt, and deliveryMode.
  • Reworks MessageQueueService into separate queue and steer lanes with steer-first combined ordering, lane-specific dequeue, delivery-mode switching, restore support, and tests.
  • Updates webview message handling to resolve the target task before and after image resolution, preserve dropped input, and pass delivery mode through queue/edit actions.
  • Updates QueuedMessages UI to show separate "Steer next" and "Queued" lanes with edit, remove, and Queue/Steer toggle actions.
  • Updates Task handoff behavior so ordinary queued messages drain only at appropriate follow-up/idle handoffs, while steer messages can be consumed at API boundaries or after completed tool boundaries.
  • Adds synthetic tool results for skipped tool calls when steer input interrupts after a tool boundary.
  • Preserves queued/steer messages across cancel/replacement and defers draining until resume.
  • Keeps the legacy processQueuedMessages() method as a no-op compatibility shim so queued messages are not drained from unsafe call sites.
  • Adds focused tests for queue service lanes, queued-message UI, ask drain behavior, task steer boundaries, and cancel restoration.

Reviewer focus:

  • Boundary safety for steer delivery and provider API history validity.
  • Whether the UI language clearly distinguishes ordinary queued input from steer input.
  • Whether cancel/resume restoration preserves user intent without prematurely delivering queued messages.
  • Interaction with concurrent conversation switching from PR [ENHANCEMENT] Add concurrent conversation sidebar and task switching #128.

Test Procedure

From the Zoo Code worktree after the concurrent-conversations branch is present:

pnpm lint
pnpm check-types
pnpm --filter zoo-code test -- core/message-queue/__tests__/MessageQueueService.spec.ts core/task/__tests__/Task.spec.ts core/task/__tests__/ask-queued-message-drain.spec.ts core/webview/__tests__/ClineProvider.flicker-free-cancel.spec.ts
pnpm --filter @roo-code/vscode-webview test -- src/components/chat/__tests__/QueuedMessages.spec.tsx src/components/chat/__tests__/ChatView.spec.tsx

Manual verification recommended:

  • Start a long-running conversation.
  • Send one message as queued input and one as steer input.
  • Confirm the queued-message list shows both messages and their delivery modes.
  • Edit a queued message before it is delivered.
  • Confirm steer input is delivered at a safe boundary and ordinary queued input is drained in order.

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue.
  • Scope: My changes are focused on the linked issue.
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes.
  • Documentation Impact: I have considered if my changes require documentation updates.
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Screenshots / Videos

TODO: Attach a short video showing messages being queued, edited, switched between delivery modes, and delivered during a running conversation.

Documentation Updates

Yes. User-facing docs should explain the difference between queued input and steer input.

Additional Notes

This should be reviewed after or on top of PR #128. If opened before #128 merges, the GitHub diff against Zoo main will include prerequisite concurrent-conversation changes.

Get in Touch

Discord: coorbin

@coderabbitai

coderabbitai Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6c6614b7-6f47-4ffa-832f-bd6ce6b798ab

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown
Contributor

This PR has had no activity for 60 days and will be automatically closed in 7 days unless there is new activity. If you'd like to continue, please rebase and leave a comment.

@github-actions github-actions Bot added the stale-inactive PR closed due to 60+ days of inactivity label Jul 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Closing due to 60+ days of inactivity. Feel free to reopen if you'd like to resume this work.

@github-actions github-actions Bot closed this Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-inactive PR closed due to 60+ days of inactivity

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ENHANCEMENT] Add queue and steer delivery modes for running conversations

1 participant