Table of Contents

🇬🇧 English version

Protocole A2A — matrice de conformité

Position honnête de l'implémentation A2A d'Orkeon (marquée [Experimental], diagnostic ORKEXP001) face à la spécification A2A v1.0 (Linux Foundation / a2aproject). En résumé : l'implémentation appartient à l'ère 0.x du protocole — une surface REST compacte plus du streaming SSE — et couvre la boucle cœur send/stream/status/cancel ; le formalisme de bindings v1.0 (mappings JSON-RPC, gRPC, HTTP+JSON du schéma proto canonique), les push notifications et le cycle de vie de tâche enrichi ne sont pas implémentés. Cette page est la référence de ce qui interopère et de ce qui n'interopère pas.

Opérations abstraites (spec §core)

Opération v1.0 Endpoint Orkeon Statut Notes
Send Message POST /a2a/tasks/send 🟡 Partiel Forme d'ère 0.x (A2ATaskRequest : id/skillId/input/inputMode/metadata), pas le modèle Message/Part v1.0.
Send Streaming Message POST /a2a/tasks/sendSubscribe (SSE) 🟡 Partiel Working → update final → [DONE] ; pas d'événements typés TaskStatusUpdateEvent/TaskArtifactUpdateEvent.
Get Task GET /a2a/tasks/{id} 🟡 Partiel Réel depuis PUB-08 quand la persistance des tâches est activée (AddOrkeonA2ATaskPersistence() sur un IStateStore de checkpointing) : 200 avec l'état enregistré, 404 pour un id inconnu. Sans l'opt-in : 501 explicite (jamais d'état fabriqué).
List Tasks — 🔴 Absent
Cancel Task DELETE /a2a/tasks/{id} 🟡 Partiel Avec persistance : 404 pour les ids inconnus et l'enregistrement passe à Cancelled. Consultatif seulement : le travail en cours n'est pas interrompu. Sans persistance : accusé de réception historique.
Subscribe to (existing) Task — 🔴 Absent Le streaming n'existe qu'à la soumission.
Push Notification Configs (create/get/list/delete) — 🔴 Absent Pas de livraison webhook.
Get Extended Agent Card — 🔴 Absent Carte publique unique.

Modèle de données

Concept v1.0 Orkeon Statut
États de tâche (9 : dont SUBMITTED, INPUT_REQUIRED, AUTH_REQUIRED, REJECTED) 5 états (Pending, Working, Completed, Failed, Cancelled) 🟡 Les états terminaux se mappent 1-1 ; les états interrompus n'ont pas d'équivalent.
Message / Part (parts texte, fichier, données) chaîne input + indice MIME inputMode 🟡 Text-first ; pas de payloads multi-parts.
Artifacts chaîne output 🟡 Sortie textuelle unique.
AgentCard GET /.well-known/agent.json 🟡 Servie avec name/description/skills ; champs v1.0 (capabilities, securitySchemes, agentInterfaces, signature) absents.
Paramètre de service A2A-Version — 🔴 Non lu ; aucune négociation de version.

Bindings

La v1.0 définit trois bindings canoniques (JSON-RPC 2.0, gRPC, HTTP+JSON) mappés depuis le schéma proto. Orkeon parle son propre dialecte REST d'ère 0.x — aucun des trois bindings canoniques — un client strictement v1.0 n'interopérera donc pas sans adaptateur. L'alignement sur le binding HTTP+JSON est la première marche naturelle quand cette surface sera promue.

Sécurité

Exigence Orkeon Statut
Vérification de l'identité du client mTLS (fail-closed : RequireMutualTls refuse de démarrer sans ancre de confiance ; chaîne CA ou empreintes épinglées) + AllowedAuthSchemes (401) 🟢 Pour le modèle de déploiement mTLS.
Déclaration securitySchemes dans l'AgentCard — 🔴 Les schémas sont imposés mais pas annoncés.
Révocation de certificats Non vérifiée 🟡 Décision (PUB-08 T3) : préférer les certificats à courte durée de vie à CRL/OCSP. Le modèle de confiance mTLS d'A2A vise des CA privées, où les endpoints CRL/OCSP existent rarement et où OCSP ajoute une dépendance de disponibilité ; une durée de vie de 24–72 h borne la fenêtre d'exposition sans nouvelle dépendance runtime, et la rotation s'inscrit dans les options existantes (une nouvelle instance de client recharge le PFX). Le support CRL reste hors périmètre tant qu'un déploiement n'en prouve pas le besoin.
Auth des webhooks de push notification — 🔴 Pas de webhooks.

Ce que cela signifie pour les consommateurs

  • Orkeon ↔ Orkeon entre processus/hôtes : supporté (c'est pour cela que la surface existe), désormais avec un statut de tâche durable via l'opt-in de persistance.
  • Orkeon ↔ agents tiers v1.0 : pas encore — attendre (ou contribuer à) l'alignement sur le binding HTTP+JSON suivi par la suite de PUB-08.

Chaque écart ci-dessus est un périmètre assumé, pas un oubli : la surface est marquée [Experimental] (ORKEXP001) précisément pour pouvoir être remodelée vers la v1.0 sans dette de breaking change. Voir aussi APIs expérimentales et Limites et contraintes.