#!/bin/bash
# usage: run.sh <setting A|B> <n>   one pilot run; result JSON to runs/<setting>-<n>.json
set -u
S=$(cd "$(dirname "$0")" && pwd); set=$1; n=$2
W=$(mktemp -d /tmp/claude-501/bench-XXXX); cp -R "$S/repo/." "$W/"; cd "$W" && git checkout -q -- . && git clean -qfd
[ "$set" = B ] && cp "$S/CLAUDE-long.md" "$W/CLAUDE.md"
PROMPT='One test in test/ledger.test.js fails. Fix the code in src/ so that `node --test test/ledger.test.js` passes. Change only src/. Do not change the tests. When done, stop.'
start=$(date +%s)
claude -p "$PROMPT" < /dev/null --model sonnet --permission-mode acceptEdits --max-turns 25 --max-budget-usd 2 --output-format json \
  --allowed-tools "Read" "Edit" "Write" "Glob" "Grep" "Bash(node:*)" "Bash(ls:*)" "Bash(cat:*)" > "$S/runs/$set-$n.json" 2> "$S/runs/$set-$n.err"
end=$(date +%s)
node --test test/ledger.test.js >/dev/null 2>&1 && pass=1 || pass=0
node -e '
const r=JSON.parse(require("fs").readFileSync(process.argv[1]));const u=r.usage||{};
const o={setting:process.argv[2],n:+process.argv[3],pass:+process.argv[4],wall_s:+process.argv[5],turns:r.num_turns,cost:r.total_cost_usd,input:u.input_tokens,output:u.output_tokens,cache_read:u.cache_read_input_tokens,cache_write:u.cache_creation_input_tokens,subtype:r.subtype,ttl1h:(u.cache_creation||{}).ephemeral_1h_input_tokens,ttl5m:(u.cache_creation||{}).ephemeral_5m_input_tokens};
require("fs").appendFileSync(process.argv[6],JSON.stringify(o)+"\n");console.log(JSON.stringify(o))' "$S/runs/$set-$n.json" "$set" "$n" "$pass" "$((end-start))" "$S/runs/results.jsonl"
rm -rf "$W"
