Files
agent-framework/python/samples/getting_started/agents/a2a
T
Eduard van Valkenburg 35097d8c75 Python: Add long-running agents and background responses support (#3808)
* Python: Add long-running agents and background responses support

- Add ContinuationToken TypedDict to core types
- Add continuation_token field to ChatResponse, ChatResponseUpdate,
  AgentResponse, and AgentResponseUpdate
- Add background and continuation_token options to OpenAIResponsesOptions
- Implement polling via responses.retrieve() and streaming resumption
  in RawOpenAIResponsesClient
- Propagate continuation tokens through agent run() and
  map_chat_to_agent_update
- Fix streaming telemetry 'Failed to detach context' error in both
  ChatTelemetryLayer and AgentTelemetryLayer by avoiding
  trace.use_span() context attachment for async-managed spans
- Add 14 unit tests for continuation token types and background flows
- Add background_responses sample showing polling and stream resumption

Fixes #2478

* Python: Add A2A long-running task support via ContinuationToken

- Make ContinuationToken provider-agnostic (total=False, optional task_id/context_id fields)
- Add background param to A2AAgent.run() controlling token emission
- Add poll_task() for single-request task state retrieval
- Add resubscribe support via continuation_token param on run()
- Extract _updates_from_task() and _map_a2a_stream() for cleaner code
- Streamline run()/streaming by removing intermediate _stream_updates wrapper
- Update A2A sample to show background=False (default) with link to background_responses sample
- Remove stale BareAgent from __all__
- Add 12 new A2A continuation token tests

* fix logic for overriding continuation token when done

* refactored ContinuationToken setup
35097d8c75 ยท 2026-02-10 20:37:43 +00:00
History
..

A2A Agent Examples

This folder contains examples demonstrating how to create and use agents with the A2A (Agent2Agent) protocol from the agent_framework package to communicate with remote A2A agents.

By default the A2AAgent waits for the remote agent to finish before returning (background=False), so long-running A2A tasks are handled transparently. For advanced scenarios where you need to poll or resubscribe to in-progress tasks using continuation tokens, see the background responses sample.

For more information about the A2A protocol specification, visit: https://a2a-protocol.org/latest/

Examples

File Description
agent_with_a2a.py Demonstrates agent discovery, non-streaming and streaming responses using the A2A protocol.

Environment Variables

Make sure to set the following environment variables before running the example:

Required

  • A2A_AGENT_HOST: URL of a single A2A agent (for simple sample, e.g., http://localhost:5001/)

Quick Testing with .NET A2A Servers

For quick testing and demonstration, you can use the pre-built .NET A2A servers from this repository:

Quick Testing Reference: Use the .NET A2A Client Server sample at: ..\agent-framework\dotnet\samples\A2AClientServer

Run Python A2A Sample

# Simple A2A sample (single agent)
uv run python agent_with_a2a.py