Repository navigation
Conversation
|
Note for maintainers on CI status: all three workflows (CI, Docker, Nix) on this PR completed with Local gates, run against fresh upstream main cfdbbb6:
Happy to rebase or adjust once someone with permissions re-runs the workflows. |
|
Independent confirmation on Windows, and a before/after on the patch itself. Environment: Hermes Agent v0.21.1 (2026.9.7), upstream Reproduced with the shipped
|
|
Thanks @kokhlo. You were the first to fix this: Merged in #127782 (16c59d0 on main). Verified on 16c59d0 through the real migrate path,
A name that isn't a platform ( |
Summary
platform_toolsetsentries naming a plugin platform's synthesized bundle (teams: [hermes-teams]— verbatim from the shippedcli-config.yaml.example) were reported as unknown toolsets, followed by a claim that the platform will have no tools. Both statements are false: the bundle resolves to the full platform toolset viatoolsets.resolve_toolset()→_plugin_platform_bundle().Root cause: the two validation paths in
hermes_cli/toolset_validation.pydisagree about plugin platforms._platform_default_is_valid()(used by the null/scalar fallback branch) consultsgateway.platform_registry.is_registered(platform), but the per-entry list loop only called the injectedis_valid_toolset— which resolves totoolsets.validate_toolset(), a predicate that never knows about synthesizedhermes-<platform>bundles. The same string was "valid" as a platform default and "unknown" as an explicit entry, and the "did you mean" hint could echo the exact string it just declared unknown.Fix: in the list branch, treat an entry equal to the platform's own default as valid when
default_validalready holds — the same source of truth the null/scalar branch trusts (the platform registry for plugin platforms). Genuinely unknown names on the same list still warn, with the bundle as a now-correct suggestion; the false "no tools" claim disappears for bundle entries. Registry-unaware platforms keep the old behavior entirely (typo case unchanged).Testing
env -u HERMES_YOLO_MODE .venv/bin/python -m pytest tests/hermes_cli/test_toolset_validation.py -q→ 15 passed (12 pre-existing + 3 new).if False and ...) turns the first two new tests red.ruff checkclean;ruff format --diffcomplaint count equals the pristine-main baseline (77 = 77).Fixes #107098