#!/usr/bin/env bash
# Kailoo · OpenAI Codex CLI 一键配置（macOS / Linux · 走 kailoo.ai 反代）
# 用法：curl -fsSL https://kailoo.ai/install/kailoo-codex-setup.sh | bash
set -euo pipefail
BASE_URL="https://kailoo.ai/v1"
MODEL="gpt-5.5"
C_G=$'\033[32m'; C_Y=$'\033[33m'; C_R=$'\033[31m'; C_RST=$'\033[0m'
ok(){   echo "  ${C_G}[OK]${C_RST} $1"; }
warn(){ echo "  ${C_Y}[!] ${C_RST} $1"; }
err(){  echo "  ${C_R}[X] ${C_RST} $1"; }

echo
echo "  ============================================"
echo "    Kailoo - OpenAI Codex CLI 一键配置"
echo "  ============================================"
echo "    国内直连 · 走 kailoo.ai 反代 · 免翻墙"
echo

# 1. Node
if command -v node >/dev/null 2>&1; then ok "Node 已装（$(node -v)）"
else
  warn "Node.js 未安装"
  if command -v brew >/dev/null 2>&1; then brew install node && ok "Node 装好"
  else err "请先装 Node（https://nodejs.org/ 或 nvm）后重跑"; exit 1; fi
fi

# 2. Codex
if command -v codex >/dev/null 2>&1; then ok "Codex CLI 已装"
else echo "  安装 @openai/codex ..."; npm install -g @openai/codex >/dev/null 2>&1 && ok "Codex CLI 装好"; fi

# 3. Key
echo
printf '  粘贴你的 Kailoo API Key（zk_ 开头）: '
read -r KEY
[ -z "${KEY:-}" ] && { err "Key 不能为空"; exit 1; }

# 4. 写 ~/.codex/config.toml 的 kailoo provider
CDIR="$HOME/.codex"; mkdir -p "$CDIR"; CFG="$CDIR/config.toml"
BLOCK=$(cat <<EOF

# ── Kailoo Relay（境内反代 OpenAI · $(date +%F) 由一键脚本写入）──
model = "$MODEL"
model_provider = "kailoo"
[model_providers.kailoo]
name = "Kailoo Relay"
base_url = "$BASE_URL"
env_key = "KAILOO_API_KEY"
wire_api = "responses"
EOF
)
if [ -f "$CFG" ]; then
  cp "$CFG" "$CFG.bak-kailoo"
  if grep -q 'model_providers\.kailoo' "$CFG"; then warn "config.toml 已有 kailoo provider，跳过（备份 .bak-kailoo）"
  else printf '%s\n' "$BLOCK" >> "$CFG"; ok "已追加 kailoo provider（原配置备份 .bak-kailoo）"; fi
else printf '%s\n' "$BLOCK" > "$CFG"; ok "已写入 $CFG"; fi

# 5. 环境变量（写进 shell profile）
PROFILE="$HOME/.bashrc"; [ -n "${ZSH_VERSION:-}" ] && PROFILE="$HOME/.zshrc"
[ "$(uname)" = "Darwin" ] && PROFILE="$HOME/.zshrc"
# 先删掉任何已有的 KAILOO_API_KEY 导出行（避免轮换 key 后旧值仍被加载），再追加新的
if [ -f "$PROFILE" ] && grep -q 'KAILOO_API_KEY' "$PROFILE" 2>/dev/null; then
  sed -i.bak-kailoo '/KAILOO_API_KEY/d' "$PROFILE" 2>/dev/null || true
fi
echo "export KAILOO_API_KEY=\"$KEY\"" >> "$PROFILE"
export KAILOO_API_KEY="$KEY"
ok "已设置 KAILOO_API_KEY（当前会话 + $PROFILE）"

# 6. 连通性自测
echo; echo "  连通性自测..."
CODE=$(curl -s -o /dev/null -w '%{http_code}' "$BASE_URL/models" -H "Authorization: Bearer $KEY" || echo 000)
if [ "$CODE" = "200" ]; then ok "连通正常，Kailoo Codex 配置完成"
elif [ "$CODE" = "401" ]; then err "Key 无效（401），请核对"
elif [ "$CODE" = "503" ]; then warn "密钥有效但暂无可用渠道，稍后再试"
else warn "自测返回 $CODE（不一定影响使用）"; fi

echo
echo "  完成。用法：codex  或  codex exec \"帮我改bug\""
echo "  切回官方 ChatGPT login：注释 ~/.codex/config.toml 里 model_provider 一行。"
echo "  遇到问题：support@kailoo.ai"
echo
