#!/bin/bash
# Pi Bux - 24/7 Pi/Hermes Agent Installer
# Usage: curl -fsSL ... | sudo PI_API_KEY=xxx AGENT=hermes bash

set -e

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

log() { echo -e "${GREEN}[bux]${NC} $1"; }
warn() { echo -e "${YELLOW}[bux]${NC} $1"; }
error() { echo -e "${RED}[bux]${NC} $1"; }

# Check root
if [ "$EUID" -ne 0 ]; then
    error "Please run as root: sudo $0"
    exit 1
fi

# Get options
PI_API_KEY="${PI_API_KEY:-$1}"
AGENT="${AGENT:-pi}"  # Default to 'pi', can be 'hermes'
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-}"

if [ -z "$PI_API_KEY" ]; then
    error "PI_API_KEY required. Usage:"
    echo "  curl -fsSL ... | sudo PI_API_KEY=xxx bash"
    echo ""
    echo "Options:"
    echo "  AGENT=hermes  # Run Hermes (self-evolving agent)"
    echo "  AGENT=pi      # Run Pi (default)"
    exit 1
fi

log "Starting Pi Bux installation..."
log "Agent: $AGENT"

# Create user
if ! id "bux" &>/dev/null; then
    log "Creating 'bux' user..."
    useradd -m -s /bin/bash bux
fi

# Create directories
mkdir -p /opt/pi-bux
mkdir -p /home/bux/.pi
mkdir -p /home/bux/logs
mkdir -p /home/bux/.pi/hermes

# Copy files
cp -r systemd /opt/pi-bux/
cp -r scripts /opt/pi-bux/
cp -r agent /opt/pi-bux/

# Set permissions
chown -R bux:bux /home/bux
chown -R bux:bux /opt/pi-bux

# Install Node.js if needed
if ! command -v node &> /dev/null; then
    log "Installing Node.js..."
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
    apt-get install -y nodejs
fi

# Install Pi
log "Installing Pi..."
cd /home/bux
sudo -u bux npm install -g @mariozechner/pi-coding-agent

# Install Hermes
if [ "$AGENT" = "hermes" ]; then
    log "Installing Hermes (self-evolving agent)..."
    sudo -u bux npm install -g @artale/pi-hermes
fi

# Set environment
cat > /home/bux/.pi/env << EOF
PI_API_KEY=$PI_API_KEY
AGENT=$AGENT
TELEGRAM_BOT_TOKEN=$TELEGRAM_BOT_TOKEN
EOF
chown bux:bux /home/bux/.pi/env
chmod 600 /home/bux/.pi/env

# Choose service
if [ "$AGENT" = "hermes" ]; then
    SERVICE_NAME="pi-hermes.service"
    DISPLAY_NAME="Pi Hermes"
else
    SERVICE_NAME="pi-agent.service"
    DISPLAY_NAME="Pi Agent"
fi

# Install systemd service
log "Installing systemd service..."
cp /opt/pi-bux/systemd/$SERVICE_NAME /etc/systemd/system/

# Edit service with correct agent
sed -i "s/ExecStart=.*/ExecStart=\/usr\/bin\/pi run --continuous --agent $AGENT/" /etc/systemd/system/$SERVICE_NAME 2>/dev/null || true

systemctl daemon-reload

# Enable services
log "Enabling services..."
systemctl enable $SERVICE_NAME
systemctl start $SERVICE_NAME

# Install Telegram bot if token provided
if [ -n "$TELEGRAM_BOT_TOKEN" ]; then
    log "Installing Telegram bot..."
    cp /opt/pi-bux/systemd/telegram-bot.service /etc/systemd/system/
    systemctl enable telegram-bot.service
    systemctl start telegram-bot.service
    log "✅ Telegram bot enabled!"
fi

# Check status
sleep 3
if systemctl is-active --quiet $SERVICE_NAME; then
    log "✅ $DISPLAY_NAME running!"
else
    error "❌ Failed to start $DISPLAY_NAME"
    journalctl -u $SERVICE_NAME --no-pager -n 20
    exit 1
fi

log ""
log "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log "✅ Pi Bux installed successfully!"
log "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log ""
log "Agent: $DISPLAY_NAME"
log "Uptime: 24/7 via systemd"
log ""
log "Commands:"
log "  systemctl start $SERVICE_NAME"
log "  systemctl status $SERVICE_NAME"
log "  journalctl -u $SERVICE_NAME -f"
log ""
log "Docs: https://github.com/artale93/pi-bux"