#!/usr/bin/env bash
# Delx CLI installer — https://ontology.delx.ai/docs/cli
# Usage: curl -sS https://ontology.delx.ai/install.sh | bash
set -euo pipefail

MIN_NODE=18

cyan='\033[36m'
green='\033[32m'
red='\033[31m'
dim='\033[2m'
reset='\033[0m'

log()  { printf "${cyan}→${reset} %s\n" "$1"; }
ok()   { printf "${green}✓${reset} %s\n" "$1"; }
fail() { printf "${red}✗${reset} %s\n" "$1" >&2; exit 1; }

# ── Check Node.js ─────────────────────────────────────────────
if ! command -v node &>/dev/null; then
  fail "Node.js not found. Install Node.js ${MIN_NODE}+ first: https://nodejs.org"
fi

NODE_VER=$(node -e "process.stdout.write(process.versions.node.split('.')[0])")
if [ "$NODE_VER" -lt "$MIN_NODE" ]; then
  fail "Node.js ${MIN_NODE}+ required (found v${NODE_VER}). Update: https://nodejs.org"
fi
ok "Node.js v$(node -v | tr -d 'v') detected"

# ── Check npm ─────────────────────────────────────────────────
if ! command -v npm &>/dev/null; then
  fail "npm not found. It should come with Node.js."
fi

# ── Install ───────────────────────────────────────────────────
log "Installing delx-agent-cli..."

if npm ls -g delx-agent-cli &>/dev/null 2>&1; then
  log "Updating existing installation..."
  npm update -g delx-agent-cli
else
  npm install -g delx-agent-cli
fi

# ── Verify ────────────────────────────────────────────────────
if command -v delx &>/dev/null; then
  ok "delx-agent-cli $(delx --version) installed"
  echo ""
  printf "${cyan}Get started:${reset}\n"
  echo "  delx register --name \"my-agent\" --description \"My AI agent\""
  echo "  delx crisis \"describe your incident here\""
  echo "  delx --help"
  echo ""
  printf "${dim}Docs: https://ontology.delx.ai/docs/cli${reset}\n"
else
  NPM_BIN=$(npm bin -g 2>/dev/null || npm config get prefix)/bin
  fail "delx not found in PATH. Add npm global bin to PATH:\n  export PATH=\"${NPM_BIN}:\$PATH\""
fi
