Repository navigation
feat(components): Devin Fusion builder for advertised lead+sidekick pairs - #2760
Open
EventHorizonXT wants to merge 1 commit into
Open
EventHorizonXT wants to merge 1 commit into
EventHorizonXT wants to merge 1 commit into
Conversation
…ck pairs Devin's ACP exposes Fusion as one flat `model` select whose `fusion-*` values each encode a lead+sidekick pair; it has no independent Lead or Sidekick wire controls. The desktop run-config menu gains a Fusion row (builtin Devin only) opening a dialog that decomposes the advertised values into Lead, Lead effort, Sidekick and Fast Mode controls. Apply writes exactly one advertised model value plus that pair's own `thought_level`/`speed` options through the existing composer edits, so the next turn applies them and the agent-reported runtime config is the confirmation — never a composed model id. Unadvertised combinations stay disabled, controls a model does not declare are told apart from controls not yet loaded, and Devin's `speed` select normalizes as the per-model Fast control only for builtin Devin. Model: swe-2-max Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
|
@EventHorizonXT, this pull request needs updates before review. It is marked If the PR remains invalid for 7 days, it will be closed and marked Policy findings |
3 tasks done
This branch has not been deployed
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.
Related issue
Closes #2758
Problem / pressure
Devin's Fusion models reach Lody as ~90 flat entries inside the single
modelACP config option, each label encoding lead, lead effort, sidekick and Fast support (e.g.Fusion (Claude Opus 5.5 Medium Thinking + SWE-2 Medium)). There is no way to compose a pair like in Devin Desktop, and per-pair capabilities (which effort ladder applies, whether Fast exists) are invisible until after selection.Protocol verification against the official runtime (Devin CLI 3000.12.28 via the pinned
acp-extension-devinadapter; realsession/newandsession/set_config_optionprobes) established that ACP exposes no independent Lead or Sidekick wire controls — only one flatmodelselect plus per-pairthought_level/speed— and that unadvertised model values are rejected with-32602. Any honest implementation must therefore apply one of the advertisedfusion-*values, never a composed id.Summary
lib/devin-fusion.ts: parses advertisedfusion-*model options into a lead/sidekick catalog (label normalization, pair lookup), resolves each pair's ownthought_level/speedcontrols, and turns a draft into composer edits — always exactly one advertised model value, never constructed.fusion-builder-dialog.tsx: Devin Fusion dialog with Lead, Lead effort, Sidekick and Fast Mode; unadvertised pairs disabled with reason; "not declared" vs "not loaded" distinguished; runtime confirmation compares againstacpRuntimeConfigonly — pending edits say so instead of claiming applied state.desktop-run-config-menu.tsx+ plumbing insession-chat-interface.tsx,session-chat-input-area.tsx,chat-landing.tsx: a Fusion row between Model and Reasoning, gated to builtin Devin with a parseable catalog; session edits apply from the next message, landing-page edits at conversation start.speedselect normalized as the per-model Fast control;useAcpModelSelectorResolverexposes per-model selectors asselectorsForModel.This change is intentionally kept as one reviewable artifact here; if maintainers prefer the ≤1000-line community split it is already staged as a sequence starting with #2759 (selector plumbing → lib + tests → UI → docs).
Visual explanation
parseFusionCatalogonly decomposes values Devin already advertised;fusionApplyEditsemits the untouched value string. Nothing in this path can send a model id Devin did not publish.Before / after
fusion-*labels in the shared model listStorybook states were verified visually for: confirmed pair, pair without Fast (Fast disabled with reason), runtime differs (pending banner), non-Fusion model, unknown controls, and the full menu → dialog → lead dropdown → apply round trip. The Storybook
DevinFusionstory onDesktopRunConfigMenureproduces all of them.Test plan
pnpm check— full suite green on the branch commit (typecheck, lint, i18n, all boundary checks,test:ciacross the workspace incl. components 4585 tests).tests/fusion-builder.test.tsx(23) +tests/acp-selector-options.test.tsadditions — parse, legal/illegal pairs, per-pair control resolution, pair-change reset, exact apply edits, runtime confirmation, dialog render, menu gating, Devinspeedbehavior.session/newcatalog (145 values / 88fusion-*),set_config_optionfor model +thought_level+speed, unadvertised value rejected-32602with state unchanged.session/promptreached the runtime's quota gate; the agent-reportedmodelLabelrendered the applied model, effort and speed (Fusion (GPT-6 Sol Medium Thinking Fast + SWE-2 Medium)).Context handoff
Original user prompt
Show original prompt
Shared conversation
Status: shared
Link: https://share.lody.ai/s/r17fb89p3ppc0qj99rkbb566z98j5ypd#access=v1.33791ff0455b99e33f50af2f1d22541dc0fa58c70b61266a0b3e3303df06f4b1