Digest du jour

mercredi 12 août 2026

Profondeur

Digest court

La story du jour côté Angular, c'est WebMCP. InfoQ a relayé le 10 août la sortie de v22 en insistant sur le morceau le moins commenté jusqu'ici : le support expérimental de Web Model Context Protocol, qui permet à une application Angular d'exposer des outils structurés aux agents IA du navigateur. Concrètement, tu déclares des fonctions typées par JSON Schema au lieu de laisser l'agent scraper ton DOM. Angular branche ces outils sur le cycle de vie de l'injecteur : enregistrés au bootstrap, désenregistrés à la destruction, et cantonnés à une route si tu le veux. Le deuxième volet est plus ambitieux : un Signal Form peut devenir un outil WebMCP implicite, avec schéma JSON inféré du modèle et remontée des erreurs de validation vers l'agent. Le tout reste étiqueté expérimental — les API peuvent bouger hors d'une majeure.

Top 1 — WebMCP : ton app devient un serveur d'outils

  • provideExperimentalWebMcpTools : déclare des outils au niveau app ou route ; le callback execute tourne en contexte d'injection, donc inject() fonctionne.
  • withExperimentalAutoCleanupInjectors : sans cette option du router, les outils déclarés sur une route restent visibles à l'agent après navigation.
  • declareExperimentalWebMcpTool : version dynamique, à réserver aux services root — les noms d'outils doivent être uniques ou ça throw au runtime.
  • Pas de validation implicite : Angular n'impose pas le schéma aux arguments reçus. Valide toi-même dans execute.

Top 2 — Signal Forms en outils IA

  • provideExperimentalWebMcpForms() active la fonctionnalité, puis l'option experimentalWebMcpTool sur form() opte le formulaire.
  • Schéma inféré du modèle : types déduits des valeurs initiales, champs requis déduits des validateurs required, tableaux typés depuis leur premier élément.
  • Boucle d'auto-correction : l'agent voit les erreurs de validation et les échecs de submission.action, donc il peut réessayer.
  • Contraintes : valeurs initiales concrètes obligatoires ('', 0, false) et tableaux non vides — pas d'inférence depuis null ou []. Les validateurs asynchrones ne sont pas déclenchés.

→ Analyse complète : 2026-08-12_detail.md