* 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.
* Add getting started samples that show how to call MCP tools
* Add getting started samples that show how to call MCP tools
* Update dotnet/samples/GettingStarted/ModelContextProtocol/Agent_MCP_Server_Auth/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix README
* Address code review feedback
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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
* 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
* Organize the .Net samples
* Organize the .Net samples
* Merge latest from main
* Update sample to also include function calling telemetry (#577)
* Move package installation instructions to user-guide (#572)
* Move package installation instructions to user-guide
* Update user-documentation-dotnet/getting-started/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update docs/docs-templates/getting-started/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* .NET: Add SK-AF Migration Samples for Responses API. (#575)
* Responses wip
* Adding OpenAI Responses Migration samples
* Address all samples and code for Azure and OpenAI Responses Migration code
* Update dotnet/samples/SemanticKernelMigration/OpenAIResponses/Step02_ReasoningModel/Program.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Organize the .Net samples
* Organize the .Net samples
* Merge latest from main
* Use Agent rather than AIAgent
* Rename agents getting started samples
* Use singular Agent
---------
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 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
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.
* Add more console based getting started samples
* Simplify function calling and approavls samples and some minor renaming based on PR feedback.
* Cover streaming with comments for aprovals sample.
* Remove extra line break.
* Update getting started samples list in readme.
* Address PR comments
* Address PR comments.
The current implementation of AIAgentHostExecutor unwraps every incoming AgentRunResponseUpdate into a separate ChatMessage, amplifying the number of ChatMessages are actually generated, and yielding multiple messages with the same MessageId.
The fix is to aggregate by MesageId, with the expectation that agents do not interleave messages with differing ids, thus every new MessageId indicates a new ChatMessage and never an old one.
* 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>
* 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