#!/bin/bash
# Pyramid-Autopilot (Pi/Linux): startet Claude-Sessions in Endlosschleife.
# Läuft eine Session ins 5h-Limit, wird alle 20 Minuten neu versucht.
# Start (am besten in tmux):  tmux new -d -s pyramid ./autopilot.sh
# Wieder reinschauen:         tmux attach -t pyramid   (verlassen: Strg+B, dann D)
# PAUSIEREN:                  touch ~/pyramid/PAUSE    (greift vor der nächsten Session)
# FORTSETZEN:                 rm ~/pyramid/PAUSE
# GANZ STOPPEN:               tmux kill-session -t pyramid
cd "$(dirname "$0")"
export PATH="$HOME/.local/bin:$HOME/flutter/bin:$PATH"

# --- Matrix-Statusberichte (Raum "🔺 Pyramid Autopilot", Token vom Gatus-Bot) ---
MATRIX_URL="http://127.0.0.1:6167"
MATRIX_ROOM="!sYfOwD4Dw4jBDTlNmL:steggi-matrix.work"
MATRIX_TOKEN="$(grep -s '^MATRIX_TOKEN=' "$HOME/gatus/.env" | cut -d= -f2-)"

notify_matrix() {
  [ -z "$MATRIX_TOKEN" ] && return 0
  local body
  body=$(python3 -c 'import json,sys; print(json.dumps({"msgtype":"m.text","body":sys.stdin.read().strip()}))' <<< "$1")
  curl -s -m 10 -X PUT \
    "$MATRIX_URL/_matrix/client/v3/rooms/$MATRIX_ROOM/send/m.room.message/autopilot$(date +%s%N)" \
    -H "Authorization: Bearer $MATRIX_TOKEN" -H "Content-Type: application/json" \
    -d "$body" > /dev/null || true
}

PROMPT="Lies CLAUDE.md und arbeite ROADMAP.md Punkt für Punkt weiter ab. \
Halte dich strikt an den Arbeitszyklus (PROGRESS.md pflegen, kleine Commits + Push). \
Arbeite so viele Punkte ab wie möglich."

while true; do
  if [ -f PAUSE ]; then
    echo "===== $(date '+%F %T') PAUSE aktiv (rm PAUSE zum Fortsetzen) - pruefe wieder in 10 Minuten ====="
    sleep 600
    continue
  fi
  echo "===== $(date '+%F %T') Neue Claude-Session =====" | tee -a autopilot.log
  BEFORE=$(git rev-parse HEAD 2>/dev/null)
  claude -p "$PROMPT" --dangerously-skip-permissions 2>&1 | tee -a autopilot.log
  AFTER=$(git rev-parse HEAD 2>/dev/null)
  if [ -n "$BEFORE" ] && [ "$BEFORE" != "$AFTER" ]; then
    COMMITS=$(git log --oneline --no-decorate "$BEFORE..$AFTER" | head -15)
    NEXT=$(grep -m1 -A3 "Offen/Nächster Schritt" PROGRESS.md)
    notify_matrix "🔺 Pyramid-Autopilot $(date '+%H:%M') – Session fertig.

Neue Commits:
$COMMITS

$NEXT"
  fi
  echo "===== $(date '+%F %T') Session beendet - Neustart in 20 Minuten (Strg+C zum Stoppen) =====" | tee -a autopilot.log
  sleep 1200
done
