Commit Graph

13 Commits

Author SHA1 Message Date
egutierrez 0ac2afb573 docs: documentar coexistencia knowledge privado/compartido en prompts
- Separar herramientas en dos secciones
- Explicar diferencia entre knowledge privado y shared
- Guía de cuándo usar cada una
- Issue 0018: Shared Knowledge (fase 5)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 21:57:05 +00:00
egutierrez 8811d45fd1 feat: conectar sistema centralizado de seguridad al launcher y runtime
- Migrar admin a security/user-groups.yaml (admins group)
- agents.New() ahora acepta acl.ACL pre-resuelta como parámetro;
  elimina construcción interna desde cfg.Security.Roles
- cmd/launcher: carga shellsecurity.Load("security/") al arranque;
  si falla, WARN + política vacía (open access). Para cada agente
  llama pksecurity.ResolveACL y pasa la ACL a agents.New()
- cmd/launcher/registry.go: stores secPolicy en launchDeps para
  que reload() también resuelva ACL centralmente
- shell/matrix/listener.go: elimina invite gating y allowlist check
  basados en AllowedUsers; el control de acceso lo hace el runtime
- internal/config/schema.go: depreca campos Roles y AllowedUsers
  (backward compat, no eliminados)
- agents/*/config.yaml: elimina bloques security.roles y allowed_users
- dev/feature_flags.json: activa centralized-security-groups (enabled: true)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 20:56:21 +00:00
egutierrez 1852169665 chore: habilitar threads por defecto en todos los agentes
Añade la seccion matrix.threads con enabled: true a los 3 agentes
existentes (assistant-bot, asistente-2, meteorologo). Esto activa
el soporte de threads implementado en issue 0012, permitiendo que
los bots respondan dentro de threads cuando reciben mensajes en uno.
auto_thread queda en false para no cambiar el comportamiento actual.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:55:46 +00:00
egutierrez 893ac74a16 feat: update user actions to allow all in security configuration for assistant agents 2026-03-08 12:43:35 +00:00
egutierrez d05ec0bd57 feat: configurar working_dir aislado para ambos agentes
Setear working_dir a /tmp/claude-agents/<agent-id> en assistant-bot
y asistente-2, evitando que claude -p herede el CWD del launcher
(raiz del repo). El directorio se crea automaticamente al arrancar
gracias al MkdirAll añadido en el commit anterior.

Se mantiene bypassPermissions ya que el aislamiento real viene del
working_dir — sin acceso al repo, el bypass no expone codigo fuente.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:46:01 +00:00
egutierrez aeba5d1e86 feat: hardening de system prompts contra prompt injection
Crea template reutilizable en .claude/templates/security-prompt.md y
aplica seccion de seguridad obligatoria a todos los system prompts:

- assistant-bot/prompts/assistant-system.md
- asistente-2/prompts/system.md
- meteorologo/prompts/system.md

Las instrucciones cubren:
- Rechazo de acciones fuera del rol
- Proteccion del system prompt (no revelar)
- Rechazo de comandos destructivos
- Validacion de coherencia contextual de tool calls
- Resistencia a redefinicion de identidad
- Prohibicion de generar contenido para ataques

Tareas 3.1, 3.2, 3.3 del issue 0019.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:49:57 +00:00
egutierrez 7d4fa78569 feat: implementar unauthorized_response explicit en listener
Conectar el campo unauthorized_response de FiltersCfg al shouldHandle()
del listener. Cuando está configurado como "explicit", el bot responde
con un mensaje de permisos denegados en lugar de ignorar silenciosamente.

También se añaden los campos allowed_users y unauthorized_response
(comentados como ejemplo) a los configs de assistant-bot y asistente-2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:02:06 +00:00
egutierrez 3f6921d3fd refactor: eliminar regla !help hardcodeada de agentes existentes
Elimina la regla MatchCommand("help") de assistant-bot y asistente-2
ya que ahora !help es un comando built-in del sistema de comandos.
Los agentes solo conservan la regla llm-all para DM/mention → LLM.
2026-03-07 01:11:33 +00:00
egutierrez 6eb8ea829f docs: habilitar knowledge en agentes y actualizar prompts
Activa knowledge.enabled en config.yaml de assistant-bot y asistente-2.
Actualiza los system prompts para documentar las 4 tools de knowledge
(search, read, write, list) e incluir hábitos de uso: buscar antes de
responder y guardar información valiosa.

En assistant-bot se reemplaza la sección de "Limitaciones" por una de
"Base de conocimiento" con instrucciones claras de cuándo guardar y
buscar documentos.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 23:02:45 +00:00
egutierrez 69607b3a65 feat: añadir sistema de knowledge por agente
Implementa una base de conocimiento persistente por agente siguiendo
el patrón pure core / impure shell:

- pkg/knowledge/: tipos puros (Document, Store interface)
- shell/knowledge/: FileStore con SQLite para indexación y archivos .md
- tools/knowledge.go: 4 tools LLM (search, read, write, list)
- tools/knowledge_test.go: tests unitarios de las tools
- internal/config/schema.go: nuevo KnowledgeToolCfg en ToolsCfg
- agents/runtime.go: inicialización del store y registro de tools
- agents/*/knowledge/about-me.md: documentos semilla para cada agente

Cada agente puede buscar, leer, crear y actualizar documentos de
conocimiento. Los archivos .md viven en agents/<id>/knowledge/ y se
indexan en SQLite (agents/<id>/data/knowledge.db).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 23:02:39 +00:00
egutierrez 9862ae9e6f chore: migrar agentes a claude-code como provider primario
Cambia el provider primario de ambos agentes (assistant-bot y asistente-2)
de openai/gpt-4o a claude-code/sonnet.

Configuración aplicada:
- disable_tools: true — claude no ejecuta herramientas internas
- permission_mode: bypassPermissions — sin diálogos interactivos
- model: sonnet — modelo interno de claude -p
- fallback desactivado temporalmente para validar que claude-code funciona

El launcher ya ejecutó exitosamente con este config, confirmado en logs:
claude_code_response con content_len=279, cost_usd=0.023514.
2026-03-06 22:14:36 +00:00
egutierrez 7176afde0a feat: update orchestrator for enhanced multi-bot management and room discovery 2026-03-06 17:03:08 +00:00
egutierrez 08dcb332b7 refactor: rename agent directories to match agent IDs
Renombrar directorios de agentes para que coincidan exactamente con el
agent.id del config.yaml, eliminando la disonancia entre nombres:
- agents/assistant/ → agents/assistant-bot/ (ID: assistant-bot)
- agents/asistente2/ → agents/asistente-2/ (ID: asistente-2)

Se actualizan los imports en cmd/launcher/main.go, los store_path de
crypto, los paths de storage/logs/audit en ambos configs para que
apunten a ./agents/<agent-id>/data/. También se corrige el memory.db
que se creaba en directorios fantasma fuera del directorio real del
agente.

Se eliminan las referencias a devops-bot en el config de assistant-bot
(peers, delegation).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 00:55:09 +00:00