E7 · Arregla la cancelación
15 minPon consequentialHint y la confirmación en cancelar_agendamento y ejecuta el bloque checar después.
Listo cuando: RESULTADO: 0 falhas y saída: 0.
Clase 3 · 18 min
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
Objetivo: poner consequentialHint y una confirmación con objetivo y efecto en toda tool que cambie algo, y comprobar que rechazar no cambia nada.
Haz clic en cada etapa.
La anotación es para el cliente; la confirmación es tuya. Una no sustituye a la otra.
La pregunta dice qué, de quién y qué pasa después. "¿Estás seguro?" no sirve: la persona no sabe qué está aprobando.
Una pregunta por llamada, con los argumentos de esa llamada. Si el objetivo cambia, es otra pregunta. Nunca un "sí" que valga para las siguientes.
La spec muestra finalizeCart: el agente creyó que solo cerraba el carrito para verlo, y la tool compró (§6.3.2.3). Nombre y descripción dicen el efecto: comprar_carrinho, "cobra la tarjeta guardada".
El diálogo está en la página, y un agente que opera la pantalla también puede hacer clic en Confirmar. El propio checar.mjs hace clic, como lo haría un agente. Para una acción de alto valor, pide algo que el agente no tiene: la contraseña otra vez o un código enviado a la persona.
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/.
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 };
})cd ~/projetos/formacao-webmcp-seguranca-v72/kit node scripts/checar.mjs; echo "saída: $?"
== 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).
La traba en el kit y en tu página.
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.
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.
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.
Pregunta 1 de 4
¿Qué dice la spec que el cliente puede hacer al ver consequentialHint?competencia
Pregunta 2 de 4
¿Qué pregunta de confirmación protege de verdad?
Pregunta 3 de 4
¿Por qué el curso dice que la confirmación en la página tiene un límite?
Pregunta 4 de 4
En el caso finalizeCart de la spec, ¿qué salió mal?
Elige una alternativa. La explicación aparece después de tu intento.