Skip to content

feat: Zed ACP Registry integration (salvage of #25908) - #26079

Merged
teknium1 merged 2 commits into
mainfrom
hermes/hermes-fb343bf7
May 15, 2026
Merged

feat: Zed ACP Registry integration (salvage of #25908)#26079
teknium1 merged 2 commits into
mainfrom
hermes/hermes-fb343bf7

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Salvage of #25908 by @am423 — preserves contributor authorship via cherry-pick.

Summary

Hermes is installable from Zed's official ACP Registry without hand-edited agent_servers JSON. Adds registry-compatible manifest, terminal-setup auth method, hermes acp --version/--check/--setup, an npm launcher package that shells to uvx --from 'hermes-agent[acp]==<version>' hermes-acp, and locks all three ACP-asset versions to pyproject.toml through the release script.

Changes

  • Cherry-picked (am423 / 5149468): manifest rewrite to upstream schema, 16x16 currentColor icon, build_auth_methods() always advertises terminal setup, npm launcher package + Node tests, ACP --version/--check/--setup CLI plumbing, docs.
  • Follow-up (aa56900): scripts/release.py now bumps acp_registry/agent.json, packages/hermes-agent-acp/package.json, and the launcher's HERMES_AGENT_VERSION constant in lockstep with pyproject.toml. Without this hook the next weekly release would fail test_agent_json_version_matches_pyproject until someone hand-edits four files. Added tests/scripts/test_release_acp_registry.py covering the lockstep + the missing-files no-op path.
  • AUTHOR_MAP: adam.manning@gmail.com → am423.

Validation

Before After
Manifest matches upstream ACP Registry schema no (schema_version: 1 shape) yes — verified against agentclientprotocol/registry/agent.schema.json
First-run handshake advertises usable authMethods only if provider configured always advertises terminal-setup; provider too when configured
Release script bumps ACP assets no (manual 4-file edit) yes (atomic with pyproject)
Tests acp/ + scripts/test_release_acp_registry.py: 229 passed

Known follow-up (not gating this PR)

  • Publish @nousresearch/hermes-agent-acp@0.13.0 to npm before submitting the upstream agentclientprotocol/registry PR. The npm package does not exist yet, so registry validation requires SKIP_URL_VALIDATION=1 until then. We'll also need to confirm the @nousresearch npm org is claimed.

Closes #25908.

am423 and others added 2 commits May 14, 2026 20:13
The ACP Registry manifest (acp_registry/agent.json), the npm launcher
package.json, and the launcher's HERMES_AGENT_VERSION constant must all
match pyproject.toml exactly — tests/acp/test_registry_manifest.py
enforces this lockstep.

Without a release-script hook, the next weekly version bump fails that
test until someone hand-edits four files. Extend update_version_files()
to drive the ACP bump alongside __init__.py and pyproject.toml, and
add tests covering the lockstep and the missing-files no-op path.

Also map adam.manning@gmail.com -> am423 for the salvage commit.
@teknium1
teknium1 requested a review from a team May 15, 2026 03:16
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-fb343bf7 vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 8374 on HEAD, 8374 on base (➖ 0)

🆕 New issues (4):

Rule Count
invalid-argument-type 3
unresolved-import 1
First entries
run_agent.py:13750: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
run_agent.py:7482: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
acp_adapter/auth.py:40: [unresolved-import] unresolved-import: Cannot resolve imported module `acp.schema`
run_agent.py:13753: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown | str, Unknown | str | dict[str, str]] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`

✅ Fixed issues (3):

Rule Count
invalid-argument-type 3
First entries
run_agent.py:13750: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`
run_agent.py:7482: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`
run_agent.py:13753: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown, Unknown] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`

Unchanged: 4405 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit d364132 into main May 15, 2026
15 of 17 checks passed
@teknium1
teknium1 deleted the hermes/hermes-fb343bf7 branch May 15, 2026 03:26
@alt-glitch alt-glitch added type/feature New feature or request P2 Medium — degraded but workaround exists comp/acp Agent Communication Protocol adapter comp/cli CLI entry point, hermes_cli/, setup wizard labels May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/acp Agent Communication Protocol adapter comp/cli CLI entry point, hermes_cli/, setup wizard P2 Medium — degraded but workaround exists type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants