Files
hermes-agent/hermes_cli
teknium1 6a3dcc39ab fix(dashboard): every REST route honours the profile it is given
One backend process now serves every profile, but a handful of REST handlers
resolved get_hermes_home() directly and ignored the profile the request named:
POST /api/memory/reset wiped the LAUNCH profile's MEMORY.md/USER.md no matter
which profile the switcher pointed at, and the same held for the curator state
file, webhook subscriptions, shell hooks + their consent allowlist, checkpoints,
backups/imports, the credential pool and the dashboard's own theme/font/plugin
preferences. Per-profile backend processes used to mask it.

* Every one of those handlers now takes `?profile=` and runs inside the
  existing `_config_profile_scope` / `_profile_scope` seam; action-spawning
  routes pass `-p <profile>` to the child via `_profile_cli_args`.
* Destructive routes (memory reset, webhook delete, hook delete, checkpoint
  prune, ops import/import-upload, credential-pool delete, curator run) refuse
  an UNNAMED profile with 400 while the process hosts more than one profile
  (`is_multiplex_active()`, decided at boot). A genuinely single-profile host
  keeps the old meaning, so plain `hermes serve` + curl is unchanged.
* Callers updated in the same change: the Desktop main-process routing table
  (`LOCAL_PRIMARY_SCOPED_ROUTES` + the /api/webhooks and /api/ops families) so
  a fixed handler reaches the shared backend WITH the profile query instead of
  a per-profile backend that no longer exists, and the dashboard SPA's
  `PROFILE_SCOPED_PREFIXES`.
2026-09-21 09:59:11 -07:00
..
…
…
…
…
…
…