#!/bin/bash
# Ralph Wiggum Loop (Gemini Subagent version)
# Vòng lặp bao gồm: 1 Gemini Sửa Code + 1 Gemini Chấm Điểm

PLAN_FILE="plan/doing/ai_stylist_plan.md"
SESSION_NAME="fashion_gemini_loop"

if [ -z "$TMUX" ]; then
  echo "🛡️ Đang ném tác vụ vào tmux background '$SESSION_NAME'..."
  rm -f DONE.flag
  tmux new-session -d -s $SESSION_NAME "$0"
  echo "✅ XONG! Subagent đang chạy ngầm trong tmux."
  echo "👉 Xem subagent làm việc: tmux attach -t $SESSION_NAME"
  exit 0
fi

echo "--------------------------------------------------------"
echo "🌀 GEMINI AUTO-EVAL LOOP: AI JUDGE & BUILDER 🌀"
echo "--------------------------------------------------------"

ITERATION=1
MAX_ITERATIONS=10

while [ ! -f "DONE.flag" ]; do
  if [ $ITERATION -gt $MAX_ITERATIONS ]; then
    echo "🚨 Đã chạy quá $MAX_ITERATIONS vòng. Dừng khẩn cấp!"
    exit 1
  fi
  
  echo ">>> VÒNG LẶP SỐ $ITERATION <<<"
  
  # Bước 1: Gọi Gemini Subagent Thợ Sửa Code (Builder)
  echo ">> 🛠️ 1. GỌI GEMINI BUILDER ĐỂ SỬA CODE..."
  # Giả định lệnh của Antigravity CLI là 'gemini prompt', nếu trên máy cài bản khác hãy đổi thành 'gemini ask' hoặc 'gemini code'
  gemini prompt "@${PLAN_FILE} @worker/stylist_engine.py Đọc lỗi từ vòng trước và tiến hành sửa lại code trong worker/stylist_engine.py"
  
  # Bước 2: Trích xuất Output
  echo ">> 🔎 2. ĐANG DUMP KẾT QUẢ PHỐI ĐỒ ĐỂ CHẤM..."
  ./.venv/Scripts/python dump_matches.py > fashion_output.txt
  
  # Bước 3: Gọi Gemini Subagent Giám Khảo (Judge) -> Giao việc phán xử cho LLM
  echo ">> 🧑‍⚖️ 3. GỌI GEMINI JUDGE CHẤM ĐIỂM NGỮ CẢNH..."
  gemini prompt "@fashion_output.txt Mày là AI Judge Thời Trang cấp cao. Cẩn thận soi xem kết quả in ra trong file kia có bị 2 lỗi sau không:
1. Đồ bị trộn sai nhóm tuổi: Áo quần của Người lớn ĐANG kết hợp nhầm với một món nào đó có chữ 'bé' hoặc 'kid'.
2. Sai dịp mặc: Quần áo ngủ/mặc nhà đưa đi chơi... (Hoặc mất tiêu occasion).
Nếu kết quả 100% SẠCH SẼ, không dính lỗi, hãy in ra duy nhất một dòng: PASS_EVAL. 
Ngược lại, nếu phát hiện món đồ nào sai trái, hãy in ra chi tiết món đó để báo lỗi." > eval_feedback.txt
  
  # Bước 4: Ai Judge phán quyết
  if grep -q "PASS_EVAL" eval_feedback.txt; then
    echo "💯 AI JUDGE PHÁN QUYẾT: PASS !!!"
    touch DONE.flag
    break
  else
    echo "❌ AI JUDGE ĐÁNH FAIL. TRÍCH LỖI:"
    cat eval_feedback.txt
    echo "🔄 Chuẩn bị quật roi bắt Gemini Builder sửa tiếp..."
    sleep 3
    # Ghi lại lỗi vòng trước vào plan để con AI Builder vòng sau rút kinh nghiệm
    echo "--- LỖI TỪ VÒNG $ITERATION ---" >> $PLAN_FILE
    cat eval_feedback.txt >> $PLAN_FILE
  fi

  ITERATION=$((ITERATION+1))
done

echo "🎉 SELF-EVAL LOOP THÀNH CÔNG RỰC RỠ! 🎉"
