From c7d9726f04189bbefe2daae042af1b3dd4a06790 Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 06:50:50 -0400 Subject: [PATCH 01/13] [11.0 RC1] Blazor AI components release notes --- aspnetcore/release-notes/aspnetcore-11.md | 2 +- .../aspnetcore-11/includes/blazor.md | 402 ++++++++++++++++++ .../includes/blazor/static/blazor-ai-chat.png | Bin 0 -> 27795 bytes .../static/blazor-ai-predictive-state.png | Bin 0 -> 36805 bytes .../blazor/static/blazor-ai-shared-state.png | Bin 0 -> 41094 bytes .../blazor/static/blazor-ai-tool-approval.png | Bin 0 -> 28651 bytes .../blazor/static/blazor-ai-tool-block.png | Bin 0 -> 44333 bytes 7 files changed, 403 insertions(+), 1 deletion(-) create mode 100644 aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-chat.png create mode 100644 aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-predictive-state.png create mode 100644 aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-shared-state.png create mode 100644 aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-approval.png create mode 100644 aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-block.png diff --git a/aspnetcore/release-notes/aspnetcore-11.md b/aspnetcore/release-notes/aspnetcore-11.md index 59414ff0d12a..1133c33b670d 100644 --- a/aspnetcore/release-notes/aspnetcore-11.md +++ b/aspnetcore/release-notes/aspnetcore-11.md @@ -4,7 +4,7 @@ ai-usage: ai-assisted author: wadepickett description: Learn about the new features in ASP.NET Core in .NET 11. ms.author: wpickett -ms.date: 09/08/2026 +ms.date: 09/10/2026 uid: aspnetcore-11 --- # What's new in ASP.NET Core in .NET 11 diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 570429243a63..7d09395ab60e 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -899,3 +899,405 @@ For more information, see the following resources: * [[release/11.0-rc1] Harden SignalR authentication refresh (`dotnet/aspnetcore` #68593)](https://github.com/dotnet/aspnetcore/pull/68593) Please don't comment on closed issues and PRs. If you have feedback on this feature, please open a new issue on the `dotnet/aspnetcore` GitHub repository. + +### Experimental Blazor AI components for agentic user interfaces + +Modern AI apps increasingly provide rich interactions with agents. A complete agentic user interface may need to stream ongoing work, visualize agent reasoning and progress, request approval before tools act, accept multimodal input, and synchronize state between the app and the agent. The Blazor AI components are designed to provide building blocks for creating these experiences using Blazor's component model. + +The new [`Microsoft.AspNetCore.Components.AI` NuGet package](https://nuget.org/packages/microsoft.aspnetcore.components.ai) includes an initial set of Blazor AI components for streaming chat, rich-text and tool rendering, human approval flows, and typed, shared, and predictive UI state. + +#### Get started + + + +> [!IMPORTANT] +> The `Microsoft.AspNetCore.Components.AI` package is a prerelease, experimental package throughout .NET 11. For .NET 11 RC1, use version `0.1.0-preview.1.26459.102`. + +Add the package to a Blazor app: + +```dotnetcli +dotnet add package Microsoft.AspNetCore.Components.AI --version 0.1.0-preview.1.26459.102 +``` + +Basic chat and the Components.AI block model work with any `IChatClient`. To connect the Blazor app to a remote agent over the [Agent User Interaction Protocol (AG-UI)](https://ag-ui.com), register an [`AGUIChatClient`](https://docs.ag-ui.com/sdk/dotnet/client/chat-client) as the app's `IChatClient`: + +```csharp +using AGUI.Client; +using Microsoft.Extensions.AI; + +builder.Services.AddHttpClient(httpClient => + new AGUIChatClient(new(httpClient, "https://api.example.com/agent"))); +``` + +`AGUIChatClient` streams AG-UI events as `ChatResponseUpdate` values. The Blazor AI components render the conversational content from these updates, while apps can use the additional AG-UI event information to build richer agentic interactions. While basic chat functionality is supported with any `IChatClient`, AG-UI is required when a remote server and the Blazor client must exchange frontend tool declarations, backend tool events, approval interrupts, shared-state events, or AG-UI conversation identifiers. + +Microsoft Agent Framework (MAF) can expose an `AIAgent` through an ASP.NET Core AG-UI endpoint. For the server-side setup, see [AG-UI integration with Agent Framework](/agent-framework/integrations/by-component/ui/ag-ui/) and its [.NET getting-started guide](/agent-framework/integrations/by-component/ui/ag-ui/getting-started). + +#### Build a basic streaming conversation + +The first step in an agentic UI is often a basic conversation that streams responses and retains message history across turns. The [initial chat support](https://github.com/dotnet/aspnetcore/pull/68323) is provider- and protocol-neutral. Apps supply an `IChatClient` from `Microsoft.Extensions.AI`, and `UIAgent` converts its streaming responses into observable content blocks. + +`ChatPage` is a complete chat shell that combines three lower-level components: + +* `AgentBoundary` creates and cascades the conversation state. +* `MessageList` renders each turn as it streams and provides default typing, error, and retry UI. +* `MessageInput` sends messages from a text area and disables input while a response is streaming. + +The following component creates a `UIAgent` over an app-provided `IChatClient` and renders the conversation with `ChatPage`: + +```razor +@rendermode InteractiveServer +@using Microsoft.AspNetCore.Components.AI +@using Microsoft.Extensions.AI +@implements IDisposable +@inject IChatClient ChatClient + + + +

Ask the agent a question.

+
+
+ +@code { + private UIAgent agent = default!; + + protected override void OnInitialized() + { + agent = new UIAgent(ChatClient); + } + + public void Dispose() => agent.Dispose(); +} +``` + +`Placeholder` sets the hint shown in the empty message input. `WelcomeContent` supplies the content shown before the first message is sent. + +Include the component styles in the `App` component (`Components/App.razor`): + +```razor + +``` + +![Blazor AI chat interface showing a conversation with a travel planning agent](blazor/static/blazor-ai-chat.png) + +#### Render content blocks + +An `IChatClient` streams model-facing content, such as `TextContent`, `RichTextContent`, and `FunctionCallContent`, in `ChatResponseUpdate` values. `UIAgent` maps this response content into UI-facing `ContentBlock` objects that retain rendering state and can update in place while the response streams. For example, both plain-text fragments and structured rich-text snapshots map to a `RichContentBlock`. + +The built-in block types include: + +* `RichContentBlock` for streamed text and structured rich content. +* `FunctionInvocationContentBlock` for a server function call and its eventual result. +* `UIActionBlock` for a function that runs in the Blazor app. +* `FunctionApprovalBlock` for a function call that is waiting for user approval. +* `ActivityContentBlock` for application-defined progress that updates in place. + +`ChatPage` and `MessageList` include default rendering for `RichContentBlock` and `FunctionApprovalBlock`. Add a `BlockRenderer` to `ChatPage.MessageListContent` to replace this default rendering or render another block type. Its child content receives the matching block as `context`, including its current properties as they change during streaming. + +The following example replaces the default rendering for conversational content: + +```razor + + + +
@block.RawText
+
+
+
+``` + +Use the renderer's `When` predicate to only handle selected blocks of a type. If multiple renderers match, the most recently registered renderer takes precedence. Apps can also define custom `ContentBlock` types and map response content to them with a `ContentBlockHandler`. + +#### Render structured rich text + +The [rich-text support](https://github.com/dotnet/aspnetcore/pull/68324) permits an agent to return a structured presentation model instead of plain text. `RichTextContent` is response content that contains both plain text and `RichTextNode` values for headings, paragraphs, emphasis, links, lists, code blocks, tables, and other presentation elements. `UIAgent` maps it to the same `RichContentBlock` used for plain `TextContent` but uses the supplied node tree instead of creating simple paragraphs. + +Apps can produce `RichTextContent` directly or use `IChatClient` middleware to transform streamed `TextContent`, such as by parsing markdown into `RichTextNode` values. The package doesn't require or include a particular markdown implementation. Each `RichTextContent` is a complete snapshot, so it atomically replaces the previous content for the same message as streaming progresses. `ChatPage` and `MessageList` then render the structured content without requiring a custom `BlockRenderer`. + +#### Render server tool calls + +An agent can call a tool that runs on its server while the Blazor app renders the operation using app-specific UI. For example, the agent can call a weather tool, and the app can show the requested location immediately, followed by a weather card when the server returns the result. + +Server tool calls become `FunctionInvocationContentBlock` instances, which pair the `FunctionCallContent` with its eventual `FunctionResultContent` and expose the tool name, arguments, and completion state. + +The package's source generator creates a strongly typed block handler from a class annotated with `ToolBlock`, `ToolParameter`, and `ToolResult` ([[Blazor] Add Components.AI server tool rendering (`dotnet/aspnetcore` #68327)](https://github.com/dotnet/aspnetcore/pull/68327)): + +```csharp +[ToolBlock("get_weather")] +public partial class WeatherToolBlock : FunctionInvocationContentBlock +{ + [ToolParameter(Name = "location")] + public string? Location { get; set; } + + [ToolResult] + public WeatherInfo? Weather { get; set; } +} +``` + +Register the generated handlers when constructing the `UIAgent`: + +```csharp +var agent = new UIAgent( + chatClient, + options => options.AddGeneratedToolBlocks()); +``` + +Render the generated block in `MessageListContent`: + +```razor + + + + @if (context.HasResult) + { +

@context.Location: @context.Weather?.Temperature°C

+ } + else + { +

Checking the weather for @context.Location...

+ } +
+
+
+``` + +As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. + +![A generated typed tool block rendering a weather result](blazor/static/blazor-ai-tool-block.png) + +When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). + +#### Run frontend tools + +Frontend tools run in the client app rather than on the agent server. For example, a Blazor app can expose a tool that changes UI state, reads a local preference, or asks the user for input. Create the tool with `AIFunctionFactory` from `Microsoft.Extensions.AI`, then register it with `UIAgentOptions.RegisterUIAction` ([[Blazor] Add Components.AI client tool rendering (`dotnet/aspnetcore` #68325)](https://github.com/dotnet/aspnetcore/pull/68325)). + +`RegisterUIAction` advertises the `AIFunction` to the agent. When the agent requests it, `UIAgent` creates a `UIActionBlock` instead of executing the function immediately: + +```csharp +var setAccentColor = AIFunctionFactory.Create( + async (string color) => + { + await InvokeAsync(() => accentColor = color); + return $"Changed the accent color to {color}."; + }, + name: "set_accent_color"); + +var agent = new UIAgent( + chatClient, + options => options.RegisterUIAction(setAccentColor)); +``` + +Place a `BlockRenderer` in `MessageListContent` to handle the function call requested by the agent. For example, the renderer can use a component that automatically invokes the function and displays its progress: + +```razor + + + + + + + +``` + +The `AutoInvokeAction` component calls `InvokeAsync` when it receives the block: + +```razor +@if (Action.IsComplete) +{ + Accent color updated +} +else +{ + Updating accent color... +} + +@code { + [Parameter, EditorRequired] + public UIActionBlock Action { get; set; } = default!; + + protected override async Task OnInitializedAsync() + { + if (!Action.IsComplete) + { + await Action.InvokeAsync(); + } + } +} +``` + +Calling `InvokeAsync` executes the registered function with the arguments supplied by the agent. The function runs wherever the Blazor UI runs: in the server-side circuit for Blazor Server or in the browser for WebAssembly. When the function completes, `UIAgent` sends its result back to the agent and continues the conversation. Use the renderer's `When` predicate to provide different handling for each `action.ToolName`. A renderer can invoke the action automatically, as shown here, or present UI that collects input or confirmation first. + +#### Require approval before tools run + +An app can require the user to approve a consequential tool call, such as scheduling a meeting, before the agent proceeds. Tool approval requests become `FunctionApprovalBlock` instances. The conversation pauses until the UI calls `Approve` or `Reject` ([[Blazor] Add Components.AI human approval flows (`dotnet/aspnetcore` #68329)](https://github.com/dotnet/aspnetcore/pull/68329)): + +```razor + +

Allow @approval.ToolName to run?

+ + +
+``` + +Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. + +![A tool call waiting for human approval](blazor/static/blazor-ai-tool-approval.png) + +For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). + +#### Display activities + +An activity is an app-defined progress item that updates in place while an agent performs longer-running work. For example, a research agent can show that's searching sources, comparing results, and completing the research without adding a separate message for every update. + +`ActivityHandler` is a protocol-neutral extension point that maps provider- or app-specific progress updates into a mutable `ActivityContentBlock` ([[Blazor] Add agentic generative UI state rendering (`dotnet/aspnetcore` #68333)](https://github.com/dotnet/aspnetcore/pull/68333)). `TryCreateBlock` initializes and emits the block for the first matching update. `TryUpdateBlock` mutates the same block as later updates arrive and indicates when the activity is complete. Register the handler with `UIAgentOptions.AddBlockHandler`, then provide a `BlockRenderer` for the app-specific block. Activities don't have a default visual representation. + +AG-UI's `ACTIVITY_SNAPSHOT` and `ACTIVITY_DELTA` events are one possible source of these updates. `AGUIChatClient` exposes the original event through `ChatResponseUpdate.RawRepresentation`. For example, an app can handle replacing snapshots whose payload includes an app-defined `complete` property: + +```csharp +using System.Text.Json; +using AGUI.Abstractions; + +public sealed class ResearchActivityBlock : ActivityContentBlock +{ + public string ActivityMessageId { get; set; } = ""; +} + +public sealed class ResearchActivityHandler + : ActivityHandler +{ + protected override bool TryCreateBlock( + BlockMappingContext context, + ResearchActivityBlock state) + => TryApplySnapshot(context, state, out _); + + protected override bool TryUpdateBlock( + BlockMappingContext context, + ResearchActivityBlock state, + out bool isCompleted) + => TryApplySnapshot(context, state, out isCompleted); + + private static bool TryApplySnapshot( + BlockMappingContext context, + ResearchActivityBlock state, + out bool isCompleted) + { + isCompleted = false; + + if (context.Update.RawRepresentation is not ActivitySnapshotEvent snapshot || + (state.ActivityMessageId.Length > 0 && + (state.ActivityMessageId != snapshot.MessageId || + snapshot.Replace == false))) + { + return false; + } + + state.ActivityMessageId = snapshot.MessageId; + state.ActivityType = snapshot.ActivityType; + state.Content = snapshot.Content; + isCompleted = + snapshot.Content.ValueKind == JsonValueKind.Object && + snapshot.Content.TryGetProperty("complete", out var complete) && + complete.ValueKind == JsonValueKind.True; + context.MarkUpdateHandled(); + return true; + } +} +``` + +The handler stores the AG-UI message ID on the block to correlate later snapshots. Apps that consume `ActivityDeltaEvent` instead apply its RFC 6902 JSON Patch operations to the current `Content` before returning from `TryUpdateBlock`. The app defines the activity payload and completion semantics; Components.AI doesn't include an AG-UI-specific activity handler or JSON Patch implementation. + +#### Shared state + +Agentic UIs often show a shared workspace alongside the conversation, such as a recipe, document, form, or plan that the agent can update. `UIAgent` exposes this data as typed, observable UI state separately from conversational content ([[Blazor] Add agentic generative UI state rendering (`dotnet/aspnetcore` #68333)](https://github.com/dotnet/aspnetcore/pull/68333)). + +The app configures a state mapper for the `ChatResponseUpdate` values produced by its `IChatClient`. In an AG-UI integration, the agent server explicitly maps selected tool results to `STATE_SNAPSHOT` or `STATE_DELTA` events. `AGUIChatClient` then exposes those events through `ChatResponseUpdate.RawRepresentation`, where the Blazor app can deserialize them and call `SetState`: + +```csharp +using System.Text.Json; +using AGUI.Abstractions; + +var agent = new UIAgent(chatClient, options => +{ + options.StateMapper = context => + { + if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && + snapshot.Snapshot.Deserialize() is { } state) + { + context.SetState(state); + } + }; +}); +``` + +Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. + +![Typed agent state rendered as a recipe card](blazor/static/blazor-ai-shared-state.png) + +For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). + +#### Show predictive UI state + +Predictive state permits an app render an agent's proposed state change while the model is still generating it without replacing the committed state. For example, as an agent generates the complete contents of an edited document in a tool argument, the UI can progressively display the proposed document and a diff. When generation finishes, the user can accept the completed proposal or reject it and restore the committed document. + +An AG-UI server integration can map streamed arguments for a state-writing tool to provisional state events. The completed tool-call arguments are the authoritative proposal. When creating the `UIAgent`, configure its state mapper to deserialize those events and call `SetPredictiveState`. `AgentState` then retains the prior committed value for rollback ([[Blazor] Add predictive state updates (`dotnet/aspnetcore` #68335)](https://github.com/dotnet/aspnetcore/pull/68335)): + +```csharp +var agent = new UIAgent(chatClient, options => +{ + options.StateMapper = context => + { + if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && + snapshot.Snapshot.Deserialize() is { } predictedState) + { + context.SetPredictiveState(predictedState); + } + }; + + options.RegisterUIAction(AIFunctionFactory.Create( + ConfirmChanges, + name: "confirm_changes", + description: "Confirm the proposed document changes.")); +}); +``` + +The example also registers a `confirm_changes` frontend action. When the action appears, a custom block renderer displays the accept and reject controls. The renderer adds the user's choice as the `accepted` argument and calls `UIActionBlock.InvokeAsync`, which runs the registered callback: + +```csharp +private string ConfirmChanges(bool accepted) +{ + if (accepted) + { + agent.State.AcceptPredictiveState(); + } + else + { + agent.State.RejectPredictiveState(); + } + + return accepted + ? "The user accepted the changes." + : "The user rejected the changes."; +} +``` + +The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). + +![An express shipping proposal with accept and reject actions](blazor/static/blazor-ai-predictive-state.png) + +#### Persist and restore conversations + +An `IConversationThread` stores completed turns so a UI can rebuild its conversation after the component or app restarts. A thread can also retain protocol metadata, such as the `threadId` and previous `runId` used to continue a server-owned AG-UI conversation. + +Pass the thread when constructing `UIAgent`, then call `UIAgent.RestoreAsync` or `AgentContext.RestoreAsync` to explicitly replay the stored updates into content blocks and typed state ([[Blazor] Add shared agent and UI state (`dotnet/aspnetcore` #68334)](https://github.com/dotnet/aspnetcore/pull/68334)): + +```csharp +var agent = new UIAgent( + chatClient, + options => options.Thread = conversationThread); + +var restoredBlocks = await agent.RestoreAsync(); +``` + +Passing a thread to `UIAgent` enables new completed turns to be persisted but doesn't automatically restore earlier turns. For MAF-hosted AG-UI agents, see [AG-UI conversation continuity](/agent-framework/integrations/by-component/ui/ag-ui/getting-started#conversation-continuity). diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-chat.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-chat.png new file mode 100644 index 0000000000000000000000000000000000000000..019833fb0ea6a4ced003d48dc4d6e402749635d3 GIT binary patch literal 27795 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ˡ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 literal 0 HcmV?d00001 diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-shared-state.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-shared-state.png new file mode 100644 index 0000000000000000000000000000000000000000..adde8a0e70a97457cb36b549030c6714533bb83d GIT binary patch literal 41094 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 literal 0 HcmV?d00001 diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-block.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-block.png new file mode 100644 index 0000000000000000000000000000000000000000..b2be011eda55ede995c88c2ac40d04f7f440cc14 GIT binary patch literal 44333 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 Date: Thu, 10 Sep 2026 07:10:02 -0400 Subject: [PATCH 02/13] Updates --- .../release-notes/aspnetcore-11/includes/blazor.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 7d09395ab60e..18716a7bf228 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -978,7 +978,7 @@ Include the component styles in the `App` component (`Components/App.razor`): ``` -![Blazor AI chat interface showing a conversation with a travel planning agent](blazor/static/blazor-ai-chat.png) +![Blazor AI chat interface showing a conversation with a travel planning agent](~/blazor/static/blazor-ai-chat.png) #### Render content blocks @@ -1063,7 +1063,7 @@ Render the generated block in `MessageListContent`: As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. -![A generated typed tool block rendering a weather result](blazor/static/blazor-ai-tool-block.png) +![A generated typed tool block rendering a weather result](~/blazor/static/blazor-ai-tool-block.png) When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). @@ -1143,7 +1143,7 @@ An app can require the user to approve a consequential tool call, such as schedu Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. -![A tool call waiting for human approval](blazor/static/blazor-ai-tool-approval.png) +![A tool call waiting for human approval](~/blazor/static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1233,7 +1233,7 @@ var agent = new UIAgent(chatClient, options => Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. -![Typed agent state rendered as a recipe card](blazor/static/blazor-ai-shared-state.png) +![Typed agent state rendered as a recipe card](~/blazor/static/blazor-ai-shared-state.png) For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). @@ -1284,7 +1284,7 @@ private string ConfirmChanges(bool accepted) The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). -![An express shipping proposal with accept and reject actions](blazor/static/blazor-ai-predictive-state.png) +![An express shipping proposal with accept and reject actions](~/blazor/static/blazor-ai-predictive-state.png) #### Persist and restore conversations From 47a6db0f4128ecdecdd0411dc2cf1ad3dfee89a6 Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 07:17:01 -0400 Subject: [PATCH 03/13] Updates --- .../release-notes/aspnetcore-11/includes/blazor.md | 10 +++++----- .../includes/blazor/{static => }/blazor-ai-chat.png | Bin .../{static => }/blazor-ai-predictive-state.png | Bin .../blazor/{static => }/blazor-ai-shared-state.png | Bin .../blazor/{static => }/blazor-ai-tool-approval.png | Bin .../blazor/{static => }/blazor-ai-tool-block.png | Bin 6 files changed, 5 insertions(+), 5 deletions(-) rename aspnetcore/release-notes/aspnetcore-11/includes/blazor/{static => }/blazor-ai-chat.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/blazor/{static => }/blazor-ai-predictive-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/blazor/{static => }/blazor-ai-shared-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/blazor/{static => }/blazor-ai-tool-approval.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/blazor/{static => }/blazor-ai-tool-block.png (100%) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 18716a7bf228..a8a5ced73ed8 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -978,7 +978,7 @@ Include the component styles in the `App` component (`Components/App.razor`): ``` -![Blazor AI chat interface showing a conversation with a travel planning agent](~/blazor/static/blazor-ai-chat.png) +![Blazor AI chat interface showing a conversation with a travel planning agent](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png) #### Render content blocks @@ -1063,7 +1063,7 @@ Render the generated block in `MessageListContent`: As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. -![A generated typed tool block rendering a weather result](~/blazor/static/blazor-ai-tool-block.png) +![A generated typed tool block rendering a weather result](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png) When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). @@ -1143,7 +1143,7 @@ An app can require the user to approve a consequential tool call, such as schedu Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. -![A tool call waiting for human approval](~/blazor/static/blazor-ai-tool-approval.png) +![A tool call waiting for human approval](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1233,7 +1233,7 @@ var agent = new UIAgent(chatClient, options => Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. -![Typed agent state rendered as a recipe card](~/blazor/static/blazor-ai-shared-state.png) +![Typed agent state rendered as a recipe card](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png) For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). @@ -1284,7 +1284,7 @@ private string ConfirmChanges(bool accepted) The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). -![An express shipping proposal with accept and reject actions](~/blazor/static/blazor-ai-predictive-state.png) +![An express shipping proposal with accept and reject actions](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png) #### Persist and restore conversations diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-chat.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-chat.png rename to aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-predictive-state.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-predictive-state.png rename to aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-shared-state.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-shared-state.png rename to aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-approval.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-approval.png rename to aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-block.png b/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/static/blazor-ai-tool-block.png rename to aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png From b784fcd68ff47453f0ada9abca5f4048c255b49a Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 07:55:54 -0400 Subject: [PATCH 04/13] Updates --- .../includes/{blazor => _static}/blazor-ai-chat.png | Bin .../blazor-ai-predictive-state.png | Bin .../{blazor => _static}/blazor-ai-shared-state.png | Bin .../{blazor => _static}/blazor-ai-tool-approval.png | Bin .../{blazor => _static}/blazor-ai-tool-block.png | Bin .../release-notes/aspnetcore-11/includes/blazor.md | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) rename aspnetcore/release-notes/aspnetcore-11/includes/{blazor => _static}/blazor-ai-chat.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/{blazor => _static}/blazor-ai-predictive-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/{blazor => _static}/blazor-ai-shared-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/{blazor => _static}/blazor-ai-tool-approval.png (100%) rename aspnetcore/release-notes/aspnetcore-11/includes/{blazor => _static}/blazor-ai-tool-block.png (100%) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png b/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-chat.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png rename to aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-chat.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png b/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-predictive-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png rename to aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-predictive-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png b/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-shared-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png rename to aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-shared-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png b/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-approval.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png rename to aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-approval.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png b/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-block.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png rename to aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-block.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index a8a5ced73ed8..1fb15c4f0140 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -978,7 +978,7 @@ Include the component styles in the `App` component (`Components/App.razor`): ``` -![Blazor AI chat interface showing a conversation with a travel planning agent](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-chat.png) +![Blazor AI chat interface showing a conversation with a travel planning agent](includes/_static/blazor-ai-chat.png) #### Render content blocks @@ -1063,7 +1063,7 @@ Render the generated block in `MessageListContent`: As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. -![A generated typed tool block rendering a weather result](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-block.png) +![A generated typed tool block rendering a weather result](includes/_static/blazor-ai-tool-block.png) When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). @@ -1143,7 +1143,7 @@ An app can require the user to approve a consequential tool call, such as schedu Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. -![A tool call waiting for human approval](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-tool-approval.png) +![A tool call waiting for human approval](includes/_static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1233,7 +1233,7 @@ var agent = new UIAgent(chatClient, options => Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. -![Typed agent state rendered as a recipe card](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-shared-state.png) +![Typed agent state rendered as a recipe card](includes/_static/blazor-ai-shared-state.png) For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). @@ -1284,7 +1284,7 @@ private string ConfirmChanges(bool accepted) The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). -![An express shipping proposal with accept and reject actions](~/release-notes/aspnetcore-11/includes/blazor/blazor-ai-predictive-state.png) +![An express shipping proposal with accept and reject actions](includes/_static/blazor-ai-predictive-state.png) #### Persist and restore conversations From d68935fc401ed244830cc42e8a8e1b25396784ab Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 08:58:58 -0400 Subject: [PATCH 05/13] Updates --- .../{includes => }/_static/blazor-ai-chat.png | Bin .../_static/blazor-ai-predictive-state.png | Bin .../_static/blazor-ai-shared-state.png | Bin .../_static/blazor-ai-tool-approval.png | Bin .../{includes => }/_static/blazor-ai-tool-block.png | Bin .../release-notes/aspnetcore-11/includes/blazor.md | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) rename aspnetcore/release-notes/aspnetcore-11/{includes => }/_static/blazor-ai-chat.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{includes => }/_static/blazor-ai-predictive-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{includes => }/_static/blazor-ai-shared-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{includes => }/_static/blazor-ai-tool-approval.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{includes => }/_static/blazor-ai-tool-block.png (100%) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-chat.png b/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-chat.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-chat.png rename to aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-chat.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-predictive-state.png b/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-predictive-state.png rename to aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-shared-state.png b/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-shared-state.png rename to aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-approval.png b/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-approval.png rename to aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-block.png b/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/includes/_static/blazor-ai-tool-block.png rename to aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 1fb15c4f0140..2af3d42a5681 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -978,7 +978,7 @@ Include the component styles in the `App` component (`Components/App.razor`): ``` -![Blazor AI chat interface showing a conversation with a travel planning agent](includes/_static/blazor-ai-chat.png) +![Blazor AI chat interface showing a conversation with a travel planning agent](~/release-notes/aspnetcore-11/_static/blazor-ai-chat.png) #### Render content blocks @@ -1063,7 +1063,7 @@ Render the generated block in `MessageListContent`: As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. -![A generated typed tool block rendering a weather result](includes/_static/blazor-ai-tool-block.png) +![A generated typed tool block rendering a weather result](~/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png) When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). @@ -1143,7 +1143,7 @@ An app can require the user to approve a consequential tool call, such as schedu Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. -![A tool call waiting for human approval](includes/_static/blazor-ai-tool-approval.png) +![A tool call waiting for human approval](~/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1233,7 +1233,7 @@ var agent = new UIAgent(chatClient, options => Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. -![Typed agent state rendered as a recipe card](includes/_static/blazor-ai-shared-state.png) +![Typed agent state rendered as a recipe card](~/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png) For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). @@ -1284,7 +1284,7 @@ private string ConfirmChanges(bool accepted) The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). -![An express shipping proposal with accept and reject actions](includes/_static/blazor-ai-predictive-state.png) +![An express shipping proposal with accept and reject actions](~/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png) #### Persist and restore conversations From 1d75ca67c59b65deb4a863616e52d48a43f4a2a0 Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 09:07:53 -0400 Subject: [PATCH 06/13] Updates --- .../release-notes/aspnetcore-11/includes/blazor.md | 10 +++++----- .../{_static => static}/blazor-ai-chat.png | Bin .../blazor-ai-predictive-state.png | Bin .../{_static => static}/blazor-ai-shared-state.png | Bin .../{_static => static}/blazor-ai-tool-approval.png | Bin .../{_static => static}/blazor-ai-tool-block.png | Bin 6 files changed, 5 insertions(+), 5 deletions(-) rename aspnetcore/release-notes/aspnetcore-11/{_static => static}/blazor-ai-chat.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{_static => static}/blazor-ai-predictive-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{_static => static}/blazor-ai-shared-state.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{_static => static}/blazor-ai-tool-approval.png (100%) rename aspnetcore/release-notes/aspnetcore-11/{_static => static}/blazor-ai-tool-block.png (100%) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 2af3d42a5681..ba5fd1af80e9 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -978,7 +978,7 @@ Include the component styles in the `App` component (`Components/App.razor`): ``` -![Blazor AI chat interface showing a conversation with a travel planning agent](~/release-notes/aspnetcore-11/_static/blazor-ai-chat.png) +![Blazor AI chat interface showing a conversation with a travel planning agent](~/release-notes/aspnetcore-11/static/blazor-ai-chat.png) #### Render content blocks @@ -1063,7 +1063,7 @@ Render the generated block in `MessageListContent`: As the call arguments stream, the generated handler updates `Location` while `HasResult` remains `false`. When the result arrives, it populates `Weather`, sets `HasResult` to `true`, and rerenders the same block as the completed weather card. -![A generated typed tool block rendering a weather result](~/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png) +![A generated typed tool block rendering a weather result](~/release-notes/aspnetcore-11/static/blazor-ai-tool-block.png) When MAF hosts the remote agent, backend tools use its normal tool pipeline and AG-UI transports the call and result to the client. See [Backend tool rendering with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/backend-tool-rendering). @@ -1143,7 +1143,7 @@ An app can require the user to approve a consequential tool call, such as schedu Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. -![A tool call waiting for human approval](~/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png) +![A tool call waiting for human approval](~/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1233,7 +1233,7 @@ var agent = new UIAgent(chatClient, options => Read the current value from `agent.State.Value` and subscribe to `agent.State.OnChanged` when the surrounding component needs to rerender. State mappers can also handle app-specific `AIContent` from other `IChatClient` implementations. -![Typed agent state rendered as a recipe card](~/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png) +![Typed agent state rendered as a recipe card](~/release-notes/aspnetcore-11/static/blazor-ai-shared-state.png) For the corresponding MAF server configuration, including mapping tool results to state snapshots and deltas, see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). @@ -1284,7 +1284,7 @@ private string ConfirmChanges(bool accepted) The provisional value is immediately available from `agent.State.Value`, and `HasPendingPredictiveState` indicates that it isn't committed. The callback commits the completed proposal or restores the baseline, and its return value reports the decision to the agent in a follow-up run. If generation fails, is canceled, or ends without a decision, the provisional value is automatically rolled back. The server-side extraction and mapping of streamed tool arguments must be configured explicitly; see [State management with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/state-management). -![An express shipping proposal with accept and reject actions](~/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png) +![An express shipping proposal with accept and reject actions](~/release-notes/aspnetcore-11/static/blazor-ai-predictive-state.png) #### Persist and restore conversations diff --git a/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-chat.png b/aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-chat.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-chat.png rename to aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-chat.png diff --git a/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png b/aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-predictive-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-predictive-state.png rename to aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-predictive-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png b/aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-shared-state.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-shared-state.png rename to aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-shared-state.png diff --git a/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png b/aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-approval.png rename to aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png diff --git a/aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png b/aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-tool-block.png similarity index 100% rename from aspnetcore/release-notes/aspnetcore-11/_static/blazor-ai-tool-block.png rename to aspnetcore/release-notes/aspnetcore-11/static/blazor-ai-tool-block.png From 7ec2e98ed3852deed1104583e00686ef9c6e3bf1 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:51:30 -0400 Subject: [PATCH 07/13] Fix typo in Blazor activity description Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- aspnetcore/release-notes/aspnetcore-11/includes/blazor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index ba5fd1af80e9..e313e2366ab5 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -1149,7 +1149,7 @@ For a MAF agent, the server decides which functions require approval, and AG-UI #### Display activities -An activity is an app-defined progress item that updates in place while an agent performs longer-running work. For example, a research agent can show that's searching sources, comparing results, and completing the research without adding a separate message for every update. +An activity is an app-defined progress item that updates in place while an agent performs longer-running work. For example, a research agent can show that it's searching sources, comparing results, and completing the research without adding a separate message for every update. `ActivityHandler` is a protocol-neutral extension point that maps provider- or app-specific progress updates into a mutable `ActivityContentBlock` ([[Blazor] Add agentic generative UI state rendering (`dotnet/aspnetcore` #68333)](https://github.com/dotnet/aspnetcore/pull/68333)). `TryCreateBlock` initializes and emits the block for the first matching update. `TryUpdateBlock` mutates the same block as later updates arrive and indicates when the activity is complete. Register the handler with `UIAgentOptions.AddBlockHandler`, then provide a `BlockRenderer` for the app-specific block. Activities don't have a default visual representation. From 3b37f5532ddd73ce4e1716b5da3eb6e389fb871b Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 11:41:27 -0400 Subject: [PATCH 08/13] Updates --- .../release-notes/aspnetcore-11/includes/blazor.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index ba5fd1af80e9..b59cc2776987 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -919,6 +919,16 @@ Add the package to a Blazor app: dotnet add package Microsoft.AspNetCore.Components.AI --version 0.1.0-preview.1.26459.102 ``` +Add the [`AGUI.Abstractions`](https://www.nuget.org/packages/AGUI.Abstractions) and [`AGUI.Client`](https://www.nuget.org/packages/AGUI.Client) NuGet packages ... + +```dotnetcli +dotnet add package AGUI.Abstractions +``` + +```dotnetcli +dotnet add package AGUI.Client +``` + Basic chat and the Components.AI block model work with any `IChatClient`. To connect the Blazor app to a remote agent over the [Agent User Interaction Protocol (AG-UI)](https://ag-ui.com), register an [`AGUIChatClient`](https://docs.ag-ui.com/sdk/dotnet/client/chat-client) as the app's `IChatClient`: ```csharp @@ -1093,7 +1103,7 @@ Place a `BlockRenderer` in `MessageListContent` to handle the fun @@ -1157,6 +1167,7 @@ AG-UI's `ACTIVITY_SNAPSHOT` and `ACTIVITY_DELTA` events are one possible source ```csharp using System.Text.Json; +using Microsoft.AspNetCore.Components.AI; using AGUI.Abstractions; public sealed class ResearchActivityBlock : ActivityContentBlock From 2088d0595bb053039e0f926eab191a2c1a579128 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Sep 2026 12:01:13 -0400 Subject: [PATCH 09/13] Apply batched suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- aspnetcore/release-notes/aspnetcore-11/includes/blazor.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 7341a119c7f8..d7aa2dd1f1fe 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -904,7 +904,7 @@ Please don't comment on closed issues and PRs. If you have feedback on this feat Modern AI apps increasingly provide rich interactions with agents. A complete agentic user interface may need to stream ongoing work, visualize agent reasoning and progress, request approval before tools act, accept multimodal input, and synchronize state between the app and the agent. The Blazor AI components are designed to provide building blocks for creating these experiences using Blazor's component model. -The new [`Microsoft.AspNetCore.Components.AI` NuGet package](https://nuget.org/packages/microsoft.aspnetcore.components.ai) includes an initial set of Blazor AI components for streaming chat, rich-text and tool rendering, human approval flows, and typed, shared, and predictive UI state. +The new [`Microsoft.AspNetCore.Components.AI` NuGet package](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.AI) includes an initial set of Blazor AI components for streaming chat, rich-text and tool rendering, human approval flows, and typed, shared, and predictive UI state. #### Get started @@ -919,7 +919,7 @@ Add the package to a Blazor app: dotnet add package Microsoft.AspNetCore.Components.AI --version 0.1.0-preview.1.26459.102 ``` -Add the [`AGUI.Abstractions`](https://www.nuget.org/packages/AGUI.Abstractions) and [`AGUI.Client`](https://www.nuget.org/packages/AGUI.Client) NuGet packages ... +Add the [`AGUI.Abstractions`](https://www.nuget.org/packages/AGUI.Abstractions) and [`AGUI.Client`](https://www.nuget.org/packages/AGUI.Client) NuGet packages to enable AG-UI connectivity: ```dotnetcli dotnet add package AGUI.Abstractions @@ -1151,7 +1151,7 @@ An app can require the user to approve a consequential tool call, such as schedu ``` -Approving allows the tool run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. +Approving allows the tool to run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. ![A tool call waiting for human approval](~/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png) @@ -1250,7 +1250,7 @@ For the corresponding MAF server configuration, including mapping tool results t #### Show predictive UI state -Predictive state permits an app render an agent's proposed state change while the model is still generating it without replacing the committed state. For example, as an agent generates the complete contents of an edited document in a tool argument, the UI can progressively display the proposed document and a diff. When generation finishes, the user can accept the completed proposal or reject it and restore the committed document. +Predictive state permits an app to render an agent's proposed state change while the model is still generating it without replacing the committed state. For example, as an agent generates the complete contents of an edited document in a tool argument, the UI can progressively display the proposed document and a diff. When generation finishes, the user can accept the completed proposal or reject it and restore the committed document. An AG-UI server integration can map streamed arguments for a state-writing tool to provisional state events. The completed tool-call arguments are the authoritative proposal. When creating the `UIAgent`, configure its state mapper to deserialize those events and call `SetPredictiveState`. `AgentState` then retains the prior committed value for rollback ([[Blazor] Add predictive state updates (`dotnet/aspnetcore` #68335)](https://github.com/dotnet/aspnetcore/pull/68335)): From 07257298a4ff82aca52a6c3149e41eb08969e7a4 Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:59:21 -0400 Subject: [PATCH 10/13] Updates --- aspnetcore/release-notes/aspnetcore-11/includes/blazor.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index d7aa2dd1f1fe..10017e26c49d 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -919,11 +919,7 @@ Add the package to a Blazor app: dotnet add package Microsoft.AspNetCore.Components.AI --version 0.1.0-preview.1.26459.102 ``` -Add the [`AGUI.Abstractions`](https://www.nuget.org/packages/AGUI.Abstractions) and [`AGUI.Client`](https://www.nuget.org/packages/AGUI.Client) NuGet packages to enable AG-UI connectivity: - -```dotnetcli -dotnet add package AGUI.Abstractions -``` +Add the [`AGUI.Client` NuGet package](https://www.nuget.org/packages/AGUI.Client) to enable AG-UI connectivity: ```dotnetcli dotnet add package AGUI.Client From eeefad36cd0aa5760bf639e140b67cec4ac60202 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Fri, 11 Sep 2026 18:06:46 -0400 Subject: [PATCH 11/13] Apply batched suggestions from code review Co-authored-by: Daniel Roth --- .../aspnetcore-11/includes/blazor.md | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 10017e26c49d..94aee64e5552 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -1088,6 +1088,11 @@ var setAccentColor = AIFunctionFactory.Create( }, name: "set_accent_color"); + await InvokeAsync(() => + { + accentColor = color; + StateHasChanged(); + }); var agent = new UIAgent( chatClient, options => options.RegisterUIAction(setAccentColor)); @@ -1144,11 +1149,15 @@ An app can require the user to approve a consequential tool call, such as schedu

Allow @approval.ToolName to run?

- -``` - -Approving allows the tool to run and resumes the conversation. Rejecting returns that decision to the agent without running the tool. - + + + +

Allow @approval.ToolName to run?

+ + +
+
+
![A tool call waiting for human approval](~/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1225,16 +1234,18 @@ The app configures a state mapper for the `ChatResponseUpdate` values produced b using System.Text.Json; using AGUI.Abstractions; +var agent = new UIAgent(chatClient, options => +using System.Text.Json; +using AGUI.Abstractions; +using Microsoft.AspNetCore.Components.AI; + var agent = new UIAgent(chatClient, options => { options.StateMapper = context => { if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && - snapshot.Snapshot.Deserialize() is { } state) - { - context.SetState(state); - } - }; + snapshot.Snapshot.Deserialize( + JsonSerializerOptions.Web) is { } state) }); ``` @@ -1251,16 +1262,21 @@ Predictive state permits an app to render an agent's proposed state change while An AG-UI server integration can map streamed arguments for a state-writing tool to provisional state events. The completed tool-call arguments are the authoritative proposal. When creating the `UIAgent`, configure its state mapper to deserialize those events and call `SetPredictiveState`. `AgentState` then retains the prior committed value for rollback ([[Blazor] Add predictive state updates (`dotnet/aspnetcore` #68335)](https://github.com/dotnet/aspnetcore/pull/68335)): ```csharp +var agent = new UIAgent(chatClient, options => +{ + options.StateMapper = context => + { +using System.Text.Json; +using AGUI.Abstractions; +using Microsoft.AspNetCore.Components.AI; + var agent = new UIAgent(chatClient, options => { options.StateMapper = context => { if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && - snapshot.Snapshot.Deserialize() is { } predictedState) - { - context.SetPredictiveState(predictedState); - } - }; + snapshot.Snapshot.Deserialize( + JsonSerializerOptions.Web) is { } predictedState) options.RegisterUIAction(AIFunctionFactory.Create( ConfirmChanges, From 59755ef338c41b15c6ebde4a719ac225642179ba Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Fri, 11 Sep 2026 18:08:54 -0400 Subject: [PATCH 12/13] Updates --- .../release-notes/aspnetcore-11/includes/blazor.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index 94aee64e5552..e7eddd16012d 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -1158,6 +1158,8 @@ An app can require the user to approve a consequential tool call, such as schedu +``` + ![A tool call waiting for human approval](~/release-notes/aspnetcore-11/static/blazor-ai-tool-approval.png) For a MAF agent, the server decides which functions require approval, and AG-UI transports the request and decision. See [Human-in-the-loop with AG-UI](/agent-framework/integrations/by-component/ui/ag-ui/human-in-the-loop). @@ -1232,12 +1234,8 @@ The app configures a state mapper for the `ChatResponseUpdate` values produced b ```csharp using System.Text.Json; -using AGUI.Abstractions; - -var agent = new UIAgent(chatClient, options => -using System.Text.Json; -using AGUI.Abstractions; using Microsoft.AspNetCore.Components.AI; +using AGUI.Abstractions; var agent = new UIAgent(chatClient, options => { @@ -1262,13 +1260,9 @@ Predictive state permits an app to render an agent's proposed state change while An AG-UI server integration can map streamed arguments for a state-writing tool to provisional state events. The completed tool-call arguments are the authoritative proposal. When creating the `UIAgent`, configure its state mapper to deserialize those events and call `SetPredictiveState`. `AgentState` then retains the prior committed value for rollback ([[Blazor] Add predictive state updates (`dotnet/aspnetcore` #68335)](https://github.com/dotnet/aspnetcore/pull/68335)): ```csharp -var agent = new UIAgent(chatClient, options => -{ - options.StateMapper = context => - { using System.Text.Json; -using AGUI.Abstractions; using Microsoft.AspNetCore.Components.AI; +using AGUI.Abstractions; var agent = new UIAgent(chatClient, options => { From 97da810b7aab2e192b1e58a65c5664ca5b2f4262 Mon Sep 17 00:00:00 2001 From: guardrex <1622880+guardrex@users.noreply.github.com> Date: Fri, 11 Sep 2026 18:21:10 -0400 Subject: [PATCH 13/13] Updates --- .../aspnetcore-11/includes/blazor.md | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md index e7eddd16012d..f718bf1ac15a 100644 --- a/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md +++ b/aspnetcore/release-notes/aspnetcore-11/includes/blazor.md @@ -919,13 +919,13 @@ Add the package to a Blazor app: dotnet add package Microsoft.AspNetCore.Components.AI --version 0.1.0-preview.1.26459.102 ``` -Add the [`AGUI.Client` NuGet package](https://www.nuget.org/packages/AGUI.Client) to enable AG-UI connectivity: +Basic chat and the Components.AI block model work with any `IChatClient`. To connect the Blazor app to a remote agent over the [Agent User Interaction Protocol (AG-UI)](https://ag-ui.com), install the `AGUI.Client` package: ```dotnetcli dotnet add package AGUI.Client ``` -Basic chat and the Components.AI block model work with any `IChatClient`. To connect the Blazor app to a remote agent over the [Agent User Interaction Protocol (AG-UI)](https://ag-ui.com), register an [`AGUIChatClient`](https://docs.ag-ui.com/sdk/dotnet/client/chat-client) as the app's `IChatClient`: +`AGUI.Client` includes a transitive reference to `AGUI.Abstractions`, which provides the AG-UI event types used in later examples. Register an [`AGUIChatClient`](https://docs.ag-ui.com/sdk/dotnet/client/chat-client) as the app's `IChatClient`: ```csharp using AGUI.Client; @@ -1083,19 +1083,18 @@ Frontend tools run in the client app rather than on the agent server. For exampl var setAccentColor = AIFunctionFactory.Create( async (string color) => { - await InvokeAsync(() => accentColor = color); - return $"Changed the accent color to {color}."; - }, - name: "set_accent_color"); - await InvokeAsync(() => { accentColor = color; StateHasChanged(); }); + return $"Changed the accent color to {color}."; + }, + name: "set_accent_color"); + var agent = new UIAgent( chatClient, - options => options.RegisterUIAction(setAccentColor)); + options => options.RegisterUIAction(setAccentColor)) ``` Place a `BlockRenderer` in `MessageListContent` to handle the function call requested by the agent. For example, the renderer can use a component that automatically invokes the function and displays its progress: @@ -1145,10 +1144,6 @@ Calling `InvokeAsync` executes the registered function with the arguments suppli An app can require the user to approve a consequential tool call, such as scheduling a meeting, before the agent proceeds. Tool approval requests become `FunctionApprovalBlock` instances. The conversation pauses until the UI calls `Approve` or `Reject` ([[Blazor] Add Components.AI human approval flows (`dotnet/aspnetcore` #68329)](https://github.com/dotnet/aspnetcore/pull/68329)): ```razor - -

Allow @approval.ToolName to run?

- - @@ -1234,8 +1229,8 @@ The app configures a state mapper for the `ChatResponseUpdate` values produced b ```csharp using System.Text.Json; -using Microsoft.AspNetCore.Components.AI; using AGUI.Abstractions; +using Microsoft.AspNetCore.Components.AI; var agent = new UIAgent(chatClient, options => { @@ -1244,6 +1239,10 @@ var agent = new UIAgent(chatClient, options => if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && snapshot.Snapshot.Deserialize( JsonSerializerOptions.Web) is { } state) + { + context.SetState(state); + } + }; }); ``` @@ -1261,8 +1260,8 @@ An AG-UI server integration can map streamed arguments for a state-writing tool ```csharp using System.Text.Json; -using Microsoft.AspNetCore.Components.AI; using AGUI.Abstractions; +using Microsoft.AspNetCore.Components.AI; var agent = new UIAgent(chatClient, options => { @@ -1271,6 +1270,10 @@ var agent = new UIAgent(chatClient, options => if (context.Update.RawRepresentation is StateSnapshotEvent snapshot && snapshot.Snapshot.Deserialize( JsonSerializerOptions.Web) is { } predictedState) + { + context.SetPredictiveState(predictedState); + } + }; options.RegisterUIAction(AIFunctionFactory.Create( ConfirmChanges,