| File: ToolResources\ConfigOnlyToolDefinitions.cs | Web Access |
| Project: src\src\Aspire.Hosting.Foundry\Aspire.Hosting.Foundry.csproj (Aspire.Hosting.Foundry) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.ApplicationModel; using Azure.AI.Projects.Agents; using OpenAI.Responses; namespace Aspire.Hosting.Foundry; /// <summary> /// A Foundry tool resource that grounds an agent's responses using SharePoint data. /// </summary> /// <remarks> /// SharePoint connections must be configured in the Foundry project beforehand. /// This tool references existing connections by their Foundry project connection IDs. /// </remarks> [AspireExport] public sealed class SharePointToolResource : FoundryToolResource { /// <summary> /// Creates a new instance of the <see cref="SharePointToolResource"/> class. /// </summary> /// <param name="name">The name of the tool resource.</param> /// <param name="project">The parent Foundry project resource.</param> /// <param name="projectConnectionIds">The Foundry project connection IDs for the SharePoint sites.</param> public SharePointToolResource( [ResourceName] string name, AzureCognitiveServicesProjectResource project, params string[] projectConnectionIds) : base(name, project) { ArgumentNullException.ThrowIfNull(projectConnectionIds); ProjectConnectionIds = projectConnectionIds.ToList(); } /// <summary> /// Gets the Foundry project connection IDs for the SharePoint sites. /// </summary> public IList<string> ProjectConnectionIds { get; } /// <inheritdoc/> public override Task<ResponseTool> ToAgentToolAsync(CancellationToken cancellationToken = default) { var options = new SharePointGroundingToolOptions(); foreach (var connectionId in ProjectConnectionIds) { options.ProjectConnections.Add(new ToolProjectConnection(connectionId)); } return Task.FromResult<ResponseTool>(new SharepointPreviewTool(options)); } } /// <summary> /// A Foundry tool resource that enables an agent to query data using a Microsoft Fabric data agent. /// </summary> /// <remarks> /// Fabric connections must be configured in the Foundry project beforehand. /// This tool references existing connections by their Foundry project connection IDs. /// </remarks> [AspireExport] public sealed class FabricToolResource : FoundryToolResource { /// <summary> /// Creates a new instance of the <see cref="FabricToolResource"/> class. /// </summary> /// <param name="name">The name of the tool resource.</param> /// <param name="project">The parent Foundry project resource.</param> /// <param name="projectConnectionIds">The Foundry project connection IDs for the Fabric data agents.</param> public FabricToolResource( [ResourceName] string name, AzureCognitiveServicesProjectResource project, params string[] projectConnectionIds) : base(name, project) { ArgumentNullException.ThrowIfNull(projectConnectionIds); ProjectConnectionIds = projectConnectionIds.ToList(); } /// <summary> /// Gets the Foundry project connection IDs for the Fabric data agents. /// </summary> public IList<string> ProjectConnectionIds { get; } /// <inheritdoc/> public override Task<ResponseTool> ToAgentToolAsync(CancellationToken cancellationToken = default) { var options = new FabricDataAgentToolOptions(); foreach (var connectionId in ProjectConnectionIds) { options.ProjectConnections.Add(new ToolProjectConnection(connectionId)); } return Task.FromResult<ResponseTool>(new MicrosoftFabricPreviewTool(options)); } }