#!/usr/bin/env python3
import sys,json,subprocess,sqlite3,datetime,pathlib,hashlib
result={"capturedAt":datetime.datetime.now(datetime.timezone.utc).isoformat(),"environment":"Linux; real dev servers; fresh databases; T3CODE_DEV_SEED=0; Pi CLI 1.5.2","sides":[]}
for argument in sys.argv[1:]:
    side,directory=argument.split("=",1)
    root=pathlib.Path(directory)
    git=lambda *args:subprocess.check_output(["git","-C",str(root),*args],text=True).strip()
    db=sqlite3.connect(f"file:{root}/.t3/userdata/statev2.sqlite?mode=ro",uri=True)
    rows=db.execute("select thread_id,type,status,updated_at from orchestration_v2_projection_turn_items where type in ('user_message','command_execution','run_interrupt_request') order by thread_id,ordinal").fetchall()
    result["sides"].append({"side":side,"sha":git("rev-parse","HEAD"),"tree":git("rev-parse","HEAD^{tree}"),"clean":git("status","--porcelain")=="","projection":[dict(zip(("threadId","type","status","updatedAt"),row)) for row in rows]})
print(json.dumps(result,indent=2))
