#!/usr/bin/env python3
import json, os, pathlib, hashlib, time, urllib.request

ROOT = pathlib.Path("/var/lib/chronological/runtime/nova")
ACTIONS = ROOT / "actions.jsonl"
SEEN = ROOT / "seen.json"
LOG = ROOT / "emit.log"

BOT = os.environ.get("TELEGRAM_BOT_TOKEN") or os.environ.get("TG_TOKEN")
CHAT = os.environ.get("TELEGRAM_CHAT_ID") or os.environ.get("TG_CHAT_ID")
API = os.environ.get("TELEGRAM_API_BASE", "https://api.telegram.org")

if not BOT or not CHAT:
    raise SystemExit("Missing TELEGRAM credentials")

def send(msg):
    data = json.dumps({"chat_id": CHAT, "text": msg}).encode()
    req = urllib.request.Request(
        f"{API}/bot{BOT}/sendMessage",
        data=data,
        headers={"Content-Type": "application/json"}
    )
    urllib.request.urlopen(req, timeout=5)

seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()
written = 0

for line in ACTIONS.read_text().splitlines():
    h = hashlib.sha256(line.encode()).hexdigest()
    if h in seen:
        continue

    a = json.loads(line)
    send(f"🛰️ {a['general']} L{a['lane']} — {a['action']}")
    seen.add(h)
    written += 1

with SEEN.open("w") as f:
    f.write(json.dumps(list(seen)))

with LOG.open("a") as f:
    f.write(f"{time.time()} emitted={written}\n")

print(f"NOVA_ACTION_EMIT_OK written={written}")
