Commit Graph

534 Commits

  • .NET: BREAKING Update AIAgent.Run to take IEnumerable instead of IReadonlyCollection (#729)
    * Update AIAgent,Run to take IEnumerable instead of IReadonlyCollection
    
    * Address PR comment.
    
    * Cast to IReadonlyCollection since this is typically all that is required to avoid unecessary allocation.
    
    * Update OrchestratingAgent protected methods as well.
  • .NET: Add support for IChatReducer to InMemoryChatMessageStore (#462)
    * Add support for IChatReducer to InMemoryChatMessageStore
    
    * Fix typos.
  • .NET: Adding Delegating AIAgent (#708)
    * Delegating AIAgent impl
    
    * Warning fix
    
    * Fix duplicate
  • .NET: Workflow getting started samples in .Net (Second batch) (#650)
    * Add loop and agents in workflows samples
    
    * Add foundry agent and workflow as agent samples
    
    * Checkpoint sample WIP
    
    * Checkpoint sample 1 Done
    
    * Add HIL samples
    
    * Fix formatting
    
    * Force folder name change step 1
    
    * Force folder name change step 2
    
    * Fix formatting
    
    * Fix formatting
    
    * Add checkpoint and rehydrate sample
    
    * _Foundational
    
    * Fix formatting
  • .NET Workflows - Add declarative action events (#679)
    * Updated
    
    * Typos
    
    * Update sample
    
    * Typo
    
    * Add parent and prior action ids to event
  • .NET: fix: MessageMerger crashes when there are no dangling messages (#660)
    * fix: MessageMerger crashes when there are no dangling messages
    
    * refactor: Better logic for AgentId in Workflow-as-Agent
    
    If the parent "agent" instance received an Id or Name when being instantiated, we should avoid stomping over it with the subagents' ids. But if there is no parent identifier, and only a single subagent yielded identified messages, pull that in.
  • .NET: Add an A2A client server sample (#633)
    * Add an A2A client server sample
    
    * Address code review feedback
    
    * Start to fix code review feedback
    
    * Start to fix code review feedback
    
    * Start to fix code review feedback
  • .NET: Remove AgentThread.GetMessagesAsync (#668)
    * Remove AgentThread.GetMessagesAsync
    
    * Remove unecessary using
  • .NET: Multiple fixes in Microsoft.Agents.Orchestration to make handoffs work end-to-end (#568)
    * Multiple fixes in Microsoft.Agents.Orchestration:
    - Enable multi-turn (via RunAsync) interactions for all orchestrating agents
    - Fix tool calling in HandoffOrchestration (multiple issues)
    - Fixes for chat history serialization involving tool calls
    
    * GHCP PR feedback
    
    * Fix issue with returning old responses
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • fix: Fix Checkpoint Restore when Rehydrating Run (#642)
    When checkpointing we did not persist the set of instantiated executors. This means, in turn, when we restore from a checkpoint when using Resume(Stream) rather than restoring a checkpoint in the context of an already existing (Streaming)Run, the executors never got reinstantiated and there were no executors to notify that a state should be loaded.
    
    The fix is to ensure we persist the list and reinstantiate the executors on rehydration.
    
    * Also adds a rehydration restore test
  • .NET: Improve DevEx for simple Executors (#626)
    * feat: Improve DevEx for simple Executors
    
    * Add abstract types for executors that will only handle one type of message
    * Add FunctionExecutor and configuration capability on delegates
    * Add support for late-instantiated Executors
    
    * refactor: Remove open-typed extension method
    
    * refactor: Switch to TaskFactory pattern for async--from-sync
    
    * docs: Update XML docs for publics and fix formatting
    
    * refactor: Better naming for ExecutorIsh configuration methods
    
    * docs: Fix typo in ExecutorIshConfigurationExtensions.ConfigureFactory
  • .NET: Workflow getting started samples in .Net (First batch) (#554)
    * First batch of workflow getting started samples in .Net
    
    * Add Switch Case Edge group
    
    * Add multi selection group
    
    * Add comments
    
    * Add readme
    
    * Fix formatting
    
    * clean project file
    
    * WIP: Revise sample structures
    
    * Update readme
    
    * Update readme
    
    * Fix file encoding
    
    * Update sample format
    
    * Address comments
    
    * Fix formatting
    
    * Remove unwanted file
    
    * Fix unit tests
    
    * Remove unwanted file
  • .NET: Add Declarative Workflow Interpreter (#401)
    * test: Add Reflection/Invocation tests
    
    * fix: Terminate on Completion event
    
    * refactor: Update public API surface
    
    * feat: Add support for external requests
    
    * feat: Support hosting AIAgent instances in Workflows
    
    * fix: Fix routing to go through Executor.ExecuteAsync
    
    * test: Update samples for "must SendMessage" semantics
    
    * Add invoking samples to unit tests to avoid future breaks
    
    * fix: ExternalRequest should block Workflow completion
    
    * feat: Normalize API surface against Python
    
    * Also adds xmldoc to all public APIs
    
    * refactor: Normalize UnitTest and Sample namespaces
    
    * fix: Formatting
    
    * refactor: Normalize project/folder names
    
    * feat: Remove DynamicCodeExecution from ValueTaskTypeErasure
    
    * fix: Fix ILTrim warnings
    
    * docs: Add missing docs and fix typos
    
    * feat: Hosted Agents should report Run events
    
    * fix: Fix type propagation for ILTrim changes
    
    * refactor: Simplify DynamicallyAccessedMembers annotations
    
    * sample: Use static-Type construction of InputPort
    
    * feat: Support non-Streaming Run Mode
    
    * test: Add test for non-streaming execution
    
    * Conversion checkpoint
    
    * Fix namespace error
    
    * Restructure
    
    * Completion
    
    * Executor checkpoint
    
    * Conditional checkpoint
    
    * Cleanup
    
    * Exception cleanup
    
    * Sample cleanup
    
    * Updates
    
    * feat: Define Workflow and Executor APIs
    
    * feat: Define IExecutionContext and Events
    
    * feat: Simple Workflow Demos
    
    * refactor: Move Workflows classes to separate assembly
    
    * feat: Move FanOut/In to LowLevel API with new semantics
    
    * feat: Implement Local Execution
    
    * refactor: Assembly name .Workflow => .Workflows
    
    * feat: Enable Default Message Handling
    
    * also lifts Bind in MessageHandlerInfo to better be able to direclty invoke handlers (for AOT, later)
    
    * feat: Implement StreamingHandle APIs
    
    This allows the user to respond to WorkflowEvents with external messages, enabling HIL.
    
    * feat: Add checks for duplicate edges and chain cycles
    
    * feat: Add built-in WorkflowEvents
    
    * refactor: Pull classes into own files
    
    * refactor: Simplify Disposal pattern in Executor
    
    * refactor: Break EdgeRunner file into per-type files
    
    * refactor: Use Throw.IfNull()
    
    * refactor: Remove AddLoop()
    
    Per https://github.com/microsoft/agent-framework/pull/272#discussion_r2241739079 we decided this was not very useful.
    
    * refactor: Normalize use of ValueTask
    
    * fix: Build Break from removing .AddLoop
    
    * refactor: Explicit routing and RouteBuilder
    
    Split out reflection from MessageRouter implemention into build phase, enabling AOT compilation to drive RouteBuilding without reflection.
    
    * test: Add Reflection/Invocation tests
    
    * fix: Terminate on Completion event
    
    * refactor: Update public API surface
    
    * feat: Add support for external requests
    
    * feat: Support hosting AIAgent instances in Workflows
    
    * fix: Fix routing to go through Executor.ExecuteAsync
    
    * test: Update samples for "must SendMessage" semantics
    
    * Add invoking samples to unit tests to avoid future breaks
    
    * fix: ExternalRequest should block Workflow completion
    
    * feat: Normalize API surface against Python
    
    * Also adds xmldoc to all public APIs
    
    * refactor: Normalize UnitTest and Sample namespaces
    
    * fix: Formatting
    
    * refactor: Normalize project/folder names
    
    * feat: Remove DynamicCodeExecution from ValueTaskTypeErasure
    
    * fix: Fix ILTrim warnings
    
    * docs: Add missing docs and fix typos
    
    * feat: Hosted Agents should report Run events
    
    * fix: Fix type propagation for ILTrim changes
    
    * refactor: Simplify DynamicallyAccessedMembers annotations
    
    * sample: Use static-Type construction of InputPort
    
    * feat: Support non-Streaming Run Mode
    
    * test: Add test for non-streaming execution
    
    * refactor: Remove unused types
    
    * refactor: Simplify Event and EdgeData type hierarchies
    
    * feat: Add Switch (=Conditional Edge Group) control flow
    
    * Fix unit-tests
    
    * Add sample
    
    * Comment cleanup
    
    * Fix debug output
    
    * Formating helpers
    
    * feat: Define Workflow and Executor APIs
    
    * feat: Define IExecutionContext and Events
    
    * feat: Simple Workflow Demos
    
    * refactor: Move Workflows classes to separate assembly
    
    * feat: Move FanOut/In to LowLevel API with new semantics
    
    * feat: Implement Local Execution
    
    * refactor: Assembly name .Workflow => .Workflows
    
    * feat: Enable Default Message Handling
    
    * also lifts Bind in MessageHandlerInfo to better be able to direclty invoke handlers (for AOT, later)
    
    * feat: Implement StreamingHandle APIs
    
    This allows the user to respond to WorkflowEvents with external messages, enabling HIL.
    
    * feat: Add checks for duplicate edges and chain cycles
    
    * feat: Add built-in WorkflowEvents
    
    * refactor: Pull classes into own files
    
    * refactor: Simplify Disposal pattern in Executor
    
    * refactor: Break EdgeRunner file into per-type files
    
    * refactor: Use Throw.IfNull()
    
    * refactor: Remove AddLoop()
    
    Per https://github.com/microsoft/agent-framework/pull/272#discussion_r2241739079 we decided this was not very useful.
    
    * refactor: Normalize use of ValueTask
    
    * fix: Build Break from removing .AddLoop
    
    * refactor: Explicit routing and RouteBuilder
    
    Split out reflection from MessageRouter implemention into build phase, enabling AOT compilation to drive RouteBuilding without reflection.
    
    * test: Add Reflection/Invocation tests
    
    * fix: Terminate on Completion event
    
    * refactor: Update public API surface
    
    * feat: Add support for external requests
    
    * feat: Support hosting AIAgent instances in Workflows
    
    * fix: Fix routing to go through Executor.ExecuteAsync
    
    * test: Update samples for "must SendMessage" semantics
    
    * Add invoking samples to unit tests to avoid future breaks
    
    * fix: ExternalRequest should block Workflow completion
    
    * feat: Normalize API surface against Python
    
    * Also adds xmldoc to all public APIs
    
    * refactor: Normalize UnitTest and Sample namespaces
    
    * fix: Formatting
    
    * refactor: Normalize project/folder names
    
    * feat: Remove DynamicCodeExecution from ValueTaskTypeErasure
    
    * fix: Fix ILTrim warnings
    
    * docs: Add missing docs and fix typos
    
    * feat: Hosted Agents should report Run events
    
    * fix: Fix type propagation for ILTrim changes
    
    * refactor: Simplify DynamicallyAccessedMembers annotations
    
    * sample: Use static-Type construction of InputPort
    
    * feat: Support non-Streaming Run Mode
    
    * test: Add test for non-streaming execution
    
    * refactor: Remove unused types
    
    * refactor: Simplify Event and EdgeData type hierarchies
    
    * feat: Add Switch (=Conditional Edge Group) control flow
    
    * feat: Make .NET AutoSend the MessageHandler result
    
    * feat: Implement State APIs
    
    * Add tests
    
    * Fix merge from main
    
    * Test coverage
    
    * Message event
    
    * Comments and clean-up
    
    * Format
    
    * Cleanup
    
    * Test checkpoint
    
    * Clean-up - comments / test
    
    * Test baseline - 100%
    
    * More clean-up
    
    * Comments
    
    * Streaming...sort've...
    
    * Fix build / test
    
    * Stable
    
    * Checkpoint
    
    * Checkpoint
    
    * Stable
    
    * Update sample after merge
    
    * Add "Question" workflow
    
    * State clean-up checkpoint
    
    * State clean-up
    
    * Sample updated
    
    * Expression bug fix
    
    * Sample formatting
    
    * Add unit test
    
    * Comments
    
    * Scope cleanup
    
    * Refine cleanup
    
    * Fill gaps
    
    * fcs
    
    * Finalize data-types
    
    * Add unit-test
    
    * Debug cleanup
    
    * Bug fixes
    
    * Demo progress
    
    * Sample clean-up
    
    * Update samples
    
    * Sample updates
    
    * Sync demo workflows
    
    * Sample formatting
    
    * Sample formatting
    
    * Demo complete
    
    * Workflow formatting
    
    * Demo formatting #2
    
    * Readme + Sample clean-up
    
    * Scope update
    
    * Update diagnostics
    
    * Variable initiaization
    
    * Rollback
    
    * Tune research summary
    
    * State management
    
    * Fix merge
    
    * Fix merge - demo
    
    * Add readme
    
    * Overload for workflow builder
    
    * Fault tolerance - scope equivalency
    
    * Fix feed
    
    * Update sample
    
    * Add default for "Bot"
    
    * Nuget.config patchwork
    
    * Scope assignment check
    
    * Rollback nuget.config haxx
    
    * Sample format
    
    * Namespace
    
    * Namespace
    
    * Agent-Provider
    
    * Clean-up extra files
    
    * Renaming
    
    * Update sample
    
    * Prune junk files
    
    * Clean-up
    
    * Use transform
    
    * agent provider fix
    
    * Typo
    
    * Null check fix
    
    * Fix merge
    
    * Checkpoint
    
    * Cleanup
    
    * Exception cleanup
    
    * Exception message
    
    * Clean-up
    
    * Sample config update
    
    * Update handling of "Env" scope
    
    * Sample agent templates
    
    * Add readme
    
    * Event cleanup
    
    * Rename event
    
    * Update workflows/README.md
    
    Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Jacob Alber <jaalber@microsoft.com>
    Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
  • .NET: Skipping non supported integration scenarios for OpenAI Responses (#586)
    * Skipping non supported integration scenarios for OpenAI Responses
    
    * Update dotnet/src/Microsoft.Extensions.AI.Agents.OpenAI/NewOpenAIResponsesChatClient.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: A2A agent (#520)
    * add a2a agent
    
    * Update dotnet/src/Microsoft.Extensions.AI.Agents.A2A/A2AAgent.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * address pr review feedback
    
    * move unit tests for extension methods to the extensions folder
    
    * address pr review comments
    
    * address pr review comments
    
    * address pr review feedback
    
    * move a2a agent sample to console app
    
    * remove unnecessary Ids set for new projects in the solution file
    
    * remove unnecessary configuration
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: fix: FanIn Edge does not work (#541)
    * fix: FanIn Edge does not work
    
    We were not creating the state for FanIn edge in EdgeMap correctly, leading to crashes. After fixing that, it turns out the logic in FanInEdgeRunner was only forwarding the last message, not all of them.
    
    * fix: Remove duplicate code and fix typo
  • fix: ChatMessage Aggregation in AIAgentHostExecutor (#530)
    The previous fix for the aggregation in AIAgentHostExecutor has a bug wherein we only include the first update from a ChatMessage in the outgoing "collected" message.
    
    The fix is to ensure we put the collected updates into the message before sending it out.
  • .NET: Fixes for agent abstractions to improve MEAI static analysis compliance (#498)
    * Fixes for agent abstractions to improve MEAI static analysis compliance
    
    * Fix build error
  • .NET: Implement browse/clear functionality for state (#513)
    * feat: Implement browse/clear functionality for state
    
    * fix: Assertion comments in StateManagerTests
  • .NET: Fixes for ChatClientAgent to improve MEAI static analysis compliance (#502)
    * Fixes for ChatClientAgent to improve MEAI static analysis compliance
    
    * Improve instruction handling and fix unit tests.
    
    * Address PR comments.
  • .NET: Make WorkflowBuilder more intuititve (#503)
    * feat: Make WorkflowBuilder more intutitve
    
    Right now Executorish binding has some unintutitive behaviour. When a user adds an eecutor with an id of an executor that already exists, we silently replace it, if the user provides it inside of add_edge. When a user introduces an executor via an unbound id, the user must bind it via BindExecutor, even though the registration is created implicitly when an edge id added.
    
    The change will remove the invisible update in favor of a "best efforts" check of type and instance equality.
    
    * Expand errors when rebinding to disallowed
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: feat: Implement Checkpointing API (#420)
    * feat: Implement Checkpointing API
    
    * refactor: Normalzie Namespaces and break out multi-class files
    
    * feat: Support checkpointing in AIAgentHostExecutor
    
    * test: Representation tests
    
    * feat: Add Step-level Tracing and WorkflowEvents
    
    * feat: Add Checkpointing Sample and Smoke Test
    
    * Fixes an issue where StateManager was not properly clearing the incoming queued updates.
    * Fixes order of checkpointing and in-step event publication
    * Adds import of RunContext state on LoadCheckpoint
    * Add re-firing of events for unserviced ExternalRequests on Checkpoint load
    
    * docs: Add documentation to publics
    
    * Also adds documentation to ICheckpointManager which may go public
    
    * refactor: Fix Union Aggregators and add Tests
    
    * fix: Fix issues raised in PR comments and remove dead code
  • .NET: feat: Microsoft.Extensions.AI.Agents.Hosting.A2A package (#390)
    * add timeout handling for message send
    
    * prepare a2a proj
    
    * fix it finally
    
    * add a holder for selected protocol
    
    * init types ;
    
    * see discoveredAgentCardJson
    
    * prettify json
    
    * correct usage
    
    * client setup for card
    
    * setp?
    
    * message:send
    
    * init task based communication
    
    * try call it via the agent thread
    
    * okay i got back the message wooooow!
    
    * nit
    
    * fix duplicates
    
    * yea matey!
    
    * fix knights-knaves for A2A-Task-based communication
    
    * fix a2a agents csproj
    
    * AI feedback
    
    * a2a does not support netstandard / netfx
    
    * try fix build + refactor
    
    * bump a2a for net9 only
    
    * rollback System.Net.ServerSentEvents & Microsoft.Bcl.AsyncInterfaces version upgrade; override in-place and retarget to net9;net8 for A2A
    
    * address PR comments x1
    
    * refactor a2a interfaces
    
    * address PR comments x2
    
    * fix cancel usage
    
    * separate project for A2A.AspNetCore
    
    * simplify
    
    * cleanup
    
    * cleanup dependencies
    
    * generate convertor tests / fix namespaces etc
    
    * setup actor client!
    
    * fix build
    
    * backoff conversations
    
    * fix duplicate message streaming
    
    * address PR comments x1
    
    * remove internalsvisibleto
    
    * dont implement agent card query on my own: give it to the user
    
    * nit
    
    * rename and move projects
    
    * fix dotnet-format
    
    * address PR comments x1
    
    * remove unreferenced project
    
    * rollback
    
    * rename
    
    * nit
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: Add Approval capabilities to FunctionInvokingChatClient (#457)
    * Add Approval capabilities to FunctionInvokingChatClient
    
    * Address PR comments.
    
    * Address PR comments.
    
    * Address PR comments.
    
    * Address PR feedback, add sample, and fix bug plus unit test.
    
    * Address PR comments
  • .NET: feat: Host Workflow as AIAgent (#469)
    * feat: Host Workflow as AIAgent
    
    * Also changes AIAgent-as-Executor to use streaming runs and streaming
      events
    * Also enables default setting for yielding events
    
    * fix: Infinite loop in GenerateNewId()
    
    * docs: Spelling
    
    * test: Add Workflow-as-Agent sample and test
  • .NET: chore: support retries on Cosmos storage creation (#402)
    * support retries
    
    * tests + registration options
    
    * fix ordering ..
    
    * HK + update packages
    
    * fix paths
    
    * Update dotnet/tests/CosmosDB.IntegrationTests/Microsoft.Extensions.AI.Agents.Runtime.Storage.CosmosDB.Tests/CosmosTestFixture.cs
    
    * re create project and fix some pk usage
    
    * fix all tests
    
    * try workflow?
    
    * wip 1
    
    * fix definition
    
    * try with cosmos_use_emulator env?
    
    * try ignore SSL errors?
    
    * other cert verifications
    
    * hardcode to 8081?
    
    * proper valuation of ENV
    
    * logging
    
    * ensure db exsists for CI
    
    * bump
    
    * cleanup
    
    * fix usage
    
    * nit comment
    
    * try only release for stability?
    
    * try skip some flaky tests
    
    * merge fixes + rollback container
    
    * reimplement with iasyncdisposable pattern
    
    * remove example doc struct
  • .NET: Bring OpenAIResponsesChatClient temporarily (#449)
    * copy OpenAIResponsesChatClient from meai temporarly
    
    * Update dotnet/src/Microsoft.Extensions.AI.Agents.OpenAI/NewOpenAIResponsesChatClient.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * add AsNewIChatClient extension method
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: feat: Improve Support for AIAgent-as-Executor (#432)
    * feat: Support Executor-targeted messages
    
    This adds support for only sending a message to a given executor. Messages will still only route through connected edges.
    
    * feat: Support sending all valid input types after starting a run
    
    * feat: Normalize AIAgent-as-Executor Message Protocol to use MEAI types
  • .NET: Update OpenTelemetry Agent - Added Demo, AIAgentMetadata and Agent.GetService() (#356)
    * OTEL Demo
    
    * updating telemetry sample
    
    * OTEL updates
    
    * WIP
    
    * Adding GetService and Agent Metadata for Telemetry
    
    * WIP
    
    * Add UT for OTEL System behavior
    
    * Address Unicode problem
    
    * Add logging
    
    * Adjust for new extensions
    
    * Change Logger to LoggerFactory for the extension method
    
    * Address AI Feedback
    
    * Simplify script and readme just for Azure OpenAI
    
    * Increase code converage
    
    * Address merge conflict
    
    * Another slnx fix
    
    * Address PR comments
    
    * Address PR feedback + Add UT
    
    * Added Hosting UT to the solution
    
    * Address PR comments
    
    * Address missing sensitivity tests
    
    * Remove unecessary override
    
    * Address PR comments
  • .Net: WIP: feat: Define Workflow and Executor APIs (#261)
    * feat: Define Workflow and Executor APIs
    
    * feat: Define IExecutionContext and Events
    
    * feat: Simple Workflow Demos
    
    * refactor: Move Workflows classes to separate assembly
    
    * feat: Move FanOut/In to LowLevel API with new semantics
    
    * feat: Implement Local Execution
    
    * refactor: Assembly name .Workflow => .Workflows
    
    * feat: Enable Default Message Handling
    
    * also lifts Bind in MessageHandlerInfo to better be able to direclty invoke handlers (for AOT, later)
    
    * feat: Implement StreamingHandle APIs
    
    This allows the user to respond to WorkflowEvents with external messages, enabling HIL.
    
    * feat: Add checks for duplicate edges and chain cycles
    
    * feat: Add built-in WorkflowEvents
    
    * refactor: Pull classes into own files
    
    * refactor: Simplify Disposal pattern in Executor
    
    * refactor: Break EdgeRunner file into per-type files
    
    * refactor: Use Throw.IfNull()
    
    * refactor: Remove AddLoop()
    
    Per https://github.com/microsoft/agent-framework/pull/272#discussion_r2241739079 we decided this was not very useful.
    
    * refactor: Normalize use of ValueTask
    
    * fix: Build Break from removing .AddLoop
    
    * refactor: Explicit routing and RouteBuilder
    
    Split out reflection from MessageRouter implemention into build phase, enabling AOT compilation to drive RouteBuilding without reflection.
    
    * test: Add Reflection/Invocation tests
    
    * fix: Terminate on Completion event
    
    * refactor: Update public API surface
    
    * feat: Add support for external requests
    
    * feat: Support hosting AIAgent instances in Workflows
    
    * fix: Fix routing to go through Executor.ExecuteAsync
    
    * test: Update samples for "must SendMessage" semantics
    
    * Add invoking samples to unit tests to avoid future breaks
    
    * fix: ExternalRequest should block Workflow completion
    
    * feat: Normalize API surface against Python
    
    * Also adds xmldoc to all public APIs
    
    * refactor: Normalize UnitTest and Sample namespaces
    
    * fix: Formatting
    
    * refactor: Normalize project/folder names
    
    * feat: Remove DynamicCodeExecution from ValueTaskTypeErasure
    
    * fix: Fix ILTrim warnings
    
    * docs: Add missing docs and fix typos
    
    * feat: Hosted Agents should report Run events
    
    * fix: Fix type propagation for ILTrim changes
    
    * refactor: Simplify DynamicallyAccessedMembers annotations
    
    * sample: Use static-Type construction of InputPort
    
    * feat: Support non-Streaming Run Mode
    
    * test: Add test for non-streaming execution
    
    * refactor: Remove unused types
    
    * refactor: Simplify Event and EdgeData type hierarchies
    
    * feat: Add Switch (=Conditional Edge Group) control flow
    
    * feat: Make .NET AutoSend the MessageHandler result
    
    * feat: Implement State APIs
    
    * refactor: Simplify public namespaces and code organization
    
    * refactor: Reconcile .NET and Python names
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: Avoid double responses when streaming (#365)
    * Avoid double responses when streaming.
    
    * Fix tests.
  • .NET: Add agent hosting package and update sample (#296)
    * Add agent hosting package and update sample
    
    * Review feedback and cleanup
    
    * Include the narrator
    
    * wip
    
    * wip
    
    * Remove workaround for empty state writes.
    
    * Handle changes to AgentThread.
    
    * One more.
    
    * Fix.
    
    ---------
    
    Co-authored-by: Aditya Mandaleeka <adityam@microsoft.com>
  • .Net: Add support for 3rd party thread storage and thread serialization (#203)
    * Add thread storage and serialization POC
    
    * Switch to using JsonElement and add unit tests
    
    * Add additional unit tests.
    
    * Exclude private debugger properties from CodeCoverage.
    
    * Rename IChatMessagesStorable to IChatMessageStore
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Improve xml doc.
    
    * Update the message storing thread to always use external store for both local and remote storage.
    
    * Remove threadid from the IChatMessageStore interface, since the store should own the thread id itself, if it requires one.
    
    * Switch GetMessages to IEnumerable
    
    * Address pr comments.
    
    * Make jsonserializer options default consistent on DeserializeThreadAsync
    
    * Move message storing thread functionality into AgentThread and simplify AgentThread behavior.
    
    * Remove embedding generation from VectorStore chat history sample.
    
    * Remove unecessary code and fix formatting.
    
    * Make GetNewThread and DeserializeThread virtual with default implementations.
    Remove unsued json utilities.
    
    * Fix formatting
    
    * Remove problem test.
    
    * Add more unit tests
    
    * Remove unused using clause.
    
    * Address pr feedback.
    
    * Address PR comments.
    
    * Make InMemory store internal
    
    * Switch InMemoryChatMessageStore to implement IList instead of inheriting from List.
    
    * Rename store deserialize param.
    
    * Update serialization based on PR comments.
    
    * Remove confusing comment.
    
    * Address Deserialization PR comments in the same way as Serialization
    
    * Add State to IChatMessageStore Serialize and Deserialize names.
    Make Thread Deserialize internal.
    Make AgentThread type switching fobidden.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: Clean / address some message warnings (#291)
    * WIP
    
    * Structured Output sample
    
    * Update dotnet/samples/GettingStarted/Steps/Step06_ChatClientAgent_StructuredOutputs.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address xml and comment targeting the Structured Output context
    
    * Update with proposed fix for Persistent ChatClient
    
    * Address PR feedback
    
    * Address minor warnings
    
    * Address initialization
    
    * Address initialization
    
    * Address PR comments, update suggestions
    
    * Revert changes to NullableAttributese.cs
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: CosmosDB Actor State Storage (#262)
    * Implement CosmosDB actor state storage.
    
    * Fix.
    
    * Minor fixes.
    
    * Fixes.
    
    * Make CosmosDB initialization be lazy.
    
    * Remove unnecessary read from write path.
    
    * Throw on empty writes.
    
    * Add arg validation for read.
    
    * Add CosmosIdSanitizer.
    
    * Fix.
    
    * Fix.
    
    * Simplify doc IDs.
    
    * Update comment.
    
    * fb
    
    * Make LazyCosmosContainer internal and add tests.
    
    * Make test constants public and remove IVT.
    
    * Use source generated JSON context for future nativeAOT support.
    
    * Re-add dropped comments.
  • .Net: Add Structured output ChatClientAgent samples (#250)
    * WIP
    
    * Structured Output sample
    
    * Update dotnet/samples/GettingStarted/Steps/Step06_ChatClientAgent_StructuredOutputs.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address xml and comment targeting the Structured Output context
    
    * Update with proposed fix for Persistent ChatClient
    
    * Address PR feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • Clean up handoff orchestration creation (#235)
    - Remove Dictionary-derived types
    - Add an optional name to orchestrations
    - Make Handoffs based purely on AIAgent instances rather than separately provided names
  • Initial draft of actor runtime abstractions (#197)
    * Initial draft of actor runtime abstractions
  • Add an AgentRunResponse ctor accepting a ChatResponse (#204)
    * Add an AgentRunResponse ctor accepting a ChatResponse
    
    * Update dotnet/src/Microsoft.Extensions.AI.Agents.Abstractions/AgentRunResponseUpdate.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Round 3 of cleanup (#186)
    - Enable warnings as errors
    - Make the remaining src projects NativeAOT compatible
    - Use Throw helpers