mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-25 11:02:03 +00:00
`cron/jobs.py` resolved `HERMES_DIR`/`JOBS_FILE` from `get_hermes_home()`, which follows the active profile override. So a job created from a profile-scoped agent session (`hermes -p myprofile chat`, where the in-process `cronjob` tool calls `create_job`) was written to `~/.hermes/profiles/myprofile/cron/jobs.json`, while the profile-less gateway (`hermes gateway run`) reads only `~/.hermes/cron/jobs.json`. The job was silently orphaned: `cronjob action=list` from the same profile reported it healthy (same file), but the gateway ticker never saw it and it never fired. `last_run_at` stayed null forever. (#32091) Fix: resolve the cron store from `get_default_hermes_root()` — the purpose-built "profile-level operations" root that returns `<root>` even when `HERMES_HOME` is `<root>/profiles/<name>` (and handles Docker/custom layouts). Now the creator, the gateway scheduler, and the dashboard all agree on a single jobs.json at the root, so a job created under any profile is visible to the gateway. Scope: this is the storage-location half of the fix. Making a job *execute* under its originating profile's config/skills (a per-job `profile` field + runtime context scoping, the #48649 sibling) is a separate, riskier change and will follow as its own PR — keeping this layer minimal and safe. Salvaged from #32117 by @mohamedorigami-jpg (authorship preserved). The comprehensive #33839 (@sweetcornna) takes the same Option-A storage approach and additionally adds the per-job profile execution scoping; this PR lands the safe storage layer first. Tests: `tests/cron/test_cron_profile_storage.py` — asserts the store anchors at `<root>/cron` under a profile HERMES_HOME (not `<profile>/cron`), and is unchanged when no profile is active. Full `tests/cron/` suite: 511 passed. Fixes #32091 Co-authored-by: mohamedorigami-jpg <mohamed.origami@gmail.com> |
||
|---|---|---|
| .. | ||
| scripts | ||
| __init__.py | ||
| blueprint_catalog.py | ||
| jobs.py | ||
| scheduler.py | ||
| scheduler_provider.py | ||
| suggestion_catalog.py | ||
| suggestions.py | ||