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

BASE_URL_OPENAI="https://deeprelayapi.cloud/v1"
BASE_URL_ANTHROPIC="https://deeprelayapi.cloud"
MODEL_MAIN="deepseek-v4-pro"
MODEL_FAST="deepseek-v4-flash"

say() {
  printf '%s\n' "$1"
}

mask_key() {
  local key="$1"
  local len=${#key}
  if [ "$len" -le 12 ]; then
    printf 'sk-dr...'
  else
    printf '%s...%s' "${key:0:8}" "${key: -4}"
  fi
}

backup_file() {
  local file="$1"
  if [ -f "$file" ]; then
    cp "$file" "$file.bak.$(date +%Y%m%d%H%M%S)"
  fi
}

read_key() {
  if [ -n "${DEEPRELAY_API_KEY:-}" ]; then
    printf '%s' "$DEEPRELAY_API_KEY"
    return
  fi
  printf 'Paste your DeepRelay API key (sk-dr...): ' >&2
  stty -echo 2>/dev/null || true
  IFS= read -r key
  stty echo 2>/dev/null || true
  printf '\n' >&2
  printf '%s' "$key"
}

KEY="$(read_key)"

case "$KEY" in
  sk-dr*) ;;
  *)
    say "This does not look like a DeepRelay key. Expected prefix: sk-dr"
    exit 1
    ;;
esac

say "DeepRelay key accepted: $(mask_key "$KEY")"

CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
DEEPRELAY_DIR="$HOME/.deeprelay"
CLAUDE_DIR="$HOME/.claude"
mkdir -p "$DEEPRELAY_DIR" "$CLAUDE_DIR" "$CONFIG_HOME"

ENV_FILE="$DEEPRELAY_DIR/env"
backup_file "$ENV_FILE"
umask 077
{
  printf 'export DEEPRELAY_API_KEY=%q\n' "$KEY"
  printf 'export OPENAI_BASE_URL=%q\n' "$BASE_URL_OPENAI"
  printf 'export OPENAI_API_KEY="$DEEPRELAY_API_KEY"\n'
  printf 'export ANTHROPIC_BASE_URL=%q\n' "$BASE_URL_ANTHROPIC"
  printf 'export ANTHROPIC_AUTH_TOKEN="$DEEPRELAY_API_KEY"\n'
  printf 'export ANTHROPIC_MODEL=%q\n' "$MODEL_MAIN"
  printf 'export ANTHROPIC_DEFAULT_SONNET_MODEL=%q\n' "$MODEL_MAIN"
  printf 'export ANTHROPIC_DEFAULT_OPUS_MODEL=%q\n' "$MODEL_MAIN"
  printf 'export ANTHROPIC_DEFAULT_HAIKU_MODEL=%q\n' "$MODEL_FAST"
  printf 'export API_TIMEOUT_MS="3000000"\n'
  printf 'export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"\n'
} > "$ENV_FILE"
say "Wrote $ENV_FILE"

CLAUDE_SETTINGS="$CLAUDE_DIR/settings.json"
backup_file "$CLAUDE_SETTINGS"
if command -v python3 >/dev/null 2>&1; then
  DEEPRELAY_KEY="$KEY" python3 - "$CLAUDE_SETTINGS" <<'PY'
import json
import os
import sys
from pathlib import Path

path = Path(sys.argv[1])
data = {}
if path.exists() and path.read_text().strip():
    try:
        data = json.loads(path.read_text())
    except json.JSONDecodeError:
        data = {}
env = data.setdefault("env", {})
env.update({
    "ANTHROPIC_BASE_URL": "https://deeprelayapi.cloud",
    "ANTHROPIC_AUTH_TOKEN": os.environ["DEEPRELAY_KEY"],
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "ANTHROPIC_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
})
path.write_text(json.dumps(data, indent=2) + "\n")
PY
  chmod 600 "$CLAUDE_SETTINGS"
  say "Updated $CLAUDE_SETTINGS"
else
  say "python3 not found. Skipped automatic Claude Code settings merge."
fi

OPENCODE_FILE="$PWD/opencode.json"
if [ -e "$OPENCODE_FILE" ]; then
  say "Found existing $OPENCODE_FILE. Backing it up and writing DeepRelay example."
  backup_file "$OPENCODE_FILE"
fi
cat > "$OPENCODE_FILE" <<'JSON'
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "deeprelay": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "DeepRelay",
      "options": {
        "baseURL": "https://deeprelayapi.cloud/v1",
        "apiKey": "{env:DEEPRELAY_API_KEY}"
      },
      "models": {
        "deepseek-v4-pro": {},
        "deepseek-v4-flash": {}
      }
    }
  },
  "model": "deeprelay/deepseek-v4-pro"
}
JSON
say "Wrote $OPENCODE_FILE"

say ""
say "Next:"
say "1. Load env vars in this shell:"
say "   source $ENV_FILE"
say "2. Claude Code: run claude, then check /status and /model."
say "3. OpenCode: run opencode from this project directory."
say "4. Cursor/Cline/TRAE: use OpenAI base URL $BASE_URL_OPENAI, key $(mask_key "$KEY"), model $MODEL_MAIN."
say ""
say "A small paid API verification command is documented at:"
say "https://deeprelayapi.cloud/api-docs.html#quickstart"
