#!/usr/bin/env bash
set -euo pipefail
# Run from the checkout being compared. Pass a new empty T3 home and a demo repository.
proof_home="$1"
demo_repo="$2"
cli_fixture="$3"
server_port="$4"
mkdir -p "$proof_home/userdata" "$demo_repo"
git -C "$demo_repo" init -q
git -C "$demo_repo" -c user.name=Scenario -c user.email=scenario@example.invalid commit --allow-empty -qm Initial
python3 - "$proof_home" "$cli_fixture" <<'SETTINGS'
import json,sys
from pathlib import Path
home,fixture=sys.argv[1:]
settings={'idleCompaction':'onReturn','defaultModelSelection':{'instanceId':'claudeAgent','model':'default'},'providerInstances':{'codex':{'driver':'codex','enabled':False},'claudeAgent':{'driver':'claudeAgent','enabled':True,'config':{'binaryPath':fixture,'homePath':home+'/claude'}}}}
Path(home+'/userdata/settings.json').write_text(json.dumps(settings))
SETTINGS
T3CODE_DEV_SEED=0 T3CODE_HOST=0.0.0.0 vp run dev --home-dir "$proof_home" --no-seed --port "$server_port" > "$proof_home/server.log" 2>&1 &
server_pid=$!
trap 'kill "$server_pid" 2>/dev/null || true' EXIT
until curl -fsS "http://127.0.0.1:$server_port/.well-known/t3/environment" >/dev/null; do sleep 1; done
node apps/server/src/bin.ts project add "$demo_repo" --title 'History demo' --base-dir "$proof_home"
# Create the same history through the running server.
node apps/server/src/bin.ts thread start "$demo_repo" 'Review the history and wait for my next message.' --title 'Long history' --provider claudeAgent --model default --wait --json --base-dir "$proof_home"
# Wait beyond the recorded five-minute cache TTL, then open the thread in mobile.
