Skip to content

fix: A2A JSON-RPC v2: 1.0 Protocol-compliant#4380

Open
ilyakorovin wants to merge 2 commits intoarchestra-ai:mainfrom
ilyakorovin:fix/a2a-jsonrpc-protocol-compliant
Open

fix: A2A JSON-RPC v2: 1.0 Protocol-compliant#4380
ilyakorovin wants to merge 2 commits intoarchestra-ai:mainfrom
ilyakorovin:fix/a2a-jsonrpc-protocol-compliant

Conversation

@ilyakorovin
Copy link
Copy Markdown
Contributor

@ilyakorovin ilyakorovin commented May 5, 2026

closes #4370

Fixed agent card

Now it's 1.0-compliant. Official Python SDK recognizes it automatically without explicit protocol version and agent card path specifying.

Fixed methods names

message/send -> SendMessage

task/get -> GetTask

Previous impl was for 0.3

Fixed client messageId

Previously it was effectively ignored.

Message parts are optional

parts field is required by A2A Protocol, but Python SDK converts empty parts array to undefined.

On our side message.parts are always defined.

Fixed potential losing history in stateful mode

I didn't catch the bug in live, but potentially in A2A JSON-RPC it was possible to get an error in approval decision request, because of stale data via pg update+select anti-pattern.

Some tests and small bug fixes

There were bugs like missing contextId and taskId in the SendMessage response.


There is a sample tool that uses Python SDK for working with Archestra A2A JSON-RPC v2:

https://github.com/ilyakorovin/archestra-a2a-client-sample/tree/main/python

It's LLM-generated and ugly. But it supports interactive mode:

cd ./python
uv run a2a-client-sample interactive --host localhost --port 9000 <AGENT_ID> <TOKEN>   

Just type some text and press enter, it will execute SendMessage. In case of approval request it should ask "y/n". Further messages during the session should be within the same contextId.

It also supports message/approve sub-commands for more manual working with SendMessage and approval decisions.

@ilyakorovin ilyakorovin changed the title A2A JSON-RPC v2: 1.0 Protocol-compliant fix: A2A JSON-RPC v2: 1.0 Protocol-compliant May 5, 2026
@ilyakorovin ilyakorovin force-pushed the fix/a2a-jsonrpc-protocol-compliant branch from 48efc9f to 63fa2b9 Compare May 5, 2026 21:43
@ilyakorovin ilyakorovin marked this pull request as ready for review May 5, 2026 21:59
@ilyakorovin ilyakorovin force-pushed the fix/a2a-jsonrpc-protocol-compliant branch from 63fa2b9 to 18d7e2c Compare May 5, 2026 21:59
@ilyakorovin ilyakorovin force-pushed the fix/a2a-jsonrpc-protocol-compliant branch from 18d7e2c to 4879557 Compare May 6, 2026 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A2A JSON-RPC v2 follow up: SDK clients compatibility

1 participant