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

# CloudSigma AI Mission Control setup for Claude Code CLI.
# Review this file before running it. It only changes local shell settings.
TAAS_BASE_URL="${TAAS_BASE_URL:-https://taas.cloudsigma.com}"
CONFIG_DIR="${TAAS_CONFIG_DIR:-$HOME/.config/taas}"
KEY_FILE="$CONFIG_DIR/claude-code-api-key"
SHELL_RC="${TAAS_SHELL_RC:-}"
if [[ -z "$SHELL_RC" ]]; then
  case "${SHELL##*/}" in
    zsh) SHELL_RC="$HOME/.zshrc" ;;
    bash) SHELL_RC="$HOME/.bashrc" ;;
    *) SHELL_RC="$HOME/.profile" ;;
  esac
fi

mkdir -p "$CONFIG_DIR"
chmod 700 "$CONFIG_DIR"
if [[ -z "${TAAS_API_KEY:-}" ]]; then
  [[ -r /dev/tty ]] || { echo "A terminal is required for hidden key input." >&2; exit 2; }
  read -r -s -p "CloudSigma AI Mission Control API key: " TAAS_API_KEY < /dev/tty
  printf '\n'
fi
[[ -n "$TAAS_API_KEY" ]] || { echo "An API key is required." >&2; exit 1; }

umask 077
printf '%s' "$TAAS_API_KEY" > "$KEY_FILE"
chmod 600 "$KEY_FILE"

MODELS_JSON="$(curl --fail --silent --show-error --retry 2 \
  -H "Authorization: Bearer $TAAS_API_KEY" \
  "$TAAS_BASE_URL/v1/models")"
echo "Available CloudSigma models:"
printf '%s' "$MODELS_JSON" | python3 -c 'import json,sys; data=json.load(sys.stdin); print("\n".join(str(row.get("id")) for row in data.get("data",[]) if row.get("id")))'
read -r -p "Default Claude Code model [auto:orchestrator]: " MODEL
MODEL="${MODEL:-auto:orchestrator}"

MARKER="# >>> CloudSigma AI Mission Control (managed by setup script) >>>"
END_MARKER="# <<< CloudSigma AI Mission Control <<<"
if [[ -f "$SHELL_RC" ]]; then
  cp -p "$SHELL_RC" "$SHELL_RC.taas-backup.$(date +%Y%m%d%H%M%S)"
fi

python3 - "$SHELL_RC" "$KEY_FILE" "$TAAS_BASE_URL" "$MODEL" "$MARKER" "$END_MARKER" <<'PY'
import pathlib
import sys

path, key_file, base_url, model, marker, end_marker = map(str, sys.argv[1:])
p = pathlib.Path(path)
text = p.read_text() if p.exists() else ""
block = "\n".join([
    marker,
    f'export ANTHROPIC_BASE_URL={base_url!r}',
    f'export ANTHROPIC_AUTH_TOKEN="$(cat {key_file!r})"',
    f'export ANTHROPIC_MODEL={model!r}',
    end_marker,
    "",
])
start = text.find(marker)
if start >= 0:
    stop = text.find(end_marker, start)
    text = text[:start] + (block if stop < 0 else block + text[stop + len(end_marker):].lstrip("\n"))
else:
    text = text.rstrip("\n") + "\n\n" + block
p.write_text(text)
PY

echo "Claude Code now uses CloudSigma AI Mission Control in new shells."
echo "Run: source $SHELL_RC && claude"
echo "The existing shell file was backed up as $SHELL_RC.taas-backup.* when present."
