fix(cron): report reconciled startup job count

This commit is contained in:
chengyongru
2026-08-22 02:38:47 +08:00
committed by chengyongru
parent 20488a585d
commit dbc1801d3c
4 changed files with 10 additions and 27 deletions
+6 -9
View File
@@ -706,11 +706,6 @@ def _run_gateway(
else:
console.print("[yellow]Warning: No channels enabled[/yellow]")
cron_status = cron.status()
cron_job_count = cast(int, cron_status["jobs"])
if cron_job_count > 0:
console.print(f"[green]✓[/green] Cron: {cron_job_count} scheduled jobs")
hb_cfg = config.gateway.heartbeat
if hb_cfg.enabled:
console.print(f"[green]✓[/green] Heartbeat: every {hb_cfg.interval_s}s")
@@ -785,8 +780,7 @@ def _run_gateway(
console.print(f"[green]✓[/green] Dream: {dream_cfg.describe_schedule()}")
else:
console.print("[yellow]○[/yellow] Dream: disabled")
# Advance the cursor first: it must happen unconditionally (issue
# #4242), even if the cron store turns out to be corrupt below.
# Cursor repair must not depend on a healthy cron store.
_advance_dream_cursor_if_behind(agent.context.memory)
cron.remove_system_job("dream")
@@ -803,10 +797,13 @@ def _run_gateway(
payload=CronPayload(kind="system_event"),
))
else:
# Retire any previously persisted heartbeat job so that disabling
# gateway.heartbeat in config takes effect after restart.
cron.remove_system_job("heartbeat")
cron_status = cron.status()
cron_job_count = cast(int, cron_status["jobs"])
if cron_job_count > 0:
console.print(f"[green]✓[/green] Cron: {cron_job_count} scheduled jobs")
async def _open_browser_when_ready() -> None:
"""Wait for the gateway to bind, then point the user's browser at the webui."""
if not open_browser_url:
+1 -8
View File
@@ -719,14 +719,7 @@ class CronService:
return job
def remove_system_job(self, job_id: str) -> bool:
"""Remove an internal system job by id (startup reconciliation).
Unlike ``remove_job``, this bypasses the protected-system-job guard:
the gateway retires a persisted system job whose config has been
disabled, so e.g. ``gateway.heartbeat.enabled=false`` actually takes
effect after restart instead of the leftover job firing forever.
Returns True when a job was removed.
"""
"""Remove a protected system job during startup reconciliation."""
store = self._require_store()
before = len(store.jobs)
store.jobs = [j for j in store.jobs if j.id != job_id]