Seguridad y confianza entre sitio y agente|INEMA.CLUB-PRO

Clase 3 · 18 min

Una acción con consecuencias pide a una persona: confirmación y consequentialHint

Reservar, cancelar, pagar, borrar. El agente puede elegir la tool equivocada, entender mal la descripción u obedecer a un texto plantado. La spec de WebMCP responde con consequentialHint, para que el cliente exija confirmación. En esta clase pones la anotación y la confirmación del propio sitio, y compruebas que rechazar no cambia nada.

Comenzar la clase
Diálogo de confirmación en pantalla oscura con dos botones neutros, la mano de una persona cerca del mouse, luz neutra.

En esta clase vas a

  1. 1Intención mal descrita: el caso finalizeCart de la spec
  2. 2consequentialHint (señal para el cliente) y confirmación del sitio (tu traba)
  3. 3La prueba que rechaza y verifica que nada cambió
  4. 4El límite: un agente que opera la pantalla también hace clic en el botón

Objetivo: poner consequentialHint y una confirmación con objetivo y efecto en toda tool que cambie algo, y comprobar que rechazar no cambia nada.

01Del pedido al efecto, con una persona en medio

Haz clic en cada etapa.

Haz clic en cada bloque del diagrama para ver qué hace.

La anotación es para el cliente; la confirmación es tuya. Una no sustituye a la otra.

02Una confirmación que protege

1. Objetivo y efecto

La pregunta dice qué, de quién y qué pasa después. "¿Estás seguro?" no sirve: la persona no sabe qué está aprobando.

03El segundo agujero: cancelar sin preguntar

Edita cancelar_agendamento en kit/pagina/ferramentas.mjs como en el fragmento y ejecuta el verificador. La versión lista está en kit/solucao/aula3/.

Fragmento · kit/solucao/aula3/ferramentas.mjs
      annotations: { consequentialHint: true },              // clase 3: avisa que la acción tiene consecuencias
      execute: util(async ({ codigo }, { signal }) => {
        const ag = agenda.agendamentos().find(a => a.codigo === codigo);
        if (!ag) throw new Error(`agendamento não encontrado: ${codigo}`);
        // la pregunta dice el objetivo y el efecto completos; cancelar la ejecución (signal) vale como "no"
        const ok = await ui.pedirConfirmacao(`Cancelar o agendamento ${ag.codigo} (${ag.id}, ${ag.nome})? A vaga volta para a agenda.`, signal);
        if (!ok) return { cancelado: false, motivo: 'a pessoa recusou na tela' };
        agenda.cancelar(codigo);
        ui.atualizar();
        return { cancelado: true, agendamento: ag };
      })
Terminal · checar después
cd ~/projetos/formacao-webmcp-seguranca-v72/kit
node scripts/checar.mjs; echo "saída: $?"
Ejemplo del repositorio
== Chromium 156.0.8078.4 (Playwright) · modo: nativo
ok    buscar_mentorias: só leitura, sem texto de terceiro
ok    ler_avaliacoes: devolve texto de terceiro e está marcada com untrustedContentHint
ok    meus_agendamentos: só leitura, sem texto de terceiro
ok    agendar_mentoria: consequentialHint + confirmação; recusar não mudou nada
ok    cancelar_agendamento: consequentialHint + confirmação; recusar não mudou nada
RESULTADO: 0 falhas
saída: 0

Antes del arreglo, la misma línea decía FALHA cancelar_agendamento: agiu sem pedir confirmação (salida de la clase 2).

04Práctica

La traba en el kit y en tu página.

E7 · Arregla la cancelación

15 min

Pon consequentialHint y la confirmación en cancelar_agendamento y ejecuta el bloque checar después.

Listo cuando: RESULTADO: 0 falhas y saída: 0.

E8 · Rómpelo a propósito

5 min

En agendar_mentoria, cambia const ok = await ui.pedirConfirmacao(…) por const ok = true y ejecuta el verificador. Después deshaz el cambio.

Listo cuando: FALHA agendar_mentoria: agiu sem pedir confirmação y saída: 1; deshecho, RESULTADO: 0 falhas.

E9 · Inventario de tu sitio

20 min

Haz una lista de las tools de tu sitio que cambian algo. Cada una recibe consequentialHint: true y una pregunta con objetivo y efecto.

Listo cuando: grep -c "consequentialHint: true" [tu archivo de tools] → el número de tools de tu lista.

05Prueba de la clase

Pregunta 1 de 4

¿Qué dice la spec que el cliente puede hacer al ver consequentialHint?competencia

06En tres frases

AnotaciónconsequentialHint en toda tool que cambia algo.
ConfirmaciónDel sitio, con objetivo y efecto, una por llamada; rechazar no cambia nada.
LímiteUn botón en pantalla el agente también lo pulsa; el alto valor pide lo que solo la persona tiene.

Para ir más allá

Clase anteriorSiguiente clase