#!/usr/bin/env bash
set -euo pipefail
# Run from each installed checkout, on a fresh .t3 database.
# Required: COPILOT_BINARY (CLI 1.0.109), PROOF_MODEL (same on both sides),
# PROOF_ROOT (private scratch directory), SIDE (base or head).
: "${COPILOT_BINARY:?}" "${PROOF_MODEL:?}" "${PROOF_ROOT:?}" "${SIDE:?}"
mkdir -p .t3/userdata "$PROOF_ROOT/project"
git -C "$PROOF_ROOT/project" init -q
export COPILOT_BINARY
python3 - <<'PY'
import os,json
json.dump({'providerInstances':{'copilot_proof':{'driver':'acpRegistry','displayName':'GitHub Copilot','config':{'source':'local','commandPath':os.environ['COPILOT_BINARY'],'commandArgs':['--acp']}}}},open('.t3/userdata/settings.json','w'))
PY
export T3CODE_DEV_SEED=0
export COPILOT_GITHUB_TOKEN="$(gh auth token)"
export COPILOT_HOME="$PROOF_ROOT/$SIDE-home"
vp run dev > "$PROOF_ROOT/$SIDE-server.log" 2>&1 &
server_pid=$!
trap 'kill -INT "$server_pid" 2>/dev/null || true' EXIT
# Wait for the startup pairing URL, then pair a browser with that URL.
until rg -q 'pairingUrl:' "$PROOF_ROOT/$SIDE-server.log"; do
  kill -0 "$server_pid"
  sleep 1
done
node apps/server/src/bin.ts project add --base-dir .t3 --title 'Tool exposure proof' "$PROOF_ROOT/project"
node apps/server/src/bin.ts thread start --base-dir .t3 --provider copilot_proof --model "$PROOF_MODEL" --title 'One word reply' "$PROOF_ROOT/project" 'Reply with the single word: hi' --wait --json > "$PROOF_ROOT/$SIDE-turn.json"
# Inspect session.usage_record and session.usage_checkpoint in
# $COPILOT_HOME/session-state/*/events.jsonl. Never upload raw files:
# they include runtime model identifiers and private workspace metadata.
# On head, additionally send to the returned threadId:
# Use the T3 tool_search tool to discover preview_status, then call
# preview_status. Do not open a browser. Report whether the call succeeded.
