#!/bin/bash
# Kipinä — liitä koneesi laskentaverkkoon
set -e

HUB_URL="${KIPINA_HUB:-wss://kipina.studio/ws}"
MODEL="${KIPINA_MODEL:-qwen2.5-coder:3b}"

echo ""
echo "  ╔══════════════════════════════════════╗"
echo "  ║  Kipinä Agentic Network — Node Join  ║"
echo "  ╚══════════════════════════════════════╝"
echo ""

# 1. Ollama
if command -v ollama &>/dev/null; then
    echo "  ✓ Ollama löytyi: $(ollama --version 2>/dev/null || echo 'asennettu')"
else
    echo "  Ollama ei ole asennettu."
    echo ""
    read -p "  Asennetaanko Ollama? (k/e) " -n 1 -r; echo
    if [[ $REPLY =~ ^[Kk]$ ]]; then
        echo "  Asennetaan Ollama..."
        curl -fsSL https://ollama.ai/install.sh | sh
    else
        echo "  Ollama vaaditaan laskentaan. Asenna: https://ollama.ai"
        exit 1
    fi
fi

# 2. Varmistetaan että Ollama on käynnissä
if ! curl -s http://localhost:11434/api/tags &>/dev/null; then
    echo "  Käynnistetään Ollama..."
    ollama serve &>/dev/null &
    sleep 3
    if ! curl -s http://localhost:11434/api/tags &>/dev/null; then
        echo "  ✗ Ollama ei käynnistynyt. Aja: ollama serve"
        exit 1
    fi
fi
echo "  ✓ Ollama käynnissä"

# 3. Malli
if ollama list 2>/dev/null | grep -q "$MODEL"; then
    echo "  ✓ Malli $MODEL ladattu"
else
    echo "  Ladataan malli $MODEL..."
    ollama pull "$MODEL"
fi

# 4. Native-node
echo ""
echo "  Yhdistetään hubiin: $HUB_URL"
echo "  Malli: $MODEL"
echo "  Ctrl+C pysäyttää"
echo ""

# Tarkistetaan onko native-node käännetty
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
NATIVE_BIN="$SCRIPT_DIR/target/release/native-node"

if [ -f "$NATIVE_BIN" ]; then
    HUB_URL="$HUB_URL" OLLAMA_MODEL="$MODEL" "$NATIVE_BIN"
elif command -v cargo &>/dev/null && [ -f "$SCRIPT_DIR/native-node/Cargo.toml" ]; then
    echo "  Käännetään native-node..."
    cd "$SCRIPT_DIR"
    cargo build --release -p native-node --no-default-features 2>&1 | tail -1
    HUB_URL="$HUB_URL" OLLAMA_MODEL="$MODEL" "$NATIVE_BIN"
else
    echo "  ✗ native-node binääriä ei löydy eikä Rust ole asennettu."
    echo "  Asenna Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh"
    echo "  Tai lataa valmis binääri: https://kipina.studio/download"
    exit 1
fi
