feat(cron): add per-job reasoning effort across all surfaces - #63327
feat(cron): add per-job reasoning effort across all surfaces#63327dschnurbusch wants to merge 2 commits into
Conversation
Duplicate of #7382 — same feature (per-cron-job |
|
Thanks for the broad cross-surface implementation. The underlying job-level gap is still present on current main, but the scheduler resolution needs updating before this can be salvaged. Problems
Suggested changes
Automated hermes-sweeper review. |
Summary
Adds a first-class, optional
reasoning_effortoverride to individual cron jobs.Runtime precedence is:
agent.reasoning_effortOmitted,
null, or empty values inherit the profile/global setting. Explicitnonedisables reasoning for the job. New writes are validated and canonicalized at the core cron storage boundary, while malformed hand-edited/legacy values remain read-safe: the scheduler warns and falls back to the global value.This is a current-main consolidation of the work discussed in #23524 and the overlapping implementations in #7382, #26214, and #30929. It addresses the gaps identified there rather than copying an outdated parser path: current CLI ownership, gateway/dashboard APIs, both web and desktop cron editors, all supported effort levels including
max/ultra, null/empty clear semantics, and malformed-record fallback.Why this belongs on the job
Cron jobs already support per-job provider/model selection. Reasoning effort is the remaining inference axis that materially changes quality, latency, and cost. Keeping it global prevents a scheduler from running bounded classification work cheaply while preserving stronger reasoning for high-consequence jobs.
The field is deliberately not added to provider/model drift snapshots. An omitted override continues to mean “follow this profile’s global policy”; an explicit override pins the job’s reasoning policy. Existing jobs remain unchanged.
no_agentjobs preserve the value but do not use it, because no agent/model is instantiated. The UIs mark it inactive rather than deleting it, allowing a job to switch back to agent mode without losing its intended setting.Surfaces covered
cronjobtool schema, create/update/clear/list formattinghermes croncreate/edit/list commands/croncreate/edit/list commands/api/jobsSupported values
none,minimal,low,medium,high,xhigh,max,ultraPython validation derives the active effort names from
hermes_constants.VALID_REASONING_EFFORTSso cron does not develop a separate stale dialect.Testing
693 passed— completetests/cronsuite551 passed— focused cron tool, scheduler, storage, gateway API, dashboard backend, and CLI suites9 passed8 passedgit diff --check: passedThe repository-wide Python suite was also started, but this local environment produced broad unrelated baseline fixture/environment failures outside the touched areas; the complete cron and focused cross-surface suites above pass cleanly.
Closes #23524.
Related: #7382, #26214, #30929.