feat(agents): support Devin Desktop compatibility - #114
Conversation
Prefer Devin Desktop config paths for the existing Windsurf adapter while keeping legacy Windsurf locations discoverable and merge-compatible. Update the agent display name, docs, and mascot treatment to reflect Devin Desktop without breaking the stable internal windsurf adapter key.
|
Thanks for the timely PR! Before merging I did a deep dive into the official docs, and found something that affects the scope of this PR a bit, so I'd like to confirm the direction with you first. Devin Desktop currently ships two agents with completely separate configs.
In this PR, the project-level changes are spot on: But the global side is the tricky part: The questionModeling Devin Local/CLI properly means giving it its own agent entry in HarnessKit (own paths, own formats — the same way hindsight models the two agents separately), rather than folding it into the Windsurf adapter. So two options:
Do you use the Devin Local agent or the Devin CLI? If yes, I'm happy to prioritize option 2 as a follow-up, and this PR would then land as option 1 either way. Thanks again for the PR! |
Thanks for the detailed explanation and for digging into the official documentation. I had misunderstood the transition and assumed that Windsurf, including Cascade’s configuration, had largely migrated to the Devin paths. I wasn’t aware that Cascade and Devin Local are separate agents with different configuration systems. |
… paths
Devin Desktop ships two agents with separate config systems: Cascade
(the legacy Windsurf agent, which this adapter models) and Devin Local /
Devin CLI. Per the official FAQ, Cascade's per-user paths "remain
unchanged" under ~/.codeium/windsurf/ — only the workspace side moved to
.devin/ (with .windsurf/ as fallback). ~/.config/devin belongs to the
Devin CLI, a different agent with a different file layout entirely.
Verified against docs.devin.ai and the string constants in the official
3.7.25 binaries: Cascade's language server never references
~/.config/devin, while the embedded Devin CLI binary owns it.
- Revert the global side to ~/.codeium/windsurf and drop the merged
multi-candidate readers plus the scanner-wide id dedup they required
- Keep the project-side .devin/{rules,skills,workflows} preference and
.windsurfignore; add the missing .devinignore (the primary name)
- Detect fresh installs via ~/.devin/extensions (product.json
dataFolderName), deliberately not bare ~/.devin or ~/.codeium, which
other products create
- Fix a pre-existing gap: global rules live at memories/global_rules.md;
keep the old bare path visible and stop double-listing the file as a
memory
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ndsurf mascot The Devin logo hardcoded a near-black fill, which disappears on dark backgrounds; use var(--mascot-icon-color) like the other monochrome marks (cursor, codex). Remove the old Windsurf mascot component and its CSS block — nothing references them since the Devin mark took over. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Context
Cognition has acquired Windsurf and is transitioning the product into Devin Desktop:
This keeps HarnessKit aligned with the current product name while preserving existing Windsurf user configs.
Screenshots
Verification
cargo test -p hk-core windsurfpnpm test -- src/lib/__tests__/types.test.ts src/lib/__tests__/agent-capabilities.test.tspnpm exec tsc --noEmitpnpm lint