feat(devin): add Devin provider and ACP capability parity - #10913
Draft
mzakyali wants to merge 32 commits into
Draft
feat(devin): add Devin provider and ACP capability parity#10913mzakyali wants to merge 32 commits into
mzakyali wants to merge 32 commits into
Conversation
Adds DevinSettings, ProviderDriverKind("devin"), ModelPricing schema,
UsageAccountConsumptionDay, and provider-runtime event fields needed by
the Devin ACP adapter. Exports defaultEnabledForDriver for focused
settings tests. Preserves all current upstream contract fields.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Ports DevinDriver.ts onto current upstream APIs (resolveMaintenance, makeManualOnlyProviderMaintenanceCapabilities). Ports DevinProvider.ts, DevinAdapter.ts, DevinTextGeneration.ts, and DevinAcpSupport.ts onto the current makeManagedServerProvider and AcpSessionRuntime. Preserves MCP injection, model-change restart via session/load, and canonical Devin event logging. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Updates ProviderRegistry.ts with Devin-specific model retention (authoritative on success, retain cache on warning/error), catalog- version compatibility guard, and forkScoped startImmediately to avoid subscription races. Re-exports haveProvidersChanged for focused tests. Preserves all current upstream retention and snapshot-merging behavior. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Ports Devin event-log scanning, provider rate-table loading, and optional ACU consumption lookup into UsageService. Merges Devin's parseProviderModelRateTable and normalizeModelName with current upstream override and LiteLLM behavior. Rewrites devinAccountUsage.ts and parseProviderModelRateTable with dedicated Effect Schemas replacing handwritten isRecord/isString guards. Devin account usage remains separate from local token/cost estimates. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Ports DevinAdapter.test.ts (including model-change restart via session/load, cancel-recover with Deferred-based turn.started sync), DevinProvider.test.ts, DevinTextGeneration.test.ts, DevinAcpSupport.test.ts, and DevinAcpCliProbe.test.ts. Replaces fixed Effect.sleep synchronization with a Deferred keyed off turn.started, matching the GrokAdapter test pattern. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Reapplies Devin-related hunks to current upstream web and mobile files: provider option metadata in session-logic, Devin account usage display in UsagePage and UsageRouteScreen, provider icon utilities, model family grouping, context window meter, composer provider state, and provider settings panel. Preserves current upstream composer, settings, and mobile behavior. Replaces missing LoaderIcon with Spinner in ProviderInstanceCard (upstream removed that lucide import). Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds Devin to README provider list, docs/internals/providers.md ACP details, docs/user/providers-devin.md, and Devin CLI installation and usage sections. Adds test:devin-smoke script and scripts/devin-mcp-smoke.ts isolated smoke harness. Updates pnpm-lock.yaml and pnpm-workspace.yaml for new dependencies. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds DevinSkills.ts with a pure parser and a bounded command runner. The parser decodes the top-level JSON array, requires non-empty name and base_dir, maps base_dir to SKILL.md through the Path service, maps description/display_name, interprets user/model triggers, disables error records, keeps warning-only records enabled, derives deterministic project/personal/other scope, deduplicates case-insensitively, sorts deterministically, and skips malformed records. The runner spawns the configured binary with the provider environment and workspace cwd, bounds output (4 MiB) and runtime (20s), and returns typed errors for spawn, timeout, nonzero exit, output limit, and decode failures. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds DevinSkillDispatch.ts: a known `$name` mention becomes Devin's native `@skills:name` while trailing arguments, surrounding text, unknown tokens, and `$HOME` stay literal. Skills are never inferred from paths. The Devin adapter discovers lazily — only when a prompt carries a candidate `$skill` token — caches successful catalogs per workspace cwd, never caches failures, and sends the original prompt unchanged when discovery fails. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds snapshotForCwd to the Devin ProviderInstance following the existing Claude, Grok, Codex, and OpenCode pattern. A disabled Devin returns the normal snapshot without running discovery; a discovery failure surfaces as a typed ProviderDriverError so the provider registry preserves the last valid workspace snapshot. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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
Verification
Known acceptance limitation
The authenticated Devin live MCP smoke test remains a strict failure: Devin made zero preview_status broker requests. This PR does not claim verified live MCP handoff, elicitation, or child-agent support. Deterministic ACP normalization and provider-neutral client behavior are covered; live Devin acceptance remains an external follow-up gate.
Please review as a draft while the Devin CLI/MCP handoff is investigated.