- 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.
86 lines
3.3 KiB
YAML
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
|