#!/usr/bin/env bash

# Direct GLM chat launcher with model switching support
# Cross-platform: Linux, Termux, macOS, Windows (Git Bash/WSL)
# Usage: claude-glm [model_name]

# Platform detection
detect_platform() {
    case "$(uname -s)" in
        Linux*)     echo "Linux";;
        Darwin*)    echo "macOS";;
        CYGWIN*|MINGW*|MSYS*) echo "Windows";;
        *)          echo "Linux";;
    esac
}

PLATFORM=$(detect_platform)

# Colors - Support both Linux/macOS and Windows
if [[ "$PLATFORM" == "Windows" ]]; then
    if command -v tput &> /dev/null; then
        GREEN=$(tput setaf 2 2>/dev/null || echo "")
        BLUE=$(tput setaf 4 2>/dev/null || echo "")
        RED=$(tput setaf 1 2>/dev/null || echo "")
        YELLOW=$(tput setaf 3 2>/dev/null || echo "")
        NC=$(tput sgr0 2>/dev/null || echo "")
    else
        GREEN=''
        BLUE=''
        RED=''
        YELLOW=''
        NC=''
    fi
else
    GREEN='\033[0;32m'
    BLUE='\033[0;34m'
    RED='\033[0;31m'
    YELLOW='\033[1;33m'
    NC='\033[0m'
fi

# Portable home directory
if [[ -n "$HOME" ]]; then
    USER_HOME="$HOME"
elif [[ -n "$USERPROFILE" ]]; then
    USER_HOME="$USERPROFILE"
else
    USER_HOME="$HOME"
fi

GLM_API_KEY_FILE="$USER_HOME/.glm_api_key"

# Get API key
if [[ -f "$GLM_API_KEY_FILE" ]]; then
    API_KEY=$(cat "$GLM_API_KEY_FILE" 2>/dev/null)
else
    echo -e "${RED}No API key found. Run 'claude-all 7' first.${NC}"
    exit 1
fi

# Config file location
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
GLM_CONFIG="$SCRIPT_DIR/models/glm/config.json"

# Parse arguments
MODEL_NAME="$1"
if [[ -z "$MODEL_NAME" ]]; then
    # No model specified, show dynamic menu from config
    echo -e "${BLUE}=== GLM Model Selection ===${NC}"
    echo ""

    if [[ -f "$GLM_CONFIG" ]] && command -v jq &>/dev/null; then
        # Dynamic menu from config.json
        model_count=$(jq '.models | length' "$GLM_CONFIG")
        jq -r '.models | to_entries[] | "\(.key + 1)) \(.value.name) - \(.value.description)"' "$GLM_CONFIG"
        echo ""
        read -p "Select model [1-$model_count]: " choice
        MODEL_NAME=$(jq -r ".models[$((choice-1))].id // .default_model" "$GLM_CONFIG")
    else
        # Fallback static menu
        echo "1) GLM-4.7  (Flagship - Coding Plan) ⭐"
        echo "2) GLM-4.6V (Vision - Image tasks) 👁️"
        echo ""
        read -p "Select model [1-2]: " choice
        case $choice in
            1) MODEL_NAME="glm-4.7" ;;
            2) MODEL_NAME="glm-4.6v" ;;
            *) MODEL_NAME="glm-4.7" ;;
        esac
    fi
fi

# Start chat with selected model
echo -e "${GREEN}✓ Starting chat with $MODEL_NAME${NC}"
echo ""

export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
export ANTHROPIC_API_KEY="$API_KEY"
export ANTHROPIC_AUTH_TOKEN="$API_KEY"

exec claude --model "$MODEL_NAME" "${@:2}"
