import sys,json,pathlib,datetime,subprocess
side,worktree=sys.argv[1:]
root=pathlib.Path('/tmp/issue-lead-8732-r2/evidence-capture')
run=root/(side+'-'+datetime.datetime.now(datetime.timezone.utc).strftime('%Y%m%dT%H%M%SZ'))
run.mkdir()
records=[]
for f in pathlib.Path(worktree,'.t3/userdata/logs/provider').glob('events.*.log'):
 for line in f.read_text().splitlines():
  if '] NTIVE: ' not in line: continue
  stamp,raw=line.split('] NTIVE: ',1)
  item=json.loads(raw); payload=item.get('event',{}).get('payload',{})
  if item.get('event',{}).get('stage') != 'decoded':continue
  for block in payload.get('message',{}).get('content',[]) if isinstance(payload.get('message',{}).get('content'),list) else []:
   if block.get('type')=='tool_use' and 'preview_' in block.get('name',''):
    records.append((stamp[1:], 'CALL', block))
   elif block.get('type')=='tool_result':
    records.append((stamp[1:], 'RESULT', block))
commit=subprocess.check_output(['git','-C',worktree,'rev-parse','HEAD'],text=True).strip()
text=f'Side: {side}\nCommit: {commit}\nProvider: claudeAgent; model: claude-sonnet-5-5\nChromium: Google Chrome for Testing 156.0.8078.70 (server-installed chrome-headless-shell)\nMachine: fs-06, Linux x86_64; Node 26.12.1; pnpm 12.14.0; vp 1.4.0\nState: T3CODE_DEV_SEED=0; fresh checkout-local .t3 database\nTransport: actual dev server /mcp via Claude Agent SDK\nPage server: http://127.0.0.1:18873; /slow.png stalls 20000ms\n'
for stamp,kind,block in records:
 text+=f'\n[{stamp}] {kind}\n'+json.dumps(block,ensure_ascii=False)+'\n'
 if kind=='RESULT':
  text+='RAW TOOL CONTENT:\n'+(block['content'] if isinstance(block.get('content'),str) else json.dumps(block.get('content'),ensure_ascii=False))+'\n'
(root/(side+'-transcript.txt')).write_text(text)
(run/'transcript.txt').write_text(text)
print(text)
