Files
agenticSystem/agents/soporte/agent.yaml
Jordan Diaz 5198afedaa feat: rol auditor (solo lectura total) en el MCP + agente soporte
- roleCheck.js: isAuditor()/canEditContent(); canEditCode() tambien
  excluye auditor. Superficie editor/developer intacta (verificado
  contra el codigo pre-cambio en el test).
- records/tables/media/languages: tools de escritura gateadas con
  canEditContent(), orden de registro original preservado.
- agents/soporte: agente de evaluacion de incidencias en produccion,
  allowed_tools allowlist namespaceada (23 acai_code + 18 playwright,
  cero fetch), system.md con formato de informe obligatorio y trato
  del texto del cliente como dato no confiable.
- test/auditor-role.test.js: 22 tests de superficie exacta por rol.
2026-08-21 18:05:47 +00:00

86 lines
3.3 KiB
YAML

name: soporte
display_name: "Soporte Técnico"
description: "Evalúa incidencias reportadas por clientes sobre la web de producción: reproduce el problema, diagnostica la causa y propone la solución. Solo lectura, no modifica nada."
icon: "eye"
category: "quality"
temperature: 0.2
max_tokens: 8192
context_sections:
- immutable_rules
- project_profile
- task_state
model_id: null
stream_deltas: true
kb_load_strategy: none
# ---------------------------------------------------------------------------
# Allowlist EXPLÍCITA de tools (nunca blocklist).
#
# Formato: los nombres van con el prefijo del server MCP porque la sesión monta
# 3 servers (acai-code, playwright, fetch) y MCPManager namespacea cuando hay
# más de uno: "<server>__<tool>" con los guiones sustituidos por "_"
# (src/mcp/manager.py::_namespace). El filtro se aplica en
# src/orchestrator/agents/base.py::_get_allowed_tools sobre ese nombre ya
# namespaceado.
#
# Este agente es de SOLO LECTURA: la lista contiene exactamente las tools de
# lectura que el MCP acai-code registra bajo el rol "auditor"
# (tools/helpers/roleCheck.js) más las de inspección del navegador.
# NINGUNA tool del server "fetch" está permitida (vector de exfiltración).
# ---------------------------------------------------------------------------
allowed_tools:
# --- acai-code: ficheros (lectura) ---
- acai_code__acai_view
- acai_code__acai_glob
- acai_code__acai_grep
# --- acai-code: base de datos (lectura) ---
- acai_code__list_tables
- acai_code__get_table_schema
- acai_code__list_table_records
- acai_code__get_record
# --- acai-code: módulos y páginas (lectura) ---
- acai_code__list_page_modules
- acai_code__get_module_config_vars
- acai_code__check_module
- acai_code__check_module_usage
# --- acai-code: layout, librerías y hooks (lectura) ---
- acai_code__get_layout_field
- acai_code__list_global_libraries
- acai_code__get_hook_middleware
- acai_code__get_hook_entryparams
# --- acai-code: idiomas (lectura) ---
- acai_code__list_web_languages
- acai_code__get_record_translations
# --- acai-code: media (análisis, lectura) ---
- acai_code__analyze_image
# --- acai-code: proyecto y documentación ---
- acai_code__get_web_url
- acai_code__navigate_browser
- acai_code__list_docs
- acai_code__read_doc
# Renovación del JWT de Acai cuando caduca (403). No modifica la web:
# sin ella el agente se queda sin poder leer a mitad de una evaluación.
- acai_code__refresh_acai_token
# --- playwright: reproducción e inspección en el navegador ---
# Excluidas a propósito: browser_file_upload (sube ficheros),
# browser_run_code (ejecuta código arbitrario), browser_install (instala
# binarios en el contenedor) y browser_drag.
- playwright__browser_navigate
- playwright__browser_navigate_back
- playwright__browser_snapshot
- playwright__browser_take_screenshot
- playwright__browser_console_messages
- playwright__browser_network_requests
- playwright__browser_click
- playwright__browser_hover
- playwright__browser_type
- playwright__browser_fill_form
- playwright__browser_press_key
- playwright__browser_select_option
- playwright__browser_evaluate
- playwright__browser_wait_for
- playwright__browser_resize
- playwright__browser_tabs
- playwright__browser_handle_dialog
- playwright__browser_close