# 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
```
