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

# Signal AI Gateway — Claude VSCode 扩展一键接入

API_KEY="${1:-}"
GATEWAY_BASE="${GATEWAY_BASE_URL:-https://api.4stoken.cn}"
SONNET_MODEL="${GATEWAY_CLAUDE_SONNET_MODEL:-claude-sonnet-4-6}"
OPUS_MODEL="${GATEWAY_CLAUDE_OPUS_MODEL:-claude-opus-4-8}"
HAIKU_MODEL="${GATEWAY_CLAUDE_HAIKU_MODEL:-claude-haiku-4-5-20251001}"
OR_MODEL="${GATEWAY_CLAUDE_OR_MODEL:-openrouter-free}"

if [ -z "$API_KEY" ]; then
  printf '\033[1;31m错误：\033[0m请提供 Client Key\n'
  exit 1
fi

if [ "$(uname)" = "Darwin" ]; then
  VSCODE_DIR="$HOME/Library/Application Support/Code/User"
elif [ "$(uname)" = "Linux" ]; then
  VSCODE_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/Code/User"
else
  printf '\033[1;31m错误：\033[0m不支持的操作系统，请使用 PowerShell 版本\n'
  exit 1
fi

SETTINGS_FILE="$VSCODE_DIR/settings.json"

if [ ! -d "$VSCODE_DIR" ]; then
  printf '\033[1;33m警告：\033[0m未找到 VS Code 配置目录: %s\n' "$VSCODE_DIR"
  mkdir -p "$VSCODE_DIR"
fi

if [ -f "$SETTINGS_FILE" ]; then
  cp "$SETTINGS_FILE" "$SETTINGS_FILE.bak.$(date +%s)"
  printf '\033[0;36m已备份\033[0m %s\n' "$SETTINGS_FILE"
fi

if command -v python3 &>/dev/null; then
  python3 -c "
import json, os
path = '''$SETTINGS_FILE'''
data = {}
if os.path.isfile(path):
    with open(path) as f:
        content = f.read().strip()
        if content:
            data = json.load(f)
env_common = {
    'ANTHROPIC_BASE_URL': '$GATEWAY_BASE',
    'ANTHROPIC_AUTH_TOKEN': '$API_KEY',
    'ANTHROPIC_DEFAULT_SONNET_MODEL': '$SONNET_MODEL',
    'ANTHROPIC_DEFAULT_OPUS_MODEL': '$OPUS_MODEL',
    'ANTHROPIC_DEFAULT_HAIKU_MODEL': '$HAIKU_MODEL',
    'GATEWAY_OPENROUTER_FREE_MODEL': '$OR_MODEL',
}
for key in ('terminal.integrated.env.osx', 'terminal.integrated.env.linux'):
    block = data.setdefault(key, {})
    block.update(env_common)
with open(path, 'w') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)
"
else
  if [ ! -f "$SETTINGS_FILE" ] || [ ! -s "$SETTINGS_FILE" ]; then
    cat > "$SETTINGS_FILE" <<EOF
{
  "terminal.integrated.env.osx": {
    "ANTHROPIC_BASE_URL": "$GATEWAY_BASE",
    "ANTHROPIC_AUTH_TOKEN": "$API_KEY",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "$SONNET_MODEL",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "$OPUS_MODEL",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "$HAIKU_MODEL"
  },
  "terminal.integrated.env.linux": {
    "ANTHROPIC_BASE_URL": "$GATEWAY_BASE",
    "ANTHROPIC_AUTH_TOKEN": "$API_KEY",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "$SONNET_MODEL",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "$OPUS_MODEL",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "$HAIKU_MODEL"
  }
}
EOF
  else
    printf '\033[1;33m警告：\033[0m需要 python3 才能安全合并已有 settings.json\n'
    exit 1
  fi
fi

printf '\n\033[1;32m✓ Claude VSCode 扩展配置完成\033[0m\n'
printf '  配置文件: %s\n' "$SETTINGS_FILE"
printf '  Base URL: %s\n' "$GATEWAY_BASE"
printf '  默认模型: sonnet=%s  opus=%s  haiku=%s\n' "$SONNET_MODEL" "$OPUS_MODEL" "$HAIKU_MODEL"
printf '  OpenRouter: %s（Claude 终端内 /model %s）\n' "$OR_MODEL" "$OR_MODEL"
printf '\n  重启 VS Code 后生效。\n'
