#!/usr/bin/env bash

set -u

usage() {
  cat <<'USAGE'
Usage: scripts/band-aider --task "goal" [--target-root src] [--tests-root tests] [band-aider args...]
       scripts/band-aider --resume

Loads Band-Aider environment settings, then runs the current SupremeLoop CLI.
USAGE
}

if [ "${1:-}" = "--help" ] || [ "${1:-}" = "-h" ]; then
  usage
  exit 0
fi

ENV_FILE="${BAND_AIDER_ENV_FILE:-band-aider.env}"

if [ -f "$ENV_FILE" ]; then
  set -a
  # shellcheck disable=SC1090
  . "$ENV_FILE"
  set +a
fi

BAND_AIDER_TOKEN_OVERFLOW_STRATEGY="${BAND_AIDER_TOKEN_OVERFLOW_STRATEGY:-miser}"
PYTHON_BIN="${BAND_AIDER_PYTHON_BIN:-python}"

if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
  echo "Python interpreter not found: $PYTHON_BIN"
  exit 1
fi

if ! "$PYTHON_BIN" -c '
from band_aider.judgement.model2vec_code_parser import model2vec_package_available
import sys

sys.exit(0 if model2vec_package_available() else 1)
' >/dev/null 2>&1; then
  echo "model2vec is not installed for $PYTHON_BIN."
  echo "Band-Aider will fall back to full-file parsing."
  echo 'Install the optional accelerator with: pip install -e ".[model2vec]"'
else
  MODEL2VEC_INFO="$(
    "$PYTHON_BIN" -c '
from band_aider.judgement.model2vec_code_parser import (
    MODEL2VEC_MODEL_NAME,
    default_model2vec_cache_dir,
)

print(MODEL2VEC_MODEL_NAME)
print(default_model2vec_cache_dir())
'
  )"

  MODEL2VEC_NAME="$(printf '%s\n' "$MODEL2VEC_INFO" | sed -n '1p')"
  MODEL2VEC_CACHE_DIR="$(printf '%s\n' "$MODEL2VEC_INFO" | sed -n '2p')"

  if ! "$PYTHON_BIN" -c '
from band_aider.judgement.model2vec_code_parser import model2vec_model_cached
import sys

sys.exit(0 if model2vec_model_cached() else 1)
' >/dev/null 2>&1; then
    if [ ! -t 0 ]; then
      echo "Model2Vec model cache is missing for $MODEL2VEC_NAME."
      echo "Band-Aider will fall back to full-file parsing."
    else
      echo "Band-Aider can use a local Model2Vec gate for narrow file parsing."
      echo "Missing model cache: $MODEL2VEC_NAME"
      echo "Cache root: $MODEL2VEC_CACHE_DIR"

      read -r -p "Download the Model2Vec cache now? [y/N]: " download_model2vec

      case "$download_model2vec" in
        [Yy] | [Yy][Ee][Ss])
          if ! "$PYTHON_BIN" -c '
from band_aider.judgement.model2vec_code_parser import (
    ensure_model2vec_model_downloaded,
)

ensure_model2vec_model_downloaded()
'; then
            echo "Failed to download $MODEL2VEC_NAME."
            echo "Band-Aider will fall back to full-file parsing."
          fi
          ;;
        *)
          echo "Model2Vec download declined."
          echo "Band-Aider will fall back to full-file parsing."
          ;;
      esac
    fi
  fi
fi

export BAND_AIDER_TOKEN_OVERFLOW_STRATEGY

exec "$PYTHON_BIN" -m band_aider.cli "$@"
