#!/usr/bin/env bash
set -euo pipefail

source .env

REPO_DIR="$HOME/codebase/chart-app"    # Haupt-Klon
BASE_BRANCH="main"
TEST_CMD="./mvnw test"                # z.B. ./gradlew test
MAX_ISSUES=5                          # pro Durchlauf, damit du nicht davonläufst
POLL_INTERVAL=120                     # Sekunden zwischen Polls (0 = einmal laufen)

cd "$REPO_DIR"

process_next() {
  git -C "$REPO_DIR" fetch origin "$BASE_BRANCH" --quiet
  git -C "$REPO_DIR" checkout "$BASE_BRANCH" --quiet
  git -C "$REPO_DIR" pull --quiet

  # 1) Nächstes Issue holen (Sub-Agent, minimaler Output)
  local out
  out=$(claude -p "Nutze den Sub-Agent 'next-issue'. Gib NUR dessen Rueckgabezeile aus (ISSUE=<nr> oder ISSUE=NONE), keinen weiteren Text." \
          --allowedTools "Agent,mcp__gitea__list_issues,mcp__gitea__issue_read" \
          --output-format text)
  local nr
  nr=$(echo "$out" | grep -oE 'ISSUE=[0-9NONE]+' | cut -d= -f2)

  if [[ "$nr" == "NONE" || -z "$nr" ]]; then
    echo "Keine offenen ai-ready Issues."
    return 1
  fi

  echo ">>> Bearbeite Issue #$nr"
  local wt="../wt-issue-$nr"
  local branch="ai/issue-$nr"

  # 2) Isolierter Worktree + Branch
  git worktree add -b "$branch" "$wt" "$BASE_BRANCH" --quiet

  # 3) Worker im Worktree ausführen (autonom)
  (
    cd "$wt"
    claude -p "/fix-issue $nr" \
      --allowedTools "Bash($TEST_CMD),Bash(git *),Edit,Read,Write,Grep,Glob,mcp__gitea__issue_read,mcp__gitea__issue_write,mcp__gitea__label_read,mcp__gitea__pull_request_write" \
      --output-format text
  ) || echo "!!! Worker für #$nr mit Fehler beendet"

  # 4) Aufräumen
  git worktree remove "$wt" --force || true
  return 0
}

# --- Hauptschleife ---
while true; do
  count=0
  while (( count < MAX_ISSUES )); do
    if process_next; then ((count++)); else break; fi
  done
  echo "Durchlauf fertig ($count Issues)."
  (( POLL_INTERVAL == 0 )) && break
  sleep "$POLL_INTERVAL"
done