Repository navigation
fix(config): stop flagging plugin toolsets as unknown in platform_toolsets validation - #97374
Closed
chrisluersen wants to merge 2 commits into
Closed
chrisluersen wants to merge 2 commits into
chrisluersen wants to merge 2 commits into
Conversation
Overall: Stops false "unknown toolset" warnings for plugin toolsets that register after config validation (#81163). What it does
Non-blocking notes
Non-blocking — please use your judgment. |
…lsets validation Plugin-registered toolsets (eikon, buzz, a2a) only enter the tool registry after plugins load — which is after config-time validation runs in migrate_config(). validate_toolset() therefore flags them as unknown even though they resolve fine at runtime, spamming every startup with: platform 'cli' references unknown toolset 'a2a' — did you mean 'hermes-cli'? Treat names recorded in known_plugin_toolsets (the per-platform plugin-toolset set persisted by the `hermes tools` save flow) as valid too. The NousResearch#38798 corruption check still fires for genuinely unknown names.
…m masking) The prior fix collected the union of all platforms' known_plugin_toolsets and treated every name as valid for every platform, which silently masked a genuinely wrong per-platform entry (live config: 'a2a' on cli, only known for discord). validate_platform_toolsets now accepts a per-platform mapping and resolves plugin names against the current platform only, while keeping flat-iterable backward compat for existing callers. Adds regression tests: per-platform names do not cross-mask, and the mapping shape still accepts known plugins.
chrisluersen
force-pushed
the
fix/toolset-validation-plugin-toolsets
branch
from
August 29, 2026 19:08
3cd4cd5 to
05b2277
Compare
12 of 13 tasks
|
Live confirmation from a Hermes v0.21.1 deployment: config migration false-flagged the configured |
12 of 13 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
platform_toolsetsvalidation (added for #38798) flags plugin-registered toolsets as unknown on every startup, even though they resolve fine at runtime:Root cause
Plugin toolsets (
eikon,buzz,a2a) register in the tool registry only after plugins load — which is aftermigrate_config()runs its platform_toolsets validation. Sovalidate_toolset()genuinely doesn't know them yet at validation time, and the warning is a false positive. The tools are not actually broken —_get_platform_tools()correctly recognizes plugin toolsets at runtime (see #81163).Fix
The validator now accepts an optional
plugin_toolset_namesset (the union ofknown_plugin_toolsetsfrom config — the per-platform plugin-toolset set persisted by thehermes toolssave flow). Names carried there validate clean, while genuinely unknown/corrupted names still warn exactly as before.Test plan
hermes) is still flagged even when plugin names are supplied.tests/hermes_cli/test_toolset_validation.py,test_tools_config.py,test_config_set_list_values.py— 61 passed, 6 skipped.migrate_config()against a real config containinga2a/buzz/eikon— zero toolset warnings emitted.Fixes the false-positive half of #38798's validation without weakening its corruption detection.