Skip to content

fix(profiles): seed plugins/ for new profiles - #88153

Open
liuhao1024 wants to merge 1 commit into
NousResearch:mainfrom
liuhao1024:liuhao/cron-bugfix-88143
Open

fix(profiles): seed plugins/ for new profiles#88153
liuhao1024 wants to merge 1 commit into
NousResearch:mainfrom
liuhao1024:liuhao/cron-bugfix-88143

Conversation

@liuhao1024

Copy link
Copy Markdown
Contributor

What does this PR do?

Makes hermes profile create seed the plugins/ directory for new profiles. _PROFILE_DIRS seeded skills/, memories/, sessions/, skins/, logs/, plans/, workspace/, cron/, and home/ — but not plugins/. Plugin discovery resolves user plugins under $HERMES_HOME/plugins/, and a profile activation swaps HERMES_HOME to the profile directory, so for any profile created by hermes profile create the discovery path was simply absent: a model-provider plugin configured in the profile's config.yaml failed with Unknown provider 'myprovider' even though the same provider worked on the default profile (#88143).

The fix adds "plugins" to _PROFILE_DIRS (one line plus a comment documenting the discovery dependency). Cloned profiles were already covered — --clone copies the whole tree, and #69913 adds explicit plugins/ clone handling — this closes the fresh-create gap.

Related Issue

Fixes #88143

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)

Changes Made

  • hermes_cli/profiles.py_PROFILE_DIRS gains "plugins" with a comment naming _user_plugins_dir() discovery and the failure mode.
  • tests/hermes_cli/test_profiles.pyTestCreateProfile gains test_seeds_plugins_dir: a fresh profile contains plugins/, so the discovery path exists end-to-end for model-provider plugins.

How to Test

  1. python -m pytest tests/hermes_cli/test_profiles.py -q
  2. Observed result: 49 passed, 2 skipped (48 pre-existing + 1 new). A/B guard: with only the hermes_cli/profiles.py hunk stashed, test_seeds_plugins_dir FAILS (plugins/ absent from the fresh profile).
  3. Manual repro from the issue: install a model-provider plugin, hermes profile create architect, activate it — plugins/ now exists under the profile home and the configured provider resolves.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 15 (arm64)

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

$ pytest tests/hermes_cli/test_profiles.py -q               # with fix
49 passed, 2 skipped in 1.41s
$ git stash -- hermes_cli/profiles.py && pytest ... -q      # A/B guard
1 failed  (plugins/ absent from the fresh profile)

hermes profile create seeded skills/, memories/, sessions/ and friends
but not plugins/. Plugin discovery resolves user plugins under
$HERMES_HOME/plugins/, so for a profile created without the directory
a model-provider plugin configured in the profile's config.yaml failed
with "Unknown provider" - the provider was simply invisible to any
non-default profile (NousResearch#88143).
@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 area/profiles Multi-profile isolation, HERMES_HOME scoping sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Aug 17, 2026
@Enough1122

Copy link
Copy Markdown
Contributor

AI code review — automated review for reference; please use your judgment.

  1. hermes_cli/profiles.py — Positive: adding plugins to the seeded-dirs list is the minimal correct fix, and the inline comment traces the exact failure chain (bug(profiles): hermes profile create does not seed plugins/ — model-provider plugins invisible to non-default profiles #88143 → _user_plugins_dir → "Unknown provider") so the entry's purpose is self-documenting. The test asserts the discovery path end-to-end (plugins/model-providers parent exists), not just the bare directory. No change requested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/profiles Multi-profile isolation, HERMES_HOME scoping comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug(profiles): hermes profile create does not seed plugins/ — model-provider plugins invisible to non-default profiles

3 participants