#!/bin/bash
# OpenCode 启动脚本
# 支持通过快捷名指定模型
#
# Provider ID:
#   zhipuai-coding-plan  智谱 GLM 系列（凭据在 opencode.json + auth.json 中配置）
#   deepseek             DeepSeek 系列（凭据在 auth.json 中配置）
#
# 用法:
#   runoc.sh                    # 默认模型 (GLM 5.1)
#   runoc.sh 51                 # GLM 5.1
#   runoc.sh ds                 # DeepSeek V4 Pro
#   runoc.sh -p deepseek        # DeepSeek Provider + 默认模型
#   runoc.sh -p deepseek ds     # DeepSeek Provider + DeepSeek V4 Pro

# ── 参数解析 ──────────────────────────────────────────────
MODEL_KEY=""
PROVIDER_OVERRIDE=""

while [ $# -gt 0 ]; do
    case "$1" in
        --provider|-p)
            [ $# -ge 2 ] || { echo "错误: --provider 需要参数" >&2; exit 1; }
            PROVIDER_OVERRIDE="$2"; shift 2
            ;;
        -h|--help)
            echo "用法: runoc.sh [选项] [模型]"
            echo ""
            echo "选项:"
            echo "  --provider, -p <名称>  API 提供商 (glm / deepseek)"
            echo ""
            echo "GLM 模型:               45|45a|46|47|5|5t|51"
            echo "DeepSeek 模型:          ds|dsf"
            echo "其他: 直接传入 provider/model 格式"
            echo ""
            echo "示例:"
            echo "  runoc.sh                          # 默认 GLM 5.1"
            echo "  runoc.sh 47                       # GLM 4.7"
            echo "  runoc.sh -p deepseek ds           # DeepSeek V4 Pro"
            echo "  runoc.sh zhipuai-coding-plan/glm-5.1  # 完整格式"
            exit 0
            ;;
        *)
            MODEL_KEY="$1"; shift
            ;;
    esac
done

# ── Provider & 模型解析 ──────────────────────────────────
MODEL_KEY="${MODEL_KEY:-51}"

case "$MODEL_KEY" in
    45)  MODEL="zhipuai-coding-plan/glm-4.5" ;;
    45a) MODEL="zhipuai-coding-plan/glm-4.5-air" ;;
    46)  MODEL="zhipuai-coding-plan/glm-4.6" ;;
    47)  MODEL="zhipuai-coding-plan/glm-4.7" ;;
    5)   MODEL="zhipuai-coding-plan/glm-5" ;;
    5t)  MODEL="zhipuai-coding-plan/glm-5-turbo" ;;
    51)  MODEL="zhipuai-coding-plan/glm-5.1" ;;
    ds)  MODEL="deepseek/deepseek-v4-pro"; PROVIDER_OVERRIDE="deepseek" ;;
    dsf) MODEL="deepseek/deepseek-v4-flash"; PROVIDER_OVERRIDE="deepseek" ;;
    *)   MODEL="$MODEL_KEY" ;;
esac

if [ -n "$PROVIDER_OVERRIDE" ]; then
    case "$MODEL" in
        */*) ;;
        *)   MODEL="${PROVIDER_OVERRIDE}/${MODEL}" ;;
    esac
fi

# ── tmux 模型传播 ────────────────────────────────────────
if [ -n "${TMUX:-}" ]; then
    SESSION_ID="$(tmux display-message -p '#{session_id}')"
    tmux set-option -p @opencode_model "$MODEL"
fi

# ── 启动 OpenCode ────────────────────────────────────────
echo "启动 OpenCode (模型: $MODEL)"
opencode -m "$MODEL"
