NylorunDocsBeta
A2A

A2A conformance

What the Nylorun Runtime serves of A2A 1.0, the choices a client should know, and the A2A TCK results for each release.

The Nylorun Runtime serves A2A 1.0 on the JSON-RPC binding, for every Agent it serves over A2A. It passes the A2A TCK, apart from the failures listed with each release's results. This statement holds from @nylorun/runtime 0.37.0-beta.

What is served

Area of A2A 1.0Served
BindingJSON-RPC 2.0 over HTTP(S), listed in the Agent Card's supportedInterfaces with protocol version 1.0.
VersionA2A-Version: 1.0. A request with no version is read as 0.3 and refused with VersionNotSupportedError.
MessagesSendMessage, blocking or with returnImmediately.
TasksGetTask with historyLength, ListTasks with its filters and paging, and CancelTask.
Push notificationsAll four config methods, and the config inside SendMessage, when the Runtime has a push secret (NYLORUN_A2A_PUSH_SECRET). Delivered at least once, with the config's token and authentication, and signed with Standard Webhooks. See Push notifications.
Task statesAll of them. An interrupted task continues on the same taskId.
Partstext, raw, url, and data, in and out. Artifacts carry the turn's files.
ExtensionsDeclared on the card, activated with A2A-Extensions, and echoed when activated. All are optional: a client that activates none gets plain A2A 1.0. See Profile v2.
Agent CardOne per Agent, from the Runtime and through createA2aHandler()'s /.well-known/agent-card.json. pushNotifications is true when the Runtime has a push secret, and streaming is false.
ErrorsA2A error codes, with google.rpc.ErrorInfo. A task another caller owns answers as not found.

Documented choices

WhereWhat a client should know
Blocking SendMessageIt waits up to the Runtime limit a2aWaitMs, 5 minutes by default. Past that, the answer is the task, still WORKING. Use returnImmediately and push for long tasks.
ApprovalsAn approval pauses the task as AUTH_REQUIRED, with the request under interactions/v1. A client without that extension sees a text question, and its text reply does not approve.
A message to a busy contextIt is queued and answered with the task that will take it. A client can ask for the stricter answer, CONTEXT_BUSY, with metadata.delivery: "reject".

Not served

Part of A2A 1.0What to use
Streaming: SendStreamingMessage and SubscribeToTaskPush notifications, and GetTask.
The HTTP+JSON and gRPC bindingsThe JSON-RPC binding.
Standard authentication straight to the Runtime: OAuth client credentials, and security schemes on the Runtime's cardCall through createA2aHandler() on your server, which checks callers its own way and lists its own security schemes on the card, or with an application key and a subject.
GetExtendedAgentCard (extendedAgentCard: false)The public Agent Card.
A2A 0.3 clientsA2A 1.0.
Signed Agent CardsNone.

How it is checked

CI runs the A2A TCK against a published example agent for every release candidate. A failure that is not on the release's list of known failures blocks the release. The profile's own conformance suite covers the extensions, push signing and retries, queued messages, and ListTasks paging.

Latest TCK results

The A2A TCK results are published with each Runtime release, starting with @nylorun/runtime 0.37.0-beta, together with that release's known failures.

On this page