diff --git a/hermes_cli/cron.py b/hermes_cli/cron.py index 95c934f0d..f2628ce5d 100644 --- a/hermes_cli/cron.py +++ b/hermes_cli/cron.py @@ -222,7 +222,18 @@ def cron_edit(args): def _job_action(action: str, job_id: str, success_verb: str, now: bool = False) -> int: - if action == "run" and now: + if action == "clear_error": + result = _cron_api(action="clear_error", job_id=job_id) + if not result.get("success"): + print(color(f"Failed to clear error: {result.get('error', 'unknown error')}", Colors.RED)) + return 1 + job = result.get("job", {}) + name = job.get("name", job_id) + print(color(f"Cleared stale error state for job '{name}'", Colors.GREEN)) + if job.get("error_cleared_at"): + print(f" Cleared at: {job['error_cleared_at']}") + return 0 +if action == "run" and now: # Synchronous execution — run job immediately and show result result = _cron_api(action="run_now", job_id=job_id) if not result.get("success"): @@ -292,9 +303,13 @@ def cron_command(args): now = getattr(args, 'now', False) return _job_action("run", args.job_id, "Triggered", now=now) + + if subcmd == "clear-error": + return _job_action("clear_error", args.job_id, "Cleared") + if subcmd in {"remove", "rm", "delete"}: return _job_action("remove", args.job_id, "Removed") print(f"Unknown cron command: {subcmd}") - print("Usage: hermes cron [list|create|edit|pause|resume|run|remove|status|tick]") + print("Usage: hermes cron [list|create|edit|pause|resume|run|remove|clear-error|status|tick]") sys.exit(1)