hermes-bsd/plugins
Sol Aitken de60bf40c6 fix(memory): register parent packages for user-installed provider imports
User-installed memory providers load under the synthetic
_hermes_user_memory.<name> package, but the loader never registered that
parent namespace in sys.modules (it only registers "plugins" and
"plugins.memory" for bundled providers). As a result any external provider
using a relative import failed to load:

    from . import config
    ModuleNotFoundError: No module named '_hermes_user_memory'

The same gap in discover_plugin_cli_commands() meant an external provider's
cli.py with a relative import could never be discovered, so the documented
"hermes <plugin>" CLI integration did not work for standalone plugins.

Register the synthetic parent namespace before loading user-installed
providers, mirror it for cli.py discovery (including the per-provider parent
package, without executing the plugin's __init__.py), and make
_load_provider_from_dir() reuse only modules actually loaded from disk so a
parent shell registered by CLI discovery is never mistaken for the loaded
provider.

Regressions cover: a flat provider with a sibling relative import, a provider
with its implementation in a nested subpackage (including a namespace
intermediate directory), cli.py discovery with a relative import, and
provider load after CLI discovery ran first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 05:35:43 -07:00
..
browser
context_engine
dashboard_auth feat(dashboard-auth): add generic self-hosted OIDC provider 2026-06-04 03:23:45 -07:00
disk-cleanup
google_meet
hermes-achievements fix(dashboard): sanction plugin WS/upload auth via SDK helpers (gated mode) 2026-06-03 16:59:36 -07:00
image_gen
kanban fix(dashboard): sanction plugin WS/upload auth via SDK helpers (gated mode) 2026-06-03 16:59:36 -07:00
memory fix(memory): register parent packages for user-installed provider imports 2026-06-04 05:35:43 -07:00
model-providers fix(models): add gemini-3.5-flash to Gemini OAuth + API-key pickers (#37046) 2026-06-01 16:31:13 -07:00
observability feat(observability): observer-grade telemetry hooks + NeMo-Relay plugin 2026-06-03 06:36:46 -07:00
platforms fix(simplex): avoid reconnecting healthy idle websocket 2026-06-01 16:36:43 -07:00
security-guidance
spotify
teams_pipeline
video_gen fix(xai): route video models by modality 2026-06-01 19:00:30 -07:00
web
__init__.py