UAT: A2aLocalFacade does not support standard A2A operations message/send and message/stream — spec requires them as the primary agent interaction methods #2140

Closed
opened 2026-04-03 04:22:56 +00:00 by freemo · 3 comments
Owner

Metadata

  • Branch: fix/a2a-local-facade-message-send-stream
  • Commit Message: fix(a2a): implement message/send and message/stream in A2aLocalFacade dispatch
  • Milestone: v3.7.0
  • Parent Epic: #933

Bug Report

What Was Tested

The specification designates A2A as the sole communication protocol and defines message/send and message/stream as the primary standard A2A operations for agent interaction:

"The A2A standard defines operations for the core agent interaction lifecycle... message/send | Client → Server | SessionWorkflow.tell() — send user message to orchestrator actor; creates or updates a Task"
"message/stream | Client → Server | SessionWorkflow.tell() with streaming — returns TaskStatusUpdateEvent / TaskArtifactUpdateEvent via SSE"

Every CLI command maps to an A2A operation. All clients (CLI, TUI, IDE plugins) must be able to send messages to the agent via these standard operations.

Expected Behavior (from spec)

A2aLocalFacade must support message/send and message/stream as standard A2A operations. Dispatching either method must route to the appropriate SessionWorkflow handler — message/send creates or updates a Task synchronously, and message/stream returns streaming TaskStatusUpdateEvent / TaskArtifactUpdateEvent events via SSE.

Actual Behavior

A2aLocalFacade._EXTENSION_OPERATIONS (lines 57–96 of src/cleveragents/a2a/facade.py) and _LEGACY_OPERATIONS (lines 98–111) do not include message/send or message/stream. Dispatching either method raises A2aOperationNotFoundError. The facade only supports proprietary session.*, plan.*, registry.*, context.*, and event.* operations.

Steps to Reproduce

from cleveragents.a2a.facade import A2aLocalFacade
from cleveragents.a2a.models import A2aRequest

facade = A2aLocalFacade()
request = A2aRequest(
    method="message/send",
    params={"message": {"role": "user", "parts": [{"text": "hello"}]}}
)
facade.dispatch(request)  # Raises A2aOperationNotFoundError

Code Location

src/cleveragents/a2a/facade.py:

  • _EXTENSION_OPERATIONS list (lines 57–96) — does not contain message/send or message/stream
  • _LEGACY_OPERATIONS list (lines 98–111) — does not contain message/send or message/stream

Severity

High — the primary A2A standard operations are missing from the local facade, meaning no client can send messages to the agent via the A2A protocol.

Subtasks

  • Write TDD issue-capture Behave scenario demonstrating A2aOperationNotFoundError raised for message/send and message/stream
  • Add message/send to A2aLocalFacade dispatch, routing to SessionWorkflow.tell() (synchronous)
  • Add message/stream to A2aLocalFacade dispatch, routing to SessionWorkflow.tell() with streaming, yielding TaskStatusUpdateEvent / TaskArtifactUpdateEvent
  • Ensure JSON-RPC 2.0 framing is preserved in request/response for both operations
  • Update Behave scenarios to cover success paths for both operations
  • Run nox -e typecheck — fix any type errors
  • Run nox -e unit_tests — all scenarios pass
  • Run nox -e coverage_report — coverage ≥ 97%
  • Run nox (all default sessions) — no failures

Definition of Done

  • A2aLocalFacade.dispatch("message/send", ...) routes correctly to SessionWorkflow.tell() and returns a valid JSON-RPC 2.0 Task response
  • A2aLocalFacade.dispatch("message/stream", ...) routes correctly and yields TaskStatusUpdateEvent / TaskArtifactUpdateEvent events
  • A2aOperationNotFoundError is no longer raised for message/send or message/stream
  • Behave scenarios cover both the bug-capture (regression) and success paths
  • A PR has been merged that closes this issue
  • All nox stages pass
  • Coverage >= 97%

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

## Metadata - **Branch**: `fix/a2a-local-facade-message-send-stream` - **Commit Message**: `fix(a2a): implement message/send and message/stream in A2aLocalFacade dispatch` - **Milestone**: v3.7.0 - **Parent Epic**: #933 ## Bug Report ### What Was Tested The specification designates A2A as the **sole** communication protocol and defines `message/send` and `message/stream` as the primary standard A2A operations for agent interaction: > "The A2A standard defines operations for the core agent interaction lifecycle... `message/send` | Client → Server | `SessionWorkflow.tell()` — send user message to orchestrator actor; creates or updates a Task" > "`message/stream` | Client → Server | `SessionWorkflow.tell()` with streaming — returns `TaskStatusUpdateEvent` / `TaskArtifactUpdateEvent` via SSE" Every CLI command maps to an A2A operation. All clients (CLI, TUI, IDE plugins) must be able to send messages to the agent via these standard operations. ### Expected Behavior (from spec) `A2aLocalFacade` must support `message/send` and `message/stream` as standard A2A operations. Dispatching either method must route to the appropriate `SessionWorkflow` handler — `message/send` creates or updates a Task synchronously, and `message/stream` returns streaming `TaskStatusUpdateEvent` / `TaskArtifactUpdateEvent` events via SSE. ### Actual Behavior `A2aLocalFacade._EXTENSION_OPERATIONS` (lines 57–96 of `src/cleveragents/a2a/facade.py`) and `_LEGACY_OPERATIONS` (lines 98–111) do not include `message/send` or `message/stream`. Dispatching either method raises `A2aOperationNotFoundError`. The facade only supports proprietary `session.*`, `plan.*`, `registry.*`, `context.*`, and `event.*` operations. ### Steps to Reproduce ```python from cleveragents.a2a.facade import A2aLocalFacade from cleveragents.a2a.models import A2aRequest facade = A2aLocalFacade() request = A2aRequest( method="message/send", params={"message": {"role": "user", "parts": [{"text": "hello"}]}} ) facade.dispatch(request) # Raises A2aOperationNotFoundError ``` ### Code Location `src/cleveragents/a2a/facade.py`: - `_EXTENSION_OPERATIONS` list (lines 57–96) — does not contain `message/send` or `message/stream` - `_LEGACY_OPERATIONS` list (lines 98–111) — does not contain `message/send` or `message/stream` ### Severity **High** — the primary A2A standard operations are missing from the local facade, meaning no client can send messages to the agent via the A2A protocol. ## Subtasks - [ ] Write TDD issue-capture Behave scenario demonstrating `A2aOperationNotFoundError` raised for `message/send` and `message/stream` - [ ] Add `message/send` to `A2aLocalFacade` dispatch, routing to `SessionWorkflow.tell()` (synchronous) - [ ] Add `message/stream` to `A2aLocalFacade` dispatch, routing to `SessionWorkflow.tell()` with streaming, yielding `TaskStatusUpdateEvent` / `TaskArtifactUpdateEvent` - [ ] Ensure JSON-RPC 2.0 framing is preserved in request/response for both operations - [ ] Update Behave scenarios to cover success paths for both operations - [ ] Run `nox -e typecheck` — fix any type errors - [ ] Run `nox -e unit_tests` — all scenarios pass - [ ] Run `nox -e coverage_report` — coverage ≥ 97% - [ ] Run `nox` (all default sessions) — no failures ## Definition of Done - [ ] `A2aLocalFacade.dispatch("message/send", ...)` routes correctly to `SessionWorkflow.tell()` and returns a valid JSON-RPC 2.0 Task response - [ ] `A2aLocalFacade.dispatch("message/stream", ...)` routes correctly and yields `TaskStatusUpdateEvent` / `TaskArtifactUpdateEvent` events - [ ] `A2aOperationNotFoundError` is no longer raised for `message/send` or `message/stream` - [ ] Behave scenarios cover both the bug-capture (regression) and success paths - [ ] A PR has been merged that closes this issue - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.7.0 milestone 2026-04-03 04:23:00 +00:00
Author
Owner

⚠️ Potential duplicate: Issue #1385 ("UAT: A2A facade missing standard message/send and message/stream operations") appears to describe the same bug. Please check if these are duplicates before proceeding with implementation.


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

⚠️ **Potential duplicate**: Issue #1385 ("UAT: A2A facade missing standard message/send and message/stream operations") appears to describe the same bug. Please check if these are duplicates before proceeding with implementation. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
freemo self-assigned this 2026-04-03 16:58:02 +00:00
Author
Owner

MoSCoW classification: Must Have

Rationale: This issue addresses a core spec requirement or blocks critical functionality. The project cannot ship without this fix.


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

MoSCoW classification: **Must Have** Rationale: This issue addresses a core spec requirement or blocks critical functionality. The project cannot ship without this fix. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Author
Owner

Closing as duplicate of #2569.

Both issues describe the same bug: A2aLocalFacade is missing standard A2A operations message/send and message/stream. Issue #2569 is the established tracking issue (v3.8.0 milestone, Priority/High, State/Verified). Please track this work in #2569.


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

Closing as duplicate of #2569. Both issues describe the same bug: `A2aLocalFacade` is missing standard A2A operations `message/send` and `message/stream`. Issue #2569 is the established tracking issue (v3.8.0 milestone, `Priority/High`, `State/Verified`). Please track this work in #2569. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
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#2140
No description provided.