a2aproject/a2a-python

[Bug]: JSONRPC error mapping

maeste opened this issue · 2 comments

What happened?

Running the @a2a-project/a2a-tck I got a few discrepancy on JSONRPC error mapping compared to JSONRPC 2.0 spec

Analysis of the issues:

  1. Test case 0 - Missing jsonrpc field:
    - TCK expects: -32600 (Invalid Request) ✅ CORRECT
    - SUT returns: -32602 (Invalid params) ❌ INCORRECT
    - Verdict: SUT is wrong - missing jsonrpc makes the request invalid per JSON-RPC spec
  2. Test case 3 - Invalid id type:
    - TCK expects: -32600 (Invalid Request) ✅ CORRECT
    - SUT returns: 500 HTTP error ❌ MAJOR BUG
    - Verdict: SUT is wrong - it should return -32600, not crash with 500
  3. Test case 4 - Invalid params type:
    - TCK expects: -32602 (Invalid params) ✅ CORRECT
    - SUT returns: -32600 (Invalid Request) ❌ INCORRECT
    - Verdict: SUT is wrong - when params is wrong type, it's invalid params, not invalid request

Relevant log output

Code of Conduct

  • I agree to follow this project's Code of Conduct

Another issue on canceling task: Incorrect Error Code for Completed Task Cancellation

  • What's happening: SUT returns -32004 (operation not supported) when trying to cancel a completed
    task
  • What should happen: According to A2A spec section 8.2, it should return -32002
    (TaskNotCancelableError)
  • Problem: SUT is using wrong error code

Another issue: in "task/get" the paramether "historyLength" is acceppted but ignored