From 606f89d95761be435885915b2e59ed83f1300b37 Mon Sep 17 00:00:00 2001 From: dfedoryshchev Date: Thu, 13 Aug 2026 15:54:27 +0100 Subject: [PATCH] Fix ChatResponseUpdate.Clone dropping ContinuationToken Clone() copied every settable property except ContinuationToken, so a cloned update lost the token needed to resume a background streaming response. Extended Clone_CreatesShallowCopy to cover the property. --- .../ChatCompletion/ChatResponseUpdate.cs | 1 + .../ChatCompletion/ChatResponseUpdateTests.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs index 2637a41cf67..37611996924 100644 --- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs +++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs @@ -71,6 +71,7 @@ public ChatResponseUpdate Clone() => AdditionalProperties = AdditionalProperties, AuthorName = AuthorName, Contents = Contents, + ContinuationToken = ContinuationToken, CreatedAt = CreatedAt, ConversationId = ConversationId, FinishReason = FinishReason, diff --git a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseUpdateTests.cs b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseUpdateTests.cs index fba280aceff..83896c336b4 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseUpdateTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseUpdateTests.cs @@ -246,12 +246,14 @@ public void Clone_CreatesShallowCopy() var originalContents = new List { new TextContent("text1"), new TextContent("text2") }; var originalRawRepresentation = new object(); var originalCreatedAt = new DateTimeOffset(2022, 1, 1, 0, 0, 0, TimeSpan.Zero); + var originalContinuationToken = ResponseContinuationToken.FromBytes(new byte[] { 1, 2, 3 }); var original = new ChatResponseUpdate { AdditionalProperties = originalAdditionalProperties, AuthorName = "author", Contents = originalContents, + ContinuationToken = originalContinuationToken, CreatedAt = originalCreatedAt, ConversationId = "conv123", FinishReason = ChatFinishReason.ContentFilter, @@ -282,6 +284,7 @@ public void Clone_CreatesShallowCopy() Assert.Same(original.AdditionalProperties, clone.AdditionalProperties); Assert.Same(original.Contents, clone.Contents); Assert.Same(original.RawRepresentation, clone.RawRepresentation); + Assert.Same(original.ContinuationToken, clone.ContinuationToken); } [Fact]