#!/bin/bash
# ============================================================
#  還原 nVIDIA — 一鍵還原 OpenClaw 所有模型到 NVIDIA NIM
#  不管現在跑到哪個模型(deepseek/siliconflow/vectorengine…)
#  雙擊此檔即全部還原回 nVIDIA 免費模型
# ============================================================

NODE24="/opt/homebrew/Cellar/node@24/24.18.1/bin/node"
OC="/Users/lingochen/.npm-global/lib/node_modules/openclaw/openclaw.mjs"
CONFIG_DIR="$HOME/.openclaw"

echo "=============================================="
echo "  還原 nVIDIA NIM 模型設定"
echo "=============================================="

# 1) Node 版本檢查（OpenClaw 需要 v24.15+）
if [ ! -x "$NODE24" ]; then
  echo "❌ 找不到 node v24.18.1：$NODE24"
  echo "   請改用 Terminal 手動還原，或先確認 Homebrew node@24 已安裝。"
  read -p "按 Enter 關閉..."
  exit 1
fi
echo "✅ Node: $("$NODE24" -v)"

# 2) 備份現有設定
STAMP=$(date +%Y%m%d-%H%M%S)
if [ -f "$CONFIG_DIR/openclaw.json" ]; then
  cp "$CONFIG_DIR/openclaw.json" "$CONFIG_DIR/openclaw.json.bak-nvidia-$STAMP"
  echo "✅ 已備份: openclaw.json.bak-nvidia-$STAMP"
fi

cd "$CONFIG_DIR" || { echo "❌ 無法進入 $CONFIG_DIR"; read -p "按 Enter 關閉..."; exit 1; }

# 3) 完整 NVIDIA NIM 7 個免費模型清單
NIM_MODELS='[
  {"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash on NVIDIA NIM","input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"reasoning":false,"api":"openai-completions"},
  {"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro on NVIDIA NIM","input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"reasoning":false,"api":"openai-completions"},
  {"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra on NVIDIA NIM","input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"reasoning":false,"api":"openai-completions"},
  {"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6 on NVIDIA NIM","input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"reasoning":false,"api":"openai-completions"},
  {"id":"z-ai/glm-5.2","name":"GLM 5.2 on NVIDIA NIM","input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536,"reasoning":false,"api":"openai-completions"},
  {"id":"minimaxai/minimax-m3","name":"MiniMax M3 on NVIDIA NIM","input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1000000,"maxTokens":8192,"reasoning":false,"api":"openai-completions"},
  {"id":"google/diffusiongemma-26b-a4b-it","name":"DiffusionGemma 26B on NVIDIA NIM","input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":131072,"maxTokens":8192,"reasoning":false,"api":"openai-completions"}
]'

# fallback 鏈（全 nVIDIA）
FB='["nvidia-nim/deepseek-ai/deepseek-v4-pro","nvidia-nim/nvidia/nemotron-3-ultra-550b-a55b","nvidia-nim/moonshotai/kimi-k2.6","nvidia-nim/z-ai/glm-5.2","nvidia-nim/minimaxai/minimax-m3","nvidia-nim/google/diffusiongemma-26b-a4b-it"]'

echo ""
echo "▶  還原 nvidia-nim 7 個模型..."
"$NODE24" "$OC" config set 'models.providers.nvidia-nim.models' "$NIM_MODELS" --strict-json --replace 2>&1 | tail -2

echo "▶  還原 main agent 主力 → nVIDIA..."
"$NODE24" "$OC" config set 'agents.list[0].model.primary' 'nvidia-nim/deepseek-ai/deepseek-v4-flash' 2>&1 | tail -1
"$NODE24" "$OC" config set 'agents.list[0].model.fallbacks' "$FB" --strict-json --replace 2>&1 | tail -1

echo "▶  還原 defaults 主力 → nVIDIA..."
"$NODE24" "$OC" config set 'agents.defaults.model.primary' 'nvidia-nim/deepseek-ai/deepseek-v4-flash' 2>&1 | tail -1
"$NODE24" "$OC" config set 'agents.defaults.model.fallbacks' "$FB" --strict-json --replace 2>&1 | tail -1

echo "▶  還原子代理(subbagents) → nVIDIA..."
"$NODE24" "$OC" config set 'agents.defaults.subagents.model.primary' 'nvidia-nim/deepseek-ai/deepseek-v4-flash' 2>&1 | tail -1
"$NODE24" "$OC" config set 'agents.defaults.subagents.model.fallbacks' "$FB" --strict-json --replace 2>&1 | tail -1

echo "▶  還原圖片模型 → nVIDIA (kimi)..."
"$NODE24" "$OC" config set 'agents.defaults.imageModel.primary' 'nvidia-nim/moonshotai/kimi-k2.6' 2>&1 | tail -1

echo ""
echo "=============================================="
echo "  重啟 Gateway 套用設定..."
echo "=============================================="
"$NODE24" "$OC" gateway restart 2>&1 | tail -5

sleep 4

echo ""
echo "✅ 還原完成！所有模型已指向 NVIDIA NIM。"
echo "   - 主力: nvidia-nim/deepseek-ai/deepseek-v4-flash"
echo "   - Fallback: pro → nemotron → kimi → glm → minimax → diffusiongemma"
echo "   - 子代理/圖片模型: 也都是 nVIDIA"
echo ""
echo "  若要確認，可在 Telegram 輸入 /status"
read -p "按 Enter 關閉視窗..."
