Full Code of microsoft/agent-framework for AI

main 7e6d87e7ec26 cached
3818 files
24.4 MB
6.7M tokens
24585 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (26,504K chars total). Download the full file to get everything.
Repository: microsoft/agent-framework
Branch: main
Commit: 7e6d87e7ec26
Files: 3818
Total size: 24.4 MB

Directory structure:
gitextract_vfvjow7b/

├── .devcontainer/
│   ├── devcontainer.json
│   └── dotnet/
│       └── devcontainer.json
├── .gitattributes
├── .github/
│   ├── .linkspector.yml
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── dotnet-issue.yml
│   │   ├── feature-request.yml
│   │   └── python-issue.yml
│   ├── actions/
│   │   ├── azure-functions-integration-setup/
│   │   │   └── action.yml
│   │   ├── python-setup/
│   │   │   └── action.yml
│   │   └── sample-validation-setup/
│   │       └── action.yml
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── instructions/
│   │   └── durabletask-dotnet.instructions.md
│   ├── labeler.yml
│   ├── pull_request_template.md
│   ├── scripts/
│   │   └── stale_issue_pr_ping.py
│   ├── tests/
│   │   └── test_stale_issue_pr_ping.py
│   ├── upgrades/
│   │   └── prompts/
│   │       └── SemanticKernelToAgentFramework.md
│   └── workflows/
│       ├── codeql-analysis.yml
│       ├── dotnet-build-and-test.yml
│       ├── dotnet-format.yml
│       ├── dotnet-integration-tests.yml
│       ├── integration-tests-manual.yml
│       ├── label-issues.yml
│       ├── label-pr.yml
│       ├── label-title-prefix.yml
│       ├── markdown-link-check.yml
│       ├── merge-gatekeeper.yml
│       ├── python-check-coverage.py
│       ├── python-code-quality.yml
│       ├── python-dependency-range-validation.yml
│       ├── python-dev-dependency-upgrade.yml
│       ├── python-docs.yml
│       ├── python-integration-tests.yml
│       ├── python-lab-tests.yml
│       ├── python-merge-tests.yml
│       ├── python-release.yml
│       ├── python-sample-validation.yml
│       ├── python-test-coverage-report.yml
│       ├── python-test-coverage.yml
│       ├── python-tests.yml
│       └── stale-issue-pr-ping.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── COMMUNITY.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── TRANSPARENCY_FAQ.md
├── agent-samples/
│   ├── README.md
│   ├── azure/
│   │   ├── AzureOpenAI.yaml
│   │   ├── AzureOpenAIAssistants.yaml
│   │   ├── AzureOpenAIChat.yaml
│   │   └── AzureOpenAIResponses.yaml
│   ├── chatclient/
│   │   ├── Assistant.yaml
│   │   └── GetWeather.yaml
│   ├── foundry/
│   │   ├── FoundryAgent.yaml
│   │   ├── MicrosoftLearnAgent.yaml
│   │   └── PersistentAgent.yaml
│   └── openai/
│       ├── OpenAI.yaml
│       ├── OpenAIAssistants.yaml
│       ├── OpenAIChat.yaml
│       └── OpenAIResponses.yaml
├── docs/
│   ├── FAQS.md
│   ├── decisions/
│   │   ├── 0001-agent-run-response.md
│   │   ├── 0002-agent-tools.md
│   │   ├── 0003-agent-opentelemetry-instrumentation.md
│   │   ├── 0004-foundry-sdk-extensions.md
│   │   ├── 0005-python-naming-conventions.md
│   │   ├── 0006-userapproval.md
│   │   ├── 0007-agent-filtering-middleware.md
│   │   ├── 0008-python-subpackages.md
│   │   ├── 0009-support-long-running-operations.md
│   │   ├── 0010-ag-ui-support.md
│   │   ├── 0011-create-get-agent-api.md
│   │   ├── 0012-python-typeddict-options.md
│   │   ├── 0013-python-get-response-simplification.md
│   │   ├── 0014-feature-collections.md
│   │   ├── 0015-agent-run-context.md
│   │   ├── 0016-python-context-middleware.md
│   │   ├── 0016-structured-output.md
│   │   ├── 0017-agent-additional-properties.md
│   │   ├── 0018-agentthread-serialization.md
│   │   ├── 0019-python-context-compaction-strategy.md
│   │   ├── 0020-foundry-evals-integration.md
│   │   ├── README.md
│   │   ├── adr-short-template.md
│   │   └── adr-template.md
│   ├── design/
│   │   └── python-package-setup.md
│   ├── features/
│   │   ├── durable-agents/
│   │   │   ├── AGENTS.md
│   │   │   ├── README.md
│   │   │   └── durable-agents-ttl.md
│   │   └── vector-stores-and-embeddings/
│   │       └── README.md
│   └── specs/
│       ├── 001-foundry-sdk-alignment.md
│       └── spec-template.md
├── dotnet/
│   ├── .editorconfig
│   ├── .github/
│   │   └── skills/
│   │       ├── build-and-test/
│   │       │   └── SKILL.md
│   │       ├── project-structure/
│   │       │   └── SKILL.md
│   │       └── verify-dotnet-samples/
│   │           └── SKILL.md
│   ├── .gitignore
│   ├── .vscode/
│   │   ├── extensions.json
│   │   ├── settings.json
│   │   └── tasks.json
│   ├── AGENTS.md
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── Directory.Packages.props
│   ├── README.md
│   ├── agent-framework-dotnet.slnx
│   ├── agent-framework-release.slnf
│   ├── eng/
│   │   ├── MSBuild/
│   │   │   ├── LegacySupport.props
│   │   │   ├── Shared.props
│   │   │   └── Shared.targets
│   │   └── scripts/
│   │       ├── New-FilteredSolution.ps1
│   │       └── dotnet-check-coverage.ps1
│   ├── global.json
│   ├── nuget/
│   │   ├── NUGET.md
│   │   └── nuget-package.props
│   ├── nuget.config
│   ├── samples/
│   │   ├── .editorconfig
│   │   ├── 01-get-started/
│   │   │   ├── 01_hello_agent/
│   │   │   │   ├── 01_hello_agent.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 02_add_tools/
│   │   │   │   ├── 02_add_tools.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 03_multi_turn/
│   │   │   │   ├── 03_multi_turn.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 04_memory/
│   │   │   │   ├── 04_memory.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 05_first_workflow/
│   │   │   │   ├── 05_first_workflow.csproj
│   │   │   │   └── Program.cs
│   │   │   └── 06_host_your_agent/
│   │   │       ├── 06_host_your_agent.csproj
│   │   │       └── Program.cs
│   │   ├── 02-agents/
│   │   │   ├── AGUI/
│   │   │   │   ├── README.md
│   │   │   │   ├── Step01_GettingStarted/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step02_BackendTools/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step03_FrontendTools/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step04_HumanInLoop/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── ServerFunctionApprovalClientAgent.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── ServerFunctionApprovalServerAgent.cs
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   └── Step05_StateManagement/
│   │   │   │       ├── Client/
│   │   │   │       │   ├── Client.csproj
│   │   │   │       │   ├── Program.cs
│   │   │   │       │   └── StatefulAgent.cs
│   │   │   │       └── Server/
│   │   │   │           ├── Program.cs
│   │   │   │           ├── Properties/
│   │   │   │           │   └── launchSettings.json
│   │   │   │           ├── RecipeModels.cs
│   │   │   │           ├── Server.csproj
│   │   │   │           ├── SharedStateAgent.cs
│   │   │   │           ├── appsettings.Development.json
│   │   │   │           └── appsettings.json
│   │   │   ├── AgentOpenTelemetry/
│   │   │   │   ├── AgentOpenTelemetry.csproj
│   │   │   │   ├── Program.cs
│   │   │   │   ├── README.md
│   │   │   │   └── start-demo.ps1
│   │   │   ├── AgentProviders/
│   │   │   │   ├── Agent_With_A2A/
│   │   │   │   │   ├── Agent_With_A2A.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_Anthropic/
│   │   │   │   │   ├── Agent_With_Anthropic.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureAIAgentsPersistent/
│   │   │   │   │   ├── Agent_With_AzureAIAgentsPersistent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureAIProject/
│   │   │   │   │   ├── Agent_With_AzureAIProject.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureFoundryModel/
│   │   │   │   │   ├── Agent_With_AzureFoundryModel.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureOpenAIChatCompletion/
│   │   │   │   │   ├── Agent_With_AzureOpenAIChatCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureOpenAIResponses/
│   │   │   │   │   ├── Agent_With_AzureOpenAIResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_CustomImplementation/
│   │   │   │   │   ├── Agent_With_CustomImplementation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_GitHubCopilot/
│   │   │   │   │   ├── Agent_With_GitHubCopilot.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_GoogleGemini/
│   │   │   │   │   ├── Agent_With_GoogleGemini.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_ONNX/
│   │   │   │   │   ├── Agent_With_ONNX.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_Ollama/
│   │   │   │   │   ├── Agent_With_Ollama.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIAssistants/
│   │   │   │   │   ├── Agent_With_OpenAIAssistants.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIChatCompletion/
│   │   │   │   │   ├── Agent_With_OpenAIChatCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIResponses/
│   │   │   │   │   ├── Agent_With_OpenAIResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentSkills/
│   │   │   │   ├── Agent_Step01_BasicSkills/
│   │   │   │   │   ├── Agent_Step01_BasicSkills.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── skills/
│   │   │   │   │       └── expense-report/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── assets/
│   │   │   │   │           │   └── expense-report-template.md
│   │   │   │   │           └── references/
│   │   │   │   │               └── POLICY_FAQ.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithAnthropic/
│   │   │   │   ├── Agent_Anthropic_Step01_Running/
│   │   │   │   │   ├── Agent_Anthropic_Step01_Running.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step02_Reasoning/
│   │   │   │   │   ├── Agent_Anthropic_Step02_Reasoning.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step03_UsingFunctionTools/
│   │   │   │   │   ├── Agent_Anthropic_Step03_UsingFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step04_UsingSkills/
│   │   │   │   │   ├── Agent_Anthropic_Step04_UsingSkills.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithMemory/
│   │   │   │   ├── AgentWithMemory_Step01_ChatHistoryMemory/
│   │   │   │   │   ├── AgentWithMemory_Step01_ChatHistoryMemory.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithMemory_Step02_MemoryUsingMem0/
│   │   │   │   │   ├── AgentWithMemory_Step02_MemoryUsingMem0.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithMemory_Step04_MemoryUsingFoundry/
│   │   │   │   │   ├── AgentWithMemory_Step04_MemoryUsingFoundry.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── AgentWithMemory_Step05_BoundedChatHistory/
│   │   │   │   │   ├── AgentWithMemory_Step05_BoundedChatHistory.csproj
│   │   │   │   │   ├── BoundedChatHistoryProvider.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── TruncatingChatReducer.cs
│   │   │   │   └── README.md
│   │   │   ├── AgentWithOpenAI/
│   │   │   │   ├── Agent_OpenAI_Step01_Running/
│   │   │   │   │   ├── Agent_OpenAI_Step01_Running.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_OpenAI_Step02_Reasoning/
│   │   │   │   │   ├── Agent_OpenAI_Step02_Reasoning.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_OpenAI_Step03_CreateFromChatClient/
│   │   │   │   │   ├── Agent_OpenAI_Step03_CreateFromChatClient.csproj
│   │   │   │   │   ├── OpenAIChatClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/
│   │   │   │   │   ├── Agent_OpenAI_Step04_CreateFromOpenAIResponseClient.csproj
│   │   │   │   │   ├── OpenAIResponseClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_OpenAI_Step05_Conversation/
│   │   │   │   │   ├── Agent_OpenAI_Step05_Conversation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithRAG/
│   │   │   │   ├── AgentWithRAG_Step01_BasicTextRAG/
│   │   │   │   │   ├── AgentWithRAG_Step01_BasicTextRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── TextSearchStore/
│   │   │   │   │       ├── TextSearchDocument.cs
│   │   │   │   │       ├── TextSearchStore.cs
│   │   │   │   │       ├── TextSearchStoreOptions.cs
│   │   │   │   │       └── TextSearchStoreUpsertOptions.cs
│   │   │   │   ├── AgentWithRAG_Step02_CustomVectorStoreRAG/
│   │   │   │   │   ├── AgentWithRAG_Step02_CustomVectorStoreRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── AgentWithRAG_Step03_CustomRAGDataSource/
│   │   │   │   │   ├── AgentWithRAG_Step03_CustomRAGDataSource.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithRAG_Step04_FoundryServiceRAG/
│   │   │   │   │   ├── AgentWithRAG_Step04_FoundryServiceRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── contoso-outdoors-knowledge-base.md
│   │   │   │   └── README.md
│   │   │   ├── Agents/
│   │   │   │   ├── Agent_Step01_UsingFunctionToolsWithApprovals/
│   │   │   │   │   ├── Agent_Step01_UsingFunctionToolsWithApprovals.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step02_StructuredOutput/
│   │   │   │   │   ├── AIAgentBuilderExtensions.cs
│   │   │   │   │   ├── Agent_Step02_StructuredOutput.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── StructuredOutputAgent.cs
│   │   │   │   │   ├── StructuredOutputAgentOptions.cs
│   │   │   │   │   └── StructuredOutputAgentResponse.cs
│   │   │   │   ├── Agent_Step03_PersistedConversations/
│   │   │   │   │   ├── Agent_Step03_PersistedConversations.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step04_3rdPartyChatHistoryStorage/
│   │   │   │   │   ├── Agent_Step04_3rdPartyChatHistoryStorage.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step05_Observability/
│   │   │   │   │   ├── Agent_Step05_Observability.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step06_DependencyInjection/
│   │   │   │   │   ├── Agent_Step06_DependencyInjection.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step07_AsMcpTool/
│   │   │   │   │   ├── Agent_Step07_AsMcpTool.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step08_UsingImages/
│   │   │   │   │   ├── Agent_Step08_UsingImages.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step09_AsFunctionTool/
│   │   │   │   │   ├── Agent_Step09_AsFunctionTool.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step10_BackgroundResponsesWithToolsAndPersistence/
│   │   │   │   │   ├── Agent_Step10_BackgroundResponsesWithToolsAndPersistence.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step11_Middleware/
│   │   │   │   │   ├── Agent_Step11_Middleware.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step12_Plugins/
│   │   │   │   │   ├── Agent_Step12_Plugins.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step13_ChatReduction/
│   │   │   │   │   ├── Agent_Step13_ChatReduction.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step14_BackgroundResponses/
│   │   │   │   │   ├── Agent_Step14_BackgroundResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step15_DeepResearch/
│   │   │   │   │   ├── Agent_Step15_DeepResearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step16_Declarative/
│   │   │   │   │   ├── Agent_Step16_Declarative.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step17_AdditionalAIContext/
│   │   │   │   │   ├── Agent_Step17_AdditionalAIContext.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step18_CompactionPipeline/
│   │   │   │   │   ├── Agent_Step18_CompactionPipeline.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── DeclarativeAgents/
│   │   │   │   └── ChatClient/
│   │   │   │       ├── DeclarativeChatClientAgents.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Properties/
│   │   │   │           └── launchSettings.json
│   │   │   ├── DevUI/
│   │   │   │   ├── DevUI_Step01_BasicUsage/
│   │   │   │   │   ├── DevUI_Step01_BasicUsage.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── FoundryAgents/
│   │   │   │   ├── FoundryAgents_Evaluations_Step01_RedTeaming/
│   │   │   │   │   ├── FoundryAgents_Evaluations_Step01_RedTeaming.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Evaluations_Step02_SelfReflection/
│   │   │   │   │   ├── FoundryAgents_Evaluations_Step02_SelfReflection.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step01.1_Basics/
│   │   │   │   │   ├── FoundryAgents_Step01.1_Basics.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step01.2_Running/
│   │   │   │   │   ├── FoundryAgents_Step01.2_Running.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step02_MultiturnConversation/
│   │   │   │   │   ├── FoundryAgents_Step02_MultiturnConversation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step03_UsingFunctionTools/
│   │   │   │   │   ├── FoundryAgents_Step03_UsingFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step04_UsingFunctionToolsWithApprovals/
│   │   │   │   │   ├── FoundryAgents_Step04_UsingFunctionToolsWithApprovals.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step05_StructuredOutput/
│   │   │   │   │   ├── FoundryAgents_Step05_StructuredOutput.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step06_PersistedConversations/
│   │   │   │   │   ├── FoundryAgents_Step06_PersistedConversations.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step07_Observability/
│   │   │   │   │   ├── FoundryAgents_Step07_Observability.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step08_DependencyInjection/
│   │   │   │   │   ├── FoundryAgents_Step08_DependencyInjection.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step09_UsingMcpClientAsTools/
│   │   │   │   │   ├── FoundryAgents_Step09_UsingMcpClientAsTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step10_UsingImages/
│   │   │   │   │   ├── FoundryAgents_Step10_UsingImages.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step11_AsFunctionTool/
│   │   │   │   │   ├── FoundryAgents_Step11_AsFunctionTool.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step12_Middleware/
│   │   │   │   │   ├── FoundryAgents_Step12_Middleware.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step13_Plugins/
│   │   │   │   │   ├── FoundryAgents_Step13_Plugins.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step14_CodeInterpreter/
│   │   │   │   │   ├── FoundryAgents_Step14_CodeInterpreter.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step15_ComputerUse/
│   │   │   │   │   ├── ComputerUseUtil.cs
│   │   │   │   │   ├── FoundryAgents_Step15_ComputerUse.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step16_FileSearch/
│   │   │   │   │   ├── FoundryAgents_Step16_FileSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step17_OpenAPITools/
│   │   │   │   │   ├── FoundryAgents_Step17_OpenAPITools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step18_BingCustomSearch/
│   │   │   │   │   ├── FoundryAgents_Step18_BingCustomSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step19_SharePoint/
│   │   │   │   │   ├── FoundryAgents_Step19_SharePoint.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step20_MicrosoftFabric/
│   │   │   │   │   ├── FoundryAgents_Step20_MicrosoftFabric.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step21_WebSearch/
│   │   │   │   │   ├── FoundryAgents_Step21_WebSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step22_MemorySearch/
│   │   │   │   │   ├── FoundryAgents_Step22_MemorySearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step23_LocalMCP/
│   │   │   │   │   ├── FoundryAgents_Step23_LocalMCP.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── ModelContextProtocol/
│   │   │   │   ├── Agent_MCP_Server/
│   │   │   │   │   ├── Agent_MCP_Server.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_MCP_Server_Auth/
│   │   │   │   │   ├── Agent_MCP_Server_Auth.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgent_Hosted_MCP/
│   │   │   │   │   ├── FoundryAgent_Hosted_MCP.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── README.md
│   │   │   │   └── ResponseAgent_Hosted_MCP/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── README.md
│   │   │   │       └── ResponseAgent_Hosted_MCP.csproj
│   │   │   └── README.md
│   │   ├── 03-workflows/
│   │   │   ├── Agents/
│   │   │   │   ├── CustomAgentExecutors/
│   │   │   │   │   ├── CustomAgentExecutors.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── FoundryAgent/
│   │   │   │   │   ├── FoundryAgent.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── GroupChatToolApproval/
│   │   │   │   │   ├── DeploymentGroupChatManager.cs
│   │   │   │   │   ├── GroupChatToolApproval.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── WorkflowAsAnAgent/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── WorkflowAsAnAgent.csproj
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Checkpoint/
│   │   │   │   ├── CheckpointAndRehydrate/
│   │   │   │   │   ├── CheckpointAndRehydrate.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── WorkflowFactory.cs
│   │   │   │   ├── CheckpointAndResume/
│   │   │   │   │   ├── CheckpointAndResume.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── WorkflowFactory.cs
│   │   │   │   └── CheckpointWithHumanInTheLoop/
│   │   │   │       ├── CheckpointWithHumanInTheLoop.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Concurrent/
│   │   │   │   ├── Concurrent/
│   │   │   │   │   ├── Concurrent.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   └── MapReduce/
│   │   │   │       ├── MapReduce.csproj
│   │   │   │       └── Program.cs
│   │   │   ├── ConditionalEdges/
│   │   │   │   ├── 01_EdgeCondition/
│   │   │   │   │   ├── 01_EdgeCondition.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Resources.cs
│   │   │   │   ├── 02_SwitchCase/
│   │   │   │   │   ├── 02_SwitchCase.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Resources.cs
│   │   │   │   └── 03_MultiSelection/
│   │   │   │       ├── 03_MultiSelection.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Resources.cs
│   │   │   ├── Declarative/
│   │   │   │   ├── ConfirmInput/
│   │   │   │   │   ├── ConfirmInput.csproj
│   │   │   │   │   ├── ConfirmInput.yaml
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── CustomerSupport/
│   │   │   │   │   ├── CustomerSupport.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── TicketingPlugin.cs
│   │   │   │   ├── DeepResearch/
│   │   │   │   │   ├── DeepResearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── wttr.json
│   │   │   │   ├── ExecuteCode/
│   │   │   │   │   ├── ExecuteCode.csproj
│   │   │   │   │   ├── Generated.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── ExecuteWorkflow/
│   │   │   │   │   ├── ExecuteWorkflow.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── FunctionTools/
│   │   │   │   │   ├── FunctionTools.csproj
│   │   │   │   │   ├── FunctionTools.yaml
│   │   │   │   │   ├── MenuPlugin.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── GenerateCode/
│   │   │   │   │   ├── GenerateCode.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── HostedWorkflow/
│   │   │   │   │   ├── HostedWorkflow.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── InputArguments/
│   │   │   │   │   ├── InputArguments.csproj
│   │   │   │   │   ├── InputArguments.yaml
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── InvokeFunctionTool/
│   │   │   │   │   ├── InvokeFunctionTool.csproj
│   │   │   │   │   ├── InvokeFunctionTool.yaml
│   │   │   │   │   ├── MenuPlugin.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── InvokeMcpTool/
│   │   │   │   │   ├── InvokeMcpTool.csproj
│   │   │   │   │   ├── InvokeMcpTool.yaml
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Marketing/
│   │   │   │   │   ├── Marketing.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── OpenAIChatAgent/
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── OpenAIResponseAgent/
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── README.md
│   │   │   │   ├── StudentTeacher/
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── StudentTeacher.csproj
│   │   │   │   └── ToolApproval/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── Properties/
│   │   │   │       │   └── launchSettings.json
│   │   │   │       ├── ToolApproval.csproj
│   │   │   │       └── ToolApproval.yaml
│   │   │   ├── HumanInTheLoop/
│   │   │   │   └── HumanInTheLoopBasic/
│   │   │   │       ├── HumanInTheLoopBasic.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Loop/
│   │   │   │   ├── Loop.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── Observability/
│   │   │   │   ├── ApplicationInsights/
│   │   │   │   │   ├── ApplicationInsights.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AspireDashboard/
│   │   │   │   │   ├── AspireDashboard.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   └── WorkflowAsAnAgent/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── WorkflowAsAnAgentObservability.csproj
│   │   │   │       └── WorkflowHelper.cs
│   │   │   ├── README.md
│   │   │   ├── Resources/
│   │   │   │   ├── Lorem_Ipsum.txt
│   │   │   │   ├── ambiguous_email.txt
│   │   │   │   ├── email.txt
│   │   │   │   └── spam.txt
│   │   │   ├── SharedStates/
│   │   │   │   ├── Program.cs
│   │   │   │   ├── Resources.cs
│   │   │   │   └── SharedStates.csproj
│   │   │   ├── Visualization/
│   │   │   │   ├── Program.cs
│   │   │   │   ├── README.md
│   │   │   │   └── Visualization.csproj
│   │   │   └── _StartHere/
│   │   │       ├── 01_Streaming/
│   │   │       │   ├── 01_Streaming.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 02_AgentsInWorkflows/
│   │   │       │   ├── 02_AgentsInWorkflows.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 03_AgentWorkflowPatterns/
│   │   │       │   ├── 03_AgentWorkflowPatterns.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 04_MultiModelService/
│   │   │       │   ├── 04_MultiModelService.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 05_SubWorkflows/
│   │   │       │   ├── 05_SubWorkflows.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 06_MixedWorkflowAgentsAndExecutors/
│   │   │       │   ├── 06_MixedWorkflowAgentsAndExecutors.csproj
│   │   │       │   ├── Program.cs
│   │   │       │   └── README.md
│   │   │       └── 07_WriterCriticWorkflow/
│   │   │           ├── 07_WriterCriticWorkflow.csproj
│   │   │           └── Program.cs
│   │   ├── 04-hosting/
│   │   │   ├── A2A/
│   │   │   │   ├── A2AAgent_AsFunctionTools/
│   │   │   │   │   ├── A2AAgent_AsFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── A2AAgent_PollingForTaskCompletion/
│   │   │   │   │   ├── A2AAgent_PollingForTaskCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── DurableAgents/
│   │   │   │   ├── AzureFunctions/
│   │   │   │   │   ├── .editorconfig
│   │   │   │   │   ├── 01_SingleAgent/
│   │   │   │   │   │   ├── 01_SingleAgent.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 02_AgentOrchestration_Chaining/
│   │   │   │   │   │   ├── 02_AgentOrchestration_Chaining.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 03_AgentOrchestration_Concurrency/
│   │   │   │   │   │   ├── 03_AgentOrchestration_Concurrency.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 04_AgentOrchestration_Conditionals/
│   │   │   │   │   │   ├── 04_AgentOrchestration_Conditionals.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 05_AgentOrchestration_HITL/
│   │   │   │   │   │   ├── 05_AgentOrchestration_HITL.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 06_LongRunningTools/
│   │   │   │   │   │   ├── 06_LongRunningTools.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── Tools.cs
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 07_AgentAsMcpTool/
│   │   │   │   │   │   ├── 07_AgentAsMcpTool.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 08_ReliableStreaming/
│   │   │   │   │   │   ├── 08_ReliableStreaming.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── RedisStreamResponseHandler.cs
│   │   │   │   │   │   ├── Tools.cs
│   │   │   │   │   │   └── host.json
│   │   │   │   │   └── README.md
│   │   │   │   ├── ConsoleApps/
│   │   │   │   │   ├── 01_SingleAgent/
│   │   │   │   │   │   ├── 01_SingleAgent.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 02_AgentOrchestration_Chaining/
│   │   │   │   │   │   ├── 02_AgentOrchestration_Chaining.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 03_AgentOrchestration_Concurrency/
│   │   │   │   │   │   ├── 03_AgentOrchestration_Concurrency.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 04_AgentOrchestration_Conditionals/
│   │   │   │   │   │   ├── 04_AgentOrchestration_Conditionals.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 05_AgentOrchestration_HITL/
│   │   │   │   │   │   ├── 05_AgentOrchestration_HITL.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 06_LongRunningTools/
│   │   │   │   │   │   ├── 06_LongRunningTools.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 07_ReliableStreaming/
│   │   │   │   │   │   ├── 07_ReliableStreaming.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── RedisStreamResponseHandler.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── Directory.Build.props
│   │   │   └── DurableWorkflows/
│   │   │       ├── AzureFunctions/
│   │   │       │   ├── 01_SequentialWorkflow/
│   │   │       │   │   ├── 01_SequentialWorkflow.csproj
│   │   │       │   │   ├── OrderCancelExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── demo.http
│   │   │       │   │   └── host.json
│   │   │       │   ├── 02_ConcurrentWorkflow/
│   │   │       │   │   ├── 02_ConcurrentWorkflow.csproj
│   │   │       │   │   ├── ExpertExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── demo.http
│   │   │       │   │   └── host.json
│   │   │       │   └── 03_WorkflowHITL/
│   │   │       │       ├── 03_WorkflowHITL.csproj
│   │   │       │       ├── Executors.cs
│   │   │       │       ├── Program.cs
│   │   │       │       ├── README.md
│   │   │       │       ├── demo.http
│   │   │       │       └── host.json
│   │   │       ├── ConsoleApps/
│   │   │       │   ├── 01_SequentialWorkflow/
│   │   │       │   │   ├── 01_SequentialWorkflow.csproj
│   │   │       │   │   ├── OrderCancelExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 02_ConcurrentWorkflow/
│   │   │       │   │   ├── 02_ConcurrentWorkflow.csproj
│   │   │       │   │   ├── ExpertExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 03_ConditionalEdges/
│   │   │       │   │   ├── 03_ConditionalEdges.csproj
│   │   │       │   │   ├── NotifyFraud.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 04_WorkflowAndAgents/
│   │   │       │   │   ├── 04_WorkflowAndAgents.csproj
│   │   │       │   │   ├── ParseQuestionExecutor.cs
│   │   │       │   │   └── Program.cs
│   │   │       │   ├── 05_WorkflowEvents/
│   │   │       │   │   ├── 05_WorkflowEvents.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 06_WorkflowSharedState/
│   │   │       │   │   ├── 06_WorkflowSharedState.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 07_SubWorkflows/
│   │   │       │   │   ├── 07_SubWorkflows.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   └── 08_WorkflowHITL/
│   │   │       │       ├── 08_WorkflowHITL.csproj
│   │   │       │       ├── Executors.cs
│   │   │       │       ├── Program.cs
│   │   │       │       └── README.md
│   │   │       ├── Directory.Build.props
│   │   │       └── README.md
│   │   ├── 05-end-to-end/
│   │   │   ├── A2AClientServer/
│   │   │   │   ├── A2AClient/
│   │   │   │   │   ├── A2AClient.csproj
│   │   │   │   │   ├── HostClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── A2AServer/
│   │   │   │   │   ├── A2AServer.csproj
│   │   │   │   │   ├── A2AServer.http
│   │   │   │   │   ├── HostAgentFactory.cs
│   │   │   │   │   ├── Models/
│   │   │   │   │   │   └── InvoiceQuery.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   └── README.md
│   │   │   ├── AGUIClientServer/
│   │   │   │   ├── AGUIClient/
│   │   │   │   │   ├── AGUIClient.csproj
│   │   │   │   │   ├── AGUIClientSerializerContext.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── SensorRequest.cs
│   │   │   │   │   └── SensorResponse.cs
│   │   │   │   ├── AGUIDojoServer/
│   │   │   │   │   ├── AGUIDojoServer.csproj
│   │   │   │   │   ├── AGUIDojoServerSerializerContext.cs
│   │   │   │   │   ├── AgenticUI/
│   │   │   │   │   │   ├── AgenticPlanningTools.cs
│   │   │   │   │   │   ├── AgenticUIAgent.cs
│   │   │   │   │   │   ├── JsonPatchOperation.cs
│   │   │   │   │   │   ├── Plan.cs
│   │   │   │   │   │   ├── Step.cs
│   │   │   │   │   │   └── StepStatus.cs
│   │   │   │   │   ├── BackendToolRendering/
│   │   │   │   │   │   └── WeatherInfo.cs
│   │   │   │   │   ├── ChatClientAgentFactory.cs
│   │   │   │   │   ├── PredictiveStateUpdates/
│   │   │   │   │   │   ├── DocumentState.cs
│   │   │   │   │   │   └── PredictiveStateUpdatesAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── SharedState/
│   │   │   │   │   │   ├── Ingredient.cs
│   │   │   │   │   │   ├── Recipe.cs
│   │   │   │   │   │   ├── RecipeResponse.cs
│   │   │   │   │   │   └── SharedStateAgent.cs
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AGUIServer/
│   │   │   │   │   ├── AGUIServer.csproj
│   │   │   │   │   ├── AGUIServer.http
│   │   │   │   │   ├── AGUIServerSerializerContext.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── ServerWeatherForecastRequest.cs
│   │   │   │   │   └── ServerWeatherForecastResponse.cs
│   │   │   │   └── README.md
│   │   │   ├── AGUIWebChat/
│   │   │   │   ├── Client/
│   │   │   │   │   ├── AGUIWebChatClient.csproj
│   │   │   │   │   ├── Components/
│   │   │   │   │   │   ├── App.razor
│   │   │   │   │   │   ├── Layout/
│   │   │   │   │   │   │   ├── LoadingSpinner.razor
│   │   │   │   │   │   │   ├── LoadingSpinner.razor.css
│   │   │   │   │   │   │   ├── MainLayout.razor
│   │   │   │   │   │   │   └── MainLayout.razor.css
│   │   │   │   │   │   ├── Pages/
│   │   │   │   │   │   │   └── Chat/
│   │   │   │   │   │   │       ├── Chat.razor
│   │   │   │   │   │   │       ├── Chat.razor.css
│   │   │   │   │   │   │       ├── ChatCitation.razor
│   │   │   │   │   │   │       ├── ChatCitation.razor.css
│   │   │   │   │   │   │       ├── ChatHeader.razor
│   │   │   │   │   │   │       ├── ChatHeader.razor.css
│   │   │   │   │   │   │       ├── ChatInput.razor
│   │   │   │   │   │   │       ├── ChatInput.razor.css
│   │   │   │   │   │   │       ├── ChatInput.razor.js
│   │   │   │   │   │   │       ├── ChatMessageItem.razor
│   │   │   │   │   │   │       ├── ChatMessageItem.razor.css
│   │   │   │   │   │   │       ├── ChatMessageList.razor
│   │   │   │   │   │   │       ├── ChatMessageList.razor.css
│   │   │   │   │   │   │       ├── ChatMessageList.razor.js
│   │   │   │   │   │   │       ├── ChatSuggestions.razor
│   │   │   │   │   │   │       └── ChatSuggestions.razor.css
│   │   │   │   │   │   ├── Routes.razor
│   │   │   │   │   │   └── _Imports.razor
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── wwwroot/
│   │   │   │   │       └── app.css
│   │   │   │   ├── README.md
│   │   │   │   └── Server/
│   │   │   │       ├── AGUIWebChatServer.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Properties/
│   │   │   │           └── launchSettings.json
│   │   │   ├── AgentWebChat/
│   │   │   │   ├── AgentWebChat.AgentHost/
│   │   │   │   │   ├── ActorFrameworkWebApplicationExtensions.cs
│   │   │   │   │   ├── AgentWebChat.AgentHost.csproj
│   │   │   │   │   ├── Custom/
│   │   │   │   │   │   └── CustomAITools.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── Utilities/
│   │   │   │   │   │   ├── ChatClientConnectionInfo.cs
│   │   │   │   │   │   └── ChatClientExtensions.cs
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AgentWebChat.AppHost/
│   │   │   │   │   ├── AgentWebChat.AppHost.csproj
│   │   │   │   │   ├── ModelExtensions.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AgentWebChat.ServiceDefaults/
│   │   │   │   │   ├── AgentWebChat.ServiceDefaults.csproj
│   │   │   │   │   └── ServiceDefaultsExtensions.cs
│   │   │   │   └── AgentWebChat.Web/
│   │   │   │       ├── A2AAgentClient.cs
│   │   │   │       ├── AgentDiscoveryClient.cs
│   │   │   │       ├── AgentWebChat.Web.csproj
│   │   │   │       ├── Components/
│   │   │   │       │   ├── App.razor
│   │   │   │       │   ├── Layout/
│   │   │   │       │   │   ├── MainLayout.razor
│   │   │   │       │   │   └── MainLayout.razor.css
│   │   │   │       │   ├── Pages/
│   │   │   │       │   │   ├── Error.razor
│   │   │   │       │   │   └── Home.razor
│   │   │   │       │   ├── Routes.razor
│   │   │   │       │   └── _Imports.razor
│   │   │   │       ├── IAgentClient.cs
│   │   │   │       ├── OpenAIChatCompletionsAgentClient.cs
│   │   │   │       ├── OpenAIResponsesAgentClient.cs
│   │   │   │       ├── Program.cs
│   │   │   │       ├── Properties/
│   │   │   │       │   └── launchSettings.json
│   │   │   │       ├── appsettings.Development.json
│   │   │   │       ├── appsettings.json
│   │   │   │       └── wwwroot/
│   │   │   │           └── app.css
│   │   │   ├── AgentWithPurview/
│   │   │   │   ├── AgentWithPurview.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── AspNetAgentAuthorization/
│   │   │   │   ├── README.md
│   │   │   │   ├── RazorWebClient/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Pages/
│   │   │   │   │   │   ├── Chat.cshtml
│   │   │   │   │   │   ├── Chat.cshtml.cs
│   │   │   │   │   │   ├── Index.cshtml
│   │   │   │   │   │   ├── Index.cshtml.cs
│   │   │   │   │   │   ├── Shared/
│   │   │   │   │   │   │   └── _Layout.cshtml
│   │   │   │   │   │   └── _ViewImports.cshtml
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── RazorWebClient.csproj
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── Service/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── ExpenseService.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── Service.csproj
│   │   │   │   │   ├── UserContext.cs
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── docker-compose.yml
│   │   │   │   └── keycloak/
│   │   │   │       ├── dev-realm.json
│   │   │   │       └── setup-redirect-uris.sh
│   │   │   ├── HostedAgents/
│   │   │   │   ├── AgentThreadAndHITL/
│   │   │   │   │   ├── AgentThreadAndHITL.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithHostedMCP/
│   │   │   │   │   ├── AgentWithHostedMCP.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithLocalTools/
│   │   │   │   │   ├── .dockerignore
│   │   │   │   │   ├── AgentWithLocalTools.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithTextSearchRag/
│   │   │   │   │   ├── AgentWithTextSearchRag.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithTools/
│   │   │   │   │   ├── AgentWithTools.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentsInWorkflows/
│   │   │   │   │   ├── AgentsInWorkflows.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── FoundryMultiAgent/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── FoundryMultiAgent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── FoundrySingleAgent/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── FoundrySingleAgent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   └── README.md
│   │   │   └── M365Agent/
│   │   │       ├── AFAgentApplication.cs
│   │   │       ├── Agents/
│   │   │       │   ├── AdaptiveCardAIContent.cs
│   │   │       │   ├── WeatherForecastAgent.cs
│   │   │       │   ├── WeatherForecastAgentResponse.cs
│   │   │       │   └── WeatherForecastAgentResponseContentType.cs
│   │   │       ├── Auth/
│   │   │       │   ├── AspNetExtensions.cs
│   │   │       │   └── TokenValidationOptions.cs
│   │   │       ├── JsonUtilities.cs
│   │   │       ├── M365Agent.csproj
│   │   │       ├── Program.cs
│   │   │       ├── Properties/
│   │   │       │   └── launchSettings.json
│   │   │       ├── README.md
│   │   │       ├── appManifest/
│   │   │       │   └── manifest.json
│   │   │       └── appsettings.json.template
│   │   ├── AGENTS.md
│   │   ├── Directory.Build.props
│   │   └── README.md
│   ├── src/
│   │   ├── Directory.Build.props
│   │   ├── LegacySupport/
│   │   │   ├── CallerAttributes/
│   │   │   │   ├── CallerArgumentExpressionAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── CompilerFeatureRequiredAttribute/
│   │   │   │   ├── CompilerFeatureRequiredAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── DiagnosticAttributes/
│   │   │   │   ├── NullableAttributes.cs
│   │   │   │   └── README.md
│   │   │   ├── DiagnosticClasses/
│   │   │   │   ├── README.md
│   │   │   │   └── UnreachableException.cs
│   │   │   ├── ExperimentalAttribute/
│   │   │   │   ├── ExperimentalAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── IsExternalInit/
│   │   │   │   ├── IsExternalInit.cs
│   │   │   │   └── README.md
│   │   │   ├── README.md
│   │   │   ├── RequiredMemberAttribute/
│   │   │   │   ├── README.md
│   │   │   │   └── RequiredMemberAttribute.cs
│   │   │   └── TrimAttributes/
│   │   │       ├── DynamicallyAccessedMemberTypes.cs
│   │   │       ├── DynamicallyAccessedMembersAttribute.cs
│   │   │       ├── README.md
│   │   │       ├── RequiresDynamicCodeAttribute.cs
│   │   │       ├── RequiresUnreferencedCodeAttribute.cs
│   │   │       └── UnconditionalSuppressMessageAttribute.cs
│   │   ├── Microsoft.Agents.AI/
│   │   │   ├── AIAgentBuilder.cs
│   │   │   ├── AIContextProviderDecorators/
│   │   │   │   ├── AIContextProviderChatClient.cs
│   │   │   │   ├── AIContextProviderChatClientBuilderExtensions.cs
│   │   │   │   └── MessageAIContextProviderAgent.cs
│   │   │   ├── AgentExtensions.cs
│   │   │   ├── AgentJsonUtilities.cs
│   │   │   ├── AnonymousDelegatingAIAgent.cs
│   │   │   ├── ChatClient/
│   │   │   │   ├── ChatClientAgent.cs
│   │   │   │   ├── ChatClientAgentContinuationToken.cs
│   │   │   │   ├── ChatClientAgentCustomOptions.cs
│   │   │   │   ├── ChatClientAgentLogMessages.cs
│   │   │   │   ├── ChatClientAgentOptions.cs
│   │   │   │   ├── ChatClientAgentRunOptions.cs
│   │   │   │   ├── ChatClientAgentSession.cs
│   │   │   │   ├── ChatClientBuilderExtensions.cs
│   │   │   │   └── ChatClientExtensions.cs
│   │   │   ├── Compaction/
│   │   │   │   ├── ChatMessageContentEquality.cs
│   │   │   │   ├── ChatReducerCompactionStrategy.cs
│   │   │   │   ├── ChatStrategyExtensions.cs
│   │   │   │   ├── CompactionGroupKind.cs
│   │   │   │   ├── CompactionLogMessages.cs
│   │   │   │   ├── CompactionMessageGroup.cs
│   │   │   │   ├── CompactionMessageIndex.cs
│   │   │   │   ├── CompactionProvider.cs
│   │   │   │   ├── CompactionStrategy.cs
│   │   │   │   ├── CompactionTelemetry.cs
│   │   │   │   ├── CompactionTrigger.cs
│   │   │   │   ├── CompactionTriggers.cs
│   │   │   │   ├── PipelineCompactionStrategy.cs
│   │   │   │   ├── SlidingWindowCompactionStrategy.cs
│   │   │   │   ├── SummarizationCompactionStrategy.cs
│   │   │   │   ├── ToolResultCompactionStrategy.cs
│   │   │   │   └── TruncationCompactionStrategy.cs
│   │   │   ├── FunctionInvocationDelegatingAgent.cs
│   │   │   ├── FunctionInvocationDelegatingAgentBuilderExtensions.cs
│   │   │   ├── LoggingAgent.cs
│   │   │   ├── LoggingAgentBuilderExtensions.cs
│   │   │   ├── Memory/
│   │   │   │   ├── ChatHistoryMemoryProvider.cs
│   │   │   │   ├── ChatHistoryMemoryProviderOptions.cs
│   │   │   │   └── ChatHistoryMemoryProviderScope.cs
│   │   │   ├── Microsoft.Agents.AI.csproj
│   │   │   ├── OpenTelemetryAgent.cs
│   │   │   ├── OpenTelemetryAgentBuilderExtensions.cs
│   │   │   ├── OpenTelemetryConsts.cs
│   │   │   ├── Skills/
│   │   │   │   ├── FileAgentSkill.cs
│   │   │   │   ├── FileAgentSkillLoader.cs
│   │   │   │   ├── FileAgentSkillsProvider.cs
│   │   │   │   ├── FileAgentSkillsProviderOptions.cs
│   │   │   │   └── SkillFrontmatter.cs
│   │   │   ├── TextSearchProvider.cs
│   │   │   └── TextSearchProviderOptions.cs
│   │   ├── Microsoft.Agents.AI.A2A/
│   │   │   ├── A2AAgent.cs
│   │   │   ├── A2AAgentLogMessages.cs
│   │   │   ├── A2AAgentSession.cs
│   │   │   ├── A2AContinuationToken.cs
│   │   │   ├── A2AJsonUtilities.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── A2AAIContentExtensions.cs
│   │   │   │   ├── A2AAgentCardExtensions.cs
│   │   │   │   ├── A2AAgentTaskExtensions.cs
│   │   │   │   ├── A2AArtifactExtensions.cs
│   │   │   │   ├── A2ACardResolverExtensions.cs
│   │   │   │   ├── A2AClientExtensions.cs
│   │   │   │   └── ChatMessageExtensions.cs
│   │   │   └── Microsoft.Agents.AI.A2A.csproj
│   │   ├── Microsoft.Agents.AI.AGUI/
│   │   │   ├── AGUIChatClient.cs
│   │   │   ├── AGUIHttpService.cs
│   │   │   ├── Microsoft.Agents.AI.AGUI.csproj
│   │   │   └── Shared/
│   │   │       ├── AGUIAssistantMessage.cs
│   │   │       ├── AGUIChatMessageExtensions.cs
│   │   │       ├── AGUIContextItem.cs
│   │   │       ├── AGUIDeveloperMessage.cs
│   │   │       ├── AGUIEventTypes.cs
│   │   │       ├── AGUIFunctionCall.cs
│   │   │       ├── AGUIJsonSerializerContext.cs
│   │   │       ├── AGUIMessage.cs
│   │   │       ├── AGUIMessageJsonConverter.cs
│   │   │       ├── AGUIRoles.cs
│   │   │       ├── AGUISystemMessage.cs
│   │   │       ├── AGUITool.cs
│   │   │       ├── AGUIToolCall.cs
│   │   │       ├── AGUIToolMessage.cs
│   │   │       ├── AGUIUserMessage.cs
│   │   │       ├── AIToolExtensions.cs
│   │   │       ├── BaseEvent.cs
│   │   │       ├── BaseEventJsonConverter.cs
│   │   │       ├── ChatResponseUpdateAGUIExtensions.cs
│   │   │       ├── RunAgentInput.cs
│   │   │       ├── RunErrorEvent.cs
│   │   │       ├── RunFinishedEvent.cs
│   │   │       ├── RunStartedEvent.cs
│   │   │       ├── StateDeltaEvent.cs
│   │   │       ├── StateSnapshotEvent.cs
│   │   │       ├── TextMessageContentEvent.cs
│   │   │       ├── TextMessageEndEvent.cs
│   │   │       ├── TextMessageStartEvent.cs
│   │   │       ├── ToolCallArgsEvent.cs
│   │   │       ├── ToolCallEndEvent.cs
│   │   │       ├── ToolCallResultEvent.cs
│   │   │       └── ToolCallStartEvent.cs
│   │   ├── Microsoft.Agents.AI.Abstractions/
│   │   │   ├── AIAgent.cs
│   │   │   ├── AIAgentMetadata.cs
│   │   │   ├── AIAgentStructuredOutput.cs
│   │   │   ├── AIContentExtensions.cs
│   │   │   ├── AIContext.cs
│   │   │   ├── AIContextProvider.cs
│   │   │   ├── AdditionalPropertiesExtensions.cs
│   │   │   ├── AgentAbstractionsJsonUtilities.cs
│   │   │   ├── AgentRequestMessageSourceAttribution.cs
│   │   │   ├── AgentRequestMessageSourceType.cs
│   │   │   ├── AgentResponse.cs
│   │   │   ├── AgentResponseExtensions.cs
│   │   │   ├── AgentResponseUpdate.cs
│   │   │   ├── AgentResponse{T}.cs
│   │   │   ├── AgentRunContext.cs
│   │   │   ├── AgentRunOptions.cs
│   │   │   ├── AgentSession.cs
│   │   │   ├── AgentSessionExtensions.cs
│   │   │   ├── AgentSessionStateBag.cs
│   │   │   ├── AgentSessionStateBagJsonConverter.cs
│   │   │   ├── AgentSessionStateBagValue.cs
│   │   │   ├── AgentSessionStateBagValueJsonConverter.cs
│   │   │   ├── ChatHistoryProvider.cs
│   │   │   ├── ChatMessageExtensions.cs
│   │   │   ├── DelegatingAIAgent.cs
│   │   │   ├── InMemoryChatHistoryProvider.cs
│   │   │   ├── InMemoryChatHistoryProviderOptions.cs
│   │   │   ├── MessageAIContextProvider.cs
│   │   │   ├── Microsoft.Agents.AI.Abstractions.csproj
│   │   │   └── ProviderSessionState{TState}.cs
│   │   ├── Microsoft.Agents.AI.Anthropic/
│   │   │   ├── AnthropicBetaServiceExtensions.cs
│   │   │   ├── AnthropicClientExtensions.cs
│   │   │   ├── AnthropicClientJsonContext.cs
│   │   │   └── Microsoft.Agents.AI.Anthropic.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI/
│   │   │   ├── AzureAIProjectChatClient.cs
│   │   │   ├── AzureAIProjectChatClientExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.AzureAI.csproj
│   │   │   └── RequestOptionsExtensions.cs
│   │   ├── Microsoft.Agents.AI.AzureAI.Persistent/
│   │   │   ├── Microsoft.Agents.AI.AzureAI.Persistent.csproj
│   │   │   ├── PersistentAgentsClientExtensions.cs
│   │   │   └── README.md
│   │   ├── Microsoft.Agents.AI.CopilotStudio/
│   │   │   ├── ActivityProcessor.cs
│   │   │   ├── CopilotStudioAgent.cs
│   │   │   ├── CopilotStudioAgentSession.cs
│   │   │   ├── CopilotStudioJsonUtilities.cs
│   │   │   └── Microsoft.Agents.AI.CopilotStudio.csproj
│   │   ├── Microsoft.Agents.AI.CosmosNoSql/
│   │   │   ├── CosmosChatHistoryProvider.cs
│   │   │   ├── CosmosCheckpointStore.cs
│   │   │   ├── CosmosDBChatExtensions.cs
│   │   │   ├── CosmosDBWorkflowExtensions.cs
│   │   │   └── Microsoft.Agents.AI.CosmosNoSql.csproj
│   │   ├── Microsoft.Agents.AI.Declarative/
│   │   │   ├── AgentBotElementYaml.cs
│   │   │   ├── AggregatorPromptAgentFactory.cs
│   │   │   ├── ChatClient/
│   │   │   │   └── ChatClientPromptAgentFactory.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── BoolExpressionExtensions.cs
│   │   │   │   ├── CodeInterpreterToolExtensions.cs
│   │   │   │   ├── FileSearchToolExtensions.cs
│   │   │   │   ├── FunctionToolExtensions.cs
│   │   │   │   ├── IntExpressionExtensions.cs
│   │   │   │   ├── McpServerToolApprovalModeExtensions.cs
│   │   │   │   ├── McpServerToolExtensions.cs
│   │   │   │   ├── ModelOptionsExtensions.cs
│   │   │   │   ├── NumberExpressionExtensions.cs
│   │   │   │   ├── PromptAgentExtensions.cs
│   │   │   │   ├── PropertyInfoExtensions.cs
│   │   │   │   ├── RecordDataTypeExtensions.cs
│   │   │   │   ├── RecordDataValueExtensions.cs
│   │   │   │   ├── StringExpressionExtensions.cs
│   │   │   │   ├── WebSearchToolExtensions.cs
│   │   │   │   └── YamlAgentFactoryExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.Declarative.csproj
│   │   │   └── PromptAgentFactory.cs
│   │   ├── Microsoft.Agents.AI.DevUI/
│   │   │   ├── DevUIExtensions.cs
│   │   │   ├── DevUIMiddleware.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntitiesJsonContext.cs
│   │   │   │   ├── EntityInfo.cs
│   │   │   │   ├── MetaResponse.cs
│   │   │   │   └── WorkflowSerializationExtensions.cs
│   │   │   ├── EntitiesApiExtensions.cs
│   │   │   ├── HostApplicationBuilderExtensions.cs
│   │   │   ├── MetaApiExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.DevUI.Frontend.targets
│   │   │   ├── Microsoft.Agents.AI.DevUI.csproj
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── README.md
│   │   │   ├── ServiceCollectionsExtensions.cs
│   │   │   └── wwwroot/
│   │   │       └── index.html
│   │   ├── Microsoft.Agents.AI.DurableTask/
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AgentEntity.cs
│   │   │   ├── AgentNotRegisteredException.cs
│   │   │   ├── AgentRunHandle.cs
│   │   │   ├── AgentSessionId.cs
│   │   │   ├── CHANGELOG.md
│   │   │   ├── DefaultDurableAgentClient.cs
│   │   │   ├── DurableAIAgent.cs
│   │   │   ├── DurableAIAgentProxy.cs
│   │   │   ├── DurableAgentContext.cs
│   │   │   ├── DurableAgentJsonUtilities.cs
│   │   │   ├── DurableAgentRunOptions.cs
│   │   │   ├── DurableAgentSession.cs
│   │   │   ├── DurableAgentsOptions.cs
│   │   │   ├── DurableDataConverter.cs
│   │   │   ├── DurableOptions.cs
│   │   │   ├── DurableServicesMarker.cs
│   │   │   ├── EntityAgentWrapper.cs
│   │   │   ├── IAgentResponseHandler.cs
│   │   │   ├── IDurableAgentClient.cs
│   │   │   ├── Logs.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.csproj
│   │   │   ├── README.md
│   │   │   ├── RunRequest.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   ├── State/
│   │   │   │   ├── DurableAgentState.cs
│   │   │   │   ├── DurableAgentStateContent.cs
│   │   │   │   ├── DurableAgentStateData.cs
│   │   │   │   ├── DurableAgentStateDataContent.cs
│   │   │   │   ├── DurableAgentStateEntry.cs
│   │   │   │   ├── DurableAgentStateErrorContent.cs
│   │   │   │   ├── DurableAgentStateFunctionCallContent.cs
│   │   │   │   ├── DurableAgentStateFunctionResultContent.cs
│   │   │   │   ├── DurableAgentStateHostedFileContent.cs
│   │   │   │   ├── DurableAgentStateHostedVectorStoreContent.cs
│   │   │   │   ├── DurableAgentStateJsonContext.cs
│   │   │   │   ├── DurableAgentStateJsonConverter.cs
│   │   │   │   ├── DurableAgentStateMessage.cs
│   │   │   │   ├── DurableAgentStateRequest.cs
│   │   │   │   ├── DurableAgentStateResponse.cs
│   │   │   │   ├── DurableAgentStateTextContent.cs
│   │   │   │   ├── DurableAgentStateTextReasoningContent.cs
│   │   │   │   ├── DurableAgentStateUnknownContent.cs
│   │   │   │   ├── DurableAgentStateUriContent.cs
│   │   │   │   ├── DurableAgentStateUsage.cs
│   │   │   │   ├── DurableAgentStateUsageContent.cs
│   │   │   │   └── README.md
│   │   │   ├── TaskOrchestrationContextExtensions.cs
│   │   │   └── Workflows/
│   │   │       ├── DurableActivityExecutor.cs
│   │   │       ├── DurableActivityInput.cs
│   │   │       ├── DurableExecutorDispatcher.cs
│   │   │       ├── DurableExecutorOutput.cs
│   │   │       ├── DurableHaltRequestedEvent.cs
│   │   │       ├── DurableMessageEnvelope.cs
│   │   │       ├── DurableRunStatus.cs
│   │   │       ├── DurableSerialization.cs
│   │   │       ├── DurableStreamingWorkflowRun.cs
│   │   │       ├── DurableWorkflowClient.cs
│   │   │       ├── DurableWorkflowCompletedEvent.cs
│   │   │       ├── DurableWorkflowContext.cs
│   │   │       ├── DurableWorkflowFailedEvent.cs
│   │   │       ├── DurableWorkflowInput.cs
│   │   │       ├── DurableWorkflowJsonContext.cs
│   │   │       ├── DurableWorkflowLiveStatus.cs
│   │   │       ├── DurableWorkflowOptions.cs
│   │   │       ├── DurableWorkflowResult.cs
│   │   │       ├── DurableWorkflowRun.cs
│   │   │       ├── DurableWorkflowRunner.cs
│   │   │       ├── DurableWorkflowWaitingForInputEvent.cs
│   │   │       ├── EdgeRouters/
│   │   │       │   ├── DurableDirectEdgeRouter.cs
│   │   │       │   ├── DurableEdgeMap.cs
│   │   │       │   ├── DurableFanOutEdgeRouter.cs
│   │   │       │   └── IDurableEdgeRouter.cs
│   │   │       ├── ExecutorRegistry.cs
│   │   │       ├── IAwaitableWorkflowRun.cs
│   │   │       ├── IStreamingWorkflowRun.cs
│   │   │       ├── IWorkflowClient.cs
│   │   │       ├── IWorkflowRun.cs
│   │   │       ├── PendingRequestPortStatus.cs
│   │   │       ├── TypedPayload.cs
│   │   │       ├── WorkflowAnalyzer.cs
│   │   │       ├── WorkflowExecutorInfo.cs
│   │   │       ├── WorkflowGraphInfo.cs
│   │   │       └── WorkflowNamingHelper.cs
│   │   ├── Microsoft.Agents.AI.FoundryMemory/
│   │   │   ├── AIProjectClientExtensions.cs
│   │   │   ├── FoundryMemoryJsonUtilities.cs
│   │   │   ├── FoundryMemoryProvider.cs
│   │   │   ├── FoundryMemoryProviderOptions.cs
│   │   │   ├── FoundryMemoryProviderScope.cs
│   │   │   └── Microsoft.Agents.AI.FoundryMemory.csproj
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot/
│   │   │   ├── CopilotClientExtensions.cs
│   │   │   ├── GitHubCopilotAgent.cs
│   │   │   ├── GitHubCopilotAgentSession.cs
│   │   │   ├── GitHubCopilotJsonUtilities.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.csproj
│   │   ├── Microsoft.Agents.AI.Hosting/
│   │   │   ├── AIHostAgent.cs
│   │   │   ├── AgentHostingServiceCollectionExtensions.cs
│   │   │   ├── AgentSessionStore.cs
│   │   │   ├── HostApplicationBuilderAgentExtensions.cs
│   │   │   ├── HostApplicationBuilderWorkflowExtensions.cs
│   │   │   ├── HostedAgentBuilder.cs
│   │   │   ├── HostedAgentBuilderExtensions.cs
│   │   │   ├── HostedWorkflowBuilder.cs
│   │   │   ├── HostedWorkflowBuilderExtensions.cs
│   │   │   ├── IHostedAgentBuilder.cs
│   │   │   ├── IHostedWorkflowBuilder.cs
│   │   │   ├── Local/
│   │   │   │   └── InMemoryAgentSessionStore.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.csproj
│   │   │   ├── NoopAgentSessionStore.cs
│   │   │   └── WorkflowCatalog.cs
│   │   ├── Microsoft.Agents.AI.Hosting.A2A/
│   │   │   ├── A2AHostingJsonUtilities.cs
│   │   │   ├── A2ARunDecisionContext.cs
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AgentRunMode.cs
│   │   │   ├── Converters/
│   │   │   │   └── MessageConverter.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.A2A.AspNetCore/
│   │   │   ├── EndpointRouteBuilderExtensions.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.AspNetCore.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore/
│   │   │   ├── AGUIChatResponseUpdateStreamExtensions.cs
│   │   │   ├── AGUIEndpointRouteBuilderExtensions.cs
│   │   │   ├── AGUIJsonSerializerOptions.cs
│   │   │   ├── AGUIServerSentEventsResult.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.csproj
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions/
│   │   │   ├── BuiltInFunctionExecutor.cs
│   │   │   ├── BuiltInFunctions.cs
│   │   │   ├── CHANGELOG.md
│   │   │   ├── DefaultFunctionsAgentOptionsProvider.cs
│   │   │   ├── DurableAgentFunctionMetadataTransformer.cs
│   │   │   ├── DurableAgentsOptionsExtensions.cs
│   │   │   ├── DurableTaskClientExtensions.cs
│   │   │   ├── FunctionMetadataFactory.cs
│   │   │   ├── FunctionsAgentOptions.cs
│   │   │   ├── FunctionsApplicationBuilderExtensions.cs
│   │   │   ├── FunctionsDurableOptions.cs
│   │   │   ├── HttpTriggerOptions.cs
│   │   │   ├── IFunctionsAgentOptionsProvider.cs
│   │   │   ├── Logs.cs
│   │   │   ├── McpToolTriggerOptions.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.csproj
│   │   │   ├── Middlewares/
│   │   │   │   └── BuiltInFunctionExecutionMiddleware.cs
│   │   │   ├── README.md
│   │   │   └── Workflows/
│   │   │       ├── DurableWorkflowOptionsExtensions.cs
│   │   │       ├── DurableWorkflowsFunctionMetadataTransformer.cs
│   │   │       └── WorkflowOrchestrator.cs
│   │   ├── Microsoft.Agents.AI.Hosting.OpenAI/
│   │   │   ├── ChatCompletions/
│   │   │   │   ├── AIAgentChatCompletionsProcessor.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── ChatCompletionsJsonContext.cs
│   │   │   │   ├── ChatCompletionsJsonSerializerOptions.cs
│   │   │   │   ├── Converters/
│   │   │   │   │   ├── ChatClientAgentRunOptionsConverter.cs
│   │   │   │   │   └── MessageContentPartConverter.cs
│   │   │   │   └── Models/
│   │   │   │       ├── ChatCompletion.cs
│   │   │   │       ├── ChatCompletionChoice.cs
│   │   │   │       ├── ChatCompletionChunk.cs
│   │   │   │       ├── ChatCompletionRequestMessage.cs
│   │   │   │       ├── CompletionUsage.cs
│   │   │   │       ├── CreateChatCompletion.cs
│   │   │   │       ├── MessageContent.cs
│   │   │   │       ├── MessageContentPart.cs
│   │   │   │       ├── ResponseFormat.cs
│   │   │   │       ├── StopSequences.cs
│   │   │   │       ├── Tool.cs
│   │   │   │       └── ToolChoice.cs
│   │   │   ├── Conversations/
│   │   │   │   ├── ConversationsHttpHandler.cs
│   │   │   │   ├── IAgentConversationIndex.cs
│   │   │   │   ├── IConversationStorage.cs
│   │   │   │   ├── InMemoryAgentConversationIndex.cs
│   │   │   │   ├── InMemoryConversationStorage.cs
│   │   │   │   ├── Models/
│   │   │   │   │   ├── AddMessageRequest.cs
│   │   │   │   │   ├── Conversation.cs
│   │   │   │   │   ├── CreateConversationRequest.cs
│   │   │   │   │   └── UpdateConversationRequest.cs
│   │   │   │   └── SortOrderExtensions.cs
│   │   │   ├── EndpointRouteBuilderExtensions.ChatCompletions.cs
│   │   │   ├── EndpointRouteBuilderExtensions.Conversations.cs
│   │   │   ├── EndpointRouteBuilderExtensions.Responses.cs
│   │   │   ├── HostApplicationBuilderExtensions.cs
│   │   │   ├── IdGenerator.cs
│   │   │   ├── InMemoryStorageOptions.cs
│   │   │   ├── MemoryCacheExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.csproj
│   │   │   ├── Models/
│   │   │   │   ├── DeleteResponse.cs
│   │   │   │   ├── ErrorResponse.cs
│   │   │   │   ├── ListResponse.cs
│   │   │   │   └── SortOrder.cs
│   │   │   ├── OpenAIHostingJsonUtilities.cs
│   │   │   ├── Responses/
│   │   │   │   ├── AIAgentResponseExecutor.cs
│   │   │   │   ├── AgentInvocationContext.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── AgentResponseUpdateExtensions.cs
│   │   │   │   ├── Converters/
│   │   │   │   │   ├── AgentReferenceExtensions.cs
│   │   │   │   │   ├── ItemContentConverter.cs
│   │   │   │   │   ├── ItemParamConverter.cs
│   │   │   │   │   ├── ItemResourceConversions.cs
│   │   │   │   │   ├── ItemResourceConverter.cs
│   │   │   │   │   ├── ResponsesMessageItemParamConverter.cs
│   │   │   │   │   ├── ResponsesMessageItemResourceConverter.cs
│   │   │   │   │   └── SnakeCaseEnumConverter.cs
│   │   │   │   ├── HostedAgentResponseExecutor.cs
│   │   │   │   ├── IResponseExecutor.cs
│   │   │   │   ├── IResponsesService.cs
│   │   │   │   ├── InMemoryResponsesService.cs
│   │   │   │   ├── Models/
│   │   │   │   │   ├── AgentId.cs
│   │   │   │   │   ├── ConversationReference.cs
│   │   │   │   │   ├── CreateResponse.cs
│   │   │   │   │   ├── InputMessage.cs
│   │   │   │   │   ├── InputMessageContent.cs
│   │   │   │   │   ├── ItemParam.cs
│   │   │   │   │   ├── ItemParamExtensions.cs
│   │   │   │   │   ├── ItemResource.cs
│   │   │   │   │   ├── PromptReference.cs
│   │   │   │   │   ├── ReasoningOptions.cs
│   │   │   │   │   ├── Response.cs
│   │   │   │   │   ├── ResponseInput.cs
│   │   │   │   │   ├── StreamOptions.cs
│   │   │   │   │   ├── StreamingResponseEvent.cs
│   │   │   │   │   ├── TextConfiguration.cs
│   │   │   │   │   └── WorkflowEventData.cs
│   │   │   │   ├── ResponsesHttpHandler.cs
│   │   │   │   └── Streaming/
│   │   │   │       ├── AssistantMessageEventGenerator.cs
│   │   │   │       ├── AudioContentEventGenerator.cs
│   │   │   │       ├── ErrorContentEventGenerator.cs
│   │   │   │       ├── FileContentEventGenerator.cs
│   │   │   │       ├── FunctionApprovalRequestEventGenerator.cs
│   │   │   │       ├── FunctionApprovalResponseEventGenerator.cs
│   │   │   │       ├── FunctionCallEventGenerator.cs
│   │   │   │       ├── FunctionResultEventGenerator.cs
│   │   │   │       ├── HostedFileContentEventGenerator.cs
│   │   │   │       ├── ImageContentEventGenerator.cs
│   │   │   │       ├── SequenceNumber.cs
│   │   │   │       ├── StreamingEventGenerator.cs
│   │   │   │       └── TextReasoningContentEventGenerator.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── SseJsonResult.cs
│   │   ├── Microsoft.Agents.AI.Mem0/
│   │   │   ├── Mem0Client.cs
│   │   │   ├── Mem0JsonUtilities.cs
│   │   │   ├── Mem0Provider.cs
│   │   │   ├── Mem0ProviderOptions.cs
│   │   │   ├── Mem0ProviderScope.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.csproj
│   │   ├── Microsoft.Agents.AI.OpenAI/
│   │   │   ├── ChatClient/
│   │   │   │   ├── AsyncStreamingChatCompletionUpdateCollectionResult.cs
│   │   │   │   ├── AsyncStreamingResponseUpdateCollectionResult.cs
│   │   │   │   └── StreamingUpdatePipelineResponse.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AIAgentWithOpenAIExtensions.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── OpenAIAssistantClientExtensions.cs
│   │   │   │   ├── OpenAIChatClientExtensions.cs
│   │   │   │   └── OpenAIResponseClientExtensions.cs
│   │   │   └── Microsoft.Agents.AI.OpenAI.csproj
│   │   ├── Microsoft.Agents.AI.Purview/
│   │   │   ├── BackgroundJobRunner.cs
│   │   │   ├── CacheProvider.cs
│   │   │   ├── ChannelHandler.cs
│   │   │   ├── Constants.cs
│   │   │   ├── Exceptions/
│   │   │   │   ├── PurviewAuthenticationException.cs
│   │   │   │   ├── PurviewException.cs
│   │   │   │   ├── PurviewJobException.cs
│   │   │   │   ├── PurviewJobLimitExceededException.cs
│   │   │   │   ├── PurviewPaymentRequiredException.cs
│   │   │   │   ├── PurviewRateLimitException.cs
│   │   │   │   └── PurviewRequestException.cs
│   │   │   ├── IBackgroundJobRunner.cs
│   │   │   ├── ICacheProvider.cs
│   │   │   ├── IChannelHandler.cs
│   │   │   ├── IPurviewClient.cs
│   │   │   ├── IScopedContentProcessor.cs
│   │   │   ├── Microsoft.Agents.AI.Purview.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Common/
│   │   │   │   │   ├── AIAgentInfo.cs
│   │   │   │   │   ├── AIInteractionPlugin.cs
│   │   │   │   │   ├── AccessedResourceDetails.cs
│   │   │   │   │   ├── Activity.cs
│   │   │   │   │   ├── ActivityMetadata.cs
│   │   │   │   │   ├── ClassificationErrorBase.cs
│   │   │   │   │   ├── ClassificationInnerError.cs
│   │   │   │   │   ├── ContentBase.cs
│   │   │   │   │   ├── ContentProcessingErrorType.cs
│   │   │   │   │   ├── ContentToProcess.cs
│   │   │   │   │   ├── DeviceMetadata.cs
│   │   │   │   │   ├── DlpAction.cs
│   │   │   │   │   ├── DlpActionInfo.cs
│   │   │   │   │   ├── ErrorDetails.cs
│   │   │   │   │   ├── ExecutionMode.cs
│   │   │   │   │   ├── GraphDataTypeBase.cs
│   │   │   │   │   ├── IntegratedAppMetadata.cs
│   │   │   │   │   ├── OperatingSystemSpecifications.cs
│   │   │   │   │   ├── PolicyBinding.cs
│   │   │   │   │   ├── PolicyLocation.cs
│   │   │   │   │   ├── PolicyPivotProperty.cs
│   │   │   │   │   ├── PolicyScope.cs
│   │   │   │   │   ├── ProcessContentMetadataBase.cs
│   │   │   │   │   ├── ProcessConversationMetadata.cs
│   │   │   │   │   ├── ProcessFileMetadata.cs
│   │   │   │   │   ├── ProcessingError.cs
│   │   │   │   │   ├── ProtectedAppMetadata.cs
│   │   │   │   │   ├── ProtectionScopeActivities.cs
│   │   │   │   │   ├── ProtectionScopeState.cs
│   │   │   │   │   ├── ProtectionScopesCacheKey.cs
│   │   │   │   │   ├── PurviewBinaryContent.cs
│   │   │   │   │   ├── PurviewTextContent.cs
│   │   │   │   │   ├── ResourceAccessStatus.cs
│   │   │   │   │   ├── ResourceAccessType.cs
│   │   │   │   │   ├── RestrictionAction.cs
│   │   │   │   │   ├── Scope.cs
│   │   │   │   │   └── TokenInfo.cs
│   │   │   │   ├── Jobs/
│   │   │   │   │   ├── BackgroundJobBase.cs
│   │   │   │   │   ├── ContentActivityJob.cs
│   │   │   │   │   └── ProcessContentJob.cs
│   │   │   │   ├── Requests/
│   │   │   │   │   ├── ContentActivitiesRequest.cs
│   │   │   │   │   ├── ProcessContentRequest.cs
│   │   │   │   │   └── ProtectionScopesRequest.cs
│   │   │   │   └── Responses/
│   │   │   │       ├── ContentActivitiesResponse.cs
│   │   │   │       ├── ProcessContentResponse.cs
│   │   │   │       └── ProtectionScopesResponse.cs
│   │   │   ├── PurviewAgent.cs
│   │   │   ├── PurviewAppLocation.cs
│   │   │   ├── PurviewChatClient.cs
│   │   │   ├── PurviewClient.cs
│   │   │   ├── PurviewExtensions.cs
│   │   │   ├── PurviewLocationType.cs
│   │   │   ├── PurviewSettings.cs
│   │   │   ├── PurviewWrapper.cs
│   │   │   ├── README.md
│   │   │   ├── ScopedContentProcessor.cs
│   │   │   └── Serialization/
│   │   │       └── PurviewSerializationUtils.cs
│   │   ├── Microsoft.Agents.AI.Workflows/
│   │   │   ├── AIAgentBinding.cs
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AIAgentHostOptions.cs
│   │   │   ├── AIAgentIDEqualityComparer.cs
│   │   │   ├── AIAgentsAbstractionsExtensions.cs
│   │   │   ├── AgentResponseEvent.cs
│   │   │   ├── AgentResponseUpdateEvent.cs
│   │   │   ├── AgentWorkflowBuilder.cs
│   │   │   ├── AggregatingExecutor.cs
│   │   │   ├── Attributes/
│   │   │   │   ├── MessageHandlerAttribute.cs
│   │   │   │   ├── SendsMessageAttribute.cs
│   │   │   │   ├── YieldsMessageAttribute.cs
│   │   │   │   └── YieldsOutputAttribute.cs
│   │   │   ├── ChatForwardingExecutor.cs
│   │   │   ├── ChatProtocol.cs
│   │   │   ├── ChatProtocolExecutor.cs
│   │   │   ├── CheckpointInfo.cs
│   │   │   ├── CheckpointManager.cs
│   │   │   ├── CheckpointableRunBase.cs
│   │   │   ├── Checkpointing/
│   │   │   │   ├── Checkpoint.cs
│   │   │   │   ├── CheckpointInfoConverter.cs
│   │   │   │   ├── CheckpointManagerImpl.cs
│   │   │   │   ├── DirectEdgeInfo.cs
│   │   │   │   ├── EdgeIdConverter.cs
│   │   │   │   ├── EdgeInfo.cs
│   │   │   │   ├── ExecutorIdentityConverter.cs
│   │   │   │   ├── ExecutorInfo.cs
│   │   │   │   ├── FanInEdgeInfo.cs
│   │   │   │   ├── FanOutEdgeInfo.cs
│   │   │   │   ├── FileSystemJsonCheckpointStore.cs
│   │   │   │   ├── ICheckpointManager.cs
│   │   │   │   ├── ICheckpointStore.cs
│   │   │   │   ├── ICheckpointingHandle.cs
│   │   │   │   ├── IDelayedDeserialization.cs
│   │   │   │   ├── IWireMarshaller.cs
│   │   │   │   ├── InMemoryCheckpointManager.cs
│   │   │   │   ├── JsonCheckpointStore.cs
│   │   │   │   ├── JsonConverterBase.cs
│   │   │   │   ├── JsonConverterDictionarySupportBase.cs
│   │   │   │   ├── JsonMarshaller.cs
│   │   │   │   ├── JsonWireSerializedValue.cs
│   │   │   │   ├── PortableMessageEnvelope.cs
│   │   │   │   ├── PortableValueConverter.cs
│   │   │   │   ├── RepresentationExtensions.cs
│   │   │   │   ├── RequestPortInfo.cs
│   │   │   │   ├── ScopeKeyConverter.cs
│   │   │   │   ├── SessionCheckpointCache.cs
│   │   │   │   ├── TypeId.cs
│   │   │   │   └── WorkflowInfo.cs
│   │   │   ├── Config.cs
│   │   │   ├── ConfigurationExtensions.cs
│   │   │   ├── Configured.cs
│   │   │   ├── ConfiguredExecutorBinding.cs
│   │   │   ├── DirectEdgeData.cs
│   │   │   ├── Edge.cs
│   │   │   ├── EdgeData.cs
│   │   │   ├── EdgeId.cs
│   │   │   ├── Execution/
│   │   │   │   ├── AsyncRunHandle.cs
│   │   │   │   ├── AsyncRunHandleExtensions.cs
│   │   │   │   ├── CallResult.cs
│   │   │   │   ├── ConcurrentEventSink.cs
│   │   │   │   ├── DeliveryMapping.cs
│   │   │   │   ├── DirectEdgeRunner.cs
│   │   │   │   ├── EdgeConnection.cs
│   │   │   │   ├── EdgeMap.cs
│   │   │   │   ├── EdgeRunner.cs
│   │   │   │   ├── ExecutionMode.cs
│   │   │   │   ├── ExecutorIdentity.cs
│   │   │   │   ├── FanInEdgeRunner.cs
│   │   │   │   ├── FanInEdgeState.cs
│   │   │   │   ├── FanOutEdgeRunner.cs
│   │   │   │   ├── IExternalRequestSink.cs
│   │   │   │   ├── IRunEventStream.cs
│   │   │   │   ├── IRunnerContext.cs
│   │   │   │   ├── IStepTracer.cs
│   │   │   │   ├── ISuperStepJoinContext.cs
│   │   │   │   ├── ISuperStepRunner.cs
│   │   │   │   ├── InputWaiter.cs
│   │   │   │   ├── LockstepRunEventStream.cs
│   │   │   │   ├── MessageDelivery.cs
│   │   │   │   ├── MessageEnvelope.cs
│   │   │   │   ├── MessageRouter.cs
│   │   │   │   ├── NonThrowingChannelReaderAsyncEnumerable.cs
│   │   │   │   ├── OutputFilter.cs
│   │   │   │   ├── ResponseEdgeRunner.cs
│   │   │   │   ├── RunnerStateData.cs
│   │   │   │   ├── StateManager.cs
│   │   │   │   ├── StateScope.cs
│   │   │   │   ├── StateUpdate.cs
│   │   │   │   ├── StepContext.cs
│   │   │   │   ├── StreamingRunEventStream.cs
│   │   │   │   └── UpdateKey.cs
│   │   │   ├── Executor.cs
│   │   │   ├── ExecutorBinding.cs
│   │   │   ├── ExecutorBindingExtensions.cs
│   │   │   ├── ExecutorCompletedEvent.cs
│   │   │   ├── ExecutorEvent.cs
│   │   │   ├── ExecutorFailedEvent.cs
│   │   │   ├── ExecutorInstanceBinding.cs
│   │   │   ├── ExecutorInvokedEvent.cs
│   │   │   ├── ExecutorOptions.cs
│   │   │   ├── ExecutorPlaceholder.cs
│   │   │   ├── ExternalRequest.cs
│   │   │   ├── ExternalResponse.cs
│   │   │   ├── FanInEdgeData.cs
│   │   │   ├── FanOutEdgeData.cs
│   │   │   ├── FunctionExecutor.cs
│   │   │   ├── GroupChatManager.cs
│   │   │   ├── GroupChatWorkflowBuilder.cs
│   │   │   ├── HandoffToolCallFilteringBehavior.cs
│   │   │   ├── HandoffsWorkflowBuilder.cs
│   │   │   ├── IExternalRequestContext.cs
│   │   │   ├── IIdentified.cs
│   │   │   ├── IMessageRouter.cs
│   │   │   ├── IResettableExecutor.cs
│   │   │   ├── IWorkflowContext.cs
│   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   ├── IWorkflowExecutionEnvironment.cs
│   │   │   ├── InProc/
│   │   │   │   ├── InProcStepTracer.cs
│   │   │   │   ├── InProcessExecutionEnvironment.cs
│   │   │   │   ├── InProcessExecutionOptions.cs
│   │   │   │   ├── InProcessRunner.cs
│   │   │   │   └── InProcessRunnerContext.cs
│   │   │   ├── InProcessExecution.cs
│   │   │   ├── MessageMerger.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.csproj
│   │   │   ├── Observability/
│   │   │   │   ├── ActivityExtensions.cs
│   │   │   │   ├── ActivityNames.cs
│   │   │   │   ├── EdgeRunnerDeliveryStatus.cs
│   │   │   │   ├── EventNames.cs
│   │   │   │   ├── Tags.cs
│   │   │   │   ├── WorkflowTelemetryContext.cs
│   │   │   │   └── WorkflowTelemetryOptions.cs
│   │   │   ├── OpenTelemetryWorkflowBuilderExtensions.cs
│   │   │   ├── PortBinding.cs
│   │   │   ├── PortableValue.cs
│   │   │   ├── ProtocolBuilder.cs
│   │   │   ├── ProtocolDescriptor.cs
│   │   │   ├── Reflection/
│   │   │   │   ├── IMessageHandler.cs
│   │   │   │   ├── MessageHandlerInfo.cs
│   │   │   │   ├── ReflectingExecutor.cs
│   │   │   │   ├── ReflectionExtensions.cs
│   │   │   │   ├── RouteBuilderExtensions.cs
│   │   │   │   └── ValueTaskTypeErasure.cs
│   │   │   ├── RequestHaltEvent.cs
│   │   │   ├── RequestInfoEvent.cs
│   │   │   ├── RequestPort.cs
│   │   │   ├── RequestPortBinding.cs
│   │   │   ├── RoundRobinGroupChatManager.cs
│   │   │   ├── RouteBuilder.cs
│   │   │   ├── Run.cs
│   │   │   ├── RunStatus.cs
│   │   │   ├── ScopeId.cs
│   │   │   ├── ScopeKey.cs
│   │   │   ├── Specialized/
│   │   │   │   ├── AIAgentHostExecutor.cs
│   │   │   │   ├── AIContentExternalHandler.cs
│   │   │   │   ├── AggregateTurnMessagesExecutor.cs
│   │   │   │   ├── ConcurrentEndExecutor.cs
│   │   │   │   ├── GroupChatHost.cs
│   │   │   │   ├── HandoffAgentExecutor.cs
│   │   │   │   ├── HandoffState.cs
│   │   │   │   ├── HandoffTarget.cs
│   │   │   │   ├── HandoffsEndExecutor.cs
│   │   │   │   ├── HandoffsStartExecutor.cs
│   │   │   │   ├── OutputMessagesExecutor.cs
│   │   │   │   ├── RequestInfoExecutor.cs
│   │   │   │   ├── RequestPortExtensions.cs
│   │   │   │   └── WorkflowHostExecutor.cs
│   │   │   ├── StatefulExecutor.cs
│   │   │   ├── StatefulExecutorOptions.cs
│   │   │   ├── StreamingAggregators.cs
│   │   │   ├── StreamingRun.cs
│   │   │   ├── StreamsMessageAttribute.cs
│   │   │   ├── SubworkflowBinding.cs
│   │   │   ├── SubworkflowErrorEvent.cs
│   │   │   ├── SubworkflowWarningEvent.cs
│   │   │   ├── SuperStepCompletedEvent.cs
│   │   │   ├── SuperStepCompletionInfo.cs
│   │   │   ├── SuperStepEvent.cs
│   │   │   ├── SuperStepStartInfo.cs
│   │   │   ├── SuperStepStartedEvent.cs
│   │   │   ├── SwitchBuilder.cs
│   │   │   ├── TurnToken.cs
│   │   │   ├── Visualization/
│   │   │   │   └── WorkflowVisualizer.cs
│   │   │   ├── Workflow.cs
│   │   │   ├── WorkflowBuilder.cs
│   │   │   ├── WorkflowBuilderExtensions.cs
│   │   │   ├── WorkflowChatHistoryProvider.cs
│   │   │   ├── WorkflowErrorEvent.cs
│   │   │   ├── WorkflowEvent.cs
│   │   │   ├── WorkflowHostAgent.cs
│   │   │   ├── WorkflowHostingExtensions.cs
│   │   │   ├── WorkflowOutputEvent.cs
│   │   │   ├── WorkflowSession.cs
│   │   │   ├── WorkflowStartedEvent.cs
│   │   │   ├── WorkflowWarningEvent.cs
│   │   │   └── WorkflowsJsonUtilities.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative/
│   │   │   ├── CodeGen/
│   │   │   │   ├── ActionTemplate.cs
│   │   │   │   ├── AddConversationMessageTemplate.cs
│   │   │   │   ├── AddConversationMessageTemplate.tt
│   │   │   │   ├── AddConversationMessageTemplateCode.cs
│   │   │   │   ├── ClearAllVariablesTemplate.cs
│   │   │   │   ├── ClearAllVariablesTemplate.tt
│   │   │   │   ├── ClearAllVariablesTemplateCode.cs
│   │   │   │   ├── CodeTemplate.cs
│   │   │   │   ├── ConditionGroupTemplate.cs
│   │   │   │   ├── ConditionGroupTemplate.tt
│   │   │   │   ├── ConditionGroupTemplateCode.cs
│   │   │   │   ├── CopyConversationMessagesTemplate.cs
│   │   │   │   ├── CopyConversationMessagesTemplate.tt
│   │   │   │   ├── CopyConversationMessagesTemplateCode.cs
│   │   │   │   ├── CreateConversationTemplate.cs
│   │   │   │   ├── CreateConversationTemplate.tt
│   │   │   │   ├── CreateConversationTemplateCode.cs
│   │   │   │   ├── DefaultTemplate.cs
│   │   │   │   ├── DefaultTemplate.tt
│   │   │   │   ├── DefaultTemplateCode.cs
│   │   │   │   ├── EdgeTemplate.cs
│   │   │   │   ├── EdgeTemplate.tt
│   │   │   │   ├── EdgeTemplateCode.cs
│   │   │   │   ├── EditTableV2Template.cs
│   │   │   │   ├── EditTableV2Template.tt
│   │   │   │   ├── EditTableV2TemplateCode.cs
│   │   │   │   ├── EmptyTemplate.cs
│   │   │   │   ├── EmptyTemplate.tt
│   │   │   │   ├── EmptyTemplateCode.cs
│   │   │   │   ├── ForeachTemplate.cs
│   │   │   │   ├── ForeachTemplate.tt
│   │   │   │   ├── ForeachTemplateCode.cs
│   │   │   │   ├── InstanceTemplate.cs
│   │   │   │   ├── InstanceTemplate.tt
│   │   │   │   ├── InstanceTemplateCode.cs
│   │   │   │   ├── InvokeAzureAgentTemplate.cs
│   │   │   │   ├── InvokeAzureAgentTemplate.tt
│   │   │   │   ├── InvokeAzureAgentTemplateCode.cs
│   │   │   │   ├── ParseValueTemplate.cs
│   │   │   │   ├── ParseValueTemplate.tt
│   │   │   │   ├── ParseValueTemplateCode.cs
│   │   │   │   ├── ProviderTemplate.cs
│   │   │   │   ├── ProviderTemplate.tt
│   │   │   │   ├── ProviderTemplateCode.cs
│   │   │   │   ├── QuestionTemplate.cs
│   │   │   │   ├── QuestionTemplate.tt
│   │   │   │   ├── QuestionTemplateCode.cs
│   │   │   │   ├── ResetVariableTemplate.cs
│   │   │   │   ├── ResetVariableTemplate.tt
│   │   │   │   ├── ResetVariableTemplateCode.cs
│   │   │   │   ├── RetrieveConversationMessageTemplate.cs
│   │   │   │   ├── RetrieveConversationMessageTemplate.tt
│   │   │   │   ├── RetrieveConversationMessageTemplateCode.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplate.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplate.tt
│   │   │   │   ├── RetrieveConversationMessagesTemplateCode.cs
│   │   │   │   ├── RootTemplate.cs
│   │   │   │   ├── RootTemplate.tt
│   │   │   │   ├── RootTemplateCode.cs
│   │   │   │   ├── SendActivityTemplate.cs
│   │   │   │   ├── SendActivityTemplate.tt
│   │   │   │   ├── SendActivityTemplateCode.cs
│   │   │   │   ├── SetMultipleVariablesTemplate.cs
│   │   │   │   ├── SetMultipleVariablesTemplate.tt
│   │   │   │   ├── SetMultipleVariablesTemplateCode.cs
│   │   │   │   ├── SetTextVariableTemplate.cs
│   │   │   │   ├── SetTextVariableTemplate.tt
│   │   │   │   ├── SetTextVariableTemplateCode.cs
│   │   │   │   ├── SetVariableTemplate.cs
│   │   │   │   ├── SetVariableTemplate.tt
│   │   │   │   ├── SetVariableTemplateCode.cs
│   │   │   │   └── Snippets/
│   │   │   │       ├── AssignVariableTemplate.tt
│   │   │   │       ├── EvaluateBoolExpressionTemplate.tt
│   │   │   │       ├── EvaluateEnumExpressionTemplate.tt
│   │   │   │       ├── EvaluateIntExpressionTemplate.tt
│   │   │   │       ├── EvaluateListExpressionTemplate.tt
│   │   │   │       ├── EvaluateRecordExpressionTemplate.tt
│   │   │   │       ├── EvaluateStringExpressionTemplate.tt
│   │   │   │       ├── EvaluateValueExpressionTemplate.tt
│   │   │   │       └── FormatMessageTemplate.tt
│   │   │   ├── DeclarativeWorkflowBuilder.cs
│   │   │   ├── DeclarativeWorkflowLanguage.cs
│   │   │   ├── DeclarativeWorkflowOptions.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntityExtractionResult.cs
│   │   │   │   └── EntityExtractor.cs
│   │   │   ├── Events/
│   │   │   │   ├── ConversationUpdateEvent.cs
│   │   │   │   ├── DeclarativeActionCompletedEvent.cs
│   │   │   │   ├── DeclarativeActionInvokedEvent.cs
│   │   │   │   ├── ExternalInputRequest.cs
│   │   │   │   ├── ExternalInputResponse.cs
│   │   │   │   └── MessageActivityEvent.cs
│   │   │   ├── Exceptions/
│   │   │   │   ├── DeclarativeActionException.cs
│   │   │   │   ├── DeclarativeModelException.cs
│   │   │   │   └── DeclarativeWorkflowException.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AgentProviderExtensions.cs
│   │   │   │   ├── BotElementExtensions.cs
│   │   │   │   ├── ChatMessageExtensions.cs
│   │   │   │   ├── DataValueExtensions.cs
│   │   │   │   ├── DeclarativeWorkflowOptionsExtensions.cs
│   │   │   │   ├── DialogBaseExtensions.cs
│   │   │   │   ├── ExpandoObjectExtensions.cs
│   │   │   │   ├── FormulaValueExtensions.cs
│   │   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   │   ├── JsonDocumentExtensions.cs
│   │   │   │   ├── ObjectExtensions.cs
│   │   │   │   ├── PortableValueExtensions.cs
│   │   │   │   ├── StringExtensions.cs
│   │   │   │   ├── TemplateExtensions.cs
│   │   │   │   └── TypeExtensions.cs
│   │   │   ├── IMcpToolHandler.cs
│   │   │   ├── Interpreter/
│   │   │   │   ├── DeclarativeActionExecutor.cs
│   │   │   │   ├── DeclarativeWorkflowContext.cs
│   │   │   │   ├── DeclarativeWorkflowExecutor.cs
│   │   │   │   ├── DelegateActionExecutor.cs
│   │   │   │   ├── DurableProperty.cs
│   │   │   │   ├── RequestPortAction.cs
│   │   │   │   ├── WorkflowActionVisitor.cs
│   │   │   │   ├── WorkflowCodeBuilder.cs
│   │   │   │   ├── WorkflowElementWalker.cs
│   │   │   │   ├── WorkflowModel.cs
│   │   │   │   ├── WorkflowModelBuilder.cs
│   │   │   │   └── WorkflowTemplateVisitor.cs
│   │   │   ├── Kit/
│   │   │   │   ├── ActionExecutor.cs
│   │   │   │   ├── ActionExecutorResult.cs
│   │   │   │   ├── AgentExecutor.cs
│   │   │   │   ├── DelegateExecutor.cs
│   │   │   │   ├── FormulaSession.cs
│   │   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   │   ├── PortableValueExtensions.cs
│   │   │   │   ├── RootExecutor.cs
│   │   │   │   ├── UnassignedValue.cs
│   │   │   │   └── VariableType.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.csproj
│   │   │   ├── ObjectModel/
│   │   │   │   ├── AddConversationMessageExecutor.cs
│   │   │   │   ├── ClearAllVariablesExecutor.cs
│   │   │   │   ├── ConditionGroupExecutor.cs
│   │   │   │   ├── CopyConversationMessagesExecutor.cs
│   │   │   │   ├── CreateConversationExecutor.cs
│   │   │   │   ├── DefaultActionExecutor.cs
│   │   │   │   ├── EditTableExecutor.cs
│   │   │   │   ├── EditTableV2Executor.cs
│   │   │   │   ├── ForeachExecutor.cs
│   │   │   │   ├── InvokeAzureAgentExecutor.cs
│   │   │   │   ├── InvokeFunctionToolExecutor.cs
│   │   │   │   ├── InvokeMcpToolExecutor.cs
│   │   │   │   ├── ParseValueExecutor.cs
│   │   │   │   ├── QuestionExecutor.cs
│   │   │   │   ├── RequestExternalInputExecutor.cs
│   │   │   │   ├── ResetVariableExecutor.cs
│   │   │   │   ├── RetrieveConversationMessageExecutor.cs
│   │   │   │   ├── RetrieveConversationMessagesExecutor.cs
│   │   │   │   ├── SendActivityExecutor.cs
│   │   │   │   ├── SetMultipleVariablesExecutor.cs
│   │   │   │   ├── SetTextVariableExecutor.cs
│   │   │   │   └── SetVariableExecutor.cs
│   │   │   ├── PowerFx/
│   │   │   │   ├── Functions/
│   │   │   │   │   ├── AgentMessage.cs
│   │   │   │   │   ├── MessageFunction.cs
│   │   │   │   │   ├── MessageText.cs
│   │   │   │   │   └── UserMessage.cs
│   │   │   │   ├── RecalcEngineFactory.cs
│   │   │   │   ├── SystemScope.cs
│   │   │   │   ├── TypeSchema.cs
│   │   │   │   ├── WorkflowDiagnostics.cs
│   │   │   │   ├── WorkflowExpressionEngine.cs
│   │   │   │   └── WorkflowFormulaState.cs
│   │   │   ├── README.md
│   │   │   └── ResponseAgentProvider.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.AzureAI/
│   │   │   ├── AzureAgentProvider.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.AzureAI.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.Mcp/
│   │   │   ├── DefaultMcpToolHandler.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.Mcp.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Generators/
│   │   │   ├── Analysis/
│   │   │   │   └── SemanticAnalyzer.cs
│   │   │   ├── Diagnostics/
│   │   │   │   └── DiagnosticDescriptors.cs
│   │   │   ├── Directory.Build.targets
│   │   │   ├── ExecutorRouteGenerator.cs
│   │   │   ├── Generation/
│   │   │   │   └── SourceBuilder.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Generators.csproj
│   │   │   ├── Models/
│   │   │   │   ├── AnalysisResult.cs
│   │   │   │   ├── ClassProtocolInfo.cs
│   │   │   │   ├── DiagnosticInfo.cs
│   │   │   │   ├── DiagnosticLocationInfo.cs
│   │   │   │   ├── EquatableArray.cs
│   │   │   │   ├── ExecutorInfo.cs
│   │   │   │   ├── HandlerInfo.cs
│   │   │   │   ├── ImmutableEquatableArray.cs
│   │   │   │   ├── MethodAnalysisResult.cs
│   │   │   │   └── ProtocolAttributeKind.cs
│   │   │   └── SkipIncompatibleBuild.targets
│   │   └── Shared/
│   │       ├── CodeTests/
│   │       │   ├── Compiler.cs
│   │       │   └── README.md
│   │       ├── Demos/
│   │       │   ├── README.md
│   │       │   └── SampleEnvironment.cs
│   │       ├── DiagnosticIds/
│   │       │   ├── DiagnosticsIds.cs
│   │       │   └── README.md
│   │       ├── Foundry/
│   │       │   └── Agents/
│   │       │       ├── AgentFactory.cs
│   │       │       └── README.md
│   │       ├── IntegrationTests/
│   │       │   ├── README.md
│   │       │   └── TestSettings.cs
│   │       ├── IntegrationTestsAzureCredentials/
│   │       │   ├── README.md
│   │       │   └── TestAzureCliCredentials.cs
│   │       ├── Samples/
│   │       │   ├── BaseSample.cs
│   │       │   ├── OrchestrationSample.cs
│   │       │   ├── README.md
│   │       │   ├── Resources.cs
│   │       │   ├── TestConfiguration.cs
│   │       │   ├── TextOutputHelperExtensions.cs
│   │       │   └── XunitLogger.cs
│   │       ├── StructuredOutput/
│   │       │   └── StructuredOutputSchemaUtilities.cs
│   │       ├── Throw/
│   │       │   ├── README.md
│   │       │   └── Throw.cs
│   │       └── Workflows/
│   │           ├── Execution/
│   │           │   ├── README.md
│   │           │   ├── WorkflowFactory.cs
│   │           │   └── WorkflowRunner.cs
│   │           └── Settings/
│   │               ├── Application.cs
│   │               └── README.md
│   ├── tests/
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── AgentConformance.IntegrationTests/
│   │   │   ├── AgentConformance.IntegrationTests.csproj
│   │   │   ├── AgentTests.cs
│   │   │   ├── ChatClientAgentRunStreamingTests.cs
│   │   │   ├── ChatClientAgentRunTests.cs
│   │   │   ├── IAgentFixture.cs
│   │   │   ├── IChatClientAgentFixture.cs
│   │   │   ├── MenuPlugin.cs
│   │   │   ├── RunStreamingTests.cs
│   │   │   ├── RunTests.cs
│   │   │   ├── StructuredOutputRunTests.cs
│   │   │   └── Support/
│   │   │       ├── AgentCleanup.cs
│   │   │       ├── Constants.cs
│   │   │       ├── SessionCleanup.cs
│   │   │       └── TestConfiguration.cs
│   │   ├── AnthropicChatCompletion.IntegrationTests/
│   │   │   ├── AnthropicChatCompletion.IntegrationTests.csproj
│   │   │   ├── AnthropicChatCompletionChatClientAgentRunStreamingTests.cs
│   │   │   ├── AnthropicChatCompletionChatClientAgentRunTests.cs
│   │   │   ├── AnthropicChatCompletionFixture.cs
│   │   │   ├── AnthropicChatCompletionRunStreamingTests.cs
│   │   │   ├── AnthropicChatCompletionRunTests.cs
│   │   │   └── AnthropicSkillsIntegrationTests.cs
│   │   ├── AzureAI.IntegrationTests/
│   │   │   ├── AIProjectClientAgentRunStreamingTests.cs
│   │   │   ├── AIProjectClientAgentRunTests.cs
│   │   │   ├── AIProjectClientAgentStructuredOutputRunTests.cs
│   │   │   ├── AIProjectClientChatClientAgentRunStreamingTests.cs
│   │   │   ├── AIProjectClientChatClientAgentRunTests.cs
│   │   │   ├── AIProjectClientCreateTests.cs
│   │   │   ├── AIProjectClientFixture.cs
│   │   │   └── AzureAI.IntegrationTests.csproj
│   │   ├── AzureAIAgentsPersistent.IntegrationTests/
│   │   │   ├── AzureAIAgentsChatClientAgentRunStreamingTests.cs
│   │   │   ├── AzureAIAgentsChatClientAgentRunTests.cs
│   │   │   ├── AzureAIAgentsPersistent.IntegrationTests.csproj
│   │   │   ├── AzureAIAgentsPersistentCreateTests.cs
│   │   │   ├── AzureAIAgentsPersistentFixture.cs
│   │   │   ├── AzureAIAgentsPersistentRunStreamingTests.cs
│   │   │   ├── AzureAIAgentsPersistentRunTests.cs
│   │   │   └── AzureAIAgentsPersistentStructuredOutputRunTests.cs
│   │   ├── CopilotStudio.IntegrationTests/
│   │   │   ├── CopilotStudio.IntegrationTests.csproj
│   │   │   ├── CopilotStudioFixture.cs
│   │   │   ├── CopilotStudioRunStreamingTests.cs
│   │   │   ├── CopilotStudioRunTests.cs
│   │   │   └── Support/
│   │   │       ├── CopilotStudioConnectionSettings.cs
│   │   │       └── CopilotStudioTokenHandler.cs
│   │   ├── Directory.Build.props
│   │   ├── Microsoft.Agents.AI.A2A.UnitTests/
│   │   │   ├── A2AAgentSessionTests.cs
│   │   │   ├── A2AAgentTests.cs
│   │   │   ├── A2AContinuationTokenTests.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── A2AAIContentExtensionsTests.cs
│   │   │   │   ├── A2AAgentCardExtensionsTests.cs
│   │   │   │   ├── A2AAgentTaskExtensionsTests.cs
│   │   │   │   ├── A2AArtifactExtensionsTests.cs
│   │   │   │   ├── A2ACardResolverExtensionsTests.cs
│   │   │   │   ├── A2AClientExtensionsTests.cs
│   │   │   │   └── ChatMessageExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.A2A.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AGUI.UnitTests/
│   │   │   ├── AGUIChatClientTests.cs
│   │   │   ├── AGUIChatMessageExtensionsTests.cs
│   │   │   ├── AGUIHttpServiceTests.cs
│   │   │   ├── AGUIJsonSerializerContextTests.cs
│   │   │   ├── AIToolExtensionsTests.cs
│   │   │   ├── ChatResponseUpdateAGUIExtensionsTests.cs
│   │   │   ├── Microsoft.Agents.AI.AGUI.UnitTests.csproj
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Abstractions.UnitTests/
│   │   │   ├── AIAgentMetadataTests.cs
│   │   │   ├── AIAgentStructuredOutputTests.cs
│   │   │   ├── AIAgentTests.cs
│   │   │   ├── AIContextProviderTests.cs
│   │   │   ├── AIContextTests.cs
│   │   │   ├── AdditionalPropertiesExtensionsTests.cs
│   │   │   ├── AgentAbstractionsJsonUtilitiesTests.cs
│   │   │   ├── AgentRequestMessageSourceAttributionTests.cs
│   │   │   ├── AgentRequestMessageSourceTypeTests.cs
│   │   │   ├── AgentResponseTests.cs
│   │   │   ├── AgentResponseUpdateExtensionsTests.cs
│   │   │   ├── AgentResponseUpdateTests.cs
│   │   │   ├── AgentRunContextTests.cs
│   │   │   ├── AgentRunOptionsTests.cs
│   │   │   ├── AgentSessionExtensionsTests.cs
│   │   │   ├── AgentSessionStateBagTests.cs
│   │   │   ├── AgentSessionTests.cs
│   │   │   ├── ChatHistoryProviderTests.cs
│   │   │   ├── ChatMessageExtensionsTests.cs
│   │   │   ├── DelegatingAIAgentTests.cs
│   │   │   ├── InMemoryChatHistoryProviderTests.cs
│   │   │   ├── MessageAIContextProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.Abstractions.UnitTests.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Animal.cs
│   │   │   │   └── Species.cs
│   │   │   ├── ProviderSessionStateTests.cs
│   │   │   └── TestJsonSerializerContext.cs
│   │   ├── Microsoft.Agents.AI.Anthropic.UnitTests/
│   │   │   ├── Extensions/
│   │   │   │   ├── AnthropicBetaServiceExtensionsTests.cs
│   │   │   │   └── AnthropicClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.Anthropic.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI.Persistent.UnitTests/
│   │   │   ├── Extensions/
│   │   │   │   └── PersistentAgentsClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.AzureAI.Persistent.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI.UnitTests/
│   │   │   ├── AzureAIProjectChatClientExtensionsTests.cs
│   │   │   ├── AzureAIProjectChatClientTests.cs
│   │   │   ├── FakeAuthenticationTokenProvider.cs
│   │   │   ├── HttpHandlerAssert.cs
│   │   │   ├── Microsoft.Agents.AI.AzureAI.UnitTests.csproj
│   │   │   ├── TestData/
│   │   │   │   ├── AgentResponse.json
│   │   │   │   ├── AgentVersionResponse.json
│   │   │   │   └── OpenAIDefaultResponse.json
│   │   │   └── TestDataUtil.cs
│   │   ├── Microsoft.Agents.AI.CosmosNoSql.UnitTests/
│   │   │   ├── .editorconfig
│   │   │   ├── CosmosChatHistoryProviderTests.cs
│   │   │   ├── CosmosCheckpointStoreTests.cs
│   │   │   ├── CosmosDBCollectionFixture.cs
│   │   │   └── Microsoft.Agents.AI.CosmosNoSql.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Declarative.UnitTests/
│   │   │   ├── AgentBotElementYamlTests.cs
│   │   │   ├── AggregatorPromptAgentFactoryTests.cs
│   │   │   ├── ChatClient/
│   │   │   │   └── ChatClientAgentFactoryTests.cs
│   │   │   ├── Microsoft.Agents.AI.Declarative.UnitTests.csproj
│   │   │   └── PromptAgents.cs
│   │   ├── Microsoft.Agents.AI.DevUI.UnitTests/
│   │   │   ├── DevUIExtensionsTests.cs
│   │   │   ├── DevUIIntegrationTests.cs
│   │   │   └── Microsoft.Agents.AI.DevUI.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.DurableTask.IntegrationTests/
│   │   │   ├── AgentEntityTests.cs
│   │   │   ├── ConsoleAppSamplesValidation.cs
│   │   │   ├── ExternalClientTests.cs
│   │   │   ├── Logging/
│   │   │   │   ├── LogEntry.cs
│   │   │   │   ├── TestLogger.cs
│   │   │   │   └── TestLoggerProvider.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.IntegrationTests.csproj
│   │   │   ├── OrchestrationTests.cs
│   │   │   ├── SamplesValidationBase.cs
│   │   │   ├── TestHelper.cs
│   │   │   ├── TimeToLiveTests.cs
│   │   │   └── WorkflowConsoleAppSamplesValidation.cs
│   │   ├── Microsoft.Agents.AI.DurableTask.UnitTests/
│   │   │   ├── AgentSessionIdTests.cs
│   │   │   ├── DurableAgentRunOptionsTests.cs
│   │   │   ├── DurableAgentSessionTests.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.UnitTests.csproj
│   │   │   ├── State/
│   │   │   │   ├── DurableAgentStateContentTests.cs
│   │   │   │   ├── DurableAgentStateMessageTests.cs
│   │   │   │   ├── DurableAgentStateRequestTests.cs
│   │   │   │   ├── DurableAgentStateResponseTests.cs
│   │   │   │   └── DurableAgentStateTests.cs
│   │   │   └── Workflows/
│   │   │       ├── DurableActivityExecutorTests.cs
│   │   │       ├── DurableStreamingWorkflowRunTests.cs
│   │   │       ├── DurableWorkflowContextTests.cs
│   │   │       └── WorkflowNamingHelperTests.cs
│   │   ├── Microsoft.Agents.AI.FoundryMemory.IntegrationTests/
│   │   │   ├── FoundryMemoryProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.FoundryMemory.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.FoundryMemory.UnitTests/
│   │   │   ├── FoundryMemoryProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.FoundryMemory.UnitTests.csproj
│   │   │   └── TestableAIProjectClient.cs
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot.IntegrationTests/
│   │   │   ├── GitHubCopilotAgentTests.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot.UnitTests/
│   │   │   ├── CopilotClientExtensionsTests.cs
│   │   │   ├── GitHubCopilotAgentTests.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.A2A.UnitTests/
│   │   │   ├── A2AIntegrationTests.cs
│   │   │   ├── AIAgentExtensionsTests.cs
│   │   │   ├── Converters/
│   │   │   │   └── MessageConverterTests.cs
│   │   │   ├── EndpointRouteA2ABuilderExtensionsTests.cs
│   │   │   ├── Internal/
│   │   │   │   └── DummyChatClient.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.IntegrationTests/
│   │   │   ├── BasicStreamingTests.cs
│   │   │   ├── ForwardedPropertiesTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.IntegrationTests.csproj
│   │   │   ├── SharedStateTests.cs
│   │   │   └── ToolCallingTests.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.UnitTests/
│   │   │   ├── AGUIEndpointRouteBuilderExtensionsTests.cs
│   │   │   ├── AGUIServerSentEventsResultTests.cs
│   │   │   ├── ChatResponseUpdateAGUIExtensionsTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.UnitTests.csproj
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/
│   │   │   ├── AzureFunctionsTestHelper.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests.csproj
│   │   │   ├── SamplesValidation.cs
│   │   │   └── WorkflowSamplesValidation.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.UnitTests/
│   │   │   ├── DurableAgentFunctionMetadataTransformerTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.UnitTests.csproj
│   │   │   └── TestAgent.cs
│   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.UnitTests/
│   │   │   ├── AgentInvocationContextTests.cs
│   │   │   ├── ConformanceTestBase.cs
│   │   │   ├── ConformanceTraces/
│   │   │   │   ├── ChatCompletions/
│   │   │   │   │   ├── basic/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── function_calling/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── json_mode/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── multi_turn/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── streaming/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.txt
│   │   │   │   │   ├── system_message/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── request.json
│   │   │   │   │       └── response.json
│   │   │   │   ├── Conversations/
│   │   │   │   │   ├── add_items/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── basic/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   ├── first_message_response.json
│   │   │   │   │   │   ├── second_message_request.json
│   │   │   │   │   │   └── second_message_response.json
│   │   │   │   │   ├── basic_streaming/
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── create_with_items/
│   │   │   │   │   │   ├── create_request.json
│   │   │   │   │   │   └── create_response.json
│   │   │   │   │   ├── delete_conversation/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── delete_item/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_conversation_not_found/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_delete_already_deleted/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_invalid_json/
│   │   │   │   │   │   ├── request.txt
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_invalid_limit/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_item_not_found/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_missing_required_field/
│   │   │   │   │   │   └── request.json
│   │   │   │   │   ├── image_input/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── image_input_streaming/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── list_items/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── refusal/
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── refusal_streaming/
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── retrieve_conversation/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── retrieve_item/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── tool_call/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── tool_call_streaming/
│   │   │   │   │   │   └── first_message_request.json
│   │   │   │   │   └── update_conversation/
│   │   │   │   │       ├── request.json
│   │   │   │   │       └── response.json
│   │   │   │   └── Responses/
│   │   │   │       ├── basic/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── conversation/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── image_input/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── image_input_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── json_output/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── json_output_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── metadata/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── mutual_exclusive_error/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── reasoning/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── reasoning_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── refusal/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── refusal_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       └── tool_call/
│   │   │   │           ├── request.json
│   │   │   │           └── response.json
│   │   │   ├── ContentTypeEventGeneratorTests.cs
│   │   │   ├── EndpointRouteBuilderExtensionsTests.cs
│   │   │   ├── FunctionApprovalTests.cs
│   │   │   ├── IdGeneratorTests.cs
│   │   │   ├── InMemoryAgentConversationIndexTests.cs
│   │   │   ├── InMemoryConversationStorageTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.UnitTests.csproj
│   │   │   ├── OpenAIChatCompletionsConformanceTests.cs
│   │   │   ├── OpenAIChatCompletionsIntegrationTests.cs
│   │   │   ├── OpenAIChatCompletionsSerializationTests.cs
│   │   │   ├── OpenAIConversationsConformanceTests.cs
│   │   │   ├── OpenAIConversationsSerializationTests.cs
│   │   │   ├── OpenAIHttpApiIntegrationTests.cs
│   │   │   ├── OpenAIResponsesAgentResolutionIntegrationTests.cs
│   │   │   ├── OpenAIResponsesConformanceTests.cs
│   │   │   ├── OpenAIResponsesIntegrationTests.cs
│   │   │   ├── OpenAIResponsesSerializationTests.cs
│   │   │   ├── SortOrderExtensionsTests.cs
│   │   │   ├── StreamingEventConformanceTests.cs
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Hosting.UnitTests/
│   │   │   ├── AgentHostingServiceCollectionExtensionsTests.cs
│   │   │   ├── HostApplicationBuilderAgentExtensionsTests.cs
│   │   │   ├── HostApplicationBuilderWorkflowExtensionsTests.cs
│   │   │   ├── HostedAgentBuilderToolsExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Mem0.IntegrationTests/
│   │   │   ├── Mem0ProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.Mem0.UnitTests/
│   │   │   ├── Mem0ProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.OpenAI.UnitTests/
│   │   │   ├── ChatClient/
│   │   │   │   ├── AsyncStreamingChatCompletionUpdateCollectionResultTests.cs
│   │   │   │   ├── AsyncStreamingResponseUpdateCollectionResultTests.cs
│   │   │   │   └── StreamingUpdatePipelineResponseTests.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AIAgentWithOpenAIExtensionsTests.cs
│   │   │   │   ├── AgentResponseExtensionsTests.cs
│   │   │   │   ├── OpenAIAssistantClientExtensionsTests.cs
│   │   │   │   ├── OpenAIChatClientExtensionsTests.cs
│   │   │   │   └── OpenAIResponseClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.OpenAI.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Purview.UnitTests/
│   │   │   ├── Microsoft.Agents.AI.Purview.UnitTests.csproj
│   │   │   ├── PurviewClientTests.cs
│   │   │   ├── PurviewWrapperTests.cs
│   │   │   └── ScopedContentProcessorTests.cs
│   │   ├── Microsoft.Agents.AI.UnitTests/
│   │   │   ├── AIAgentBuilderTests.cs
│   │   │   ├── AIContextProviderDecorators/
│   │   │   │   ├── AIContextProviderChatClientTests.cs
│   │   │   │   └── MessageAIContextProviderAgentTests.cs
│   │   │   ├── AgentExtensionsTests.cs
│   │   │   ├── AgentJsonUtilitiesTests.cs
│   │   │   ├── AgentSkills/
│   │   │   │   ├── FileAgentSkillLoaderTests.cs
│   │   │   │   └── FileAgentSkillsProviderTests.cs
│   │   │   ├── AnonymousDelegatingAIAgentTests.cs
│   │   │   ├── ChatClient/
│   │   │   │   ├── ChatClientAgentContinuationTokenTests.cs
│   │   │   │   ├── ChatClientAgentOptionsTests.cs
│   │   │   │   ├── ChatClientAgentRunOptionsTests.cs
│   │   │   │   ├── ChatClientAgentSessionTests.cs
│   │   │   │   ├── ChatClientAgentTests.cs
│   │   │   │   ├── ChatClientAgent_BackgroundResponsesTests.cs
│   │   │   │   ├── ChatClientAgent_ChatHistoryManagementTests.cs
│   │   │   │   ├── ChatClientAgent_ChatOptionsMergingTests.cs
│   │   │   │   ├── ChatClientAgent_CreateSessionTests.cs
│   │   │   │   ├── ChatClientAgent_RunWithCustomOptionsTests.cs
│   │   │   │   ├── ChatClientAgent_StructuredOutput_WithFormatResponseTests.cs
│   │   │   │   ├── ChatClientAgent_StructuredOutput_WithRunAsyncTests.cs
│   │   │   │   ├── ChatClientBuilderExtensionsTests.cs
│   │   │   │   └── ChatClientExtensionsTests.cs
│   │   │   ├── Compaction/
│   │   │   │   ├── ChatMessageContentEqualityTests.cs
│   │   │   │   ├── ChatReducerCompactionStrategyTests.cs
│   │   │   │   ├── ChatStrategyExtensionsTests.cs
│   │   │   │   ├── CompactionMessageIndexTests.cs
│   │   │   │   ├── CompactionProviderTests.cs
│   │   │   │   ├── CompactionStrategyTests.cs
│   │   │   │   ├── CompactionTriggersTests.cs
│   │   │   │   ├── PipelineCompactionStrategyTests.cs
│   │   │   │   ├── SlidingWindowCompactionStrategyTests.cs
│   │   │   │   ├── SummarizationCompactionStrategyTests.cs
│   │   │   │   ├── ToolResultCompactionStrategyTests.cs
│   │   │   │   └── TruncationCompactionStrategyTests.cs
│   │   │   ├── CopilotStudioAgentTests.cs
│   │   │   ├── Data/
│   │   │   │   └── TextSearchProviderTests.cs
│   │   │   ├── FunctionInvocationDelegatingAgentTests.cs
│   │   │   ├── LoggingAgentBuilderExtensionsTests.cs
│   │   │   ├── LoggingAgentTests.cs
│   │   │   ├── Memory/
│   │   │   │   └── ChatHistoryMemoryProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.UnitTests.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Animal.cs
│   │   │   │   └── Species.cs
│   │   │   ├── OpenTelemetryAgentBuilderExtensionsTests.cs
│   │   │   ├── OpenTelemetryAgentTests.cs
│   │   │   ├── TestAIAgent.cs
│   │   │   └── TestJsonSerializerContext.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.IntegrationTests/
│   │   │   ├── Agents/
│   │   │   │   ├── AgentProvider.cs
│   │   │   │   ├── FunctionToolAgentProvider.cs
│   │   │   │   ├── MarketingAgentProvider.cs
│   │   │   │   ├── MathChatAgentProvider.cs
│   │   │   │   ├── MenuPlugin.cs
│   │   │   │   ├── PoemAgentProvider.cs
│   │   │   │   ├── TestAgentProvider.cs
│   │   │   │   └── VisionAgentProvider.cs
│   │   │   ├── AzureAgentProviderTest.cs
│   │   │   ├── DeclarativeCodeGenTest.cs
│   │   │   ├── DeclarativeWorkflowTest.cs
│   │   │   ├── Framework/
│   │   │   │   ├── IntegrationTest.cs
│   │   │   │   ├── TestOutputAdapter.cs
│   │   │   │   ├── Testcase.cs
│   │   │   │   ├── WorkflowEvents.cs
│   │   │   │   ├── WorkflowHarness.cs
│   │   │   │   └── WorkflowTest.cs
│   │   │   ├── FunctionCallingWorkflowTest.cs
│   │   │   ├── InvokeToolWorkflowTest.cs
│   │   │   ├── MediaInputTest.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.IntegrationTests.csproj
│   │   │   ├── Testcases/
│   │   │   │   ├── CheckSystem.json
│   │   │   │   ├── ConfirmInput.json
│   │   │   │   ├── ConversationMessages.json
│   │   │   │   ├── DeepResearch.json
│   │   │   │   ├── HumanInLoop.json
│   │   │   │   ├── InputArguments.json
│   │   │   │   ├── InvokeAgent.json
│   │   │   │   ├── Marketing.json
│   │   │   │   ├── MathChat.json
│   │   │   │   ├── RequestExternalInput.json
│   │   │   │   └── SendActivity.json
│   │   │   └── Workflows/
│   │   │       ├── CheckSystem.yaml
│   │   │       ├── ConfirmInput.yaml
│   │   │       ├── ConversationMessages.yaml
│   │   │       ├── FunctionTool.yaml
│   │   │       ├── InputArguments.yaml
│   │   │       ├── InvokeAgent.yaml
│   │   │       ├── InvokeFunctionTool.yaml
│   │   │       ├── InvokeFunctionToolWithApproval.yaml
│   │   │       ├── InvokeMcpTool.yaml
│   │   │       ├── InvokeMcpToolWithApproval.yaml
│   │   │       ├── MediaInputAutoSend.yaml
│   │   │       ├── MediaInputConversation.yaml
│   │   │       ├── RequestExternalInput.yaml
│   │   │       └── SendActivity.yaml
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.Mcp.UnitTests/
│   │   │   ├── DefaultMcpToolHandlerTests.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.Mcp.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.UnitTests/
│   │   │   ├── CodeGen/
│   │   │   │   ├── AddConversationMessageTemplateTest.cs
│   │   │   │   ├── BreakLoopTemplateTest.cs
│   │   │   │   ├── ClearAllVariablesTemplateTest.cs
│   │   │   │   ├── ConditionGroupTemplateTest.cs
│   │   │   │   ├── ContinueLoopTemplateTest.cs
│   │   │   │   ├── CopyConversationMessagesTemplateTest.cs
│   │   │   │   ├── CreateConversationTemplateTest.cs
│   │   │   │   ├── DeclarativeEjectionTest.cs
│   │   │   │   ├── EdgeTemplateTest.cs
│   │   │   │   ├── EndConversationTest.cs
│   │   │   │   ├── EndDialogTest.cs
│   │   │   │   ├── ForeachTemplateTest.cs
│   │   │   │   ├── GotoTemplateTest.cs
│   │   │   │   ├── InvokeAzureAgentTemplateTest.cs
│   │   │   │   ├── ProviderTemplateTest.cs
│   │   │   │   ├── ResetVariableTemplateTest.cs
│   │   │   │   ├── RetrieveConversationMessageTemplateTest.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplateTest.cs
│   │   │   │   ├── SetMultipleVariablesTemplateTest.cs
│   │   │   │   ├── SetTextVariableTemplateTest.cs
│   │   │   │   ├── SetVariableTemplateTest.cs
│   │   │   │   └── WorkflowActionTemplateTest.cs
│   │   │   ├── DeclarativeWorkflowContextTest.cs
│   │   │   ├── DeclarativeWorkflowExceptionTest.cs
│   │   │   ├── DeclarativeWorkflowOptionsTest.cs
│   │   │   ├── DeclarativeWorkflowTest.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntityExtractionResultTest.cs
│   │   │   │   └── EntityExtractorTest.cs
│   │   │   ├── Events/
│   │   │   │   ├── EventTest.cs
│   │   │   │   ├── ExternalInputRequestTest.cs
│   │   │   │   └── ExternalInputResponseTest.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── ChatMessageExtensionsTests.cs
│   │   │   │   ├── DataValueExtensionsTests.cs
│   │   │   │   ├── DeclarativeWorkflowOptionsExtensionsTests.cs
│   │   │   │   ├── DialogBaseExtensionsTests.cs
│   │   │   │   ├── ExpandoObjectExtensionsTests.cs
│   │   │   │   ├── FormulaValueExtensionsTests.cs
│   │   │   │   ├── JsonDocumentExtensionsTests.cs
│   │   │   │   ├── ObjectExtensionsTests.cs
│   │   │   │   ├── PortableValueExtensionsTests.cs
│   │   │   │   ├── StringExtensionsTests.cs
│   │   │   │   ├── TemplateExtensionsTests.cs
│   │   │   │   └── TypeExtensionsTests.cs
│   │   │   ├── Interpreter/
│   │   │   │   └── WorkflowModelTest.cs
│   │   │   ├── Kit/
│   │   │   │   └── VariableTypeTests.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.UnitTests.csproj
│   │   │   ├── MockAgentProvider.cs
│   │   │   ├── ObjectModel/
│   │   │   │   ├── AddConversationMessageExecutorTest.cs
│   │   │   │   ├── ClearAllVariablesExecutorTest.cs
│   │   │   │   ├── ConditionGroupExecutorTest.cs
│   │   │   │   ├── CopyConversationMessagesExecutorTest.cs
│   │   │   │   ├── CreateConversationExecutorTest.cs
│   │   │   │   ├── DefaultActionExecutorTest.cs
│   │   │   │   ├── EditTableExecutorTest.cs
│   │   │   │   ├── EditTableV2ExecutorTest.cs
│   │   │   │   ├── ForeachExecutorTest.cs
│   │   │   │   ├── InvokeFunctionToolExecutorTest.cs
│   │   │   │   ├── InvokeMcpToolExecutorTest.cs
│   │   │   │   ├── ParseValueExecutorTest.cs
│   │   │   │   ├── QuestionExecutorTest.cs
│   │   │   │   ├── RequestExternalInputExecutorTest.cs
│   │   │   │   ├── ResetVariableExecutorTest.cs
│   │   │   │   ├── RetrieveConversationMessageExecutorTest.cs
│   │   │   │   ├── RetrieveConversationMessagesExecutorTest.cs
│   │   │   │   ├── SendActivityExecutorTest.cs
│   │   │   │   ├── SetMultipleVariablesExecutorTest.cs
│   │   │   │   ├── SetTextVariableExecutorTest.cs
│   │   │   │   ├── SetVariableExecutorTest.cs
│   │   │   │   └── WorkflowActionExecutorTest.cs
│   │   │   ├── PowerFx/
│   │   │   │   ├── Functions/
│   │   │   │   │   ├── AgentMessageTests.cs
│   │   │   │   │   ├── MessageTextTests.cs
│   │   │   │   │   └── UserMessageTests.cs
│   │   │   │   ├── RecalcEngineFactoryTests.cs
│   │   │   │   ├── RecalcEngineTest.cs
│   │   │   │   ├── TemplateExtensionsTests.cs
│   │   │   │   ├── WorkflowExpressionEngineTests.cs
│   │   │   │   └── WorkflowFormulaStateTests.cs
│   │   │   ├── TestOutputAdapter.cs
│   │   │   ├── UpdateBaseline.ps1
│   │   │   ├── WorkflowTest.cs
│   │   │   └── Workflows/
│   │   │       ├── AddConversationMessage.cs
│   │   │       ├── AddConversationMessage.yaml
│   │   │       ├── BadEmpty.yaml
│   │   │       ├── BadId.yaml
│   │   │       ├── BadKind.yaml
│   │   │       ├── CancelWorkflow.cs
│   │   │       ├── CancelWorkflow.yaml
│   │   │       ├── CaseInsensitive.yaml
│   │   │       ├── ClearAllVariables.cs
│   │   │       ├── ClearAllVariables.yaml
│   │   │       ├── Condition.cs
│   │   │       ├── Condition.yaml
│   │   │       ├── ConditionElse.cs
│   │   │       ├── ConditionElse.yaml
│   │   │       ├── ConditionFallThrough.yaml
│   │   │       ├── CopyConversationMessages.cs
│   │   │       ├── CopyConversationMessages.yaml
│   │   │       ├── CreateConversation.cs
│   │   │       ├── CreateConversation.yaml
│   │   │       ├── EditTable.cs
│   │   │       ├── EditTable.yaml
│   │   │       ├── EditTableV2.cs
│   │   │       ├── EditTableV2.yaml
│   │   │       ├── EndConversation.cs
│   │   │       ├── EndConversation.yaml
│   │   │       ├── EndWorkflow.cs
│   │   │       ├── EndWorkflow.yaml
│   │   │       ├── Goto.cs
│   │   │       ├── Goto.yaml
│   │   │       ├── InvokeAgent.cs
│   │   │       ├── InvokeAgent.yaml
│   │   │       ├── LoopBreak.cs
│   │   │       ├── LoopBreak.yaml
│   │   │       ├── LoopContinue.cs
│   │   │       ├── LoopContinue.yaml
│   │   │       ├── LoopEach.cs
│   │   │       ├── LoopEach.yaml
│   │   │       ├── MixedScopes.yaml
│   │   │       ├── ParseValue.cs
│   │   │       ├── ParseValue.yaml
│   │   │       ├── ParseValueList.yaml
│   │   │       ├── ResetVariable.cs
│   │   │       ├── ResetVariable.yaml
│   │   │       ├── RetrieveConversationMessage.cs
│   │   │       ├── RetrieveConversationMessage.yaml
│   │   │       ├── RetrieveConversationMessages.cs
│   │   │       ├── RetrieveConversationMessages.yaml
│   │   │       ├── SendActivity.cs
│   │   │       ├── SendActivity.yaml
│   │   │       ├── SetTextVariable.cs
│   │   │       ├── SetTextVariable.yaml
│   │   │       ├── SetVariable.cs
│   │   │       └── SetVariable.yaml
│   │   ├── Microsoft.Agents.AI.Workflows.Generators.UnitTests/
│   │   │   ├── ExecutorRouteGeneratorTests.cs
│   │   │   ├── GeneratorTestHelper.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Generators.UnitTests.csproj
│   │   │   └── SyntaxTreeFluentExtensions.cs
│   │   ├── Microsoft.Agents.AI.Workflows.UnitTests/
│   │   │   ├── AIAgentHostExecutorTests.cs
│   │   │   ├── AgentEventsTests.cs
│   │   │   ├── AgentWorkflowBuilderTests.cs
│   │   │   ├── ChatMessageBuilder.cs
│   │   │   ├── ChatProtocolExecutorTests.cs
│   │   │   ├── CheckpointParentTests.cs
│   │   │   ├── DynamicPortsExecutor.cs
│   │   │   ├── DynamicRequestPortTests.cs
│   │   │   ├── EdgeMapSmokeTests.cs
│   │   │   ├── EdgeRunnerTests.cs
│   │   │   ├── ExecutionExtensions.cs
│   │   │   ├── FileSystemJsonCheckpointStoreTests.cs
│   │   │   ├── ForwardMessageExecutor.cs
│   │   │   ├── InMemoryJsonStore.cs
│   │   │   ├── InProcessExecutionTests.cs
│   │   │   ├── InProcessStateTests.cs
│   │   │   ├── JsonSerializationTests.cs
│   │   │   ├── MessageDeliveryValidation.cs
│   │   │   ├── MessageMergerTests.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.UnitTests.csproj
│   │   │   ├── ObservabilityTests.cs
│   │   │   ├── PolymorphicOutputTests.cs
│   │   │   ├── PortableValueTests.cs
│   │   │   ├── ReflectionSmokeTest.cs
│   │   │   ├── RepresentationTests.cs
│   │   │   ├── RoleCheckAgent.cs
│   │   │   ├── Sample/
│   │   │   │   ├── 01_Simple_Workflow_Sequential.cs
│   │   │   │   ├── 01a_Simple_Workflow_Sequential.cs
│   │   │   │   ├── 02_Simple_Workflow_Condition.cs
│   │   │   │   ├── 03_Simple_Workflow_Loop.cs
│   │   │   │   ├── 04_Simple_Workflow_ExternalRequest.cs
│   │   │   │   ├── 05_Simple_Workflow_Checkpointing.cs
│   │   │   │   ├── 06_GroupChat_Workflow.cs
│   │   │   │   ├── 07_GroupChat_Workflow_HostAsAgent.cs
│   │   │   │   ├── 08_Subworkflow_Simple.cs
│   │   │   │   ├── 09_Subworkflow_ExternalRequest.cs
│   │   │   │   ├── 10_Sequential_HostAsAgent.cs
│   │   │   │   ├── 11_Concurrent_HostAsAgent.cs
│   │   │   │   ├── 12_HandOff_HostAsAgent.cs
│   │   │   │   ├── 13_Subworkflow_Checkpointing.cs
│   │   │   │   └── 14_Subworkflow_SharedState.cs
│   │   │   ├── SampleJsonContext.cs
│   │   │   ├── SampleSmokeTest.cs
│   │   │   ├── SpecializedExecutorSmokeTests.cs
│   │   │   ├── StateKeyObjectTests.cs
│   │   │   ├── StateManagerTests.cs
│   │   │   ├── StreamingAggregatorsTests.cs
│   │   │   ├── SubstitutionVisitor.cs
│   │   │   ├── TestEchoAgent.cs
│   │   │   ├── TestJsonContext.cs
│   │   │   ├── TestJsonSerializable.cs
│   │   │   ├── TestReplayAgent.cs
│   │   │   ├── TestRequestAgent.cs
│   │   │   ├── TestRunContext.cs
│   │   │   ├── TestRunState.cs
│   │   │   ├── TestWorkflowContext.cs
│   │   │   ├── TestingExecutor.cs
│   │   │   ├── ValidationExtensions.cs
│   │   │   ├── WorkflowBuilderSmokeTests.cs
│   │   │   ├── WorkflowHostSmokeTests.cs
│   │   │   ├── WorkflowRunActivityStopTests.cs
│   │   │   └── WorkflowVisualizerTests.cs
│   │   ├── OpenAIAssistant.IntegrationTests/
│   │   │   ├── OpenAIAssistant.IntegrationTests.csproj
│   │   │   ├── OpenAIAssistantChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIAssistantChatClientAgentRunTests.cs
│   │   │   ├── OpenAIAssistantClientExtensionsTests.cs
│   │   │   ├── OpenAIAssistantFixture.cs
│   │   │   ├── OpenAIAssistantIRunTests.cs
│   │   │   ├── OpenAIAssistantRunStreamingTests.cs
│   │   │   └── OpenAIAssistantStructuredOutputRunTests.cs
│   │   ├── OpenAIChatCompletion.IntegrationTests/
│   │   │   ├── OpenAIChatCompletion.IntegrationTests.csproj
│   │   │   ├── OpenAIChatCompletionChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIChatCompletionChatClientAgentRunTests.cs
│   │   │   ├── OpenAIChatCompletionFixture.cs
│   │   │   ├── OpenAIChatCompletionRunStreamingTests.cs
│   │   │   ├── OpenAIChatCompletionRunTests.cs
│   │   │   └── OpenAIChatCompletionStructuredOutputRunTests.cs
│   │   ├── OpenAIResponse.IntegrationTests/
│   │   │   ├── OpenAIResponse.IntegrationTests.csproj
│   │   │   ├── OpenAIResponseChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIResponseChatClientAgentRunTests.cs
│   │   │   ├── OpenAIResponseFixture.cs
│   │   │   ├── OpenAIResponseRunStreamingTests.cs
│   │   │   ├── OpenAIResponseRunTests.cs
│   │   │   └── OpenAIResponseStructuredOutputRunTests.cs
│   │   └── coverage.runsettings
│   ├── wf-code-gen-impact.md
│   ├── wf-source-gen-bp.md
│   └── wf-source-gen-changes.md
├── python/
│   ├── .cspell.json
│   ├── .github/
│   │   ├── instructions/
│   │   │   └── python.instructions.md
│   │   └── skills/
│   │       ├── python-code-quality/
│   │       │   └── SKILL.md
│   │       ├── python-development/
│   │       │   └── SKILL.md
│   │       ├── python-package-management/
│   │       │   └── SKILL.md
│   │       ├── python-samples/
│   │       │   └── SKILL.md
│   │       └── python-testing/
│   │           └── SKILL.md
│   ├── .pre-commit-config.yaml
│   ├── .vscode/
│   │   ├── launch.json
│   │   ├── settings.json
│   │   └── tasks.json
│   ├── AGENTS.md
│   ├── CHANGELOG.md
│   ├── CODING_STANDARD.md
│   ├── DEV_SETUP.md
│   ├── LICENSE
│   ├── README.md
│   ├── agent_framework_meta/
│   │   └── __init__.py
│   ├── devsetup.sh
│   ├── packages/
│   │   ├── a2a/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_a2a/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_a2a_agent.py
│   │   ├── ag-ui/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_ag_ui/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agent.py
│   │   │   │   ├── _agent_run.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _endpoint.py
│   │   │   │   ├── _event_converters.py
│   │   │   │   ├── _http_service.py
│   │   │   │   ├── _message_adapters.py
│   │   │   │   ├── _orchestration/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _helpers.py
│   │   │   │   │   ├── _predictive_state.py
│   │   │   │   │   └── _tooling.py
│   │   │   │   ├── _run_common.py
│   │   │   │   ├── _types.py
│   │   │   │   ├── _utils.py
│   │   │   │   ├── _workflow.py
│   │   │   │   ├── _workflow_run.py
│   │   │   │   └── py.typed
│   │   │   ├── agent_framework_ag_ui_examples/
│   │   │   │   ├── .vscode/
│   │   │   │   │   └── settings.json
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── agents/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── document_writer_agent.py
│   │   │   │   │   ├── human_in_the_loop_agent.py
│   │   │   │   │   ├── recipe_agent.py
│   │   │   │   │   ├── research_assistant_agent.py
│   │   │   │   │   ├── simple_agent.py
│   │   │   │   │   ├── subgraphs_agent.py
│   │   │   │   │   ├── task_planner_agent.py
│   │   │   │   │   ├── task_steps_agent.py
│   │   │   │   │   ├── ui_generator_agent.py
│   │   │   │   │   └── weather_agent.py
│   │   │   │   └── server/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── api/
│   │   │   │       │   └── backend_tool_rendering.py
│   │   │   │       └── main.py
│   │   │   ├── getting_started/
│   │   │   │   ├── README.md
│   │   │   │   ├── client.py
│   │   │   │   ├── client_advanced.py
│   │   │   │   ├── client_with_agent.py
│   │   │   │   └── server.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── ag_ui/
│   │   │           ├── conftest.py
│   │   │           ├── event_stream.py
│   │   │           ├── golden/
│   │   │           │   ├── __init__.py
│   │   │           │   ├── conftest.py
│   │   │           │   ├── test_scenario_agentic_chat.py
│   │   │           │   ├── test_scenario_backend_tools.py
│   │   │           │   ├── test_scenario_generative_ui_agent.py
│   │   │           │   ├── test_scenario_generative_ui_tool.py
│   │   │           │   ├── test_scenario_hitl.py
│   │   │           │   ├── test_scenario_predictive_state.py
│   │   │           │   ├── test_scenario_shared_state.py
│   │   │           │   ├── test_scenario_subgraphs.py
│   │   │           │   └── test_scenario_workflow.py
│   │   │           ├── sse_helpers.py
│   │   │           ├── test_ag_ui_client.py
│   │   │           ├── test_agent_wrapper_comprehensive.py
│   │   │           ├── test_approval_result_event.py
│   │   │           ├── test_endpoint.py
│   │   │           ├── test_event_converters.py
│   │   │           ├── test_helpers.py
│   │   │           ├── test_http_round_trip.py
│   │   │           ├── test_http_service.py
│   │   │           ├── test_message_adapters.py
│   │   │           ├── test_message_hygiene.py
│   │   │           ├── test_multi_turn.py
│   │   │           ├── test_predictive_state.py
│   │   │           ├── test_public_exports.py
│   │   │           ├── test_run.py
│   │   │           ├── test_run_common.py
│   │   │           ├── test_service_thread_id.py
│   │   │           ├── test_structured_output.py
│   │   │           ├── test_subgraphs_example_agent.py
│   │   │           ├── test_tooling.py
│   │   │           ├── test_types.py
│   │   │           ├── test_utils.py
│   │   │           ├── test_workflow_agent.py
│   │   │           └── test_workflow_run.py
│   │   ├── anthropic/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_anthropic/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _chat_client.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       └── test_anthropic_client.py
│   │   ├── azure-ai/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_ai/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agent_provider.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _embedding_client.py
│   │   │   │   ├── _foundry_memory_provider.py
│   │   │   │   ├── _project_provider.py
│   │   │   │   ├── _shared.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── azure_ai/
│   │   │       │   └── test_azure_ai_inference_embedding_client.py
│   │   │       ├── conftest.py
│   │   │       ├── test_agent_provider.py
│   │   │       ├── test_azure_ai_agent_client.py
│   │   │       ├── test_azure_ai_client.py
│   │   │       ├── test_foundry_memory_provider.py
│   │   │       ├── test_provider.py
│   │   │       └── test_shared.py
│   │   ├── azure-ai-search/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_ai_search/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _context_provider.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_aisearch_context_provider.py
│   │   ├── azure-cosmos/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_cosmos/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _history_provider.py
│   │   │   ├── pyproject.toml
│   │   │   ├── samples/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   └── cosmos_history_provider.py
│   │   │   └── tests/
│   │   │       └── test_cosmos_history_provider.py
│   │   ├── azurefunctions/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azurefunctions/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _app.py
│   │   │   │   ├── _context.py
│   │   │   │   ├── _entities.py
│   │   │   │   ├── _errors.py
│   │   │   │   ├── _orchestration.py
│   │   │   │   ├── _serialization.py
│   │   │   │   ├── _workflow.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── integration_tests/
│   │   │       │   ├── README.md
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_01_single_agent.py
│   │   │       │   ├── test_02_multi_agent.py
│   │   │       │   ├── test_03_reliable_streaming.py
│   │   │       │   ├── test_04_single_agent_orchestration_chaining.py
│   │   │       │   ├── test_05_multi_agent_orchestration_concurrency.py
│   │   │       │   ├── test_06_multi_agent_orchestration_conditionals.py
│   │   │       │   ├── test_07_single_agent_orchestration_hitl.py
│   │   │       │   ├── test_09_workflow_shared_state.py
│   │   │       │   ├── test_10_workflow_no_shared_state.py
│   │   │       │   ├── test_11_workflow_parallel.py
│   │   │       │   └── test_12_workflow_hitl.py
│   │   │       ├── test_app.py
│   │   │       ├── test_entities.py
│   │   │       ├── test_errors.py
│   │   │       ├── test_func_utils.py
│   │   │       ├── test_multi_agent.py
│   │   │       ├── test_orchestration.py
│   │   │       └── test_workflow.py
│   │   ├── bedrock/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_bedrock/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   └── _embedding_client.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── bedrock/
│   │   │       │   └── test_bedrock_embedding_client.py
│   │   │       ├── test_bedrock_client.py
│   │   │       └── test_bedrock_settings.py
│   │   ├── chatkit/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_chatkit/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _converter.py
│   │   │   │   ├── _streaming.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── test_converter.py
│   │   │       └── test_streaming.py
│   │   ├── claude/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_claude/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_claude_agent.py
│   │   ├── copilotstudio/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_copilotstudio/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _acquire_token.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       ├── test_acquire_token.py
│   │   │       └── test_copilot_agent.py
│   │   ├── core/
│   │   │   ├── .vscode/
│   │   │   │   └── launch.json
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agents.py
│   │   │   │   ├── _clients.py
│   │   │   │   ├── _compaction.py
│   │   │   │   ├── _docstrings.py
│   │   │   │   ├── _mcp.py
│   │   │   │   ├── _middleware.py
│   │   │   │   ├── _serialization.py
│   │   │   │   ├── _sessions.py
│   │   │   │   ├── _settings.py
│   │   │   │   ├── _skills.py
│   │   │   │   ├── _telemetry.py
│   │   │   │   ├── _tools.py
│   │   │   │   ├── _types.py
│   │   │   │   ├── _workflows/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _agent.py
│   │   │   │   │   ├── _agent_executor.py
│   │   │   │   │   ├── _agent_utils.py
│   │   │   │   │   ├── _checkpoint.py
│   │   │   │   │   ├── _checkpoint_encoding.py
│   │   │   │   │   ├── _const.py
│   │   │   │   │   ├── _conversation_history.py
│   │   │   │   │   ├── _edge.py
│   │   │   │   │   ├── _edge_runner.py
│   │   │   │   │   ├── _events.py
│   │   │   │   │   ├── _executor.py
│   │   │   │   │   ├── _function_executor.py
│   │   │   │   │   ├── _message_utils.py
│   │   │   │   │   ├── _model_utils.py
│   │   │   │   │   ├── _request_info_mixin.py
│   │   │   │   │   ├── _runner.py
│   │   │   │   │   ├── _runner_context.py
│   │   │   │   │   ├── _state.py
│   │   │   │   │   ├── _typing_utils.py
│   │   │   │   │   ├── _validation.py
│   │   │   │   │   ├── _viz.py
│   │   │   │   │   ├── _workflow.py
│   │   │   │   │   ├── _workflow_builder.py
│   │   │   │   │   ├── _workflow_context.py
│   │   │   │   │   └── _workflow_executor.py
│   │   │   │   ├── a2a/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── ag_ui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── amazon/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── anthropic/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── azure/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── __init__.pyi
│   │   │   │   │   ├── _assistants_client.py
│   │   │   │   │   ├── _chat_client.py
│   │   │   │   │   ├── _embedding_client.py
│   │   │   │   │   ├── _entra_id_authentication.py
│   │   │   │   │   ├── _responses_client.py
│   │   │   │   │   └── _shared.py
│   │   │   │   ├── chatkit/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── declarative/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── devui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── github/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── lab/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── mem0/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── microsoft/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── observability.py
│   │   │   │   ├── ollama/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── openai/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _assistant_provider.py
│   │   │   │   │   ├── _assistants_client.py
│   │   │   │   │   ├── _chat_client.py
│   │   │   │   │   ├── _embedding_client.py
│   │   │   │   │   ├── _exceptions.py
│   │   │   │   │   ├── _responses_client.py
│   │   │   │   │   └── _shared.py
│   │   │   │   ├── orchestrations/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── py.typed
│   │   │   │   └── redis/
│   │   │   │       ├── __init__.py
│   │   │   │       └── __init__.pyi
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── __init__.py
│   │   │       ├── azure/
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_azure_assistants_client.py
│   │   │       │   ├── test_azure_chat_client.py
│   │   │       │   ├── test_azure_embedding_client.py
│   │   │       │   ├── test_azure_responses_client.py
│   │   │       │   └── test_entra_id_authentication.py
│   │   │       ├── conftest.py
│   │   │       ├── core/
│   │   │       │   ├── __init__.py
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_agents.py
│   │   │       │   ├── test_as_tool_kwargs_propagation.py
│   │   │       │   ├── test_clients.py
│   │   │       │   ├── test_compaction.py
│   │   │       │   ├── test_docstrings.py
│   │   │       │   ├── test_embedding_client.py
│   │   │       │   ├── test_embedding_types.py
│   │   │       │   ├── test_function_invocation_logic.py
│   │   │       │   ├── test_kwargs_propagation_to_ai_function.py
│   │   │       │   ├── test_mcp.py
│   │   │       │   ├── test_middleware.py
│   │   │       │   ├── test_middleware_context_result.py
│   │   │       │   ├── test_middleware_with_agent.py
│   │   │       │   ├── test_middleware_with_chat.py
│   │   │       │   ├── test_observability.py
│   │   │       │   ├── test_serializable_mixin.py
│   │   │       │   ├── test_sessions.py
│   │   │       │   ├── test_settings.py
│   │   │       │   ├── test_skills.py
│   │   │       │   ├── test_telemetry.py
│   │   │       │   ├── test_tools.py
│   │   │       │   ├── test_types.py
│   │   │       │   └── utils.py
│   │   │       ├── openai/
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_assistant_provider.py
│   │   │       │   ├── test_openai_assistants_client.py
│   │   │       │   ├── test_openai_chat_client.py
│   │   │       │   ├── test_openai_chat_client_base.py
│   │   │       │   ├── test_openai_embedding_client.py
│   │   │       │   └── test_openai_responses_client.py
│   │   │       └── workflow/
│   │   │           ├── __init__.py
│   │   │           ├── test_agent_executor.py
│   │   │           ├── test_agent_executor_tool_calls.py
│   │   │           ├── test_agent_run_event_typing.py
│   │   │           ├── test_agent_utils.py
│   │   │           ├── test_checkpoint.py
│   │   │           ├── test_checkpoint_decode.py
│   │   │           ├── test_checkpoint_encode.py
│   │   │           ├── test_checkpoint_validation.py
│   │   │           ├── test_edge.py
│   │   │           ├── test_executor.py
│   │   │           ├── test_executor_future.py
│   │   │           ├── test_full_conversation.py
│   │   │           ├── test_function_executor.py
│   │   │           ├── test_function_executor_future.py
│   │   │           ├── test_request_info_and_response.py
│   │   │           ├── test_request_info_event_rehydrate.py
│   │   │           ├── test_request_info_mixin.py
│   │   │           ├── test_runner.py
│   │   │           ├── test_serialization.py
│   │   │           ├── test_state.py
│   │   │           ├── test_sub_workflow.py
│   │   │           ├── test_typing_utils.py
│   │   │           ├── test_validation.py
│   │   │           ├── test_viz.py
│   │   │           ├── test_workflow.py
│   │   │           ├── test_workflow_agent.py
│   │   │           ├── test_workflow_builder.py
│   │   │           ├── test_workflow_context.py
│   │   │           ├── test_workflow_kwargs.py
│   │   │           ├── test_workflow_observability.py
│   │   │           └── test_workflow_states.py
│   │   ├── declarative/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_declarative/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _loader.py
│   │   │   │   ├── _models.py
│   │   │   │   └── _workflows/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── _declarative_base.py
│   │   │   │       ├── _declarative_builder.py
│   │   │   │       ├── _executors_agents.py
│   │   │   │       ├── _executors_basic.py
│   │   │   │       ├── _executors_control_flow.py
│   │   │   │       ├── _executors_external_input.py
│   │   │   │       ├── _executors_tools.py
│   │   │   │       ├── _factory.py
│   │   │   │       ├── _powerfx_functions.py
│   │   │   │       └── _state.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       ├── test_declarative_loader.py
│   │   │       ├── test_declarative_models.py
│   │   │       ├── test_function_tool_executor.py
│   │   │       ├── test_graph_coverage.py
│   │   │       ├── test_graph_executors.py
│   │   │       ├── test_graph_workflow_integration.py
│   │   │       ├── test_powerfx_functions.py
│   │   │       ├── test_powerfx_yaml_compatibility.py
│   │   │       ├── test_workflow_factory.py
│   │   │       ├── test_workflow_samples_integration.py
│   │   │       └── test_workflow_state.py
│   │   ├── devui/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_devui/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _cli.py
│   │   │   │   ├── _conversations.py
│   │   │   │   ├── _deployment.py
│   │   │   │   ├── _discovery.py
│   │   │   │   ├── _executor.py
│   │   │   │   ├── _mapper.py
│   │   │   │   ├── _openai/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── _executor.py
│   │   │   │   ├── _server.py
│   │   │   │   ├── _session.py
│   │   │   │   ├── _tracing.py
│   │   │   │   ├── _utils.py
│   │   │   │   ├── models/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _discovery_models.py
│   │   │   │   │   └── _openai_custom.py
│   │   │   │   └── ui/
│   │   │   │       ├── assets/
│   │   │   │       │   ├── index.css
│   │   │   │       │   └── index.js
│   │   │   │       └── index.html
│   │   │   ├── dev.md
│   │   │   ├── frontend/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── components.json
│   │   │   │   ├── eslint.config.js
│   │   │   │   ├── index.html
│   │   │   │   ├── package.json
│   │   │   │   ├── src/
│   │   │   │   │   ├── App.css
│   │   │   │   │   ├── App.tsx
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── features/
│   │   │   │   │   │   │   ├── agent/
│   │   │   │   │   │   │   │   ├── agent-details-modal.tsx
│   │   │   │   │   │   │   │   ├── agent-view.tsx
│   │   │   │   │   │   │   │   ├── context-inspector.tsx
│   │   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   │   └── message-renderers/
│   │   │   │   │   │   │   │       ├── OpenAIContentRenderer.tsx
│   │   │   │   │   │   │   │       ├── OpenAIMessageRenderer.tsx
│   │   │   │   │   │   │   │       └── index.ts
│   │   │   │   │   │   │   ├── gallery/
│   │   │   │   │   │   │   │   ├── gallery-view.tsx
│   │   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   │   └── setup-instructions-modal.tsx
│   │   │   │   │   │   │   └── workflow/
│   │   │   │   │   │   │       ├── checkpoint-info-modal.tsx
│   │   │   │   │   │   │       ├── execution-timeline.tsx
│   │   │   │   │   │   │       ├── executor-node.tsx
│   │   │   │   │   │   │       ├── hil-timeline-item.tsx
│   │   │   │   │   │   │       ├── index.ts
│   │   │   │   │   │   │       ├── run-workflow-button.tsx
│   │   │   │   │   │   │       ├── schema-form-renderer.tsx
│   │   │   │   │   │   │       ├── self-loop-edge.tsx
│   │   │   │   │   │   │       ├── workflow-details-modal.tsx
│   │   │   │   │   │   │       ├── workflow-flow.tsx
│   │   │   │   │   │   │       ├── workflow-input-form.tsx
│   │   │   │   │   │   │       ├── workflow-session-manager.tsx
│   │   │   │   │   │   │       └── workflow-view.tsx
│   │   │   │   │   │   ├── layout/
│   │   │   │   │   │   │   ├── app-header.tsx
│   │   │   │   │   │   │   ├── debug-panel.tsx
│   │   │   │   │   │   │   ├── deployment-modal.tsx
│   │   │   │   │   │   │   ├── entity-selector.tsx
│   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   └── settings-modal.tsx
│   │   │   │   │   │   ├── mode-toggle.tsx
│   │   │   │   │   │   ├── theme-provider.tsx
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── alert.tsx
│   │   │   │   │   │       ├── attachment-gallery.tsx
│   │   │   │   │   │       ├── badge.tsx
│   │   │   │   │   │       ├── button.tsx
│   │   │   │   │   │       ├── card.tsx
│   │   │   │   │   │       ├── chat-message-input.tsx
│   │   │   │   │   │       ├── checkbox.tsx
│   │   │   │   │   │       ├── dialog.tsx
│   │   │   │   │   │       ├── dropdown-menu.tsx
│   │   │   │   │   │       ├── file-upload.tsx
│   │   │   │   │   │       ├── input.tsx
│   │   │   │   │   │       ├── label.tsx
│   │   │   │   │   │       ├── loading-spinner.tsx
│   │   │   │   │   │       ├── loading-state.tsx
│   │   │   │   │   │       ├── markdown-renderer.tsx
│   │   │   │   │   │       ├── scroll-area.tsx
│   │   │   │   │   │       ├── select.tsx
│   │   │   │   │   │       ├── separator.tsx
│   │   │   │   │   │       ├── switch.tsx
│   │   │   │   │   │       ├── tabs.tsx
│   │   │   │   │   │       ├── textarea.tsx
│   │   │   │   │   │       ├── toast.tsx
│   │   │   │   │   │       └── tooltip.tsx
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── gallery/
│   │   │   │   │   │       ├── index.ts
│   │   │   │   │   │       └── sample-entities.ts
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── use-drag-drop.ts
│   │   │   │   │   │   └── useCancellableRequest.ts
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   └── utils.ts
│   │   │   │   │   ├── main.tsx
│   │   │   │   │   ├── services/
│   │   │   │   │   │   ├── api.ts
│   │   │   │   │   │   └── streaming-state.ts
│   │   │   │   │   ├── stores/
│   │   │   │   │   │   ├── devuiStore.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── agent-framework.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── openai.ts
│   │   │   │   │   │   └── workflow.ts
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── simple-layout.ts
│   │   │   │   │   │   └── workflow-utils.ts
│   │   │   │   │   └── vite-env.d.ts
│   │   │   │   ├── tsconfig.app.json
│   │   │   │   ├── tsconfig.json
│   │   │   │   ├── tsconfig.node.json
│   │   │   │   └── vite.config.ts
│   │   │   ├── pyproject.toml
│   │   │   ├── samples/
│   │   │   │   ├── README.md
│   │   │   │   └── __init__.py
│   │   │   └── tests/
│   │   │       └── devui/
│   │   │           ├── capture_messages.py
│   │   │           ├── conftest.py
│   │   │           ├── test_approval_validation.py
│   │   │           ├── test_checkpoints.py
│   │   │           ├── test_cleanup_hooks.py
│   │   │           ├── test_conversations.py
│   │   │           ├── test_discovery.py
│   │   │           ├── test_execution.py
│   │   │           ├── test_mapper.py
│   │   │           ├── test_multimodal_workflow.py
│   │   │           ├── test_openai_sdk_integration.py
│   │   │           ├── test_schema_generation.py
│   │   │           └── test_server.py
│   │   ├── durabletask/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_durabletask/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _callbacks.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _constants.py
│   │   │   │   ├── _durable_agent_state.py
│   │   │   │   ├── _entities.py
│   │   │   │   ├── _executors.py
│   │   │   │   ├── _models.py
│   │   │   │   ├── _orchestration_context.py
│   │   │   │   ├── _response_utils.py
│   │   │   │   ├── _shim.py
│   │   │   │   ├── _worker.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── integration_tests/
│   │   │       │   ├── README.md
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_01_dt_single_agent.py
│   │   │       │   ├── test_02_dt_multi_agent.py
│   │   │       │   ├── test_03_dt_single_agent_streaming.py
│   │   │       │   ├── test_04_dt_single_agent_orchestration_chaining.py
│   │   │       │   ├── test_05_dt_multi_agent_orchestration_concurrency.py
│   │   │       │   ├── test_06_dt_multi_agent_orchestration_conditionals.py
│   │   │       │   └── test_07_dt_single_agent_orchestration_hitl.py
│   │   │       ├── test_agent_session_id.py
│   │   │       ├── test_client.py
│   │   │       ├── test_durable_agent_state.py
│   │   │       ├── test_durable_entities.py
│   │   │       ├── test_executors.py
│   │   │       ├── test_models.py
│   │   │       ├── test_orchestration_context.py
│   │   │       ├── test_shim.py
│   │   │       └── test_worker.py
│   │   ├── foundry_local/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_foundry_local/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _foundry_local_client.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       └── test_foundry_local_client.py
│   │   ├── github_copilot/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_github_copilot/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_github_copilot_agent.py
│   │   ├── lab/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── gaia/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_framework_lab_gaia/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _types.py
│   │   │   │   │   ├── gaia.py
│   │   │   │   │   └── py.typed
│   │   │   │   ├── samples/
│   │   │   │   │   ├── azure_ai_agent.py
│   │   │   │   │   ├── gaia_sample.py
│   │   │   │   │   └── openai_agent.py
│   │   │   │   └── tests/
│   │   │   │       └── test_gaia.py
│   │   │   ├── lightning/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_framework_lab_lightning/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── py.typed
│   │   │   │   ├── samples/
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── math/
│   │   │   │   │   │       ├── test.jsonl
│   │   │   │   │   │       └── train.jsonl
│   │   │   │   │   ├── train_math_agent.py
│   │   │   │   │   └── train_tau2_agent.py
│   │   │   │   └── tests/
│   │   │   │       └── test_lightning.py
│   │   │   ├── namespace/
│   │   │   │   └── agent_framework/
│   │   │   │       ├── __init__.py
│   │   │   │       └── lab/
│   │   │   │           ├── __init__.py
│   │   │   │           ├── gaia/
│   │   │   │           │   └── __init__.py
│   │   │   │           ├── lightning/
│   │   │   │           │   └── __init__.py
│   │   │   │           └── tau2/
│   │   │   │               └── __init__.py
│   │   │   ├── pyproject.toml
│   │   │   └── tau2/
│   │   │       ├── README.md
│   │   │       ├── agent_framework_lab_tau2/
│   │   │       │   ├── __init__.py
│   │   │       │   ├── _message_utils.py
│   │   │       │   ├── _sliding_window.py
│   │   │       │   ├── _tau2_utils.py
│   │   │       │   ├── py.typed
│   │   │       │   └── runner.py
│   │   │       ├── samples/
│   │   │       │   └── run_benchmark.py
│   │   │       └── tests/
│   │   │           ├── test_message_utils.py
│   │   │           ├── test_sliding_window.py
│   │   │           └── test_tau2_utils.py
│   │   ├── mem0/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_mem0/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _context_provider.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_mem0_context_provider.py
│   │   ├── ollama/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_ollama/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   ├── _embedding_client.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── ollama/
│   │   │       │   └── test_ollama_embedding_client.py
│   │   │       └── test_ollama_chat_client.py
│   │   ├── orchestrations/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_orchestrations/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _base_group_chat_orchestrator.py
│   │   │   │   ├── _concurrent.py
│   │   │   │   ├── _group_chat.py
│   │   │   │   ├── _handoff.py
│   │   │   │   ├── _magentic.py
│   │   │   │   ├── _orchestration_request_info.py
│   │   │   │   ├── _orchestration_state.py
│   │   │   │   ├── _orchestrator_helpers.py
│   │   │   │   ├── _sequential.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── test_concurrent.py
│   │   │       ├── test_group_chat.py
│   │   │       ├── test_handoff.py
│   │   │       ├── test_magentic.py
│   │   │       ├── test_orchestration_request_info.py
│   │   │       └── test_sequential.py
│   │   ├── purview/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_purview/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _cache.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _exceptions.py
│   │   │   │   ├── _middleware.py
│   │   │   │   ├── _models.py
│   │   │   │   ├── _processor.py
│   │   │   │   └── _settings.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── purview/
│   │   │           ├── conftest.py
│   │   │           ├── test_cache.py
│   │   │           ├── test_chat_middleware.py
│   │   │           ├── test_exceptions.py
│   │   │           ├── test_middleware.py
│   │   │           ├── test_processor.py
│   │   │           ├── test_purview_client.py
│   │   │           ├── test_purview_models.py
│   │   │           └── test_settings.py
│   │   └── redis/
│   │       ├── AGENTS.md
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── agent_framework_redis/
│   │       │   ├── __init__.py
│   │       │   ├── _context_provider.py
│   │       │   └── _history_provider.py
│   │       ├── pyproject.toml
│   │       └── tests/
│   │           └── test_providers.py
│   ├── pyproject.toml
│   ├── pyrightconfig.samples.json
│   ├── pyrightconfig.samples.py310.json
│   ├── samples/
│   │   ├── 01-get-started/
│   │   │   ├── 01_hello_agent.py
│   │   │   ├── 02_add_tools.py
│   │   │   ├── 03_multi_turn.py
│   │   │   ├── 04_memory.py
│   │   │   ├── 05_first_workflow.py
│   │   │   ├── 06_host_your_agent.py
│   │   │   └── README.md
│   │   ├── 02-agents/
│   │   │   ├── __init__.py
│   │   │   ├── auto_retry.py
│   │   │   ├── background_responses.py
│   │   │   ├── chat_client/
│   │   │   │   ├── README.md
│   │   │   │   ├── built_in_chat_clients.py
│   │   │   │   ├── chat_response_cancellation.py
│   │   │   │   └── custom_chat_client.py
│   │   │   ├── compaction/
│   │   │   │   ├── README.md
│   │   │   │   ├── advanced.py
│   │   │   │   ├── agent_client_overrides.py
│   │   │   │   ├── basics.py
│   │   │   │   ├── compaction_provider.py
│   │   │   │   ├── custom.py
│   │   │   │   └── tiktoken_tokenizer.py
│   │   │   ├── context_providers/
│   │   │   │   ├── azure_ai_foundry_memory.py
│   │   │   │   ├── azure_ai_search/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_with_search_context_agentic.py
│   │   │   │   │   └── azure_ai_with_search_context_semantic.py
│   │   │   │   ├── mem0/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mem0_basic.py
│   │   │   │   │   ├── mem0_oss.py
│   │   │   │   │   └── mem0_sessions.py
│   │   │   │   ├── redis/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_redis_conversation.py
│   │   │   │   │   ├── redis_basics.py
│   │   │   │   │   ├── redis_conversation.py
│   │   │   │   │   └── redis_sessions.py
│   │   │   │   └── simple_context_provider.py
│   │   │   ├── conversations/
│   │   │   │   ├── custom_history_provider.py
│   │   │   │   ├── redis_history_provider.py
│   │   │   │   └── suspend_resume_session.py
│   │   │   ├── declarative/
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_openai_responses_agent.py
│   │   │   │   ├── get_weather_agent.py
│   │   │   │   ├── inline_yaml.py
│   │   │   │   ├── mcp_tool_yaml.py
│   │   │   │   ├── microsoft_learn_agent.py
│   │   │   │   └── openai_responses_agent.py
│   │   │   ├── devui/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_responses_agent/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   ├── declarative/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── workflow.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── fanout_workflow/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── workflow.py
│   │   │   │   ├── foundry_agent/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   ├── in_memory_mode.py
│   │   │   │   ├── spam_workflow/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── workflow.py
│   │   │   │   ├── weather_agent_azure/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   └── workflow_agents/
│   │   │   │       ├── __init__.py
│   │   │   │       └── workflow.py
│   │   │   ├── embeddings/
│   │   │   │   ├── azure_ai_inference_embeddings.py
│   │   │   │   ├── azure_openai_embeddings.py
│   │   │   │   └── openai_embeddings.py
│   │   │   ├── mcp/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_as_mcp_server.py
│   │   │   │   ├── mcp_api_key_auth.py
│   │   │   │   └── mcp_github_pat.py
│   │   │   ├── middleware/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_and_run_level_middleware.py
│   │   │   │   ├── chat_middleware.py
│   │   │   │   ├── class_based_middleware.py
│   │   │   │   ├── decorator_middleware.py
│   │   │   │   ├── exception_handling_with_middleware.py
│   │   │   │   ├── function_based_middleware.py
│   │   │   │   ├── middleware_termination.py
│   │   │   │   ├── override_result_with_middleware.py
│   │   │   │   ├── runtime_context_delegation.py
│   │   │   │   ├── session_behavior_middleware.py
│   │   │   │   ├── shared_state_middleware.py
│   │   │   │   └── usage_tracking_middleware.py
│   │   │   ├── multimodal_input/
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_chat_multimodal.py
│   │   │   │   ├── azure_responses_multimodal.py
│   │   │   │   └── openai_chat_multimodal.py
│   │   │   ├── observability/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── advanced_manual_setup_console_output.py
│   │   │   │   ├── advanced_zero_code.py
│   │   │   │   ├── agent_observability.py
│   │   │   │   ├── agent_with_foundry_tracing.py
│   │   │   │   ├── azure_ai_agent_observability.py
│   │   │   │   ├── configure_otel_providers_with_env_var.py
│   │   │   │   ├── configure_otel_providers_with_parameters.py
│   │   │   │   └── workflow_observability.py
│   │   │   ├── providers/
│   │   │   │   ├── README.md
│   │   │   │   ├── amazon/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── bedrock_chat_client.py
│   │   │   │   ├── anthropic/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── anthropic_advanced.py
│   │   │   │   │   ├── anthropic_basic.py
│   │   │   │   │   ├── anthropic_claude_basic.py
│   │   │   │   │   ├── anthropic_claude_with_mcp.py
│   │   │   │   │   ├── anthropic_claude_with_multiple_permissions.py
│   │   │   │   │   ├── anthropic_claude_with_session.py
│   │   │   │   │   ├── anthropic_claude_with_shell.py
│   │   │   │   │   ├── anthropic_claude_with_tools.py
│   │   │   │   │   ├── anthropic_claude_with_url.py
│   │   │   │   │   ├── anthropic_foundry.py
│   │   │   │   │   ├── anthropic_skills.py
│   │   │   │   │   └── anthropic_with_shell.py
│   │   │   │   ├── azure_ai/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_basic.py
│   │   │   │   │   ├── azure_ai_provider_methods.py
│   │   │   │   │   ├── azure_ai_use_latest_version.py
│   │   │   │   │   ├── azure_ai_with_agent_as_tool.py
│   │   │   │   │   ├── azure_ai_with_agent_to_agent.py
│   │   │   │   │   ├── azure_ai_with_application_endpoint.py
│   │   │   │   │   ├── azure_ai_with_azure_ai_search.py
│   │   │   │   │   ├── azure_ai_with_bing_custom_search.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding.py
│   │   │   │   │   ├── azure_ai_with_browser_automation.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_download.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_generation.py
│   │   │   │   │   ├── azure_ai_with_content_filtering.py
│   │   │   │   │   ├── azure_ai_with_existing_agent.py
│   │   │   │   │   ├── azure_ai_with_existing_conversation.py
│   │   │   │   │   ├── azure_ai_with_explicit_settings.py
│   │   │   │   │   ├── azure_ai_with_file_search.py
│   │   │   │   │   ├── azure_ai_with_hosted_mcp.py
│   │   │   │   │   ├── azure_ai_with_image_generation.py
│   │   │   │   │   ├── azure_ai_with_local_mcp.py
│   │   │   │   │   ├── azure_ai_with_memory_search.py
│   │   │   │   │   ├── azure_ai_with_microsoft_fabric.py
│   │   │   │   │   ├── azure_ai_with_openapi.py
│   │   │   │   │   ├── azure_ai_with_reasoning.py
│   │   │   │   │   ├── azure_ai_with_response_format.py
│   │   │   │   │   ├── azure_ai_with_runtime_json_schema.py
│   │   │   │   │   ├── azure_ai_with_session.py
│   │   │   │   │   ├── azure_ai_with_sharepoint.py
│   │   │   │   │   └── azure_ai_with_web_search.py
│   │   │   │   ├── azure_ai_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_basic.py
│   │   │   │   │   ├── azure_ai_provider_methods.py
│   │   │   │   │   ├── azure_ai_with_azure_ai_search.py
│   │   │   │   │   ├── azure_ai_with_bing_custom_search.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding_citations.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_generation.py
│   │   │   │   │   ├── azure_ai_with_existing_agent.py
│   │   │   │   │   ├── azure_ai_with_existing_session.py
│   │   │   │   │   ├── azure_ai_with_explicit_settings.py
│   │   │   │   │   ├── azure_ai_with_file_search.py
│   │   │   │   │   ├── azure_ai_with_function_tools.py
│   │   │   │   │   ├── azure_ai_with_hosted_mcp.py
│   │   │   │   │   ├── azure_ai_with_local_mcp.py
│   │   │   │   │   ├── azure_ai_with_multiple_tools.py
│   │   │   │   │   ├── azure_ai_with_openapi_tools.py
│   │   │   │   │   ├── azure_ai_with_response_format.py
│   │   │   │   │   └── azure_ai_with_session.py
│   │   │   │   ├── azure_openai/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_assistants_basic.py
│   │   │   │   │   ├── azure_assistants_with_code_interpreter.py
│   │   │   │   │   ├── azure_assistants_with_existing_assistant.py
│   │   │   │   │   ├── azure_assistants_with_explicit_settings.py
│   │   │   │   │   ├── azure_assistants_with_function_tools.py
│   │   │   │   │   ├── azure_assistants_with_session.py
│   │   │   │   │   ├── azure_chat_client_basic.py
│   │   │   │   │   ├── azure_chat_client_with_explicit_settings.py
│   │   │   │   │   ├── azure_chat_client_with_function_tools.py
│   │   │   │   │   ├── azure_chat_client_with_session.py
│   │   │   │   │   ├── azure_responses_client_basic.py
│   │   │   │   │   ├── azure_responses_client_code_interpreter_files.py
│   │   │   │   │   ├── azure_responses_client_image_analysis.py
│   │   │   │   │   ├── azure_responses_client_with_code_interpreter.py
│   │   │   │   │   ├── azure_responses_client_with_explicit_settings.py
│   │   │   │   │   ├── azure_responses_client_with_file_search.py
│   │   │   │   │   ├── azure_responses_client_with_foundry.py
│   │   │   │   │   ├── azure_responses_client_with_function_tools.py
│   │   │   │   │   ├── azure_responses_client_with_hosted_mcp.py
│   │   │   │   │   ├── azure_responses_client_with_local_mcp.py
│   │   │   │   │   └── azure_responses_client_with_session.py
│   │   │   │   ├── copilotstudio/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── copilotstudio_basic.py
│   │   │   │   │   └── copilotstudio_with_explicit_settings.py
│   │   │   │   ├── custom/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── custom_agent.py
│   │   │   │   ├── foundry_local/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── foundry_local_agent.py
│   │   │   │   ├── github_copilot/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── github_copilot_basic.py
│   │   │   │   │   ├── github_copilot_with_file_operations.py
│   │   │   │   │   ├── github_copilot_with_mcp.py
│   │   │   │   │   ├── github_copilot_with_multiple_permissions.py
│   │   │   │   │   ├── github_copilot_with_session.py
│   │   │   │   │   ├── github_copilot_with_shell.py
│   │   │   │   │   └── github_copilot_with_url.py
│   │   │   │   ├── ollama/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ollama_agent_basic.py
│   │   │   │   │   ├── ollama_agent_reasoning.py
│   │   │   │   │   ├── ollama_chat_client.py
│   │   │   │   │   ├── ollama_chat_multimodal.py
│   │   │   │   │   └── ollama_with_openai_chat_client.py
│   │   │   │   └── openai/
│   │   │   │       ├── README.md
│   │   │   │       ├── openai_assistants_basic.py
│   │   │   │       ├── openai_assistants_provider_methods.py
│   │   │   │       ├── openai_assistants_with_code_interpreter.py
│   │   │   │       ├── openai_assistants_with_existing_assistant.py
│   │   │   │       ├── openai_assistants_with_explicit_settings.py
│   │   │   │       ├── openai_assistants_with_file_search.py
│   │   │   │       ├── openai_assistants_with_function_tools.py
│   │   │   │       ├── openai_assistants_with_response_format.py
│   │   │   │       ├── openai_assistants_with_session.py
│   │   │   │       ├── openai_chat_client_basic.py
│   │   │   │       ├── openai_chat_client_with_explicit_settings.py
│   │   │   │       ├── openai_chat_client_with_function_tools.py
│   │   │   │       ├── openai_chat_client_with_local_mcp.py
│   │   │   │       ├── openai_chat_client_with_runtime_json_schema.py
│   │   │   │       ├── openai_chat_client_with_session.py
│   │   │   │       ├── openai_chat_client_with_web_search.py
│   │   │   │       ├── openai_responses_client_basic.py
│   │   │   │       ├── openai_responses_client_image_analysis.py
│   │   │   │       ├── openai_responses_client_image_generation.py
│   │   │   │       ├── openai_responses_client_reasoning.py
│   │   │   │       ├── openai_responses_client_streaming_image_generation.py
│   │   │   │       ├── openai_responses_client_with_agent_as_tool.py
│   │   │   │       ├── openai_responses_client_with_code_interpreter.py
│   │   │   │       ├── openai_responses_client_with_code_interpreter_files.py
│   │   │   │       ├── openai_responses_client_with_explicit_settings.py
│   │   │   │       ├── openai_responses_client_with_file_search.py
│   │   │   │       ├── openai_responses_client_with_function_tools.py
│   │   │   │       ├── openai_responses_client_with_hosted_mcp.py
│   │   │   │       ├── openai_responses_client_with_local_mcp.py
│   │   │   │       ├── openai_responses_client_with_local_shell.py
│   │   │   │       ├── openai_responses_client_with_runtime_json_schema.py
│   │   │   │       ├── openai_responses_client_with_session.py
│   │   │   │       ├── openai_responses_client_with_shell.py
│   │   │   │       ├── openai_responses_client_with_structured_output.py
│   │   │   │       └── openai_responses_client_with_web_search.py
│   │   │   ├── response_stream.py
│   │   │   ├── skills/
│   │   │   │   ├── README.md
│   │   │   │   ├── code_defined_skill/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── code_defined_skill.py
│   │   │   │   ├── file_based_skill/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── file_based_skill.py
│   │   │   │   │   └── skills/
│   │   │   │   │       └── unit-converter/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── references/
│   │   │   │   │           │   └── CONVERSION_TABLES.md
│   │   │   │   │           └── scripts/
│   │   │   │   │               └── convert.py
│   │   │   │   ├── mixed_skills/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mixed_skills.py
│   │   │   │   │   └── skills/
│   │   │   │   │       └── unit-converter/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── references/
│   │   │   │   │           │   └── CONVERSION_TABLES.md
│   │   │   │   │           └── scripts/
│   │   │   │   │               └── convert.py
│   │   │   │   ├── script_approval/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── script_approval.py
│   │   │   │   └── subprocess_script_runner.py
│   │   │   ├── tools/
│   │   │   │   ├── agent_as_tool_with_session_propagation.py
│   │   │   │   ├── control_total_tool_executions.py
│   │   │   │   ├── function_invocation_configuration.py
│   │   │   │   ├── function_tool_declaration_only.py
│   │   │   │   ├── function_tool_from_dict_with_dependency_injection.py
│   │   │   │   ├── function_tool_recover_from_failures.py
│   │   │   │   ├── function_tool_with_approval.py
│   │   │   │   ├── function_tool_with_approval_and_sessions.py
│   │   │   │   ├── function_tool_with_explicit_schema.py
│   │   │   │   ├── function_tool_with_kwargs.py
│   │   │   │   ├── function_tool_with_max_exceptions.py
│   │   │   │   ├── function_tool_with_max_invocations.py
│   │   │   │   ├── function_tool_with_session_injection.py
│   │   │   │   └── tool_in_class.py
│   │   │   └── typed_options.py
│   │   ├── 03-workflows/
│   │   │   ├── README.md
│   │   │   ├── _start-here/
│   │   │   │   ├── step1_executors_and_edges.py
│   │   │   │   ├── step2_agents_in_a_workflow.py
│   │   │   │   └── step3_streaming.py
│   │   │   ├── agents/
│   │   │   │   ├── azure_ai_agents_streaming.py
│   │   │   │   ├── azure_ai_agents_with_shared_session.py
│   │   │   │   ├── azure_chat_agents_and_executor.py
│   │   │   │   ├── azure_chat_agents_streaming.py
│   │   │   │   ├── azure_chat_agents_tool_calls_with_feedback.py
│   │   │   │   ├── concurrent_workflow_as_agent.py
│   │   │   │   ├── custom_agent_executors.py
│   │   │   │   ├── group_chat_workflow_as_agent.py
│   │   │   │   ├── handoff_workflow_as_agent.py
│   │   │   │   ├── magentic_workflow_as_agent.py
│   │   │   │   ├── sequential_workflow_as_agent.py
│   │   │   │   ├── workflow_as_agent_human_in_the_loop.py
│   │   │   │   ├── workflow_as_agent_kwargs.py
│   │   │   │   ├── workflow_as_agent_reflection_pattern.py
│   │   │   │   └── workflow_as_agent_with_session.py
│   │   │   ├── checkpoint/
│   │   │   │   ├── checkpoint_with_human_in_the_loop.py
│   │   │   │   ├── checkpoint_with_resume.py
│   │   │   │   ├── sub_workflow_checkpoint.py
│   │   │   │   └── workflow_as_agent_checkpoint.py
│   │   │   ├── composition/
│   │   │   │   ├── sub_workflow_basics.py
│   │   │   │   ├── sub_workflow_kwargs.py
│   │   │   │   ├── sub_workflow_parallel_requests.py
│   │   │   │   └── sub_workflow_request_interception.py
│   │   │   ├── control-flow/
│   │   │   │   ├── edge_condition.py
│   │   │   │   ├── multi_selection_edge_group.py
│   │   │   │   ├── sequential_executors.py
│   │   │   │   ├── sequential_streaming.py
│   │   │   │   ├── simple_loop.py
│   │   │   │   ├── switch_case_edge_group.py
│   │   │   │   └── workflow_cancellation.py
│   │   │   ├── declarative/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── agent_to_function_tool/
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── conditional_workflow/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── customer_support/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── main.py
│   │   │   │   │   ├── ticketing_plugin.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── deep_research/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── main.py
│   │   │   │   ├── function_tools/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── human_in_loop/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── invoke_function_tool/
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── marketing/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── simple_workflow/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   └── student_teacher/
│   │   │   │       ├── README.md
│   │   │   │       ├── main.py
│   │   │   │       └── workflow.yaml
│   │   │   ├── human-in-the-loop/
│   │   │   │   ├── agents_with_HITL.py
│   │   │   │   ├── agents_with_approval_requests.py
│   │   │   │   ├── agents_with_declaration_only_tools.py
│   │   │   │   ├── concurrent_request_info.py
│   │   │   │   ├── group_chat_request_info.py
│   │   │   │   ├── guessing_game_with_human_input.py
│   │   │   │   └── sequential_request_info.py
│   │   │   ├── observability/
│   │   │   │   └── executor_io_observation.py
│   │   │   ├── orchestrations/
│   │   │   │   ├── README.md
│   │   │   │   ├── concurrent_agents.py
│   │   │   │   ├── concurrent_custom_agent_executors.py
│   │   │   │   ├── concurrent_custom_aggregator.py
│   │   │   │   ├── group_chat_agent_manager.py
│   │   │   │   ├── group_chat_philosophical_debate.py
│   │   │   │   ├── group_chat_simple_selector.py
│   │   │   │   ├── handoff_autonomous.py
│   │   │   │   ├── handoff_simple.py
│   │   │   │   ├── handoff_with_code_interpreter_file.py
│   │   │   │   ├── handoff_with_tool_approval_checkpoint_resume.py
│   │   │   │   ├── magentic.py
│   │   │   │   ├── magentic_checkpoint.py
│   │   │   │   ├── magentic_human_plan_review.py
│   │   │   │   ├── sequential_agents.py
│   │   │   │   ├── sequential_chain_only_agent_responses.py
│   │   │   │   └── sequential_custom_executors.py
│   │   │   ├── parallelism/
│   │   │   │   ├── aggregate_results_of_different_types.py
│   │   │   │   ├── fan_out_fan_in_edges.py
│   │   │   │   └── map_reduce_and_visualization.py
│   │   │   ├── resources/
│   │   │   │   ├── ambiguous_email.txt
│   │   │   │   ├── email.txt
│   │   │   │   ├── long_text.txt
│   │   │   │   └── spam.txt
│   │   │   ├── state-management/
│   │   │   │   ├── state_with_agents.py
│   │   │   │   └── workflow_kwargs.py
│   │   │   ├── tool-approval/
│   │   │   │   ├── concurrent_builder_tool_approval.py
│   │   │   │   ├── group_chat_builder_tool_approval.py
│   │   │   │   └── sequential_builder_tool_approval.py
│   │   │   └── visualization/
│   │   │       └── concurrent_with_visualization.py
│   │   ├── 04-hosting/
│   │   │   ├── a2a/
│   │   │   │   ├── README.md
│   │   │   │   ├── a2a_server.http
│   │   │   │   ├── a2a_server.py
│   │   │   │   ├── agent_definitions.py
│   │   │   │   ├── agent_executor.py
│   │   │   │   ├── agent_with_a2a.py
│   │   │   │   └── invoice_data.py
│   │   │   ├── azure_functions/
│   │   │   │   ├── 01_single_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 02_multi_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 03_reliable_streaming/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   ├── redis_stream_response_handler.py
│   │   │   │   │   ├── requirements.txt
│   │   │   │   │   └── tools.py
│   │   │   │   ├── 04_single_agent_orchestration_chaining/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 05_multi_agent_orchestration_concurrency/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 06_multi_agent_orchestration_conditionals/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 07_single_agent_orchestration_hitl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 08_mcp_server/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 09_workflow_shared_state/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 10_workflow_no_shared_state/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 11_workflow_parallel/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 12_workflow_hitl/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── README.md
│   │   │   └── durabletask/
│   │   │       ├── 01_single_agent/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 02_multi_agent/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 03_single_agent_streaming/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── redis_stream_response_handler.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   ├── tools.py
│   │   │       │   └── worker.py
│   │   │       ├── 04_single_agent_orchestration_chaining/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 05_multi_agent_orchestration_concurrency/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 06_multi_agent_orchestration_conditionals/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 07_single_agent_orchestration_hitl/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       └── README.md
│   │   ├── 05-end-to-end/
│   │   │   ├── chatkit-integration/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── app.py
│   │   │   │   ├── attachment_store.py
│   │   │   │   ├── frontend/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── package.json
│   │   │   │   │   ├── src/
│   │   │   │   │   │   ├── App.tsx
│   │   │   │   │   │   ├── main.tsx
│   │   │   │   │   │   └── vite-env.d.ts
│   │   │   │   │   ├── tsconfig.json
│   │   │   │   │   ├── tsconfig.node.json
│   │   │   │   │   └── vite.config.ts
│   │   │   │   ├── store.py
│   │   │   │   └── weather_widget.py
│   │   │   ├── evaluation/
│   │   │   │   ├── red_teaming/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── red_team_agent_sample.py
│   │   │   │   └── self_reflection/
│   │   │   │       ├── README.md
│   │   │   │       ├── resources/
│   │   │   │       │   └── suboptimal_groundedness_prompts.jsonl
│   │   │   │       └── self_reflection.py
│   │   │   ├── hosted_agents/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_with_hosted_mcp/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agent_with_local_tools/
│   │   │   │   │   ├── .dockerignore
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agent_with_text_search_rag/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agents_in_workflow/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── writer_reviewer_agents_in_workflow/
│   │   │   │       ├── .dockerignore
│   │   │   │       ├── Dockerfile
│   │   │   │       ├── README.md
│   │   │   │       ├── agent.yaml
│   │   │   │       ├── main.py
│   │   │   │       └── requirements.txt
│   │   │   ├── m365-agent/
│   │   │   │   ├── README.md
│   │   │   │   └── m365_agent_demo/
│   │   │   │       └── app.py
│   │   │   ├── purview_agent/
│   │   │   │   ├── README.md
│   │   │   │   └── sample_purview_agent.py
│   │   │   └── workflow_evaluation/
│   │   │       ├── README.md
│   │   │       ├── _tools.py
│   │   │       ├── create_workflow.py
│   │   │       └── run_evaluation.py
│   │   ├── AGENTS.md
│   │   ├── README.md
│   │   ├── SAMPLE_GUIDELINES.md
│   │   ├── __init__.py
│   │   ├── autogen-migration/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── orchestrations/
│   │   │   │   ├── 01_round_robin_group_chat.py
│   │   │   │   ├── 02_selector_group_chat.py
│   │   │   │   ├── 03_swarm.py
│   │   │   │   └── 04_magentic_one.py
│   │   │   ├── pyrightconfig.json
│   │   │   └── single_agent/
│   │   │       ├── 01_basic_assistant_agent.py
│   │   │       ├── 02_assistant_agent_with_tool.py
│   │   │       ├── 03_assistant_agent_thread_and_stream.py
│   │   │       └── 04_agent_as_tool.py
│   │   ├── demos/
│   │   │   └── ag_ui_workflow_handoff/
│   │   │       ├── README.md
│   │   │       ├── backend/
│   │   │       │   └── server.py
│   │   │       └── frontend/
│   │   │           ├── index.html
│   │   │           ├── package.json
│   │   │           ├── src/
│   │   │           │   ├── App.tsx
│   │   │           │   ├── main.tsx
│   │   │           │   ├── styles.css
│   │   │           │   └── vite-env.d.ts
│   │   │           ├── tsconfig.json
│   │   │           ├── tsconfig.node.json
│   │   │           ├── tsconfig.node.tsbuildinfo
│   │   │           ├── tsconfig.tsbuildinfo
│   │   │           ├── vite.config.d.ts
│   │   │           ├── vite.config.js
│   │   │           └── vite.config.ts
│   │   ├── semantic-kernel-migration/
│   │   │   ├── README.md
│   │   │   ├── azure_ai_agent/
│   │   │   │   ├── 01_basic_azure_ai_agent.py
│   │   │   │   ├── 02_azure_ai_agent_with_code_interpreter.py
│   │   │   │   └── 03_azure_ai_agent_threads_and_followups.py
│   │   │   ├── chat_completion/
│   │   │   │   ├── 01_basic_chat_completion.py
│   │   │   │   ├── 02_chat_completion_with_tool.py
│   │   │   │   └── 03_chat_completion_thread_and_stream.py
│   │   │   ├── copilot_studio/
│   │   │   │   ├── 01_basic_copilot_studio_agent.py
│   │   │   │   └── 02_copilot_studio_streaming.py
│   │   │   ├── openai_assistant/
│   │   │   │   ├── 01_basic_openai_assistant.py
│   │   │   │   ├── 02_openai_assistant_with_code_interpreter.py
│   │   │   │   └── 03_openai_assistant_function_tool.py
│   │   │   ├── openai_responses/
│   │   │   │   ├── 01_basic_responses_agent.py
│   │   │   │   ├── 02_responses_agent_with_tool.py
│   │   │   │   └── 03_responses_agent_structured_output.py
│   │   │   ├── orchestrations/
│   │   │   │   ├── concurrent_basic.py
│   │   │   │   ├── group_chat.py
│   │   │   │   ├── handoff.py
│   │   │   │   ├── magentic.py
│   │   │   │   └── sequential.py
│   │   │   └── processes/
│   │   │       ├── fan_out_fan_in_process.py
│   │   │       └── nested_process.py
│   │   └── shared/
│   │       └── resources/
│   │           ├── countries.json
│   │           └── weather.json
│   ├── scripts/
│   │   ├── __init__.py
│   │   ├── check_md_code_blocks.py
│   │   ├── dependencies/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── _dependency_bounds_lower_impl.py
│   │   │   ├── _dependency_bounds_runtime.py
│   │   │   ├── _dependency_bounds_upper_impl.py
│   │   │   ├── add_dependency_to_project.py
│   │   │   ├── upgrade_dev_dependencies.py
│   │   │   └── validate_dependency_bounds.py
│   │   ├── run_tasks_in_changed_packages.py
│   │   ├── run_tasks_in_packages_if_exists.py
│   │   ├── sample_validation/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── const.py
│   │   │   ├── create_dynamic_workflow_executor.py
│   │   │   ├── discovery.py
│   │   │   ├── models.py
│   │   │   ├── report.py
│   │   │   ├── run_dynamic_validation_workflow_executor.py
│   │   │   └── workflow.py
│   │   ├── task_runner.py
│   │   └── workspace_poe_tasks.py
│   ├── shared_tasks.toml
│   └── tests/
│       └── samples/
│           └── getting_started/
│               ├── test_agent_samples.py
│               ├── test_chat_client_samples.py
│               └── test_threads_samples.py
├── schemas/
│   └── durable-agent-entity-state.json
├── wf-source-gen-plan.md
└── workflow-samples/
    ├── CustomerSupport.yaml
    ├── DeepResearch.yaml
    ├── Marketing.yaml
    ├── MathChat.yaml
    └── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .devcontainer/devcontainer.json
================================================
{
  "name": "Python 3",
  "image": "mcr.microsoft.com/devcontainers/python:3.13-bullseye",
  "features": {
    "ghcr.io/va-h/devcontainers-features/uv:1": {},
    "ghcr.io/devcontainers/features/azure-cli:1.2.8": {}
  },
  "postCreateCommand": "bash ./devsetup.sh",
  "workspaceFolder": "/workspaces/agent-framework/python/",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-windows-ai-studio.windows-ai-studio",
        "littlefoxteam.vscode-python-test-adapter"
      ]
    }
  }
}

================================================
FILE: .devcontainer/dotnet/devcontainer.json
================================================
{
  "name": "C# (.NET)",
  "image": "mcr.microsoft.com/devcontainers/dotnet",
  "features": {
    "ghcr.io/devcontainers/features/azure-cli:1.2.9": {},
    "ghcr.io/devcontainers/features/docker-in-docker:2": {},
    "ghcr.io/devcontainers/features/github-cli:1": {
      "version": "2"
    },
    "ghcr.io/devcontainers/features/powershell:1": {
      "version": "latest"
    },
    "ghcr.io/azure/azure-dev/azd:0": {
      "version": "latest"
    },
    "ghcr.io/devcontainers/features/dotnet:2": {
      "version": "none",
      "dotnetRuntimeVersions": "10.0",
      "aspNetCoreRuntimeVersions": "10.0"
    },
    "ghcr.io/devcontainers/features/copilot-cli:1": {}
  },
  "workspaceFolder": "/workspaces/agent-framework/dotnet/",
  "customizations": {
    "vscode": {
      "extensions": [
        "GitHub.copilot",
        "GitHub.vscode-github-actions",
        "ms-dotnettools.csdevkit",
        "vscode-icons-team.vscode-icons",
        "ms-windows-ai-studio.windows-ai-studio"
      ]
    }
  }
}

================================================
FILE: .gitattributes
================================================
# Auto-detect text files, ensure they use LF.
* text=auto eol=lf working-tree-encoding=UTF-8
# Bash scripts
*.sh  text eol=lf
*.cmd text eol=crlf


================================================
FILE: .github/.linkspector.yml
================================================
dirs:
  - .
excludedFiles:
  - ./python/CHANGELOG.md
ignorePatterns:
  - pattern: "/github/"
  - pattern: "./actions"
  - pattern: "./blob"
  - pattern: "./issues"
  - pattern: "./discussions"
  - pattern: "./pulls"
  - pattern: "https:\/\/platform.openai.com"
  - pattern: "http:\/\/localhost"
  - pattern: "http:\/\/127.0.0.1"
  - pattern: "https:\/\/localhost"
  - pattern: "https:\/\/127.0.0.1"
  - pattern: "0001-spec.md"
  - pattern: "0001-madr-architecture-decisions.md"
  - pattern: "https://api.powerplatform.com/.default"
  - pattern: "https://your-resource.openai.azure.com/"
  - pattern: "http://host.docker.internal"
  - pattern: "https://openai.github.io/openai-agents-js/openai/agents/classes/"
  - pattern: "https:\/\/dotnet.microsoft.com\/download"
# excludedDirs:
  # Folders which include links to localhost, since it's not ignored with regular expressions
baseUrl: https://github.com/microsoft/agent-framework/
aliveStatusCodes:
  - 200
  - 206
  - 429
  - 500
  - 503
useGitIgnore: true


================================================
FILE: .github/CODEOWNERS
================================================
# Code ownership assignments
# https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

python/packages/azurefunctions/ @microsoft/agentframework-durabletask-developers
python/packages/durabletask/ @microsoft/agentframework-durabletask-developers
python/samples/getting_started/azure_functions/ @microsoft/agentframework-durabletask-developers
python/samples/getting_started/durabletask/ @microsoft/agentframework-durabletask-developers


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
  - name: Documentation
    url: https://aka.ms/agent-framework
    about: Check out the official documentation for guides and API reference.
  - name: Discussions
    url: https://github.com/microsoft/agent-framework/discussions
    about: Ask questions about Agent Framework.


================================================
FILE: .github/ISSUE_TEMPLATE/dotnet-issue.yml
================================================
name: .NET Bug Report
description: Report a bug in the Agent Framework .NET SDK
title: ".NET: [Bug]: "
labels: ["bug", ".NET"]
type: bug
body:
  - type: textarea
    id: description
    attributes:
      label: Description
      description: Please provide a clear and detailed description of the bug.
      placeholder: |
        - What happened?
        - What did you expect to happen?
        - Steps to reproduce the issue
    validations:
      required: true

  - type: textarea
    id: code-sample
    attributes:
      label: Code Sample
      description: If applicable, provide a minimal code sample that demonstrates the issue.
      placeholder: |
        ```csharp
        // Your code here
        ```
      render: markdown
    validations:
      required: false

  - type: textarea
    id: error-messages
    attributes:
      label: Error Messages / Stack Traces
      description: Include any error messages or stack traces you received.
      placeholder: |
        ```
        Paste error messages or stack traces here
        ```
      render: markdown
    validations:
      required: false

  - type: input
    id: dotnet-packages
    attributes:
      label: Package Versions
      description: List the Microsoft.Agents.* packages and versions you are using
      placeholder: "e.g., Microsoft.Agents.AI.Abstractions: 1.0.0, Microsoft.Agents.AI.OpenAI: 1.0.0"
    validations:
      required: true

  - type: input
    id: dotnet-version
    attributes:
      label: .NET Version
      description: What version of .NET are you using?
      placeholder: "e.g., .NET 8.0"
    validations:
      required: false

  - type: textarea
    id: additional-context
    attributes:
      label: Additional Context
      description: Add any other context or screenshots that might be helpful.
      placeholder: "Any additional information..."
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.yml
================================================
name: Feature Request
description: Request a new feature for Microsoft Agent Framework
title: "[Feature]: "
type: feature
body:

  - type: textarea
    id: description
    attributes:
      label: Description
      description: Please describe the feature you'd like and why it would be useful.
      placeholder: |
        Describe the feature you're requesting:
        - What problem does it solve?
        - What would the expected behavior be?
        - Are there any alternatives you've considered?
    validations:
      required: true

  - type: textarea
    id: code-sample
    attributes:
      label: Code Sample
      description: If applicable, provide a code sample showing how you'd like to use this feature.
      placeholder: |
        ```python
        # Your code here
        ```

        or

        ```csharp
        // Your code here
        ```
      render: markdown
    validations:
      required: false

  - type: dropdown
    id: language
    attributes:
      label: Language/SDK
      description: Which language/SDK does this feature apply to?
      options:
        - Both
        - .NET
        - Python
        - Other / Not Applicable
      default: 0
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/python-issue.yml
================================================
name: Python Bug Report
description: Report a bug in the Agent Framework Python SDK
title: "Python: [Bug]: "
labels: ["bug", "Python"]
type: bug
body:
  - type: textarea
    id: description
    attributes:
      label: Description
      description: Please provide a clear and detailed description of the bug.
      placeholder: |
        - What happened?
        - What did you expect to happen?
        - Steps to reproduce the issue
    validations:
      required: true

  - type: textarea
    id: code-sample
    attributes:
      label: Code Sample
      description: If applicable, provide a minimal code sample that demonstrates the issue.
      placeholder: |
        ```python
        # Your code here
        ```
      render: markdown
    validations:
      required: false

  - type: textarea
    id: error-messages
    attributes:
      label: Error Messages / Stack Traces
      description: Include any error messages or stack traces you received.
      placeholder: |
        ```
        Paste error messages or stack traces here
        ```
      render: markdown
    validations:
      required: false

  - type: input
    id: python-packages
    attributes:
      label: Package Versions
      description: List the agent-framework-* packages and versions you are using
      placeholder: "e.g., agent-framework-core: 1.0.0, agent-framework-azure-ai: 1.0.0"
    validations:
      required: true

  - type: input
    id: python-version
    attributes:
      label: Python Version
      description: What version of Python are you using?
      placeholder: "e.g., Python 3.11"
    validations:
      required: false

  - type: textarea
    id: additional-context
    attributes:
      label: Additional Context
      description: Add any other context or screenshots that might be helpful.
      placeholder: "Any additional information..."
    validations:
      required: false


================================================
FILE: .github/actions/azure-functions-integration-setup/action.yml
================================================
name: Azure Functions Integration Test Setup
description: Prepare local emulators and tools for Azure Functions integration tests

runs:
    using: "composite"
    steps:
      - name: Start Durable Task Scheduler Emulator
        shell: bash
        run: |
          if [ "$(docker ps -aq -f name=dts-emulator)" ]; then
            echo "Stopping and removing existing Durable Task Scheduler Emulator"
            docker rm -f dts-emulator
          fi
          echo "Starting Durable Task Scheduler Emulator"
          docker run -d --name dts-emulator -p 8080:8080 -p 8082:8082 -e DTS_USE_DYNAMIC_TASK_HUBS=true mcr.microsoft.com/dts/dts-emulator:latest
          echo "Waiting for Durable Task Scheduler Emulator to be ready"
          timeout 30 bash -c 'until curl --silent http://localhost:8080/healthz; do sleep 1; done'
          echo "Durable Task Scheduler Emulator is ready"
      - name: Start Azurite (Azure Storage emulator)
        shell: bash
        run: |
          if [ "$(docker ps -aq -f name=azurite)" ]; then
            echo "Stopping and removing existing Azurite (Azure Storage emulator)"
            docker rm -f azurite
          fi
          echo "Starting Azurite (Azure Storage emulator)"
          docker run -d --name azurite -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite
          echo "Waiting for Azurite (Azure Storage emulator) to be ready"
          timeout 30 bash -c 'until curl --silent http://localhost:10000/devstoreaccount1; do sleep 1; done'
          echo "Azurite (Azure Storage emulator) is ready"
      - name: Start Redis
        shell: bash
        run: |
          if [ "$(docker ps -aq -f name=redis)" ]; then
            echo "Stopping and removing existing Redis"
            docker rm -f redis
          fi
          echo "Starting Redis"
          docker run -d --name redis -p 6379:6379 redis:latest
          echo "Waiting for Redis to be ready"
          timeout 30 bash -c 'until docker exec redis redis-cli ping | grep -q PONG; do sleep 1; done'
          echo "Redis is ready"
      - name: Install Azure Functions Core Tools
        shell: bash
        run: |
          echo "Installing Azure Functions Core Tools"
          npm install -g azure-functions-core-tools@4 --unsafe-perm true
          func --version


================================================
FILE: .github/actions/python-setup/action.yml
================================================
name: Reusable Setup UV
description: Reusable workflow to setup uv environment

inputs:
    python-version:
      description: The Python version to set up
      required: true
    os:
      description: The operating system to set up
      required: true
    exclude-packages:
      description: Space-separated list of packages to exclude from uv sync
      required: false
      default: ''

runs:
    using: "composite"
    steps:
      - name: Set up uv
        uses: astral-sh/setup-uv@v6
        with:
            version-file: "python/pyproject.toml"
            enable-cache: true
            cache-suffix: ${{ inputs.os }}-${{ inputs.python-version }}
            cache-dependency-glob: "**/uv.lock"
      - name: Exclude incompatible workspace packages
        if: ${{ inputs.exclude-packages != '' }}
        shell: bash
        run: |
          for pkg in ${{ inputs.exclude-packages }}; do
            for f in python/packages/*/pyproject.toml; do
              if grep -q "name = \"$pkg\"" "$f"; then
                pkg_dir=$(dirname "$f" | sed 's|python/||')
                echo "Excluding workspace package: $pkg ($pkg_dir)"
                sed -i.bak '/\[tool\.uv\.workspace\]/a\exclude = ["'"$pkg_dir"'"]' python/pyproject.toml
                sed -i.bak '/'"$pkg"' = { workspace = true }/d' python/pyproject.toml
              fi
            done
          done
      - name: Install the project
        shell: bash
        run: |
          cd python && uv sync --all-packages --all-extras --dev -U --prerelease=if-necessary-or-explicit


================================================
FILE: .github/actions/sample-validation-setup/action.yml
================================================
name: Sample Validation Setup
description: Sets up the environment for sample validation (checkout, Node.js, Copilot CLI, Azure login, Python)

inputs:
  azure-client-id:
    description: Azure Client ID for OIDC login
    required: true
  azure-tenant-id:
    description: Azure Tenant ID for OIDC login
    required: true
  azure-subscription-id:
    description: Azure Subscription ID for OIDC login
    required: true
  python-version:
    description: The Python version to set up
    required: false
    default: "3.12"
  os:
    description: The operating system to set up
    required: false
    default: "Linux"

runs:
  using: "composite"
  steps:
    - name: Set up Node.js environment
      uses: actions/setup-node@v4

    - name: Install Copilot CLI
      shell: bash
      run: npm install -g @github/copilot

    - name: Test Copilot CLI
      shell: bash
      run: copilot -p "What can you do in one sentence?"

    - name: Azure CLI Login
      uses: azure/login@v2
      with:
        client-id: ${{ inputs.azure-client-id }}
        tenant-id: ${{ inputs.azure-tenant-id }}
        subscription-id: ${{ inputs.azure-subscription-id }}

    - name: Set up python and install the project
      uses: ./.github/actions/python-setup
      with:
        python-version: ${{ inputs.python-version }}
        os: ${{ inputs.os }}


================================================
FILE: .github/copilot-instructions.md
================================================
# GitHub Copilot Instructions

Microsoft Agent Framework - a multi-language framework for building, orchestrating, and deploying AI agents.

## Repository Structure

- `python/` - Python implementation → see [python/AGENTS.md](../python/AGENTS.md)
- `dotnet/` - C#/.NET implementation → see [dotnet/AGENTS.md](../dotnet/AGENTS.md)
- `docs/` - Design documents and architectural decision records

## Architectural Decision Records (ADRs)

ADRs in `docs/decisions/` capture significant design decisions and their rationale. They document considered alternatives, trade-offs, and the reasoning behind choices.

**Templates:**
- `adr-template.md` - Full template with detailed sections
- `adr-short-template.md` - Abbreviated template for simpler decisions

When proposing architectural changes, create an ADR to capture options considered and the decision rationale. See [docs/decisions/README.md](../docs/decisions/README.md) for the full process.


================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  # Maintain dependencies for nuget
  - package-ecosystem: "nuget"
    directory: "dotnet/"
    schedule:
      interval: "cron"
      cronjob: "0 8 * * 4,0" # Every Thursday(4) and Sunday(0) at 8:00 UTC
    ignore:
      # For all System.* and Microsoft.Extensions/Bcl.* packages, ignore all major version updates
      - dependency-name: "System.*"
        update-types: ["version-update:semver-major"]
      - dependency-name: "Microsoft.Extensions.*"
        update-types: ["version-update:semver-major"]
      - dependency-name: "Microsoft.Bcl.*"
        update-types: ["version-update:semver-major"]
      - dependency-name: "Moq"
    labels:
      - ".NET"
      - "dependencies"

  # Maintain dependencies for python
  - package-ecosystem: "pip"
    directory: "python/"
    schedule:
      interval: "weekly"
      day: "monday"
    labels:
      - "python"
      - "dependencies"
  - package-ecosystem: "uv"
    directory: "python/"
    schedule:
      interval: "weekly"
      day: "monday"
    labels:
      - "python"
      - "dependencies"

  # Maintain dependencies for github-actions
  - package-ecosystem: "github-actions"
    # Workflow files stored in the
    # default location of `.github/workflows`
    directory: "/"
    schedule:
      interval: "weekly"
      day: "sunday"


================================================
FILE: .github/instructions/durabletask-dotnet.instructions.md
================================================
---
applyTo: "dotnet/src/Microsoft.Agents.AI.DurableTask/**,dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/**"
---

# Durable Task area code instructions

The following guidelines apply to pull requests that modify files under
`dotnet/src/Microsoft.Agents.AI.DurableTask/**` or
`dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/**`:

## CHANGELOG.md

- Each pull request that modifies code should add just one bulleted entry to the `CHANGELOG.md` file containing a change title (usually the PR title) and a link to the PR itself.
- New PRs should be added to the top of the `CHANGELOG.md` file under a "## [Unreleased]" heading.
- If the PR is the first since the last release, the existing "## [Unreleased]" heading should be replaced with a "## v[X.Y.Z]" heading and the PRs since the last release should be added to the new "## [Unreleased]" heading.
- The style of new `CHANGELOG.md` entries should match the style of the other entries in the file.
- If the PR introduces a breaking change, the changelog entry should be prefixed with "[BREAKING]".


================================================
FILE: .github/labeler.yml
================================================
# Add 'python' label to any change within the 'python' directory
python:
- changed-files:
  - any-glob-to-any-file:
    - python/**

# Add '.NET' label to any change within samples or kernel 'dotnet' directories.
.NET:
- changed-files:
  - any-glob-to-any-file:
    - dotnet/**

# Add 'documentation' label to any change within the 'docs' directory, or any '.md' files
documentation:
- changed-files:
  - any-glob-to-any-file:
    - docs/**
    - '**/*.md'

# Add 'workflows' label to any change within the dotnet or python workflows src or samples
workflows:
- changed-files:
  - any-glob-to-any-file:
    - dotnet/src/Microsoft.Agents.AI.Workflows/**
    - dotnet/src/Microsoft.Agents.AI.Workflows.Declarative/**
    - dotnet/samples/03-workflows/**
    - python/packages/main/agent_framework/_workflow/**
    - python/samples/getting_started/workflow/**

# Add 'lab' label to any change within the 'python/packages/lab' directory
lab:
- changed-files:
  - any-glob-to-any-file:
    - python/packages/lab/**


================================================
FILE: .github/pull_request_template.md
================================================
### Motivation and Context

<!-- Thank you for your contribution to the Agent Framework repo!
Please help reviewers and future users, providing the following information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
     These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] The PR follows the [Contribution Guidelines](https://github.com/microsoft/agent-framework/blob/main/CONTRIBUTING.md)
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] **Is this a breaking change?** If yes, add "[BREAKING]" prefix to the title of the PR.

================================================
FILE: .github/scripts/stale_issue_pr_ping.py
================================================
# Copyright (c) Microsoft. All rights reserved.

"""Scan open issues and PRs labeled 'waiting-for-author' for stale follow-ups.

Team members manually add the 'waiting-for-author' label when they need a
response from the external author.  If the author hasn't replied within
DAYS_THRESHOLD days of the last team comment, post a reminder and add the
'requested-info' label to prevent duplicate pings.
"""

from __future__ import annotations

import os
import sys
import time
from datetime import datetime, timezone

from github import Auth, Github, GithubException
from github.Issue import Issue
from github.IssueComment import IssueComment


PING_COMMENT = (
    "@{author}, friendly reminder — this issue is waiting on your response. "
    "Please share any updates when you get a chance. (This is an automated message.)"
)
TRIGGER_LABEL = "waiting-for-author"
PINGED_LABEL = "requested-info"


def get_team_members(g: Github, org: str, team_slug: str) -> set[str]:
    """Fetch active team member usernames."""
    try:
        org_obj = g.get_organization(org)
        team = org_obj.get_team_by_slug(team_slug)
        return {m.login for m in team.get_members()}
    except GithubException as exc:
        if exc.status in (403, 404):
            print(
                f"ERROR: Failed to fetch team members for {org}/{team_slug} "
                f"(HTTP {exc.status}). Check that the token has the 'read:org' "
                f"scope and that the team slug '{team_slug}' is correct."
            )
        else:
            print(f"ERROR: Failed to fetch team members for {org}/{team_slug}: {exc}")
        sys.exit(1)
    except Exception as exc:
        print(f"ERROR: Failed to fetch team members for {org}/{team_slug}: {exc}")
        sys.exit(1)


def find_last_team_comment(
    comments: list[IssueComment], team_members: set[str]
) -> IssueComment | None:
    """Return the most recent comment from a team member, or None."""
    for comment in reversed(comments):
        if comment.user and comment.user.login in team_members:
            return comment
    return None


def author_replied_after(
    comments: list[IssueComment], author: str, after: datetime
) -> bool:
    """Check if the issue author commented after the given timestamp."""
    for comment in comments:
        if (
            comment.user
            and comment.user.login == author
            and comment.created_at > after
        ):
            return True
    return False


def should_ping(
    issue: Issue,
    team_members: set[str],
    days_threshold: int,
    now: datetime,
) -> bool:
    """Determine whether this issue/PR should be pinged.

    Only issues/PRs carrying the 'waiting-for-author' label are candidates.
    """
    author = issue.user.login

    # Skip if the trigger label is not present
    if not any(label.name == TRIGGER_LABEL for label in issue.labels):
        return False
    # Skip if author is a team member
    if author in team_members:
        return False

    # Skip if already pinged
    if any(label.name == PINGED_LABEL for label in issue.labels):
        return False

    # Skip if no comments at all
    if issue.comments == 0:
        return False

    # Fetch comments once for both lookups
    comments = list(issue.get_comments())

    # Find last team member comment
    last_team_comment = find_last_team_comment(comments, team_members)
    if last_team_comment is None:
        return False

    # Skip if author replied after the last team comment
    if author_replied_after(comments, author, last_team_comment.created_at):
        return False

    # Check if enough days have passed
    days_since = (now - last_team_comment.created_at.astimezone(timezone.utc)).days
    if days_since < days_threshold:
        return False

    return True


def ping(issue: Issue, dry_run: bool) -> bool:
    """Post a reminder comment and add the 'requested-info' label. Returns True on success."""
    author = issue.user.login
    kind = "PR" if issue.pull_request else "Issue"

    if dry_run:
        print(f"  [DRY RUN] Would ping {kind} #{issue.number} (@{author})")
        return True

    max_retries = 3
    commented = False
    labeled = False
    for attempt in range(1, max_retries + 1):
        try:
            if not commented:
                issue.create_comment(PING_COMMENT.format(author=author))
                commented = True
            if not labeled:
                issue.add_to_labels(PINGED_LABEL)
                labeled = True
            print(f"  Pinged {kind} #{issue.number} (@{author})")
            return True
        except Exception as exc:
            if attempt < max_retries:
                wait = 2 ** attempt  # 2s, 4s
                print(f"  WARN: Attempt {attempt}/{max_retries} failed for {kind} #{issue.number}: {exc}. Retrying in {wait}s...")
                time.sleep(wait)
            else:
                print(f"  ERROR: Failed to ping {kind} #{issue.number} after {max_retries} attempts: {exc}")
                return False


def main() -> None:
    token = os.environ.get("GITHUB_TOKEN")
    if not token:
        print("ERROR: GITHUB_TOKEN environment variable is required")
        sys.exit(1)

    repository = os.environ.get("GITHUB_REPOSITORY")
    if not repository:
        print("ERROR: GITHUB_REPOSITORY environment variable is required")
        sys.exit(1)

    team_slug = os.environ.get("TEAM_SLUG")
    if not team_slug:
        print("ERROR: TEAM_SLUG environment variable is required")
        sys.exit(1)

    days_threshold_raw = os.environ.get("DAYS_THRESHOLD", "4")
    try:
        days_threshold = int(days_threshold_raw)
    except ValueError:
        print(f"ERROR: DAYS_THRESHOLD must be a numeric value, got '{days_threshold_raw}'")
        sys.exit(1)
    dry_run = os.environ.get("DRY_RUN", "false").lower() == "true"

    org = repository.split("/")[0]

    if dry_run:
        print("Running in DRY RUN mode — no comments or labels will be applied.\n")

    g = Github(auth=Auth.Token(token))
    repo = g.get_repo(repository)

    print(f"Fetching team members for {org}/{team_slug}...")
    team_members = get_team_members(g, org, team_slug)
    print(f"Found {len(team_members)} team members.\n")

    now = datetime.now(timezone.utc)
    pinged = []
    failed = []
    scanned = 0

    print(f"Scanning open issues and PRs labeled '{TRIGGER_LABEL}' (threshold: {days_threshold} days)...\n")

    for issue in repo.get_issues(state="open", labels=[TRIGGER_LABEL]):
        scanned += 1

        if should_ping(issue, team_members, days_threshold, now):
            if ping(issue, dry_run):
                pinged.append(issue.number)
            else:
                failed.append(issue.number)

    print(f"\nDone. Scanned {scanned} items, pinged {len(pinged)}, failed {len(failed)}.")
    if pinged:
        print(f"Pinged: {', '.join(f'#{n}' for n in pinged)}")
    if failed:
        print(f"Failed: {', '.join(f'#{n}' for n in failed)}")
        sys.exit(1)


if __name__ == "__main__":
    main()


================================================
FILE: .github/tests/test_stale_issue_pr_ping.py
================================================
# Copyright (c) Microsoft. All rights reserved.

"""Tests for stale_issue_pr_ping.py."""

from __future__ import annotations

import os
import sys
from datetime import datetime, timezone, timedelta
from unittest.mock import MagicMock, patch

import pytest

# Ensure the script directory is importable
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "scripts"))

from stale_issue_pr_ping import (
    PINGED_LABEL,
    PING_COMMENT,
    TRIGGER_LABEL,
    author_replied_after,
    find_last_team_comment,
    get_team_members,
    main,
    ping,
    should_ping,
)

TEAM = {"alice", "bob"}
NOW = datetime(2026, 3, 15, 12, 0, 0, tzinfo=timezone.utc)


# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------

def _make_comment(login: str | None, created_at: datetime) -> MagicMock:
    """Create a mock IssueComment."""
    c = MagicMock()
    if login is None:
        c.user = None
    else:
        c.user = MagicMock()
        c.user.login = login
    c.created_at = created_at
    return c


def _make_label(name: str) -> MagicMock:
    lbl = MagicMock()
    lbl.name = name
    return lbl


def _make_issue(
    author: str = "external",
    labels: list[str] | None = None,
    comment_count: int = 1,
    comments: list[MagicMock] | None = None,
    pull_request: bool = False,
    number: int = 42,
) -> MagicMock:
    issue = MagicMock()
    issue.user = MagicMock()
    issue.user.login = author
    issue.number = number
    # Default to having the trigger label, since the API query pre-filters.
    if labels is None:
        labels = [TRIGGER_LABEL]
    issue.labels = [_make_label(n) for n in labels]
    issue.comments = comment_count
    issue.pull_request = MagicMock() if pull_request else None
    if comments is not None:
        issue.get_comments.return_value = comments
    return issue


# ---------------------------------------------------------------------------
# find_last_team_comment
# ---------------------------------------------------------------------------

class TestFindLastTeamComment:
    def test_returns_last_team_comment(self):
        c1 = _make_comment("alice", datetime(2026, 3, 1, tzinfo=timezone.utc))
        c2 = _make_comment("external", datetime(2026, 3, 2, tzinfo=timezone.utc))
        c3 = _make_comment("bob", datetime(2026, 3, 3, tzinfo=timezone.utc))
        assert find_last_team_comment([c1, c2, c3], TEAM) is c3

    def test_returns_none_when_no_team_comments(self):
        c1 = _make_comment("external", datetime(2026, 3, 1, tzinfo=timezone.utc))
        assert find_last_team_comment([c1], TEAM) is None

    def test_returns_none_for_empty_list(self):
        assert find_last_team_comment([], TEAM) is None

    def test_skips_deleted_user(self):
        c1 = _make_comment(None, datetime(2026, 3, 1, tzinfo=timezone.utc))
        c2 = _make_comment("alice", datetime(2026, 3, 2, tzinfo=timezone.utc))
        assert find_last_team_comment([c1, c2], TEAM) is c2

    def test_only_deleted_users(self):
        c1 = _make_comment(None, datetime(2026, 3, 1, tzinfo=timezone.utc))
        assert find_last_team_comment([c1], TEAM) is None


# ---------------------------------------------------------------------------
# author_replied_after
# ---------------------------------------------------------------------------

class TestAuthorRepliedAfter:
    def test_author_replied(self):
        after = datetime(2026, 3, 1, tzinfo=timezone.utc)
        c1 = _make_comment("external", datetime(2026, 3, 2, tzinfo=timezone.utc))
        assert author_replied_after([c1], "external", after) is True

    def test_author_not_replied(self):
        after = datetime(2026, 3, 5, tzinfo=timezone.utc)
        c1 = _make_comment("external", datetime(2026, 3, 2, tzinfo=timezone.utc))
        assert author_replied_after([c1], "external", after) is False

    def test_different_user_replied(self):
        after = datetime(2026, 3, 1, tzinfo=timezone.utc)
        c1 = _make_comment("someone_else", datetime(2026, 3, 2, tzinfo=timezone.utc))
        assert author_replied_after([c1], "external", after) is False

    def test_deleted_user_comment(self):
        after = datetime(2026, 3, 1, tzinfo=timezone.utc)
        c1 = _make_comment(None, datetime(2026, 3, 2, tzinfo=timezone.utc))
        assert author_replied_after([c1], "external", after) is False


# ---------------------------------------------------------------------------
# should_ping
# ---------------------------------------------------------------------------

class TestShouldPing:
    def test_should_ping_stale_issue(self):
        team_comment = _make_comment("alice", NOW - timedelta(days=5))
        issue = _make_issue(comments=[team_comment], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is True

    def test_skip_team_member_author(self):
        issue = _make_issue(author="alice", labels=[TRIGGER_LABEL], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_skip_already_pinged(self):
        issue = _make_issue(labels=[TRIGGER_LABEL, PINGED_LABEL], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_skip_no_comments(self):
        issue = _make_issue(comment_count=0)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_skip_no_team_comment(self):
        c = _make_comment("external", NOW - timedelta(days=5))
        issue = _make_issue(comments=[c], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_skip_author_replied(self):
        team_c = _make_comment("alice", NOW - timedelta(days=5))
        author_c = _make_comment("external", NOW - timedelta(days=3))
        issue = _make_issue(comments=[team_c, author_c], comment_count=2)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_skip_not_enough_days(self):
        team_comment = _make_comment("alice", NOW - timedelta(days=2))
        issue = _make_issue(comments=[team_comment], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is False

    def test_aware_datetime_handled(self):
        """Timezone-aware datetimes should not be mangled by astimezone."""
        aware_dt = (NOW - timedelta(days=5)).replace(tzinfo=timezone.utc)
        team_comment = _make_comment("alice", aware_dt)
        issue = _make_issue(comments=[team_comment], comment_count=1)
        assert should_ping(issue, TEAM, 4, NOW) is True

    def test_naive_datetime_handled(self):
        """Naive datetimes (pre-PyGithub 2.x) should be handled by astimezone."""
        naive_dt = (NOW - timedelta(days=5)).replace(tzinfo=None)
        team_comment = _make_comment("alice", naive_dt)
        issue = _make_issue(comments=[team_comment], comment_count=1)
        # astimezone on naive datetime treats it as local time; just verify no crash
        should_ping(issue, TEAM, 4, NOW)


# ---------------------------------------------------------------------------
# ping
# ---------------------------------------------------------------------------

class TestPing:
    def test_dry_run(self, capsys):
        issue = _make_issue()
        assert ping(issue, dry_run=True) is True
        issue.create_comment.assert_not_called()
        assert "DRY RUN" in capsys.readouterr().out

    def test_success(self, capsys):
        issue = _make_issue()
        assert ping(issue, dry_run=False) is True
        issue.create_comment.assert_called_once()
        issue.add_to_labels.assert_called_once_with(PINGED_LABEL)

    @patch("stale_issue_pr_ping.time.sleep")
    def test_retry_on_failure(self, mock_sleep):
        issue = _make_issue()
        issue.create_comment.side_effect = [Exception("net error"), None]
        assert ping(issue, dry_run=False) is True
        assert issue.create_comment.call_count == 2
        mock_sleep.assert_called_once()

    @patch("stale_issue_pr_ping.time.sleep")
    def test_idempotent_retry_skips_comment_on_label_failure(self, mock_sleep):
        """If create_comment succeeds but add_to_labels fails, retry should not re-comment."""
        issue = _make_issue()
        issue.add_to_labels.side_effect = [Exception("label error"), None]
        assert ping(issue, dry_run=False) is True
        # Comment should only be created once even though there were 2 attempts
        assert issue.create_comment.call_count == 1
        assert issue.add_to_labels.call_count == 2

    @patch("stale_issue_pr_ping.time.sleep")
    def test_all_retries_fail(self, mock_sleep):
        issue = _make_issue()
        issue.create_comment.side_effect = Exception("permanent error")
        assert ping(issue, dry_run=False) is False
        assert issue.create_comment.call_count == 3


# ---------------------------------------------------------------------------
# get_team_members
# ---------------------------------------------------------------------------

class TestGetTeamMembers:
    def test_success(self):
        g = MagicMock()
        member = MagicMock()
        member.login = "alice"
        g.get_organization.return_value.get_team_by_slug.return_value.get_members.return_value = [member]
        assert get_team_members(g, "org", "my-team") == {"alice"}

    def test_403_error_message(self, capsys):
        from github import GithubException

        g = MagicMock()
        g.get_organization.return_value.get_team_by_slug.side_effect = GithubException(
            403, {"message": "Forbidden"}, None
        )
        with pytest.raises(SystemExit):
            get_team_members(g, "org", "my-team")
        out = capsys.readouterr().out
        assert "read:org" in out
        assert "403" in out

    def test_404_error_message(self, capsys):
        from github import GithubException

        g = MagicMock()
        g.get_organization.return_value.get_team_by_slug.side_effect = GithubException(
            404, {"message": "Not Found"}, None
        )
        with pytest.raises(SystemExit):
            get_team_members(g, "org", "bad-slug")
        out = capsys.readouterr().out
        assert "read:org" in out
        assert "bad-slug" in out

    def test_generic_error(self, capsys):
        g = MagicMock()
        g.get_organization.side_effect = RuntimeError("boom")
        with pytest.raises(SystemExit):
            get_team_members(g, "org", "team")


# ---------------------------------------------------------------------------
# main – env var validation
# ---------------------------------------------------------------------------

class TestMain:
    @patch.dict(os.environ, {
        "GITHUB_TOKEN": "tok",
        "GITHUB_REPOSITORY": "org/repo",
        "TEAM_SLUG": "my-team",
        "DAYS_THRESHOLD": "abc",
    }, clear=True)
    def test_invalid_days_threshold(self, capsys):
        with pytest.raises(SystemExit):
            main()
        assert "numeric" in capsys.readouterr().out

    @patch.dict(os.environ, {
        "GITHUB_TOKEN": "tok",
        "GITHUB_REPOSITORY": "org/repo",
    }, clear=True)
    def test_missing_team_slug(self, capsys):
        with pytest.raises(SystemExit):
            main()
        assert "TEAM_SLUG" in capsys.readouterr().out


================================================
FILE: .github/upgrades/prompts/SemanticKernelToAgentFramework.md
================================================
# Instructions for migrating from Semantic Kernel Agents to Agent Framework in .NET projects.

## Scope

When you are asked to migrate a project from `Microsoft.SemanticKernel.Agents` to `Microsoft.Agents.AI` you need to determine for which projects you need to do it.
If a single project is specified - do it for that project only. If you are asked to do it for a solution, migrate all projects in the solution
that reference `Microsoft.SemanticKernel.Agents` or related Semantic Kernel agent packages. If you don't know which projects to migrate, ask the user.

## Things to consider while doing migration

- NuGet package names, assembly names, projects names or other dependencies names are case insensitive(!). You ***must take it into account*** when doing something
  with project dependencies, like searching for dependencies or when removing them from projects etc.
- Agent Framework uses different namespace patterns and API structures compared to Semantic Kernel Agents
- Text-based heuristics should be avoided in favor of proper content type inspection when available.

## Planning

For each project that needs to be migrated, you need to do the following:

<agent_type_identification>
- Find projects depending on `Microsoft.SemanticKernel.Agents` or related Semantic Kernel agent packages (when searching for projects, if some projects are not part of the
  solution or you could not find the project, notify user and continue with other projects).
- Identify the specific Semantic Kernel agent types being used:
  - `ChatCompletionAgent` → `ChatClientAgent`
  - `OpenAIAssistantAgent` → `assistantsClient.CreateAIAgent()` (via OpenAI Assistants client extension)
  - `AzureAIAgent` → `persistentAgentsClient.CreateAIAgent()` (via Azure AI Foundry client extension)
  - `OpenAIResponseAgent` → `responsesClient.CreateAIAgent()` (via OpenAI Responses client extension)
  - `A2AAgent` → `AIAgent` (via A2A card resolver)
  - `BedrockAgent` → Custom implementation required (not supported)
- Determine if agents are being created new or retrieved from hosted services:
  - **New agents**: Use `CreateAIAgent()` methods
  - **Existing hosted agents**: Use `GetAIAgent(agentId)` methods for OpenAI Assistants and Azure AI Foundry
</agent_type_identification>

- Determine the AI provider being used (OpenAI, Azure OpenAI, Azure AI Foundry, etc.)
- Analyze tool/function registration patterns
- Review thread management and invocation patterns

## Execution

***Important***: when running steps in this section you must not pause, you must continue until you are done with all steps or you are truly unable to
continue and need user's interaction (you will be penalized if you stop unnecessarily).

Keep in mind information in the next section about differences and follow these steps in the order they are specified (you will be penalized if you do steps
below in wrong order or skip any of them):

1. For each project that has an explicit package dependency to Semantic Kernel agent packages in the project file or some imported MSBuild targets (some
   project could receive package dependencies transitively, so avoid adding new package dependencies for such projects), do the following:

- Remove the Semantic Kernel agent package references from the project file:
  - `Microsoft.SemanticKernel.Agents.Core`
  - `Microsoft.SemanticKernel.Agents.OpenAI`
  - `Microsoft.SemanticKernel.Agents.AzureAI`
  - `Microsoft.SemanticKernel` (if only used for agents)
- Add the appropriate Agent Framework package references based on the provider being used:
  - `Microsoft.Agents.AI.Abstractions` (always required)
  - `Microsoft.Agents.AI.OpenAI` (for OpenAI and Azure OpenAI providers)
  - For unsupported providers (Bedrock, CopilotStudio), note in the report that custom implementation is required
- If projects use Central Package Management, update the `Directory.Packages.props` file to remove the Semantic Kernel agent package versions in addition to
  removing package reference from projects.
  When adding the Agent Framework PackageReferences, add them to affected project files without a version and add PackageVersion elements to the
  Directory.Packages.props file with the version that supports the project's target framework.

2. Update code files using Semantic Kernel Agents in the selected projects (and in projects that depend on them since they could receive Semantic Kernel transitively):

- Find ***all*** code files in the selected projects (and in projects that depend on them since they could receive Semantic Kernel transitively).
  When doing search of code files that need changes, prefer calling search tools with `upgrade_` prefix if available. Also do pass project's root folder for all
  selected projects or projects that depend on them.
- Update the code files that use Semantic Kernel Agents to use Agent Framework instead. You never should add placeholders when updating code, or remove any comments in the code files,
  you must keep the business logic as close as possible to the original code but use new API. When checking if code file needs to be updated, you should check for
  using statements, types and API from `Microsoft.SemanticKernel.Agents` namespace (skip comments and string literal constants).
- Ensure that you replace all Semantic Kernel agent using statements with Agent Framework using statements (always check if there are any other Semantic Kernel agent
  API used in the file having any of the Semantic Kernel agent using statements; if no other API detected, Semantic Kernel agent using statements should be just removed
  instead of replaced). If there were no Semantic Kernel agent using statements in the file, do not add Agent Framework using statements.
- When replacing types you must ensure that you add using statements for them, since some types that lived in main `Microsoft.SemanticKernel.Agents` namespace live in other namespaces
  under `Microsoft.Agents.AI`. For example, `Microsoft.SemanticKernel.Agents.ChatCompletionAgent` is replaced with `Microsoft.Agents.AI.ChatClientAgent`, when that
  happens using statement with `Microsoft.Agents.AI` needs to be added (unless you use fully qualified type name)
- If you see some code that really cannot be converted or will have potential behavior changes at runtime, remember files and code lines where it
  happens at the end of the migration process you will generate a report markdown file and list all follow up steps user would have to do.

3. Validate that all places where Semantic Kernel Agents were used are migrated. To do that search for `Microsoft.SemanticKernel.Agents` in all affected projects and projects that depend
   on them again and if still see any Semantic Kernel agent presence go back to step 2. Steps 2 and 3 should be repeated until you see no Semantic Kernel agent references.

4. Build all modified projects to ensure that they compile without errors. If there are any build errors, you must fix them all yourself one by one and
   don't stop until all errors are fixed without breaking any of the migration guidance.

5. **Validate Migration**: Use the validation checklist below to ensure complete migration.

6. Generate the report file under `<solution root>\.github folder`, the file name should be `SemanticKernelToAgentFrameworkReport.md`, it is highly important that
   you generate report when migration complete. Report should contain:
     - all project dependencies changes (mention what was changed, added or removed, including provider-specific packages)
     - all code files that were changed (mention what was changed in the file, if it was not changed, just mention that the file was not changed)
     - provider-specific migration patterns used (OpenAI, Azure OpenAI, Azure AI Foundry, A2A, ONNX, etc.)
     - all cases where you could not convert the code because of unsupported features and you were unable to find a workaround
     - unsupported providers that require custom implementation (Bedrock, CopilotStudio)
     - breaking glass pattern migrations (InnerContent → RawRepresentation) and any CodeInterpreter or advanced tool usage
     - all behavioral changes that have to be verified at runtime
     - provider-specific configuration changes that may affect behavior
     - all follow up steps that user would have to do in the report markdown file

## Migration Validation Checklist

After completing migration, verify these specific items:

1. **Compilation**: Execute `dotnet build` on all modified projects - zero errors required
2. **Namespace Updates**: Confirm all `using Microsoft.SemanticKernel.Agents` statements are replaced
3. **Method Calls**: Verify all `InvokeAsync` calls are changed to `RunAsync`
4. **Return Types**: Confirm handling of `AgentResponse` instead of `IAsyncEnumerable<AgentResponseItem<ChatMessageContent>>`
5. **Thread Creation**: Validate all thread creation uses `agent.GetNewThread()` pattern
6. **Tool Registration**: Ensure `[KernelFunction]` attributes are removed and `AIFunctionFactory.Create()` is used
7. **Options Configuration**: Verify `AgentRunOptions` or `ChatClientAgentRunOptions` replaces `AgentInvokeOptions`
8. **Breaking Glass**: Test `RawRepresentation` access replaces `InnerContent` access

## Detailed information about differences in Semantic Kernel Agents and Agent Framework

<api_changes>
Agent Framework provides functionality for creating and managing AI agents through the Microsoft.Extensions.AI package ecosystem. The framework uses different APIs and patterns compared to Semantic Kernel Agents.

Key API differences:
- Agent creation: Remove Kernel dependency, use direct client-based creation
- Method names: `InvokeAsync` → `RunAsync`, `InvokeStreamingAsync` → `RunStreamingAsync`
- Return types: `IAsyncEnumerable<AgentResponseItem<ChatMessageContent>>` → `AgentResponse`
- Thread creation: Provider-specific constructors → `agent.GetNewThread()`
- Tool registration: `KernelPlugin` system → Direct `AIFunction` registration
- Options: `AgentInvokeOptions` → Provider-specific run options (e.g., `ChatClientAgentRunOptions`)
</api_changes>

<configuration_changes>
Configuration patterns have changed from Kernel-based to direct client configuration:
- Remove `Kernel.CreateBuilder()` patterns
- Replace with provider-specific client creation
- Update namespace imports from `Microsoft.SemanticKernel.Agents` to `Microsoft.Agents.AI`
- Change tool registration from attribute-based to factory-based
</configuration_changes>

### Exact API Mappings

<agent_type_identification>
Replace these Semantic Kernel agent classes with their Agent Framework equivalents:

| Semantic Kernel Class | Agent Framework Replacement | Constructor Changes |
|----------------------|----------------------------|-------------------|
| `IChatCompletionService` | `IChatClient` | Convert to `IChatClient` using `chatService.AsChatClient()` extensions |
| `ChatCompletionAgent` | `ChatClientAgent` | Remove `Kernel` parameter, add `IChatClient` parameter |
| `OpenAIAssistantAgent` | `AIAgent` (via extension) | ⚠️ **Deprecated** - Use Responses API instead. <br> **New**: `OpenAIClient.GetAssistantClient().CreateAIAgent()` <br> **Existing**: `OpenAIClient.GetAssistantClient().GetAIAgent(assistantId)` |
| `AzureAIAgent` | `AIAgent` (via extension) | **New**: `PersistentAgentsClient.CreateAIAgent()` <br> **Existing**: `PersistentAgentsClient.GetAIAgent(agentId)` |
| `OpenAIResponseAgent` | `AIAgent` (via extension) | Replace with `OpenAIClient.GetOpenAIResponseClient(modelId).CreateAIAgent()` |
| `A2AAgent` | `AIAgent` (via extension) | Replace with `A2ACardResolver.GetAIAgentAsync()` |
| `BedrockAgent` | Not supported | Custom implementation required |

**Important distinction:**
- **CreateAIAgent()**: Use when creating new agents in the hosted service
- **GetAIAgent(agentId)**: Use when retrieving existing agents from the hosted service
</agent_type_identification>

<api_changes>
Replace these method calls:

| Semantic Kernel Method | Agent Framework Method | Parameter Changes |
|----------------------|----------------------|------------------|
| `agent.InvokeAsync(message, thread, options)` | `agent.RunAsync(message, thread, options)` | Same parameters, different return type |
| `agent.InvokeStreamingAsync(message, thread, options)` | `agent.RunStreamingAsync(message, thread, options)` | Same parameters, different return type |
| `new ChatHistoryAgentThread()` | `agent.GetNewThread()` | No parameters needed |
| `new OpenAIAssistantAgentThread(client)` | `agent.GetNewThread()` | No parameters needed |
| `new AzureAIAgentThread(client)` | `agent.GetNewThread()` | No parameters needed |
| `thread.DeleteAsync()` | Provider-specific cleanup | Use provider client directly |

Return type changes:
- `IAsyncEnumerable<AgentResponseItem<ChatMessageContent>>` → `AgentResponse`
- `IAsyncEnumerable<StreamingChatMessageContent>` → `IAsyncEnumerable<AgentResponseUpdate>`
</api_changes>

<configuration_changes>
Replace these configuration patterns:

| Semantic Kernel Pattern | Agent Framework Pattern |
|------------------------|------------------------|
| `AgentInvokeOptions` | `AgentRunOptions` <br> **ChatClientAgent**: `ChatClientAgentRunOptions` |
| `KernelArguments` | If no arguments are provided, do nothing. If arguments are provided, template is not supported and the prompt must be rendered before calling agent |
| `[KernelFunction]` attribute | Remove attribute, use `AIFunctionFactory.Create()` |
| `KernelPlugin` registration | Direct function list in agent creation |
| `InnerContent` property | `RawRepresentation` property |
| `content.Metadata` property | `AdditionalProperties` property |
</configuration_changes>

<behavioral_changes>
### Functional Differences

Agent Framework changes these behaviors compared to Semantic Kernel Agents:

1. **Thread Management**: Agent Framework automatically manages thread state. Semantic Kernel required manual thread updates in some scenarios (e.g., OpenAI Responses).

2. **Return Types**:
   - Non-streaming: Returns single `AgentResponse` instead of `IAsyncEnumerable<AgentResponseItem<ChatMessageContent>>`
   - Streaming: Returns `IAsyncEnumerable<AgentResponseUpdate>` instead of `IAsyncEnumerable<StreamingChatMessageContent>`

3. **Tool Registration**: Agent Framework uses direct function registration without requiring `[KernelFunction]` attributes.

4. **Usage Metadata**: Agent Framework provides unified `UsageDetails` access via `response.Usage` and `update.Contents.OfType<UsageContent>()`.

5. **Breaking Glass**: Access underlying SDK objects via `RawRepresentation` instead of `InnerContent`.
</behavioral_changes>

### Namespace Updates

<configuration_changes>
Replace these exact namespace imports:

**Remove these Semantic Kernel namespaces:**
```csharp
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.OpenAI;
using Microsoft.SemanticKernel.Agents.AzureAI;
using Microsoft.SemanticKernel.Agents.A2A;
using Microsoft.SemanticKernel.Connectors.OpenAI;
```

**Add these Agent Framework namespaces:**
```csharp
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;
// Provider-specific namespaces (add only if needed):
using OpenAI; // For OpenAI provider
using Azure.AI.OpenAI; // For Azure OpenAI provider
using Azure.AI.Agents.Persistent; // For Azure AI Foundry provider
using Azure.Identity; // For Azure authentication
```
</configuration_changes>

### Chat Completion Abstractions

<configuration_changes>

**Replace this Semantic Kernel pattern:**
```csharp
Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion(modelId, apiKey)
    .Build();

ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};
```

**With this Agent Framework pattern:**
```csharp
// Method 1: Direct constructor
IChatClient chatClient = new OpenAIClient(apiKey).GetChatClient(modelId).AsIChatClient();
AIAgent agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

// Method 2: Extension method (recommended)
AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: "You are a helpful assistant");
```
</configuration_changes>

### Chat Completion Service

<configuration_changes>

**Replace this Semantic Kernel pattern:**

```csharp
IChatCompletionService completionService = kernel.GetService<IChatCompletionService>();

ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};
```

**With this Agent Framework pattern:**

Agent Framework does not support `IChatCompletionService` directly. Instead, use `IChatClient` as the common abstraction
converting from `IChatCompletionService` to `IChatClient` via `AsChatClient()` extension method or creating a new `IChatClient`
 instance directly using the provider package dedicated extensions.

```csharp
IChatCompletionService completionService = kernel.GetService<IChatCompletionService>();
IChatClient chatClient = completionService.AsChatClient();

var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
```
</configuration_changes>

### Agent Creation Transformation

<configuration_changes>

**Replace this Semantic Kernel pattern:**
```csharp
Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatClient(modelId, apiKey)
    .Build();

ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};
```

**With this Agent Framework pattern:**
```csharp
// Method 1: Direct constructor (OpenAI/AzureOpenAI Package specific)
IChatClient chatClient = new OpenAIClient(apiKey).GetChatClient(modelId).AsIChatClient();
AIAgent agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

// Method 2: Extension method (recommended)
AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: "You are a helpful assistant");
```

**Required changes:**
1. Remove `Kernel.CreateBuilder()` and `.Build()` calls
2. Replace `ChatCompletionAgent` with `ChatClientAgent` or use extension methods
3. Remove `Kernel` property assignment
4. Pass `IChatClient` directly to constructor or use extension methods
</configuration_changes>

### Thread Management Transformation

<api_changes>
**Replace these Semantic Kernel thread creation patterns:**
```csharp
// Remove these provider-specific thread constructors:
AgentThread thread = new ChatHistoryAgentThread();
AgentThread thread = new OpenAIAssistantAgentThread(assistantClient);
AgentThread thread = new AzureAIAgentThread(azureClient);
```

**With this unified Agent Framework pattern:**
```csharp
// Use this single pattern for all agent types:
AgentThread thread = agent.GetNewThread();
```

**Required changes:**
1. Remove all `new [Provider]AgentThread()` constructor calls
2. Replace with `agent.GetNewThread()` method call
3. Remove provider client parameters from thread creation
4. Use the same pattern regardless of agent provider type
</api_changes>

### Tool Registration Transformation

<configuration_changes>
**Replace this Semantic Kernel tool registration pattern:**
```csharp
[KernelFunction] // Remove this attribute
[Description("Get the weather for a location")]
static string GetWeather(string location) => $"Weather in {location}";

KernelFunction kernelFunction = KernelFunctionFactory.CreateFromMethod(GetWeather);
KernelPlugin kernelPlugin = KernelPluginFactory.CreateFromFunctions("WeatherPlugin", [kernelFunction]);
kernel.Plugins.Add(kernelPlugin);

ChatCompletionAgent agent = new() { Kernel = kernel };
```

**With this Agent Framework pattern:**
```csharp
[Description("Get the weather for a location")] // Keep Description attribute
static string GetWeather(string location) => $"Weather in {location}";

AIAgent agent = chatClient.CreateAIAgent(
    instructions: "You are a helpful assistant",
    tools: [AIFunctionFactory.Create(GetWeather)]);
```

**Required changes:**
1. Remove `[KernelFunction]` attributes from methods
2. Keep `[Description]` attributes for function descriptions
3. Remove `KernelFunctionFactory.CreateFromMethod()` calls
4. Remove `KernelPluginFactory.CreateFromFunctions()` calls
5. Remove `kernel.Plugins.Add()` calls
6. Replace with `AIFunctionFactory.Create()` in tools parameter
7. Pass tools directly to agent creation method
</configuration_changes>

### Invocation Method Transformation

<api_changes>
**Replace this Semantic Kernel non-streaming pattern:**
```csharp
await foreach (AgentResponseItem<ChatMessageContent> item in agent.InvokeAsync(userInput, thread, options))
{
    Console.WriteLine(item.Message);
}
```

**With this Agent Framework non-streaming pattern:**
```csharp
AgentResponse result = await agent.RunAsync(userInput, thread, options);
Console.WriteLine(result);
```

**Replace this Semantic Kernel streaming pattern:**
```csharp
await foreach (StreamingChatMessageContent update in agent.InvokeStreamingAsync(userInput, thread, options))
{
    Console.Write(update.Message);
}
```

**With this Agent Framework streaming pattern:**
```csharp
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(userInput, thread, options))
{
    Console.Write(update);
}
```

**Required changes:**
1. Replace `agent.InvokeAsync()` with `agent.RunAsync()`
2. Replace `agent.InvokeStreamingAsync()` with `agent.RunStreamingAsync()`
3. Change return type handling from `IAsyncEnumerable<AgentResponseItem<ChatMessageContent>>` to `AgentResponse`
4. Change streaming type from `StreamingChatMessageContent` to `AgentResponseUpdate`
5. Remove `await foreach` for non-streaming calls
6. Access message content directly from result object instead of iterating
</api_changes>

### Options and Configuration Transformation

<configuration_changes>
**Replace this Semantic Kernel options pattern:**
```csharp
OpenAIPromptExecutionSettings settings = new() { MaxTokens = 1000 };
AgentInvokeOptions options = new() { KernelArguments = new(settings) };
```

**With this Agent Framework options pattern:**
```csharp
ChatClientAgentRunOptions options = new(new ChatOptions { MaxOutputTokens = 1000 });
```

**Required changes:**
1. Remove `OpenAIPromptExecutionSettings` (or other provider-specific settings)
2. Remove `AgentInvokeOptions` wrapper
3. Remove `KernelArguments` wrapper
4. Replace with `ChatClientAgentRunOptions` containing `ChatOptions`
5. Update property names: `MaxTokens` → `MaxOutputTokens`
6. Pass options directly to `RunAsync()` or `RunStreamingAsync()` methods
</configuration_changes>

### Dependency Injection Transformation

<configuration_changes>
**Replace this Semantic Kernel DI pattern:**

Different providers require different kernel extensions:

```csharp
services.AddKernel().AddOpenAIChatClient(modelId, apiKey);
services.AddTransient<ChatCompletionAgent>(sp => new()
{
    Kernel = sp.GetRequiredService<Kernel>(),
    Instructions = "You are helpful"
});
```

**With this Agent Framework DI pattern:**
```csharp
services.AddTransient<AIAgent>(sp =>
    new OpenAIClient(apiKey)
        .GetChatClient(modelId)
        .CreateAIAgent(instructions: "You are helpful"));
```

**Required changes:**
1. Remove `services.AddKernel()` registration
2. Remove provider-specific kernel extensions (e.g., `.AddOpenAIChatClient()`)
3. Replace `ChatCompletionAgent` with `AIAgent` in service registration
4. Remove `Kernel` dependency from constructor
5. Use direct client creation and extension methods
6. Remove `sp.GetRequiredService<Kernel>()` calls
</configuration_changes>

### Thread Cleanup Transformation

<api_changes>
**Replace this Semantic Kernel cleanup pattern:**
```csharp
await thread.DeleteAsync(); // For hosted threads
```

**With these Agent Framework cleanup patterns:**

For every thread created if there's intent to cleanup, the caller should track all the created threads for the provider that support hosted threads for cleanup purposes.

```csharp
// For OpenAI Assistants (when cleanup is needed):
var assistantClient = new OpenAIClient(apiKey).GetAssistantClient();
await assistantClient.DeleteThreadAsync(thread.ConversationId);

// For Azure AI Foundry (when cleanup is needed):
var persistentClient = new PersistentAgentsClient(endpoint, credential);
await persistentClient.Threads.DeleteThreadAsync(thread.ConversationId);

// No thread and agent cleanup is needed for non-hosted agent providers like 
// - Azure OpenAI Chat Completion
// - OpenAI Chat Completion
// - Azure OpenAI Responses
// - OpenAI Responses
```

**Required changes:**
1. Remove `thread.DeleteAsync()` calls
2. Use provider-specific client for cleanup when required
3. Access thread ID via `thread.ConversationId` property
4. Only implement cleanup for providers that require it (Assistants, Azure AI Foundry)
</api_changes>

### Provider-Specific Creation Patterns

<configuration_changes>
Use these exact patterns for each provider:

**OpenAI Chat Completion:**
```csharp
AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: instructions);
```

**OpenAI Assistants (New):** ⚠️ *Deprecated - Use Responses API instead*
```csharp
AIAgent agent = new OpenAIClient(apiKey)
    .GetAssistantClient()
    .CreateAIAgent(modelId, instructions: instructions);
```

**OpenAI Assistants (Existing):** ⚠️ *Deprecated - Use Responses API instead*
```csharp
AIAgent agent = new OpenAIClient(apiKey)
    .GetAssistantClient()
    .GetAIAgent(assistantId);
```

**Azure OpenAI:**
```csharp
AIAgent agent = new AzureOpenAIClient(endpoint, credential)
    .GetChatClient(deploymentName)
    .CreateAIAgent(instructions: instructions);
```

**Azure AI Foundry (New):**
```csharp
AIAgent agent = new PersistentAgentsClient(endpoint, credential)
    .CreateAIAgent(model: deploymentName, instructions: instructions);
```

**Azure AI Foundry (Existing):**
```csharp
AIAgent agent = await new PersistentAgentsClient(endpoint, credential)
    .GetAIAgentAsync(agentId);
```

**OpenAI Responses:** *(Recommended for OpenAI)*
```csharp
AIAgent agent = new OpenAIClient(apiKey)
    .GetOpenAIResponseClient(modelId)
    .CreateAIAgent(instructions: instructions);
```

**Azure OpenAI Responses:** *(Recommended for Azure OpenAI)*
```csharp
AIAgent agent = new AzureOpenAIClient(endpoint, credential)
    .GetOpenAIResponseClient(deploymentName)
    .CreateAIAgent(instructions: instructions);
```

**A2A:**
```csharp
A2ACardResolver resolver = new(new Uri(agentHost));
AIAgent agent = await resolver.GetAIAgentAsync();
```
</configuration_changes>

### Complete Migration Examples

#### Basic Agent Creation Transformation
<configuration_changes>
**Replace this complete Semantic Kernel pattern:**
```csharp
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;

Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatClient(modelId, apiKey)
    .Build();

ChatCompletionAgent agent = new()
{
    Instructions = "You are helpful",
    Kernel = kernel
};

AgentThread thread = new ChatHistoryAgentThread();
```

**With this complete Agent Framework pattern:**
```csharp
using Microsoft.Agents.AI;
using OpenAI;

AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: "You are helpful");

AgentThread thread = agent.GetNewThread();
```
</configuration_changes>

#### Tool Registration Transformation
<configuration_changes>
**Replace this complete Semantic Kernel tool pattern:**
```csharp
[KernelFunction] // Remove this attribute
[Description("Get weather information")]
static string GetWeather([Description("Location")] string location)
    => $"Weather in {location}";

KernelFunction function = KernelFunctionFactory.CreateFromMethod(GetWeather);
KernelPlugin plugin = KernelPluginFactory.CreateFromFunctions("Weather", [function]);
kernel.Plugins.Add(plugin);
```

**With this complete Agent Framework tool pattern:**
```csharp
[Description("Get weather information")] // Keep this attribute
static string GetWeather([Description("Location")] string location)
    => $"Weather in {location}";

AIAgent agent = chatClient.CreateAIAgent(
    instructions: "You are a helpful assistant",
    tools: [AIFunctionFactory.Create(GetWeather)]);
```
</configuration_changes>

#### Agent Invocation Transformation
<api_changes>
**Replace this complete Semantic Kernel invocation pattern:**
```csharp
OpenAIPromptExecutionSettings settings = new() { MaxTokens = 1000 };
AgentInvokeOptions options = new() { KernelArguments = new(settings) };

await foreach (var result in agent.InvokeAsync(input, thread, options))
{
    Console.WriteLine(result.Message);
}
```

**With this complete Agent Framework invocation pattern:**
```csharp
ChatClientAgentRunOptions options = new(new ChatOptions { MaxOutputTokens = 1000 });

AgentResponse result = await agent.RunAsync(input, thread, options);
Console.WriteLine(result);

// Access underlying content when needed:
var chatResponse = result.RawRepresentation as ChatResponse;
// Access underlying SDK objects via chatResponse?.RawRepresentation
```
</api_changes>

### Usage Metadata Transformation

<api_changes>
**Replace this Semantic Kernel non-streaming usage pattern:**
```csharp
await foreach (var result in agent.InvokeAsync(input, thread, options))
{
    if (result.Message.Metadata?.TryGetValue("Usage", out object? usage) ?? false)
    {
        if (usage is ChatTokenUsage openAIUsage)
        {
            Console.WriteLine($"Tokens: {openAIUsage.TotalTokenCount}");
        }
    }
}
```

**With this Agent Framework non-streaming usage pattern:**
```csharp
AgentResponse result = await agent.RunAsync(input, thread, options);
Console.WriteLine($"Tokens: {result.Usage.TotalTokenCount}");
```

**Replace this Semantic Kernel streaming usage pattern:**
```csharp
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(message, agentThread))
{
    if (response.Metadata?.TryGetValue("Usage", out object? usage) ?? false)
    {
        if (usage is ChatTokenUsage openAIUsage)
        {
            Console.WriteLine($"Tokens: {openAIUsage.TotalTokenCount}");
        }
    }
}
```

**With this Agent Framework streaming usage pattern:**
```csharp
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(input, thread, options))
{
    if (update.Contents.OfType<UsageContent>().FirstOrDefault() is { } usageContent)
    {
        Console.WriteLine($"Tokens: {usageContent.Details.TotalTokenCount}");
    }
}
```
</api_changes>



### Breaking Glass Pattern Transformation

<api_changes>
**Replace this Semantic Kernel breaking glass pattern:**
```csharp
await foreach (var content in agent.InvokeAsync(userInput, thread))
{
    UnderlyingSdkType? underlyingChatMessage = content.Message.InnerContent as UnderlyingSdkType;
}
```

**With this Agent Framework breaking glass pattern:**
```csharp
var agentRunResponse = await agent.RunAsync(userInput, thread);

// If the agent uses a ChatClient the first breaking glass probably will be a Microsoft.Extensions.AI.ChatResponse
ChatResponse? chatResponse = agentRunResponse.RawRepresentation as ChatResponse;

// If thats the case, to access the underlying SDK types you will need to break glass again.
UnderlyingSdkType? underlyingChatMessage = chatResponse?.RawRepresentation as UnderlyingSdkType;
```

**Required changes:**
1. Replace `InnerContent` property access with `RawRepresentation` property access
2. Cast `RawRepresentation` to appropriate type expected
3. If the `RawRepresentation` is a `Microsoft.Extensions.AI` type, break glass again to access the underlying SDK types
</api_changes>

#### CodeInterpreter Tool Transformation

<behavioral_changes>
**Replace this Semantic Kernel CodeInterpreter pattern:**
```csharp
await foreach (var content in agent.InvokeAsync(userInput, thread))
{
    bool isCode = content.Message.Metadata?.ContainsKey(AzureAIAgent.CodeInterpreterMetadataKey) ?? false;
    Console.WriteLine($"# {content.Message.Role}{(isCode ? "\n# Generated Code:\n" : ":")}{content.Message.Content}");

    // Process annotations
    foreach (var item in content.Message.Items)
    {
        if (item is AnnotationContent annotation)
        {
            Console.WriteLine($"[{item.GetType().Name}] {annotation.Label}: File #{annotation.ReferenceId}");
        }
        else if (item is FileReferenceContent fileReference)
        {
            Console.WriteLine($"[{item.GetType().Name}] File #{fileReference.FileId}");
        }
    }
}
```

**With this Agent Framework CodeInterpreter pattern:**
```csharp
using System.Text;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

var result = await agent.RunAsync(userInput, thread);
Console.WriteLine(result);

// Get the CodeInterpreterToolCallContent (code input)
CodeInterpreterToolCallContent? toolCallContent = result.Messages
    .SelectMany(m => m.Contents)
    .OfType<CodeInterpreterToolCallContent>()
    .FirstOrDefault();

if (toolCallContent?.Inputs is not null)
{
    DataContent? codeInput = toolCallContent.Inputs.OfType<DataContent>().FirstOrDefault();
    if (codeInput?.HasTopLevelMediaType("text") ?? false)
    {
        Console.WriteLine($"Code Input: {Encoding.UTF8.GetString(codeInput.Data.ToArray())}");
    }
}

// Get the CodeInterpreterToolResultContent (code output)
CodeInterpreterToolResultContent? toolResultContent = result.Messages
    .SelectMany(m => m.Contents)
    .OfType<CodeInterpreterToolResultContent>()
    .FirstOrDefault();

if (toolResultContent?.Outputs is not null)
{
    TextContent? resultOutput = toolResultContent.Outputs.OfType<TextContent>().FirstOrDefault();
    if (resultOutput is not null)
    {
        Console.WriteLine($"Code Tool Result: {resultOutput.Text}");
    }
}

// Getting any annotations generated by the tool
foreach (AIAnnotation annotation in result.Messages
    .SelectMany(m => m.Contents)
    .SelectMany(c => c.Annotations ?? []))
{
    Console.WriteLine($"Annotation: {annotation}");
}
```

**Functional differences:**
1. Code interpreter content is now available via MEAI abstractions - no breaking glass required
2. Use `CodeInterpreterToolCallContent` to access code inputs (the generated code)
3. Use `CodeInterpreterToolResultContent` to access code outputs (execution results)
4. Annotations are accessible via `AIAnnotation` on content items
</behavioral_changes>

#### Provider-Specific Options Configuration

<configuration_changes>
For advanced model settings not available in `ChatOptions`, use the `RawRepresentationFactory` property:

```csharp
var agentOptions = new ChatClientAgentRunOptions(new ChatOptions
{
    MaxOutputTokens = 8000,
    // Breaking glass to access provider-specific options
    RawRepresentationFactory = (_) => new OpenAI.Responses.CreateResponseOptions()
    {
        ReasoningOptions = new()
        {
            ReasoningEffortLevel = OpenAI.Responses.ResponseReasoningEffortLevel.High,
            ReasoningSummaryVerbosity = OpenAI.Responses.ResponseReasoningSummaryVerbosity.Detailed
        }
    }
});
```

**Use this pattern when:**
1. Standard `ChatOptions` properties don't cover required model settings
2. Provider-specific configuration is needed (e.g., reasoning effort level)
3. Advanced SDK features need to be accessed
</configuration_changes>

#### Type-Safe Extension Methods

<api_changes>
Use provider-specific extension methods for safer breaking glass access:

```csharp
using OpenAI; // Brings in extension methods

// Type-safe extraction of OpenAI ChatCompletion
var chatCompletion = result.AsChatCompletion();

// Access underlying OpenAI objects safely
var openAIResponse = chatCompletion.GetRawResponse();
```

**Available extension methods:**
- `result.AsChatCompletion()` for OpenAI providers
- `result.GetRawResponse()` for accessing underlying SDK responses
- Provider-specific extensions for type-safe casting
</api_changes>



### Common Migration Issues and Solutions

<configuration_changes>
**Issue: Missing Using Statements**
- **Problem**: Compilation errors due to missing namespace imports
- **Solution**: Add `using Microsoft.Agents.AI;` and remove `using Microsoft.SemanticKernel.Agents;`

**Issue: Tool Function Signatures**
- **Problem**: `[KernelFunction]` attributes cause compilation errors
- **Solution**: Remove `[KernelFunction]` attributes, keep `[Description]` attributes

**Issue: Thread Type Mismatches**
- **Problem**: Provider-specific thread constructors not found
- **Solution**: Replace all thread constructors with `agent.GetNewThread()`

**Issue: Options Configuration**
- **Problem**: `AgentInvokeOptions` type not found
- **Solution**: Replace with `AgentRunOptions` or `ChatClientAgentRunOptions` containing `ChatOptions`

**Issue: Dependency Injection**
- **Problem**: `Kernel` service registration not found
- **Solution**: Remove `services.AddKernel()`, use direct client registration
</configuration_changes>

### Migration Execution Steps

<configuration_changes>
1. **Update Package References**: Remove SK packages, add AF packages per provider
2. **Update Namespaces**: Replace SK namespaces with AF namespaces
3. **Update Agent Creation**: Remove Kernel, use direct client creation
4. **Update Method Calls**: Replace `InvokeAsync` with `RunAsync`
5. **Update Thread Creation**: Replace provider-specific constructors with `GetNewThread()`
6. **Update Tool Registration**: Remove attributes, use `AIFunctionFactory.Create()`
7. **Update Options**: Replace `AgentInvokeOptions` with provider-specific options
8. **Test and Validate**: Compile and test all functionality
</configuration_changes>

## Provider-Specific Migration Patterns

<configuration_changes>
The following sections provide detailed migration patterns for each supported provider, covering package references, agent creation patterns, and provider-specific configurations.
</configuration_changes>

### 1. OpenAI Chat Completion Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.OpenAI" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.OpenAI" />
```
</configuration_changes>

**Before (Semantic Kernel):**
```csharp
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;

Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatClient(modelId, apiKey)
    .Build();

ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};

AgentThread thread = new ChatHistoryAgentThread();
```

**After (Agent Framework):**
```csharp
using Microsoft.Agents.AI;
using OpenAI;

AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: "You are a helpful assistant");

AgentThread thread = agent.GetNewThread();
```

### 2. Azure OpenAI Chat Completion Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.OpenAI" />
<PackageReference Include="Azure.AI.OpenAI" />
<PackageReference Include="Azure.Identity" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.OpenAI" />
<PackageReference Include="Azure.AI.OpenAI" />
<PackageReference Include="Azure.Identity" />
```

**Note**: If not using `AzureCliCredential`, you can use `ApiKeyCredential` instead without the `Azure.Identity` package.
</configuration_changes>

**Before (Semantic Kernel):**
```csharp
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Azure.Identity;

Kernel kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatClient(deploymentName, endpoint, new AzureCliCredential())
    .Build();

ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};
```

**After (Agent Framework):**
```csharp
using Microsoft.Agents.AI;
using Azure.AI.OpenAI;
using Azure.Identity;

AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential())
    .GetChatClient(deploymentName)
    .CreateAIAgent(instructions: "You are a helpful assistant");
```

### 3. OpenAI Assistants Migration

> ⚠️ **DEPRECATION WARNING**: The OpenAI Assistants API has been deprecated. The Agent Framework extension methods for Assistants are marked as `[Obsolete]`. **Please use the Responses API instead** (see Section 6: OpenAI Responses Migration).

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.OpenAI" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.OpenAI" />
```
</configuration_changes>

<api_changes>
**Replace this Semantic Kernel pattern:**
```csharp
using Microsoft.SemanticKernel.Agents.OpenAI;
using OpenAI.Assistants;

AssistantClient assistantClient = new(apiKey);
Assistant assistant = await assistantClient.CreateAssistantAsync(
    modelId,
    instructions: "You are a helpful assistant");

OpenAIAssistantAgent agent = new(assistant, assistantClient)
{
    Kernel = kernel
};

AgentThread thread = new OpenAIAssistantAgentThread(assistantClient);
```

**With this Agent Framework pattern:**

**Creating a new assistant:**
```csharp
using Microsoft.Agents.AI;
using OpenAI;

AIAgent agent = new OpenAIClient(apiKey)
    .GetAssistantClient()
    .CreateAIAgent(modelId, instructions: "You are a helpful assistant");

AgentThread thread = agent.GetNewThread();

// Cleanup when needed
await assistantClient.DeleteThreadAsync(thread.ConversationId);
```

**Retrieving an existing assistant:**
```csharp
using Microsoft.Agents.AI;
using OpenAI;

AIAgent agent = new OpenAIClient(apiKey)
    .GetAssistantClient()
    .GetAIAgent(assistantId); // Use existing assistant ID

AgentThread thread = agent.GetNewThread();
```
</api_changes>

### 4. Azure AI Foundry (AzureAIAgent) Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.AzureAI" />
<PackageReference Include="Azure.Identity" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.AzureAI.Persistent" />
<PackageReference Include="Azure.Identity" />
```
</configuration_changes>

<api_changes>
**Replace these Semantic Kernel patterns:**

**Pattern 1: Direct AzureAIAgent creation**
```csharp
using Microsoft.SemanticKernel.Agents.AzureAI;
using Azure.Identity;

AzureAIAgent agent = new(
    endpoint: new Uri(endpoint),
    credential: new AzureCliCredential(),
    projectId: projectId)
{
    Instructions = "You are a helpful assistant"
};

AgentThread thread = new AzureAIAgentThread(agent);
```

**Pattern 2: PersistentAgent definition creation**
```csharp
// Define the agent
PersistentAgent definition = await client.Administration.CreateAgentAsync(
    deploymentName,
    tools: [new CodeInterpreterToolDefinition()]);

AzureAIAgent agent = new(definition, client);

// Create a thread for the agent conversation.
AgentThread thread = new AzureAIAgentThread(client);
```

**With these Agent Framework patterns:**

**Creating a new agent:**
```csharp
using Microsoft.Agents.AI;
using Azure.AI.Agents.Persistent;
using Azure.Identity;

var client = new PersistentAgentsClient(endpoint, new AzureCliCredential());

// Create a new AIAgent using Agent Framework
AIAgent agent = client.CreateAIAgent(
    model: deploymentName,
    instructions: "You are a helpful assistant",
    tools: [/* List of specialized Azure.AI.Agents.Persistent.ToolDefinition types */]);

AgentThread thread = agent.GetNewThread();
```

**Retrieving an existing agent:**
```csharp
using Microsoft.Agents.AI;
using Azure.AI.Agents.Persistent;
using Azure.Identity;

var client = new PersistentAgentsClient(endpoint, new AzureCliCredential());

// Retrieve an existing AIAgent using its ID
AIAgent agent = await client.GetAIAgentAsync(agentId);

AgentThread thread = agent.GetNewThread();
```
</api_changes>

### 5. A2A Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.A2A" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.A2A" />
```
</configuration_changes>

<api_changes>
**Replace this Semantic Kernel pattern:**
```csharp
// Create an A2A agent instance
using var httpClient = CreateHttpClient();
var client = new A2AClient(url, httpClient);
var cardResolver = new A2ACardResolver(url, httpClient);
var agentCard = await cardResolver.GetAgentCardAsync();
var agent = new A2AAgent(client, agentCard);
```

**With this Agent Framework pattern:**
```csharp
// Initialize an A2ACardResolver to get an A2A agent card.
A2ACardResolver agentCardResolver = new(new Uri(a2aAgentHost));

// Create an instance of the AIAgent for an existing A2A agent specified by the agent card.
AIAgent agent = await agentCardResolver.GetAIAgentAsync();
```
</api_changes>

### 6. OpenAI Responses Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.OpenAI" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.OpenAI" />
```
</configuration_changes>

<api_changes>
**Replace this Semantic Kernel pattern:**

The thread management is done manually with OpenAI Responses in Semantic Kernel, where the thread
needs to be passed to the `InvokeAsync` method and updated with the `item.Thread` from the response.

```csharp
using Microsoft.SemanticKernel.Agents.OpenAI;

// Define the agent
OpenAIResponseAgent agent = new(new OpenAIClient(apiKey))
{
    Name = "ResponseAgent",
    Instructions = "Answer all queries in English and French.",
};

// Initial thread can be null as it will be automatically created
AgentThread? agentThread = null;

var responseItems = agent.InvokeAsync(new ChatMessageContent(AuthorRole.User, "Input message."), agentThread);
await foreach (AgentResponseItem<ChatMessageContent> responseItem in responseItems)
{
    // Update the thread to maintain the conversation for future interaction
    agentThread = responseItem.Thread;

    WriteAgentChatMessage(responseItem.Message);
}
```

**With this Agent Framework pattern:**

Agent Framework automatically manages the thread, so there's no need to manually update it.

```csharp
using Microsoft.Agents.AI.OpenAI;

AIAgent agent = new OpenAIClient(apiKey)
    .GetOpenAIResponseClient(modelId)
    .CreateAIAgent(
        name: "ResponseAgent",
        instructions: "Answer all queries in English and French.",
        tools: [/* AITools */]);

AgentThread thread = agent.GetNewThread();

var result = await agent.RunAsync(userInput, thread);

// The thread will be automatically updated with the new response id from this point
```
</api_changes>

### 7. Azure OpenAI Responses Migration

<configuration_changes>
**Remove Semantic Kernel Packages:**
```xml
<PackageReference Include="Microsoft.SemanticKernel.Agents.OpenAI" />
<PackageReference Include="Azure.AI.OpenAI" />
```

**Add Agent Framework Packages:**
```xml
<PackageReference Include="Microsoft.Agents.AI.OpenAI" />
<PackageReference Include="Azure.AI.OpenAI" />
```
</configuration_changes>

<api_changes>
**Replace this Semantic Kernel pattern:**

Azure OpenAI Responses uses `AzureOpenAIClient` instead of `OpenAIClient`. The thread management is done manually where the thread needs to be passed to the `InvokeAsync` method and updated with the `item.Thread` from the response.

```csharp
using Microsoft.SemanticKernel.Agents.OpenAI;
using Azure.AI.OpenAI;

// Define the agent
OpenAIResponseAgent agent = new(new AzureOpenAIClient(endpoint, new AzureCliCredential()))
{
    Name = "ResponseAgent",
    Instructions = "Answer all queries in English and French.",
};

// Initial thread can be null as it will be automatically created
AgentThread? agentThread = null;

var responseItems = agent.InvokeAsync(new ChatMessageContent(AuthorRole.User, "Input message."), agentThread);
await foreach (AgentResponseItem<ChatMessageContent> responseItem in responseItems)
{
    // Update the thread to maintain the conversation for future interaction
    agentThread = responseItem.Thread;

    WriteAgentChatMessage(responseItem.Message);
}
```

**With this Agent Framework pattern:**

Agent Framework automatically manages the thread, so there's no need to manually update it.

```csharp
using Microsoft.Agents.AI.OpenAI;
using Azure.AI.OpenAI;

AIAgent agent = new AzureOpenAIClient(endpoint, new AzureCliCredential())
    .GetOpenAIResponseClient(modelId)
    .CreateAIAgent(
        name: "ResponseAgent",
        instructions: "Answer all queries in English and French.",
        tools: [/* AITools */]);

AgentThread thread = agent.GetNewThread();

var result = await agent.RunAsync(userInput, thread);

// The thread will be automatically updated with the new response id from this point
```
</api_changes>

### 8. Unsupported Providers (Require Custom Implementation)

<behavioral_changes>
#### BedrockAgent Migration

**Status**: Hosted Agents is not directly supported in Agent Framework

**Status**: Non-Hosted AI Model Agents supported via `ChatClientAgent`

**Replace this Semantic Kernel pattern:**
```csharp
using Microsoft.SemanticKernel.Agents.Bedrock;

// Create a new agent on the Bedrock Agent service and prepare it for use
using var client =  new AmazonBedrockAgentClient();
using var runtimeClient = new AmazonBedrockAgentRuntimeClient();
var agentModel = await client.CreateAndPrepareAgentAsync(new CreateAgentRequest()
    {
        AgentName = agentName,
        Description = "AgentDescription",
        Instruction = "You are a helpful assistant",
        AgentResourceRoleArn = TestConfiguration.BedrockAgent.AgentResourceRoleArn,
        FoundationModel = TestConfiguration.BedrockAgent.FoundationModel,
    });

// Create a new BedrockAgent instance with the agent model and the client
// so that we can interact with the agent using Semantic Kernel contents.
var agent = new BedrockAgent(agentModel, client, runtimeClient);
```

**With this Agent Framework workaround:**

Currently there's no support for the Hosted Bedrock Agent service in Agent Framework.

For providers like AWS Bedrock that have an `IChatClient` implementation available, use the `ChatClientAgent` directly by providing the `IChatClient` instance to the agent.

_Those agents will be purely backed by the AI chat models behavior and will not store any state in the server._

```csharp
using Microsoft.Agents.AI;

services.TryAddAWSService<IAmazonBedrockRuntime>();
var serviceProvider = services.BuildServiceProvider();
IAmazonBedrockRuntime runtime = serviceProvider.GetRequiredService<IAmazonBedrockRuntime>();

using var bedrockChatClient = runtime.AsIChatClient();
AIAgent agent = new ChatClientAgent(bedrockChatClient, instructions: "You are a helpful assistant");
```
</behavioral_changes>

### Unsupported Features that need workarounds

<behavioral_changes>
The following Semantic Kernel Agents features currently don't have direct equivalents in Agent Framework:

#### Plugins Migration

**Problem**: Semantic Kernel plugins allowed multiple functions to be registered under a type or object instance

**Semantic Kernel pattern**
```csharp
// Create plugin with multiple functions
public class WeatherPlugin
{
    [KernelFunction, Description("Get current weather")]
    public string GetCurrentWeather(string location) 
        => $"Weather in {location}: Sunny";

    [KernelFunction, Description("Get weather forecast")]
    public static Task<string> GetForecastAsync(string location, int days) 
        => Task.FromResult($"Forecast for {location}: {days} days");
}

kernel.Plugins.AddFromType<WeatherPlugin>();
// OR
kernel.Plugins.AddFromObject(new WeatherPlugin());
```

**Agent Framework workaround:**

```csharp
// Create individual functions (no plugin grouping)
public class WeatherFunctions
{
    [Description("Get current weather")]
    public static string GetCurrentWeather(string location) 
        => $"Weather in {location}: Sunny";

    [Description("Get weather forecast")]
    public Task<string> GetForecastAsync(string location, int days) 
        => Task.FromResult($"Forecast for {location}: {days} days");
}

var weatherService = new WeatherFunctions();

// Register functions individually as tools
AITool[] tools = [
    AIFunctionFactory.Create(WeatherFunctions.GetCurrentWeather), // Get from type static method
    AIFunctionFactory.Create(weatherService.GetForecastAsync) // Get from instance method
];

// OR Iterate over the type or instance if many functions are needed for registration
AITool[] tools =
[
    .. typeof(WeatherFunctions)
        .GetMethods(BindingFlags.Static | BindingFlags.Public)
        .Select((m) => AIFunctionFactory.Create(m, target: null)), // Get from type static methods
    .. weatherService.GetType()
        .GetMethods(BindingFlags.Instance | BindingFlags.Public)
        .Select((m) => AIFunctionFactory.Create(m, target: weatherService)) // Get from instance methods
];

AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(
        instructions: "You are a weather assistant",
        tools: tools);
```

#### Prompt Template Migration

**Problem**: Agent prompt templating is not yet supported in Agent Framework

**Semantic Kernel pattern**
```csharp
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;

var template = "Tell a story about {{$topic}} that is {{$length}} sentences long.";

ChatCompletionAgent agent =
    new(templateFactory: new KernelPromptTemplateFactory(),
        templateConfig: new(template) { TemplateFormat = PromptTemplateConfig.SemanticKernelTemplateFormat })
    {
        Kernel = kernel,
        Name = "StoryTeller",
        Arguments = new KernelArguments()
        {
            { "topic", "Dog" },
            { "length", "3" },
        }
    };
```

**Agent Framework workaround**

```csharp
using Microsoft.Agents.AI;
using Microsoft.SemanticKernel; 

// Manually render template
var template = "Tell a story about {{$topic}} that is {{$length}} sentences long.";

var renderedTemplate = await new KernelPromptTemplateFactory()
    .Create(new PromptTemplateConfig(template))
    .RenderAsync(new Kernel(), new KernelArguments()
    {
        ["topic"] = "Dog",
        ["length"] = "3"
    });

AIAgent agent = new OpenAIClient(apiKey)
    .GetChatClient(modelId)
    .CreateAIAgent(instructions: renderedTemplate);

// No template variables in invocation - use plain string
var result = await agent.RunAsync("What's the weather?", thread);
Console.WriteLine(result);
```
</behavioral_changes>

### 9. Function Invocation Filtering

**Invocation Context**

Semantic Kernel's `IAutoFunctionInvocationFilter` provides a `AutoFunctionInvocationContext` where Agent Framework provides `FunctionInvocationContext` 

The property mapping guide from a `AutoFunctionInvocationContext` to a `FunctionInvocationContext` is as follows:

| SK | AF |
| --- | --- |
| RequestSequenceIndex | Iteration |
| FunctionSequenceIndex | FunctionCallIndex |
| ToolCallId | CallContent.CallId |
| ChatMessageContent | Messages[0] |
| ExecutionSettings | Options |
| ChatHistory | Messages |
| Function | Function |
| Kernel | N/A |
| Result | Use `return` from the delegate |
| Terminate | Terminate |
| CancellationToken | provided via argument to middleware delegate |
| Arguments | Arguments |

#### Semantic Kernel

```csharp
// Filter specifically for functions calling
public sealed class CustomAutoFunctionInvocationFilter : IAutoFunctionInvocationFilter
{
    public async Task OnAutoFunctionInvocationAsync(AutoFunctionInvocationContext context, Func<AutoFunctionInvocationContext, Task> next)
    {
        Console.WriteLine($"[SK Auto Filter] Auto-invoking function: {context.Function.Name}");

        // Check if function should be auto-invoked
        if (context.Function.Name.Contains("Dangerous"))
        {
            Console.WriteLine($"[SK Auto Filter] Skipping dangerous function: {context.Function.Name}");
            context.Terminate = true;
            return;
        }

        await next(context);

        Console.WriteLine($"[SK Auto Filter] Auto-invocation completed for: {context.Function.Name}");
    }
}

var builder = Kernel.CreateBuilder()
    .AddOpenAIChatClient(modelId, apiKey);
    
// via builder DI
var builder = Kernel.CreateBuilder()
    .AddOpenAIChatClient(modelId, apiKey)
    .Services
    .AddSingleton<IAutoFunctionInvocationFilter, CustomAutoFunctionInvocationFilter>();

// OR via DI
services
    .AddKernel()
    .AddOpenAIChatClient(modelId, apiKey)
    .AddSingleton<IAutoFunctionInvocationFilter, CustomAutoFunctionInvocationFilter>();

// OR register auto function filter directly with the kernel instance
kernel.AutoFunctionInvocationFilters.Add(new CustomAutoFunctionInvocationFilter());

// Create agent with filtered kernel
ChatCompletionAgent agent = new()
{
    Instructions = "You are a helpful assistant",
    Kernel = kernel
};
```

#### Agent Framework

Agent Framework provides function calling middleware that offers equivalent capabilities to Semantic Kernel's auto function invocation filters:

```csharp
// Function calling middleware equivalent to CustomAutoFunctionInvocationFilter
async ValueTask<object?> CustomAutoFunctionMiddleware(
    AIAgent agent,
    FunctionInvocationContext context,
    Func<FunctionInvocationContext, CancellationToken, ValueTask<object?>> next,
    CancellationToken cancellationToken)
{
    Console.WriteLine($"[AF Middleware] Auto-invoking function: {context.Function.Name}");

    // Check if function should be auto-invoked
    if (context.Function.Name.Contains("Dangerous"))
    {
        Console.WriteLine($"[AF Middleware] Skipping dangerous function: {context.Function.Name}");
        context.Terminate = true;
        return "Function execution blocked for security reasons";
    }

    var result = await next(context, cancellationToken);

    Console.WriteLine($"[AF Middleware] Auto-invocation completed for: {context.Function.Name}");
    return result;
}

// Apply middleware to agent
var filteredAgent = originalAgent
    .AsBuilder()
    .Use(CustomAutoFunctionMiddleware)
    .Build();
```




================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# CodeQL is the code analysis engine developed by GitHub to automate security checks.
# The results are shown as code scanning alerts in GitHub. For more details, visit:
# https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql

name: "CodeQL"

on:
  workflow_dispatch:
  push:
    # TODO: Add "feature*" back in again, once we determine the cause of the ongoing CodeQL failures.
    branches: ["main", "experimental*", "*-development"]
  schedule:
    - cron: "17 11 * * 2"

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: ["csharp", "python"]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
        # Use only 'java' to analyze code written in Java, Kotlin or both
        # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
        # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          persist-credentials: false

      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: ${{ matrix.language }}
          # If you wish to specify custom queries, you can do so here or in a config file.
          # By default, queries listed here will override any specified in a config file.
          # Prefix the list here with "+" to use these queries and those in the config file.

          # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
          # queries: security-extended,security-and-quality

      # Autobuild attempts to build any compiled languages  (C/C++, C#, Go, or Java).
      # If this step fails, then you should remove it and run the build manually (see below)
      - name: Autobuild
        uses: github/codeql-action/autobuild@v4

      # ℹ️ Command-line programs to run using the OS shell.
      # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun

      #   If the Autobuild fails above, remove it and uncomment the following three lines.
      #   modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.

      # - run: |
      #     echo "Run, Build Application using script"
      #     ./location_of_script_within_repo/buildscript.sh

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
        with:
          category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/dotnet-build-and-test.yml
================================================
#
# This workflow will build all .slnx files in the dotnet folder, and run all unit tests and integration tests using dotnet docker containers,
# each targeting a single version of the dotnet SDK.
#

name: dotnet-build-and-test

on:
  workflow_dispatch:
  pull_request:
    branches: ["main", "feature*"]
  merge_group:
    branches: ["main", "feature*"]
  push:
    branches: ["main", "feature*"]
  schedule:
    - cron: "0 0 * * *" # Run at midnight UTC daily

env:
  COVERAGE_THRESHOLD: 80
  COVERAGE_FRAMEWORK: net10.0 # framework target for which we run/report code coverage

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

permissions:
  contents: read
  id-token: "write"

jobs:
  paths-filter:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
    outputs:
      dotnetChanges: ${{ steps.filter.outputs.dotnet }}
      cosmosDbChanges: ${{ steps.filter.outputs.cosmosdb }}
    steps:
      - uses: actions/checkout@v6
      - uses: dorny/paths-filter@v3
        id: filter
        with:
          filters: |
            dotnet:
              - 'dotnet/**'
            cosmosdb:
              - 'dotnet/src/Microsoft.Agents.AI.CosmosNoSql/**'
      # run only if 'dotnet' files were changed
      - name: dotnet tests
        if: steps.filter.outputs.dotnet == 'true'
        run: echo "Dotnet file"
      - name: dotnet CosmosDB tests
        if: steps.filter.outputs.cosmosdb == 'true'
        run: echo "Dotnet CosmosDB changes"
      # run only if not 'dotnet' files were changed
      - name: not dotnet tests
        if: steps.filter.outputs.dotnet != 'true'
        run: echo "NOT dotnet file"

  # Build the full solution (including samples) on all TFMs. No tests.
  dotnet-build:
    needs: paths-filter
    if: needs.paths-filter.outputs.dotnetChanges == 'true'
    strategy:
      fail-fast: false
      matrix:
        include:
          - { targetFramework: "net10.0", os: "ubuntu-latest", configuration: Release }
          - { targetFramework: "net9.0", os: "windows-latest", configuration: Debug }
          - { targetFramework: "net8.0", os: "ubuntu-latest", configuration: Release }
          - { targetFramework: "net472", os: "windows-latest", configuration: Release }

    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v6
        with:
            persist-credentials: false
            sparse-checkout: |
              .
              .github
              dotnet
              python
              workflow-samples

      - name: Setup dotnet
        uses: actions/setup-dotnet@v5.2.0
        with:
          global-json-file: ${{ github.workspace }}/dotnet/global.json
      - name: Build dotnet solutions
        shell: bash
        run: |
          export SOLUTIONS=$(find ./dotnet/ -type f -name "*.slnx" | tr '\n' ' ')
          for solution in $SOLUTIONS; do
            dotnet build $solution -c ${{ matrix.configuration }} --warnaserror
          done
      - name: Package install check
        shell: bash
        # All frameworks are only built for the release configuration, so we only run this step for the release configuration
        # and dotnet new doesn't support net472
        if: matrix.configuration == 'Release' && matrix.targetFramework != 'net472'
        run: |
          TEMP_DIR=$(mktemp -d)

          export SOLUTIONS=$(find ./dotnet/ -type f -name "*.slnx" | tr '\n' ' ')
          for solution in $SOLUTIONS; do
            dotnet pack $solution /property:TargetFrameworks=${{ matrix.targetFramework }} -c ${{ matrix.configuration }} --no-build --no-restore --output "$TEMP_DIR/artifacts"
          done

          pushd "$TEMP_DIR"

          # Create a new console app to test the package installation
          dotnet new console -f ${{ matrix.targetFramework }} --name packcheck --output consoleapp

          # Create minimal nuget.config and use only dotnet nuget commands
          echo '<?xml version="1.0" encoding="utf-8"?><configuration><packageSources><clear /></packageSources></configuration>' > consoleapp/nuget.config

          # Add sources with local first using dotnet nuget commands
          dotnet nuget add source ../artifacts --name local --configfile consoleapp/nuget.config
          dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org --configfile consoleapp/nuget.config

          # Change to project directory to ensure local nuget.config is used
          pushd consoleapp
          dotnet add packcheck.csproj package Microsoft.Agents.AI --prerelease
          dotnet build -f ${{ matrix.targetFramework }} -c ${{ matrix.configuration }} packcheck.csproj

          # Clean up
          popd
          popd
          rm -rf "$TEMP_DIR"

  # Build src+tests only (no samples) for a single TFM and run tests.
  dotnet-test:
    needs: paths-filter
    if: needs.paths-filter.outputs.dotnetChanges == 'true'
    strategy:
      fail-fast: false
      matrix:
        include:
          - { targetFramework: "net10.0", os: "ubuntu-latest", configuration: Release, integration-tests: true, environment: "integration" }
          - { targetFramework: "net472", os: "windows-latest", configuration: Release, integration-tests: true, environment: "integration" }

    runs-on: ${{ matrix.os }}
    environment: ${{ matrix.environment }}
    steps:
      - uses: actions/checkout@v6
        with:
            persist-credentials: false
            sparse-checkout: |
              .
              .github
              dotnet
              python
              workflow-samples

      # Start Cosmos DB Emulator for all integration tests and only for unit tests when CosmosDB changes happened)
      - name: Start Azure Cosmos DB Emulator
        if: ${{ runner.os == 'Windows' && (needs.paths-filter.outputs.cosmosDbChanges == 'true' || (github.event_name != 'pull_request' && matrix.integration-tests)) }}
        shell: pwsh
        run: |
          Write-Host "Launching Azure Cosmos DB Emulator"
          Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
          Start-CosmosDbEmulator -NoUI -Key "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
          echo "COSMOSDB_EMULATOR_AVAILABLE=true" >> $env:GITHUB_ENV

      - name: Setup dotnet
        uses: actions/setup-dotnet@v5.2.0
        with:
          global-json-file: ${{ github.workspace }}/dotnet/global.json

      - name: Generate test solution (no samples)
        shell: pwsh
        run: |
          ./dotnet/eng/scripts/New-FilteredSolution.ps1 `
            -Solution dotnet/agent-framework-dotnet.slnx `
            -TargetFramework ${{ matrix.targetFramework }} `
            -Configuration ${{ matrix.configuration }} `
            -ExcludeSamples `
            -OutputPath dotnet/filtered.slnx `
            -Verbose

      - name: Build src and tests
        shell: bash
        run: dotnet build dotnet/filtered.slnx -c ${{ matrix.configuration }} -f ${{ matrix.targetFramework }} --warnaserror

      - name: Generate test-type filtered solutions
        shell: pwsh
        run: |
          $commonArgs = @{
            Solution       = "dotnet/filtered.slnx"
            TargetFramework = "${{ matrix.targetFramework }}"
            Configuration   = "${{ matrix.configuration }}"
            Verbose         = $true
          }
          ./dotnet/eng/scripts/New-FilteredSolution.ps1 @commonArgs `
            -TestProjectNameFilter "*UnitTests*" `
            -OutputPath dotnet/filtered-unit.slnx
          ./dotnet/eng/scripts/New-FilteredSolution.ps1 @commonArgs `
            -TestProjectNameFilter "*IntegrationTests*" `
            -OutputPath dotnet/filtered-integration.slnx

      - name: Run Unit Tests
        shell: pwsh
        working-directory: dotnet
        run: |
          $coverageSettings = Join-Path $PWD "tests/coverage.runsettings"
          $coverageArgs = @()
          if ("${{ matrix.targetFramework }}" -eq "${{ env.COVERAGE_FRAMEWORK }}") {
            $coverageArgs = @(
              "--coverage",
              "--coverage-output-format", "cobertura",
              "--coverage-settings", $coverageSettings,
              "--results-directory", "../TestResults/Coverage/"
            )
          }

          dotnet test --solution ./filtered-unit.slnx `
            -f ${{ matrix.targetFramework }} `
            -c ${{ matrix.configuration }} `
            --no-build -v Normal `
            --report-xunit-trx `
            --ignore-exit-code 8 `
            @coverageArgs
        env:
          # Cosmos DB Emulator connection settings
          COSMOSDB_ENDPOINT: https://localhost:8081
          COSMOSDB_KEY: C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

      - name: Log event name and matrix integration-tests
        shell: bash
        run: echo "github.event_name:${{ github.event_name }} matrix.integration-tests:${{ matrix.integration-tests }} github.event.action:${{ github.event.action }} github.event.pull_request.merged:${{ github.event.pull_request.merged }}"

      - name: Azure CLI Login
        if: github.event_name != 'pull_request' && matrix.integration-tests
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

        # This setup action is required for both Durable Task and Azure Functions integration tests.
        # We only run it on Ubuntu since the Durable Task and Azure Functions features are not available
        # on .NET Framework (net472) which is what we use the Windows runner for.
      - name: Set up Durable Task and Azure Functions Integration Test Emulators
        if: github.event_name != 'pull_request' && matrix.integration-tests && matrix.os == 'ubuntu-latest'
        uses: ./.github/actions/azure-functions-integration-setup
        id: azure-functions-setup

      - name: Run Integration Tests
        shell: pwsh
        working-directory: dotnet
        if: github.event_name != 'pull_request' && matrix.integration-tests
        run: |
          dotnet test --solution ./filtered-integration.slnx `
            -f ${{ matrix.targetFramework }} `
            -c ${{ matrix.configuration }} `
            --no-build -v Normal `
            --report-xunit-trx `
            --ignore-exit-code 8 `
            --filter-not-trait "Category=IntegrationDisabled" `
            --parallel-algorithm aggressive `
            --max-threads 2.0x
        env:
          # Cosmos DB Emulator connection settings
          COSMOSDB_ENDPOINT: https://localhost:8081
          COSMOSDB_KEY: C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
          # OpenAI Models
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          OPENAI_CHAT_MODEL_NAME: ${{ vars.OPENAI_CHAT_MODEL_NAME }}
          OPENAI_REASONING_MODEL_NAME: ${{ vars.OPENAI_REASONING_MODEL_NAME }}
          # Azure OpenAI Models
          AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME }}
          AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME }}
          AZURE_OPENAI_ENDPOINT: ${{ vars.AZURE_OPENAI_ENDPOINT }}
          # Azure AI Foundry
          AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
          AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZURE_AI_MODEL_DEPLOYMENT_NAME }}
          AZURE_AI_BING_CONNECTION_ID: ${{ vars.AZURE_AI_BING_CONNECTION_ID }}

      # Generate test reports and check coverage
      - name: Generate test reports
        if: matrix.targetFramework == env.COVERAGE_FRAMEWORK
        uses: danielpalme/ReportGenerator-GitHub-Action@5.5.3
        with:
          reports: "./TestResults/Coverage/**/*.cobertura.xml"
          targetdir: "./TestResults/Reports"
          reporttypes: "HtmlInline;JsonSummary"

      - name: Upload coverage report artifact
        if: matrix.targetFramework == env.COVERAGE_FRAMEWORK
        uses: actions/upload-artifact@v7
        with:
          name: CoverageReport-${{ matrix.os }}-${{ matrix.targetFramework }}-${{ matrix.configuration }} # Artifact name
          path: ./TestResults/Reports # Directory containing files to upload

      - name: Check coverage
        if: matrix.targetFramework == env.COVERAGE_FRAMEWORK
        shell: pwsh
        run: ./dotnet/eng/scripts/dotnet-check-coverage.ps1 -JsonReportPath "TestResults/Reports/Summary.json" -CoverageThreshold $env:COVERAGE_THRESHOLD

  # This final job is required to satisfy the merge queue. It must only run (or succeed) if no tests failed
  dotnet-build-and-test-check:
    if: always()
    runs-on: ubuntu-latest
    needs: [dotnet-build, dotnet-test]
    steps:
      - name: Get Date
        shell: bash
        run: |
          echo "date=$(date +'%m/%d/%Y %H:%M:%S')" >> "$GITHUB_ENV"

      - name: Run Type is Daily
        if: ${{ github.event_name == 'schedule' }}
        shell: bash
        run: |
          echo "run_type=Daily" >> "$GITHUB_ENV"

      - name: Run Type is Manual
        if: ${{ github.event_name == 'workflow_dispatch' }}
        shell: bash
        run: |
          echo "run_type=Manual" >> "$GITHUB_ENV"

      - name: Run Type is ${{ github.event_name }}
        if: ${{ github.event_name != 'schedule' && github.event_name != 'workflow_dispatch'}}
        shell: bash
        run: |
          echo "run_type=${{ github.event_name }}" >> "$GITHUB_ENV"

      - name: Fail workflow if tests failed
        id: check_tests_failed
        if: contains(join(needs.*.result, ','), 'failure')
        uses: actions/github-script@v8
        with:
          script: core.setFailed('Integration Tests Failed!')

      - name: Fail workflow if tests cancelled
        id: check_tests_cancelled
        if: contains(join(needs.*.result, ','), 'cancelled')
        uses: actions/github-script@v8
        with:
          script: core.setFailed('Integration Tests Cancelled!')


================================================
FILE: .github/workflows/dotnet-format.yml
================================================
#
# This workflow runs the dotnet formatter on all c-sharp code.
#

name: dotnet-format

on:
  workflow_dispatch:
  pull_request:
    branches: ["main", "feature*"]
    paths:
      - dotnet/**
      - '.github/workflows/dotnet-format.yml'

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  check-format:
    strategy:
      fail-fast: false
      matrix:
        include:
          - { dotnet: "10.0", configuration: Release, os: ubuntu-latest }

    runs-on: ${{ matrix.os }}
    env:
      NUGET_CERT_REVOCATION_MODE: offline

    steps:
      - name: Check out code
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          persist-credentials: false
          sparse-checkout: |
            .
            .github
            dotnet

      - name: Get changed files
        id: changed-files
        if: github.event_name == 'pull_request'
        uses: jitterbit/get-changed-files@v1
        continue-on-error: true

      - name: No C# files changed
        id: no-csharp
        if: github.event_name == 'pull_request' && steps.changed-files.outputs.added_modified == ''
        run: echo "No C# files changed"

      # This step will loop over the changed files and find the nearest .csproj file for each one, then store the unique csproj files in a variable
      - name: Find csproj files
        id: find-csproj
        if: github.event_name != 'pull_request' || steps.changed-files.outputs.added_modified != '' || steps.changed-files.outcome == 'failure'
        run: |
          csproj_files=()
          exclude_files=("Experimental.Orchestration.Flow.csproj" "Experimental.Orchestration.Flow.UnitTests.csproj" "Experimental.Orchestration.Flow.IntegrationTests.csproj")
          if [[ ${{ steps.changed-files.outcome }} == 'success' ]]; then
            for file in ${{ steps.changed-files.outputs.added_modified }}; do
              echo "$file was changed"
              dir="./$file"
              while [[ $dir != "." && $dir != "/" && $dir != $GITHUB_WORKSPACE ]]; do
                if find "$dir" -maxdepth 1 -name "*.csproj" -print -quit | grep -q .; then
                  csproj_path="$(find "$dir" -maxdepth 1 -name "*.csproj" -print -quit)"
                  if [[ ! "${exclude_files[@]}" =~ "${csproj_path##*/}" ]]; then
                    csproj_files+=("$csproj_path")
                  fi
                  break
                fi

                dir=$(echo ${dir%/*})
              done
            done
          else
            # if the changed-files step failed, run dotnet on the whole slnx instead of specific projects
            csproj_files=$(find ./ -type f -name "*.slnx" | tr '\n' ' ');
          fi
          csproj_files=($(printf "%s\n" "${csproj_files[@]}" | sort -u))
          echo "Found ${#csproj_files[@]} unique csproj/slnx files: ${csproj_files[*]}"
          echo "csproj_files=${csproj_files[*]}" >> $GITHUB_OUTPUT

      - name: Pull container dotnet/sdk:${{ matrix.dotnet }}
        if: steps.find-csproj.outputs.csproj_files != ''
        run: docker pull mcr.microsoft.com/dotnet/sdk:${{ matrix.dotnet }}

      # This step will run dotnet format on each of the unique csproj files and fail if any changes are made
      - name: Run dotnet format
        if: steps.find-csproj.outputs.csproj_files != ''
        run: |
          for csproj in ${{ steps.find-csproj.outputs.csproj_files }}; do
            echo "Running dotnet format on $csproj"
            docker run --rm -v $(pwd):/app -w /app mcr.microsoft.com/dotnet/sdk:${{ matrix.dotnet }} /bin/sh -c "dotnet format $csproj --verify-no-changes --verbosity diagnostic"
          done


================================================
FILE: .github/workflows/dotnet-integration-tests.yml
================================================
#
# Dedicated .NET integration tests workflow, called from the manual integration test orchestrator.
# Only runs integration test matrix entries (net10.0 and net472).
#

name: dotnet-integration-tests

on:
  workflow_call:
    inputs:
      checkout-ref:
        description: "Git ref to checkout (e.g., refs/pull/123/head)"
        required: true
        type: string

permissions:
  contents: read
  id-token: write

jobs:
  dotnet-integration-tests:
    strategy:
      fail-fast: false
      matrix:
        include:
          - { targetFramework: "net10.0", os: "ubuntu-latest", configuration: Release }
          - { targetFramework: "net472", os: "windows-latest", configuration: Release }
    runs-on: ${{ matrix.os }}
    environment: integration
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
          sparse-checkout: |
            .
            .github
            dotnet
            python
            workflow-samples

      - name: Start Azure Cosmos DB Emulator
        if: runner.os == 'Windows'
        shell: pwsh
        run: |
          Write-Host "Launching Azure Cosmos DB Emulator"
          Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
          Start-CosmosDbEmulator -NoUI -Key "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
          echo "COSMOS_EMULATOR_AVAILABLE=true" >> $env:GITHUB_ENV

      - name: Setup dotnet
        uses: actions/setup-dotnet@v5.2.0
        with:
          global-json-file: ${{ github.workspace }}/dotnet/global.json

      - name: Build dotnet solutions
        shell: bash
        run: |
          export SOLUTIONS=$(find ./dotnet/ -type f -name "*.slnx" | tr '\n' ' ')
          for solution in $SOLUTIONS; do
            dotnet build $solution -c ${{ matrix.configuration }} --warnaserror
          done

      - name: Azure CLI Login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Set up Durable Task and Azure Functions Integration Test Emulators
        if: matrix.os == 'ubuntu-latest'
        uses: ./.github/actions/azure-functions-integration-setup

      - name: Run Integration Tests
        shell: bash
        run: |
          export INTEGRATION_TEST_PROJECTS=$(find ./dotnet -type f -name "*IntegrationTests.csproj" | tr '\n' ' ')
          for project in $INTEGRATION_TEST_PROJECTS; do
            target_frameworks=$(dotnet msbuild $project -getProperty:TargetFrameworks -p:Configuration=${{ matrix.configuration }} -nologo 2>/dev/null | tr -d '\r')
            if [[ "$target_frameworks" == *"${{ matrix.targetFramework }}"* ]]; then
              dotnet test -f ${{ matrix.targetFramework }} -c ${{ matrix.configuration }} $project --no-build -v Normal --logger trx --filter "Category!=IntegrationDisabled"
            else
              echo "Skipping $project - does not support target framework ${{ matrix.targetFramework }} (supports: $target_frameworks)"
            fi
          done
        env:
          COSMOSDB_ENDPOINT: https://localhost:8081
          COSMOSDB_KEY: C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
          OpenAI__ApiKey: ${{ secrets.OPENAI__APIKEY }}
          OpenAI__ChatModelId: ${{ vars.OPENAI__CHATMODELID }}
          OpenAI__ChatReasoningModelId: ${{ vars.OPENAI__CHATREASONINGMODELID }}
          AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
          AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
          AzureAI__Endpoint: ${{ secrets.AZUREAI__ENDPOINT }}
          AzureAI__DeploymentName: ${{ vars.AZUREAI__DEPLOYMENTNAME }}
          AzureAI__BingConnectionId: ${{ vars.AZUREAI__BINGCONECTIONID }}
          FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT }}
          FOUNDRY_MEDIA_DEPLOYMENT_NAME: ${{ vars.FOUNDRY_MEDIA_DEPLOYMENT_NAME }}
          FOUNDRY_MODEL_DEPLOYMENT_NAME: ${{ vars.FOUNDRY_MODEL_DEPLOYMENT_NAME }}
          FOUNDRY_CONNECTION_GROUNDING_TOOL: ${{ vars.FOUNDRY_CONNECTION_GROUNDING_TOOL }}


================================================
FILE: .github/workflows/integration-tests-manual.yml
================================================
#
# This workflow allows manually running integration tests against an open PR or a branch.
# Go to Actions → "Integration Tests (Manual)" → Run workflow → enter a PR number or branch name.
#
# It calls dedicated integration-only workflows (dotnet-integration-tests and python-integration-tests),
# passing a ref so they check out and test the correct code.
# Changed paths are detected here so only the relevant test suites run.
#

name: Integration Tests (Manual)

on:
  workflow_dispatch:
    inputs:
      pr-number:
        description: "PR number to run integration tests against (leave empty if using branch)"
        required: false
        type: string
        default: ""
      branch:
        description: "Branch name to run integration tests against (leave empty if using PR number)"
        required: false
        type: string
        default: ""

permissions:
  contents: read
  pull-requests: read
  id-token: write

concurrency:
  group: integration-tests-manual-${{ github.event.inputs.pr-number || github.event.inputs.branch }}
  cancel-in-progress: true

jobs:
  resolve-ref:
    name: Resolve ref
    runs-on: ubuntu-latest
    outputs:
      checkout-ref: ${{ steps.resolve.outputs.checkout-ref }}
      dotnet-changes: ${{ steps.detect-changes.outputs.dotnet }}
      python-changes: ${{ steps.detect-changes.outputs.python }}
    steps:
      - name: Resolve checkout ref
        id: resolve
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.inputs.pr-number }}
          BRANCH: ${{ github.event.inputs.branch }}
          REPO: ${{ github.repository }}
        run: |
          if [ -n "$PR_NUMBER" ] && [ -n "$BRANCH" ]; then
            echo "::error::Please provide either a PR number or a branch name, not both."
            exit 1
          fi

          if [ -z "$PR_NUMBER" ] && [ -z "$BRANCH" ]; then
            echo "::error::Please provide either a PR number or a branch name."
            exit 1
          fi

          if [ -n "$PR_NUMBER" ]; then
            if ! echo "$PR_NUMBER" | grep -Eq '^[0-9]+$'; then
              echo "::error::Invalid PR number. Only numeric values are allowed."
              exit 1
            fi

            PR_DATA=$(gh pr view "$PR_NUMBER" --repo "$REPO" --json state)
            PR_STATE=$(echo "$PR_DATA" | jq -r '.state')

            if [ "$PR_STATE" != "OPEN" ]; then
              echo "::error::PR #$PR_NUMBER is not open (state: $PR_STATE)"
              exit 1
            fi

            echo "checkout-ref=refs/pull/$PR_NUMBER/head" >> "$GITHUB_OUTPUT"
            echo "Running integration tests for PR #$PR_NUMBER"
          else
            if ! echo "$BRANCH" | grep -Eq '^[a-zA-Z0-9_./-]+$'; then
              echo "::error::Invalid branch name. Only alphanumeric characters, hyphens, underscores, dots, and slashes are allowed."
              exit 1
            fi

            echo "checkout-ref=$BRANCH" >> "$GITHUB_OUTPUT"
            echo "Running integration tests for branch $BRANCH"
          fi

      - name: Detect changed paths
        id: detect-changes
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.inputs.pr-number }}
          BRANCH: ${{ github.event.inputs.branch }}
          REPO: ${{ github.repository }}
        run: |
          if [ -n "$PR_NUMBER" ]; then
            CHANGED_FILES=$(gh pr diff "$PR_NUMBER" --repo "$REPO" --name-only)
          else
            # For branches, compare against main using the GitHub API
            CHANGED_FILES=$(gh api "repos/$REPO/compare/main...$BRANCH" --jq '.files[].filename')
          fi

          DOTNET_CHANGES=false
          PYTHON_CHANGES=false

          if echo "$CHANGED_FILES" | grep -q '^dotnet/'; then
            DOTNET_CHANGES=true
          fi

          if echo "$CHANGED_FILES" | grep -q '^python/'; then
            PYTHON_CHANGES=true
          fi

          echo "dotnet=$DOTNET_CHANGES" >> "$GITHUB_OUTPUT"
          echo "python=$PYTHON_CHANGES" >> "$GITHUB_OUTPUT"
          echo "Detected changes — dotnet: $DOTNET_CHANGES, python: $PYTHON_CHANGES"

  dotnet-integration-tests:
    name: .NET Integration Tests
    needs: resolve-ref
    if: needs.resolve-ref.outputs.dotnet-changes == 'true'
    uses: ./.github/workflows/dotnet-integration-tests.yml
    with:
      checkout-ref: ${{ needs.resolve-ref.outputs.checkout-ref }}
    secrets: inherit

  python-integration-tests:
    name: Python Integration Tests
    needs: resolve-ref
    if: needs.resolve-ref.outputs.python-changes == 'true'
    uses: ./.github/workflows/python-integration-tests.yml
    with:
      checkout-ref: ${{ needs.resolve-ref.outputs.checkout-ref }}
    secrets: inherit


================================================
FILE: .github/workflows/label-issues.yml
================================================
name: Label issues
on:
  issues:
    types:
      - reopened
      - opened

jobs:
  label_issues:
    name: "Issue: add labels"
    if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' }}
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - uses: actions/github-script@v8
        with:
          github-token: ${{ secrets.GH_ACTIONS_PR_WRITE }}
          script: |
            // Get the issue body and title
            const body = context.payload.issue.body
            let title = context.payload.issue.title

            // Define the labels array
            let labels = []

            // Check if the issue author is in the agentframework-developers team
            let isTeamMember = false
            try {
              const teamMembership = await github.rest.teams.getMembershipForUserInOrg({
                org: context.repo.owner,
                team_slug: process.env.TEAM_NAME,
                username: context.payload.issue.user.login
              })
              console.log("Team Membership Data:", teamMembership);
              isTeamMember = teamMembership.data.state === 'active'
            } catch (error) {
              // User is not in the team or team doesn't exist
              console.error("Error fetching team membership:", error);
              isTeamMember = false
            }

            // Only add triage label if the author is not in the team
            if (!isTeamMember) {
              labels.push("triage")
            }

            // Helper function to extract field value from issue form body
            // Issue forms format fields as: ### Field Name\n\nValue
            function getFormFieldValue(body, fieldName) {
              if (!body) return null
              const regex = new RegExp(`###\\s*${fieldName}\\s*\\n\\n([^\\n#]+)`, 'i')
              const match = body.match(regex)
              return match ? match[1].trim() : null
            }

            // Check for language from issue form dropdown first
            const languageField = getFormFieldValue(body, 'Language')
            let languageLabelAdded = false

            if (languageField) {
              if (languageField === 'Python') {
                labels.push("python")
                languageLabelAdded = true
              } else if (languageField === '.NET') {
                labels.push(".NET")
                languageLabelAdded = true
              }
              // 'None / Not Applicable' - don't add any language label
            }

            // Fallback: Check if the body or the title contains the word 'python' (case-insensitive)
            // Only if language wasn't already determined from the form field
            if (!languageLabelAdded) {
              if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) {
                // Add the 'python' label to the array
                labels.push("python")
              }

              // Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive)
              if ((body != null && body.match(/\.net/i)) || (title != null && title.match(/\.net/i)) ||
                  (body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) ||
                  (body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) ||
                  (body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) {
                // Add the '.NET' label to the array
                labels.push(".NET")
              }
            }

            // Check for issue type from issue form dropdown
            const issueTypeField = getFormFieldValue(body, 'Type of Issue')
            if (issueTypeField) {
              if (issueTypeField === 'Bug') {
                labels.push("bug")
              } else if (issueTypeField === 'Feature Request') {
                labels.push("enhancement")
              } else if (issueTypeField === 'Question') {
                labels.push("question")
              }
            }

            // Add the labels to the issue (only if there are labels to add)
            if (labels.length > 0) {
              github.rest.issues.addLabels({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                labels: labels
              });
            }
        env:
          TEAM_NAME: ${{ secrets.DEVELOPER_TEAM }}


================================================
FILE: .github/workflows/label-pr.yml
================================================
# This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request.
#
# To use this workflow, you will need to set up a .github/labeler.yml
# file with configuration.  For more information, see:
# https://github.com/actions/labeler

name: Label pull request
on: [pull_request_target]

jobs:
  add_label:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/labeler@v6
        with:
          repo-token: "${{ secrets.GH_ACTIONS_PR_WRITE }}"


================================================
FILE: .github/workflows/label-title-prefix.yml
================================================
name: Label title prefix
on:
  issues:
    types: [labeled]
  pull_request_target:
    types: [labeled]

jobs:
  add_title_prefix:
    name: "Issue/PR: add title prefix"
    continue-on-error: true
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write

    steps:
      - uses: actions/github-script@v8
        name: "Issue/PR: update title"
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            let prefixLabels = {
              "python": "Python",
              ".NET": ".NET"
            };

            function addTitlePrefix(title, prefix)
            {
              // Update the title based on the label and prefix
              // Check if the title starts with the prefix (case-sensitive)
              if (!title.startsWith(prefix + ": ")) {
                // If not, check if the first word is the label (case-insensitive)
                if (title.match(new RegExp(`^${prefix}`, 'i'))) {
                  // If yes, replace it with the prefix (case-sensitive)
                  title = title.replace(new RegExp(`^${prefix}`, 'i'), prefix);
                } else {
                  // If not, prepend the prefix to the title
                  title = prefix + ": " + title;
                }
              }

              return title;
            }

            labelAdded = context.payload.label.name

            // Check if the issue or PR has the label
            if (labelAdded in prefixLabels) {
              let prefix = prefixLabels[labelAdded];
              switch(context.eventName) {
                case 'issues':
                  github.rest.issues.update({
                    issue_number: context.issue.number,
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    title: addTitlePrefix(context.payload.issue.title, prefix)
                  });
                  break

                case 'pull_request_target':
                  github.rest.pulls.update({
                    pull_number: context.issue.number,
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    title: addTitlePrefix(context.payload.pull_request.title, prefix)
                  });
                  break
                default:
                  core.setFailed('Unrecognited eventName: ' + context.eventName);
              }
            }


================================================
FILE: .github/workflows/markdown-link-check.yml
================================================
name: Check .md links

on:
  workflow_dispatch:
  pull_request:
    branches: ["main"]
    paths:
      - '**.md'
      - '.github/workflows/markdown-link-check.yml'
      - '.github/.linkspector.yml'
  schedule:
    - cron: "0 0 * * *" # Run at midnight UTC daily

permissions:
  contents: read

jobs:
  markdown-link-check:
    runs-on: ubuntu-22.04
    # check out the latest version of the code
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false

      # Checks the status of hyperlinks in all files
      - name: Run linkspector
        uses: umbrelladocs/action-linkspector@v1
        with:
          reporter: local
          filter_mode: nofilter
          fail_on_error: true
          config_file: ".github/.linkspector.yml"


================================================
FILE: .github/workflows/merge-gatekeeper.yml
================================================
name: Merge Gatekeeper

on:
  pull_request:
    branches: [ "main", "feature*" ]
  merge_group:
    branches: ["main"]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  merge-gatekeeper:
    runs-on: ubuntu-latest
    # Restrict permissions of the GITHUB_TOKEN.
    # Docs: https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
    permissions:
      checks: read
      statuses: read
    steps:
      - name: Run Merge Gatekeeper
        # NOTE: v1 is updated to reflect the latest v1.x.y. Please use any tag/branch that suits your needs:
        #       https://github.com/upsidr/merge-gatekeeper/tags
        #       https://github.com/upsidr/merge-gatekeeper/branches
        uses: upsidr/merge-gatekeeper@v1
        if: github.event_name == 'pull_request'
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          timeout: 3600
          interval: 30
          # "Cleanup artifacts", "Agent", "Prepare", and "Upload results" are check runs
          # created by an org-level GitHub App (MSDO), not by any workflow in this repo.
          # They are outside our control and their transient failures should not block merges.
          ignored: CodeQL,CodeQL analysis (csharp),Cleanup artifacts,Agent,Prepare,Upload results


================================================
FILE: .github/workflows/python-check-coverage.py
================================================
#!/usr/bin/env python3
# Copyright (c) Microsoft. All rights reserved.
"""Check Python test coverage against threshold for enforced targets.

This script parses a Cobertura XML coverage report and enforces a minimum
coverage threshold on specific targets. Targets can be package names
(e.g., "packages.core.agent_framework") or individual Python file paths
(e.g., "packages/core/agent_framework/observability.py").

Non-enforced targets are reported for visibility but don't block the build.

Usage:
    python python-check-coverage.py <coverage-xml-path> <threshold>

Example:
    python python-check-coverage.py python-coverage.xml 85
"""

import sys
import xml.etree.ElementTree as ET
from dataclasses import dataclass

# =============================================================================
# ENFORCED TARGETS CONFIGURATION
# =============================================================================
# Add or remove entries from this set to control which targets must meet
# the coverage threshold. Only these targets will fail the build if below
# threshold. Other targets are reported for visibility only.
#
# Target values can be:
# - Package paths as they appear in the coverage report
#   (e.g., "packages.azure-ai.agent_framework_azure_ai")
# - Python source file paths as they appear in the coverage report
#   (e.g., "packages/core/agent_framework/observability.py")
# =============================================================================
ENFORCED_TARGETS: set[str] = {
    # Packages
    "packages.azure-ai.agent_framework_azure_ai",
    "packages.core.agent_framework",
    "packages.core.agent_framework._workflows",
    "packages.purview.agent_framework_purview",
    "packages.anthropic.agent_framework_anthropic",
    "packages.azure-ai-search.agent_framework_azure_ai_search",
    "packages.core.agent_framework.azure",
    "packages.core.agent_framework.openai",
    # Individual files (if you want to enforce specific files instead of whole packages)
    "packages/core/agent_framework/observability.py",
    # Add more targets here as coverage improves
}


@dataclass
class PackageCoverage:
    """Coverage data for a single package."""

    name: str
    line_rate: float
    branch_rate: float
    lines_valid: int
    lines_covered: int
    branches_valid: int
    branches_covered: int

    @property
    def line_coverage_percent(self) -> float:
        """Return line coverage as a percentage."""
        return self.line_rate * 100

    @property
    def branch_coverage_percent(self) -> float:
        """Return branch coverage as a percentage."""
        return self.branch_rate * 100


def normalize_coverage_path(path: str) -> str:
    """Normalize coverage paths for reliable matching."""
    return path.replace("\\", "/").lstrip("./")


def parse_coverage_xml(
    xml_path: str,
) -> tuple[dict[str, PackageCoverage], dict[str, PackageCoverage], float, float]:
    """Parse Cobertura XML and extract per-package coverage data.

    Args:
        xml_path: Path to the Cobertura XML coverage report.

    Returns:
        A tuple of (packages_dict, files_dict, overall_line_rate, overall_branch_rate).
    """
    tree = ET.parse(xml_path)
    root = tree.getroot()

    # Get overall coverage from root element
    overall_line_rate = float(root.get("line-rate", 0))
    overall_branch_rate = float(root.get("branch-rate", 0))

    packages: dict[str, PackageCoverage] = {}
    file_stats: dict[str, dict[str, int]] = {}

    for package in root.findall(".//package"):
        package_path = package.get("name", "unknown")

        line_rate = float(package.get("line-rate", 0))
        branch_rate = float(package.get("branch-rate", 0))

        # Count lines and branches from classes within this package
        lines_valid = 0
        lines_covered = 0
        branches_valid = 0
        branches_covered = 0

        for class_elem in package.findall(".//class"):
            file_path = normalize_coverage_path(class_elem.get("filename", ""))
            if file_path and file_path not in file_stats:
                file_stats[file_path] = {
                    "lines_valid": 0,
                    "lines_covered": 0,
                    "branches_valid": 0,
                    "branches_covered": 0,
                }

            for line in class_elem.findall(".//line"):
                lines_valid += 1
                if int(line.get("hits", 0)) > 0:
                    lines_covered += 1

                if file_path:
                    file_stats[file_path]["lines_valid"] += 1
                    if int(line.get("hits", 0)) > 0:
                        file_stats[file_path]["lines_covered"] += 1

                # Branch coverage from line elements
                if line.get("branch") == "true":
                    condition_coverage = line.get("condition-coverage", "")
                    if condition_coverage:
                        # Parse "X% (covered/total)" format
                        try:
                            coverage_parts = (
                                condition_coverage.split("(")[1].rstrip(")").split("/")
                            )
                            branches_covered += int(coverage_parts[0])
                            branches_valid += int(coverage_parts[1])
                            if file_path:
                                file_stats[file_path]["branches_covered"] += int(
                                    coverage_parts[0]
                                )
                                file_stats[file_path]["branches_valid"] += int(
                                    coverage_parts[1]
                                )
                        except (IndexError, ValueError):
                            # Ignore malformed condition-coverage strings; treat this line as having no branch data.
                            pass

        # Use full package path as the key (no aggregation)
        packages[package_path] = PackageCoverage(
            name=package_path,
            line_rate=line_rate if lines_valid == 0 else lines_covered / lines_valid,
            branch_rate=branch_rate
            if branches_valid == 0
            else branches_covered / branches_valid,
            lines_valid=lines_valid,
            lines_covered=lines_covered,
            branches_valid=branches_valid,
            branches_covered=branches_covered,
        )

    files: dict[str, PackageCoverage] = {}
    for file_path, stats in file_stats.items():
        lines_valid = stats["lines_valid"]
        lines_covered = stats["lines_covered"]
        branches_valid = stats["branches_valid"]
        branches_covered = stats["branches_covered"]

        files[file_path] = PackageCoverage(
            name=file_path,
            line_rate=0 if lines_valid == 0 else lines_covered / lines_valid,
            branch_rate=0 if branches_valid == 0 else branches_covered / branches_valid,
            lines_valid=lines_valid,
            lines_covered=lines_covered,
            branches_valid=branches_valid,
            branches_covered=branches_covered,
        )

    return packages, files, overall_line_rate, overall_branch_rate


def format_coverage_value(coverage: float, threshold: float, is_enforced: bool) -> str:
    """Format a coverage value with optional pass/fail indicator.

    Args:
        coverage: Coverage percentage (0-100).
        threshold: Minimum required coverage percentage.
        is_enforced: Whether this target is enforced.

    Returns:
        Formatted string like "85.5%" or "85.5% ✅" or "75.0% ❌".
    """
    formatted = f"{coverage:.1f}%"
    if is_enforced:
        icon = "✅" if coverage >= threshold else "❌"
        formatted = f"{formatted} {icon}"
    return formatted


def print_coverage_table(
    packages: dict[str, PackageCoverage],
    files: dict[str, PackageCoverage],
    threshold: float,
    overall_line_rate: float,
    overall_branch_rate: float,
) -> None:
    """Print a formatted coverage summary table.

    Args:
        packages: Dictionary of package name to coverage data.
        files: Dictionary of file path to coverage data, used for per-file enforcement.
        threshold: Minimum required coverage percentage.
        overall_line_rate: Overall line coverage rate (0-1).
        overall_branch_rate: Overall branch coverage rate (0-1).
    """
    print("\n" + "=" * 80)
    print("PYTHON TEST COVERAGE REPORT")
    print("=" * 80)

    # Overall coverage
    print(f"\nOverall Line Coverage:   {overall_line_rate * 100:.1f}%")
    print(f"Overall Branch Coverage: {overall_branch_rate * 100:.1f}%")
    print(f"Threshold:               {threshold}%")

    enforced_targets = {normalize_coverage_path(t) for t in ENFORCED_TARGETS}

    # Package table
    print("\n" + "-" * 110)
    print(f"{'Package':<80} {'Lines':<15} {'Line Cov':<15}")
    print("-" * 110)

    # Sort: enforced package targets first, then alphabetically
    sorted_packages = sorted(
        packages.values(),
        key=lambda p: (p.name not in ENFORCED_TARGETS, p.name),
    )

    for pkg in sorted_packages:
        is_enforced = normalize_coverage_path(pkg.name) in enforced_targets
        enforced_marker = "[ENFORCED] " if is_enforced else ""
        line_cov = format_coverage_value(
            pkg.line_coverage_percent, threshold, is_enforced
        )
        lines_info = f"{pkg.lines_covered}/{pkg.lines_valid}"
        package_label = f"{enforced_marker}{pkg.name}"

        print(f"{package_label:<80} {lines_info:<15} {line_cov:<15}")

    print("-" * 110)

    # Enforced file/model entries (if configured)
    enforced_files = [
        files[target]
        for target in sorted(enforced_targets)
        if target in files and target.endswith(".py")
    ]

    if enforced_files:
        print("\nEnforced Files/Models")
        print("-" * 110)
        print(f"{'File':<80} {'Lines':<15} {'Line Cov':<15}")
        print("-" * 110)

        for file_cov in enforced_files:
            line_cov = format_coverage_value(
                file_cov.line_coverage_percent, threshold, True
            )
            lines_info = f"{file_cov.lines_covered}/{file_cov.lines_valid}"
            print(f"[ENFORCED] {file_cov.name:<69} {lines_info:<15} {line_cov:<15}")

        print("-" * 110)


def check_coverage(xml_path: str, threshold: float) -> bool:
    """Check if all enforced targets meet the coverage threshold.

    Args:
        xml_path: Path to the Cobertura XML coverage report.
        threshold: Minimum required coverage percentage.

    Returns:
        True if all enforced targets pass, False otherwise.
    """
    packages, files, overall_line_rate, overall_branch_rate = parse_coverage_xml(
        xml_path
    )

    print_coverage_table(
        packages, files, threshold, overall_line_rate, overall_branch_rate
    )

    # Check enforced targets
    failed_targets: list[str] = []
    missing_targets: list[str] = []

    for target_name in ENFORCED_TARGETS:
        normalized_target = normalize_coverage_path(target_name)
        package_alias = normalized_target.replace("/", ".")

        target_coverage = None
        if target_name in packages:
            target_coverage = packages[target_name]
        elif normalized_target in files:
            target_coverage = files[normalized_target]
        elif package_alias in packages:
            target_coverage = packages[package_alias]

        if target_coverage is None:
            missing_targets.append(target_name)
            continue

        if target_coverage.line_coverage_percent < threshold:
            failed_targets.append(
                f"{target_name} ({target_coverage.line_coverage_percent:.1f}%)"
            )

    # Report results
    if missing_targets:
        print(
            f"\n❌ FAILED: Enforced targets not found in coverage report: {', '.join(missing_targets)}"
        )
        return False

    if failed_targets:
        print(
            f"\n❌ FAILED: The following enforced targets are below {threshold}% coverage threshold:"
        )
        for target in failed_targets:
            print(f"   - {target}")
        print("\nTo fix: Add more tests to improve coverage for the failing targets.")
        return False

    if ENFORCED_TARGETS:
        found_enforced = [
            target
            for target in ENFORCED_TARGETS
            if target in packages or normalize_coverage_path(target) in files
        ]
        if found_enforced:
            print(
                f"\n✅ PASSED: All enforced targets meet the {threshold}% coverage threshold."
            )

    return True


def main() -> int:
    """Main entry point.

    Returns:
        Exit code: 0 for success, 1 for failure.
    """
    if len(sys.argv) != 3:
        print(f"Usage: {sys.argv[0]} <coverage-xml-path> <threshold>")
        print(f"Example: {sys.argv[0]} python-coverage.xml 85")
        return 1

    xml_path = sys.argv[1]
    try:
        threshold = float(sys.argv[2])
    except ValueError:
        print(f"Error: Invalid threshold value: {sys.argv[2]}")
        return 1

    try:
        success = check_coverage(xml_path, threshold)
        return 0 if success else 1
    except FileNotFoundError:
        print(f"Error: Coverage file not found: {xml_path}")
        return 1
    except ET.ParseError as e:
        print(f"Error: Failed to parse coverage XML: {e}")
        return 1


if __name__ == "__main__":
    sys.exit(main())


================================================
FILE: .github/workflows/python-code-quality.yml
================================================
name: Python - Code Quality
on:
  merge_group:
  workflow_dispatch:
  pull_request:
    branches: ["main"]
    paths:
      - "python/**"

env:
  # Configure a constant location for the uv cache
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  pre-commit-hooks:
    name: Pre-commit Hooks
    if: "!cancelled()"
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]
    runs-on: ubuntu-latest
    continue-on-error: true
    defaults:
      run:
        working-directory: ./python
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache
      - uses: actions/cache@v5
        with:
          path: ~/.cache/prek
          key: prek|${{ matrix.python-version }}|${{ hashFiles('python/.pre-commit-config.yaml') }}
      - uses: j178/prek-action@v1
        name: Run Pre-commit Hooks (excluding poe-check)
        env:
          SKIP: poe-check
        with:
          extra-args: --cd python --all-files

  package-checks:
    name: Package Checks
    if: "!cancelled()"
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]
    runs-on: ubuntu-latest
    continue-on-error: true
    defaults:
      run:
        working-directory: ./python
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache
      - name: Run syntax and pyright across packages
        run: uv run poe check-packages

  samples-markdown:
    name: Samples & Markdown
    if: "!cancelled()"
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]
    runs-on: ubuntu-latest
    continue-on-error: true
    defaults:
      run:
        working-directory: ./python
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache
      - name: Run samples checks
        run: uv run poe check -S
      - name: Run markdown code lint
        run: uv run poe markdown-code-lint

  mypy:
    name: Mypy Checks
    if: "!cancelled()"
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]
    runs-on: ubuntu-latest
    continue-on-error: true
    defaults:
      run:
        working-directory: ./python
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache
      - name: Run Mypy
        env:
          GITHUB_BASE_REF: ${{ github.event.pull_request.base.ref || github.base_ref || 'main' }}
        run: uv run python scripts/workspace_poe_tasks.py ci-mypy


================================================
FILE: .github/workflows/python-dependency-range-validation.yml
================================================
# Probe the highest allowed dependency versions, then open issues/PRs from the passing updates.
name: Python - Dependency Range Validation

on:
  workflow_dispatch:

permissions:
  contents: write
  issues: write
  pull-requests: write

env:
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  dependency-range-validation:
    name: Dependency Range Validation
    runs-on: ubuntu-latest
    env:
      # For now only run 3.13, if we do encounter situations where there are mismatches between packages and python versions (other then 3.10 and 3.14 which are known to not be able to install everything)
      # then we will have to reevaluate.
      UV_PYTHON: "3.13"
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Set up python and install the project
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache

      - name: Run dependency range validation
        id: validate_ranges
        # Keep workflow running so we can still publish diagnostics from this run.
        continue-on-error: true
        run: uv run poe validate-dependency-bounds-project --mode upper --package "*"
        working-directory: ./python

      - name: Upload dependency range report
        # Always publish the report so failures are inspectable even when validation fails.
        if: always()
        uses: actions/upload-artifact@v7
        with:
          name: dependency-range-results
          path: python/scripts/dependencies/dependency-range-results.json
          if-no-files-found: warn

      - name: Create issues for failed dependency candidates
        # Always process the report so failed candidates create actionable tracking issues.
        if: always()
        uses: actions/github-script@v8
        with:
          script: |
            const fs = require("fs")
            const reportPath = "python/scripts/dependencies/dependency-range-results.json"

            if (!fs.existsSync(reportPath)) {
              core.warning(`No dependency range report found at ${reportPath}`)
              return
            }

            const report = JSON.parse(fs.readFileSync(reportPath, "utf8"))
            const dependencyFailures = []

            for (const packageResult of report.packages ?? []) {
              for (const dependency of packageResult.dependencies ?? []) {
                const candidateVersions = new Set(dependency.candidate_versions ?? [])
                const failedAttempts = (dependency.attempts ?? []).filter(
                  (attempt) => attempt.status === "failed" && candidateVersions.has(attempt.trial_upper)
                )
                if (!failedAttempts.length) {
                  continue
                }

                const failuresByVersion = new Map()
                for (const attempt of failedAttempts) {
                  const version = attempt.trial_upper || "unknown"
                  if (!failuresByVersion.has(version)) {
                    failuresByVersion.set(version, attempt.error || "No error output captured.")
                  }
                }

                dependencyFailures.push({
                  packageName: packageResult.package_name,
                  projectPath: packageResult.project_path,
                  dependencyName: dependency.name,
                  originalRequirements: dependency.original_requirements ?? [],
                  finalRequirements: dependency.final_requirements ?? [],
                  failedVersions: [...failuresByVersion.entries()].map(([version, error]) => ({ version, error })),
                })
              }
            }

            if (!dependencyFailures.length) {
              core.info("No failing dependency candidates found.")
              return
            }

            const owner = context.repo.owner
            const repo = context.repo.repo
            const openIssues = await github.paginate(github.rest.issues.listForRepo, {
              owner,
              repo,
              state: "open",
              per_page: 100,
            })
            const openIssueTitles = new Set(
              openIssues.filter((issue) => !issue.pull_request).map((issue) => issue.title)
            )

            const formatError = (message) => String(message || "No error output captured.").replace(/```/g, "'''")

            for (const failure of dependencyFailures) {
              const title = `Dependency validation failed: ${failure.dependencyName} (${failure.packageName})`
              if (openIssueTitles.has(title)) {
                core.info(`Issue already exists: ${title}`)
                continue
              }

              const visibleFailures = failure.failedVersions.slice(0, 5)
              const omittedCount = failure.failedVersions.length - visibleFailures.length
              const failureDetails = visibleFailures
                .map(
                  (entry) =>
                    `- \`${entry.version}\`\n\n\`\`\`\n${formatError(entry.error).slice(0, 3500)}\n\`\`\``
                )
                .join("\n\n")

              const body = [
                "Automated dependency range validation found candidate versions that failed checks.",
                "",
                `- Package: \`${failure.packageName}\``,
                `- Project path: \`${failure.projectPath}\``,
                `- Dependency: \`${failure.dependencyName}\``,
                `- Original requirements: ${
                  failure.originalRequirements.length
                    ? failure.originalRequirements.map((value) => `\`${value}\``).join(", ")
                    : "_none_"
                }`,
                `- Final requirements after run: ${
                  failure.finalRequirements.length
                    ? failure.finalRequirements.map((value) => `\`${value}\``).join(", ")
                    : "_none_"
                }`,
                "",
                "### Failed versions and errors",
                failureDetails,
                omittedCount > 0 ? `\n_Additional failed versions omitted: ${omittedCount}_` : "",
                "",
                `Workflow run: ${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`,
              ].join("\n")

              await github.rest.issues.create({
                owner,
                repo,
                title,
                body,
              })
              openIssueTitles.add(title)
              core.info(`Created issue: ${title}`)
            }

      - name: Refresh lockfile
        # Only refresh lockfile after a clean validation to avoid committing known-bad ranges.
        if: steps.validate_ranges.outcome == 'success'
        run: uv lock --upgrade
        working-directory: ./python

      - name: Commit and push dependency updates
        id: commit_updates
        if: steps.validate_ranges.outcome == 'success'
        run: |
          BRANCH="automation/python-dependency-range-updates"

          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git checkout -B "${BRANCH}"

          git add python/packages/*/pyproject.toml python/uv.lock
          if git diff --cached --quiet; then
            echo "has_changes=false" >> "$GITHUB_OUTPUT"
            echo "No dependency updates to commit."
            exit 0
          fi

          git commit -m "chore: update dependency ranges"
          git push --force-with-lease --set-upstream origin "${BRANCH}"
          echo "has_changes=true" >> "$GITHUB_OUTPUT"

      - name: Create or update pull request with GitHub CLI
        # Only open/update PRs for validated updates to keep automation branches trustworthy.
        if: steps.validate_ranges.outcome == 'success' && steps.commit_updates.outputs.has_changes == 'true'
        run: |
          BRANCH="automation/python-dependency-range-updates"
          PR_TITLE="Python: chore: update dependency ranges"
          PR_BODY_FILE="$(mktemp)"

          cat > "${PR_BODY_FILE}" <<'EOF'
          This PR was generated by the dependency range validation workflow.

          - Ran `uv run poe validate-dependency-bounds-project --mode upper --package "*"`
          - Updated package dependency bounds
          - Refreshed `python/uv.lock` with `uv lock --upgrade`
          EOF

          PR_NUMBER="$(gh pr list --head "${BRANCH}" --base main --state open --json number --jq '.[0].number')"
          if [ -n "${PR_NUMBER}" ]; then
            gh pr edit "${PR_NUMBER}" --title "${PR_TITLE}" --body-file "${PR_BODY_FILE}"
          else
            gh pr create --base main --head "${BRANCH}" --title "${PR_TITLE}" --body-file "${PR_BODY_FILE}"
          fi


================================================
FILE: .github/workflows/python-dev-dependency-upgrade.yml
================================================
name: Python - Dev Dependency Upgrade

on:
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write

env:
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  upgrade-dev-dependencies:
    name: Upgrade Dev Dependencies
    runs-on: ubuntu-latest
    env:
      UV_PYTHON: "3.13"
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Set up python and install the project
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
        env:
          UV_CACHE_DIR: /tmp/.uv-cache

      - name: Upgrade dev dependencies and validate workspace
        run: uv run poe upgrade-dev-dependencies
        working-directory: ./python

      - name: Commit and push dev dependency updates
        id: commit_updates
        run: |
          BRANCH="automation/python-dev-dependency-updates"

          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git checkout -B "${BRANCH}"

          git add python/pyproject.toml python/packages/*/pyproject.toml python/uv.lock
          if git diff --cached --quiet; then
            echo "has_changes=false" >> "$GITHUB_OUTPUT"
            echo "No dev dependency updates to commit."
            exit 0
          fi

          git commit -F- <<'EOF'
          Python: chore: upgrade dev dependencies
          EOF
          git push --force-with-lease --set-upstream origin "${BRANCH}"
          echo "has_changes=true" >> "$GITHUB_OUTPUT"

      - name: Create or update pull request with GitHub CLI
        if: steps.commit_updates.outputs.has_changes == 'true'
        run: |
          BRANCH="automation/python-dev-dependency-updates"
          PR_TITLE="Python: chore: upgrade dev dependencies"
          PR_BODY_FILE="$(mktemp)"

          cat > "${PR_BODY_FILE}" <<'EOF'
          ### Motivation and Context

          This automated update refreshes Python dev dependency pins across the workspace and reruns the repo validation gates before opening a pull request.

          ### Description

          - Ran `uv run poe upgrade-dev-dependencies`
          - Refreshed dev dependency pins in workspace `pyproject.toml` files
          - Refreshed `python/uv.lock` with `uv lock --upgrade`
          - Reinstalled from the frozen lockfile and reran `check`, `typing`, and `test`

          ### Contribution Checklist

          - [x] The code builds clean without any errors or warnings
          - [x] The PR follows the [Contribution Guidelines](https://github.com/microsoft/agent-framework/blob/main/CONTRIBUTING.md)
          - [x] All unit tests pass, and I have added new tests where possible
          - [ ] **Is this a breaking change?** If yes, add "[BREAKING]" prefix to the title of the PR.
          EOF

          PR_NUMBER="$(gh pr list --head "${BRANCH}" --base main --state open --json number --jq '.[0].number')"
          if [ -n "${PR_NUMBER}" ]; then
            gh pr edit "${PR_NUMBER}" --title "${PR_TITLE}" --body-file "${PR_BODY_FILE}"
          else
            gh pr create --base main --head "${BRANCH}" --title "${PR_TITLE}" --body-file "${PR_BODY_FILE}"
          fi


================================================
FILE: .github/workflows/python-docs.yml
================================================
name: Python - Create Docs

on:
  workflow_dispatch:
  release:
    types: [published]

permissions:
  contents: write
  id-token: write
env:
  # Configure a constant location for the uv cache
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  python-build-docs:
    if: github.event_name == 'release' && startsWith(github.event.release.tag_name, 'python-')
    name: Python Build Docs
    runs-on: ubuntu-latest
    environment: "integration"
    env:
      UV_PYTHON: "3.11"
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up uv
        uses: astral-sh/setup-uv@v7
        with:
          version-file: "python/pyproject.toml"
          enable-cache: true
          cache-suffix: ${{ runner.os }}-${{ env.UV_PYTHON }}
          cache-dependency-glob: "**/uv.lock"
      - name: Install dependencies
        run: uv sync --all-packages --dev --docs
      - name: Build the docs
        run: uv run poe docs-full
    #  Upload docs to learn gh


================================================
FILE: .github/workflows/python-integration-tests.yml
================================================
#
# Dedicated Python integration tests workflow, called from the manual integration test orchestrator.
# Runs all tests (unit + integration) split into parallel jobs by provider.
#
# NOTE: This workflow and python-merge-tests.yml share the same set of parallel
# test jobs. Keep them in sync — when adding, removing, or modifying a job here,
# apply the same change to python-merge-tests.yml.
#

name: python-integration-tests

on:
  workflow_call:
    inputs:
      checkout-ref:
        description: "Git ref to checkout (e.g., refs/pull/123/head)"
        required: true
        type: string

permissions:
  contents: read
  id-token: write

env:
  UV_CACHE_DIR: /tmp/.uv-cache
  UV_PYTHON: "3.13"

jobs:
  # Unit tests: all non-integration tests across all packages
  python-tests-unit:
    name: Python Integration Tests - Unit
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (unit tests only)
        run: >
          uv run poe test -A
          -m "not integration"
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5

  # OpenAI integration tests
  python-tests-openai:
    name: Python Integration Tests - OpenAI
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    env:
      OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
      OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
      OPENAI_EMBEDDINGS_MODEL_ID: ${{ vars.OPENAI_EMBEDDING_MODEL_ID }}
      OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (OpenAI integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/core/tests/openai
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5

  # Azure OpenAI integration tests
  python-tests-azure-openai:
    name: Python Integration Tests - Azure OpenAI
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    env:
      AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
      AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
      AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__EMBEDDINGDEPLOYMENTNAME }}
      AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Test with pytest (Azure OpenAI integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/core/tests/azure
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5

  # Misc integration tests (Anthropic, Ollama, MCP)
  python-tests-misc-integration:
    name: Python Integration Tests - Misc
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    env:
      ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
      ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }}
      LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (Anthropic, Ollama, MCP integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/anthropic/tests
          packages/ollama/tests
          packages/core/tests/core/test_mcp.py
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5

  # Azure Functions + Durable Task integration tests
  python-tests-functions:
    name: Python Integration Tests - Functions
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    env:
      UV_PYTHON: "3.11"
      OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
      OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
      OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
      AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
      AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
      AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
      FUNCTIONS_WORKER_RUNTIME: "python"
      DURABLE_TASK_SCHEDULER_CONNECTION_STRING: "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
      AzureWebJobsStorage: "UseDevelopmentStorage=true"
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Set up Azure Functions Integration Test Emulators
        uses: ./.github/actions/azure-functions-integration-setup
        id: azure-functions-setup
      - name: Test with pytest (Functions + Durable Task integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/azurefunctions/tests/integration_tests
          packages/durabletask/tests/integration_tests
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5

  # Azure AI integration tests
  python-tests-azure-ai:
    name: Python Integration Tests - Azure AI
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    env:
      AZURE_AI_PROJECT_ENDPOINT: ${{ secrets.AZUREAI__ENDPOINT }}
      AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREAI__DEPLOYMENTNAME }}
      LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Test with pytest
        timeout-minutes: 15
        run: uv run --directory packages/azure-ai poe integration-tests -n logical --dist worksteal --timeout=120 --session-timeout=900 --timeout_method thread --retries 2 --retry-delay 5

  # Azure Cosmos integration tests
  python-tests-cosmos:
    name: Python Integration Tests - Cosmos
    runs-on: ubuntu-latest
    environment: integration
    timeout-minutes: 60
    services:
      cosmosdb:
        image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
        ports:
          - 8081:8081
    env:
      AZURE_COSMOS_ENDPOINT: "http://localhost:8081/"
      # Static Azure Cosmos DB emulator key (documented): https://learn.microsoft.com/en-us/azure/cosmos-db/emulator
      AZURE_COSMOS_KEY: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
      AZURE_COSMOS_DATABASE_NAME: "agent-framework-cosmos-it-db"
      AZURE_COSMOS_CONTAINER_NAME: "agent-framework-cosmos-it-container"
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.checkout-ref }}
          persist-credentials: false
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Wait for Cosmos DB emulator
        run: |
          for i in {1..60}; do
            if curl --silent --show-error http://localhost:8081/ > /dev/null; then
              echo "Cosmos DB emulator is ready."
              exit 0
            fi
            sleep 2
          done
          echo "Cosmos DB emulator did not become ready in time." >&2
          exit 1
      - name: Test with pytest (Cosmos integration)
        run: uv run --directory packages/azure-cosmos poe integration-tests -n logical --dist worksteal --timeout=120 --session-timeout=900 --timeout_method thread --retries 2 --retry-delay 5

  python-integration-tests-check:
    if: always()
    runs-on: ubuntu-latest
    needs:
      [
        python-tests-unit,
        python-tests-openai,
        python-tests-azure-openai,
        python-tests-misc-integration,
        python-tests-functions,
        python-tests-azure-ai,
        python-tests-cosmos
      ]
    steps:
      - name: Fail workflow if tests failed
        if: contains(join(needs.*.result, ','), 'failure')
        uses: actions/github-script@v8
        with:
          script: core.setFailed('Integration Tests Failed!')

      - name: Fail workflow if tests cancelled
        if: contains(join(needs.*.result, ','), 'cancelled')
        uses: actions/github-script@v8
        with:
          script: core.setFailed('Integration Tests Cancelled!')


================================================
FILE: .github/workflows/python-lab-tests.yml
================================================
name: Python - Lab Tests

on:
  workflow_dispatch:
  pull_request:
    branches: ["main"]
    paths:
      - "python/packages/lab/**"
  merge_group:
    branches: ["main"]
  schedule:
    - cron: "0 0 * * *" # Run at midnight UTC daily

env:
  # Configure a constant location for the uv cache
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  paths-filter:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
    outputs:
      pythonChanges: ${{ steps.filter.outputs.python}}
    steps:
      - uses: actions/checkout@v6
      - uses: dorny/paths-filter@v3
        id: filter
        with:
          filters: |
            python:
              - 'python/**'
      # run only if 'python' files were changed
      - name: python tests
        if: steps.filter.outputs.python == 'true'
        run: echo "Python file"
      # run only if not 'python' files were changed
      - name: not python tests
        if: steps.filter.outputs.python != 'true'
        run: echo "NOT python file"

  python-lab-tests:
    name: Python Lab Tests
    needs: paths-filter
    if: needs.paths-filter.outputs.pythonChanges == 'true'
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        # TODO(ekzhu): re-enable macos-latest when this is fixed: https://github.com/actions/runner-images/issues/11881
        os: [ubuntu-latest, windows-latest]
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    permissions:
      contents: read
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6

      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
          exclude-packages: ${{ matrix.python-version == '3.10' && 'agent-framework-github-copilot' || '' }}
        env:
          # Configure a constant location for the uv cache
          UV_CACHE_DIR: /tmp/.uv-cache

      # Lab specific tests
      - name: Run lab tests
        run: cd packages/lab && uv run poe test

      - name: Run resource-intensive lab tests
        run: cd packages/lab && uv run pytest -m "resource_intensive and not integration" --junitxml=test-results-resource-intensive.xml

      - name: Run lab lint
        run: cd packages/lab && uv run poe lint

      - name: Run lab format check
        run: cd packages/lab && uv run poe fmt --check

      - name: Run lab type checking
        run: cd packages/lab && uv run poe pyright

      - name: Run lab mypy
        run: cd packages/lab && uv run poe mypy

      # Surface failing tests
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/packages/lab/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Lab Test Results


================================================
FILE: .github/workflows/python-merge-tests.yml
================================================
name: Python - Merge - Tests
#
# NOTE: This workflow and python-integration-tests.yml share the same set of
# parallel test jobs. Keep them in sync — when adding, removing, or modifying a
# job here, apply the same change to python-integration-tests.yml.
#

on:
  workflow_dispatch:
  pull_request:
    branches: ["main"]
  merge_group:
    branches: ["main"]
  schedule:
    - cron: "0 0 * * *" # Run at midnight UTC daily

permissions:
  contents: read
  id-token: write

env:
  # Configure a constant location for the uv cache
  UV_CACHE_DIR: /tmp/.uv-cache
  UV_PYTHON: "3.13"
  RUN_SAMPLES_TESTS: ${{ vars.RUN_SAMPLES_TESTS }}

jobs:
  paths-filter:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
    outputs:
      pythonChanges: ${{ steps.filter.outputs.python }}
      coreChanged: ${{ steps.filter.outputs.core }}
      openaiChanged: ${{ steps.filter.outputs.openai }}
      azureChanged: ${{ steps.filter.outputs.azure }}
      miscChanged: ${{ steps.filter.outputs.misc }}
      functionsChanged: ${{ steps.filter.outputs.functions }}
      azureAiChanged: ${{ steps.filter.outputs.azure-ai }}
      cosmosChanged: ${{ steps.filter.outputs.cosmos }}
    steps:
      - uses: actions/checkout@v6
      - uses: dorny/paths-filter@v3
        id: filter
        with:
          filters: |
            python:
              - 'python/**'
            core:
              - 'python/packages/core/agent_framework/_*.py'
              - 'python/packages/core/agent_framework/_workflows/**'
              - 'python/packages/core/agent_framework/exceptions.py'
              - 'python/packages/core/agent_framework/observability.py'
            openai:
              - 'python/packages/core/agent_framework/openai/**'
              - 'python/packages/core/tests/openai/**'
            azure:
              - 'python/packages/core/agent_framework/azure/**'
              - 'python/packages/core/tests/azure/**'
            misc:
              - 'python/packages/anthropic/**'
              - 'python/packages/ollama/**'
              - 'python/packages/core/agent_framework/_mcp.py'
              - 'python/packages/core/tests/core/test_mcp.py'
            functions:
              - 'python/packages/azurefunctions/**'
              - 'python/packages/durabletask/**'
            azure-ai:
              - 'python/packages/azure-ai/**'
            cosmos:
              - 'python/packages/azure-cosmos/**'
      # run only if 'python' files were changed
      - name: python tests
        if: steps.filter.outputs.python == 'true'
        run: echo "Python file"
      # run only if not 'python' files were changed
      - name: not python tests
        if: steps.filter.outputs.python != 'true'
        run: echo "NOT python file"
  # Unit tests: always run all non-integration tests across all packages
  python-tests-unit:
    name: Python Tests - Unit
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true'
    runs-on: ubuntu-latest
    environment: integration
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (unit tests only)
        run: >
          uv run poe test -A
          -m "not integration"
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5
        working-directory: ./python
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Unit test results

  # OpenAI integration tests
  python-tests-openai:
    name: Python Tests - OpenAI Integration
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true' &&
      (github.event_name != 'merge_group' ||
       needs.paths-filter.outputs.openaiChanged == 'true' ||
       needs.paths-filter.outputs.coreChanged == 'true')
    runs-on: ubuntu-latest
    environment: integration
    env:
      OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
      OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
      OPENAI_EMBEDDINGS_MODEL_ID: ${{ vars.OPENAI_EMBEDDING_MODEL_ID }}
      OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (OpenAI integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/core/tests/openai
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5
        working-directory: ./python
      - name: Test OpenAI samples
        timeout-minutes: 10
        if: env.RUN_SAMPLES_TESTS == 'true'
        run: uv run pytest tests/samples/ -m "openai"
        working-directory: ./python
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: OpenAI integration test results

  # Azure OpenAI integration tests
  python-tests-azure-openai:
    name: Python Tests - Azure OpenAI Integration
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true' &&
      (github.event_name != 'merge_group' ||
       needs.paths-filter.outputs.azureChanged == 'true' ||
       needs.paths-filter.outputs.coreChanged == 'true')
    runs-on: ubuntu-latest
    environment: integration
    env:
      AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
      AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
      AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__EMBEDDINGDEPLOYMENTNAME }}
      AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        if: github.event_name != 'pull_request'
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Test with pytest (Azure OpenAI integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/core/tests/azure
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5
        working-directory: ./python
      - name: Test Azure samples
        timeout-minutes: 10
        if: env.RUN_SAMPLES_TESTS == 'true'
        run: uv run pytest tests/samples/ -m "azure"
        working-directory: ./python
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Azure OpenAI integration test results

  # Misc integration tests (Anthropic, Ollama, MCP)
  python-tests-misc-integration:
    name: Python Tests - Misc Integration
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true' &&
      (github.event_name != 'merge_group' ||
       needs.paths-filter.outputs.miscChanged == 'true' ||
       needs.paths-filter.outputs.coreChanged == 'true')
    runs-on: ubuntu-latest
    environment: integration
    env:
      ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
      ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }}
      LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Test with pytest (Anthropic, Ollama, MCP integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/anthropic/tests
          packages/ollama/tests
          packages/core/tests/core/test_mcp.py
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5
        working-directory: ./python
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Misc integration test results

  # Azure Functions + Durable Task integration tests
  python-tests-functions:
    name: Python Tests - Functions Integration
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true' &&
      (github.event_name != 'merge_group' ||
       needs.paths-filter.outputs.functionsChanged == 'true' ||
       needs.paths-filter.outputs.coreChanged == 'true')
    runs-on: ubuntu-latest
    environment: integration
    env:
      UV_PYTHON: "3.11"
      OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
      OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
      OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
      AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
      AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
      AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
      FUNCTIONS_WORKER_RUNTIME: "python"
      DURABLE_TASK_SCHEDULER_CONNECTION_STRING: "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
      AzureWebJobsStorage: "UseDevelopmentStorage=true"
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        if: github.event_name != 'pull_request'
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Set up Azure Functions Integration Test Emulators
        uses: ./.github/actions/azure-functions-integration-setup
        id: azure-functions-setup
      - name: Test with pytest (Functions + Durable Task integration)
        run: >
          uv run pytest --import-mode=importlib
          packages/azurefunctions/tests/integration_tests
          packages/durabletask/tests/integration_tests
          -m integration
          -n logical --dist worksteal
          --timeout=120 --session-timeout=900 --timeout_method thread
          --retries 2 --retry-delay 5
        working-directory: ./python
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Functions integration test results

  python-tests-azure-ai:
    name: Python Tests - Azure AI
    needs: paths-filter
    if: >
      github.event_name != 'pull_request' &&
      needs.paths-filter.outputs.pythonChanges == 'true' &&
      (github.event_name != 'merge_group' ||
       needs.paths-filter.outputs.azureAiChanged == 'true' ||
       needs.paths-filter.outputs.coreChanged == 'true')
    runs-on: ubuntu-latest
    environment: integration
    env:
      AZURE_AI_PROJECT_ENDPOINT: ${{ secrets.AZUREAI__ENDPOINT }}
      AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREAI__DEPLOYMENTNAME }}
      LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v6
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ env.UV_PYTHON }}
          os: ${{ runner.os }}
      - name: Azure CLI Login
        if: github.event_name != 'pull_request'
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - name: Test with pytest
        timeout-minutes: 15
        run: uv run --directory packages/azure-ai poe integration-tests -n logical --dist worksteal --timeout=120 --session-timeout=900 --timeout_method thread --retries 2 --r
Download .txt
gitextract_vfvjow7b/

├── .devcontainer/
│   ├── devcontainer.json
│   └── dotnet/
│       └── devcontainer.json
├── .gitattributes
├── .github/
│   ├── .linkspector.yml
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── dotnet-issue.yml
│   │   ├── feature-request.yml
│   │   └── python-issue.yml
│   ├── actions/
│   │   ├── azure-functions-integration-setup/
│   │   │   └── action.yml
│   │   ├── python-setup/
│   │   │   └── action.yml
│   │   └── sample-validation-setup/
│   │       └── action.yml
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── instructions/
│   │   └── durabletask-dotnet.instructions.md
│   ├── labeler.yml
│   ├── pull_request_template.md
│   ├── scripts/
│   │   └── stale_issue_pr_ping.py
│   ├── tests/
│   │   └── test_stale_issue_pr_ping.py
│   ├── upgrades/
│   │   └── prompts/
│   │       └── SemanticKernelToAgentFramework.md
│   └── workflows/
│       ├── codeql-analysis.yml
│       ├── dotnet-build-and-test.yml
│       ├── dotnet-format.yml
│       ├── dotnet-integration-tests.yml
│       ├── integration-tests-manual.yml
│       ├── label-issues.yml
│       ├── label-pr.yml
│       ├── label-title-prefix.yml
│       ├── markdown-link-check.yml
│       ├── merge-gatekeeper.yml
│       ├── python-check-coverage.py
│       ├── python-code-quality.yml
│       ├── python-dependency-range-validation.yml
│       ├── python-dev-dependency-upgrade.yml
│       ├── python-docs.yml
│       ├── python-integration-tests.yml
│       ├── python-lab-tests.yml
│       ├── python-merge-tests.yml
│       ├── python-release.yml
│       ├── python-sample-validation.yml
│       ├── python-test-coverage-report.yml
│       ├── python-test-coverage.yml
│       ├── python-tests.yml
│       └── stale-issue-pr-ping.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── COMMUNITY.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── TRANSPARENCY_FAQ.md
├── agent-samples/
│   ├── README.md
│   ├── azure/
│   │   ├── AzureOpenAI.yaml
│   │   ├── AzureOpenAIAssistants.yaml
│   │   ├── AzureOpenAIChat.yaml
│   │   └── AzureOpenAIResponses.yaml
│   ├── chatclient/
│   │   ├── Assistant.yaml
│   │   └── GetWeather.yaml
│   ├── foundry/
│   │   ├── FoundryAgent.yaml
│   │   ├── MicrosoftLearnAgent.yaml
│   │   └── PersistentAgent.yaml
│   └── openai/
│       ├── OpenAI.yaml
│       ├── OpenAIAssistants.yaml
│       ├── OpenAIChat.yaml
│       └── OpenAIResponses.yaml
├── docs/
│   ├── FAQS.md
│   ├── decisions/
│   │   ├── 0001-agent-run-response.md
│   │   ├── 0002-agent-tools.md
│   │   ├── 0003-agent-opentelemetry-instrumentation.md
│   │   ├── 0004-foundry-sdk-extensions.md
│   │   ├── 0005-python-naming-conventions.md
│   │   ├── 0006-userapproval.md
│   │   ├── 0007-agent-filtering-middleware.md
│   │   ├── 0008-python-subpackages.md
│   │   ├── 0009-support-long-running-operations.md
│   │   ├── 0010-ag-ui-support.md
│   │   ├── 0011-create-get-agent-api.md
│   │   ├── 0012-python-typeddict-options.md
│   │   ├── 0013-python-get-response-simplification.md
│   │   ├── 0014-feature-collections.md
│   │   ├── 0015-agent-run-context.md
│   │   ├── 0016-python-context-middleware.md
│   │   ├── 0016-structured-output.md
│   │   ├── 0017-agent-additional-properties.md
│   │   ├── 0018-agentthread-serialization.md
│   │   ├── 0019-python-context-compaction-strategy.md
│   │   ├── 0020-foundry-evals-integration.md
│   │   ├── README.md
│   │   ├── adr-short-template.md
│   │   └── adr-template.md
│   ├── design/
│   │   └── python-package-setup.md
│   ├── features/
│   │   ├── durable-agents/
│   │   │   ├── AGENTS.md
│   │   │   ├── README.md
│   │   │   └── durable-agents-ttl.md
│   │   └── vector-stores-and-embeddings/
│   │       └── README.md
│   └── specs/
│       ├── 001-foundry-sdk-alignment.md
│       └── spec-template.md
├── dotnet/
│   ├── .editorconfig
│   ├── .github/
│   │   └── skills/
│   │       ├── build-and-test/
│   │       │   └── SKILL.md
│   │       ├── project-structure/
│   │       │   └── SKILL.md
│   │       └── verify-dotnet-samples/
│   │           └── SKILL.md
│   ├── .gitignore
│   ├── .vscode/
│   │   ├── extensions.json
│   │   ├── settings.json
│   │   └── tasks.json
│   ├── AGENTS.md
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── Directory.Packages.props
│   ├── README.md
│   ├── agent-framework-dotnet.slnx
│   ├── agent-framework-release.slnf
│   ├── eng/
│   │   ├── MSBuild/
│   │   │   ├── LegacySupport.props
│   │   │   ├── Shared.props
│   │   │   └── Shared.targets
│   │   └── scripts/
│   │       ├── New-FilteredSolution.ps1
│   │       └── dotnet-check-coverage.ps1
│   ├── global.json
│   ├── nuget/
│   │   ├── NUGET.md
│   │   └── nuget-package.props
│   ├── nuget.config
│   ├── samples/
│   │   ├── .editorconfig
│   │   ├── 01-get-started/
│   │   │   ├── 01_hello_agent/
│   │   │   │   ├── 01_hello_agent.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 02_add_tools/
│   │   │   │   ├── 02_add_tools.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 03_multi_turn/
│   │   │   │   ├── 03_multi_turn.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 04_memory/
│   │   │   │   ├── 04_memory.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── 05_first_workflow/
│   │   │   │   ├── 05_first_workflow.csproj
│   │   │   │   └── Program.cs
│   │   │   └── 06_host_your_agent/
│   │   │       ├── 06_host_your_agent.csproj
│   │   │       └── Program.cs
│   │   ├── 02-agents/
│   │   │   ├── AGUI/
│   │   │   │   ├── README.md
│   │   │   │   ├── Step01_GettingStarted/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step02_BackendTools/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step03_FrontendTools/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   └── Program.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   ├── Step04_HumanInLoop/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── ServerFunctionApprovalClientAgent.cs
│   │   │   │   │   └── Server/
│   │   │   │   │       ├── Program.cs
│   │   │   │   │       ├── Properties/
│   │   │   │   │       │   └── launchSettings.json
│   │   │   │   │       ├── Server.csproj
│   │   │   │   │       ├── ServerFunctionApprovalServerAgent.cs
│   │   │   │   │       ├── appsettings.Development.json
│   │   │   │   │       └── appsettings.json
│   │   │   │   └── Step05_StateManagement/
│   │   │   │       ├── Client/
│   │   │   │       │   ├── Client.csproj
│   │   │   │       │   ├── Program.cs
│   │   │   │       │   └── StatefulAgent.cs
│   │   │   │       └── Server/
│   │   │   │           ├── Program.cs
│   │   │   │           ├── Properties/
│   │   │   │           │   └── launchSettings.json
│   │   │   │           ├── RecipeModels.cs
│   │   │   │           ├── Server.csproj
│   │   │   │           ├── SharedStateAgent.cs
│   │   │   │           ├── appsettings.Development.json
│   │   │   │           └── appsettings.json
│   │   │   ├── AgentOpenTelemetry/
│   │   │   │   ├── AgentOpenTelemetry.csproj
│   │   │   │   ├── Program.cs
│   │   │   │   ├── README.md
│   │   │   │   └── start-demo.ps1
│   │   │   ├── AgentProviders/
│   │   │   │   ├── Agent_With_A2A/
│   │   │   │   │   ├── Agent_With_A2A.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_Anthropic/
│   │   │   │   │   ├── Agent_With_Anthropic.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureAIAgentsPersistent/
│   │   │   │   │   ├── Agent_With_AzureAIAgentsPersistent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureAIProject/
│   │   │   │   │   ├── Agent_With_AzureAIProject.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureFoundryModel/
│   │   │   │   │   ├── Agent_With_AzureFoundryModel.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureOpenAIChatCompletion/
│   │   │   │   │   ├── Agent_With_AzureOpenAIChatCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_AzureOpenAIResponses/
│   │   │   │   │   ├── Agent_With_AzureOpenAIResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_CustomImplementation/
│   │   │   │   │   ├── Agent_With_CustomImplementation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_GitHubCopilot/
│   │   │   │   │   ├── Agent_With_GitHubCopilot.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_GoogleGemini/
│   │   │   │   │   ├── Agent_With_GoogleGemini.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_ONNX/
│   │   │   │   │   ├── Agent_With_ONNX.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_Ollama/
│   │   │   │   │   ├── Agent_With_Ollama.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIAssistants/
│   │   │   │   │   ├── Agent_With_OpenAIAssistants.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIChatCompletion/
│   │   │   │   │   ├── Agent_With_OpenAIChatCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_With_OpenAIResponses/
│   │   │   │   │   ├── Agent_With_OpenAIResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentSkills/
│   │   │   │   ├── Agent_Step01_BasicSkills/
│   │   │   │   │   ├── Agent_Step01_BasicSkills.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── skills/
│   │   │   │   │       └── expense-report/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── assets/
│   │   │   │   │           │   └── expense-report-template.md
│   │   │   │   │           └── references/
│   │   │   │   │               └── POLICY_FAQ.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithAnthropic/
│   │   │   │   ├── Agent_Anthropic_Step01_Running/
│   │   │   │   │   ├── Agent_Anthropic_Step01_Running.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step02_Reasoning/
│   │   │   │   │   ├── Agent_Anthropic_Step02_Reasoning.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step03_UsingFunctionTools/
│   │   │   │   │   ├── Agent_Anthropic_Step03_UsingFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Anthropic_Step04_UsingSkills/
│   │   │   │   │   ├── Agent_Anthropic_Step04_UsingSkills.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithMemory/
│   │   │   │   ├── AgentWithMemory_Step01_ChatHistoryMemory/
│   │   │   │   │   ├── AgentWithMemory_Step01_ChatHistoryMemory.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithMemory_Step02_MemoryUsingMem0/
│   │   │   │   │   ├── AgentWithMemory_Step02_MemoryUsingMem0.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithMemory_Step04_MemoryUsingFoundry/
│   │   │   │   │   ├── AgentWithMemory_Step04_MemoryUsingFoundry.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── AgentWithMemory_Step05_BoundedChatHistory/
│   │   │   │   │   ├── AgentWithMemory_Step05_BoundedChatHistory.csproj
│   │   │   │   │   ├── BoundedChatHistoryProvider.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── TruncatingChatReducer.cs
│   │   │   │   └── README.md
│   │   │   ├── AgentWithOpenAI/
│   │   │   │   ├── Agent_OpenAI_Step01_Running/
│   │   │   │   │   ├── Agent_OpenAI_Step01_Running.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_OpenAI_Step02_Reasoning/
│   │   │   │   │   ├── Agent_OpenAI_Step02_Reasoning.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_OpenAI_Step03_CreateFromChatClient/
│   │   │   │   │   ├── Agent_OpenAI_Step03_CreateFromChatClient.csproj
│   │   │   │   │   ├── OpenAIChatClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/
│   │   │   │   │   ├── Agent_OpenAI_Step04_CreateFromOpenAIResponseClient.csproj
│   │   │   │   │   ├── OpenAIResponseClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_OpenAI_Step05_Conversation/
│   │   │   │   │   ├── Agent_OpenAI_Step05_Conversation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── AgentWithRAG/
│   │   │   │   ├── AgentWithRAG_Step01_BasicTextRAG/
│   │   │   │   │   ├── AgentWithRAG_Step01_BasicTextRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── TextSearchStore/
│   │   │   │   │       ├── TextSearchDocument.cs
│   │   │   │   │       ├── TextSearchStore.cs
│   │   │   │   │       ├── TextSearchStoreOptions.cs
│   │   │   │   │       └── TextSearchStoreUpsertOptions.cs
│   │   │   │   ├── AgentWithRAG_Step02_CustomVectorStoreRAG/
│   │   │   │   │   ├── AgentWithRAG_Step02_CustomVectorStoreRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── AgentWithRAG_Step03_CustomRAGDataSource/
│   │   │   │   │   ├── AgentWithRAG_Step03_CustomRAGDataSource.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AgentWithRAG_Step04_FoundryServiceRAG/
│   │   │   │   │   ├── AgentWithRAG_Step04_FoundryServiceRAG.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── contoso-outdoors-knowledge-base.md
│   │   │   │   └── README.md
│   │   │   ├── Agents/
│   │   │   │   ├── Agent_Step01_UsingFunctionToolsWithApprovals/
│   │   │   │   │   ├── Agent_Step01_UsingFunctionToolsWithApprovals.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step02_StructuredOutput/
│   │   │   │   │   ├── AIAgentBuilderExtensions.cs
│   │   │   │   │   ├── Agent_Step02_StructuredOutput.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── StructuredOutputAgent.cs
│   │   │   │   │   ├── StructuredOutputAgentOptions.cs
│   │   │   │   │   └── StructuredOutputAgentResponse.cs
│   │   │   │   ├── Agent_Step03_PersistedConversations/
│   │   │   │   │   ├── Agent_Step03_PersistedConversations.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step04_3rdPartyChatHistoryStorage/
│   │   │   │   │   ├── Agent_Step04_3rdPartyChatHistoryStorage.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step05_Observability/
│   │   │   │   │   ├── Agent_Step05_Observability.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step06_DependencyInjection/
│   │   │   │   │   ├── Agent_Step06_DependencyInjection.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step07_AsMcpTool/
│   │   │   │   │   ├── Agent_Step07_AsMcpTool.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step08_UsingImages/
│   │   │   │   │   ├── Agent_Step08_UsingImages.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step09_AsFunctionTool/
│   │   │   │   │   ├── Agent_Step09_AsFunctionTool.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step10_BackgroundResponsesWithToolsAndPersistence/
│   │   │   │   │   ├── Agent_Step10_BackgroundResponsesWithToolsAndPersistence.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step11_Middleware/
│   │   │   │   │   ├── Agent_Step11_Middleware.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step12_Plugins/
│   │   │   │   │   ├── Agent_Step12_Plugins.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step13_ChatReduction/
│   │   │   │   │   ├── Agent_Step13_ChatReduction.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step14_BackgroundResponses/
│   │   │   │   │   ├── Agent_Step14_BackgroundResponses.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step15_DeepResearch/
│   │   │   │   │   ├── Agent_Step15_DeepResearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_Step16_Declarative/
│   │   │   │   │   ├── Agent_Step16_Declarative.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step17_AdditionalAIContext/
│   │   │   │   │   ├── Agent_Step17_AdditionalAIContext.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Agent_Step18_CompactionPipeline/
│   │   │   │   │   ├── Agent_Step18_CompactionPipeline.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── DeclarativeAgents/
│   │   │   │   └── ChatClient/
│   │   │   │       ├── DeclarativeChatClientAgents.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Properties/
│   │   │   │           └── launchSettings.json
│   │   │   ├── DevUI/
│   │   │   │   ├── DevUI_Step01_BasicUsage/
│   │   │   │   │   ├── DevUI_Step01_BasicUsage.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── FoundryAgents/
│   │   │   │   ├── FoundryAgents_Evaluations_Step01_RedTeaming/
│   │   │   │   │   ├── FoundryAgents_Evaluations_Step01_RedTeaming.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Evaluations_Step02_SelfReflection/
│   │   │   │   │   ├── FoundryAgents_Evaluations_Step02_SelfReflection.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step01.1_Basics/
│   │   │   │   │   ├── FoundryAgents_Step01.1_Basics.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step01.2_Running/
│   │   │   │   │   ├── FoundryAgents_Step01.2_Running.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step02_MultiturnConversation/
│   │   │   │   │   ├── FoundryAgents_Step02_MultiturnConversation.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step03_UsingFunctionTools/
│   │   │   │   │   ├── FoundryAgents_Step03_UsingFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step04_UsingFunctionToolsWithApprovals/
│   │   │   │   │   ├── FoundryAgents_Step04_UsingFunctionToolsWithApprovals.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step05_StructuredOutput/
│   │   │   │   │   ├── FoundryAgents_Step05_StructuredOutput.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step06_PersistedConversations/
│   │   │   │   │   ├── FoundryAgents_Step06_PersistedConversations.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step07_Observability/
│   │   │   │   │   ├── FoundryAgents_Step07_Observability.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step08_DependencyInjection/
│   │   │   │   │   ├── FoundryAgents_Step08_DependencyInjection.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step09_UsingMcpClientAsTools/
│   │   │   │   │   ├── FoundryAgents_Step09_UsingMcpClientAsTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step10_UsingImages/
│   │   │   │   │   ├── FoundryAgents_Step10_UsingImages.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step11_AsFunctionTool/
│   │   │   │   │   ├── FoundryAgents_Step11_AsFunctionTool.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step12_Middleware/
│   │   │   │   │   ├── FoundryAgents_Step12_Middleware.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step13_Plugins/
│   │   │   │   │   ├── FoundryAgents_Step13_Plugins.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step14_CodeInterpreter/
│   │   │   │   │   ├── FoundryAgents_Step14_CodeInterpreter.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step15_ComputerUse/
│   │   │   │   │   ├── ComputerUseUtil.cs
│   │   │   │   │   ├── FoundryAgents_Step15_ComputerUse.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step16_FileSearch/
│   │   │   │   │   ├── FoundryAgents_Step16_FileSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step17_OpenAPITools/
│   │   │   │   │   ├── FoundryAgents_Step17_OpenAPITools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step18_BingCustomSearch/
│   │   │   │   │   ├── FoundryAgents_Step18_BingCustomSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step19_SharePoint/
│   │   │   │   │   ├── FoundryAgents_Step19_SharePoint.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step20_MicrosoftFabric/
│   │   │   │   │   ├── FoundryAgents_Step20_MicrosoftFabric.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step21_WebSearch/
│   │   │   │   │   ├── FoundryAgents_Step21_WebSearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step22_MemorySearch/
│   │   │   │   │   ├── FoundryAgents_Step22_MemorySearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgents_Step23_LocalMCP/
│   │   │   │   │   ├── FoundryAgents_Step23_LocalMCP.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── ModelContextProtocol/
│   │   │   │   ├── Agent_MCP_Server/
│   │   │   │   │   ├── Agent_MCP_Server.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── Agent_MCP_Server_Auth/
│   │   │   │   │   ├── Agent_MCP_Server_Auth.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── FoundryAgent_Hosted_MCP/
│   │   │   │   │   ├── FoundryAgent_Hosted_MCP.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── README.md
│   │   │   │   └── ResponseAgent_Hosted_MCP/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── README.md
│   │   │   │       └── ResponseAgent_Hosted_MCP.csproj
│   │   │   └── README.md
│   │   ├── 03-workflows/
│   │   │   ├── Agents/
│   │   │   │   ├── CustomAgentExecutors/
│   │   │   │   │   ├── CustomAgentExecutors.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── FoundryAgent/
│   │   │   │   │   ├── FoundryAgent.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── GroupChatToolApproval/
│   │   │   │   │   ├── DeploymentGroupChatManager.cs
│   │   │   │   │   ├── GroupChatToolApproval.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── WorkflowAsAnAgent/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── WorkflowAsAnAgent.csproj
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Checkpoint/
│   │   │   │   ├── CheckpointAndRehydrate/
│   │   │   │   │   ├── CheckpointAndRehydrate.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── WorkflowFactory.cs
│   │   │   │   ├── CheckpointAndResume/
│   │   │   │   │   ├── CheckpointAndResume.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── WorkflowFactory.cs
│   │   │   │   └── CheckpointWithHumanInTheLoop/
│   │   │   │       ├── CheckpointWithHumanInTheLoop.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Concurrent/
│   │   │   │   ├── Concurrent/
│   │   │   │   │   ├── Concurrent.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   └── MapReduce/
│   │   │   │       ├── MapReduce.csproj
│   │   │   │       └── Program.cs
│   │   │   ├── ConditionalEdges/
│   │   │   │   ├── 01_EdgeCondition/
│   │   │   │   │   ├── 01_EdgeCondition.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Resources.cs
│   │   │   │   ├── 02_SwitchCase/
│   │   │   │   │   ├── 02_SwitchCase.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Resources.cs
│   │   │   │   └── 03_MultiSelection/
│   │   │   │       ├── 03_MultiSelection.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Resources.cs
│   │   │   ├── Declarative/
│   │   │   │   ├── ConfirmInput/
│   │   │   │   │   ├── ConfirmInput.csproj
│   │   │   │   │   ├── ConfirmInput.yaml
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── CustomerSupport/
│   │   │   │   │   ├── CustomerSupport.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── TicketingPlugin.cs
│   │   │   │   ├── DeepResearch/
│   │   │   │   │   ├── DeepResearch.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── wttr.json
│   │   │   │   ├── ExecuteCode/
│   │   │   │   │   ├── ExecuteCode.csproj
│   │   │   │   │   ├── Generated.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── ExecuteWorkflow/
│   │   │   │   │   ├── ExecuteWorkflow.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── FunctionTools/
│   │   │   │   │   ├── FunctionTools.csproj
│   │   │   │   │   ├── FunctionTools.yaml
│   │   │   │   │   ├── MenuPlugin.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── GenerateCode/
│   │   │   │   │   ├── GenerateCode.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── HostedWorkflow/
│   │   │   │   │   ├── HostedWorkflow.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── InputArguments/
│   │   │   │   │   ├── InputArguments.csproj
│   │   │   │   │   ├── InputArguments.yaml
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── InvokeFunctionTool/
│   │   │   │   │   ├── InvokeFunctionTool.csproj
│   │   │   │   │   ├── InvokeFunctionTool.yaml
│   │   │   │   │   ├── MenuPlugin.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── InvokeMcpTool/
│   │   │   │   │   ├── InvokeMcpTool.csproj
│   │   │   │   │   ├── InvokeMcpTool.yaml
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── Marketing/
│   │   │   │   │   ├── Marketing.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── OpenAIChatAgent/
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── OpenAIResponseAgent/
│   │   │   │   │   └── Properties/
│   │   │   │   │       └── launchSettings.json
│   │   │   │   ├── README.md
│   │   │   │   ├── StudentTeacher/
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── StudentTeacher.csproj
│   │   │   │   └── ToolApproval/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── Properties/
│   │   │   │       │   └── launchSettings.json
│   │   │   │       ├── ToolApproval.csproj
│   │   │   │       └── ToolApproval.yaml
│   │   │   ├── HumanInTheLoop/
│   │   │   │   └── HumanInTheLoopBasic/
│   │   │   │       ├── HumanInTheLoopBasic.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── WorkflowFactory.cs
│   │   │   ├── Loop/
│   │   │   │   ├── Loop.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── Observability/
│   │   │   │   ├── ApplicationInsights/
│   │   │   │   │   ├── ApplicationInsights.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   ├── AspireDashboard/
│   │   │   │   │   ├── AspireDashboard.csproj
│   │   │   │   │   └── Program.cs
│   │   │   │   └── WorkflowAsAnAgent/
│   │   │   │       ├── Program.cs
│   │   │   │       ├── WorkflowAsAnAgentObservability.csproj
│   │   │   │       └── WorkflowHelper.cs
│   │   │   ├── README.md
│   │   │   ├── Resources/
│   │   │   │   ├── Lorem_Ipsum.txt
│   │   │   │   ├── ambiguous_email.txt
│   │   │   │   ├── email.txt
│   │   │   │   └── spam.txt
│   │   │   ├── SharedStates/
│   │   │   │   ├── Program.cs
│   │   │   │   ├── Resources.cs
│   │   │   │   └── SharedStates.csproj
│   │   │   ├── Visualization/
│   │   │   │   ├── Program.cs
│   │   │   │   ├── README.md
│   │   │   │   └── Visualization.csproj
│   │   │   └── _StartHere/
│   │   │       ├── 01_Streaming/
│   │   │       │   ├── 01_Streaming.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 02_AgentsInWorkflows/
│   │   │       │   ├── 02_AgentsInWorkflows.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 03_AgentWorkflowPatterns/
│   │   │       │   ├── 03_AgentWorkflowPatterns.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 04_MultiModelService/
│   │   │       │   ├── 04_MultiModelService.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 05_SubWorkflows/
│   │   │       │   ├── 05_SubWorkflows.csproj
│   │   │       │   └── Program.cs
│   │   │       ├── 06_MixedWorkflowAgentsAndExecutors/
│   │   │       │   ├── 06_MixedWorkflowAgentsAndExecutors.csproj
│   │   │       │   ├── Program.cs
│   │   │       │   └── README.md
│   │   │       └── 07_WriterCriticWorkflow/
│   │   │           ├── 07_WriterCriticWorkflow.csproj
│   │   │           └── Program.cs
│   │   ├── 04-hosting/
│   │   │   ├── A2A/
│   │   │   │   ├── A2AAgent_AsFunctionTools/
│   │   │   │   │   ├── A2AAgent_AsFunctionTools.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── A2AAgent_PollingForTaskCompletion/
│   │   │   │   │   ├── A2AAgent_PollingForTaskCompletion.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── README.md
│   │   │   ├── DurableAgents/
│   │   │   │   ├── AzureFunctions/
│   │   │   │   │   ├── .editorconfig
│   │   │   │   │   ├── 01_SingleAgent/
│   │   │   │   │   │   ├── 01_SingleAgent.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 02_AgentOrchestration_Chaining/
│   │   │   │   │   │   ├── 02_AgentOrchestration_Chaining.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 03_AgentOrchestration_Concurrency/
│   │   │   │   │   │   ├── 03_AgentOrchestration_Concurrency.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 04_AgentOrchestration_Conditionals/
│   │   │   │   │   │   ├── 04_AgentOrchestration_Conditionals.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 05_AgentOrchestration_HITL/
│   │   │   │   │   │   ├── 05_AgentOrchestration_HITL.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 06_LongRunningTools/
│   │   │   │   │   │   ├── 06_LongRunningTools.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── Tools.cs
│   │   │   │   │   │   ├── demo.http
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 07_AgentAsMcpTool/
│   │   │   │   │   │   ├── 07_AgentAsMcpTool.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── host.json
│   │   │   │   │   ├── 08_ReliableStreaming/
│   │   │   │   │   │   ├── 08_ReliableStreaming.csproj
│   │   │   │   │   │   ├── FunctionTriggers.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── RedisStreamResponseHandler.cs
│   │   │   │   │   │   ├── Tools.cs
│   │   │   │   │   │   └── host.json
│   │   │   │   │   └── README.md
│   │   │   │   ├── ConsoleApps/
│   │   │   │   │   ├── 01_SingleAgent/
│   │   │   │   │   │   ├── 01_SingleAgent.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 02_AgentOrchestration_Chaining/
│   │   │   │   │   │   ├── 02_AgentOrchestration_Chaining.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 03_AgentOrchestration_Concurrency/
│   │   │   │   │   │   ├── 03_AgentOrchestration_Concurrency.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 04_AgentOrchestration_Conditionals/
│   │   │   │   │   │   ├── 04_AgentOrchestration_Conditionals.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 05_AgentOrchestration_HITL/
│   │   │   │   │   │   ├── 05_AgentOrchestration_HITL.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 06_LongRunningTools/
│   │   │   │   │   │   ├── 06_LongRunningTools.csproj
│   │   │   │   │   │   ├── Models.cs
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── 07_ReliableStreaming/
│   │   │   │   │   │   ├── 07_ReliableStreaming.csproj
│   │   │   │   │   │   ├── Program.cs
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── RedisStreamResponseHandler.cs
│   │   │   │   │   └── README.md
│   │   │   │   └── Directory.Build.props
│   │   │   └── DurableWorkflows/
│   │   │       ├── AzureFunctions/
│   │   │       │   ├── 01_SequentialWorkflow/
│   │   │       │   │   ├── 01_SequentialWorkflow.csproj
│   │   │       │   │   ├── OrderCancelExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── demo.http
│   │   │       │   │   └── host.json
│   │   │       │   ├── 02_ConcurrentWorkflow/
│   │   │       │   │   ├── 02_ConcurrentWorkflow.csproj
│   │   │       │   │   ├── ExpertExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── demo.http
│   │   │       │   │   └── host.json
│   │   │       │   └── 03_WorkflowHITL/
│   │   │       │       ├── 03_WorkflowHITL.csproj
│   │   │       │       ├── Executors.cs
│   │   │       │       ├── Program.cs
│   │   │       │       ├── README.md
│   │   │       │       ├── demo.http
│   │   │       │       └── host.json
│   │   │       ├── ConsoleApps/
│   │   │       │   ├── 01_SequentialWorkflow/
│   │   │       │   │   ├── 01_SequentialWorkflow.csproj
│   │   │       │   │   ├── OrderCancelExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 02_ConcurrentWorkflow/
│   │   │       │   │   ├── 02_ConcurrentWorkflow.csproj
│   │   │       │   │   ├── ExpertExecutors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 03_ConditionalEdges/
│   │   │       │   │   ├── 03_ConditionalEdges.csproj
│   │   │       │   │   ├── NotifyFraud.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 04_WorkflowAndAgents/
│   │   │       │   │   ├── 04_WorkflowAndAgents.csproj
│   │   │       │   │   ├── ParseQuestionExecutor.cs
│   │   │       │   │   └── Program.cs
│   │   │       │   ├── 05_WorkflowEvents/
│   │   │       │   │   ├── 05_WorkflowEvents.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 06_WorkflowSharedState/
│   │   │       │   │   ├── 06_WorkflowSharedState.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   ├── 07_SubWorkflows/
│   │   │       │   │   ├── 07_SubWorkflows.csproj
│   │   │       │   │   ├── Executors.cs
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   └── README.md
│   │   │       │   └── 08_WorkflowHITL/
│   │   │       │       ├── 08_WorkflowHITL.csproj
│   │   │       │       ├── Executors.cs
│   │   │       │       ├── Program.cs
│   │   │       │       └── README.md
│   │   │       ├── Directory.Build.props
│   │   │       └── README.md
│   │   ├── 05-end-to-end/
│   │   │   ├── A2AClientServer/
│   │   │   │   ├── A2AClient/
│   │   │   │   │   ├── A2AClient.csproj
│   │   │   │   │   ├── HostClientAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   └── README.md
│   │   │   │   ├── A2AServer/
│   │   │   │   │   ├── A2AServer.csproj
│   │   │   │   │   ├── A2AServer.http
│   │   │   │   │   ├── HostAgentFactory.cs
│   │   │   │   │   ├── Models/
│   │   │   │   │   │   └── InvoiceQuery.cs
│   │   │   │   │   └── Program.cs
│   │   │   │   └── README.md
│   │   │   ├── AGUIClientServer/
│   │   │   │   ├── AGUIClient/
│   │   │   │   │   ├── AGUIClient.csproj
│   │   │   │   │   ├── AGUIClientSerializerContext.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── SensorRequest.cs
│   │   │   │   │   └── SensorResponse.cs
│   │   │   │   ├── AGUIDojoServer/
│   │   │   │   │   ├── AGUIDojoServer.csproj
│   │   │   │   │   ├── AGUIDojoServerSerializerContext.cs
│   │   │   │   │   ├── AgenticUI/
│   │   │   │   │   │   ├── AgenticPlanningTools.cs
│   │   │   │   │   │   ├── AgenticUIAgent.cs
│   │   │   │   │   │   ├── JsonPatchOperation.cs
│   │   │   │   │   │   ├── Plan.cs
│   │   │   │   │   │   ├── Step.cs
│   │   │   │   │   │   └── StepStatus.cs
│   │   │   │   │   ├── BackendToolRendering/
│   │   │   │   │   │   └── WeatherInfo.cs
│   │   │   │   │   ├── ChatClientAgentFactory.cs
│   │   │   │   │   ├── PredictiveStateUpdates/
│   │   │   │   │   │   ├── DocumentState.cs
│   │   │   │   │   │   └── PredictiveStateUpdatesAgent.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── SharedState/
│   │   │   │   │   │   ├── Ingredient.cs
│   │   │   │   │   │   ├── Recipe.cs
│   │   │   │   │   │   ├── RecipeResponse.cs
│   │   │   │   │   │   └── SharedStateAgent.cs
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AGUIServer/
│   │   │   │   │   ├── AGUIServer.csproj
│   │   │   │   │   ├── AGUIServer.http
│   │   │   │   │   ├── AGUIServerSerializerContext.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── ServerWeatherForecastRequest.cs
│   │   │   │   │   └── ServerWeatherForecastResponse.cs
│   │   │   │   └── README.md
│   │   │   ├── AGUIWebChat/
│   │   │   │   ├── Client/
│   │   │   │   │   ├── AGUIWebChatClient.csproj
│   │   │   │   │   ├── Components/
│   │   │   │   │   │   ├── App.razor
│   │   │   │   │   │   ├── Layout/
│   │   │   │   │   │   │   ├── LoadingSpinner.razor
│   │   │   │   │   │   │   ├── LoadingSpinner.razor.css
│   │   │   │   │   │   │   ├── MainLayout.razor
│   │   │   │   │   │   │   └── MainLayout.razor.css
│   │   │   │   │   │   ├── Pages/
│   │   │   │   │   │   │   └── Chat/
│   │   │   │   │   │   │       ├── Chat.razor
│   │   │   │   │   │   │       ├── Chat.razor.css
│   │   │   │   │   │   │       ├── ChatCitation.razor
│   │   │   │   │   │   │       ├── ChatCitation.razor.css
│   │   │   │   │   │   │       ├── ChatHeader.razor
│   │   │   │   │   │   │       ├── ChatHeader.razor.css
│   │   │   │   │   │   │       ├── ChatInput.razor
│   │   │   │   │   │   │       ├── ChatInput.razor.css
│   │   │   │   │   │   │       ├── ChatInput.razor.js
│   │   │   │   │   │   │       ├── ChatMessageItem.razor
│   │   │   │   │   │   │       ├── ChatMessageItem.razor.css
│   │   │   │   │   │   │       ├── ChatMessageList.razor
│   │   │   │   │   │   │       ├── ChatMessageList.razor.css
│   │   │   │   │   │   │       ├── ChatMessageList.razor.js
│   │   │   │   │   │   │       ├── ChatSuggestions.razor
│   │   │   │   │   │   │       └── ChatSuggestions.razor.css
│   │   │   │   │   │   ├── Routes.razor
│   │   │   │   │   │   └── _Imports.razor
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   └── wwwroot/
│   │   │   │   │       └── app.css
│   │   │   │   ├── README.md
│   │   │   │   └── Server/
│   │   │   │       ├── AGUIWebChatServer.csproj
│   │   │   │       ├── Program.cs
│   │   │   │       └── Properties/
│   │   │   │           └── launchSettings.json
│   │   │   ├── AgentWebChat/
│   │   │   │   ├── AgentWebChat.AgentHost/
│   │   │   │   │   ├── ActorFrameworkWebApplicationExtensions.cs
│   │   │   │   │   ├── AgentWebChat.AgentHost.csproj
│   │   │   │   │   ├── Custom/
│   │   │   │   │   │   └── CustomAITools.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── Utilities/
│   │   │   │   │   │   ├── ChatClientConnectionInfo.cs
│   │   │   │   │   │   └── ChatClientExtensions.cs
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AgentWebChat.AppHost/
│   │   │   │   │   ├── AgentWebChat.AppHost.csproj
│   │   │   │   │   ├── ModelExtensions.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── AgentWebChat.ServiceDefaults/
│   │   │   │   │   ├── AgentWebChat.ServiceDefaults.csproj
│   │   │   │   │   └── ServiceDefaultsExtensions.cs
│   │   │   │   └── AgentWebChat.Web/
│   │   │   │       ├── A2AAgentClient.cs
│   │   │   │       ├── AgentDiscoveryClient.cs
│   │   │   │       ├── AgentWebChat.Web.csproj
│   │   │   │       ├── Components/
│   │   │   │       │   ├── App.razor
│   │   │   │       │   ├── Layout/
│   │   │   │       │   │   ├── MainLayout.razor
│   │   │   │       │   │   └── MainLayout.razor.css
│   │   │   │       │   ├── Pages/
│   │   │   │       │   │   ├── Error.razor
│   │   │   │       │   │   └── Home.razor
│   │   │   │       │   ├── Routes.razor
│   │   │   │       │   └── _Imports.razor
│   │   │   │       ├── IAgentClient.cs
│   │   │   │       ├── OpenAIChatCompletionsAgentClient.cs
│   │   │   │       ├── OpenAIResponsesAgentClient.cs
│   │   │   │       ├── Program.cs
│   │   │   │       ├── Properties/
│   │   │   │       │   └── launchSettings.json
│   │   │   │       ├── appsettings.Development.json
│   │   │   │       ├── appsettings.json
│   │   │   │       └── wwwroot/
│   │   │   │           └── app.css
│   │   │   ├── AgentWithPurview/
│   │   │   │   ├── AgentWithPurview.csproj
│   │   │   │   └── Program.cs
│   │   │   ├── AspNetAgentAuthorization/
│   │   │   │   ├── README.md
│   │   │   │   ├── RazorWebClient/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Pages/
│   │   │   │   │   │   ├── Chat.cshtml
│   │   │   │   │   │   ├── Chat.cshtml.cs
│   │   │   │   │   │   ├── Index.cshtml
│   │   │   │   │   │   ├── Index.cshtml.cs
│   │   │   │   │   │   ├── Shared/
│   │   │   │   │   │   │   └── _Layout.cshtml
│   │   │   │   │   │   └── _ViewImports.cshtml
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── RazorWebClient.csproj
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── Service/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── ExpenseService.cs
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── Properties/
│   │   │   │   │   │   └── launchSettings.json
│   │   │   │   │   ├── Service.csproj
│   │   │   │   │   ├── UserContext.cs
│   │   │   │   │   └── appsettings.json
│   │   │   │   ├── docker-compose.yml
│   │   │   │   └── keycloak/
│   │   │   │       ├── dev-realm.json
│   │   │   │       └── setup-redirect-uris.sh
│   │   │   ├── HostedAgents/
│   │   │   │   ├── AgentThreadAndHITL/
│   │   │   │   │   ├── AgentThreadAndHITL.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithHostedMCP/
│   │   │   │   │   ├── AgentWithHostedMCP.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithLocalTools/
│   │   │   │   │   ├── .dockerignore
│   │   │   │   │   ├── AgentWithLocalTools.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithTextSearchRag/
│   │   │   │   │   ├── AgentWithTextSearchRag.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentWithTools/
│   │   │   │   │   ├── AgentWithTools.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── AgentsInWorkflows/
│   │   │   │   │   ├── AgentsInWorkflows.csproj
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── FoundryMultiAgent/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── FoundryMultiAgent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── appsettings.Development.json
│   │   │   │   │   └── run-requests.http
│   │   │   │   ├── FoundrySingleAgent/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── FoundrySingleAgent.csproj
│   │   │   │   │   ├── Program.cs
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   └── run-requests.http
│   │   │   │   └── README.md
│   │   │   └── M365Agent/
│   │   │       ├── AFAgentApplication.cs
│   │   │       ├── Agents/
│   │   │       │   ├── AdaptiveCardAIContent.cs
│   │   │       │   ├── WeatherForecastAgent.cs
│   │   │       │   ├── WeatherForecastAgentResponse.cs
│   │   │       │   └── WeatherForecastAgentResponseContentType.cs
│   │   │       ├── Auth/
│   │   │       │   ├── AspNetExtensions.cs
│   │   │       │   └── TokenValidationOptions.cs
│   │   │       ├── JsonUtilities.cs
│   │   │       ├── M365Agent.csproj
│   │   │       ├── Program.cs
│   │   │       ├── Properties/
│   │   │       │   └── launchSettings.json
│   │   │       ├── README.md
│   │   │       ├── appManifest/
│   │   │       │   └── manifest.json
│   │   │       └── appsettings.json.template
│   │   ├── AGENTS.md
│   │   ├── Directory.Build.props
│   │   └── README.md
│   ├── src/
│   │   ├── Directory.Build.props
│   │   ├── LegacySupport/
│   │   │   ├── CallerAttributes/
│   │   │   │   ├── CallerArgumentExpressionAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── CompilerFeatureRequiredAttribute/
│   │   │   │   ├── CompilerFeatureRequiredAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── DiagnosticAttributes/
│   │   │   │   ├── NullableAttributes.cs
│   │   │   │   └── README.md
│   │   │   ├── DiagnosticClasses/
│   │   │   │   ├── README.md
│   │   │   │   └── UnreachableException.cs
│   │   │   ├── ExperimentalAttribute/
│   │   │   │   ├── ExperimentalAttribute.cs
│   │   │   │   └── README.md
│   │   │   ├── IsExternalInit/
│   │   │   │   ├── IsExternalInit.cs
│   │   │   │   └── README.md
│   │   │   ├── README.md
│   │   │   ├── RequiredMemberAttribute/
│   │   │   │   ├── README.md
│   │   │   │   └── RequiredMemberAttribute.cs
│   │   │   └── TrimAttributes/
│   │   │       ├── DynamicallyAccessedMemberTypes.cs
│   │   │       ├── DynamicallyAccessedMembersAttribute.cs
│   │   │       ├── README.md
│   │   │       ├── RequiresDynamicCodeAttribute.cs
│   │   │       ├── RequiresUnreferencedCodeAttribute.cs
│   │   │       └── UnconditionalSuppressMessageAttribute.cs
│   │   ├── Microsoft.Agents.AI/
│   │   │   ├── AIAgentBuilder.cs
│   │   │   ├── AIContextProviderDecorators/
│   │   │   │   ├── AIContextProviderChatClient.cs
│   │   │   │   ├── AIContextProviderChatClientBuilderExtensions.cs
│   │   │   │   └── MessageAIContextProviderAgent.cs
│   │   │   ├── AgentExtensions.cs
│   │   │   ├── AgentJsonUtilities.cs
│   │   │   ├── AnonymousDelegatingAIAgent.cs
│   │   │   ├── ChatClient/
│   │   │   │   ├── ChatClientAgent.cs
│   │   │   │   ├── ChatClientAgentContinuationToken.cs
│   │   │   │   ├── ChatClientAgentCustomOptions.cs
│   │   │   │   ├── ChatClientAgentLogMessages.cs
│   │   │   │   ├── ChatClientAgentOptions.cs
│   │   │   │   ├── ChatClientAgentRunOptions.cs
│   │   │   │   ├── ChatClientAgentSession.cs
│   │   │   │   ├── ChatClientBuilderExtensions.cs
│   │   │   │   └── ChatClientExtensions.cs
│   │   │   ├── Compaction/
│   │   │   │   ├── ChatMessageContentEquality.cs
│   │   │   │   ├── ChatReducerCompactionStrategy.cs
│   │   │   │   ├── ChatStrategyExtensions.cs
│   │   │   │   ├── CompactionGroupKind.cs
│   │   │   │   ├── CompactionLogMessages.cs
│   │   │   │   ├── CompactionMessageGroup.cs
│   │   │   │   ├── CompactionMessageIndex.cs
│   │   │   │   ├── CompactionProvider.cs
│   │   │   │   ├── CompactionStrategy.cs
│   │   │   │   ├── CompactionTelemetry.cs
│   │   │   │   ├── CompactionTrigger.cs
│   │   │   │   ├── CompactionTriggers.cs
│   │   │   │   ├── PipelineCompactionStrategy.cs
│   │   │   │   ├── SlidingWindowCompactionStrategy.cs
│   │   │   │   ├── SummarizationCompactionStrategy.cs
│   │   │   │   ├── ToolResultCompactionStrategy.cs
│   │   │   │   └── TruncationCompactionStrategy.cs
│   │   │   ├── FunctionInvocationDelegatingAgent.cs
│   │   │   ├── FunctionInvocationDelegatingAgentBuilderExtensions.cs
│   │   │   ├── LoggingAgent.cs
│   │   │   ├── LoggingAgentBuilderExtensions.cs
│   │   │   ├── Memory/
│   │   │   │   ├── ChatHistoryMemoryProvider.cs
│   │   │   │   ├── ChatHistoryMemoryProviderOptions.cs
│   │   │   │   └── ChatHistoryMemoryProviderScope.cs
│   │   │   ├── Microsoft.Agents.AI.csproj
│   │   │   ├── OpenTelemetryAgent.cs
│   │   │   ├── OpenTelemetryAgentBuilderExtensions.cs
│   │   │   ├── OpenTelemetryConsts.cs
│   │   │   ├── Skills/
│   │   │   │   ├── FileAgentSkill.cs
│   │   │   │   ├── FileAgentSkillLoader.cs
│   │   │   │   ├── FileAgentSkillsProvider.cs
│   │   │   │   ├── FileAgentSkillsProviderOptions.cs
│   │   │   │   └── SkillFrontmatter.cs
│   │   │   ├── TextSearchProvider.cs
│   │   │   └── TextSearchProviderOptions.cs
│   │   ├── Microsoft.Agents.AI.A2A/
│   │   │   ├── A2AAgent.cs
│   │   │   ├── A2AAgentLogMessages.cs
│   │   │   ├── A2AAgentSession.cs
│   │   │   ├── A2AContinuationToken.cs
│   │   │   ├── A2AJsonUtilities.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── A2AAIContentExtensions.cs
│   │   │   │   ├── A2AAgentCardExtensions.cs
│   │   │   │   ├── A2AAgentTaskExtensions.cs
│   │   │   │   ├── A2AArtifactExtensions.cs
│   │   │   │   ├── A2ACardResolverExtensions.cs
│   │   │   │   ├── A2AClientExtensions.cs
│   │   │   │   └── ChatMessageExtensions.cs
│   │   │   └── Microsoft.Agents.AI.A2A.csproj
│   │   ├── Microsoft.Agents.AI.AGUI/
│   │   │   ├── AGUIChatClient.cs
│   │   │   ├── AGUIHttpService.cs
│   │   │   ├── Microsoft.Agents.AI.AGUI.csproj
│   │   │   └── Shared/
│   │   │       ├── AGUIAssistantMessage.cs
│   │   │       ├── AGUIChatMessageExtensions.cs
│   │   │       ├── AGUIContextItem.cs
│   │   │       ├── AGUIDeveloperMessage.cs
│   │   │       ├── AGUIEventTypes.cs
│   │   │       ├── AGUIFunctionCall.cs
│   │   │       ├── AGUIJsonSerializerContext.cs
│   │   │       ├── AGUIMessage.cs
│   │   │       ├── AGUIMessageJsonConverter.cs
│   │   │       ├── AGUIRoles.cs
│   │   │       ├── AGUISystemMessage.cs
│   │   │       ├── AGUITool.cs
│   │   │       ├── AGUIToolCall.cs
│   │   │       ├── AGUIToolMessage.cs
│   │   │       ├── AGUIUserMessage.cs
│   │   │       ├── AIToolExtensions.cs
│   │   │       ├── BaseEvent.cs
│   │   │       ├── BaseEventJsonConverter.cs
│   │   │       ├── ChatResponseUpdateAGUIExtensions.cs
│   │   │       ├── RunAgentInput.cs
│   │   │       ├── RunErrorEvent.cs
│   │   │       ├── RunFinishedEvent.cs
│   │   │       ├── RunStartedEvent.cs
│   │   │       ├── StateDeltaEvent.cs
│   │   │       ├── StateSnapshotEvent.cs
│   │   │       ├── TextMessageContentEvent.cs
│   │   │       ├── TextMessageEndEvent.cs
│   │   │       ├── TextMessageStartEvent.cs
│   │   │       ├── ToolCallArgsEvent.cs
│   │   │       ├── ToolCallEndEvent.cs
│   │   │       ├── ToolCallResultEvent.cs
│   │   │       └── ToolCallStartEvent.cs
│   │   ├── Microsoft.Agents.AI.Abstractions/
│   │   │   ├── AIAgent.cs
│   │   │   ├── AIAgentMetadata.cs
│   │   │   ├── AIAgentStructuredOutput.cs
│   │   │   ├── AIContentExtensions.cs
│   │   │   ├── AIContext.cs
│   │   │   ├── AIContextProvider.cs
│   │   │   ├── AdditionalPropertiesExtensions.cs
│   │   │   ├── AgentAbstractionsJsonUtilities.cs
│   │   │   ├── AgentRequestMessageSourceAttribution.cs
│   │   │   ├── AgentRequestMessageSourceType.cs
│   │   │   ├── AgentResponse.cs
│   │   │   ├── AgentResponseExtensions.cs
│   │   │   ├── AgentResponseUpdate.cs
│   │   │   ├── AgentResponse{T}.cs
│   │   │   ├── AgentRunContext.cs
│   │   │   ├── AgentRunOptions.cs
│   │   │   ├── AgentSession.cs
│   │   │   ├── AgentSessionExtensions.cs
│   │   │   ├── AgentSessionStateBag.cs
│   │   │   ├── AgentSessionStateBagJsonConverter.cs
│   │   │   ├── AgentSessionStateBagValue.cs
│   │   │   ├── AgentSessionStateBagValueJsonConverter.cs
│   │   │   ├── ChatHistoryProvider.cs
│   │   │   ├── ChatMessageExtensions.cs
│   │   │   ├── DelegatingAIAgent.cs
│   │   │   ├── InMemoryChatHistoryProvider.cs
│   │   │   ├── InMemoryChatHistoryProviderOptions.cs
│   │   │   ├── MessageAIContextProvider.cs
│   │   │   ├── Microsoft.Agents.AI.Abstractions.csproj
│   │   │   └── ProviderSessionState{TState}.cs
│   │   ├── Microsoft.Agents.AI.Anthropic/
│   │   │   ├── AnthropicBetaServiceExtensions.cs
│   │   │   ├── AnthropicClientExtensions.cs
│   │   │   ├── AnthropicClientJsonContext.cs
│   │   │   └── Microsoft.Agents.AI.Anthropic.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI/
│   │   │   ├── AzureAIProjectChatClient.cs
│   │   │   ├── AzureAIProjectChatClientExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.AzureAI.csproj
│   │   │   └── RequestOptionsExtensions.cs
│   │   ├── Microsoft.Agents.AI.AzureAI.Persistent/
│   │   │   ├── Microsoft.Agents.AI.AzureAI.Persistent.csproj
│   │   │   ├── PersistentAgentsClientExtensions.cs
│   │   │   └── README.md
│   │   ├── Microsoft.Agents.AI.CopilotStudio/
│   │   │   ├── ActivityProcessor.cs
│   │   │   ├── CopilotStudioAgent.cs
│   │   │   ├── CopilotStudioAgentSession.cs
│   │   │   ├── CopilotStudioJsonUtilities.cs
│   │   │   └── Microsoft.Agents.AI.CopilotStudio.csproj
│   │   ├── Microsoft.Agents.AI.CosmosNoSql/
│   │   │   ├── CosmosChatHistoryProvider.cs
│   │   │   ├── CosmosCheckpointStore.cs
│   │   │   ├── CosmosDBChatExtensions.cs
│   │   │   ├── CosmosDBWorkflowExtensions.cs
│   │   │   └── Microsoft.Agents.AI.CosmosNoSql.csproj
│   │   ├── Microsoft.Agents.AI.Declarative/
│   │   │   ├── AgentBotElementYaml.cs
│   │   │   ├── AggregatorPromptAgentFactory.cs
│   │   │   ├── ChatClient/
│   │   │   │   └── ChatClientPromptAgentFactory.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── BoolExpressionExtensions.cs
│   │   │   │   ├── CodeInterpreterToolExtensions.cs
│   │   │   │   ├── FileSearchToolExtensions.cs
│   │   │   │   ├── FunctionToolExtensions.cs
│   │   │   │   ├── IntExpressionExtensions.cs
│   │   │   │   ├── McpServerToolApprovalModeExtensions.cs
│   │   │   │   ├── McpServerToolExtensions.cs
│   │   │   │   ├── ModelOptionsExtensions.cs
│   │   │   │   ├── NumberExpressionExtensions.cs
│   │   │   │   ├── PromptAgentExtensions.cs
│   │   │   │   ├── PropertyInfoExtensions.cs
│   │   │   │   ├── RecordDataTypeExtensions.cs
│   │   │   │   ├── RecordDataValueExtensions.cs
│   │   │   │   ├── StringExpressionExtensions.cs
│   │   │   │   ├── WebSearchToolExtensions.cs
│   │   │   │   └── YamlAgentFactoryExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.Declarative.csproj
│   │   │   └── PromptAgentFactory.cs
│   │   ├── Microsoft.Agents.AI.DevUI/
│   │   │   ├── DevUIExtensions.cs
│   │   │   ├── DevUIMiddleware.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntitiesJsonContext.cs
│   │   │   │   ├── EntityInfo.cs
│   │   │   │   ├── MetaResponse.cs
│   │   │   │   └── WorkflowSerializationExtensions.cs
│   │   │   ├── EntitiesApiExtensions.cs
│   │   │   ├── HostApplicationBuilderExtensions.cs
│   │   │   ├── MetaApiExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.DevUI.Frontend.targets
│   │   │   ├── Microsoft.Agents.AI.DevUI.csproj
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── README.md
│   │   │   ├── ServiceCollectionsExtensions.cs
│   │   │   └── wwwroot/
│   │   │       └── index.html
│   │   ├── Microsoft.Agents.AI.DurableTask/
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AgentEntity.cs
│   │   │   ├── AgentNotRegisteredException.cs
│   │   │   ├── AgentRunHandle.cs
│   │   │   ├── AgentSessionId.cs
│   │   │   ├── CHANGELOG.md
│   │   │   ├── DefaultDurableAgentClient.cs
│   │   │   ├── DurableAIAgent.cs
│   │   │   ├── DurableAIAgentProxy.cs
│   │   │   ├── DurableAgentContext.cs
│   │   │   ├── DurableAgentJsonUtilities.cs
│   │   │   ├── DurableAgentRunOptions.cs
│   │   │   ├── DurableAgentSession.cs
│   │   │   ├── DurableAgentsOptions.cs
│   │   │   ├── DurableDataConverter.cs
│   │   │   ├── DurableOptions.cs
│   │   │   ├── DurableServicesMarker.cs
│   │   │   ├── EntityAgentWrapper.cs
│   │   │   ├── IAgentResponseHandler.cs
│   │   │   ├── IDurableAgentClient.cs
│   │   │   ├── Logs.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.csproj
│   │   │   ├── README.md
│   │   │   ├── RunRequest.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   ├── State/
│   │   │   │   ├── DurableAgentState.cs
│   │   │   │   ├── DurableAgentStateContent.cs
│   │   │   │   ├── DurableAgentStateData.cs
│   │   │   │   ├── DurableAgentStateDataContent.cs
│   │   │   │   ├── DurableAgentStateEntry.cs
│   │   │   │   ├── DurableAgentStateErrorContent.cs
│   │   │   │   ├── DurableAgentStateFunctionCallContent.cs
│   │   │   │   ├── DurableAgentStateFunctionResultContent.cs
│   │   │   │   ├── DurableAgentStateHostedFileContent.cs
│   │   │   │   ├── DurableAgentStateHostedVectorStoreContent.cs
│   │   │   │   ├── DurableAgentStateJsonContext.cs
│   │   │   │   ├── DurableAgentStateJsonConverter.cs
│   │   │   │   ├── DurableAgentStateMessage.cs
│   │   │   │   ├── DurableAgentStateRequest.cs
│   │   │   │   ├── DurableAgentStateResponse.cs
│   │   │   │   ├── DurableAgentStateTextContent.cs
│   │   │   │   ├── DurableAgentStateTextReasoningContent.cs
│   │   │   │   ├── DurableAgentStateUnknownContent.cs
│   │   │   │   ├── DurableAgentStateUriContent.cs
│   │   │   │   ├── DurableAgentStateUsage.cs
│   │   │   │   ├── DurableAgentStateUsageContent.cs
│   │   │   │   └── README.md
│   │   │   ├── TaskOrchestrationContextExtensions.cs
│   │   │   └── Workflows/
│   │   │       ├── DurableActivityExecutor.cs
│   │   │       ├── DurableActivityInput.cs
│   │   │       ├── DurableExecutorDispatcher.cs
│   │   │       ├── DurableExecutorOutput.cs
│   │   │       ├── DurableHaltRequestedEvent.cs
│   │   │       ├── DurableMessageEnvelope.cs
│   │   │       ├── DurableRunStatus.cs
│   │   │       ├── DurableSerialization.cs
│   │   │       ├── DurableStreamingWorkflowRun.cs
│   │   │       ├── DurableWorkflowClient.cs
│   │   │       ├── DurableWorkflowCompletedEvent.cs
│   │   │       ├── DurableWorkflowContext.cs
│   │   │       ├── DurableWorkflowFailedEvent.cs
│   │   │       ├── DurableWorkflowInput.cs
│   │   │       ├── DurableWorkflowJsonContext.cs
│   │   │       ├── DurableWorkflowLiveStatus.cs
│   │   │       ├── DurableWorkflowOptions.cs
│   │   │       ├── DurableWorkflowResult.cs
│   │   │       ├── DurableWorkflowRun.cs
│   │   │       ├── DurableWorkflowRunner.cs
│   │   │       ├── DurableWorkflowWaitingForInputEvent.cs
│   │   │       ├── EdgeRouters/
│   │   │       │   ├── DurableDirectEdgeRouter.cs
│   │   │       │   ├── DurableEdgeMap.cs
│   │   │       │   ├── DurableFanOutEdgeRouter.cs
│   │   │       │   └── IDurableEdgeRouter.cs
│   │   │       ├── ExecutorRegistry.cs
│   │   │       ├── IAwaitableWorkflowRun.cs
│   │   │       ├── IStreamingWorkflowRun.cs
│   │   │       ├── IWorkflowClient.cs
│   │   │       ├── IWorkflowRun.cs
│   │   │       ├── PendingRequestPortStatus.cs
│   │   │       ├── TypedPayload.cs
│   │   │       ├── WorkflowAnalyzer.cs
│   │   │       ├── WorkflowExecutorInfo.cs
│   │   │       ├── WorkflowGraphInfo.cs
│   │   │       └── WorkflowNamingHelper.cs
│   │   ├── Microsoft.Agents.AI.FoundryMemory/
│   │   │   ├── AIProjectClientExtensions.cs
│   │   │   ├── FoundryMemoryJsonUtilities.cs
│   │   │   ├── FoundryMemoryProvider.cs
│   │   │   ├── FoundryMemoryProviderOptions.cs
│   │   │   ├── FoundryMemoryProviderScope.cs
│   │   │   └── Microsoft.Agents.AI.FoundryMemory.csproj
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot/
│   │   │   ├── CopilotClientExtensions.cs
│   │   │   ├── GitHubCopilotAgent.cs
│   │   │   ├── GitHubCopilotAgentSession.cs
│   │   │   ├── GitHubCopilotJsonUtilities.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.csproj
│   │   ├── Microsoft.Agents.AI.Hosting/
│   │   │   ├── AIHostAgent.cs
│   │   │   ├── AgentHostingServiceCollectionExtensions.cs
│   │   │   ├── AgentSessionStore.cs
│   │   │   ├── HostApplicationBuilderAgentExtensions.cs
│   │   │   ├── HostApplicationBuilderWorkflowExtensions.cs
│   │   │   ├── HostedAgentBuilder.cs
│   │   │   ├── HostedAgentBuilderExtensions.cs
│   │   │   ├── HostedWorkflowBuilder.cs
│   │   │   ├── HostedWorkflowBuilderExtensions.cs
│   │   │   ├── IHostedAgentBuilder.cs
│   │   │   ├── IHostedWorkflowBuilder.cs
│   │   │   ├── Local/
│   │   │   │   └── InMemoryAgentSessionStore.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.csproj
│   │   │   ├── NoopAgentSessionStore.cs
│   │   │   └── WorkflowCatalog.cs
│   │   ├── Microsoft.Agents.AI.Hosting.A2A/
│   │   │   ├── A2AHostingJsonUtilities.cs
│   │   │   ├── A2ARunDecisionContext.cs
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AgentRunMode.cs
│   │   │   ├── Converters/
│   │   │   │   └── MessageConverter.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.A2A.AspNetCore/
│   │   │   ├── EndpointRouteBuilderExtensions.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.AspNetCore.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore/
│   │   │   ├── AGUIChatResponseUpdateStreamExtensions.cs
│   │   │   ├── AGUIEndpointRouteBuilderExtensions.cs
│   │   │   ├── AGUIJsonSerializerOptions.cs
│   │   │   ├── AGUIServerSentEventsResult.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.csproj
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions/
│   │   │   ├── BuiltInFunctionExecutor.cs
│   │   │   ├── BuiltInFunctions.cs
│   │   │   ├── CHANGELOG.md
│   │   │   ├── DefaultFunctionsAgentOptionsProvider.cs
│   │   │   ├── DurableAgentFunctionMetadataTransformer.cs
│   │   │   ├── DurableAgentsOptionsExtensions.cs
│   │   │   ├── DurableTaskClientExtensions.cs
│   │   │   ├── FunctionMetadataFactory.cs
│   │   │   ├── FunctionsAgentOptions.cs
│   │   │   ├── FunctionsApplicationBuilderExtensions.cs
│   │   │   ├── FunctionsDurableOptions.cs
│   │   │   ├── HttpTriggerOptions.cs
│   │   │   ├── IFunctionsAgentOptionsProvider.cs
│   │   │   ├── Logs.cs
│   │   │   ├── McpToolTriggerOptions.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.csproj
│   │   │   ├── Middlewares/
│   │   │   │   └── BuiltInFunctionExecutionMiddleware.cs
│   │   │   ├── README.md
│   │   │   └── Workflows/
│   │   │       ├── DurableWorkflowOptionsExtensions.cs
│   │   │       ├── DurableWorkflowsFunctionMetadataTransformer.cs
│   │   │       └── WorkflowOrchestrator.cs
│   │   ├── Microsoft.Agents.AI.Hosting.OpenAI/
│   │   │   ├── ChatCompletions/
│   │   │   │   ├── AIAgentChatCompletionsProcessor.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── ChatCompletionsJsonContext.cs
│   │   │   │   ├── ChatCompletionsJsonSerializerOptions.cs
│   │   │   │   ├── Converters/
│   │   │   │   │   ├── ChatClientAgentRunOptionsConverter.cs
│   │   │   │   │   └── MessageContentPartConverter.cs
│   │   │   │   └── Models/
│   │   │   │       ├── ChatCompletion.cs
│   │   │   │       ├── ChatCompletionChoice.cs
│   │   │   │       ├── ChatCompletionChunk.cs
│   │   │   │       ├── ChatCompletionRequestMessage.cs
│   │   │   │       ├── CompletionUsage.cs
│   │   │   │       ├── CreateChatCompletion.cs
│   │   │   │       ├── MessageContent.cs
│   │   │   │       ├── MessageContentPart.cs
│   │   │   │       ├── ResponseFormat.cs
│   │   │   │       ├── StopSequences.cs
│   │   │   │       ├── Tool.cs
│   │   │   │       └── ToolChoice.cs
│   │   │   ├── Conversations/
│   │   │   │   ├── ConversationsHttpHandler.cs
│   │   │   │   ├── IAgentConversationIndex.cs
│   │   │   │   ├── IConversationStorage.cs
│   │   │   │   ├── InMemoryAgentConversationIndex.cs
│   │   │   │   ├── InMemoryConversationStorage.cs
│   │   │   │   ├── Models/
│   │   │   │   │   ├── AddMessageRequest.cs
│   │   │   │   │   ├── Conversation.cs
│   │   │   │   │   ├── CreateConversationRequest.cs
│   │   │   │   │   └── UpdateConversationRequest.cs
│   │   │   │   └── SortOrderExtensions.cs
│   │   │   ├── EndpointRouteBuilderExtensions.ChatCompletions.cs
│   │   │   ├── EndpointRouteBuilderExtensions.Conversations.cs
│   │   │   ├── EndpointRouteBuilderExtensions.Responses.cs
│   │   │   ├── HostApplicationBuilderExtensions.cs
│   │   │   ├── IdGenerator.cs
│   │   │   ├── InMemoryStorageOptions.cs
│   │   │   ├── MemoryCacheExtensions.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.csproj
│   │   │   ├── Models/
│   │   │   │   ├── DeleteResponse.cs
│   │   │   │   ├── ErrorResponse.cs
│   │   │   │   ├── ListResponse.cs
│   │   │   │   └── SortOrder.cs
│   │   │   ├── OpenAIHostingJsonUtilities.cs
│   │   │   ├── Responses/
│   │   │   │   ├── AIAgentResponseExecutor.cs
│   │   │   │   ├── AgentInvocationContext.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── AgentResponseUpdateExtensions.cs
│   │   │   │   ├── Converters/
│   │   │   │   │   ├── AgentReferenceExtensions.cs
│   │   │   │   │   ├── ItemContentConverter.cs
│   │   │   │   │   ├── ItemParamConverter.cs
│   │   │   │   │   ├── ItemResourceConversions.cs
│   │   │   │   │   ├── ItemResourceConverter.cs
│   │   │   │   │   ├── ResponsesMessageItemParamConverter.cs
│   │   │   │   │   ├── ResponsesMessageItemResourceConverter.cs
│   │   │   │   │   └── SnakeCaseEnumConverter.cs
│   │   │   │   ├── HostedAgentResponseExecutor.cs
│   │   │   │   ├── IResponseExecutor.cs
│   │   │   │   ├── IResponsesService.cs
│   │   │   │   ├── InMemoryResponsesService.cs
│   │   │   │   ├── Models/
│   │   │   │   │   ├── AgentId.cs
│   │   │   │   │   ├── ConversationReference.cs
│   │   │   │   │   ├── CreateResponse.cs
│   │   │   │   │   ├── InputMessage.cs
│   │   │   │   │   ├── InputMessageContent.cs
│   │   │   │   │   ├── ItemParam.cs
│   │   │   │   │   ├── ItemParamExtensions.cs
│   │   │   │   │   ├── ItemResource.cs
│   │   │   │   │   ├── PromptReference.cs
│   │   │   │   │   ├── ReasoningOptions.cs
│   │   │   │   │   ├── Response.cs
│   │   │   │   │   ├── ResponseInput.cs
│   │   │   │   │   ├── StreamOptions.cs
│   │   │   │   │   ├── StreamingResponseEvent.cs
│   │   │   │   │   ├── TextConfiguration.cs
│   │   │   │   │   └── WorkflowEventData.cs
│   │   │   │   ├── ResponsesHttpHandler.cs
│   │   │   │   └── Streaming/
│   │   │   │       ├── AssistantMessageEventGenerator.cs
│   │   │   │       ├── AudioContentEventGenerator.cs
│   │   │   │       ├── ErrorContentEventGenerator.cs
│   │   │   │       ├── FileContentEventGenerator.cs
│   │   │   │       ├── FunctionApprovalRequestEventGenerator.cs
│   │   │   │       ├── FunctionApprovalResponseEventGenerator.cs
│   │   │   │       ├── FunctionCallEventGenerator.cs
│   │   │   │       ├── FunctionResultEventGenerator.cs
│   │   │   │       ├── HostedFileContentEventGenerator.cs
│   │   │   │       ├── ImageContentEventGenerator.cs
│   │   │   │       ├── SequenceNumber.cs
│   │   │   │       ├── StreamingEventGenerator.cs
│   │   │   │       └── TextReasoningContentEventGenerator.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── SseJsonResult.cs
│   │   ├── Microsoft.Agents.AI.Mem0/
│   │   │   ├── Mem0Client.cs
│   │   │   ├── Mem0JsonUtilities.cs
│   │   │   ├── Mem0Provider.cs
│   │   │   ├── Mem0ProviderOptions.cs
│   │   │   ├── Mem0ProviderScope.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.csproj
│   │   ├── Microsoft.Agents.AI.OpenAI/
│   │   │   ├── ChatClient/
│   │   │   │   ├── AsyncStreamingChatCompletionUpdateCollectionResult.cs
│   │   │   │   ├── AsyncStreamingResponseUpdateCollectionResult.cs
│   │   │   │   └── StreamingUpdatePipelineResponse.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AIAgentWithOpenAIExtensions.cs
│   │   │   │   ├── AgentResponseExtensions.cs
│   │   │   │   ├── OpenAIAssistantClientExtensions.cs
│   │   │   │   ├── OpenAIChatClientExtensions.cs
│   │   │   │   └── OpenAIResponseClientExtensions.cs
│   │   │   └── Microsoft.Agents.AI.OpenAI.csproj
│   │   ├── Microsoft.Agents.AI.Purview/
│   │   │   ├── BackgroundJobRunner.cs
│   │   │   ├── CacheProvider.cs
│   │   │   ├── ChannelHandler.cs
│   │   │   ├── Constants.cs
│   │   │   ├── Exceptions/
│   │   │   │   ├── PurviewAuthenticationException.cs
│   │   │   │   ├── PurviewException.cs
│   │   │   │   ├── PurviewJobException.cs
│   │   │   │   ├── PurviewJobLimitExceededException.cs
│   │   │   │   ├── PurviewPaymentRequiredException.cs
│   │   │   │   ├── PurviewRateLimitException.cs
│   │   │   │   └── PurviewRequestException.cs
│   │   │   ├── IBackgroundJobRunner.cs
│   │   │   ├── ICacheProvider.cs
│   │   │   ├── IChannelHandler.cs
│   │   │   ├── IPurviewClient.cs
│   │   │   ├── IScopedContentProcessor.cs
│   │   │   ├── Microsoft.Agents.AI.Purview.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Common/
│   │   │   │   │   ├── AIAgentInfo.cs
│   │   │   │   │   ├── AIInteractionPlugin.cs
│   │   │   │   │   ├── AccessedResourceDetails.cs
│   │   │   │   │   ├── Activity.cs
│   │   │   │   │   ├── ActivityMetadata.cs
│   │   │   │   │   ├── ClassificationErrorBase.cs
│   │   │   │   │   ├── ClassificationInnerError.cs
│   │   │   │   │   ├── ContentBase.cs
│   │   │   │   │   ├── ContentProcessingErrorType.cs
│   │   │   │   │   ├── ContentToProcess.cs
│   │   │   │   │   ├── DeviceMetadata.cs
│   │   │   │   │   ├── DlpAction.cs
│   │   │   │   │   ├── DlpActionInfo.cs
│   │   │   │   │   ├── ErrorDetails.cs
│   │   │   │   │   ├── ExecutionMode.cs
│   │   │   │   │   ├── GraphDataTypeBase.cs
│   │   │   │   │   ├── IntegratedAppMetadata.cs
│   │   │   │   │   ├── OperatingSystemSpecifications.cs
│   │   │   │   │   ├── PolicyBinding.cs
│   │   │   │   │   ├── PolicyLocation.cs
│   │   │   │   │   ├── PolicyPivotProperty.cs
│   │   │   │   │   ├── PolicyScope.cs
│   │   │   │   │   ├── ProcessContentMetadataBase.cs
│   │   │   │   │   ├── ProcessConversationMetadata.cs
│   │   │   │   │   ├── ProcessFileMetadata.cs
│   │   │   │   │   ├── ProcessingError.cs
│   │   │   │   │   ├── ProtectedAppMetadata.cs
│   │   │   │   │   ├── ProtectionScopeActivities.cs
│   │   │   │   │   ├── ProtectionScopeState.cs
│   │   │   │   │   ├── ProtectionScopesCacheKey.cs
│   │   │   │   │   ├── PurviewBinaryContent.cs
│   │   │   │   │   ├── PurviewTextContent.cs
│   │   │   │   │   ├── ResourceAccessStatus.cs
│   │   │   │   │   ├── ResourceAccessType.cs
│   │   │   │   │   ├── RestrictionAction.cs
│   │   │   │   │   ├── Scope.cs
│   │   │   │   │   └── TokenInfo.cs
│   │   │   │   ├── Jobs/
│   │   │   │   │   ├── BackgroundJobBase.cs
│   │   │   │   │   ├── ContentActivityJob.cs
│   │   │   │   │   └── ProcessContentJob.cs
│   │   │   │   ├── Requests/
│   │   │   │   │   ├── ContentActivitiesRequest.cs
│   │   │   │   │   ├── ProcessContentRequest.cs
│   │   │   │   │   └── ProtectionScopesRequest.cs
│   │   │   │   └── Responses/
│   │   │   │       ├── ContentActivitiesResponse.cs
│   │   │   │       ├── ProcessContentResponse.cs
│   │   │   │       └── ProtectionScopesResponse.cs
│   │   │   ├── PurviewAgent.cs
│   │   │   ├── PurviewAppLocation.cs
│   │   │   ├── PurviewChatClient.cs
│   │   │   ├── PurviewClient.cs
│   │   │   ├── PurviewExtensions.cs
│   │   │   ├── PurviewLocationType.cs
│   │   │   ├── PurviewSettings.cs
│   │   │   ├── PurviewWrapper.cs
│   │   │   ├── README.md
│   │   │   ├── ScopedContentProcessor.cs
│   │   │   └── Serialization/
│   │   │       └── PurviewSerializationUtils.cs
│   │   ├── Microsoft.Agents.AI.Workflows/
│   │   │   ├── AIAgentBinding.cs
│   │   │   ├── AIAgentExtensions.cs
│   │   │   ├── AIAgentHostOptions.cs
│   │   │   ├── AIAgentIDEqualityComparer.cs
│   │   │   ├── AIAgentsAbstractionsExtensions.cs
│   │   │   ├── AgentResponseEvent.cs
│   │   │   ├── AgentResponseUpdateEvent.cs
│   │   │   ├── AgentWorkflowBuilder.cs
│   │   │   ├── AggregatingExecutor.cs
│   │   │   ├── Attributes/
│   │   │   │   ├── MessageHandlerAttribute.cs
│   │   │   │   ├── SendsMessageAttribute.cs
│   │   │   │   ├── YieldsMessageAttribute.cs
│   │   │   │   └── YieldsOutputAttribute.cs
│   │   │   ├── ChatForwardingExecutor.cs
│   │   │   ├── ChatProtocol.cs
│   │   │   ├── ChatProtocolExecutor.cs
│   │   │   ├── CheckpointInfo.cs
│   │   │   ├── CheckpointManager.cs
│   │   │   ├── CheckpointableRunBase.cs
│   │   │   ├── Checkpointing/
│   │   │   │   ├── Checkpoint.cs
│   │   │   │   ├── CheckpointInfoConverter.cs
│   │   │   │   ├── CheckpointManagerImpl.cs
│   │   │   │   ├── DirectEdgeInfo.cs
│   │   │   │   ├── EdgeIdConverter.cs
│   │   │   │   ├── EdgeInfo.cs
│   │   │   │   ├── ExecutorIdentityConverter.cs
│   │   │   │   ├── ExecutorInfo.cs
│   │   │   │   ├── FanInEdgeInfo.cs
│   │   │   │   ├── FanOutEdgeInfo.cs
│   │   │   │   ├── FileSystemJsonCheckpointStore.cs
│   │   │   │   ├── ICheckpointManager.cs
│   │   │   │   ├── ICheckpointStore.cs
│   │   │   │   ├── ICheckpointingHandle.cs
│   │   │   │   ├── IDelayedDeserialization.cs
│   │   │   │   ├── IWireMarshaller.cs
│   │   │   │   ├── InMemoryCheckpointManager.cs
│   │   │   │   ├── JsonCheckpointStore.cs
│   │   │   │   ├── JsonConverterBase.cs
│   │   │   │   ├── JsonConverterDictionarySupportBase.cs
│   │   │   │   ├── JsonMarshaller.cs
│   │   │   │   ├── JsonWireSerializedValue.cs
│   │   │   │   ├── PortableMessageEnvelope.cs
│   │   │   │   ├── PortableValueConverter.cs
│   │   │   │   ├── RepresentationExtensions.cs
│   │   │   │   ├── RequestPortInfo.cs
│   │   │   │   ├── ScopeKeyConverter.cs
│   │   │   │   ├── SessionCheckpointCache.cs
│   │   │   │   ├── TypeId.cs
│   │   │   │   └── WorkflowInfo.cs
│   │   │   ├── Config.cs
│   │   │   ├── ConfigurationExtensions.cs
│   │   │   ├── Configured.cs
│   │   │   ├── ConfiguredExecutorBinding.cs
│   │   │   ├── DirectEdgeData.cs
│   │   │   ├── Edge.cs
│   │   │   ├── EdgeData.cs
│   │   │   ├── EdgeId.cs
│   │   │   ├── Execution/
│   │   │   │   ├── AsyncRunHandle.cs
│   │   │   │   ├── AsyncRunHandleExtensions.cs
│   │   │   │   ├── CallResult.cs
│   │   │   │   ├── ConcurrentEventSink.cs
│   │   │   │   ├── DeliveryMapping.cs
│   │   │   │   ├── DirectEdgeRunner.cs
│   │   │   │   ├── EdgeConnection.cs
│   │   │   │   ├── EdgeMap.cs
│   │   │   │   ├── EdgeRunner.cs
│   │   │   │   ├── ExecutionMode.cs
│   │   │   │   ├── ExecutorIdentity.cs
│   │   │   │   ├── FanInEdgeRunner.cs
│   │   │   │   ├── FanInEdgeState.cs
│   │   │   │   ├── FanOutEdgeRunner.cs
│   │   │   │   ├── IExternalRequestSink.cs
│   │   │   │   ├── IRunEventStream.cs
│   │   │   │   ├── IRunnerContext.cs
│   │   │   │   ├── IStepTracer.cs
│   │   │   │   ├── ISuperStepJoinContext.cs
│   │   │   │   ├── ISuperStepRunner.cs
│   │   │   │   ├── InputWaiter.cs
│   │   │   │   ├── LockstepRunEventStream.cs
│   │   │   │   ├── MessageDelivery.cs
│   │   │   │   ├── MessageEnvelope.cs
│   │   │   │   ├── MessageRouter.cs
│   │   │   │   ├── NonThrowingChannelReaderAsyncEnumerable.cs
│   │   │   │   ├── OutputFilter.cs
│   │   │   │   ├── ResponseEdgeRunner.cs
│   │   │   │   ├── RunnerStateData.cs
│   │   │   │   ├── StateManager.cs
│   │   │   │   ├── StateScope.cs
│   │   │   │   ├── StateUpdate.cs
│   │   │   │   ├── StepContext.cs
│   │   │   │   ├── StreamingRunEventStream.cs
│   │   │   │   └── UpdateKey.cs
│   │   │   ├── Executor.cs
│   │   │   ├── ExecutorBinding.cs
│   │   │   ├── ExecutorBindingExtensions.cs
│   │   │   ├── ExecutorCompletedEvent.cs
│   │   │   ├── ExecutorEvent.cs
│   │   │   ├── ExecutorFailedEvent.cs
│   │   │   ├── ExecutorInstanceBinding.cs
│   │   │   ├── ExecutorInvokedEvent.cs
│   │   │   ├── ExecutorOptions.cs
│   │   │   ├── ExecutorPlaceholder.cs
│   │   │   ├── ExternalRequest.cs
│   │   │   ├── ExternalResponse.cs
│   │   │   ├── FanInEdgeData.cs
│   │   │   ├── FanOutEdgeData.cs
│   │   │   ├── FunctionExecutor.cs
│   │   │   ├── GroupChatManager.cs
│   │   │   ├── GroupChatWorkflowBuilder.cs
│   │   │   ├── HandoffToolCallFilteringBehavior.cs
│   │   │   ├── HandoffsWorkflowBuilder.cs
│   │   │   ├── IExternalRequestContext.cs
│   │   │   ├── IIdentified.cs
│   │   │   ├── IMessageRouter.cs
│   │   │   ├── IResettableExecutor.cs
│   │   │   ├── IWorkflowContext.cs
│   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   ├── IWorkflowExecutionEnvironment.cs
│   │   │   ├── InProc/
│   │   │   │   ├── InProcStepTracer.cs
│   │   │   │   ├── InProcessExecutionEnvironment.cs
│   │   │   │   ├── InProcessExecutionOptions.cs
│   │   │   │   ├── InProcessRunner.cs
│   │   │   │   └── InProcessRunnerContext.cs
│   │   │   ├── InProcessExecution.cs
│   │   │   ├── MessageMerger.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.csproj
│   │   │   ├── Observability/
│   │   │   │   ├── ActivityExtensions.cs
│   │   │   │   ├── ActivityNames.cs
│   │   │   │   ├── EdgeRunnerDeliveryStatus.cs
│   │   │   │   ├── EventNames.cs
│   │   │   │   ├── Tags.cs
│   │   │   │   ├── WorkflowTelemetryContext.cs
│   │   │   │   └── WorkflowTelemetryOptions.cs
│   │   │   ├── OpenTelemetryWorkflowBuilderExtensions.cs
│   │   │   ├── PortBinding.cs
│   │   │   ├── PortableValue.cs
│   │   │   ├── ProtocolBuilder.cs
│   │   │   ├── ProtocolDescriptor.cs
│   │   │   ├── Reflection/
│   │   │   │   ├── IMessageHandler.cs
│   │   │   │   ├── MessageHandlerInfo.cs
│   │   │   │   ├── ReflectingExecutor.cs
│   │   │   │   ├── ReflectionExtensions.cs
│   │   │   │   ├── RouteBuilderExtensions.cs
│   │   │   │   └── ValueTaskTypeErasure.cs
│   │   │   ├── RequestHaltEvent.cs
│   │   │   ├── RequestInfoEvent.cs
│   │   │   ├── RequestPort.cs
│   │   │   ├── RequestPortBinding.cs
│   │   │   ├── RoundRobinGroupChatManager.cs
│   │   │   ├── RouteBuilder.cs
│   │   │   ├── Run.cs
│   │   │   ├── RunStatus.cs
│   │   │   ├── ScopeId.cs
│   │   │   ├── ScopeKey.cs
│   │   │   ├── Specialized/
│   │   │   │   ├── AIAgentHostExecutor.cs
│   │   │   │   ├── AIContentExternalHandler.cs
│   │   │   │   ├── AggregateTurnMessagesExecutor.cs
│   │   │   │   ├── ConcurrentEndExecutor.cs
│   │   │   │   ├── GroupChatHost.cs
│   │   │   │   ├── HandoffAgentExecutor.cs
│   │   │   │   ├── HandoffState.cs
│   │   │   │   ├── HandoffTarget.cs
│   │   │   │   ├── HandoffsEndExecutor.cs
│   │   │   │   ├── HandoffsStartExecutor.cs
│   │   │   │   ├── OutputMessagesExecutor.cs
│   │   │   │   ├── RequestInfoExecutor.cs
│   │   │   │   ├── RequestPortExtensions.cs
│   │   │   │   └── WorkflowHostExecutor.cs
│   │   │   ├── StatefulExecutor.cs
│   │   │   ├── StatefulExecutorOptions.cs
│   │   │   ├── StreamingAggregators.cs
│   │   │   ├── StreamingRun.cs
│   │   │   ├── StreamsMessageAttribute.cs
│   │   │   ├── SubworkflowBinding.cs
│   │   │   ├── SubworkflowErrorEvent.cs
│   │   │   ├── SubworkflowWarningEvent.cs
│   │   │   ├── SuperStepCompletedEvent.cs
│   │   │   ├── SuperStepCompletionInfo.cs
│   │   │   ├── SuperStepEvent.cs
│   │   │   ├── SuperStepStartInfo.cs
│   │   │   ├── SuperStepStartedEvent.cs
│   │   │   ├── SwitchBuilder.cs
│   │   │   ├── TurnToken.cs
│   │   │   ├── Visualization/
│   │   │   │   └── WorkflowVisualizer.cs
│   │   │   ├── Workflow.cs
│   │   │   ├── WorkflowBuilder.cs
│   │   │   ├── WorkflowBuilderExtensions.cs
│   │   │   ├── WorkflowChatHistoryProvider.cs
│   │   │   ├── WorkflowErrorEvent.cs
│   │   │   ├── WorkflowEvent.cs
│   │   │   ├── WorkflowHostAgent.cs
│   │   │   ├── WorkflowHostingExtensions.cs
│   │   │   ├── WorkflowOutputEvent.cs
│   │   │   ├── WorkflowSession.cs
│   │   │   ├── WorkflowStartedEvent.cs
│   │   │   ├── WorkflowWarningEvent.cs
│   │   │   └── WorkflowsJsonUtilities.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative/
│   │   │   ├── CodeGen/
│   │   │   │   ├── ActionTemplate.cs
│   │   │   │   ├── AddConversationMessageTemplate.cs
│   │   │   │   ├── AddConversationMessageTemplate.tt
│   │   │   │   ├── AddConversationMessageTemplateCode.cs
│   │   │   │   ├── ClearAllVariablesTemplate.cs
│   │   │   │   ├── ClearAllVariablesTemplate.tt
│   │   │   │   ├── ClearAllVariablesTemplateCode.cs
│   │   │   │   ├── CodeTemplate.cs
│   │   │   │   ├── ConditionGroupTemplate.cs
│   │   │   │   ├── ConditionGroupTemplate.tt
│   │   │   │   ├── ConditionGroupTemplateCode.cs
│   │   │   │   ├── CopyConversationMessagesTemplate.cs
│   │   │   │   ├── CopyConversationMessagesTemplate.tt
│   │   │   │   ├── CopyConversationMessagesTemplateCode.cs
│   │   │   │   ├── CreateConversationTemplate.cs
│   │   │   │   ├── CreateConversationTemplate.tt
│   │   │   │   ├── CreateConversationTemplateCode.cs
│   │   │   │   ├── DefaultTemplate.cs
│   │   │   │   ├── DefaultTemplate.tt
│   │   │   │   ├── DefaultTemplateCode.cs
│   │   │   │   ├── EdgeTemplate.cs
│   │   │   │   ├── EdgeTemplate.tt
│   │   │   │   ├── EdgeTemplateCode.cs
│   │   │   │   ├── EditTableV2Template.cs
│   │   │   │   ├── EditTableV2Template.tt
│   │   │   │   ├── EditTableV2TemplateCode.cs
│   │   │   │   ├── EmptyTemplate.cs
│   │   │   │   ├── EmptyTemplate.tt
│   │   │   │   ├── EmptyTemplateCode.cs
│   │   │   │   ├── ForeachTemplate.cs
│   │   │   │   ├── ForeachTemplate.tt
│   │   │   │   ├── ForeachTemplateCode.cs
│   │   │   │   ├── InstanceTemplate.cs
│   │   │   │   ├── InstanceTemplate.tt
│   │   │   │   ├── InstanceTemplateCode.cs
│   │   │   │   ├── InvokeAzureAgentTemplate.cs
│   │   │   │   ├── InvokeAzureAgentTemplate.tt
│   │   │   │   ├── InvokeAzureAgentTemplateCode.cs
│   │   │   │   ├── ParseValueTemplate.cs
│   │   │   │   ├── ParseValueTemplate.tt
│   │   │   │   ├── ParseValueTemplateCode.cs
│   │   │   │   ├── ProviderTemplate.cs
│   │   │   │   ├── ProviderTemplate.tt
│   │   │   │   ├── ProviderTemplateCode.cs
│   │   │   │   ├── QuestionTemplate.cs
│   │   │   │   ├── QuestionTemplate.tt
│   │   │   │   ├── QuestionTemplateCode.cs
│   │   │   │   ├── ResetVariableTemplate.cs
│   │   │   │   ├── ResetVariableTemplate.tt
│   │   │   │   ├── ResetVariableTemplateCode.cs
│   │   │   │   ├── RetrieveConversationMessageTemplate.cs
│   │   │   │   ├── RetrieveConversationMessageTemplate.tt
│   │   │   │   ├── RetrieveConversationMessageTemplateCode.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplate.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplate.tt
│   │   │   │   ├── RetrieveConversationMessagesTemplateCode.cs
│   │   │   │   ├── RootTemplate.cs
│   │   │   │   ├── RootTemplate.tt
│   │   │   │   ├── RootTemplateCode.cs
│   │   │   │   ├── SendActivityTemplate.cs
│   │   │   │   ├── SendActivityTemplate.tt
│   │   │   │   ├── SendActivityTemplateCode.cs
│   │   │   │   ├── SetMultipleVariablesTemplate.cs
│   │   │   │   ├── SetMultipleVariablesTemplate.tt
│   │   │   │   ├── SetMultipleVariablesTemplateCode.cs
│   │   │   │   ├── SetTextVariableTemplate.cs
│   │   │   │   ├── SetTextVariableTemplate.tt
│   │   │   │   ├── SetTextVariableTemplateCode.cs
│   │   │   │   ├── SetVariableTemplate.cs
│   │   │   │   ├── SetVariableTemplate.tt
│   │   │   │   ├── SetVariableTemplateCode.cs
│   │   │   │   └── Snippets/
│   │   │   │       ├── AssignVariableTemplate.tt
│   │   │   │       ├── EvaluateBoolExpressionTemplate.tt
│   │   │   │       ├── EvaluateEnumExpressionTemplate.tt
│   │   │   │       ├── EvaluateIntExpressionTemplate.tt
│   │   │   │       ├── EvaluateListExpressionTemplate.tt
│   │   │   │       ├── EvaluateRecordExpressionTemplate.tt
│   │   │   │       ├── EvaluateStringExpressionTemplate.tt
│   │   │   │       ├── EvaluateValueExpressionTemplate.tt
│   │   │   │       └── FormatMessageTemplate.tt
│   │   │   ├── DeclarativeWorkflowBuilder.cs
│   │   │   ├── DeclarativeWorkflowLanguage.cs
│   │   │   ├── DeclarativeWorkflowOptions.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntityExtractionResult.cs
│   │   │   │   └── EntityExtractor.cs
│   │   │   ├── Events/
│   │   │   │   ├── ConversationUpdateEvent.cs
│   │   │   │   ├── DeclarativeActionCompletedEvent.cs
│   │   │   │   ├── DeclarativeActionInvokedEvent.cs
│   │   │   │   ├── ExternalInputRequest.cs
│   │   │   │   ├── ExternalInputResponse.cs
│   │   │   │   └── MessageActivityEvent.cs
│   │   │   ├── Exceptions/
│   │   │   │   ├── DeclarativeActionException.cs
│   │   │   │   ├── DeclarativeModelException.cs
│   │   │   │   └── DeclarativeWorkflowException.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AgentProviderExtensions.cs
│   │   │   │   ├── BotElementExtensions.cs
│   │   │   │   ├── ChatMessageExtensions.cs
│   │   │   │   ├── DataValueExtensions.cs
│   │   │   │   ├── DeclarativeWorkflowOptionsExtensions.cs
│   │   │   │   ├── DialogBaseExtensions.cs
│   │   │   │   ├── ExpandoObjectExtensions.cs
│   │   │   │   ├── FormulaValueExtensions.cs
│   │   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   │   ├── JsonDocumentExtensions.cs
│   │   │   │   ├── ObjectExtensions.cs
│   │   │   │   ├── PortableValueExtensions.cs
│   │   │   │   ├── StringExtensions.cs
│   │   │   │   ├── TemplateExtensions.cs
│   │   │   │   └── TypeExtensions.cs
│   │   │   ├── IMcpToolHandler.cs
│   │   │   ├── Interpreter/
│   │   │   │   ├── DeclarativeActionExecutor.cs
│   │   │   │   ├── DeclarativeWorkflowContext.cs
│   │   │   │   ├── DeclarativeWorkflowExecutor.cs
│   │   │   │   ├── DelegateActionExecutor.cs
│   │   │   │   ├── DurableProperty.cs
│   │   │   │   ├── RequestPortAction.cs
│   │   │   │   ├── WorkflowActionVisitor.cs
│   │   │   │   ├── WorkflowCodeBuilder.cs
│   │   │   │   ├── WorkflowElementWalker.cs
│   │   │   │   ├── WorkflowModel.cs
│   │   │   │   ├── WorkflowModelBuilder.cs
│   │   │   │   └── WorkflowTemplateVisitor.cs
│   │   │   ├── Kit/
│   │   │   │   ├── ActionExecutor.cs
│   │   │   │   ├── ActionExecutorResult.cs
│   │   │   │   ├── AgentExecutor.cs
│   │   │   │   ├── DelegateExecutor.cs
│   │   │   │   ├── FormulaSession.cs
│   │   │   │   ├── IWorkflowContextExtensions.cs
│   │   │   │   ├── PortableValueExtensions.cs
│   │   │   │   ├── RootExecutor.cs
│   │   │   │   ├── UnassignedValue.cs
│   │   │   │   └── VariableType.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.csproj
│   │   │   ├── ObjectModel/
│   │   │   │   ├── AddConversationMessageExecutor.cs
│   │   │   │   ├── ClearAllVariablesExecutor.cs
│   │   │   │   ├── ConditionGroupExecutor.cs
│   │   │   │   ├── CopyConversationMessagesExecutor.cs
│   │   │   │   ├── CreateConversationExecutor.cs
│   │   │   │   ├── DefaultActionExecutor.cs
│   │   │   │   ├── EditTableExecutor.cs
│   │   │   │   ├── EditTableV2Executor.cs
│   │   │   │   ├── ForeachExecutor.cs
│   │   │   │   ├── InvokeAzureAgentExecutor.cs
│   │   │   │   ├── InvokeFunctionToolExecutor.cs
│   │   │   │   ├── InvokeMcpToolExecutor.cs
│   │   │   │   ├── ParseValueExecutor.cs
│   │   │   │   ├── QuestionExecutor.cs
│   │   │   │   ├── RequestExternalInputExecutor.cs
│   │   │   │   ├── ResetVariableExecutor.cs
│   │   │   │   ├── RetrieveConversationMessageExecutor.cs
│   │   │   │   ├── RetrieveConversationMessagesExecutor.cs
│   │   │   │   ├── SendActivityExecutor.cs
│   │   │   │   ├── SetMultipleVariablesExecutor.cs
│   │   │   │   ├── SetTextVariableExecutor.cs
│   │   │   │   └── SetVariableExecutor.cs
│   │   │   ├── PowerFx/
│   │   │   │   ├── Functions/
│   │   │   │   │   ├── AgentMessage.cs
│   │   │   │   │   ├── MessageFunction.cs
│   │   │   │   │   ├── MessageText.cs
│   │   │   │   │   └── UserMessage.cs
│   │   │   │   ├── RecalcEngineFactory.cs
│   │   │   │   ├── SystemScope.cs
│   │   │   │   ├── TypeSchema.cs
│   │   │   │   ├── WorkflowDiagnostics.cs
│   │   │   │   ├── WorkflowExpressionEngine.cs
│   │   │   │   └── WorkflowFormulaState.cs
│   │   │   ├── README.md
│   │   │   └── ResponseAgentProvider.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.AzureAI/
│   │   │   ├── AzureAgentProvider.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.AzureAI.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.Mcp/
│   │   │   ├── DefaultMcpToolHandler.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.Mcp.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Generators/
│   │   │   ├── Analysis/
│   │   │   │   └── SemanticAnalyzer.cs
│   │   │   ├── Diagnostics/
│   │   │   │   └── DiagnosticDescriptors.cs
│   │   │   ├── Directory.Build.targets
│   │   │   ├── ExecutorRouteGenerator.cs
│   │   │   ├── Generation/
│   │   │   │   └── SourceBuilder.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Generators.csproj
│   │   │   ├── Models/
│   │   │   │   ├── AnalysisResult.cs
│   │   │   │   ├── ClassProtocolInfo.cs
│   │   │   │   ├── DiagnosticInfo.cs
│   │   │   │   ├── DiagnosticLocationInfo.cs
│   │   │   │   ├── EquatableArray.cs
│   │   │   │   ├── ExecutorInfo.cs
│   │   │   │   ├── HandlerInfo.cs
│   │   │   │   ├── ImmutableEquatableArray.cs
│   │   │   │   ├── MethodAnalysisResult.cs
│   │   │   │   └── ProtocolAttributeKind.cs
│   │   │   └── SkipIncompatibleBuild.targets
│   │   └── Shared/
│   │       ├── CodeTests/
│   │       │   ├── Compiler.cs
│   │       │   └── README.md
│   │       ├── Demos/
│   │       │   ├── README.md
│   │       │   └── SampleEnvironment.cs
│   │       ├── DiagnosticIds/
│   │       │   ├── DiagnosticsIds.cs
│   │       │   └── README.md
│   │       ├── Foundry/
│   │       │   └── Agents/
│   │       │       ├── AgentFactory.cs
│   │       │       └── README.md
│   │       ├── IntegrationTests/
│   │       │   ├── README.md
│   │       │   └── TestSettings.cs
│   │       ├── IntegrationTestsAzureCredentials/
│   │       │   ├── README.md
│   │       │   └── TestAzureCliCredentials.cs
│   │       ├── Samples/
│   │       │   ├── BaseSample.cs
│   │       │   ├── OrchestrationSample.cs
│   │       │   ├── README.md
│   │       │   ├── Resources.cs
│   │       │   ├── TestConfiguration.cs
│   │       │   ├── TextOutputHelperExtensions.cs
│   │       │   └── XunitLogger.cs
│   │       ├── StructuredOutput/
│   │       │   └── StructuredOutputSchemaUtilities.cs
│   │       ├── Throw/
│   │       │   ├── README.md
│   │       │   └── Throw.cs
│   │       └── Workflows/
│   │           ├── Execution/
│   │           │   ├── README.md
│   │           │   ├── WorkflowFactory.cs
│   │           │   └── WorkflowRunner.cs
│   │           └── Settings/
│   │               ├── Application.cs
│   │               └── README.md
│   ├── tests/
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── AgentConformance.IntegrationTests/
│   │   │   ├── AgentConformance.IntegrationTests.csproj
│   │   │   ├── AgentTests.cs
│   │   │   ├── ChatClientAgentRunStreamingTests.cs
│   │   │   ├── ChatClientAgentRunTests.cs
│   │   │   ├── IAgentFixture.cs
│   │   │   ├── IChatClientAgentFixture.cs
│   │   │   ├── MenuPlugin.cs
│   │   │   ├── RunStreamingTests.cs
│   │   │   ├── RunTests.cs
│   │   │   ├── StructuredOutputRunTests.cs
│   │   │   └── Support/
│   │   │       ├── AgentCleanup.cs
│   │   │       ├── Constants.cs
│   │   │       ├── SessionCleanup.cs
│   │   │       └── TestConfiguration.cs
│   │   ├── AnthropicChatCompletion.IntegrationTests/
│   │   │   ├── AnthropicChatCompletion.IntegrationTests.csproj
│   │   │   ├── AnthropicChatCompletionChatClientAgentRunStreamingTests.cs
│   │   │   ├── AnthropicChatCompletionChatClientAgentRunTests.cs
│   │   │   ├── AnthropicChatCompletionFixture.cs
│   │   │   ├── AnthropicChatCompletionRunStreamingTests.cs
│   │   │   ├── AnthropicChatCompletionRunTests.cs
│   │   │   └── AnthropicSkillsIntegrationTests.cs
│   │   ├── AzureAI.IntegrationTests/
│   │   │   ├── AIProjectClientAgentRunStreamingTests.cs
│   │   │   ├── AIProjectClientAgentRunTests.cs
│   │   │   ├── AIProjectClientAgentStructuredOutputRunTests.cs
│   │   │   ├── AIProjectClientChatClientAgentRunStreamingTests.cs
│   │   │   ├── AIProjectClientChatClientAgentRunTests.cs
│   │   │   ├── AIProjectClientCreateTests.cs
│   │   │   ├── AIProjectClientFixture.cs
│   │   │   └── AzureAI.IntegrationTests.csproj
│   │   ├── AzureAIAgentsPersistent.IntegrationTests/
│   │   │   ├── AzureAIAgentsChatClientAgentRunStreamingTests.cs
│   │   │   ├── AzureAIAgentsChatClientAgentRunTests.cs
│   │   │   ├── AzureAIAgentsPersistent.IntegrationTests.csproj
│   │   │   ├── AzureAIAgentsPersistentCreateTests.cs
│   │   │   ├── AzureAIAgentsPersistentFixture.cs
│   │   │   ├── AzureAIAgentsPersistentRunStreamingTests.cs
│   │   │   ├── AzureAIAgentsPersistentRunTests.cs
│   │   │   └── AzureAIAgentsPersistentStructuredOutputRunTests.cs
│   │   ├── CopilotStudio.IntegrationTests/
│   │   │   ├── CopilotStudio.IntegrationTests.csproj
│   │   │   ├── CopilotStudioFixture.cs
│   │   │   ├── CopilotStudioRunStreamingTests.cs
│   │   │   ├── CopilotStudioRunTests.cs
│   │   │   └── Support/
│   │   │       ├── CopilotStudioConnectionSettings.cs
│   │   │       └── CopilotStudioTokenHandler.cs
│   │   ├── Directory.Build.props
│   │   ├── Microsoft.Agents.AI.A2A.UnitTests/
│   │   │   ├── A2AAgentSessionTests.cs
│   │   │   ├── A2AAgentTests.cs
│   │   │   ├── A2AContinuationTokenTests.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── A2AAIContentExtensionsTests.cs
│   │   │   │   ├── A2AAgentCardExtensionsTests.cs
│   │   │   │   ├── A2AAgentTaskExtensionsTests.cs
│   │   │   │   ├── A2AArtifactExtensionsTests.cs
│   │   │   │   ├── A2ACardResolverExtensionsTests.cs
│   │   │   │   ├── A2AClientExtensionsTests.cs
│   │   │   │   └── ChatMessageExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.A2A.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AGUI.UnitTests/
│   │   │   ├── AGUIChatClientTests.cs
│   │   │   ├── AGUIChatMessageExtensionsTests.cs
│   │   │   ├── AGUIHttpServiceTests.cs
│   │   │   ├── AGUIJsonSerializerContextTests.cs
│   │   │   ├── AIToolExtensionsTests.cs
│   │   │   ├── ChatResponseUpdateAGUIExtensionsTests.cs
│   │   │   ├── Microsoft.Agents.AI.AGUI.UnitTests.csproj
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Abstractions.UnitTests/
│   │   │   ├── AIAgentMetadataTests.cs
│   │   │   ├── AIAgentStructuredOutputTests.cs
│   │   │   ├── AIAgentTests.cs
│   │   │   ├── AIContextProviderTests.cs
│   │   │   ├── AIContextTests.cs
│   │   │   ├── AdditionalPropertiesExtensionsTests.cs
│   │   │   ├── AgentAbstractionsJsonUtilitiesTests.cs
│   │   │   ├── AgentRequestMessageSourceAttributionTests.cs
│   │   │   ├── AgentRequestMessageSourceTypeTests.cs
│   │   │   ├── AgentResponseTests.cs
│   │   │   ├── AgentResponseUpdateExtensionsTests.cs
│   │   │   ├── AgentResponseUpdateTests.cs
│   │   │   ├── AgentRunContextTests.cs
│   │   │   ├── AgentRunOptionsTests.cs
│   │   │   ├── AgentSessionExtensionsTests.cs
│   │   │   ├── AgentSessionStateBagTests.cs
│   │   │   ├── AgentSessionTests.cs
│   │   │   ├── ChatHistoryProviderTests.cs
│   │   │   ├── ChatMessageExtensionsTests.cs
│   │   │   ├── DelegatingAIAgentTests.cs
│   │   │   ├── InMemoryChatHistoryProviderTests.cs
│   │   │   ├── MessageAIContextProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.Abstractions.UnitTests.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Animal.cs
│   │   │   │   └── Species.cs
│   │   │   ├── ProviderSessionStateTests.cs
│   │   │   └── TestJsonSerializerContext.cs
│   │   ├── Microsoft.Agents.AI.Anthropic.UnitTests/
│   │   │   ├── Extensions/
│   │   │   │   ├── AnthropicBetaServiceExtensionsTests.cs
│   │   │   │   └── AnthropicClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.Anthropic.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI.Persistent.UnitTests/
│   │   │   ├── Extensions/
│   │   │   │   └── PersistentAgentsClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.AzureAI.Persistent.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.AzureAI.UnitTests/
│   │   │   ├── AzureAIProjectChatClientExtensionsTests.cs
│   │   │   ├── AzureAIProjectChatClientTests.cs
│   │   │   ├── FakeAuthenticationTokenProvider.cs
│   │   │   ├── HttpHandlerAssert.cs
│   │   │   ├── Microsoft.Agents.AI.AzureAI.UnitTests.csproj
│   │   │   ├── TestData/
│   │   │   │   ├── AgentResponse.json
│   │   │   │   ├── AgentVersionResponse.json
│   │   │   │   └── OpenAIDefaultResponse.json
│   │   │   └── TestDataUtil.cs
│   │   ├── Microsoft.Agents.AI.CosmosNoSql.UnitTests/
│   │   │   ├── .editorconfig
│   │   │   ├── CosmosChatHistoryProviderTests.cs
│   │   │   ├── CosmosCheckpointStoreTests.cs
│   │   │   ├── CosmosDBCollectionFixture.cs
│   │   │   └── Microsoft.Agents.AI.CosmosNoSql.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Declarative.UnitTests/
│   │   │   ├── AgentBotElementYamlTests.cs
│   │   │   ├── AggregatorPromptAgentFactoryTests.cs
│   │   │   ├── ChatClient/
│   │   │   │   └── ChatClientAgentFactoryTests.cs
│   │   │   ├── Microsoft.Agents.AI.Declarative.UnitTests.csproj
│   │   │   └── PromptAgents.cs
│   │   ├── Microsoft.Agents.AI.DevUI.UnitTests/
│   │   │   ├── DevUIExtensionsTests.cs
│   │   │   ├── DevUIIntegrationTests.cs
│   │   │   └── Microsoft.Agents.AI.DevUI.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.DurableTask.IntegrationTests/
│   │   │   ├── AgentEntityTests.cs
│   │   │   ├── ConsoleAppSamplesValidation.cs
│   │   │   ├── ExternalClientTests.cs
│   │   │   ├── Logging/
│   │   │   │   ├── LogEntry.cs
│   │   │   │   ├── TestLogger.cs
│   │   │   │   └── TestLoggerProvider.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.IntegrationTests.csproj
│   │   │   ├── OrchestrationTests.cs
│   │   │   ├── SamplesValidationBase.cs
│   │   │   ├── TestHelper.cs
│   │   │   ├── TimeToLiveTests.cs
│   │   │   └── WorkflowConsoleAppSamplesValidation.cs
│   │   ├── Microsoft.Agents.AI.DurableTask.UnitTests/
│   │   │   ├── AgentSessionIdTests.cs
│   │   │   ├── DurableAgentRunOptionsTests.cs
│   │   │   ├── DurableAgentSessionTests.cs
│   │   │   ├── Microsoft.Agents.AI.DurableTask.UnitTests.csproj
│   │   │   ├── State/
│   │   │   │   ├── DurableAgentStateContentTests.cs
│   │   │   │   ├── DurableAgentStateMessageTests.cs
│   │   │   │   ├── DurableAgentStateRequestTests.cs
│   │   │   │   ├── DurableAgentStateResponseTests.cs
│   │   │   │   └── DurableAgentStateTests.cs
│   │   │   └── Workflows/
│   │   │       ├── DurableActivityExecutorTests.cs
│   │   │       ├── DurableStreamingWorkflowRunTests.cs
│   │   │       ├── DurableWorkflowContextTests.cs
│   │   │       └── WorkflowNamingHelperTests.cs
│   │   ├── Microsoft.Agents.AI.FoundryMemory.IntegrationTests/
│   │   │   ├── FoundryMemoryProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.FoundryMemory.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.FoundryMemory.UnitTests/
│   │   │   ├── FoundryMemoryProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.FoundryMemory.UnitTests.csproj
│   │   │   └── TestableAIProjectClient.cs
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot.IntegrationTests/
│   │   │   ├── GitHubCopilotAgentTests.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.GitHub.Copilot.UnitTests/
│   │   │   ├── CopilotClientExtensionsTests.cs
│   │   │   ├── GitHubCopilotAgentTests.cs
│   │   │   └── Microsoft.Agents.AI.GitHub.Copilot.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.A2A.UnitTests/
│   │   │   ├── A2AIntegrationTests.cs
│   │   │   ├── AIAgentExtensionsTests.cs
│   │   │   ├── Converters/
│   │   │   │   └── MessageConverterTests.cs
│   │   │   ├── EndpointRouteA2ABuilderExtensionsTests.cs
│   │   │   ├── Internal/
│   │   │   │   └── DummyChatClient.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.A2A.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.IntegrationTests/
│   │   │   ├── BasicStreamingTests.cs
│   │   │   ├── ForwardedPropertiesTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.IntegrationTests.csproj
│   │   │   ├── SharedStateTests.cs
│   │   │   └── ToolCallingTests.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.UnitTests/
│   │   │   ├── AGUIEndpointRouteBuilderExtensionsTests.cs
│   │   │   ├── AGUIServerSentEventsResultTests.cs
│   │   │   ├── ChatResponseUpdateAGUIExtensionsTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.UnitTests.csproj
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/
│   │   │   ├── AzureFunctionsTestHelper.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests.csproj
│   │   │   ├── SamplesValidation.cs
│   │   │   └── WorkflowSamplesValidation.cs
│   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.UnitTests/
│   │   │   ├── DurableAgentFunctionMetadataTransformerTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.AzureFunctions.UnitTests.csproj
│   │   │   └── TestAgent.cs
│   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.UnitTests/
│   │   │   ├── AgentInvocationContextTests.cs
│   │   │   ├── ConformanceTestBase.cs
│   │   │   ├── ConformanceTraces/
│   │   │   │   ├── ChatCompletions/
│   │   │   │   │   ├── basic/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── function_calling/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── json_mode/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── multi_turn/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── streaming/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.txt
│   │   │   │   │   ├── system_message/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── request.json
│   │   │   │   │       └── response.json
│   │   │   │   ├── Conversations/
│   │   │   │   │   ├── add_items/
│   │   │   │   │   │   ├── request.json
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── basic/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   ├── first_message_response.json
│   │   │   │   │   │   ├── second_message_request.json
│   │   │   │   │   │   └── second_message_response.json
│   │   │   │   │   ├── basic_streaming/
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── create_with_items/
│   │   │   │   │   │   ├── create_request.json
│   │   │   │   │   │   └── create_response.json
│   │   │   │   │   ├── delete_conversation/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── delete_item/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_conversation_not_found/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_delete_already_deleted/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_invalid_json/
│   │   │   │   │   │   ├── request.txt
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_invalid_limit/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_item_not_found/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── error_missing_required_field/
│   │   │   │   │   │   └── request.json
│   │   │   │   │   ├── image_input/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── image_input_streaming/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── list_items/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── refusal/
│   │   │   │   │   │   ├── create_conversation_response.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── refusal_streaming/
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.txt
│   │   │   │   │   ├── retrieve_conversation/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── retrieve_item/
│   │   │   │   │   │   └── response.json
│   │   │   │   │   ├── tool_call/
│   │   │   │   │   │   ├── create_conversation_request.json
│   │   │   │   │   │   ├── first_message_request.json
│   │   │   │   │   │   └── first_message_response.json
│   │   │   │   │   ├── tool_call_streaming/
│   │   │   │   │   │   └── first_message_request.json
│   │   │   │   │   └── update_conversation/
│   │   │   │   │       ├── request.json
│   │   │   │   │       └── response.json
│   │   │   │   └── Responses/
│   │   │   │       ├── basic/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── conversation/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── image_input/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── image_input_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── json_output/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── json_output_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── metadata/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── mutual_exclusive_error/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── reasoning/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── reasoning_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── refusal/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.json
│   │   │   │       ├── refusal_streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       ├── streaming/
│   │   │   │       │   ├── request.json
│   │   │   │       │   └── response.txt
│   │   │   │       └── tool_call/
│   │   │   │           ├── request.json
│   │   │   │           └── response.json
│   │   │   ├── ContentTypeEventGeneratorTests.cs
│   │   │   ├── EndpointRouteBuilderExtensionsTests.cs
│   │   │   ├── FunctionApprovalTests.cs
│   │   │   ├── IdGeneratorTests.cs
│   │   │   ├── InMemoryAgentConversationIndexTests.cs
│   │   │   ├── InMemoryConversationStorageTests.cs
│   │   │   ├── Microsoft.Agents.AI.Hosting.OpenAI.UnitTests.csproj
│   │   │   ├── OpenAIChatCompletionsConformanceTests.cs
│   │   │   ├── OpenAIChatCompletionsIntegrationTests.cs
│   │   │   ├── OpenAIChatCompletionsSerializationTests.cs
│   │   │   ├── OpenAIConversationsConformanceTests.cs
│   │   │   ├── OpenAIConversationsSerializationTests.cs
│   │   │   ├── OpenAIHttpApiIntegrationTests.cs
│   │   │   ├── OpenAIResponsesAgentResolutionIntegrationTests.cs
│   │   │   ├── OpenAIResponsesConformanceTests.cs
│   │   │   ├── OpenAIResponsesIntegrationTests.cs
│   │   │   ├── OpenAIResponsesSerializationTests.cs
│   │   │   ├── SortOrderExtensionsTests.cs
│   │   │   ├── StreamingEventConformanceTests.cs
│   │   │   └── TestHelpers.cs
│   │   ├── Microsoft.Agents.AI.Hosting.UnitTests/
│   │   │   ├── AgentHostingServiceCollectionExtensionsTests.cs
│   │   │   ├── HostApplicationBuilderAgentExtensionsTests.cs
│   │   │   ├── HostApplicationBuilderWorkflowExtensionsTests.cs
│   │   │   ├── HostedAgentBuilderToolsExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.Hosting.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Mem0.IntegrationTests/
│   │   │   ├── Mem0ProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.IntegrationTests.csproj
│   │   ├── Microsoft.Agents.AI.Mem0.UnitTests/
│   │   │   ├── Mem0ProviderTests.cs
│   │   │   └── Microsoft.Agents.AI.Mem0.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.OpenAI.UnitTests/
│   │   │   ├── ChatClient/
│   │   │   │   ├── AsyncStreamingChatCompletionUpdateCollectionResultTests.cs
│   │   │   │   ├── AsyncStreamingResponseUpdateCollectionResultTests.cs
│   │   │   │   └── StreamingUpdatePipelineResponseTests.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── AIAgentWithOpenAIExtensionsTests.cs
│   │   │   │   ├── AgentResponseExtensionsTests.cs
│   │   │   │   ├── OpenAIAssistantClientExtensionsTests.cs
│   │   │   │   ├── OpenAIChatClientExtensionsTests.cs
│   │   │   │   └── OpenAIResponseClientExtensionsTests.cs
│   │   │   └── Microsoft.Agents.AI.OpenAI.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Purview.UnitTests/
│   │   │   ├── Microsoft.Agents.AI.Purview.UnitTests.csproj
│   │   │   ├── PurviewClientTests.cs
│   │   │   ├── PurviewWrapperTests.cs
│   │   │   └── ScopedContentProcessorTests.cs
│   │   ├── Microsoft.Agents.AI.UnitTests/
│   │   │   ├── AIAgentBuilderTests.cs
│   │   │   ├── AIContextProviderDecorators/
│   │   │   │   ├── AIContextProviderChatClientTests.cs
│   │   │   │   └── MessageAIContextProviderAgentTests.cs
│   │   │   ├── AgentExtensionsTests.cs
│   │   │   ├── AgentJsonUtilitiesTests.cs
│   │   │   ├── AgentSkills/
│   │   │   │   ├── FileAgentSkillLoaderTests.cs
│   │   │   │   └── FileAgentSkillsProviderTests.cs
│   │   │   ├── AnonymousDelegatingAIAgentTests.cs
│   │   │   ├── ChatClient/
│   │   │   │   ├── ChatClientAgentContinuationTokenTests.cs
│   │   │   │   ├── ChatClientAgentOptionsTests.cs
│   │   │   │   ├── ChatClientAgentRunOptionsTests.cs
│   │   │   │   ├── ChatClientAgentSessionTests.cs
│   │   │   │   ├── ChatClientAgentTests.cs
│   │   │   │   ├── ChatClientAgent_BackgroundResponsesTests.cs
│   │   │   │   ├── ChatClientAgent_ChatHistoryManagementTests.cs
│   │   │   │   ├── ChatClientAgent_ChatOptionsMergingTests.cs
│   │   │   │   ├── ChatClientAgent_CreateSessionTests.cs
│   │   │   │   ├── ChatClientAgent_RunWithCustomOptionsTests.cs
│   │   │   │   ├── ChatClientAgent_StructuredOutput_WithFormatResponseTests.cs
│   │   │   │   ├── ChatClientAgent_StructuredOutput_WithRunAsyncTests.cs
│   │   │   │   ├── ChatClientBuilderExtensionsTests.cs
│   │   │   │   └── ChatClientExtensionsTests.cs
│   │   │   ├── Compaction/
│   │   │   │   ├── ChatMessageContentEqualityTests.cs
│   │   │   │   ├── ChatReducerCompactionStrategyTests.cs
│   │   │   │   ├── ChatStrategyExtensionsTests.cs
│   │   │   │   ├── CompactionMessageIndexTests.cs
│   │   │   │   ├── CompactionProviderTests.cs
│   │   │   │   ├── CompactionStrategyTests.cs
│   │   │   │   ├── CompactionTriggersTests.cs
│   │   │   │   ├── PipelineCompactionStrategyTests.cs
│   │   │   │   ├── SlidingWindowCompactionStrategyTests.cs
│   │   │   │   ├── SummarizationCompactionStrategyTests.cs
│   │   │   │   ├── ToolResultCompactionStrategyTests.cs
│   │   │   │   └── TruncationCompactionStrategyTests.cs
│   │   │   ├── CopilotStudioAgentTests.cs
│   │   │   ├── Data/
│   │   │   │   └── TextSearchProviderTests.cs
│   │   │   ├── FunctionInvocationDelegatingAgentTests.cs
│   │   │   ├── LoggingAgentBuilderExtensionsTests.cs
│   │   │   ├── LoggingAgentTests.cs
│   │   │   ├── Memory/
│   │   │   │   └── ChatHistoryMemoryProviderTests.cs
│   │   │   ├── Microsoft.Agents.AI.UnitTests.csproj
│   │   │   ├── Models/
│   │   │   │   ├── Animal.cs
│   │   │   │   └── Species.cs
│   │   │   ├── OpenTelemetryAgentBuilderExtensionsTests.cs
│   │   │   ├── OpenTelemetryAgentTests.cs
│   │   │   ├── TestAIAgent.cs
│   │   │   └── TestJsonSerializerContext.cs
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.IntegrationTests/
│   │   │   ├── Agents/
│   │   │   │   ├── AgentProvider.cs
│   │   │   │   ├── FunctionToolAgentProvider.cs
│   │   │   │   ├── MarketingAgentProvider.cs
│   │   │   │   ├── MathChatAgentProvider.cs
│   │   │   │   ├── MenuPlugin.cs
│   │   │   │   ├── PoemAgentProvider.cs
│   │   │   │   ├── TestAgentProvider.cs
│   │   │   │   └── VisionAgentProvider.cs
│   │   │   ├── AzureAgentProviderTest.cs
│   │   │   ├── DeclarativeCodeGenTest.cs
│   │   │   ├── DeclarativeWorkflowTest.cs
│   │   │   ├── Framework/
│   │   │   │   ├── IntegrationTest.cs
│   │   │   │   ├── TestOutputAdapter.cs
│   │   │   │   ├── Testcase.cs
│   │   │   │   ├── WorkflowEvents.cs
│   │   │   │   ├── WorkflowHarness.cs
│   │   │   │   └── WorkflowTest.cs
│   │   │   ├── FunctionCallingWorkflowTest.cs
│   │   │   ├── InvokeToolWorkflowTest.cs
│   │   │   ├── MediaInputTest.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.IntegrationTests.csproj
│   │   │   ├── Testcases/
│   │   │   │   ├── CheckSystem.json
│   │   │   │   ├── ConfirmInput.json
│   │   │   │   ├── ConversationMessages.json
│   │   │   │   ├── DeepResearch.json
│   │   │   │   ├── HumanInLoop.json
│   │   │   │   ├── InputArguments.json
│   │   │   │   ├── InvokeAgent.json
│   │   │   │   ├── Marketing.json
│   │   │   │   ├── MathChat.json
│   │   │   │   ├── RequestExternalInput.json
│   │   │   │   └── SendActivity.json
│   │   │   └── Workflows/
│   │   │       ├── CheckSystem.yaml
│   │   │       ├── ConfirmInput.yaml
│   │   │       ├── ConversationMessages.yaml
│   │   │       ├── FunctionTool.yaml
│   │   │       ├── InputArguments.yaml
│   │   │       ├── InvokeAgent.yaml
│   │   │       ├── InvokeFunctionTool.yaml
│   │   │       ├── InvokeFunctionToolWithApproval.yaml
│   │   │       ├── InvokeMcpTool.yaml
│   │   │       ├── InvokeMcpToolWithApproval.yaml
│   │   │       ├── MediaInputAutoSend.yaml
│   │   │       ├── MediaInputConversation.yaml
│   │   │       ├── RequestExternalInput.yaml
│   │   │       └── SendActivity.yaml
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.Mcp.UnitTests/
│   │   │   ├── DefaultMcpToolHandlerTests.cs
│   │   │   └── Microsoft.Agents.AI.Workflows.Declarative.Mcp.UnitTests.csproj
│   │   ├── Microsoft.Agents.AI.Workflows.Declarative.UnitTests/
│   │   │   ├── CodeGen/
│   │   │   │   ├── AddConversationMessageTemplateTest.cs
│   │   │   │   ├── BreakLoopTemplateTest.cs
│   │   │   │   ├── ClearAllVariablesTemplateTest.cs
│   │   │   │   ├── ConditionGroupTemplateTest.cs
│   │   │   │   ├── ContinueLoopTemplateTest.cs
│   │   │   │   ├── CopyConversationMessagesTemplateTest.cs
│   │   │   │   ├── CreateConversationTemplateTest.cs
│   │   │   │   ├── DeclarativeEjectionTest.cs
│   │   │   │   ├── EdgeTemplateTest.cs
│   │   │   │   ├── EndConversationTest.cs
│   │   │   │   ├── EndDialogTest.cs
│   │   │   │   ├── ForeachTemplateTest.cs
│   │   │   │   ├── GotoTemplateTest.cs
│   │   │   │   ├── InvokeAzureAgentTemplateTest.cs
│   │   │   │   ├── ProviderTemplateTest.cs
│   │   │   │   ├── ResetVariableTemplateTest.cs
│   │   │   │   ├── RetrieveConversationMessageTemplateTest.cs
│   │   │   │   ├── RetrieveConversationMessagesTemplateTest.cs
│   │   │   │   ├── SetMultipleVariablesTemplateTest.cs
│   │   │   │   ├── SetTextVariableTemplateTest.cs
│   │   │   │   ├── SetVariableTemplateTest.cs
│   │   │   │   └── WorkflowActionTemplateTest.cs
│   │   │   ├── DeclarativeWorkflowContextTest.cs
│   │   │   ├── DeclarativeWorkflowExceptionTest.cs
│   │   │   ├── DeclarativeWorkflowOptionsTest.cs
│   │   │   ├── DeclarativeWorkflowTest.cs
│   │   │   ├── Entities/
│   │   │   │   ├── EntityExtractionResultTest.cs
│   │   │   │   └── EntityExtractorTest.cs
│   │   │   ├── Events/
│   │   │   │   ├── EventTest.cs
│   │   │   │   ├── ExternalInputRequestTest.cs
│   │   │   │   └── ExternalInputResponseTest.cs
│   │   │   ├── Extensions/
│   │   │   │   ├── ChatMessageExtensionsTests.cs
│   │   │   │   ├── DataValueExtensionsTests.cs
│   │   │   │   ├── DeclarativeWorkflowOptionsExtensionsTests.cs
│   │   │   │   ├── DialogBaseExtensionsTests.cs
│   │   │   │   ├── ExpandoObjectExtensionsTests.cs
│   │   │   │   ├── FormulaValueExtensionsTests.cs
│   │   │   │   ├── JsonDocumentExtensionsTests.cs
│   │   │   │   ├── ObjectExtensionsTests.cs
│   │   │   │   ├── PortableValueExtensionsTests.cs
│   │   │   │   ├── StringExtensionsTests.cs
│   │   │   │   ├── TemplateExtensionsTests.cs
│   │   │   │   └── TypeExtensionsTests.cs
│   │   │   ├── Interpreter/
│   │   │   │   └── WorkflowModelTest.cs
│   │   │   ├── Kit/
│   │   │   │   └── VariableTypeTests.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Declarative.UnitTests.csproj
│   │   │   ├── MockAgentProvider.cs
│   │   │   ├── ObjectModel/
│   │   │   │   ├── AddConversationMessageExecutorTest.cs
│   │   │   │   ├── ClearAllVariablesExecutorTest.cs
│   │   │   │   ├── ConditionGroupExecutorTest.cs
│   │   │   │   ├── CopyConversationMessagesExecutorTest.cs
│   │   │   │   ├── CreateConversationExecutorTest.cs
│   │   │   │   ├── DefaultActionExecutorTest.cs
│   │   │   │   ├── EditTableExecutorTest.cs
│   │   │   │   ├── EditTableV2ExecutorTest.cs
│   │   │   │   ├── ForeachExecutorTest.cs
│   │   │   │   ├── InvokeFunctionToolExecutorTest.cs
│   │   │   │   ├── InvokeMcpToolExecutorTest.cs
│   │   │   │   ├── ParseValueExecutorTest.cs
│   │   │   │   ├── QuestionExecutorTest.cs
│   │   │   │   ├── RequestExternalInputExecutorTest.cs
│   │   │   │   ├── ResetVariableExecutorTest.cs
│   │   │   │   ├── RetrieveConversationMessageExecutorTest.cs
│   │   │   │   ├── RetrieveConversationMessagesExecutorTest.cs
│   │   │   │   ├── SendActivityExecutorTest.cs
│   │   │   │   ├── SetMultipleVariablesExecutorTest.cs
│   │   │   │   ├── SetTextVariableExecutorTest.cs
│   │   │   │   ├── SetVariableExecutorTest.cs
│   │   │   │   └── WorkflowActionExecutorTest.cs
│   │   │   ├── PowerFx/
│   │   │   │   ├── Functions/
│   │   │   │   │   ├── AgentMessageTests.cs
│   │   │   │   │   ├── MessageTextTests.cs
│   │   │   │   │   └── UserMessageTests.cs
│   │   │   │   ├── RecalcEngineFactoryTests.cs
│   │   │   │   ├── RecalcEngineTest.cs
│   │   │   │   ├── TemplateExtensionsTests.cs
│   │   │   │   ├── WorkflowExpressionEngineTests.cs
│   │   │   │   └── WorkflowFormulaStateTests.cs
│   │   │   ├── TestOutputAdapter.cs
│   │   │   ├── UpdateBaseline.ps1
│   │   │   ├── WorkflowTest.cs
│   │   │   └── Workflows/
│   │   │       ├── AddConversationMessage.cs
│   │   │       ├── AddConversationMessage.yaml
│   │   │       ├── BadEmpty.yaml
│   │   │       ├── BadId.yaml
│   │   │       ├── BadKind.yaml
│   │   │       ├── CancelWorkflow.cs
│   │   │       ├── CancelWorkflow.yaml
│   │   │       ├── CaseInsensitive.yaml
│   │   │       ├── ClearAllVariables.cs
│   │   │       ├── ClearAllVariables.yaml
│   │   │       ├── Condition.cs
│   │   │       ├── Condition.yaml
│   │   │       ├── ConditionElse.cs
│   │   │       ├── ConditionElse.yaml
│   │   │       ├── ConditionFallThrough.yaml
│   │   │       ├── CopyConversationMessages.cs
│   │   │       ├── CopyConversationMessages.yaml
│   │   │       ├── CreateConversation.cs
│   │   │       ├── CreateConversation.yaml
│   │   │       ├── EditTable.cs
│   │   │       ├── EditTable.yaml
│   │   │       ├── EditTableV2.cs
│   │   │       ├── EditTableV2.yaml
│   │   │       ├── EndConversation.cs
│   │   │       ├── EndConversation.yaml
│   │   │       ├── EndWorkflow.cs
│   │   │       ├── EndWorkflow.yaml
│   │   │       ├── Goto.cs
│   │   │       ├── Goto.yaml
│   │   │       ├── InvokeAgent.cs
│   │   │       ├── InvokeAgent.yaml
│   │   │       ├── LoopBreak.cs
│   │   │       ├── LoopBreak.yaml
│   │   │       ├── LoopContinue.cs
│   │   │       ├── LoopContinue.yaml
│   │   │       ├── LoopEach.cs
│   │   │       ├── LoopEach.yaml
│   │   │       ├── MixedScopes.yaml
│   │   │       ├── ParseValue.cs
│   │   │       ├── ParseValue.yaml
│   │   │       ├── ParseValueList.yaml
│   │   │       ├── ResetVariable.cs
│   │   │       ├── ResetVariable.yaml
│   │   │       ├── RetrieveConversationMessage.cs
│   │   │       ├── RetrieveConversationMessage.yaml
│   │   │       ├── RetrieveConversationMessages.cs
│   │   │       ├── RetrieveConversationMessages.yaml
│   │   │       ├── SendActivity.cs
│   │   │       ├── SendActivity.yaml
│   │   │       ├── SetTextVariable.cs
│   │   │       ├── SetTextVariable.yaml
│   │   │       ├── SetVariable.cs
│   │   │       └── SetVariable.yaml
│   │   ├── Microsoft.Agents.AI.Workflows.Generators.UnitTests/
│   │   │   ├── ExecutorRouteGeneratorTests.cs
│   │   │   ├── GeneratorTestHelper.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.Generators.UnitTests.csproj
│   │   │   └── SyntaxTreeFluentExtensions.cs
│   │   ├── Microsoft.Agents.AI.Workflows.UnitTests/
│   │   │   ├── AIAgentHostExecutorTests.cs
│   │   │   ├── AgentEventsTests.cs
│   │   │   ├── AgentWorkflowBuilderTests.cs
│   │   │   ├── ChatMessageBuilder.cs
│   │   │   ├── ChatProtocolExecutorTests.cs
│   │   │   ├── CheckpointParentTests.cs
│   │   │   ├── DynamicPortsExecutor.cs
│   │   │   ├── DynamicRequestPortTests.cs
│   │   │   ├── EdgeMapSmokeTests.cs
│   │   │   ├── EdgeRunnerTests.cs
│   │   │   ├── ExecutionExtensions.cs
│   │   │   ├── FileSystemJsonCheckpointStoreTests.cs
│   │   │   ├── ForwardMessageExecutor.cs
│   │   │   ├── InMemoryJsonStore.cs
│   │   │   ├── InProcessExecutionTests.cs
│   │   │   ├── InProcessStateTests.cs
│   │   │   ├── JsonSerializationTests.cs
│   │   │   ├── MessageDeliveryValidation.cs
│   │   │   ├── MessageMergerTests.cs
│   │   │   ├── Microsoft.Agents.AI.Workflows.UnitTests.csproj
│   │   │   ├── ObservabilityTests.cs
│   │   │   ├── PolymorphicOutputTests.cs
│   │   │   ├── PortableValueTests.cs
│   │   │   ├── ReflectionSmokeTest.cs
│   │   │   ├── RepresentationTests.cs
│   │   │   ├── RoleCheckAgent.cs
│   │   │   ├── Sample/
│   │   │   │   ├── 01_Simple_Workflow_Sequential.cs
│   │   │   │   ├── 01a_Simple_Workflow_Sequential.cs
│   │   │   │   ├── 02_Simple_Workflow_Condition.cs
│   │   │   │   ├── 03_Simple_Workflow_Loop.cs
│   │   │   │   ├── 04_Simple_Workflow_ExternalRequest.cs
│   │   │   │   ├── 05_Simple_Workflow_Checkpointing.cs
│   │   │   │   ├── 06_GroupChat_Workflow.cs
│   │   │   │   ├── 07_GroupChat_Workflow_HostAsAgent.cs
│   │   │   │   ├── 08_Subworkflow_Simple.cs
│   │   │   │   ├── 09_Subworkflow_ExternalRequest.cs
│   │   │   │   ├── 10_Sequential_HostAsAgent.cs
│   │   │   │   ├── 11_Concurrent_HostAsAgent.cs
│   │   │   │   ├── 12_HandOff_HostAsAgent.cs
│   │   │   │   ├── 13_Subworkflow_Checkpointing.cs
│   │   │   │   └── 14_Subworkflow_SharedState.cs
│   │   │   ├── SampleJsonContext.cs
│   │   │   ├── SampleSmokeTest.cs
│   │   │   ├── SpecializedExecutorSmokeTests.cs
│   │   │   ├── StateKeyObjectTests.cs
│   │   │   ├── StateManagerTests.cs
│   │   │   ├── StreamingAggregatorsTests.cs
│   │   │   ├── SubstitutionVisitor.cs
│   │   │   ├── TestEchoAgent.cs
│   │   │   ├── TestJsonContext.cs
│   │   │   ├── TestJsonSerializable.cs
│   │   │   ├── TestReplayAgent.cs
│   │   │   ├── TestRequestAgent.cs
│   │   │   ├── TestRunContext.cs
│   │   │   ├── TestRunState.cs
│   │   │   ├── TestWorkflowContext.cs
│   │   │   ├── TestingExecutor.cs
│   │   │   ├── ValidationExtensions.cs
│   │   │   ├── WorkflowBuilderSmokeTests.cs
│   │   │   ├── WorkflowHostSmokeTests.cs
│   │   │   ├── WorkflowRunActivityStopTests.cs
│   │   │   └── WorkflowVisualizerTests.cs
│   │   ├── OpenAIAssistant.IntegrationTests/
│   │   │   ├── OpenAIAssistant.IntegrationTests.csproj
│   │   │   ├── OpenAIAssistantChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIAssistantChatClientAgentRunTests.cs
│   │   │   ├── OpenAIAssistantClientExtensionsTests.cs
│   │   │   ├── OpenAIAssistantFixture.cs
│   │   │   ├── OpenAIAssistantIRunTests.cs
│   │   │   ├── OpenAIAssistantRunStreamingTests.cs
│   │   │   └── OpenAIAssistantStructuredOutputRunTests.cs
│   │   ├── OpenAIChatCompletion.IntegrationTests/
│   │   │   ├── OpenAIChatCompletion.IntegrationTests.csproj
│   │   │   ├── OpenAIChatCompletionChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIChatCompletionChatClientAgentRunTests.cs
│   │   │   ├── OpenAIChatCompletionFixture.cs
│   │   │   ├── OpenAIChatCompletionRunStreamingTests.cs
│   │   │   ├── OpenAIChatCompletionRunTests.cs
│   │   │   └── OpenAIChatCompletionStructuredOutputRunTests.cs
│   │   ├── OpenAIResponse.IntegrationTests/
│   │   │   ├── OpenAIResponse.IntegrationTests.csproj
│   │   │   ├── OpenAIResponseChatClientAgentRunStreamingTests.cs
│   │   │   ├── OpenAIResponseChatClientAgentRunTests.cs
│   │   │   ├── OpenAIResponseFixture.cs
│   │   │   ├── OpenAIResponseRunStreamingTests.cs
│   │   │   ├── OpenAIResponseRunTests.cs
│   │   │   └── OpenAIResponseStructuredOutputRunTests.cs
│   │   └── coverage.runsettings
│   ├── wf-code-gen-impact.md
│   ├── wf-source-gen-bp.md
│   └── wf-source-gen-changes.md
├── python/
│   ├── .cspell.json
│   ├── .github/
│   │   ├── instructions/
│   │   │   └── python.instructions.md
│   │   └── skills/
│   │       ├── python-code-quality/
│   │       │   └── SKILL.md
│   │       ├── python-development/
│   │       │   └── SKILL.md
│   │       ├── python-package-management/
│   │       │   └── SKILL.md
│   │       ├── python-samples/
│   │       │   └── SKILL.md
│   │       └── python-testing/
│   │           └── SKILL.md
│   ├── .pre-commit-config.yaml
│   ├── .vscode/
│   │   ├── launch.json
│   │   ├── settings.json
│   │   └── tasks.json
│   ├── AGENTS.md
│   ├── CHANGELOG.md
│   ├── CODING_STANDARD.md
│   ├── DEV_SETUP.md
│   ├── LICENSE
│   ├── README.md
│   ├── agent_framework_meta/
│   │   └── __init__.py
│   ├── devsetup.sh
│   ├── packages/
│   │   ├── a2a/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_a2a/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_a2a_agent.py
│   │   ├── ag-ui/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_ag_ui/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agent.py
│   │   │   │   ├── _agent_run.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _endpoint.py
│   │   │   │   ├── _event_converters.py
│   │   │   │   ├── _http_service.py
│   │   │   │   ├── _message_adapters.py
│   │   │   │   ├── _orchestration/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _helpers.py
│   │   │   │   │   ├── _predictive_state.py
│   │   │   │   │   └── _tooling.py
│   │   │   │   ├── _run_common.py
│   │   │   │   ├── _types.py
│   │   │   │   ├── _utils.py
│   │   │   │   ├── _workflow.py
│   │   │   │   ├── _workflow_run.py
│   │   │   │   └── py.typed
│   │   │   ├── agent_framework_ag_ui_examples/
│   │   │   │   ├── .vscode/
│   │   │   │   │   └── settings.json
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── agents/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── document_writer_agent.py
│   │   │   │   │   ├── human_in_the_loop_agent.py
│   │   │   │   │   ├── recipe_agent.py
│   │   │   │   │   ├── research_assistant_agent.py
│   │   │   │   │   ├── simple_agent.py
│   │   │   │   │   ├── subgraphs_agent.py
│   │   │   │   │   ├── task_planner_agent.py
│   │   │   │   │   ├── task_steps_agent.py
│   │   │   │   │   ├── ui_generator_agent.py
│   │   │   │   │   └── weather_agent.py
│   │   │   │   └── server/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── api/
│   │   │   │       │   └── backend_tool_rendering.py
│   │   │   │       └── main.py
│   │   │   ├── getting_started/
│   │   │   │   ├── README.md
│   │   │   │   ├── client.py
│   │   │   │   ├── client_advanced.py
│   │   │   │   ├── client_with_agent.py
│   │   │   │   └── server.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── ag_ui/
│   │   │           ├── conftest.py
│   │   │           ├── event_stream.py
│   │   │           ├── golden/
│   │   │           │   ├── __init__.py
│   │   │           │   ├── conftest.py
│   │   │           │   ├── test_scenario_agentic_chat.py
│   │   │           │   ├── test_scenario_backend_tools.py
│   │   │           │   ├── test_scenario_generative_ui_agent.py
│   │   │           │   ├── test_scenario_generative_ui_tool.py
│   │   │           │   ├── test_scenario_hitl.py
│   │   │           │   ├── test_scenario_predictive_state.py
│   │   │           │   ├── test_scenario_shared_state.py
│   │   │           │   ├── test_scenario_subgraphs.py
│   │   │           │   └── test_scenario_workflow.py
│   │   │           ├── sse_helpers.py
│   │   │           ├── test_ag_ui_client.py
│   │   │           ├── test_agent_wrapper_comprehensive.py
│   │   │           ├── test_approval_result_event.py
│   │   │           ├── test_endpoint.py
│   │   │           ├── test_event_converters.py
│   │   │           ├── test_helpers.py
│   │   │           ├── test_http_round_trip.py
│   │   │           ├── test_http_service.py
│   │   │           ├── test_message_adapters.py
│   │   │           ├── test_message_hygiene.py
│   │   │           ├── test_multi_turn.py
│   │   │           ├── test_predictive_state.py
│   │   │           ├── test_public_exports.py
│   │   │           ├── test_run.py
│   │   │           ├── test_run_common.py
│   │   │           ├── test_service_thread_id.py
│   │   │           ├── test_structured_output.py
│   │   │           ├── test_subgraphs_example_agent.py
│   │   │           ├── test_tooling.py
│   │   │           ├── test_types.py
│   │   │           ├── test_utils.py
│   │   │           ├── test_workflow_agent.py
│   │   │           └── test_workflow_run.py
│   │   ├── anthropic/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_anthropic/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _chat_client.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       └── test_anthropic_client.py
│   │   ├── azure-ai/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_ai/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agent_provider.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _embedding_client.py
│   │   │   │   ├── _foundry_memory_provider.py
│   │   │   │   ├── _project_provider.py
│   │   │   │   ├── _shared.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── azure_ai/
│   │   │       │   └── test_azure_ai_inference_embedding_client.py
│   │   │       ├── conftest.py
│   │   │       ├── test_agent_provider.py
│   │   │       ├── test_azure_ai_agent_client.py
│   │   │       ├── test_azure_ai_client.py
│   │   │       ├── test_foundry_memory_provider.py
│   │   │       ├── test_provider.py
│   │   │       └── test_shared.py
│   │   ├── azure-ai-search/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_ai_search/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _context_provider.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_aisearch_context_provider.py
│   │   ├── azure-cosmos/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azure_cosmos/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _history_provider.py
│   │   │   ├── pyproject.toml
│   │   │   ├── samples/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   └── cosmos_history_provider.py
│   │   │   └── tests/
│   │   │       └── test_cosmos_history_provider.py
│   │   ├── azurefunctions/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_azurefunctions/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _app.py
│   │   │   │   ├── _context.py
│   │   │   │   ├── _entities.py
│   │   │   │   ├── _errors.py
│   │   │   │   ├── _orchestration.py
│   │   │   │   ├── _serialization.py
│   │   │   │   ├── _workflow.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── integration_tests/
│   │   │       │   ├── README.md
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_01_single_agent.py
│   │   │       │   ├── test_02_multi_agent.py
│   │   │       │   ├── test_03_reliable_streaming.py
│   │   │       │   ├── test_04_single_agent_orchestration_chaining.py
│   │   │       │   ├── test_05_multi_agent_orchestration_concurrency.py
│   │   │       │   ├── test_06_multi_agent_orchestration_conditionals.py
│   │   │       │   ├── test_07_single_agent_orchestration_hitl.py
│   │   │       │   ├── test_09_workflow_shared_state.py
│   │   │       │   ├── test_10_workflow_no_shared_state.py
│   │   │       │   ├── test_11_workflow_parallel.py
│   │   │       │   └── test_12_workflow_hitl.py
│   │   │       ├── test_app.py
│   │   │       ├── test_entities.py
│   │   │       ├── test_errors.py
│   │   │       ├── test_func_utils.py
│   │   │       ├── test_multi_agent.py
│   │   │       ├── test_orchestration.py
│   │   │       └── test_workflow.py
│   │   ├── bedrock/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_bedrock/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   └── _embedding_client.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── bedrock/
│   │   │       │   └── test_bedrock_embedding_client.py
│   │   │       ├── test_bedrock_client.py
│   │   │       └── test_bedrock_settings.py
│   │   ├── chatkit/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_chatkit/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _converter.py
│   │   │   │   ├── _streaming.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── test_converter.py
│   │   │       └── test_streaming.py
│   │   ├── claude/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_claude/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_claude_agent.py
│   │   ├── copilotstudio/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_copilotstudio/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _acquire_token.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       ├── test_acquire_token.py
│   │   │       └── test_copilot_agent.py
│   │   ├── core/
│   │   │   ├── .vscode/
│   │   │   │   └── launch.json
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _agents.py
│   │   │   │   ├── _clients.py
│   │   │   │   ├── _compaction.py
│   │   │   │   ├── _docstrings.py
│   │   │   │   ├── _mcp.py
│   │   │   │   ├── _middleware.py
│   │   │   │   ├── _serialization.py
│   │   │   │   ├── _sessions.py
│   │   │   │   ├── _settings.py
│   │   │   │   ├── _skills.py
│   │   │   │   ├── _telemetry.py
│   │   │   │   ├── _tools.py
│   │   │   │   ├── _types.py
│   │   │   │   ├── _workflows/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _agent.py
│   │   │   │   │   ├── _agent_executor.py
│   │   │   │   │   ├── _agent_utils.py
│   │   │   │   │   ├── _checkpoint.py
│   │   │   │   │   ├── _checkpoint_encoding.py
│   │   │   │   │   ├── _const.py
│   │   │   │   │   ├── _conversation_history.py
│   │   │   │   │   ├── _edge.py
│   │   │   │   │   ├── _edge_runner.py
│   │   │   │   │   ├── _events.py
│   │   │   │   │   ├── _executor.py
│   │   │   │   │   ├── _function_executor.py
│   │   │   │   │   ├── _message_utils.py
│   │   │   │   │   ├── _model_utils.py
│   │   │   │   │   ├── _request_info_mixin.py
│   │   │   │   │   ├── _runner.py
│   │   │   │   │   ├── _runner_context.py
│   │   │   │   │   ├── _state.py
│   │   │   │   │   ├── _typing_utils.py
│   │   │   │   │   ├── _validation.py
│   │   │   │   │   ├── _viz.py
│   │   │   │   │   ├── _workflow.py
│   │   │   │   │   ├── _workflow_builder.py
│   │   │   │   │   ├── _workflow_context.py
│   │   │   │   │   └── _workflow_executor.py
│   │   │   │   ├── a2a/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── ag_ui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── amazon/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── anthropic/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── azure/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── __init__.pyi
│   │   │   │   │   ├── _assistants_client.py
│   │   │   │   │   ├── _chat_client.py
│   │   │   │   │   ├── _embedding_client.py
│   │   │   │   │   ├── _entra_id_authentication.py
│   │   │   │   │   ├── _responses_client.py
│   │   │   │   │   └── _shared.py
│   │   │   │   ├── chatkit/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── declarative/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── devui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── github/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── lab/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── mem0/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── microsoft/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── observability.py
│   │   │   │   ├── ollama/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── openai/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _assistant_provider.py
│   │   │   │   │   ├── _assistants_client.py
│   │   │   │   │   ├── _chat_client.py
│   │   │   │   │   ├── _embedding_client.py
│   │   │   │   │   ├── _exceptions.py
│   │   │   │   │   ├── _responses_client.py
│   │   │   │   │   └── _shared.py
│   │   │   │   ├── orchestrations/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── __init__.pyi
│   │   │   │   ├── py.typed
│   │   │   │   └── redis/
│   │   │   │       ├── __init__.py
│   │   │   │       └── __init__.pyi
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── __init__.py
│   │   │       ├── azure/
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_azure_assistants_client.py
│   │   │       │   ├── test_azure_chat_client.py
│   │   │       │   ├── test_azure_embedding_client.py
│   │   │       │   ├── test_azure_responses_client.py
│   │   │       │   └── test_entra_id_authentication.py
│   │   │       ├── conftest.py
│   │   │       ├── core/
│   │   │       │   ├── __init__.py
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_agents.py
│   │   │       │   ├── test_as_tool_kwargs_propagation.py
│   │   │       │   ├── test_clients.py
│   │   │       │   ├── test_compaction.py
│   │   │       │   ├── test_docstrings.py
│   │   │       │   ├── test_embedding_client.py
│   │   │       │   ├── test_embedding_types.py
│   │   │       │   ├── test_function_invocation_logic.py
│   │   │       │   ├── test_kwargs_propagation_to_ai_function.py
│   │   │       │   ├── test_mcp.py
│   │   │       │   ├── test_middleware.py
│   │   │       │   ├── test_middleware_context_result.py
│   │   │       │   ├── test_middleware_with_agent.py
│   │   │       │   ├── test_middleware_with_chat.py
│   │   │       │   ├── test_observability.py
│   │   │       │   ├── test_serializable_mixin.py
│   │   │       │   ├── test_sessions.py
│   │   │       │   ├── test_settings.py
│   │   │       │   ├── test_skills.py
│   │   │       │   ├── test_telemetry.py
│   │   │       │   ├── test_tools.py
│   │   │       │   ├── test_types.py
│   │   │       │   └── utils.py
│   │   │       ├── openai/
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_assistant_provider.py
│   │   │       │   ├── test_openai_assistants_client.py
│   │   │       │   ├── test_openai_chat_client.py
│   │   │       │   ├── test_openai_chat_client_base.py
│   │   │       │   ├── test_openai_embedding_client.py
│   │   │       │   └── test_openai_responses_client.py
│   │   │       └── workflow/
│   │   │           ├── __init__.py
│   │   │           ├── test_agent_executor.py
│   │   │           ├── test_agent_executor_tool_calls.py
│   │   │           ├── test_agent_run_event_typing.py
│   │   │           ├── test_agent_utils.py
│   │   │           ├── test_checkpoint.py
│   │   │           ├── test_checkpoint_decode.py
│   │   │           ├── test_checkpoint_encode.py
│   │   │           ├── test_checkpoint_validation.py
│   │   │           ├── test_edge.py
│   │   │           ├── test_executor.py
│   │   │           ├── test_executor_future.py
│   │   │           ├── test_full_conversation.py
│   │   │           ├── test_function_executor.py
│   │   │           ├── test_function_executor_future.py
│   │   │           ├── test_request_info_and_response.py
│   │   │           ├── test_request_info_event_rehydrate.py
│   │   │           ├── test_request_info_mixin.py
│   │   │           ├── test_runner.py
│   │   │           ├── test_serialization.py
│   │   │           ├── test_state.py
│   │   │           ├── test_sub_workflow.py
│   │   │           ├── test_typing_utils.py
│   │   │           ├── test_validation.py
│   │   │           ├── test_viz.py
│   │   │           ├── test_workflow.py
│   │   │           ├── test_workflow_agent.py
│   │   │           ├── test_workflow_builder.py
│   │   │           ├── test_workflow_context.py
│   │   │           ├── test_workflow_kwargs.py
│   │   │           ├── test_workflow_observability.py
│   │   │           └── test_workflow_states.py
│   │   ├── declarative/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_declarative/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _loader.py
│   │   │   │   ├── _models.py
│   │   │   │   └── _workflows/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── _declarative_base.py
│   │   │   │       ├── _declarative_builder.py
│   │   │   │       ├── _executors_agents.py
│   │   │   │       ├── _executors_basic.py
│   │   │   │       ├── _executors_control_flow.py
│   │   │   │       ├── _executors_external_input.py
│   │   │   │       ├── _executors_tools.py
│   │   │   │       ├── _factory.py
│   │   │   │       ├── _powerfx_functions.py
│   │   │   │       └── _state.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       ├── test_declarative_loader.py
│   │   │       ├── test_declarative_models.py
│   │   │       ├── test_function_tool_executor.py
│   │   │       ├── test_graph_coverage.py
│   │   │       ├── test_graph_executors.py
│   │   │       ├── test_graph_workflow_integration.py
│   │   │       ├── test_powerfx_functions.py
│   │   │       ├── test_powerfx_yaml_compatibility.py
│   │   │       ├── test_workflow_factory.py
│   │   │       ├── test_workflow_samples_integration.py
│   │   │       └── test_workflow_state.py
│   │   ├── devui/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_devui/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _cli.py
│   │   │   │   ├── _conversations.py
│   │   │   │   ├── _deployment.py
│   │   │   │   ├── _discovery.py
│   │   │   │   ├── _executor.py
│   │   │   │   ├── _mapper.py
│   │   │   │   ├── _openai/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── _executor.py
│   │   │   │   ├── _server.py
│   │   │   │   ├── _session.py
│   │   │   │   ├── _tracing.py
│   │   │   │   ├── _utils.py
│   │   │   │   ├── models/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _discovery_models.py
│   │   │   │   │   └── _openai_custom.py
│   │   │   │   └── ui/
│   │   │   │       ├── assets/
│   │   │   │       │   ├── index.css
│   │   │   │       │   └── index.js
│   │   │   │       └── index.html
│   │   │   ├── dev.md
│   │   │   ├── frontend/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── components.json
│   │   │   │   ├── eslint.config.js
│   │   │   │   ├── index.html
│   │   │   │   ├── package.json
│   │   │   │   ├── src/
│   │   │   │   │   ├── App.css
│   │   │   │   │   ├── App.tsx
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── features/
│   │   │   │   │   │   │   ├── agent/
│   │   │   │   │   │   │   │   ├── agent-details-modal.tsx
│   │   │   │   │   │   │   │   ├── agent-view.tsx
│   │   │   │   │   │   │   │   ├── context-inspector.tsx
│   │   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   │   └── message-renderers/
│   │   │   │   │   │   │   │       ├── OpenAIContentRenderer.tsx
│   │   │   │   │   │   │   │       ├── OpenAIMessageRenderer.tsx
│   │   │   │   │   │   │   │       └── index.ts
│   │   │   │   │   │   │   ├── gallery/
│   │   │   │   │   │   │   │   ├── gallery-view.tsx
│   │   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   │   └── setup-instructions-modal.tsx
│   │   │   │   │   │   │   └── workflow/
│   │   │   │   │   │   │       ├── checkpoint-info-modal.tsx
│   │   │   │   │   │   │       ├── execution-timeline.tsx
│   │   │   │   │   │   │       ├── executor-node.tsx
│   │   │   │   │   │   │       ├── hil-timeline-item.tsx
│   │   │   │   │   │   │       ├── index.ts
│   │   │   │   │   │   │       ├── run-workflow-button.tsx
│   │   │   │   │   │   │       ├── schema-form-renderer.tsx
│   │   │   │   │   │   │       ├── self-loop-edge.tsx
│   │   │   │   │   │   │       ├── workflow-details-modal.tsx
│   │   │   │   │   │   │       ├── workflow-flow.tsx
│   │   │   │   │   │   │       ├── workflow-input-form.tsx
│   │   │   │   │   │   │       ├── workflow-session-manager.tsx
│   │   │   │   │   │   │       └── workflow-view.tsx
│   │   │   │   │   │   ├── layout/
│   │   │   │   │   │   │   ├── app-header.tsx
│   │   │   │   │   │   │   ├── debug-panel.tsx
│   │   │   │   │   │   │   ├── deployment-modal.tsx
│   │   │   │   │   │   │   ├── entity-selector.tsx
│   │   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   │   └── settings-modal.tsx
│   │   │   │   │   │   ├── mode-toggle.tsx
│   │   │   │   │   │   ├── theme-provider.tsx
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── alert.tsx
│   │   │   │   │   │       ├── attachment-gallery.tsx
│   │   │   │   │   │       ├── badge.tsx
│   │   │   │   │   │       ├── button.tsx
│   │   │   │   │   │       ├── card.tsx
│   │   │   │   │   │       ├── chat-message-input.tsx
│   │   │   │   │   │       ├── checkbox.tsx
│   │   │   │   │   │       ├── dialog.tsx
│   │   │   │   │   │       ├── dropdown-menu.tsx
│   │   │   │   │   │       ├── file-upload.tsx
│   │   │   │   │   │       ├── input.tsx
│   │   │   │   │   │       ├── label.tsx
│   │   │   │   │   │       ├── loading-spinner.tsx
│   │   │   │   │   │       ├── loading-state.tsx
│   │   │   │   │   │       ├── markdown-renderer.tsx
│   │   │   │   │   │       ├── scroll-area.tsx
│   │   │   │   │   │       ├── select.tsx
│   │   │   │   │   │       ├── separator.tsx
│   │   │   │   │   │       ├── switch.tsx
│   │   │   │   │   │       ├── tabs.tsx
│   │   │   │   │   │       ├── textarea.tsx
│   │   │   │   │   │       ├── toast.tsx
│   │   │   │   │   │       └── tooltip.tsx
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── gallery/
│   │   │   │   │   │       ├── index.ts
│   │   │   │   │   │       └── sample-entities.ts
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── use-drag-drop.ts
│   │   │   │   │   │   └── useCancellableRequest.ts
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   └── utils.ts
│   │   │   │   │   ├── main.tsx
│   │   │   │   │   ├── services/
│   │   │   │   │   │   ├── api.ts
│   │   │   │   │   │   └── streaming-state.ts
│   │   │   │   │   ├── stores/
│   │   │   │   │   │   ├── devuiStore.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── agent-framework.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── openai.ts
│   │   │   │   │   │   └── workflow.ts
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── simple-layout.ts
│   │   │   │   │   │   └── workflow-utils.ts
│   │   │   │   │   └── vite-env.d.ts
│   │   │   │   ├── tsconfig.app.json
│   │   │   │   ├── tsconfig.json
│   │   │   │   ├── tsconfig.node.json
│   │   │   │   └── vite.config.ts
│   │   │   ├── pyproject.toml
│   │   │   ├── samples/
│   │   │   │   ├── README.md
│   │   │   │   └── __init__.py
│   │   │   └── tests/
│   │   │       └── devui/
│   │   │           ├── capture_messages.py
│   │   │           ├── conftest.py
│   │   │           ├── test_approval_validation.py
│   │   │           ├── test_checkpoints.py
│   │   │           ├── test_cleanup_hooks.py
│   │   │           ├── test_conversations.py
│   │   │           ├── test_discovery.py
│   │   │           ├── test_execution.py
│   │   │           ├── test_mapper.py
│   │   │           ├── test_multimodal_workflow.py
│   │   │           ├── test_openai_sdk_integration.py
│   │   │           ├── test_schema_generation.py
│   │   │           └── test_server.py
│   │   ├── durabletask/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_durabletask/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _callbacks.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _constants.py
│   │   │   │   ├── _durable_agent_state.py
│   │   │   │   ├── _entities.py
│   │   │   │   ├── _executors.py
│   │   │   │   ├── _models.py
│   │   │   │   ├── _orchestration_context.py
│   │   │   │   ├── _response_utils.py
│   │   │   │   ├── _shim.py
│   │   │   │   ├── _worker.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── integration_tests/
│   │   │       │   ├── README.md
│   │   │       │   ├── conftest.py
│   │   │       │   ├── test_01_dt_single_agent.py
│   │   │       │   ├── test_02_dt_multi_agent.py
│   │   │       │   ├── test_03_dt_single_agent_streaming.py
│   │   │       │   ├── test_04_dt_single_agent_orchestration_chaining.py
│   │   │       │   ├── test_05_dt_multi_agent_orchestration_concurrency.py
│   │   │       │   ├── test_06_dt_multi_agent_orchestration_conditionals.py
│   │   │       │   └── test_07_dt_single_agent_orchestration_hitl.py
│   │   │       ├── test_agent_session_id.py
│   │   │       ├── test_client.py
│   │   │       ├── test_durable_agent_state.py
│   │   │       ├── test_durable_entities.py
│   │   │       ├── test_executors.py
│   │   │       ├── test_models.py
│   │   │       ├── test_orchestration_context.py
│   │   │       ├── test_shim.py
│   │   │       └── test_worker.py
│   │   ├── foundry_local/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_foundry_local/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _foundry_local_client.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── conftest.py
│   │   │       └── test_foundry_local_client.py
│   │   ├── github_copilot/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_github_copilot/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _agent.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_github_copilot_agent.py
│   │   ├── lab/
│   │   │   ├── .gitignore
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── gaia/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_framework_lab_gaia/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── _types.py
│   │   │   │   │   ├── gaia.py
│   │   │   │   │   └── py.typed
│   │   │   │   ├── samples/
│   │   │   │   │   ├── azure_ai_agent.py
│   │   │   │   │   ├── gaia_sample.py
│   │   │   │   │   └── openai_agent.py
│   │   │   │   └── tests/
│   │   │   │       └── test_gaia.py
│   │   │   ├── lightning/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_framework_lab_lightning/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── py.typed
│   │   │   │   ├── samples/
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── math/
│   │   │   │   │   │       ├── test.jsonl
│   │   │   │   │   │       └── train.jsonl
│   │   │   │   │   ├── train_math_agent.py
│   │   │   │   │   └── train_tau2_agent.py
│   │   │   │   └── tests/
│   │   │   │       └── test_lightning.py
│   │   │   ├── namespace/
│   │   │   │   └── agent_framework/
│   │   │   │       ├── __init__.py
│   │   │   │       └── lab/
│   │   │   │           ├── __init__.py
│   │   │   │           ├── gaia/
│   │   │   │           │   └── __init__.py
│   │   │   │           ├── lightning/
│   │   │   │           │   └── __init__.py
│   │   │   │           └── tau2/
│   │   │   │               └── __init__.py
│   │   │   ├── pyproject.toml
│   │   │   └── tau2/
│   │   │       ├── README.md
│   │   │       ├── agent_framework_lab_tau2/
│   │   │       │   ├── __init__.py
│   │   │       │   ├── _message_utils.py
│   │   │       │   ├── _sliding_window.py
│   │   │       │   ├── _tau2_utils.py
│   │   │       │   ├── py.typed
│   │   │       │   └── runner.py
│   │   │       ├── samples/
│   │   │       │   └── run_benchmark.py
│   │   │       └── tests/
│   │   │           ├── test_message_utils.py
│   │   │           ├── test_sliding_window.py
│   │   │           └── test_tau2_utils.py
│   │   ├── mem0/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_mem0/
│   │   │   │   ├── __init__.py
│   │   │   │   └── _context_provider.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── test_mem0_context_provider.py
│   │   ├── ollama/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_ollama/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _chat_client.py
│   │   │   │   ├── _embedding_client.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── ollama/
│   │   │       │   └── test_ollama_embedding_client.py
│   │   │       └── test_ollama_chat_client.py
│   │   ├── orchestrations/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_orchestrations/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _base_group_chat_orchestrator.py
│   │   │   │   ├── _concurrent.py
│   │   │   │   ├── _group_chat.py
│   │   │   │   ├── _handoff.py
│   │   │   │   ├── _magentic.py
│   │   │   │   ├── _orchestration_request_info.py
│   │   │   │   ├── _orchestration_state.py
│   │   │   │   ├── _orchestrator_helpers.py
│   │   │   │   ├── _sequential.py
│   │   │   │   └── py.typed
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       ├── test_concurrent.py
│   │   │       ├── test_group_chat.py
│   │   │       ├── test_handoff.py
│   │   │       ├── test_magentic.py
│   │   │       ├── test_orchestration_request_info.py
│   │   │       └── test_sequential.py
│   │   ├── purview/
│   │   │   ├── AGENTS.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── agent_framework_purview/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _cache.py
│   │   │   │   ├── _client.py
│   │   │   │   ├── _exceptions.py
│   │   │   │   ├── _middleware.py
│   │   │   │   ├── _models.py
│   │   │   │   ├── _processor.py
│   │   │   │   └── _settings.py
│   │   │   ├── pyproject.toml
│   │   │   └── tests/
│   │   │       └── purview/
│   │   │           ├── conftest.py
│   │   │           ├── test_cache.py
│   │   │           ├── test_chat_middleware.py
│   │   │           ├── test_exceptions.py
│   │   │           ├── test_middleware.py
│   │   │           ├── test_processor.py
│   │   │           ├── test_purview_client.py
│   │   │           ├── test_purview_models.py
│   │   │           └── test_settings.py
│   │   └── redis/
│   │       ├── AGENTS.md
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── agent_framework_redis/
│   │       │   ├── __init__.py
│   │       │   ├── _context_provider.py
│   │       │   └── _history_provider.py
│   │       ├── pyproject.toml
│   │       └── tests/
│   │           └── test_providers.py
│   ├── pyproject.toml
│   ├── pyrightconfig.samples.json
│   ├── pyrightconfig.samples.py310.json
│   ├── samples/
│   │   ├── 01-get-started/
│   │   │   ├── 01_hello_agent.py
│   │   │   ├── 02_add_tools.py
│   │   │   ├── 03_multi_turn.py
│   │   │   ├── 04_memory.py
│   │   │   ├── 05_first_workflow.py
│   │   │   ├── 06_host_your_agent.py
│   │   │   └── README.md
│   │   ├── 02-agents/
│   │   │   ├── __init__.py
│   │   │   ├── auto_retry.py
│   │   │   ├── background_responses.py
│   │   │   ├── chat_client/
│   │   │   │   ├── README.md
│   │   │   │   ├── built_in_chat_clients.py
│   │   │   │   ├── chat_response_cancellation.py
│   │   │   │   └── custom_chat_client.py
│   │   │   ├── compaction/
│   │   │   │   ├── README.md
│   │   │   │   ├── advanced.py
│   │   │   │   ├── agent_client_overrides.py
│   │   │   │   ├── basics.py
│   │   │   │   ├── compaction_provider.py
│   │   │   │   ├── custom.py
│   │   │   │   └── tiktoken_tokenizer.py
│   │   │   ├── context_providers/
│   │   │   │   ├── azure_ai_foundry_memory.py
│   │   │   │   ├── azure_ai_search/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_with_search_context_agentic.py
│   │   │   │   │   └── azure_ai_with_search_context_semantic.py
│   │   │   │   ├── mem0/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mem0_basic.py
│   │   │   │   │   ├── mem0_oss.py
│   │   │   │   │   └── mem0_sessions.py
│   │   │   │   ├── redis/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_redis_conversation.py
│   │   │   │   │   ├── redis_basics.py
│   │   │   │   │   ├── redis_conversation.py
│   │   │   │   │   └── redis_sessions.py
│   │   │   │   └── simple_context_provider.py
│   │   │   ├── conversations/
│   │   │   │   ├── custom_history_provider.py
│   │   │   │   ├── redis_history_provider.py
│   │   │   │   └── suspend_resume_session.py
│   │   │   ├── declarative/
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_openai_responses_agent.py
│   │   │   │   ├── get_weather_agent.py
│   │   │   │   ├── inline_yaml.py
│   │   │   │   ├── mcp_tool_yaml.py
│   │   │   │   ├── microsoft_learn_agent.py
│   │   │   │   └── openai_responses_agent.py
│   │   │   ├── devui/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_responses_agent/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   ├── declarative/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── workflow.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── fanout_workflow/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── workflow.py
│   │   │   │   ├── foundry_agent/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   ├── in_memory_mode.py
│   │   │   │   ├── spam_workflow/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── workflow.py
│   │   │   │   ├── weather_agent_azure/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── agent.py
│   │   │   │   └── workflow_agents/
│   │   │   │       ├── __init__.py
│   │   │   │       └── workflow.py
│   │   │   ├── embeddings/
│   │   │   │   ├── azure_ai_inference_embeddings.py
│   │   │   │   ├── azure_openai_embeddings.py
│   │   │   │   └── openai_embeddings.py
│   │   │   ├── mcp/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_as_mcp_server.py
│   │   │   │   ├── mcp_api_key_auth.py
│   │   │   │   └── mcp_github_pat.py
│   │   │   ├── middleware/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_and_run_level_middleware.py
│   │   │   │   ├── chat_middleware.py
│   │   │   │   ├── class_based_middleware.py
│   │   │   │   ├── decorator_middleware.py
│   │   │   │   ├── exception_handling_with_middleware.py
│   │   │   │   ├── function_based_middleware.py
│   │   │   │   ├── middleware_termination.py
│   │   │   │   ├── override_result_with_middleware.py
│   │   │   │   ├── runtime_context_delegation.py
│   │   │   │   ├── session_behavior_middleware.py
│   │   │   │   ├── shared_state_middleware.py
│   │   │   │   └── usage_tracking_middleware.py
│   │   │   ├── multimodal_input/
│   │   │   │   ├── README.md
│   │   │   │   ├── azure_chat_multimodal.py
│   │   │   │   ├── azure_responses_multimodal.py
│   │   │   │   └── openai_chat_multimodal.py
│   │   │   ├── observability/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── advanced_manual_setup_console_output.py
│   │   │   │   ├── advanced_zero_code.py
│   │   │   │   ├── agent_observability.py
│   │   │   │   ├── agent_with_foundry_tracing.py
│   │   │   │   ├── azure_ai_agent_observability.py
│   │   │   │   ├── configure_otel_providers_with_env_var.py
│   │   │   │   ├── configure_otel_providers_with_parameters.py
│   │   │   │   └── workflow_observability.py
│   │   │   ├── providers/
│   │   │   │   ├── README.md
│   │   │   │   ├── amazon/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── bedrock_chat_client.py
│   │   │   │   ├── anthropic/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── anthropic_advanced.py
│   │   │   │   │   ├── anthropic_basic.py
│   │   │   │   │   ├── anthropic_claude_basic.py
│   │   │   │   │   ├── anthropic_claude_with_mcp.py
│   │   │   │   │   ├── anthropic_claude_with_multiple_permissions.py
│   │   │   │   │   ├── anthropic_claude_with_session.py
│   │   │   │   │   ├── anthropic_claude_with_shell.py
│   │   │   │   │   ├── anthropic_claude_with_tools.py
│   │   │   │   │   ├── anthropic_claude_with_url.py
│   │   │   │   │   ├── anthropic_foundry.py
│   │   │   │   │   ├── anthropic_skills.py
│   │   │   │   │   └── anthropic_with_shell.py
│   │   │   │   ├── azure_ai/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_basic.py
│   │   │   │   │   ├── azure_ai_provider_methods.py
│   │   │   │   │   ├── azure_ai_use_latest_version.py
│   │   │   │   │   ├── azure_ai_with_agent_as_tool.py
│   │   │   │   │   ├── azure_ai_with_agent_to_agent.py
│   │   │   │   │   ├── azure_ai_with_application_endpoint.py
│   │   │   │   │   ├── azure_ai_with_azure_ai_search.py
│   │   │   │   │   ├── azure_ai_with_bing_custom_search.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding.py
│   │   │   │   │   ├── azure_ai_with_browser_automation.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_download.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_generation.py
│   │   │   │   │   ├── azure_ai_with_content_filtering.py
│   │   │   │   │   ├── azure_ai_with_existing_agent.py
│   │   │   │   │   ├── azure_ai_with_existing_conversation.py
│   │   │   │   │   ├── azure_ai_with_explicit_settings.py
│   │   │   │   │   ├── azure_ai_with_file_search.py
│   │   │   │   │   ├── azure_ai_with_hosted_mcp.py
│   │   │   │   │   ├── azure_ai_with_image_generation.py
│   │   │   │   │   ├── azure_ai_with_local_mcp.py
│   │   │   │   │   ├── azure_ai_with_memory_search.py
│   │   │   │   │   ├── azure_ai_with_microsoft_fabric.py
│   │   │   │   │   ├── azure_ai_with_openapi.py
│   │   │   │   │   ├── azure_ai_with_reasoning.py
│   │   │   │   │   ├── azure_ai_with_response_format.py
│   │   │   │   │   ├── azure_ai_with_runtime_json_schema.py
│   │   │   │   │   ├── azure_ai_with_session.py
│   │   │   │   │   ├── azure_ai_with_sharepoint.py
│   │   │   │   │   └── azure_ai_with_web_search.py
│   │   │   │   ├── azure_ai_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_ai_basic.py
│   │   │   │   │   ├── azure_ai_provider_methods.py
│   │   │   │   │   ├── azure_ai_with_azure_ai_search.py
│   │   │   │   │   ├── azure_ai_with_bing_custom_search.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding.py
│   │   │   │   │   ├── azure_ai_with_bing_grounding_citations.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter.py
│   │   │   │   │   ├── azure_ai_with_code_interpreter_file_generation.py
│   │   │   │   │   ├── azure_ai_with_existing_agent.py
│   │   │   │   │   ├── azure_ai_with_existing_session.py
│   │   │   │   │   ├── azure_ai_with_explicit_settings.py
│   │   │   │   │   ├── azure_ai_with_file_search.py
│   │   │   │   │   ├── azure_ai_with_function_tools.py
│   │   │   │   │   ├── azure_ai_with_hosted_mcp.py
│   │   │   │   │   ├── azure_ai_with_local_mcp.py
│   │   │   │   │   ├── azure_ai_with_multiple_tools.py
│   │   │   │   │   ├── azure_ai_with_openapi_tools.py
│   │   │   │   │   ├── azure_ai_with_response_format.py
│   │   │   │   │   └── azure_ai_with_session.py
│   │   │   │   ├── azure_openai/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── azure_assistants_basic.py
│   │   │   │   │   ├── azure_assistants_with_code_interpreter.py
│   │   │   │   │   ├── azure_assistants_with_existing_assistant.py
│   │   │   │   │   ├── azure_assistants_with_explicit_settings.py
│   │   │   │   │   ├── azure_assistants_with_function_tools.py
│   │   │   │   │   ├── azure_assistants_with_session.py
│   │   │   │   │   ├── azure_chat_client_basic.py
│   │   │   │   │   ├── azure_chat_client_with_explicit_settings.py
│   │   │   │   │   ├── azure_chat_client_with_function_tools.py
│   │   │   │   │   ├── azure_chat_client_with_session.py
│   │   │   │   │   ├── azure_responses_client_basic.py
│   │   │   │   │   ├── azure_responses_client_code_interpreter_files.py
│   │   │   │   │   ├── azure_responses_client_image_analysis.py
│   │   │   │   │   ├── azure_responses_client_with_code_interpreter.py
│   │   │   │   │   ├── azure_responses_client_with_explicit_settings.py
│   │   │   │   │   ├── azure_responses_client_with_file_search.py
│   │   │   │   │   ├── azure_responses_client_with_foundry.py
│   │   │   │   │   ├── azure_responses_client_with_function_tools.py
│   │   │   │   │   ├── azure_responses_client_with_hosted_mcp.py
│   │   │   │   │   ├── azure_responses_client_with_local_mcp.py
│   │   │   │   │   └── azure_responses_client_with_session.py
│   │   │   │   ├── copilotstudio/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── copilotstudio_basic.py
│   │   │   │   │   └── copilotstudio_with_explicit_settings.py
│   │   │   │   ├── custom/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── custom_agent.py
│   │   │   │   ├── foundry_local/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── foundry_local_agent.py
│   │   │   │   ├── github_copilot/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── github_copilot_basic.py
│   │   │   │   │   ├── github_copilot_with_file_operations.py
│   │   │   │   │   ├── github_copilot_with_mcp.py
│   │   │   │   │   ├── github_copilot_with_multiple_permissions.py
│   │   │   │   │   ├── github_copilot_with_session.py
│   │   │   │   │   ├── github_copilot_with_shell.py
│   │   │   │   │   └── github_copilot_with_url.py
│   │   │   │   ├── ollama/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ollama_agent_basic.py
│   │   │   │   │   ├── ollama_agent_reasoning.py
│   │   │   │   │   ├── ollama_chat_client.py
│   │   │   │   │   ├── ollama_chat_multimodal.py
│   │   │   │   │   └── ollama_with_openai_chat_client.py
│   │   │   │   └── openai/
│   │   │   │       ├── README.md
│   │   │   │       ├── openai_assistants_basic.py
│   │   │   │       ├── openai_assistants_provider_methods.py
│   │   │   │       ├── openai_assistants_with_code_interpreter.py
│   │   │   │       ├── openai_assistants_with_existing_assistant.py
│   │   │   │       ├── openai_assistants_with_explicit_settings.py
│   │   │   │       ├── openai_assistants_with_file_search.py
│   │   │   │       ├── openai_assistants_with_function_tools.py
│   │   │   │       ├── openai_assistants_with_response_format.py
│   │   │   │       ├── openai_assistants_with_session.py
│   │   │   │       ├── openai_chat_client_basic.py
│   │   │   │       ├── openai_chat_client_with_explicit_settings.py
│   │   │   │       ├── openai_chat_client_with_function_tools.py
│   │   │   │       ├── openai_chat_client_with_local_mcp.py
│   │   │   │       ├── openai_chat_client_with_runtime_json_schema.py
│   │   │   │       ├── openai_chat_client_with_session.py
│   │   │   │       ├── openai_chat_client_with_web_search.py
│   │   │   │       ├── openai_responses_client_basic.py
│   │   │   │       ├── openai_responses_client_image_analysis.py
│   │   │   │       ├── openai_responses_client_image_generation.py
│   │   │   │       ├── openai_responses_client_reasoning.py
│   │   │   │       ├── openai_responses_client_streaming_image_generation.py
│   │   │   │       ├── openai_responses_client_with_agent_as_tool.py
│   │   │   │       ├── openai_responses_client_with_code_interpreter.py
│   │   │   │       ├── openai_responses_client_with_code_interpreter_files.py
│   │   │   │       ├── openai_responses_client_with_explicit_settings.py
│   │   │   │       ├── openai_responses_client_with_file_search.py
│   │   │   │       ├── openai_responses_client_with_function_tools.py
│   │   │   │       ├── openai_responses_client_with_hosted_mcp.py
│   │   │   │       ├── openai_responses_client_with_local_mcp.py
│   │   │   │       ├── openai_responses_client_with_local_shell.py
│   │   │   │       ├── openai_responses_client_with_runtime_json_schema.py
│   │   │   │       ├── openai_responses_client_with_session.py
│   │   │   │       ├── openai_responses_client_with_shell.py
│   │   │   │       ├── openai_responses_client_with_structured_output.py
│   │   │   │       └── openai_responses_client_with_web_search.py
│   │   │   ├── response_stream.py
│   │   │   ├── skills/
│   │   │   │   ├── README.md
│   │   │   │   ├── code_defined_skill/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── code_defined_skill.py
│   │   │   │   ├── file_based_skill/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── file_based_skill.py
│   │   │   │   │   └── skills/
│   │   │   │   │       └── unit-converter/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── references/
│   │   │   │   │           │   └── CONVERSION_TABLES.md
│   │   │   │   │           └── scripts/
│   │   │   │   │               └── convert.py
│   │   │   │   ├── mixed_skills/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mixed_skills.py
│   │   │   │   │   └── skills/
│   │   │   │   │       └── unit-converter/
│   │   │   │   │           ├── SKILL.md
│   │   │   │   │           ├── references/
│   │   │   │   │           │   └── CONVERSION_TABLES.md
│   │   │   │   │           └── scripts/
│   │   │   │   │               └── convert.py
│   │   │   │   ├── script_approval/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── script_approval.py
│   │   │   │   └── subprocess_script_runner.py
│   │   │   ├── tools/
│   │   │   │   ├── agent_as_tool_with_session_propagation.py
│   │   │   │   ├── control_total_tool_executions.py
│   │   │   │   ├── function_invocation_configuration.py
│   │   │   │   ├── function_tool_declaration_only.py
│   │   │   │   ├── function_tool_from_dict_with_dependency_injection.py
│   │   │   │   ├── function_tool_recover_from_failures.py
│   │   │   │   ├── function_tool_with_approval.py
│   │   │   │   ├── function_tool_with_approval_and_sessions.py
│   │   │   │   ├── function_tool_with_explicit_schema.py
│   │   │   │   ├── function_tool_with_kwargs.py
│   │   │   │   ├── function_tool_with_max_exceptions.py
│   │   │   │   ├── function_tool_with_max_invocations.py
│   │   │   │   ├── function_tool_with_session_injection.py
│   │   │   │   └── tool_in_class.py
│   │   │   └── typed_options.py
│   │   ├── 03-workflows/
│   │   │   ├── README.md
│   │   │   ├── _start-here/
│   │   │   │   ├── step1_executors_and_edges.py
│   │   │   │   ├── step2_agents_in_a_workflow.py
│   │   │   │   └── step3_streaming.py
│   │   │   ├── agents/
│   │   │   │   ├── azure_ai_agents_streaming.py
│   │   │   │   ├── azure_ai_agents_with_shared_session.py
│   │   │   │   ├── azure_chat_agents_and_executor.py
│   │   │   │   ├── azure_chat_agents_streaming.py
│   │   │   │   ├── azure_chat_agents_tool_calls_with_feedback.py
│   │   │   │   ├── concurrent_workflow_as_agent.py
│   │   │   │   ├── custom_agent_executors.py
│   │   │   │   ├── group_chat_workflow_as_agent.py
│   │   │   │   ├── handoff_workflow_as_agent.py
│   │   │   │   ├── magentic_workflow_as_agent.py
│   │   │   │   ├── sequential_workflow_as_agent.py
│   │   │   │   ├── workflow_as_agent_human_in_the_loop.py
│   │   │   │   ├── workflow_as_agent_kwargs.py
│   │   │   │   ├── workflow_as_agent_reflection_pattern.py
│   │   │   │   └── workflow_as_agent_with_session.py
│   │   │   ├── checkpoint/
│   │   │   │   ├── checkpoint_with_human_in_the_loop.py
│   │   │   │   ├── checkpoint_with_resume.py
│   │   │   │   ├── sub_workflow_checkpoint.py
│   │   │   │   └── workflow_as_agent_checkpoint.py
│   │   │   ├── composition/
│   │   │   │   ├── sub_workflow_basics.py
│   │   │   │   ├── sub_workflow_kwargs.py
│   │   │   │   ├── sub_workflow_parallel_requests.py
│   │   │   │   └── sub_workflow_request_interception.py
│   │   │   ├── control-flow/
│   │   │   │   ├── edge_condition.py
│   │   │   │   ├── multi_selection_edge_group.py
│   │   │   │   ├── sequential_executors.py
│   │   │   │   ├── sequential_streaming.py
│   │   │   │   ├── simple_loop.py
│   │   │   │   ├── switch_case_edge_group.py
│   │   │   │   └── workflow_cancellation.py
│   │   │   ├── declarative/
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── agent_to_function_tool/
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── conditional_workflow/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── customer_support/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── main.py
│   │   │   │   │   ├── ticketing_plugin.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── deep_research/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── main.py
│   │   │   │   ├── function_tools/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── human_in_loop/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── invoke_function_tool/
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── marketing/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   ├── simple_workflow/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── workflow.yaml
│   │   │   │   └── student_teacher/
│   │   │   │       ├── README.md
│   │   │   │       ├── main.py
│   │   │   │       └── workflow.yaml
│   │   │   ├── human-in-the-loop/
│   │   │   │   ├── agents_with_HITL.py
│   │   │   │   ├── agents_with_approval_requests.py
│   │   │   │   ├── agents_with_declaration_only_tools.py
│   │   │   │   ├── concurrent_request_info.py
│   │   │   │   ├── group_chat_request_info.py
│   │   │   │   ├── guessing_game_with_human_input.py
│   │   │   │   └── sequential_request_info.py
│   │   │   ├── observability/
│   │   │   │   └── executor_io_observation.py
│   │   │   ├── orchestrations/
│   │   │   │   ├── README.md
│   │   │   │   ├── concurrent_agents.py
│   │   │   │   ├── concurrent_custom_agent_executors.py
│   │   │   │   ├── concurrent_custom_aggregator.py
│   │   │   │   ├── group_chat_agent_manager.py
│   │   │   │   ├── group_chat_philosophical_debate.py
│   │   │   │   ├── group_chat_simple_selector.py
│   │   │   │   ├── handoff_autonomous.py
│   │   │   │   ├── handoff_simple.py
│   │   │   │   ├── handoff_with_code_interpreter_file.py
│   │   │   │   ├── handoff_with_tool_approval_checkpoint_resume.py
│   │   │   │   ├── magentic.py
│   │   │   │   ├── magentic_checkpoint.py
│   │   │   │   ├── magentic_human_plan_review.py
│   │   │   │   ├── sequential_agents.py
│   │   │   │   ├── sequential_chain_only_agent_responses.py
│   │   │   │   └── sequential_custom_executors.py
│   │   │   ├── parallelism/
│   │   │   │   ├── aggregate_results_of_different_types.py
│   │   │   │   ├── fan_out_fan_in_edges.py
│   │   │   │   └── map_reduce_and_visualization.py
│   │   │   ├── resources/
│   │   │   │   ├── ambiguous_email.txt
│   │   │   │   ├── email.txt
│   │   │   │   ├── long_text.txt
│   │   │   │   └── spam.txt
│   │   │   ├── state-management/
│   │   │   │   ├── state_with_agents.py
│   │   │   │   └── workflow_kwargs.py
│   │   │   ├── tool-approval/
│   │   │   │   ├── concurrent_builder_tool_approval.py
│   │   │   │   ├── group_chat_builder_tool_approval.py
│   │   │   │   └── sequential_builder_tool_approval.py
│   │   │   └── visualization/
│   │   │       └── concurrent_with_visualization.py
│   │   ├── 04-hosting/
│   │   │   ├── a2a/
│   │   │   │   ├── README.md
│   │   │   │   ├── a2a_server.http
│   │   │   │   ├── a2a_server.py
│   │   │   │   ├── agent_definitions.py
│   │   │   │   ├── agent_executor.py
│   │   │   │   ├── agent_with_a2a.py
│   │   │   │   └── invoice_data.py
│   │   │   ├── azure_functions/
│   │   │   │   ├── 01_single_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 02_multi_agent/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 03_reliable_streaming/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   ├── redis_stream_response_handler.py
│   │   │   │   │   ├── requirements.txt
│   │   │   │   │   └── tools.py
│   │   │   │   ├── 04_single_agent_orchestration_chaining/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 05_multi_agent_orchestration_concurrency/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 06_multi_agent_orchestration_conditionals/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 07_single_agent_orchestration_hitl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 08_mcp_server/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.template
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 09_workflow_shared_state/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 10_workflow_no_shared_state/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 11_workflow_parallel/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── 12_workflow_hitl/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── demo.http
│   │   │   │   │   ├── function_app.py
│   │   │   │   │   ├── host.json
│   │   │   │   │   ├── local.settings.json.sample
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── README.md
│   │   │   └── durabletask/
│   │   │       ├── 01_single_agent/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 02_multi_agent/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 03_single_agent_streaming/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── redis_stream_response_handler.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   ├── tools.py
│   │   │       │   └── worker.py
│   │   │       ├── 04_single_agent_orchestration_chaining/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 05_multi_agent_orchestration_concurrency/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 06_multi_agent_orchestration_conditionals/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       ├── 07_single_agent_orchestration_hitl/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.py
│   │   │       │   ├── requirements.txt
│   │   │       │   ├── sample.py
│   │   │       │   └── worker.py
│   │   │       └── README.md
│   │   ├── 05-end-to-end/
│   │   │   ├── chatkit-integration/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── app.py
│   │   │   │   ├── attachment_store.py
│   │   │   │   ├── frontend/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── package.json
│   │   │   │   │   ├── src/
│   │   │   │   │   │   ├── App.tsx
│   │   │   │   │   │   ├── main.tsx
│   │   │   │   │   │   └── vite-env.d.ts
│   │   │   │   │   ├── tsconfig.json
│   │   │   │   │   ├── tsconfig.node.json
│   │   │   │   │   └── vite.config.ts
│   │   │   │   ├── store.py
│   │   │   │   └── weather_widget.py
│   │   │   ├── evaluation/
│   │   │   │   ├── red_teaming/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── red_team_agent_sample.py
│   │   │   │   └── self_reflection/
│   │   │   │       ├── README.md
│   │   │   │       ├── resources/
│   │   │   │       │   └── suboptimal_groundedness_prompts.jsonl
│   │   │   │       └── self_reflection.py
│   │   │   ├── hosted_agents/
│   │   │   │   ├── README.md
│   │   │   │   ├── agent_with_hosted_mcp/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agent_with_local_tools/
│   │   │   │   │   ├── .dockerignore
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agent_with_text_search_rag/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   ├── agents_in_workflow/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── agent.yaml
│   │   │   │   │   ├── main.py
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── writer_reviewer_agents_in_workflow/
│   │   │   │       ├── .dockerignore
│   │   │   │       ├── Dockerfile
│   │   │   │       ├── README.md
│   │   │   │       ├── agent.yaml
│   │   │   │       ├── main.py
│   │   │   │       └── requirements.txt
│   │   │   ├── m365-agent/
│   │   │   │   ├── README.md
│   │   │   │   └── m365_agent_demo/
│   │   │   │       └── app.py
│   │   │   ├── purview_agent/
│   │   │   │   ├── README.md
│   │   │   │   └── sample_purview_agent.py
│   │   │   └── workflow_evaluation/
│   │   │       ├── README.md
│   │   │       ├── _tools.py
│   │   │       ├── create_workflow.py
│   │   │       └── run_evaluation.py
│   │   ├── AGENTS.md
│   │   ├── README.md
│   │   ├── SAMPLE_GUIDELINES.md
│   │   ├── __init__.py
│   │   ├── autogen-migration/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── orchestrations/
│   │   │   │   ├── 01_round_robin_group_chat.py
│   │   │   │   ├── 02_selector_group_chat.py
│   │   │   │   ├── 03_swarm.py
│   │   │   │   └── 04_magentic_one.py
│   │   │   ├── pyrightconfig.json
│   │   │   └── single_agent/
│   │   │       ├── 01_basic_assistant_agent.py
│   │   │       ├── 02_assistant_agent_with_tool.py
│   │   │       ├── 03_assistant_agent_thread_and_stream.py
│   │   │       └── 04_agent_as_tool.py
│   │   ├── demos/
│   │   │   └── ag_ui_workflow_handoff/
│   │   │       ├── README.md
│   │   │       ├── backend/
│   │   │       │   └── server.py
│   │   │       └── frontend/
│   │   │           ├── index.html
│   │   │           ├── package.json
│   │   │           ├── src/
│   │   │           │   ├── App.tsx
│   │   │           │   ├── main.tsx
│   │   │           │   ├── styles.css
│   │   │           │   └── vite-env.d.ts
│   │   │           ├── tsconfig.json
│   │   │           ├── tsconfig.node.json
│   │   │           ├── tsconfig.node.tsbuildinfo
│   │   │           ├── tsconfig.tsbuildinfo
│   │   │           ├── vite.config.d.ts
│   │   │           ├── vite.config.js
│   │   │           └── vite.config.ts
│   │   ├── semantic-kernel-migration/
│   │   │   ├── README.md
│   │   │   ├── azure_ai_agent/
│   │   │   │   ├── 01_basic_azure_ai_agent.py
│   │   │   │   ├── 02_azure_ai_agent_with_code_interpreter.py
│   │   │   │   └── 03_azure_ai_agent_threads_and_followups.py
│   │   │   ├── chat_completion/
│   │   │   │   ├── 01_basic_chat_completion.py
│   │   │   │   ├── 02_chat_completion_with_tool.py
│   │   │   │   └── 03_chat_completion_thread_and_stream.py
│   │   │   ├── copilot_studio/
│   │   │   │   ├── 01_basic_copilot_studio_agent.py
│   │   │   │   └── 02_copilot_studio_streaming.py
│   │   │   ├── openai_assistant/
│   │   │   │   ├── 01_basic_openai_assistant.py
│   │   │   │   ├── 02_openai_assistant_with_code_interpreter.py
│   │   │   │   └── 03_openai_assistant_function_tool.py
│   │   │   ├── openai_responses/
│   │   │   │   ├── 01_basic_responses_agent.py
│   │   │   │   ├── 02_responses_agent_with_tool.py
│   │   │   │   └── 03_responses_agent_structured_output.py
│   │   │   ├── orchestrations/
│   │   │   │   ├── concurrent_basic.py
│   │   │   │   ├── group_chat.py
│   │   │   │   ├── handoff.py
│   │   │   │   ├── magentic.py
│   │   │   │   └── sequential.py
│   │   │   └── processes/
│   │   │       ├── fan_out_fan_in_process.py
│   │   │       └── nested_process.py
│   │   └── shared/
│   │       └── resources/
│   │           ├── countries.json
│   │           └── weather.json
│   ├── scripts/
│   │   ├── __init__.py
│   │   ├── check_md_code_blocks.py
│   │   ├── dependencies/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── _dependency_bounds_lower_impl.py
│   │   │   ├── _dependency_bounds_runtime.py
│   │   │   ├── _dependency_bounds_upper_impl.py
│   │   │   ├── add_dependency_to_project.py
│   │   │   ├── upgrade_dev_dependencies.py
│   │   │   └── validate_dependency_bounds.py
│   │   ├── run_tasks_in_changed_packages.py
│   │   ├── run_tasks_in_packages_if_exists.py
│   │   ├── sample_validation/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── const.py
│   │   │   ├── create_dynamic_workflow_executor.py
│   │   │   ├── discovery.py
│   │   │   ├── models.py
│   │   │   ├── report.py
│   │   │   ├── run_dynamic_validation_workflow_executor.py
│   │   │   └── workflow.py
│   │   ├── task_runner.py
│   │   └── workspace_poe_tasks.py
│   ├── shared_tasks.toml
│   └── tests/
│       └── samples/
│           └── getting_started/
│               ├── test_agent_samples.py
│               ├── test_chat_client_samples.py
│               └── test_threads_samples.py
├── schemas/
│   └── durable-agent-entity-state.json
├── wf-source-gen-plan.md
└── workflow-samples/
    ├── CustomerSupport.yaml
    ├── DeepResearch.yaml
    ├── Marketing.yaml
    ├── MathChat.yaml
    └── README.md
Download .txt
Showing preview only (2,607K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (24585 symbols across 2324 files)

FILE: .github/scripts/stale_issue_pr_ping.py
  function get_team_members (line 31) | def get_team_members(g: Github, org: str, team_slug: str) -> set[str]:
  function find_last_team_comment (line 52) | def find_last_team_comment(
  function author_replied_after (line 62) | def author_replied_after(
  function should_ping (line 76) | def should_ping(
  function ping (line 123) | def ping(issue: Issue, dry_run: bool) -> bool:
  function main (line 155) | def main() -> None:

FILE: .github/tests/test_stale_issue_pr_ping.py
  function _make_comment (line 37) | def _make_comment(login: str | None, created_at: datetime) -> MagicMock:
  function _make_label (line 49) | def _make_label(name: str) -> MagicMock:
  function _make_issue (line 55) | def _make_issue(
  class TestFindLastTeamComment (line 82) | class TestFindLastTeamComment:
    method test_returns_last_team_comment (line 83) | def test_returns_last_team_comment(self):
    method test_returns_none_when_no_team_comments (line 89) | def test_returns_none_when_no_team_comments(self):
    method test_returns_none_for_empty_list (line 93) | def test_returns_none_for_empty_list(self):
    method test_skips_deleted_user (line 96) | def test_skips_deleted_user(self):
    method test_only_deleted_users (line 101) | def test_only_deleted_users(self):
  class TestAuthorRepliedAfter (line 110) | class TestAuthorRepliedAfter:
    method test_author_replied (line 111) | def test_author_replied(self):
    method test_author_not_replied (line 116) | def test_author_not_replied(self):
    method test_different_user_replied (line 121) | def test_different_user_replied(self):
    method test_deleted_user_comment (line 126) | def test_deleted_user_comment(self):
  class TestShouldPing (line 136) | class TestShouldPing:
    method test_should_ping_stale_issue (line 137) | def test_should_ping_stale_issue(self):
    method test_skip_team_member_author (line 142) | def test_skip_team_member_author(self):
    method test_skip_already_pinged (line 146) | def test_skip_already_pinged(self):
    method test_skip_no_comments (line 150) | def test_skip_no_comments(self):
    method test_skip_no_team_comment (line 154) | def test_skip_no_team_comment(self):
    method test_skip_author_replied (line 159) | def test_skip_author_replied(self):
    method test_skip_not_enough_days (line 165) | def test_skip_not_enough_days(self):
    method test_aware_datetime_handled (line 170) | def test_aware_datetime_handled(self):
    method test_naive_datetime_handled (line 177) | def test_naive_datetime_handled(self):
  class TestPing (line 190) | class TestPing:
    method test_dry_run (line 191) | def test_dry_run(self, capsys):
    method test_success (line 197) | def test_success(self, capsys):
    method test_retry_on_failure (line 204) | def test_retry_on_failure(self, mock_sleep):
    method test_idempotent_retry_skips_comment_on_label_failure (line 212) | def test_idempotent_retry_skips_comment_on_label_failure(self, mock_sl...
    method test_all_retries_fail (line 222) | def test_all_retries_fail(self, mock_sleep):
  class TestGetTeamMembers (line 233) | class TestGetTeamMembers:
    method test_success (line 234) | def test_success(self):
    method test_403_error_message (line 241) | def test_403_error_message(self, capsys):
    method test_404_error_message (line 254) | def test_404_error_message(self, capsys):
    method test_generic_error (line 267) | def test_generic_error(self, capsys):
  class TestMain (line 278) | class TestMain:
    method test_invalid_days_threshold (line 285) | def test_invalid_days_threshold(self, capsys):
    method test_missing_team_slug (line 294) | def test_missing_team_slug(self, capsys):

FILE: .github/workflows/python-check-coverage.py
  class PackageCoverage (line 53) | class PackageCoverage:
    method line_coverage_percent (line 65) | def line_coverage_percent(self) -> float:
    method branch_coverage_percent (line 70) | def branch_coverage_percent(self) -> float:
  function normalize_coverage_path (line 75) | def normalize_coverage_path(path: str) -> str:
  function parse_coverage_xml (line 80) | def parse_coverage_xml(
  function format_coverage_value (line 188) | def format_coverage_value(coverage: float, threshold: float, is_enforced...
  function print_coverage_table (line 206) | def print_coverage_table(
  function check_coverage (line 280) | def check_coverage(xml_path: str, threshold: float) -> bool:
  function main (line 353) | def main() -> int:

FILE: dotnet/samples/01-get-started/04_memory/Program.cs
  class UserInfoMemory (line 89) | internal sealed class UserInfoMemory : AIContextProvider
    method UserInfoMemory (line 95) | public UserInfoMemory(IChatClient chatClient, Func<AgentSession?, User...
    method GetUserInfo (line 105) | public UserInfo GetUserInfo(AgentSession session)
    method SetUserInfo (line 108) | public void SetUserInfo(AgentSession session, UserInfo userInfo)
    method StoreAIContextAsync (line 111) | protected override async ValueTask StoreAIContextAsync(InvokedContext ...
    method ProvideAIContextAsync (line 133) | protected override ValueTask<AIContext> ProvideAIContextAsync(Invoking...
  class UserInfo (line 157) | internal sealed class UserInfo

FILE: dotnet/samples/01-get-started/05_first_workflow/Program.cs
  class Program (line 18) | public static class Program
    method Main (line 20) | private static async Task Main()
  class ReverseTextExecutor (line 48) | internal sealed class ReverseTextExecutor() : Executor<string, string>("...
    method HandleAsync (line 58) | public override ValueTask<string> HandleAsync(string message, IWorkflo...

FILE: dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/Program.cs
  class RestaurantSearchRequest (line 96) | internal sealed class RestaurantSearchRequest
  class RestaurantSearchResponse (line 102) | internal sealed class RestaurantSearchResponse
  class RestaurantInfo (line 109) | internal sealed class RestaurantInfo

FILE: dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Client/ServerFunctionApprovalClientAgent.cs
  class ServerFunctionApprovalClientAgent (line 15) | internal sealed class ServerFunctionApprovalClientAgent : DelegatingAIAgent
    method ServerFunctionApprovalClientAgent (line 19) | public ServerFunctionApprovalClientAgent(AIAgent innerAgent, JsonSeria...
    method RunCoreAsync (line 25) | protected override Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 35) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method ConvertApprovalResponseToToolResult (line 53) | private static FunctionResultContent ConvertApprovalResponseToToolResu...
    method CopyMessagesUpToIndex (line 66) | private static List<ChatMessage> CopyMessagesUpToIndex(List<ChatMessag...
    method CopyContentsUpToIndex (line 76) | private static List<AIContent> CopyContentsUpToIndex(IList<AIContent> ...
    method ProcessOutgoingServerFunctionApprovals (line 86) | private static List<ChatMessage> ProcessOutgoingServerFunctionApprovals(
    method ProcessIncomingServerApprovalRequests (line 169) | private static AgentResponseUpdate ProcessIncomingServerApprovalRequests(
  class ApprovalRequest (line 242) | public sealed class ApprovalRequest
  class ApprovalResponse (line 257) | public sealed class ApprovalResponse

FILE: dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/ServerFunctionApprovalServerAgent.cs
  class ServerFunctionApprovalAgent (line 15) | internal sealed class ServerFunctionApprovalAgent : DelegatingAIAgent
    method ServerFunctionApprovalAgent (line 19) | public ServerFunctionApprovalAgent(AIAgent innerAgent, JsonSerializerO...
    method RunCoreAsync (line 25) | protected override Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 35) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method ConvertToolCallToApprovalRequest (line 53) | private static ToolApprovalRequestContent ConvertToolCallToApprovalReq...
    method ConvertToolResultToApprovalResponse (line 78) | private static ToolApprovalResponseContent ConvertToolResultToApproval...
    method CopyMessagesUpToIndex (line 95) | private static List<ChatMessage> CopyMessagesUpToIndex(List<ChatMessag...
    method CopyContentsUpToIndex (line 105) | private static List<AIContent> CopyContentsUpToIndex(IList<AIContent> ...
    method ProcessIncomingFunctionApprovals (line 115) | private static List<ChatMessage> ProcessIncomingFunctionApprovals(
    method ProcessOutgoingApprovalRequests (line 175) | private static AgentResponseUpdate ProcessOutgoingApprovalRequests(
  class ApprovalRequest (line 233) | public sealed class ApprovalRequest
  class ApprovalResponse (line 248) | public sealed class ApprovalResponse

FILE: dotnet/samples/02-agents/AGUI/Step05_StateManagement/Client/Program.cs
  class AgentState (line 196) | internal sealed class AgentState
  class RecipeState (line 203) | internal sealed class RecipeState

FILE: dotnet/samples/02-agents/AGUI/Step05_StateManagement/Client/StatefulAgent.cs
  class StatefulAgent (line 14) | internal sealed class StatefulAgent<TState> : DelegatingAIAgent
    method StatefulAgent (line 30) | public StatefulAgent(AIAgent innerAgent, JsonSerializerOptions jsonSer...
    method RunCoreAsync (line 38) | protected override Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 49) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...

FILE: dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/RecipeModels.cs
  class AgentState (line 8) | internal sealed class AgentState
  class RecipeState (line 15) | internal sealed class RecipeState

FILE: dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/SharedStateAgent.cs
  class SharedStateAgent (line 10) | internal sealed class SharedStateAgent : DelegatingAIAgent
    method SharedStateAgent (line 14) | public SharedStateAgent(AIAgent innerAgent, JsonSerializerOptions json...
    method RunCoreAsync (line 20) | protected override Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 30) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method TryDeserialize (line 138) | private static bool TryDeserialize<T>(string json, JsonSerializerOptio...

FILE: dotnet/samples/02-agents/AgentProviders/Agent_With_CustomImplementation/Program.cs
  class UpperCaseParrotAgent (line 28) | internal sealed class UpperCaseParrotAgent : AIAgent
    method CreateSessionCoreAsync (line 34) | protected override ValueTask<AgentSession> CreateSessionCoreAsync(Canc...
    method SerializeSessionCoreAsync (line 37) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 47) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync...
    method RunCoreAsync (line 50) | protected override async Task<AgentResponse> RunCoreAsync(IEnumerable<...
    method RunCoreStreamingAsync (line 79) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method CloneAndToUpperCase (line 114) | private static IEnumerable<ChatMessage> CloneAndToUpperCase(IEnumerabl...
    class CustomAgentSession (line 140) | internal sealed class CustomAgentSession : AgentSession
      method CustomAgentSession (line 142) | internal CustomAgentSession()
      method CustomAgentSession (line 146) | [JsonConstructor]

FILE: dotnet/samples/02-agents/AgentWithMemory/AgentWithMemory_Step05_BoundedChatHistory/BoundedChatHistoryProvider.cs
  class BoundedChatHistoryProvider (line 19) | internal sealed class BoundedChatHistoryProvider : ChatHistoryProvider, ...
    method BoundedChatHistoryProvider (line 36) | public BoundedChatHistoryProvider(
    method ProvideChatHistoryAsync (line 74) | protected override async ValueTask<IEnumerable<ChatMessage>> ProvideCh...
    method StoreChatHistoryAsync (line 109) | protected override async ValueTask StoreChatHistoryAsync(
    method Dispose (line 129) | public void Dispose()

FILE: dotnet/samples/02-agents/AgentWithMemory/AgentWithMemory_Step05_BoundedChatHistory/TruncatingChatReducer.cs
  class TruncatingChatReducer (line 12) | internal sealed class TruncatingChatReducer : IChatReducer
    method TruncatingChatReducer (line 20) | public TruncatingChatReducer(int maxMessages)
    method ReduceAsync (line 31) | public Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMess...

FILE: dotnet/samples/02-agents/AgentWithOpenAI/Agent_OpenAI_Step03_CreateFromChatClient/OpenAIChatClientAgent.cs
  class OpenAIChatClientAgent (line 14) | public class OpenAIChatClientAgent : DelegatingAIAgent
    method OpenAIChatClientAgent (line 24) | public OpenAIChatClientAgent(
    method OpenAIChatClientAgent (line 45) | public OpenAIChatClientAgent(
    method RunAsync (line 59) | public virtual async Task<ChatCompletion> RunAsync(
    method RunStreamingAsync (line 78) | public virtual IAsyncEnumerable<StreamingChatCompletionUpdate> RunStre...
    method RunCoreAsync (line 90) | protected sealed override Task<AgentResponse> RunCoreAsync(IEnumerable...
    method RunCoreStreamingAsync (line 94) | protected override IAsyncEnumerable<AgentResponseUpdate> RunCoreStream...

FILE: dotnet/samples/02-agents/AgentWithOpenAI/Agent_OpenAI_Step04_CreateFromOpenAIResponseClient/OpenAIResponseClientAgent.cs
  class OpenAIResponseClientAgent (line 14) | public class OpenAIResponseClientAgent : DelegatingAIAgent
    method OpenAIResponseClientAgent (line 25) | public OpenAIResponseClientAgent(
    method OpenAIResponseClientAgent (line 48) | public OpenAIResponseClientAgent(
    method RunAsync (line 62) | public virtual async Task<ResponseResult> RunAsync(
    method RunStreamingAsync (line 81) | public virtual async IAsyncEnumerable<StreamingResponseUpdate> RunStre...
    method RunCoreAsync (line 111) | protected sealed override Task<AgentResponse> RunCoreAsync(IEnumerable...
    method RunCoreStreamingAsync (line 115) | protected sealed override IAsyncEnumerable<AgentResponseUpdate> RunCor...

FILE: dotnet/samples/02-agents/AgentWithRAG/AgentWithRAG_Step01_BasicTextRAG/TextSearchStore/TextSearchDocument.cs
  class TextSearchDocument (line 8) | public sealed class TextSearchDocument

FILE: dotnet/samples/02-agents/AgentWithRAG/AgentWithRAG_Step01_BasicTextRAG/TextSearchStore/TextSearchStore.cs
  class TextSearchStore (line 22) | public sealed partial class TextSearchStore : IDisposable
    method AnyLanguageWordRegex (line 25) | [GeneratedRegex(@"\p{L}+", RegexOptions.IgnoreCase, "en-US")]
    method AnyLanguageWordRegex (line 31) | private static Regex AnyLanguageWordRegex() => s_anyLanguageWordRegex;
    method TextSearchStore (line 61) | public TextSearchStore(
    method UpsertTextAsync (line 122) | public async Task UpsertTextAsync(IEnumerable<string> textChunks, Canc...
    method UpsertDocumentsAsync (line 158) | public async Task UpsertDocumentsAsync(IEnumerable<TextSearchDocument>...
    method SearchAsync (line 210) | public async Task<IEnumerable<TextSearchDocument>> SearchAsync(string ...
    method SearchCoreAsync (line 231) | private async Task<IEnumerable<Dictionary<string, object?>>> SearchCor...
    method EnsureCollectionExistsAsync (line 317) | private async Task<VectorStoreCollection<object, Dictionary<string, ob...
    method GenerateUniqueKey (line 356) | private object GenerateUniqueKey(string? sourceId)
    method Dispose (line 367) | private void Dispose(bool disposing)
    method Dispose (line 382) | public void Dispose()

FILE: dotnet/samples/02-agents/AgentWithRAG/AgentWithRAG_Step01_BasicTextRAG/TextSearchStore/TextSearchStoreOptions.cs
  class TextSearchStoreOptions (line 8) | public sealed class TextSearchStoreOptions
    class SourceRetrievalRequest (line 74) | public sealed class SourceRetrievalRequest
      method SourceRetrievalRequest (line 81) | public SourceRetrievalRequest(string? sourceId, string? sourceLink)
    class SourceRetrievalResponse (line 101) | public sealed class SourceRetrievalResponse
      method SourceRetrievalResponse (line 108) | public SourceRetrievalResponse(SourceRetrievalRequest request, strin...

FILE: dotnet/samples/02-agents/AgentWithRAG/AgentWithRAG_Step01_BasicTextRAG/TextSearchStore/TextSearchStoreUpsertOptions.cs
  class TextSearchStoreUpsertOptions (line 8) | public sealed class TextSearchStoreUpsertOptions

FILE: dotnet/samples/02-agents/AgentWithRAG/AgentWithRAG_Step02_CustomVectorStoreRAG/Program.cs
  class DocumentationChunk (line 129) | internal sealed class DocumentationChunk

FILE: dotnet/samples/02-agents/Agents/Agent_Step02_StructuredOutput/AIAgentBuilderExtensions.cs
  class AIAgentBuilderExtensions (line 12) | internal static class AIAgentBuilderExtensions
    method UseStructuredOutput (line 34) | public static AIAgentBuilder UseStructuredOutput(

FILE: dotnet/samples/02-agents/Agents/Agent_Step02_StructuredOutput/Program.cs
  class CityInfo (line 177) | [Description("Information about a city")]

FILE: dotnet/samples/02-agents/Agents/Agent_Step02_StructuredOutput/StructuredOutputAgent.cs
  class StructuredOutputAgent (line 22) | internal sealed class StructuredOutputAgent : DelegatingAIAgent
    method StructuredOutputAgent (line 33) | public StructuredOutputAgent(AIAgent innerAgent, IChatClient chatClien...
    method RunCoreAsync (line 41) | protected override async Task<AgentResponse> RunCoreAsync(
    method GetChatMessages (line 59) | private List<ChatMessage> GetChatMessages(string? textResponseText)
    method GetChatOptions (line 73) | private ChatOptions GetChatOptions(AgentRunOptions? options)

FILE: dotnet/samples/02-agents/Agents/Agent_Step02_StructuredOutput/StructuredOutputAgentOptions.cs
  class StructuredOutputAgentOptions (line 12) | internal sealed class StructuredOutputAgentOptions

FILE: dotnet/samples/02-agents/Agents/Agent_Step02_StructuredOutput/StructuredOutputAgentResponse.cs
  class StructuredOutputAgentResponse (line 12) | internal sealed class StructuredOutputAgentResponse : AgentResponse
    method StructuredOutputAgentResponse (line 19) | public StructuredOutputAgentResponse(ChatResponse chatResponse, AgentR...

FILE: dotnet/samples/02-agents/Agents/Agent_Step04_3rdPartyChatHistoryStorage/Program.cs
  class VectorChatHistoryProvider (line 79) | internal sealed class VectorChatHistoryProvider : ChatHistoryProvider
    method VectorChatHistoryProvider (line 85) | public VectorChatHistoryProvider(
    method GetSessionDbKey (line 98) | public string GetSessionDbKey(AgentSession session)
    method ProvideChatHistoryAsync (line 101) | protected override async ValueTask<IEnumerable<ChatMessage>> ProvideCh...
    method StoreChatHistoryAsync (line 119) | protected override async ValueTask StoreChatHistoryAsync(InvokedContex...
    class State (line 141) | public sealed class State
      method State (line 143) | public State(string sessionDbKey)
    class ChatHistoryItem (line 154) | private sealed class ChatHistoryItem

FILE: dotnet/samples/02-agents/Agents/Agent_Step06_DependencyInjection/Program.cs
  class SampleService (line 48) | internal sealed class SampleService(AIAgent agent, IHostApplicationLifet...
    method StartAsync (line 52) | public async Task StartAsync(CancellationToken cancellationToken)
    method RunAsync (line 59) | public async Task RunAsync(CancellationToken cancellationToken)
    method StopAsync (line 87) | public Task StopAsync(CancellationToken cancellationToken) => Task.Com...

FILE: dotnet/samples/02-agents/Agents/Agent_Step11_Middleware/Program.cs
  class DateTimeContextProvider (line 298) | internal sealed class DateTimeContextProvider : MessageAIContextProvider
    method ProvideMessagesAsync (line 300) | protected override ValueTask<IEnumerable<ChatMessage>> ProvideMessages...

FILE: dotnet/samples/02-agents/Agents/Agent_Step12_Plugins/Program.cs
  class AgentPlugin (line 49) | internal sealed class AgentPlugin(WeatherProvider weatherProvider)
    method GetWeather (line 59) | public string GetWeather(string location)
    method GetCurrentTime (line 73) | public DateTimeOffset GetCurrentTime(IServiceProvider sp, string locat...
    method AsAITools (line 89) | public IEnumerable<AITool> AsAITools()
  class WeatherProvider (line 99) | internal sealed class WeatherProvider
    method GetWeather (line 110) | public string GetWeather(string location)
  class CurrentTimeProvider (line 122) | internal sealed class CurrentTimeProvider
    method GetCurrentTime (line 129) | public DateTimeOffset GetCurrentTime(string location)

FILE: dotnet/samples/02-agents/Agents/Agent_Step17_AdditionalAIContext/Program.cs
  class TodoListAIContextProvider (line 87) | internal sealed class TodoListAIContextProvider : AIContextProvider
    method GetTodoItems (line 89) | private static List<string> GetTodoItems(AgentSession? session)
    method SetTodoItems (line 92) | private static void SetTodoItems(AgentSession? session, List<string> i...
    method ProvideAIContextAsync (line 95) | protected override ValueTask<AIContext> ProvideAIContextAsync(Invoking...
    method RemoveTodoItem (line 128) | private static void RemoveTodoItem(AgentSession? session, int index)
    method AddTodoItem (line 135) | private static void AddTodoItem(AgentSession? session, string item)
  class CalendarSearchAIContextProvider (line 151) | internal sealed class CalendarSearchAIContextProvider(Func<Task<string[]...
    method ProvideMessagesAsync (line 153) | protected override async ValueTask<IEnumerable<MEAI.ChatMessage>> Prov...

FILE: dotnet/samples/02-agents/DevUI/DevUI_Step01_BasicUsage/Program.cs
  class Program (line 35) | internal static class Program
    method Main (line 41) | private static void Main(string[] args)

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step05_StructuredOutput/Program.cs
  class PersonInfo (line 83) | [Description("Information about a person including their name, age, and ...

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step08_DependencyInjection/Program.cs
  class SampleService (line 53) | internal sealed class SampleService(AIProjectClient client, AIAgent agen...
    method StartAsync (line 57) | public async Task StartAsync(CancellationToken cancellationToken)
    method RunAsync (line 64) | public async Task RunAsync(CancellationToken cancellationToken)
    method StopAsync (line 92) | public async Task StopAsync(CancellationToken cancellationToken)

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step13_Plugins/Program.cs
  class AgentPlugin (line 58) | internal sealed class AgentPlugin(WeatherProvider weatherProvider)
    method GetWeather (line 68) | public string GetWeather(string location)
    method GetCurrentTime (line 82) | public DateTimeOffset GetCurrentTime(IServiceProvider sp, string locat...
    method AsAITools (line 98) | public IEnumerable<AITool> AsAITools()
  class WeatherProvider (line 108) | internal sealed class WeatherProvider
    method GetWeather (line 119) | public string GetWeather(string location)
  class CurrentTimeProvider (line 131) | internal sealed class CurrentTimeProvider
    method GetCurrentTime (line 138) | public DateTimeOffset GetCurrentTime(string location)

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step15_ComputerUse/ComputerUseUtil.cs
  type SearchState (line 10) | internal enum SearchState
  class ComputerUseUtil (line 17) | internal static class ComputerUseUtil
    method LoadScreenshotAssets (line 22) | internal static Dictionary<string, byte[]> LoadScreenshotAssets()
    method HandleComputerActionAndTakeScreenshot (line 46) | internal static (SearchState CurrentState, byte[] ImageBytes) HandleCo...
    method DetermineNextState (line 59) | private static SearchState DetermineNextState(ComputerCallAction actio...
    method IsEnterKeyAction (line 83) | private static bool IsEnterKeyAction(ComputerCallAction action, string...
    method GetImageKey (line 92) | private static string GetImageKey(SearchState state) => state switch

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step15_ComputerUse/Program.cs
  class Program (line 14) | internal sealed class Program
    method Main (line 16) | private static async Task Main(string[] args)
    method InvokeComputerUseAgentAsync (line 73) | private static async Task InvokeComputerUseAgentAsync(AIAgent agent)

FILE: dotnet/samples/02-agents/FoundryAgents/FoundryAgents_Step23_LocalMCP/Program.cs
  class LoggingMcpTool (line 79) | internal sealed class LoggingMcpTool(AIFunction innerFunction) : Delegat...
    method InvokeCoreAsync (line 81) | protected override ValueTask<object?> InvokeCoreAsync(AIFunctionArgume...

FILE: dotnet/samples/03-workflows/Agents/CustomAgentExecutors/Program.cs
  class Program (line 30) | public static class Program
    method Main (line 32) | private static async Task Main()
  class SloganResult (line 77) | public sealed class SloganResult
  class FeedbackResult (line 89) | public sealed class FeedbackResult
  class SloganGeneratedEvent (line 104) | internal sealed class SloganGeneratedEvent(SloganResult sloganResult) : ...
    method ToString (line 106) | public override string ToString() => $"Slogan: {sloganResult.Slogan}";
  class SloganWriterExecutor (line 115) | internal sealed partial class SloganWriterExecutor : Executor
    method SloganWriterExecutor (line 125) | public SloganWriterExecutor(string id, IChatClient chatClient) : base(id)
    method HandleAsync (line 139) | [MessageHandler]
    method HandleAsync (line 152) | [MessageHandler]
  class FeedbackEvent (line 175) | internal sealed class FeedbackEvent(FeedbackResult feedbackResult) : Wor...
    method ToString (line 178) | public override string ToString() => $"Feedback:\n{JsonSerializer.Seri...
  class FeedbackExecutor (line 184) | [SendsMessage(typeof(FeedbackResult))]
    method FeedbackExecutor (line 202) | public FeedbackExecutor(string id, IChatClient chatClient) : base(id)
    method HandleAsync (line 216) | public override async ValueTask HandleAsync(SloganResult message, IWor...

FILE: dotnet/samples/03-workflows/Agents/FoundryAgent/Program.cs
  class Program (line 19) | public static class Program
    method Main (line 21) | private static async Task Main()
    method CreateTranslationAgentAsync (line 72) | private static async Task<ChatClientAgent> CreateTranslationAgentAsync(

FILE: dotnet/samples/03-workflows/Agents/GroupChatToolApproval/DeploymentGroupChatManager.cs
  class DeploymentGroupChatManager (line 18) | internal sealed class DeploymentGroupChatManager : GroupChatManager
    method DeploymentGroupChatManager (line 22) | public DeploymentGroupChatManager(IReadOnlyList<AIAgent> agents)
    method SelectNextAgentAsync (line 27) | protected override ValueTask<AIAgent> SelectNextAgentAsync(

FILE: dotnet/samples/03-workflows/Agents/GroupChatToolApproval/Program.cs
  class Program (line 41) | public static class Program
    method Main (line 43) | private static async Task Main()
    method RunTests (line 147) | [Description("Run automated tests for the application.")]
    method CheckStagingStatus (line 151) | [Description("Check the current status of the staging environment.")]
    method DeployToProduction (line 155) | [Description("Deploy specified components to production. Requires huma...
    method CreateRollbackPlan (line 161) | [Description("Create a rollback plan for the deployment.")]

FILE: dotnet/samples/03-workflows/Agents/WorkflowAsAnAgent/Program.cs
  class Program (line 28) | public static class Program
    method Main (line 30) | private static async Task Main()

FILE: dotnet/samples/03-workflows/Agents/WorkflowAsAnAgent/WorkflowFactory.cs
  class WorkflowFactory (line 9) | internal static class WorkflowFactory
    method BuildWorkflow (line 16) | internal static Workflow BuildWorkflow(IChatClient chatClient)
    method GetLanguageAgent (line 38) | private static ChatClientAgent GetLanguageAgent(string targetLanguage,...
    class ConcurrentAggregationExecutor (line 44) | [YieldsOutput(typeof(string))]
      method HandleAsync (line 57) | public override async ValueTask HandleAsync(List<ChatMessage> messag...
      method ResetAsync (line 69) | public ValueTask ResetAsync()

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointAndRehydrate/Program.cs
  class Program (line 23) | public static class Program
    method Main (line 25) | private static async Task Main()

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointAndRehydrate/WorkflowFactory.cs
  class WorkflowFactory (line 7) | internal static class WorkflowFactory
    method BuildWorkflow (line 16) | internal static Workflow BuildWorkflow()
  type NumberSignal (line 34) | internal enum NumberSignal
  class GuessNumberExecutor (line 44) | [SendsMessage(typeof(int))]
    method GuessNumberExecutor (line 64) | public GuessNumberExecutor(int lowerBound, int upperBound) : this()
    method HandleAsync (line 72) | public override async ValueTask HandleAsync(NumberSignal message, IWor...
    method OnCheckpointingAsync (line 94) | protected override ValueTask OnCheckpointingAsync(IWorkflowContext con...
    method OnCheckpointRestoredAsync (line 101) | protected override async ValueTask OnCheckpointRestoredAsync(IWorkflow...
  class JudgeExecutor (line 108) | [SendsMessage(typeof(NumberSignal))]
    method JudgeExecutor (line 120) | public JudgeExecutor(int targetNumber) : this()
    method HandleAsync (line 125) | public override async ValueTask HandleAsync(int message, IWorkflowCont...
    method OnCheckpointingAsync (line 146) | protected override ValueTask OnCheckpointingAsync(IWorkflowContext con...
    method OnCheckpointRestoredAsync (line 153) | protected override async ValueTask OnCheckpointRestoredAsync(IWorkflow...

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointAndResume/Program.cs
  class Program (line 22) | public static class Program
    method Main (line 24) | private static async Task Main()

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointAndResume/WorkflowFactory.cs
  class WorkflowFactory (line 7) | internal static class WorkflowFactory
    method BuildWorkflow (line 16) | internal static Workflow BuildWorkflow()
  type NumberSignal (line 34) | internal enum NumberSignal
  class GuessNumberExecutor (line 44) | [SendsMessage(typeof(int))]
    method GuessNumberExecutor (line 64) | public GuessNumberExecutor(int lowerBound, int upperBound) : this()
    method HandleAsync (line 72) | public override async ValueTask HandleAsync(NumberSignal message, IWor...
    method OnCheckpointingAsync (line 94) | protected override ValueTask OnCheckpointingAsync(IWorkflowContext con...
    method OnCheckpointRestoredAsync (line 101) | protected override async ValueTask OnCheckpointRestoredAsync(IWorkflow...
  class JudgeExecutor (line 108) | [SendsMessage(typeof(NumberSignal))]
    method JudgeExecutor (line 120) | public JudgeExecutor(int targetNumber) : this()
    method HandleAsync (line 125) | public override async ValueTask HandleAsync(int message, IWorkflowCont...
    method OnCheckpointingAsync (line 146) | protected override ValueTask OnCheckpointingAsync(IWorkflowContext con...
    method OnCheckpointRestoredAsync (line 153) | protected override async ValueTask OnCheckpointRestoredAsync(IWorkflow...

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointWithHumanInTheLoop/Program.cs
  class Program (line 25) | public static class Program
    method Main (line 27) | private static async Task Main()
    method HandleExternalRequest (line 99) | private static ExternalResponse HandleExternalRequest(ExternalRequest ...
    method ReadIntegerFromConsole (line 120) | private static int ReadIntegerFromConsole(string prompt)

FILE: dotnet/samples/03-workflows/Checkpoint/CheckpointWithHumanInTheLoop/WorkflowFactory.cs
  class WorkflowFactory (line 7) | internal static class WorkflowFactory
    method BuildWorkflow (line 13) | internal static Workflow BuildWorkflow()
  type NumberSignal (line 31) | internal enum NumberSignal
  class SignalWithNumber (line 41) | internal sealed class SignalWithNumber
    method SignalWithNumber (line 46) | public SignalWithNumber(NumberSignal signal, int? number = null)
  class JudgeExecutor (line 56) | [SendsMessage(typeof(SignalWithNumber))]
    method JudgeExecutor (line 68) | public JudgeExecutor(int targetNumber) : this()
    method HandleAsync (line 73) | public override async ValueTask HandleAsync(int message, IWorkflowCont...
    method OnCheckpointingAsync (line 94) | protected override ValueTask OnCheckpointingAsync(IWorkflowContext con...
    method OnCheckpointRestoredAsync (line 101) | protected override async ValueTask OnCheckpointRestoredAsync(IWorkflow...

FILE: dotnet/samples/03-workflows/Concurrent/Concurrent/Program.cs
  class Program (line 30) | public static class Program
    method Main (line 32) | private static async Task Main()
  class ConcurrentStartExecutor (line 75) | [SendsMessage(typeof(ChatMessage))]
    method HandleAsync (line 88) | [MessageHandler]
  class ConcurrentAggregationExecutor (line 102) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 116) | public override async ValueTask HandleAsync(List<ChatMessage> message,...

FILE: dotnet/samples/03-workflows/Concurrent/MapReduce/Program.cs
  class Program (line 34) | public static class Program
    method Main (line 36) | private static async Task Main()
    method BuildWorkflow (line 50) | public static Workflow BuildWorkflow()
    method RunWorkflowAsync (line 82) | private static async Task RunWorkflowAsync(Workflow workflow)
  class Split (line 131) | [SendsMessage(typeof(SplitComplete))]
    method HandleAsync (line 141) | public override async ValueTask HandleAsync(string message, IWorkflowC...
    method Preprocess (line 174) | private static string[] Preprocess(string data)
  class Mapper (line 190) | [SendsMessage(typeof(MapComplete))]
    method HandleAsync (line 196) | public override async ValueTask HandleAsync(SplitComplete message, IWo...
  class Shuffler (line 217) | [SendsMessage(typeof(ShuffleComplete))]
    method HandleAsync (line 228) | public override async ValueTask HandleAsync(MapComplete message, IWork...
    method PreprocessAsync (line 257) | private async Task<List<List<(string key, List<int> values)>>> Preproc...
  class Reducer (line 317) | [SendsMessage(typeof(ReduceComplete))]
    method HandleAsync (line 323) | public override async ValueTask HandleAsync(ShuffleComplete message, I...
  class CompletionExecutor (line 359) | [YieldsOutput(typeof(List<string>))]
    method HandleAsync (line 366) | public override async ValueTask HandleAsync(List<ReduceComplete> messa...
  class MapComplete (line 380) | internal sealed class SplitComplete : WorkflowEvent;
  class ShuffleComplete (line 393) | internal sealed class ShuffleComplete(string FilePath, string ReducerId)...
  class ReduceComplete (line 402) | internal sealed class ReduceComplete(string FilePath) : WorkflowEvent
  class MapReduceConstants (line 416) | internal static class MapReduceConstants

FILE: dotnet/samples/03-workflows/ConditionalEdges/01_EdgeCondition/Program.cs
  class Program (line 33) | public static class Program
    method Main (line 35) | private static async Task Main()
    method GetCondition (line 80) | private static Func<object?, bool> GetCondition(bool expectedResult) =>
    method GetSpamDetectionAgent (line 87) | private static ChatClientAgent GetSpamDetectionAgent(IChatClient chatC...
    method GetEmailAssistantAgent (line 101) | private static ChatClientAgent GetEmailAssistantAgent(IChatClient chat...
  class EmailStateConstants (line 115) | internal static class EmailStateConstants
  class DetectionResult (line 123) | public sealed class DetectionResult
  class Email (line 139) | internal sealed class Email
  class SpamDetectionExecutor (line 151) | internal sealed class SpamDetectionExecutor : Executor<ChatMessage, Dete...
    method SpamDetectionExecutor (line 159) | public SpamDetectionExecutor(AIAgent spamDetectionAgent) : base("SpamD...
    method HandleAsync (line 164) | public override async ValueTask<DetectionResult> HandleAsync(ChatMessa...
  class EmailResponse (line 187) | public sealed class EmailResponse
  class EmailAssistantExecutor (line 196) | internal sealed class EmailAssistantExecutor : Executor<DetectionResult,...
    method EmailAssistantExecutor (line 204) | public EmailAssistantExecutor(AIAgent emailAssistantAgent) : base("Ema...
    method HandleAsync (line 209) | public override async ValueTask<EmailResponse> HandleAsync(DetectionRe...
  class SendEmailExecutor (line 231) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 237) | public override async ValueTask HandleAsync(EmailResponse message, IWo...
  class HandleSpamExecutor (line 244) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 250) | public override async ValueTask HandleAsync(DetectionResult message, I...

FILE: dotnet/samples/03-workflows/ConditionalEdges/01_EdgeCondition/Resources.cs
  class Resources (line 8) | internal static class Resources
    method Read (line 12) | public static string Read(string fileName) => File.ReadAllText(Path.Co...

FILE: dotnet/samples/03-workflows/ConditionalEdges/02_SwitchCase/Program.cs
  class Program (line 34) | public static class Program
    method Main (line 36) | private static async Task Main()
    method GetCondition (line 96) | private static Func<object?, bool> GetCondition(SpamDecision expectedD...
    method GetSpamDetectionAgent (line 102) | private static ChatClientAgent GetSpamDetectionAgent(IChatClient chatC...
    method GetEmailAssistantAgent (line 116) | private static ChatClientAgent GetEmailAssistantAgent(IChatClient chat...
  class EmailStateConstants (line 130) | internal static class EmailStateConstants
  type SpamDecision (line 138) | public enum SpamDecision
  class DetectionResult (line 148) | public sealed class DetectionResult
  class Email (line 164) | internal sealed class Email
  class SpamDetectionExecutor (line 176) | internal sealed class SpamDetectionExecutor : Executor<ChatMessage, Dete...
    method SpamDetectionExecutor (line 184) | public SpamDetectionExecutor(AIAgent spamDetectionAgent) : base("SpamD...
    method HandleAsync (line 189) | public override async ValueTask<DetectionResult> HandleAsync(ChatMessa...
  class EmailResponse (line 212) | public sealed class EmailResponse
  class EmailAssistantExecutor (line 221) | internal sealed class EmailAssistantExecutor : Executor<DetectionResult,...
    method EmailAssistantExecutor (line 229) | public EmailAssistantExecutor(AIAgent emailAssistantAgent) : base("Ema...
    method HandleAsync (line 234) | public override async ValueTask<EmailResponse> HandleAsync(DetectionRe...
  class SendEmailExecutor (line 255) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 261) | public override async ValueTask HandleAsync(EmailResponse message, IWo...
  class HandleSpamExecutor (line 268) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 274) | public override async ValueTask HandleAsync(DetectionResult message, I...
  class HandleUncertainExecutor (line 290) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 296) | public override async ValueTask HandleAsync(DetectionResult message, I...

FILE: dotnet/samples/03-workflows/ConditionalEdges/02_SwitchCase/Resources.cs
  class Resources (line 8) | internal static class Resources
    method Read (line 12) | public static string Read(string fileName) => File.ReadAllText(Path.Co...

FILE: dotnet/samples/03-workflows/ConditionalEdges/03_MultiSelection/Program.cs
  class Program (line 34) | public static class Program
    method Main (line 38) | private static async Task Main()
    method GetTargetAssigner (line 108) | private static Func<AnalysisResult?, int, IEnumerable<int>> GetTargetA...
    method GetEmailAnalysisAgent (line 142) | private static ChatClientAgent GetEmailAnalysisAgent(IChatClient chatC...
    method GetEmailAssistantAgent (line 156) | private static ChatClientAgent GetEmailAssistantAgent(IChatClient chat...
    method GetEmailSummaryAgent (line 170) | private static ChatClientAgent GetEmailSummaryAgent(IChatClient chatCl...
  class EmailStateConstants (line 181) | internal static class EmailStateConstants
  type SpamDecision (line 189) | public enum SpamDecision
  class AnalysisResult (line 199) | public sealed class AnalysisResult
  class Email (line 221) | internal sealed class Email
  class EmailAnalysisExecutor (line 233) | internal sealed class EmailAnalysisExecutor : Executor<ChatMessage, Anal...
    method EmailAnalysisExecutor (line 241) | public EmailAnalysisExecutor(AIAgent emailAnalysisAgent) : base("Email...
    method HandleAsync (line 246) | public override async ValueTask<AnalysisResult> HandleAsync(ChatMessag...
  class EmailResponse (line 270) | public sealed class EmailResponse
  class EmailAssistantExecutor (line 279) | internal sealed class EmailAssistantExecutor : Executor<AnalysisResult, ...
    method EmailAssistantExecutor (line 287) | public EmailAssistantExecutor(AIAgent emailAssistantAgent) : base("Ema...
    method HandleAsync (line 292) | public override async ValueTask<EmailResponse> HandleAsync(AnalysisRes...
  class SendEmailExecutor (line 313) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 319) | public override async ValueTask HandleAsync(EmailResponse message, IWo...
  class HandleSpamExecutor (line 326) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 332) | public override async ValueTask HandleAsync(AnalysisResult message, IW...
  class HandleUncertainExecutor (line 348) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 354) | public override async ValueTask HandleAsync(AnalysisResult message, IW...
  class EmailSummary (line 371) | public sealed class EmailSummary
  class EmailSummaryExecutor (line 380) | internal sealed class EmailSummaryExecutor : Executor<AnalysisResult, An...
    method EmailSummaryExecutor (line 388) | public EmailSummaryExecutor(AIAgent emailSummaryAgent) : base("EmailSu...
    method HandleAsync (line 393) | public override async ValueTask<AnalysisResult> HandleAsync(AnalysisRe...
  class DatabaseEvent (line 411) | internal sealed class DatabaseEvent(string message) : WorkflowEvent(mess...
  class DatabaseAccessExecutor (line 416) | internal sealed class DatabaseAccessExecutor() : Executor<AnalysisResult...
    method HandleAsync (line 418) | public override async ValueTask HandleAsync(AnalysisResult message, IW...

FILE: dotnet/samples/03-workflows/ConditionalEdges/03_MultiSelection/Resources.cs
  class Resources (line 8) | internal static class Resources
    method Read (line 12) | public static string Read(string fileName) => File.ReadAllText(Path.Co...

FILE: dotnet/samples/03-workflows/Declarative/ConfirmInput/Program.cs
  class Program (line 16) | internal sealed class Program
    method Main (line 18) | public static async Task Main(string[] args)

FILE: dotnet/samples/03-workflows/Declarative/CustomerSupport/Program.cs
  class Program (line 22) | internal sealed class Program
    method Main (line 24) | public static async Task Main(string[] args)
    method CreateAgentsAsync (line 62) | private static async Task CreateAgentsAsync(Uri foundryEndpoint, IConf...
    method DefineSelfServiceAgent (line 100) | private static PromptAgentDefinition DefineSelfServiceAgent(IConfigura...
    method DefineTicketingAgent (line 147) | private static PromptAgentDefinition DefineTicketingAgent(IConfigurati...
    method DefineTicketRoutingAgent (line 211) | private static PromptAgentDefinition DefineTicketRoutingAgent(IConfigu...
    method DefineWindowsSupportAgent (line 256) | private static PromptAgentDefinition DefineWindowsSupportAgent(IConfig...
    method DefineResolutionAgent (line 326) | private static PromptAgentDefinition DefineResolutionAgent(IConfigurat...
    method TicketEscalationAgent (line 360) | private static PromptAgentDefinition TicketEscalationAgent(IConfigurat...

FILE: dotnet/samples/03-workflows/Declarative/CustomerSupport/TicketingPlugin.cs
  class TicketingPlugin (line 7) | internal sealed class TicketingPlugin
    method GetTicket (line 11) | [Description("Retrieve a ticket by identifier from Azure DevOps.")]
    method CreateTicket (line 21) | [Description("Create a ticket in Azure DevOps and return its identifie...
    method ResolveTicket (line 39) | [Description("Resolve an existing ticket in Azure DevOps given its ide...
    method SendNotification (line 50) | [Description("Send an email notification to escalate ticket engagement...
    method Trace (line 56) | private static void Trace(string functionName)
    type TicketStatus (line 69) | public enum TicketStatus
    class TicketItem (line 77) | public sealed class TicketItem

FILE: dotnet/samples/03-workflows/Declarative/DeepResearch/Program.cs
  class Program (line 21) | internal sealed class Program
    method Main (line 23) | public static async Task Main(string[] args)
    method CreateAgentsAsync (line 48) | private static async Task CreateAgentsAsync(Uri foundryEndpoint, IConf...
    method DefineResearchAgent (line 91) | private static PromptAgentDefinition DefineResearchAgent(IConfiguratio...
    method DefinePlannerAgent (line 123) | private static PromptAgentDefinition DefinePlannerAgent(IConfiguration...
    method DefineManagerAgent (line 142) | private static PromptAgentDefinition DefineManagerAgent(IConfiguration...
    method DefineSummaryAgent (line 228) | private static PromptAgentDefinition DefineSummaryAgent(IConfiguration...
    method DefineKnowledgeAgent (line 243) | private static PromptAgentDefinition DefineKnowledgeAgent(IConfigurati...
    method DefineCoderAgent (line 254) | private static PromptAgentDefinition DefineCoderAgent(IConfiguration c...
    method DefineWeatherAgent (line 268) | private static PromptAgentDefinition DefineWeatherAgent(IConfiguration...

FILE: dotnet/samples/03-workflows/Declarative/ExecuteCode/Generated.cs
  class SampleWorkflowProvider (line 33) | public static class SampleWorkflowProvider
    class WorkflowDemoRootExecutor (line 38) | internal sealed class WorkflowDemoRootExecutor<TInput>(
      method ExecuteAsync (line 44) | protected override async ValueTask ExecuteAsync(TInput message, IWor...
    class QuestionStudentExecutor (line 52) | internal sealed class QuestionStudentExecutor(FormulaSession session, ...
      method ExecuteAsync (line 55) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    class QuestionTeacherExecutor (line 89) | internal sealed class QuestionTeacherExecutor(FormulaSession session, ...
      method ExecuteAsync (line 92) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    class SetCountIncrementExecutor (line 128) | internal sealed class SetCountIncrementExecutor(FormulaSession session...
      method ExecuteAsync (line 131) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    class CheckCompletionExecutor (line 143) | internal sealed class CheckCompletionExecutor(FormulaSession session) ...
      method ExecuteAsync (line 146) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    class SendactivityDoneExecutor (line 167) | internal sealed class SendactivityDoneExecutor(FormulaSession session)...
      method ExecuteAsync (line 170) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    class SendactivityTiredExecutor (line 188) | internal sealed class SendactivityTiredExecutor(FormulaSession session...
      method ExecuteAsync (line 191) | protected override async ValueTask<object?> ExecuteAsync(IWorkflowCo...
    method CreateWorkflow (line 206) | public static Workflow CreateWorkflow<TInput>(

FILE: dotnet/samples/03-workflows/Declarative/ExecuteCode/Program.cs
  class Program (line 23) | internal sealed class Program
    method Main (line 25) | public static async Task Main(string[] args)
    method ExecuteAsync (line 33) | private async Task ExecuteAsync()
    method CreateWorkflow (line 48) | private Workflow CreateWorkflow()
    method Program (line 69) | private Program(string? workflowInput)
    method GetWorkflowInput (line 90) | private string GetWorkflowInput()
    method ParseWorkflowInput (line 120) | private static string? ParseWorkflowInput(string[] args)
    method InitializeConfig (line 126) | private static IConfigurationRoot InitializeConfig() =>
    method Notify (line 132) | private static void Notify(string message)

FILE: dotnet/samples/03-workflows/Declarative/ExecuteWorkflow/Program.cs
  class Program (line 29) | internal sealed class Program
    method Main (line 31) | public static async Task Main(string[] args)
    method ExecuteAsync (line 46) | private async Task ExecuteAsync()
    method CreateWorkflow (line 72) | private Workflow CreateWorkflow()
    method Program (line 104) | private Program(string workflowFile, string? workflowInput)
    method ParseWorkflowFile (line 133) | private static string? ParseWorkflowFile(string[] args)
    method GetWorkflowInput (line 176) | private string GetWorkflowInput()
    method ParseWorkflowInput (line 206) | private static string? ParseWorkflowInput(string[] args)
    method InitializeConfig (line 219) | private static IConfigurationRoot InitializeConfig() =>
    method Notify (line 225) | private static void Notify(string message)

FILE: dotnet/samples/03-workflows/Declarative/FunctionTools/MenuPlugin.cs
  class MenuPlugin (line 9) | public sealed class MenuPlugin
    method GetMenu (line 11) | [Description("Provides a list items on the menu.")]
    method GetSpecials (line 17) | [Description("Provides a list of specials from the menu.")]
    method GetItemPrice (line 23) | [Description("Provides the price of the requested menu item.")]
    class MenuItem (line 74) | public sealed class MenuItem

FILE: dotnet/samples/03-workflows/Declarative/FunctionTools/Program.cs
  class Program (line 22) | internal sealed class Program
    method Main (line 24) | public static async Task Main(string[] args)
    method CreateAgentAsync (line 57) | private static async Task CreateAgentAsync(Uri foundryEndpoint, IConfi...
    method DefineMenuAgent (line 70) | private static PromptAgentDefinition DefineMenuAgent(IConfiguration co...

FILE: dotnet/samples/03-workflows/Declarative/GenerateCode/Program.cs
  class Program (line 17) | internal sealed class Program
    method Main (line 19) | public static void Main(string[] args)
    method Execute (line 25) | private void Execute()
    method Program (line 49) | private Program(string[] args)
    method ParseWorkflowFile (line 54) | private static string ParseWorkflowFile(string[] args)
    method Notify (line 93) | private static void Notify(string message)

FILE: dotnet/samples/03-workflows/Declarative/HostedWorkflow/Program.cs
  class Program (line 30) | internal sealed class Program
    method Main (line 32) | public static async Task Main(string[] args)
    method CreateWorkflowAsync (line 88) | private static async Task<AgentVersion> CreateWorkflowAsync(AIProjectC...
    method CreateAgentsAsync (line 103) | private static async Task CreateAgentsAsync(AIProjectClient agentClien...
    method DefineStudentAgent (line 116) | private static PromptAgentDefinition DefineStudentAgent(IConfiguration...
    method DefineTeacherAgent (line 129) | private static PromptAgentDefinition DefineTeacherAgent(IConfiguration...
    method GetWorkflowInput (line 141) | private static string GetWorkflowInput(string[] args)

FILE: dotnet/samples/03-workflows/Declarative/InputArguments/Program.cs
  class Program (line 21) | internal sealed class Program
    method Main (line 23) | public static async Task Main(string[] args)
    method CreateAgentAsync (line 48) | private static async Task CreateAgentAsync(Uri foundryEndpoint, IConfi...
    method DefineLocationTriageAgent (line 71) | private static PromptAgentDefinition DefineLocationTriageAgent(IConfig...
    method DefineLocationCaptureAgent (line 82) | private static PromptAgentDefinition DefineLocationCaptureAgent(IConfi...
    method DefineLocationAwareAgent (line 131) | private static PromptAgentDefinition DefineLocationAwareAgent(IConfigu...

FILE: dotnet/samples/03-workflows/Declarative/InvokeFunctionTool/MenuPlugin.cs
  class MenuPlugin (line 13) | public sealed class MenuPlugin
    method GetMenu (line 15) | [Description("Provides a list items on the menu.")]
    method GetSpecials (line 21) | [Description("Provides a list of specials from the menu.")]
    method GetItemPrice (line 27) | [Description("Provides the price of the requested menu item.")]
    class MenuItem (line 78) | public sealed class MenuItem

FILE: dotnet/samples/03-workflows/Declarative/InvokeFunctionTool/Program.cs
  class Program (line 24) | internal sealed class Program
    method Main (line 26) | public static async Task Main(string[] args)
    method CreateAgentAsync (line 55) | private static async Task CreateAgentAsync(Uri foundryEndpoint, IConfi...
    method DefineMenuAgent (line 66) | private static PromptAgentDefinition DefineMenuAgent(IConfiguration co...

FILE: dotnet/samples/03-workflows/Declarative/InvokeMcpTool/Program.cs
  class Program (line 42) | internal sealed class Program
    method Main (line 44) | public static async Task Main(string[] args)
    method CreateAgentAsync (line 117) | private static async Task CreateAgentAsync(Uri foundryEndpoint, IConfi...
    method DefineSearchAgent (line 128) | private static PromptAgentDefinition DefineSearchAgent(IConfiguration ...

FILE: dotnet/samples/03-workflows/Declarative/Marketing/Program.cs
  class Program (line 20) | internal sealed class Program
    method Main (line 22) | public static async Task Main(string[] args)
    method CreateAgentsAsync (line 47) | private static async Task CreateAgentsAsync(Uri foundryEndpoint, IConf...
    method DefineAnalystAgent (line 70) | private static PromptAgentDefinition DefineAnalystAgent(IConfiguration...
    method DefineWriterAgent (line 88) | private static PromptAgentDefinition DefineWriterAgent(IConfiguration ...
    method DefineEditorAgent (line 99) | private static PromptAgentDefinition DefineEditorAgent(IConfiguration ...

FILE: dotnet/samples/03-workflows/Declarative/StudentTeacher/Program.cs
  class Program (line 20) | internal sealed class Program
    method Main (line 22) | public static async Task Main(string[] args)
    method CreateAgentsAsync (line 47) | private static async Task CreateAgentsAsync(Uri foundryEndpoint, IConf...
    method DefineStudentAgent (line 65) | private static PromptAgentDefinition DefineStudentAgent(IConfiguration...
    method DefineTeacherAgent (line 78) | private static PromptAgentDefinition DefineTeacherAgent(IConfiguration...

FILE: dotnet/samples/03-workflows/Declarative/ToolApproval/Program.cs
  class Program (line 21) | internal sealed class Program
    method Main (line 23) | public static async Task Main(string[] args)
    method CreateAgentAsync (line 48) | private static async Task CreateAgentAsync(Uri foundryEndpoint, IConfi...
    method DefineSearchAgent (line 61) | private static PromptAgentDefinition DefineSearchAgent(IConfiguration ...

FILE: dotnet/samples/03-workflows/HumanInTheLoop/HumanInTheLoopBasic/Program.cs
  class Program (line 22) | public static class Program
    method Main (line 24) | private static async Task Main()
    method HandleExternalRequest (line 49) | private static ExternalResponse HandleExternalRequest(ExternalRequest ...
    method ReadIntegerFromConsole (line 70) | private static int ReadIntegerFromConsole(string prompt)

FILE: dotnet/samples/03-workflows/HumanInTheLoop/HumanInTheLoopBasic/WorkflowFactory.cs
  class WorkflowFactory (line 7) | internal static class WorkflowFactory
    method BuildWorkflow (line 13) | internal static Workflow BuildWorkflow()
  type NumberSignal (line 31) | internal enum NumberSignal
  class JudgeExecutor (line 41) | [SendsMessage(typeof(NumberSignal))]
    method JudgeExecutor (line 52) | public JudgeExecutor(int targetNumber) : this()
    method HandleAsync (line 57) | public override async ValueTask HandleAsync(int message, IWorkflowCont...

FILE: dotnet/samples/03-workflows/Loop/Program.cs
  class Program (line 19) | public static class Program
    method Main (line 21) | private static async Task Main()
  type NumberSignal (line 49) | internal enum NumberSignal
  class GuessNumberExecutor (line 59) | [SendsMessage(typeof(int))]
    method GuessNumberExecutor (line 78) | public GuessNumberExecutor(string id, int lowerBound, int upperBound) ...
    method HandleAsync (line 86) | public override async ValueTask HandleAsync(NumberSignal message, IWor...
  class JudgeExecutor (line 108) | [SendsMessage(typeof(NumberSignal))]
    method JudgeExecutor (line 120) | public JudgeExecutor(string id, int targetNumber) : base(id)
    method HandleAsync (line 125) | public override async ValueTask HandleAsync(int message, IWorkflowCont...

FILE: dotnet/samples/03-workflows/Observability/ApplicationInsights/Program.cs
  class Program (line 23) | public static class Program
    method Main (line 28) | private static async Task Main()
  class UppercaseExecutor (line 77) | internal sealed class UppercaseExecutor() : Executor<string, string>("Up...
    method HandleAsync (line 87) | public override async ValueTask<string> HandleAsync(string message, IW...
  class ReverseTextExecutor (line 94) | internal sealed class ReverseTextExecutor() : Executor<string, string>("...
    method HandleAsync (line 104) | public override async ValueTask<string> HandleAsync(string message, IW...

FILE: dotnet/samples/03-workflows/Observability/AspireDashboard/Program.cs
  class Program (line 24) | public static class Program
    method Main (line 29) | private static async Task Main()
  class UppercaseExecutor (line 79) | internal sealed class UppercaseExecutor() : Executor<string, string>("Up...
    method HandleAsync (line 89) | public override async ValueTask<string> HandleAsync(string message, IW...
  class ReverseTextExecutor (line 96) | internal sealed class ReverseTextExecutor() : Executor<string, string>("...
    method HandleAsync (line 106) | public override async ValueTask<string> HandleAsync(string message, IW...

FILE: dotnet/samples/03-workflows/Observability/WorkflowAsAnAgent/Program.cs
  class Program (line 44) | public static class Program
    method Main (line 49) | private static async Task Main()

FILE: dotnet/samples/03-workflows/Observability/WorkflowAsAnAgent/WorkflowHelper.cs
  class WorkflowHelper (line 9) | internal static partial class WorkflowHelper
    method GetWorkflow (line 17) | internal static Workflow GetWorkflow(IChatClient chatClient, string so...
    method GetLanguageAgent (line 40) | private static AIAgent GetLanguageAgent(string targetLanguage, IChatCl...
    class ConcurrentStartExecutor (line 53) | private sealed partial class ConcurrentStartExecutor() : Executor("Con...
      method RouteMessages (line 55) | [MessageHandler]
      method RouteTurnTokenAsync (line 61) | [MessageHandler]
    class ConcurrentAggregationExecutor (line 71) | [YieldsOutput(typeof(List<ChatMessage>))]
      method HandleAsync (line 83) | public override async ValueTask HandleAsync(List<ChatMessage> messag...

FILE: dotnet/samples/03-workflows/SharedStates/Program.cs
  class Program (line 17) | public static class Program
    method Main (line 19) | private static async Task Main()
  class FileContentStateConstants (line 49) | internal static class FileContentStateConstants
  class FileReadExecutor (line 54) | internal sealed class FileReadExecutor() : Executor<string, string>("Fil...
    method HandleAsync (line 56) | public override async ValueTask<string> HandleAsync(string message, IW...
  class FileStats (line 68) | internal sealed class FileStats
  class WordCountingExecutor (line 74) | internal sealed class WordCountingExecutor() : Executor<string, FileStat...
    method HandleAsync (line 76) | public override async ValueTask<FileStats> HandleAsync(string message,...
  class ParagraphCountingExecutor (line 88) | internal sealed class ParagraphCountingExecutor() : Executor<string, Fil...
    method HandleAsync (line 90) | public override async ValueTask<FileStats> HandleAsync(string message,...
  class AggregationExecutor (line 105) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 110) | public override async ValueTask HandleAsync(FileStats message, IWorkfl...

FILE: dotnet/samples/03-workflows/SharedStates/Resources.cs
  class Resources (line 8) | internal static class Resources
    method Read (line 12) | public static string Read(string fileName) => File.ReadAllText(Path.Co...

FILE: dotnet/samples/03-workflows/Visualization/Program.cs
  class Program (line 15) | internal static class Program
    method Main (line 21) | private static void Main(string[] args)

FILE: dotnet/samples/03-workflows/_StartHere/01_Streaming/Program.cs
  class Program (line 17) | public static class Program
    method Main (line 19) | private static async Task Main()
  class UppercaseExecutor (line 45) | internal sealed class UppercaseExecutor() : Executor<string, string>("Up...
    method HandleAsync (line 55) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class ReverseTextExecutor (line 62) | internal sealed class ReverseTextExecutor() : Executor<string, string>("...
    method HandleAsync (line 72) | public override ValueTask<string> HandleAsync(string message, IWorkflo...

FILE: dotnet/samples/03-workflows/_StartHere/02_AgentsInWorkflows/Program.cs
  class Program (line 26) | public static class Program
    method Main (line 28) | private static async Task Main()
    method GetTranslationAgent (line 68) | private static ChatClientAgent GetTranslationAgent(string targetLangua...

FILE: dotnet/samples/03-workflows/_StartHere/03_AgentWorkflowPatterns/Program.cs
  class Program (line 21) | public static class Program
    method Main (line 23) | private static async Task Main()
    method GetTranslationAgent (line 121) | private static ChatClientAgent GetTranslationAgent(string targetLangua...

FILE: dotnet/samples/03-workflows/_StartHere/05_SubWorkflows/Program.cs
  class Program (line 23) | public static class Program
    method Main (line 25) | private static async Task Main()
  class PrefixExecutor (line 96) | internal sealed class PrefixExecutor(string prefix) : Executor<string, s...
    method HandleAsync (line 98) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class UppercaseExecutor (line 109) | internal sealed class UppercaseExecutor() : Executor<string, string>("Up...
    method HandleAsync (line 111) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class ReverseExecutor (line 122) | internal sealed class ReverseExecutor() : Executor<string, string>("Reve...
    method HandleAsync (line 124) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class AppendSuffixExecutor (line 135) | internal sealed class AppendSuffixExecutor(string suffix) : Executor<str...
    method HandleAsync (line 137) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class PostProcessExecutor (line 148) | internal sealed class PostProcessExecutor() : Executor<string, string>("...
    method HandleAsync (line 150) | public override ValueTask<string> HandleAsync(string message, IWorkflo...

FILE: dotnet/samples/03-workflows/_StartHere/06_MixedWorkflowAgentsAndExecutors/Program.cs
  class Program (line 36) | public static class Program
    method Main (line 39) | private static async Task Main()
    method ExecuteWorkflowAsync (line 129) | private static async Task ExecuteWorkflowAsync(Workflow workflow, stri...
  class UserInputExecutor (line 171) | internal sealed class UserInputExecutor() : Executor<string, string>("Us...
    method HandleAsync (line 173) | public override async ValueTask<string> HandleAsync(string message, IW...
  class TextInverterExecutor (line 189) | internal sealed class TextInverterExecutor(string id) : Executor<string,...
    method HandleAsync (line 191) | public override ValueTask<string> HandleAsync(string message, IWorkflo...
  class StringToChatMessageExecutor (line 208) | [SendsMessage(typeof(ChatMessage))]
    method HandleAsync (line 212) | public override async ValueTask HandleAsync(string message, IWorkflowC...
  class JailbreakSyncExecutor (line 239) | [SendsMessage(typeof(ChatMessage))]
    method HandleAsync (line 243) | public override async ValueTask HandleAsync(List<ChatMessage> message,...
  class FinalOutputExecutor (line 298) | internal sealed class FinalOutputExecutor() : Executor<List<ChatMessage>...
    method HandleAsync (line 300) | public override ValueTask<string> HandleAsync(List<ChatMessage> messag...

FILE: dotnet/samples/03-workflows/_StartHere/07_WriterCriticWorkflow/Program.cs
  class Program (line 41) | public static class Program
    method Main (line 45) | private static async Task Main()
    method ExecuteWorkflowAsync (line 89) | private static async Task ExecuteWorkflowAsync(Workflow workflow, stri...
  class FlowState (line 130) | internal sealed class FlowState
  class FlowStateShared (line 139) | internal static class FlowStateShared
  class FlowStateHelpers (line 148) | internal static class FlowStateHelpers
    method ReadFlowStateAsync (line 150) | public static async Task<FlowState> ReadFlowStateAsync(IWorkflowContex...
    method SaveFlowStateAsync (line 156) | public static ValueTask SaveFlowStateAsync(IWorkflowContext context, F...
  class CriticDecision (line 168) | [Description("Critic's review decision including approval status and fee...
  class WriterExecutor (line 196) | internal sealed partial class WriterExecutor : Executor
    method WriterExecutor (line 200) | public WriterExecutor(IChatClient chatClient) : base("Writer")
    method HandleInitialRequestAsync (line 216) | [MessageHandler]
    method HandleRevisionRequestAsync (line 228) | [MessageHandler]
    method HandleAsyncCoreAsync (line 244) | private async Task<ChatMessage> HandleAsyncCoreAsync(
  class CriticExecutor (line 276) | internal sealed class CriticExecutor : Executor<ChatMessage, CriticDecis...
    method CriticExecutor (line 280) | public CriticExecutor(IChatClient chatClient) : base("Critic")
    method HandleAsync (line 303) | public override async ValueTask<CriticDecision> HandleAsync(
  class SummaryExecutor (line 369) | internal sealed class SummaryExecutor : Executor<CriticDecision, ChatMes...
    method SummaryExecutor (line 373) | public SummaryExecutor(IChatClient chatClient) : base("Summary")
    method HandleAsync (line 385) | public override async ValueTask<ChatMessage> HandleAsync(

FILE: dotnet/samples/04-hosting/A2A/A2AAgent_AsFunctionTools/Program.cs
  class FunctionNameSanitizer (line 80) | internal static partial class FunctionNameSanitizer
    method Sanitize (line 82) | public static string Sanitize(string name)
    method InvalidNameCharsRegex (line 87) | [GeneratedRegex("[^0-9A-Za-z]+")]

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/02_AgentOrchestration_Chaining/FunctionTriggers.cs
  class FunctionTriggers (line 14) | public static class FunctionTriggers
    type TextResponse (line 16) | public sealed record TextResponse(string Text);
    method RunOrchestrationAsync (line 18) | [Function(nameof(RunOrchestrationAsync))]
    method StartOrchestrationAsync (line 36) | [Function(nameof(StartOrchestrationAsync))]
    method GetOrchestrationStatusAsync (line 55) | [Function(nameof(GetOrchestrationStatusAsync))]
    method GetStatusQueryGetUri (line 85) | private static string GetStatusQueryGetUri(HttpRequestData req, string...

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/03_AgentOrchestration_Concurrency/FunctionTriggers.cs
  class FunctionsTriggers (line 14) | public static class FunctionsTriggers
    type TextResponse (line 16) | public sealed record TextResponse(string Text);
    method RunOrchestrationAsync (line 18) | [Function(nameof(RunOrchestrationAsync))]
    method StartOrchestrationAsync (line 49) | [Function(nameof(StartOrchestrationAsync))]
    method GetOrchestrationStatusAsync (line 79) | [Function(nameof(GetOrchestrationStatusAsync))]
    method GetStatusQueryGetUri (line 109) | private static string GetStatusQueryGetUri(HttpRequestData req, string...

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/04_AgentOrchestration_Conditionals/FunctionTriggers.cs
  class FunctionTriggers (line 14) | public static class FunctionTriggers
    method RunOrchestrationAsync (line 16) | [Function(nameof(RunOrchestrationAsync))]
    method HandleSpamEmail (line 63) | [Function(nameof(HandleSpamEmail))]
    method SendEmail (line 69) | [Function(nameof(SendEmail))]
    method StartOrchestrationAsync (line 76) | [Function(nameof(StartOrchestrationAsync))]
    method GetOrchestrationStatusAsync (line 106) | [Function(nameof(GetOrchestrationStatusAsync))]
    method GetStatusQueryGetUri (line 136) | private static string GetStatusQueryGetUri(HttpRequestData req, string...

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/04_AgentOrchestration_Conditionals/Models.cs
  class Email (line 10) | public sealed class Email
  class DetectionResult (line 22) | public sealed class DetectionResult
  class EmailResponse (line 34) | public sealed class EmailResponse

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/05_AgentOrchestration_HITL/FunctionTriggers.cs
  class FunctionTriggers (line 15) | public static class FunctionTriggers
    method RunOrchestrationAsync (line 17) | [Function(nameof(RunOrchestrationAsync))]
    method StartOrchestrationAsync (line 95) | [Function(nameof(StartOrchestrationAsync))]
    method SendHumanApprovalAsync (line 125) | [Function(nameof(SendHumanApprovalAsync))]
    method GetOrchestrationStatusAsync (line 154) | [Function(nameof(GetOrchestrationStatusAsync))]
    method NotifyUserForApproval (line 185) | [Function(nameof(NotifyUserForApproval))]
    method PublishContent (line 204) | [Function(nameof(PublishContent))]
    method GetStatusQueryGetUri (line 222) | private static string GetStatusQueryGetUri(HttpRequestData req, string...

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/05_AgentOrchestration_HITL/Models.cs
  class ContentGenerationInput (line 10) | public sealed class ContentGenerationInput
  class GeneratedContent (line 25) | public sealed class GeneratedContent
  class HumanApprovalResponse (line 37) | public sealed class HumanApprovalResponse

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/06_LongRunningTools/FunctionTriggers.cs
  class FunctionTriggers (line 11) | public static class FunctionTriggers
    method RunOrchestrationAsync (line 13) | [Function(nameof(RunOrchestrationAsync))]
    method NotifyUserForApproval (line 115) | [Function(nameof(NotifyUserForApproval))]
    method PublishContent (line 134) | [Function(nameof(PublishContent))]

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/06_LongRunningTools/Models.cs
  class ContentGenerationInput (line 10) | public sealed class ContentGenerationInput
  class GeneratedContent (line 25) | public sealed class GeneratedContent
  class HumanApprovalResponse (line 37) | public sealed class HumanApprovalResponse

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/06_LongRunningTools/Tools.cs
  class Tools (line 13) | internal sealed class Tools(ILogger<Tools> logger)
    method StartContentGenerationWorkflow (line 17) | [Description("Starts a content generation workflow and returns the ins...
    method GetWorkflowStatusAsync (line 43) | [Description("Gets the status of a workflow orchestration.")]
    method SubmitHumanApprovalAsync (line 76) | [Description("Raises a feedback event for the content generation workf...
    method SanitizeLogValue (line 89) | private static string SanitizeLogValue(string value) =>

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/08_ReliableStreaming/FunctionTriggers.cs
  class FunctionTriggers (line 34) | public sealed class FunctionTriggers
    method FunctionTriggers (line 44) | public FunctionTriggers(RedisStreamResponseHandler streamHandler, ILog...
    method CreateAsync (line 81) | [Function(nameof(CreateAsync))]
    method StreamAsync (line 144) | [Function(nameof(StreamAsync))]
    method StreamToClientAsync (line 181) | private async Task<IActionResult> StreamToClientAsync(
    method WriteChunkAsync (line 236) | private static async Task WriteChunkAsync(
    method WriteEndOfStreamAsync (line 257) | private static async Task WriteEndOfStreamAsync(
    method WriteErrorAsync (line 278) | private static async Task WriteErrorAsync(
    method WriteSSEEventAsync (line 299) | private static async Task WriteSSEEventAsync(
    method SanitizeLogValue (line 324) | private static string? SanitizeLogValue(string? value)

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/08_ReliableStreaming/RedisStreamResponseHandler.cs
  type StreamChunk (line 17) | public readonly record struct StreamChunk(string EntryId, string? Text, ...
  class RedisStreamResponseHandler (line 35) | public sealed class RedisStreamResponseHandler : IAgentResponseHandler
    method RedisStreamResponseHandler (line 48) | public RedisStreamResponseHandler(IConnectionMultiplexer redis, TimeSp...
    method OnStreamingResponseUpdateAsync (line 55) | public async ValueTask OnStreamingResponseUpdateAsync(
    method OnAgentResponseAsync (line 115) | public ValueTask OnAgentResponseAsync(AgentResponse message, Cancellat...
    method ReadStreamAsync (line 130) | public async IAsyncEnumerable<StreamChunk> ReadStreamAsync(
    method GetStreamKey (line 211) | internal static string GetStreamKey(string conversationId) => $"agent-...

FILE: dotnet/samples/04-hosting/DurableAgents/AzureFunctions/08_ReliableStreaming/Tools.cs
  class TravelTools (line 11) | internal static class TravelTools
    method GetWeatherForecast (line 20) | [Description("Gets the weather forecast for a destination on a specifi...
    method GetLocalEvents (line 72) | [Description("Gets local events and activities happening at a destinat...
    method GetWeatherRecommendation (line 143) | private static string GetWeatherRecommendation(string condition)

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/02_AgentOrchestration_Chaining/Models.cs
  type TextResponse (line 6) | public sealed record TextResponse(string Text);

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/03_AgentOrchestration_Concurrency/Models.cs
  type TextResponse (line 6) | public sealed record TextResponse(string Text);

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/04_AgentOrchestration_Conditionals/Models.cs
  class Email (line 10) | public sealed class Email
  class DetectionResult (line 22) | public sealed class DetectionResult
  class EmailResponse (line 34) | public sealed class EmailResponse

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/05_AgentOrchestration_HITL/Models.cs
  class ContentGenerationInput (line 10) | public sealed class ContentGenerationInput
  class GeneratedContent (line 25) | public sealed class GeneratedContent
  class HumanApprovalResponse (line 37) | public sealed class HumanApprovalResponse

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/06_LongRunningTools/Models.cs
  class ContentGenerationInput (line 10) | public sealed class ContentGenerationInput
  class GeneratedContent (line 25) | public sealed class GeneratedContent
  class HumanFeedbackResponse (line 37) | public sealed class HumanFeedbackResponse

FILE: dotnet/samples/04-hosting/DurableAgents/ConsoleApps/07_ReliableStreaming/RedisStreamResponseHandler.cs
  type StreamChunk (line 17) | public readonly record struct StreamChunk(string EntryId, string? Text, ...
  class RedisStreamResponseHandler (line 35) | public sealed class RedisStreamResponseHandler : IAgentResponseHandler
    method RedisStreamResponseHandler (line 48) | public RedisStreamResponseHandler(IConnectionMultiplexer redis, TimeSp...
    method OnStreamingResponseUpdateAsync (line 55) | public async ValueTask OnStreamingResponseUpdateAsync(
    method OnAgentResponseAsync (line 116) | public ValueTask OnAgentResponseAsync(AgentResponse message, Cancellat...
    method ReadStreamAsync (line 131) | public async IAsyncEnumerable<StreamChunk> ReadStreamAsync(
    method GetStreamKey (line 215) | internal static string GetStreamKey(string conversationId) => $"agent-...

FILE: dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/01_SequentialWorkflow/OrderCancelExecutors.cs
  class OrderLookup (line 10) | internal sealed class OrderLookup() : Executor<string, Order>("OrderLook...
    method HandleAsync (line 12) | public override async ValueTask<Order> HandleAsync(
  class OrderCancel (line 44) | internal sealed class OrderCancel() : Executor<Order, Order>("OrderCancel")
    method HandleAsync (line 46) | public override async ValueTask<Order> HandleAsync(
  class SendEmail (line 80) | internal sealed class SendEmail() : Executor<Order, string>("SendEmail")
    method HandleAsync (line 82) | public override ValueTask<string> HandleAsync(
  type Order (line 104) | internal sealed record Order(string Id, DateTime OrderDate, bool IsCance...
  type Customer (line 106) | internal sealed record Customer(string Name, string Email);
  type BatchCancelRequest (line 113) | internal sealed record BatchCancelRequest(string[] OrderIds, string Reas...
  type BatchCancelResult (line 119) | internal sealed record BatchCancelResult(int TotalOrders, int CancelledC...
  class StatusReport (line 124) | internal sealed class StatusReport() : Executor<Order, string>("StatusRe...
    method HandleAsync (line 126) | public override ValueTask<string> HandleAsync(
  class BatchCancelProcessor (line 153) | internal sealed class BatchCancelProcessor() : Executor<BatchCancelReque...
    method HandleAsync (line 155) | public override async ValueTask<BatchCancelResult> HandleAsync(
  class BatchCancelSummary (line 193) | internal sealed class BatchCancelSummary() : Executor<BatchCancelResult,...
    method HandleAsync (line 195) | public override ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/02_ConcurrentWorkflow/ExpertExecutors.cs
  class ParseQuestionExecutor (line 10) | internal sealed class ParseQuestionExecutor() : Executor<string, string>...
    method HandleAsync (line 12) | public override ValueTask<string> HandleAsync(
  class AggregatorExecutor (line 41) | internal sealed class AggregatorExecutor() : Executor<string[], string>(...
    method HandleAsync (line 43) | public override ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/03_WorkflowHITL/Executors.cs
  type ApprovalRequest (line 8) | public record ApprovalRequest(string ExpenseId, decimal Amount, string E...
  type ApprovalResponse (line 11) | public record ApprovalResponse(bool Approved, string? Comments);
  class CreateApprovalRequest (line 14) | internal sealed class CreateApprovalRequest() : Executor<string, Approva...
    method HandleAsync (line 16) | public override ValueTask<ApprovalRequest> HandleAsync(
  class PrepareFinanceReview (line 27) | internal sealed class PrepareFinanceReview() : Executor<ApprovalResponse...
    method HandleAsync (line 29) | public override ValueTask<ApprovalRequest> HandleAsync(
  class ExpenseReimburse (line 45) | internal sealed class ExpenseReimburse() : Executor<ApprovalResponse[], ...
    method HandleAsync (line 47) | public override async ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/01_SequentialWorkflow/OrderCancelExecutors.cs
  type OrderCancelRequest (line 12) | internal sealed record OrderCancelRequest(string OrderId, string Reason);
  class OrderLookup (line 17) | internal sealed class OrderLookup() : Executor<OrderCancelRequest, Order...
    method HandleAsync (line 19) | public override async ValueTask<Order> HandleAsync(
  class OrderCancel (line 53) | internal sealed class OrderCancel() : Executor<Order, Order>("OrderCancel")
    method HandleAsync (line 55) | public override async ValueTask<Order> HandleAsync(
  class SendEmail (line 90) | internal sealed class SendEmail() : Executor<Order, string>("SendEmail")
    method HandleAsync (line 92) | public override ValueTask<string> HandleAsync(
  type Order (line 114) | internal sealed record Order(string Id, DateTime OrderDate, bool IsCance...
  type Customer (line 116) | internal sealed record Customer(string Name, string Email);

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/02_ConcurrentWorkflow/ExpertExecutors.cs
  class ParseQuestionExecutor (line 10) | internal sealed class ParseQuestionExecutor() : Executor<string, string>...
    method HandleAsync (line 12) | public override ValueTask<string> HandleAsync(
  class AggregatorExecutor (line 41) | internal sealed class AggregatorExecutor() : Executor<string[], string>(...
    method HandleAsync (line 43) | public override ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/03_ConditionalEdges/NotifyFraud.cs
  class Order (line 7) | internal sealed class Order
    method Order (line 9) | public Order(string id, decimal amount)
  type Customer (line 20) | public sealed record Customer(int Id, string Name, bool IsBlocked);
  class OrderIdParser (line 22) | internal sealed class OrderIdParser() : Executor<string, Order>("OrderId...
    method HandleAsync (line 24) | public override async ValueTask<Order> HandleAsync(string message, IWo...
    method GetOrder (line 29) | private static Order GetOrder(string id)
  class OrderEnrich (line 36) | internal sealed class OrderEnrich() : Executor<Order, Order>("EnrichOrder")
    method HandleAsync (line 38) | public override async ValueTask<Order> HandleAsync(Order message, IWor...
    method GetCustomerForOrder (line 44) | private static Customer GetCustomerForOrder(string orderId)
  class PaymentProcessor (line 55) | internal sealed class PaymentProcessor() : Executor<Order, Order>("Payme...
    method HandleAsync (line 57) | public override async ValueTask<Order> HandleAsync(Order message, IWor...
  class NotifyFraud (line 65) | internal sealed class NotifyFraud() : Executor<Order, string>("NotifyFra...
    method HandleAsync (line 67) | public override async ValueTask<string> HandleAsync(Order message, IWo...
  class OrderRouteConditions (line 74) | internal static class OrderRouteConditions
    method WhenBlocked (line 79) | internal static Func<Order?, bool> WhenBlocked() => order => order?.Cu...
    method WhenNotBlocked (line 84) | internal static Func<Order?, bool> WhenNotBlocked() => order => order?...

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/04_WorkflowAndAgents/ParseQuestionExecutor.cs
  class ParseQuestionExecutor (line 10) | internal sealed class ParseQuestionExecutor() : Executor<string, string>...
    method HandleAsync (line 12) | public override ValueTask<string> HandleAsync(
  class ResponseAggregatorExecutor (line 41) | internal sealed class ResponseAggregatorExecutor() : Executor<string[], ...
    method HandleAsync (line 43) | public override ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/05_WorkflowEvents/Executors.cs
  class OrderLookupStartedEvent (line 11) | internal sealed class OrderLookupStartedEvent(string orderId) : Workflow...
  class OrderFoundEvent (line 16) | internal sealed class OrderFoundEvent(string customerName) : WorkflowEve...
  class CancellationProgressEvent (line 21) | internal sealed class CancellationProgressEvent(int percentComplete, str...
  class EmailSentEvent (line 27) | internal sealed class OrderCancelledEvent() : WorkflowEvent("Order cance...
  type Order (line 38) | internal sealed record Order(string Id, DateTime OrderDate, bool IsCance...
  type Customer (line 40) | internal sealed record Customer(string Name, string Email);
  class OrderLookup (line 49) | internal sealed class OrderLookup() : Executor<string, Order>("OrderLook...
    method HandleAsync (line 51) | public override async ValueTask<Order> HandleAsync(
  class OrderCancel (line 80) | internal sealed class OrderCancel() : Executor<Order, Order>("OrderCancel")
    method HandleAsync (line 82) | public override async ValueTask<Order> HandleAsync(
  class SendEmail (line 111) | internal sealed class SendEmail() : Executor<Order, string>("SendEmail")
    method HandleAsync (line 113) | public override async ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/06_WorkflowSharedState/Executors.cs
  type OrderDetails (line 14) | internal sealed record OrderDetails(string OrderId, string CustomerName,...
  type AuditEntry (line 21) | internal sealed record AuditEntry(string Step, string Timestamp, string ...
  class ValidateOrder (line 34) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 37) | public override async ValueTask<OrderDetails> HandleAsync(
  class EnrichOrder (line 77) | [YieldsOutput(typeof(string))]
    method HandleAsync (line 80) | public override async ValueTask<OrderDetails> HandleAsync(
  class ProcessPayment (line 120) | internal sealed class ProcessPayment() : Executor<OrderDetails, string>(...
    method HandleAsync (line 122) | public override async ValueTask<string> HandleAsync(
  class GenerateInvoice (line 153) | internal sealed class GenerateInvoice() : Executor<string, string>("Gene...
    method HandleAsync (line 155) | public override async ValueTask<string> HandleAsync(

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/07_SubWorkflows/Executors.cs
  class FraudRiskAssessedEvent (line 10) | internal sealed class FraudRiskAssessedEvent(int riskScore) : WorkflowEv...
  class OrderInfo (line 18) | internal sealed class OrderInfo
  class OrderReceived (line 36) | internal sealed class OrderReceived() : Executor<string, OrderInfo>("Ord...
    method HandleAsync (line 38) | public override ValueTask<OrderInfo> HandleAsync(string message, IWork...
  class OrderCompleted (line 58) | internal sealed class OrderCompleted() : Executor<OrderInfo, string>("Or...
    method HandleAsync (line 60) | public override ValueTask<string> HandleAsync(OrderInfo message, IWork...
  class ValidatePayment (line 80) | internal sealed class ValidatePayment() : Executor<OrderInfo, OrderInfo>...
    method HandleAsync (line 82) | public override async ValueTask<OrderInfo> HandleAsync(OrderInfo messa...
  class ChargePayment (line 102) | internal sealed class ChargePayment() : Executor<OrderInfo, OrderInfo>("...
    method HandleAsync (line 104) | public override async ValueTask<OrderInfo> HandleAsync(OrderInfo messa...
  class AnalyzePatterns (line 127) | internal sealed class AnalyzePatterns() : Executor<OrderInfo, OrderInfo>...
    method HandleAsync (line 129) | public override async ValueTask<OrderInfo> HandleAsync(OrderInfo messa...
  class CalculateRiskScore (line 152) | internal sealed class CalculateRiskScore() : Executor<OrderInfo, OrderIn...
    method HandleAsync (line 154) | public override async ValueTask<OrderInfo> HandleAsync(OrderInfo messa...
  class SelectCarrier (line 188) | internal sealed class SelectCarrier() : Executor<OrderInfo>("SelectCarri...
    method HandleAsync (line 190) | public override async ValueTask HandleAsync(OrderInfo message, IWorkfl...
  class CreateShipment (line 214) | internal sealed class CreateShipment() : Executor<OrderInfo, OrderInfo>(...
    method HandleAsync (line 216) | public override async ValueTask<OrderInfo> HandleAsync(OrderInfo messa...

FILE: dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/08_WorkflowHITL/Executors.cs
  type ApprovalRequest (line 13) | public record ApprovalRequest(string ExpenseId, decimal Amount, string E...
  type ApprovalResponse (line 20) | public record ApprovalResponse(bool Approved, string? Comments);
  class CreateApprovalRequest (line 25) | internal sealed class CreateApprovalRequest() : Executor<string, Approva...
    method HandleAsync (line 28) | public override ValueTask<ApprovalRequest> HandleAsync(
  class PrepareFinanceReview (line 41) | internal sealed class PrepareFinanceReview() : Executor<ApprovalResponse...
    method HandleAsync (line 44) | public override ValueTask<ApprovalRequest> HandleAsync(
  class ExpenseReimburse (line 62) | internal sealed class ExpenseReimburse() : Executor<ApprovalResponse[], ...
    method HandleAsync (line 65) | public override async ValueTask<string> HandleAsync(

FILE: dotnet/samples/05-end-to-end/A2AClientServer/A2AClient/HostClientAgent.cs
  class HostClientAgent (line 11) | internal sealed class HostClientAgent
    method HostClientAgent (line 13) | internal HostClientAgent(ILoggerFactory loggerFactory)
    method InitializeAgentAsync (line 18) | internal async Task InitializeAgentAsync(string modelId, string apiKey...
    method CreateAgentAsync (line 49) | private static async Task<AIAgent> CreateAgentAsync(string agentUri)

FILE: dotnet/samples/05-end-to-end/A2AClientServer/A2AClient/Program.cs
  class Program (line 11) | public static class Program
    method Main (line 13) | public static async Task<int> Main(string[] args)
    method HandleCommandsAsync (line 23) | private static async Task HandleCommandsAsync(CancellationToken cancel...

FILE: dotnet/samples/05-end-to-end/A2AClientServer/A2AServer/HostAgentFactory.cs
  class HostAgentFactory (line 13) | internal static class HostAgentFactory
    method CreateFoundryHostAgentAsync (line 15) | internal static async Task<(AIAgent, AgentCard)> CreateFoundryHostAgen...
    method CreateChatCompletionHostAgentAsync (line 36) | internal static async Task<(AIAgent, AgentCard)> CreateChatCompletionH...
    method GetInvoiceAgentCard (line 54) | private static AgentCard GetInvoiceAgentCard()
    method GetPolicyAgentCard (line 86) | private static AgentCard GetPolicyAgentCard()
    method GetLogisticsAgentCard (line 118) | private static AgentCard GetLogisticsAgentCard()

FILE: dotnet/samples/05-end-to-end/A2AClientServer/A2AServer/Models/InvoiceQuery.cs
  class Product (line 10) | public class Product
    method Product (line 16) | public Product(string name, int quantity, decimal price)
    method TotalPrice (line 23) | public decimal TotalPrice() => this.Quantity * this.Price;
  class Invoice (line 26) | public class Invoice
    method Invoice (line 34) | public Invoice(string transactionId, string invoiceId, string companyN...
    method TotalInvoicePrice (line 43) | public decimal TotalInvoicePrice() => this.Products.Sum(product => pro...
  class InvoiceQuery (line 46) | public class InvoiceQuery
    method InvoiceQuery (line 50) | public InvoiceQuery()
    method GetRandomDateWithinLastTwoMonths (line 118) | public static DateTime GetRandomDateWithinLastTwoMonths()
    method QueryInvoices (line 134) | [Description("Retrieves invoices for the specified company and optiona...
    method QueryByTransactionId (line 152) | [Description("Retrieves invoice using the transaction id")]
    method QueryByInvoiceId (line 160) | [Description("Retrieves invoice using the invoice id")]

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIClient/Program.cs
  class Program (line 18) | public static class Program
    method Main (line 20) | public static async Task<int> Main(string[] args)
    method HandleCommandsAsync (line 30) | private static async Task HandleCommandsAsync(CancellationToken cancel...
    method PrintArguments (line 198) | private static string PrintArguments(IDictionary<string, object?>? arg...

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIClient/SensorRequest.cs
  class SensorRequest (line 8) | internal sealed class SensorRequest

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIClient/SensorResponse.cs
  class SensorResponse (line 8) | internal sealed class SensorResponse

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/AgenticPlanningTools.cs
  class AgenticPlanningTools (line 7) | internal static class AgenticPlanningTools
    method CreatePlan (line 9) | [Description("Create a plan with multiple steps.")]
    method UpdatePlanStepAsync (line 18) | [Description("Update a step in the plan with new description or status...

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/AgenticUIAgent.cs
  class AgenticUIAgent (line 11) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal cl...
    method AgenticUIAgent (line 16) | public AgenticUIAgent(AIAgent innerAgent, JsonSerializerOptions jsonSe...
    method RunCoreAsync (line 22) | protected override Task<AgentResponse> RunCoreAsync(IEnumerable<ChatMe...
    method RunCoreStreamingAsync (line 27) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/JsonPatchOperation.cs
  class JsonPatchOperation (line 7) | internal sealed class JsonPatchOperation

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/Plan.cs
  class Plan (line 7) | internal sealed class Plan

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/Step.cs
  class Step (line 7) | internal sealed class Step

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/AgenticUI/StepStatus.cs
  type StepStatus (line 7) | [JsonConverter(typeof(JsonStringEnumConverter<StepStatus>))]

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/BackendToolRendering/WeatherInfo.cs
  class WeatherInfo (line 7) | internal sealed class WeatherInfo

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/ChatClientAgentFactory.cs
  class ChatClientAgentFactory (line 17) | internal static class ChatClientAgentFactory
    method Initialize (line 22) | public static void Initialize(IConfiguration configuration)
    method CreateAgenticChat (line 35) | public static ChatClientAgent CreateAgenticChat()
    method CreateBackendToolRendering (line 44) | public static ChatClientAgent CreateBackendToolRendering()
    method CreateHumanInTheLoop (line 58) | public static ChatClientAgent CreateHumanInTheLoop()
    method CreateToolBasedGenerativeUI (line 67) | public static ChatClientAgent CreateToolBasedGenerativeUI()
    method CreateAgenticUI (line 76) | public static AIAgent CreateAgenticUI(JsonSerializerOptions options)
    method CreateSharedState (line 118) | public static AIAgent CreateSharedState(JsonSerializerOptions options)
    method CreatePredictiveStateUpdates (line 129) | public static AIAgent CreatePredictiveStateUpdates(JsonSerializerOptio...
    method GetWeather (line 167) | [Description("Get the weather for a given location.")]
    method WriteDocument (line 177) | [Description("Write a document in markdown format.")]

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/PredictiveStateUpdates/DocumentState.cs
  class DocumentState (line 7) | internal sealed class DocumentState

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/PredictiveStateUpdates/PredictiveStateUpdatesAgent.cs
  class PredictiveStateUpdatesAgent (line 11) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal cl...
    method PredictiveStateUpdatesAgent (line 17) | public PredictiveStateUpdatesAgent(AIAgent innerAgent, JsonSerializerO...
    method RunCoreAsync (line 23) | protected override Task<AgentResponse> RunCoreAsync(IEnumerable<ChatMe...
    method RunCoreStreamingAsync (line 28) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/SharedState/Ingredient.cs
  class Ingredient (line 7) | internal sealed class Ingredient

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/SharedState/Recipe.cs
  class Recipe (line 7) | internal sealed class Recipe

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/SharedState/RecipeResponse.cs
  class RecipeResponse (line 8) | internal sealed class RecipeResponse

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIDojoServer/SharedState/SharedStateAgent.cs
  class SharedStateAgent (line 11) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal cl...
    method SharedStateAgent (line 16) | public SharedStateAgent(AIAgent innerAgent, JsonSerializerOptions json...
    method RunCoreAsync (line 22) | protected override Task<AgentResponse> RunCoreAsync(IEnumerable<ChatMe...
    method RunCoreStreamingAsync (line 27) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method TryDeserialize (line 107) | private static bool TryDeserialize<T>(string json, JsonSerializerOptio...

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIServer/ServerWeatherForecastRequest.cs
  class ServerWeatherForecastRequest (line 5) | internal sealed class ServerWeatherForecastRequest

FILE: dotnet/samples/05-end-to-end/AGUIClientServer/AGUIServer/ServerWeatherForecastResponse.cs
  class ServerWeatherForecastResponse (line 5) | internal sealed class ServerWeatherForecastResponse

FILE: dotnet/samples/05-end-to-end/AGUIWebChat/Client/Components/Pages/Chat/ChatInput.razor.js
  function init (line 1) | function init(elem) {
  function resizeToFit (line 18) | function resizeToFit(elem) {
  function afterPropertyWritten (line 26) | function afterPropertyWritten(target, propName, callback) {
  function getPropertyDescriptor (line 40) | function getPropertyDescriptor(target, propertyName) {

FILE: dotnet/samples/05-end-to-end/AGUIWebChat/Client/Components/Pages/Chat/ChatMessageList.razor.js
  method connectedCallback (line 7) | connectedCallback() {
  method disconnectedCallback (line 12) | disconnectedCallback() {
  method _scheduleAutoScroll (line 16) | _scheduleAutoScroll(mutations) {
  method _elemIsNearScrollBoundary (line 29) | _elemIsNearScrollBoundary(elem, threshold) {

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.AgentHost/ActorFrameworkWebApplicationExtensions.cs
  class ActorFrameworkWebApplicationExtensions (line 9) | internal static class ActorFrameworkWebApplicationExtensions
    method MapAgentDiscovery (line 11) | public static void MapAgentDiscovery(this IEndpointRouteBuilder endpoi...
    class AgentDiscoveryCard (line 33) | internal sealed class AgentDiscoveryCard

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.AgentHost/Custom/CustomAITools.cs
  class CustomFunctionTool (line 7) | public class CustomAITool : AITool;
    method InvokeCoreAsync (line 11) | protected override ValueTask<object?> InvokeCoreAsync(AIFunctionArgume...

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientConnectionInfo.cs
  class ChatClientConnectionInfo (line 8) | public class ChatClientConnectionInfo
    method TryParse (line 18) | public static bool TryParse(string? connectionString, [NotNullWhen(tru...
  type ClientChatProvider (line 73) | public enum ClientChatProvider

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.AgentHost/Utilities/ChatClientExtensions.cs
  class ChatClientExtensions (line 9) | public static class ChatClientExtensions
    method AddChatClient (line 11) | public static ChatClientBuilder AddChatClient(this IHostApplicationBui...
    method AddOpenAIClient (line 36) | private static ChatClientBuilder AddOpenAIClient(this IHostApplication...
    method AddOllamaClient (line 44) | private static ChatClientBuilder AddOllamaClient(this IHostApplication...
    method AddKeyedChatClient (line 59) | public static ChatClientBuilder AddKeyedChatClient(this IHostApplicati...
    method AddKeyedOpenAIClient (line 84) | private static ChatClientBuilder AddKeyedOpenAIClient(this IHostApplic...
    method AddKeyedOllamaClient (line 92) | private static ChatClientBuilder AddKeyedOllamaClient(this IHostApplic...

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.AppHost/ModelExtensions.cs
  class ModelExtensions (line 5) | public static class ModelExtensions
    method AddAIModel (line 7) | public static IResourceBuilder<AIModel> AddAIModel(this IDistributedAp...
    method RunAsOpenAI (line 13) | public static IResourceBuilder<AIModel> RunAsOpenAI(this IResourceBuil...
    method PublishAsOpenAI (line 23) | public static IResourceBuilder<AIModel> PublishAsOpenAI(this IResource...
    method RunAsAzureOpenAI (line 33) | public static IResourceBuilder<AIModel> RunAsAzureOpenAI(this IResourc...
    method PublishAsAzureOpenAI (line 43) | public static IResourceBuilder<AIModel> PublishAsAzureOpenAI(this IRes...
    method AsAzureOpenAI (line 53) | public static IResourceBuilder<AIModel> AsAzureOpenAI(this IResourceBu...
    method RunAsAzureAIInference (line 68) | public static IResourceBuilder<AIModel> RunAsAzureAIInference(this IRe...
    method PublishAsAzureAIInference (line 78) | public static IResourceBuilder<AIModel> PublishAsAzureAIInference(this...
    method AsAzureAIInference (line 88) | public static IResourceBuilder<AIModel> AsAzureAIInference(this IResou...
    method RunAsAzureAIInference (line 128) | public static IResourceBuilder<AIModel> RunAsAzureAIInference(this IRe...
    method PublishAsAzureAIInference (line 138) | public static IResourceBuilder<AIModel> PublishAsAzureAIInference(this...
    method AsAzureAIInference (line 148) | public static IResourceBuilder<AIModel> AsAzureAIInference(this IResou...
    method AsOpenAI (line 188) | public static IResourceBuilder<AIModel> AsOpenAI(this IResourceBuilder...
    method Reset (line 227) | private static void Reset(this IResourceBuilder<AIModel> builder)
  class AIModel (line 246) | public class AIModel(string name) : Resource(name), IResourceWithConnect...
    method Build (line 255) | public ReferenceExpression Build()

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.ServiceDefaults/ServiceDefaultsExtensions.cs
  class ServiceDefaultsExtensions (line 17) | public static class ServiceDefaultsExtensions
    method AddServiceDefaults (line 19) | public static TBuilder AddServiceDefaults<TBuilder>(this TBuilder buil...
    method ConfigureOpenTelemetry (line 46) | public static TBuilder ConfigureOpenTelemetry<TBuilder>(this TBuilder ...
    method AddOpenTelemetryExporters (line 78) | private static TBuilder AddOpenTelemetryExporters<TBuilder>(this TBuil...
    method AddDefaultHealthChecks (line 97) | public static TBuilder AddDefaultHealthChecks<TBuilder>(this TBuilder ...
    method MapDefaultEndpoints (line 106) | public static WebApplication MapDefaultEndpoints(this WebApplication app)

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.Web/A2AAgentClient.cs
  class A2AAgentClient (line 13) | internal sealed class A2AAgentClient : AgentClientBase
    method A2AAgentClient (line 22) | public A2AAgentClient(ILogger logger, Uri baseUri)
    method RunStreamingAsync (line 28) | public override async IAsyncEnumerable<AgentResponseUpdate> RunStreami...
    method GetAgentCardAsync (line 125) | public override async Task<AgentCard?> GetAgentCardAsync(string agentN...
    method ResolveClient (line 141) | private (A2AClient, A2ACardResolver) ResolveClient(string agentName) =>
    method ConvertMetadataToAdditionalProperties (line 154) | private static AdditionalPropertiesDictionary? ConvertMetadataToAdditi...

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.Web/AgentDiscoveryClient.cs
  class AgentDiscoveryClient (line 8) | public class AgentDiscoveryClient(HttpClient httpClient, ILogger<AgentDi...
    method GetAgentsAsync (line 10) | public async Task<List<AgentDiscoveryCard>> GetAgentsAsync(Cancellatio...
    class AgentDiscoveryCard (line 22) | public class AgentDiscoveryCard

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.Web/IAgentClient.cs
  class AgentClientBase (line 12) | internal abstract class AgentClientBase
    method RunStreamingAsync (line 22) | public abstract IAsyncEnumerable<AgentResponseUpdate> RunStreamingAsync(
    method GetAgentCardAsync (line 34) | public virtual Task<AgentCard?> GetAgentCardAsync(string agentName, Ca...

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.Web/OpenAIChatCompletionsAgentClient.cs
  class OpenAIChatCompletionsAgentClient (line 17) | internal sealed class OpenAIChatCompletionsAgentClient(HttpClient httpCl...
    method RunStreamingAsync (line 19) | public override async IAsyncEnumerable<AgentResponseUpdate> RunStreami...

FILE: dotnet/samples/05-end-to-end/AgentWebChat/AgentWebChat.Web/OpenAIResponsesAgentClient.cs
  class OpenAIResponsesAgentClient (line 16) | internal sealed class OpenAIResponsesAgentClient(HttpClient httpClient) ...
    method RunStreamingAsync (line 18) | public override async IAsyncEnumerable<AgentResponseUpdate> RunStreami...

FILE: dotnet/samples/05-end-to-end/AspNetAgentAuthorization/RazorWebClient/Pages/Chat.cshtml.cs
  class ChatModel (line 12) | public class ChatModel : PageModel
    method ChatModel (line 16) | public ChatModel(IHttpClientFactory httpClientFactory)
    method OnGet (line 28) | public void OnGet()
    method OnPostAsync (line 32) | public async Task OnPostAsync()

FILE: dotnet/samples/05-end-to-end/AspNetAgentAuthorization/RazorWebClient/Pages/Index.cshtml.cs
  class IndexModel (line 11) | public class IndexModel : PageModel
    method OnGet (line 13) | public void OnGet()
    method OnGetLogout (line 17) | public IActionResult OnGetLogout()

FILE: dotnet/samples/05-end-to-end/AspNetAgentAuthorization/Service/ExpenseService.cs
  class Expense (line 11) | public sealed class Expense
  class ExpenseService (line 31) | public sealed class ExpenseService
    method ExpenseService (line 48) | public ExpenseService(IUserContext userContext)
    method ListPendingExpenses (line 56) | [Description("Lists all pending expenses awaiting approval. Requires t...
    method ApproveExpense (line 81) | [Description("Approves a pending expense by its ID. Requires the expen...

FILE: dotnet/samples/05-end-to-end/AspNetAgentAuthorization/Service/Program.cs
  type ChatRequest (line 125) | internal sealed record ChatRequest(string Message);
  type ChatResponse (line 126) | internal sealed record ChatResponse(string Reply, string User);

FILE: dotnet/samples/05-end-to-end/AspNetAgentAuthorization/Service/UserContext.cs
  type IUserContext (line 10) | public interface IUserContext
  class KeycloakUserContext (line 33) | public sealed class KeycloakUserContext : IUserContext
    method KeycloakUserContext (line 39) | public KeycloakUserContext(IHttpContextAccessor httpContextAccessor)
    method GetOrCreateCachedInfo (line 52) | private CachedUserInfo GetOrCreateCachedInfo()
    method ParseClaims (line 70) | private static CachedUserInfo ParseClaims(ClaimsPrincipal? user)
    type CachedUserInfo (line 98) | private sealed record CachedUserInfo(string UserId, string UserName, s...

FILE: dotnet/samples/05-end-to-end/HostedAgents/AgentWithLocalTools/Program.cs
  type Hotel (line 132) | internal sealed record Hotel(string Name, int PricePerNight, double Rati...

FILE: dotnet/samples/05-end-to-end/HostedAgents/FoundrySingleAgent/Program.cs
  type Hotel (line 130) | internal sealed record Hotel(string Name, int PricePerNight, double Rati...

FILE: dotnet/samples/05-end-to-end/M365Agent/AFAgentApplication.cs
  class AFAgentApplication (line 19) | internal sealed class AFAgentApplication : AgentApplication
    method AFAgentApplication (line 24) | public AFAgentApplication(AIAgent agent, AgentApplicationOptions optio...
    method MessageActivityAsync (line 36) | private async Task MessageActivityAsync(ITurnContext turnContext, ITur...
    method WelcomeMessageAsync (line 93) | private async Task WelcomeMessageAsync(ITurnContext turnContext, ITurn...
    method HandleUserInput (line 115) | private static ChatMessage HandleUserInput(ITurnContext turnContext)
    method HandleUserInputRequests (line 139) | private static void HandleUserInputRequests(AgentResponse response, re...

FILE: dotnet/samples/05-end-to-end/M365Agent/Agents/AdaptiveCardAIContent.cs
  class AdaptiveCardAIContent (line 13) | internal sealed class AdaptiveCardAIContent : AIContent
    method AdaptiveCardAIContent (line 15) | public AdaptiveCardAIContent(AdaptiveCard adaptiveCard)
    method AdaptiveCardAIContent (line 21) | [JsonConstructor]

FILE: dotnet/samples/05-end-to-end/M365Agent/Agents/WeatherForecastAgent.cs
  class WeatherForecastAgent (line 15) | public class WeatherForecastAgent : DelegatingAIAgent
    method WeatherForecastAgent (line 30) | public WeatherForecastAgent(IChatClient chatClient)
    method RunCoreAsync (line 51) | protected override async Task<AgentResponse> RunCoreAsync(IEnumerable<...
    method GetWeather (line 84) | [Description("Get the weather for a given location.")]
    method CreateWeatherCard (line 91) | private static AdaptiveCard CreateWeatherCard(string? location, string...
    method TryDeserialize (line 116) | private static bool TryDeserialize<T>(string json, JsonSerializerOptio...

FILE: dotnet/samples/05-end-to-end/M365Agent/Agents/WeatherForecastAgentResponse.cs
  class WeatherForecastAgentResponse (line 11) | internal sealed class WeatherForecastAgentResponse

FILE: dotnet/samples/05-end-to-end/M365Agent/Agents/WeatherForecastAgentResponseContentType.cs
  type WeatherForecastAgentResponseContentType (line 10) | internal enum WeatherForecastAgentResponseContentType

FILE: dotnet/samples/05-end-to-end/M365Agent/Auth/AspNetExtensions.cs
  class AspNetExtensions (line 19) | internal static class AspNetExtensions
    method AddAgentAspNetAuthentication (line 64) | public static void AddAgentAspNetAuthentication(this IServiceCollectio...
    method AddAgentAspNetAuthentication (line 81) | public static void AddAgentAspNetAuthentication(this IServiceCollectio...

FILE: dotnet/samples/05-end-to-end/M365Agent/Auth/TokenValidationOptions.cs
  class TokenValidationOptions (line 7) | internal sealed class TokenValidationOptions

FILE: dotnet/samples/05-end-to-end/M365Agent/JsonUtilities.cs
  class JsonUtilities (line 14) | internal static partial class JsonUtilities
    method CreateDefaultOptions (line 39) | [UnconditionalSuppressMessage("ReflectionAnalysis", "IL3050:RequiresDy...

FILE: dotnet/src/LegacySupport/CallerAttributes/CallerArgumentExpressionAttribute.cs
  class CallerArgumentExpressionAttribute (line 10) | [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inher...
    method CallerArgumentExpressionAttribute (line 18) | public CallerArgumentExpressionAttribute(string parameterName)

FILE: dotnet/src/LegacySupport/CompilerFeatureRequiredAttribute/CompilerFeatureRequiredAttribute.cs
  class CompilerFeatureRequiredAttribute (line 10) | [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = ...
    method CompilerFeatureRequiredAttribute (line 13) | public CompilerFeatureRequiredAttribute(string featureName)

FILE: dotnet/src/LegacySupport/DiagnosticAttributes/NullableAttributes.cs
  class AllowNullAttribute (line 9) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | At...
  class DisallowNullAttribute (line 16) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | At...
  class MaybeNullAttribute (line 23) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | At...
  class NotNullAttribute (line 30) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | At...
  class MaybeNullWhenAttribute (line 37) | [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    method MaybeNullWhenAttribute (line 45) | public MaybeNullWhenAttribute(bool returnValue) => this.ReturnValue = ...
  class NotNullWhenAttribute (line 52) | [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    method NotNullWhenAttribute (line 60) | public NotNullWhenAttribute(bool returnValue) => this.ReturnValue = re...
  class NotNullIfNotNullAttribute (line 67) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property |...
    method NotNullIfNotNullAttribute (line 75) | public NotNullIfNotNullAttribute(string parameterName) => this.Paramet...
  class DoesNotReturnAttribute (line 82) | [AttributeUsage(AttributeTargets.Method, Inherited = false)]
  class DoesNotReturnIfAttribute (line 89) | [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    method DoesNotReturnIfAttribute (line 98) | public DoesNotReturnIfAttribute(bool parameterValue) => this.Parameter...
  class MemberNotNullAttribute (line 106) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inh...
    method MemberNotNullAttribute (line 114) | public MemberNotNullAttribute(string member) => this.Members = new[] {...
    method MemberNotNullAttribute (line 120) | public MemberNotNullAttribute(params string[] members) => this.Members...
  class MemberNotNullWhenAttribute (line 127) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inh...
    method MemberNotNullWhenAttribute (line 138) | public MemberNotNullWhenAttribute(bool returnValue, string member)
    method MemberNotNullWhenAttribute (line 151) | public MemberNotNullWhenAttribute(bool returnValue, params string[] me...

FILE: dotnet/src/LegacySupport/DiagnosticClasses/UnreachableException.cs
  class UnreachableException (line 13) | internal sealed class UnreachableException : Exception
    method UnreachableException (line 20) | public UnreachableException()
    method UnreachableException (line 30) | public UnreachableException(string? message)
    method UnreachableException (line 42) | public UnreachableException(string? message, Exception? innerException)

FILE: dotnet/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs
  class ExperimentalAttribute (line 10) | [ExcludeFromCodeCoverage]
    method ExperimentalAttribute (line 29) | public ExperimentalAttribute(string diagnosticId)

FILE: dotnet/src/LegacySupport/TrimAttributes/DynamicallyAccessedMemberTypes.cs
  type DynamicallyAccessedMemberTypes (line 13) | [Flags]

FILE: dotnet/src/LegacySupport/TrimAttributes/DynamicallyAccessedMembersAttribute.cs
  class DynamicallyAccessedMembersAttribute (line 27) | [AttributeUsage(
    method DynamicallyAccessedMembersAttribute (line 40) | public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTy...

FILE: dotnet/src/LegacySupport/TrimAttributes/RequiresDynamicCodeAttribute.cs
  class RequiresDynamicCodeAttribute (line 12) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |...
    method RequiresDynamicCodeAttribute (line 23) | public RequiresDynamicCodeAttribute(string message)

FILE: dotnet/src/LegacySupport/TrimAttributes/RequiresUnreferencedCodeAttribute.cs
  class RequiresUnreferencedCodeAttribute (line 13) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |...
    method RequiresUnreferencedCodeAttribute (line 24) | public RequiresUnreferencedCodeAttribute(string message)

FILE: dotnet/src/LegacySupport/TrimAttributes/UnconditionalSuppressMessageAttribute.cs
  class UnconditionalSuppressMessageAttribute (line 14) | [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple =...
    method UnconditionalSuppressMessageAttribute (line 24) | public UnconditionalSuppressMessageAttribute(string category, string c...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/A2AAgent.cs
  class A2AAgent (line 27) | public sealed class A2AAgent : AIAgent
    method A2AAgent (line 45) | public A2AAgent(A2AClient a2aClient, string? id = null, string? name =...
    method CreateSessionCoreAsync (line 57) | protected sealed override ValueTask<AgentSession> CreateSessionCoreAsy...
    method CreateSessionAsync (line 65) | public ValueTask<AgentSession> CreateSessionAsync(string contextId)
    method CreateSessionAsync (line 74) | public ValueTask<AgentSession> CreateSessionAsync(string contextId, st...
    method SerializeSessionCoreAsync (line 78) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 91) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync...
    method RunCoreAsync (line 95) | protected override async Task<AgentResponse> RunCoreAsync(IEnumerable<...
    method RunCoreStreamingAsync (line 164) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method GetService (line 241) | public override object? GetService(Type serviceType, object? serviceKe...
    method GetA2ASessionAsync (line 247) | private async ValueTask<A2AAgentSession> GetA2ASessionAsync(AgentSessi...
    method UpdateSession (line 267) | private static void UpdateSession(A2AAgentSession? session, string? co...
    method CreateA2AMessage (line 287) | private static AgentMessage CreateA2AMessage(A2AAgentSession typedSess...
    method GetContinuationToken (line 302) | private static A2AContinuationToken? GetContinuationToken(IEnumerable<...
    method CreateContinuationToken (line 317) | private static A2AContinuationToken? CreateContinuationToken(string ta...
    method ConvertToAgentResponseUpdate (line 327) | private AgentResponseUpdate ConvertToAgentResponseUpdate(AgentMessage ...
    method ConvertToAgentResponseUpdate (line 342) | private AgentResponseUpdate ConvertToAgentResponseUpdate(AgentTask task)
    method ConvertToAgentResponseUpdate (line 356) | private AgentResponseUpdate ConvertToAgentResponseUpdate(TaskUpdateEve...
    method MapTaskStateToFinishReason (line 380) | private static ChatFinishReason? MapTaskStateToFinishReason(TaskState ...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/A2AAgentLogMessages.cs
  class A2AAgentLogMessages (line 11) | [ExcludeFromCodeCoverage]
    method LogA2AAgentInvokingAgent (line 17) | [LoggerMessage(
    method LogAgentChatClientInvokedAgent (line 29) | [LoggerMessage(

FILE: dotnet/src/Microsoft.Agents.AI.A2A/A2AAgentSession.cs
  class A2AAgentSession (line 13) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method A2AAgentSession (line 16) | internal A2AAgentSession()
    method A2AAgentSession (line 20) | [JsonConstructor]
    method Serialize (line 40) | internal JsonElement Serialize(JsonSerializerOptions? jsonSerializerOp...
    method Deserialize (line 46) | internal static A2AAgentSession Deserialize(JsonElement serializedStat...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/A2AContinuationToken.cs
  class A2AContinuationToken (line 11) | internal class A2AContinuationToken : ResponseContinuationToken
    method A2AContinuationToken (line 13) | internal A2AContinuationToken(string taskId)
    method FromToken (line 22) | internal static A2AContinuationToken FromToken(ResponseContinuationTok...
    method ToBytes (line 65) | public override ReadOnlyMemory<byte> ToBytes()

FILE: dotnet/src/Microsoft.Agents.AI.A2A/A2AJsonUtilities.cs
  class A2AJsonUtilities (line 14) | public static partial class A2AJsonUtilities
    method CreateDefaultOptions (line 43) | [UnconditionalSuppressMessage("ReflectionAnalysis", "IL3050:RequiresDy...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AAIContentExtensions.cs
  class A2AAIContentExtensions (line 11) | internal static class A2AAIContentExtensions
    method ToParts (line 18) | internal static List<Part>? ToParts(this IEnumerable<AIContent> contents)

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AAgentCardExtensions.cs
  class A2AAgentCardExtensions (line 16) | public static class A2AAgentCardExtensions
    method AsAIAgent (line 30) | public static AIAgent AsAIAgent(this AgentCard card, HttpClient? httpC...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AAgentTaskExtensions.cs
  class A2AAgentTaskExtensions (line 12) | internal static class A2AAgentTaskExtensions
    method ToChatMessages (line 14) | internal static IList<ChatMessage>? ToChatMessages(this AgentTask agen...
    method ToAIContents (line 31) | internal static IList<AIContent>? ToAIContents(this AgentTask agentTask)

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AArtifactExtensions.cs
  class A2AArtifactExtensions (line 11) | internal static class A2AArtifactExtensions
    method ToChatMessage (line 13) | internal static ChatMessage ToChatMessage(this Artifact artifact)
    method ToAIContents (line 22) | internal static List<AIContent> ToAIContents(this Artifact artifact)

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2ACardResolverExtensions.cs
  class A2ACardResolverExtensions (line 25) | public static class A2ACardResolverExtensions
    method GetAIAgentAsync (line 40) | public static async Task<AIAgent> GetAIAgentAsync(this A2ACardResolver...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/A2AClientExtensions.cs
  class A2AClientExtensions (line 22) | public static class A2AClientExtensions
    method AsAIAgent (line 38) | public static AIAgent AsAIAgent(this A2AClient client, string? id = nu...

FILE: dotnet/src/Microsoft.Agents.AI.A2A/Extensions/ChatMessageExtensions.cs
  class ChatMessageExtensions (line 12) | internal static class ChatMessageExtensions
    method ToA2AMessage (line 14) | internal static AgentMessage ToA2AMessage(this IEnumerable<ChatMessage...

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/AGUIChatClient.cs
  class AGUIChatClient (line 23) | public sealed class AGUIChatClient : DelegatingChatClient
    method AGUIChatClient (line 33) | public AGUIChatClient(
    method CombineJsonSerializerOptions (line 47) | private static JsonSerializerOptions CombineJsonSerializerOptions(Json...
    method CreateInnerClient (line 66) | private static FunctionInvokingChatClient CreateInnerClient(
    method GetResponseAsync (line 80) | public override Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMe...
    method GetStreamingResponseAsync (line 85) | public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamin...
    method CopyResponseUpdate (line 139) | private static ChatResponseUpdate CopyResponseUpdate(ChatResponseUpdat...
    class AGUIChatClientHandler (line 154) | private sealed class AGUIChatClientHandler : IChatClient
      method AGUIChatClientHandler (line 162) | public AGUIChatClientHandler(
      method GetResponseAsync (line 181) | public Task<ChatResponse> GetResponseAsync(
      method GetStreamingResponseAsync (line 190) | public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingRespon...
      method ExtractThreadIdFromOptions (line 280) | private static string? ExtractThreadIdFromOptions(ChatOptions? options)
      method ExtractTemporaryThreadId (line 292) | private static string? ExtractTemporaryThreadId(List<ChatMessage> me...
      method ExtractAndRemoveStateFromMessages (line 316) | private JsonElement ExtractAndRemoveStateFromMessages(List<ChatMessa...
      method Dispose (line 359) | public void Dispose()
      method GetService (line 364) | public object? GetService(Type serviceType, object? serviceKey = null)
    class ServerFunctionCallContent (line 375) | private sealed class ServerFunctionCallContent(FunctionCallContent fun...

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/AGUIHttpService.cs
  class AGUIHttpService (line 17) | internal sealed class AGUIHttpService(HttpClient client, string endpoint)
    method PostRunAsync (line 19) | public async IAsyncEnumerable<BaseEvent> PostRunAsync(
    method ItemParser (line 47) | private static BaseEvent ItemParser(string type, ReadOnlySpan<byte> data)

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIAssistantMessage.cs
  class AGUIAssistantMessage (line 11) | internal sealed class AGUIAssistantMessage : AGUIMessage
    method AGUIAssistantMessage (line 13) | public AGUIAssistantMessage()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIChatMessageExtensions.cs
  class AGUIChatMessageExtensions (line 14) | internal static class AGUIChatMessageExtensions
    method AsChatMessages (line 18) | public static IEnumerable<ChatMessage> AsChatMessages(
    method AsAGUIMessages (line 112) | public static IEnumerable<AGUIMessage> AsAGUIMessages(
    method MapAssistantMessage (line 147) | private static AGUIAssistantMessage? MapAssistantMessage(JsonSerialize...
    method MapToolMessages (line 191) | private static IEnumerable<AGUIToolMessage> MapToolMessages(JsonSerial...
    method MapChatRole (line 209) | public static ChatRole MapChatRole(string role) =>

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIContextItem.cs
  class AGUIContextItem (line 11) | internal sealed class AGUIContextItem

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIDeveloperMessage.cs
  class AGUIDeveloperMessage (line 9) | internal sealed class AGUIDeveloperMessage : AGUIMessage
    method AGUIDeveloperMessage (line 11) | public AGUIDeveloperMessage()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIEventTypes.cs
  class AGUIEventTypes (line 9) | internal static class AGUIEventTypes

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIFunctionCall.cs
  class AGUIFunctionCall (line 11) | internal sealed class AGUIFunctionCall

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIMessage.cs
  class AGUIMessage (line 11) | [JsonConverter(typeof(AGUIMessageJsonConverter))]

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIMessageJsonConverter.cs
  class AGUIMessageJsonConverter (line 13) | internal sealed class AGUIMessageJsonConverter : JsonConverter<AGUIMessage>
    method CanConvert (line 17) | public override bool CanConvert(Type typeToConvert) =>
    method Read (line 20) | public override AGUIMessage Read(
    method Write (line 55) | public override void Write(

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIRoles.cs
  class AGUIRoles (line 9) | internal static class AGUIRoles

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUISystemMessage.cs
  class AGUISystemMessage (line 9) | internal sealed class AGUISystemMessage : AGUIMessage
    method AGUISystemMessage (line 11) | public AGUISystemMessage()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUITool.cs
  class AGUITool (line 12) | internal sealed class AGUITool

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIToolCall.cs
  class AGUIToolCall (line 11) | internal sealed class AGUIToolCall

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIToolMessage.cs
  class AGUIToolMessage (line 11) | internal sealed class AGUIToolMessage : AGUIMessage
    method AGUIToolMessage (line 13) | public AGUIToolMessage()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AGUIUserMessage.cs
  class AGUIUserMessage (line 11) | internal sealed class AGUIUserMessage : AGUIMessage
    method AGUIUserMessage (line 13) | public AGUIUserMessage()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/AIToolExtensions.cs
  class AIToolExtensions (line 12) | internal static class AIToolExtensions
    method AsAGUITools (line 14) | public static IEnumerable<AGUITool> AsAGUITools(this IEnumerable<AIToo...
    method AsAITools (line 38) | public static IEnumerable<AITool> AsAITools(this IEnumerable<AGUITool>...

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/BaseEvent.cs
  class BaseEvent (line 11) | [JsonConverter(typeof(BaseEventJsonConverter))]

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/BaseEventJsonConverter.cs
  class BaseEventJsonConverter (line 13) | internal sealed class BaseEventJsonConverter : JsonConverter<BaseEvent>
    method CanConvert (line 17) | public override bool CanConvert(Type typeToConvert) =>
    method Read (line 20) | public override BaseEvent Read(
    method Write (line 61) | public override void Write(

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/ChatResponseUpdateAGUIExtensions.cs
  class ChatResponseUpdateAGUIExtensions (line 20) | internal static class ChatResponseUpdateAGUIExtensions
    method AsChatResponseUpdatesAsync (line 25) | public static async IAsyncEnumerable<ChatResponseUpdate> AsChatRespons...
    method CreateStateSnapshotUpdate (line 95) | private static ChatResponseUpdate CreateStateSnapshotUpdate(
    method CreateStateDeltaUpdate (line 119) | private static ChatResponseUpdate CreateStateDeltaUpdate(
    class TextMessageBuilder (line 143) | private sealed class TextMessageBuilder()
      method SetConversationAndResponseIds (line 150) | public void SetConversationAndResponseIds(string? conversationId, st...
      method AddTextStart (line 156) | public void AddTextStart(TextMessageStartEvent textStart)
      method EmitTextUpdate (line 167) | internal ChatResponseUpdate EmitTextUpdate(TextMessageContentEvent t...
      method EndCurrentMessage (line 180) | internal void EndCurrentMessage(TextMessageEndEvent textEnd)
    method ValidateAndEmitRunStart (line 191) | private static ChatResponseUpdate ValidateAndEmitRunStart(RunStartedEv...
    method ValidateAndEmitRunFinished (line 203) | private static ChatResponseUpdate ValidateAndEmitRunFinished(string? c...
    class ToolCallBuilder (line 223) | private sealed class ToolCallBuilder
      method AddToolCallStart (line 230) | public void AddToolCallStart(ToolCallStartEvent toolCallStart)
      method AddToolCallArgs (line 243) | public void AddToolCallArgs(ToolCallArgsEvent toolCallArgs, JsonSeri...
      method EmitToolCallUpdate (line 259) | internal ChatResponseUpdate EmitToolCallUpdate(ToolCallEndEvent tool...
      method EmitToolCallResult (line 286) | public ChatResponseUpdate EmitToolCallResult(ToolCallResultEvent too...
      method SetConversationAndResponseIds (line 301) | internal void SetConversationAndResponseIds(string conversationId, s...
    method DeserializeArgumentsIfAvailable (line 308) | private static IDictionary<string, object?>? DeserializeArgumentsIfAva...
    method DeserializeResultIfAvailable (line 320) | private static object? DeserializeResultIfAvailable(ToolCallResultEven...
    method AsAGUIEventStreamAsync (line 330) | public static async IAsyncEnumerable<BaseEvent> AsAGUIEventStreamAsync(
    method SerializeResultContent (line 486) | private static string? SerializeResultContent(FunctionResultContent fu...

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/RunAgentInput.cs
  class RunAgentInput (line 13) | internal sealed class RunAgentInput

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/RunErrorEvent.cs
  class RunErrorEvent (line 11) | internal sealed class RunErrorEvent : BaseEvent
    method RunErrorEvent (line 13) | public RunErrorEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/RunFinishedEvent.cs
  class RunFinishedEvent (line 12) | internal sealed class RunFinishedEvent : BaseEvent
    method RunFinishedEvent (line 14) | public RunFinishedEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/RunStartedEvent.cs
  class RunStartedEvent (line 11) | internal sealed class RunStartedEvent : BaseEvent
    method RunStartedEvent (line 13) | public RunStartedEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/StateDeltaEvent.cs
  class StateDeltaEvent (line 12) | internal sealed class StateDeltaEvent : BaseEvent
    method StateDeltaEvent (line 14) | public StateDeltaEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/StateSnapshotEvent.cs
  class StateSnapshotEvent (line 12) | internal sealed class StateSnapshotEvent : BaseEvent
    method StateSnapshotEvent (line 14) | public StateSnapshotEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/TextMessageContentEvent.cs
  class TextMessageContentEvent (line 11) | internal sealed class TextMessageContentEvent : BaseEvent
    method TextMessageContentEvent (line 13) | public TextMessageContentEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/TextMessageEndEvent.cs
  class TextMessageEndEvent (line 11) | internal sealed class TextMessageEndEvent : BaseEvent
    method TextMessageEndEvent (line 13) | public TextMessageEndEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/TextMessageStartEvent.cs
  class TextMessageStartEvent (line 11) | internal sealed class TextMessageStartEvent : BaseEvent
    method TextMessageStartEvent (line 13) | public TextMessageStartEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/ToolCallArgsEvent.cs
  class ToolCallArgsEvent (line 11) | internal sealed class ToolCallArgsEvent : BaseEvent
    method ToolCallArgsEvent (line 13) | public ToolCallArgsEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/ToolCallEndEvent.cs
  class ToolCallEndEvent (line 11) | internal sealed class ToolCallEndEvent : BaseEvent
    method ToolCallEndEvent (line 13) | public ToolCallEndEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/ToolCallResultEvent.cs
  class ToolCallResultEvent (line 11) | internal sealed class ToolCallResultEvent : BaseEvent
    method ToolCallResultEvent (line 13) | public ToolCallResultEvent()

FILE: dotnet/src/Microsoft.Agents.AI.AGUI/Shared/ToolCallStartEvent.cs
  class ToolCallStartEvent (line 11) | internal sealed class ToolCallStartEvent : BaseEvent
    method ToolCallStartEvent (line 13) | public ToolCallStartEvent()

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIAgent.cs
  class AIAgent (line 37) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method GetService (line 118) | public virtual object? GetService(Type serviceType, object? serviceKey...
    method GetService (line 135) | public TService? GetService<TService>(object? serviceKey = null)
    method CreateSessionAsync (line 155) | public ValueTask<AgentSession> CreateSessionAsync(CancellationToken ca...
    method CreateSessionCoreAsync (line 166) | protected abstract ValueTask<AgentSession> CreateSessionCoreAsync(Canc...
    method SerializeSessionAsync (line 187) | public ValueTask<JsonElement> SerializeSessionAsync(AgentSession sessi...
    method SerializeSessionCoreAsync (line 200) | protected abstract ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionAsync (line 222) | public ValueTask<AgentSession> DeserializeSessionAsync(JsonElement ser...
    method DeserializeSessionCoreAsync (line 235) | protected abstract ValueTask<AgentSession> DeserializeSessionCoreAsync...
    method RunAsync (line 251) | public Task<AgentResponse> RunAsync(
    method RunAsync (line 273) | public Task<AgentResponse> RunAsync(
    method RunAsync (line 296) | public Task<AgentResponse> RunAsync(
    method RunAsync (line 334) | public Task<AgentResponse> RunAsync(
    method RunCoreAsync (line 366) | protected abstract Task<AgentResponse> RunCoreAsync(
    method RunStreamingAsync (line 382) | public IAsyncEnumerable<AgentResponseUpdate> RunStreamingAsync(
    method RunStreamingAsync (line 404) | public IAsyncEnumerable<AgentResponseUpdate> RunStreamingAsync(
    method RunStreamingAsync (line 427) | public IAsyncEnumerable<AgentResponseUpdate> RunStreamingAsync(
    method RunStreamingAsync (line 464) | public async IAsyncEnumerable<AgentResponseUpdate> RunStreamingAsync(
    method RunCoreStreamingAsync (line 502) | protected abstract IAsyncEnumerable<AgentResponseUpdate> RunCoreStream...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIAgentMetadata.cs
  class AIAgentMetadata (line 14) | [DebuggerDisplay("ProviderName = {ProviderName}")]
    method AIAgentMetadata (line 24) | public AIAgentMetadata(string? providerName = null)

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIAgentStructuredOutput.cs
  class AIAgent (line 16) | public abstract partial class AIAgent
    method RunAsync (line 34) | public Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 59) | public Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 85) | public Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 120) | public async Task<AgentResponse<T>> RunAsync<T>(

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIContentExtensions.cs
  class AIContentExtensions (line 17) | internal static class AIContentExtensions
    method ConcatText (line 20) | public static string ConcatText(this IEnumerable<AIContent> contents)
    method ConcatText (line 65) | public static string ConcatText(this IList<ChatMessage> messages)

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIContext.cs
  class AIContext (line 31) | public sealed class AIContext

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AIContextProvider.cs
  class AIContextProvider (line 40) | public abstract class AIContextProvider
    method DefaultExternalOnlyFilter (line 42) | private static IEnumerable<ChatMessage> DefaultExternalOnlyFilter(IEnu...
    method DefaultNoopFilter (line 44) | private static IEnumerable<ChatMessage> DefaultNoopFilter(IEnumerable<...
    method AIContextProvider (line 55) | protected AIContextProvider(
    method InvokingAsync (line 113) | public ValueTask<AIContext> InvokingAsync(InvokingContext context, Can...
    method InvokingCoreAsync (line 144) | protected virtual async ValueTask<AIContext> InvokingCoreAsync(Invokin...
    method ProvideAIContextAsync (line 223) | protected virtual ValueTask<AIContext> ProvideAIContextAsync(InvokingC...
    method InvokedAsync (line 254) | public ValueTask InvokedAsync(InvokedContext context, CancellationToke...
    method InvokedCoreAsync (line 290) | protected virtual ValueTask InvokedCoreAsync(InvokedContext context, C...
    method StoreAIContextAsync (line 325) | protected virtual ValueTask StoreAIContextAsync(InvokedContext context...
    method GetService (line 338) | public virtual object? GetService(Type serviceType, object? serviceKey...
    method GetService (line 355) | public TService? GetService<TService>(object? serviceKey = null)
    class InvokingContext (line 366) | public sealed class InvokingContext
      method InvokingContext (line 375) | public InvokingContext(
    class InvokedContext (line 423) | public sealed class InvokedContext
      method InvokedContext (line 434) | public InvokedContext(
      method InvokedContext (line 455) | public InvokedContext(

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AdditionalPropertiesExtensions.cs
  class AdditionalPropertiesExtensions (line 12) | public static class AdditionalPropertiesExtensions
    method Add (line 20) | public static void Add<T>(this AdditionalPropertiesDictionary addition...
    method TryAdd (line 40) | public static bool TryAdd<T>(this AdditionalPropertiesDictionary addit...
    method TryGetValue (line 63) | public static bool TryGetValue<T>(this AdditionalPropertiesDictionary ...
    method Contains (line 78) | public static bool Contains<T>(this AdditionalPropertiesDictionary add...
    method Remove (line 93) | public static bool Remove<T>(this AdditionalPropertiesDictionary addit...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentAbstractionsJsonUtilities.cs
  class AgentAbstractionsJsonUtilities (line 15) | public static partial class AgentAbstractionsJsonUtilities
    method CreateDefaultOptions (line 44) | [UnconditionalSuppressMessage("ReflectionAnalysis", "IL3050:RequiresDy...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRequestMessageSourceAttribution.cs
  type AgentRequestMessageSourceAttribution (line 16) | public readonly struct AgentRequestMessageSourceAttribution : IEquatable...
    method AgentRequestMessageSourceAttribution (line 29) | public AgentRequestMessageSourceAttribution(AgentRequestMessageSourceT...
    method Equals (line 50) | public bool Equals(AgentRequestMessageSourceAttribution other)
    method Equals (line 61) | public override bool Equals(object? obj)
    method ToString (line 70) | public override string ToString()
    method GetHashCode (line 81) | public override int GetHashCode()

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRequestMessageSourceType.cs
  type AgentRequestMessageSourceType (line 16) | public readonly struct AgentRequestMessageSourceType : IEquatable<AgentR...
    method AgentRequestMessageSourceType (line 22) | public AgentRequestMessageSourceType(string value) => this.Value = Thr...
    method Equals (line 49) | public bool Equals(AgentRequestMessageSourceType other)
    method Equals (line 59) | public override bool Equals(object? obj) => obj is AgentRequestMessage...
    method ToString (line 65) | public override string ToString() => this.Value;
    method GetHashCode (line 71) | public override int GetHashCode() => this.Value?.GetHashCode() ?? 0;

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse.cs
  class AgentResponse (line 28) | public class AgentResponse
    method AgentResponse (line 34) | public AgentResponse()
    method AgentResponse (line 41) | public AgentResponse(ChatMessage message)
    method AgentResponse (line 58) | public AgentResponse(ChatResponse response)
    method AgentResponse (line 82) | protected AgentResponse(AgentResponse response)
    method AgentResponse (line 100) | public AgentResponse(IList<ChatMessage>? messages)
    method ToString (line 243) | public override string ToString() => this.Text;
    method ToAgentResponseUpdates (line 265) | public AgentResponseUpdate[] ToAgentResponseUpdates()

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseExtensions.cs
  class AgentResponseExtensions (line 16) | public static class AgentResponseExtensions
    method AsChatResponse (line 31) | public static ChatResponse AsChatResponse(this AgentResponse response)
    method AsChatResponseUpdate (line 63) | public static ChatResponseUpdate AsChatResponseUpdate(this AgentRespon...
    method AsChatResponseUpdatesAsync (line 95) | public static async IAsyncEnumerable<ChatResponseUpdate> AsChatRespons...
    method ToAgentResponse (line 118) | public static AgentResponse ToAgentResponse(
    method ToAgentResponseAsync (line 153) | public static Task<AgentResponse> ToAgentResponseAsync(
    method AsChatResponseUpdatesWithAdditionalDetails (line 178) | private static IEnumerable<ChatResponseUpdate> AsChatResponseUpdatesWi...
    method AsChatResponseUpdatesWithAdditionalDetailsAsync (line 189) | private static async IAsyncEnumerable<ChatResponseUpdate> AsChatRespon...
    method UpdateAdditionalDetails (line 201) | private static void UpdateAdditionalDetails(AgentResponseUpdate update...
    class AgentResponseDetails (line 209) | private sealed class AgentResponseDetails

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponseUpdate.cs
  class AgentResponseUpdate (line 34) | [DebuggerDisplay("[{Role}] {ContentForDebuggerDisplay}{EllipsesForDebugg...
    method AgentResponseUpdate (line 41) | [JsonConstructor]
    method AgentResponseUpdate (line 49) | public AgentResponseUpdate(ChatRole? role, string? content)
    method AgentResponseUpdate (line 57) | public AgentResponseUpdate(ChatRole? role, IList<AIContent>? contents)
    method AgentResponseUpdate (line 65) | public AgentResponseUpdate(ChatResponseUpdate chatResponseUpdate)
    method ToString (line 167) | public override string ToString() => this.Text;

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentResponse{T}.cs
  class AgentResponse (line 22) | public class AgentResponse<T> : AgentResponse
    method AgentResponse (line 32) | public AgentResponse(AgentResponse response, JsonSerializerOptions ser...
    method DeserializeFirstTopLevelObject (line 76) | private static T? DeserializeFirstTopLevelObject(string json, JsonType...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunContext.cs
  class AgentRunContext (line 10) | public sealed class AgentRunContext
    method AgentRunContext (line 19) | public AgentRunContext(

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunOptions.cs
  class AgentRunOptions (line 19) | public class AgentRunOptions
    method AgentRunOptions (line 24) | public AgentRunOptions()
    method AgentRunOptions (line 33) | protected AgentRunOptions(AgentRunOptions options)
    method Clone (line 127) | public virtual AgentRunOptions Clone() => new(this);

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSession.cs
  class AgentSession (line 58) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method AgentSession (line 64) | protected AgentSession()
    method AgentSession (line 71) | protected AgentSession(AgentSessionStateBag stateBag)
    method GetService (line 97) | public virtual object? GetService(Type serviceType, object? serviceKey...
    method GetService (line 114) | public TService? GetService<TService>(object? serviceKey = null)

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSessionExtensions.cs
  class AgentSessionExtensions (line 14) | public static class AgentSessionExtensions
    method TryGetInMemoryChatHistory (line 28) | public static bool TryGetInMemoryChatHistory(this AgentSession session...
    method SetInMemoryChatHistory (line 55) | public static void SetInMemoryChatHistory(this AgentSession session, L...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSessionStateBag.cs
  class AgentSessionStateBag (line 20) | [JsonConverter(typeof(AgentSessionStateBagJsonConverter))]
    method AgentSessionStateBag (line 28) | public AgentSessionStateBag()
    method AgentSessionStateBag (line 37) | internal AgentSessionStateBag(ConcurrentDictionary<string, AgentSessio...
    method TryGetValue (line 55) | public bool TryGetValue<T>(string key, out T? value, JsonSerializerOpt...
    method GetValue (line 78) | public T? GetValue<T>(string key, JsonSerializerOptions? jsonSerialize...
    method SetValue (line 99) | public void SetValue<T>(string key, T? value, JsonSerializerOptions? j...
    method TryRemoveValue (line 116) | public bool TryRemoveValue(string key)
    method Serialize (line 124) | public JsonElement Serialize()
    method Deserialize (line 134) | public static AgentSessionStateBag Deserialize(JsonElement jsonElement)

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSessionStateBagJsonConverter.cs
  class AgentSessionStateBagJsonConverter (line 13) | public sealed class AgentSessionStateBagJsonConverter : JsonConverter<Ag...
    method Read (line 16) | public override AgentSessionStateBag Read(ref Utf8JsonReader reader, T...
    method Write (line 23) | public override void Write(Utf8JsonWriter writer, AgentSessionStateBag...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSessionStateBagValue.cs
  class AgentSessionStateBagValue (line 12) | [JsonConverter(typeof(AgentSessionStateBagValueJsonConverter))]
    method AgentSessionStateBagValue (line 23) | public AgentSessionStateBagValue(JsonElement jsonValue)
    method AgentSessionStateBagValue (line 34) | public AgentSessionStateBagValue(object? deserializedValue, Type value...
    method TryReadDeserializedValue (line 74) | public bool TryReadDeserializedValue<T>(out T? value, JsonSerializerOp...
    method ReadDeserializedValue (line 121) | public T? ReadDeserializedValue<T>(JsonSerializerOptions? jsonSerializ...
    method SetDeserialized (line 159) | public void SetDeserialized<T>(T? deserializedValue, Type valueType, J...
    type DeserializedCache (line 167) | private readonly struct DeserializedCache
      method DeserializedCache (line 169) | public DeserializedCache(object? value, Type valueType, JsonSerializ...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/AgentSessionStateBagValueJsonConverter.cs
  class AgentSessionStateBagValueJsonConverter (line 13) | internal sealed class AgentSessionStateBagValueJsonConverter : JsonConve...
    method Read (line 16) | public override AgentSessionStateBagValue Read(ref Utf8JsonReader read...
    method Write (line 23) | public override void Write(Utf8JsonWriter writer, AgentSessionStateBag...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/ChatHistoryProvider.cs
  class ChatHistoryProvider (line 49) | public abstract class ChatHistoryProvider
    method DefaultExcludeChatHistoryFilter (line 51) | private static IEnumerable<ChatMessage> DefaultExcludeChatHistoryFilte...
    method DefaultNoopFilter (line 53) | private static IEnumerable<ChatMessage> DefaultNoopFilter(IEnumerable<...
    method ChatHistoryProvider (line 67) | protected ChatHistoryProvider(
    method InvokingAsync (line 109) | public ValueTask<IEnumerable<ChatMessage>> InvokingAsync(InvokingConte...
    method InvokingCoreAsync (line 139) | protected virtual async ValueTask<IEnumerable<ChatMessage>> InvokingCo...
    method ProvideChatHistoryAsync (line 182) | protected virtual ValueTask<IEnumerable<ChatMessage>> ProvideChatHisto...
    method InvokedAsync (line 212) | public ValueTask InvokedAsync(InvokedContext context, CancellationToke...
    method InvokedCoreAsync (line 246) | protected virtual ValueTask InvokedCoreAsync(InvokedContext context, C...
    method StoreChatHistoryAsync (line 294) | protected virtual ValueTask StoreChatHistoryAsync(InvokedContext conte...
    method GetService (line 306) | public virtual object? GetService(Type serviceType, object? serviceKey...
    method GetService (line 323) | public TService? GetService<TService>(object? serviceKey = null)
    class InvokingContext (line 334) | public sealed class InvokingContext
      method InvokingContext (line 343) | public InvokingContext(
    class InvokedContext (line 391) | public sealed class InvokedContext
      method InvokedContext (line 402) | public InvokedContext(
      method InvokedContext (line 423) | public InvokedContext(

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/ChatMessageExtensions.cs
  class ChatMessageExtensions (line 10) | public static class ChatMessageExtensions
    method GetAgentRequestMessageSourceType (line 18) | public static AgentRequestMessageSourceType GetAgentRequestMessageSour...
    method GetAgentRequestMessageSourceId (line 35) | public static string? GetAgentRequestMessageSourceId(this ChatMessage ...
    method WithAgentRequestMessageSource (line 57) | public static ChatMessage WithAgentRequestMessageSource(this ChatMessa...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/DelegatingAIAgent.cs
  class DelegatingAIAgent (line 28) | public abstract class DelegatingAIAgent : AIAgent
    method DelegatingAIAgent (line 39) | protected DelegatingAIAgent(AIAgent innerAgent)
    method GetService (line 66) | public override object? GetService(Type serviceType, object? serviceKe...
    method CreateSessionCoreAsync (line 77) | protected override ValueTask<AgentSession> CreateSessionCoreAsync(Canc...
    method SerializeSessionCoreAsync (line 80) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 84) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync...
    method RunCoreAsync (line 88) | protected override Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 96) | protected override IAsyncEnumerable<AgentResponseUpdate> RunCoreStream...

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/InMemoryChatHistoryProvider.cs
  class InMemoryChatHistoryProvider (line 27) | public sealed class InMemoryChatHistoryProvider : ChatHistoryProvider
    method InMemoryChatHistoryProvider (line 39) | public InMemoryChatHistoryProvider(InMemoryChatHistoryProviderOptions?...
    method GetMessages (line 71) | public List<ChatMessage> GetMessages(AgentSession? session)
    method SetMessages (line 80) | public void SetMessages(AgentSession? session, List<ChatMessage> messa...
    method ProvideChatHistoryAsync (line 89) | protected override async ValueTask<IEnumerable<ChatMessage>> ProvideCh...
    method StoreChatHistoryAsync (line 103) | protected override async ValueTask StoreChatHistoryAsync(InvokedContex...
    method ReduceMessagesAsync (line 118) | private static async Task ReduceMessagesAsync(IChatReducer reducer, St...
    class State (line 126) | public sealed class State

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/InMemoryChatHistoryProviderOptions.cs
  class InMemoryChatHistoryProviderOptions (line 13) | public sealed class InMemoryChatHistoryProviderOptions
    type ChatReducerTriggerEvent (line 91) | public enum ChatReducerTriggerEvent

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/MessageAIContextProvider.cs
  class MessageAIContextProvider (line 31) | public abstract class MessageAIContextProvider : AIContextProvider
    method MessageAIContextProvider (line 39) | protected MessageAIContextProvider(
    method ProvideAIContextAsync (line 48) | protected override async ValueTask<AIContext> ProvideAIContextAsync(AI...
    method InvokingAsync (line 76) | public ValueTask<IEnumerable<ChatMessage>> InvokingAsync(InvokingConte...
    method InvokingCoreAsync (line 106) | protected virtual async ValueTask<IEnumerable<ChatMessage>> InvokingCo...
    method ProvideMessagesAsync (line 144) | protected virtual ValueTask<IEnumerable<ChatMessage>> ProvideMessagesA...
    class InvokingContext (line 157) | public new sealed class InvokingContext
      method InvokingContext (line 166) | public InvokingContext(

FILE: dotnet/src/Microsoft.Agents.AI.Abstractions/ProviderSessionState{TState}.cs
  class ProviderSessionState (line 26) | public class ProviderSessionState<TState>
    method ProviderSessionState (line 38) | public ProviderSessionState(
    method GetOrInitializeState (line 58) | public TState GetOrInitializeState(AgentSession? session)
    method SaveState (line 80) | public void SaveState(AgentSession? session, TState state)

FILE: dotnet/src/Microsoft.Agents.AI.Anthropic/AnthropicBetaServiceExtensions.cs
  class AnthropicBetaServiceExtensions (line 13) | public static class AnthropicBetaServiceExtensions
    method AsAIAgent (line 34) | public static ChatClientAgent AsAIAgent(
    method AsAIAgent (line 84) | public static ChatClientAgent AsAIAgent(

FILE: dotnet/src/Microsoft.Agents.AI.Anthropic/AnthropicClientExtensions.cs
  class AnthropicClientExtensions (line 13) | public static class AnthropicClientExtensions
    method AsAIAgent (line 34) | public static ChatClientAgent AsAIAgent(
    method AsAIAgent (line 84) | public static ChatClientAgent AsAIAgent(

FILE: dotnet/src/Microsoft.Agents.AI.AzureAI.Persistent/PersistentAgentsClientExtensions.cs
  class PersistentAgentsClientExtensions (line 11) | public static class PersistentAgentsClientExtensions
    method AsAIAgent (line 22) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method AsAIAgent (line 47) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method GetAIAgentAsync (line 98) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method AsAIAgent (line 131) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method AsAIAgent (line 157) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method GetAIAgentAsync (line 219) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method CreateAIAgentAsync (line 265) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method CreateAIAgentAsync (line 316) | [Obsolete("Please use the latest Foundry Agents service via the Micros...
    method ConvertAIToolsToToolDefinitions (line 365) | private static (List<ToolDefinition>? ToolDefinitions, ToolResources? ...

FILE: dotnet/src/Microsoft.Agents.AI.AzureAI/AzureAIProjectChatClient.cs
  class AzureAIProjectChatClient (line 19) | [Experimental(DiagnosticIds.Experiments.AIOpenAIResponses)]
    method AzureAIProjectChatClient (line 39) | internal AzureAIProjectChatClient(AIProjectClient aiProjectClient, Age...
    method AzureAIProjectChatClient (line 60) | internal AzureAIProjectChatClient(AIProjectClient aiProjectClient, Age...
    method AzureAIProjectChatClient (line 66) | internal AzureAIProjectChatClient(AIProjectClient aiProjectClient, Age...
    method CreateAgentReference (line 82) | private static AgentReference CreateAgentReference(AgentVersion agentV...
    method GetService (line 91) | public override object? GetService(Type serviceType, object? serviceKe...
    method GetResponseAsync (line 107) | public override async Task<ChatResponse> GetResponseAsync(IEnumerable<...
    method GetStreamingResponseAsync (line 115) | public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamin...
    method GetAgentEnabledChatOptions (line 125) | private ChatOptions GetAgentEnabledChatOptions(ChatOptions? options)

FILE: dotnet/src/Microsoft.Agents.AI.AzureAI/AzureAIProjectChatClientExtensions.cs
  class AzureAIProjectChatClientExtensions (line 27) | [Experimental(DiagnosticIds.Experiments.AIOpenAIResponses)]
    method AsAIAgent (line 45) | public static ChatClientAgent AsAIAgent(
    method GetAIAgentAsync (line 82) | public static async Task<ChatClientAgent> GetAIAgentAsync(
    method AsAIAgent (line 113) | public static ChatClientAgent AsAIAgent(
    method AsAIAgent (line 144) | public static ChatClientAgent AsAIAgent(
    method GetAIAgentAsync (line 175) | public static async Task<ChatClientAgent> GetAIAgentAsync(
    method CreateAIAgentAsync (line 221) | public static Task<ChatClientAgent> CreateAIAgentAsync(
    method CreateAIAgentAsync (line 259) | public static async Task<ChatClientAgent> CreateAIAgentAsync(
    method CreateAIAgentAsync (line 333) | public static Task<ChatClientAgent> CreateAIAgentAsync(
    method GetAgentRecordByNameAsync (line 361) | private static async Task<AgentRecord> GetAgentRecordByNameAsync(AIPro...
    method CreateAgentVersionWithProtocolAsync (line 372) | private static async Task<AgentVersion> CreateAgentVersionWithProtocol...
    method CreateAIAgentAsync (line 382) | private static async Task<ChatClientAgent> CreateAIAgentAsync(
    method AsChatClientAgent (line 410) | private static ChatClientAgent AsChatClientAgent(
    method AsChatClientAgent (line 428) | private static ChatClientAgent AsChatClientAgent(
    method AsChatClientAgent (line 446) | private static ChatClientAgent AsChatClientAgent(
    method AsChatClientAgent (line 464) | private static ChatClientAgent AsChatClientAgent(
    method AsChatClientAgent (line 479) | private static ChatClientAgent AsChatClientAgent(
    method CreateChatClientAgentOptions (line 506) | private static ChatClientAgentOptions CreateChatClientAgentOptions(Age...
    method CreateChatClientAgentOptions (line 594) | private static ChatClientAgentOptions CreateChatClientAgentOptions(Age...
    method ApplyToolsToAgentDefinition (line 614) | private static void ApplyToolsToAgentDefinition(AgentDefinition agentD...
    method ToOpenAIResponseTextFormat (line 647) | private static ResponseTextFormat? ToOpenAIResponseTextFormat(ChatResp...
    method HasStrict (line 668) | private static bool? HasStrict(IReadOnlyDictionary<string, object?>? a...
    class NoOpChatClient (line 748) | private sealed class NoOpChatClient : IChatClient
      method Dispose (line 750) | public void Dispose() { }
      method GetResponseAsync (line 752) | public Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> ...
      method GetService (line 755) | public object? GetService(Type serviceType, object? serviceKey = nul...
      method GetStreamingResponseAsync (line 757) | public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingRespon...
    method AgentNameValidationRegex (line 765) | [GeneratedRegex("^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$")]
    method AgentNameValidationRegex (line 768) | private static Regex AgentNameValidationRegex() => new("^[a-zA-Z0-9]([...
    method ThrowIfInvalidAgentName (line 771) | private static string ThrowIfInvalidAgentName(string? name)
    method ToResponseReasoningOptions (line 781) | private static ResponseReasoningOptions? ToResponseReasoningOptions(Re...

FILE: dotnet/src/Microsoft.Agents.AI.AzureAI/RequestOptionsExtensions.cs
  class RequestOptionsExtensions (line 8) | internal static class RequestOptionsExtensions
    method ToRequestOptions (line 11) | public static RequestOptions ToRequestOptions(this CancellationToken c...
    class MeaiUserAgentPolicy (line 25) | private sealed class MeaiUserAgentPolicy : PipelinePolicy
      method Process (line 31) | public override void Process(PipelineMessage message, IReadOnlyList<...
      method ProcessAsync (line 37) | public override ValueTask ProcessAsync(PipelineMessage message, IRea...
      method AddUserAgentHeader (line 43) | private static void AddUserAgentHeader(PipelineMessage message) =>
      method CreateUserAgentValue (line 46) | private static string CreateUserAgentValue()

FILE: dotnet/src/Microsoft.Agents.AI.CopilotStudio/ActivityProcessor.cs
  class ActivityProcessor (line 14) | internal static class ActivityProcessor
    method ProcessActivityAsync (line 16) | public static async IAsyncEnumerable<ChatMessage> ProcessActivityAsync...
    method CreateChatMessageFromActivity (line 38) | private static ChatMessage CreateChatMessageFromActivity(IActivity act...

FILE: dotnet/src/Microsoft.Agents.AI.CopilotStudio/CopilotStudioAgent.cs
  class CopilotStudioAgent (line 22) | public class CopilotStudioAgent : AIAgent
    method CopilotStudioAgent (line 38) | public CopilotStudioAgent(CopilotClient client, ILoggerFactory? logger...
    method CreateSessionCoreAsync (line 45) | protected sealed override ValueTask<AgentSession> CreateSessionCoreAsy...
    method CreateSessionAsync (line 53) | public ValueTask<AgentSession> CreateSessionAsync(string conversationId)
    method SerializeSessionCoreAsync (line 57) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 70) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync...
    method RunCoreAsync (line 74) | protected override async Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 112) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method StartNewConversationAsync (line 153) | private async Task<string> StartNewConversationAsync(CancellationToken...
    method GetService (line 173) | public override object? GetService(Type serviceType, object? serviceKe...

FILE: dotnet/src/Microsoft.Agents.AI.CopilotStudio/CopilotStudioAgentSession.cs
  class CopilotStudioAgentSession (line 13) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method CopilotStudioAgentSession (line 16) | internal CopilotStudioAgentSession()
    method CopilotStudioAgentSession (line 20) | [JsonConstructor]
    method Serialize (line 37) | internal JsonElement Serialize(JsonSerializerOptions? jsonSerializerOp...
    method Deserialize (line 43) | internal static CopilotStudioAgentSession Deserialize(JsonElement seri...

FILE: dotnet/src/Microsoft.Agents.AI.CopilotStudio/CopilotStudioJsonUtilities.cs
  class CopilotStudioJsonUtilities (line 13) | internal static partial class CopilotStudioJsonUtilities
    method CreateDefaultOptions (line 24) | private static JsonSerializerOptions CreateDefaultOptions()

FILE: dotnet/src/Microsoft.Agents.AI.CosmosNoSql/CosmosChatHistoryProvider.cs
  class CosmosChatHistoryProvider (line 38) | [RequiresUnreferencedCode("The CosmosChatHistoryProvider uses JSON seria...
    method CreateDefaultJsonOptions (line 54) | private static JsonSerializerOptions CreateDefaultJsonOptions()
    method CosmosChatHistoryProvider (line 113) | public CosmosChatHistoryProvider(
    method CosmosChatHistoryProvider (line 151) | public CosmosChatHistoryProvider(
    method CosmosChatHistoryProvider (line 178) | public CosmosChatHistoryProvider(
    method UseHierarchicalPartitioning (line 195) | private static bool UseHierarchicalPartitioning(State state) =>
    method BuildPartitionKey (line 201) | private static PartitionKey BuildPartitionKey(State state)
    method ProvideChatHistoryAsync (line 216) | protected override async ValueTask<IEnumerable<ChatMessage>> ProvideCh...
    method StoreChatHistoryAsync (line 279) | protected override async ValueTask StoreChatHistoryAsync(InvokedContex...
    method AddMessagesInBatchAsync (line 311) | private async Task AddMessagesInBatchAsync(PartitionKey partitionKey, ...
    method ExecuteBatchOperationAsync (line 327) | private async Task ExecuteBatchOperationAsync(PartitionKey partitionKe...
    method AddSingleMessageAsync (line 401) | private async Task AddSingleMessageAsync(PartitionKey partitionKey, St...
    method CreateMessageDocument (line 422) | private CosmosMessageDocument CreateMessageDocument(State state, ChatM...
    method GetMessageCountAsync (line 450) | public async Task<int> GetMessageCountAsync(AgentSession? session, Can...
    method ClearMessagesAsync (line 484) | public async Task<int> ClearMessagesAsync(AgentSession? session, Cance...
    method Dispose (line 535) | public void Dispose()
    class State (line 550) | public sealed class State
      method State (line 558) | public State(string conversationId, string? tenantId = null, string?...
    class CosmosMessageDocument (line 584) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal ...

FILE: dotnet/src/Microsoft.Agents.AI.CosmosNoSql/CosmosCheckpointStore.cs
  class CosmosCheckpointStore (line 21) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON serializa...
    method CosmosCheckpointStore (line 38) | public CosmosCheckpointStore(string connectionString, string databaseI...
    method CosmosCheckpointStore (line 56) | public CosmosCheckpointStore(string accountEndpoint, TokenCredential t...
    method CosmosCheckpointStore (line 79) | public CosmosCheckpointStore(CosmosClient cosmosClient, string databas...
    method CreateCheckpointAsync (line 98) | public override async ValueTask<CheckpointInfo> CreateCheckpointAsync(...
    method RetrieveCheckpointAsync (line 130) | public override async ValueTask<JsonElement> RetrieveCheckpointAsync(s...
    method RetrieveIndexAsync (line 164) | public override async ValueTask<IEnumerable<CheckpointInfo>> RetrieveI...
    method Dispose (line 198) | public void Dispose()
    method Dispose (line 208) | protected virtual void Dispose(bool disposing)
    class CosmosCheckpointDocument (line 221) | internal sealed class CosmosCheckpointDocument
    class CheckpointQueryResult (line 245) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal ...
    method CosmosCheckpointStore (line 261) | public CosmosCheckpointStore(string connectionString, string databaseI...
    method CosmosCheckpointStore (line 267) | public CosmosCheckpointStore(string accountEndpoint, TokenCredential t...
    method CosmosCheckpointStore (line 273) | public CosmosCheckpointStore(CosmosClient cosmosClient, string databas...
  class CosmosCheckpointStore (line 256) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON serializa...
    method CosmosCheckpointStore (line 38) | public CosmosCheckpointStore(string connectionString, string databaseI...
    method CosmosCheckpointStore (line 56) | public CosmosCheckpointStore(string accountEndpoint, TokenCredential t...
    method CosmosCheckpointStore (line 79) | public CosmosCheckpointStore(CosmosClient cosmosClient, string databas...
    method CreateCheckpointAsync (line 98) | public override async ValueTask<CheckpointInfo> CreateCheckpointAsync(...
    method RetrieveCheckpointAsync (line 130) | public override async ValueTask<JsonElement> RetrieveCheckpointAsync(s...
    method RetrieveIndexAsync (line 164) | public override async ValueTask<IEnumerable<CheckpointInfo>> RetrieveI...
    method Dispose (line 198) | public void Dispose()
    method Dispose (line 208) | protected virtual void Dispose(bool disposing)
    class CosmosCheckpointDocument (line 221) | internal sealed class CosmosCheckpointDocument
    class CheckpointQueryResult (line 245) | [SuppressMessage("Performance", "CA1812:Avoid uninstantiated internal ...
    method CosmosCheckpointStore (line 261) | public CosmosCheckpointStore(string connectionString, string databaseI...
    method CosmosCheckpointStore (line 267) | public CosmosCheckpointStore(string accountEndpoint, TokenCredential t...
    method CosmosCheckpointStore (line 273) | public CosmosCheckpointStore(CosmosClient cosmosClient, string databas...

FILE: dotnet/src/Microsoft.Agents.AI.CosmosNoSql/CosmosDBChatExtensions.cs
  class CosmosDBChatExtensions (line 13) | public static class CosmosDBChatExtensions
    method WithCosmosDBChatHistoryProvider (line 29) | [RequiresUnreferencedCode("The CosmosChatHistoryProvider uses JSON ser...
    method WithCosmosDBChatHistoryProviderUsingManagedIdentity (line 60) | [RequiresUnreferencedCode("The CosmosChatHistoryProvider uses JSON ser...
    method WithCosmosDBChatHistoryProvider (line 96) | [RequiresUnreferencedCode("The CosmosChatHistoryProvider uses JSON ser...

FILE: dotnet/src/Microsoft.Agents.AI.CosmosNoSql/CosmosDBWorkflowExtensions.cs
  class CosmosDBWorkflowExtensions (line 14) | public static class CosmosDBWorkflowExtensions
    method CreateCheckpointStore (line 24) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...
    method CreateCheckpointStoreUsingManagedIdentity (line 59) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...
    method CreateCheckpointStore (line 99) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...
    method CreateCheckpointStore (line 133) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...
    method CreateCheckpointStoreUsingManagedIdentity (line 169) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...
    method CreateCheckpointStore (line 210) | [RequiresUnreferencedCode("The CosmosCheckpointStore uses JSON seriali...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/AgentBotElementYaml.cs
  class AgentBotElementYaml (line 18) | internal static class AgentBotElementYaml
    method FromYaml (line 25) | [RequiresDynamicCode("Calls YamlDotNet.Serialization.DeserializerBuild...
    class AgentFeatureConfiguration (line 44) | private sealed class AgentFeatureConfiguration : IFeatureConfiguration
      method GetInt64Value (line 46) | public long GetInt64Value(string settingName, long defaultValue) => ...
      method GetStringValue (line 48) | public string GetStringValue(string settingName, string defaultValue...
      method IsEnvironmentFeatureEnabled (line 50) | public bool IsEnvironmentFeatureEnabled(string featureName, bool def...
      method IsTenantFeatureEnabled (line 52) | public bool IsTenantFeatureEnabled(string featureName, bool defaultV...
    method WrapPromptAgentWithBot (line 55) | public static BotDefinition WrapPromptAgentWithBot(this GptComponentMe...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/AggregatorPromptAgentFactory.cs
  class AggregatorPromptAgentFactory (line 13) | public sealed class AggregatorPromptAgentFactory : PromptAgentFactory
    method AggregatorPromptAgentFactory (line 22) | public AggregatorPromptAgentFactory(params PromptAgentFactory[] agentF...
    method TryCreateAsync (line 35) | public override async Task<AIAgent?> TryCreateAsync(GptComponentMetada...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/ChatClient/ChatClientPromptAgentFactory.cs
  class ChatClientPromptAgentFactory (line 18) | public sealed class ChatClientPromptAgentFactory : PromptAgentFactory
    method ChatClientPromptAgentFactory (line 23) | public ChatClientPromptAgentFactory(IChatClient chatClient, IList<AIFu...
    method TryCreateAsync (line 33) | public override Task<AIAgent?> TryCreateAsync(GptComponentMetadata pro...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/BoolExpressionExtensions.cs
  class BoolExpressionExtensions (line 11) | internal static class BoolExpressionExtensions
    method Eval (line 19) | internal static bool? Eval(this BoolExpression? expression, RecalcEngi...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/CodeInterpreterToolExtensions.cs
  class CodeInterpreterToolExtensions (line 11) | internal static class CodeInterpreterToolExtensions
    method AsCodeInterpreterTool (line 17) | internal static HostedCodeInterpreterTool AsCodeInterpreterTool(this C...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/FileSearchToolExtensions.cs
  class FileSearchToolExtensions (line 12) | internal static class FileSearchToolExtensions
    method CreateFileSearchTool (line 18) | internal static HostedFileSearchTool CreateFileSearchTool(this FileSea...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/FunctionToolExtensions.cs
  class FunctionToolExtensions (line 14) | internal static class FunctionToolExtensions
    method CreateOrGetAITool (line 25) | internal static AITool CreateOrGetAITool(this InvokeClientTaskAction t...
    method Matches (line 52) | internal static bool Matches(this InvokeClientTaskAction tool, AIFunct...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/IntExpressionExtensions.cs
  class IntExpressionExtensions (line 12) | internal static class IntExpressionExtensions
    method Eval (line 20) | internal static long? Eval(this IntExpression? expression, RecalcEngin...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/McpServerToolApprovalModeExtensions.cs
  class McpServerToolApprovalModeExtensions (line 10) | internal static class McpServerToolApprovalModeExtensions
    method AsHostedMcpServerToolApprovalMode (line 16) | internal static HostedMcpServerToolApprovalMode AsHostedMcpServerToolA...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/McpServerToolExtensions.cs
  class McpServerToolExtensions (line 12) | internal static class McpServerToolExtensions
    method CreateHostedMcpTool (line 18) | internal static HostedMcpServerTool CreateHostedMcpTool(this McpServer...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/ModelOptionsExtensions.cs
  class ModelOptionsExtensions (line 13) | internal static class ModelOptionsExtensions
    method AsChatToolMode (line 19) | internal static ChatToolMode? AsChatToolMode(this ModelOptions modelOp...
    method GetAdditionalProperties (line 43) | internal static AdditionalPropertiesDictionary? GetAdditionalPropertie...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/NumberExpressionExtensions.cs
  class NumberExpressionExtensions (line 12) | internal static class NumberExpressionExtensions
    method Eval (line 20) | internal static double? Eval(this NumberExpression? expression, Recalc...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/PromptAgentExtensions.cs
  class PromptAgentExtensions (line 14) | public static class PromptAgentExtensions
    method GetChatOptions (line 22) | public static ChatOptions? GetChatOptions(this GptComponentMetadata pr...
    method GetAITools (line 61) | internal static List<AITool>? GetAITools(this GptComponentMetadata pro...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/PropertyInfoExtensions.cs
  class PropertyInfoExtensions (line 11) | public static class PropertyInfoExtensions
    method AsObjectDictionary (line 18) | public static Dictionary<string, object> AsObjectDictionary(this IRead...
    method BuildPropertySchema (line 31) | private static Dictionary<string, object> BuildPropertySchema(Property...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/RecordDataTypeExtensions.cs
  class RecordDataTypeExtensions (line 13) | public static class RecordDataTypeExtensions
    method AsChatResponseFormat (line 19) | internal static ChatResponseFormat? AsChatResponseFormat(this RecordDa...
    method GetSchema (line 41) | public static JsonElement GetSchema(this RecordDataType recordDataType)
    method GetSchemaName (line 61) | private static string? GetSchemaName(this RecordDataType recordDataType)
    method GetSchemaDescription (line 71) | private static string? GetSchemaDescription(this RecordDataType record...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/RecordDataValueExtensions.cs
  class RecordDataValueExtensions (line 14) | public static class RecordDataValueExtensions
    method GetNumber (line 21) | public static decimal? GetNumber(this RecordDataValue recordData, stri...
    method GetBoolean (line 34) | public static bool? GetBoolean(this RecordDataValue recordData, string...
    method ToDictionary (line 46) | public static IReadOnlyDictionary<string, string> ToDictionary(this Re...
    method GetSchema (line 62) | public static JsonElement? GetSchema(this RecordDataValue recordData)
    method ToObject (line 91) | internal static object? ToObject(this DataValue? value)

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/StringExpressionExtensions.cs
  class StringExpressionExtensions (line 11) | public static class StringExpressionExtensions
    method Eval (line 19) | public static string? Eval(this StringExpression? expression, RecalcEn...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/WebSearchToolExtensions.cs
  class WebSearchToolExtensions (line 11) | internal static class WebSearchToolExtensions
    method CreateWebSearchTool (line 17) | internal static HostedWebSearchTool CreateWebSearchTool(this WebSearch...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/Extensions/YamlAgentFactoryExtensions.cs
  class YamlAgentFactoryExtensions (line 13) | public static class YamlAgentFactoryExtensions
    method CreateFromYamlAsync (line 21) | [RequiresDynamicCode("Calls YamlDotNet.Serialization.DeserializerBuild...

FILE: dotnet/src/Microsoft.Agents.AI.Declarative/PromptAgentFactory.cs
  class PromptAgentFactory (line 16) | public abstract class PromptAgentFactory
    method PromptAgentFactory (line 23) | protected PromptAgentFactory(RecalcEngine? engine = null, IConfigurati...
    method CreateAsync (line 48) | public async Task<AIAgent> CreateAsync(GptComponentMetadata promptAgen...
    method TryCreateAsync (line 62) | public abstract Task<AIAgent?> TryCreateAsync(GptComponentMetadata pro...

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/DevUIExtensions.cs
  class DevUIExtensions (line 10) | public static class DevUIExtensions
    method MapDevUI (line 30) | public static IEndpointConventionBuilder MapDevUI(
    method MapDevUI (line 51) | internal static IEndpointConventionBuilder MapDevUI(

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/DevUIMiddleware.cs
  class DevUIMiddleware (line 17) | internal sealed partial class DevUIMiddleware
    method NewlineRegex (line 19) | [GeneratedRegex(@"[\r\n]+")]
    method DevUIMiddleware (line 41) | public DevUIMiddleware(ILogger<DevUIMiddleware> logger, string basePath)
    method HandleRequestAsync (line 63) | public async Task HandleRequestAsync(HttpContext context)
    method TryServeResourceAsync (line 124) | private async Task<bool> TryServeResourceAsync(HttpContext context, st...
    method IsGZipAccepted (line 195) | private static bool IsGZipAccepted(HttpRequest httpRequest)
    method CreateResourceEntry (line 216) | private static ResourceEntry CreateResourceEntry(string resourceName)
    class ResourceEntry (line 250) | private sealed class ResourceEntry(string resourceName, byte[] decompr...

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/Entities/EntityInfo.cs
  type EnvVarRequirement (line 11) | internal sealed record EnvVarRequirement(
  type EntityInfo (line 28) | internal sealed record EntityInfo(
  type DiscoveryResponse (line 106) | internal sealed record DiscoveryResponse(

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/Entities/MetaResponse.cs
  type MetaResponse (line 18) | internal sealed record MetaResponse

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/Entities/WorkflowSerializationExtensions.cs
  class WorkflowSerializationExtensions (line 13) | internal static class WorkflowSerializationExtensions
    method ToDevUIDict (line 24) | public static Dictionary<string, JsonElement> ToDevUIDict(this Workflo...
    method ConvertExecutorsToDict (line 60) | private static Dictionary<string, Dictionary<string, string>> ConvertE...
    method ConvertEdgesToEdgeGroups (line 97) | private static List<Dictionary<string, JsonElement>> ConvertEdgesToEdg...
    method Serialize (line 206) | private static JsonElement Serialize<T>(T value, JsonTypeInfo<T> typeI...

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/EntitiesApiExtensions.cs
  class EntitiesApiExtensions (line 13) | internal static class EntitiesApiExtensions
    method MapEntities (line 29) | public static IEndpointConventionBuilder MapEntities(this IEndpointRou...
    method ListEntitiesAsync (line 55) | private static async Task<IResult> ListEntitiesAsync(
    method GetEntityInfoAsync (line 87) | private static async Task<IResult> GetEntityInfoAsync(
    method DiscoverAgents (line 123) | private static IEnumerable<EntityInfo> DiscoverAgents(IEnumerable<AIAg...
    method DiscoverWorkflows (line 145) | private static IEnumerable<EntityInfo> DiscoverWorkflows(IEnumerable<W...
    method CreateAgentEntityInfo (line 167) | private static EntityInfo CreateAgentEntityInfo(AIAgent agent)
    method CreateWorkflowEntityInfo (line 249) | private static EntityInfo CreateWorkflowEntityInfo(Workflow workflow)
    method GetRegisteredEntities (line 294) | private static IEnumerable<T> GetRegisteredEntities<T>(IServiceProvide...

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/HostApplicationBuilderExtensions.cs
  class MicrosoftAgentAIDevUIHostApplicationBuilderExtensions (line 8) | public static class MicrosoftAgentAIDevUIHostApplicationBuilderExtensions
    method AddDevUI (line 15) | public static IHostApplicationBuilder AddDevUI(this IHostApplicationBu...

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/MetaApiExtensions.cs
  class MetaApiExtensions (line 10) | internal static class MetaApiExtensions
    method MapMeta (line 25) | public static IEndpointConventionBuilder MapMeta(this IEndpointRouteBu...
    method GetMeta (line 34) | private static IResult GetMeta()

FILE: dotnet/src/Microsoft.Agents.AI.DevUI/ServiceCollectionsExtensions.cs
  class MicrosoftAgentAIDevUIServiceCollectionsExtensions (line 12) | public static class MicrosoftAgentAIDevUIServiceCollectionsExtensions
    method AddDevUI (line 19) | public static IServiceCollection AddDevUI(this IServiceCollection serv...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/AIAgentExtensions.cs
  class AIAgentExtensions (line 11) | public static class AIAgentExtensions
    method AsDurableAgentProxy (line 29) | public static AIAgent AsDurableAgentProxy(this AIAgent agent, IService...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/AgentEntity.cs
  class AgentEntity (line 13) | internal class AgentEntity(IServiceProvider services, CancellationToken ...
    method RunAgentAsync (line 24) | public Task<AgentResponse> RunAgentAsync(RunRequest request)
    method Run (line 32) | public async Task<AgentResponse> Run(RunRequest request)
    method CheckAndDeleteIfExpired (line 166) | public void CheckAndDeleteIfExpired()
    method ScheduleDeletionCheck (line 197) | private void ScheduleDeletionCheck(AgentSessionId sessionId, ILogger l...
    method GetAgent (line 217) | private AIAgent GetAgent(AgentSessionId sessionId)
    method GetLogger (line 229) | private ILogger GetLogger(string agentName, string sessionKey)

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/AgentNotRegisteredException.cs
  class AgentNotRegisteredException (line 8) | public sealed class AgentNotRegisteredException : InvalidOperationException
    method AgentNotRegisteredException (line 11) | private AgentNotRegisteredException()
    method AgentNotRegisteredException (line 20) | public AgentNotRegisteredException(string agentName)
    method AgentNotRegisteredException (line 31) | public AgentNotRegisteredException(string agentName, Exception? innerE...
    method GetMessage (line 42) | private static string GetMessage(string agentName)

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/AgentRunHandle.cs
  class AgentRunHandle (line 13) | internal sealed class AgentRunHandle
    method AgentRunHandle (line 18) | internal AgentRunHandle(
    method ReadAgentResponseAsync (line 47) | public async Task<AgentResponse> ReadAgentResponseAsync(CancellationTo...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/AgentSessionId.cs
  type AgentSessionId (line 12) | [JsonConverter(typeof(AgentSessionIdJsonConverter))]
    method AgentSessionId (line 23) | public AgentSessionId(string name, string key)
    method ToEntityName (line 44) | internal static string ToEntityName(string name) => $"{EntityNamePrefi...
    method ToEntityId (line 50) | internal EntityInstanceId ToEntityId() => this._entityId;
    method WithRandomKey (line 57) | public static AgentSessionId WithRandomKey(string name) =>
    method Equals (line 83) | public bool Equals(AgentSessionId other) => this == other;
    method Equals (line 90) | public override bool Equals(object? obj) => obj is AgentSessionId othe...
    method GetHashCode (line 96) | public override int GetHashCode() => this._entityId.GetHashCode();
    method ToString (line 102) | public override string ToString() => this._entityId.ToString();
    method Parse (line 111) | public static AgentSessionId Parse(string sessionIdString)
    class AgentSessionIdJsonConverter (line 148) | public sealed class AgentSessionIdJsonConverter : JsonConverter<AgentS...
      method Read (line 151) | public override AgentSessionId Read(ref Utf8JsonReader reader, Type ...
      method Write (line 164) | public override void Write(Utf8JsonWriter writer, AgentSessionId val...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DefaultDurableAgentClient.cs
  class DefaultDurableAgentClient (line 9) | internal class DefaultDurableAgentClient(DurableTaskClient client, ILogg...
    method RunAgentAsync (line 14) | public async Task<AgentRunHandle> RunAgentAsync(

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAIAgent.cs
  class DurableAIAgent (line 15) | public sealed class DurableAIAgent : AIAgent
    method DurableAIAgent (line 25) | internal DurableAIAgent(TaskOrchestrationContext context, string agent...
    method CreateSessionCoreAsync (line 36) | protected override ValueTask<AgentSession> CreateSessionCoreAsync(Canc...
    method SerializeSessionCoreAsync (line 49) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 71) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync(
    method RunCoreAsync (line 89) | protected override async Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 159) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method RunAsync (line 191) | public new Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 215) | public new Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 244) | public new Task<AgentResponse<T>> RunAsync<T>(
    method RunAsync (line 272) | public new async Task<AgentResponse<T>> RunAsync<T>(

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAIAgentProxy.cs
  class DurableAIAgentProxy (line 8) | internal class DurableAIAgentProxy(string name, IDurableAgentClient agen...
    method SerializeSessionCoreAsync (line 14) | protected override ValueTask<JsonElement> SerializeSessionCoreAsync(Ag...
    method DeserializeSessionCoreAsync (line 29) | protected override ValueTask<AgentSession> DeserializeSessionCoreAsync(
    method CreateSessionCoreAsync (line 36) | protected override ValueTask<AgentSession> CreateSessionCoreAsync(Canc...
    method RunCoreAsync (line 41) | protected override async Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 93) | protected override IAsyncEnumerable<AgentResponseUpdate> RunCoreStream...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAgentContext.cs
  class DurableAgentContext (line 15) | public class DurableAgentContext
    method DurableAgentContext (line 21) | internal DurableAgentContext(
    method SetCurrent (line 61) | internal static void SetCurrent(DurableAgentContext context)
    method ClearCurrent (line 75) | internal static void ClearCurrent()
    method ScheduleNewOrchestration (line 92) | public string ScheduleNewOrchestration(
    method GetOrchestrationStatusAsync (line 106) | public Task<OrchestrationMetadata?> GetOrchestrationStatusAsync(string...
    method RaiseOrchestrationEventAsync (line 118) | public Task RaiseOrchestrationEventAsync(string instanceId, string eve...
    method GetService (line 133) | public TService? GetService<TService>(object? serviceKey = null)
    method GetService (line 147) | public object? GetService(Type serviceType, object? serviceKey = null)

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAgentJsonUtilities.cs
  class DurableAgentJsonUtilities (line 30) | internal static partial class DurableAgentJsonUtilities
    method Serialize (line 42) | public static JsonElement Serialize(this IEnumerable<ChatMessage> mess...
    method DeserializeMessages (line 50) | public static List<ChatMessage> DeserializeMessages(this JsonElement e...
    method CreateDefaultOptions (line 57) | [UnconditionalSuppressMessage("ReflectionAnalysis", "IL3050:RequiresDy...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAgentRunOptions.cs
  class DurableAgentRunOptions (line 8) | public sealed class DurableAgentRunOptions : AgentRunOptions
    method DurableAgentRunOptions (line 13) | public DurableAgentRunOptions()
    method DurableAgentRunOptions (line 21) | private DurableAgentRunOptions(DurableAgentRunOptions options)
    method Clone (line 50) | public override AgentRunOptions Clone() => new DurableAgentRunOptions(...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAgentSession.cs
  class DurableAgentSession (line 12) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method DurableAgentSession (line 15) | internal DurableAgentSession(AgentSessionId sessionId)
    method DurableAgentSession (line 20) | [JsonConstructor]
    method Serialize (line 34) | internal JsonElement Serialize(JsonSerializerOptions? jsonSerializerOp...
    method Deserialize (line 46) | internal static DurableAgentSession Deserialize(JsonElement serialized...
    method GetService (line 64) | public override object? GetService(Type serviceType, object? serviceKe...
    method ToString (line 75) | public override string ToString()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableAgentsOptions.cs
  class DurableAgentsOptions (line 8) | public sealed class DurableAgentsOptions
    method DurableAgentsOptions (line 14) | internal DurableAgentsOptions()
    method AddAIAgentFactory (line 63) | public DurableAgentsOptions AddAIAgentFactory(string name, Func<IServi...
    method AddAIAgents (line 82) | public DurableAgentsOptions AddAIAgents(params IEnumerable<AIAgent> ag...
    method AddAIAgent (line 103) | public DurableAgentsOptions AddAIAgent(AIAgent agent, TimeSpan? timeTo...
    method GetAgentFactories (line 130) | internal IReadOnlyDictionary<string, Func<IServiceProvider, AIAgent>> ...
    method GetTimeToLive (line 140) | internal TimeSpan? GetTimeToLive(string agentName)
    method ContainsAgent (line 150) | internal bool ContainsAgent(string agentName)

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableDataConverter.cs
  class DurableDataConverter (line 18) | internal sealed class DurableDataConverter : DataConverter
    method Deserialize (line 26) | [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "F...
    method Serialize (line 46) | [return: NotNullIfNotNull(nameof(value))]

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/DurableOptions.cs
  class DurableOptions (line 11) | [DebuggerDisplay("Workflows = {Workflows.Workflows.Count}, Agents = {Age...
    method DurableOptions (line 17) | internal DurableOptions()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/EntityAgentWrapper.cs
  class EntityAgentWrapper (line 11) | internal sealed class EntityAgentWrapper(
    method RunCoreAsync (line 24) | protected override async Task<AgentResponse> RunCoreAsync(
    method RunCoreStreamingAsync (line 40) | protected override async IAsyncEnumerable<AgentResponseUpdate> RunCore...
    method GetService (line 58) | public override object? GetService(Type serviceType, object? serviceKe...
    method GetAgentEntityRunOptions (line 71) | private AgentRunOptions GetAgentEntityRunOptions(AgentRunOptions? opti...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/IAgentResponseHandler.cs
  type IAgentResponseHandler (line 8) | public interface IAgentResponseHandler
    method OnStreamingResponseUpdateAsync (line 19) | ValueTask OnStreamingResponseUpdateAsync(
    method OnAgentResponseAsync (line 32) | ValueTask OnAgentResponseAsync(

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/IDurableAgentClient.cs
  type IDurableAgentClient (line 8) | internal interface IDurableAgentClient
    method RunAgentAsync (line 17) | Task<AgentRunHandle> RunAgentAsync(

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/Logs.cs
  class Logs (line 7) | internal static partial class Logs
    method LogAgentRequest (line 9) | [LoggerMessage(
    method LogAgentResponse (line 19) | [LoggerMessage(
    method LogSignallingAgent (line 32) | [LoggerMessage(
    method LogStartPollingForResponse (line 38) | [LoggerMessage(
    method LogDonePollingForResponse (line 44) | [LoggerMessage(
    method LogTTLExpirationTimeUpdated (line 50) | [LoggerMessage(
    method LogTTLDeletionScheduled (line 59) | [LoggerMessage(
    method LogTTLDeletionCheck (line 68) | [LoggerMessage(
    method LogTTLEntityExpired (line 78) | [LoggerMessage(
    method LogTTLRescheduled (line 87) | [LoggerMessage(
    method LogTTLExpirationTimeCleared (line 96) | [LoggerMessage(
    method LogWorkflowStarting (line 106) | [LoggerMessage(
    method LogSuperstepStarting (line 115) | [LoggerMessage(
    method LogSuperstepExecutors (line 124) | [LoggerMessage(
    method LogWorkflowCompleted (line 133) | [LoggerMessage(
    method LogWorkflowMaxSuperstepsExceeded (line 140) | [LoggerMessage(
    method LogFanInAggregated (line 150) | [LoggerMessage(
    method LogExecutorResultReceived (line 160) | [LoggerMessage(
    method LogDispatchingExecutor (line 170) | [LoggerMessage(
    method LogAgentNotFound (line 179) | [LoggerMessage(
    method LogEdgeConditionFalse (line 187) | [LoggerMessage(
    method LogEdgeConditionEvaluationFailed (line 196) | [LoggerMessage(
    method LogEdgeRoutingMessage (line 206) | [LoggerMessage(
    method LogWaitingForExternalEvent (line 215) | [LoggerMessage(
    method LogReceivedExternalEvent (line 223) | [LoggerMessage(

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/RunRequest.cs
  type RunRequest (line 11) | public record RunRequest

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/ServiceCollectionExtensions.cs
  class ServiceCollectionExtensions (line 17) | public static class ServiceCollectionExtensions
    method GetDurableAgentProxy (line 26) | public static AIAgent GetDurableAgentProxy(this IServiceProvider servi...
    method ConfigureDurableAgents (line 50) | public static IServiceCollection ConfigureDurableAgents(
    method ConfigureDurableWorkflows (line 80) | public static IServiceCollection ConfigureDurableWorkflows(
    method ConfigureDurableOptions (line 125) | public static IServiceCollection ConfigureDurableOptions(
    method GetOrCreateSharedOptions (line 149) | private static DurableOptions GetOrCreateSharedOptions(IServiceCollect...
    method RegisterAgentKeyedServices (line 166) | private static void RegisterAgentKeyedServices(IServiceCollection serv...
    method EnsureDurableServicesRegistered (line 182) | private static void EnsureDurableServicesRegistered(
    method RegisterTasksFromOptions (line 230) | private static void RegisterTasksFromOptions(DurableTaskRegistry regis...
    method BuildWorkflowRegistrationRecursive (line 275) | private static void BuildWorkflowRegistrationRecursive(
    method BuildWorkflowRegistration (line 308) | private static WorkflowRegistrationInfo BuildWorkflowRegistration(
    method IsActivityBinding (line 337) | private static bool IsActivityBinding(ExecutorBinding binding)
    method RunWorkflowOrchestrationAsync (line 342) | private static async Task<DurableWorkflowResult> RunWorkflowOrchestrat...
    type WorkflowRegistrationInfo (line 354) | private sealed record WorkflowRegistrationInfo(string OrchestrationNam...
    type ActivityRegistrationInfo (line 356) | private sealed record ActivityRegistrationInfo(string ActivityName, Ex...
    method ValidateAgentIsRegistered (line 369) | internal static void ValidateAgentIsRegistered(IServiceProvider servic...

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentState.cs
  class DurableAgentState (line 10) | [JsonConverter(typeof(DurableAgentStateJsonConverter))]

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateContent.cs
  class DurableAgentStateContent (line 12) | [JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
    method ToAIContent (line 36) | public abstract AIContent ToAIContent();
    method FromAIContent (line 43) | public static DurableAgentStateContent FromAIContent(AIContent content)

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateData.cs
  class DurableAgentStateData (line 11) | internal sealed class DurableAgentStateData

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateDataContent.cs
  class DurableAgentStateDataContent (line 11) | internal sealed class DurableAgentStateDataContent : DurableAgentStateCo...
    method FromDataContent (line 31) | public static DurableAgentStateDataContent FromDataContent(DataContent...
    method ToAIContent (line 41) | public override AIContent ToAIContent()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateEntry.cs
  class DurableAgentStateEntry (line 12) | [JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateErrorContent.cs
  class DurableAgentStateErrorContent (line 11) | internal sealed class DurableAgentStateErrorContent : DurableAgentStateC...
    method FromErrorContent (line 40) | public static DurableAgentStateErrorContent FromErrorContent(ErrorCont...
    method ToAIContent (line 51) | public override AIContent ToAIContent()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateFunctionCallContent.cs
  class DurableAgentStateFunctionCallContent (line 12) | internal sealed class DurableAgentStateFunctionCallContent : DurableAgen...
    method FromFunctionCallContent (line 45) | public static DurableAgentStateFunctionCallContent FromFunctionCallCon...
    method ToAIContent (line 56) | public override AIContent ToAIContent()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateFunctionResultContent.cs
  class DurableAgentStateFunctionResultContent (line 11) | internal sealed class DurableAgentStateFunctionResultContent : DurableAg...
    method FromFunctionResultContent (line 35) | public static DurableAgentStateFunctionResultContent FromFunctionResul...
    method ToAIContent (line 45) | public override AIContent ToAIContent()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateHostedFileContent.cs
  class DurableAgentStateHostedFileContent (line 11) | internal sealed class DurableAgentStateHostedFileContent : DurableAgentS...
    method FromHostedFileContent (line 26) | public static DurableAgentStateHostedFileContent FromHostedFileContent...
    method ToAIContent (line 35) | public override AIContent ToAIContent()

FILE: dotnet/src/Microsoft.Agents.AI.DurableTask/State/DurableAgentStateHostedVectorStoreContent.cs
  class DurableAgentStateHostedVectorStoreContent (line 11) | internal sealed 
Copy disabled (too large) Download .json
Condensed preview — 3818 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (27,032K chars).
[
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 534,
    "preview": "{\n  \"name\": \"Python 3\",\n  \"image\": \"mcr.microsoft.com/devcontainers/python:3.13-bullseye\",\n  \"features\": {\n    \"ghcr.io/"
  },
  {
    "path": ".devcontainer/dotnet/devcontainer.json",
    "chars": 1005,
    "preview": "{\n  \"name\": \"C# (.NET)\",\n  \"image\": \"mcr.microsoft.com/devcontainers/dotnet\",\n  \"features\": {\n    \"ghcr.io/devcontainers"
  },
  {
    "path": ".gitattributes",
    "chars": 146,
    "preview": "# Auto-detect text files, ensure they use LF.\n* text=auto eol=lf working-tree-encoding=UTF-8\n# Bash scripts\n*.sh  text e"
  },
  {
    "path": ".github/.linkspector.yml",
    "chars": 1008,
    "preview": "dirs:\n  - .\nexcludedFiles:\n  - ./python/CHANGELOG.md\nignorePatterns:\n  - pattern: \"/github/\"\n  - pattern: \"./actions\"\n  "
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 512,
    "preview": "# Code ownership assignments\n# https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/cust"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 320,
    "preview": "blank_issues_enabled: true\ncontact_links:\n  - name: Documentation\n    url: https://aka.ms/agent-framework\n    about: Che"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/dotnet-issue.yml",
    "chars": 1900,
    "preview": "name: .NET Bug Report\ndescription: Report a bug in the Agent Framework .NET SDK\ntitle: \".NET: [Bug]: \"\nlabels: [\"bug\", \""
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 1227,
    "preview": "name: Feature Request\ndescription: Request a new feature for Microsoft Agent Framework\ntitle: \"[Feature]: \"\ntype: featur"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/python-issue.yml",
    "chars": 1899,
    "preview": "name: Python Bug Report\ndescription: Report a bug in the Agent Framework Python SDK\ntitle: \"Python: [Bug]: \"\nlabels: [\"b"
  },
  {
    "path": ".github/actions/azure-functions-integration-setup/action.yml",
    "chars": 2319,
    "preview": "name: Azure Functions Integration Test Setup\ndescription: Prepare local emulators and tools for Azure Functions integrat"
  },
  {
    "path": ".github/actions/python-setup/action.yml",
    "chars": 1559,
    "preview": "name: Reusable Setup UV\ndescription: Reusable workflow to setup uv environment\n\ninputs:\n    python-version:\n      descri"
  },
  {
    "path": ".github/actions/sample-validation-setup/action.yml",
    "chars": 1344,
    "preview": "name: Sample Validation Setup\ndescription: Sets up the environment for sample validation (checkout, Node.js, Copilot CLI"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 946,
    "preview": "# GitHub Copilot Instructions\n\nMicrosoft Agent Framework - a multi-language framework for building, orchestrating, and d"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 1642,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/instructions/durabletask-dotnet.instructions.md",
    "chars": 1065,
    "preview": "---\napplyTo: \"dotnet/src/Microsoft.Agents.AI.DurableTask/**,dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/**\"\n--"
  },
  {
    "path": ".github/labeler.yml",
    "chars": 1010,
    "preview": "# Add 'python' label to any change within the 'python' directory\npython:\n- changed-files:\n  - any-glob-to-any-file:\n    "
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 939,
    "preview": "### Motivation and Context\n\n<!-- Thank you for your contribution to the Agent Framework repo!\nPlease help reviewers and "
  },
  {
    "path": ".github/scripts/stale_issue_pr_ping.py",
    "chars": 7042,
    "preview": "# Copyright (c) Microsoft. All rights reserved.\n\n\"\"\"Scan open issues and PRs labeled 'waiting-for-author' for stale foll"
  },
  {
    "path": ".github/tests/test_stale_issue_pr_ping.py",
    "chars": 11247,
    "preview": "# Copyright (c) Microsoft. All rights reserved.\n\n\"\"\"Tests for stale_issue_pr_ping.py.\"\"\"\n\nfrom __future__ import annotat"
  },
  {
    "path": ".github/upgrades/prompts/SemanticKernelToAgentFramework.md",
    "chars": 58360,
    "preview": "# Instructions for migrating from Semantic Kernel Agents to Agent Framework in .NET projects.\n\n## Scope\n\nWhen you are as"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 2971,
    "preview": "# CodeQL is the code analysis engine developed by GitHub to automate security checks.\n# The results are shown as code sc"
  },
  {
    "path": ".github/workflows/dotnet-build-and-test.yml",
    "chars": 14136,
    "preview": "#\n# This workflow will build all .slnx files in the dotnet folder, and run all unit tests and integration tests using do"
  },
  {
    "path": ".github/workflows/dotnet-format.yml",
    "chars": 3713,
    "preview": "#\n# This workflow runs the dotnet formatter on all c-sharp code.\n#\n\nname: dotnet-format\n\non:\n  workflow_dispatch:\n  pull"
  },
  {
    "path": ".github/workflows/dotnet-integration-tests.yml",
    "chars": 4335,
    "preview": "#\n# Dedicated .NET integration tests workflow, called from the manual integration test orchestrator.\n# Only runs integra"
  },
  {
    "path": ".github/workflows/integration-tests-manual.yml",
    "chars": 4739,
    "preview": "#\n# This workflow allows manually running integration tests against an open PR or a branch.\n# Go to Actions → \"Integrati"
  },
  {
    "path": ".github/workflows/label-issues.yml",
    "chars": 4548,
    "preview": "name: Label issues\non:\n  issues:\n    types:\n      - reopened\n      - opened\n\njobs:\n  label_issues:\n    name: \"Issue: add"
  },
  {
    "path": ".github/workflows/label-pr.yml",
    "chars": 566,
    "preview": "# This workflow will triage pull requests and apply a label based on the\n# paths that are modified in the pull request.\n"
  },
  {
    "path": ".github/workflows/label-title-prefix.yml",
    "chars": 2455,
    "preview": "name: Label title prefix\non:\n  issues:\n    types: [labeled]\n  pull_request_target:\n    types: [labeled]\n\njobs:\n  add_tit"
  },
  {
    "path": ".github/workflows/markdown-link-check.yml",
    "chars": 780,
    "preview": "name: Check .md links\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [\"main\"]\n    paths:\n      - '**.md'\n      "
  },
  {
    "path": ".github/workflows/merge-gatekeeper.yml",
    "chars": 1346,
    "preview": "name: Merge Gatekeeper\n\non:\n  pull_request:\n    branches: [ \"main\", \"feature*\" ]\n  merge_group:\n    branches: [\"main\"]\n\n"
  },
  {
    "path": ".github/workflows/python-check-coverage.py",
    "chars": 13476,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Microsoft. All rights reserved.\n\"\"\"Check Python test coverage against threshold f"
  },
  {
    "path": ".github/workflows/python-code-quality.yml",
    "chars": 3752,
    "preview": "name: Python - Code Quality\non:\n  merge_group:\n  workflow_dispatch:\n  pull_request:\n    branches: [\"main\"]\n    paths:\n  "
  },
  {
    "path": ".github/workflows/python-dependency-range-validation.yml",
    "chars": 8880,
    "preview": "# Probe the highest allowed dependency versions, then open issues/PRs from the passing updates.\nname: Python - Dependenc"
  },
  {
    "path": ".github/workflows/python-dev-dependency-upgrade.yml",
    "chars": 3308,
    "preview": "name: Python - Dev Dependency Upgrade\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: write\n  pull-requests: write\n\n"
  },
  {
    "path": ".github/workflows/python-docs.yml",
    "chars": 1007,
    "preview": "name: Python - Create Docs\n\non:\n  workflow_dispatch:\n  release:\n    types: [published]\n\npermissions:\n  contents: write\n "
  },
  {
    "path": ".github/workflows/python-integration-tests.yml",
    "chars": 11444,
    "preview": "#\n# Dedicated Python integration tests workflow, called from the manual integration test orchestrator.\n# Runs all tests "
  },
  {
    "path": ".github/workflows/python-lab-tests.yml",
    "chars": 3032,
    "preview": "name: Python - Lab Tests\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [\"main\"]\n    paths:\n      - \"python/pac"
  },
  {
    "path": ".github/workflows/python-merge-tests.yml",
    "chars": 17673,
    "preview": "name: Python - Merge - Tests\n#\n# NOTE: This workflow and python-integration-tests.yml share the same set of\n# parallel t"
  },
  {
    "path": ".github/workflows/python-release.yml",
    "chars": 1953,
    "preview": "name: Python - Build Release Assets\n\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: write\n  id-token: w"
  },
  {
    "path": ".github/workflows/python-sample-validation.yml",
    "chars": 11693,
    "preview": "name: Python - Sample Validation\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: \"0 0 * * *\" # Run at midnight UTC dai"
  },
  {
    "path": ".github/workflows/python-test-coverage-report.yml",
    "chars": 2013,
    "preview": "name: Python - Test Coverage Report\n\non:\n  workflow_run:\n    workflows: [\"Python - Test Coverage\"]\n    types:\n      - co"
  },
  {
    "path": ".github/workflows/python-test-coverage.yml",
    "chars": 1725,
    "preview": "name: Python - Test Coverage\n\non:\n  pull_request:\n    branches: [\"main\", \"feature*\"]\n    paths:\n      - \"python/packages"
  },
  {
    "path": ".github/workflows/python-tests.yml",
    "chars": 1545,
    "preview": "name: Python - Tests\n\non:\n  pull_request:\n    branches: [\"main\", \"feature*\"]\n    paths:\n      - \"python/**\"\nenv:\n  # Con"
  },
  {
    "path": ".github/workflows/stale-issue-pr-ping.yml",
    "chars": 1279,
    "preview": "name: Stale issue and PR ping\n\non:\n  schedule:\n    - cron: '0 0 * * *'  # Midnight UTC daily\n  workflow_dispatch:\n    in"
  },
  {
    "path": ".gitignore",
    "chars": 4342,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 444,
    "preview": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://op"
  },
  {
    "path": "COMMUNITY.md",
    "chars": 1519,
    "preview": "# Welcome to the Agent Framework Community\n\nBelow are some ways that you can get involved in the Agent Framework Communi"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5449,
    "preview": "# Contributing to Agent Framework\n\nYou can contribute to Agent Framework with issues and pull requests (PRs). Simply\nfil"
  },
  {
    "path": "LICENSE",
    "chars": 1141,
    "preview": "    MIT License\n\n    Copyright (c) Microsoft Corporation.\n\n    Permission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "README.md",
    "chars": 8943,
    "preview": "![Microsoft Agent Framework](docs/assets/readme-banner.png)\n\n# Welcome to Microsoft Agent Framework!\n\n[![Microsoft Azure"
  },
  {
    "path": "SECURITY.md",
    "chars": 2656,
    "preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
  },
  {
    "path": "SUPPORT.md",
    "chars": 1280,
    "preview": "# Support\r\n\r\n## How to file issues and get help  \r\n\r\nThis project uses GitHub Issues to track bugs and feature requests."
  },
  {
    "path": "TRANSPARENCY_FAQ.md",
    "chars": 11987,
    "preview": "# Responsible AI Transparency FAQs\n\n**What is Microsoft Agent Framework?**\n\nMicrosoft Agent Framework is a comprehensive"
  },
  {
    "path": "agent-samples/README.md",
    "chars": 224,
    "preview": "# Declarative Agents\n\nThis folder contains sample agent definitions that can be run using the declarative agent support,"
  },
  {
    "path": "agent-samples/azure/AzureOpenAI.yaml",
    "chars": 787,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/azure/AzureOpenAIAssistants.yaml",
    "chars": 777,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/azure/AzureOpenAIChat.yaml",
    "chars": 765,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/azure/AzureOpenAIResponses.yaml",
    "chars": 775,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/chatclient/Assistant.yaml",
    "chars": 532,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/chatclient/GetWeather.yaml",
    "chars": 813,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/foundry/FoundryAgent.yaml",
    "chars": 644,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/foundry/MicrosoftLearnAgent.yaml",
    "chars": 586,
    "preview": "kind: Prompt\nname: MicrosoftLearnAgent\ndescription: Microsoft Learn Agent\ninstructions: You answer questions by searchin"
  },
  {
    "path": "agent-samples/foundry/PersistentAgent.yaml",
    "chars": 667,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/openai/OpenAI.yaml",
    "chars": 833,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/openai/OpenAIAssistants.yaml",
    "chars": 843,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/openai/OpenAIChat.yaml",
    "chars": 831,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "agent-samples/openai/OpenAIResponses.yaml",
    "chars": 841,
    "preview": "kind: Prompt\nname: Assistant\ndescription: Helpful assistant\ninstructions: You are a helpful assistant. You answer questi"
  },
  {
    "path": "docs/FAQS.md",
    "chars": 2819,
    "preview": "# Frequently Asked Questions\n\n### How do I get access to nightly builds?\n\nNightly builds of the Agent Framework are avai"
  },
  {
    "path": "docs/decisions/0001-agent-run-response.md",
    "chars": 29954,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: accepted\ncontact: westey-m\ndate: 2025-07-10 "
  },
  {
    "path": "docs/decisions/0002-agent-tools.md",
    "chars": 53002,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: {proposed}\ncontact: {dmytrostruk}\ndate: {202"
  },
  {
    "path": "docs/decisions/0003-agent-opentelemetry-instrumentation.md",
    "chars": 6819,
    "preview": "---\nstatus: proposed\ncontact: rogerbarreto\ndate: 2025-07-14\ndeciders: stephentoub, markwallace-microsoft, rogerbarreto, "
  },
  {
    "path": "docs/decisions/0004-foundry-sdk-extensions.md",
    "chars": 3213,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: proposed\ncontact: markwallace-microsoft\ndate"
  },
  {
    "path": "docs/decisions/0005-python-naming-conventions.md",
    "chars": 6664,
    "preview": "---\nstatus: accepted\ncontact: eavanvalkenburg\ndate: 2025-09-04\ndeciders: markwallace-microsoft, dmytrostruk, peterychang"
  },
  {
    "path": "docs/decisions/0006-userapproval.md",
    "chars": 28744,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: accepted\ncontact: westey-m\ndate: 2025-09-12 "
  },
  {
    "path": "docs/decisions/0007-agent-filtering-middleware.md",
    "chars": 53583,
    "preview": "---\nstatus: proposed\ncontact: rogerbarreto\ndate: 2025-09-15\ndeciders: markwallace-microsoft, rogerbarreto, westey-m, dmy"
  },
  {
    "path": "docs/decisions/0008-python-subpackages.md",
    "chars": 8621,
    "preview": "---\nstatus: accepted\ncontact: eavanvalkenburg\ndate: 2025-09-19\ndeciders: eavanvalkenburg, markwallace-microsoft,  ekzhu,"
  },
  {
    "path": "docs/decisions/0009-support-long-running-operations.md",
    "chars": 91117,
    "preview": "---\nstatus: accepted\ncontact: sergeymenshykh\ndate: 2025-10-15\ndeciders: markwallace, rbarreto, westey-m, stephentoub\nin"
  },
  {
    "path": "docs/decisions/0010-ag-ui-support.md",
    "chars": 5227,
    "preview": "---\nstatus: accepted\ncontact: javiercn\ndate: 2025-10-29\ndeciders: javiercn, DeagleGross, moonbox3, markwallace-microsoft"
  },
  {
    "path": "docs/decisions/0011-create-get-agent-api.md",
    "chars": 16876,
    "preview": "---\nstatus: proposed\ncontact: dmytrostruk\ndate: 2025-12-12\ndeciders: dmytrostruk, markwallace-microsoft, eavanvalkenburg"
  },
  {
    "path": "docs/decisions/0012-python-typeddict-options.md",
    "chars": 5408,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: proposed\ncontact: eavanvalkenburg\ndate: 2026"
  },
  {
    "path": "docs/decisions/0013-python-get-response-simplification.md",
    "chars": 11154,
    "preview": "---\nstatus: Accepted\ncontact: eavanvalkenburg\ndate: 2026-01-06\ndeciders: markwallace-microsoft, dmytrostruk, taochenosu,"
  },
  {
    "path": "docs/decisions/0014-feature-collections.md",
    "chars": 23228,
    "preview": "---\nstatus: accepted\ncontact: westey-m\ndate: 2025-01-21\ndeciders: sergeymenshykh, markwallace, rbarreto, westey-m, steph"
  },
  {
    "path": "docs/decisions/0015-agent-run-context.md",
    "chars": 7170,
    "preview": "---\nstatus: proposed\ncontact: westey-m\ndate: 2026-01-27\ndeciders: sergeymenshykh, markwallace, rbarreto, dmytrostruk, we"
  },
  {
    "path": "docs/decisions/0016-python-context-middleware.md",
    "chars": 110816,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: accepted\ncontact: eavanvalkenburg\ndate: 2026"
  },
  {
    "path": "docs/decisions/0016-structured-output.md",
    "chars": 31938,
    "preview": "---\nstatus: proposed\ncontact: sergeymenshykh\ndate: 2026-01-22\ndeciders: rbarreto, westey-m, stephentoub\ninformed: {}\n---"
  },
  {
    "path": "docs/decisions/0017-agent-additional-properties.md",
    "chars": 12787,
    "preview": "---\nstatus: accepted\ncontact: westey-m\ndate: 2026-02-24\ndeciders: sergeymenshykh, markwallace, rbarreto, dmytrostruk, we"
  },
  {
    "path": "docs/decisions/0018-agentthread-serialization.md",
    "chars": 8957,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: accepted\ncontact: westey-m\ndate: 2026-02-25\n"
  },
  {
    "path": "docs/decisions/0019-python-context-compaction-strategy.md",
    "chars": 67852,
    "preview": "---\nstatus: accepted\ncontact: eavanvalkenburg\ndate: 2026-02-10\ndeciders: eavanvalkenburg, markwallace-microsoft, sphenry"
  },
  {
    "path": "docs/decisions/0020-foundry-evals-integration.md",
    "chars": 33840,
    "preview": "---\nstatus: accepted\ncontact: bentho\ndate: 2026-02-27\ndeciders: bentho, markwallace-microsoft, westey-m\nconsulted: Praty"
  },
  {
    "path": "docs/decisions/README.md",
    "chars": 1835,
    "preview": "# Architectural Decision Records (ADRs)\n\nAn Architectural Decision (AD) is a justified software design choice that addre"
  },
  {
    "path": "docs/decisions/adr-short-template.md",
    "chars": 1504,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: {proposed | rejected | accepted | deprecated"
  },
  {
    "path": "docs/decisions/adr-template.md",
    "chars": 3135,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: {proposed | rejected | accepted | deprecated"
  },
  {
    "path": "docs/design/python-package-setup.md",
    "chars": 15202,
    "preview": "# Python Package design for Agent Framework\n\n## Design goals\n* Developer experience is key\n    * the components needed f"
  },
  {
    "path": "docs/features/durable-agents/AGENTS.md",
    "chars": 3091,
    "preview": "# AGENTS.md\n\nInstructions for AI coding agents working on durable agents documentation.\n\n## Scope\n\nThis directory contai"
  },
  {
    "path": "docs/features/durable-agents/README.md",
    "chars": 13065,
    "preview": "# Durable agents\n\n## Overview\n\nDurable agents extend the standard Microsoft Agent Framework with **durable state managem"
  },
  {
    "path": "docs/features/durable-agents/durable-agents-ttl.md",
    "chars": 6431,
    "preview": "# Time-To-Live (TTL) for durable agent sessions\n\n## Overview\n\nThe durable agents automatically maintain conversation his"
  },
  {
    "path": "docs/features/vector-stores-and-embeddings/README.md",
    "chars": 25045,
    "preview": "# Vector Stores and Embeddings\n\n## Overview\n\nThis feature ports the vector store abstractions, embedding generator abstr"
  },
  {
    "path": "docs/specs/001-foundry-sdk-alignment.md",
    "chars": 13383,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: accepted\ncontact: markwallace\ndate: 2025-08-"
  },
  {
    "path": "docs/specs/spec-template.md",
    "chars": 2615,
    "preview": "---\n# These are optional elements. Feel free to remove any of them.\nstatus: {proposed | rejected | accepted | deprecated"
  },
  {
    "path": "dotnet/.editorconfig",
    "chars": 26429,
    "preview": "# To learn more about .editorconfig see https://aka.ms/editorconfigdocs\n###############################\n# Core EditorCon"
  },
  {
    "path": "dotnet/.github/skills/build-and-test/SKILL.md",
    "chars": 6443,
    "preview": "---\nname: build-and-test\ndescription: How to build and test .NET projects in the Agent Framework repository. Use this wh"
  },
  {
    "path": "dotnet/.github/skills/project-structure/SKILL.md",
    "chars": 1503,
    "preview": "---\nname: project-structure\ndescription: Explains the project structure of the agent-framework .NET solution\n---\n\n# Agen"
  },
  {
    "path": "dotnet/.github/skills/verify-dotnet-samples/SKILL.md",
    "chars": 3071,
    "preview": "---\nname: verify-dotnet-samples\ndescription: How to build, run and verify the .NET sample projects in the Agent Framewor"
  },
  {
    "path": "dotnet/.gitignore",
    "chars": 7051,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "dotnet/.vscode/extensions.json",
    "chars": 68,
    "preview": "{\n    \"recommendations\": [\n        \"ms-dotnettools.csdevkit\"\n    ]\n}"
  },
  {
    "path": "dotnet/.vscode/settings.json",
    "chars": 199,
    "preview": "{\n    \"dotnet.defaultSolution\": \"agent-framework-dotnet.slnx\",\n    \"git.openRepositoryInParentFolders\": \"always\",\n    \"c"
  },
  {
    "path": "dotnet/.vscode/tasks.json",
    "chars": 204,
    "preview": "{\n\t\"version\": \"2.0.0\",\n\t\"tasks\": [\n\t\t{\n\t\t\t\"type\": \"dotnet\",\n\t\t\t\"task\": \"build\",\n\t\t\t\"group\": {\n\t\t\t\t\"kind\": \"build\",\n\t\t\t\t\""
  },
  {
    "path": "dotnet/AGENTS.md",
    "chars": 3475,
    "preview": "# AGENTS.md\n\nInstructions for AI coding agents working in the .NET codebase.\n\n## Build, Test, and Lint Commands\n\nSee `./"
  },
  {
    "path": "dotnet/Directory.Build.props",
    "chars": 2139,
    "preview": "<Project>\n  <PropertyGroup>\n    <!-- Default properties inherited by all projects. Projects can override. -->\n    <RunA"
  },
  {
    "path": "dotnet/Directory.Build.targets",
    "chars": 841,
    "preview": "<Project>\n  <!-- Direct all packages under 'dotnet' to get versions from Directory.Packages.props -->\n  <!-- using Centr"
  },
  {
    "path": "dotnet/Directory.Packages.props",
    "chars": 13070,
    "preview": "<Project>\n  <PropertyGroup>\n    <!-- Enable central package management -->\n    <!-- https://learn.microsoft.com/en-us/nu"
  },
  {
    "path": "dotnet/README.md",
    "chars": 1389,
    "preview": "# Get Started with Microsoft Agent Framework for C# Developers\n\n## Quickstart\n\n### Basic Agent - .NET\n\n```c#\nusing Azure"
  },
  {
    "path": "dotnet/agent-framework-dotnet.slnx",
    "chars": 41953,
    "preview": "<Solution>\n  <Configurations>\n    <BuildType Name=\"Debug\" />\n    <BuildType Name=\"Publish\" />\n    <BuildType Name=\"Relea"
  },
  {
    "path": "dotnet/agent-framework-release.slnf",
    "chars": 2468,
    "preview": "{\n  \"solution\": {\n    \"path\": \"agent-framework-dotnet.slnx\",\n    \"projects\": [\n      \"src\\\\Microsoft.Agents.AI.A2A\\\\Micr"
  },
  {
    "path": "dotnet/eng/MSBuild/LegacySupport.props",
    "chars": 2579,
    "preview": "<Project>\n  <ItemGroup Condition=\"'$(InjectDiagnosticClassesOnLegacy)' == 'true' AND !$([MSBuild]::IsTargetFrameworkComp"
  },
  {
    "path": "dotnet/eng/MSBuild/Shared.props",
    "chars": 2099,
    "preview": "<Project>\n  <ItemGroup Condition=\"'$(InjectSharedThrow)' == 'true'\">\n    <Compile Include=\"$(MSBuildThisFileDirectory)\\."
  },
  {
    "path": "dotnet/eng/MSBuild/Shared.targets",
    "chars": 476,
    "preview": "<Project>\n  <!-- This configuration is required to automatically inject all dependencies for specific classes. -->\n  <Pr"
  },
  {
    "path": "dotnet/eng/scripts/New-FilteredSolution.ps1",
    "chars": 5163,
    "preview": "#!/usr/bin/env pwsh\n# Copyright (c) Microsoft. All rights reserved.\n\n<#\n.SYNOPSIS\n    Generates a filtered .slnx solutio"
  },
  {
    "path": "dotnet/eng/scripts/dotnet-check-coverage.ps1",
    "chars": 2776,
    "preview": "param (\n    [string]$JsonReportPath,\n    [double]$CoverageThreshold\n)\n\n$jsonContent = Get-Content $JsonReportPath -Raw |"
  },
  {
    "path": "dotnet/global.json",
    "chars": 186,
    "preview": "{\n    \"sdk\": {\n        \"version\": \"10.0.200\",\n        \"rollForward\": \"minor\",\n        \"allowPrerelease\": false\n    },\n  "
  },
  {
    "path": "dotnet/nuget/NUGET.md",
    "chars": 1680,
    "preview": "# About Microsoft Agent Framework\n\nMicrosoft Agent Framework is a comprehensive .NET library for building, orchestrating"
  },
  {
    "path": "dotnet/nuget/nuget-package.props",
    "chars": 3728,
    "preview": "<Project>\n  <PropertyGroup>\n    <!-- Central version prefix - applies to all nuget packages. -->\n    <VersionPrefix>1.0."
  },
  {
    "path": "dotnet/nuget.config",
    "chars": 335,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"nuget.org\" value="
  },
  {
    "path": "dotnet/samples/.editorconfig",
    "chars": 1114,
    "preview": "# Suppressing errors for Sample projects under dotnet/samples folder\n[*.cs]\ndotnet_diagnostic.CA1716.severity = none # A"
  },
  {
    "path": "dotnet/samples/01-get-started/01_hello_agent/01_hello_agent.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/01-get-started/01_hello_agent/Program.cs",
    "chars": 1318,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use a simple AI agent with Azu"
  },
  {
    "path": "dotnet/samples/01-get-started/02_add_tools/02_add_tools.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/01-get-started/02_add_tools/Program.cs",
    "chars": 1813,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample demonstrates how to use a ChatClientAgent with functio"
  },
  {
    "path": "dotnet/samples/01-get-started/03_multi_turn/03_multi_turn.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/01-get-started/03_multi_turn/Program.cs",
    "chars": 1881,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use a simple AI agent with a m"
  },
  {
    "path": "dotnet/samples/01-get-started/04_memory/04_memory.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/01-get-started/04_memory/Program.cs",
    "chars": 7735,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to add a basic custom memory component to an"
  },
  {
    "path": "dotnet/samples/01-get-started/05_first_workflow/05_first_workflow.csproj",
    "chars": 387,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/01-get-started/05_first_workflow/Program.cs",
    "chars": 2698,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Microsoft.Agents.AI.Workflows;\n\nnamespace WorkflowExecutorsAndE"
  },
  {
    "path": "dotnet/samples/01-get-started/06_host_your_agent/06_host_your_agent.csproj",
    "chars": 1467,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Targ"
  },
  {
    "path": "dotnet/samples/01-get-started/06_host_your_agent/Program.cs",
    "chars": 1920,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to host an AI agent with Azure Functions (Du"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/README.md",
    "chars": 8854,
    "preview": "# AG-UI Getting Started Samples\n\nThis directory contains samples that demonstrate how to build AG-UI (Agent UI Protocol)"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Client/Client.csproj",
    "chars": 485,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Ta"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Client/Program.cs",
    "chars": 2828,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Microsoft.Agents.AI;\nusing Microsoft.Agents.AI.AGUI;\nusing Micr"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Server/Program.cs",
    "chars": 1377,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Azure.AI.OpenAI;\nusing Azure.Identity;\nusing Microsoft.Agents.A"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Server/Properties/launchSettings.json",
    "chars": 616,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"P"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Server/Server.csproj",
    "chars": 671,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0<"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Server/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step01_GettingStarted/Server/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Client/Client.csproj",
    "chars": 485,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Ta"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Client/Program.cs",
    "chars": 4333,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Microsoft.Agents.AI;\nusing Microsoft.Agents.AI.AGUI;\nusing Micr"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/Program.cs",
    "chars": 4251,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.ComponentModel;\nusing System.Text.Json.Serialization;\nus"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/Properties/launchSettings.json",
    "chars": 616,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"P"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/Server.csproj",
    "chars": 671,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0<"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step02_BackendTools/Server/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Client/Client.csproj",
    "chars": 485,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Ta"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Client/Program.cs",
    "chars": 3844,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.ComponentModel;\nusing Microsoft.Agents.AI;\nusing Microso"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Server/Program.cs",
    "chars": 1377,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Azure.AI.OpenAI;\nusing Azure.Identity;\nusing Microsoft.Agents.A"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Server/Properties/launchSettings.json",
    "chars": 616,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"P"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Server/Server.csproj",
    "chars": 671,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0<"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Server/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step03_FrontendTools/Server/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Client/Client.csproj",
    "chars": 485,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Ta"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Client/Program.cs",
    "chars": 5668,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Text.Json;\nusing Microsoft.Agents.AI;\nusing Microsoft.Ag"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Client/ServerFunctionApprovalClientAgent.cs",
    "chars": 10904,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Runtime.CompilerServices;\nusing System.Text.Json;\nusing "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/Program.cs",
    "chars": 2804,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.ComponentModel;\nusing Azure.AI.OpenAI;\nusing Azure.Ident"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/Properties/launchSettings.json",
    "chars": 616,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"P"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/Server.csproj",
    "chars": 671,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0<"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/ServerFunctionApprovalServerAgent.cs",
    "chars": 11041,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Runtime.CompilerServices;\nusing System.Text.Json;\nusing "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/appsettings.Development.json",
    "chars": 198,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\",\n      \"Micro"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step04_HumanInLoop/Server/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Client/Client.csproj",
    "chars": 485,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Ta"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Client/Program.cs",
    "chars": 6949,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\nusing M"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Client/StatefulAgent.cs",
    "chars": 3517,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Runtime.CompilerServices;\nusing System.Text.Json;\nusing "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/Program.cs",
    "chars": 2613,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing Azure.AI.OpenAI;\nusing Azure.Identity;\nusing Microsoft.Agents.A"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/Properties/launchSettings.json",
    "chars": 616,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"P"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/RecipeModels.cs",
    "chars": 1198,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Text.Json.Serialization;\n\nnamespace RecipeAssistant;\n\n//"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/Server.csproj",
    "chars": 671,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0<"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/SharedStateAgent.cs",
    "chars": 6093,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.Runtime.CompilerServices;\nusing System.Text.Json;\nusing "
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "dotnet/samples/02-agents/AGUI/Step05_StateManagement/Server/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "dotnet/samples/02-agents/AgentOpenTelemetry/AgentOpenTelemetry.csproj",
    "chars": 1330,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentOpenTelemetry/Program.cs",
    "chars": 10223,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.D"
  },
  {
    "path": "dotnet/samples/02-agents/AgentOpenTelemetry/README.md",
    "chars": 8633,
    "preview": "# OpenTelemetry Aspire Demo with Azure OpenAI\n\nThis demo showcases the integration of OpenTelemetry with the Microsoft A"
  },
  {
    "path": "dotnet/samples/02-agents/AgentOpenTelemetry/start-demo.ps1",
    "chars": 5413,
    "preview": "# OpenTelemetry Console Demo with Aspire Dashboard (Docker)\n# This script starts the Aspire Dashboard via Docker and the"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_A2A/Agent_With_A2A.csproj",
    "chars": 448,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_A2A/Program.cs",
    "chars": 757,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use a simple AI agent with an "
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_A2A/README.md",
    "chars": 1295,
    "preview": "# Prerequisites\n\nBefore you begin, ensure you have the following prerequisites:\n\n- .NET 10 SDK or later\n- Access to the "
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_Anthropic/Agent_With_Anthropic.csproj",
    "chars": 563,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_Anthropic/Program.cs",
    "chars": 2026,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use an AI agent with Anthropic"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_Anthropic/README.md",
    "chars": 2152,
    "preview": "# Creating an AIAgent with Anthropic\n\nThis sample demonstrates how to create an AIAgent using Anthropic Claude models as"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIAgentsPersistent/Agent_With_AzureAIAgentsPersistent.csproj",
    "chars": 551,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIAgentsPersistent/Program.cs",
    "chars": 2260,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n#pragma warning disable CS0618 // Type or member is obsolete - sample"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIAgentsPersistent/README.md",
    "chars": 1188,
    "preview": "# Classic Foundry Agents \n\nThis sample demonstrates how to create an agent using the classic Foundry Agents experience.\n"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIProject/Agent_With_AzureAIProject.csproj",
    "chars": 559,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIProject/Program.cs",
    "chars": 3100,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use a AI agents with Azure Fou"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureAIProject/README.md",
    "chars": 1181,
    "preview": "# New Foundry Agents \n\nThis sample demonstrates how to create an agent using the new Foundry Agents experience. \n\n# Clas"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureFoundryModel/Agent_With_AzureFoundryModel.csproj",
    "chars": 465,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureFoundryModel/Program.cs",
    "chars": 2070,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to use the OpenAI SDK to create and use a si"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureFoundryModel/README.md",
    "chars": 1663,
    "preview": "## Overview\n\nThis sample shows how to use the OpenAI SDK to create and use a simple AI agent with any model hosted in Az"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureOpenAIChatCompletion/Agent_With_AzureOpenAIChatCompletion.csproj",
    "chars": 516,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureOpenAIChatCompletion/Program.cs",
    "chars": 1168,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n\n// This sample shows how to create and use a simple AI agent with Azu"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureOpenAIChatCompletion/README.md",
    "chars": 796,
    "preview": "# Prerequisites\n\nBefore you begin, ensure you have the following prerequisites:\n\n- .NET 10 SDK or later\n- Azure OpenAI s"
  },
  {
    "path": "dotnet/samples/02-agents/AgentProviders/Agent_With_AzureOpenAIResponses/Agent_With_AzureOpenAIResponses.csproj",
    "chars": 516,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</Tar"
  }
]

// ... and 3618 more files (download for full content)

About this extraction

This page contains the full source code of the microsoft/agent-framework GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3818 files (24.4 MB), approximately 6.7M tokens, and a symbol index with 24585 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!