#!/usr/bin/env python3
"""
prune-cron-sessions.py -- Nightly cleanup of dead cron session entries.

Removes all agent:main:cron:* keys from sessions.json. These accumulate after
every cron run and are never needed again once delivery is complete.
Does NOT touch group chat sessions or agent:main:main.

Runs nightly at 2am via LaunchAgent: clawstin.prune-cron-sessions
"""

import json
import os
import sys
from datetime import datetime

sessions_json = os.path.expanduser("~/.openclaw/agents/main/sessions/sessions.json")

if not os.path.exists(sessions_json):
    print("sessions.json not found -- nothing to do.")
    sys.exit(0)

with open(sessions_json) as f:
    data = json.load(f)

cron_keys = [k for k in list(data.keys()) if ":cron:" in k]

if not cron_keys:
    print(f"[{datetime.now().isoformat()}] No cron sessions to prune.")
    sys.exit(0)

for k in cron_keys:
    del data[k]

with open(sessions_json, "w") as f:
    json.dump(data, f, indent=2)

print(f"[{datetime.now().isoformat()}] Pruned {len(cron_keys)} cron session(s).")
for k in cron_keys:
    print(f"  - {k}")
