Commit Graph

3 Commits

Author SHA1 Message Date
freemo 8ea00f5185 fix: restore CI quality tests to passing state (#4175)
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-08 11:02:14 +00:00
freemo c1ebacd1b9 fix(a2a): rename A2aErrorDetail.details to data per JSON-RPC 2.0 spec
The A2aErrorDetail model used a field named 'details' for the optional
error payload, but JSON-RPC 2.0 §5.1 and the project specification both
require this field to be named 'data'.

Changes:
- Rename A2aErrorDetail.details -> data in src/cleveragents/a2a/models.py
- Add TDD BDD scenarios to features/a2a_jsonrpc_wire_format.feature that
  verify A2aErrorDetail serializes with 'data' field (not 'details')
- Add corresponding step definitions in a2a_jsonrpc_wire_format_steps.py

No call sites used the 'details' keyword argument when constructing
A2aErrorDetail instances (all existing usages only set code and message),
so no other files required changes.

ISSUES CLOSED: #2745
2026-04-05 08:57:12 +00:00
freemo 9c6d69153e fix(a2a): rename A2aRequest/A2aResponse fields to comply with JSON-RPC 2.0 wire format
Rewrites the A2aRequest and A2aResponse Pydantic models to use the field
names mandated by the JSON-RPC 2.0 specification, fixing a fundamental
protocol compliance issue that prevented external A2A-compliant clients
from communicating with the server.

Changes:
- A2aRequest: a2a_version→jsonrpc (fixed '2.0'), request_id→id,
  operation→method; auth field removed (not in JSON-RPC 2.0)
- A2aResponse: a2a_version→jsonrpc, request_id→id, status+data→result
  (success path), timing_ms removed; added _result_xor_error validator
  enforcing mutual exclusion of result and error fields
- A2aLocalFacade.dispatch(): updated to use request.method, request.id,
  result=data, error=A2aErrorDetail(...)
- A2aHttpTransport.send(): updated to use request.method
- CLI call sites (session.py, plan.py): updated A2aRequest(method=...)
  and response.result / response.error field access
- All existing A2A Behave step files updated to new field names
- New 35-scenario Behave feature (a2a_jsonrpc_wire_format.feature)
  covering serialisation, deserialisation, validation, and facade dispatch
- New 7-test Robot Framework suite (a2a_jsonrpc_wire_format.robot)
  for end-to-end wire format verification

ISSUES CLOSED: #1501
2026-04-03 00:29:46 +00:00