Profile v2
The Nylorun A2A profile, version 2, with its answers to the questions A2A 1.0 leaves open and its five extensions.
POST /v1/a2a/agents/support
A2A-Version: 1.0
A2A-Extensions: https://docs.nylorun.com/a2a/interactions/v1, https://docs.nylorun.com/a2a/progress/v1A2A 1.0 leaves some questions open, and keeps agents opaque by design. The Nylorun profile answers those questions for every Agent the Runtime serves, and its extensions carry what a client shows a person: approvals, plan steps, cost, a trace id, and file versions.
The profile is versioned: a change to any row is a new version. Version 2
keeps every row of version 1, adds three extensions, and adds the rules marked
v2 below. Every extension is declared with required: false, so an Agent that
serves v2 also serves a v1 client and a plain A2A 1.0 client.
The rules
| Question A2A leaves open | Nylorun's answer | Since |
|---|---|---|
| Which interrupted state an approval uses | AUTH_REQUIRED. A question uses INPUT_REQUIRED. A missing connection uses AUTH_REQUIRED with kind connection. | v1; kind connection in v2 |
| How an approval is expressed | Only through interactions/v1 metadata. Text never approves. | v1 |
| A step whose outcome was lost | The task stays WORKING, with uncertain under effects/v1. | v1 |
| A new message in a busy context | Queued, and answered with the task that will take it. A message with delivery: "reject" in its metadata gets UnsupportedOperationError, reason CONTEXT_BUSY, as in v1. | v2 |
| Task id | One per turn, made from the context and the turn. Opaque to callers. | v1 |
| What is visible while working | States, step text, and plan steps under progress/v1. Never tool calls, arguments, results, or delegations. | v1; plan steps in v2 |
| Who the caller acts for | The subject the caller authenticated as. | v2 |
The extensions
The Agent Card declares each extension with required: false. A client
activates the ones it wants with the A2A-Extensions request header, a
comma-separated list of URIs, and the Agent echoes the ones it activated in
the same response header. Extension data travels in metadata, keyed by the
extension's URI. A message that carries extension data lists the URI in its
extensions.
| Extension URI | Carries | On | Since |
|---|---|---|---|
https://docs.nylorun.com/a2a/interactions/v1 | An open interaction (interactionId, kind, prompt, detail); the caller's answer (interactionId, approved or value) | Status message; reply message | v1 |
https://docs.nylorun.com/a2a/effects/v1 | uncertain: the id of the effect whose outcome was lost | Status update | v1 |
https://docs.nylorun.com/a2a/progress/v1 | The agent's plan: up to 20 steps, each with a label, a state, and a note | Status update | v2 |
https://docs.nylorun.com/a2a/telemetry/v1 | Totals (steps, tokens, costUsd) and the turn's trace id | Terminal status update | v2 |
https://docs.nylorun.com/a2a/files/v1 | Each artifact's kind, version, size, sha256, and its path in the agent's outputs | Artifact | v2 |
What a v2 Agent serves
| A2A operation | v2 |
|---|---|
| Bindings | JSON-RPC, A2A 1.0, listed in the card's supportedInterfaces. Not HTTP+JSON, gRPC, or 0.3. |
SendMessage, GetTask, CancelTask | Yes. A blocking SendMessage waits up to the Runtime limit a2aWaitMs, 5 minutes by default, then answers with the task still WORKING. |
SendStreamingMessage, SubscribeToTask | No: the card says streaming: false. Updates reach callers by push. |
ListTasks | Yes, scoped to the caller's subject and the Agent, filtered by contextId, state, and statusTimestampAfter, latest status change first. |
| Push notification configs | Yes, when the Runtime has a push secret: delivered at least once, signed with Standard Webhooks, to hosts the Runtime allows. Retries last up to 24 hours. See Push notifications. |
url file parts, in and out | Yes. See files/v1. |
GetExtendedAgentCard | No. |
The full statement, with every documented choice, is on Conformance.
What a client gets
| Tier | Agent | What the client gets |
|---|---|---|
| Profile v2 | An Agent on @nylorun/runtime 0.37.0-beta or later, with the extensions activated | Typed approvals and connections, plan steps, cost, a trace id, and file versions |
| Core | Any A2A 1.0 agent, or an Agent called with no extension activated | States, messages, and artifacts. Approvals and connections arrive as text questions, and a text reply does not approve. No plan steps or cost. |
createA2aClient() from @nylorun/agents/a2a activates all five extensions by
default. See A2A client.