#!/usr/bin/env bash

# claude-glm — Run Claude Code with GLM backend
#
# Usage:
#   claude-glm [args...]
#
# Setup API key (reuse existing):
#   macOS:
#     security add-generic-password -a "$USER" -s GLM_API_KEY -w "YOUR_KEY"
#   Linux:
#     echo "YOUR_KEY" | secret-tool store --label "GLM API Key" service GLM_API_KEY

KEY_NAME="GLM_API_KEY"

if [ -n "${!KEY_NAME}" ]; then
  TOKEN="${!KEY_NAME}"
fi

get_token() {
  if command -v security >/dev/null 2>&1; then
    security find-generic-password -s "$KEY_NAME" -w 2>/dev/null && return
  fi
  if command -v secret-tool >/dev/null 2>&1; then
    secret-tool lookup service "$KEY_NAME" 2>/dev/null && return
  fi
  return 1
}

if [ -z "$TOKEN" ]; then
  TOKEN=$(get_token)
fi

if [ -z "$TOKEN" ]; then
  echo "❌ Missing GLM token ($KEY_NAME)"
  exit 1
fi

export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
export ANTHROPIC_AUTH_TOKEN="$TOKEN"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-4.5-air"
export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.1"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.1"

echo "→ Backend: GLM"

has_permission_mode=false
for arg in "$@"; do
  if [ "$arg" = "--permission-mode" ] || [[ "$arg" == --permission-mode=* ]]; then
    has_permission_mode=true
    break
  fi
done

if [ "$has_permission_mode" = true ]; then
  exec claude "$@"
else
  exec claude --permission-mode auto "$@"
fi
