{"record":{"id":"40a45f5a70016950","repo":"NousResearch/hermes-agent","slug":"invalid-schedule-original-use-duration","errorCode":null,"errorMessage":"Invalid schedule '{original}'. Use:\n  - Duration: '30m', '2h', '1d' (one-shot)\n  - Interval: 'every 30m', 'every 2h' (recurring)\n  - Cron: '0 9 * * *' (cron expression)\n  - Timestamp: '2026-02-03T14:00:00' (one-shot at time)","messagePattern":"Invalid schedule '(.+?)'\\. Use:\n  - Duration: '30m', '2h', '1d' \\(one-shot\\)\n  - Interval: 'every 30m', 'every 2h' \\(recurring\\)\n  - Cron: '0 9 \\* \\* \\*' \\(cron expression\\)\n  - Timestamp: '2026-02-03T14:00:00' \\(one-shot at time\\)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"cron/jobs.py","lineNumber":703,"sourceCode":"                \"run_at\": dt.isoformat(),\n                \"display\": f\"once at {dt.strftime('%Y-%m-%d %H:%M')}\"\n            }\n        except ValueError as e:\n            raise ValueError(f\"Invalid timestamp '{schedule}': {e}\")\n    \n    # Duration like \"30m\", \"2h\", \"1d\" → one-shot from now\n    try:\n        minutes = parse_duration(schedule)\n        run_at = _hermes_now() + timedelta(minutes=minutes)\n        return {\n            \"kind\": \"once\",\n            \"run_at\": run_at.isoformat(),\n            \"display\": f\"once in {original}\"\n        }\n    except ValueError:\n        pass\n    \n    raise ValueError(\n        f\"Invalid schedule '{original}'. Use:\\n\"\n        f\"  - Duration: '30m', '2h', '1d' (one-shot)\\n\"\n        f\"  - Interval: 'every 30m', 'every 2h' (recurring)\\n\"\n        f\"  - Cron: '0 9 * * *' (cron expression)\\n\"\n        f\"  - Timestamp: '2026-02-03T14:00:00' (one-shot at time)\"\n    )\n\n\ndef _ensure_aware(dt: datetime) -> datetime:\n    \"\"\"Return a timezone-aware datetime in Hermes configured timezone.\n\n    Backward compatibility:\n    - Older stored timestamps may be naive.\n    - Naive values are interpreted as *system-local wall time* (the timezone\n      `datetime.now()` used when they were created), then converted to the\n      configured Hermes timezone.\n\n    This preserves relative ordering for legacy naive timestamps across","sourceCodeStart":685,"sourceCodeEnd":721,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/cron/jobs.py#L685-L721","documentation":"Error \"Invalid schedule '{original}'. Use:\n  - Duration: '30m', '2h', '1d' (one-shot)\n  - Interval: 'every 30m', 'every 2h' (recurring)\n  - Cron: '0 9 * * *' (cron expression)\n  - Timestamp: '2026-02-03T14:00:00' (one-shot at time)\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at cron/jobs.py:703 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a supported schedule: '30m'/'2h'/'1d', 'every 2h', a 5-field cron expression, or an ISO timestamp."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}