hermes-agent: revert deprecation, fix socksio build with flit-core 4 - #297327
Conversation
Revert the deprecation (Homebrew#296811): the formula still builds from upstream source with HERMES_NIX_BUILD=1, and the 2026.8.3 bottles landed after it was merged. Original revert by Sean Molenaar (Homebrew#297271). Fix the build under flit_core 4.0.1 (released 2026-08-04), which removed the legacy [tool.flit.metadata] table: socksio 1.0.0's patched build requirement is unbounded (flit_core >=2), so cap it below 4 while building that resource. socksio upstream has had no release since 1.0.0, so there is no upstream commit to backport. Co-authored-by: Sean Molenaar <SMillerDev@users.noreply.github.com>
94a8e3a to
4e086ad
Compare
|
Please wait for discussion in #297271. |
|
Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
|
Thanks @dot-agi! |
|
Thanks for your contribution and patience @dot-agi! |
|
Thank you so much @MikeMcQuaid @p-linnane and @SMillerDev! |
|
Thanks for getting the formula undeprecated. There is a runtime packaging regression in the current This can be reproduced without configuring Hermes or providing credentials: brew fetch --force hermes-agent
bottle="$(brew --cache hermes-agent)"
# Actual: 199
tar -tzf "$bottle" \
| grep '/libexec/lib/python3\.14/site-packages/plugins/.*\.py$' \
| wc -l
# Actual: 0; upstream v2026.8.3 contains 96
tar -tzf "$bottle" \
| grep '/libexec/lib/python3\.14/site-packages/plugins/.*/plugin\.ya\?ml$' \
| wc -lThe installed-keg repro is: prefix="$(brew --prefix hermes-agent)"
site="$($prefix/libexec/bin/python -c 'import site; print(site.getsitepackages()[0])')"
find "$site/plugins" -name '*.py' | wc -l
# 199
find "$site/plugins" \( -name 'plugin.yaml' -o -name 'plugin.yml' \) | wc -l
# 0
hermes plugins list
# No plugins installed.This breaks bundled platform discovery. For example, with an existing Telegram configuration, the gateway starts but logs: The Telegram implementation itself is in the bottle at The apparent cause is upstream packaging metadata: As a local verification, restoring the 96 manifests from the exact v2026.8.3 source archive made Hermes discover 55 bundled plugins, registered A regression assertion around bundled plugin discovery (for example, |
Strengthen the plugin-discovery regression test per the report in Homebrew#297327: assert the bundled telegram-platform plugin registers through the wrapper env and that its plugin.yaml manifest is shipped. The wheel intentionally omits plugin manifests (hermes_cli.plugins requires plugin.yaml + __init__.py per plugin), so discovery only works when HERMES_BUNDLED_PLUGINS points at the bundled tree - exactly what these assertions pin down.
|
is this gonna take 2 weeks to come out or am I migrating to my docker install |
You mean the new PR? That's upto the maintainers to look at. |
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>?brew test <formula>?brew audit --strict <formula>(after doingHOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it passbrew audit --new <formula>?AI-assisted contribution by Claude Code (Claude Fable 5, model
claude-fable-5) for ~95% of the work (CI failure diagnosis, formula change, and running the validation commands). Build, test and audit were executed by the AI on the contributor's machine; the contributor reviewed the diff, the validation output and this description.Built and tested locally on macOS 26 (Tahoe) running arm64.
Supersedes #297271: the revert is included as a single squashed commit (Sean Molenaar credited via Co-authored-by, thanks @SMillerDev), plus the build fix that PR's CI needs.
Why that CI failed — unrelated to the revert: flit_core 4.0.1 (PyPI, 2026-08-04) removed the legacy
[tool.flit.metadata]table. Thesocksioresource's existing patch unpins its build requirement toflit_core >=2, so PEP 517 build isolation now picks flit_core 4 andsocksio1.0.0 fails withflit_core.config.ConfigErrorbefore the wheel's requirements can even be read. socksio upstream is dormant (no release since 1.0.0, last commit 2024), so the formula capsflit_core >=2,<4while building that resource, restoring the known-good backend (3.x) used when the 2026.8.3 bottles were built.