UAT: Standard A2A message/send and message/stream operations not implemented in A2aLocalFacade — core agent conversation protocol missing #2547

Closed
opened 2026-04-03 18:51:29 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: fix/a2a-message-operations
  • Commit Message: feat(a2a): implement message/send and message/stream standard A2A operations
  • Milestone: v3.6.0
  • Parent Epic: #933

Bug Description

The spec defines message/send and message/stream as the standard A2A operations for agent conversation. These are the core operations that every A2A-compliant client uses to communicate with the agent. However, neither operation is implemented in A2aLocalFacade.

Actual behavior: Calling message/send or message/stream raises A2aOperationNotFoundError:

facade.dispatch(A2aRequest(
    method="message/send",
    params={"message": {"role": "user", "parts": [{"kind": "text", "text": "Refactor the auth module"}]}}
))
# Raises: A2aOperationNotFoundError: Unknown A2A method: message/send

Neither message/send nor message/stream appear in _EXTENSION_OPERATIONS or _LEGACY_OPERATIONS in facade.py.

Expected Behavior (from spec)

Per the spec's A2A Standard Operations table:

A2A Operation Direction CleverAgents Mapping
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

The spec also defines the wire format:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "message": {"role": "user", "parts": [{"kind": "text", "text": "Refactor the auth module"}]},
    "taskId": "task_01HXR..."
  }
}

The response should be:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {"status": "accepted"}
}

Code Location

  • Facade: src/cleveragents/a2a/facade.py_EXTENSION_OPERATIONS and _LEGACY_OPERATIONS lists do not include message/send or message/stream
  • Missing service: No SessionWorkflow class exists in the codebase to handle the conversation routing

Impact

This is a critical gap — without message/send, no A2A client can have a conversation with the CleverAgents agent. The entire agent interaction lifecycle depends on this operation.

Subtasks

  • Add message/send to supported operations in A2aLocalFacade
  • Implement _handle_message_send() handler that routes to SessionWorkflow.tell()
  • Add message/stream to supported operations in A2aLocalFacade
  • Implement _handle_message_stream() handler with SSE streaming support
  • Implement SessionWorkflow or wire to existing session/actor orchestration
  • Add BDD tests for message/send and message/stream

Definition of Done

  • message/send creates or updates a Task and returns {"status": "accepted"}
  • message/stream returns streaming TaskStatusUpdateEvent and TaskArtifactUpdateEvent events via SSE
  • Both operations are covered by BDD tests

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

## Metadata - **Branch**: `fix/a2a-message-operations` - **Commit Message**: `feat(a2a): implement message/send and message/stream standard A2A operations` - **Milestone**: v3.6.0 - **Parent Epic**: #933 ## Bug Description The spec defines `message/send` and `message/stream` as the **standard A2A operations** for agent conversation. These are the core operations that every A2A-compliant client uses to communicate with the agent. However, neither operation is implemented in `A2aLocalFacade`. **Actual behavior:** Calling `message/send` or `message/stream` raises `A2aOperationNotFoundError`: ```python facade.dispatch(A2aRequest( method="message/send", params={"message": {"role": "user", "parts": [{"kind": "text", "text": "Refactor the auth module"}]}} )) # Raises: A2aOperationNotFoundError: Unknown A2A method: message/send ``` Neither `message/send` nor `message/stream` appear in `_EXTENSION_OPERATIONS` or `_LEGACY_OPERATIONS` in `facade.py`. ## Expected Behavior (from spec) Per the spec's A2A Standard Operations table: > | A2A Operation | Direction | CleverAgents Mapping | > | :------------ | :-------- | :------------------- | > | `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 | The spec also defines the wire format: ```json { "jsonrpc": "2.0", "id": 1, "method": "message/send", "params": { "message": {"role": "user", "parts": [{"kind": "text", "text": "Refactor the auth module"}]}, "taskId": "task_01HXR..." } } ``` The response should be: ```json { "jsonrpc": "2.0", "id": 1, "result": {"status": "accepted"} } ``` ## Code Location - **Facade**: `src/cleveragents/a2a/facade.py` — `_EXTENSION_OPERATIONS` and `_LEGACY_OPERATIONS` lists do not include `message/send` or `message/stream` - **Missing service**: No `SessionWorkflow` class exists in the codebase to handle the conversation routing ## Impact This is a **critical gap** — without `message/send`, no A2A client can have a conversation with the CleverAgents agent. The entire agent interaction lifecycle depends on this operation. ## Subtasks - [ ] Add `message/send` to supported operations in `A2aLocalFacade` - [ ] Implement `_handle_message_send()` handler that routes to `SessionWorkflow.tell()` - [ ] Add `message/stream` to supported operations in `A2aLocalFacade` - [ ] Implement `_handle_message_stream()` handler with SSE streaming support - [ ] Implement `SessionWorkflow` or wire to existing session/actor orchestration - [ ] Add BDD tests for `message/send` and `message/stream` ## Definition of Done - `message/send` creates or updates a Task and returns `{"status": "accepted"}` - `message/stream` returns streaming `TaskStatusUpdateEvent` and `TaskArtifactUpdateEvent` events via SSE - Both operations are covered by BDD tests --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-uat-tester
Author
Owner

Closing as duplicate of #2140. Both issues report the same missing message/send and message/stream standard A2A operations.


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

Closing as duplicate of #2140. Both issues report the same missing `message/send` and `message/stream` standard A2A operations. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
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.

Dependencies

No dependencies set.

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