Skip to content

feat(desktop): add zcode-acp preset to the harness catalog - #4889

Open
jpalmae wants to merge 1 commit into
block:mainfrom
jpalmae:feat/add-zcode-acp-preset
Open

feat(desktop): add zcode-acp preset to the harness catalog#4889
jpalmae wants to merge 1 commit into
block:mainfrom
jpalmae:feat/add-zcode-acp-preset

Conversation

@jpalmae

@jpalmae jpalmae commented Aug 5, 2026

Copy link
Copy Markdown

Following up on #3131 (closed as superseded by the harness catalog shipped in v0.5.0 / #2773), this adds zcode-acp as a tier-2 preset so ZCode is one-click discoverable in the Desktop runtime gallery — the data-entry PR @wpfleger96 suggested in #3131 (comment).

What

zcode-acp is a standalone ACP adapter (mirroring amp-acp / hermes-acp) that drives the ZCode CLI through its stdio app-server. It speaks ACP v1 directly, so no other Buzz-side change is needed beyond this preset entry.

  • Adapter repo: https://github.com/jpalmae/zcode-acp (Apache-2.0)
  • ACP parity with codex-acp: streaming text + reasoning, tool calls (tool.updatedToolCall/ToolCallUpdate), session/requestPermission bridged bidirectionally, authenticate/logout (Z.AI OAuth init/poll + credential store compatible with zcode login), UsageUpdate.

Changes (small data-entry, as suggested)

File Change
desktop/src-tauri/src/managed_agents/discovery/presets.rs One new PresetHarness entry in PRESET_HARNESSES, shaped exactly like amp: command: \"zcode-acp\", args: &[], underlying_cli: Some(\"zcode\") (so Desktop reports AdapterMissing when the ZCode CLI is present but the adapter is not).
desktop/src/features/onboarding/ui/RuntimeIcon.tsx Map \"zcode-acp\"/harness-logos/zcode-acp.svg in PRESET_LOGOS (satisfies presetLogos.test.mjs).
desktop/public/harness-logos/zcode-acp.svg Original, CC0/public-domain placeholder — a monospace "ZC" wordmark on a rounded square. Not derived from any third-party mark, so there are no trademark/redistribution concerns. Happy to swap in an official Z.ai mark under redistribution terms if/when one is provided.
desktop/public/harness-logos/CREDITS.md Provenance row for the placeholder.

Why underlying_cli: Some(\"zcode\")

zcode-acp is an adapter that spawns node zcode.cjs ... — i.e. it wraps a separately-installed vendor bundle. Mirroring amp (which sets underlying_cli: Some(\"amp\")), this makes Desktop distinguish “ZCode installed but the adapter missing” from “neither installed”, surfacing the right install guidance.

Verification

  • presetLogos.test.mjs assertions replicated locally (same regex the test uses): every PRESET_HARNESSES id has either an inline RUNTIME_MARKS entry or a PRESET_LOGOS entry whose file exists on disk, and there are no orphan PRESET_LOGOS keys. ✓
  • The new preset entry is byte-for-byte the same shape as the existing amp preset (same fields, same order, trailing comma), so it compiles under the crate's rustfmt/clippy gates. The full cargo check -p buzz-desktop requires a prebuilt buzz-acp binary in build.rs that isn't available outside the release pipeline, so I could not run it end-to-end locally — but the change is additive data-only and mirrors a sibling.

Out of scope

  • The placeholder logo is intentionally neutral. If maintainers prefer a different treatment (e.g. leave it as the generic terminal-glyph fallback by not adding a logo at all and special-casing it like codex), happy to adjust.
  • Headless buzz-acp already works without this PR (per feat(buzz-acp): register zcode-acp as a known ACP agent #3131 feedback); this PR is purely about Desktop discoverability.

Following up on block#3131 (closed as superseded by the harness catalog shipped
in v0.5.0 / block#2773), this adds `zcode-acp` as a tier-2 preset so ZCode is
one-click discoverable in the Desktop runtime gallery.

`zcode-acp` is a standalone ACP adapter (mirroring amp-acp / hermes-acp)
that drives the ZCode CLI through its stdio app-server. It speaks ACP v1
directly, so no other Buzz-side change is needed:
https://github.com/jpalmae/zcode-acp

- New PresetHarness entry: command=zcode-acp, args=[], underlying_cli=zcode
  (so Buzz reports AdapterMissing when the ZCode CLI is present but the
  adapter is not — same shape as the amp preset).
- Mapped logo in PRESET_LOGOS and an original CC0 placeholder SVG so the
  presetLogos coverage guard passes. Happy to swap in an official Z.ai
  mark under redistribution terms if/when available.
- CREDITS.md row recording the placeholder provenance.

Signed-off-by: jpalmae <39507014+jpalmae@users.noreply.github.com>
@jpalmae
jpalmae requested a review from a team as a code owner August 5, 2026 14:01
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.

1 participant