sync: merge upstream/main (38 commits, multi-provider SPI)#77
Merged
aaditagrawal merged 1 commit intomainfrom May 5, 2026
Merged
sync: merge upstream/main (38 commits, multi-provider SPI)#77aaditagrawal merged 1 commit intomainfrom
aaditagrawal merged 1 commit intomainfrom
Conversation
Adopts upstream's pluggable ProviderDriver SPI from pingdotgg#2277. Ports fork's 4 extra providers (Amp, Copilot, GeminiCli, Kilo) onto the new architecture and restores fork's monochrome + editor icons that drifted during resolution. Major upstream changes: - feat: Multi-Provider support (pingdotgg#2277) — branded ProviderDriverKind + ProviderInstanceId, scope-managed drivers, AddProviderInstanceDialog UI - feat: pluggable VCS driver foundation (pingdotgg#2435) + GitLab (pingdotgg#2462) + Bitbucket/Azure DevOps (pingdotgg#2473) + remote repo publish (pingdotgg#2482) - feat: Hosted Frontend, Tailscale Integration, SSH Launcher (pingdotgg#2361) - 30+ mobile/UX/infra commits Fork extras on new SPI: - AmpDriver: per-instance AmpServerManager (usage stats per instance) - CopilotDriver: per-session turn tracking via closure-owned Map; copilotCliPath + sanitized desktop env preserved - GeminiCliDriver: text generation gracefully fails (Gemini CLI's only non-interactive mode is --approval-mode yolo which auto-executes tool calls in the workspace; chat/sessions still work) - KiloDriver: text generation routes through manager.getOrStartServer so the spawned `kilo serve` child is owned by the manager and killed on scope close (regression tests added) DB migrations: 026 (canonicalize ModelSelection.options), 027 + 028 (provider_instance_id columns), 029 (fork-side backfill for amp/ copilot/geminiCli/kilo rows). Cleanup: removed shadow @anthropic-ai/claude-agent-sdk.d.ts + copilot-sdk.d.ts that hid real SDK types; deleted dead per-provider helpers superseded by providerDriverMeta (customModels.ts, gitTextGeneration.ts, providerModelOptions.ts, composerProviderRegistry, lib/threadProvider.ts); migrated stale ProviderKind references to fork-local apps/web/src/providerKind.ts. Verification: bun typecheck = 0 errors across all 8 packages; KiloServerManager tests 4/4 passing.
|
Important Review skippedToo many files! This PR contains 300 files, which is 150 over the limit of 150. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (300)
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 |
3 tasks
aaditagrawal
added a commit
that referenced
this pull request
May 5, 2026
PR #79's install fix made these visible. Five distinct issues, all from PR #77's manual reconciliation of upstream's multi-provider SPI: 1. ProjectionSnapshotQuery.listThreadRows had a fork-added WHERE clause filtering by `json_extract(model_selection_json, '$.provider')` — but upstream's new SPI stores `$.instanceId` instead. The filter dropped every thread silently, so projection_threads was always empty in the snapshot and every integration-engine test hung waiting for projections that would never arrive. Removing the filter (matches upstream). 2. Migration test bounds were off-by-two. Fork's filenames 026/027/028/029 stayed put but were registered as IDs 28/29/30/31 (because fork's old 023/024 displaced them). The tests still passed numeric IDs matching the filenames, so they ran the canonicalize migration before its deps existed and blew up with `projection_thread_sessions has no column named provider_instance_id`. 3. CodexAdapter native-flush regex /NTIVE: .../ was missing the leading `A` (re-introduced by the merge from a stale upstream revision; we already fixed it once in PR #75 review). Restoring /NATIVE: .../. 4. ProviderRegistry.test asserted only the 4 upstream providers, but BUILT_IN_DRIVERS now contains all 8 (incl. fork's amp/copilot/ geminiCli/kilo). Updated the expected list. Local: `bunx vitest run integration/orchestrationEngine.integration.test.ts` goes from 11 failed/1 skipped → 11 passed/1 skipped.
3 tasks
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.
Summary
Major upstream sync: merges 38 commits from
pingdotgg/t3codeand adopts upstream's new multi-provider SPI wholesale, while porting all 4 fork-added providers (Amp, Copilot, GeminiCli, Kilo) onto the newProviderDriverarchitecture.Highlights
ProviderInstanceRegistry,ProviderDriver,BUILT_IN_DRIVERS, declarativeproviderDriverMeta.ts.Drivers/*Driver.ts+Layers/*Provider.tssnapshot pair, registered inbuiltInDrivers.ts.GeminiCliTextGenerationnow returns a graceful "not supported" failure (only non-interactive Gemini mode auto-approves tool calls — unsafe for headless commit/PR/branch generation).KiloTextGenerationroutes throughKiloServerManager.getOrStartServerso the spawned server child is killed on scope close.CopilotProviderauth probe now usesData.TaggedErrorinstead of rawError(resolves Effect language-service warning).Conflicts resolved
All 87 merge conflicts resolved using a tiered partition approach (LIGHT/HIGH).
Test plan
bun typecheck— 12/12 packages passbun lint— cleanbun run test— 987/987 web tests pass; server tests pass