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

PROJECT_ROOT="${PROJECT_ROOT:-/home/happyuser/projects/DEX}"
SESSION_ID="${SESSION_ID:-019dea74-ac7a-7d10-80b7-e6ed6f499a21}"
INTERVAL_SECONDS="${INTERVAL_SECONDS:-900}"
TIMEBOX_SECONDS="${TIMEBOX_SECONDS:-1650}"

cd "$PROJECT_ROOT"
mkdir -p .agent/logs
printf '%s\n' "$SESSION_ID" > .agent/codex_session_id

echo "Visible Codex supervisor loop"
echo "PROJECT_ROOT=$PROJECT_ROOT"
echo "SESSION_ID=$SESSION_ID"
echo "TIMEBOX_SECONDS=$TIMEBOX_SECONDS"
echo "INTERVAL_SECONDS=$INTERVAL_SECONDS"
echo "Stop with Ctrl-C. Detach tmux with Ctrl-b then d."

while true; do
  echo
  echo "===== Codex supervisor run: $(date -u '+%Y-%m-%dT%H:%M:%SZ') ====="

  set +e
  PROJECT_ROOT="$PROJECT_ROOT" \
  TIMEBOX_SECONDS="$TIMEBOX_SECONDS" \
  "$PROJECT_ROOT/scripts/codex_autorun.sh" 2>&1 | tee -a "$PROJECT_ROOT/.agent/cron.log"
  rc=${PIPESTATUS[0]}
  set -e

  echo "===== Codex supervisor exit=$rc: $(date -u '+%Y-%m-%dT%H:%M:%SZ') ====="

  if [[ "$rc" != "0" ]]; then
    echo "Non-zero exit. Sleeping before next attempt; stop with Ctrl-C if this needs inspection."
  fi

  echo "Sleeping ${INTERVAL_SECONDS}s before next run."
  sleep "$INTERVAL_SECONDS"
done
