Skip to content

Update AG-UI C# docs for MAF v1.14 package/API changes - #430

Open
danroth27 wants to merge 35 commits into
MicrosoftDocs:mainfrom
danroth27:daroth/agui-csharp-v1.14-updates
Open

Update AG-UI C# docs for MAF v1.14 package/API changes#430
danroth27 wants to merge 35 commits into
MicrosoftDocs:mainfrom
danroth27:daroth/agui-csharp-v1.14-updates

Conversation

@danroth27

Copy link
Copy Markdown

Summary

Updates the AG-UI C# documentation to match the newly released packages (Microsoft Agent Framework v1.14+ and the AG-UI C# SDK). The current C# samples reference the removed in-tree Microsoft.Agents.AI.AGUI package and the old AddAGUI() / MapAGUI() API.

Changes

  • Package: the AG-UI protocol/client now ships in the AG-UI C# SDK (AGUI.Client, AGUI.Server, AGUI.Abstractions); the in-tree Microsoft.Agents.AI.AGUI package was removed. Server hosting stays in Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.
  • API renames (to match the sibling AddA2AServer convention):
    • builder.Services.AddAGUI()builder.Services.AddAGUIServer()
    • app.MapAGUI("/", agent)app.MapAGUIServer("/", agent)
  • AGUIChatClient construction is now options-based:
    • new AGUIChatClient(httpClient, serverUrl)new AGUIChatClient(new AGUIChatClientOptions(httpClient, serverUrl))
  • Updated using directives (Microsoft.Agents.AI.AGUIAGUI.Client) and the "Key Concepts" descriptions accordingly.

Files touched: getting-started.md, backend-tool-rendering.md, frontend-tools.md, human-in-the-loop.md, state-management.md, index.md (C# pivots only; Python content unchanged).

Notes

  • Verified against a working end-to-end Blazor + MAF + AG-UI sample built on these packages: https://github.com/danroth27/AgenticUI
  • Opening as draft for review. The AG-UI hosting package (Microsoft.Agents.AI.Hosting.AGUI.AspNetCore) is still preview; the doc could optionally call that out.

Reference: the package migration is described in the MAF repo's Microsoft.Agents.AI.AGUI/README.md and ag-ui-protocol/ag-ui#1963.

- Microsoft.Agents.AI.AGUI package removed; client now in AGUI.Client (AG-UI C# SDK)
- AddAGUI() -> AddAGUIServer(); MapAGUI() -> MapAGUIServer()
- AGUIChatClient now options-based: new AGUIChatClient(new AGUIChatClientOptions(httpClient, url))
- Update using directives and key-concept descriptions accordingly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit 158ea7f:

✅ Validation status: passed

File Status Preview URL Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/state-management.md ✅Succeeded

For more details, please refer to the build report.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit 44152c3:

✅ Validation status: passed

File Status Preview URL Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/state-management.md ✅Succeeded

For more details, please refer to the build report.

- state-management (C#): correct client-state input to chatOptions.TryGetRunAgentInput()/
  RunAgentInput.State (was a stale ag_ui_state key) and STATE_SNAPSHOT emission to
  ChatResponseUpdate.RawRepresentation = StateSnapshotEvent (was DataContent, which the released
  AGUI.Server drops); add a working C# client example and a new Predictive State Updates section.
- workflows (C#): replace 'coming soon' with the enabled pattern (AgentWorkflowBuilder...AsAIAgent()
  + MapAGUIServer), honestly scoping which workflow events stream today.
- mcp-apps (C#): replace 'coming soon' with MCP Apps compatibility guidance (no .NET-side changes).
- testing-with-dojo (C#): replace 'coming soon' with a full Dojo testing guide.
- getting-started (C#): add Common Patterns and Troubleshooting.
- backend-tool-rendering (C#): add Tool Best Practices and Tool Organization.
- frontend-tools (C#): add Best Practices and Troubleshooting.

All changes are within programming-language-csharp pivot zones; Python/Go zones untouched.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Based on tested .NET MAF behavior (not ported assumptions):
- human-in-the-loop (C#): add Approval Requirements (.NET has no approval 'modes' -
  ApprovalRequiredAIFunction is always-require; not wrapping = never), Selective Approval
  (verified: unwrapped tool executes while wrapped tool interrupts), and Best Practices.
- getting-started (C#): add 'Testing with curl' (verified minimal-body request works; server
  generates threadId).
- testing-with-dojo: fix clone URL ag-oss/ag-ui -> ag-ui-protocol/ag-ui in both the Python and
  C# zones.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

danroth27 and others added 2 commits July 22, 2026 22:49
The prior C# HITL sample used non-existent types (FunctionApprovalRequestContent/
FunctionApprovalResponseContent) and ~400 lines of custom request_approval middleware.
Replaced with the idiomatic pattern, verified end-to-end against real .NET MAF:
- Server: wrap the tool in ApprovalRequiredAIFunction + MapAGUIServer (the hosting layer emits
  the approval interrupt natively).
- Client: read ToolApprovalRequestContent, CreateResponse(approved), resume (AGUIChatClient
  transports the decision via the AG-UI resume mechanism automatically).
Both server and client snippets compile against the shipped packages; the client round-trip was
run against a live server (tool executes after approval).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Verified by compiling the doc snippets against the shipped packages:
- state-management: models block declared 'namespace RecipeAssistant;' while the SharedStateAgent
  block was namespace-less, so the agent could not resolve RecipeResponse. Removed the namespace
  for consistency. (SharedStateAgent + PredictiveStateUpdatesAgent now compile.)
- backend-tool-rendering: the server program declared helper types in the middle, before later
  top-level statements (CS8803 - does not compile). Moved the types after RunAsync().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

…n.Name/Description

AIFunction.Metadata was removed from Microsoft.Extensions.AI; the tool-inspection middleware
snippet did not compile. Verified the fix compiles against the shipped packages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

danroth27 and others added 2 commits July 23, 2026 10:44
…predictive page

Reconcile @javiercn's AG-UI C# doc draft into this branch, adopting the idiomatic,
author-blessed state APIs (verified end-to-end in the AgenticUI sample):

- state-management.md (C# zone): replace the custom DelegatingAIAgent + RawRepresentation
  approach with declarative AGUIStreamOptions.MapResultAsStateSnapshot / MapResultAsStateDelta
  wired via MapAGUIServer(...).WithMetadata. Python and Go zones left untouched.
- predictive-state-updates.md: new dedicated page (AGUIStreamOptions.MapCall streaming pipeline),
  matching the Python docs' structure.
- TOC.yml: add the Predictive State Updates entry.

Co-authored-by: Javier Calvarro <javiercn@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
…essionStore isolation

Adopt @javiercn's idiomatic server wiring in getting-started (AddAIAgent + session store +
MapAGUIServer(name, pattern)) and align the backend to Azure OpenAI for consistency with the
other C# pages.

Verified fix on top of the draft: `.WithInMemorySessionStore()` defaults to withIsolation:true,
which requires a SessionIsolationKeyProvider and throws HTTP 500 at runtime without one. Use
`.WithInMemorySessionStore(withIsolation: false)` for the single-user local server (getting-started
and state-management), and note that multi-user deployments keep isolation on with a provider.

Verified end-to-end (AddAIAgent + WithInMemorySessionStore(withIsolation:false) + MapAGUIServer(name))
against GitHub Models: endpoint streams correctly.

Co-authored-by: Javier Calvarro <javiercn@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit f479683:

⚠️ Validation status: warnings

File Status Preview URL Details
agent-framework/integrations/ag-ui/predictive-state-updates.md ⚠️Warning Details
agent-framework/integrations/ag-ui/state-management.md ⚠️Warning Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/mcp-apps.md ✅Succeeded
agent-framework/integrations/ag-ui/testing-with-dojo.md ✅Succeeded
agent-framework/integrations/ag-ui/workflows.md ✅Succeeded
agent-framework/TOC.yml ✅Succeeded

agent-framework/integrations/ag-ui/predictive-state-updates.md

  • Line 0, Column 0: [Warning: pivot-id-unused] Pivot ID 'programming-language-go' is defined in 'programming-languages' group in 'zone-pivot-groups.yml', but not used. You must use all pivot IDs in a pivot group to avoid blank tabs.
  • Line 35, Column 58: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

agent-framework/integrations/ag-ui/state-management.md

  • Line 48, Column 228: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.
  • Line 174, Column 11: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

danroth27 and others added 3 commits July 23, 2026 11:47
…no session store)

The session store is optional (AG-UI clients resend history; sessions are ephemeral without one).
Match the verified AgenticUI sample: use the simplest idiomatic form -- MapAGUIServer("/", agent)
and MapAGUIServer("/route", agent).WithMetadata(streamOptions) for state -- instead of
AddAIAgent + WithInMemorySessionStore. Session persistence + principal isolation are documented as
an opt-in note (WithInMemorySessionStore(withIsolation:false) for single-user;
SessionIsolationKeyProvider / UseClaimsBasedSessionIsolation for multi-user).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
…) + fix missing usings

Backend-client consistency: the Python AG-UI docs use OpenAIChatCompletionClient (a chat client)
across the section, and the AG-UI state/predictive patterns are chat-client-level. Convert the
remaining Foundry (AIProjectClient) pages to AzureOpenAIClient for cross-language parity:
- backend-tool-rendering, human-in-the-loop, testing-with-dojo: AIProjectClient -> AzureOpenAIClient
  .GetChatClient(deployment).AsAIAgent(...). (workflows.md stays on AIProjectClient to match its
  Python counterpart, which uses FoundryChatClient.)

Build-verification fixes (compiled every complete snippet against the shipped packages):
- Add missing `using OpenAI.Chat;` where GetChatClient(...).AsAIAgent(...) is used (getting-started
  server block and state-management "Create the Agent"). AsAIAgent(this ChatClient) lives in the
  OpenAI.Chat namespace; without the using the snippet does not compile.
- Predictive verified fine as-is (AsIChatClient resolves via Microsoft.Extensions.AI; adding
  OpenAI.Chat there would clash with Microsoft.Extensions.AI.ChatMessage).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
… store + isolation)

Default is ephemeral (client owns the transcript). Document when to register a server-side
session store (stateful backends, durable/background runs, thin clients, cross-device resume,
audit) and pair it with the multi-user isolation requirement (thread ID is not an auth token;
use SessionIsolationKeyProvider / UseClaimsBasedSessionIsolation; withIsolation:false only for
single-user/local). Python AG-UI docs have no equivalent storage-backend section, so this is
.NET-specific content.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit c0766ab:

⚠️ Validation status: warnings

File Status Preview URL Details
agent-framework/integrations/ag-ui/predictive-state-updates.md ⚠️Warning Details
agent-framework/integrations/ag-ui/state-management.md ⚠️Warning Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/mcp-apps.md ✅Succeeded
agent-framework/integrations/ag-ui/testing-with-dojo.md ✅Succeeded
agent-framework/integrations/ag-ui/workflows.md ✅Succeeded
agent-framework/TOC.yml ✅Succeeded

agent-framework/integrations/ag-ui/predictive-state-updates.md

  • Line 0, Column 0: [Warning: pivot-id-unused] Pivot ID 'programming-language-go' is defined in 'programming-languages' group in 'zone-pivot-groups.yml', but not used. You must use all pivot IDs in a pivot group to avoid blank tabs.
  • Line 35, Column 58: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

agent-framework/integrations/ag-ui/state-management.md

  • Line 48, Column 228: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.
  • Line 175, Column 11: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit f43bcc6:

⚠️ Validation status: warnings

File Status Preview URL Details
agent-framework/integrations/ag-ui/predictive-state-updates.md ⚠️Warning Details
agent-framework/integrations/ag-ui/state-management.md ⚠️Warning Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/mcp-apps.md ✅Succeeded
agent-framework/integrations/ag-ui/testing-with-dojo.md ✅Succeeded
agent-framework/integrations/ag-ui/workflows.md ✅Succeeded
agent-framework/TOC.yml ✅Succeeded

agent-framework/integrations/ag-ui/predictive-state-updates.md

  • Line 0, Column 0: [Warning: pivot-id-unused] Pivot ID 'programming-language-go' is defined in 'programming-languages' group in 'zone-pivot-groups.yml', but not used. You must use all pivot IDs in a pivot group to avoid blank tabs.
  • Line 35, Column 58: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

agent-framework/integrations/ag-ui/state-management.md

  • Line 48, Column 228: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.
  • Line 175, Column 11: [Warning: xref-not-found - See documentation] Cross reference not found: 'AGUI.Server.AGUIStreamOptions'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

…k-indented

- Convert unresolvable <xref:AGUI.Server.AGUIStreamOptions> to code spans (AGUI.* SDK is not
  indexed on Learn) -> clears 3 xref-not-found warnings.
- Add a Go zone stub to predictive-state-updates.md -> clears pivot-id-unused.
- Dedent the interrupt JSON block in workflows.md -> clears code-block-indented.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Correctness:
- workflows.md: convert the workflow agents from the removed AIProjectClient (fed with an
  AZURE_OPENAI_ENDPOINT, a Foundry/AOAI endpoint mismatch) to the shipped AzureOpenAIClient
  chat-client pattern used by the rest of the section (and matching the verified sample).
- frontend-tools.md: fix a numbered list that skipped "2"; correct the type name
  ChatAgentRunOptions -> ChatClientAgentRunOptions (x2).

Noise / simplicity:
- Remove the unnecessary `builder.Services.AddHttpClient().AddLogging();` boilerplate from 6
  server snippets (an AG-UI server does not need it; the flagship getting-started already dropped it).
- frontend-tools.md: remove a tangential, incomplete "inspect tools via middleware" section
  (referenced an undefined `baseAgent` and ended with a dangling bullet).
- getting-started.md: drop the "Color-Coded Output" console trivia; simplify "Custom Server
  Configuration" by removing the unused ChatRequestMetadata/AppJsonSerializerContext types.
- backend-tool-rendering.md: replace ~180 lines of generic, non-AG-UI "Tool Best Practices"/"Tool
  Organization" code examples (incl. a try/catch around code that can't throw) with a concise
  bulleted list.

Clarity:
- human-in-the-loop.md: soften prose that claimed "no protocol to implement on the client" while the
  sample carries threadId/ParentRunId across turns; explain the continuity plumbing instead.
- predictive-state-updates.md: note that the .NET 10 floor is due to TypedResults.ServerSentEvents.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Comment thread agent-framework/integrations/ag-ui/getting-started.md Outdated
Trim the getting-started console client to the same scope as the Python
sample: use the update.Text convenience instead of iterating Contents,
pass only the new message and let AgentSession track history, set the
system prompt via AsAIAgent(instructions:), and drop the run-started/
finished notifications and color scaffolding. Verified end-to-end against
a live AG-UI server (streaming + multi-turn session memory).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Comment thread agent-framework/integrations/ag-ui/getting-started.md Outdated
danroth27 and others added 2 commits July 24, 2026 21:59
…e page)

Match the Python docs, which document predictive state updates inline in the
State Management tutorial. Move the C# predictive content into the state-management
C# zone as a Predictive State Updates section, delete the standalone
predictive-state-updates.md, and remove its TOC entry. The Python and Go zones
already pointed back to State Management, so no content is lost.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
…p TOC entry

Follow-up to the predictive-state-updates.md deletion: add the C# predictive
content to the state-management C# zone (matching the Python inline approach) and
remove the stale TOC entry that pointed at the deleted page.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit 90128d4:

⚠️ Validation status: warnings

File Status Preview URL Details
agent-framework/integrations/ag-ui/state-management.md ⚠️Warning Details
agent-framework/TOC.yml ⚠️Warning Details
agent-framework/integrations/ag-ui/backend-tool-rendering.md ✅Succeeded
agent-framework/integrations/ag-ui/frontend-tools.md ✅Succeeded
agent-framework/integrations/ag-ui/getting-started.md ✅Succeeded
agent-framework/integrations/ag-ui/human-in-the-loop.md ✅Succeeded
agent-framework/integrations/ag-ui/index.md ✅Succeeded
agent-framework/integrations/ag-ui/mcp-apps.md ✅Succeeded
agent-framework/integrations/ag-ui/testing-with-dojo.md ✅Succeeded
agent-framework/integrations/ag-ui/workflows.md ✅Succeeded

agent-framework/integrations/ag-ui/state-management.md

  • Line 342, Column 99: [Warning: file-not-found - See documentation] Invalid file link: 'predictive-state-updates.md'.

agent-framework/TOC.yml

  • Line 232, Column 13: [Warning: file-not-found - See documentation] Invalid file link: 'integrations/ag-ui/predictive-state-updates.md'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

The MCP Apps C# content mostly documented CopilotKit's TypeScript
MCPAppsMiddleware, which .NET doesn't ship, so it doesn't belong in this PR.
Revert the C# zone to the pre-existing "coming soon" note (its state in main).
Python and Go zones are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Revert the file entirely to main. The C# Dojo content is removed (the .NET Dojo
experience isn't well-supported yet: no prebuilt .NET example agents, and the
example-agents table listed Python endpoints), returning the C# zone to its
"coming soon" stub. Also drop the unrelated Python-zone clone-URL fix
(ag-oss -> ag-ui-protocol) as out of scope for this PR. Net: this PR no longer
touches testing-with-dojo.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Comment thread agent-framework/integrations/ag-ui/workflows.md Outdated
The C# workflow-over-AG-UI story is "a workflow-as-agent is just an AIAgent, map
it with MapAGUIServer like any agent" plus the honest limitation that .NET streams
only agent output, not workflow-specific AG-UI events (step tracking, interrupts)
- those remain Python-only (tracked by agent-framework#2494). Replace the longer
version with a compact section: verified minimal example + AuthorName note +
limitation note. Also revert the out-of-scope Python (JSON re-indent) and Go
(whitespace) edits so the PR only touches the C# zone.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

- getting-started: drop the removed-package history note, the run-ID/wording
  note, the redundant JSON-serialization sentence, the obvious "clients connect
  to route" line, and the generic Troubleshooting section; revert an incidental
  trailing-newline change.
- human-in-the-loop: simplify the server intro, drop the "no custom protocol"
  line, remove the MEAI001 #pragma suppressions from snippets, and delete the
  generic Best Practices section.
- backend-tool-rendering: drop the non-AG-UI "group related tools" bullet.
- frontend-tools: remove the generic Best Practices section.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

danroth27 and others added 2 commits July 25, 2026 00:04
…ices section

Per follow-up review comment - the tool-authoring best practices aren't
AG-UI-specific.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Custom server configuration and multiple-agent mapping aren't AG-UI-specific
(and follow directly from the basic MapAGUIServer usage already shown).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@danroth27
danroth27 marked this pull request as ready for review July 25, 2026 07:11
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

…lerplate)

Verified that AGUIChatClient resumes an interrupted run when you reuse the same
AgentSession and send the ToolApprovalResponseContent - it auto-builds the AG-UI
Resume payload and recovers the thread id itself. The RunStartedEvent capture and
the ChatOptions.RawRepresentationFactory (ThreadId/ParentRunId) block were
unnecessary, so remove them. The resume turn is now just
RunStreamingAsync(resume, session). Verified end-to-end against a live HITL
endpoint (approve -> tool runs).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Follow the Microsoft writing style guidance and remove common AI tells: replace
em-dash asides and clause-joining semicolons in the C# prose (and a few code
comments) with plain sentences, colons, or commas. Prose only - no code or
behavior changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

- backend-tool-rendering.md: the getting-started client no longer plumbs the
  thread id, so drop "Thread: ..." from the expected-output block; name the
  backend tool "search_restaurants" (matching the Python and Go zones) so the
  displayed function name is accurate instead of a compiler-mangled local name.
- human-in-the-loop.md: give the approval tool an explicit "send_email" name so
  it matches the surrounding prose instead of a compiler-mangled local name.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eeb2168d-2ecc-4f8d-9830-c287072eb7e1
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant