From 4b49f1a8a79a488edd794f2ecd7bc07a365987b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 17:38:24 +0000 Subject: [PATCH] [create-pull-request] automated change --- .../api/Aspire.Hosting.Azure.AppContainers.cs | 5 +- .../api/Aspire.Hosting.Azure.AppService.cs | 4 +- .../api/Aspire.Hosting.Azure.Kubernetes.cs | 318 ++++++++++++++++- .../api/Aspire.Hosting.Azure.cs | 89 +++++ .../api/Aspire.Hosting.Blazor.cs | 8 + .../api/Aspire.Hosting.DevTunnels.cs | 19 ++ .../api/Aspire.Hosting.Docker.cs | 2 +- .../api/Aspire.Hosting.Dotnet.cs | 31 ++ .../api/Aspire.Hosting.Foundry.cs | 150 ++++---- .../api/Aspire.Hosting.GitHub.Models.cs | 6 + .../api/Aspire.Hosting.Go.cs | 25 ++ .../api/Aspire.Hosting.Kubernetes.cs | 167 ++++++++- .../api/Aspire.Hosting.Orleans.cs | 4 + .../api/Aspire.Hosting.Radius.cs | 267 +++++++++++++++ .../api/Aspire.Hosting.Redis.cs | 15 + src/Aspire.Hosting/api/Aspire.Hosting.cs | 319 +++++++++++++++--- 16 files changed, 1287 insertions(+), 142 deletions(-) create mode 100644 src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs create mode 100644 src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs diff --git a/src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs b/src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs index 3ade723fd4c..68f834395e2 100644 --- a/src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs +++ b/src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs @@ -48,6 +48,10 @@ public static partial class AzureContainerAppExtensions [AspireExport] public static ApplicationModel.IResourceBuilder WithHttpsUpgrade(this ApplicationModel.IResourceBuilder builder, bool upgrade = true) { throw null; } + + [AspireExport] + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREACANAMING002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static ApplicationModel.IResourceBuilder WithUniqueResourceNaming(this ApplicationModel.IResourceBuilder builder) { throw null; } } public static partial class AzureContainerAppProjectExtensions @@ -60,7 +64,6 @@ public static ApplicationModel.IResourceBuilder PublishAsAzureContainerApp public static partial class ContainerAppExtensions { [AspireExport] - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREACADOMAINS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public static void ConfigureCustomDomain(this global::Azure.Provisioning.AppContainers.ContainerApp app, ApplicationModel.IResourceBuilder customDomain, ApplicationModel.IResourceBuilder certificateName) { } [AspireExportIgnore(Reason = "Polyglot app hosts use the internal publishAsAzureContainerAppJob dispatcher export.")] diff --git a/src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs b/src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs index 58df7af3523..f403229bd1a 100644 --- a/src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs +++ b/src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs @@ -55,7 +55,7 @@ public static partial class AzureAppServiceEnvironmentExtensions namespace Aspire.Hosting.Azure { - public partial class AzureAppServiceEnvironmentResource : AzureProvisioningResource, IAzureComputeEnvironmentResource, ApplicationModel.IComputeEnvironmentResource, ApplicationModel.IResource, IAzureContainerRegistry, ApplicationModel.IContainerRegistry + public partial class AzureAppServiceEnvironmentResource : AzureProvisioningResource, IAzureComputeEnvironmentResource, ApplicationModel.IComputeEnvironmentResource, ApplicationModel.IResource, IAzureContainerRegistry, ApplicationModel.IContainerRegistry, IAzureDelegatedSubnetResource { public AzureAppServiceEnvironmentResource(string name, System.Action configureInfrastructure) : base(default!, default!) { } @@ -67,6 +67,8 @@ public AzureAppServiceEnvironmentResource(string name, System.Action ClearDefaultRoleAssignments PublishAsConnectionString(this ApplicationModel.IResourceBuilder builder) where T : ApplicationModel.IAzureResource, ApplicationModel.IResourceWithConnectionString { throw null; } @@ -136,6 +137,30 @@ public static partial class ExistingAzureResourceExtensions public static ApplicationModel.IResourceBuilder AsExisting(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder? resourceGroupParameter) where T : ApplicationModel.IAzureResource { throw null; } + [AspireExportIgnore(Reason = "Use the polyglot asExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder resourceGroupParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot asExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, string name, string resourceGroup, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot asExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot asExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, string name, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot asExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInTenant(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot asExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder AsExistingInTenant(this ApplicationModel.IResourceBuilder builder, string name) + where T : ApplicationModel.IAzureResource { throw null; } + [AspireExportIgnore(Reason = "Use the Azure resource-specific polyglot export instead.")] public static bool IsExisting(this ApplicationModel.IResource resource) { throw null; } @@ -147,6 +172,30 @@ public static ApplicationModel.IResourceBuilder PublishAsExisting(this App public static ApplicationModel.IResourceBuilder PublishAsExisting(this ApplicationModel.IResourceBuilder builder, string name, string? resourceGroup) where T : ApplicationModel.IAzureResource { throw null; } + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder resourceGroupParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, string name, string resourceGroup, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, string name, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInTenant(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot publishAsExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder PublishAsExistingInTenant(this ApplicationModel.IResourceBuilder builder, string name) + where T : ApplicationModel.IAzureResource { throw null; } + [AspireExportIgnore(Reason = "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead.")] public static ApplicationModel.IResourceBuilder RunAsExisting(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder? resourceGroupParameter) where T : ApplicationModel.IAzureResource { throw null; } @@ -154,6 +203,30 @@ public static ApplicationModel.IResourceBuilder RunAsExisting(this Applica [AspireExportIgnore(Reason = "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead.")] public static ApplicationModel.IResourceBuilder RunAsExisting(this ApplicationModel.IResourceBuilder builder, string name, string? resourceGroup) where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder resourceGroupParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInResourceGroup overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInResourceGroup(this ApplicationModel.IResourceBuilder builder, string name, string resourceGroup, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter, ApplicationModel.IResourceBuilder subscriptionParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInSubscription overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInSubscription(this ApplicationModel.IResourceBuilder builder, string name, string subscription) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInTenant(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder nameParameter) + where T : ApplicationModel.IAzureResource { throw null; } + + [AspireExportIgnore(Reason = "Use the polyglot runAsExistingInTenant overload that accepts string or ParameterResource values instead.")] + public static ApplicationModel.IResourceBuilder RunAsExistingInTenant(this ApplicationModel.IResourceBuilder builder, string name) + where T : ApplicationModel.IAzureResource { throw null; } } } @@ -231,9 +304,15 @@ public AzureBicepResourceScope(object resourceGroup, object subscription) { } public AzureBicepResourceScope(object resourceGroup) { } + public bool IsTenantScope { get { throw null; } } + public object ResourceGroup { get { throw null; } } public object? Subscription { get { throw null; } } + + public static AzureBicepResourceScope CreateForSubscription(object subscription) { throw null; } + + public static AzureBicepResourceScope CreateForTenant() { throw null; } } [System.Diagnostics.CodeAnalysis.Experimental("ASPIREAZURE001", UrlFormat = "https://aka.ms/aspire/diagnostics#{0}")] @@ -334,9 +413,13 @@ public AzureRoleAssignmentResource(string name, AzureProvisioningResource target public static partial class AzureSubnetServiceDelegations { + [AspireValue("AzureSubnetServiceDelegations")] public const string ApplicationGatewayForContainers = "Microsoft.ServiceNetworking/trafficControllers"; + [AspireValue("AzureSubnetServiceDelegations")] public const string AppServiceEnvironments = "Microsoft.Web/serverFarms"; + [AspireValue("AzureSubnetServiceDelegations")] public const string ContainerAppEnvironments = "Microsoft.App/environments"; + [AspireValue("AzureSubnetServiceDelegations")] public const string ContainerInstances = "Microsoft.ContainerInstance/containerGroups"; } @@ -442,11 +525,17 @@ public DeploymentPrerequisitesAnnotation(System.Collections.Generic.IReadOnlySet public sealed partial class ExistingAzureResourceAnnotation : ApplicationModel.IResourceAnnotation { + public ExistingAzureResourceAnnotation(object name, object? resourceGroup, object subscription) { } + public ExistingAzureResourceAnnotation(object name, object? resourceGroup = null) { } + public bool IsTenantScope { get { throw null; } } + public object Name { get { throw null; } } public object? ResourceGroup { get { throw null; } } + + public object? Subscription { get { throw null; } } } public partial interface IAddRoleAssignmentsContext diff --git a/src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs b/src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs index 8cf802af91f..0f10c314086 100644 --- a/src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs +++ b/src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs @@ -21,8 +21,16 @@ public static partial class BlazorGatewayExtensions public static ApplicationModel.IResourceBuilder AddBlazorWasmProject(this IDistributedApplicationBuilder builder, string name) where TProject : IProjectMetadata, new() { throw null; } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREDOTNETPROJECT001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "The DotnetProjectResource-backed Blazor gateway is experimental and not yet stable for ATS export.")] + public static ApplicationModel.IResourceBuilder AddDotnetProjectBlazorGateway(this IDistributedApplicationBuilder builder, string name) { throw null; } + [AspireExport] public static ApplicationModel.IResourceBuilder WithBlazorClientApp(this ApplicationModel.IResourceBuilder gateway, ApplicationModel.IResourceBuilder wasmApp, string apiPrefix = "_api", string otlpPrefix = "_otlp", bool proxyTelemetry = true) { throw null; } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREDOTNETPROJECT001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "The DotnetProjectResource-backed Blazor gateway is experimental and not yet stable for ATS export.")] + public static ApplicationModel.IResourceBuilder WithBlazorClientApp(this ApplicationModel.IResourceBuilder gateway, ApplicationModel.IResourceBuilder wasmApp, string apiPrefix = "_api", string otlpPrefix = "_otlp", bool proxyTelemetry = true) { throw null; } } [System.Diagnostics.CodeAnalysis.Experimental("ASPIREBLAZOR001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] diff --git a/src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs b/src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs index 1823b48e113..6ecd37c01b4 100644 --- a/src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs +++ b/src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs @@ -58,6 +58,8 @@ public sealed partial class DevTunnelOptions public string? Description { get { throw null; } set { } } public System.Collections.Generic.List? Labels { get { throw null; } set { } } + + public DevTunnelRegion? Region { get { throw null; } set { } } } public sealed partial class DevTunnelPortOptions @@ -80,6 +82,23 @@ public DevTunnelPortResource(string name, DevTunnelResource tunnel, ApplicationM public DevTunnelPortOptions Options { get { throw null; } } } + public enum DevTunnelRegion + { + WestEurope = 0, + UKSouth = 1, + NorthEurope = 2, + EastUs = 3, + EastUs2 = 4, + CentralIndia = 5, + WestUs3 = 6, + WestUs2 = 7, + SoutheastAsia = 8, + BrazilSouth = 9, + AustraliaCentral = 10, + AustraliaEast = 11, + JapanEast = 12 + } + [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, Name = {Name}, TunnelId = {TunnelId}")] public sealed partial class DevTunnelResource : ApplicationModel.ExecutableResource { diff --git a/src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs b/src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs index 85a7a249f1c..a406333a042 100644 --- a/src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs +++ b/src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs @@ -650,4 +650,4 @@ public sealed partial class UpdateConfig [YamlDotNet.Serialization.YamlMember(Alias = "parallelism")] public int? Parallelism { get { throw null; } set { } } } -} +} \ No newline at end of file diff --git a/src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs b/src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs new file mode 100644 index 00000000000..0a965a2558c --- /dev/null +++ b/src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +namespace Aspire.Hosting +{ + public static partial class DotnetProjectHostingExtensions + { + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREDOTNETPROJECT001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal addDotnetProject dispatcher export.")] + public static ApplicationModel.IResourceBuilder AddDotnetProject(this IDistributedApplicationBuilder builder, string name, string path, System.Action configure) { throw null; } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREDOTNETPROJECT001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal addDotnetProject dispatcher export.")] + public static ApplicationModel.IResourceBuilder AddDotnetProject(this IDistributedApplicationBuilder builder, string name, string path) { throw null; } + } +} + +namespace Aspire.Hosting.Dotnet +{ + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREDOTNETPROJECT001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport(ExposeProperties = true)] + public partial class DotnetProjectResource : ApplicationModel.ExecutableResource, IResourceWithServiceDiscovery, ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResource + { + public DotnetProjectResource(string name, string workingDirectory) : base(default!, default!, default!) { } + } +} \ No newline at end of file diff --git a/src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs b/src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs index 5c410ca70c3..9a8611b7683 100644 --- a/src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs +++ b/src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs @@ -97,9 +97,21 @@ public static ApplicationModel.IResourceBuilder WithRoleAssignments(this A public static partial class HostedAgentResourceBuilderExtensions { [AspireExportIgnore(Reason = "Action callback shape is awkward for polyglot hosts; the HostedAgentOptions DTO shape is exported instead.")] + public static ApplicationModel.IResourceBuilder AsHostedAgent(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder? project, Foundry.HostedAgentProtocol protocol, string protocolVersion, System.Action? configure = null) + where T : ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IComputeResource { throw null; } + + [AspireExportIgnore(Reason = "Action callback shape is awkward for polyglot hosts; the defaulted asHostedAgent export covers this case.")] public static ApplicationModel.IResourceBuilder AsHostedAgent(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder? project, System.Action? configure = null) where T : ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IComputeResource { throw null; } + [AspireExportIgnore(Reason = "Subset of the full AsHostedAgent overload.")] + public static ApplicationModel.IResourceBuilder AsHostedAgent(this ApplicationModel.IResourceBuilder builder, Foundry.HostedAgentProtocol protocol, string protocolVersion, System.Action configure) + where T : ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IComputeResource { throw null; } + + [AspireExportIgnore(Reason = "Subset of the full AsHostedAgent(project) overload which is exported.")] + public static ApplicationModel.IResourceBuilder AsHostedAgent(this ApplicationModel.IResourceBuilder builder, Foundry.HostedAgentProtocol protocol, string protocolVersion) + where T : ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IComputeResource { throw null; } + [AspireExportIgnore(Reason = "Subset of the full AsHostedAgent overload.")] public static ApplicationModel.IResourceBuilder AsHostedAgent(this ApplicationModel.IResourceBuilder builder, System.Action configure) where T : ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IComputeResource { throw null; } @@ -443,9 +455,13 @@ public partial class FoundryModel public static partial class Anthropic { + [AspireValue("FoundryModels")] + public static readonly FoundryModel ClaudeFable5; [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeHaiku45; [AspireValue("FoundryModels")] + public static readonly FoundryModel ClaudeMythos5; + [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeMythosPreview; [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeOpus41; @@ -456,9 +472,15 @@ public static partial class Anthropic [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeOpus47; [AspireValue("FoundryModels")] + public static readonly FoundryModel ClaudeOpus48; + [AspireValue("FoundryModels")] + public static readonly FoundryModel ClaudeOpus5; + [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeSonnet45; [AspireValue("FoundryModels")] public static readonly FoundryModel ClaudeSonnet46; + [AspireValue("FoundryModels")] + public static readonly FoundryModel ClaudeSonnet5; } public static partial class BlackForestLabs @@ -478,9 +500,7 @@ public static partial class Cohere [AspireValue("FoundryModels")] public static readonly FoundryModel CohereCommandA; [AspireValue("FoundryModels")] - public static readonly FoundryModel CohereCommandR082024; - [AspireValue("FoundryModels")] - public static readonly FoundryModel CohereCommandRPlus082024; + public static readonly FoundryModel CohereCommandAPlus052026; [AspireValue("FoundryModels")] public static readonly FoundryModel CohereEmbedV3English; [AspireValue("FoundryModels")] @@ -493,13 +513,6 @@ public static partial class Cohere public static readonly FoundryModel EmbedV40; } - public static partial class Core42 - { - [System.Obsolete("This model is no longer available.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel Jais30bChat; - } - public static partial class DeepSeek { [AspireValue("FoundryModels")] @@ -507,10 +520,10 @@ public static partial class DeepSeek [AspireValue("FoundryModels")] public static readonly FoundryModel DeepSeekR10528; [AspireValue("FoundryModels")] - public static readonly FoundryModel DeepSeekV3; - [AspireValue("FoundryModels")] public static readonly FoundryModel DeepSeekV30324; [AspireValue("FoundryModels")] + public static readonly FoundryModel DeepSeekV31; + [AspireValue("FoundryModels")] public static readonly FoundryModel DeepSeekV32; [AspireValue("FoundryModels")] public static readonly FoundryModel DeepSeekV32Speciale; @@ -531,16 +544,22 @@ public static partial class Local [AspireValue("FoundryModels")] public static readonly FoundryModel GptOss20b; [AspireValue("FoundryModels")] + public static readonly FoundryModel Ministral33bInstruct2512; + [AspireValue("FoundryModels")] public static readonly FoundryModel Mistral7bV02; [AspireValue("FoundryModels")] public static readonly FoundryModel MistralNemo12bInstruct; [AspireValue("FoundryModels")] + public static readonly FoundryModel Nemotron35AsrStreaming06b; + [AspireValue("FoundryModels")] public static readonly FoundryModel NemotronSpeechStreamingEn06b; [AspireValue("FoundryModels")] public static readonly FoundryModel NemotronSpeechStreamingEs06b; [AspireValue("FoundryModels")] public static readonly FoundryModel Olmo37bInstruct; [AspireValue("FoundryModels")] + public static readonly FoundryModel ParakeetTdt06bV2; + [AspireValue("FoundryModels")] public static readonly FoundryModel Phi35Mini; [AspireValue("FoundryModels")] public static readonly FoundryModel Phi3Mini128k; @@ -558,9 +577,6 @@ public static partial class Local public static readonly FoundryModel Qwen2514b; [AspireValue("FoundryModels")] public static readonly FoundryModel Qwen2515b; - [System.Obsolete("This test variant is no longer available. Use Qwen2515b instead.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel Qwen2515bInstructTestVitisNpu; [AspireValue("FoundryModels")] public static readonly FoundryModel Qwen257b; [AspireValue("FoundryModels")] @@ -570,6 +586,8 @@ public static partial class Local [AspireValue("FoundryModels")] public static readonly FoundryModel Qwen25Coder15b; [AspireValue("FoundryModels")] + public static readonly FoundryModel Qwen25Coder3b; + [AspireValue("FoundryModels")] public static readonly FoundryModel Qwen25Coder7b; [AspireValue("FoundryModels")] public static readonly FoundryModel Qwen306b; @@ -612,6 +630,8 @@ public static partial class Meta [AspireValue("FoundryModels")] public static readonly FoundryModel Llama3290BVisionInstruct; [AspireValue("FoundryModels")] + public static readonly FoundryModel Llama3370BInstruct; + [AspireValue("FoundryModels")] public static readonly FoundryModel Llama4Maverick17B128EInstructFP8; [AspireValue("FoundryModels")] public static readonly FoundryModel Llama4Scout17B16EInstruct; @@ -629,12 +649,6 @@ public static partial class Microsoft public static readonly FoundryModel AzureAIContentUnderstanding; [AspireValue("FoundryModels")] public static readonly FoundryModel AzureAIDocumentIntelligence; - [System.Obsolete("Azure AI Language has been replaced with more granular services. Use AzureLanguageLanguageDetection, AzureLanguageTextPiiRedaction, or other specific services instead.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel AzureAILanguage; - [System.Obsolete("Azure AI Translator has been replaced with more granular services. Use AzureTranslatorTextTranslation or AzureTranslatorDocumentTranslation instead.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel AzureAITranslator; [AspireValue("FoundryModels")] public static readonly FoundryModel AzureAIVision; [AspireValue("FoundryModels")] @@ -665,33 +679,18 @@ public static partial class Microsoft public static readonly FoundryModel AzureTranslatorDocumentTranslation; [AspireValue("FoundryModels")] public static readonly FoundryModel AzureTranslatorTextTranslation; - [System.Obsolete("Use AzureLanguageLanguageDetection instead.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel LanguageDetection; - [AspireValue("FoundryModels")] - public static readonly FoundryModel MaiDSR1; [AspireValue("FoundryModels")] public static readonly FoundryModel MaiTranscribe1; [AspireValue("FoundryModels")] - public static readonly FoundryModel MaiVoice1; + public static readonly FoundryModel MaiTranscribe15; [AspireValue("FoundryModels")] - public static readonly FoundryModel ModelRouter; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi35MiniInstruct; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi35MoEInstruct; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi35VisionInstruct; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi3Medium128kInstruct; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi3Medium4kInstruct; + public static readonly FoundryModel MaiVoice1; [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi3Mini128kInstruct; + public static readonly FoundryModel MaiVoice2; [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi3Mini4kInstruct; + public static readonly FoundryModel MaiVoice2Flash; [AspireValue("FoundryModels")] - public static readonly FoundryModel Phi3Small128kInstruct; + public static readonly FoundryModel ModelRouter; [AspireValue("FoundryModels")] public static readonly FoundryModel Phi3Small8kInstruct; [AspireValue("FoundryModels")] @@ -706,9 +705,6 @@ public static partial class Microsoft public static readonly FoundryModel Phi4MultimodalInstruct; [AspireValue("FoundryModels")] public static readonly FoundryModel Phi4Reasoning; - [System.Obsolete("Use AzureLanguageTextPiiRedaction instead.")] - [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public static readonly FoundryModel TextPii; } public static partial class MistralAI @@ -726,6 +722,10 @@ public static partial class MistralAI [AspireValue("FoundryModels")] public static readonly FoundryModel MistralMedium2505; [AspireValue("FoundryModels")] + public static readonly FoundryModel MistralMedium35; + [AspireValue("FoundryModels")] + public static readonly FoundryModel MistralOcr40; + [AspireValue("FoundryModels")] public static readonly FoundryModel MistralSmall2503; } @@ -736,44 +736,22 @@ public static partial class OpenAI [AspireValue("FoundryModels")] public static readonly FoundryModel ComputerUsePreview; [AspireValue("FoundryModels")] - public static readonly FoundryModel DallE3; - [AspireValue("FoundryModels")] public static readonly FoundryModel Davinci002; [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt35Turbo; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt35Turbo16k; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt35TurboInstruct; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt4; - [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt41; [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt41Mini; [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt41Nano; [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt432k; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt45Preview; - [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4o; [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt4oAudioPreview; - [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4oMini; [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt4oMiniAudioPreview; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt4oMiniRealtimePreview; - [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4oMiniTranscribe; [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4oMiniTts; [AspireValue("FoundryModels")] - public static readonly FoundryModel Gpt4oRealtimePreview; - [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4oTranscribe; [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt4oTranscribeDiarize; @@ -810,6 +788,12 @@ public static partial class OpenAI [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt55; [AspireValue("FoundryModels")] + public static readonly FoundryModel Gpt56Luna; + [AspireValue("FoundryModels")] + public static readonly FoundryModel Gpt56Sol; + [AspireValue("FoundryModels")] + public static readonly FoundryModel Gpt56Terra; + [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt5Chat; [AspireValue("FoundryModels")] public static readonly FoundryModel Gpt5Codex; @@ -828,33 +812,37 @@ public static partial class OpenAI [AspireValue("FoundryModels")] public static readonly FoundryModel GptChatLatest; [AspireValue("FoundryModels")] - public static readonly FoundryModel GptImage1; - [AspireValue("FoundryModels")] public static readonly FoundryModel GptImage15; [AspireValue("FoundryModels")] public static readonly FoundryModel GptImage1Mini; [AspireValue("FoundryModels")] public static readonly FoundryModel GptImage2; [AspireValue("FoundryModels")] + public static readonly FoundryModel GptLiveTranscribe; + [AspireValue("FoundryModels")] public static readonly FoundryModel GptOss120b; [AspireValue("FoundryModels")] + public static readonly FoundryModel GptOss20b; + [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtime; [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtime15; [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtime2; [AspireValue("FoundryModels")] + public static readonly FoundryModel GptRealtime21; + [AspireValue("FoundryModels")] + public static readonly FoundryModel GptRealtime21Mini; + [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtimeMini; [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtimeTranslate; [AspireValue("FoundryModels")] public static readonly FoundryModel GptRealtimeWhisper; [AspireValue("FoundryModels")] - public static readonly FoundryModel O1; + public static readonly FoundryModel GptTranscribe; [AspireValue("FoundryModels")] - public static readonly FoundryModel O1Mini; - [AspireValue("FoundryModels")] - public static readonly FoundryModel O1Preview; + public static readonly FoundryModel O1; [AspireValue("FoundryModels")] public static readonly FoundryModel O3; [AspireValue("FoundryModels")] @@ -866,8 +854,6 @@ public static partial class OpenAI [AspireValue("FoundryModels")] public static readonly FoundryModel O4Mini; [AspireValue("FoundryModels")] - public static readonly FoundryModel Sora; - [AspireValue("FoundryModels")] public static readonly FoundryModel TextEmbedding3Large; [AspireValue("FoundryModels")] public static readonly FoundryModel TextEmbedding3Small; @@ -906,10 +892,6 @@ public static partial class XAI [AspireValue("FoundryModels")] public static readonly FoundryModel Grok43; [AspireValue("FoundryModels")] - public static readonly FoundryModel Grok4FastNonReasoning; - [AspireValue("FoundryModels")] - public static readonly FoundryModel Grok4FastReasoning; - [AspireValue("FoundryModels")] public static readonly FoundryModel GrokCodeFast1; } } @@ -980,9 +962,6 @@ public partial class HostedAgentConfiguration { public HostedAgentConfiguration(string image) { } - [AspireExportIgnore(Reason = "Azure SDK-specific type not usable from polyglot hosts.")] - public System.Collections.Generic.IList ContainerProtocolVersions { get { throw null; } init { } } - [AspireExportIgnore(Reason = "Azure SDK-specific type not usable from polyglot hosts.")] public global::Azure.AI.Projects.Agents.ContentFilterConfiguration? ContentFilterConfiguration { get { throw null; } set { } } @@ -1005,10 +984,19 @@ public HostedAgentConfiguration(string image) { } public System.Collections.Generic.IDictionary Metadata { get { throw null; } init { } } + [AspireExportIgnore(Reason = "Azure SDK-specific type not usable from polyglot hosts.")] + public System.Collections.Generic.IList ProtocolVersions { get { throw null; } init { } } + [AspireExportIgnore(Reason = "Azure SDK-specific type not usable from polyglot hosts.")] public System.Collections.Generic.IList Tools { get { throw null; } init { } } } + public enum HostedAgentProtocol + { + Responses = 0, + Invocations = 1 + } + public partial interface IFoundryTool { System.Threading.Tasks.Task ToAgentToolAsync(System.Threading.CancellationToken cancellationToken = default); diff --git a/src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs b/src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs index b0719d64bf2..97265576d44 100644 --- a/src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs +++ b/src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs @@ -10,15 +10,19 @@ namespace Aspire.Hosting { public static partial class GitHubModelsExtensions { + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] [AspireExportIgnore(Reason = "GitHubModel is a .NET-specific descriptor type not compatible with ATS. Use the GitHubModelName enum-based overload instead.")] public static ApplicationModel.IResourceBuilder AddGitHubModel(this IDistributedApplicationBuilder builder, string name, GitHub.GitHubModel model, ApplicationModel.IResourceBuilder? organization = null) { throw null; } + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] [AspireExportIgnore(Reason = "The polyglot overload uses the GitHubModelName enum instead. See the internal AddGitHubModel(GitHubModelName) overload.")] public static ApplicationModel.IResourceBuilder AddGitHubModel(this IDistributedApplicationBuilder builder, string name, string model, ApplicationModel.IResourceBuilder? organization = null) { throw null; } + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] [AspireExport] public static ApplicationModel.IResourceBuilder WithApiKey(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder apiKey) { throw null; } + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] [AspireExport("enableHealthCheck")] public static ApplicationModel.IResourceBuilder WithHealthCheck(this ApplicationModel.IResourceBuilder builder) { throw null; } } @@ -26,6 +30,7 @@ public static partial class GitHubModelsExtensions namespace Aspire.Hosting.GitHub { + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] public partial class GitHubModel { public required string Id { get { throw null; } init { } } @@ -131,6 +136,7 @@ public static partial class XAI namespace Aspire.Hosting.GitHub.Models { + [System.Obsolete("GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details.")] [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, Name = {Name}, Model = {Model}")] public partial class GitHubModelResource : ApplicationModel.Resource, ApplicationModel.IResourceWithConnectionString, ApplicationModel.IResource, ApplicationModel.IExpressionValue, ApplicationModel.IValueProvider, ApplicationModel.IManifestExpressionProvider, ApplicationModel.IValueWithReferences { diff --git a/src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs b/src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs index 3866b33624f..547837f29f5 100644 --- a/src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs +++ b/src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs @@ -18,9 +18,18 @@ public static ApplicationModel.IResourceBuilder WithAppArgs(this Applicati where T : Go.GoAppResource { throw null; } [AspireExport] + public static ApplicationModel.IResourceBuilder WithDelveServer(this ApplicationModel.IResourceBuilder builder, Go.DelveServerOptions? options = null) + where T : Go.GoAppResource { throw null; } + + [System.Obsolete("Use WithDelveServer() or WithDelveServer(DelveServerOptions) instead.")] + [AspireExportIgnore(Reason = "This obsolete compatibility overload is C#-only. Polyglot AppHosts use the DelveServerOptions overload.")] public static ApplicationModel.IResourceBuilder WithDelveServer(this ApplicationModel.IResourceBuilder builder, int port = 2345) where T : Go.GoAppResource { throw null; } + [AspireExportIgnore(Reason = "This C# convenience overload uses default options. Polyglot AppHosts use the DelveServerOptions overload.")] + public static ApplicationModel.IResourceBuilder WithDelveServer(this ApplicationModel.IResourceBuilder builder) + where T : Go.GoAppResource { throw null; } + [AspireExport] public static ApplicationModel.IResourceBuilder WithGoPrivate(this ApplicationModel.IResourceBuilder builder, string[] privatePatterns, string authHost, string usernameArgName = "GIT_USER", string tokenSecretId = "gittoken") where T : Go.GoAppResource { throw null; } @@ -45,6 +54,22 @@ public static ApplicationModel.IResourceBuilder WithVetTool(this Applicati namespace Aspire.Hosting.Go { + [AspireDto] + public sealed partial class DelveServerOptions + { + public bool AcceptMultiClient { get { throw null; } init { } } + + public bool ContinueOnStart { get { throw null; } init { } } + + public bool Log { get { throw null; } init { } } + + public string? LogOutput { get { throw null; } init { } } + + public bool? OnlySameUser { get { throw null; } init { } } + + public int Port { get { throw null; } init { } } + } + [AspireExport(ExposeProperties = true)] public partial class GoAppResource : ApplicationModel.ExecutableResource, IResourceWithServiceDiscovery, ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResource, ApplicationModel.IContainerFilesDestinationResource { diff --git a/src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs b/src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs index 47c4e43d0ca..05c90e5f918 100644 --- a/src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs +++ b/src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs @@ -180,6 +180,42 @@ public static partial class KubernetesIngressExtensions public static ApplicationModel.IResourceBuilder WithTls(this ApplicationModel.IResourceBuilder builder) { throw null; } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static partial class KubernetesPersistentVolumeExtensions + { + [AspireExport] + public static ApplicationModel.IResourceBuilder AddPersistentVolume(this ApplicationModel.IResourceBuilder builder, string name) { throw null; } + + [AspireExport] + public static ApplicationModel.IResourceBuilder WithAccessMode(this ApplicationModel.IResourceBuilder builder, Kubernetes.PersistentVolumeAccessMode accessMode) { throw null; } + + [AspireExport("withCapacityParam")] + public static ApplicationModel.IResourceBuilder WithCapacity(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder capacity) { throw null; } + + [AspireExport] + public static ApplicationModel.IResourceBuilder WithCapacity(this ApplicationModel.IResourceBuilder builder, string capacity) { throw null; } + + [AspireExport("withKubernetesPersistentVolumeMount")] + public static ApplicationModel.IResourceBuilder WithPersistentVolume(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder volume, string mountPath, bool isReadOnly = false) + where T : ApplicationModel.IComputeResource { throw null; } + + [AspireExport("withKubernetesPersistentVolume")] + public static ApplicationModel.IResourceBuilder WithPersistentVolume(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder volume) + where T : ApplicationModel.IComputeResource { throw null; } + + [AspireExport("withStorageClassParam")] + public static ApplicationModel.IResourceBuilder WithStorageClass(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder storageClassName) { throw null; } + + [AspireExport] + public static ApplicationModel.IResourceBuilder WithStorageClass(this ApplicationModel.IResourceBuilder builder, string storageClassName) { throw null; } + + [AspireExport("withVolumeAnnotationParam")] + public static ApplicationModel.IResourceBuilder WithVolumeAnnotation(this ApplicationModel.IResourceBuilder builder, string key, ApplicationModel.IResourceBuilder value) { throw null; } + + [AspireExport] + public static ApplicationModel.IResourceBuilder WithVolumeAnnotation(this ApplicationModel.IResourceBuilder builder, string key, string value) { throw null; } + } + public static partial class KubernetesServiceExtensions { [AspireExport] @@ -380,6 +416,15 @@ public KubernetesNodePoolResource(string name, KubernetesEnvironmentResource env public KubernetesEnvironmentResource Parent { get { throw null; } } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport] + public sealed partial class KubernetesPersistentVolumeResource : ApplicationModel.Resource, ApplicationModel.IResourceWithParent, ApplicationModel.IResourceWithParent, ApplicationModel.IResource + { + public KubernetesPersistentVolumeResource(string name, KubernetesEnvironmentResource environment) : base(default!) { } + + public KubernetesEnvironmentResource Parent { get { throw null; } } + } + [AspireExport(ExposeProperties = true)] public partial class KubernetesResource : ApplicationModel.Resource, ApplicationModel.IResourceWithParent, ApplicationModel.IResourceWithParent, ApplicationModel.IResource { @@ -405,6 +450,15 @@ public KubernetesServiceCustomizationAnnotation(System.Action Configure { get { throw null; } } } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public enum PersistentVolumeAccessMode + { + ReadWriteOnce = 0, + ReadOnlyMany = 1, + ReadWriteMany = 2, + ReadWriteOncePod = 3 + } } namespace Aspire.Hosting.Kubernetes.Resources @@ -549,6 +603,19 @@ public sealed partial class ConfigMapKeySelectorV1 public bool? Optional { get { throw null; } set { } } } + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class ConfigMapProjectionV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "items")] + public System.Collections.Generic.List Items { get { throw null; } } + + [YamlDotNet.Serialization.YamlMember(Alias = "name")] + public string Name { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "optional")] + public bool? Optional { get { throw null; } set { } } + } + [YamlDotNet.Serialization.YamlSerializable] public sealed partial class ConfigMapVolumeSourceV1 { @@ -750,6 +817,29 @@ public sealed partial class DeploymentStrategyV1 public string Type { get { throw null; } set { } } } + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class DownwardApiProjectionV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "items")] + public System.Collections.Generic.List Items { get { throw null; } } + } + + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class DownwardApiVolumeFileV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "fieldRef")] + public ObjectFieldSelectorV1? FieldRef { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "mode")] + public int? Mode { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "path")] + public string Path { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "resourceFieldRef")] + public ResourceFieldSelectorV1? ResourceFieldRef { get { throw null; } set { } } + } + [YamlDotNet.Serialization.YamlSerializable] public sealed partial class EmptyDirVolumeSourceV1 { @@ -1836,16 +1926,16 @@ public sealed partial class PersistentVolumeClaimSpecV1 public System.Collections.Generic.List AccessModes { get { throw null; } } [YamlDotNet.Serialization.YamlMember(Alias = "dataSource")] - public TypedLocalObjectReferenceV1 DataSource { get { throw null; } set { } } + public TypedLocalObjectReferenceV1? DataSource { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "dataSourceRef")] - public TypedObjectReferenceV1 DataSourceRef { get { throw null; } set { } } + public TypedObjectReferenceV1? DataSourceRef { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "resources")] public VolumeResourceRequirementsV1 Resources { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "selector")] - public LabelSelectorV1 Selector { get { throw null; } set { } } + public LabelSelectorV1? Selector { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "storageClassName")] public string StorageClassName { get { throw null; } set { } } @@ -1890,19 +1980,19 @@ public sealed partial class PersistentVolumeSpecV1 public System.Collections.Generic.Dictionary Capacity { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "claimRef")] - public ObjectReferenceV1 ClaimRef { get { throw null; } set { } } + public ObjectReferenceV1? ClaimRef { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "hostPath")] - public HostPathVolumeSourceV1 HostPath { get { throw null; } set { } } + public HostPathVolumeSourceV1? HostPath { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "local")] - public LocalVolumeSourceV1 Local { get { throw null; } set { } } + public LocalVolumeSourceV1? Local { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "mountOptions")] public System.Collections.Generic.List MountOptions { get { throw null; } } [YamlDotNet.Serialization.YamlMember(Alias = "nodeAffinity")] - public VolumeNodeAffinityV1 NodeAffinity { get { throw null; } set { } } + public VolumeNodeAffinityV1? NodeAffinity { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "persistentVolumeReclaimPolicy")] public string PersistentVolumeReclaimPolicy { get { throw null; } set { } } @@ -2278,6 +2368,16 @@ public sealed partial class ProbeV1 public int? TimeoutSeconds { get { throw null; } set { } } } + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class ProjectedVolumeSourceV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "defaultMode")] + public int? DefaultMode { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "sources")] + public System.Collections.Generic.List Sources { get { throw null; } } + } + [YamlDotNet.Serialization.YamlSerializable] public sealed partial class ReplicaSet : BaseKubernetesResource { @@ -2485,6 +2585,19 @@ public sealed partial class SecretKeySelectorV1 public bool? Optional { get { throw null; } set { } } } + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class SecretProjectionV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "items")] + public System.Collections.Generic.List Items { get { throw null; } } + + [YamlDotNet.Serialization.YamlMember(Alias = "name")] + public string Name { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "optional")] + public bool? Optional { get { throw null; } set { } } + } + [YamlDotNet.Serialization.YamlSerializable] public sealed partial class SecretVolumeSourceV1 { @@ -2566,6 +2679,19 @@ public Service() : base(default!, default!) { } public ServiceSpecV1 Spec { get { throw null; } set { } } } + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class ServiceAccountTokenProjectionV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "audience")] + public string? Audience { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "expirationSeconds")] + public long? ExpirationSeconds { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "path")] + public string Path { get { throw null; } set { } } + } + [YamlDotNet.Serialization.YamlSerializable] public sealed partial class ServiceAccountV1 : BaseKubernetesResource { @@ -2720,7 +2846,7 @@ public sealed partial class StatefulSetSpecV1 public StatefulSetOrdinalsV1? Ordinals { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "persistentVolumeClaimRetentionPolicy")] - public StatefulSetPersistentVolumeClaimRetentionPolicyV1 PersistentVolumeClaimRetentionPolicy { get { throw null; } set { } } + public StatefulSetPersistentVolumeClaimRetentionPolicyV1? PersistentVolumeClaimRetentionPolicy { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "podManagementPolicy")] public string? PodManagementPolicy { get { throw null; } set { } } @@ -2741,7 +2867,7 @@ public sealed partial class StatefulSetSpecV1 public PodTemplateSpecV1 Template { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "updateStrategy")] - public StatefulSetUpdateStrategyV1 UpdateStrategy { get { throw null; } set { } } + public StatefulSetUpdateStrategyV1? UpdateStrategy { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "volumeClaimTemplates")] public System.Collections.Generic.List VolumeClaimTemplates { get { throw null; } } @@ -2751,7 +2877,7 @@ public sealed partial class StatefulSetSpecV1 public sealed partial class StatefulSetUpdateStrategyV1 { [YamlDotNet.Serialization.YamlMember(Alias = "rollingUpdate")] - public RollingUpdateStatefulSetStrategyV1 RollingUpdate { get { throw null; } set { } } + public RollingUpdateStatefulSetStrategyV1? RollingUpdate { get { throw null; } set { } } [YamlDotNet.Serialization.YamlMember(Alias = "type")] public string Type { get { throw null; } set { } } @@ -2908,7 +3034,23 @@ public sealed partial class VolumeMountV1 public sealed partial class VolumeNodeAffinityV1 { [YamlDotNet.Serialization.YamlMember(Alias = "required")] - public NodeSelectorV1 Required { get { throw null; } set { } } + public NodeSelectorV1? Required { get { throw null; } set { } } + } + + [YamlDotNet.Serialization.YamlSerializable] + public sealed partial class VolumeProjectionV1 + { + [YamlDotNet.Serialization.YamlMember(Alias = "configMap")] + public ConfigMapProjectionV1? ConfigMap { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "downwardAPI")] + public DownwardApiProjectionV1? DownwardApi { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "secret")] + public SecretProjectionV1? Secret { get { throw null; } set { } } + + [YamlDotNet.Serialization.YamlMember(Alias = "serviceAccountToken")] + public ServiceAccountTokenProjectionV1? ServiceAccountToken { get { throw null; } set { } } } [YamlDotNet.Serialization.YamlSerializable] @@ -2945,6 +3087,9 @@ public sealed partial class VolumeV1 [YamlDotNet.Serialization.YamlMember(Alias = "persistentVolumeClaim")] public PersistentVolumeClaimVolumeSourceV1? PersistentVolumeClaim { get { throw null; } set { } } + [YamlDotNet.Serialization.YamlMember(Alias = "projected")] + public ProjectedVolumeSourceV1? Projected { get { throw null; } set { } } + [YamlDotNet.Serialization.YamlMember(Alias = "secret")] public SecretVolumeSourceV1? Secret { get { throw null; } set { } } } diff --git a/src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs b/src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs index 7dabd5c2867..96c6700f4a8 100644 --- a/src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs +++ b/src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs @@ -71,6 +71,10 @@ public static partial class OrleansServiceExtensions [AspireExport] public static Orleans.OrleansService WithMemoryStreaming(this Orleans.OrleansService orleansServiceBuilder, string name) { throw null; } + [AspireExport] + public static ApplicationModel.IResourceBuilder WithOrleansProviderType(this ApplicationModel.IResourceBuilder builder, string providerType) + where T : ApplicationModel.IResourceWithConnectionString { throw null; } + [AspireExport("withOrleansReference")] public static ApplicationModel.IResourceBuilder WithReference(this ApplicationModel.IResourceBuilder builder, Orleans.OrleansService orleansService) where T : ApplicationModel.IResourceWithEnvironment, ApplicationModel.IResourceWithEndpoints { throw null; } diff --git a/src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs b/src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs new file mode 100644 index 00000000000..d277d461a06 --- /dev/null +++ b/src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs @@ -0,0 +1,267 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +namespace Aspire.Hosting +{ + public static partial class RadiusCloudProviderExtensions + { + [AspireExportIgnore] + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS003", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static ApplicationModel.IResourceBuilder WithAwsProvider(this ApplicationModel.IResourceBuilder builder, string accountId, string region, System.Action configure) { throw null; } + + [AspireExportIgnore] + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS003", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static ApplicationModel.IResourceBuilder WithAzureProvider(this ApplicationModel.IResourceBuilder builder, string subscriptionId, string resourceGroup, System.Action configure) { throw null; } + } + + public static partial class RadiusExtensions + { + [AspireExport] + public static ApplicationModel.IResourceBuilder AddRadiusEnvironment(this IDistributedApplicationBuilder builder, string name) { throw null; } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "RadiusInfrastructureOptions customization callbacks are not ATS-compatible.")] + public static ApplicationModel.IResourceBuilder ConfigureRadiusInfrastructure(this ApplicationModel.IResourceBuilder builder, System.Action configure) { throw null; } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS057", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport] + public static ApplicationModel.IResourceBuilder WithContainerImage(this ApplicationModel.IResourceBuilder builder, string image) { throw null; } + + [AspireExport] + public static ApplicationModel.IResourceBuilder WithNamespace(this ApplicationModel.IResourceBuilder builder, string kubernetesNamespace) { throw null; } + } +} + +namespace Aspire.Hosting.Radius +{ + [AspireExport(ExposeProperties = true)] + public sealed partial class RadiusEnvironmentResource : ApplicationModel.Resource, ApplicationModel.IComputeEnvironmentResource, ApplicationModel.IResource + { + public RadiusEnvironmentResource(string name) : base(default!) { } + + public string Namespace { get { throw null; } set { } } + + public ApplicationModel.IComputeEnvironmentResource? OwningComputeEnvironment { get { throw null; } set { } } + + ApplicationModel.ReferenceExpression ApplicationModel.IComputeEnvironmentResource.GetEndpointPropertyExpression(ApplicationModel.EndpointReferenceExpression endpointReferenceExpression) { throw null; } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public ApplicationModel.ReferenceExpression GetHostAddressExpression(ApplicationModel.EndpointReference endpointReference) { throw null; } + } +} + +namespace Aspire.Hosting.Radius.CloudProviders +{ + public partial interface IAwsRadiusProviderBuilder + { + IAwsRadiusProviderBuilder WithAccessKey(ApplicationModel.IResourceBuilder accessKeyId, ApplicationModel.IResourceBuilder secretAccessKey); + IAwsRadiusProviderBuilder WithIrsa(string iamRoleArn); + } + + public partial interface IAzureRadiusProviderBuilder + { + IAzureRadiusProviderBuilder WithServicePrincipal(string tenantId, string clientId, ApplicationModel.IResourceBuilder clientSecret); + IAzureRadiusProviderBuilder WithWorkloadIdentity(string tenantId, string clientId); + } +} + +namespace Aspire.Hosting.Radius.Publishing +{ + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusInfrastructureOptions + { + public System.Collections.Generic.List Applications { get { throw null; } } + + public System.Collections.Generic.List Containers { get { throw null; } } + + public System.Collections.Generic.List Environments { get { throw null; } } + + public System.Collections.Generic.List LegacyApplications { get { throw null; } } + + public System.Collections.Generic.List LegacyEnvironments { get { throw null; } } + + public System.Collections.Generic.List Parameters { get { throw null; } } + + public System.Collections.Generic.List RecipePacks { get { throw null; } } + + public System.Collections.Generic.List ResourceTypeInstances { get { throw null; } } + } +} + +namespace Aspire.Hosting.Radius.Publishing.Constructs +{ + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ConnectionConstruct : Azure.Provisioning.Primitives.ProvisionableConstruct + { + public Azure.Provisioning.BicepValue Source { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ContainerEnvVarConstruct : Azure.Provisioning.Primitives.ProvisionableConstruct + { + public Azure.Provisioning.BicepValue Value { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ContainerPortConstruct : Azure.Provisioning.Primitives.ProvisionableConstruct + { + public Azure.Provisioning.BicepValue ContainerPort { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue Protocol { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class LegacyApplicationConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public LegacyApplicationConstruct(string bicepIdentifier) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue ApplicationName { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentId { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class LegacyApplicationEnvironmentConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public LegacyApplicationEnvironmentConstruct(string bicepIdentifier) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue AwsScope { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue AzureScope { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue ComputeKind { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue ComputeNamespace { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentName { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary RecipeConfig { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary> Recipes { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class LegacyRecipeEntryConstruct : Azure.Provisioning.Primitives.ProvisionableConstruct + { + public Azure.Provisioning.BicepDictionary Parameters { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue TemplateKind { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue TemplatePath { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusApplicationConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public RadiusApplicationConstruct(string bicepIdentifier) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue ApplicationName { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentId { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusContainerConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public RadiusContainerConstruct(string bicepIdentifier, string containerName) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue ApplicationId { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary Connections { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue ContainerName { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary Env { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentId { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue Image { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary Ports { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusEnvironmentConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public RadiusEnvironmentConstruct(string bicepIdentifier) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue AwsAccountId { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue AwsRegion { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue AzureResourceGroupName { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue AzureSubscriptionId { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentName { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue KubernetesNamespace { get { throw null; } set { } } + + public Azure.Provisioning.BicepList RecipePacks { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusRecipePackConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public RadiusRecipePackConstruct(string bicepIdentifier) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue PackName { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary Recipes { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RadiusResourceTypeConstruct : Azure.Provisioning.Primitives.ProvisionableResource + { + public RadiusResourceTypeConstruct(string bicepIdentifier, string resourceType, string apiVersion) : base(default!, default, default) { } + + public Azure.Provisioning.BicepValue ApplicationId { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue EnvironmentId { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue RecipeName { get { throw null; } set { } } + + public Azure.Provisioning.BicepDictionary RecipeParameters { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue ResourceName { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRERADIUS004", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class RecipeEntryConstruct : Azure.Provisioning.Primitives.ProvisionableConstruct + { + public Azure.Provisioning.BicepDictionary Parameters { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue RecipeKind { get { throw null; } set { } } + + public Azure.Provisioning.BicepValue RecipeLocation { get { throw null; } set { } } + + protected override void DefineProvisionableProperties() { } + } +} \ No newline at end of file diff --git a/src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs b/src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs index 169a64d270b..dae6ddeae58 100644 --- a/src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs +++ b/src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs @@ -37,6 +37,9 @@ public static partial class RedisBuilderExtensions [AspireExport("withRedisInsightHostPort", MethodName = "withHostPort")] public static ApplicationModel.IResourceBuilder WithHostPort(this ApplicationModel.IResourceBuilder builder, int? port) { throw null; } + [AspireExport] + public static ApplicationModel.IResourceBuilder WithModule(this ApplicationModel.IResourceBuilder builder, string path) { throw null; } + [AspireExport] public static ApplicationModel.IResourceBuilder WithPassword(this ApplicationModel.IResourceBuilder builder, ApplicationModel.IResourceBuilder? password) { throw null; } @@ -49,6 +52,18 @@ public static partial class RedisBuilderExtensions [AspireExport(RunSyncOnBackgroundThread = true)] public static ApplicationModel.IResourceBuilder WithRedisInsight(this ApplicationModel.IResourceBuilder builder, System.Action>? configureContainer = null, string? containerName = null) { throw null; } } + + public static partial class RedisModules + { + [AspireValue("RedisModules")] + public const string BloomFilter = "/usr/local/lib/redis/modules/redisbloom.so"; + [AspireValue("RedisModules")] + public const string Json = "/usr/local/lib/redis/modules/rejson.so"; + [AspireValue("RedisModules")] + public const string Search = "/usr/local/lib/redis/modules/redisearch.so"; + [AspireValue("RedisModules")] + public const string TimeSeries = "/usr/local/lib/redis/modules/redistimeseries.so"; + } } namespace Aspire.Hosting.ApplicationModel diff --git a/src/Aspire.Hosting/api/Aspire.Hosting.cs b/src/Aspire.Hosting/api/Aspire.Hosting.cs index 0f37302c3c9..235488d5740 100644 --- a/src/Aspire.Hosting/api/Aspire.Hosting.cs +++ b/src/Aspire.Hosting/api/Aspire.Hosting.cs @@ -153,11 +153,11 @@ public static ApplicationModel.IResourceBuilder WithContainerCertific public static ApplicationModel.IResourceBuilder WithContainerFiles(this ApplicationModel.IResourceBuilder builder, string destinationPath, System.Collections.Generic.IEnumerable entries, int? defaultOwner = null, int? defaultGroup = null, System.IO.UnixFileMode? umask = null) where T : ApplicationModel.ContainerResource { throw null; } - [AspireExportIgnore(Reason = "ContainerFileSystemCallbackContext exposes IServiceProvider and IResource — .NET runtime types not usable from polyglot hosts.")] + [AspireExportIgnore(Reason = "Exposed to ATS via the WithContainerFilesCallbackExport shim, which accepts integer file-mode options and lets polyglot callbacks build the IEnumerable result through ContainerFileSystemCallbackContext factory methods (createFile/createDirectory/createCertificateFile).")] public static ApplicationModel.IResourceBuilder WithContainerFiles(this ApplicationModel.IResourceBuilder builder, string destinationPath, System.Func>> callback, int? defaultOwner = null, int? defaultGroup = null, System.IO.UnixFileMode? umask = null) where T : ApplicationModel.ContainerResource { throw null; } - [AspireExportIgnore(Reason = "Uses UnixFileMode parameter which is not ATS-compatible.")] + [AspireExportIgnore(Reason = "Exposed to ATS via the WithContainerFilesExport shim overload, which accepts integer file-mode options (ContainerFilesOptions) in place of the UnixFileMode parameter.")] public static ApplicationModel.IResourceBuilder WithContainerFiles(this ApplicationModel.IResourceBuilder builder, string destinationPath, string sourcePath, int? defaultOwner = null, int? defaultGroup = null, System.IO.UnixFileMode? umask = null) where T : ApplicationModel.ContainerResource { throw null; } @@ -417,7 +417,13 @@ public DistributedApplicationExecutionContext(DistributedApplicationOperation op public string PublisherName { get { throw null; } set { } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREWATCH001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public RunConfiguration RunConfiguration { get { throw null; } } + + [System.Obsolete("Use Services instead.")] public System.IServiceProvider ServiceProvider { get { throw null; } } + + public System.IServiceProvider Services { get { throw null; } } } [AspireExport] @@ -431,7 +437,13 @@ public DistributedApplicationExecutionContextOptions(DistributedApplicationOpera public string? PublisherName { get { throw null; } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREWATCH001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public RunConfiguration RunConfiguration { get { throw null; } init { } } + + [System.Obsolete("Use Services instead.")] public System.IServiceProvider? ServiceProvider { get { throw null; } set { } } + + public System.IServiceProvider? Services { get { throw null; } set { } } } public enum DistributedApplicationOperation @@ -622,7 +634,6 @@ public partial interface IFileSystemService ITempFileSystemService TempDirectory { get; } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial interface IInteractionService { bool IsAvailable { get; } @@ -633,9 +644,10 @@ public partial interface IInteractionService System.Threading.Tasks.Task> PromptInputsAsync(string title, string? message, System.Collections.Generic.IReadOnlyList inputs, InputsDialogInteractionOptions? options = null, System.Threading.CancellationToken cancellationToken = default); System.Threading.Tasks.Task> PromptMessageBoxAsync(string title, string message, MessageBoxInteractionOptions? options = null, System.Threading.CancellationToken cancellationToken = default); System.Threading.Tasks.Task> PromptNotificationAsync(string title, string message, NotificationInteractionOptions? options = null, System.Threading.CancellationToken cancellationToken = default); + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + System.Threading.Tasks.Task> PromptProgressAsync(string message, string? title = null, ProgressInteractionOptions? options = null, System.Threading.CancellationToken cancellationToken = default); } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public sealed partial class InputLoadOptions { public bool AlwaysLoadOnStart { get { throw null; } init { } } @@ -645,13 +657,11 @@ public sealed partial class InputLoadOptions public required System.Func LoadCallback { get { throw null; } init { } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial class InputsDialogInteractionOptions : InteractionOptions { public System.Func? ValidationCallback { get { throw null; } set { } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] [AspireExport(ExposeProperties = true)] public sealed partial class InputsDialogValidationContext { @@ -659,7 +669,6 @@ public sealed partial class InputsDialogValidationContext public required InteractionInputCollection Inputs { get { throw null; } init { } } - [AspireExportIgnore(Reason = "IServiceProvider is not part of the polyglot validation surface.")] public required System.IServiceProvider Services { get { throw null; } init { } } public void AddValidationError(InteractionInput input, string errorMessage) { } @@ -668,35 +677,59 @@ public void AddValidationError(InteractionInput input, string errorMessage) { } public void AddValidationError(string inputName, string errorMessage) { } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public enum InputType { Text = 0, SecretText = 1, Choice = 2, Boolean = 3, - Number = 4 + Number = 4, + File = 5 + } + + public sealed partial class InteractionFile + { + internal InteractionFile() { } + + public string FilePath { get { throw null; } } + + public string Id { get { throw null; } } + + public string Name { get { throw null; } } + + public System.IO.Stream OpenRead() { throw null; } + + public System.Threading.Tasks.Task ReadAllBytesAsync(System.Threading.CancellationToken cancellationToken = default) { throw null; } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] [AspireDto] [System.Diagnostics.DebuggerDisplay("Name = {Name}, InputType = {InputType}, Required = {Required}, Value = {Value}")] public sealed partial class InteractionInput { public bool AllowCustomChoice { get { throw null; } init { } } + public bool AllowMultipleFiles { get { throw null; } init { } } + public string? Description { get { throw null; } init { } } public bool Disabled { get { throw null; } set { } } + [AspireExportIgnore(Reason = "InputLoadOptions carries a non-serializable callback and is never populated on interaction results.")] public InputLoadOptions? DynamicLoading { get { throw null; } init { } } public bool EnableDescriptionMarkdown { get { throw null; } init { } } + public string? FileFilter { get { throw null; } init { } } + + [AspireExportIgnore(Reason = "InteractionFile contains non-serializable methods and server-local paths; polyglot callers use InteractionInputFile from base.mts.")] + public System.Collections.Generic.IReadOnlyList? Files { get { throw null; } } + public required InputType InputType { get { throw null; } init { } } public string? Label { get { throw null; } init { } } + public long? MaxFileSize { get { throw null; } init { } } + public int? MaxLength { get { throw null; } init { } } public required string Name { get { throw null; } init { } } @@ -710,7 +743,6 @@ public sealed partial class InteractionInput public string? Value { get { throw null; } set { } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] [AspireExport] [System.Diagnostics.DebuggerDisplay("Count = {Count}")] public sealed partial class InteractionInputCollection : System.Collections.Generic.IReadOnlyList, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection @@ -745,7 +777,6 @@ public InteractionInputCollection(System.Collections.Generic.IReadOnlyList Ok(T result) { throw null; } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial class InteractionResult { internal InteractionResult() { } @@ -854,7 +884,6 @@ public sealed partial class LaunchSettings public System.Collections.Generic.Dictionary Profiles { get { throw null; } set { } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public sealed partial class LoadInputContext { public required InteractionInputCollection AllInputs { get { throw null; } init { } } @@ -874,13 +903,11 @@ public static ApplicationModel.IResourceBuilder WithMcpServer(this Applica where T : ApplicationModel.IResourceWithEndpoints { throw null; } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial class MessageBoxInteractionOptions : InteractionOptions { public MessageIntent? Intent { get { throw null; } set { } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public enum MessageIntent { None = 0, @@ -898,7 +925,6 @@ public MissingParameterValueException(string message, System.Exception innerExce public MissingParameterValueException(string message) { } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial class NotificationInteractionOptions : InteractionOptions { public MessageIntent? Intent { get { throw null; } set { } } @@ -930,7 +956,6 @@ public enum OtlpProtocol HttpJson = 2 } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public sealed partial class ParameterProcessor { public ParameterProcessor(ApplicationModel.ResourceNotificationService notificationService, ApplicationModel.ResourceLoggerService loggerService, IInteractionService interactionService, Microsoft.Extensions.Logging.ILogger logger, DistributedApplicationExecutionContext executionContext, Pipelines.IDeploymentStateManager deploymentStateManager, IUserSecretsManager userSecretsManager) { } @@ -972,11 +997,11 @@ public static void ConfigureConnectionStringManifestPublisher(ApplicationModel.I public static ApplicationModel.ParameterResource CreateParameter(IDistributedApplicationBuilder builder, string name, bool secret) { throw null; } + [System.Obsolete("PublishAsConnectionString only works with the manifest publisher and is obsolete. Use AddConnectionString in publish-mode app model code instead.")] [AspireExport] public static ApplicationModel.IResourceBuilder PublishAsConnectionString(this ApplicationModel.IResourceBuilder builder) where T : ApplicationModel.ContainerResource, ApplicationModel.IResourceWithConnectionString { throw null; } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] [AspireExportIgnore(Reason = "Complex Func delegate with InteractionInput — not ATS-compatible.")] public static ApplicationModel.IResourceBuilder WithCustomInput(this ApplicationModel.IResourceBuilder builder, System.Func createInput) { throw null; } @@ -984,6 +1009,18 @@ public static ApplicationModel.IResourceBuilder PublishAsConnectionString( public static ApplicationModel.IResourceBuilder WithDescription(this ApplicationModel.IResourceBuilder builder, string description, bool enableMarkdown = false) { throw null; } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ProgressContext + { + public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public partial class ProgressInteractionOptions : InteractionOptions + { + public System.Func? Work { get { throw null; } set { } } + } + public static partial class ProjectResourceBuilderExtensions { [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECSHARPAPPS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] @@ -1022,9 +1059,14 @@ public static partial class ProjectResourceBuilderExtensions public static ApplicationModel.IResourceBuilder PublishAsDockerFile(this ApplicationModel.IResourceBuilder builder, System.Action>? configure = null) where T : ApplicationModel.ProjectResource { throw null; } - [AspireExportIgnore(Reason = "Uses Func which is not ATS-compatible.")] + [AspireExportIgnore(Reason = "Uses Func which is not ATS-compatible. The ATS-friendly implementation is in src/Aspire.Hosting/Ats/CoreExports.cs and accepts endpoint names instead of a predicate.")] public static ApplicationModel.IResourceBuilder WithEndpointsInEnvironment(this ApplicationModel.IResourceBuilder builder, System.Func filter) { throw null; } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPROJECTS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "Project launch defaults are applied by the .NET language integration, not by polyglot app hosts.")] + public static ApplicationModel.IResourceBuilder WithProjectDefaults(this ApplicationModel.IResourceBuilder builder, ProjectResourceOptions options) + where TProjectResource : class, ApplicationModel.IResourceWithEnvironment, ApplicationModel.IResourceWithEndpoints, ApplicationModel.IResourceWithArgs { throw null; } + [AspireExport] public static ApplicationModel.IResourceBuilder WithReplicas(this ApplicationModel.IResourceBuilder builder, int replicas) { throw null; } } @@ -1042,7 +1084,7 @@ public partial class ProjectResourceOptions public static partial class RequiredCommandResourceExtensions { [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMMAND001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] - [AspireExportIgnore(Reason = "RequiredCommandValidationContext exposes IServiceProvider — not usable from polyglot hosts.")] + [AspireExport("withRequiredCommandValidation", MethodName = "withRequiredCommandValidation")] public static ApplicationModel.IResourceBuilder WithRequiredCommand(this ApplicationModel.IResourceBuilder builder, string command, System.Func> validationCallback, string? helpLink = null) where T : ApplicationModel.IResource { throw null; } @@ -1085,7 +1127,7 @@ public static ApplicationModel.IResourceBuilder PublishWithContainerFiles( where T : ApplicationModel.IContainerFilesDestinationResource { throw null; } [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECERTIFICATES001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] - [AspireExportIgnore(Reason = "HttpsEndpointUpdateCallbackContext exposes IServiceProvider and IResource — not usable from polyglot hosts.")] + [AspireExport] public static ApplicationModel.IResourceBuilder SubscribeHttpsEndpointsUpdate(this ApplicationModel.IResourceBuilder builder, System.Action callback) where TResource : ApplicationModel.IResource { throw null; } @@ -1178,6 +1220,11 @@ public static ApplicationModel.IResourceBuilder WithContainerFilesSource(t public static ApplicationModel.IResourceBuilder WithDebugSupport(this ApplicationModel.IResourceBuilder builder, System.Func launchConfigurationProducer, string launchConfigurationType, System.Action? argsCallback = null) where T : ApplicationModel.IResource { throw null; } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "Generic debug launch configuration support is not part of the ATS surface.")] + public static ApplicationModel.IResourceBuilder WithDebugSupport(this ApplicationModel.IResourceBuilder builder, System.Func> launchConfigurationProducer, string launchConfigurationType, System.Action? argsCallback = null) + where T : ApplicationModel.IResource { throw null; } + [AspireExport] public static ApplicationModel.IResourceBuilder WithDeveloperCertificateTrust(this ApplicationModel.IResourceBuilder builder, bool trust) where TResource : ApplicationModel.IResourceWithEnvironment, ApplicationModel.IResourceWithArgs { throw null; } @@ -1317,7 +1364,7 @@ public static ApplicationModel.IResourceBuilder WithHttpsCertificate< where TResource : ApplicationModel.IResourceWithEnvironment, ApplicationModel.IResourceWithArgs { throw null; } [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECERTIFICATES001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] - [AspireExportIgnore(Reason = "HttpsCertificateConfigurationCallbackAnnotationContext exposes IServiceProvider and IResource — not usable from polyglot hosts.")] + [AspireExport] public static ApplicationModel.IResourceBuilder WithHttpsCertificateConfiguration(this ApplicationModel.IResourceBuilder builder, System.Func callback) where TResource : ApplicationModel.IResourceWithEnvironment, ApplicationModel.IResourceWithArgs { throw null; } @@ -1495,6 +1542,13 @@ public static ApplicationModel.IResourceBuilder WithUrls(this ApplicationM where T : ApplicationModel.IResource { throw null; } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREWATCH001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireDto] + public sealed partial class RunConfiguration + { + public bool WatchEnabled { get { throw null; } init { } } + } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREFILESYSTEM001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public abstract partial class TempDirectory : System.IDisposable { @@ -1511,6 +1565,14 @@ public abstract partial class TempFile : System.IDisposable public abstract void Dispose(); } + public static partial class TerminalResourceBuilderExtensions + { + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRETERMINAL001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the parameterless withTerminal dispatcher export.")] + public static ApplicationModel.IResourceBuilder WithTerminal(this ApplicationModel.IResourceBuilder builder, System.Action? configure = null) + where T : ApplicationModel.IResource { throw null; } + } + public static partial class VolumeNameGenerator { public static string Generate(ApplicationModel.IResourceBuilder builder, string suffix) @@ -1724,7 +1786,6 @@ public CommandLineArgsCallbackContext(System.Collections.Generic.IList a [AspireDto] public partial class CommandOptions { - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public System.Collections.Generic.IReadOnlyList Arguments { get { throw null; } set { } } public string? ConfirmationMessage { get { throw null; } set { } } @@ -1740,14 +1801,25 @@ public partial class CommandOptions [System.Obsolete("Use Arguments to describe invocation arguments and ExecuteCommandContext.Arguments to read them.")] public object? Parameter { get { throw null; } set { } } + public CommandProgressOptions? Progress { get { throw null; } set { } } + public System.Func? UpdateState { get { throw null; } set { } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public System.Func? ValidateArguments { get { throw null; } set { } } public ResourceCommandVisibility Visibility { get { throw null; } set { } } } + [AspireDto] + public sealed partial class CommandProgressOptions + { + public bool HideCancelButton { get { throw null; } set { } } + + public string? Message { get { throw null; } set { } } + + public string? Title { get { throw null; } set { } } + } + [AspireDto] public sealed partial class CommandResultData { @@ -1842,6 +1914,7 @@ public ContainerBuildOptionsCallbackAnnotation(System.Func healthReports) { throw null; } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static partial class DebugSupportExtensions + { + [AspireExportIgnore(Reason = "Debug support inspection is a local .NET helper and is not part of the ATS surface.")] + public static System.Threading.Tasks.Task CreateLaunchConfigurationAsync(this IResource resource, string mode, System.Threading.CancellationToken cancellationToken = default) { throw null; } + + [AspireExportIgnore(Reason = "Debug support inspection is a local .NET helper and is not part of the ATS surface.")] + public static bool SupportsDebugging(this IResource resource, Microsoft.Extensions.Configuration.IConfiguration configuration, out SupportsDebuggingAnnotation? supportsDebuggingAnnotation) { throw null; } + } + [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, LaunchProfileName = {LaunchProfileName}")] public sealed partial class DefaultLaunchProfileAnnotation : IResourceAnnotation { @@ -2602,6 +2695,25 @@ public sealed partial class ExecutableAnnotation : IResourceAnnotation public required string WorkingDirectory { get { throw null; } set { } } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public partial class ExecutableLaunchConfiguration + { + public ExecutableLaunchConfiguration(string type) { } + + [System.Text.Json.Serialization.JsonPropertyName("mode")] + public string Mode { get { throw null; } set { } } + + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get { throw null; } set { } } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static partial class ExecutableLaunchMode + { + public const string Debug = "Debug"; + public const string NoDebug = "NoDebug"; + } + [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, Name = {Name}, Command = {Command}")] public partial class ExecutableResource : Resource, IResourceWithEnvironment, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithWaitSupport, IResourceWithProbes, IComputeResource { @@ -2623,8 +2735,11 @@ public sealed partial class ExecuteCommandContext public required string ResourceName { get { throw null; } init { } } - [AspireExportIgnore(Reason = "IServiceProvider is not usable from polyglot command callbacks.")] - public required System.IServiceProvider ServiceProvider { get { throw null; } init { } } + [System.Obsolete("Use Services instead.")] + [AspireExportIgnore(Reason = "Obsolete alias for Services. The service provider is exposed to polyglot hosts via Services (services).")] + public System.IServiceProvider ServiceProvider { get { throw null; } init { } } + + public required System.IServiceProvider Services { get { throw null; } init { } } } [AspireDto] @@ -2722,6 +2837,21 @@ public sealed partial record HealthReportSnapshot(string Name, Microsoft.Extensi public System.DateTime? LastRunAt { get { throw null; } init { } } } + public sealed partial class HiddenAnnotation : IResourceAnnotation + { + public HiddenAnnotation(HiddenBehavior behavior) { } + + public HiddenBehavior Behavior { get { throw null; } } + + public System.Collections.Generic.IReadOnlyList SuccessfulExitCodes { get { throw null; } init { } } + } + + public enum HiddenBehavior + { + Always = 0, + OnCompletion = 1 + } + public partial record HostUrl(string Url) : IExpressionValue, IValueProvider, IManifestExpressionProvider { string IManifestExpressionProvider.ValueExpression { get { throw null; } } @@ -2748,6 +2878,8 @@ public partial class HttpCommandOptions : CommandOptions public sealed partial class HttpCommandRequestContext { + public InteractionInputCollection Arguments { get { throw null; } init { } } + public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } public required EndpointReference Endpoint { get { throw null; } init { } } @@ -2758,11 +2890,16 @@ public sealed partial class HttpCommandRequestContext public required string ResourceName { get { throw null; } init { } } - public required System.IServiceProvider ServiceProvider { get { throw null; } init { } } + [System.Obsolete("Use Services instead.")] + public System.IServiceProvider ServiceProvider { get { throw null; } init { } } + + public required System.IServiceProvider Services { get { throw null; } init { } } } public sealed partial class HttpCommandResultContext { + public InteractionInputCollection Arguments { get { throw null; } init { } } + public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } public required EndpointReference Endpoint { get { throw null; } init { } } @@ -2773,7 +2910,10 @@ public sealed partial class HttpCommandResultContext public required System.Net.Http.HttpResponseMessage Response { get { throw null; } init { } } - public required System.IServiceProvider ServiceProvider { get { throw null; } init { } } + [System.Obsolete("Use Services instead.")] + public System.IServiceProvider ServiceProvider { get { throw null; } init { } } + + public required System.IServiceProvider Services { get { throw null; } init { } } } public enum HttpCommandResultMode @@ -2803,24 +2943,35 @@ public HttpsCertificateConfigurationCallbackAnnotation(System.Func Arguments { get { throw null; } init { } } + [AspireExport] public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } + [AspireExport] public required ReferenceExpression CertificatePath { get { throw null; } init { } } + [AspireExport] + public required ReferenceExpression CertificateWithKeyPath { get { throw null; } init { } } + public required System.Collections.Generic.Dictionary EnvironmentVariables { get { throw null; } init { } } + [AspireExport] public required DistributedApplicationExecutionContext ExecutionContext { get { throw null; } init { } } + [AspireExport] public required ReferenceExpression KeyPath { get { throw null; } init { } } + [AspireExportIgnore(Reason = "Password is typed as IValueProvider, which has no ATS-exported representation and no guaranteed concrete type to expose it as. The certificate paths (exposed as ReferenceExpression) cover the common configuration scenarios.")] public required IValueProvider? Password { get { throw null; } init { } } + [AspireExport] public required ReferenceExpression PfxPath { get { throw null; } init { } } + [AspireExport] public required IResource Resource { get { throw null; } init { } } } @@ -2830,6 +2981,8 @@ public partial class HttpsCertificateExecutionConfigurationContext { public required ReferenceExpression CertificatePath { get { throw null; } init { } } + public required ReferenceExpression CertificateWithKeyPath { get { throw null; } init { } } + public required ReferenceExpression KeyPath { get { throw null; } init { } } public required ReferenceExpression PfxPath { get { throw null; } init { } } @@ -2840,6 +2993,10 @@ public partial class HttpsCertificateExecutionConfigurationData : IExecutionConf { public required System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get { throw null; } init { } } + public required ReferenceExpression CertificateWithKeyPathReference { get { throw null; } set { } } + + public bool IsCertificateWithKeyPathReferenced { get { throw null; } } + public bool IsKeyPathReferenced { get { throw null; } } public bool IsPfxPathReferenced { get { throw null; } } @@ -2852,6 +3009,7 @@ public partial class HttpsCertificateExecutionConfigurationData : IExecutionConf } [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECERTIFICATES001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport(ExposeProperties = true)] public sealed partial class HttpsEndpointUpdateCallbackContext { public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } @@ -2980,7 +3138,6 @@ public InitializeResourceEvent(IResource resource, Eventing.IDistributedApplicat public System.IServiceProvider Services { get { throw null; } } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public partial class InputGeneratorAnnotation : IResourceAnnotation { public InputGeneratorAnnotation(System.Func inputGenerator) { } @@ -3111,6 +3268,12 @@ public static partial class KnownHostNames public const string Localhost = "localhost"; } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public static partial class KnownLaunchConfigurationTypes + { + public const string Project = "project"; + } + public static partial class KnownNetworkIdentifiers { public static readonly NetworkIdentifier DefaultAspireContainerNetwork; @@ -3401,6 +3564,8 @@ public partial class ProcessCommandOptions : CommandOptions [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPROCESSCOMMAND001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public sealed partial class ProcessCommandResultContext { + public InteractionInputCollection Arguments { get { throw null; } init { } } + public required System.Threading.CancellationToken CancellationToken { get { throw null; } init { } } public required int ExitCode { get { throw null; } init { } } @@ -3413,7 +3578,10 @@ public sealed partial class ProcessCommandResultContext public required string ResourceName { get { throw null; } init { } } - public required System.IServiceProvider ServiceProvider { get { throw null; } init { } } + [System.Obsolete("Use Services instead.")] + public System.IServiceProvider ServiceProvider { get { throw null; } init { } } + + public required System.IServiceProvider Services { get { throw null; } init { } } public required int TotalOutputLineCount { get { throw null; } init { } } @@ -3440,6 +3608,37 @@ public ProcessCommandSpec(string executablePath) { } public string? WorkingDirectory { get { throw null; } init { } } } + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPROJECTS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, Arguments = {string.Join(\" \", Arguments)}")] + public sealed partial class ProjectLaunchArgsOverrideAnnotation : IResourceAnnotation + { + public ProjectLaunchArgsOverrideAnnotation(System.Collections.Generic.IReadOnlyList arguments, string? leadingResourceArgumentToRemove = null) { } + + public System.Collections.Generic.IReadOnlyList Arguments { get { throw null; } } + + public string? LeadingResourceArgumentToRemove { get { throw null; } } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ProjectLaunchConfiguration : ExecutableLaunchConfiguration + { + public ProjectLaunchConfiguration() : base(default!) { } + + [System.Text.Json.Serialization.JsonPropertyName("disable_launch_profile")] + public bool DisableLaunchProfile { get { throw null; } set { } } + + [System.Text.Json.Serialization.JsonPropertyName("launch_profile")] + public string LaunchProfile { get { throw null; } set { } } + + [System.Text.Json.Serialization.JsonPropertyName("project_path")] + public required string ProjectPath { get { throw null; } set { } } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPROJECTS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class ProjectLaunchDefaultsAnnotation : IResourceAnnotation + { + } + [System.Diagnostics.DebuggerDisplay("{DebuggerToString(),nq}")] public partial class ProjectResource : Resource, IResourceWithEnvironment, IResource, IResourceWithArgs, IResourceWithServiceDiscovery, IResourceWithEndpoints, IResourceWithWaitSupport, IResourceWithProbes, IComputeResource, IContainerFilesDestinationResource { @@ -3641,6 +3840,7 @@ public RequiredCommandAnnotation(string command) { } } [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMMAND001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport(ExposeProperties = true, ExposeMethods = true)] public sealed partial class RequiredCommandValidationContext { public RequiredCommandValidationContext(string resolvedPath, System.IServiceProvider services, System.Threading.CancellationToken cancellationToken) { } @@ -3650,9 +3850,14 @@ public RequiredCommandValidationContext(string resolvedPath, System.IServiceProv public string ResolvedPath { get { throw null; } } public System.IServiceProvider Services { get { throw null; } } + + public RequiredCommandValidationResult Failure(string validationMessage) { throw null; } + + public RequiredCommandValidationResult Success() { throw null; } } [System.Diagnostics.CodeAnalysis.Experimental("ASPIRECOMMAND001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + [AspireExport(ExposeProperties = true)] public sealed partial class RequiredCommandValidationResult { internal RequiredCommandValidationResult() { } @@ -3708,6 +3913,13 @@ protected Resource(string name) { } public sealed partial class ResourceAnnotationCollection : System.Collections.ObjectModel.Collection { + protected override void ClearItems() { } + + protected override void InsertItem(int index, IResourceAnnotation item) { } + + protected override void RemoveItem(int index) { } + + protected override void SetItem(int index, IResourceAnnotation item) { } } public enum ResourceAnnotationMutationBehavior @@ -3723,7 +3935,6 @@ public ResourceCommandAnnotation(string name, string displayName, System.Func updateState, System.Func> executeCommand, string? displayDescription, object? parameter, string? confirmationMessage, string? iconName, IconVariant? iconVariant, bool isHighlighted) { } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public System.Collections.Generic.IReadOnlyList Arguments { get { throw null; } } public string? ConfirmationMessage { get { throw null; } } @@ -3745,9 +3956,10 @@ public ResourceCommandAnnotation(string name, string displayName, System.Func UpdateState { get { throw null; } } - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREINTERACTION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public System.Func? ValidateArguments { get { throw null; } } public ResourceCommandVisibility Visibility { get { throw null; } } @@ -3915,12 +4127,12 @@ public static bool TryGetLastAnnotation(this IResource resource, out T? annot public static bool TryGetUrls(this IResource resource, out System.Collections.Generic.IEnumerable? urls) { throw null; } [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPIPELINES003", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] - [AspireExportIgnore(Reason = "ContainerBuildOptionsCallbackContext exposes IResource and IServiceProvider — .NET runtime types not usable from polyglot hosts.")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the async callback overload.")] public static IResourceBuilder WithContainerBuildOptions(this IResourceBuilder builder, System.Action callback) where T : IResource, IComputeResource { throw null; } [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPIPELINES003", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] - [AspireExportIgnore(Reason = "ContainerBuildOptionsCallbackContext exposes IResource and IServiceProvider — .NET runtime types not usable from polyglot hosts.")] + [AspireExport] public static IResourceBuilder WithContainerBuildOptions(this IResourceBuilder builder, System.Func callback) where T : IResource, IComputeResource { throw null; } } @@ -4003,7 +4215,13 @@ public sealed partial class ResourceNotificationServiceOptions [System.Diagnostics.DebuggerDisplay("{Value}", Name = "{Name}")] public sealed partial record ResourcePropertySnapshot(string Name, object? Value) { + public string? DisplayName { get { throw null; } init { } } + + public bool IsHighlighted { get { throw null; } init { } } + public bool IsSensitive { get { throw null; } init { } } + + public int? SortOrder { get { throw null; } init { } } } [AspireExport(ExposeProperties = true)] @@ -4097,14 +4315,38 @@ public ResourceUrlsCallbackContext(DistributedApplicationExecutionContext execut public EndpointReference? GetEndpoint(string name) { throw null; } } + [System.Diagnostics.DebuggerDisplay("Type = {GetType().Name,nq}, RequiredExtensionId = {LaunchConfigurationType,nq}")] + [System.Diagnostics.CodeAnalysis.Experimental("ASPIREEXTENSION001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class SupportsDebuggingAnnotation : IResourceAnnotation + { + internal SupportsDebuggingAnnotation() { } + + public string LaunchConfigurationType { get { throw null; } } + + public bool RewritesArgumentsForDebugging { get { throw null; } } + } + + [System.Diagnostics.CodeAnalysis.Experimental("ASPIRETERMINAL001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] + public sealed partial class TerminalOptions + { + public int Columns { get { throw null; } set { } } + + public int Rows { get { throw null; } set { } } + + public bool ShowTerminalHost { get { throw null; } set { } } + } + [AspireExport(ExposeProperties = true)] public sealed partial class UpdateCommandStateContext { [AspireExportIgnore(Reason = "CustomResourceSnapshot contains object-valued properties that are not statically representable in polyglot SDKs. Use ResourceSnapshotData for the curated ATS projection.")] public required CustomResourceSnapshot ResourceSnapshot { get { throw null; } init { } } - [AspireExportIgnore(Reason = "IServiceProvider is not usable from polyglot command state callbacks.")] - public required System.IServiceProvider ServiceProvider { get { throw null; } init { } } + [System.Obsolete("Use Services instead.")] + [AspireExportIgnore(Reason = "Obsolete alias for Services. The service provider is exposed to polyglot hosts via Services (services).")] + public System.IServiceProvider ServiceProvider { get { throw null; } init { } } + + public required System.IServiceProvider Services { get { throw null; } init { } } } public enum UrlDisplayLocation @@ -4406,7 +4648,6 @@ public static void TryAddLifecycleHook(this Microsoft.Extensions.DependencyIn namespace Aspire.Hosting.Pipelines { - [System.Diagnostics.CodeAnalysis.Experimental("ASPIREPIPELINES001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")] public enum CompletionState { InProgress = 0,