Files
SergeyMenshykh 6ad9279f0f .NET: Fix stream reconnection for A2AAgent (#5275)
* Add SSE stream reconnection support to A2AAgent

Implement automatic reconnection for SSE streams that disconnect mid-task,
using the Last-Event-ID header to resume from where the stream left off.

Changes:
- Add InvokeStreamingWithReconnectAsync method to A2AAgent with configurable
  max retries and delay between attempts
- Add new log messages for reconnection events
- Add A2AAgent_StreamReconnection sample demonstrating the feature
- Update existing polling sample to use simplified SendMessageAsync API
- Add unit tests for stream reconnection logic

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* address comments

* Address PR review feedback

- Dispose SSE enumerator before GetTaskAsync fallback to release HTTP connection
- Wrap StreamWriter in using blocks with leaveOpen:true and explicit UTF-8 encoding
- Print update.Text instead of update object in stream reconnection sample

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6ad9279f0f ยท 2026-04-15 14:45:11 +01:00
History
..

Polling for A2A Agent Task Completion

This sample demonstrates how to poll for long-running task completion using continuation tokens with an A2A AI agent, following the background responses pattern.

The sample:

  • Connects to an A2A agent server specified in the A2A_AGENT_HOST environment variable
  • Sends a request to the agent that may take time to complete
  • Polls the agent at regular intervals using continuation tokens until a final response is received
  • Displays the final result

This pattern is useful when an AI model cannot complete a complex task in a single response and needs multiple rounds of processing.

Prerequisites

Before you begin, ensure you have the following prerequisites:

  • .NET 10.0 SDK or later
  • An A2A agent server running and accessible via HTTP

Set the following environment variable:

$env:A2A_AGENT_HOST="http://localhost:5000"  # Replace with your A2A agent server host