#!/usr/bin/env bash
# usage: capture.sh <phase-label>  -> appends per-row snapshot to /tmp/ev-23636/out/<row>-<build>.transcript.txt
set -u
phase=$1
while IFS=$'\t' read -r row b tid; do
  case $b in before) dir=/tmp/ev-23636/base;; after) dir=/home/ubuntu/wt/pr-23636;; esac
  out=/tmp/ev-23636/out/$row-$b.transcript.txt
  {
    echo "===== [$phase] $(date -u +%FT%TZ) row=$row build=$b sha=$(git -C $dir rev-parse HEAD) thread=$tid"
    (cd $dir && node apps/server/src/bin.ts thread show "$tid" --base-dir /tmp/ev-23636/home-$b --json 2>&1) | python3 -c '
import json,sys
d=json.load(sys.stdin)
t=d.get("thread",d)
print("thread show:", json.dumps({k:t.get(k) for k in ("status","session","providerSession","latestRun","runs") if k in t})[:1500] or json.dumps(d)[:1500])' 2>&1
    /tmp/ev-23636/driver/mcp.sh $b t3_thread_read "{\"threadId\":\"$tid\",\"view\":\"activity\",\"limit\":100,\"maxCharsPerItem\":160}" 2>/dev/null | python3 -c '
import json,sys
d=json.load(sys.stdin)["structuredContent"]
print("runs:", json.dumps([{k:r.get(k) for k in ("runId","status","startedAt","completedAt","createdBy","creationSource") if k in r} for r in d.get("runs",[])])[:1500])
for i in d["items"]:
    if i.get("type") in ("dynamic_tool","command_execution","assistant_message","user_message","status","error","notice") or "released" in (i.get("text") or "").lower():
        print(" item", i.get("updatedAt"), i.get("type"), i.get("status"), (i.get("text") or "").replace("\n"," ")[:160])' 2>&1
    echo "cron.log ($b): $(cat /tmp/ev-23636/proj-$b/cron.log 2>/dev/null | tr '\n' '|')"
  } >> $out
done < /tmp/ev-23636/threads.tsv
echo captured $phase
