#!/usr/bin/env bash
# El frontal del verde: el dashboard web de Hermes en una ventana propia, como el
# panel del naranja (chromium --app). Local, en 127.0.0.1, sin cuenta en la nube.
#
#   ./panel-verde.sh              arranca el dashboard y lo abre en su ventana
#   ./panel-verde.sh --solo-servir  solo levanta el servidor y dice la URL
#   ./panel-verde.sh --stop       para el dashboard
#
# El dashboard trae chat, config y sesiones. Es el equivalente al panel del
# naranja: una página local abierta con `chromium --app`, sin barra ni pestañas,
# con su propio icono en la barra de tareas. NO se registra en Nous Portal (eso
# ataría el panel a la nube); se usa tal cual en loopback.
set -uo pipefail

RAIZ=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd)
HERMES="$HOME/.hermes/hermes-agent/venv/bin/python $HOME/.hermes/hermes-agent/hermes"
PUERTO=${VERDE_PANEL_PUERTO:-9119}
URL="http://127.0.0.1:$PUERTO/"
PERFIL=${XDG_CACHE_HOME:-$HOME/.cache}/jarvis-verde-panel
CLASE=jarvis-verde

if [ "${1:-}" = "--stop" ]; then
    $HERMES dashboard --port "$PUERTO" --stop 2>/dev/null
    echo "dashboard del verde parado"
    exit 0
fi

# Arrancar el dashboard si no responde ya.
if [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" != "200" ]; then
    echo "arrancando el dashboard en $URL ..."
    nohup $HERMES dashboard --port "$PUERTO" --host 127.0.0.1 --no-open \
        >"${TMPDIR:-/tmp}/jarvis-verde-dashboard.log" 2>&1 &
    for _ in $(seq 1 30); do
        sleep 2
        [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" = "200" ] && break
    done
fi

if [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" != "200" ]; then
    echo "el dashboard no levantó; mira ${TMPDIR:-/tmp}/jarvis-verde-dashboard.log" >&2
    exit 1
fi
echo "dashboard listo en $URL"

[ "${1:-}" = "--solo-servir" ] && exit 0

# Abrirlo como aplicación, igual que el panel del naranja.
for navegador in chromium chromium-browser google-chrome brave-browser; do
    command -v "$navegador" >/dev/null || continue
    exec "$navegador" --app="$URL" --user-data-dir="$PERFIL" --class="$CLASE" \
        --window-size=1500,940 --no-first-run --no-default-browser-check \
        --disable-features=TranslateUI >/dev/null 2>&1
done
if command -v firefox >/dev/null; then
    echo "sin chromium: se abre en Firefox, con su barra" >&2
    exec firefox --new-window "$URL" >/dev/null 2>&1
fi
echo "no hay navegador; abre a mano: $URL" >&2
