Skip to content

feat: profiles.describe/profiles.configure ws RPC for profile editors - #85216

Merged
teknium1 merged 1 commit into
mainfrom
feat/profiles-describe-configure
Aug 13, 2026
Merged

teknium1 merged 1 commit into
mainfrom
feat/profiles-describe-configure

Conversation

@teknium1

Copy link
Copy Markdown
Collaborator

What

Completes the profile-editor ws surface started in #85093: profiles.list/profiles.create let a plugin enumerate and create profiles, but there was no way to READ or MODIFY an existing profile's configuration — skills, toolsets, model, SOUL.md, description — over ws JSON-RPC (those writes exist only on the dashboard REST router, unreachable from plugins).

profiles.describe

Full configuration snapshot for an editor UI: {name, description, soul, model: {provider, default}, skills: [{name, enabled}], toolsets: [{name, description, tool_count, enabled}], toolsets_pinned}. Skill enablement mirrors the disabled-list model (installed = enabled unless in skills.disabled); toolset enablement reports the profile's tools.enabled_toolsets pin, or all-enabled when unpinned. All reads scoped via the context-local HERMES_HOME override.

profiles.configure

Editor Save: any of description (via write_profile_meta, user-authored), soul (full SOUL.md replacement), model+provider (same _write_profile_model writer as REST), disabled_skills (replace semantics via save_disabled_skills), enabled_toolsets (replace semantics; empty list clears the pin). Sections apply independently and best-effort; the result reports per-section applied so a UI can surface partial failures.

Both pool-dispatched (config + skill-tree I/O off the WS reader thread). No new model tools, config keys, or env vars — everything delegates to existing hermes_cli primitives.

Verification

Round-tripped against the real registry on a live named profile: describe returned 81 skills / 59 toolsets / model pin / meta description / SOUL.md; configure disabled a skill + pinned ["web","file"]; re-describe confirmed both landed (enabled: false, toolsets_pinned: true, exactly web+file enabled); a second configure with empty lists reverted cleanly (pin cleared, all skills re-enabled).

Consumer: the hermes-bots plugin's expanded Advanced editor (skills/toolsets/model/SOUL in both the create and edit dialogs).

profiles.list/create (#85093) let plugins enumerate and create profiles
but not read or modify an existing profile's configuration over ws.
profiles.describe returns the full editor snapshot (description, SOUL.md,
model pin, per-skill enablement via the disabled-list model, per-toolset
enablement via the tools.enabled_toolsets pin); profiles.configure
applies any subset (description via write_profile_meta, soul, model via
_write_profile_model, disabled_skills replace-semantics via
save_disabled_skills, enabled_toolsets replace-semantics with empty-list
clearing the pin) independently and best-effort, reporting per-section
results. Both scoped via the HERMES_HOME override and pool-dispatched.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 7289e39 — feat: profiles.describe/profiles.configure ws RPC for profil

⚠️ Warnings

OSV vulnerability scan · View job

3 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 3m11s vs 7m57s (-60.0%). 11 job(s) slower, 10 faster, 3 unchanged.

  • Python tests / Run tests slice 3/12: -28.0s
  • Python tests / Run tests slice 2/12: +26.0s
  • Python tests / Run tests slice 11/12: +19.0s
  • Python tests / Run tests slice 4/12: +11.0s
  • Python tests / Run tests slice 5/12: +10.0s

@teknium1
teknium1 merged commit f795812 into main Aug 13, 2026
45 checks passed
@teknium1
teknium1 deleted the feat/profiles-describe-configure branch August 13, 2026 10:12
@alt-glitch alt-glitch added type/feature New feature or request P4 Best-effort: we will get to it when we get to it (no commitment) comp/tui Terminal UI (ui-tui/ + tui_gateway/) area/profiles Multi-profile isolation, HERMES_HOME scoping area/config Config system, migrations, profiles sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Aug 13, 2026
skappafrost pushed a commit to skappafrost/hermes-agent that referenced this pull request Aug 15, 2026
…NousResearch#85216)

profiles.list/create (NousResearch#85093) let plugins enumerate and create profiles
but not read or modify an existing profile's configuration over ws.
profiles.describe returns the full editor snapshot (description, SOUL.md,
model pin, per-skill enablement via the disabled-list model, per-toolset
enablement via the tools.enabled_toolsets pin); profiles.configure
applies any subset (description via write_profile_meta, soul, model via
_write_profile_model, disabled_skills replace-semantics via
save_disabled_skills, enabled_toolsets replace-semantics with empty-list
clearing the pin) independently and best-effort, reporting per-section
results. Both scoped via the HERMES_HOME override and pool-dispatched.
melon-xf added a commit to melon-xf/hermes-agent that referenced this pull request Sep 3, 2026
…NousResearch#85216)

profiles.list/create (NousResearch#85093) let plugins enumerate and create profiles
but not read or modify an existing profile's configuration over ws.
profiles.describe returns the full editor snapshot (description, SOUL.md,
model pin, per-skill enablement via the disabled-list model, per-toolset
enablement via the tools.enabled_toolsets pin); profiles.configure
applies any subset (description via write_profile_meta, soul, model via
_write_profile_model, disabled_skills replace-semantics via
save_disabled_skills, enabled_toolsets replace-semantics with empty-list
clearing the pin) independently and best-effort, reporting per-section
results. Both scoped via the HERMES_HOME override and pool-dispatched.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles area/profiles Multi-profile isolation, HERMES_HOME scoping comp/tui Terminal UI (ui-tui/ + tui_gateway/) P4 Best-effort: we will get to it when we get to it (no commitment) sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants