UAT: A2aHttpTransport raises A2aNotAvailableError on all operations — server-mode A2A over HTTP completely non-functional #4903

Open
opened 2026-04-08 20:17:54 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: Server Mode — A2A over HTTP transport

What Was Tested

The A2aHttpTransport class for server-mode A2A over HTTP functionality.

Expected Behavior (from spec)

Per ADR-023 (Server Mode) and ADR-047 (A2A Standard Adoption):

In server mode, A2A flows over HTTP to the CleverAgents server. Both transports use the A2A Python SDK.

When server.url is configured, all A2A operations should be routed through the HTTP transport to the remote server. The A2aHttpTransport should:

  1. Accept connect(base_url) to establish a connection
  2. Accept send(request) to send A2A JSON-RPC 2.0 requests over HTTP
  3. Accept disconnect() to close the connection
  4. Return True from is_connected() when connected

Actual Behavior (from code)

File: src/cleveragents/a2a/transport.py

Every method in A2aHttpTransport raises A2aNotAvailableError:

class A2aHttpTransport:
    def send(self, request: A2aRequest) -> A2aResponse:
        raise A2aNotAvailableError(
            "A2A HTTP transport is not available in local mode"
            " - server mode will be implemented as a separate project"
        )

    def connect(self, base_url: str) -> None:
        raise A2aNotAvailableError(...)

    def disconnect(self) -> None:
        raise A2aNotAvailableError(...)

    def is_connected(self) -> bool:
        return False

The error message says "server mode will be implemented as a separate project" — but the spec (ADR-048) says the server IS a separate project, and the client-side HTTP transport should be implemented in this repository to connect to it.

Additionally, there is no code that routes A2A operations through A2aHttpTransport when server.url is set. The A2aLocalFacade is always used regardless of server configuration.

Steps to Reproduce

from cleveragents.a2a.transport import A2aHttpTransport
from cleveragents.a2a.models import A2aRequest

transport = A2aHttpTransport()
transport.connect("https://agents.example.com")
# Raises: A2aNotAvailableError: A2A HTTP transport is not available in local mode

Code Location

  • src/cleveragents/a2a/transport.pyA2aHttpTransport class
  • src/cleveragents/a2a/cli_bootstrap.pyget_facade() always returns A2aLocalFacade, never routes to HTTP transport

Impact

Server-mode A2A over HTTP is completely non-functional. When server.url is configured, all operations still run locally via A2aLocalFacade instead of being routed to the remote server. The entire server mode value proposition (remote plan execution, shared namespaces, team collaboration) is blocked.


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

## Bug Report **Feature Area:** Server Mode — A2A over HTTP transport ### What Was Tested The `A2aHttpTransport` class for server-mode A2A over HTTP functionality. ### Expected Behavior (from spec) Per ADR-023 (Server Mode) and ADR-047 (A2A Standard Adoption): > In server mode, A2A flows over **HTTP** to the CleverAgents server. Both transports use the A2A Python SDK. When `server.url` is configured, all A2A operations should be routed through the HTTP transport to the remote server. The `A2aHttpTransport` should: 1. Accept `connect(base_url)` to establish a connection 2. Accept `send(request)` to send A2A JSON-RPC 2.0 requests over HTTP 3. Accept `disconnect()` to close the connection 4. Return `True` from `is_connected()` when connected ### Actual Behavior (from code) **File:** `src/cleveragents/a2a/transport.py` Every method in `A2aHttpTransport` raises `A2aNotAvailableError`: ```python class A2aHttpTransport: def send(self, request: A2aRequest) -> A2aResponse: raise A2aNotAvailableError( "A2A HTTP transport is not available in local mode" " - server mode will be implemented as a separate project" ) def connect(self, base_url: str) -> None: raise A2aNotAvailableError(...) def disconnect(self) -> None: raise A2aNotAvailableError(...) def is_connected(self) -> bool: return False ``` The error message says "server mode will be implemented as a separate project" — but the spec (ADR-048) says the server IS a separate project, and the client-side HTTP transport should be implemented in this repository to connect to it. Additionally, there is no code that routes A2A operations through `A2aHttpTransport` when `server.url` is set. The `A2aLocalFacade` is always used regardless of server configuration. ### Steps to Reproduce ```python from cleveragents.a2a.transport import A2aHttpTransport from cleveragents.a2a.models import A2aRequest transport = A2aHttpTransport() transport.connect("https://agents.example.com") # Raises: A2aNotAvailableError: A2A HTTP transport is not available in local mode ``` ### Code Location - `src/cleveragents/a2a/transport.py` — `A2aHttpTransport` class - `src/cleveragents/a2a/cli_bootstrap.py` — `get_facade()` always returns `A2aLocalFacade`, never routes to HTTP transport ### Impact Server-mode A2A over HTTP is completely non-functional. When `server.url` is configured, all operations still run locally via `A2aLocalFacade` instead of being routed to the remote server. The entire server mode value proposition (remote plan execution, shared namespaces, team collaboration) is blocked. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: High — A2A HTTP Transport is completely non-functional, blocks all server-mode operations
  • Milestone: v3.5.0 — Server mode / A2A transport is M6 scope
  • Story Points: 8 — XL — Implementing real A2A HTTP transport layer (not a stub)
  • MoSCoW: Must Have — Server mode cannot function without a working transport layer
  • Parent Epic: #360 (Autonomy Hardening + Stubs M6)

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

Issue triaged by project owner: - **State**: Verified - **Priority**: High — A2A HTTP Transport is completely non-functional, blocks all server-mode operations - **Milestone**: v3.5.0 — Server mode / A2A transport is M6 scope - **Story Points**: 8 — XL — Implementing real A2A HTTP transport layer (not a stub) - **MoSCoW**: Must Have — Server mode cannot function without a working transport layer - **Parent Epic**: #360 (Autonomy Hardening + Stubs M6) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
freemo added this to the v3.5.0 milestone 2026-04-08 23:39:31 +00:00
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: High — A2A HTTP transport is completely non-functional; blocks all server mode connectivity
  • Milestone: v3.5.0 (already assigned correctly)
  • Story Points: 8 — XL — Implementing a full A2A HTTP transport layer is a very large task requiring protocol implementation
  • MoSCoW: Must Have — Server mode A2A over HTTP is a core requirement for multi-user deployment per spec
  • Parent Epic: #4947 (Server Implementation Legendary)

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

Issue triaged by project owner: - **State**: Verified - **Priority**: High — A2A HTTP transport is completely non-functional; blocks all server mode connectivity - **Milestone**: v3.5.0 (already assigned correctly) - **Story Points**: 8 — XL — Implementing a full A2A HTTP transport layer is a very large task requiring protocol implementation - **MoSCoW**: Must Have — Server mode A2A over HTTP is a core requirement for multi-user deployment per spec - **Parent Epic**: #4947 (Server Implementation Legendary) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
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#4903
No description provided.