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

# Signal AI Gateway — Claude Desktop 接入（对标 147ai：Developer Mode + Anthropic-compatible）
# 用法: curl -fsSL <portal>/docs/scripts/claude-desktop.sh | GATEWAY_BASE_URL='https://...' bash -s -- sk-...

API_KEY="${1:-}"
GATEWAY_BASE="${GATEWAY_BASE_URL:-https://api.4stoken.cn}"
DEFAULT_MODEL="${GATEWAY_CLAUDE_DESKTOP_MODEL:-claude-sonnet-4-6}"
OR_MODEL="${GATEWAY_CLAUDE_OR_MODEL:-openrouter-free}"
SETUP_DIR="$HOME/.claude"
SETUP_FILE="$SETUP_DIR/desktop-gateway-setup.txt"

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

mkdir -p "$SETUP_DIR"

cat > "$SETUP_FILE" <<EOF
Signal AI Gateway → Claude Desktop
==================================
Gateway base URL（Anthropic-compatible，不含 /v1）:
  $GATEWAY_BASE

Gateway API key:
  $API_KEY

推荐默认模型（Portal modelCode）:
  $DEFAULT_MODEL

OpenRouter 免费:
  $OR_MODEL

前提（与 147ai 一致）:
  • 使用最新版 Claude Desktop（需 Developer Mode）
  • macOS 14+；建议先退出官方账号再配置
  • Gateway 须支持 POST $GATEWAY_BASE/v1/messages

GUI 配置步骤:
  1. Help → Troubleshooting → Enable Developer Mode
  2. Developer → Configure Third-Party Inference…
  3. Use this configuration: ON
  4. Gateway: Anthropic-compatible
  5. Gateway base URL: $GATEWAY_BASE
  6. Gateway API key: （粘贴上方 Key）
  7. Apply locally → 完全退出并重启 Claude

备选（终端 Claude Code）:
  curl .../claude-code.sh | bash -s -- $API_KEY
  会话内 /model $OR_MODEL
EOF

printf '\n\033[1;36m══════════════════════════════════════════\033[0m\n'
printf '\033[1m   Signal Gateway → Claude Desktop\033[0m\n'
printf '\033[1;36m══════════════════════════════════════════\033[0m\n\n'

printf '\033[1;33m重要前提\033[0m\n'
printf '  • 需 \033[1m新版 Claude Desktop\033[0m（Help 里可启用 Developer Mode）\n'
printf '  • Gateway 类型选 \033[1mAnthropic-compatible\033[0m（非 OpenAI-compatible）\n'
printf '  • Base URL 填根路径 \033[1m%s\033[0m（不要加 /v1）\n\n' "$GATEWAY_BASE"

printf '\033[1m步骤 1 — 启用开发者模式\033[0m\n'
printf '  Help → Troubleshooting → Enable Developer Mode\n\n'

printf '\033[1m步骤 2 — 第三方推理\033[0m\n'
printf '  Developer → Configure Third-Party Inference…\n\n'

printf '\033[1m步骤 3 — 填写（最关键）\033[0m\n'
printf '  Use this configuration: \033[1m开启\033[0m\n'
printf '  Gateway: \033[1mAnthropic-compatible\033[0m\n'
printf '  Gateway base URL: \033[1m%s\033[0m\n' "$GATEWAY_BASE"
printf '  Gateway API key: \033[1m%s\033[0m\n\n' "$API_KEY"

printf '\033[1m步骤 4 — 应用并验证\033[0m\n'
printf '  Apply locally → 完全退出 Desktop → 重新打开 → 发送测试消息\n'
printf '  默认模型建议: %s（以 Portal 已发布 modelCode 为准）\n\n' "$DEFAULT_MODEL"

printf '  OpenRouter: 若 Desktop 无法选 %s，请改用 Claude Code → /model %s\n\n' "$OR_MODEL" "$OR_MODEL"

if command -v pbcopy &>/dev/null; then
  printf '%s' "$API_KEY" | pbcopy
  printf '\033[0;32m✓ API Key 已复制到剪贴板\033[0m\n\n'
fi

printf '  配置备忘: %s\n' "$SETUP_FILE"
printf '\033[0;33m注意：Claude Desktop 需在 GUI 内手动 Apply；旧版无 Developer 菜单时请升级或使用 claude-code.sh。\033[0m\n'
