feat(droid): add ACP-backed provider integration#1585
feat(droid): add ACP-backed provider integration#15850xSero wants to merge 10 commits intopingdotgg:mainfrom
Conversation
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.
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
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.
|
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. |

Summary
Adding droid via ACP integration, will update this more later but their exec mode doesn't do streaming as expected.
Testing
bun fmtbun lintbun run test src/provider/toolCallMetadata.test.tsNotes
Note
High Risk
Adds a new first-class provider that spawns and controls an external
droidCLI 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 spawnsdroid exec --output-format acp, translates ACPsession/updatenotifications into canonical runtime events (turn/content/tool/task lifecycles), and improves tool/subagent observability by centralizing tool-call metadata (toolCallMetadata.ts) and preservingtitle/detail/datathroughProviderRuntimeIngestion(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 sharedbuildModelSelectionhelper for consistent model selection construction, and includes a new browser test forMessageCopyButtonclipboard fallback.Refactors
DrainableWorkerto useQueue/Ref/Deferredinstead of transactional primitives, changing howenqueue()and deterministicdrain()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
droidprovider end-to-end: service definitions, a CLI-based adapter (DroidAdapterLive) that spawnsdroid exec --output-format acpand wires JSON-RPC over stdio, and a provider status checker (DroidProviderLive) that probes the CLI for version and available models.ProviderRuntimeEventstreams.droidthroughout the server stack:ProviderAdapterRegistry,ProviderRegistry,ProviderSessionDirectory, andserverLayers.ts.droidsupport to the web client:ProviderKind,DroidModelOptions,ModelSelection, composer draft store, traits picker, settings panel, and aDroidIcon.normalizeAssistantDeltain ProviderRuntimeIngestion.ts to inject spaces between Droid assistant text fragments while preserving inline code spans.enableAssistantStreamingnow defaults totrueinServerSettings.Macroscope summarized e33fb11.