Skip to content

fix(plugins): show entry-point plugins in 'hermes plugins list' - #58645

Closed
MrGDCrazy wants to merge 1 commit into
NousResearch:mainfrom
MrGDCrazy:fix/plugins-list-entry-points
Closed

fix(plugins): show entry-point plugins in 'hermes plugins list'#58645
MrGDCrazy wants to merge 1 commit into
NousResearch:mainfrom
MrGDCrazy:fix/plugins-list-entry-points

Conversation

@MrGDCrazy

Copy link
Copy Markdown

Summary

hermes plugins list was missing pip-installed plugins that register via the hermes_agent.plugins entry-point group. The plugins were loaded and active (PluginManager.discover_and_load scans entry points correctly) — they just didn't appear in the list output because the display path (_discover_all_plugins in plugins_cmd.py) only scanned directories.

Root cause

Two separate discovery paths diverged:

Path File Scans dirs Scans entry points
Loader plugins.py PluginManager._scan_entry_points
Display plugins_cmd.py _discover_all_plugins

Fix

Added _discover_entry_point_plugins() in plugins_cmd.py mirroring PluginManager._scan_entry_points, and appended its results to the seen dict after directory scanning (entry-points don't override directory plugins on key collision).

Testing

  • 27/27 plugin tests pass (4 original list tests + 2 new entry-point tests + 21 category discovery tests)
  • 3 existing category discovery tests patched to mock _discover_entry_point_plugins (return []) so they stay isolated from real pip-installed plugins
  • 2 new tests: test_discover_entry_point_plugins_returns_tuples, test_discover_all_plugins_includes_entry_points
  • Pre-existing async test failures in test_plugin_runtime_disable_gate.py are unrelated (missing pytest-asyncio)

Verification

Before:

$ hermes plugins list --plain | grep rtk
(no output)

After:

$ hermes plugins list --plain | grep rtk
enabled      entrypoint 1.2.3    rtk-rewrite

Fixes #58644

_discover_all_plugins() in plugins_cmd.py only scanned bundled and user
directories, missing pip-installed plugins registered via the
hermes_agent.plugins entry-point group. PluginManager.discover_and_load()
already scans entry points correctly — the display path just didn't match.

Added _discover_entry_point_plugins() mirroring _scan_entry_points, and
appended its results to the seen dict after directory scanning. Patched 3
existing tests to mock the new function (return []), plus 2 new tests
covering entry-point discovery and integration.

Fixes #58644
@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins duplicate This issue or pull request already exists labels Jul 5, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Duplicate of #23814 — same fix: mirror PluginManager._scan_entry_points into the hermes plugins list display path (_discover_all_plugins in plugins_cmd.py) so pip-installed entry-point plugins are surfaced. #23814 is the earliest open canonical PR of this saturated cluster (closed #34533/#40346, open #40623/#54150). Fixes the same issue tracked by #58644/#23802.

@MrGDCrazy MrGDCrazy closed this by deleting the head repository Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(plugins): entry-point plugins missing from 'hermes plugins list'

2 participants