diff --git a/.github/workflows/dotnet-build-and-test.yml b/.github/workflows/dotnet-build-and-test.yml index cbd3f29..5b6ba3d 100644 --- a/.github/workflows/dotnet-build-and-test.yml +++ b/.github/workflows/dotnet-build-and-test.yml @@ -46,6 +46,10 @@ jobs: working-directory: dotnet run: dotnet pack src/Microsoft.Agents.AI.DurableTask/Microsoft.Agents.AI.DurableTask.csproj --configuration Release --no-build --output ../artifacts/packages + - name: Pack Azure Functions Durable Task extension registration + working-directory: dotnet + run: dotnet pack src/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask.csproj --configuration Release --no-build --output ../artifacts/packages + - name: Pack Azure Functions hosting working-directory: dotnet run: dotnet pack src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj --configuration Release --no-build --output ../artifacts/packages diff --git a/dotnet/agent-framework-durable-extension.slnx b/dotnet/agent-framework-durable-extension.slnx index a88477f..b50f411 100644 --- a/dotnet/agent-framework-durable-extension.slnx +++ b/dotnet/agent-framework-durable-extension.slnx @@ -7,6 +7,7 @@ + diff --git a/dotnet/samples/DurableAgents/AzureFunctions/01_SingleAgent/01_SingleAgent.csproj b/dotnet/samples/DurableAgents/AzureFunctions/01_SingleAgent/01_SingleAgent.csproj index 3694af9..e7a3f1b 100644 --- a/dotnet/samples/DurableAgents/AzureFunctions/01_SingleAgent/01_SingleAgent.csproj +++ b/dotnet/samples/DurableAgents/AzureFunctions/01_SingleAgent/01_SingleAgent.csproj @@ -17,7 +17,6 @@ - diff --git a/dotnet/samples/DurableAgents/AzureFunctions/07_AgentAsMcpTool/07_AgentAsMcpTool.csproj b/dotnet/samples/DurableAgents/AzureFunctions/07_AgentAsMcpTool/07_AgentAsMcpTool.csproj index 9470264..2607798 100644 --- a/dotnet/samples/DurableAgents/AzureFunctions/07_AgentAsMcpTool/07_AgentAsMcpTool.csproj +++ b/dotnet/samples/DurableAgents/AzureFunctions/07_AgentAsMcpTool/07_AgentAsMcpTool.csproj @@ -17,7 +17,12 @@ - + diff --git a/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask.csproj b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask.csproj new file mode 100644 index 0000000..98fd97a --- /dev/null +++ b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask.csproj @@ -0,0 +1,48 @@ + + + + $(TargetFrameworksCore) + + false + + false + + 3.8.2 + + + + + + + Durable Task Azure Functions extension for Microsoft Agent Framework + Registers the Durable Task Azure Functions extension so that applications hosting durable agents do not need to declare a Durable Functions trigger of their own. + + + false + + + + + + + + + + <_Parameter1>Microsoft.Azure.WebJobs.Extensions.DurableTask + <_Parameter2>$(DurableTaskWebJobsExtensionVersion) + <_Parameter3>true + <_Parameter3_IsLiteral>true + + + + diff --git a/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/CHANGELOG.md b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/CHANGELOG.md index 46adaf9..3c1afac 100644 --- a/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/CHANGELOG.md +++ b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/CHANGELOG.md @@ -2,6 +2,7 @@ ## [Unreleased] +- Fixed the Durable Task Azure Functions extension not being registered unless the application declared a Durable Functions trigger of its own, which required a dummy `[OrchestrationTrigger]` function for the agent endpoints to become available ([#82](https://github.com/microsoft/agent-framework-durable-extension/pull/82)) - Fixed the durable configuration methods not composing on the same application: calling `ConfigureDurableAgents` first left the workflow functions without an executor, calling `ConfigureDurableWorkflows` first registered the built-in function execution middleware twice, agents registered through `ConfigureDurableOptions` generated no functions at all, leaving the agent silently unreachable, and registering an agent that a workflow already referenced threw instead of promoting it. Agents now get the same entry points regardless of which method registers them and in which order, with each function generated exactly once even when a workflow and an explicit registration both contribute the same agent, while agents that exist only because a workflow references them continue to get no HTTP endpoint of their own ([#67](https://github.com/microsoft/agent-framework-durable-extension/pull/67)) - [BREAKING] Always return JSON from the workflow status and respond endpoints, including on errors and when the request sends no `Accept` header, and fix malformed request bodies surfacing as an unhandled error instead of `400 Bad Request` ([#60](https://github.com/microsoft/agent-framework-durable-extension/pull/60)) - [BREAKING] Support bounded synchronous workflow HTTP invocation through query parameters and default workflow run responses to JSON, with `Accept: text/plain` available for the legacy text format and the same negotiated asynchronous response returned on timeout ([#52](https://github.com/microsoft/agent-framework-durable-extension/pull/52)) diff --git a/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj index c9db559..b32fb74 100644 --- a/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj +++ b/dotnet/src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj @@ -5,7 +5,9 @@ enable - $(NoWarn);CA2007;AD0001 + + $(NoWarn);CA2007;AD0001;RT0002 @@ -20,6 +22,12 @@ + + diff --git a/eng/templates/official/jobs/build-packages.yml b/eng/templates/official/jobs/build-packages.yml index 1fcb091..77294f9 100644 --- a/eng/templates/official/jobs/build-packages.yml +++ b/eng/templates/official/jobs/build-packages.yml @@ -77,6 +77,7 @@ jobs: # project can be specified"). The whole -p: arg is quoted so PowerShell passes # it through as a single literal argument. dotnet pack src/Microsoft.Agents.AI.DurableTask/Microsoft.Agents.AI.DurableTask.csproj --configuration Release --no-build "-p:PackageOutputPath=$(Build.ArtifactStagingDirectory)/packages/dotnet" + dotnet pack src/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask/Microsoft.Agents.AI.Hosting.AzureFunctions.Extensions.DurableTask.csproj --configuration Release --no-build "-p:PackageOutputPath=$(Build.ArtifactStagingDirectory)/packages/dotnet" dotnet pack src/Microsoft.Agents.AI.Hosting.AzureFunctions/Microsoft.Agents.AI.Hosting.AzureFunctions.csproj --configuration Release --no-build "-p:PackageOutputPath=$(Build.ArtifactStagingDirectory)/packages/dotnet" workingDirectory: dotnet displayName: 'Pack .NET packages'