#!/opt/agent/hermes-agent/venv/bin/python3
"""Reconcile deterministic a2y duties through Hermes' native cron API."""

import sys
from pathlib import Path

import yaml

from cron.jobs import create_job, list_jobs, remove_job, update_job


def main() -> int:
    desired = (yaml.safe_load(Path(sys.argv[1]).read_text()) or {}).get("duties") or []
    existing = {job.get("name"): job for job in list_jobs(include_disabled=True)}
    desired_names = {duty["name"] for duty in desired}
    for job in existing.values():
        if (job.get("origin") or {}).get("platform") == "a2y-duty" and job.get("name") not in desired_names:
            remove_job(job["id"])
    for duty in desired:
        current = existing.get(duty["name"])
        if current:
            if (current.get("origin") or {}).get("platform") != "a2y-duty":
                raise RuntimeError(f"duty name {duty['name']!r} collides with an unmanaged Hermes cron job")
            update_job(
                current["id"],
                {
                    "prompt": duty["prompt"],
                    "schedule": duty["schedule"],
                    "deliver": duty["deliver"],
                    "enabled": True,
                    "state": "scheduled",
                    "paused_at": None,
                    "paused_reason": None,
                },
            )
        else:
            create_job(
                prompt=duty["prompt"],
                schedule=duty["schedule"],
                name=duty["name"],
                deliver=duty["deliver"],
                origin={"platform": "a2y-duty", "name": duty["name"]},
            )
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
