UAT: a2a-sdk declared as required dependency but never imported — A2A Python SDK completely unused in implementation #5096

Open
opened 2026-04-09 01:01:01 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: A2A Protocol — SDK integration
Severity: High — the A2A Python SDK is declared as a required dependency but never used; custom models replace SDK types in violation of ADR-047


What Was Tested

Code-level analysis of pyproject.toml and all src/cleveragents/ source files — checking whether the a2a-sdk dependency is actually used.

Expected Behavior (from spec)

Per ADR-047 (A2A Standard Adoption):

Both transports use the A2A Python SDK.

The A2A Python SDK provides production-quality JSON-RPC and HTTP transports, eliminating the need for our stub transport and custom serialization code.

| A2A SDK JSON-RPC types | Wire format types | SendMessageRequest, Task, Message, Part, TaskStatusUpdateEvent, etc. |

The spec explicitly states that the A2A Python SDK should be used for:

  1. Wire format types (SendMessageRequest, Task, Message, Part, TaskStatusUpdateEvent, TaskArtifactUpdateEvent)
  2. HTTP transport (server mode)
  3. JSON-RPC transport (local stdio mode)

Actual Behavior

pyproject.toml (line 51):

"a2a-sdk>=0.3.0",  # A2A Python SDK — required transport for local (stdio) and server (HTTP) modes (ADR-047)

The SDK is declared as a required dependency. However, searching all source files:

$ grep -rn "from a2a " src/cleveragents/
(no results)

$ grep -rn "import a2a" src/cleveragents/
(no results)

The a2a-sdk package is never imported anywhere in the codebase. Instead, the implementation uses:

  • Custom A2aRequest, A2aResponse, A2aEvent Pydantic models (in a2a/models.py) instead of SDK types
  • A stub A2aHttpTransport that raises A2aNotAvailableError instead of the SDK's HTTP transport
  • No SDK JSON-RPC types (SendMessageRequest, Task, Message, Part, etc.)

Impact

  • The A2A Python SDK's production-quality transport implementations are not used
  • Custom wire format models may diverge from the A2A standard schema
  • The a2a-sdk package is an unused dependency that adds installation overhead
  • Third-party clients using the A2A SDK may encounter incompatibilities with the custom models

Code Location

  • pyproject.toml line 51 — declares a2a-sdk>=0.3.0 as required
  • src/cleveragents/a2a/models.py — custom models instead of SDK types
  • src/cleveragents/a2a/transport.py — stub transport instead of SDK transport
  • No file in src/cleveragents/ imports from a2a

Fix Required

The implementation should use the A2A Python SDK's types and transports:

  1. Replace custom A2aRequest/A2aResponse with SDK's SendMessageRequest/Task types
  2. Replace stub A2aHttpTransport with SDK's HTTP transport
  3. Use SDK's JSON-RPC types for wire format serialization

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** A2A Protocol — SDK integration **Severity:** High — the A2A Python SDK is declared as a required dependency but never used; custom models replace SDK types in violation of ADR-047 --- ### What Was Tested Code-level analysis of `pyproject.toml` and all `src/cleveragents/` source files — checking whether the `a2a-sdk` dependency is actually used. ### Expected Behavior (from spec) Per ADR-047 (A2A Standard Adoption): > **Both transports use the A2A Python SDK.** > The A2A Python SDK provides production-quality JSON-RPC and HTTP transports, eliminating the need for our stub transport and custom serialization code. > | A2A SDK JSON-RPC types | **Wire format types** | `SendMessageRequest`, `Task`, `Message`, `Part`, `TaskStatusUpdateEvent`, etc. | The spec explicitly states that the A2A Python SDK should be used for: 1. Wire format types (`SendMessageRequest`, `Task`, `Message`, `Part`, `TaskStatusUpdateEvent`, `TaskArtifactUpdateEvent`) 2. HTTP transport (server mode) 3. JSON-RPC transport (local stdio mode) ### Actual Behavior **`pyproject.toml` (line 51):** ```toml "a2a-sdk>=0.3.0", # A2A Python SDK — required transport for local (stdio) and server (HTTP) modes (ADR-047) ``` The SDK is declared as a required dependency. However, searching all source files: ``` $ grep -rn "from a2a " src/cleveragents/ (no results) $ grep -rn "import a2a" src/cleveragents/ (no results) ``` The `a2a-sdk` package is **never imported** anywhere in the codebase. Instead, the implementation uses: - Custom `A2aRequest`, `A2aResponse`, `A2aEvent` Pydantic models (in `a2a/models.py`) instead of SDK types - A stub `A2aHttpTransport` that raises `A2aNotAvailableError` instead of the SDK's HTTP transport - No SDK JSON-RPC types (`SendMessageRequest`, `Task`, `Message`, `Part`, etc.) ### Impact - The A2A Python SDK's production-quality transport implementations are not used - Custom wire format models may diverge from the A2A standard schema - The `a2a-sdk` package is an unused dependency that adds installation overhead - Third-party clients using the A2A SDK may encounter incompatibilities with the custom models ### Code Location - `pyproject.toml` line 51 — declares `a2a-sdk>=0.3.0` as required - `src/cleveragents/a2a/models.py` — custom models instead of SDK types - `src/cleveragents/a2a/transport.py` — stub transport instead of SDK transport - No file in `src/cleveragents/` imports from `a2a` ### Fix Required The implementation should use the A2A Python SDK's types and transports: 1. Replace custom `A2aRequest`/`A2aResponse` with SDK's `SendMessageRequest`/`Task` types 2. Replace stub `A2aHttpTransport` with SDK's HTTP transport 3. Use SDK's JSON-RPC types for wire format serialization --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.2.0 milestone 2026-04-09 01:10:48 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: High — Critical spec compliance bug
  • Milestone: v3.2.0
  • Story Points: 3 — M
  • MoSCoW: Must Have

Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: High — Critical spec compliance bug - **Milestone**: v3.2.0 - **Story Points**: 3 — M - **MoSCoW**: Must Have --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
HAL9000 modified the milestone from v3.2.0 to v3.5.0 2026-04-09 01:11:49 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#5096
No description provided.