Commit Graph

261 Commits

  • .NET: Add Agent Filtering Middleware (#478)
    * WIP
    
    * Wip
    
    * Updated ADR
    
    * Updated ADR
    
    * Update files
    
    * Address copilot comments
    
    * Update filters from Task<T> to Task only
    
    * Project endpoint
    
    * Add agent ctor filter
    
    * Other Agent Framework investigation
    
    * Remove SK Java, no support
    
    * Update LlamaIndex info
    
    * Removing unrelated files
    
    * Implementation with specialization
    
    * Remove the specialization option as extra unecessary complexity
    
    * Move middleware responsibility to a decorator
    
    * Update readme
    
    * Function invocation wip
    
    * Add Agent Builder
    
    * Adding comparison samples
    
    * Reorganize Samples and Processor vs Decorator
    
    * Remove merge files
    
    * Address formating warnigs
    
    * Update ADR
    
    * Step13 README's update
    
    * Address PR feedback
    
    * Address PR feedback
    
    * Remove configure await from ADR samples
    
    * Update variables
    
    * Address feedback
    
    * Address Agent level tool invocation with Options.ToolsTransformer strategy
    
    * Removing the Processor approach
    
    * Proposal design for Middleware in CreateAIAgent extensions
    
    * Examples clean up and consolitation
    
    * Update middlewares to work with ApprovalREquiredFunction
    
    * Clean-up sample
    
    * Update override function call sample
    
    * Drop configuration from the extensions, looks overkill
    
    * Builder interface ..
    
    * Revert IAIBuilder interface approach
    
    * Cleanup sample
    
    * Adding unit tests
    
    * Fix UT
    
    * Cleanup sample
    
    * Remove unneeded dependency
    
    * Address PR comment + Readme Samples
    
    * Add missing comments for Program.cs Middleware
    
    * Address mor PR comments + add client factory for OpenAI extensions
    
    * Add OpenAI UnitTests for extensions
    
    * Add AzureAI PersistentChatClient UT
    
    * Addess feedback
    
    * Add function invoking UT
    
    * Add builder extension UT
    
    * Address feedback + Rearange abstractions + UT fixes
    
    * Drop context based middleware for full decorating impl
    
    * Update unit tests
    
    * Update UT coverage
    
    * Removing Middelware namespace
    
    * Add missing UT
    
    * Remove internal ToolTransformation Property
    
    * Adjust xmldoc
    
    * Remove transient file
    
    * Address merge conflict
    
    * Add xmldoc remark for clarity
    
    * Address comment
    
    * Address feedback
    
    * Update UT
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET Workflows - Declarative Workflow Integration Tests (#956)
    * Checkpoint / 100% Pass
    
    * Checkpoint: ActionExecutorResult
    
    * Update dotnet/tests/Microsoft.Agents.Workflows.Declarative.IntegrationTests/Testcases/Marketing.json
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Namespace
    
    * Sync updates
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Make serialize methods sync and rename one to match others. (#946)
    * Make serialize methods sync and rename one to match others.
    
    * Remove unnecessary async postfixes.
    
    * Remove nullability of ChatMessageStore.Serialize return type, since the default JsonElement already represents an undefined json element.
    
    * Fix unit test
  • .NET: Change Runtime namespaces to Microsoft.Agents.AI.Runtime (#957)
    * Rename MEAI.Runtime to MAAI.Runtime.
    
    * Missed.
  • .NET: Change Hosting namespaces to Microsoft.Agents.AI.Hosting (#953)
    * Rename MEAI.Hosting to MAAI.Hosting.
    
    * dotnet format.
  • .NET Workflows - Introduce support for Local variable scope (#944)
    * Prepare for update
    
    * Checkpoint
    
    * Comments
    
    * All fixed
    
    * Mixed casre test added
    
    * Rollback nuget
    
    * Remove redundant restorable
    
    * Namespace
  • feat: Solidify Concurrency Model for Inproc Workflows (#925)
    * Disallow execution of multiple workflows at once
    * Define notion of executor Reset() to allow reuse of workflows with shared executor instances
    * Switch to delivering all messages to a single executor sequentially, with executors running in parallel
  • Rename AI Agent packages to use Microsoft.Agents.AI (#913)
    * Rename AI Agent packages to use Microsoft.Agents.AI
    
    * Fix for build
    
    * Fix formatting
    
    * Fix formatting
    
    * Ignore in VSTHRD200 in migration samples
    
    * Ignore in VSTHRD200 in migration samples
    
    * Add some missing projects and run format
    
    * Fix build errors
    
    * Address code review feedback
    
    * Fix merge issues
    
    ---------
    
    Co-authored-by: Mark Wallace <markwallace@microsoft.com>
  • .NET Workflows - Declarative update for AzureAgentProvider usage (#907)
    * Updated
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Extensions/IWorkflowContextExtensions.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Constant / override
    
    * Namespace
    
    * Protect against race
    
    * Simplify collection usage
    
    * Rollback name resolution
    
    * One more rollback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Update Workflow Input/Output Redesign (#881)
    * feat: Make Executor id field mandatory
    
    When checkpointing is involved, it is critical to keep executor ids consistent between runs, even when recreating a new object tree for the workflow.
    
    The default id-setting mechanism generated a guid for part of the id, making it not work when restoring from a checkpoint.
    
    This change prevents this situation from arising.
    
    * feat: Enable running untyped Workflows
    
    With the change to enable delay-instantiation of executors and support for async Executor factory methods, we must instantiate the starting executor to know what are the valid input types for the workflow.
    
    To avoid forcing instantiation every time, and to better support workflows with multiple input types, we enable support for build and interacting with the base Workflow type without type annotations, and remove the requirement to know a valid input type when initiating a run.
    
    * feat: Support Output from any executor and multiple outputs.
  • .NET: Add AgentWorkflowBuilder group chat (#861)
    * Add AgentWorkflowBuilder group chat
    
    And fix a variety of issues along the way:
    - Use DateTime{Offset}.UtcNow rather than Now
    - AIAgentHostExecutor shouldn't be publishing empty messages
    - Sequential workflows should be flowing all history and not just the output from the previous agent as the input into the next agent
    - Renamed some of the new agent workflow methods... still not super happy with the shape, though
    - Simplified handoffs builder, e.g. using a hashset with a custom comparer instead of a dictionary
    - Improved multi-service use by trying to change assistant->user role for messages created by other agents
    - Changed MessageMerger to rely on M.E.AI's coalescing more and to avoid empty contents / text
    - Ensured that messages from ChatClientAgent include MessageId and CreatedAt timestamps
    - Avoided including instructions for agents in a handoff workflow that don't have any handoffs
    - Removed the unnecessary end function in handoffs
    - Improved naming of executors to include agent name for debuggability
    - Use "N" formatting with Guid.ToString everywhere, to avoid the unnecessary extra dash character which is also not valid in various places (like function tool names)
    - Replace `params T[]` with `params IEnumerable<T>` to make public APIs more flexible in what they consume
    
    * Address feedback
    
    - Fix unintentional provider change in sample
  • .NET: [BREAKING] Add GetService for AIContextProviders and ChatMessageStore (#874)
    * Add GetService for AIContextProviders and ChatMessageStore
    
    * Change styling and fix format issues
    
    * Update sample code to allow for missing memory component.
  • .NET Workflows - Improvements to Declarative Framework (#838)
    * Closure
    
    * Verified
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Interpreter/DeclarativeWorkflowContext.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Sample folder
    
    * System scope fix
    
    * Fix link
    
    * Integrate Foundry SDK fix
    
    * File naming fix
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/Interpreter/DeclarativeWorkflowContext.cs
    
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    
    * Namespace
    
    * Optimize bind
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
  • .NET Workflows - Integrate Element Aliasing (#835)
    * Checkpoint
    
    * Update test workflows
    
    * Update workflows/MathChat.yaml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update folder
    
    * Cleanup
    
    * Signed package version
    
    * Rollback nuget.config
    
    * Cleanup
    
    * Set `ProductContext`
    
    * Move product initialization.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Subclass AgentThread so that different agents have their own threads with their own typed settings. (#798)
    * Subclass AgentThread so that different agents have their own threads with their own typed settings.
    
    * Address PR comment.
    
    * Add unit tests for base abstract threads
    
    * Fix style warning
    
    * Fix stlying
    
    * FIx and suppress warnings as needed.
    
    * Remove covariant thread response types and fix some styling.
    
    * Remove unecessary json property name attributes and make OrchestratingAgentThread private
    
    * Fix break from merge from main.
    
    * Fix formatting
    
    * Fix deserialization bug in Memory sample
    
    * Remove thread deletion from basic samples.
    
    * Remove public constructors for thread subclasses and add more factory methods to concrete agent types.
    
    * Update AgentProxy thread constructors to be internal as well.
    
    * Revert AgentProxyThread to internal
    
    * Change AIContextProvider to internal set
    
    * Change conversation id and message store properties to internal set
    
    * Update styling.
    
    * Seal various thread types.
    
    * Add thread type check for thread deletion
    
    * Fix tests after latest merge from main
    
    * Add thread type checks for thread deletion.
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: [BREAKING] Support Checkpoint Serialization (#735)
    * feat: Support Checkpoint Serialization
    
    * Implements serialization roundtripping for checkpoints.
    * Adds support for JSON serialization
    * Adds FileSystem-based checkpoint persistence
    
    * fix: Executor State does not deserialize correctly
    
    The StateManager was not properly handling delay-deserialized values.
    
    * Fix PortableValue handling in StateManager (this makes it delegate to PortableValue the uwnrapping)
    * Fix UnitTest to actually test checkpoint serialization
    * Additional review comment fixes
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET: Update AgentThread, MessageStores and Context Providers to deserialize via constructor. (#779)
    * Update AgentThread, MessageStores and Context Providers to deserialize via constructor.
    
    * Fix pr comment.
    
    * Add additional validation for AgentThread deserialization
    
    * Update WorkflowMessageStore desreialize to improve error checking.
    
    * Reduce allocations in InMemoryChatMessageStore
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET Workflow - Declarative Workflow Event Fix (#765)
    * Checkpoint
    
    * Update workflows/DeepResearch.yaml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Comment
    
    * Fix comment
    
    * Update package version
    
    * Fix nuget haxx
    
    * Checkpoint
    
    * Code complete
    
    * Testing
    
    * Message content workaround
    
    * Add sequential flow
    
    * Checkpoint
    
    * Integration test project
    
    * Checkpoint
    
    * Checkpoint cleanup
    
    * Complete
    
    * Checkpoint
    
    * Fix tests
    
    * Comment cleanup
    
    * Namespace
    
    * Formatting
    
    * Analyzer updates
    
    * Workflow update
    
    * Fixed!
    
    * Update dotnet/tests/Microsoft.Agents.Workflows.Declarative.UnitTests/DeclarativeWorkflowTest.cs
    
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    
    * Fix build error
    
    * Purge "immutable" set and dictionary
    
    * Fix as task
    
    * Collection expression
    
    * Another
    
    * Frozen => Readonly (perf)
    
    * Fix
    
    * Namespace
    
    * Checkpoint
    
    * Add test
    
    * Fix
    
    * Rollback workflow edit
    
    * nitty
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
  • .NET: Add AIContextProvider support (#691)
    * Add AIContextProvider support
    
    * Address feedback.
    
    * Address PR comments.
    
    * Switch to valuetask and remove parallel calls for AIContextProvider
    
    * Remove Model from ModelInvokingAsync method name
    
    * Remove agent thread id again and remove it from context provider interface
    
    * Add AIContextProvider serialization support to AgentThread and update sample to show this feature
    
    * Address PR comments
    
    * Improve memory sample
    
    * Update sample comment.
    
    * Remove AggregateAIContextProvider for now since it makes too many assumptions.  We can include it later as a sample if needed.
    
    * Update AIContextProviders to have an Invoked method instead of MessagesAddingAsync.
    
    * Remove unused using.
    
    * Address PR comments.
    
    * Address PR comment.
    
    * Update comment.
    
    * Update comment
    
    * Address PR comments.
  • .NET Workflow - Declarative State Consolidation (#759)
    * Checkpoint
    
    * Update workflows/DeepResearch.yaml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Comment
    
    * Fix comment
    
    * Update package version
    
    * Fix nuget haxx
    
    * Checkpoint
    
    * Code complete
    
    * Testing
    
    * Message content workaround
    
    * Add sequential flow
    
    * Checkpoint
    
    * Integration test project
    
    * Checkpoint
    
    * Checkpoint cleanup
    
    * Complete
    
    * Checkpoint
    
    * Fix tests
    
    * Comment cleanup
    
    * Namespace
    
    * Formatting
    
    * Analyzer updates
    
    * Workflow update
    
    * Fixed!
    
    * Update dotnet/tests/Microsoft.Agents.Workflows.Declarative.UnitTests/DeclarativeWorkflowTest.cs
    
    Co-authored-by: Tao Chen <taochen@microsoft.com>
    
    * Fix build error
    
    * Purge "immutable" set and dictionary
    
    * Fix as task
    
    * Collection expression
    
    * Another
    
    * Frozen => Readonly (perf)
    
    * Fix
    
    * Namespace
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Tao Chen <taochen@microsoft.com>
  • .NET Workflow - Integrated updated CPS Object Model (#681)
    * Checkpoint
    
    * Update workflows/DeepResearch.yaml
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Comment
    
    * Fix comment
    
    * Update package version
    
    * Fix nuget haxx
    
    * Checkpoint
    
    * Code complete
    
    * Testing
    
    * Message content workaround
    
    * Add sequential flow
    
    * Checkpoint
    
    * Integration test project
    
    * Checkpoint
    
    * Checkpoint cleanup
    
    * Complete
    
    * Update package
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: [BREAKING] Change implementation to use AsFunctionTool extension method to create a function from an agent (#686)
    * Change implementation to use AsFunctionTool extension method to create a function from an agent
    
    * Update dotnet/tests/Microsoft.Extensions.AI.Agents.UnitTests/AgentExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address code review feedback and add a new sample
    
    * Address some code review feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .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.