Repository navigation
.NET: [WIP ] Update Azure.AI.Projects 3.0.0, OpenAI 2.15.0, AgentServer 1.0.0 and stabilize Foundry packages - #10357
Conversation
(cherry picked from commit bc8f291)
…erver to 1.0.0 Align the Foundry dependency graph with the generally available Azure SDK packages and the OpenAI SDK they require: - Azure.AI.Projects 3.0.0 and Azure.AI.Extensions.OpenAI 3.0.0 - Azure.AI.AgentServer.Core, .Invocations and .Responses 1.0.0 - OpenAI 2.15.0, Azure.Core 1.65.0 and System.ClientModel 1.17.0 - Microsoft.Extensions.AI, .Abstractions and .OpenAI 11.1.0, the first release expected to support OpenAI 2.15 (dotnet/extensions#7948) - System.Net.ServerSentEvents 10.0.15 and Microsoft.Identity.Client.Extensions.Msal 4.92.0, required transitively Adapt to the upstream API changes: - FoundryAITool.CreateBrowserAutomationTool now creates the GA browser_automation tool, since BrowserAutomationPreviewTool is obsolete. - Responses streaming is task-based in OpenAI 2.15: tests await CreateResponseStreamingAsync and own the AsyncStreamingResult. - ProjectResponsesClient reports AAIP002 instead of OPENAI001, so samples and tests suppress it next to OPENAI001. - Samples follow ComputerCallOutput.CreateComputerScreenshotOutput and MemoryOutputItem.UpdatedAt, and the hosted workflow sample acknowledges that WorkflowAgentDefinition is obsolete. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Microsoft.Agents.AI.Foundry went back to preview while it depended on the Azure.AI.Projects 3.0.0 betas, and Microsoft.Agents.AI.Workflows.Declarative.Foundry stayed in preview because it depends on it. With Azure.AI.Projects 3.0.0 generally available both can ship as stable packages again. Mark both as released and add their public API baselines for every target framework. The baselines record the surface as shipped, so Publish builds do not see unshipped entries. The evaluation types are only part of the net8.0+ baselines, matching what each framework compiles. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
The package was held in preview by its Azure.AI.AgentServer beta dependencies. With the AgentServer packages at 1.0.0 it can ship as a stable package: mark it as released and add the public API baselines for its three target frameworks, recorded as shipped so Publish builds do not see unshipped entries. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Unpublished GA SDKs and the unmerged OpenAI adapter update leave the final dependency/API contract unresolved, requiring maintainer validation against published packages across target frameworks and hosted protocol flows rather than nightly/local builds alone.
No open issues 🎉
What changed in this PR
Prepares the .NET Foundry integrations for stable releases by aligning Azure SDK dependencies with OpenAI 2.15.0 and the compatible Microsoft.Extensions.AI adapter. The PR remains explicitly blocked on publication of the dependency versions listed in its description.
Changes:
- Updates central dependency versions and standalone sample pins, building on #10349.
- Adapts browser automation, streaming tests, and samples to the updated SDK APIs.
- Marks three Foundry packages as released and adds public API baselines for every supported target framework.
| File | Description |
|---|---|
dotnet/tests/Microsoft.Agents.AI.Hosting.OpenAI.UnitTests/OpenAIResponsesIntegrationTests.cs |
Awaits the new task-based streaming results. |
dotnet/tests/Microsoft.Agents.AI.Foundry.UnitTests/FoundryAIToolTests.cs |
Tests completed streaming images and GA browser tools. |
dotnet/tests/Microsoft.Agents.AI.Foundry.UnitTests/AIProjectClientExtensionsTests.cs |
Uses the GA browser tool in agent-definition coverage. |
dotnet/tests/Foundry.Hosting.IntegrationTests/WebSearchAnnotationsHostedAgentTests.cs |
Awaits and disposes the citation response stream. |
dotnet/tests/Foundry.Hosting.IntegrationTests/SteerableLongRunningHostedAgentTests.cs |
Adapts background-response streaming and disposal. |
dotnet/tests/Foundry.Hosting.IntegrationTests/AzureSearchToolAnnotationsHostedAgentTests.cs |
Awaits and disposes the search-annotation stream. |
dotnet/tests/.editorconfig |
Suppresses the new experimental SDK diagnostic in tests. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET Standard 2.0. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt |
Records the provider API baseline for .NET Standard 2.0. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net9.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net9.0/PublicAPI.Shipped.txt |
Records the provider API baseline for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net8.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net8.0/PublicAPI.Shipped.txt |
Records the provider API baseline for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net472/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET Framework 4.7.2. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net472/PublicAPI.Shipped.txt |
Records the provider API baseline for .NET Framework 4.7.2. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net10.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/PublicAPI/net10.0/PublicAPI.Shipped.txt |
Records the provider API baseline for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Workflows.Declarative.Foundry/Microsoft.Agents.AI.Workflows.Declarative.Foundry.csproj |
Marks declarative Foundry integration as released. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET Standard 2.0. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt |
Records the Foundry API baseline for .NET Standard 2.0. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net9.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net9.0/PublicAPI.Shipped.txt |
Records Foundry APIs, including evaluations, for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net8.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net8.0/PublicAPI.Shipped.txt |
Records Foundry APIs, including evaluations, for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net472/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET Framework 4.7.2. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net472/PublicAPI.Shipped.txt |
Records the Foundry API baseline for .NET Framework 4.7.2. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net10.0/PublicAPI.Unshipped.txt |
Initializes pending API tracking for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Foundry/PublicAPI/net10.0/PublicAPI.Shipped.txt |
Records Foundry APIs, including evaluations, for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Foundry/Microsoft.Agents.AI.Foundry.csproj |
Marks Foundry as released and updates dependency commentary. |
dotnet/src/Microsoft.Agents.AI.Foundry/FoundryAITool.cs |
Creates the GA browser tool and documents its configuration. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net9.0/PublicAPI.Unshipped.txt |
Initializes pending hosting API tracking for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net9.0/PublicAPI.Shipped.txt |
Records the hosting API baseline for .NET 9. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net8.0/PublicAPI.Unshipped.txt |
Initializes pending hosting API tracking for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net8.0/PublicAPI.Shipped.txt |
Records the hosting API baseline for .NET 8. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net10.0/PublicAPI.Unshipped.txt |
Initializes pending hosting API tracking for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/PublicAPI/net10.0/PublicAPI.Shipped.txt |
Records the hosting API baseline for .NET 10. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/Microsoft.Agents.AI.Foundry.Hosting.csproj |
Replaces the preview suffix with released status. |
dotnet/src/Microsoft.Agents.AI.Foundry.Hosting/ComputerToolItemConverter.cs |
Updates comments on SDK limitations; no behavior change. |
dotnet/samples/04-hosting/FoundryHostedAgents/responses/Hosted-Workflow-Handoff/HostedWorkflowHandoff.csproj |
Updates the standalone OpenAI adapter dependency. |
dotnet/samples/03-workflows/Declarative/HostedWorkflow/Program.cs |
Suppresses the workflow-definition obsolete warning locally. |
dotnet/samples/02-agents/AgentWithMemory/AgentWithMemory_Step06_MemoryUsingAgentMemory/AgentWithMemory_Step06_MemoryUsingAgentMemory.csproj |
Updates the standalone memory sample’s OpenAI adapter. |
dotnet/samples/02-agents/AgentProviders/foundry/Agent_Step22_MemorySearch/Program.cs |
Uses the renamed memory timestamp property. |
dotnet/samples/02-agents/AgentProviders/foundry/Agent_Step15_ComputerUsePreview/Program.cs |
Uses the renamed computer screenshot factory. |
dotnet/samples/02-agents/AgentProviders/azure/Agent_With_AzureOpenAIResponses_ComputerUse/Program.cs |
Uses the renamed computer screenshot factory. |
dotnet/samples/.editorconfig |
Suppresses the new experimental SDK diagnostic in samples. |
dotnet/Directory.Packages.props |
Aligns Azure, OpenAI, adapter, and supporting dependency versions. |
Review effort: Balanced
There was a problem hiding this comment.
MAF Automated Review — Iteration 1
Result: Findings reported
Scope: full PR (4 commit(s)): 56230688c4a3, 4b9a84352f40, 516f0ab8c2b6, 5a3cb88415d2
Model: gpt-5.6-sol
Overview
The PR coherently aligns the Foundry dependency set, adapts the changed browser-automation and streaming APIs, and adds strong serialization and public-API baseline coverage. The browser tool tests verify the exact GA wire shape, while released-package builds enforce per-target-framework API baselines. One standalone source-deployment sample still combines the new MEAI/OpenAI stack with old 1.27 Foundry binaries, leaving that deployment path outside the dependency pairing promoted and tested by this change.
Reviewed the supplied pull-request change set across correctness, security/reliability, architecture, and failure behavior.
1 verified finding remained after source verification (1 medium) across 1 file. Details are attached to the affected lines below.
Affected areas: dotnet/samples/04-hosting/FoundryHostedAgents/responses/Hosted-Workflow-Handoff/HostedWorkflowHandoff.csproj
| <!-- Published Agent Framework 1.27 resolves MEAI OpenAI 10.10.1, which returns 401 for | ||
| hosted project-model calls. Remove this pin when the next framework release carries 10.11+. --> | ||
| <PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.11.0" /> | ||
| <PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="11.1.0" /> |
There was a problem hiding this comment.
This standalone project still selects Agent Framework 1.27, so this pin upgrades MEAI/OpenAI beneath the 1.27 Foundry binaries instead of consuming the matching 1.28 package set promoted here. Because the project opts out of central package management and is restored remotely from its ZIP, deployments get an unsupported mixed dependency graph rather than the versions tested together in this PR. Please preserve the framework's transitive dependency pairing, or advance AgentFrameworkVersion to the matching release and remove this override once that release is available.
Motivation & Context
Warning
WIP (Blocked): do not merge. This PR pins package versions that are not on nuget.org yet, so restore fails in CI until they ship:
It stays in draft until all three are published. If any of them ships under a different version number, the pins here need to follow.
Azure.AI.Projects 3.0.0 and Azure.AI.AgentServer 1.0.0 are the generally available releases of the SDKs the Foundry packages build on. They move the dependency graph to OpenAI 2.15.0, which changes the shape of its experimental streaming APIs and needs a Microsoft.Extensions.AI release built for it. This aligns Agent Framework with that dependency set ahead of time, so the Foundry packages can ship as stable as soon as the dependencies are published.
Description & Review Guide
FoundryAITool.CreateBrowserAutomationToolcreates the GAbrowser_automationtool becauseBrowserAutomationPreviewToolis obsolete. Tests and samples follow task-based Responses streaming,AAIP002onProjectResponsesClient,ComputerCallOutput.CreateComputerScreenshotOutputandMemoryOutputItem.UpdatedAt.Microsoft.Agents.AI.Foundry,Microsoft.Agents.AI.Workflows.Declarative.FoundryandMicrosoft.Agents.AI.Foundry.Hostingare marked as released and get public API baselines for every target framework. Each promotion is its own commit.Task<AsyncStreamingResult<T>>, and several clients take their own options type. Code that callsGetProjectResponsesClientacknowledgesAAIP002instead ofOPENAI001. Browser automation agents send the GA tool type. The three Foundry packages version as stable, so their public API is tracked by the baselines from now on.Directory.Packages.props.The branch was built and unit tested against the Azure SDK nightly builds (
3.0.0-alpha.20261113.1and1.0.0-alpha.20261113.1) and Microsoft.Extensions.AI packages built from dotnet/extensions#7948.The first commit is the Microsoft.Extensions.AI 11.0.0 update from #10349 and drops out on rebase once that lands.
Related Issue
No tracking issue is linked yet.
AI Assistance
AI assistance details: Claude Code assisted with dependency analysis, implementation, public API baseline generation, validation, and this pull request description.
Contribution Checklist
breaking changelabel (or add "[BREAKING]" to the title prefix, before or after any language prefix) — a workflow keeps the label and title prefix in sync automatically.🤖 Generated with Claude Code