From 8899d9738c1e0b1b5256c676bca91ff2d2a62ece Mon Sep 17 00:00:00 2001 From: Karim Baidar Date: Fri, 24 Apr 2026 08:05:07 +0200 Subject: [PATCH] .NET: Set A2A message taskId from session task --- .../src/Microsoft.Agents.AI.A2A/A2AAgent.cs | 5 ++--- .../A2AAgentTests.cs | 22 +++++++++---------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/dotnet/src/Microsoft.Agents.AI.A2A/A2AAgent.cs b/dotnet/src/Microsoft.Agents.AI.A2A/A2AAgent.cs index 9fd2e8ff47..dde36e3a6f 100644 --- a/dotnet/src/Microsoft.Agents.AI.A2A/A2AAgent.cs +++ b/dotnet/src/Microsoft.Agents.AI.A2A/A2AAgent.cs @@ -345,9 +345,8 @@ private static Message CreateA2AMessage(A2AAgentSession typedSession, IEnumerabl // See: https://github.com/a2aproject/A2A/blob/main/docs/topics/life-of-a-task.md#group-related-interactions a2aMessage.ContextId = typedSession.ContextId; - // Link the message as a follow-up to an existing task, if any. - // See: https://github.com/a2aproject/A2A/blob/main/docs/topics/life-of-a-task.md#task-refinements - a2aMessage.ReferenceTaskIds = typedSession.TaskId is null ? null : [typedSession.TaskId]; + // Continue the current task, if any. + a2aMessage.TaskId = typedSession.TaskId; return a2aMessage; } diff --git a/dotnet/tests/Microsoft.Agents.AI.A2A.UnitTests/A2AAgentTests.cs b/dotnet/tests/Microsoft.Agents.AI.A2A.UnitTests/A2AAgentTests.cs index f8d855b5a3..895fd53622 100644 --- a/dotnet/tests/Microsoft.Agents.AI.A2A.UnitTests/A2AAgentTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.A2A.UnitTests/A2AAgentTests.cs @@ -465,7 +465,7 @@ public async Task RunAsync_WithContinuationToken_CallsGetTaskAsyncAsync() } [Fact] - public async Task RunAsync_WithTaskInSessionAndMessage_AddTaskAsReferencesToMessageAsync() + public async Task RunAsync_WithTaskInSessionAndMessage_SetsTaskIdOnMessageAsync() { // Arrange this._handler.ResponseToReturn = new SendMessageResponse @@ -478,8 +478,7 @@ public async Task RunAsync_WithTaskInSessionAndMessage_AddTaskAsReferencesToMess } }; - var session = (A2AAgentSession)await this._agent.CreateSessionAsync(); - session.TaskId = "task-123"; + var session = await this._agent.CreateSessionAsync("context-123", "task-123"); var inputMessage = new ChatMessage(ChatRole.User, "Please make the background transparent"); @@ -488,9 +487,9 @@ public async Task RunAsync_WithTaskInSessionAndMessage_AddTaskAsReferencesToMess // Assert var message = this._handler.CapturedSendMessageRequest?.Message; - Assert.Null(message?.TaskId); - Assert.NotNull(message?.ReferenceTaskIds); - Assert.Contains("task-123", message.ReferenceTaskIds); + Assert.Equal("context-123", message?.ContextId); + Assert.Equal("task-123", message?.TaskId); + Assert.Null(message?.ReferenceTaskIds); } [Fact] @@ -813,7 +812,7 @@ public async Task RunStreamingAsync_WithContinuationToken_WhenSubscribeAndGetTas } [Fact] - public async Task RunStreamingAsync_WithTaskInSessionAndMessage_AddTaskAsReferencesToMessageAsync() + public async Task RunStreamingAsync_WithTaskInSessionAndMessage_SetsTaskIdOnMessageAsync() { // Arrange this._handler.StreamingResponseToReturn = new StreamResponse @@ -826,8 +825,7 @@ public async Task RunStreamingAsync_WithTaskInSessionAndMessage_AddTaskAsReferen } }; - var session = (A2AAgentSession)await this._agent.CreateSessionAsync(); - session.TaskId = "task-123"; + var session = await this._agent.CreateSessionAsync("context-123", "task-123"); // Act await foreach (var _ in this._agent.RunStreamingAsync("Please make the background transparent", session)) @@ -837,9 +835,9 @@ public async Task RunStreamingAsync_WithTaskInSessionAndMessage_AddTaskAsReferen // Assert var message = this._handler.CapturedSendMessageRequest?.Message; - Assert.Null(message?.TaskId); - Assert.NotNull(message?.ReferenceTaskIds); - Assert.Contains("task-123", message.ReferenceTaskIds); + Assert.Equal("context-123", message?.ContextId); + Assert.Equal("task-123", message?.TaskId); + Assert.Null(message?.ReferenceTaskIds); } [Fact]