mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
9f31bb6795
Replaces the brittle UserAgentResponsesClient subclass with a clean per-call x-client-* header pipeline built on the new Microsoft.Extensions.AI 10.5.1 OpenAIRequestPolicies hook. Public surface (Microsoft.Agents.AI.Foundry, [Experimental(MAAI001)]): * chatOptions.WithClientHeader(name, value) and .WithClientHeaders(IEnumerable) validate the x-client- prefix (case-insensitive), apply all-or-nothing on bulk, and throw InvalidOperationException on foreign-typed slot collision * myAgent.AsBuilder().UseClientHeaders().Build() opts a customer-built agent into the pipeline; idempotent via agent.GetService<ClientHeadersAgent>() * Foundry-built agents (FoundryAgent.Create*) pre-wire automatically Internals: * ClientHeadersAgent decorator snapshots the dict at scope-push time so concurrent runs sharing a ChatOptions reference do not leak headers * ClientHeadersScope is an AsyncLocal<IReadOnlyDictionary<string,string>?> with LIFO push/dispose semantics * ClientHeadersPolicy singleton stamps headers via Headers.Set so per-call values overwrite any same-name header from earlier policies and so duplicate registration is value-stable * OpenAIRequestPoliciesReflection dedups against MEAI's private _entries field and falls back to AddPolicy on any reflection failure; a CI test asserts the field shape on every MEAI bump Hosting cleanup: * Deleted UserAgentResponsesClient and its dummy throwing pipeline * HostedAgentUserAgentPolicy is now registered via OpenAIRequestPolicies in FoundryHostingExtensions.TryApplyUserAgent Tests: * 19 new unit tests in ClientHeadersExtensionsTests.cs covering validation, AsyncLocal isolation, snapshot semantics, end-to-end wire stamping, and shared-chat-client dedup * Updated OpenTelemetryAgentTests for MEAI 10.5.1 changes to web_search serialization and the reduced tool definition payload when sensitive data capture is disabled Microsoft.Extensions.Compliance.Abstractions stays at 10.5.0 because no 10.5.1 release exists on nuget.org.
194 lines
13 KiB
XML
194 lines
13 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<!-- Enable central package management -->
|
|
<!-- https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management -->
|
|
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
|
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<!-- Aspire -->
|
|
<AspireAppHostSdkVersion>13.1.0</AspireAppHostSdkVersion>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<!-- Aspire.* -->
|
|
<PackageVersion Include="Anthropic" Version="12.13.0" />
|
|
<PackageVersion Include="Anthropic.Foundry" Version="0.5.0" />
|
|
<PackageVersion Include="Aspire.Hosting" Version="$(AspireAppHostSdkVersion)" />
|
|
<PackageVersion Include="Aspire.Azure.AI.OpenAI" Version="13.0.0-preview.1.25560.3" />
|
|
<PackageVersion Include="Aspire.Azure.AI.Inference" Version="13.1.0-preview.1.25616.3" />
|
|
<PackageVersion Include="Aspire.Hosting.Azure.AIFoundry" Version="13.1.0-preview.1.25616.3" />
|
|
<PackageVersion Include="Aspire.Hosting.AppHost" Version="$(AspireAppHostSdkVersion)" />
|
|
<PackageVersion Include="Aspire.Hosting.Azure.CognitiveServices" Version="$(AspireAppHostSdkVersion)" />
|
|
<PackageVersion Include="Aspire.Microsoft.Azure.Cosmos" Version="$(AspireAppHostSdkVersion)" />
|
|
<PackageVersion Include="CommunityToolkit.Aspire.OllamaSharp" Version="13.0.0" />
|
|
<!-- Azure.* -->
|
|
<PackageVersion Include="Azure.AI.AgentServer.Core" Version="1.0.0-beta.23" />
|
|
<PackageVersion Include="Azure.AI.AgentServer.Invocations" Version="1.0.0-beta.3" />
|
|
<PackageVersion Include="Azure.AI.AgentServer.Responses" Version="1.0.0-beta.4" />
|
|
<PackageVersion Include="Azure.AI.Projects" Version="2.0.0" />
|
|
<PackageVersion Include="Azure.AI.Agents.Persistent" Version="1.2.0-beta.10" />
|
|
<PackageVersion Include="Azure.AI.OpenAI" Version="2.9.0-beta.1" />
|
|
<PackageVersion Include="Azure.Core" Version="1.53.0" />
|
|
<PackageVersion Include="Azure.Identity" Version="1.21.0" />
|
|
<PackageVersion Include="DotNetEnv" Version="3.1.1" />
|
|
<PackageVersion Include="Azure.Monitor.OpenTelemetry.Exporter" Version="1.5.0" />
|
|
<!-- Google Gemini -->
|
|
<PackageVersion Include="Google.GenAI" Version="1.6.0" />
|
|
<PackageVersion Include="Mscc.GenerativeAI.Microsoft" Version="2.9.3" />
|
|
<!-- Microsoft.Azure.* -->
|
|
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.54.0" />
|
|
<!-- Newtonsoft.Json -->
|
|
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
|
|
<!-- System.* -->
|
|
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.6" />
|
|
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="6.0.0" />
|
|
<PackageVersion Include="Microsoft.Bcl.Memory" Version="10.0.5" />
|
|
<PackageVersion Include="System.ClientModel" Version="1.10.0" />
|
|
<PackageVersion Include="System.CodeDom" Version="10.0.0" />
|
|
<PackageVersion Include="System.Collections.Immutable" Version="10.0.1" />
|
|
<PackageVersion Include="System.CommandLine" Version="2.0.0-rc.2.25502.107" />
|
|
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="10.0.6" />
|
|
<PackageVersion Include="System.Linq.AsyncEnumerable" Version="10.0.5" />
|
|
<PackageVersion Include="System.Net.Http.Json" Version="10.0.0" />
|
|
<PackageVersion Include="System.Net.ServerSentEvents" Version="10.0.5" />
|
|
<PackageVersion Include="System.Text.Json" Version="10.0.6" />
|
|
<PackageVersion Include="System.Threading.Channels" Version="10.0.6" />
|
|
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
|
|
<PackageVersion Include="System.Net.Security" Version="4.3.2" />
|
|
<!-- OpenTelemetry -->
|
|
<PackageVersion Include="OpenTelemetry" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
|
|
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
|
|
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
|
|
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.1" />
|
|
<!-- Microsoft.AspNetCore.* -->
|
|
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="10.0.0" />
|
|
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="10.0.0" />
|
|
<!-- Microsoft.Extensions.* -->
|
|
<PackageVersion Include="Microsoft.Extensions.AI" Version="10.5.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.Abstractions" Version="10.5.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation" Version="10.4.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation.Quality" Version="10.4.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation.Safety" Version="10.3.0-preview.1.26109.11" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="10.5.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.Compliance.Abstractions" Version="10.5.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.6" />
|
|
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.6" />
|
|
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.6" />
|
|
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.1" />
|
|
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.7.0" />
|
|
<!-- Vector Stores -->
|
|
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.67.0-preview" />
|
|
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.67.0-preview" />
|
|
<!-- Agent SDKs -->
|
|
<PackageVersion Include="GitHub.Copilot.SDK" Version="0.1.29" />
|
|
<PackageVersion Include="Microsoft.Agents.CopilotStudio.Client" Version="1.3.171-beta" />
|
|
<!-- M365 Agents SDK -->
|
|
<PackageVersion Include="AdaptiveCards" Version="3.1.0" />
|
|
<PackageVersion Include="Microsoft.Agents.Authentication.Msal" Version="1.3.171-beta" />
|
|
<PackageVersion Include="Microsoft.Agents.Hosting.AspNetCore" Version="1.3.171-beta" />
|
|
<!-- A2A -->
|
|
<PackageVersion Include="A2A" Version="1.0.0-preview2" />
|
|
<PackageVersion Include="A2A.AspNetCore" Version="1.0.0-preview2" />
|
|
<!-- MCP -->
|
|
<PackageVersion Include="ModelContextProtocol" Version="1.1.0" />
|
|
<!-- Inference SDKs -->
|
|
<PackageVersion Include="Microsoft.ML.OnnxRuntimeGenAI" Version="0.10.0" />
|
|
<PackageVersion Include="Microsoft.ML.Tokenizers" Version="2.0.0" />
|
|
<PackageVersion Include="OllamaSharp" Version="5.4.8" />
|
|
<PackageVersion Include="OpenAI" Version="2.10.0" />
|
|
<!-- Identity -->
|
|
<PackageVersion Include="Microsoft.Identity.Client.Extensions.Msal" Version="4.83.1" />
|
|
<!-- Workflows -->
|
|
<PackageVersion Include="Microsoft.Agents.ObjectModel" Version="2026.2.4.1" />
|
|
<PackageVersion Include="Microsoft.Agents.ObjectModel.Json" Version="2026.2.4.1" />
|
|
<PackageVersion Include="Microsoft.Agents.ObjectModel.PowerFx" Version="2026.2.4.1" />
|
|
<PackageVersion Include="Microsoft.PowerFx.Interpreter" Version="1.8.1" />
|
|
<!-- Durable Task -->
|
|
<PackageVersion Include="Microsoft.DurableTask.Client" Version="1.18.0" />
|
|
<PackageVersion Include="Microsoft.DurableTask.Client.AzureManaged" Version="1.18.0" />
|
|
<PackageVersion Include="Microsoft.DurableTask.Worker" Version="1.18.0" />
|
|
<PackageVersion Include="Microsoft.DurableTask.Worker.AzureManaged" Version="1.18.0" />
|
|
<!-- Azure Functions -->
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker" Version="2.50.0" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.12.1" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged" Version="1.0.1" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.3.0" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.1.0" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.Mcp" Version="1.0.0" />
|
|
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.7" />
|
|
<!-- Redis -->
|
|
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
|
|
<!-- Console UX -->
|
|
<PackageVersion Include="Spectre.Console" Version="0.49.1" />
|
|
<!-- Test -->
|
|
<PackageVersion Include="FluentAssertions" Version="8.8.0" />
|
|
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Condition="'$(TargetFramework)' == 'net8.0'" Version="8.0.22" />
|
|
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Condition="'$(TargetFramework)' == 'net9.0'" Version="9.0.11" />
|
|
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Condition="'$(TargetFramework)' == 'net10.0'" Version="10.0.0" />
|
|
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
|
|
<PackageVersion Include="Moq" Version="[4.18.4]" />
|
|
<PackageVersion Include="xunit.v3.mtp-v2" Version="3.2.2" />
|
|
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
|
|
<PackageVersion Include="xRetry.v3" Version="1.0.0-rc3" />
|
|
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.4.1" />
|
|
<!-- Symbols -->
|
|
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
|
|
<!-- Toolset -->
|
|
<PackageVersion Include="ReferenceTrimmer" Version="3.4.5" />
|
|
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" />
|
|
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />
|
|
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="10.0.100" />
|
|
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15" />
|
|
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="xunit.analyzers" Version="1.23.0" />
|
|
<PackageReference Include="xunit.analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="Moq.Analyzers" Version="0.3.1" />
|
|
<PackageReference Include="Moq.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="Roslynator.Analyzers" Version="4.14.1" />
|
|
<PackageReference Include="Roslynator.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.14.1" />
|
|
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageVersion Include="Roslynator.Formatting.Analyzers" Version="4.14.1" />
|
|
<PackageReference Include="Roslynator.Formatting.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
</Project> |