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.
This commit is contained in:
85
agents/soporte/agent.yaml
Normal file
85
agents/soporte/agent.yaml
Normal file
@@ -0,0 +1,85 @@
|
||||
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
|
||||
Reference in New Issue
Block a user