#!/bin/bash
# DGX Spark Claude Code ローカル実行スクリプト
# Usage: curl -sL https://docs.techswan.online/scripts/dgx-spark-claude-code.sh | bash

set -e

echo "🚀 DGX Spark Claude Code セットアップ"
echo ""

# Step 1: vLLM起動
echo "📦 Step 1: vLLM + Qwen3-Coder-Next-FP8 起動..."
docker stop qwen3-coder-next-fp8 2>/dev/null || true
docker rm qwen3-coder-next-fp8 2>/dev/null || true

docker run -d --name qwen3-coder-next-fp8 \
  --gpus all \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  --ipc=host \
  nvcr.io/nvidia/vllm:25.11-py3 \
  vllm serve Qwen/Qwen3-Coder-Next-FP8 \
  --served-model-name qwen3-coder-next \
  --max-model-len 200000 \
  --max-num-seqs 8 \
  --gpu-memory-utilization 0.85 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_xml \
  --trust-remote-code

echo "   コンテナ起動完了（モデルロードに約10分かかります）"
echo ""

# Step 2: claude-code-proxy セットアップ
echo "🔧 Step 2: claude-code-proxy セットアップ..."
PROXY_DIR="$HOME/.claude-code-proxy"

if [ ! -d "$PROXY_DIR" ]; then
  git clone https://github.com/fuergaosi233/claude-code-proxy.git "$PROXY_DIR"
fi

cd "$PROXY_DIR"
pip install -r requirements.txt --user --quiet 2>/dev/null || pip install -r requirements.txt --user --break-system-packages --quiet

cat > .env << 'EOF'
OPENAI_BASE_URL=http://localhost:8000/v1
OPENAI_API_KEY=dummy
BIG_MODEL=qwen3-coder-next
MIDDLE_MODEL=qwen3-coder-next
SMALL_MODEL=qwen3-coder-next
REQUEST_TIMEOUT=300
MAX_TOKENS_LIMIT=8192
EOF

echo "   プロキシ設定完了"
echo ""

# Step 3: プロキシ起動
echo "🌐 Step 3: プロキシ起動..."
pkill -f start_proxy.py 2>/dev/null || true
nohup python3 start_proxy.py > /tmp/proxy.log 2>&1 &
sleep 3

if curl -s http://localhost:8082/health > /dev/null 2>&1; then
  echo "   プロキシ起動完了 (port 8082)"
else
  echo "   ⚠️ プロキシ起動中... (数秒待ってください)"
fi
echo ""

# Step 4: vLLMヘルスチェック待ち
echo "⏳ Step 4: vLLM起動待ち..."
echo "   （モデルロード中... 約10分かかります）"
echo ""

while ! curl -s http://localhost:8000/health > /dev/null 2>&1; do
  sleep 10
  echo -n "."
done
echo ""
echo "   ✅ vLLM起動完了！"
echo ""

# 完了メッセージ
echo "=========================================="
echo "🎉 セットアップ完了！"
echo ""
echo "Claude Codeを起動するには:"
echo ""
echo "  ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY=dummy claude"
echo ""
echo "または ~/.bashrc に追加:"
echo ""
echo "  alias claude-local='ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY=dummy claude'"
echo ""
echo "=========================================="
