#!/usr/bin/env bash
# gogonka.com/setup.sh — Switch your AI agent to Gonka Network
# Usage: curl -sL https://gogonka.com/setup.sh | bash
# Or with API key: GONKA_KEY=your_key bash <(curl -sL https://gogonka.com/setup.sh)
set -euo pipefail

GONKA_BASE_URL="https://gate.joingonka.ai/v1"
GONKA_DEFAULT_MODEL="MiniMaxAI/MiniMax-M2.7"
REF_URL="https://gate.joingonka.ai/bystray"

echo ""
echo "╔══════════════════════════════════════════════════════╗"
echo "║           Gonka Network — Agent Setup                ║"
echo "║  6830x cheaper than OpenAI · OpenAI-compatible API   ║"
echo "╚══════════════════════════════════════════════════════╝"
echo ""

# ── Check for existing API key ─────────────────────────────
GONKA_KEY="${GONKA_KEY:-${OPENAI_API_KEY:-}}"
if [[ -z "$GONKA_KEY" ]]; then
  echo "No API key found. Register at: $REF_URL"
  echo "(use referral code 'bystray' for 12M nGNK welcome bonus — ~11,000 tokens to test your integration)"
  echo ""
  echo "After registration, run:"
  echo "  GONKA_KEY=your_key bash <(curl -sL https://gogonka.com/setup.sh)"
  exit 0
fi

# ── Test connectivity ──────────────────────────────────────
echo "► Testing connection to Gonka gateway..."
HTTP_CODE=$(curl -s -o /tmp/gonka_health.json -w "%{http_code}" \
  --max-time 10 "$GONKA_BASE_URL/../health" 2>/dev/null || echo "000")

if [[ "$HTTP_CODE" != "200" ]]; then
  echo "✗ Cannot reach $GONKA_BASE_URL (HTTP $HTTP_CODE)"
  exit 1
fi
echo "✓ Gateway reachable"

# ── Test API key ───────────────────────────────────────────
echo "► Validating API key..."
MODELS_CODE=$(curl -s -o /tmp/gonka_models.json -w "%{http_code}" \
  --max-time 10 \
  -H "Authorization: Bearer $GONKA_KEY" \
  "$GONKA_BASE_URL/models" 2>/dev/null || echo "000")

if [[ "$MODELS_CODE" != "200" ]]; then
  echo "✗ API key invalid or request failed (HTTP $MODELS_CODE)"
  exit 1
fi
echo "✓ API key valid"

# ── Show available models ──────────────────────────────────
echo "► Available models:"
if command -v python3 &>/dev/null; then
  python3 -c "
import json
data = json.load(open('/tmp/gonka_models.json'))
for m in data.get('data', []):
    print('   •', m['id'])
" 2>/dev/null || true
fi

# ── Quick inference test ───────────────────────────────────
echo "► Running inference test (1 token)..."
TEST_RESP=$(curl -s --max-time 30 \
  -H "Authorization: Bearer $GONKA_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$GONKA_DEFAULT_MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"Reply with one word: working\"}],\"max_tokens\":5}" \
  "$GONKA_BASE_URL/chat/completions" 2>/dev/null)

if echo "$TEST_RESP" | grep -q "choices"; then
  echo "✓ Inference working"
else
  echo "✗ Inference test failed"
  echo "  Response: $(echo "$TEST_RESP" | head -c 200)"
  exit 1
fi

# ── Output config snippets ─────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " SETUP COMPLETE — Copy your config below:"
echo "══════════════════════════════════════════════════════"
echo ""
echo "# Environment variables:"
echo "export OPENAI_BASE_URL=\"$GONKA_BASE_URL\""
echo "export OPENAI_API_KEY=\"$GONKA_KEY\""
echo "export LLM_MODEL=\"$GONKA_DEFAULT_MODEL\""
echo ""
echo "# Python (openai SDK):"
echo "client = OpenAI(base_url=\"$GONKA_BASE_URL\", api_key=\"$GONKA_KEY\")"
echo ""
echo "# LangChain:"
echo "llm = ChatOpenAI(base_url=\"$GONKA_BASE_URL\", api_key=\"$GONKA_KEY\", model=\"$GONKA_DEFAULT_MODEL\")"
echo ""
echo "# Hermes agent (config.yaml):"
echo "model:"
echo "  provider: custom"
echo "  base_url: $GONKA_BASE_URL"
echo "  default: $GONKA_DEFAULT_MODEL"
echo ""

# ── Optionally write .env ──────────────────────────────────
if [[ -t 1 ]]; then
  read -rp "Write to .env file? [y/N] " WRITE_ENV
  if [[ "${WRITE_ENV,,}" == "y" ]]; then
    {
      echo "OPENAI_BASE_URL=$GONKA_BASE_URL"
      echo "OPENAI_API_KEY=$GONKA_KEY"
      echo "LLM_MODEL=$GONKA_DEFAULT_MODEL"
    } >> .env
    echo "✓ Written to .env"
  fi
fi

echo ""
echo "Pricing: ~\$0.000366/1M tokens vs \$2.50 (OpenAI) — 6830x cheaper"
echo "Referral: https://gogonka.com · code: bystray"
echo ""
