#!/usr/bin/env bash
# Instala Hermes Agent para el carril verde. NO arranca nada.
#
#   ./instalar.sh              instala
#   ./instalar.sh --revisar    solo baja el instalador y te lo enseña
#
# ── Por que un envoltorio y no el curl del video ────────────────────────────
#
# El video (y la web de Nous) dicen:
#
#     curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
#
# Eso ejecuta 3469 lineas que nadie ha leido, con sudo por medio, en una
# maquina que tiene COFRE dentro. Aqui se baja a fichero, se queda en el repo
# junto a su sha256, y se ejecuta desde disco. Cuesta diez segundos y a cambio
# el instalador es auditable y comparable entre versiones.
#
# ── Que se le pasa, y por que ──────────────────────────────────────────────
#
# --skip-setup   El asistente interactivo pide proveedor y clave por /dev/tty.
#                No se quiere: la configuracion se escribe a mano en
#                config.yaml, que queda versionada y explicada. Ademas el
#                asistente es lo unico del instalador que pediria credenciales.
#
# Chromium SI se instala (no se pasa --skip-browser): son ~400 MB pero deja el
# paso 7 del video listo sin reinstalar nada.
#
# ── Que NO hace, comprobado leyendo el codigo ──────────────────────────────
#
# main() llama a maybe_start_gateway(), que suena a que arranca algo. No lo
# hace: sale con `return 0` si no encuentra un token de mensajeria en
# $HERMES_HOME/.env. Como el .env se deja vacio, nunca llega a preguntar.
# Por eso env.ejemplo NO se copia con los tokens descomentados.
#
# El sudo solo se usa para paquetes de sistema de apt. En esta maquina gcc,
# python3-dev, libffi-dev y build-essential ya estaban, asi que lo unico que
# pidio fue Playwright, lo declino y degrado solo: instala Chromium en la cache
# del usuario e imprime el comando que un administrador puede correr luego.
set -uo pipefail

AQUI=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)
URL=https://hermes-agent.nousresearch.com/install.sh
SCRIPT=$AQUI/install-oficial.sh
LOG=$AQUI/instalacion.log

echo "Bajando el instalador oficial..."
curl -fsSL "$URL" -o "$SCRIPT" || { echo "no se pudo bajar"; exit 1; }
chmod +x "$SCRIPT"

echo
echo "  lineas: $(wc -l < "$SCRIPT")"
echo "  sha256: $(sha256sum "$SCRIPT" | cut -d' ' -f1)"
echo

if [ "${1:-}" = "--revisar" ]; then
    echo "Bajado en $SCRIPT. Lee y vuelve sin --revisar."
    exit 0
fi

echo "Instalando (tarda: ~1,5 GB de PyPI y ~400 MB de Chromium)..."
bash "$SCRIPT" --skip-setup 2>&1 | tee "$LOG"

echo
echo "Instalado. NO se ha arrancado nada."
echo
echo "La configuracion NO se copia encima: el instalador deja un config.yaml de"
echo "1890 lineas con su documentacion dentro, y machacarlo la perderia. Se"
echo "editan a mano los bloques model, stt y tts. Cuales y por que, en:"
echo "    $AQUI/config.yaml"
echo
echo "Y OJO: ese fichero declara provider y base_url dos veces dentro de"
echo "model:. En YAML gana la ultima. Comprueba PARSEANDO, no leyendo:"
echo "    python3 -c \"import yaml;print(yaml.safe_load(open('\$HOME/.hermes/config.yaml'))['model'])\""
echo
echo "El .env del instalador ya viene sin claves. Que habilitaria cada una:"
echo "    $AQUI/env.ejemplo"
echo
echo "Comprobacion en frio, no arranca nada:"
echo "    $AQUI/verde-launcher.sh --status"
