# 0048 — Pipeline de eliminacion de agentes y robots ## Objetivo Crear un pipeline completo de eliminacion que revierta todo lo que `create-full.sh` genera: parar el proceso, desactivar el usuario Matrix, limpiar el launcher, eliminar env vars y borrar archivos. Actualmente `remove.sh` solo marca `enabled: false` en el config — no elimina nada. ## Contexto El pipeline de creacion (`create-full.sh`) genera 7 categorias de artefactos: 1. Directorio `agents//` con agent.go, config.yaml, prompts/, data/ 2. Blank import en `cmd/launcher/main.go` 3. 4 env vars en `.env` (TOKEN, PASSWORD, PICKLE_KEY, SSSS_RECOVERY_KEY) 4. Usuario Matrix registrado en Synapse 5. Cross-signing keys y crypto store E2EE 6. Avatar y display name en Matrix 7. Archivos de runtime (PID, logs) Hoy no existe forma de revertir esto automaticamente. El `remove.sh` actual solo deshabilita. ## Arquitectura Archivos afectados: - `dev-scripts/agent/delete-full.sh` — **NEW** — script orquestador (7 pasos) - `dev-scripts/agent/deactivate-matrix.sh` — **NEW** — desactiva usuario Matrix via Synapse admin API - `dev-scripts/agent/remove-launcher-import.sh` — **NEW** — elimina blank import del launcher - `dev-scripts/agent/remove-env-vars.sh` — **NEW** — elimina las 4 env vars del agente - `dev-scripts/agent/remove.sh` — MODIFICAR — agregar referencia a delete-full.sh - `.claude/rules/delete_agent.md` — **NEW** — regla para el pipeline de eliminacion - `.claude/rules/index.md` — MODIFICAR — agregar entrada de la nueva regla Todo es shell scripting e instrucciones — no toca `pkg/` ni `shell/` (no hay componentes puros/impuros). ## Tareas ### Fase 1: Scripts atomicos - **1.1** Crear `dev-scripts/agent/deactivate-matrix.sh` — desactivar usuario via `POST /_synapse/admin/v1/deactivate/@:` con MATRIX_ADMIN_TOKEN - **1.2** Crear `dev-scripts/agent/remove-launcher-import.sh` — eliminar la linea del blank import en cmd/launcher/main.go usando sed/awk - **1.3** Crear `dev-scripts/agent/remove-env-vars.sh` — eliminar las 4 lineas del .env (MATRIX_TOKEN_, MATRIX_PASSWORD_, PICKLE_KEY_, SSSS_RECOVERY_KEY_) ### Fase 2: Script orquestador - **2.1** Crear `dev-scripts/agent/delete-full.sh` con 7 pasos en orden: 1. VALIDATE — verificar que el agente existe 2. STOP — parar el proceso si esta corriendo 3. DEACTIVATE MATRIX — desactivar usuario en el servidor 4. REMOVE LAUNCHER IMPORT — quitar blank import 5. REMOVE ENV VARS — limpiar .env 6. DELETE FILES — rm -rf agents// + runtime files 7. REBUILD — go build -tags goolm ./... - **2.2** Agregar flag `--keep-matrix` para preservar el usuario Matrix (soft delete) - **2.3** Agregar confirmacion interactiva antes de borrar (con `--force` para skip) ### Fase 3: Documentacion y regla - **3.1** Crear `.claude/rules/delete_agent.md` con instrucciones para LLMs - **3.2** Actualizar `.claude/rules/index.md` con la nueva regla - **3.3** Actualizar `dev-scripts/agent/remove.sh` para referenciar delete-full.sh ### Fase 4: Cleanup - **4.1** Verificar que delete-full.sh funciona end-to-end (crear agente temporal, eliminarlo, verificar limpieza) ## Ejemplo de uso ```bash # Eliminacion completa con confirmacion ./dev-scripts/agent/delete-full.sh wikipedia-bot # Eliminacion sin confirmacion (scripts automatizados) ./dev-scripts/agent/delete-full.sh wikipedia-bot --force # Eliminacion preservando usuario Matrix (puede reutilizarse) ./dev-scripts/agent/delete-full.sh wikipedia-bot --keep-matrix ``` Salida esperada: ``` ═══════════════════════════════════════════════════════ Eliminando agente: wikipedia-bot ═══════════════════════════════════════════════════════ → Paso 1/7 — Validando existencia... ✓ Agente wikipedia-bot encontrado en agents/wikipedia-bot/ → Paso 2/7 — Deteniendo proceso... ✓ Proceso detenido (PID 12345) → Paso 3/7 — Desactivando usuario Matrix... ✓ @wikipedia-bot:matrix-af2f3d.organic-machine.com desactivado → Paso 4/7 — Eliminando import del launcher... ✓ Blank import eliminado de cmd/launcher/main.go → Paso 5/7 — Eliminando variables de entorno... ✓ MATRIX_TOKEN_WIKIPEDIA_BOT eliminado de .env ✓ MATRIX_PASSWORD_WIKIPEDIA_BOT eliminado de .env ✓ PICKLE_KEY_WIKIPEDIA_BOT eliminado de .env ✓ SSSS_RECOVERY_KEY_WIKIPEDIA_BOT eliminado de .env → Paso 6/7 — Eliminando archivos... ✓ agents/wikipedia-bot/ eliminado ✓ run/wikipedia-bot.pid eliminado ✓ logs/wikipedia-bot/ eliminado → Paso 7/7 — Recompilando... ✓ Compilacion exitosa ═══════════════════════════════════════════════════════ ✓ Agente wikipedia-bot eliminado completamente ═══════════════════════════════════════════════════════ ``` ## Decisiones de diseno 1. **Scripts atomicos + orquestador**: cada paso es un script independiente reutilizable, el orquestador los llama en orden. Misma filosofia que create-full.sh. 2. **Confirmacion por defecto**: borrar es destructivo e irreversible. El flag `--force` es para automatizacion. 3. **`--keep-matrix`**: permite reutilizar el usuario Matrix si se quiere recrear el agente con el mismo ID. 4. **Rebuild obligatorio**: tras eliminar el import, el launcher no compilaria sin rebuild. ## Prerequisitos Ninguno — solo depende de los scripts existentes en `dev-scripts/`. ## Riesgos | Riesgo | Mitigacion | |--------|-----------| | Borrar agente equivocado | Confirmacion interactiva + mostrar info del agente antes de borrar | | Agente con datos importantes en data/ | Warning explicito antes de borrar; --keep-matrix preserva usuario | | Launcher no compila tras eliminar import | Rebuild es paso obligatorio; si falla, error claro | | Usuario Matrix no se puede desactivar (admin token invalido) | Error no-fatal con warning; los demas pasos continuan |