UAT: A2A Python SDK not listed as a project dependency in pyproject.toml — spec requires both transports use the A2A Python SDK #2922

Closed
opened 2026-04-05 02:49:07 +00:00 by freemo · 5 comments
Owner

Metadata

  • Branch: fix/a2a-python-sdk-dependency
  • Commit Message: fix(a2a): add A2A Python SDK as project dependency
  • Milestone: v3.4.0
  • Parent Epic: #933

Background and Context

The specification (§Overview, §Server and Client Architecture) explicitly states: "Both transports use the A2A Python SDK." and "The A2A Python SDK provides both transports" (local stdio and HTTP). However, the a2a package (the official A2A Python SDK from a2a-protocol.org) is not listed anywhere in pyproject.toml dependencies, nor is it present in uv.lock.

All clients — CLI, TUI, IDE plugin, and third-party — must communicate exclusively through A2A using the SDK. The current implementation uses a custom in-process facade (A2aLocalFacade) that bypasses the SDK entirely, and the HTTP transport (A2aHttpTransport) is a stub that raises A2aNotAvailableError for all operations.

Current Behavior

The a2a package is absent from pyproject.toml [project.dependencies] and uv.lock. The current workaround (direct Python method calls via A2aLocalFacade) bypasses the protocol entirely and is not compliant with the spec requirement that "Every client operation flows through A2A regardless of deployment mode."

Affected files:

  • /app/pyproject.toml — dependencies section, lines 25–52 (no a2a entry)
  • /app/src/cleveragents/a2a/transport.py — stub HTTP transport raising A2aNotAvailableError
  • /app/src/cleveragents/a2a/cli_bootstrap.py — direct facade construction without SDK

Steps to reproduce:

  1. Open pyproject.toml
  2. Search for a2a in the [project.dependencies] section
  3. Observe: no a2a package listed
  4. Run uv pip list | grep a2a — no A2A SDK installed

Expected Behavior

The A2A Python SDK (a2a) must be listed as a project dependency in pyproject.toml since it is the required transport mechanism for both local (stdio) and server (HTTP) modes, as mandated by the specification.

Acceptance Criteria

  • The a2a package appears in [project.dependencies] in pyproject.toml with an appropriate version constraint
  • uv.lock is regenerated and includes the a2a package and its transitive dependencies
  • uv sync installs the a2a SDK without errors
  • uv pip list | grep a2a confirms the SDK is installed in the project environment
  • No regressions introduced to existing tests

Subtasks

  • Identify the correct version of the a2a Python SDK compatible with the project's Python version constraint
  • Add a2a to [project.dependencies] in pyproject.toml
  • Regenerate uv.lock via uv lock
  • Verify uv sync installs cleanly
  • Add/update Behave scenario confirming a2a is importable as a project dependency
  • Run nox (all default sessions) and fix any errors
  • Verify coverage >= 97% via nox -s coverage_report

Definition of Done

  • a2a package is present in pyproject.toml [project.dependencies]
  • uv.lock is updated and committed
  • uv pip list | grep a2a confirms SDK is installed
  • Behave scenario added confirming SDK importability
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `fix/a2a-python-sdk-dependency` - **Commit Message**: `fix(a2a): add A2A Python SDK as project dependency` - **Milestone**: v3.4.0 - **Parent Epic**: #933 ## Background and Context The specification (§Overview, §Server and Client Architecture) explicitly states: *"Both transports use the A2A Python SDK."* and *"The A2A Python SDK provides both transports"* (local stdio and HTTP). However, the `a2a` package (the official A2A Python SDK from a2a-protocol.org) is not listed anywhere in `pyproject.toml` dependencies, nor is it present in `uv.lock`. All clients — CLI, TUI, IDE plugin, and third-party — must communicate exclusively through A2A using the SDK. The current implementation uses a custom in-process facade (`A2aLocalFacade`) that bypasses the SDK entirely, and the HTTP transport (`A2aHttpTransport`) is a stub that raises `A2aNotAvailableError` for all operations. ## Current Behavior The `a2a` package is absent from `pyproject.toml` `[project.dependencies]` and `uv.lock`. The current workaround (direct Python method calls via `A2aLocalFacade`) bypasses the protocol entirely and is not compliant with the spec requirement that *"Every client operation flows through A2A regardless of deployment mode."* **Affected files**: - `/app/pyproject.toml` — dependencies section, lines 25–52 (no `a2a` entry) - `/app/src/cleveragents/a2a/transport.py` — stub HTTP transport raising `A2aNotAvailableError` - `/app/src/cleveragents/a2a/cli_bootstrap.py` — direct facade construction without SDK **Steps to reproduce**: 1. Open `pyproject.toml` 2. Search for `a2a` in the `[project.dependencies]` section 3. Observe: no `a2a` package listed 4. Run `uv pip list | grep a2a` — no A2A SDK installed ## Expected Behavior The A2A Python SDK (`a2a`) must be listed as a project dependency in `pyproject.toml` since it is the required transport mechanism for both local (stdio) and server (HTTP) modes, as mandated by the specification. ## Acceptance Criteria - [ ] The `a2a` package appears in `[project.dependencies]` in `pyproject.toml` with an appropriate version constraint - [ ] `uv.lock` is regenerated and includes the `a2a` package and its transitive dependencies - [ ] `uv sync` installs the `a2a` SDK without errors - [ ] `uv pip list | grep a2a` confirms the SDK is installed in the project environment - [ ] No regressions introduced to existing tests ## Subtasks - [ ] Identify the correct version of the `a2a` Python SDK compatible with the project's Python version constraint - [ ] Add `a2a` to `[project.dependencies]` in `pyproject.toml` - [ ] Regenerate `uv.lock` via `uv lock` - [ ] Verify `uv sync` installs cleanly - [ ] Add/update Behave scenario confirming `a2a` is importable as a project dependency - [ ] Run `nox` (all default sessions) and fix any errors - [ ] Verify coverage >= 97% via `nox -s coverage_report` ## Definition of Done - [ ] `a2a` package is present in `pyproject.toml` `[project.dependencies]` - [ ] `uv.lock` is updated and committed - [ ] `uv pip list | grep a2a` confirms SDK is installed - [ ] Behave scenario added confirming SDK importability - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.4.0 milestone 2026-04-05 02:49:12 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: High (confirmed)
  • MoSCoW: Should Have — A2A SDK dependency is spec-required

Valid UAT finding verified during batch triage.


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

Issue triaged by project owner: - **State**: Verified - **Priority**: High (confirmed) - **MoSCoW**: Should Have — A2A SDK dependency is spec-required Valid UAT finding verified during batch triage. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Author
Owner

Starting implementation on branch fix/a2a-python-sdk-dependency.

Analysis: The a2a-sdk package (PyPI: a2a-sdk, installs as a2a module) is the official A2A Python SDK from Google/a2a-protocol.org. Latest compatible version: 0.3.25. This is the correct package to add as a project dependency.

Plan:

  1. Write failing Behave scenario (TDD) confirming a2a is importable as a project dependency
  2. Add a2a-sdk>=0.3.0 to [project.dependencies] in pyproject.toml
  3. Regenerate uv.lock and verify uv sync
  4. Run all nox quality gates

Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

Starting implementation on branch `fix/a2a-python-sdk-dependency`. **Analysis**: The `a2a-sdk` package (PyPI: `a2a-sdk`, installs as `a2a` module) is the official A2A Python SDK from Google/a2a-protocol.org. Latest compatible version: `0.3.25`. This is the correct package to add as a project dependency. **Plan**: 1. Write failing Behave scenario (TDD) confirming `a2a` is importable as a project dependency 2. Add `a2a-sdk>=0.3.0` to `[project.dependencies]` in `pyproject.toml` 3. Regenerate `uv.lock` and verify `uv sync` 4. Run all nox quality gates --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
Author
Owner

Label compliance fix applied:

  • Removed conflicting label: State/Verified
  • Kept: State/In Progress
  • Reason: Issue had two conflicting State/* labels. Per CONTRIBUTING.md, exactly one State/* label is required. Since the issue is actively in progress, State/In Progress is the correct state.

Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: ca-backlog-groomer

Label compliance fix applied: - Removed conflicting label: `State/Verified` - Kept: `State/In Progress` - Reason: Issue had two conflicting `State/*` labels. Per CONTRIBUTING.md, exactly one `State/*` label is required. Since the issue is actively in progress, `State/In Progress` is the correct state. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
Author
Owner

All subtasks complete. Quality gates passed. PR #3178 created on branch fix/a2a-python-sdk-dependency.

Results:

  • a2a-sdk>=0.3.0 added to [project.dependencies] in pyproject.toml
  • uv.lock regenerated (resolves to a2a-sdk 0.3.25)
  • uv sync installs cleanly
  • 3 new Behave TDD scenarios added and passing
  • nox -e lint — all checks passed
  • nox -e typecheck — 0 errors, 0 warnings
  • nox -e unit_tests — 14,429 scenarios passed, 0 failed

PR review and merge handled by continuous review stream.


Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

All subtasks complete. Quality gates passed. PR #3178 created on branch `fix/a2a-python-sdk-dependency`. **Results**: - ✅ `a2a-sdk>=0.3.0` added to `[project.dependencies]` in `pyproject.toml` - ✅ `uv.lock` regenerated (resolves to `a2a-sdk 0.3.25`) - ✅ `uv sync` installs cleanly - ✅ 3 new Behave TDD scenarios added and passing - ✅ `nox -e lint` — all checks passed - ✅ `nox -e typecheck` — 0 errors, 0 warnings - ✅ `nox -e unit_tests` — 14,429 scenarios passed, 0 failed PR review and merge handled by continuous review stream. --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
freemo removed this from the v3.4.0 milestone 2026-04-06 21:01:52 +00:00
Owner

State label reconciliation:

  • Previous state: State/In Review
  • Corrected to: State/Completed
  • Reason: Issue is closed but had a non-terminal state label. CONTRIBUTING.md requires closed issues to have State/Completed or State/Wont Do.

Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

State label reconciliation: - Previous state: `State/In Review` - Corrected to: `State/Completed` - Reason: Issue is closed but had a non-terminal state label. CONTRIBUTING.md requires closed issues to have `State/Completed` or `State/Wont Do`. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#2922
No description provided.