Skip to content

feat(droid): add ACP-backed provider integration#1585

Closed
0xSero wants to merge 10 commits intopingdotgg:mainfrom
0xSero:acp
Closed

feat(droid): add ACP-backed provider integration#1585
0xSero wants to merge 10 commits intopingdotgg:mainfrom
0xSero:acp

Conversation

@0xSero
Copy link
Copy Markdown

@0xSero 0xSero commented Mar 30, 2026

Summary

Adding droid via ACP integration, will update this more later but their exec mode doesn't do streaming as expected.

Testing

  • bun fmt
  • bun lint
  • bun run test src/provider/toolCallMetadata.test.ts

Notes


Note

High Risk
Adds a new first-class provider that spawns and controls an external droid CLI process over JSON-RPC/ACP, plus broad contract/settings/UI plumbing changes; failures here could break provider selection, session lifecycle, or runtime event ingestion across the app.

Overview
Adds Droid as a first-class provider end-to-end: updates contracts (ProviderKind, ModelSelection, ProviderModelOptions, defaults, settings) and wires new server layers (DroidProviderLive, DroidAdapterLive) into provider registries, session directory persistence, and git text generation provider typing.

Implements an ACP-backed runtime adapter (DroidAdapterLive) that spawns droid exec --output-format acp, translates ACP session/update notifications into canonical runtime events (turn/content/tool/task lifecycles), and improves tool/subagent observability by centralizing tool-call metadata (toolCallMetadata.ts) and preserving title/detail/data through ProviderRuntimeIngestion (with updated tests).

Updates the web app to expose Droid in the provider/model picker (including DroidIcon), adds Droid model/trait option handling and a shared buildModelSelection helper for consistent model selection construction, and includes a new browser test for MessageCopyButton clipboard fallback.

Refactors DrainableWorker to use Queue/Ref/Deferred instead of transactional primitives, changing how enqueue() and deterministic drain() completion are implemented.

Written by Cursor Bugbot for commit 45769d5. This will update automatically on new commits. Configure here.

Note

Add ACP-backed Droid provider integration across server and web clients

  • Introduces a new droid provider end-to-end: service definitions, a CLI-based adapter (DroidAdapterLive) that spawns droid exec --output-format acp and wires JSON-RPC over stdio, and a provider status checker (DroidProviderLive) that probes the CLI for version and available models.
  • Adds ACP protocol primitives in acpCore.ts (JSON-RPC types, session state, spawn/wire/init helpers) and a runtime bridge in acpRuntimeBridge.ts that maps ACP session update notifications into ProviderRuntimeEvent streams.
  • Registers droid throughout the server stack: ProviderAdapterRegistry, ProviderRegistry, ProviderSessionDirectory, and serverLayers.ts.
  • Adds droid support to the web client: ProviderKind, DroidModelOptions, ModelSelection, composer draft store, traits picker, settings panel, and a DroidIcon.
  • Adds normalizeAssistantDelta in ProviderRuntimeIngestion.ts to inject spaces between Droid assistant text fragments while preserving inline code spans.
  • Behavioral Change: enableAssistantStreaming now defaults to true in ServerSettings.

Macroscope summarized e33fb11.

Wire Droid through the provider, model-selection, and settings layers so it behaves as a first-class runtime in T3 Code. Normalize ACP tool and subagent events so streamed work reaches the UI with concrete titles and progress instead of collapsing into generic tool placeholders.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

Important

Review skipped

Auto reviews are disabled on this repository. 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: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b263b842-742b-4285-ae06-60952db7acd7

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 github-actions bot added size:XXL 1,000+ changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 30, 2026
@0xSero 0xSero marked this pull request as draft March 30, 2026 19:33
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Move ACP transport and session-update mapping into reusable shared modules so provider adapters stay thin and future ACP integrations can reuse the same core. Restore the Claude-local helper code and drop the temporary research notes to keep this PR tighter and more focused.
@juliusmarminge
Copy link
Copy Markdown
Member

the core ACP support will land in #1355 , then after that i have a generic ACP Registry support coming after that

@0xSero 0xSero marked this pull request as ready for review March 30, 2026 22:33
@0xSero 0xSero marked this pull request as draft March 30, 2026 22:57
@0xSero 0xSero marked this pull request as ready for review March 30, 2026 23:07
@0xSero
Copy link
Copy Markdown
Author

0xSero commented Mar 30, 2026

the core ACP support will land in #1355 , then after that i have a generic ACP Registry support coming after that

I see I will close this up then, let me know if there's anything you'd like me to help with.

@0xSero 0xSero closed this Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants