Skip to content

feat(desktop): promote Devin to a first-class managed ACP runtime #2

Description

@errfld

Tracked by #6. Blocked by #1.

Why this issue exists

Devin currently exists only in PRESET_HARNESSES as devin acp. That provides catalog/PATH discovery and generic spawning, but not the install, authentication, readiness, or model metadata projected from KnownAcpRuntime for Claude Code and Codex.

This promotes the existing identity; it does not add a second adapter or relay API.

Current code

  • Preset: desktop/src-tauri/src/managed_agents/discovery/presets.rs
  • Tier-1 table and Desktop arg normalization: desktop/src-tauri/src/managed_agents/discovery.rs
  • Metadata type: desktop/src-tauri/src/managed_agents/discovery/runtime_metadata.rs
  • Standalone arg normalization: crates/buzz-acp/src/config.rs
  • Readiness: desktop/src-tauri/src/managed_agents/readiness.rs and readiness/cli_login.rs
  • Discovery/install: desktop/src-tauri/src/commands/agent_discovery.rs
  • ACP auth: desktop/src-tauri/src/commands/agent_auth.rs
  • Reserved IDs: desktop/src-tauri/src/managed_agents/custom_harnesses.rs

Target contract

Use #1 as authority. Expected metadata unless disproved:

Field Value
id / label devin / Devin
command / args devin / ["acp"]
underlying CLI devin; native ACP, no adapter
auth probe / login devin auth status / devin auth login
model env DEVIN_MODEL
provider env none; Devin-owned account/provider
config path ~/.config/devin/config.json
MCP sidecar none initially
skill directory none; Devin reads .agents/skills
thinking/context/token env none unless official docs establish one

Use current official platform install metadata. Devin is proprietary and externally installed; do not vendor its binary or credentials.

Implementation guidance

  1. Move Devin from PRESET_HARNESSES into KNOWN_ACP_RUNTIMES, preserving its ID.
  2. Keep launch args declarative. Prefer adding default_args to KnownAcpRuntime and consuming it in Desktop discovery/spawn instead of creating another command table. The independent buzz-acp CLI still needs equivalent standalone normalization.
  3. Generalize collect_missing_requirements so known runtimes with auth_probe_args use cli_login::requirements; retain specialized Buzz Agent/Goose checks.
  4. Ensure discovery returns one built-in Devin entry populated by the existing parallel auth-probe phase.
  5. Verify generic auth discovery/connect works once known_acp_runtime_exact("devin") resolves; add no Devin auth match arm.
  6. Derive reserved IDs from runtime/preset sources of truth.
  7. Reuse the bundled logo from Add Devin as a preset ACP harness block/buzz#3225; add no remote icon.
  8. Reconcile fix(acp): launch ACP/stdio mode for managed agents with no runtime preset block/buzz#3804: promoted Devin args must come from the known-runtime path while its generic preset fallback remains for other presets.

Acceptance criteria

  • Existing records/personas with runtime: "devin" work without migration.
  • Devin appears exactly once with source: "builtin".
  • Missing CLI, logged-out, invalid-config, and ready states are distinct and actionable.
  • Managed, persona-linked, and command-override launches execute devin acp.
  • buzz-acp helper commands normalize bare devin to devin acp.
  • Browser/terminal login methods come from ACP initialize.authMethods.
  • Credentials and credential files are never read, copied, persisted, or logged.
  • Official install metadata and all paths above have focused tests.
  • Claude, Codex, Goose, Buzz Agent, presets, and custom harnesses are unchanged.

Tests to update

  • desktop/src-tauri/src/managed_agents/discovery/tests.rs
  • readiness tests beside managed_agents/readiness.rs
  • desktop/src-tauri/src/commands/agent_auth.rs fake-executable tests
  • desktop/src-tauri/src/commands/agent_discovery.rs install-plan tests
  • desktop/src-tauri/src/managed_agents/runtime/tests.rs
  • desktop/src-tauri/src/managed_agents/custom_harnesses.rs collision tests
  • crates/buzz-acp/src/config.rs arg-normalization tests
  • replace existing Devin preset tests while preserving the logo guard

Suggested verification

. ./bin/activate-hermit
cargo test -p buzz-acp
cargo test --manifest-path desktop/src-tauri/Cargo.toml managed_agents::
cargo test --manifest-path desktop/src-tauri/Cargo.toml commands::agent_auth
just fmt-check
just desktop-tauri-fmt-check

Run just ci before review and commit with git commit -s.

Out of scope

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions