From e1ad1c59faedc926e7536e6d1a11d3502e6263bf Mon Sep 17 00:00:00 2001 From: westey <164392973+westey-m@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:15:47 +0000 Subject: [PATCH 1/2] Remove UserInputRequests property --- .../Program.cs | 24 +++--- .../Agents/Agent_Step14_Middleware/Program.cs | 19 ++-- .../Program.cs | 18 ++-- .../Program.cs | 17 ++-- .../FoundryAgent_Hosted_MCP/Program.cs | 20 ++--- .../ResponseAgent_Hosted_MCP/Program.cs | 20 ++--- .../samples/M365Agent/AFAgentApplication.cs | 86 +++++++++---------- .../AgentResponse.cs | 16 ---- .../AgentResponseUpdate.cs | 8 -- .../AgentResponseTests.cs | 26 ------ .../AgentResponseUpdateTests.cs | 28 +----- 11 files changed, 94 insertions(+), 188 deletions(-) diff --git a/dotnet/samples/GettingStarted/Agents/Agent_Step04_UsingFunctionToolsWithApprovals/Program.cs b/dotnet/samples/GettingStarted/Agents/Agent_Step04_UsingFunctionToolsWithApprovals/Program.cs index f13aa8ff26..12c4af9d56 100644 --- a/dotnet/samples/GettingStarted/Agents/Agent_Step04_UsingFunctionToolsWithApprovals/Program.cs +++ b/dotnet/samples/GettingStarted/Agents/Agent_Step04_UsingFunctionToolsWithApprovals/Program.cs @@ -29,36 +29,34 @@ static string GetWeather([Description("The location to get the weather for.")] s .GetChatClient(deploymentName) .AsAIAgent(instructions: "You are a helpful assistant", tools: [new ApprovalRequiredAIFunction(AIFunctionFactory.Create(GetWeather))]); -// Call the agent and check if there are any user input requests to handle. +// Call the agent and check if there are any function approval requests to handle. +// For simplicity, we are assuming here that only function approvals are pending. AgentSession session = await agent.CreateSessionAsync(); -var response = await agent.RunAsync("What is the weather like in Amsterdam?", session); -var userInputRequests = response.UserInputRequests.ToList(); +AgentResponse response = await agent.RunAsync("What is the weather like in Amsterdam?", session); +List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); // For streaming use: // var updates = await agent.RunStreamingAsync("What is the weather like in Amsterdam?", session).ToListAsync(); -// userInputRequests = updates.SelectMany(x => x.UserInputRequests).ToList(); +// approvalRequests = updates.SelectMany(x => x.Contents).OfType().ToList(); -while (userInputRequests.Count > 0) +while (approvalRequests.Count > 0) { // Ask the user to approve each function call request. - // For simplicity, we are assuming here that only function approval requests are being made. - var userInputResponses = userInputRequests - .OfType() - .Select(functionApprovalRequest => + List userInputResponses = approvalRequests + .ConvertAll(functionApprovalRequest => { Console.WriteLine($"The agent would like to invoke the following function, please reply Y to approve: Name {functionApprovalRequest.FunctionCall.Name}"); return new ChatMessage(ChatRole.User, [functionApprovalRequest.CreateResponse(Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false)]); - }) - .ToList(); + }); // Pass the user input responses back to the agent for further processing. response = await agent.RunAsync(userInputResponses, session); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); // For streaming use: // updates = await agent.RunStreamingAsync(userInputResponses, session).ToListAsync(); - // userInputRequests = updates.SelectMany(x => x.UserInputRequests).ToList(); + // approvalRequests = updates.SelectMany(x => x.Contents).OfType().ToList(); } Console.WriteLine($"\nAgent: {response}"); diff --git a/dotnet/samples/GettingStarted/Agents/Agent_Step14_Middleware/Program.cs b/dotnet/samples/GettingStarted/Agents/Agent_Step14_Middleware/Program.cs index f3bc09bdec..e795b87366 100644 --- a/dotnet/samples/GettingStarted/Agents/Agent_Step14_Middleware/Program.cs +++ b/dotnet/samples/GettingStarted/Agents/Agent_Step14_Middleware/Program.cs @@ -210,28 +210,25 @@ static string FilterContent(string content) // This middleware handles Human in the loop console interaction for any user approval required during function calling. async Task ConsolePromptingApprovalMiddleware(IEnumerable messages, AgentSession? session, AgentRunOptions? options, AIAgent innerAgent, CancellationToken cancellationToken) { - var response = await innerAgent.RunAsync(messages, session, options, cancellationToken); + AgentResponse response = await innerAgent.RunAsync(messages, session, options, cancellationToken); - var userInputRequests = response.UserInputRequests.ToList(); + // For simplicity, we are assuming here that only function approvals are pending. + List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); - while (userInputRequests.Count > 0) + while (approvalRequests.Count > 0) { // Ask the user to approve each function call request. - // For simplicity, we are assuming here that only function approval requests are being made. - // Pass the user input responses back to the agent for further processing. - response.Messages = userInputRequests - .OfType() - .Select(functionApprovalRequest => + response.Messages = approvalRequests + .ConvertAll(functionApprovalRequest => { Console.WriteLine($"The agent would like to invoke the following function, please reply Y to approve: Name {functionApprovalRequest.FunctionCall.Name}"); return new ChatMessage(ChatRole.User, [functionApprovalRequest.CreateResponse(Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false)]); - }) - .ToList(); + }); response = await innerAgent.RunAsync(response.Messages, session, options, cancellationToken); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); } return response; diff --git a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step04_UsingFunctionToolsWithApprovals/Program.cs b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step04_UsingFunctionToolsWithApprovals/Program.cs index 1e09f95161..1f98e485f9 100644 --- a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step04_UsingFunctionToolsWithApprovals/Program.cs +++ b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step04_UsingFunctionToolsWithApprovals/Program.cs @@ -35,27 +35,25 @@ static string GetWeather([Description("The location to get the weather for.")] s AgentSession session = await agent.CreateSessionAsync(); AgentResponse response = await agent.RunAsync("What is the weather like in Amsterdam?", session); -// Check if there are any user input requests (approvals needed). -List userInputRequests = response.UserInputRequests.ToList(); +// Check if there are any approval requests. +// For simplicity, we are assuming here that only function approvals are pending. +List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); -while (userInputRequests.Count > 0) +while (approvalRequests.Count > 0) { // Ask the user to approve each function call request. - // For simplicity, we are assuming here that only function approval requests are being made. - List userInputMessages = userInputRequests - .OfType() - .Select(functionApprovalRequest => + List userInputMessages = approvalRequests + .ConvertAll(functionApprovalRequest => { Console.WriteLine($"The agent would like to invoke the following function, please reply Y to approve: Name {functionApprovalRequest.FunctionCall.Name}"); bool approved = Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false; return new ChatMessage(ChatRole.User, [functionApprovalRequest.CreateResponse(approved)]); - }) - .ToList(); + }); // Pass the user input responses back to the agent for further processing. response = await agent.RunAsync(userInputMessages, session); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); } Console.WriteLine($"\nAgent: {response}"); diff --git a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step12_Middleware/Program.cs b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step12_Middleware/Program.cs index 11bfe1ae45..71f70f04b8 100644 --- a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step12_Middleware/Program.cs +++ b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step12_Middleware/Program.cs @@ -193,27 +193,24 @@ async Task ConsolePromptingApprovalMiddleware(IEnumerable userInputRequests = response.UserInputRequests.ToList(); + // For simplicity, we are assuming here that only function approvals are pending. + List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); - while (userInputRequests.Count > 0) + while (approvalRequests.Count > 0) { // Ask the user to approve each function call request. - // For simplicity, we are assuming here that only function approval requests are being made. - // Pass the user input responses back to the agent for further processing. - response.Messages = userInputRequests - .OfType() - .Select(functionApprovalRequest => + response.Messages = approvalRequests + .ConvertAll(functionApprovalRequest => { Console.WriteLine($"The agent would like to invoke the following function, please reply Y to approve: Name {functionApprovalRequest.FunctionCall.Name}"); bool approved = Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false; return new ChatMessage(ChatRole.User, [functionApprovalRequest.CreateResponse(approved)]); - }) - .ToList(); + }); response = await innerAgent.RunAsync(response.Messages, session, options, cancellationToken); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); } return response; diff --git a/dotnet/samples/GettingStarted/ModelContextProtocol/FoundryAgent_Hosted_MCP/Program.cs b/dotnet/samples/GettingStarted/ModelContextProtocol/FoundryAgent_Hosted_MCP/Program.cs index f6e762d2b4..27677073c6 100644 --- a/dotnet/samples/GettingStarted/ModelContextProtocol/FoundryAgent_Hosted_MCP/Program.cs +++ b/dotnet/samples/GettingStarted/ModelContextProtocol/FoundryAgent_Hosted_MCP/Program.cs @@ -75,17 +75,16 @@ }); // You can then invoke the agent like any other AIAgent. -var sessionWithRequiredApproval = await agentWithRequiredApproval.CreateSessionAsync(); -var response = await agentWithRequiredApproval.RunAsync("Please summarize the Azure AI Agent documentation related to MCP Tool calling?", sessionWithRequiredApproval); -var userInputRequests = response.UserInputRequests.ToList(); +// For simplicity, we are assuming here that only mcp tool approvals are pending. +AgentSession sessionWithRequiredApproval = await agentWithRequiredApproval.CreateSessionAsync(); +AgentResponse response = await agentWithRequiredApproval.RunAsync("Please summarize the Azure AI Agent documentation related to MCP Tool calling?", sessionWithRequiredApproval); +List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); -while (userInputRequests.Count > 0) +while (approvalRequests.Count > 0) { // Ask the user to approve each MCP call request. - // For simplicity, we are assuming here that only MCP approval requests are being made. - var userInputResponses = userInputRequests - .OfType() - .Select(approvalRequest => + List userInputResponses = approvalRequests + .ConvertAll(approvalRequest => { Console.WriteLine($""" The agent would like to invoke the following MCP Tool, please reply Y to approve. @@ -94,13 +93,12 @@ Arguments: {string.Join(", ", approvalRequest.ToolCall.Arguments?.Select(x => $"{x.Key}: {x.Value}") ?? [])} """); return new ChatMessage(ChatRole.User, [approvalRequest.CreateResponse(Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false)]); - }) - .ToList(); + }); // Pass the user input responses back to the agent for further processing. response = await agentWithRequiredApproval.RunAsync(userInputResponses, sessionWithRequiredApproval); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); } Console.WriteLine($"\nAgent: {response}"); diff --git a/dotnet/samples/GettingStarted/ModelContextProtocol/ResponseAgent_Hosted_MCP/Program.cs b/dotnet/samples/GettingStarted/ModelContextProtocol/ResponseAgent_Hosted_MCP/Program.cs index 0c4684bc36..79f7ff1302 100644 --- a/dotnet/samples/GettingStarted/ModelContextProtocol/ResponseAgent_Hosted_MCP/Program.cs +++ b/dotnet/samples/GettingStarted/ModelContextProtocol/ResponseAgent_Hosted_MCP/Program.cs @@ -64,17 +64,16 @@ tools: [mcpToolWithApproval]); // You can then invoke the agent like any other AIAgent. -var sessionWithRequiredApproval = await agentWithRequiredApproval.CreateSessionAsync(); -var response = await agentWithRequiredApproval.RunAsync("Please summarize the Azure AI Agent documentation related to MCP Tool calling?", sessionWithRequiredApproval); -var userInputRequests = response.UserInputRequests.ToList(); +// For simplicity, we are assuming here that only mcp tool approvals are pending. +AgentSession sessionWithRequiredApproval = await agentWithRequiredApproval.CreateSessionAsync(); +AgentResponse response = await agentWithRequiredApproval.RunAsync("Please summarize the Azure AI Agent documentation related to MCP Tool calling?", sessionWithRequiredApproval); +List approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); -while (userInputRequests.Count > 0) +while (approvalRequests.Count > 0) { // Ask the user to approve each MCP call request. - // For simplicity, we are assuming here that only MCP approval requests are being made. - var userInputResponses = userInputRequests - .OfType() - .Select(approvalRequest => + List userInputResponses = approvalRequests + .ConvertAll(approvalRequest => { Console.WriteLine($""" The agent would like to invoke the following MCP Tool, please reply Y to approve. @@ -83,13 +82,12 @@ Arguments: {string.Join(", ", approvalRequest.ToolCall.Arguments?.Select(x => $"{x.Key}: {x.Value}") ?? [])} """); return new ChatMessage(ChatRole.User, [approvalRequest.CreateResponse(Console.ReadLine()?.Equals("Y", StringComparison.OrdinalIgnoreCase) ?? false)]); - }) - .ToList(); + }); // Pass the user input responses back to the agent for further processing. response = await agentWithRequiredApproval.RunAsync(userInputResponses, sessionWithRequiredApproval); - userInputRequests = response.UserInputRequests.ToList(); + approvalRequests = response.Messages.SelectMany(m => m.Contents).OfType().ToList(); } Console.WriteLine($"\nAgent: {response}"); diff --git a/dotnet/samples/M365Agent/AFAgentApplication.cs b/dotnet/samples/M365Agent/AFAgentApplication.cs index da98150c6d..6ebfa81897 100644 --- a/dotnet/samples/M365Agent/AFAgentApplication.cs +++ b/dotnet/samples/M365Agent/AFAgentApplication.cs @@ -131,58 +131,54 @@ private static ChatMessage HandleUserInput(ITurnContext turnContext) } /// - /// When the agent returns any user input requests, this method converts them into adaptive cards that + /// When the agent returns any function approval requests, this method converts them into adaptive cards that /// asks the user to approve or deny the requests. /// - /// The that may contain the user input requests. + /// The that may contain the function approval requests. /// The list of to which the adaptive cards will be added. private static void HandleUserInputRequests(AgentResponse response, ref List? attachments) { - var userInputRequests = response.UserInputRequests.ToList(); - if (userInputRequests.Count > 0) + foreach (FunctionApprovalRequestContent functionApprovalRequest in response.Messages.SelectMany(m => m.Contents).OfType()) { - foreach (var functionApprovalRequest in userInputRequests.OfType()) + var functionApprovalRequestJson = JsonSerializer.Serialize(functionApprovalRequest, JsonUtilities.DefaultOptions); + + var card = new AdaptiveCard("1.5"); + card.Body.Add(new AdaptiveTextBlock { - var functionApprovalRequestJson = JsonSerializer.Serialize(functionApprovalRequest, JsonUtilities.DefaultOptions); - - var card = new AdaptiveCard("1.5"); - card.Body.Add(new AdaptiveTextBlock - { - Text = "Function Call Approval Required", - Size = AdaptiveTextSize.Large, - Weight = AdaptiveTextWeight.Bolder, - HorizontalAlignment = AdaptiveHorizontalAlignment.Center - }); - card.Body.Add(new AdaptiveTextBlock - { - Text = $"Function: {functionApprovalRequest.FunctionCall.Name}" - }); - card.Body.Add(new AdaptiveActionSet() - { - Actions = - [ - new AdaptiveSubmitAction - { - Id = "Approve", - Title = "Approve", - Data = new { type = "functionApproval", approved = true, requestJson = functionApprovalRequestJson } - }, - new AdaptiveSubmitAction - { - Id = "Deny", - Title = "Deny", - Data = new { type = "functionApproval", approved = false, requestJson = functionApprovalRequestJson } - } - ] - }); - - attachments ??= []; - attachments.Add(new Attachment() - { - ContentType = "application/vnd.microsoft.card.adaptive", - Content = card.ToJson(), - }); - } + Text = "Function Call Approval Required", + Size = AdaptiveTextSize.Large, + Weight = AdaptiveTextWeight.Bolder, + HorizontalAlignment = AdaptiveHorizontalAlignment.Center + }); + card.Body.Add(new AdaptiveTextBlock + { + Text = $"Function: {functionApprovalRequest.FunctionCall.Name}" + }); + card.Body.Add(new AdaptiveActionSet() + { + Actions = + [ + new AdaptiveSubmitAction + { + Id = "Approve", + Title = "Approve", + Data = new { type = "functionApproval", approved = true, requestJson = functionApprovalRequestJson } + }, + new AdaptiveSubmitAction + { + Id = "Deny", + Title = "Deny", + Data = new { type = "functionApproval", approved = false, requestJson = functionApprovalRequestJson } + } + ] + }); + + attachments ??= []; + attachments.Add(new Attachment() + { + ContentType = "application/vnd.microsoft.card.adaptive", + Content = card.ToJson(), + }); } } } diff --git a/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse.cs b/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse.cs index ba6068c554..c93c8e9184 100644 --- a/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse.cs +++ b/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse.cs @@ -6,7 +6,6 @@ #endif using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; #if NET using System.Text; @@ -125,21 +124,6 @@ public IList Messages [JsonIgnore] public string Text => this._messages?.ConcatText() ?? string.Empty; - /// - /// Gets all user input requests present in the response messages. - /// - /// - /// An enumerable collection of instances found - /// across all messages in the response. - /// - /// - /// User input requests indicate that the agent is asking for additional information - /// from the user before it can continue processing. This property aggregates all such - /// requests across all messages in the response. - /// - [JsonIgnore] - public IEnumerable UserInputRequests => this._messages?.SelectMany(x => x.Contents).OfType() ?? []; - /// /// Gets or sets the identifier of the agent that generated this response. /// diff --git a/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseUpdate.cs b/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseUpdate.cs index b1e5c88ad7..3dbe1ada8d 100644 --- a/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseUpdate.cs +++ b/dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseUpdate.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Linq; using System.Text.Json.Serialization; using Microsoft.Extensions.AI; using Microsoft.Shared.Diagnostics; @@ -95,13 +94,6 @@ public string? AuthorName [JsonIgnore] public string Text => this._contents is not null ? this._contents.ConcatText() : string.Empty; - /// Gets the user input requests associated with the response. - /// - /// This property concatenates all instances in the response. - /// - [JsonIgnore] - public IEnumerable UserInputRequests => this._contents?.OfType() ?? []; - /// Gets or sets the agent run response update content items. [AllowNull] public IList Contents diff --git a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseTests.cs b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseTests.cs index 87cdbf4f20..8300701c5b 100644 --- a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseTests.cs @@ -347,32 +347,6 @@ public void TryParseAsStructuredOutputFailsWithIncorrectTypedJson() Assert.False(response.TryDeserialize(TestJsonSerializerContext.Default.Options, out _)); } - [Fact] - public void UserInputRequests_ReturnsEmptyWhenNoMessages() - { - // Arrange - AgentResponse response = new(); - - // Act - IEnumerable requests = response.UserInputRequests; - - // Assert - Assert.Empty(requests); - } - - [Fact] - public void UserInputRequests_ReturnsEmptyWhenNoUserInputRequestContent() - { - // Arrange - AgentResponse response = new(new ChatMessage(ChatRole.Assistant, "Hello")); - - // Act - IEnumerable requests = response.UserInputRequests; - - // Assert - Assert.Empty(requests); - } - [Fact] public void ToAgentResponseUpdatesWithNoMessagesProducesEmptyArray() { diff --git a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs index 1b42188c92..88d67e6132 100644 --- a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs @@ -199,30 +199,4 @@ public void JsonSerializationRoundtrips() Assert.NotNull(result.ContinuationToken); Assert.Equivalent(ResponseContinuationToken.FromBytes(new byte[] { 1, 2, 3 }), result.ContinuationToken); } - - [Fact] - public void UserInputRequests_ReturnsEmptyWhenNoContents() - { - // Arrange - AgentResponseUpdate update = new(); - - // Act - IEnumerable requests = update.UserInputRequests; - - // Assert - Assert.Empty(requests); - } - - [Fact] - public void UserInputRequests_ReturnsEmptyWhenNoUserInputRequestContent() - { - // Arrange - AgentResponseUpdate update = new(ChatRole.Assistant, "Hello"); - - // Act - IEnumerable requests = update.UserInputRequests; - - // Assert - Assert.Empty(requests); - } -} +} \ No newline at end of file From 8c55a2f09219bcb4face0aa912d9073c37746570 Mon Sep 17 00:00:00 2001 From: westey <164392973+westey-m@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:28:17 +0000 Subject: [PATCH 2/2] Fix formatting issue. --- .../AgentResponseUpdateTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs index 88d67e6132..7fda5f680b 100644 --- a/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/AgentResponseUpdateTests.cs @@ -199,4 +199,4 @@ public void JsonSerializationRoundtrips() Assert.NotNull(result.ContinuationToken); Assert.Equivalent(ResponseContinuationToken.FromBytes(new byte[] { 1, 2, 3 }), result.ContinuationToken); } -} \ No newline at end of file +}