#!/usr/bin/env python3
"""Kosten-Report für Hermes Agent: KI-Kosten von gestern, nach Modell.
Liest die Kostenschätzung, die Hermes zu jeder Session in ~/.hermes/state.db speichert.
Vorlage von madebybrain.com/hermes-jobs (MIT). Läuft als Hermes-Job ohne KI (--no-agent).
"""
import os
import sqlite3
from datetime import datetime, timedelta

# Hermes setzt HERMES_HOME auch für Profile. Ohne die Variable gilt ~/.hermes.
HOME_HERMES = os.environ.get("HERMES_HOME") or os.path.expanduser("~/.hermes")
DB = os.path.expanduser(os.environ.get("HERMES_STATE_DB") or os.path.join(HOME_HERMES, "state.db"))
heute = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
if os.environ.get("KOSTEN_TAG"):  # anderer Tag, z. B. KOSTEN_TAG=2026-10-25
    heute = datetime.strptime(os.environ["KOSTEN_TAG"], "%Y-%m-%d") + timedelta(days=1)
gestern = heute - timedelta(days=1)

con = sqlite3.connect(f"file:{DB}?mode=ro", uri=True)
rows = con.execute(
    """SELECT COALESCE(model, '?'), source, COUNT(*),
              SUM(COALESCE(input_tokens,0) + COALESCE(cache_read_tokens,0) + COALESCE(output_tokens,0)),
              SUM(COALESCE(estimated_cost_usd, 0))
       FROM sessions WHERE started_at >= ? AND started_at < ?
       GROUP BY 1, 2 ORDER BY 5 DESC""",
    (gestern.timestamp(), heute.timestamp()),
).fetchall()

if not rows:
    print(f"Kosten-Report {gestern:%d.%m.%Y}: keine Sessions.")
    raise SystemExit
summe = sum(r[4] for r in rows)
print(f"Kosten-Report {gestern:%d.%m.%Y} (Schätzung von Hermes)")
for model, quelle, n, tok, usd in rows:
    print(f"  {model[:32]:32} {quelle:9} {n:4} Läufe {tok/1e6:7.2f} Mio. Tokens  {usd:7.3f} $")
print(f"  {'Summe':32} {'':9} {sum(r[2] for r in rows):4} Läufe {sum(r[3] for r in rows)/1e6:7.2f} Mio. Tokens  {summe:7.3f} $")
