#!/bin/bash
# test-all-games.sh — 모든 게임을 순차적으로 테스트
# BOT은 영구 보관. 다음 실행 시 최신 버전부터 이어서 개선.
# Usage: bash test-all-games.sh

ARCADE_DIR="/home/ubuntu/sites/arcade"
GAMES=$(ls "$ARCADE_DIR/games/")
LOG_DIR="/tmp/bot_logs"
BOT_DIR="/tmp/bots"
mkdir -p "$LOG_DIR" "$BOT_DIR"

echo "=== PatchMe: Test All Games ==="
echo "Time: $(date)"
echo ""

for GAME in $GAMES; do
  echo "============================================"
  echo "Testing: $GAME"
  echo "Start: $(date)"
  echo "============================================"

  # 이전 게임 프로세스 정리 (이 게임만)
  pkill -f "bot_${GAME}" 2>/dev/null
  pkill -f "bot-runner.sh ${GAME}" 2>/dev/null
  sleep 2

  # 스냅샷 디렉토리 (이전 스냅샷은 유지, 새 사이클 것만 추가됨)
  mkdir -p "/tmp/bot_snapshots/${GAME}"

  # 기존 BOT 버전 확인 — 있으면 이어서 개선
  LATEST_BOT=$(ls -t "$BOT_DIR"/bot_${GAME}_v*.js 2>/dev/null | head -1)
  if [ -n "$LATEST_BOT" ]; then
    LATEST_VER=$(echo "$LATEST_BOT" | grep -o 'v[0-9]*' | tail -1 | tr -d 'v')
    echo "Existing bot found: v${LATEST_VER} — will improve from here"
    CONTEXT="Previous bot exists at $LATEST_BOT (v${LATEST_VER}). Read it, run it first to see current performance, then improve to v$((LATEST_VER+1))."
  else
    echo "No existing bot — starting fresh"
    CONTEXT="No previous bot. Create v1 from scratch."
  fi

  # bot-runner 시작
  bash "$ARCADE_DIR/pipeline/bot-runner.sh" "$GAME" &
  RUNNER_PID=$!

  # Claude Code에게 테스트 위임
  cd "$ARCADE_DIR"
  timeout 600 claude -p "Read the file $ARCADE_DIR/pipeline/agent-instructions.md and follow all instructions.

Game slug: $GAME
Game source: $ARCADE_DIR/games/$GAME/
Game URL: https://patchme.lol/games/$GAME/
Bot directory: $BOT_DIR/
Snapshot directory: /tmp/bot_snapshots/${GAME}/

$CONTEXT

IMPORTANT:
- Never delete bot files. They persist across runs.
- Name bots: bot_${GAME}_v1.js, bot_${GAME}_v2.js, etc.
- If a previous bot exists, read it first and improve from there.
- After each version, delete ONLY the snapshots you've already analyzed.
- Write final report to $LOG_DIR/${GAME}_report.md" \
    --allowedTools "Read,Write,Edit,Bash,Glob,Grep" \
    2>&1 | tee "$LOG_DIR/${GAME}_agent.log"

  # runner 종료 (BOT 프로세스는 남겨둠)
  kill $RUNNER_PID 2>/dev/null

  echo ""
  echo "Finished: $GAME at $(date)"
  echo "Latest bot: $(ls -t $BOT_DIR/bot_${GAME}_v*.js 2>/dev/null | head -1)"
  echo ""

  sleep 3
done

echo "============================================"
echo "=== ALL GAMES TESTED ==="
echo "End: $(date)"
echo ""
echo "Bot inventory:"
for GAME in $GAMES; do
  LATEST=$(ls -t "$BOT_DIR"/bot_${GAME}_v*.js 2>/dev/null | head -1)
  REPORT="$LOG_DIR/${GAME}_report.md"
  if [ -n "$LATEST" ]; then
    VER=$(echo "$LATEST" | grep -o 'v[0-9]*' | tail -1)
    echo "  $GAME: $VER $([ -f "$REPORT" ] && echo '+ report' || echo '(no report)')"
  else
    echo "  $GAME: no bot"
  fi
done
