Commit Graph

352 Commits

Author SHA1 Message Date
egutierrez 547384bcb1 merge: issue/0045-notify-encrypted-rooms — DM rooms con E2EE
El script notify-developer.sh ahora crea salas DM con encriptacion
E2EE habilitada via initial_state m.room.encryption. Corrige que
bots recientes (father-bot, test-bot, test-personality) aparezcan
sin cifrado en Element.
2026-04-10 22:44:35 +00:00
egutierrez 5dff4ba0de docs: cerrar issue 0045 — notify-developer.sh con E2EE
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:44:23 +00:00
egutierrez 89ab05eda9 test: E2E test para E2EE en notify-developer.sh
Valida que el script notify-developer.sh crea DM rooms con
encriptacion habilitada: initial_state con m.room.encryption,
algoritmo m.megolm.v1.aes-sha2, preset trusted_private_chat,
is_direct e invite presentes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:43:47 +00:00
egutierrez 3f9425211c fix: agregar E2EE a DM rooms creados por notify-developer.sh
El createRoom usaba solo preset trusted_private_chat, que configura
permisos pero no activa encriptacion. Ahora incluye initial_state
con m.room.encryption (m.megolm.v1.aes-sha2) para que las salas DM
de bienvenida se creen cifradas de extremo a extremo.

Esto corrige que bots recientes (father-bot, test-bot, test-personality)
aparezcan sin E2EE en Element cuando el DM fue iniciado por el script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:42:28 +00:00
egutierrez 87ca9e290e docs: crear issue 0045 — DM rooms sin E2EE en notify-developer.sh
El script notify-developer.sh crea salas DM sin encriptacion porque
el createRoom usa preset trusted_private_chat sin initial_state de
m.room.encryption. Esto afecta a bots creados recientemente
(father-bot, test-bot, test-personality).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:41:53 +00:00
egutierrez fbe592e4f5 docs: actualizar README de issues — marcar 0036 como completado
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 23:00:37 +00:00
egutierrez f46c80ade8 merge: issue/0036-claude-code-streaming — implementación paralela 2026-04-09 23:00:21 +00:00
egutierrez dbcf927519 docs: cerrar issue 0036 — claude-code streaming completado
Mueve el issue a dev/issues/completed/ tras implementar todas las fases:
- Fase 1: streaming del subproceso con stream-json
- Fase 2: ProgressReporter con mensajes progresivos en Matrix
- Fase 3: config schema y template actualizados
- Fase 4: tests de integracion y regresion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:59:36 +00:00
egutierrez 4ccc052f5b test: tests de integracion para streaming + ProgressReporter
Agrega tests de integracion end-to-end que validan el pipeline completo:
streaming events → ProgressReporter → mock sender → Matrix messages.

- TestIntegration_StreamToProgressReporter: simula sesion completa con
  init, 3 tool_use, text, result y finalize — verifica 1 send + 4 edits
- TestIntegration_NoStreamingNoSideEffects: verifica que streaming=false
  no genera ningun side effect (regression test)
- TestIntegration_ProgressReporterWithSendError: verifica que errores
  de envio no causan panic y se manejan gracefully

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:59:27 +00:00
egutierrez 189472fea7 chore: actualizar template config con opciones de streaming
Agrega campos streaming y show_tool_progress al template de config
del agente para documentar las nuevas opciones de claude-code.
Ambos desactivados por defecto (backward compatible).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:58:42 +00:00
egutierrez 45bd258be1 feat: mensajes progresivos en Matrix con ProgressReporter
Implementa la Fase 2 del issue 0036: mensajes de progreso en tiempo real
que muestran al usuario que herramientas esta usando el agente claude-code.

- SendMarkdownGetID en shell/matrix/client.go: envia mensaje y retorna
  el event ID para editarlo despues
- EditMessage en shell/matrix/client.go: edita un mensaje existente
  usando m.replace (m.relates_to con rel_type=m.replace)
- ProgressReporter en shell/effects/progress.go (NEW): recibe streaming
  events y actualiza un mensaje unico en Matrix mostrando el progreso
  (e.g. "🔧 Bash: ls -la" → "🔧 Read: file.go" → " Completado")
- Rate limiter integrado: max 1 edit/segundo para no saturar el homeserver
- Conectado en devagents/handler.go: cuando provider=claude-code y
  streaming+show_tool_progress habilitados, crea ProgressReporter y
  pasa StreamFunc al CompletionRequest
- MatrixSender interface actualizada con los nuevos metodos
- 10 tests nuevos para ProgressReporter, todos los existentes pasan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:58:03 +00:00
egutierrez 1bdf9344a2 feat: streaming del subproceso claude-code con --output-format stream-json
Implementa la Fase 1 del issue 0036: soporte de streaming en tiempo real
para el provider claude-code.

- Tipos puros de streaming en pkg/llm/types.go: StreamEventKind,
  StreamEvent, StreamFunc (pure core, sin side effects)
- Refactor de shell/llm/claudecode.go: nuevo code path executeStreaming
  que usa cmd.StdoutPipe + bufio.Scanner para leer linea a linea
- Parser parseStreamLine que mapea eventos JSON del CLI (system, assistant,
  result) a StreamEvent del dominio
- buildClaudeArgs ahora selecciona --output-format stream-json cuando
  streaming esta habilitado y StreamFunc presente
- Campos Streaming y ShowToolProgress en ClaudeCodeCfg (config schema)
- Backward compatible: streaming=false (default) no cambia comportamiento
- 40 tests (20 existentes + 20 nuevos) pasan sin errores

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:53:41 +00:00
egutierrez 0933099365 docs: actualizar README de issues — marcar 0043 y 0044 como completados
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:48:35 +00:00
egutierrez da79411993 merge: issue/0043-father-bot-security-guardrails — implementación paralela
# Conflicts:
#	agents/_specials/father-bot/prompts/system.md
2026-04-09 22:48:11 +00:00
egutierrez a190ac3725 merge: issue/0044-formalize-agent-creation-pipeline — implementación paralela 2026-04-09 22:47:23 +00:00
egutierrez a6daedc3f3 docs: cerrar issue 0044
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:46:59 +00:00
egutierrez c6eae2fcae docs: actualizar skills y CLAUDE.md con pipeline formalizado
- /create-agent SKILL.md: pipeline 8 pasos del script, pasos 8-12 post
- /create-bot SKILL.md: pipeline con health check y self-introduce
- CLAUDE.md: seccion breve de pipeline de 12 pasos con env var clave

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:46:29 +00:00
egutierrez 9cad643c23 docs: documentar pipeline formalizado de 12 pasos en rules y system prompt
Actualiza create_agent.md con el pipeline completo (12 pasos) al inicio
de la guia, referenciando los scripts de cada paso.

Actualiza system prompt de father-bot con:
- Pipeline de 12 pasos explicito con "nunca saltar pasos"
- Health check (paso 11) via health-check.sh antes de confirmar
- Self-introduce (paso 12) via notify-developer.sh
- Paso de reporte incluye confirmacion de health check y notify
- Manejo de errores para health check y notify

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:43:49 +00:00
egutierrez cc8481de66 docs: cerrar issue 0043
Mover issue 0043-father-bot-security-guardrails a completed/.
Todas las fases implementadas: control de acceso, path scoping,
rate limiting, validacion post-creacion y verificacion de audit.
2026-04-09 22:39:18 +00:00
egutierrez fa78075370 test: tests ACL para father-bot deny-by-default y multi-admin
Agrega dos tests nuevos al paquete pkg/security que verifican
escenarios especificos de father-bot:

- TestResolveACL_FatherBotDenyByDefault: cuando el grupo admins
  esta vacio, nadie puede interactuar con father-bot (deny-by-default)
- TestResolveACL_FatherBotMultipleAdmins: cuando hay multiples
  admins configurados, todos pueden interactuar; usuarios fuera
  del grupo no pueden

Estos tests complementan el existente TestResolveACL_PrivilegedVsGeneral
que ya cubria el caso basico de admin vs non-admin.

Issue: 0043
2026-04-09 22:39:07 +00:00
egutierrez bbd8d96da4 feat: guardrails de seguridad para father-bot via system prompt
Implementa restricciones adicionales de seguridad para father-bot,
el agente privilegiado que crea otros agentes. Los guardrails se
implementan como instrucciones en el system prompt (primera linea
de defensa) complementando el ACL admin-only existente.

Guardrails agregados:
- Control de acceso: verificacion explicita de admin antes de operar,
  deny-by-default si no hay admins configurados (fase 1)
- Path scoping: allowlist de escritura (agents/, cmd/launcher/main.go),
  denylist explicita (.env, security/, .git/) (fase 2)
- Rate limiting: maximo 3 agentes por sesion de conversacion,
  verificacion de duplicados antes de crear (fase 3)
- Validacion post-creacion: checklist de seguridad obligatorio antes
  de reiniciar launcher — sin sanitize deshabilitado, sin wildcards
  en SSH/file, sin bypassPermissions, con seccion de seguridad en
  prompt (fase 4)
- Paso 5.5 en el flujo de trabajo para ejecutar validacion de
  seguridad despues de compilar y antes de reiniciar (fase 4)
- Audit ya estaba habilitado en config.yaml, verificado correcto (fase 5)

Issue: 0043
2026-04-09 22:39:00 +00:00
egutierrez 40710b924d feat: agregar display name, health check y mejorar notificacion — issue 0044
Pipeline de creacion formalizado con 3 mejoras:

1. Display name automatico (paso 7): create-full.sh ahora configura
   el display name en Matrix via PUT al profile API con el token
   del bot recien creado. Evita que los bots aparezcan como @id:server.

2. Health check post-arranque: nuevo script health-check.sh que busca
   en los logs del launcher mensajes de arranque exitoso ("e2ee ready",
   "runner started", etc.) con timeout configurable (default 30s).

3. Notificacion enriquecida: notify-developer.sh ahora incluye
   descripcion del agente (leida de config.yaml), tools habilitadas,
   formato markdown con estructura clara, y reintentos con backoff
   (hasta 3 intentos) si el envio de DM falla.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:38:41 +00:00
egutierrez ca2c5c5275 merge: quick/pipeline-issue — issue 0044 pipeline de creacion formalizado 2026-04-09 22:27:51 +00:00
egutierrez f225d76eff docs: crear issue 0044 — formalizar pipeline de creacion de agentes
Pipeline de 12 pasos obligatorios:
scaffold → build → register → verify E2EE → [convert robot] →
auto-avatar → display name → personalize → rebuild → start →
health check → self-introduce (el bot habla a devs)

Nuevos pasos: display name automatico, health check post-arranque,
y mejora del mensaje de bienvenida. Garantiza consistencia entre
creacion manual (dev-scripts) y via father-bot.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:27:46 +00:00
egutierrez 944aec89d3 merge: quick/father-bot-e2e-and-security — E2E interactivo + fix admin ACL
- Agregar @egutierrez al grupo admins (fix ACL father-bot)
- Test E2E interactivo: father-bot crea robot via Matrix (validado 3.8min)
2026-04-09 22:23:35 +00:00
egutierrez 452ee63527 test: E2E interactivo — father-bot crea un robot via Matrix
Test de integracion real que:
1. Crea DM con father-bot via Matrix SDK
2. Pide crear un robot simple (e2e-father-test)
3. Espera respuesta de father-bot (timeout 9min, claude-code)
4. Verifica: config.yaml (type: robot), agent.go, compilacion, blank import
5. Cleanup automatico: borra agente, import y env vars

Validado: father-bot creo el robot en ~3min con reporte estructurado.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:23:28 +00:00
egutierrez 390d110b3d fix: agregar @egutierrez a grupo admins en user-groups.yaml
El usuario principal del servidor no estaba en el grupo admins,
causando que father-bot (y cualquier agente con ACL restrictivo)
denegara el acceso. Solo @admin estaba listado.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:23:21 +00:00
egutierrez 7ccc4f5aa4 merge: issue/0037-father-bot — father-bot, agente del sistema que crea otros agentes
Primer agente privilegiado en agents/_specials/. Usa claude-code provider
con acceso completo al repo para crear agentes y robots via Matrix.

Cambios principales:
- father-bot: agent.go, config.yaml (claude-code, E2EE, audit, sanitize),
  system prompt con guia de creacion completa y seguridad anti-injection
- Launcher: descubre configs en _specials/ con validacion de tipo
- Seguridad: grupo privileged (admin-only), reestructura de all → general
  para evitar ACL union con everyone
- dev-scripts: _common.sh escanea _specials/ en config_path_for y list_agents_raw
- Issue 0043 creado para guardrails de seguridad futuros
- Tests: ACL privileged vs general, isSpecialConfig, 11 E2E tests
2026-04-09 22:08:29 +00:00
egutierrez 39ba7bdab0 docs: crear y cerrar issue 0037 — father-bot (agente creador)
Implementado como father-bot en agents/_specials/father-bot/.
Mover issue a completed/ y actualizar README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:07:57 +00:00
egutierrez bee1f47b65 test: E2E para father-bot — validacion estructural completa
11 tests que verifican:
- agent.go puro (sin imports I/O, registra Rules con ActionKindLLM)
- config.yaml: claude-code provider, bypassPermissions, E2EE, sanitize, audit
- system prompt: guia de creacion, decision tree, convenciones, seguridad
- launcher: import de _specials/father-bot, discovery de _specials/
- security: father-bot en grupo privileged, solo admins en permissions.yaml,
  NO en grupo general (evita ACL union)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:07:28 +00:00
egutierrez a6100b5154 test: tests para privileged ACL y isSpecialConfig
- TestResolveACL_PrivilegedVsGeneral: verifica que father-bot solo
  es accesible por admins y que agentes generales son accesibles
  por todos. Reproduce la config real de produccion.
- TestIsSpecialConfig_*: 3 tests para la funcion que detecta
  configs de SpecialConfig ya cargados (orchestrator) y los salta
  en el loop de discovery normal del launcher.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:05:41 +00:00
egutierrez db1a93c3fe feat: ACL admin-only para father-bot via grupo privileged
Reestructura los grupos de seguridad para soportar agentes privilegiados:

- Nuevo grupo 'privileged' con father-bot (solo admins)
- Reemplaza grupo 'all' (wildcard) con 'general' (lista explicita)
  para evitar que el ACL union otorgue permisos de everyone a father-bot
- Documenta en YAML que el ACL es acumulativo y por que privileged
  y general deben ser mutuamente excluyentes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:05:32 +00:00
egutierrez be88c6ce7e feat: father-bot — agente del sistema que crea otros agentes via Matrix
Primer agente privilegiado en agents/_specials/. Usa provider claude-code
con acceso completo al repositorio para ejecutar el pipeline de creacion
de agentes de forma autonoma (scaffold, build, register, verify, restart).

Archivos:
- agent.go: reglas puras (DM/mention → LLM)
- config.yaml: claude-code provider, bypassPermissions, E2EE, audit
- prompts/system.md: guia completa de creacion con decision tree,
  convencion de IDs, validaciones y seccion anti-injection

Config: claude-code con working_dir al repo, allowed_tools restringido,
model sonnet, timeout 10m, add_dirs con templates y referencias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:05:23 +00:00
egutierrez 2f3f30c86b feat: launcher descubre agentes en _specials/ con validacion de tipo
El launcher ahora escanea agents/_specials/*/config.yaml ademas de
agents/*/config.yaml para descubrir agentes del sistema con identidad
Matrix (ej: father-bot). Los SpecialConfig ya cargados (orchestrator)
se detectan y saltan via isSpecialConfig() para evitar errores de
validacion.

Tambien actualiza dev-scripts/_common.sh para que config_path_for()
y list_agents_raw() incluyan _specials/ en la busqueda.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:05:13 +00:00
egutierrez cd22c1c861 docs: crear issue 0043 — guardrails de seguridad para father-bot
Issue futuro para implementar capas adicionales de seguridad:
- Developer allowlist via .env (deny-by-default)
- Path scoping para el subprocess claude-code
- Rate limiting de operaciones de creacion
- Audit trail extendido
- Validacion de configs de agentes creados

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:05:04 +00:00
egutierrez d5339f3f7b merge: issue/0042-auto-avatar-providers — auto-avatar con proveedores gratuitos
Refactoriza profile.go separando UploadMedia/SetAvatarURL, añade sistema
de generacion automatica de avatares (DiceBear, RoboHash, Multiavatar)
con pkg/avatar (puro) + shell/avatar (impuro), nuevo comando
agentctl auto-avatar, e integracion en create-full.sh.
2026-04-09 21:40:55 +00:00
egutierrez fb67ec17a6 docs: crear y cerrar issue 0042 — auto-avatar con proveedores gratuitos
Documenta el diseño completo: proveedores (DiceBear, RoboHash, Multiavatar),
arquitectura pure/impure, integracion CLI y pipeline.
Todas las tareas completadas.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:40:08 +00:00
egutierrez 890a44b0ca feat: integrar auto-avatar en pipeline de creacion de agentes
create-full.sh ahora genera y aplica un avatar automatico tras registrar
el agente en Matrix. Usa agentctl auto-avatar internamente.
Si falla (sin internet, proveedor caido), continua sin bloquear el pipeline.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:39:59 +00:00
egutierrez 4f7c96dcc8 test: tests unitarios para pkg/avatar y shell/avatar
- pkg/avatar: 13 tests cubriendo todos los proveedores, estilos, sets,
  edge cases (size=0, unknown provider, chars especiales, determinismo)
- shell/avatar: 6 tests con httptest server local (download OK, JPEG,
  HTTP 404, context cancelled, extensiones por content-type)

No requiere acceso a internet — shell/avatar usa httptest.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:38:22 +00:00
egutierrez cef681ec87 feat: auto-avatar con proveedores gratuitos (DiceBear, RoboHash, Multiavatar)
Nuevo sistema de generacion automatica de avatares:

- pkg/avatar/ — tipos puros y URL builders para proveedores gratuitos:
  DiceBear (bottts, pixel-art, etc.), RoboHash (robots, monsters),
  Multiavatar (multicultural). Sin I/O.
- shell/avatar/ — fetcher impuro: descarga imagen por HTTP a temp file.
- agentctl auto-avatar <id> — genera, descarga, sube y activa avatar
  con un solo comando. Soporta --provider, --style, --set, --dry-run.

Respeta pure core / impure shell. El seed del avatar es el agent ID,
asi cada bot obtiene una imagen unica y determinista.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:37:21 +00:00
egutierrez cc8c5a6645 feat: añadir subcomandos upload-media y set-avatar-url en agentctl
Expone las funciones separadas de profile.go como CLI:
- agentctl upload-media <id> <path> — sube sin activar avatar
- agentctl set-avatar-url <id> <mxc://...> — activa un mxc ya subido

Complementa la refactorizacion de shell/matrix/profile.go.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:37:13 +00:00
egutierrez 730e415dc1 refactor: separar SetAvatar en UploadMedia + SetAvatarURL
SetAvatar hacia dos cosas: subir la imagen y establecerla como avatar.
Ahora son tres funciones separadas:
- UploadMedia: solo sube, devuelve mxc:// URI
- SetAvatarURL: solo establece avatar con un mxc:// URI existente
- SetAvatar: convenience wrapper que llama a ambas

Permite subir imagenes sin activar el avatar, o reusar imagenes ya subidas.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:37:06 +00:00
egutierrez 3efde2b9bc merge: issue/0000-rename-specials-underscore — convención _ para dirs del sistema
Renombra agents/specials → agents/_specials y documenta la convención
de que directorios con prefijo _ en agents/ son del sistema.
2026-04-09 21:24:21 +00:00
egutierrez c1d118f269 refactor: renombrar agents/specials → agents/_specials
Establece la convención de que directorios con prefijo _ en agents/
son del sistema (templates, specials), no agentes desplegables.

Cambios:
- Renombrar agents/specials/ → agents/_specials/
- Actualizar path en cmd/launcher/main.go (startOrchestrator)
- Documentar convención _ en CLAUDE.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:24:06 +00:00
egutierrez d0ebaa5317 merge: issue/0000-refactor-devagents — mover runtime a devagents/ + issues 0036-0041
agents/ ahora solo contiene carpetas de agentes.
El runtime (Agent, Robot, Runner, registry, handler) vive en devagents/.
Tambien se crean 6 nuevos issues: streaming, creator-bot, widgets,
recordatorios, voz, videollamadas.
2026-04-09 21:19:52 +00:00
egutierrez bd0c8c0dd3 refactor: mover runtime Go de agents/ a devagents/
agents/ ahora solo contiene carpetas de agentes (config, reglas, prompts).
El runtime (Agent, Robot, Runner, registry, handler, commands, llm, memory)
vive en devagents/ como package devagents.

Cambios:
- git mv agents/*.go → devagents/*.go
- package agents → package devagents en todos los archivos movidos
- Actualizar imports en agents/*/agent.go, cmd/launcher/, dev-scripts/
- Actualizar docs: CLAUDE.md, rules/, docs/e2ee.md, issues pendientes

Build y tests pasan sin errores.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:19:25 +00:00
egutierrez 52d5632d89 docs: crear issues 0036-0041 — nuevas features del sistema
Issues planificados:
- 0036: Claude Code streaming de progreso en Matrix
- 0037: Agente que crea otros agentes/bots via Matrix
- 0038: Webapps y dashboards embebidos en Element via widgets
- 0039: Recordatorios dinámicos y crons que invocan agentes
- 0040: Soporte para mensajes de voz (audio → STT)
- 0041: Videollamadas con agentes via LiveKit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:19:09 +00:00
egutierrez 9ec0c16038 merge: issue/0032-e2e-create-agent-skill — agente pirata espacial + E2E tests
Agente test-personality (GPT-4o, personalidad de pirata espacial) creado
con pipeline completo. 11 E2E tests (5 funcionales + 6 pipeline) pasando.
2026-04-09 20:53:57 +00:00
egutierrez 46de98cb73 docs: cerrar issue 0032 y actualizar CLAUDE.md
- Añadir test-personality a tabla de agentes
- Añadir nuevos specs E2E a la lista de tests
- Mover issue a completed, actualizar README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:53:50 +00:00
egutierrez aea0f74d4a test: E2E tests para agente test-personality y pipeline de creacion
Tests funcionales (test-personality.spec.ts):
- Saludo con personalidad pirata espacial (keywords flexibles)
- Personalidad consistente en respuestas serias (fotosintesis + pirata)
- !help y !ping funcionan (assertions estrictas)
- Sin errores E2EE

Tests de pipeline (create-agent-pipeline.spec.ts):
- Valida agent.go con Rules() y ActionKindLLM
- Config sin type: robot (es agent por defecto)
- System prompt con personalidad + seccion de seguridad
- LLM configurado (openai/gpt-4o)
- Encryption habilitada, import en launcher

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:52:34 +00:00