Commit Graph

351 Commits

  • .NET Compaction - Introducing compaction strategies and pipeline (#4533)
    * Checkpoint
    
    * Checkpoint
    
    * Stable
    
    * Strategies
    
    * Updated
    
    * Encoding
    
    * Formatting
    
    * Cleanup
    
    * Formatting
    
    * Tests
    
    * Tuning
    
    * Update tests
    
    * Test update
    
    * Remove working solution
    
    * Add sample to solution
    
    * Sample readyme
    
    * Experimental
    
    * Format
    
    * Formatting
    
    * Encoding
    
    * Support IChatReducer
    
    * Sample output formatting
    
    * Initial plan
    
    * Replace CompactingChatClient with MessageCompactionContextProvider
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Boundary condition
    
    * Fix encoding
    
    * Fix cast
    
    * Test coverage
    
    * Namespace
    
    * Improvements
    
    * Efficiency
    
    * Cleanup
    
    * Detect service managed conversation
    
    * Fix namespace
    
    * Fix merge
    
    * Fix test expectation
    
    * Update dotnet/src/Microsoft.Agents.AI.Abstractions/InMemoryChatHistoryProvider.cs
    
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    
    * Address PR comments (x1)
    
    * Update comment
    
    * Update comments
    
    * Clean-up
    
    * Format output
    
    * Sync sample comment
    
    * Fix condition
    
    * Adjust data-flow
    
    * Address comments (x2)
    
    * Direct compaction
    
    * Fix summarization content
    
    * Argument check / fix count calculation
    
    * Minor follow-up
    
    * Diagnostics
    
    * Minor updates
    
    * Fix state test
    
    * Fix sliding window perf
    
    * Stable state keys
    
    * Increase size computation
    
    * Formatting
    
    * Add README.md for Agent_Step18_CompactionPipeline sample (#4574)
    
    * Sample comments
    
    * Updated
    
    * Update dotnet/src/Microsoft.Agents.AI/Compaction/MessageIndex.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.UnitTests/Compaction/CompactionProviderTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI/Compaction/MessageIndex.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address copilot comments
    
    * Fix namespace
    
    * Comments / convensions
    
    * Prefix `MessageGroup` and `MessageIndex`
    
    * Fix sliding window
    
    * Update dotnet/src/Microsoft.Agents.AI/Compaction/SummarizationCompactionStrategy.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI.Abstractions/InMemoryChatHistoryProvider.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Python alignment
    
    * Fix merge
    
    * Fix equality, readme, and sample
    
    * Readme update and ToolResult fix
    
    * Update dotnet/src/Microsoft.Agents.AI/Compaction/SummarizationCompactionStrategy.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/02-agents/Agents/Agent_Step18_CompactionPipeline/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Simplify readme
    
    * Update dotnet/samples/02-agents/Agents/Agent_Step18_CompactionPipeline/README.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Remove example
    
    * Remove unused
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Enable Microsoft.Agents.AI.FoundryMemory for NuGet release (#4559)
    * Enable Microsoft.Agents.AI.FoundryMemory for NuGet release
    
    - Remove IsPackable=false override from .csproj to inherit IsPackable=true from nuget-package.props
    - Add project to agent-framework-release.slnf for inclusion in build/sign/publish pipeline
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update FoundryMemoryProvider and MemorySearch sample
    
    - StoreAIContextAsync fires UpdateMemoriesAsync immediately (non-accumulation)
    - WhenUpdatesCompletedAsync polls last updateId via GetUpdateResultAsync
    - Updated FoundryAgents_Step22_MemorySearch sample to create/destroy memory store
      (matching features/foundry-agent-client pattern)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update FoundryAgents_Step22_MemorySearch sample
    
    - Sample now creates/destroys memory store (self-contained lifecycle)
    - Uses WaitForMemoriesUpdateAsync for seeding memories
    - Cleanup in finally block deletes both agent and memory store
    - Matches features/foundry-agent-client pattern
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Create a sample to show bounded chat history with overflow into chat history memory (#4136)
    * Create a sample to show bounded chat history with overflow into chat history memory
    
    * Address PR comments.
    
    * Address PR comment and fix bug
  • .NET: Update HostedAgents samples to Azure.AI.AgentServer.AgentFramework 1.0.0-beta.9 and MEAI 10.3.0 (#4477)
    * Initial plan
    
    * Update HostedAgents samples to Azure.AI.AgentServer.AgentFramework 1.0.0-beta.9 and MEAI 10.3.0
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Fix HostedAgents samples for Microsoft.Agents.AI 1.0.0-rc2 API changes
    
    - Rename CreateAIAgent -> AsAIAgent (AgentThreadAndHITL, AgentWithHostedMCP, AgentWithTextSearchRag)
    - Rename AsAgent -> AsAIAgent (AgentsInWorkflows)
    - Replace AIContextProviderFactory with AIContextProviders and simplified TextSearchProvider ctor (AgentWithTextSearchRag)
    - Update Microsoft.Agents.AI.OpenAI to 1.0.0-rc2 (AgentThreadAndHITL, AgentWithTextSearchRag, AgentWithTools)
    - Update Microsoft.Agents.AI.Workflows to 1.0.0-rc2 (AgentsInWorkflows)
    - Add Microsoft.Agents.AI 1.0.0-rc2 reference (AgentWithHostedMCP)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update HostedAgents samples for beta.9 API changes and add missing projects to slnx
    
    - Use DefaultAzureCredential consistently across all samples
    - Add AgentThreadAndHITL, AgentWithLocalTools, AgentWithTools to slnx
    - Apply dotnet format
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Remove unnecessary Microsoft.Agents.AI.* package references (transitive from AgentFramework)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add DefaultAzureCredential production warning comments to all HostedAgents samples
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update HostedAgents READMEs to reflect DefaultAzureCredential usage
    
    Replace AzureCliCredential references with DefaultAzureCredential in all
    HostedAgents README files to match the actual sample code.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Replace Microsoft.Extensions.AI.OpenAI with Microsoft.Agents.AI.OpenAI and remove AsIChatClient()
    
    Swap package references from Microsoft.Extensions.AI.OpenAI to
    Microsoft.Agents.AI.OpenAI across all 6 HostedAgents samples. This enables
    using the AsAIAgent() extension directly on ChatClient/ResponsesClient
    (from OpenAI.Chat/OpenAI.Responses namespaces), removing the intermediate
    AsIChatClient() call in 3 samples where it was unnecessary.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Use explicit types and AsAIAgent() extensions across all HostedAgents samples
    
    Replace var with explicit types for clarity in all 6 samples. Replace
    new ChatClientAgent() constructor calls with chatClient.AsAIAgent()
    extension method in AgentWithLocalTools and AgentsInWorkflows.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Switch auth sample to use Singletons (#4454)
    * Switch auth sample to use Singletons
    
    * Address PR comments
    
    * Add comment to warn users to choose the appropriate lifetime for their service
  • .NET: Add foundry extension samples for python and dotnet (#4359)
    * Add foundry extension samples for python and dotnet
    
    * Align foundry extension samples with existing hosted agent patterns
    
    - Fix Python multiagent indentation bug (from_agent_framework ran in both modes)
    - Remove hardcoded personal endpoint from appsettings.Development.json
    - Rename .NET folders/projects to PascalCase (FoundryMultiAgent, FoundrySingleAgent)
    - Upgrade .NET multiagent from net9.0 to net10.0
    - Add ManagePackageVersionsCentrally=false and analyzer blocks to .csproj files
    - Replace wildcard package versions with fixed versions
    - Use alpine Docker images and standard build pattern
    - Align agent.yaml structure (template nesting, displayName, resources, authors)
    - Convert .NET multiagent from namespace/class to top-level statements
    - Add run-requests.http for multiagent sample
    - Fix Python requirements.txt (remove dev deps, add agent-framework)
    - Add proper copyright headers
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Align foundry samples: fix builds, upgrade AgentServer to beta.8
    
    - Fix TargetFrameworks (plural) to override inherited net472 from Directory.Build.props
    - Upgrade Azure.AI.AgentServer.AgentFramework to 1.0.0-beta.8 (latest)
    - Bump OpenTelemetry packages to 1.12.0 (required by beta.8)
    - Fix Roslynator/format errors (imports ordering, BOM, sealed record, target-typed new)
    - Verified with docker dotnet format (matching CI pipeline)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Refactor hosted samples to use AIProjectClient.CreateAIAgentAsync
    
    Replace PersistentAgentsClient and manual AzureOpenAIClient setup with
    AIProjectClient.CreateAIAgentAsync() from Microsoft.Agents.AI.AzureAI.
    
    - FoundryMultiAgent: Remove Azure.AI.Agents.Persistent, use CreateAIAgentAsync
      for Writer and Reviewer agents with cleanup in finally block
    - FoundrySingleAgent: Remove manual GetConnection/AzureOpenAIClient chain,
      use CreateAIAgentAsync with hotel search tool
    - Update csproj: add Microsoft.Agents.AI.AzureAI, remove unused packages
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update READMEs to reflect AIProjectClient.CreateAIAgentAsync usage
    
    - Reference Microsoft.Agents.AI.AzureAI and Microsoft.Agents.AI.Workflows packages
    - Add Azure AI Developer role requirement for agents/write data action
    - Replace PersistentAgentsClient references
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add HostedAgents READMEs and Foundry samples to solution
    
    - Create dotnet/samples/05-end-to-end/HostedAgents/README.md with sample index
    - Create python/samples/05-end-to-end/hosted_agents/README.md with sample index
    - Add FoundryMultiAgent and FoundrySingleAgent to agent-framework-dotnet.slnx
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix Python linting: reorder imports before load_dotenv, remove trailing whitespace
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update uv.lock to match latest package versions
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix trailing whitespace in foundry_single_agent agent.yaml
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Exclude dotnet.microsoft.com from link checker
    
    This domain intermittently times out in CI, causing flaky markdown
    link check failures unrelated to PR changes.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Align env vars to AZURE_AI_PROJECT_ENDPOINT and default model to gpt-4o-mini
    
    Addresses PR review feedback:
    - Rename PROJECT_ENDPOINT to AZURE_AI_PROJECT_ENDPOINT across all
      Foundry samples (dotnet + python) to match existing samples
    - Change default model from gpt-4.1-mini to gpt-4o-mini consistently
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Skip flaky test CreatesWorkflowEndToEndActivities_WithCorrectName_DefaultAsync
    
    Tracked in #4398
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Remove Python foundry samples from PR scope
    
    Python hosted agent samples need further alignment with the azure-ai
    package conventions. Removing from this PR to ship .NET samples first.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Narrow linkspector exclusion to dotnet.microsoft.com/download only
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Leo Yao <leoyao@Leos-MacBook-Pro.local>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Update Azure.AI.Projects 2.0.0-beta.1 (#4270)
    * Update Microsoft.Agents.AI.AzureAI for Azure.AI.Projects SDK 2.0.0
    
    - Bump Azure.AI.Projects to 2.0.0-alpha.20260213.1
    - Bump Azure.AI.Projects.OpenAI to 2.0.0-alpha.20260213.1
    - Bump System.ClientModel to 1.9.0 (transitive dependency)
    - Switch both GetAgent and CreateAgentVersion to protocol methods
      with MEAI user-agent policy injection via RequestOptions
    - Migrate 29 CREATE-path tests from FakeAgentClient to HttpHandlerAssert
      pattern for real HTTP pipeline testing
    - Fix StructuredOutputDefinition constructor (BinaryData -> IDictionary)
    - Fix responses endpoint path (openai/responses -> /responses)
    - Add local-packages NuGet source for pre-release nupkgs
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update Azure.AI.Projects to 2.0.0-beta.1 from NuGet.org
    
    - Update Azure.AI.Projects and Azure.AI.Projects.OpenAI to 2.0.0-beta.1
    - Remove local-packages NuGet source (packages now on nuget.org)
    - Fix MemorySearchTool -> MemorySearchPreviewTool rename
    - Fix RedTeams.CreateAsync ambiguous call
    - Fix CreateAgentVersion/Async signature change (BinaryData -> string)
    - Suppress AAIP001 experimental warning for WorkflowAgentDefinition
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Move s_modelWriterOptionsWire field before methods that use it
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix flaky test: prevent spurious workflow_invoke Activity on timeout wake-up
    
    The StreamingRunEventStream run loop uses a 1-second timeout on
    WaitForInputAsync. When the timeout fires before the consumer calls
    StopAsync, the loop would create a spurious workflow_invoke Activity
    even though no actual input was provided. This caused the
    WorkflowRunActivity_IsStopped_Streaming_OffThread_MultiTurnAsync test
    to intermittently fail (expecting 2 activities but finding 3).
    
    Fix: guard the loop body with a HasUnprocessedMessages check. On
    timeout wake-ups with no work, the loop waits again without creating
    an activity or changing the run status.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix epoch race condition causing unit tests to hang on net10.0 and net472
    
    The HasUnprocessedMessages guard (previous commit) correctly prevents
    spurious workflow_invoke Activity creation on timeout wake-ups, but
    exposed a latent race in the epoch-based signal filtering.
    
    The race: when the run loop processes messages quickly and calls
    Interlocked.Increment(ref _completionEpoch) before the consumer calls
    TakeEventStreamAsync, the consumer reads the already-incremented epoch
    and sets myEpoch = epoch + 1. This causes the consumer to skip the
    valid InternalHaltSignal (its epoch < myEpoch) and block forever
    waiting for a signal that will never arrive (since the guard prevents
    spurious signal generation).
    
    Fix: read _completionEpoch without +1. The +1 was originally needed to
    filter stale signals from timeout-driven spurious loop iterations, but
    those no longer exist thanks to the HasUnprocessedMessages guard.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Revert "Fix epoch race condition causing unit tests to hang on net10.0 and net472"
    
    This reverts commit 6ce7f01be8.
    
    * Revert "Fix flaky test: prevent spurious workflow_invoke Activity on timeout wake-up"
    
    This reverts commit 98963e17f2.
    
    * Skip hanging multi-turn declarative integration tests
    
    The ValidateMultiTurnAsync tests (ConfirmInput.yaml, RequestExternalInput.yaml)
    hang indefinitely in CI, blocking the merge queue. The hang is SDK-independent
    (reproduces with both Azure.AI.Projects 1.2.0-beta.5 and 2.0.0-beta.1) and
    is a pre-existing issue in the declarative workflow multi-turn test logic.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Remove unused using directive in IntegrationTest.cs
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Restore Azure.AI.Projects 2.0.0-beta.1 version bump
    
    The merge from main accidentally reverted the package versions back to
    1.2.0-beta.5. This is the primary change of this PR.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address merge conflict
    
    * Skip flaky WorkflowRunActivity_IsStopped_Streaming_OffThread_MultiTurnAsync test
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Skip CheckSystem test cases temporarily
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Change *Provider StateKey to list of StateKeys (#4395)
    * Change *Provider StateKey to list of StateKeys
    
    * Add more statekey validation tests
    
    * Address PR comments
  • [BREAKING] Add response filter for store input in *Providers (#4327)
    * Add response filter for store input for *Providers
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address feedback
    
    * Apply suggestions from code review
    
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
  • .NET: AuthN & AuthZ sample with asp.net service and web client (#4354)
    * Add sample demonstrating authentication and user access in agent tools
    
    * Add fixes to enable running on windows
    
    * Add launchsettings, add docker-compose to slnx and fix formatting
    
    * Switch to Expenses rather than todo based sample and address PR comments
    
    * Rename sample
    
    * Fix formatting
  • .Net: Add additional Hosted Agent Samples (#4325)
    * Add 3 new hosted agent samples: AgentWithTools, AgentWithLocalTools, AgentThreadAndHITL
    
    - AgentWithTools: Foundry tools (MCP + code interpreter) via UseFoundryTools
    - AgentWithLocalTools: Local C# function tool (Seattle hotel search) with AIProjectClient
    - AgentThreadAndHITL: Human-in-the-loop with ApprovalRequiredAIFunction and thread persistence
    
    All samples follow agent-framework conventions (net10.0, AzureCliCredential, CPM disabled).
    AgentWithTools includes comprehensive README with setup guide and troubleshooting.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add root HostedAgents README, replace test_requests.py with .http, update sample READMEs
    
    - Create root README.md with shared prerequisites, Azure AI Foundry setup,
      troubleshooting, and samples index
    - Replace test_requests.py with run-requests.http in AgentThreadAndHITL
    - Add pointer to root README in all 6 sample READMEs
    - Trim AgentWithTools README to concise style
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix dotnet format issues in AgentWithLocalTools/Program.cs
    
    - Add UTF-8 BOM (CHARSET)
    - Sort System.ClientModel.Primitives import alphabetically (IMPORTS)
    - Use target-typed new for AIProjectClient (IDE0090)
    - Add internal accessibility modifier to Hotel record (IDE0040)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review: align model names and package versions
    
    - Change default model from gpt-4.1-mini to gpt-4o-mini in AgentWithLocalTools
      (Program.cs, agent.yaml, README.md) to match existing samples
    - Change README example from gpt-5.2 to gpt-4o-mini in AgentWithTools and root README
    - Align AgentWithLocalTools package versions with other samples:
      Azure.AI.AgentServer.AgentFramework beta.6 -> beta.8
      Azure.AI.OpenAI 2.8.0-beta.1 -> 2.7.0-beta.2
      Microsoft.Extensions.AI.OpenAI 10.2.0-preview -> 10.1.1-preview
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Upgrade new samples to latest package versions
    
    - Azure.AI.OpenAI: 2.7.0-beta.2 -> 2.8.0-beta.1
    - Microsoft.Extensions.AI.OpenAI: 10.1.1-preview -> 10.3.0
    
    Aligns with AgentWithHostedMCP which uses the latest versions.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Pin AgentThreadAndHITL to Microsoft.Extensions.AI.OpenAI 10.1.1
    
    Azure.AI.AgentServer.AgentFramework beta.8 was compiled against
    Microsoft.Extensions.AI.Abstractions with the single-param
    FunctionApprovalRequestContent.CreateResponse(bool). Version 10.3.0
    changed the signature to include an optional reason parameter, causing
    a binary incompatibility at runtime. Pin to 10.1.1 until the framework
    is recompiled against the newer abstractions.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Add helpers to more easily access in-memory ChatHistory and make ChatHistoryProvider management more configurable. (#4224)
    * Add helpers to more easily access in-memory ChatHistory and make ChatHistoryProvider management more configurable.
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Support hosted code interpreter for skill script execution (#4192)
    * support script execution by code interpretor
    
    * improve the instruction prompt
    
    * Add DefaultAzureCredential production warning to AgentSkills samples
    
    Add the standard three-line WARNING comment about DefaultAzureCredential
    production considerations to both AgentSkills sample Program.cs files,
    matching the convention used in all other GettingStarted/Agents samples.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * address pr review comments
    
    * address feedback
    
    * rename Skill* types to FileAgentSkill* prefix for consistency
    
    - Rename SkillFrontmatter -> FileAgentSkillFrontmatter
    - Rename SkillScriptExecutor -> FileAgentSkillScriptExecutor
    - Add FileAgentSkillScriptExecutionContext and FileAgentSkillScriptExecutionDetails
    - Update sample, provider, loader, and tests accordingly
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * reorder usings
    
    * use set for props initialization instead of init
    
    * rename HostedCodeInterpreterSkillScriptExecutor
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Python / .NET Samples - Restructure and Improve Samples (Feature Branc… (#4092)
    * Python: .NET Samples - Restructure and Improve Samples (Feature Branch) (#4091)
    
    * Moved by agent (#4094)
    
    * Fix readme links
    
    * .NET Samples - Create `04-hosting` learning path step (#4098)
    
    * Agent move
    
    * Agent reorderd
    
    * Remove A2A section from README 
    
    Removed A2A section from the Getting Started README.
    
    * Agent fixed links
    
    * Fix broken sample links in durable-agents README (#4101)
    
    * Initial plan
    
    * Fix broken internal links in documentation
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Revert template link changes; keep only durable-agents README fix
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * .NET Samples - Create `03-workflows` learning path step (#4102)
    
    * Fix solution project path
    
    * Python: Fix broken markdown links to repo resources (outside /docs) (#4105)
    
    * Initial plan
    
    * Fix broken markdown links to repo resources
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update README to rename .NET Workflows Samples section
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * .NET Samples - Create `02-agents` learning path step (#4107)
    
    * .NET: Fix broken relative link in GroupChatToolApproval README (#4108)
    
    * Initial plan
    
    * Fix broken link in GroupChatToolApproval README
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update labeler configuration for workflow samples
    
    * .NET - Reorder Agents samples to start from Step01 instead of Step04 (#4110)
    
    * Fix solution
    
    * Resolve new sample paths
    
    * Move new AgentSkills and AgentWithMemory_Step04 samples
    
    * Fix link
    
    * Fix readme path
    
    * fix: update stale dotnet/samples/Durable path reference in AGENTS.md
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Moved new sample
    
    * Update solution
    
    * Resolve merge (new sample)
    
    * Sync to new sample - FoundryAgents_Step21_BingCustomSearch
    
    * Updated README
    
    * .NET Samples - Configuration Naming Update (#4149)
    
    * .NET: Restore AzureFunctions index parity with ConsoleApps under DurableAgents samples (#4221)
    
    * Clean-up `05_host_your_agent`
    
    * Config setting consistency
    
    * Refine samples
    
    * AGENTS.md
    
    * Move new samples
    
    * Re-order samples
    
    * Move new project and fixup solution
    
    * Fixup model config
    
    * Fix up new UT project
    
    ---------
    
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
  • .NET: Support InvokeMcpTool for declarative workflows (#4204)
    * Initial implementation of InvokeMcpTool in declarative workflow
    
    * Cleaned up sample implementation
    
    * Updated sample comments.
    
    * Added missing executor routing attribute
    
    * Fix PR comments.
    
    * Updated based on PR comments.
    
    * Updated based on PR comments.
    
    * Removed unnecessary using statement.
  • .NET: Add Foundry Agents Tool Sample - Bing Custom Search (#3701)
    * .NET: Add Bing Custom Search sample #3674
    
    * Apply format fixes
    
    * .NET: Improve Bing Custom Search sample with dual MEAI/Native SDK options
    
    - Add MEAI (Option 1) and Native SDK (Option 2) agent creation patterns
    - Add DefaultAzureCredential with standard WARNING comment
    - Add sample to solution file and FoundryAgents README index
    - Improve README with connection ID/instance name guidance
    - Fix missing newline at EOF in .csproj
    - Suppress CS8321 for unused local function pattern
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review comments for Bing Custom Search sample
    
    - Add Async suffix to CreateAgentWithMEAI and CreateAgentWithNativeSDK methods
    - Clarify comment to reference ResponseTool instead of BingCustomSearchTool
    - Update README Option 1 description to accurately reflect SDK usage
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Add Foundry Agents Tool Sample - Web Search (#4040)
    * .NET: Add Web Search sample #3674
    
    * .NET: Fix WebSearch sample to use Responses API built-in web search
    
    Remove incorrect Bing Grounding connection ID requirement from the
    WebSearch sample. The web search tool uses the OpenAI Responses API
    built-in capability and does not need a connection ID.
    
    - Remove AZURE_FOUNDRY_BING_CONNECTION_ID env var requirement
    - Use HostedWebSearchTool() without connectionId properties
    - Refactor creation options into local functions (MEAI + NativeSDK)
    - Switch from AzureCliCredential to DefaultAzureCredential
    - Update README to reflect correct prerequisites
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix README to align DefaultAzureCredential docs with code
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address review: add project to solution, README, simplify response text
    
    - Add FoundryAgents_Step25_WebSearch to agent-framework-dotnet.slnx
    - Add web search sample entry to parent FoundryAgents README.md
    - Simplify text response extraction to use response.Text directly
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix merge conflict in slnx solution file
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Add ChatClient decorator for calling AIContextProviders (#4097)
    * Add ChatClient decorator for calling AIContextProviders
    
    * Format new files
    
    * Address PR comments
    
    * Revert problematic change
    
    * Rename Use to UseAIContextProvider
  • .NET: Add Foundry Agents Tool Sample - Memory Search (#3700)
    * .NET: Add Memory Search sample #3674
    
    * Apply format fixes
    
    * Add MemorySearch sample to solution, FoundryAgents and AgentWithMemory READMEs
    
    - Add FoundryAgents_Step26_MemorySearch.csproj to agent-framework-dotnet.slnx
    - Add Memory Search entry to FoundryAgents/README.md samples table
    - Add cross-reference from AgentWithMemory/README.md to MemorySearch sample
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Simplify store=false scenario for responses (#4124)
    * Simplify store=false scenario for responses
    
    * Mark AsIChatClientWithStoredOutputDisabled as Experimental
  • .NET: Support Agent Skills (#4122)
    * support agent skills
    
    * make the new agent skill provider experimental
    
    * Fix file encoding: add UTF-8 BOM to .cs files
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix final newline and simplify new expressions
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix broken links in Agent Skills sample README
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add null check for skillPaths parameter
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Normalize references
    
    * normilize skill path
    
    * address comments regarding symlink check
    
    * address comments
    
    * fix failing test + regex improvements
    
    * small optimizations and improvments
    
    * address pr review comments
    
    * Update dotnet/src/Microsoft.Agents.AI/Skills/FileAgentSkillsProvider.cs
    
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * address pr review comments
    
    * address pr review comments
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
  • .NET: Add Foundry Memory Context Provider (#3522)
    * Add Azure AI Foundry Memory Context Provider with unit tests
    
    * Add FoundryMemory integration tests and sample application
    
    * Fix ClearStoredMemoriesAsync to handle 404 gracefully and rename to EnsureStoredMemoriesDeletedAsync
    
    * Refactor FoundryMemory: simplify architecture and add memory store creation
    
    - Remove IFoundryMemoryOperations interface (was only for test mocking)
    - Remove AIProjectClientMemoryOperations wrapper class
    - Provider now directly uses AIProjectClient with internal extension methods
    - Extension methods return actual response models instead of extracted values
    - Remove WaitForUpdateCompletionAsync from provider (sample uses delay)
    - Simplify EnsureMemoryStoreCreatedAsync to return Task instead of Task<bool>
    - Add memory store creation with chat_model and embedding_model
    - Add UpdateMemoriesResponse with SupersededBy and Error fields
    - Simplify unit tests to focus on constructor validation and serialization
    - Update sample to use simple delay for memory processing wait
    
    * Add waiting operation for memory store updates
    
    * Fix UTF-8 BOM encoding for FoundryMemory csproj files
    
    * Update copilot instructions for UTF-8 BOM and fix sample API rename
    
    * Fix UTF-8 BOM encoding for TestableAIProjectClient.cs
    
    * Add missing response headers for TS
    
    * Changing default embedding
    
    * Using the SDK Models
    
    * Program update
    
    * Remove debugging code from sample
    
    * Adapt FoundryMemoryProvider to new AIContextProvider API and add UTF-8 BOM instruction
    
    - Override ProvideAIContextAsync/StoreAIContextAsync instead of removed virtual InvokingAsync/InvokedAsync
    - Use ProviderSessionState<State> for session-scoped state management (matching Mem0Provider pattern)
    - Replace constructor-based scope with stateInitializer delegate
    - Remove Serialize method (no longer on base class)
    - Add SearchInputMessageFilter, StorageInputMessageFilter, StateKey to options
    - Update sample to use AIContextProviders list instead of AIContextProviderFactory
    - Update unit and integration tests for new API
    - Add UTF-8 BOM encoding and --tl:off instructions to dotnet/AGENTS.md
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Use DefaultAzureCredential in Foundry Memory sample
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review comments for FoundryMemoryProvider
    
    - Move memoryStoreName from options to required constructor parameter
    - Make FoundryMemoryProviderScope require non-null/whitespace scope in constructor
    - Make Scope property read-only (getter only)
    - Replace ConcurrentQueue with single last update ID to fix memory leak
    - Only clear pending update ID after successful completion
    - Add delete success logging
    - Mark FoundryMemoryProvider with [Experimental] attribute
    - Update unit tests for new API signatures
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Use Throw.IfNullOrWhitespace for scope and memoryStoreName validation
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Workflows API Review Naming Changes (Part 1?) (#4090)
    * refactor: Normalize Run/RunStreaming with AIAgent
    
    * refactor: Clarify Session vs. Run -level concepts
    
    * Rename RunId to SessionId to better match Run/Session terminology in AIAgent
    * [BREAKING]: Will break existing checkpointed sessions in CosmosDb due to field rename
    
    * refactor: Rename and simplify interface around getting typed data out of ExternalRequest/Response
    
    * Also adds hints around using value types in PortableValue
    
    * refactor: Rename AddFanInEdge to AddFanInBarrierEdge
    
    This will prevent a breaking change later when we introduce a programmable FanIn edge, analogous to the FanOut edge's EdgeSelector.
    
    The goal, in the long run is to support a number of different FanIn scenarios, with naive FanIn (no barrier) by default, similar to FanOut.
    
    * refactor: AsAgent(this Workflow, ...) => AsAIAgent(...)
    
    * misc - part1: SwitchBuilder internal
    
    ---------
    
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
  • .NET: Support a message only AIContextProvider as an AIAgent Decorator (#4009)
    * Support a message only AIContextProvider as an AIAgent Decorator
    
    * Fix formatting
    
    * Address PR comments.
  • [BREAKING] .NET: Decouple Checkpointing from Run/StreamAsync APIs (#4037)
    * [BREAKING] refactor: Decouple Checkpointing and Execution APIs
    
    With this change, Checkpointing becomes an property of an IWorkflowExecutionEnvironment. This lets environments that are tightly-coupled to their CheckpointManager avoid needing to present APIs that would not work (e.g. taking in an InMemory CheckpointManager for Durable Tasks, for example)
    
    * refactor: Normalize IsCheckpointingEnabled naming
  • .NET: Add Foundry Agents Tool Sample - OpenAPI Tools (#3702)
    * .NET: Add OpenAPI Tools sample #3674
    
    * Apply format fixes
    
    * Add MEAI and Native SDK creation options for OpenAPI Tools sample
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review: DefaultAzureCredential and CS8321 in NoWarn
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add project to slnx
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Implement Polymorphic Routing (#3792)
    * feat: Implement Polymorphic Routing
    
    * feat: Add support for Send/Yield annotations with basic Executor
    
    * Adds annotations to Declarative workflow executors
    
    * fix: Address PR Comments
    
    * Implicit filter in collection loops
    * Remove debug / usused / superfluous code
    * Fix ProtocolBuilder implicit output registrations
    * Fix logic error in ExecuteRouteGeneratorTests.ClassWithManualConfigureProtocol_DoesNotGenerate
    
    * fix: Solidify type checks and send/yield type registrations
    
    * fix: Suppress generation of TurnTokens out of AggregateTurnMessagesExecutor
    
    * Fixes an issue where ConcurrentEndExecutor is not expecting TurnTokens.
    
    * fix: Add ProtocolBuilder support for chained-delegation
    
    * Updates Declarative pacakge to rely on chained-delegation Send/Yield registration
    * Renames DeclarativeActionExectuor's new ExecuteAsync to ExecuteActionAsync to avoid colliding with Executor.ExecutoeAsync
    
    * fix: Address PR Comments
    
    * Fixes type mapping in FanInEdgeRunner
    * Fixes and expalins send/yield type registration in FunctionExecutor
    
    * fixup: build-break
    
    * fix: Add missing SendsMesage declaration to InvokeAzureAgentExecutor
  • .NET: Add File Search Sample for Foundry Agents. (#3990)
    * .NET: Add File Search sample #3674
    
    * Add FileSearch sample to solution and parent README
    
    - Add FoundryAgents_Step18_FileSearch to agent-framework-dotnet.slnx
    - Add FileSearch entry to FoundryAgents samples table in README.md
    - Fix README inaccuracy: sample creates one agent, not two
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Refactor FileSearch sample: local functions + DefaultAzureCredential
    
    - Refactor agent creation into switchable local functions
    - Use DefaultAzureCredential with WARNING comment (matching other samples)
    - Update README to reference DefaultAzureCredential
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fix orphaned temp file in FileSearch sample
    
    Use Path.Combine + Path.GetRandomFileName instead of Path.GetTempFileName
    to avoid leaving an orphaned temp file on disk.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Fix FoundryAgents_Step15_ComputerUse sample for Azure Agents API (#3989)
    * Fix FoundryAgents_Step15_ComputerUse sample for Azure Agents API
    
    The Azure Agents API rejects previous_response_id alongside computer_call_output
    items, unlike the vanilla OpenAI Responses API. This fix:
    
    - Send all prior response output items (reasoning, computer_call, etc.) as input
      items in follow-up calls so the API has full conversation context
    - Create a fresh session per call to avoid ConversationId/previous_response_id
    - Use currentCallId instead of initialCallId for computer_call_output
    - Clear ContinuationToken after polling to prevent stale tokens
    - Remove unused initialCallId tracking variable
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address comments
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Support InvokeFunctionTool for declarative workflows (#4014)
    * Initial Implementation of InvokeFunctionTool
    
    * Added unit test for InvokeFunctionTool executor.
    
    * Implemented unit and integration tests for InvokeFunctionTool.
    
    * Add sample for InvokeFunctionTool in declarative workflows.
    
    * Remove unused sample and updated comments.
    
    * Updating to official OM release with InvokeFunctionTool
    
    * Fix formatting issues.
    
    * Updated PowerFx version
    
    * Update test fixture
    
    * Cleanup - Removed unused method in InvokeFunctionToolExecutor
    
    * Update test based on PR feedback.
    
    * Update based on PR comments
  • Fix MCP samples: update MCP SDK to 0.8.0-preview.1 and fix README references (#3959)
    - Update ModelContextProtocol NuGet package from 0.4.0-preview.3 to 0.8.0-preview.1
    - Update System.Net.ServerSentEvents from 10.0.1 to 10.0.3
    - Fix OAuth config to use DynamicClientRegistration in Agent_MCP_Server_Auth
    - Fix incorrect sample name references in README files
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Add Foundry Evaluation samples (Safety + Quality) (#3697)
    * Initial plan
    
    * Add Foundry evaluation samples for Red Teaming and Self-Reflection
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Refactor evaluation samples with real implementations in local functions
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Uncomment function signatures and bodies, keep only invocations commented
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Update Foundry evaluation samples with observability support
    
    * Restructure evaluation samples to follow FoundryAgents naming convention
    
    - Rename Evaluation/Evaluation_StepXX to FoundryAgents_Evaluations_StepXX
    - Add evaluation projects to slnx
    - Fix var usage, apply dotnet format, use DefaultAzureCredential
    - Add try/finally for agent cleanup
    - Fix evaluator deployment name separation in Step02
    - Update README references
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Rewrite Step01 to use Azure.AI.Projects RedTeam API and address review comments
    
    - Replace safety evaluator sample with actual Red Teaming using AIProjectClient.RedTeams
    - Use AttackStrategy (Easy, Moderate, Jailbreak) and RiskCategory from Azure.AI.Projects
    - Remove Microsoft.Extensions.AI.Evaluation.Safety dependency from Step01
    - Add DefaultAzureCredential warning comments to Step02
    - Remove unused bestResponse variable in Step02
    - Add session isolation comments in self-reflection loop
    - Fix stale directory references in READMEs
    - Fix misleading evaluation overview link in main README
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add note about agent-targeted red teaming limitations in README
    
    The .NET RedTeam API currently only supports model deployment targets
    via AzureOpenAIModelConfiguration. Agent-targeted red teaming with
    AzureAIAgentTarget is documented in concept docs but not yet available
    in the SDK's RedTeam constructor. Results appear in classic portal view.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add classic Foundry disclaimer to red teaming sample README
    
    Clarify that this sample uses the classic Azure AI Foundry red teaming
    API (/redTeams/runs). The new Foundry portal uses a separate evaluation-
    based API not yet available in the .NET SDK. AzureAIAgentTarget exists
    in the SDK but is consumed by the Evaluation Taxonomy API, not RedTeam.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR review comments on Step02 SelfReflection
    
    - Pass full prompt (with context) to evaluator messages instead of just
      the question, so evaluator input matches what the agent received
    - Include previous response text in self-reflection refinement prompt
      so the LLM can meaningfully improve its answer across iterations
    - Inline CreateKnowledgeAgent helper (single use, single statement)
    - Add comment clarifying why RunCombinedQualityAndSafetyEvaluation
      intentionally passes only the question (no context)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Surface downstream experimental flags and remove unnecessary suppressions (#3968)
    * Surface downstream experimental flags and remove unecessary suppressions
    
    * Fix format error
    
    * Fix file encoding.
    
    * Address PR comments.
  • .NET: [BREAKING] Refactor providers to move common functionality to base (#3900)
    * Move common functionality to provider base classes
    
    Co-Authored-By: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address PR comments.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: [Breaking] Structured Output improvements (#3761)
    * .NET: Delete AgentResponse.{Try}Deserialize<T> methods (#3518)
    
    * delete deserialize method of agent response
    
    * order usings
    
    * Update dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step05_StructuredOutput/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/_Foundational/08_WriterCriticWorkflow/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/AGUI/Step05_StateManagement/Server/SharedStateAgent.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/AGUIClientServer/AGUIDojoServer/SharedState/SharedStateAgent.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/M365Agent/Agents/WeatherForecastAgent.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET:[Breaking] Add support for structured output (#3658)
    
    * add support for so
    
    * restore lost xml comment part
    
    * fix using ordering
    
    * Update dotnet/src/Microsoft.Agents.AI.Abstractions/AIAgentStructuredOutput.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI.Abstractions/AIAgentStructuredOutput.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_SO_WithFormatResponseTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * addressw pr review comments
    
    * address pr review feedback
    
    * address pr review comments
    
    * fix compilation issues after the latest merge with main
    
    * remove unnecessry options
    
    * remove RunAsync<object> methods
    
    * address code review feedback
    
    * address pr review feedback
    
    * make copy constructor protected
    
    * address pr review feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Add decorator for structured output support (#3694)
    
    * add decorator that adds structured output support to agents that don't natively support it.
    
    * Update dotnet/src/Microsoft.Agents.AI/StructuredOutput/StructuredOutputAgentResponse.cs
    
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Agents/Agent_Step05_StructuredOutput/Program.cs
    
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    
    * address pr review feedback
    
    ---------
    
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
    
    * .NET: Support primitives and arrays for SO (#3696)
    
    * wrap primitives and arrays
    
    * fix file encoding
    
    * address review comments
    
    * add adr
    
    * add missed change
    
    * fix compilation issue
    
    * address review comments
    
    * rename adr file name
    
    * reflect decision to have SO decorator as a reference implementation in samples
    
    * .NET: Move SO agent to samples (#3820)
    
    * move SO agent to samples
    
    * change file encoding
    
    * fix files encoding
    
    * .NET: Preserve caller context (#3803)
    
    * fix stuck orchestration
    
    * add previously removed RunAsync<T> method to DurableAIAgent
    
    * suppress IDE0005 warning
    
    * update changelog and remove unused constructor of AgentResponse<T>
    
    * updatge the changelog
    
    * address PR review feedback
    
    * .NET: Disable irrelevant integration test (#3913)
    
    * disable irrelevant integration test
    
    * Update dotnet/tests/AzureAI.IntegrationTests/AIProjectClientAgentStructuredOutputRunTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * forgotten change
    
    * address pr review feedback
    
    * disable intermittently failing integration test.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
  • .NET: [BREAKING] Add session StateBag for state storage and support multiple providers on the Agent (#3806)
    * .NET: [BREAKING] Add session statebag to use for state storage instead of inside providers (#3737)
    
    * Add a StateBag to AgentSession and pass Agent and AgentSession to AIContextProvider and ChatHistoryProviders
    
    * Convert all AIContextProviders to use the statebag
    
    * Update InMemoryChatHistoryProvider to use StateBag
    
    * Update Comsos and Workflow ChatHistoryProviders
    
    * Update 3rd party chat history storage sample.
    
    * Remove serialize method from providers
    
    * Replacing provider factories with properties
    
    * Remove Providers from Session and flatten state bag serialization
    
    * Update samples to use getservice on agent
    
    * Updated additional session types to serialize statebag
    
    * Fix regression
    
    * Address PR comments
    
    * Address PR comments.
    
    * Fix formatting
    
    * Fix unit tests
    
    * Remove InMemoryAgentSession since it is not required anymore.
    
    * Address PR comments
    
    * Convert sessions for A2AAgent, ChatClientAgent, CopilotStudioAgent and GithubCopilotAgent to use regular json serialization.
    
    * Fix durable agent session jso usgae
    
    * Add jso to InMemory and Workflow ChatHistoryProviders
    
    * Update InMemoryChatHistoryProvider to use an options class for it's many optional settings.
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address PR feedback
    
    * Fix verification bug.
    
    * Improve state bag thread safety
    
    * Address PR comments and fix unit tests
    
    * Address PR comments
    
    * Fix unit test
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Add a public StateKey property to providers (#3810)
    
    * .NET: [BREAKING] Update providers in such a way that they can participate in a pipeline (#3846)
    
    * Make providers pipeline capable
    
    * Fix unit tests
    
    * Move source stamping to providers from base class
    
    * Also update samples.
    
    * Address PR comments
    
    * Rename AsAgentRequestMessageSourcedMessage to WithAgentRequestMessageSource
    
    * .NET: [BREAKING] Add consistent message filtering to all providers. (#3851)
    
    * Add consistent message filtering to all providers.
    
    * Remove old chat history filtering classes
    
    * Fix merge issues
    
    * Fix unit test
    
    * Enforce non-nullable property
    
    * Fix merging bug and make troubleshooting source info easier by adding tostring implementation
    
    * .NET: [BREAKING] Add support for multiple AIContextProviders on a ChatClientAgent (#3863)
    
    * Add support for multiple AIContextProviders on a ChatClientAgent
    
    * Address PR comments and fix tests
    
    * Address PR comments.
    
    * .NET: [BREAKING]Delay AIContext Materialization until the end of the pipeline is reached. (#3883)
    
    * Delay AIContext Materialization until the end of the pipeline is reached.
    
    * Address PR comments.
    
    * Address PR comments
    
    * Modify InvokedContext to be immutable (#3888)
    
    * .NET: Address Feedback on StateBag feature branch PR (#3910)
    
    * Address Feedback on statebag feature branch PR
    
    * Update dotnet/src/Microsoft.Agents.AI.DurableTask/CHANGELOG.md
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address PR comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET Workflows - Rename agent-provider and add comments (Declarative Workflows) (#3895)
    * Renamed with comments
    
    * Fix rename arcs
    
    * Integration tests
  • .NET: [BREAKING] Change SerializeSession to be Async (#3879)
    * Change SerializeSession to be Async
    
    * Update Changelog