feat: scripts para automatizar creacion de robots y notificar developers
Nuevos scripts: - convert-to-robot.sh: convierte scaffold de agente a robot (config minimo, agent.go con nil Rules, sin prompts, command_prefix vacio) - notify-developer.sh: envia DM a los developers (DEVELOPER_MATRIX_USERS) al crear un bot o agente, presentandose con nombre y tipo Mejorado: - create-full.sh: acepta --type robot para pipeline completo de robots (scaffold → build → register → verify → convert → notify) - .env.example: añade DEVELOPER_MATRIX_USERS para lista de developers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
# create-full.sh — pipeline completo para crear un agente funcional
|
||||
# create-full.sh — pipeline completo para crear un agente o robot funcional
|
||||
#
|
||||
# Ejecuta en orden: scaffold → build → register → verify E2EE
|
||||
# Ejecuta en orden: scaffold → build → register → verify E2EE → [convert robot] → [notify dev]
|
||||
# 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"
|
||||
# ./dev-scripts/agent/create-full.sh <agent-id> "Display Name" # agente (default)
|
||||
# ./dev-scripts/agent/create-full.sh <agent-id> "Display Name" --type robot # robot
|
||||
#
|
||||
# Requisitos en .env:
|
||||
# MATRIX_ADMIN_TOKEN, MATRIX_HOMESERVER, MATRIX_SERVER_NAME
|
||||
# DEVELOPER_MATRIX_USERS (opcional, para notificación al developer)
|
||||
|
||||
source "$(dirname "$0")/../_common.sh"
|
||||
load_env
|
||||
@@ -20,17 +19,47 @@ need_arg "${1:-}"
|
||||
|
||||
ID="$1"
|
||||
DISPLAYNAME="${2:-$ID}"
|
||||
TYPE="agent"
|
||||
NORM="$(normalize_id "$ID")"
|
||||
SCRIPT_DIR="$(dirname "$0")"
|
||||
|
||||
# Parse --type flag
|
||||
shift 2 2>/dev/null || shift 1 2>/dev/null || true
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--type)
|
||||
TYPE="${2:-agent}"
|
||||
shift 2
|
||||
;;
|
||||
--type=*)
|
||||
TYPE="${1#--type=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$TYPE" == "robot" ]]; then
|
||||
TYPE_LABEL="robot"
|
||||
TYPE_EMOJI="🤖"
|
||||
else
|
||||
TYPE_LABEL="agente"
|
||||
TYPE_EMOJI="🧠"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${BLU}═══════════════════════════════════════════════════════${RST}"
|
||||
echo -e "${BLU} Creando agente: ${GRN}$ID${BLU} ($DISPLAYNAME)${RST}"
|
||||
echo -e "${BLU} Creando ${TYPE_LABEL}: ${GRN}$ID${BLU} ($DISPLAYNAME) ${TYPE_EMOJI}${RST}"
|
||||
echo -e "${BLU}═══════════════════════════════════════════════════════${RST}"
|
||||
echo ""
|
||||
|
||||
# ── Paso 1: Scaffold ─────────────────────────────────────────────────────
|
||||
info "Paso 1/4 — Scaffold (agent.go, config.yaml, prompts, launcher)"
|
||||
TOTAL_STEPS=5
|
||||
[[ "$TYPE" == "robot" ]] && TOTAL_STEPS=6
|
||||
|
||||
info "Paso 1/${TOTAL_STEPS} — Scaffold (agent.go, config.yaml, prompts, launcher)"
|
||||
echo ""
|
||||
|
||||
"$SCRIPT_DIR/new-agent.sh" "$ID" "$DISPLAYNAME"
|
||||
@@ -38,7 +67,7 @@ echo ""
|
||||
echo ""
|
||||
|
||||
# ── Paso 2: Verificar compilación ─────────────────────────────────────────
|
||||
info "Paso 2/4 — Verificando compilación..."
|
||||
info "Paso 2/${TOTAL_STEPS} — Verificando compilación..."
|
||||
|
||||
if "$GO" build -tags goolm ./... 2>&1; then
|
||||
ok "Compilación exitosa"
|
||||
@@ -49,7 +78,7 @@ fi
|
||||
echo ""
|
||||
|
||||
# ── Paso 3: Registrar en Matrix ──────────────────────────────────────────
|
||||
info "Paso 3/4 — Registrando en Matrix..."
|
||||
info "Paso 3/${TOTAL_STEPS} — Registrando en Matrix..."
|
||||
echo ""
|
||||
|
||||
# Reload .env in case new-agent.sh or previous steps changed it
|
||||
@@ -60,7 +89,7 @@ load_env
|
||||
echo ""
|
||||
|
||||
# ── Paso 4: Verificar E2EE ───────────────────────────────────────────────
|
||||
info "Paso 4/4 — Verificación E2EE (cross-signing + recovery key)..."
|
||||
info "Paso 4/${TOTAL_STEPS} — Verificación E2EE (cross-signing + recovery key)..."
|
||||
echo ""
|
||||
|
||||
# Reload .env to pick up token, password, pickle key from register.sh
|
||||
@@ -70,15 +99,44 @@ load_env
|
||||
|
||||
echo ""
|
||||
|
||||
# ── Paso 5 (robots): Convertir a robot ───────────────────────────────────
|
||||
if [[ "$TYPE" == "robot" ]]; then
|
||||
info "Paso 5/${TOTAL_STEPS} — Convirtiendo a robot..."
|
||||
echo ""
|
||||
|
||||
"$SCRIPT_DIR/convert-to-robot.sh" "$ID" "$DISPLAYNAME"
|
||||
|
||||
# Rebuild after conversion
|
||||
info "Recompilando tras conversión..."
|
||||
"$GO" build -tags goolm ./... 2>&1 || fail "Error de compilación tras conversión a robot"
|
||||
ok "Recompilación exitosa"
|
||||
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# ── Paso final: Notificar al developer ───────────────────────────────────
|
||||
NOTIFY_STEP=$TOTAL_STEPS
|
||||
info "Paso ${NOTIFY_STEP}/${TOTAL_STEPS} — Notificando a desarrolladores..."
|
||||
echo ""
|
||||
|
||||
# Reload .env (verify.sh may have added recovery key)
|
||||
load_env
|
||||
|
||||
"$SCRIPT_DIR/notify-developer.sh" "$ID" "$TYPE" "$DISPLAYNAME" || true
|
||||
|
||||
echo ""
|
||||
|
||||
# ── Resumen ──────────────────────────────────────────────────────────────
|
||||
echo -e "${GRN}═══════════════════════════════════════════════════════${RST}"
|
||||
echo -e "${GRN} ✓ Agente $ID creado exitosamente${RST}"
|
||||
echo -e "${GRN} ✓ ${TYPE_LABEL^} $ID creado exitosamente ${TYPE_EMOJI}${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"
|
||||
if [[ "$TYPE" != "robot" ]]; then
|
||||
echo -e " agents/$ID/prompts/system.md"
|
||||
fi
|
||||
echo ""
|
||||
echo -e " ${BLU}Variables en .env:${RST}"
|
||||
echo -e " MATRIX_TOKEN_${NORM}"
|
||||
@@ -87,15 +145,23 @@ 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 -e " cmd/launcher/main.go (import)"
|
||||
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"
|
||||
if [[ "$TYPE" == "robot" ]]; then
|
||||
echo -e " 1. Añadir comandos custom:"
|
||||
echo -e " ${DIM}agents/$ID/commands.go${RST}"
|
||||
echo ""
|
||||
echo -e " 2. Registrar comandos en el launcher:"
|
||||
echo -e " ${DIM}cmd/launcher/main.go${RST}"
|
||||
else
|
||||
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"
|
||||
fi
|
||||
echo ""
|
||||
echo -e " 2. Arrancar:"
|
||||
echo -e " Arrancar:"
|
||||
echo -e " ${DIM}./dev-scripts/server/start.sh${RST}"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user