Skip to content

feat(desktop): register Cursor as native ACP runtime + onboarding harness#2536

Open
Bartok9 wants to merge 3 commits into
block:mainfrom
Bartok9:bartok9/cursor-acp-runtime
Open

feat(desktop): register Cursor as native ACP runtime + onboarding harness#2536
Bartok9 wants to merge 3 commits into
block:mainfrom
Bartok9:bartok9/cursor-acp-runtime

Conversation

@Bartok9

@Bartok9 Bartok9 commented Jul 23, 2026

Copy link
Copy Markdown

Summary

Register Cursor as a first-class ACP harness and show it on Set up your agent harnesses next to Claude Code and Codex.

Closes #2535. Related: #1683 (prior Cursor PR), #2347 / #2546 (Grok Build companion).

Why this PR exists

Onboarding currently hard-filters visible harnesses to claude + codex only (ONBOARDING_RUNTIME_ORDER). Cursor users cannot Install/sign-in on that page even though Cursor speaks ACP natively:

cursor-agent acp

Critical design note (Grok collision)

Both Cursor and Grok Build install ~/.local/bin/agent. This PR deliberately:

  • Uses cursor-agent as the catalog command (not bare agent)
  • Only treats path-qualified agent as Cursor when the binary path is under Cursor’s install tree
  • Does not process-sweep bare agent (would claim Grok workers)

What changed

  • KNOWN_ACP_RUNTIMES: cursor entry (cursor-agent, default args acp, install script, cursor-agent status auth probe, .cursor/skills, ~/.cursor/bin on PATH)
  • Readiness + process-sweep binary names (cursor-agent only)
  • Onboarding visibility order: claude, codex, cursor
  • agentReadiness treats Cursor like other CLI harnesses
  • Unit tests for arg normalization, avatar, path disambiguation vs Grok
  • buzz-acp README: Cursor path + extension-method follow-up note

Non-claims

Test plan

  • cargo test --lib normalizes_cursor
  • cargo test --lib resolves_cursor
  • cargo test --lib path_qualified_cursor
  • cargo test --lib cursor_runtime
  • node --test onboardingRuntimeSelection.test.mjs
  • Desktop: harness page shows Cursor Install; after cursor-agent login, Next enables
  • Machine with Grok installed: Cursor still resolves via cursor-agent, not Grok’s agent shim

Signed-off-by: Bartok9 danielrpike9@gmail.com

@Bartok9
Bartok9 requested a review from a team as a code owner July 23, 2026 16:02
Bartok9 added a commit to Bartok9/buzz that referenced this pull request Jul 23, 2026
Bartok9 added a commit to Bartok9/buzz that referenced this pull request Jul 23, 2026
Both Cursor and Grok Build install `~/.local/bin/agent`. Binding Cursor to
the bare `agent` basename mis-routes Grok installs as Cursor.

- Prefer `cursor-agent` as the only catalog command
- Path-qualify bare `agent` only when the binary lives under cursor-agent/
- Drop bare `agent` from process-sweep + default-args mapping
- Auth probe / login hint use `cursor-agent`
- Tests cover Grok path non-match

Pre-maintainer polish for block#2536 / Refs block#2535.
@Bartok9

Bartok9 commented Jul 23, 2026

Copy link
Copy Markdown
Author

Self-review polish landed

Critical finding fixed: Cursor and Grok Build both install a PATH shim named agent (~/.local/bin/agent). On machines with Grok installed first, basename agent is Grok — not Cursor.

Changes in latest push

  • Catalog command is cursor-agent only (not bare agent)
  • Discovery may still accept a path-qualified agent only when the binary path is clearly under Cursor’s install tree (.local/share/cursor-agent/…)
  • Process-sweep no longer lists bare agent (would kill/claim Grok workers)
  • Default args / avatar / readiness all key off cursor-agent
  • Unit tests cover Grok path non-match + basename rejection

Still out of scope (called out in PR)

  • Headless policy for Cursor extension methods (ask_question / create_plan)

Bartok9 added a commit to Bartok9/buzz that referenced this pull request Jul 23, 2026
Pre-maintainer pass on block#2536 / Refs block#2535.

Signed-off-by: Bartok9 <danielrpike9@gmail.com>
Bartok9 added a commit to Bartok9/buzz that referenced this pull request Jul 23, 2026
Both Cursor and Grok Build install `~/.local/bin/agent`. Binding Cursor to
the bare `agent` basename mis-routes Grok installs as Cursor.

- Prefer `cursor-agent` as the only catalog command
- Path-qualify bare `agent` only when the binary lives under cursor-agent/
- Drop bare `agent` from process-sweep + default-args mapping
- Auth probe / login hint use `cursor-agent`
- Tests cover Grok path non-match

Pre-maintainer polish for block#2536 / Refs block#2535.

Signed-off-by: Bartok9 <danielrpike9@gmail.com>
@Bartok9
Bartok9 force-pushed the bartok9/cursor-acp-runtime branch from a267560 to c04c4b1 Compare July 23, 2026 16:37
Bartok9 added 3 commits July 23, 2026 13:24
…ness

Users only saw Claude Code and Codex on the harness setup page. Cursor
already speaks ACP natively (`agent acp` / `cursor-agent acp`).

- Add cursor to KNOWN_ACP_RUNTIMES (install, auth probe, skills, PATH)
- Default args acp; readiness via `agent status` / `agent login`
- Show Cursor on onboarding harness page (with Claude + Codex)
- Tests + buzz-acp README note on extension-method follow-up

Refs block#1683. Companion: Grok Build remains block#2347.

Signed-off-by: Bartok9 <danielrpike9@gmail.com>
Pre-maintainer pass on block#2536 / Refs block#2535.

Signed-off-by: Bartok9 <danielrpike9@gmail.com>
Both Cursor and Grok Build install `~/.local/bin/agent`. Binding Cursor to
the bare `agent` basename mis-routes Grok installs as Cursor.

- Prefer `cursor-agent` as the only catalog command
- Path-qualify bare `agent` only when the binary lives under cursor-agent/
- Drop bare `agent` from process-sweep + default-args mapping
- Auth probe / login hint use `cursor-agent`
- Tests cover Grok path non-match

Pre-maintainer polish for block#2536 / Refs block#2535.

Signed-off-by: Bartok9 <danielrpike9@gmail.com>
@Bartok9
Bartok9 force-pushed the bartok9/cursor-acp-runtime branch from c04c4b1 to efb6360 Compare July 23, 2026 17:25
@Bartok9

Bartok9 commented Jul 23, 2026

Copy link
Copy Markdown
Author

Polish pass (rebased on upstream/main)

HEAD efb63601 — rebased cleanly onto current main.

Differentiation vs #2546 / competing Cursor PRs

  • Binary: prefers cursor-agent only in commands; bare agent accepted only via is_cursor_agent_binary path heuristics (Cursor install tree), never process-swept.
  • Why: Grok Build also installs ~/.local/bin/agent — registry must not bind that shim as Cursor.
  • Onboarding: still in ONBOARDING_RUNTIME_ORDER as cursor (with claude/codex).
  • Docs: crates/buzz-acp/README.md documents cursor-agent + PATH collision warning + headless cursor/ask_question note.

No further code delta this push beyond rebase; collision handling already solid from prior commits on this branch.

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.

feat(agents): add Cursor as a first-class ACP runtime (onboarding harness)

1 participant