Files
agenticSystem/mcp-server/tools/media/index.js
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

32 lines
1.3 KiB
JavaScript

import { registerUploadRecordImageTool } from './upload.js';
import { registerUploadImageToAssetsTool } from './uploadImageToAssets.js';
import { registerGenerateImageTool } from './generateImage.js';
import { registerAnalyzeImageTool } from './analyze_image.js';
import { registerSetUploadInfoTool } from './setUploadInfo.js';
import { canEditContent } from '../helpers/roleCheck.js';
/**
* Tools de media.
*
* Solo `analyze_image` es de lectura, asi que es la unica que ve el rol
* "auditor". El resto (subidas, generacion y metadatos de uploads) va tras
* canEditContent(). El orden de registro se mantiene igual que antes del gate
* para no alterar el listado de tools de los roles existentes.
*/
export function registerMediaTools(server) {
const canWriteContent = canEditContent();
if (canWriteContent) {
registerUploadRecordImageTool(server);
registerUploadImageToAssetsTool(server);
registerGenerateImageTool(server);
}
registerAnalyzeImageTool(server);
if (canWriteContent) {
// Metadatos info1..info5 de uploads: son datos de contenido, no codigo,
// asi que sigue sin gate de canEditCode() — pero si pasa por
// canEditContent(), porque el auditor no escribe nada.
registerSetUploadInfoTool(server);
}
}