FoundationAgents/OpenManus · error · NotImplementedError
Streaming is not supported by Manus yet.
Error message
Streaming is not supported by Manus yet.
What it means
Raised by A2AManus.stream() because the Manus agent only implements non-streaming invocation. The A2A protocol surface expects an async iterable of events for streaming requests, but this implementation deliberately raises NotImplementedError to signal that capability is absent.
Solutions
- Use the non-streaming invoke path: send a plain message/send request instead of message/stream.
- Check the agent card / server capabilities before connecting and disable streaming for this agent.
- In your own executor, catch NotImplementedError from stream() and fall back to invoke(), emitting a single final event.
- If streaming is required, implement stream() to yield at least one event (e.g. wrap the invoke result).
Example fix
# before
async for event in agent.stream(query): # raises NotImplementedError
print(event)
# after
result = await agent.invoke(query, session_id) # non-streaming path is supported
print(result) Defensive patterns
Strategy: fallback
Validate before calling
capabilities = await fetch_agent_card(url) # check streaming support before connecting use_streaming = getattr(capabilities, 'streaming', False)
Type guard
def supports_streaming(agent) -> bool:
try:
return agent.stream is not None and not getattr(agent.stream, '_is_not_implemented', False)
except AttributeError:
return False Try / catch
try:
async for event in agent.stream(query):
handle(event)
except NotImplementedError:
result = await agent.invoke(query, session_id) # fall back to non-streaming
handle(result) Prevention
- Consult the agent card capabilities before enabling streaming on the client.
- Default to message/send for agents whose streaming support is unverified.
- Wrap streaming calls in a NotImplementedError fallback so one agent's limitation does not break the pipeline.
When it happens
Trigger: An A2A client sends a message/stream (SSE streaming) request instead of a non-streaming message request to the Manus agent endpoint; or code calls agent.stream(query) directly. The invoke() path works; only the streaming path fails.
Common situations: A2A clients that default to streaming; protocol gateways or test harnesses that probe both streaming and non-streaming modes; upgrading a client to use streaming without checking server capabilities (the agent card should be consulted).
Related errors
AI-assisted analysis of FoundationAgents/OpenManus@52a13f2a57 (2026-08-15).
Data as JSON: /api/errors/d4c8a7f54ae78d05.
Report an issue: GitHub.
Appendix: source
Thrown at protocol/a2a/app/agent.py:23
from app.agent.manus import Manus
class ResponseFormat(BaseModel):
"""Respond to the user in this format."""
status: Literal["input_required", "completed", "error"] = "input_required"
message: str
class A2AManus(Manus):
async def invoke(self, query, sessionId) -> str:
config = {"configurable": {"thread_id": sessionId}}
response = await self.run(query)
return self.get_agent_response(config, response)
async def stream(self, query: str) -> AsyncIterable[Dict[str, Any]]:
"""Streaming is not supported by Manus."""
raise NotImplementedError("Streaming is not supported by Manus yet.")
def get_agent_response(self, config, agent_response):
return {
"is_task_complete": True,
"require_user_input": False,
"content": agent_response,
}
SUPPORTED_CONTENT_TYPES: ClassVar[List[str]] = ["text", "text/plain"]
View on GitHub (pinned to 52a13f2a57)