mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
e7dc3b91f1
* Add Microsoft.Agents.AI.Hyperlight package for CodeAct integration Introduces a new Microsoft.Agents.AI.Hyperlight package that enables CodeAct-style sandboxed code execution via Hyperlight (hyperlight-sandbox .NET SDK, PR #46) for .NET agents, following the docs/features/code_act/dotnet-implementation.md design and the Python agent_framework_hyperlight reference. Highlights: - HyperlightCodeActProvider (AIContextProvider): injects an execute_code tool and CodeAct guidance per invocation; single-instance-per-agent via a fixed StateKeys value; supports multiple provider-owned tools (exposed inside the sandbox via call_tool), file mounts, and an outbound domain allow-list; snapshot/restore per run. - HyperlightExecuteCodeFunction: standalone AIFunction for manual/static wiring when the sandbox configuration is fixed. - Approval model via CodeActApprovalMode (AlwaysRequire / NeverRequire) with propagation from ApprovalRequiredAIFunction-wrapped tools. - Unit tests (instruction builder, tool bridge, approval computation, provider CRUD, ProvideAIContextAsync snapshot isolation and approval wrapping). - Env-gated integration test (HYPERLIGHT_PYTHON_GUEST_PATH). - Three samples under samples/02-agents/AgentWithCodeAct (interpreter, tool-enabled, manual wiring). Build is not yet runnable: requires .NET SDK 10.0.200 and the not-yet-published HyperlightSandbox.Api 0.1.0-preview NuGet package. Package is marked IsPackable=false until the dependency is available. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR #5329 review feedback for Hyperlight CodeAct provider - A. Build-breakers: drop unused usings, override test TargetFrameworks off net472, drop redundant Microsoft.Extensions.AI.Abstractions PackageRef. - B. API: keep CRUD but rebuild sandbox when config fingerprint changes; add HyperlightCodeActProviderOptions.CreateForWasm/CreateForJavaScript factory methods (Backend/ModulePath now read-only); rename WorkspaceRoot to HostInputDirectory; convert AllowedDomain & FileMount from record to sealed class; drop ToolBridge.Unwrap (ApprovalRequiredAIFunction is invocable as-is). - C. ToolBridge: collapse SerializeResult switch; add comment explaining AOT-driven choice to keep JsonNode.Parse over typed Deserialize. - D. InstructionBuilder: drop language-specific 'Python code' phrasing; strip host filesystem paths from execute_code description. - E. Style polish: ternary expression-body for ComputeApprovalRequired, .Where(x is not null), .ToList() over .ToArray() in IReadOnlyList returns. - F. Samples: add guest-module / KVM-WHP build instructions to Step01; note future Excel-upload sample in Step02. Also adds SandboxExecutorTests covering the new RunSnapshot.ComputeFingerprint used for sandbox-rebuild detection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align Hyperlight package id and JS warm-up with merged upstream SDK The .NET SDK in hyperlight-dev/hyperlight-sandbox PR #46 has merged. The published package id is Hyperlight.HyperlightSandbox.Api (the bare HyperlightSandbox.Api remains the assembly/namespace) and the reference CodeExecutionTool uses 'void 0;' as the JavaScript warm-up no-op. Update the package reference, project comment, README, and SandboxExecutor warm-up accordingly. No functional change beyond that — all other public APIs we depend on (SandboxBuilder.With*, Sandbox.Run/RegisterToolAsync/AllowDomain/Snapshot/ Restore, ExecutionResult, SandboxBackend) match the merged shape. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Bump Hyperlight package to 0.4.0 and fix build/test issues Hyperlight.HyperlightSandbox.Api 0.4.0 is now published on nuget.org. Bump the version reference and address the analyzer/runtime issues that surfaced once restore could complete: - Add HyperlightJsonContext source-generated JsonSerializerContext for the execute_code result + tool error envelopes; route arbitrary AIFunction results through AIJsonUtilities.DefaultOptions to keep IsAotCompatible=true. - Replace explicit ObjectDisposedException throws with ObjectDisposedException.ThrowIf (CA1513). - Use HyperlightSandbox.Api.SandboxBackend in cref docs to disambiguate. - Update tests to match AIContext.Tools being IEnumerable<AITool>, drop ConfigureAwait(false) in xUnit test methods (xUnit1030), use collection expressions for AllowedDomain methods. - Add 'using OpenAI.Chat;' to all three samples so AsAIAgent resolves. - Verified: dotnet build of all four hyperlight projects + samples succeeds on net8/9/10; dotnet test for the unit tests passes 32/32 on net10.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI check failures: file encoding (UTF-8 BOM + LF) and broken markdown link - Convert all new .cs/.csproj files to UTF-8 with BOM and LF line endings to satisfy the dotnet/.editorconfig charset/end_of_line settings enforced by check-format. - Drop unused System.Collections.Generic using in HyperlightCodeActProviderTests. - Add missing using Microsoft.Extensions.AI in CodeActApprovalMode.cs and shorten ApprovalRequiredAIFunction cref (IDE0001). - Fix broken README link to docs/decisions/0024-codeact-integration.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review: AIFunction inheritance, packaging, GetService approval check - HyperlightExecuteCodeFunction now inherits AIFunction directly. The AsAIFunction() indirection is gone; instances are accepted anywhere an AIFunction is. Approval requirement is surfaced via GetService<ApprovalRequiredAIFunction>() which lazily exposes a wrapping ApprovalRequiredAIFunction proxy when the effective ApprovalMode/tool stack requires it. - ComputeApprovalRequired now uses GetService<ApprovalRequiredAIFunction>() so approval-required tools nested anywhere in the AITool decorator stack are detected (not just the top-most class). - csproj: drop IsPackable=false (ready to release with the published Hyperlight.HyperlightSandbox.Api 0.4.0 dependency); add PackageReadmeFile and pack README.md at the package root, matching the pattern used by Aspire.Hosting.AgentFramework.DevUI / Microsoft.Agents.AI.DurableTask. - Update Step03 sample and README wording to reflect direct AIFunction usage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
196 lines
13 KiB
XML
196 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.0" />
|
|
<PackageVersion Include="Microsoft.Extensions.AI.Abstractions" Version="10.5.0" />
|
|
<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.0" />
|
|
<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" />
|
|
<!-- Hyperlight -->
|
|
<PackageVersion Include="Hyperlight.HyperlightSandbox.Api" Version="0.4.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> |