refactor: reorganizar dev-scripts en subdirectorios server/ y agent/
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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 <cmd>` | CLI unificado que enruta a los scripts anteriores |
|
||||||
|
|
||||||
|
## agent/
|
||||||
|
|
||||||
|
Scripts para crear, registrar, verificar y gestionar agentes individuales.
|
||||||
|
|
||||||
|
| Script | Descripción |
|
||||||
|
|--------|-------------|
|
||||||
|
| `new-agent.sh <id> [name]` | Genera scaffold completo (config, agent.go, prompts) |
|
||||||
|
| `register.sh <id> [name]` | Registra bot en Matrix via Synapse admin API |
|
||||||
|
| `verify.sh [id]` | Verifica/regenera dispositivos E2EE (cross-signing) |
|
||||||
|
| `avatar.sh <id> <img>` | Sube avatar y sincroniza displayname |
|
||||||
|
| `reset-password.sh <id>` | Resetea password sin invalidar el token |
|
||||||
|
| `remove.sh <id>` | Deshabilita un agente (enabled: false, no borra datos) |
|
||||||
|
| `list.sh` | Muestra todos los agentes y su estado |
|
||||||
@@ -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 <agent-id> "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 <agent-id> "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 <agent-id> <image-path>
|
||||||
|
./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 <agent-id>
|
||||||
|
./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/<id>/data/`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./dev-scripts/agent/remove.sh <agent-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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
|
||||||
|
```
|
||||||
@@ -3,13 +3,13 @@
|
|||||||
# También sincroniza el displayname desde el config (agent.name).
|
# También sincroniza el displayname desde el config (agent.name).
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/avatar.sh <agent-id> <image-path>
|
# ./dev-scripts/agent/avatar.sh <agent-id> <image-path>
|
||||||
#
|
#
|
||||||
# Ejemplos:
|
# Ejemplos:
|
||||||
# ./dev-scripts/avatar.sh assistant-bot assets/assistant.png
|
# ./dev-scripts/agent/avatar.sh assistant-bot assets/assistant.png
|
||||||
# ./dev-scripts/avatar.sh devops-bot assets/devops.jpg
|
# ./dev-scripts/agent/avatar.sh devops-bot assets/devops.jpg
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
load_env
|
load_env
|
||||||
|
|
||||||
AGENT_ID="${1:-}"
|
AGENT_ID="${1:-}"
|
||||||
Executable
+101
@@ -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 <agent-id> "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 ""
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# list.sh — muestra todos los agentes y su estado actual
|
# 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 "%-22s %-12s %-8s %s\n" "ID" "STATUS" "VERSION" "DESCRIPTION"
|
||||||
printf '%s\n' "$(printf '─%.0s' {1..70})"
|
printf '%s\n' "$(printf '─%.0s' {1..70})"
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
# new-agent.sh — genera el scaffold de un nuevo agente
|
# new-agent.sh — genera el scaffold de un nuevo agente
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/new-agent.sh <agent-id> [displayname]
|
# ./dev-scripts/agent/new-agent.sh <agent-id> [displayname]
|
||||||
#
|
#
|
||||||
# Ejemplo:
|
# Ejemplo:
|
||||||
# ./dev-scripts/new-agent.sh monitor-bot "Monitor Agent"
|
# ./dev-scripts/agent/new-agent.sh monitor-bot "Monitor Agent"
|
||||||
#
|
#
|
||||||
# Crea:
|
# Crea:
|
||||||
# agents/<agent-id>/config.yaml (basado en el assistant como plantilla)
|
# agents/<agent-id>/config.yaml (basado en el assistant como plantilla)
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
#
|
#
|
||||||
# También te recuerda los dos pasos manuales que quedan.
|
# También te recuerda los dos pasos manuales que quedan.
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
load_env
|
load_env
|
||||||
|
|
||||||
need_arg "${1:-}"
|
need_arg "${1:-}"
|
||||||
@@ -390,7 +390,7 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
echo -e "${YLW}Quedan 3 pasos:${RST}"
|
echo -e "${YLW}Quedan 3 pasos:${RST}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${DIM}1. ./dev-scripts/register.sh $ID \"$DISPLAYNAME\"${RST} # registra en Matrix + genera token, password, pickle key"
|
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/verify.sh $ID${RST} # genera cross-signing keys + verifica device"
|
echo -e " ${DIM}2. ./dev-scripts/agent/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}3. ./dev-scripts/server/start.sh $ID${RST} # arranca el agente"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
# register.sh — registra un nuevo bot en el servidor Matrix via Synapse admin API
|
# register.sh — registra un nuevo bot en el servidor Matrix via Synapse admin API
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/register.sh <username> [displayname]
|
# ./dev-scripts/agent/register.sh <username> [displayname]
|
||||||
#
|
#
|
||||||
# Ejemplos:
|
# Ejemplos:
|
||||||
# ./dev-scripts/register.sh assistant-bot "Assistant"
|
# ./dev-scripts/agent/register.sh assistant-bot "Assistant"
|
||||||
# ./dev-scripts/register.sh devops-bot "DevOps Agent"
|
# ./dev-scripts/agent/register.sh devops-bot "DevOps Agent"
|
||||||
#
|
#
|
||||||
# Genera y guarda en .env:
|
# Genera y guarda en .env:
|
||||||
# MATRIX_TOKEN_<NORM>=... (access token)
|
# MATRIX_TOKEN_<NORM>=... (access token)
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
# MATRIX_ADMIN_TOKEN=syt_...
|
# MATRIX_ADMIN_TOKEN=syt_...
|
||||||
# MATRIX_HOMESERVER=https://...
|
# MATRIX_HOMESERVER=https://...
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
load_env
|
load_env
|
||||||
|
|
||||||
need_arg "${1:-}"
|
need_arg "${1:-}"
|
||||||
@@ -80,6 +80,6 @@ save_env_var "PICKLE_KEY_${NORM}" "$PICKLE_KEY"
|
|||||||
echo ""
|
echo ""
|
||||||
echo -e "${YLW}Siguientes pasos:${RST}"
|
echo -e "${YLW}Siguientes pasos:${RST}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${DIM}1. ./dev-scripts/verify.sh $USERNAME${RST} # genera cross-signing keys E2EE"
|
echo -e " ${DIM}1. ./dev-scripts/agent/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}2. ./dev-scripts/server/start.sh $USERNAME${RST} # arranca el agente"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
# remove.sh — deshabilita un agente (enabled: false). No borra datos.
|
# remove.sh — deshabilita un agente (enabled: false). No borra datos.
|
||||||
#
|
#
|
||||||
# Uso:
|
# 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:-}"
|
need_arg "${1:-}"
|
||||||
TARGET="$1"
|
TARGET="$1"
|
||||||
@@ -18,7 +18,7 @@ while IFS='|' read -r id _version _enabled _desc cfg; do
|
|||||||
if grep -q 'enabled: true' "$cfg"; then
|
if grep -q 'enabled: true' "$cfg"; then
|
||||||
sed -i 's/enabled: true/enabled: false/' "$cfg"
|
sed -i 's/enabled: true/enabled: false/' "$cfg"
|
||||||
ok "$id marcado como disabled en $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
|
else
|
||||||
warn "$id ya estaba marcado como disabled"
|
warn "$id ya estaba marcado como disabled"
|
||||||
fi
|
fi
|
||||||
@@ -6,17 +6,17 @@
|
|||||||
# Útil para añadir MATRIX_PASSWORD_X a .env en bots ya registrados.
|
# Útil para añadir MATRIX_PASSWORD_X a .env en bots ya registrados.
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/reset-password.sh <agent-id>
|
# ./dev-scripts/agent/reset-password.sh <agent-id>
|
||||||
#
|
#
|
||||||
# Ejemplo:
|
# Ejemplo:
|
||||||
# ./dev-scripts/reset-password.sh assistant-bot
|
# ./dev-scripts/agent/reset-password.sh assistant-bot
|
||||||
#
|
#
|
||||||
# Requiere en .env:
|
# Requiere en .env:
|
||||||
# MATRIX_ADMIN_TOKEN=syt_...
|
# MATRIX_ADMIN_TOKEN=syt_...
|
||||||
# MATRIX_HOMESERVER=https://...
|
# MATRIX_HOMESERVER=https://...
|
||||||
# MATRIX_SERVER_NAME=...
|
# MATRIX_SERVER_NAME=...
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
load_env
|
load_env
|
||||||
|
|
||||||
need_arg "${1:-}"
|
need_arg "${1:-}"
|
||||||
@@ -65,4 +65,4 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
ok "Contraseña reseteada para ${USER_ID}"
|
ok "Contraseña reseteada para ${USER_ID}"
|
||||||
dim " El bot usará esta contraseña para cross-signing bootstrap en el próximo arranque."
|
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"
|
||||||
@@ -5,10 +5,10 @@
|
|||||||
# Usa el MISMO crypto store que el agente para que las keys queden disponibles.
|
# Usa el MISMO crypto store que el agente para que las keys queden disponibles.
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/verify.sh # verifica todos los habilitados con E2EE
|
# ./dev-scripts/agent/verify.sh # verifica todos los habilitados con E2EE
|
||||||
# ./dev-scripts/verify.sh assistant-bot # verifica uno específico
|
# ./dev-scripts/agent/verify.sh assistant-bot # verifica uno específico
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
load_env
|
load_env
|
||||||
|
|
||||||
TARGET="${1:-}"
|
TARGET="${1:-}"
|
||||||
@@ -78,7 +78,7 @@ verify_agent() {
|
|||||||
if is_running "$agent_id"; then
|
if is_running "$agent_id"; then
|
||||||
was_running=true
|
was_running=true
|
||||||
info " Deteniendo $agent_id antes de verificar..."
|
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
|
sleep 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ verify_agent() {
|
|||||||
# Restart agent if it was running
|
# Restart agent if it was running
|
||||||
if [[ "$was_running" == "true" ]]; then
|
if [[ "$was_running" == "true" ]]; then
|
||||||
info " Reiniciando $agent_id..."
|
info " Reiniciando $agent_id..."
|
||||||
"$REPO_ROOT/dev-scripts/start.sh" "$agent_id"
|
"$REPO_ROOT/dev-scripts/server/start.sh" "$agent_id"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@@ -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"
|
|
||||||
@@ -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 <id> # habilita un agente
|
||||||
|
./dev-scripts/server/server.sh disable <id> # deshabilita un agente
|
||||||
|
./dev-scripts/server/server.sh dashboard # → dashboard.sh
|
||||||
|
```
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# dashboard.sh — lanza el TUI interactivo de gestión de bots
|
# 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 "$@"
|
exec "$GO" run ./cmd/dashboard "$@"
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
# logs.sh — sigue los logs de agentes (logs/<agent>/YYYY-MM-DD.jsonl)
|
# logs.sh — sigue los logs de agentes (logs/<agent>/YYYY-MM-DD.jsonl)
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/logs.sh # tail -f de todos los agentes (hoy)
|
# ./dev-scripts/server/logs.sh # tail -f de todos los agentes (hoy)
|
||||||
# ./dev-scripts/logs.sh assistant-bot # tail -f de un agente específico
|
# ./dev-scripts/server/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 assistant-bot 100 # últimas 100 líneas
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
|
|
||||||
LOG_DIR="logs"
|
LOG_DIR="logs"
|
||||||
AGENT_ID="${1:-}"
|
AGENT_ID="${1:-}"
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
# ps.sh — muestra el estado del launcher unificado y agentes
|
# ps.sh — muestra el estado del launcher unificado y agentes
|
||||||
#
|
#
|
||||||
# Uso:
|
# 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
|
if ! is_launcher_running; then
|
||||||
echo ""
|
echo ""
|
||||||
Executable
+14
@@ -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"
|
||||||
@@ -2,18 +2,18 @@
|
|||||||
# server.sh — gestión unificada del servidor de bots
|
# server.sh — gestión unificada del servidor de bots
|
||||||
#
|
#
|
||||||
# Uso:
|
# Uso:
|
||||||
# ./dev-scripts/server.sh start # iniciar el launcher
|
# ./dev-scripts/server/server.sh start # iniciar el launcher
|
||||||
# ./dev-scripts/server.sh stop # detener el launcher
|
# ./dev-scripts/server/server.sh stop # detener el launcher
|
||||||
# ./dev-scripts/server.sh restart # reiniciar el launcher
|
# ./dev-scripts/server/server.sh restart # reiniciar el launcher
|
||||||
# ./dev-scripts/server.sh status # resumen general del servidor
|
# ./dev-scripts/server/server.sh status # resumen general del servidor
|
||||||
# ./dev-scripts/server.sh ps # proceso con detalle
|
# ./dev-scripts/server/server.sh ps # proceso con detalle
|
||||||
# ./dev-scripts/server.sh logs [lines] # tail -f de logs
|
# ./dev-scripts/server/server.sh logs [lines] # tail -f de logs
|
||||||
# ./dev-scripts/server.sh kill # SIGKILL forzado (emergencia)
|
# ./dev-scripts/server/server.sh kill # SIGKILL forzado (emergencia)
|
||||||
# ./dev-scripts/server.sh enable <id> # habilitar un agente
|
# ./dev-scripts/server/server.sh enable <id> # habilitar un agente
|
||||||
# ./dev-scripts/server.sh disable <id> # deshabilitar un agente
|
# ./dev-scripts/server/server.sh disable <id> # deshabilitar un agente
|
||||||
# ./dev-scripts/server.sh dashboard # TUI interactivo
|
# ./dev-scripts/server/server.sh dashboard # TUI interactivo
|
||||||
|
|
||||||
source "$(dirname "$0")/_common.sh"
|
source "$(dirname "$0")/../_common.sh"
|
||||||
|
|
||||||
CMD="${1:-status}"
|
CMD="${1:-status}"
|
||||||
shift || true
|
shift || true
|
||||||
@@ -28,7 +28,7 @@ toggle_agent_enabled() {
|
|||||||
if [[ "$cid" == "$id" ]]; then
|
if [[ "$cid" == "$id" ]]; then
|
||||||
sed -i "s/^\\( enabled:\\).*/\\1 $value/" "$cfg"
|
sed -i "s/^\\( enabled:\\).*/\\1 $value/" "$cfg"
|
||||||
ok "$id enabled: $value"
|
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
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -37,27 +37,27 @@ toggle_agent_enabled() {
|
|||||||
|
|
||||||
case "$CMD" in
|
case "$CMD" in
|
||||||
start)
|
start)
|
||||||
exec "$REPO_ROOT/dev-scripts/start.sh"
|
exec "$REPO_ROOT/dev-scripts/server/start.sh"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
stop)
|
stop)
|
||||||
exec "$REPO_ROOT/dev-scripts/stop.sh"
|
exec "$REPO_ROOT/dev-scripts/server/stop.sh"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart)
|
restart)
|
||||||
exec "$REPO_ROOT/dev-scripts/restart.sh"
|
exec "$REPO_ROOT/dev-scripts/server/restart.sh"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
ps)
|
ps)
|
||||||
exec "$REPO_ROOT/dev-scripts/ps.sh"
|
exec "$REPO_ROOT/dev-scripts/server/ps.sh"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
logs)
|
logs)
|
||||||
exec "$REPO_ROOT/dev-scripts/logs.sh" ${ARG:+"$ARG"}
|
exec "$REPO_ROOT/dev-scripts/server/logs.sh" ${ARG:+"$ARG"}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
dashboard|tui)
|
dashboard|tui)
|
||||||
exec "$REPO_ROOT/dev-scripts/dashboard.sh"
|
exec "$REPO_ROOT/dev-scripts/server/dashboard.sh"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
enable)
|
enable)
|
||||||
@@ -112,11 +112,11 @@ case "$CMD" in
|
|||||||
echo -e " ${DIM}○ Disabled:${RST} $disabled"
|
echo -e " ${DIM}○ Disabled:${RST} $disabled"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
"$REPO_ROOT/dev-scripts/list.sh"
|
"$REPO_ROOT/dev-scripts/agent/list.sh"
|
||||||
|
|
||||||
if is_launcher_running; then
|
if is_launcher_running; then
|
||||||
echo ""
|
echo ""
|
||||||
"$REPO_ROOT/dev-scripts/ps.sh"
|
"$REPO_ROOT/dev-scripts/server/ps.sh"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
# start.sh — inicia el launcher unificado (todos los agentes habilitados)
|
# start.sh — inicia el launcher unificado (todos los agentes habilitados)
|
||||||
#
|
#
|
||||||
# Uso:
|
# 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
|
load_env
|
||||||
|
|
||||||
if is_launcher_running; then
|
if is_launcher_running; then
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
# stop.sh — detiene el launcher unificado
|
# stop.sh — detiene el launcher unificado
|
||||||
#
|
#
|
||||||
# Uso:
|
# 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
|
if ! is_launcher_running; then
|
||||||
dim " El launcher no está corriendo."
|
dim " El launcher no está corriendo."
|
||||||
Reference in New Issue
Block a user