Commit Graph

387 Commits

Author SHA1 Message Date
egutierrez 2317ba0599 docs: add app.md with metadata for fn_registry indexing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 22:05:14 +02:00
egutierrez 3ae7e1c2c2 docs: simplificar nota CI/CD
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 21:01:33 +02:00
egutierrez 9a3399a537 docs: detallar pipeline CI/CD en README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 21:00:07 +02:00
egutierrez 7ad03659c2 docs: formatear nota CI/CD en README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:59:26 +02:00
egutierrez e831be9d5b docs: añadir nota de CI/CD al README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:58:12 +02:00
egutierrez 7b519e2abb merge: quick/reminder-bot-and-updates — Nuevo agente reminder-bot + fixes
Incluye:
- fix: resolveDataBase usa ConfigDir como fallback para data path
- chore: actualizar father-bot con pipeline automatizado y base_path
- feat: nuevo agente reminder-bot para gestionar recordatorios
2026-04-12 18:10:27 +00:00
egutierrez daab1314c6 feat: nuevo agente reminder-bot para gestionar recordatorios
Agente LLM (GPT-4o) especializado en crear, listar, completar y buscar
recordatorios con fechas y horarios. Almacena los datos en JSON usando
file_ops (read_file/write_file) con allowlist a /tmp/reminder-bot-data/.

Incluye tool_use habilitado con file_ops y current_time. System prompt
con seccion de seguridad anti-injection. Registrado en el launcher.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:10:05 +00:00
egutierrez 32718990d6 chore: actualizar father-bot con pipeline automatizado y base_path
Actualiza el system prompt de father-bot para documentar la ruta rapida
de create-full.sh con flags --description y --system-prompt (pasos 1-8
automatizados). Simplifica las secciones de personalizacion manual que
ya no son el flujo principal.

Configura storage.base_path para usar el directorio local del agente
en lugar del fallback por defecto.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:09:59 +00:00
egutierrez c6081a38a4 fix: resolveDataBase usa ConfigDir como fallback para data path
Cuando no se configura storage.base_path ni AGENTS_DATA_DIR, el fallback
anterior hardcodeaba "agents/<id>/data" asumiendo que el binario se ejecuta
desde la raiz del repo. Ahora se usa cfg.ConfigDir (directorio del config.yaml)
como base, lo que funciona correctamente para agentes en _specials/ y cualquier
ubicacion arbitraria del config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:09:53 +00:00
egutierrez 8791c3d73f merge: issue/0049-automate-agent-personalization — Automatizar personalización al crear agentes
Pipeline de creación reducido: el Paso 8 (editar agent.go, config.yaml
y system.md a mano) ahora es automático si se pasan flags a create-full.sh.

Scripts implementados:
- detect-provider.sh: auto-detecta openai/anthropic desde .env
- personalize.sh: genera los 3 archivos del agente desde flags CLI
  (description, provider, model, tone, prefix, system-prompt, tool-use)
- create-full.sh extendido con los mismos flags (retrocompatible)

Impacto para Father Bot: de ~8-10 tool calls de edición manual a un
único Bash call con todos los parámetros.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:33:35 +00:00
egutierrez 4b94bdf4e2 docs: cerrar issue 0049 — automatizar personalización al crear agentes
Pipeline completo implementado: detect-provider.sh + personalize.sh
integrado en create-full.sh. Paso 8 ahora automático cuando se pasan
los flags de personalización.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:33:22 +00:00
egutierrez bb89fbec03 chore: re-personalizar wikipedia-bot y exchange-bot con personalize.sh
Aplicar los contenidos reales de agent.go, config.yaml y prompts/system.md
a los dos agentes creados previamente, usando el nuevo personalize.sh.

- wikipedia-bot: tone=professional, prefix=📖, descripcion y system prompt
- exchange-bot: tone=professional, prefix=💱, tool_use=true, system prompt

Ahora ambos tienen la sección de seguridad anti-injection en su system.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:33:18 +00:00
egutierrez e8c15d9e92 docs: actualizar reglas y skills con el nuevo flujo automático (Paso 8)
- .claude/rules/create_agent.md: sección "Ruta rápida" actualizada con
  los flags de personalización y mención de personalize.sh standalone y
  detect-provider.sh para auto-detección de provider.

- .claude/skills/create-agent/SKILL.md: Paso 2 reescrito para mostrar
  el comando completo con flags opcionales. Añadidas notas sobre
  personalize.sh y auto-detección de provider.

- .claude/skills/create-bot/SKILL.md: Paso 3 actualizado para mencionar
  personalize.sh (robots: solo --description y --prefix aplican).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:33:13 +00:00
egutierrez 8d2a767518 feat: scripts detect-provider.sh, personalize.sh e integración en create-full.sh
Scripts atómicos para automatizar el Paso 8 (personalización) del pipeline
de creación de agentes:

- dev-scripts/agent/detect-provider.sh: detecta el primer LLM provider
  disponible desde .env (OPENAI_API_KEY → openai, ANTHROPIC_API_KEY →
  anthropic, fallback openai con warn).

- dev-scripts/agent/personalize.sh <agent-id> [flags]: genera/actualiza
  los 3 archivos del agente en un solo paso:
  · config.yaml: description, tone, prefix, provider, model, tool_use
  · agent.go: package name correcto (sin guiones, sin _bot), Register ID
  · prompts/system.md: prompt inline/file + sección de seguridad anti-injection

  Flags: --description, --provider, --model, --tone, --prefix,
         --system-prompt, --system-prompt-file, --tool-use, --language.
  Usa PyYAML (python3) para editar el YAML preservando comentarios.

- dev-scripts/agent/create-full.sh: extendido con los mismos flags
  opcionales. Si se pasan, ejecuta personalize.sh como Paso 8 automático
  y recompila. Sin flags → comportamiento actual (retrocompatible).

Impacto: Father Bot puede completar el pipeline completo (pasos 1-8) con
un solo Bash tool call, eliminando las ~6-10 ediciones manuales de archivos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:33:07 +00:00
egutierrez 7c65595f8d test: e2e test para father bot y agentes útiles
Test que verifica la creación de wikipedia-bot y exchange-bot por
father bot, incluyendo health checks y respuestas a preguntas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:21 +00:00
egutierrez 12d7d0caed docs: crear issue 0049 — automatizar personalización al crear agentes
Pipeline para eliminar el Paso 8 manual (editar agent.go, config.yaml
y system.md). Scripts: detect-provider.sh, personalize.sh integrado
en create-full.sh con flags opcionales.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:18 +00:00
egutierrez b4d9a2b3fd feat: añadir agentes wikipedia-bot y exchange-bot
wikipedia-bot: agente GPT-4o con tool wikipedia_search para consultar
información de Wikipedia. Responde en español, tono profesional.

exchange-bot: agente GPT-4o con 4 tools de exchange rate para consultar
tasas de cambio, convertir entre monedas, listar monedas disponibles
y ver historial. Requiere EXCHANGERATE_API_KEY en .env.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:14 +00:00
egutierrez f2718aa17c feat: añadir tools wikipedia_search y exchange_rate
- tools/wikipedia/wikipedia.go: tool wikipedia_search que consulta la
  API pública de Wikipedia (sin auth). Devuelve resumen del artículo.
- tools/exchange/exchange.go: 4 tools de tipo de cambio usando
  exchangerate-api.com: exchange_rate_get, exchange_rate_convert,
  exchange_rate_list, exchange_rate_historical.
- internal/config/schema.go: añadir ExchangeRateToolCfg con Enabled,
  APIKey, APIKeyEnv y Timeout.
- devagents/registry_build.go: registrar ambas tool families.
  wikipedia_search siempre disponible; exchange rate tools requieren
  APIKey configurado (deny-by-default con WARN si falta).
- devagents/registry_build_test.go: actualizar test de registry build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:10 +00:00
egutierrez 04b8d2b461 fix: corregir isSpecialConfig cuando loadedSpecials está vacío
Eliminar el early-return `if len(loadedSpecials) == 0 { return false }`
que causaba que el config del orchestrator (disabled/fallido) se intentara
cargar como agente normal, fallando con "agent.id is required".

Ahora la función parsea el YAML con LoadSpecial y devuelve true si
cfg.Special.ID != "" — independientemente de si el agente arrancó.
Esto silencia el error recurrente en cada inicio del launcher.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:03 +00:00
egutierrez 53a22538d8 merge: issue/0048-delete-agent-pipeline — Pipeline de eliminacion de agentes y robots
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:45:04 +00:00
egutierrez 98da4f7521 docs: regla delete_agent.md y cierre de issue 0048
Nueva regla .claude/rules/delete_agent.md con instrucciones completas
para eliminar agentes (manual y automatizado). Actualiza index.md,
CLAUDE.md y cierra issue 0048.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:44:42 +00:00
egutierrez 50013b0ecb feat: pipeline completo de eliminacion de agentes y robots
Nuevos scripts que revierten todo lo que create-full.sh genera:
- deactivate-matrix.sh: desactiva usuario via Synapse admin API
- remove-launcher-import.sh: elimina blank import del launcher
- remove-env-vars.sh: limpia las 4 env vars del .env
- delete-full.sh: orquestador de 7 pasos (validate, stop, deactivate,
  remove import, remove env, delete files, rebuild)

Flags: --force (sin confirmacion), --keep-matrix (preserva usuario).
Actualiza remove.sh con referencia a delete-full.sh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:44:38 +00:00
egutierrez 6107aefb52 merge: quick/father-bot-full-access — Father Bot sin restricciones
Father Bot pasa de creador restringido a administrador completo del
sistema de agentes: crear, modificar, desactivar, configurar tools,
gestionar permisos, diagnosticar. Sin limites artificiales.
2026-04-10 23:34:16 +00:00
egutierrez ed6c5c205b feat: convertir Father Bot en administrador completo sin restricciones
Father Bot ya no tiene restricciones artificiales. Ahora puede:
- Crear, modificar y desactivar agentes
- Configurar tools con allowlists reales (no solo vacias)
- Gestionar permisos en security/
- Diagnosticar problemas leyendo logs
- Sin limite de agentes por sesion

Se eliminaron: restricciones de paths, rate limiting de creacion,
deny-by-default obligatorio en tools, prohibicion de modificar
agentes existentes, prohibicion de eliminar agentes.

Se mantienen: ACL admin-only, proteccion anti-injection del propio
Father Bot, prohibicion de mostrar .env, seccion de seguridad en
prompts de agentes creados.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:34:11 +00:00
egutierrez ca368e2e32 merge: issue/0047-fix-system-prompt-path — system prompt para _specials
Corrige bug donde el system prompt de agentes en agents/_specials/
(como Father Bot) no se cargaba porque el runtime resolvia la ruta
como agents/<id>/... en vez del directorio real del config.

Agrega ConfigDir al schema de config, poblado por el loader.
2026-04-10 23:21:47 +00:00
egutierrez 5047a321d2 docs: cerrar issue 0047 — system prompt path fix
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:21:41 +00:00
egutierrez 06501e2bcc test: verificar que Load() puebla ConfigDir correctamente
Test con directorio anidado (agents/_specials/father-bot/) que
confirma que ConfigDir se resuelve al directorio padre del config
y que system_prompt_file se puede resolver relativo a el.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:21:28 +00:00
egutierrez 1b499c9b67 fix: resolver system_prompt_file relativo al directorio del config
Antes, el runtime construia la ruta del system prompt como
agents/<agent-id>/<file>, lo cual fallaba para agentes en
agents/_specials/ (como Father Bot). Ahora:

1. config.Load() guarda el directorio del config en ConfigDir
2. llm.go usa ConfigDir para resolver rutas relativas

Esto corrige que Father Bot operara sin su system prompt completo
(369 lineas de instrucciones, pipeline, seguridad) usando solo la
description de una linea como fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:21:23 +00:00
egutierrez bbfbcf4f16 docs: crear issue 0047 — system prompt no se carga para _specials
El runtime resuelve system_prompt_file como agents/<id>/prompts/...
pero los agentes especiales viven en agents/_specials/<id>/. Esto
causa que Father Bot opere sin su system prompt completo de 369 lineas.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:21:16 +00:00
egutierrez 7c36c7c9a6 merge: issue/0046-father-bot-progress — progreso en tiempo real para Father Bot
Habilita streaming en Father Bot y mejora el ProgressReporter para
mostrar mensajes legibles durante la creacion de agentes (paso N,
nombre del script, emoji contextual) en vez de comandos raw.
2026-04-10 23:18:02 +00:00
egutierrez cf26061399 docs: cerrar issue 0046 — progreso en tiempo real para Father Bot
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:17:31 +00:00
egutierrez 1d16362ca6 test: tests para deteccion de pasos del pipeline en ProgressReporter
Tests unitarios para formatToolEvent con todos los pipeline hints:
create-full.sh, health-check.sh, notify-developer.sh, restart.sh,
start.sh, go build, go test, Edit, Read, Glob, Grep, y fallback
generico. Incluye tests para el contador de pasos y truncateInput.

Actualiza test de integracion existente para el nuevo formato de
mensajes (step counter + nombres legibles vs raw tool names).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:16:52 +00:00
egutierrez a6618eda04 docs: actualizar system prompt de Father Bot con nota de progreso
Informa a Father Bot que el sistema muestra automaticamente progreso
al usuario en tiempo real, y que no necesita enviar mensajes
intermedios manuales. Esto evita duplicacion de feedback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:14:57 +00:00
egutierrez deaefb5cd3 feat: mejorar ProgressReporter con deteccion de pasos del pipeline
El ProgressReporter ahora muestra mensajes legibles cuando detecta
comandos conocidos del pipeline de creacion de agentes:

- create-full.sh → "📦 Creando agente: scaffold, build, register..."
- health-check.sh → "🏥 Verificando health check..."
- notify-developer.sh → "📨 Enviando bienvenida a developers..."
- restart.sh / start.sh → "🔄 Reiniciando launcher..."
- go build → "🔨 Compilando..."
- go test → "🧪 Ejecutando tests..."
- Edit/Write → "✏️ Editando: <archivo>"
- Read → "📖 Leyendo: <archivo>"
- Glob/Grep → "🔍 Buscando: <patron>"

Incluye contador de pasos visible ("Paso N — <descripcion>") para que
el usuario pueda seguir el progreso. Si no reconoce el comando, usa
el formato generico anterior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:14:34 +00:00
egutierrez fe742bea59 docs: crear issue 0046 — progreso en tiempo real para Father Bot
Issue para que Father Bot muestre feedback visual durante la creacion
de agentes. Incluye: habilitar streaming en config, mejorar formateo
del ProgressReporter con nombres de pasos legibles, y tests.

Tambien habilita streaming + show_tool_progress en el config de
Father Bot (quick win que activa el ProgressReporter existente).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:13:23 +00:00
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