* workflow tracing design doc
* add tracing implementation for workflow
* fix bug caused by double wrapping of sub workflow request
* add unit tests for tracing
* add documentation for workflow tracing
* remove unnecessary file
* update aspire command
* fix tests
* proper serialization of subworkflows and add workflow.definition
* add serialization test
* fix subworkflow serialization
* workflow_id --> id
* update workflow sample to address comments
* update naming; use costant
* use NoOpTracer instead of nullcontext
* use span event instead of attribtutes for status
* fix typing
* add workflow.build span
* rename methods for clarity
* ensure all source trace contexts are propagated in fan in
* 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
* Adding draft version of workflows design doc.
* Adding message flow diagrams and fixing group chat sample.
* Added sequence diagram for fan_in with WhenAny
* Updating workflows design
* clean up
* Clean up request & response contents
* Add more future enhacements
* message_handler -> handler
* remove mention of visual designer
* Minor updates and rename
* Name reformat
---------
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
Co-authored-by: Tao Chen <taochen@microsoft.com>
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* Adding design documents and data flow descriptions for sub-workflows
* Updating docs.
* Sub-workflow implementation #1. Stuck because of singleton RequestInfoExecutor, going to make a change to remove that restrivtion.
* Removed the singleton restriction on RequestInfoExecutor so enable sub-workflows.
* Scenarios seem to be working.
* Sample improved.
* going to have intern add generic response wrappers.
* Wrapped responses working.
* Non-hardcoded routing is working.
* Sample showing external approved and not approved.
* Cleaning up.
* Updating some samples and user guide.
* Removing old design doc.
* Cleaning up.
* Adding python-package-setup.md back.
* Update python/packages/workflow/agent_framework_workflow/_executor.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update python/packages/workflow/agent_framework_workflow/_validation.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Removing prints.
* Fixing lint and type issues.
* Fixing lint and type issues.
* Update python/packages/workflow/agent_framework_workflow/_executor.py
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* Adding type hints to intercepts decorator.
* Removing unused files.
* Fixing issue with sample 5 groupchat with hil.
* Removing redundent samples.
* Updates to ensure no conflicting request interceptors and to support a subflow with multiple requests in a single super step.
* Fixing pypi errors.
* clean up samples
* update samples to make it more clear
* warning for unhandled request info from sub workflow
* add logger info
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* Allows creation of ExternalRequest objects directly to control the requestId
* Allows receiving ExternalResponse objects rather than unwrapped Data
* Normalizing naming
* Refactor workflow to introduce EdgeRunner for edge execution.
* Fix edge cases
* Convert Workflow, Edge, EdgeGroup, and Executor into AFBaseModel to support object model serialization
* format
* remove accidental file
* fix typing
* Add type information to EdgeGroup and Executor subclasses
* fix format
* Add condition_name field to Edge
* Add new fields
* remove Optional
* Update
* 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
* Use generic for WorkflowContext and use its type parameters to indicate executor's output types
* Update
* Fix type errors and add in-line comments
* fix test
* type
* Fix executor type issues
* 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
* Introducing edge groups
* Add conditional and partitioning edge groups; next add samples and tests
* Add unit tests
* Add samples
* Address comments 1
* Address comments 2
* Update conditional edge group to take in cases and default
* Minor updates to sample
* Collapsing Paritioning Edge group and Conditional Edge group to source edge group
* Improve sample clarity
* Name consolidation
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* Updates for message store support
* Added unit tests
* Added suspend-resume example
* Added example with custom chat message store
* Small fix
* Addressed PR feedback
* Renaming and documentation
* More renaming
* Addressed more PR feedback
* Small fixes in Foundry chat client and examples
* Small update
* Addressed PR feedback
* Increased timeout for Azure tests
* 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>