Commit Graph

273 Commits

Author SHA1 Message Date
egutierrez 1d6376063d merge: quick/claude-skills — añadir skills de Claude Code para create-agent y parallel-fix-issues
Skills declarativas para automatizar creacion de agentes y resolucion
paralela de issues con worktrees.
2026-04-09 00:23:07 +00:00
egutierrez f02f297539 chore: eliminar issues duplicados del directorio pendiente
Los issues 0027, 0028 y 0031 fueron copiados a completed/ pero no
eliminados de dev/issues/ durante el cierre paralelo. Se eliminan
los originales ya que las copias en completed/ son la version final.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:22:46 +00:00
egutierrez a5d038913f docs: cerrar issue 0030 — separacion Robot vs Agent
Mover issue a completed/ y actualizar estado en README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:52 +00:00
egutierrez 200f07faa6 docs: actualizar documentacion con separacion Robot vs Agent
- CLAUDE.md: actualizar estructura (types.go, robot.go), seccion
  "Agentes y Robots" con tabla comparativa y mencion de ambos templates
- create_agent.md: tabla comparativa Robot vs Agent al inicio,
  input "type" en la tabla de inputs para decidir si crear agent o robot

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:42 +00:00
egutierrez 081ac7925f test: tests unitarios para Robot runtime
Incluye 12 tests que cubren:
- Comandos built-in del Robot (help, ping, status, info, version)
- Verificacion de que !help muestra solo comandos de robot (no tools/clear/prompts)
- Registro y ejecucion de comandos custom via RegisterCommand
- Aliases de comandos
- Robot ignora mensajes sin comando (no hay LLM)
- Ciclo de vida: Stop/Done
- Stop seguro con cancel nil
- Verificacion compile-time de que Agent y Robot satisfacen Runner interface
- Conteo exacto de comandos built-in (5, no mas)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:42 +00:00
egutierrez 7913918025 feat: implementar tipo Robot como runtime ligero para bots command-only
Introduce la separacion Robot vs Agent en el sistema:

- agents/types.go: interfaz Runner comun (Run, Stop, Done, RegisterCommand)
  que tanto Agent como Robot satisfacen
- agents/robot.go: struct Robot — runtime minimo que solo conecta a Matrix
  y despacha comandos. Sin LLM, reglas, memoria, knowledge, skills ni tools.
  Mensajes normales se ignoran silenciosamente
- internal/config/schema.go: campo Type en AgentMeta ("agent"|"robot")
- cmd/launcher: usa Runner interface para manejar ambos tipos uniformemente.
  Si cfg.Agent.Type == "robot" crea NewRobot en vez de New (tanto en
  arranque como en hot-reload)
- agents/_template_robot/config.yaml: plantilla minima (~55 lineas) para
  robots command-only

El Robot soporta built-in commands reducidos (help, ping, status, info,
version) y comandos custom via RegisterCommand. No incluye tools, tool,
clear ni prompts ya que no tiene LLM ni memoria.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:42 +00:00
egutierrez aba07fef60 docs: cerrar issue 0026 — split runtime.go
Mueve el issue a dev/issues/completed/ y actualiza el README.
Issue completado: runtime.go dividido en 5 archivos especializados
con tests para buildToolRegistry.
2026-04-09 00:21:42 +00:00
egutierrez 318a938d55 test: tests para buildToolRegistry con configs parciales
Agrega 8 tests para buildToolRegistry() que verifican:
- Config minima: solo tools always-on (current_time, get_weather, matrix_send)
- HTTP habilitado/deshabilitado: http_get y http_post
- FileOps read-only: registra read_file y list_directory pero NO write/append/delete
- FileOps read-write: registra todas las 5 file tools
- IMDb habilitado: imdb_search
- SSH habilitado: ssh_command
- Conteo total: 12 tools con todo habilitado (sin deps externas)

Estos tests validan la logica condicional de registro que ahora vive
en registry_build.go, separada del runtime principal.
2026-04-09 00:21:42 +00:00
egutierrez 42251ecada refactor: separar runtime.go en archivos por responsabilidad
Divide agents/runtime.go (1188 lineas) en 5 archivos especializados:

- runtime.go (350 lineas): struct Agent, New(), Run(), Stop(), lifecycle
- handler.go: handleEvent(), executeActions(), command routing, bus, sanitizacion
- llm.go: runLLM(), tool-use loop, system prompt, initLLM(), prompt-commands
- memory.go: ensureWindowLoaded(), appendToWindow(), persistMessage(), ClearWindow()
- registry_build.go: buildToolRegistry(), initToolDeps(), initRateLimiter()

Zero cambios en API publica. Todos los metodos siguen siendo del struct Agent,
solo viven en archivos separados por responsabilidad.

Funciones helper extraidas de New() para reducir su tamaño:
- initCrypto(): inicializacion E2EE
- initLLM(): cliente LLM con fallback
- initMemoryStore(): store SQLite + window size
- initToolDeps(): knowledge, MCP, skills
- initRateLimiter(): rate limiting de tools

Reduccion: 1188 → 350 lineas en runtime.go (70% menos).
2026-04-09 00:21:42 +00:00
egutierrez 47c53f900a docs: cerrar issue 0031 — expand file tools
Mover issue a completed/ y actualizar indice en README.md.
Todas las tareas del issue implementadas y testeadas (44 tests).
2026-04-09 00:21:42 +00:00
egutierrez 7c7f6d7826 test: agregar tests completos para write_file, list_directory, append_file, delete_file
44 tests cubriendo todas las nuevas tools de archivos y la tool existente.

Tests por tool:
- write_file (11): crear archivo, ReadOnly, path fuera de allowed, contenido >1MB,
  crear dirs padre, sobreescribir, path traversal, symlink escape, deny-by-default
- list_directory (9): listado plano y recursivo, limite 500 entries, symlinks fuera
  de allowed, path traversal, deny-by-default, no-directorio, dir vacio
- append_file (11): append a existente, crear si no existe, ReadOnly, path fuera,
  limite 10MB total, path traversal, symlink escape, crear dirs padre
- delete_file (9): borrar archivo, rechazar directorios, ReadOnly, path fuera,
  path traversal, symlink escape, archivo inexistente, deny-by-default

Tambien corrige resolveReal() para resolver paths con multiples niveles de
directorios inexistentes (necesario para MkdirAll en write/append).
2026-04-09 00:21:30 +00:00
egutierrez 4ab879e461 feat: agregar write_file, list_directory, append_file, delete_file a tools/file/
Expande el paquete tools/file/ con 4 operaciones nuevas para que los agentes
puedan interactuar con carpetas de trabajo (workspaces, outputs).

Cambios:
- Extraer validatePath() y resolveReal() a validate.go para reutilizarlos
- Agregar validateWritePath() que verifica ReadOnly == false
- write_file: crea/sobreescribe archivos, crea dirs padre, limite 1MB
- list_directory: lista archivos con metadata, modo recursivo, limite 500 entries
- append_file: agrega contenido al final, crea si no existe, limite 10MB total
- delete_file: borra solo archivos (nunca directorios), previene rm -rf accidental
- Registrar las 4 tools nuevas en runtime.go condicionalmente:
  - list_directory: siempre (no requiere escritura)
  - write/append/delete: solo si ReadOnly == false

Seguridad: todas las tools reutilizan validatePath() con deny-by-default,
resolucion de symlinks y proteccion contra path traversal.
2026-04-09 00:21:30 +00:00
egutierrez dacf241806 docs: cerrar issue 0028 — desacoplar launcher del registro estatico
Mover issue a completed/ y actualizar README con estado completado.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:30 +00:00
egutierrez 0c19db34af test: tests para agents/registry.go
Cobertura completa del registro global de reglas:
- Register + GetRules: registro exitoso y recuperacion
- GetRules con ID inexistente: retorna nil
- Register duplicado: panic con mensaje descriptivo
- RegisteredIDs: retorna todos los IDs registrados
- resetRegistry: limpia el registro (helper para tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:15 +00:00
egutierrez 6e1b820ecf chore: actualizar script y docs para auto-registro de agentes
- new-agent.sh: reemplaza edicion del rulesRegistry map con insercion
  de un blank import simple. Ahora tambien sustituye AGENT_ID_PLACEHOLDER
  en agent.go con el ID real del agente.
- create_agent.md: actualiza template de agent.go con patron init() +
  agents.Register(), secciones de registro en launcher y checklist.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:15 +00:00
egutierrez 5d956e9325 feat: desacoplar launcher del registro estatico de agentes
Introduce un registro global de reglas en agents/registry.go con
Register() y GetRules(). Cada paquete de agente se auto-registra
via init(), eliminando la necesidad de editar manualmente el map
rulesRegistry en cmd/launcher/main.go.

Cambios:
- agents/registry.go: nuevo registro global con sync.RWMutex
- agents/*/agent.go: cada agente llama agents.Register() en init()
- agents/_template/agent.go: placeholder AGENT_ID_PLACEHOLDER para scaffold
- cmd/launcher/main.go: elimina rulesRegistry, usa blank imports +
  agents.GetRules() para obtener reglas por agent ID

Patron: init() + blank import (estandar Go: database/sql, image codecs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:15 +00:00
egutierrez 37384af2a0 docs: cerrar issue 0027
Mover issue 0027-prune-config-schema a completed/ y actualizar indice.
Todas las tareas implementadas: schema podado, template simplificado,
configs de agentes limpiados, tests de parsing agregados.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:21:15 +00:00
egutierrez ae69217c8d test: agregar tests de parsing del config schema
Tres tests para internal/config:
- TestAgentConfigParseMinimal: config minimo con campos requeridos
- TestAgentConfigIgnoresRemovedSections: YAMLs antiguos con agents/observability/
  resilience siguen parseando sin error (yaml.v3 ignora campos desconocidos)
- TestAgentConfigParseFull: config completo con todas las secciones activas
  incluyendo personality.communication, tools, security, storage, memory y skills

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:20:53 +00:00
egutierrez 0a7e3ebf6a refactor: eliminar structs muertos del config schema
Elimina 14 structs nunca referenciados en el codebase:
- ObservabilityCfg y sub-structs (LoggingCfg, MetricsCfg, HealthCfg, TracingCfg)
- ResilienceCfg y sub-structs (CircuitBreakerCfg, RetryCfg, ShutdownCfg, QueueCfg)
- AgentsCfg y sub-structs (PeerCfg, DelegationCfg, ProtocolCfg)

Se eliminan los campos Agents, Observability y Resilience del AgentConfig root.
CommunicationCfg se mantiene porque esta activamente usada por pkg/personality/
y agents/commands.go.

schema.go pasa de 561 lineas / 61 structs a 460 lineas / 47 structs.
El template _template/config.yaml se reduce de 414 a ~220 lineas.
Los configs de assistant-bot y asistente-2 se limpian de secciones muertas.

yaml.v3 ignora campos extra, asi que YAMLs antiguos siguen parseando sin error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:20:53 +00:00
egutierrez 8f6958f856 chore: agregar issues 0026-0032 y worktrees a gitignore
Registra los nuevos issues pendientes en el indice y excluye
la carpeta worktrees/ del control de versiones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:20:53 +00:00
egutierrez 4d6f97d01e feat: añadir skills de Claude Code para create-agent y parallel-fix-issues
Dos skills declarativas para automatizar flujos complejos:

- create-agent: pipeline completo de scaffold + build + register + verify
  para nuevos agentes/robots Matrix, con templates para agent.go,
  config.yaml y system prompt.

- parallel-fix-issues: implementación concurrente de múltiples issues
  usando git worktrees y agentes paralelos, con análisis de dependencias,
  verificación por wave e integración ordenada a master.

Ambas skills incluyen templates y scripts auxiliares.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:23:16 +00:00
egutierrez 38f2bec14e merge: issue/0030-robot-vs-agent — tipo Robot ligero para bots de comandos 2026-04-08 23:20:25 +00:00
egutierrez 0bbdecce55 merge: issue/0026-split-runtime — refactorizar runtime.go en archivos especializados 2026-04-08 23:20:16 +00:00
egutierrez 3958e2cb94 docs: cerrar issue 0026 — split runtime.go
Mueve el issue a dev/issues/completed/ y actualiza el README.
Issue completado: runtime.go dividido en 5 archivos especializados
con tests para buildToolRegistry.
2026-04-08 23:19:35 +00:00
egutierrez dd2fa05f87 test: tests para buildToolRegistry con configs parciales
Agrega 8 tests para buildToolRegistry() que verifican:
- Config minima: solo tools always-on (current_time, get_weather, matrix_send)
- HTTP habilitado/deshabilitado: http_get y http_post
- FileOps read-only: registra read_file y list_directory pero NO write/append/delete
- FileOps read-write: registra todas las 5 file tools
- IMDb habilitado: imdb_search
- SSH habilitado: ssh_command
- Conteo total: 12 tools con todo habilitado (sin deps externas)

Estos tests validan la logica condicional de registro que ahora vive
en registry_build.go, separada del runtime principal.
2026-04-08 23:19:07 +00:00
egutierrez ee8e74be1b refactor: separar runtime.go en archivos por responsabilidad
Divide agents/runtime.go (1188 lineas) en 5 archivos especializados:

- runtime.go (350 lineas): struct Agent, New(), Run(), Stop(), lifecycle
- handler.go: handleEvent(), executeActions(), command routing, bus, sanitizacion
- llm.go: runLLM(), tool-use loop, system prompt, initLLM(), prompt-commands
- memory.go: ensureWindowLoaded(), appendToWindow(), persistMessage(), ClearWindow()
- registry_build.go: buildToolRegistry(), initToolDeps(), initRateLimiter()

Zero cambios en API publica. Todos los metodos siguen siendo del struct Agent,
solo viven en archivos separados por responsabilidad.

Funciones helper extraidas de New() para reducir su tamaño:
- initCrypto(): inicializacion E2EE
- initLLM(): cliente LLM con fallback
- initMemoryStore(): store SQLite + window size
- initToolDeps(): knowledge, MCP, skills
- initRateLimiter(): rate limiting de tools

Reduccion: 1188 → 350 lineas en runtime.go (70% menos).
2026-04-08 23:17:12 +00:00
egutierrez c5543c3186 docs: cerrar issue 0030 — separacion Robot vs Agent
Mover issue a completed/ y actualizar estado en README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:15:48 +00:00
egutierrez 3e5c0bae10 docs: actualizar documentacion con separacion Robot vs Agent
- CLAUDE.md: actualizar estructura (types.go, robot.go), seccion
  "Agentes y Robots" con tabla comparativa y mencion de ambos templates
- create_agent.md: tabla comparativa Robot vs Agent al inicio,
  input "type" en la tabla de inputs para decidir si crear agent o robot

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:15:34 +00:00
egutierrez 5917b1bf7a test: tests unitarios para Robot runtime
Incluye 12 tests que cubren:
- Comandos built-in del Robot (help, ping, status, info, version)
- Verificacion de que !help muestra solo comandos de robot (no tools/clear/prompts)
- Registro y ejecucion de comandos custom via RegisterCommand
- Aliases de comandos
- Robot ignora mensajes sin comando (no hay LLM)
- Ciclo de vida: Stop/Done
- Stop seguro con cancel nil
- Verificacion compile-time de que Agent y Robot satisfacen Runner interface
- Conteo exacto de comandos built-in (5, no mas)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:14:14 +00:00
egutierrez f11f76f39b feat: implementar tipo Robot como runtime ligero para bots command-only
Introduce la separacion Robot vs Agent en el sistema:

- agents/types.go: interfaz Runner comun (Run, Stop, Done, RegisterCommand)
  que tanto Agent como Robot satisfacen
- agents/robot.go: struct Robot — runtime minimo que solo conecta a Matrix
  y despacha comandos. Sin LLM, reglas, memoria, knowledge, skills ni tools.
  Mensajes normales se ignoran silenciosamente
- internal/config/schema.go: campo Type en AgentMeta ("agent"|"robot")
- cmd/launcher: usa Runner interface para manejar ambos tipos uniformemente.
  Si cfg.Agent.Type == "robot" crea NewRobot en vez de New (tanto en
  arranque como en hot-reload)
- agents/_template_robot/config.yaml: plantilla minima (~55 lineas) para
  robots command-only

El Robot soporta built-in commands reducidos (help, ping, status, info,
version) y comandos custom via RegisterCommand. No incluye tools, tool,
clear ni prompts ya que no tiene LLM ni memoria.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:12:33 +00:00
egutierrez ac5cde3f3e merge: issue/0031-expand-file-tools — write, list, append, delete para tools/file/
# Conflicts:
#	dev/issues/README.md
2026-04-08 23:06:52 +00:00
egutierrez b519bb4ef8 merge: issue/0028-decouple-launcher — auto-discovery de agentes via init()
# Conflicts:
#	dev/issues/README.md
2026-04-08 23:06:31 +00:00
egutierrez 3235870cec merge: issue/0027-prune-config-schema — implementación paralela
# Conflicts:
#	dev/issues/README.md
2026-04-08 23:06:09 +00:00
egutierrez acbc8ef629 chore: agregar issues 0026-0032 y worktrees a gitignore
Registra los nuevos issues pendientes en el indice y excluye
la carpeta worktrees/ del control de versiones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:05:47 +00:00
egutierrez d31162dde8 docs: cerrar issue 0031 — expand file tools
Mover issue a completed/ y actualizar indice en README.md.
Todas las tareas del issue implementadas y testeadas (44 tests).
2026-04-08 23:04:45 +00:00
egutierrez 3adaeb0f8c test: agregar tests completos para write_file, list_directory, append_file, delete_file
44 tests cubriendo todas las nuevas tools de archivos y la tool existente.

Tests por tool:
- write_file (11): crear archivo, ReadOnly, path fuera de allowed, contenido >1MB,
  crear dirs padre, sobreescribir, path traversal, symlink escape, deny-by-default
- list_directory (9): listado plano y recursivo, limite 500 entries, symlinks fuera
  de allowed, path traversal, deny-by-default, no-directorio, dir vacio
- append_file (11): append a existente, crear si no existe, ReadOnly, path fuera,
  limite 10MB total, path traversal, symlink escape, crear dirs padre
- delete_file (9): borrar archivo, rechazar directorios, ReadOnly, path fuera,
  path traversal, symlink escape, archivo inexistente, deny-by-default

Tambien corrige resolveReal() para resolver paths con multiples niveles de
directorios inexistentes (necesario para MkdirAll en write/append).
2026-04-08 23:04:13 +00:00
egutierrez 47e169a5b9 docs: cerrar issue 0028 — desacoplar launcher del registro estatico
Mover issue a completed/ y actualizar README con estado completado.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:03:15 +00:00
egutierrez 57affc2e44 test: tests para agents/registry.go
Cobertura completa del registro global de reglas:
- Register + GetRules: registro exitoso y recuperacion
- GetRules con ID inexistente: retorna nil
- Register duplicado: panic con mensaje descriptivo
- RegisteredIDs: retorna todos los IDs registrados
- resetRegistry: limpia el registro (helper para tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:02:48 +00:00
egutierrez f9f192041b docs: cerrar issue 0027
Mover issue 0027-prune-config-schema a completed/ y actualizar indice.
Todas las tareas implementadas: schema podado, template simplificado,
configs de agentes limpiados, tests de parsing agregados.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:02:33 +00:00
egutierrez ecfc1ec8b3 test: agregar tests de parsing del config schema
Tres tests para internal/config:
- TestAgentConfigParseMinimal: config minimo con campos requeridos
- TestAgentConfigIgnoresRemovedSections: YAMLs antiguos con agents/observability/
  resilience siguen parseando sin error (yaml.v3 ignora campos desconocidos)
- TestAgentConfigParseFull: config completo con todas las secciones activas
  incluyendo personality.communication, tools, security, storage, memory y skills

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:01:58 +00:00
egutierrez 2bf3d289ac refactor: eliminar structs muertos del config schema
Elimina 14 structs nunca referenciados en el codebase:
- ObservabilityCfg y sub-structs (LoggingCfg, MetricsCfg, HealthCfg, TracingCfg)
- ResilienceCfg y sub-structs (CircuitBreakerCfg, RetryCfg, ShutdownCfg, QueueCfg)
- AgentsCfg y sub-structs (PeerCfg, DelegationCfg, ProtocolCfg)

Se eliminan los campos Agents, Observability y Resilience del AgentConfig root.
CommunicationCfg se mantiene porque esta activamente usada por pkg/personality/
y agents/commands.go.

schema.go pasa de 561 lineas / 61 structs a 460 lineas / 47 structs.
El template _template/config.yaml se reduce de 414 a ~220 lineas.
Los configs de assistant-bot y asistente-2 se limpian de secciones muertas.

yaml.v3 ignora campos extra, asi que YAMLs antiguos siguen parseando sin error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:01:53 +00:00
egutierrez 03742409de chore: actualizar script y docs para auto-registro de agentes
- new-agent.sh: reemplaza edicion del rulesRegistry map con insercion
  de un blank import simple. Ahora tambien sustituye AGENT_ID_PLACEHOLDER
  en agent.go con el ID real del agente.
- create_agent.md: actualiza template de agent.go con patron init() +
  agents.Register(), secciones de registro en launcher y checklist.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:01:51 +00:00
egutierrez 931e6928f5 feat: agregar write_file, list_directory, append_file, delete_file a tools/file/
Expande el paquete tools/file/ con 4 operaciones nuevas para que los agentes
puedan interactuar con carpetas de trabajo (workspaces, outputs).

Cambios:
- Extraer validatePath() y resolveReal() a validate.go para reutilizarlos
- Agregar validateWritePath() que verifica ReadOnly == false
- write_file: crea/sobreescribe archivos, crea dirs padre, limite 1MB
- list_directory: lista archivos con metadata, modo recursivo, limite 500 entries
- append_file: agrega contenido al final, crea si no existe, limite 10MB total
- delete_file: borra solo archivos (nunca directorios), previene rm -rf accidental
- Registrar las 4 tools nuevas en runtime.go condicionalmente:
  - list_directory: siempre (no requiere escritura)
  - write/append/delete: solo si ReadOnly == false

Seguridad: todas las tools reutilizan validatePath() con deny-by-default,
resolucion de symlinks y proteccion contra path traversal.
2026-04-08 23:01:31 +00:00
egutierrez 0cd7e36a14 feat: desacoplar launcher del registro estatico de agentes
Introduce un registro global de reglas en agents/registry.go con
Register() y GetRules(). Cada paquete de agente se auto-registra
via init(), eliminando la necesidad de editar manualmente el map
rulesRegistry en cmd/launcher/main.go.

Cambios:
- agents/registry.go: nuevo registro global con sync.RWMutex
- agents/*/agent.go: cada agente llama agents.Register() en init()
- agents/_template/agent.go: placeholder AGENT_ID_PLACEHOLDER para scaffold
- cmd/launcher/main.go: elimina rulesRegistry, usa blank imports +
  agents.GetRules() para obtener reglas por agent ID

Patron: init() + blank import (estandar Go: database/sql, image codecs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:00:08 +00:00
egutierrez ff7600d3be comandos no necesarios 2026-03-14 14:38:45 +00:00
egutierrez fc235c71c6 mini fix en template issue 2026-03-09 23:31:57 +00:00
egutierrez f8fa7e7c7b feat: agregar tool imdb_search para buscar películas en IMDb
Implementa una nueva tool que permite buscar películas y series en IMDb
usando la API de OMDb. Retorna hasta 5 resultados con título, año, tipo,
poster URL e IMDb ID.

Cambios:
- tools/imdb/imdb.go: tool imdb_search con integración a OMDb API
- internal/config/schema.go: IMDbToolCfg con api_key, api_key_env y timeout
- agents/runtime.go: registro de tool en buildToolRegistry
- agents/asistente-2/config.yaml: habilitación de tool imdb
- .env.example: OMDB_API_KEY para configuración

La tool soporta parámetros:
- query (requerido): título de película/serie a buscar
- year (opcional): año para filtrar resultados

Configuración via api_key directa o variable de entorno OMDB_API_KEY.
API key gratuita disponible en http://www.omdbapi.com/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 23:04:05 +00:00
egutierrez 072a6f16ab merge: quick/template-llm-agent — template minimalista para generar agentes
Añade template_para_llm.md con campos esenciales para crear agentes de forma simplificada.
2026-03-08 22:46:28 +00:00
egutierrez 2557ade40d docs: añadir template minimalista para generar agentes
Se crea template_para_llm.md en agents/_template/ con los campos mínimos necesarios para que Claude genere un agente completo:

- Campos obligatorios: id, name, description, system prompt
- Campos opcionales con defaults: provider LLM, model, tool_use, personalidad
- Checkboxes para capacidades específicas (HTTP, SSH, files, etc.)
- Ejemplo completado para referencia

El template permite crear agentes solo proporcionando lo esencial, sin necesidad de entender toda la estructura interna del sistema.
2026-03-08 22:46:04 +00:00
egutierrez 7a4b4356a2 merge: issue/0014-template-agent-standardize — template agent + personalidades
Sistema de personalidades enriquecido con traits y prompts dinamicos. Agente template completo con configuracion estandarizada. Comando !info mejorado con metadata completa.
2026-03-08 22:33:05 +00:00