Skip to content

feat(managed-agents): add Oh My Pi as a native ACP runtime#2573

Open
dkta0 wants to merge 1 commit into
block:mainfrom
dkta-labs:feature/omp-runtime
Open

feat(managed-agents): add Oh My Pi as a native ACP runtime#2573
dkta0 wants to merge 1 commit into
block:mainfrom
dkta-labs:feature/omp-runtime

Conversation

@dkta0

@dkta0 dkta0 commented Jul 23, 2026

Copy link
Copy Markdown

Summary

  • add Oh My Pi to the ACP runtime catalog with native omp acp invocation
  • support official macOS/Linux and Windows installers, including the Windows %LOCALAPPDATA%\omp path
  • gate onboarding on OMP setup completion and expose OMP in the harness picker
  • keep OMP first in onboarding so the newly supported native-ACP option is immediately discoverable during rollout; Claude Code and Codex remain available alongside it

Related issue

None found.

Testing

  • cargo fmt --manifest-path desktop/src-tauri/Cargo.toml -- --check
  • cargo test --manifest-path desktop/src-tauri/Cargo.toml managed_agents::discovery::tests:: --lib (78 passed)
  • node --test --experimental-strip-types desktop/src/features/onboarding/ui/onboardingRuntimeSelection.test.mjs (4 passed)

@bradhallett bradhallett left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work on this — the OMP capability mapping is accurate. I verified every claim against live omp (v17.1.3) and the ACP surface, and it all holds up (details below). The one thing blocking is a rebase: #2680 landed on main after this branch and restructured the install-metadata fields — that's the dirty/conflicting state, not a logic issue.

Blocker: rebase onto post-#2680 main

#2680 renamed install_instructions_urlcli_install_instructions_url and split out a new adapter_install_instructions_url field. The OMP literal still uses the pre-#2680 single-field name, so it won't compile against current main. After rebasing, update the OMP KnownAcpRuntime entry:

// pre-#2680 (current branch)
install_instructions_url: "https://github.com/can1357/oh-my-pi",

// post-#2680
cli_install_instructions_url: "https://github.com/can1357/oh-my-pi",
adapter_install_instructions_url: "",

"" is the right adapter URL here — OMP speaks ACP natively, so there's no separate adapter to install.

Capability mapping — verified correct

I ran the ACP initialize handshake against omp acp and probed the CLI; each flag matches what OMP actually exposes:

  • initialize advertises no modelCapabilitiessupports_acp_model_switching: false
  • initialize advertises no config capability → supports_acp_native_config: false
  • authMethods: [{ id: "agent", "Use existing local credentials…under ~/.omp" }] → the setupVersion probe + omp setup login hint match (omp config get setupVersion returns a positive int, exit 0 when set up) ✓
  • OMP has no env vars for thinking / maxTokens / contextLimit / primary model / provider → all the None bindings are correct (thinking is the --thinking flag + model.defaultThinkingLevel config key) ✓
  • config_file_path: ~/.omp/agent/config.yml ✓; skill_dir: .omp/skills ✓ (matches the .goose/.claude/.codex project-local pattern; OMP also discovers ~/.omp/agent/skills globally)
  • Windows %LOCALAPPDATA%\omp ✓ — install.ps1 sets $InstallDir = "$env:LOCALAPPDATA\omp" and writes omp.exe
  • omp.sh/install and omp.sh/install.ps1 both resolve (302 → can1357/oh-my-pi/main/scripts/install.{sh,ps1})

The probe_auth_status change (capturing stdout + the positive-integer gate) is sound — it runs only on the non-timeout path after exit_status.success(), and ""/"0" both correctly yield LoggedOut.

Minor

  • PR title: CONTRIBUTING.md requires Conventional Commits — feat(managed-agents): add Oh My Pi as a native ACP runtime.
  • Onboarding order: ONBOARDING_RUNTIME_ORDER = ["omp", "claude", "codex"] puts OMP first, ahead of the first-party options. Worth a one-line justification in the body (or a maintainer's explicit call).
  • Related issue: the PR template has a "Related issue" line — please add it ("none found" is fine) per CONTRIBUTING.
  • Probe test: auth_probe_requires_positive_integer_stdout is #[cfg(unix)]-only, so the new path gets no Windows coverage. Low risk, but a platform-neutral variant would close the gap.

Happy to help with the rebase if useful.

Signed-off-by: Dakota Secula-Rosell <286529425+dkta0@users.noreply.github.com>
@dkta0
dkta0 force-pushed the feature/omp-runtime branch from c8aa75d to a2c86d5 Compare July 25, 2026 21:03
@dkta0 dkta0 changed the title Add Oh My Pi as a native ACP runtime feat(managed-agents): add Oh My Pi as a native ACP runtime Jul 25, 2026
@dkta0

dkta0 commented Jul 25, 2026

Copy link
Copy Markdown
Author

Rebased onto current main and addressed the review:

  • migrated the OMP metadata to cli_install_instructions_url plus an empty adapter_install_instructions_url
  • preserved the updated Windows installer coverage while resolving the rebase conflict
  • added a platform-neutral positive-integer stdout classification test
  • updated the title, related-issue section, and onboarding-order rationale

Local checks:

  • cargo fmt --manifest-path desktop/src-tauri/Cargo.toml -- --check
  • managed-agent discovery tests: 78 passed
  • onboarding runtime selection tests: 4 passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants