Files
agents_and_robots/agents/assistant-bot/config.yaml
T
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

291 lines
6.8 KiB
YAML

# ============================================
# IDENTIDAD
# ============================================
agent:
id: assistant-bot
name: "Assistant"
version: "1.0.0"
enabled: true
description: "Asistente general con acceso a LLM. Responde preguntas, resume, redacta y ayuda con tareas cotidianas."
tags: [assistant, llm, general]
# ============================================
# PERSONALIDAD Y COMPORTAMIENTO
# ============================================
personality:
tone: friendly
verbosity: concise
language: es
languages_supported: [es, en]
emoji_style: minimal
prefix: "🤖"
error_style: helpful
templates:
greeting: "Hola, soy tu asistente. ¿En qué puedo ayudarte?"
unknown_command: "No entiendo ese comando. Escríbeme directamente lo que necesitas."
permission_denied: "No tengo permiso para hacer eso."
error: "Algo salió mal: {{.Error}}"
success: "{{.Summary}}"
busy: "Procesando tu solicitud anterior, dame un momento..."
behavior:
proactive: false
ask_confirmation: false
show_reasoning: false
thread_replies: true
typing_indicator: true
acknowledge_receipt: false # responde directo, sin "recibido"
# ============================================
# LLM — CONEXIÓN Y RAZONAMIENTO
# ============================================
llm:
primary:
provider: claude-code
model: ""
api_key_env: ""
base_url: ""
max_tokens: 4096
temperature: 0.7
claude_code:
binary: "claude"
timeout: 3m
disable_tools: true # no ejecuta herramientas internas de claude
allowed_tools: []
disallowed_tools: []
working_dir: "/tmp/claude-agents/assistant-bot"
permission_mode: "bypassPermissions"
model: "sonnet" # modelo interno de claude -p
fallback_model: ""
session_id: ""
add_dirs: []
# Fallback desactivado — solo claude-code
fallback:
provider: ""
model: ""
api_key_env: ""
base_url: ""
max_tokens: 0
temperature: 0
reasoning:
system_prompt_file: "prompts/assistant-system.md"
context_window: 16384
memory_messages: 30 # mantiene 30 mensajes de historia por room/DM
tool_use:
enabled: true
max_iterations: 5
parallel_calls: false
rate_limit:
requests_per_minute: 60
tokens_per_minute: 200000
concurrent_requests: 5
# ============================================
# TOOLS — deshabilitadas para este bot
# ============================================
tools:
ssh:
enabled: false
allowed_targets: []
forbidden_commands: []
timeout: 0s
max_concurrent: 0
require_confirmation: []
http:
enabled: false
allowed_domains: []
timeout: 0s
max_retries: 0
scripts:
enabled: false
scripts_dir: ""
allowed: []
timeout: 0s
sandbox: false
file_ops:
enabled: false
allowed_paths: []
read_only: true
mcp:
enabled: false
servers: []
expose:
port: 0
tools: []
memory:
enabled: false
knowledge:
enabled: true
# ============================================
# MEMORIA — ventana de conversación + hechos
# ============================================
memory:
enabled: false
window_size: 30
# ============================================
# MATRIX — CONEXIÓN Y ROOMS
# ============================================
matrix:
homeserver: "https://matrix-af2f3d.organic-machine.com"
user_id: "@assistant-bot:matrix-af2f3d.organic-machine.com"
access_token_env: MATRIX_TOKEN_ASSISTANT_BOT
device_id: "WXAKFKILMR"
encryption:
enabled: true
store_path: "./agents/assistant-bot/data/crypto/"
pickle_key_env: PICKLE_KEY_ASSISTANT_BOT
trust_mode: tofu
recovery_key_env: SSSS_RECOVERY_KEY_ASSISTANT_BOT
rooms:
listen: [] # vacío = escucha en todos los rooms donde está invitado
respond: [] # vacío = responde en todos
admin: []
filters:
command_prefix: "!"
mention_respond: true # responde cuando lo mencionan en un room
dm_respond: true # responde en DMs (modo principal por ahora)
ignore_bots: true
ignore_users: []
unauthorized_response: silent # silent | explicit
min_power_level: 0 # cualquiera puede hablar con el assistant
threads:
enabled: true # responder en threads cuando el mensaje viene de un thread
auto_thread: false # true para crear thread automático por cada conversación nueva
# ============================================
# COMUNICACIÓN INTER-AGENTES
# ============================================
agents:
peers: []
delegation:
enabled: false
can_delegate_to: []
can_receive_from: []
max_delegation_depth: 1
timeout: 30s
protocol:
format: json
channel: matrix
heartbeat_interval: 60s
# ============================================
# SSH — no aplica para este bot
# ============================================
ssh:
defaults:
user: ""
port: 22
key_file_env: ""
known_hosts: ""
keepalive_interval: 0s
timeout: 0s
targets: {}
# ============================================
# PERMISOS Y SEGURIDAD
# ============================================
security:
audit:
enabled: false
log_file: "./agents/assistant-bot/data/audit.log"
log_to_room: ""
include: []
secrets:
provider: env
# ============================================
# SCHEDULING — sin tareas automáticas
# ============================================
schedules: []
# ============================================
# OBSERVABILIDAD
# ============================================
observability:
logging:
level: info
format: json
output: stdout
file: "./agents/assistant-bot/data/assistant.log"
metrics:
enabled: false
port: 9091
path: /metrics
export: prometheus
health:
enabled: true
port: 8081
path: /healthz
tracing:
enabled: false
provider: ""
endpoint: ""
# ============================================
# RESILIENCIA
# ============================================
resilience:
circuit_breaker:
failure_threshold: 5
timeout: 30s
half_open_max: 2
retry:
max_attempts: 2
backoff: exponential
initial_delay: 1s
max_delay: 10s
shutdown:
timeout: 10s
drain_messages: true
save_state: false
state_file: ""
queue:
enabled: true
max_size: 100
priority_users: ["@admin:matrix-af2f3d.organic-machine.com"]
# ============================================
# ALMACENAMIENTO Y ESTADO
# ============================================
storage:
state:
backend: sqlite
path: "./agents/assistant-bot/data/assistant.db"
cache:
enabled: true
backend: memory
ttl: 5m
max_entries: 200
history:
backend: sqlite
path: "./agents/assistant-bot/data/history.db"
retention: 168h # 7 días