feat: add bubbletea TUI dashboard for bot server management

Implementa un dashboard interactivo con bubbletea siguiendo el patrón
pure core / impure shell del proyecto:

- pkg/tui/ (PURE): Model, Update, View — solo fmt y strings, cero I/O.
  Update produce Intent[] (datos puros) en vez de side effects.
- shell/tui/ (IMPURE): Adapter convierte Intent[] en tea.Cmd[] con I/O real
  (process management, /proc stats, log tail).
- cmd/dashboard/ (composición): Bridge conecta pure Update con shell Adapter
  usando la Elm Architecture de bubbletea.

Pantallas: Main Menu → Agent List → Agent Actions (start/stop/restart/kill) → Logs.
Navegación: flechas ↑↓, Enter seleccionar, 0 volver, q salir.

Dependencias añadidas: bubbletea, lipgloss.
Actualiza .gitignore para anclar binarios a raíz (/agentctl, /dashboard).
Documenta nuevos scripts en CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 19:38:30 +00:00
parent 00dac8b77f
commit f5b857dbc6
11 changed files with 933 additions and 1 deletions
+11
View File
@@ -103,10 +103,21 @@ Secciones principales del config: `agent`, `personality`, `llm`, `tools`, `matri
./dev-scripts/list.sh # ver todos los bots y estado
./dev-scripts/start.sh [agent-id] # iniciar uno o todos
./dev-scripts/stop.sh [agent-id] # detener uno o todos
./dev-scripts/restart.sh [agent-id] # reiniciar uno o todos
./dev-scripts/ps.sh [agent-id] # procesos con detalle (PID, mem, CPU, uptime)
./dev-scripts/remove.sh <agent-id> # deshabilitar (sin borrar datos)
./dev-scripts/register.sh <id> [name] # registrar bot en Matrix
./dev-scripts/logs.sh [agent-id] # tail -f de logs
./dev-scripts/new-agent.sh <id> [name] # scaffold completo
# Gestión unificada del servidor
./dev-scripts/server.sh start [id] # iniciar agentes
./dev-scripts/server.sh stop [id] # detener agentes
./dev-scripts/server.sh restart [id] # reiniciar agentes
./dev-scripts/server.sh status # resumen general del servidor
./dev-scripts/server.sh ps [id] # procesos con detalle
./dev-scripts/server.sh logs [id] # tail -f de logs
./dev-scripts/server.sh kill [id] # SIGKILL forzado (emergencia)
```
PID files: `run/<id>.pid` | Log files: `run/<id>.log`