From 6858a5f13e8d22877ca4f58088c2cc933dde6d94 Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Fri, 6 Mar 2026 21:53:19 +0000 Subject: [PATCH] refactor: reorganizar dev-scripts en subdirectorios server/ y agent/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se separan los scripts de gestión en dos categorías claras: - dev-scripts/server/ — operaciones del launcher (start, stop, restart, ps, logs, dashboard) - dev-scripts/agent/ — operaciones de agentes (new, register, verify, avatar, remove, list) Se añade create-full.sh como script unificado que ejecuta scaffold + build + register + verify. Se incluyen READMEs en cada subdirectorio documentando los scripts disponibles. Los scripts originales en la raíz de dev-scripts/ se eliminan. Co-Authored-By: Claude Opus 4.6 --- dev-scripts/README.md | 42 +++++++++ dev-scripts/agent/README.md | 89 +++++++++++++++++++ dev-scripts/{ => agent}/avatar.sh | 8 +- dev-scripts/agent/create-full.sh | 101 ++++++++++++++++++++++ dev-scripts/{ => agent}/list.sh | 4 +- dev-scripts/{ => agent}/new-agent.sh | 12 +-- dev-scripts/{ => agent}/register.sh | 12 +-- dev-scripts/{ => agent}/remove.sh | 6 +- dev-scripts/{ => agent}/reset-password.sh | 8 +- dev-scripts/{ => agent}/verify.sh | 10 +-- dev-scripts/restart.sh | 14 --- dev-scripts/server/README.md | 71 +++++++++++++++ dev-scripts/{ => server}/dashboard.sh | 4 +- dev-scripts/{ => server}/logs.sh | 8 +- dev-scripts/{ => server}/ps.sh | 4 +- dev-scripts/server/restart.sh | 14 +++ dev-scripts/{ => server}/server.sh | 40 ++++----- dev-scripts/{ => server}/start.sh | 4 +- dev-scripts/{ => server}/stop.sh | 4 +- 19 files changed, 379 insertions(+), 76 deletions(-) create mode 100644 dev-scripts/README.md create mode 100644 dev-scripts/agent/README.md rename dev-scripts/{ => agent}/avatar.sh (79%) create mode 100755 dev-scripts/agent/create-full.sh rename dev-scripts/{ => agent}/list.sh (90%) rename dev-scripts/{ => agent}/new-agent.sh (94%) rename dev-scripts/{ => agent}/register.sh (84%) rename dev-scripts/{ => agent}/remove.sh (86%) rename dev-scripts/{ => agent}/reset-password.sh (90%) rename dev-scripts/{ => agent}/verify.sh (94%) delete mode 100755 dev-scripts/restart.sh create mode 100644 dev-scripts/server/README.md rename dev-scripts/{ => server}/dashboard.sh (60%) rename dev-scripts/{ => server}/logs.sh (82%) rename dev-scripts/{ => server}/ps.sh (96%) create mode 100755 dev-scripts/server/restart.sh rename dev-scripts/{ => server}/server.sh (69%) rename dev-scripts/{ => server}/start.sh (91%) rename dev-scripts/{ => server}/stop.sh (89%) diff --git a/dev-scripts/README.md b/dev-scripts/README.md new file mode 100644 index 0000000..2c070b0 --- /dev/null +++ b/dev-scripts/README.md @@ -0,0 +1,42 @@ +# dev-scripts + +Scripts bash para operaciones del día a día con los bots Matrix. + +Todos los scripts comparten funciones comunes definidas en `_common.sh` (colores, helpers de proceso, descubrimiento de agentes, carga de `.env`). + +## Estructura + +``` +dev-scripts/ +├── _common.sh funciones compartidas (sourced por todos los scripts) +├── server/ gestión del launcher (ciclo de vida del servidor) +└── agent/ gestión de agentes individuales (setup, registro, E2EE) +``` + +## server/ + +Scripts para controlar el launcher unificado que ejecuta todos los agentes. + +| Script | Descripción | +|--------|-------------| +| `start.sh` | Inicia el launcher (compila si es necesario) | +| `stop.sh` | Detiene el launcher (SIGTERM, espera 5s, SIGKILL) | +| `restart.sh` | Reinicia el launcher (stop + start) | +| `ps.sh` | Muestra el proceso del launcher con detalle (PID, mem, CPU, uptime) | +| `logs.sh [lines]` | Tail -f de los logs del launcher | +| `dashboard.sh` | Abre la TUI interactiva de gestión | +| `server.sh ` | CLI unificado que enruta a los scripts anteriores | + +## agent/ + +Scripts para crear, registrar, verificar y gestionar agentes individuales. + +| Script | Descripción | +|--------|-------------| +| `new-agent.sh [name]` | Genera scaffold completo (config, agent.go, prompts) | +| `register.sh [name]` | Registra bot en Matrix via Synapse admin API | +| `verify.sh [id]` | Verifica/regenera dispositivos E2EE (cross-signing) | +| `avatar.sh ` | Sube avatar y sincroniza displayname | +| `reset-password.sh ` | Resetea password sin invalidar el token | +| `remove.sh ` | Deshabilita un agente (enabled: false, no borra datos) | +| `list.sh` | Muestra todos los agentes y su estado | diff --git a/dev-scripts/agent/README.md b/dev-scripts/agent/README.md new file mode 100644 index 0000000..3e29455 --- /dev/null +++ b/dev-scripts/agent/README.md @@ -0,0 +1,89 @@ +# dev-scripts/agent + +Scripts para crear, registrar, verificar y gestionar agentes individuales en el sistema Matrix. + +## Scripts + +### new-agent.sh + +Genera el scaffold completo para un nuevo agente: `config.yaml`, `agent.go` (reglas puras), directorio de prompts y data. También registra automáticamente el import y la entrada en `rulesRegistry` de `cmd/launcher/main.go`. + +```bash +./dev-scripts/agent/new-agent.sh "Display Name" +./dev-scripts/agent/new-agent.sh monitor-bot "Monitor Agent" +``` + +### register.sh + +Registra un nuevo bot en el servidor Matrix via Synapse admin API. Genera y guarda en `.env`: access token (`MATRIX_TOKEN_*`), password (`MATRIX_PASSWORD_*`) y pickle key (`PICKLE_KEY_*`). + +Requiere `MATRIX_ADMIN_TOKEN` y `MATRIX_HOMESERVER` en `.env`. + +```bash +./dev-scripts/agent/register.sh "Display Name" +./dev-scripts/agent/register.sh assistant-bot "Assistant" +``` + +### verify.sh + +Verifica o regenera los dispositivos E2EE de los agentes. Genera cross-signing keys, firma el device y guarda el recovery key en `.env`. Sin este paso, los mensajes del bot aparecen como "not verified by its owner". + +```bash +./dev-scripts/agent/verify.sh # verifica todos los habilitados con E2EE +./dev-scripts/agent/verify.sh assistant-bot # verifica uno específico +``` + +### avatar.sh + +Sube una imagen como avatar del bot en Matrix y sincroniza el displayname desde el `config.yaml`. + +```bash +./dev-scripts/agent/avatar.sh +./dev-scripts/agent/avatar.sh assistant-bot static/assistant.jpg +``` + +### reset-password.sh + +Resetea la contraseña de un bot existente via Synapse admin API sin crear nueva sesión ni cambiar el device ID. El access token actual sigue siendo válido. + +```bash +./dev-scripts/agent/reset-password.sh +./dev-scripts/agent/reset-password.sh assistant-bot +``` + +### remove.sh + +Deshabilita un agente marcándolo como `enabled: false` en su `config.yaml`. No borra datos — los preserva en `agents//data/`. + +```bash +./dev-scripts/agent/remove.sh +``` + +### list.sh + +Muestra todos los agentes registrados con su estado (running/stopped/disabled), versión y descripción en una tabla formateada. + +```bash +./dev-scripts/agent/list.sh +``` + +## Flujo típico para un nuevo agente + +```bash +# 1. Crear scaffold +./dev-scripts/agent/new-agent.sh mi-bot "Mi Bot" + +# 2. Editar config, reglas y prompt +# agents/mi-bot/config.yaml +# agents/mi-bot/agent.go +# agents/mi-bot/prompts/system.md + +# 3. Registrar en Matrix +./dev-scripts/agent/register.sh mi-bot "Mi Bot" + +# 4. Verificar E2EE +./dev-scripts/agent/verify.sh mi-bot + +# 5. Arrancar +./dev-scripts/server/start.sh +``` diff --git a/dev-scripts/avatar.sh b/dev-scripts/agent/avatar.sh similarity index 79% rename from dev-scripts/avatar.sh rename to dev-scripts/agent/avatar.sh index 997c4d4..25c9d3b 100755 --- a/dev-scripts/avatar.sh +++ b/dev-scripts/agent/avatar.sh @@ -3,13 +3,13 @@ # También sincroniza el displayname desde el config (agent.name). # # Uso: -# ./dev-scripts/avatar.sh +# ./dev-scripts/agent/avatar.sh # # Ejemplos: -# ./dev-scripts/avatar.sh assistant-bot assets/assistant.png -# ./dev-scripts/avatar.sh devops-bot assets/devops.jpg +# ./dev-scripts/agent/avatar.sh assistant-bot assets/assistant.png +# ./dev-scripts/agent/avatar.sh devops-bot assets/devops.jpg -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env AGENT_ID="${1:-}" diff --git a/dev-scripts/agent/create-full.sh b/dev-scripts/agent/create-full.sh new file mode 100755 index 0000000..311aef7 --- /dev/null +++ b/dev-scripts/agent/create-full.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +# create-full.sh — pipeline completo para crear un agente funcional +# +# Ejecuta en orden: scaffold → build → register → verify E2EE +# NO arranca el agente — primero personalizar agent.go, config.yaml y prompts/system.md +# +# Uso: +# ./dev-scripts/agent/create-full.sh "Display Name" +# +# Ejemplo: +# ./dev-scripts/agent/create-full.sh monitor-bot "Monitor Agent" +# +# Requisitos en .env: +# MATRIX_ADMIN_TOKEN, MATRIX_HOMESERVER, MATRIX_SERVER_NAME + +source "$(dirname "$0")/../_common.sh" +load_env + +need_arg "${1:-}" + +ID="$1" +DISPLAYNAME="${2:-$ID}" +NORM="$(normalize_id "$ID")" +SCRIPT_DIR="$(dirname "$0")" + +echo "" +echo -e "${BLU}═══════════════════════════════════════════════════════${RST}" +echo -e "${BLU} Creando agente: ${GRN}$ID${BLU} ($DISPLAYNAME)${RST}" +echo -e "${BLU}═══════════════════════════════════════════════════════${RST}" +echo "" + +# ── Paso 1: Scaffold ───────────────────────────────────────────────────── +info "Paso 1/4 — Scaffold (agent.go, config.yaml, prompts, launcher)" +echo "" + +"$SCRIPT_DIR/new-agent.sh" "$ID" "$DISPLAYNAME" + +echo "" + +# ── Paso 2: Verificar compilación ───────────────────────────────────────── +info "Paso 2/4 — Verificando compilación..." + +if "$GO" build -tags goolm ./... 2>&1; then + ok "Compilación exitosa" +else + fail "Error de compilación — revisa agents/$ID/agent.go y cmd/launcher/main.go" +fi + +echo "" + +# ── Paso 3: Registrar en Matrix ────────────────────────────────────────── +info "Paso 3/4 — Registrando en Matrix..." +echo "" + +# Reload .env in case new-agent.sh or previous steps changed it +load_env + +"$SCRIPT_DIR/register.sh" "$ID" "$DISPLAYNAME" + +echo "" + +# ── Paso 4: Verificar E2EE ─────────────────────────────────────────────── +info "Paso 4/4 — Verificación E2EE (cross-signing + recovery key)..." +echo "" + +# Reload .env to pick up token, password, pickle key from register.sh +load_env + +"$SCRIPT_DIR/verify.sh" "$ID" + +echo "" + +# ── Resumen ────────────────────────────────────────────────────────────── +echo -e "${GRN}═══════════════════════════════════════════════════════${RST}" +echo -e "${GRN} ✓ Agente $ID creado exitosamente${RST}" +echo -e "${GRN}═══════════════════════════════════════════════════════${RST}" +echo "" +echo -e " ${BLU}Archivos creados:${RST}" +echo -e " agents/$ID/agent.go" +echo -e " agents/$ID/config.yaml" +echo -e " agents/$ID/prompts/system.md" +echo "" +echo -e " ${BLU}Variables en .env:${RST}" +echo -e " MATRIX_TOKEN_${NORM}" +echo -e " MATRIX_PASSWORD_${NORM}" +echo -e " PICKLE_KEY_${NORM}" +echo -e " SSSS_RECOVERY_KEY_${NORM}" +echo "" +echo -e " ${BLU}Launcher actualizado:${RST}" +echo -e " cmd/launcher/main.go (import + rulesRegistry)" +echo "" +echo -e "${YLW}Siguiente paso:${RST}" +echo "" +echo -e " 1. Personalizar los archivos del agente:" +echo -e " ${DIM}agents/$ID/agent.go${RST} — reglas de decisión" +echo -e " ${DIM}agents/$ID/config.yaml${RST} — LLM, tools, personalidad" +echo -e " ${DIM}agents/$ID/prompts/system.md${RST} — system prompt" +echo "" +echo -e " 2. Arrancar:" +echo -e " ${DIM}./dev-scripts/server/start.sh${RST}" +echo "" diff --git a/dev-scripts/list.sh b/dev-scripts/agent/list.sh similarity index 90% rename from dev-scripts/list.sh rename to dev-scripts/agent/list.sh index 0e4fb6e..ba9fbc2 100755 --- a/dev-scripts/list.sh +++ b/dev-scripts/agent/list.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash # list.sh — muestra todos los agentes y su estado actual -# Uso: ./dev-scripts/list.sh +# Uso: ./dev-scripts/agent/list.sh -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" printf "%-22s %-12s %-8s %s\n" "ID" "STATUS" "VERSION" "DESCRIPTION" printf '%s\n' "$(printf '─%.0s' {1..70})" diff --git a/dev-scripts/new-agent.sh b/dev-scripts/agent/new-agent.sh similarity index 94% rename from dev-scripts/new-agent.sh rename to dev-scripts/agent/new-agent.sh index 91e8b1e..43fb7b2 100755 --- a/dev-scripts/new-agent.sh +++ b/dev-scripts/agent/new-agent.sh @@ -2,10 +2,10 @@ # new-agent.sh — genera el scaffold de un nuevo agente # # Uso: -# ./dev-scripts/new-agent.sh [displayname] +# ./dev-scripts/agent/new-agent.sh [displayname] # # Ejemplo: -# ./dev-scripts/new-agent.sh monitor-bot "Monitor Agent" +# ./dev-scripts/agent/new-agent.sh monitor-bot "Monitor Agent" # # Crea: # agents//config.yaml (basado en el assistant como plantilla) @@ -15,7 +15,7 @@ # # También te recuerda los dos pasos manuales que quedan. -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env need_arg "${1:-}" @@ -390,7 +390,7 @@ fi echo "" echo -e "${YLW}Quedan 3 pasos:${RST}" echo "" -echo -e " ${DIM}1. ./dev-scripts/register.sh $ID \"$DISPLAYNAME\"${RST} # registra en Matrix + genera token, password, pickle key" -echo -e " ${DIM}2. ./dev-scripts/verify.sh $ID${RST} # genera cross-signing keys + verifica device" -echo -e " ${DIM}3. ./dev-scripts/start.sh $ID${RST} # arranca el agente" +echo -e " ${DIM}1. ./dev-scripts/agent/register.sh $ID \"$DISPLAYNAME\"${RST} # registra en Matrix + genera token, password, pickle key" +echo -e " ${DIM}2. ./dev-scripts/agent/verify.sh $ID${RST} # genera cross-signing keys + verifica device" +echo -e " ${DIM}3. ./dev-scripts/server/start.sh $ID${RST} # arranca el agente" echo "" diff --git a/dev-scripts/register.sh b/dev-scripts/agent/register.sh similarity index 84% rename from dev-scripts/register.sh rename to dev-scripts/agent/register.sh index d7e354a..f9a060f 100755 --- a/dev-scripts/register.sh +++ b/dev-scripts/agent/register.sh @@ -2,11 +2,11 @@ # register.sh — registra un nuevo bot en el servidor Matrix via Synapse admin API # # Uso: -# ./dev-scripts/register.sh [displayname] +# ./dev-scripts/agent/register.sh [displayname] # # Ejemplos: -# ./dev-scripts/register.sh assistant-bot "Assistant" -# ./dev-scripts/register.sh devops-bot "DevOps Agent" +# ./dev-scripts/agent/register.sh assistant-bot "Assistant" +# ./dev-scripts/agent/register.sh devops-bot "DevOps Agent" # # Genera y guarda en .env: # MATRIX_TOKEN_=... (access token) @@ -17,7 +17,7 @@ # MATRIX_ADMIN_TOKEN=syt_... # MATRIX_HOMESERVER=https://... -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env need_arg "${1:-}" @@ -80,6 +80,6 @@ save_env_var "PICKLE_KEY_${NORM}" "$PICKLE_KEY" echo "" echo -e "${YLW}Siguientes pasos:${RST}" echo "" -echo -e " ${DIM}1. ./dev-scripts/verify.sh $USERNAME${RST} # genera cross-signing keys E2EE" -echo -e " ${DIM}2. ./dev-scripts/start.sh $USERNAME${RST} # arranca el agente" +echo -e " ${DIM}1. ./dev-scripts/agent/verify.sh $USERNAME${RST} # genera cross-signing keys E2EE" +echo -e " ${DIM}2. ./dev-scripts/server/start.sh $USERNAME${RST} # arranca el agente" echo "" diff --git a/dev-scripts/remove.sh b/dev-scripts/agent/remove.sh similarity index 86% rename from dev-scripts/remove.sh rename to dev-scripts/agent/remove.sh index 581d486..8198199 100755 --- a/dev-scripts/remove.sh +++ b/dev-scripts/agent/remove.sh @@ -2,9 +2,9 @@ # remove.sh — deshabilita un agente (enabled: false). No borra datos. # # Uso: -# ./dev-scripts/remove.sh assistant-bot +# ./dev-scripts/agent/remove.sh assistant-bot -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" need_arg "${1:-}" TARGET="$1" @@ -18,7 +18,7 @@ while IFS='|' read -r id _version _enabled _desc cfg; do if grep -q 'enabled: true' "$cfg"; then sed -i 's/enabled: true/enabled: false/' "$cfg" ok "$id marcado como disabled en $cfg" - info "Reinicia el launcher para aplicar: ./dev-scripts/server.sh restart" + info "Reinicia el launcher para aplicar: ./dev-scripts/server/server.sh restart" else warn "$id ya estaba marcado como disabled" fi diff --git a/dev-scripts/reset-password.sh b/dev-scripts/agent/reset-password.sh similarity index 90% rename from dev-scripts/reset-password.sh rename to dev-scripts/agent/reset-password.sh index b606491..7f2ad33 100755 --- a/dev-scripts/reset-password.sh +++ b/dev-scripts/agent/reset-password.sh @@ -6,17 +6,17 @@ # Útil para añadir MATRIX_PASSWORD_X a .env en bots ya registrados. # # Uso: -# ./dev-scripts/reset-password.sh +# ./dev-scripts/agent/reset-password.sh # # Ejemplo: -# ./dev-scripts/reset-password.sh assistant-bot +# ./dev-scripts/agent/reset-password.sh assistant-bot # # Requiere en .env: # MATRIX_ADMIN_TOKEN=syt_... # MATRIX_HOMESERVER=https://... # MATRIX_SERVER_NAME=... -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env need_arg "${1:-}" @@ -65,4 +65,4 @@ fi echo "" ok "Contraseña reseteada para ${USER_ID}" dim " El bot usará esta contraseña para cross-signing bootstrap en el próximo arranque." -dim " Reinícialo con: ./dev-scripts/stop.sh $ID && ./dev-scripts/start.sh $ID" +dim " Reinícialo con: ./dev-scripts/server/stop.sh $ID && ./dev-scripts/server/start.sh $ID" diff --git a/dev-scripts/verify.sh b/dev-scripts/agent/verify.sh similarity index 94% rename from dev-scripts/verify.sh rename to dev-scripts/agent/verify.sh index 5683ab7..4ce5404 100755 --- a/dev-scripts/verify.sh +++ b/dev-scripts/agent/verify.sh @@ -5,10 +5,10 @@ # Usa el MISMO crypto store que el agente para que las keys queden disponibles. # # Uso: -# ./dev-scripts/verify.sh # verifica todos los habilitados con E2EE -# ./dev-scripts/verify.sh assistant-bot # verifica uno específico +# ./dev-scripts/agent/verify.sh # verifica todos los habilitados con E2EE +# ./dev-scripts/agent/verify.sh assistant-bot # verifica uno específico -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env TARGET="${1:-}" @@ -78,7 +78,7 @@ verify_agent() { if is_running "$agent_id"; then was_running=true info " Deteniendo $agent_id antes de verificar..." - "$REPO_ROOT/dev-scripts/stop.sh" "$agent_id" + "$REPO_ROOT/dev-scripts/server/stop.sh" "$agent_id" sleep 1 fi @@ -141,7 +141,7 @@ verify_agent() { # Restart agent if it was running if [[ "$was_running" == "true" ]]; then info " Reiniciando $agent_id..." - "$REPO_ROOT/dev-scripts/start.sh" "$agent_id" + "$REPO_ROOT/dev-scripts/server/start.sh" "$agent_id" fi echo diff --git a/dev-scripts/restart.sh b/dev-scripts/restart.sh deleted file mode 100755 index 90a41ed..0000000 --- a/dev-scripts/restart.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash -# restart.sh — reinicia el launcher unificado -# -# Uso: -# ./dev-scripts/restart.sh - -source "$(dirname "$0")/_common.sh" - -info "Deteniendo launcher..." -"$REPO_ROOT/dev-scripts/stop.sh" - -echo "" -info "Iniciando launcher..." -"$REPO_ROOT/dev-scripts/start.sh" diff --git a/dev-scripts/server/README.md b/dev-scripts/server/README.md new file mode 100644 index 0000000..ca941d7 --- /dev/null +++ b/dev-scripts/server/README.md @@ -0,0 +1,71 @@ +# dev-scripts/server + +Scripts para gestionar el ciclo de vida del launcher unificado que ejecuta todos los agentes habilitados. + +## Scripts + +### start.sh + +Inicia el launcher unificado. Compila el binario y ejecuta los tests si es necesario antes de arrancar. Reporta el número de agentes habilitados. + +```bash +./dev-scripts/server/start.sh +``` + +### stop.sh + +Detiene el launcher de forma ordenada. Envía SIGTERM, espera 5 segundos, y si no termina usa SIGKILL. + +```bash +./dev-scripts/server/stop.sh +``` + +### restart.sh + +Reinicia el launcher (ejecuta stop.sh seguido de start.sh). + +```bash +./dev-scripts/server/restart.sh +``` + +### ps.sh + +Muestra el estado del proceso del launcher con métricas detalladas: PID, uptime, uso de memoria, CPU y tamaño de logs. + +```bash +./dev-scripts/server/ps.sh +``` + +### logs.sh + +Sigue los logs del launcher en tiempo real (tail -f). Acepta un argumento opcional para el número de líneas iniciales. + +```bash +./dev-scripts/server/logs.sh # últimas líneas por defecto +./dev-scripts/server/logs.sh 50 # últimas 50 líneas +``` + +### dashboard.sh + +Abre la TUI interactiva (bubbletea) para gestión visual de bots. Permite ver estado, iniciar/detener agentes y ver logs desde una interfaz de terminal. + +```bash +./dev-scripts/server/dashboard.sh +``` + +### server.sh + +CLI unificado que enruta comandos a los scripts individuales. Útil como punto de entrada único. + +```bash +./dev-scripts/server/server.sh start # → start.sh +./dev-scripts/server/server.sh stop # → stop.sh +./dev-scripts/server/server.sh restart # → restart.sh +./dev-scripts/server/server.sh status # resumen general del servidor +./dev-scripts/server/server.sh ps # → ps.sh +./dev-scripts/server/server.sh logs # → logs.sh +./dev-scripts/server/server.sh kill # SIGKILL forzado (emergencia) +./dev-scripts/server/server.sh enable # habilita un agente +./dev-scripts/server/server.sh disable # deshabilita un agente +./dev-scripts/server/server.sh dashboard # → dashboard.sh +``` diff --git a/dev-scripts/dashboard.sh b/dev-scripts/server/dashboard.sh similarity index 60% rename from dev-scripts/dashboard.sh rename to dev-scripts/server/dashboard.sh index 61421c4..a352490 100755 --- a/dev-scripts/dashboard.sh +++ b/dev-scripts/server/dashboard.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # dashboard.sh — lanza el TUI interactivo de gestión de bots -# Uso: ./dev-scripts/dashboard.sh +# Uso: ./dev-scripts/server/dashboard.sh -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" exec "$GO" run ./cmd/dashboard "$@" diff --git a/dev-scripts/logs.sh b/dev-scripts/server/logs.sh similarity index 82% rename from dev-scripts/logs.sh rename to dev-scripts/server/logs.sh index 746b58b..8e521e3 100755 --- a/dev-scripts/logs.sh +++ b/dev-scripts/server/logs.sh @@ -2,11 +2,11 @@ # logs.sh — sigue los logs de agentes (logs//YYYY-MM-DD.jsonl) # # Uso: -# ./dev-scripts/logs.sh # tail -f de todos los agentes (hoy) -# ./dev-scripts/logs.sh assistant-bot # tail -f de un agente específico -# ./dev-scripts/logs.sh assistant-bot 100 # últimas 100 líneas +# ./dev-scripts/server/logs.sh # tail -f de todos los agentes (hoy) +# ./dev-scripts/server/logs.sh assistant-bot # tail -f de un agente específico +# ./dev-scripts/server/logs.sh assistant-bot 100 # últimas 100 líneas -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" LOG_DIR="logs" AGENT_ID="${1:-}" diff --git a/dev-scripts/ps.sh b/dev-scripts/server/ps.sh similarity index 96% rename from dev-scripts/ps.sh rename to dev-scripts/server/ps.sh index 399c513..6f99ce0 100755 --- a/dev-scripts/ps.sh +++ b/dev-scripts/server/ps.sh @@ -2,9 +2,9 @@ # ps.sh — muestra el estado del launcher unificado y agentes # # Uso: -# ./dev-scripts/ps.sh +# ./dev-scripts/server/ps.sh -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" if ! is_launcher_running; then echo "" diff --git a/dev-scripts/server/restart.sh b/dev-scripts/server/restart.sh new file mode 100755 index 0000000..78907fd --- /dev/null +++ b/dev-scripts/server/restart.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# restart.sh — reinicia el launcher unificado +# +# Uso: +# ./dev-scripts/server/restart.sh + +source "$(dirname "$0")/../_common.sh" + +info "Deteniendo launcher..." +"$REPO_ROOT/dev-scripts/server/stop.sh" + +echo "" +info "Iniciando launcher..." +"$REPO_ROOT/dev-scripts/server/start.sh" diff --git a/dev-scripts/server.sh b/dev-scripts/server/server.sh similarity index 69% rename from dev-scripts/server.sh rename to dev-scripts/server/server.sh index b35a977..c75ff47 100755 --- a/dev-scripts/server.sh +++ b/dev-scripts/server/server.sh @@ -2,18 +2,18 @@ # server.sh — gestión unificada del servidor de bots # # Uso: -# ./dev-scripts/server.sh start # iniciar el launcher -# ./dev-scripts/server.sh stop # detener el launcher -# ./dev-scripts/server.sh restart # reiniciar el launcher -# ./dev-scripts/server.sh status # resumen general del servidor -# ./dev-scripts/server.sh ps # proceso con detalle -# ./dev-scripts/server.sh logs [lines] # tail -f de logs -# ./dev-scripts/server.sh kill # SIGKILL forzado (emergencia) -# ./dev-scripts/server.sh enable # habilitar un agente -# ./dev-scripts/server.sh disable # deshabilitar un agente -# ./dev-scripts/server.sh dashboard # TUI interactivo +# ./dev-scripts/server/server.sh start # iniciar el launcher +# ./dev-scripts/server/server.sh stop # detener el launcher +# ./dev-scripts/server/server.sh restart # reiniciar el launcher +# ./dev-scripts/server/server.sh status # resumen general del servidor +# ./dev-scripts/server/server.sh ps # proceso con detalle +# ./dev-scripts/server/server.sh logs [lines] # tail -f de logs +# ./dev-scripts/server/server.sh kill # SIGKILL forzado (emergencia) +# ./dev-scripts/server/server.sh enable # habilitar un agente +# ./dev-scripts/server/server.sh disable # deshabilitar un agente +# ./dev-scripts/server/server.sh dashboard # TUI interactivo -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" CMD="${1:-status}" shift || true @@ -28,7 +28,7 @@ toggle_agent_enabled() { if [[ "$cid" == "$id" ]]; then sed -i "s/^\\( enabled:\\).*/\\1 $value/" "$cfg" ok "$id enabled: $value" - info "Reinicia el launcher para aplicar: ./dev-scripts/server.sh restart" + info "Reinicia el launcher para aplicar: ./dev-scripts/server/server.sh restart" return 0 fi done @@ -37,27 +37,27 @@ toggle_agent_enabled() { case "$CMD" in start) - exec "$REPO_ROOT/dev-scripts/start.sh" + exec "$REPO_ROOT/dev-scripts/server/start.sh" ;; stop) - exec "$REPO_ROOT/dev-scripts/stop.sh" + exec "$REPO_ROOT/dev-scripts/server/stop.sh" ;; restart) - exec "$REPO_ROOT/dev-scripts/restart.sh" + exec "$REPO_ROOT/dev-scripts/server/restart.sh" ;; ps) - exec "$REPO_ROOT/dev-scripts/ps.sh" + exec "$REPO_ROOT/dev-scripts/server/ps.sh" ;; logs) - exec "$REPO_ROOT/dev-scripts/logs.sh" ${ARG:+"$ARG"} + exec "$REPO_ROOT/dev-scripts/server/logs.sh" ${ARG:+"$ARG"} ;; dashboard|tui) - exec "$REPO_ROOT/dev-scripts/dashboard.sh" + exec "$REPO_ROOT/dev-scripts/server/dashboard.sh" ;; enable) @@ -112,11 +112,11 @@ case "$CMD" in echo -e " ${DIM}○ Disabled:${RST} $disabled" echo "" - "$REPO_ROOT/dev-scripts/list.sh" + "$REPO_ROOT/dev-scripts/agent/list.sh" if is_launcher_running; then echo "" - "$REPO_ROOT/dev-scripts/ps.sh" + "$REPO_ROOT/dev-scripts/server/ps.sh" fi ;; diff --git a/dev-scripts/start.sh b/dev-scripts/server/start.sh similarity index 91% rename from dev-scripts/start.sh rename to dev-scripts/server/start.sh index c6a2c44..2b34b0a 100755 --- a/dev-scripts/start.sh +++ b/dev-scripts/server/start.sh @@ -2,9 +2,9 @@ # start.sh — inicia el launcher unificado (todos los agentes habilitados) # # Uso: -# ./dev-scripts/start.sh # inicia el launcher unificado +# ./dev-scripts/server/start.sh # inicia el launcher unificado -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" load_env if is_launcher_running; then diff --git a/dev-scripts/stop.sh b/dev-scripts/server/stop.sh similarity index 89% rename from dev-scripts/stop.sh rename to dev-scripts/server/stop.sh index 29732c6..a93845d 100755 --- a/dev-scripts/stop.sh +++ b/dev-scripts/server/stop.sh @@ -2,9 +2,9 @@ # stop.sh — detiene el launcher unificado # # Uso: -# ./dev-scripts/stop.sh +# ./dev-scripts/server/stop.sh -source "$(dirname "$0")/_common.sh" +source "$(dirname "$0")/../_common.sh" if ! is_launcher_running; then dim " El launcher no está corriendo."