Skip to content

Releases: microsoft/agent-framework-durable-extension

v1.16.0-preview.260922.1

Pre-release

Choose a tag to compare

@tamirdresher tamirdresher released this 25 Sep 16:14
8ca9136

First GitHub release for this repo. Earlier preview versions were published to nuget.org and PyPI without a corresponding tag or release entry, so the notes below cover the accumulated [Unreleased] changelog rather than only the delta since the previous preview.

Packages

.NET — 1.16.0-preview.260922.1

Package
Microsoft.Agents.AI.DurableTask https://www.nuget.org/packages/Microsoft.Agents.AI.DurableTask/1.16.0-preview.260922.1
Microsoft.Agents.AI.Hosting.AzureFunctions https://www.nuget.org/packages/Microsoft.Agents.AI.Hosting.AzureFunctions/1.16.0-preview.260922.1

Python — 1.0.0b260922

Package
agent-framework-durabletask https://pypi.org/project/agent-framework-durabletask/1.0.0b260922/
agent-framework-azurefunctions https://pypi.org/project/agent-framework-azurefunctions/1.0.0b260922/

All .NET assemblies and packages in this release are Authenticode signed through ESRP.

Breaking changes

Microsoft.Agents.AI.DurableTask

  • AddWorkflow no longer silently overwrites a workflow already registered under the same name, which previously left the workflow and executor registries inconsistent. Registering a different workflow under a taken name now throws; re-registering the same instance remains a no-op. Applications that register duplicate workflow names start today but will now fail at startup (#66)
  • Added IWorkflowClient overloads that start a registered workflow by name, and made workflow result deserialization case-insensitive so results can be read back when hosted in Azure Functions. External implementations of IWorkflowClient must implement the new members, and an untyped null first argument is now ambiguous between the Workflow and workflow-name overloads (#48)
  • Removed the AddAIAgents and AddWorkflows bulk registration APIs; AddWorkflow now returns DurableWorkflowOptions so multiple workflows can be registered fluently (#39)

Microsoft.Agents.AI.Hosting.AzureFunctions

  • The workflow status and respond endpoints always return JSON now, including on errors and when the request sends no Accept header. Malformed request bodies surface as 400 Bad Request instead of an unhandled error (#60)
  • Bounded synchronous workflow HTTP invocation via query parameters; workflow run responses default to JSON, with Accept: text/plain available for the legacy text format (#52)
  • Consolidated the AddWorkflow overloads into a single method with optional enableStatusEndpoint and enableMcpToolTrigger parameters, returning DurableWorkflowOptions (#39)
  • Replaced "thread" with "session" in the HTTP and MCP APIs (#47)
  • Renamed AddWorkflow parameters exposeStatusEndpoint / exposeMcpToolTrigger to enableStatusEndpoint / enableMcpToolTrigger, for consistency with AddAIAgent (#35)

Fixes and improvements

  • Hardened durable agent executor output handling so control-shaped JSON returned by an agent stays a raw result instead of populating executor control fields (#101)
  • Durable workflows now fail with MaxSuperstepsExceededException when they hit the configurable MaxSupersteps limit with work still queued, instead of returning a successful partial result (#84)
  • Fixed ConfigureDurableAgents and ConfigureDurableWorkflows not composing in the same application — previously one ordering left workflow functions without an executor, the other registered the function execution middleware twice, and agents registered through ConfigureDurableOptions generated no functions at all, leaving the agent silently unreachable (#67)
  • Fixed a JsonTypeInfo metadata ... was not provided failure when persisting agent state for function calls or results carrying values the state serializer has no metadata for, such as AIContent results returned by MCP tools (#57)
  • Added DurableTaskClient.AsWorkflowClient so functions can invoke durable workflows without constructing an HttpClient (#48)
  • Wrapped RequestPort external responses in a controlled DurableExecutorOutput envelope so only the result property is populated during deserialization (#20)
  • Scoped the workflow status and respond endpoints to the route workflow name (agent-framework#6608)
  • Bound the live workflow status to a trailing event window, so multi-executor workflows with large typed outputs no longer overflow the Durable Task 16 KB custom status cap (agent-framework#6775)
  • Fixed WorkflowOutputEvent streaming deserialization to read executorId instead of the renamed sourceId, with fallback for backward compatibility (agent-framework#6896)
  • Fixed resuming a checkpoint after a package version upgrade (agent-framework#6670)
  • Bound the MCP threadId to the current agent and guarded cross-agent session dispatch (agent-framework#6531)
  • Added support for durable workflows (agent-framework#4436), AddSwitch and target-selecting fan-out edges (agent-framework#6749), returning workflow results from the HTTP trigger endpoint (agent-framework#5321), and MCP tool triggers for durable workflows (agent-framework#4768)

Full changelogs