import argparse, json, pathlib, sqlite3, subprocess, datetime
p=argparse.ArgumentParser(); p.add_argument('side',choices=['base','head']); p.add_argument('action',choices=['init','append','snapshot']); a=p.parse_args()
root=pathlib.Path(__file__).parent/a.side; root.mkdir(exist_ok=True)
repo=root/'transcript-demo'; claude=root/'claude'; home=root/'home'
sid='31628000-0000-4000-8000-000000000001'
transcript=claude/'projects'/'synthetic-project'/f'{sid}.jsonl'
def exchange(month,date):
    return ''.join(json.dumps(dict(type=role,uuid=f'{month}-{role}',sessionId=sid,cwd=str(repo),isSidechain=False,timestamp=f'{date}T12:0{idx}:00.000Z',message=dict(role=role,content=f'{month} prompt' if role=='user' else [dict(type='text',text=f'{month} answer')])) )+'\n' for idx,role in enumerate(['user','assistant']))
if a.action=='init':
    repo.mkdir(); (repo/'README.md').write_text('Synthetic transcript import demonstration.\n')
    subprocess.run(['git','init','-q','--initial-branch=main',str(repo)],check=True)
    subprocess.run(['git','-C',str(repo),'add','.'],check=True)
    subprocess.run(['git','-C',str(repo),'-c','user.name=Scenario','-c','user.email=scenario@example.invalid','commit','-qm','Initial commit'],check=True)
    transcript.parent.mkdir(parents=True); transcript.write_text(exchange('October','2026-10-12'))
    (home/'userdata').mkdir(parents=True)
    providers={x:dict(driver=x,enabled=x=='claudeAgent',**({'config':dict(binaryPath='/bin/false')} if x in ['codex','claudeAgent'] else {})) for x in ['codex','claudeAgent','cursor','grok','muse','pi','opencode','antigravity']}
    (home/'userdata'/'settings.json').write_text(json.dumps(dict(defaultModelSelection=dict(instanceId='devReplay',model='showcase'),providerInstances=providers)))
    print('Initialized synthetic October transcript')
elif a.action=='append':
    with transcript.open('a') as f:f.write(exchange('November','2026-11-12'))
    print('Appended November exchange')
else:
    db=sqlite3.connect(f'file:{home}/userdata/statev2.sqlite?mode=ro',uri=True)
    runtime=db.execute('select runtime_payload_json from provider_session_runtime where thread_id=?',(f'import:claudeAgent:{sid}',)).fetchone()
    imported=json.loads(runtime[0])['importedTranscripts'] if runtime else []
    messages=db.execute("select role,json_extract(payload_json,'$.text') from orchestration_v2_projection_messages where thread_id=? order by created_at",(f'import:claudeAgent:{sid}',)).fetchall()
    snapshot=dict(side=a.side,transcriptBytes=transcript.stat().st_size,recorded=[{k:r.get(k) for k in ['size','mtimeMs']} for r in imported],messages=[dict(role=r,text=t) for r,t in messages])
    output=root/f'snapshot-{datetime.datetime.now(datetime.timezone.utc).strftime("%H%M%S")}.json'; output.write_text(json.dumps(snapshot,indent=2)); print(json.dumps(snapshot,indent=2)); db.close()
