3c3feb8705
* Refactor runner/workflow responsibilities, add concurrency guards, and fix checkpoint ancestry bug Move runner-state ownership out of Workflow into Runner for clearer responsibilities. Add a weakref-based concurrent-run guard in Workflow and fix the stream-drop race in run_until_convergence. Fix the checkpoint ancestry bug by tracking the previous checkpoint id as runner instance state so parent pointers persist across resumed runs. Move Runner to a deprecated lazy __getattr__ export (backward-compatible with DeprecationWarning) and export CheckpointID. * Scope runtime checkpoint storage to its owning run Close the stream-drop race where a dropped run's deferred async-generator finalizer could leave a runtime checkpoint storage override set (inherited by a new run) or clear a successor run's storage. run() now defensively clears any stale override before starting, and _run_core only clears the override if this run still owns it (mirroring the _active_run ownership guard). Adds regression tests for both the inheritance and clobber cases. * Collapse runtime-storage ownership into the active-run weakref _runtime_storage_owner always held the same weakref as _active_run, so the two ownership conditions were equivalent. Derive ownership from a single owns_run = (_active_run is my_active_run) captured before the active-run clear, and remove the redundant field. No behavior change. * Nest runtime-storage clear under the owns_run guard Both the active-run release and the runtime-storage clear are gated on owns_run, so fold the storage clear inside the if owns_run block. No behavior change. * Reset resume flag in a finally so it can't leak across runs _resumed_from_checkpoint was only cleared on the success path of run_until_convergence, so a failure during a resumed run (e.g. executor failure) left it True. The next fresh run then skipped the superstep-0 checkpoint and parented later checkpoints to the stale resume point. Move the reset into a finally. Add a regression test that fails a resumed run via an executor error and asserts the next fresh run creates the superstep-0 checkpoint. * Fix tests and formatting * Fix formatting * Address comments * Update type ignore statements
Get Started with Microsoft Agent Framework Declarative
Please install this package via pip:
pip install agent-framework-declarative --pre
Release stage
This package ships at two different stability levels:
- Declarative workflows (
WorkflowFactory, executors, handlers, and the_workflowssurface) are at release-candidate stability and may receive only minor refinements before GA. - Declarative agents (
AgentFactoryand the YAML agent loading/parsing path:DeclarativeLoaderError,ProviderLookupError,ProviderTypeMapping) are experimental and may change or be removed in future versions without notice. Using any of these symbols emits anExperimentalWarningon first use.
Declarative features
The declarative packages provides support for building agents based on a declarative yaml specification.