feat: import agents_and_robots platform as unibots (Matrix-out, unibus transport)

Reemplaza el scaffold del echobot por la plataforma completa de bots traida
desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out:
los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms +
E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client).

- go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths
  relativos reajustados a la nueva ubicacion dentro de fn_registry).
- app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales.
- modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports).

agents_and_robots queda archivado como museo de la era Matrix.
This commit is contained in:
agent
2026-06-07 11:50:13 +02:00
parent bb5b0e09b1
commit fc644ecd6e
308 changed files with 38829 additions and 474 deletions
+73
View File
@@ -0,0 +1,73 @@
# crons/ — Catálogo de automatizaciones
Directorio central de automatizaciones nombradas para los agentes. Cada subdirectorio es una
automatización reutilizable que puede aplicarse a uno o más agentes.
## Estructura de una automatización
```
crons/<nombre>/
schedule.yaml # spec: descripción, cron por defecto, acción
prompts/
message.md # plantilla de mensaje (send_message)
prompt.md # prompt para el LLM (llm_prompt)
```
## Convención de `schedule.yaml`
```yaml
# Metadata
name: nombre-de-la-automatizacion
description: "Descripción breve"
# Cron por defecto (el agente puede sobreescribir en su config.yaml)
default_cron: "0 9 * * *"
# Acción
action:
kind: send_message # send_message | llm_prompt
template: prompts/message.md # relativo a la raíz del proyecto
# Sala por defecto (opcional; el agente debe sobreescribir con output_room)
default_output_room: ""
```
> **Nota**: `template` es relativo a la **raíz del proyecto**, no a la carpeta de la automatización.
> Usa siempre la ruta completa desde la raíz: `crons/<nombre>/prompts/message.md`.
## Automatizaciones disponibles
| Nombre | Tipo | Cron por defecto | Descripción |
|--------|------|-----------------|-------------|
| `good-morning` | `send_message` | `0 9 * * *` | Saludo de buenos días |
| `daily-summary` | `llm_prompt` | `0 18 * * *` | Resumen diario del equipo |
## Scripts de gestión
```bash
# Crear nueva automatización (interactivo)
./dev-scripts/cron/new.sh
# Listar todas las automatizaciones con descripción
./dev-scripts/cron/list.sh
# Aplicar automatización a un agente (parchea config.yaml)
./dev-scripts/cron/apply.sh <nombre> <agent-id>
```
## Cómo añadir manualmente a un agente
En `agents/<id>/config.yaml`:
```yaml
schedules:
- name: good-morning
cron: "0 9 * * *"
output_room: "!TUROOM:matrix-af2f3d.organic-machine.com"
action:
kind: send_message
template: "crons/good-morning/prompts/message.md"
```
Ajusta `output_room` con la sala real del agente. El campo `cron` puede sobreescribir el
`default_cron` del catálogo.
+7
View File
@@ -0,0 +1,7 @@
Genera un breve resumen del día para el equipo. Incluye:
- Un saludo de cierre del día
- Un recordatorio de mantener el ánimo y la energía para mañana
- Una frase motivadora corta
Responde en español, de forma amigable y concisa (máximo 3-4 líneas).
+15
View File
@@ -0,0 +1,15 @@
# Automatización: daily-summary
name: daily-summary
description: "Resumen diario generado por el LLM"
# Cron por defecto: cada día a las 18:00
default_cron: "0 18 * * *"
# Acción
action:
kind: llm_prompt
# Relativo a la raíz del proyecto
template: crons/daily-summary/prompts/prompt.md
# Sala de salida por defecto (vacío = el agente debe configurar output_room)
default_output_room: ""
+3
View File
@@ -0,0 +1,3 @@
¡Buenos días! 🌅
Espero que tengan un excelente día. Estoy aquí si necesitan ayuda con algo.
+15
View File
@@ -0,0 +1,15 @@
# Automatización: good-morning
name: good-morning
description: "Saludo de buenos días en una sala"
# Cron por defecto: cada día a las 9:00
default_cron: "0 9 * * *"
# Acción
action:
kind: send_message
# Relativo a la raíz del proyecto
template: crons/good-morning/prompts/message.md
# Sala de salida por defecto (vacío = el agente debe configurar output_room)
default_output_room: ""