Limitações

As expressões executadas no servidor, e o que o servidor MCP não faz

  1. Expressões runLocal
  2. Limitações

Expressões runLocal

As expressões runLocal, os campos local / credential / html e as predefinições evalDefault são avaliados no servidor, num contexto V8 separado: sem process, require, rede nem temporizadores, sem compilação de strings em código, com um limite de tempo de 2 segundos, e apenas com as funções auxiliares que o navegador oferece (fnArray, fnGetNumberedName, fnToTable, …).

Isto protege contra expressões com erros ou descontroladas. Não é uma sandbox para código hostil, nem precisa de ser: o código vem da definição do formulário, nunca de quem chama o MCP, e cada valor que quem chama envia é substituído como um literal JavaScript.

Uma expressão que usa uma API do navegador (window, document, fetch) não pode ser executada aqui e devolve status: error.

As expressões do lado do servidor (sem runLocal) passam pelas mesmas regras de EXPRESSION_SANITIZER que no navegador.


Limitações

Alguns formulários e campos ainda não podem ser usados através do servidor MCP:

  • Os formulários wizard ainda não podem ser lançados. Os seus passos podem ser resolvidos com subform.
  • Os campos de ficheiro não podem ser preenchidos; um formulário cujo campo de ficheiro tenha um valor é recusado.
  • Linhas de lista (e um campo yaml com um subform, que é uma dessas linhas): cada linha que envia, exceto uma que tenha o deleteMarker da lista, é resolvida através do seu subform com os valores do formulário como __parent__ e depois validada. Isto inclui listas aninhadas, onde __parent__.__parent__ chega ao formulário. Envie linhas simples, ou seja, os valores brutos dos campos do subform. As linhas que falham são listadas por campo de lista em rowErrors (vms[1].disks[0].size (missing) na mensagem). São aceites no máximo 500 linhas por chamada, somando todos os níveis.
  • Um enum deixado em __auto__ nunca é preenchido com a sua primeira opção; quem chama tem de escolher.
  • Cada pedido MCP cria uma entrada no registo de auditoria (ação “Pedido MCP (agente de IA)”); a tarefa propriamente dita é registada em nome do utilizador, como em qualquer outro lançamento.