Skip to content

feat(frontend): Surface parked connect prompts in an interaction dock - #5521

Open
ashrafchowdury wants to merge 2 commits into
release/v0.106.0from
feat/agent-interaction-dock
Open

feat(frontend): Surface parked connect prompts in an interaction dock#5521
ashrafchowdury wants to merge 2 commits into
release/v0.106.0from
feat/agent-interaction-dock

Conversation

@ashrafchowdury

@ashrafchowdury ashrafchowdury commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Context

When the runner parks a request_connection call, the stream genuinely ends. useChat reports ready, so nothing busy-derived (working dots, the stop button) signals that the run is paused on you. Meanwhile the message queue quietly holds every send.

The result: the turn looked finished, anything you typed disappeared into a queue with no explanation, and a parked connection had no way to say no, so the conversation stayed frozen.

Changes

InteractionDock sits in the composer region, between the transcript and the input, so a paused run cannot scroll out of reach. It follows the same contract as ApprovalDock. The dock owns the actions and the inline transcript row is only a marker. It also adds the escape hatch a parked connection lacked: "Not now" settles the call as a structured decline, so the run resumes and the conversation unfreezes.

Three smaller pieces make the pause legible:

  • A "Waiting for your input" chip on the paused turn. WorkingDots animates because the agent is working. This one is deliberately static, because here it is your move.
  • The composer placeholder now says new messages will be queued.
  • The queue popover explains itself. Before it read "Queued, sent one by one". Now it reads "Held until you answer the agent", with a "waiting on you" tag on the trigger and in the aria-label.

ConnectToolWidget drops about 280 lines. The OAuth flow moved into a new useConnectFlow hook so the dock and the inline chip share one implementation instead of two that could both settle the same call. The hook settles on every terminal path, so a run cannot hang:

success  -> {connected: true,  integration, slug}
decline  -> {connected: false, reason: "declined"}
cancel   -> {connected: false, reason: "cancelled"}
timeout  -> {connected: false, reason: "timeout"}

It settles with a reference, never a secret. The runner re-resolves the credential from the project vault on resume.

Scope is the connect interaction only. Elicitation stays inline, since it is a form the user fills in the transcript and it already carries its own decline and dismiss actions. The composer waiting state covers its visibility.

Tests / notes

What to QA

  • Ask the agent for something needing a connection (a GitHub tool). The dock appears above the composer with a Connect button, and the turn shows "Waiting for your input" rather than looking finished.
  • Type while the dock is up. The message goes to the queue and the popover says "Held until you answer the agent".
  • Click "Not now". The dock clears, the run resumes, and the queued messages send.
  • Click Connect and complete the OAuth in the popup. The dock clears and the agent continues with the connection available.
  • Close the OAuth popup without finishing it. The call settles as cancelled and the run resumes instead of hanging.
  • Regression: an approval-gated turn still shows ApprovalDock as before, and an ordinary tool-using turn shows no interaction dock and does not auto-resend.

Previews

Before:
image.png
After:
image.png

- Added InteractionDock component to manage parked client-tool interactions, mirroring ApprovalDock's functionality.
- Introduced WaitingForInput component to indicate when the agent is waiting for user input.
- Updated AgentConversation to integrate InteractionDock and display waiting states appropriately.
- Enhanced QueuedMessages to reflect held messages when the interaction is pending.
- Refactored ConnectToolWidget to utilize useConnectFlow for managing connection states and actions.
- Added useConnectFlow hook to centralize connection logic for both InteractionDock and inline components.
- Updated state management to include isPendingClientToolInteraction for better handling of client-tool interactions.
@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. Feature Request New feature or request Frontend labels Jul 26, 2026
@vercel

vercel Bot commented Jul 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment Jul 26, 2026 2:25pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 673046fb-f9f7-4b2d-8f40-20773ffefaf6

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
  • Commit unit tests in branch feat/agent-interaction-dock

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.

@ashrafchowdury
ashrafchowdury force-pushed the feat/agent-interaction-dock branch from 10bb97f to 4b9e0e4 Compare July 26, 2026 14:23
@ashrafchowdury ashrafchowdury changed the title feat(frontend): interaction dock for parked client-tool interactions feat(frontend): Surface parked connect prompts in an interaction dock Jul 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Railway Preview Environment

Preview URL https://gateway-production-e2a6.up.railway.app/w
Project agenta-oss-pr-5521
Image tag pr-5521-562f770
Status Deployed
Railway logs Open logs
Workflow logs View workflow run
Updated at 2026-07-26T14:35:23.424Z

@ashrafchowdury
ashrafchowdury requested a review from mmabrouk July 27, 2026 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Request New feature or request Frontend size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant