Merge release/13.2 into main#15151
Conversation
* Add better WithDebugSupport extensibility API (backport of microsoft#12711 to release/13.2) Reworks the debug support API so it's not tied to VS Code. Lets any IDE plug in their own debug configuration by extending a common base. Key changes: - New class hierarchy: DebugAdapterProperties -> VSCodeDebuggerPropertiesBase -> concrete classes - IDE detection via AspireIde class and ASPIRE_IDE env var - Filtered annotations with optional ideType parameter - Polymorphic JSON serialization for derived types - VS Code extension simplified to spread debugger_properties directly * Fix BackchannelLoggerProvider DI registration and clear launch configs on restart - Register BackchannelLoggerProvider as both ILoggerProvider and IBackchannelLoggerProvider so the logging pipeline can discover it. - Clear launch configurations annotation before re-annotating in CreateExecutableAsync to prevent stale configs (with null debugger_properties due to abstract deserialization) from accumulating on resource restart. * Make WithVSCodeDebugging internal, add public WithDebugging/WithBrowserDebugger - Made WithVSCodeDebugging internal across all packages (Hosting, JavaScript, Python) - Added public WithDebugging methods that delegate to internal WithVSCodeDebugging: - WithDebugging<T>(builder, projectPath) for ProjectResource - WithDebugging<T>(builder, scriptPath) for NodeAppResource - WithDebugging<T>(builder) for JavaScriptAppResource - WithDebugging<T>(builder) for PythonAppResource - WithBrowserDebugger<T>(builder, browser) remains public for JavaScriptAppResource - Python WithDebugging is no longer [Obsolete], now marked [Experimental] - All underlying types/infrastructure remain internal - Removed playground calls to now-internal methods * Make WithVSCodeCSharpDebuggerProperties, WithVSCodeNodeDebuggerProperties, WithVSCodePythonDebuggerProperties internal; split WithBrowserDebugger into public (no config) + internal (with config) * Fix JavaScript hosting: make WithVSCodeNodeDebuggerProperties internal, split WithBrowserDebugger into public/internal overloads * Make all debug infrastructure types internal, fix csproj IVT entries and shared file includes * Simplify debug infrastructure and add tests - Fix Path.GetDirectoryName null-bypass with safe fallback - Move JS debugger property defaults (SkipFiles, SourceMaps, AutoAttachChildProcesses) to field initializers - Fix empty Python interpreter path: fallback to 'python' with warning - Add 11 new tests across Hosting, JavaScript, and Python debug tests
…on (microsoft#14914) * Add DebugSessionOptions type and thread through RPC layer * Advertise CLI capabilities including pipelines in config info * Add extension context interception and --start-debug-session to pipeline commands * Support deploy/publish/do commands in AspireDebugSession * Add deploy, publish, and do commands to VS Code extension * Add DebugSessionOptions support and displayLines fallback in InteractionService * Add SimplePipelines playground project * Reduce noisy logging and validate single-file apphosts in ProjectLocator * Prompt for missing pipeline step in DoCommand via interaction service * Update extension README with deploy, publish, and do command documentation * Add clarifying comment on NoExtensionLaunch flag
* Auto-register Aspire MCP server in VS Code extension Register McpServerDefinitionProvider so the Aspire MCP server (aspire agent mcp) appears automatically in VS Code's MCP tools list for Aspire workspaces, eliminating the need for users to run 'aspire agent init' or manually configure .vscode/mcp.json. * Update extension/src/mcp/AspireMcpServerDefinitionProvider.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update extension/src/mcp/AspireMcpServerDefinitionProvider.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add a setting whether to register mcp (false by default) --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…microsoft#14483) * Make app provisioning wait for role assignments and private endpoints * Update code to use DeploymentPrerequisitesAnnotation * Add private endpoints to tests --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
* Complete polyglot exports for Aspire.Hosting.Redis * Update settings.json to remove sdkVersion Removed sdkVersion and cleared Aspire.Hosting.Redis version. * PR feedback
* Fix TypeScriptAppHost playground app Fixes microsoft#14927 * Fix ReferenceExpression to support handle-based construction in TypeScript SDK The generated TypeScript SDK calls `new ReferenceExpression(handle, client)` for server-returned properties like uriExpression and jdbcConnectionString, but the constructor was private and only accepted (format, valueProviders). This caused TS2673 compilation errors in all polyglot TypeScript apps. Changes: - Make constructor public with dual-mode support (expression + handle) - Add constructor overloads to enforce valid parameter pairing at compile time - Store _client field for forward compatibility with other handle-wrapping types - Update toJSON() to delegate to handle serialization in handle mode - Update verified snapshot to match Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Include TypeScriptAppHost .aspire/settings.json in source control Add a local .gitignore to override the global .aspire/ exclusion, so that integration packages are tracked for this playground app. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ourceWithConnectionString resources (microsoft#14953) * Fix TypeScript codegen: merge options interface params across overloads The RegisterOptionsInterface method used first-write-wins when the same method name appeared on multiple resource types. This caused parameter loss — e.g., WithDataVolumeOptions was missing isReadOnly because RedisInsightResource.WithDataVolume (name only) was registered before RedisResource.WithDataVolume (name + isReadOnly). Now merges all optional parameters across registrations by name, producing a union interface. Also regenerates base.ts (ReferenceExpression handle-mode constructor) across all polyglot playground apps. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add test for options interface parameter merging across overloads Adds WithDataVolume methods on both TestRedisResource (name + isReadOnly) and TestDatabaseResource (name only) to reproduce the codegen bug where first-write-wins caused parameters to be lost. The test verifies that the generated WithDataVolumeOptions interface contains the union of all parameters. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add ExposeProperties to all IResourceWithConnectionString resources and include ConnectionStringExpression - Add [AspireExport(ExposeProperties = true)] to 15 resource classes (Garnet, Valkey, Kafka, Milvus×2, MongoDB×2, MySql×2, Nats, Qdrant, RabbitMQ, Seq, SqlServer×2) - Remove [AspireExportIgnore] from ConnectionStringExpression on PostgreSQL and Oracle resources (4 files) to include connection strings in polyglot exports - Add [AspireExportIgnore] on Databases dictionaries (non-ATS types) for server resources - Regenerate TypeScript SDKs for all 14 affected integrations - Add connectionStringExpression.get() access in all validation apphost.ts files - All 14 apps pass TypeScript compilation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#14931) * refactor: use Sigstore attestation helper APIs for provenance checking Replace manual JSON parsing in SigstoreNpmProvenanceChecker with the new attestation APIs already available in Sigstore 0.3.0: - Remove ParseAttestation (~80 lines) and ParseProvenanceFromStatement (~20 lines) methods and NpmAttestationParseResult class - Add ExtractSlsaBundleJson to extract bundle JSON from npm response - Add ExtractProvenanceFromResult using VerificationResult.Statement (InTotoStatement) and VerifiedIdentity.Extensions (FulcioCertificateExtensions) - Use bundle.DsseEnvelope.Payload directly instead of manual base64 decode - Prefer certificate extensions (cryptographically bound) over SLSA predicate values for source repository and ref - Fix JsonArray safety: use pattern matching instead of AsArray() Add comprehensive adversarial/security tests (68 total): - Malformed JSON attacks (deeply nested, truncated, wrong types, null) - Attestation structure manipulation (swapped predicates, mixed arrays) - Provenance spoofing (homoglyph URLs, path traversal, null bytes) - Build type spoofing (query params, wrong domains, empty values) - URL parsing edge cases (subdomain attacks, non-absolute URIs) - WorkflowRefInfo parsing edge cases (path traversal in names) - Statement extraction edge cases (missing fields, empty predicates) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: remove non-Sigstore NpmProvenanceChecker codepath Delete NpmProvenanceChecker and its tests — production code only uses SigstoreNpmProvenanceChecker (registered in DI), so the non-Sigstore fallback was dead code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review: type-safe JSON handling and richer error reporting - ExtractSlsaBundleJson now returns 'out bool parseFailed' to distinguish invalid JSON (AttestationParseFailed) from missing SLSA provenance (SlsaProvenanceNotFound) - Add explicit JsonObject type checks when iterating attestation array elements so non-object values (strings, numbers, null) are safely skipped - Replace GetProperty/GetString with TryGetProperty + ValueKind checks in ExtractProvenanceFromResult to handle wrong-typed predicate values without throwing InvalidOperationException - Fix misleading comment about CertificateExtensionPolicy; the actual enforcement is CertificateIdentity.ForGitHubActions SAN/issuer matching - Fix deeply nested JSON test to use valid JSON structure - Add tests for non-object array elements, non-string predicateType, wrong-typed predicate values, and parseFailed assertions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Apply pattern matching suggestion for JsonArray count check Use property pattern matching (JsonArray { Count: >0 }) instead of separate is-check and Count comparison, as suggested by @DamianEdwards. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Mitch Denny <mitch@mitchdeny.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add AspireExport coverage for Orleans Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update src/Aspire.Hosting.Orleans/OrleansServiceExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/Aspire.Hosting.Orleans/OrleansServiceClientExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix XML documentation return tags in OrleansServiceExtensions * Address review feedback for polyglot-orleans Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Rename Orleans WithReference export IDs to match naming conventions Rename withSiloReference → withOrleansReference and withClientReference → withOrleansClientReference to follow the pattern used by other integrations (e.g., withServiceReference for IResourceWithServiceDiscovery). Update playground ValidationAppHost and regenerate TypeScript SDK. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Cleanup settings.json Removed sdkVersion and cleared Aspire.Hosting.Orleans version. * Regenerate Orleans playground after rebase on release/13.2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…soft#14958) The aspire init command now shows a language selection prompt when multiple languages are available (C#, TypeScript). The 12 failing deployment tests did not handle this new prompt, causing them to timeout waiting for 'Aspire initialization complete'. Adding --language csharp explicitly skips the language prompt, restoring the expected test flow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add notRequired parameter to PromptForSelectionsAsync Add a notRequired parameter (default false) to PromptForSelectionsAsync across the interface, all implementations, and test services. When true, the Spectre.Console MultiSelectionPrompt allows submitting without selecting any items. Enable notRequired at all three existing call sites (InitCommand and AgentInitCommand) since they all handle empty selections gracefully. * Rename TestConsoleInteractionService to TestInteractionService and consolidate duplicates - Renamed TestConsoleInteractionService to TestInteractionService across all test files - Enhanced shared implementation with response queue, call tracking, and cancellation support - Removed TestConsoleInteractionServiceWithPromptTracking from PublishCommandPromptingIntegrationTests (merged into shared impl) - Removed OrderTrackingInteractionService from NewCommandTests (replaced with shared impl + callback) - Removed private TestInteractionService stub from DotNetTemplateFactoryTests (uses shared impl) - Kept CancellationTrackingInteractionService as-is (decorator pattern, different purpose) * Code clean up * Rename notRequired parameter to optional in PromptForSelectionsAsync The double-negative naming pattern (notRequired: false meaning 'required') was confusing at call sites. Renamed to 'optional' for clarity across the interface, all implementations, and call sites.
…microsoft#14967) * Add TypeScript Express/React deployment E2E test Add TypeScriptExpressDeploymentTests that deploys the ts-starter template to Azure Container Apps. Also: - Export PublishWithContainerFiles via [AspireExport] for polyglot apphost usage - Update Express API template to serve static files from ./static directory when present (deploy mode) The deployment bundles the Vite frontend into the Express API container via publishWithContainerFiles, matching the pattern used by the Python FastAPI template. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add withExternalHttpEndpoints to ts-starter template The API endpoint needs to be marked as external so it gets exposed publicly when deployed (Docker Compose or ACA). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Rename ts-starter resource from 'api' to 'app' for consistency with Python template Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Simplify static file imports using import.meta.dirname Node 22 supports import.meta.dirname natively, removing the need for the fileURLToPath/dirname workaround. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add await to publishWithContainerFiles call in template Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update codegen snapshots for PublishWithContainerFiles export The [AspireExport] attribute on PublishWithContainerFiles causes the method and IContainerFilesDestinationResource type to appear in the TwoPassScanning codegen output for all languages. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix React template env vars to match resource name The apphost names the resource 'app', so the environment variables injected by Aspire are APP_HTTP/APP_HTTPS, not API_HTTP/API_HTTPS. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Write channel to settings.json during aspire new for CLI templates When aspire new resolves a version from an explicit channel (e.g. local, daily), persist the channel name in .aspire/settings.json so that subsequent aspire add commands use the same channel without prompting. Implicit channels (stable/nuget.org) are not written, keeping the default behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
* Fix Azure SQL Server private endpoints Added support for Azure SQL Server deployment scripts in private endpoint scenarios, enabling secure, automated database role assignments for managed identities. Deployment scripts need to be part of the vnet and need Azure Storage accounts to mount file shares. Introduced resource annotations and preparer classes to detect and configure ACI subnet and storage account infrastructure, with both automatic and explicit configuration options. Implemented subnet address allocation logic, updated Bicep modules and manifest files, and ensured scripts run in delegated subnets with proper outbound rules and Azure Files access. Added tests to verify all configuration combinations. Updated project references and dependencies. Fix microsoft#14421 * Add dependsOn for the private endpoints to the deploymentScript The deploymentScript can't run until the private endpoints are ready. * Add retries to the sql role assignment script * Remove all implicit resources if the SQL Server doesn't have a DefaultRoleAssignmentsAnnotation. This happens when ClearDefaultRoleAssignments is called on the sql server, which suppresses the deployment script. If the deployment script isn't needed, these resources aren't needed.
* Fail fast when CLI download fails in E2E tests Add WaitForSuccessPromptFailFast to Hex1bTestHelpers that watches for both OK and ERR prompts. When the CLI artifact download fails (e.g. HTTP 502), the test now throws immediately instead of waiting the full 5-minute timeout. Updated InstallAspireCliFromPullRequest, InstallAspireCliVersion, InstallAspireBundleFromPullRequest, and InstallAspireCliRelease to use the new fail-fast method. Fixes microsoft#14933 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix InstallAspireCliFromPullRequest to use WaitForSuccessPromptFailFast (microsoft#14935) * Initial plan * Update InstallAspireCliFromPullRequest to use WaitForSuccessPromptFailFast Co-authored-by: radical <1472+radical@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: radical <1472+radical@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: radical <1472+radical@users.noreply.github.com>
Also bump Azure.ResourceManager.Resources to the latest version - 1.11.2
* Chain aspire agent init from aspire init and aspire new on success After successful project creation via 'aspire init' or 'aspire new', prompt the user to configure AI agent environments. The prompt is skipped in non-interactive mode. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> # Conflicts: # src/Aspire.Cli/Resources/InitCommandStrings.Designer.cs # src/Aspire.Cli/Resources/InitCommandStrings.resx # src/Aspire.Cli/Resources/xlf/InitCommandStrings.cs.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.de.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.es.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.fr.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.it.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.ja.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.ko.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.pl.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.pt-BR.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.ru.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.tr.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.zh-Hans.xlf # src/Aspire.Cli/Resources/xlf/InitCommandStrings.zh-Hant.xlf * Set default test environment to non-interactive Unit tests should not prompt for interactive input. This prevents the agent init prompt from blocking tests that use ConsoleInteractionService. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Handle agent init prompt in E2E tests Add DeclineAgentInitPrompt() shared helper to Hex1bTestHelpers. Insert prompt handling in all CLI E2E and deployment E2E tests that use aspire new or aspire init. Also add RunAspireInit helper to DeploymentE2ETestHelpers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR feedback: consolidate agent init chaining logic - Extract shared PromptAndChainAsync method on AgentInitCommand, removing duplicate PromptAndRunAgentInitAsync from InitCommand and NewCommand - Remove unused ParseResult parameter from the chaining overload - PR description will be updated to reflect defaultValue: true (opt-out behavior, pressing Enter accepts agent init) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address round 2 feedback: move prompt to SharedCommandStrings, rename param - Move PromptRunAgentInit from InitCommandStrings/NewCommandStrings to SharedCommandStrings and hardcode inside PromptAndChainAsync - Remove promptString parameter from PromptAndChainAsync - Rename previousResult to previousResultExitCode for clarity Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Mitch Denny <mitch@mitchdeny.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…/call (microsoft#14837) * Update Aspire skill to use CLI commands, rework agent init, add aspire mcp tools/call ## Skill updates - Replace all MCP server tool references with CLI command equivalents - Use aspire start (not aspire run) for agents, --isolated for worktrees - Add aspire wait, aspire mcp tools, aspire mcp call to command table - Restore USE FOR/DO NOT USE FOR routing tags in frontmatter - Explicit rules: never use aspire run, restart via aspire start ## Agent init rework - Single flat prompt instead of 3 grouped prompts - Skill file pre-selected (Recommended), MCP server opt-in (last) - Playwright CLI shown as separate option - Deprecated config migrations applied silently - Categorization via McpInitPromptGroup (SkillFiles, Tools, AgentEnvironments) - Shows which environments were configured after applying - preSelected parameter added to PromptForSelectionsAsync ## New CLI commands - aspire mcp tools: list MCP tools from running resources via backchannel - aspire mcp call <resource> <tool> --input <json>: invoke resource MCP tools Fixes microsoft#14619 Fixes microsoft#14856 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix review issues: JSON input validation, extension backchannel comment, restore TryDequeue - McpCallCommand: Validate JSON input is an object before calling EnumerateObject() to avoid unhandled InvalidOperationException for array/primitive inputs. - ExtensionInteractionService: Add comment documenting that the extension backchannel protocol does not yet support preSelected. - TestInteractionService: Restore _responses.TryDequeue call to maintain queue consumption behavior for existing tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
…feature flag is disabled (microsoft#14997) * Initial plan * Hide staging channel from aspire update --self when feature flag is disabled When the stagingChannelEnabled feature flag is not set, the staging channel is now excluded from the channel selection prompt in `aspire update --self`. Previously, staging was always shown regardless of the feature flag, which caused failures when users selected it. Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com>
* Refactor DefaultAzureCredential usage Using the parameterless ctor of DefaultAzureCredential is not recommended. Instead try to detect when we are running in Azure and use Azure credentials. Fallback to using just development credentials when we can't detect we are in Azure. Users can always provide their own to override this behavior. * Update to latest Azure.Identity and use the correct ctor now that the parameterless ctor is obsolete. * Update README docs with the latest information.
* Enhance aspire sdk dump: multi-integration args, PackageName@Version support, and DTO field descriptions * Enhance SdkDumpCommand validation for package format and version, add tests for command behavior * Enhance `aspire sdk dump` (microsoft#15005) * Initial plan * Address PR review feedback: --format option, debug logging, test improvements, allAdditionalSources cleanup Co-authored-by: IEvangelist <7679720+IEvangelist@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: IEvangelist <7679720+IEvangelist@users.noreply.github.com> --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: IEvangelist <7679720+IEvangelist@users.noreply.github.com>
…crosoft#15017) * Hide available features in 'aspire config list' behind --available flag The list of available feature flags was scrolling the set configuration off the screen. Now 'aspire config list' shows a hint to use --available, and 'aspire config list --available' shows the full feature list. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR feedback: rename --available to --all, hoist header, add tests - Rename --available flag to --all (matches established CLI conventions) - Hoist shared empty line + header above the conditional to reduce duplication - Add tests for both config list paths (hint without --all, details with --all) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#15016) * Add per-OS custom GitHub runner support to test matrix Allow test projects to override GitHub Actions runners per OS via MSBuild properties (GithubActionsRunnerWindows/Linux/MacOS). The custom runners flow through metadata JSON → canonical matrix → GitHub expansion, falling back to defaults when unset. Also switch run-tests.yml OS detection from inputs.os string matching to runner.os, which works correctly with non-standard runner names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build cli with 8core * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Use 8-core Ubuntu runner for Aspire.Hosting.Tests in CI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix IDE2000: remove multiple blank lines Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Qdrant polyglot export coverage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine Qdrant polyglot export coverage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix comments * Fix Qdrant review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…persistence (microsoft#14988) - Move InstallAspireBundleFromPullRequest and SourceAspireBundleEnvironment to shared Hex1bTestHelpers for use by both CLI E2E and deployment tests - Update TS deployment test to install full bundle (needed for polyglot aspire add) - Restore channel persistence in aspire new for explicit channels Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix AspireExport coverage for hosting integrations Enable the AspireExport analyzer for Aspire.Hosting projects and resolve the diagnostics it reported across the affected integrations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update src/Directory.Build.targets Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com> * Limit AspireExport analyzer to integrations Exclude helper Aspire.Hosting projects from the shared analyzer wiring so AppHostAnalyzer only runs on the intended integration-style projects. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert "Limit AspireExport analyzer to integrations" This reverts commit 173298d. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Handle missing AppHost analyzer types Make AppHostAnalyzer skip model-name analysis when Aspire.Hosting model-name types are unavailable, and add a regression test covering projects without the Aspire.Hosting reference. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix polyglot DevTunnels validation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix ATS dump workflow failures Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix comments * Fix YARP polyglot export validation Refresh the YARP validation playground to use the exported helper surface and update code generation snapshots for the current exported APIs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
…#15118) * Add Azure Functions debugging support to VS Code extension Enable debugging Azure Functions projects in the Aspire VS Code extension by integrating with the Azure Functions extension API (startFuncProcess). When the Azure Functions VS Code extension is installed, the extension reports the 'azure-functions' capability. The hosting side uses a custom SupportsDebuggingAnnotation with type 'azure-functions' so DcpExecutor sends the launch configuration to the extension instead of using the default ProjectLaunchConfiguration. The extension then calls the AF extension's startFuncProcess API to launch func host start and attaches a coreclr debugger to the worker process. When the AF extension is not installed, the capability is not reported and the resource falls back to ExecutionType.Process (dotnet run). * Introduce generic run cleanup registry; replace killFuncProcess call sites Replace direct killFuncProcess calls in AspireDcpServer and AspireDebugSession with a generic cleanupRun(runId) abstraction backed by runCleanupRegistry.ts. azureFunctions.ts registers its own cleanup handler via registerRunCleanup early in createDebugSessionConfigurationCallback; killFuncProcess is now private. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add transient CI rerun workflow automation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add C# tests for transient CI rerun workflow Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Tighten transient rerun workflow coverage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove transient rerun zip fallback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Conflict resolutions: - kept both AspireEventSource additions and renumbered DevelopmentCertificateTrustCheck to event ids 45/46 to avoid duplicate EventSource ids with DcpServiceObjectPreparation 43/44 - kept KnownEndpointNames OTLP endpoint names in DashboardEventHandlers so the added endpoints match current endpoint lookup usage - kept the release-side DcpExecutor debugging flow so executable launch configurations are applied after endpoint allocation - combined main-side multi-resource dependency tests with release-side conditional ReferenceExpression tests - combined the shared Hex1b helper baseline with release-side agent-init/new-flow and bundle helper additions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 15151Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 15151" |
There was a problem hiding this comment.
Pull request overview
Backmerge of release/13.2 into main, carrying forward 13.2 servicing fixes and resolving merge conflicts, plus updates to TypeScript ATS transport behavior, VS Code extension capabilities/debugging, CI/test-matrix tooling, and multiple playground samples.
Changes:
- Update ATS TypeScript transport to support DTO writeback semantics for void callbacks and extend
ReferenceExpressionto support handle-serialization mode. - Update playground validation AppHosts/samples (new role-assignment APIs, new Azure Kusto/AppService validation hosts, Foundry samples, pipelines sample, etc.).
- Enhance VS Code extension with MCP server definition provider, new debugger types (node/browser/azure-functions), and CI/test runners with custom runner + os-split NuGet matrices.
Reviewed changes
Copilot reviewed 246 out of 1434 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.WebPubSub/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.WebPubSub/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.WebPubSub/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Storage/ValidationAppHost/apphost.ts | Update to new storage role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Storage/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Storage/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Storage/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Sql/ValidationAppHost/apphost.ts | Expand SQL validation coverage + storage dependency |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Sql/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Sql/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Sql/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Sql/ValidationAppHost/.aspire/settings.json | Add Azure Storage package for SQL host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.SignalR/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.SignalR/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.SignalR/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ServiceBus/ValidationAppHost/apphost.ts | Update to new Service Bus role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ServiceBus/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ServiceBus/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ServiceBus/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Search/ValidationAppHost/apphost.ts | Update to new Search role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Search/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Search/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Search/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Redis/ValidationAppHost/apphost.ts | Expand Redis validation scenarios/props |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Redis/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Redis/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Redis/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.PostgreSQL/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.PostgreSQL/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.PostgreSQL/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.OperationalInsights/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.OperationalInsights/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.OperationalInsights/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/tsconfig.json | New TS config for Kusto validation host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/package.json | Node/TS deps for Kusto validation host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/apphost.ts | New Kusto cluster emulator validation |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/apphost.run.json | Local run profile for Kusto validation |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/.modules/.codegen-hash | Codegen hash for Kusto modules |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/.aspire/settings.json | Aspire settings for Kusto validation |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.KeyVault/ValidationAppHost/apphost.ts | Update to new KeyVault role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.KeyVault/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.KeyVault/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.KeyVault/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Functions/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Functions/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.Functions/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.EventHubs/ValidationAppHost/apphost.ts | Update to new EventHubs role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.EventHubs/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.EventHubs/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.EventHubs/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CosmosDB/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CosmosDB/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CosmosDB/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ContainerRegistry/ValidationAppHost/apphost.ts | Expand ACR validation incl. env hookup + roles |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ContainerRegistry/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ContainerRegistry/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ContainerRegistry/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ContainerRegistry/ValidationAppHost/.aspire/settings.json | Add AppContainers package dependency |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CognitiveServices/ValidationAppHost/apphost.ts | Update to new CognitiveServices role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CognitiveServices/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CognitiveServices/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.CognitiveServices/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ApplicationInsights/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ApplicationInsights/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.ApplicationInsights/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/tsconfig.json | New TS config for AppService validation host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/package.json | Node/TS deps for AppService validation host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/apphost.ts | New AppService validation host |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/apphost.run.json | Local run profile for AppService validation |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/.modules/transport.ts | Transport comment/BOM + DTO writeback behavior |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/.modules/.codegen-hash | Codegen hash for AppService modules |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/.aspire/settings.json | Aspire settings for AppService validation |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/.aspire/settings.json | Package language settings for AppService sample |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppContainers/ValidationAppHost/apphost.ts | Use container app job API for executables |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppContainers/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppContainers/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppContainers/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppConfiguration/ValidationAppHost/apphost.ts | Update to new AppConfiguration role-assignment API |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppConfiguration/ValidationAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppConfiguration/ValidationAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppConfiguration/ValidationAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/TypeScriptAppHost/vite-frontend/vite.config.ts | Formatting/semicolons |
| playground/TypeScriptAppHost/vite-frontend/src/main.tsx | Formatting/semicolons |
| playground/TypeScriptAppHost/vite-frontend/src/App.tsx | Formatting/semicolons |
| playground/TypeScriptAppHost/package.json | Add tsx dev dependency |
| playground/TypeScriptAppHost/apphost.ts | Await env-var set |
| playground/TypeScriptAppHost/.modules/transport.ts | DTO writeback protocol for callbacks |
| playground/TypeScriptAppHost/.modules/base.ts | ReferenceExpression handle-mode serialization |
| playground/TypeScriptAppHost/.modules/.codegen-hash | Regenerated module hash |
| playground/TypeScriptAppHost/.gitignore | Keep .aspire settings but ignore DCP |
| playground/TypeScriptAppHost/.aspire/settings.json | Add packages list for TS apphost |
| playground/Stress/Stress.AppHost/TestResource.cs | Ignore ATS export for playground helpers |
| playground/Stress/Stress.AppHost/InteractionCommands.cs | Ignore ATS export for non-compatible helpers |
| playground/SimplePipelines/SimplePipelines.AppHost/appsettings.json | New logging settings |
| playground/SimplePipelines/SimplePipelines.AppHost/appsettings.Development.json | New dev logging settings |
| playground/SimplePipelines/SimplePipelines.AppHost/SimplePipelines.AppHost.csproj | New apphost project |
| playground/SimplePipelines/SimplePipelines.AppHost/Properties/launchSettings.json | New launch settings |
| playground/SimplePipelines/SimplePipelines.AppHost/AppHost.cs | New pipelines demo apphost |
| playground/FoundryEndToEnd/FoundryEndToEnd.WebStory/Program.cs | Namespace rename to FoundryEndToEnd |
| playground/FoundryEndToEnd/FoundryEndToEnd.WebStory/Components/_Imports.razor | Namespace rename + BOM cleanup |
| playground/FoundryEndToEnd/FoundryEndToEnd.WebStory/Components/App.razor | Styles filename rename + BOM cleanup |
| playground/FoundryEndToEnd/FoundryEndToEnd.AppHost/aspire-manifest.json | Update project path after rename |
| playground/FoundryEndToEnd/FoundryEndToEnd.AppHost/Program.cs | Switch to Aspire.Hosting.Foundry API |
| playground/FoundryEndToEnd/FoundryEndToEnd.AppHost/FoundryEndToEnd.AppHost.csproj | Update package and project references |
| playground/FoundryAgentEnterprise/frontend/vite.config.ts | New Vite frontend |
| playground/FoundryAgentEnterprise/frontend/tsconfig.node.json | New TS config |
| playground/FoundryAgentEnterprise/frontend/tsconfig.json | New TS project refs |
| playground/FoundryAgentEnterprise/frontend/tsconfig.app.json | New TS app config |
| playground/FoundryAgentEnterprise/frontend/src/main.tsx | New React bootstrap |
| playground/FoundryAgentEnterprise/frontend/src/index.css | New CSS baseline |
| playground/FoundryAgentEnterprise/frontend/package.json | Frontend dependencies/tooling |
| playground/FoundryAgentEnterprise/frontend/index.html | Frontend HTML shell |
| playground/FoundryAgentEnterprise/frontend/eslint.config.js | Frontend lint config |
| playground/FoundryAgentEnterprise/frontend/.dockerignore | Frontend docker ignore |
| playground/FoundryAgentEnterprise/app/telemetry.py | OpenTelemetry setup helper |
| playground/FoundryAgentEnterprise/app/pyproject.toml | Python deps + metadata |
| playground/FoundryAgentEnterprise/app/main.py | FastAPI app + static mount |
| playground/FoundryAgentEnterprise/app/.python-version | Pin Python version |
| playground/FoundryAgentEnterprise/app/.dockerignore | Python docker ignore |
| playground/FoundryAgentEnterprise/FoundryAgentEnterprise.AppHost/appsettings.json | Added run settings (file named as appsettings) |
| playground/FoundryAgentEnterprise/FoundryAgentEnterprise.AppHost/Program.cs | Foundry agent enterprise apphost |
| playground/FoundryAgentEnterprise/FoundryAgentEnterprise.AppHost/FoundryAgentEnterprise.AppHost.csproj | New apphost csproj |
| playground/FoundryAgentBasic/app/pyproject.toml | Python deps + metadata |
| playground/FoundryAgentBasic/app/.python-version | Pin Python version |
| playground/FoundryAgentBasic/app/.dockerignore | Python docker ignore |
| playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/appsettings.Production.json | Production settings for sample |
| playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/appsettings.Development.json | Development settings for sample |
| playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/Properties/launchSettings.json | New launch settings |
| playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/Program.cs | Foundry agent basic apphost |
| playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/FoundryAgentBasic.AppHost.csproj | New apphost csproj |
| playground/FoundryAgentBasic/.vscode/settings.json | Python env metadata |
| playground/Directory.Build.targets | Avoid leaking runtime props into analyzer build |
| playground/CustomResources/CustomResources.AppHost/TestResource.cs | Ignore ATS export for playground helpers |
| playground/CustomResources/CustomResources.AppHost/TalkingClockResource.cs | Ignore ATS export for playground helpers |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/vnet.module.bicep | Add SQL ACI subnet + outputs |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/sql.module.bicep | Add SQL server + DB bicep |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/sql-store.module.bicep | Add storage account for SQL scripts |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/sql-nsg.module.bicep | Add SQL subnet NSG |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/sql-admin-identity.module.bicep | Resolve SQL admin identity |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/sql-admin-identity-roles-sql-store.module.bicep | Assign storage role to identity |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/privatelink-file-core-windows-net.module.bicep | Add private DNS zone for file |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/privatelink-database-windows-net.module.bicep | Add private DNS zone for SQL |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/private-endpoints-sql-pe.module.bicep | Add SQL private endpoint |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/private-endpoints-files-pe.module.bicep | Add storage file private endpoint |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/api-containerapp.module.bicep | Inject SQL connection env vars |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/Program.cs | Add Azure SQL + DB reference |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/AzureVirtualNetworkEndToEnd.AppHost.csproj | Add Azure SQL hosting package |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.ApiService/Program.cs | Add SQL endpoint + client wiring |
| playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.ApiService/AzureVirtualNetworkEndToEnd.ApiService.csproj | Add SqlClient component package |
| playground/AzureKusto/AzureKusto.AppHost/AzureKustoReadWriteDatabaseResourceBuilderExtensions.cs | Ignore ATS export for control command helper |
| playground/AzureFunctionsEndToEnd/AzureFunctionsEndToEnd.Functions/AzureFunctionsEndToEnd.Functions.csproj | Skip unstable emulators on macOS |
| playground/AzureFunctionsEndToEnd/AzureFunctionsEndToEnd.AppHost/AzureFunctionsEndToEnd.AppHost.csproj | Skip unstable emulators on macOS |
| playground/AspireWithMaui/AspireWithMaui.slnx | Update Foundry project references |
| playground/AspireWithJavaScript/AspireJavaScript.Vue/vite.config.ts | Formatting/semicolons |
| playground/AspireWithJavaScript/AspireJavaScript.Vue/src/main.ts | Formatting/semicolons |
| playground/AspireWithJavaScript/AspireJavaScript.Vite/vite.config.ts | Formatting/semicolons |
| playground/AspireWithJavaScript/AspireJavaScript.Vite/src/main.tsx | Formatting/semicolons |
| playground/AspireWithJavaScript/AspireJavaScript.React/webpack.config.js | Enable source maps |
| playground/AspireWithJavaScript/AspireJavaScript.NodeApp/app.js | Adjust 404 handler |
| playground/AspireWithJavaScript/AspireJavaScript.MinimalApi/Properties/launchSettings.json | Remove swagger launchUrl |
| playground/AspireWithJavaScript/AspireJavaScript.MinimalApi/AppHost.cs | Remove Swagger/OpenAPI setup |
| playground/AspireWithJavaScript/AspireJavaScript.AppHost/AppHost.cs | Add browser debugger + pragmas |
| playground/AspireWithJavaScript/.vscode/settings.json | Configure dashboard browser |
| extension/src/views/AspireStatusBarProvider.ts | Remove status bar provider implementation |
| extension/src/utils/settings.ts | Add setting helper getters |
| extension/src/utils/cliPath.ts | Reduce logging noise in CLI resolution |
| extension/src/types/configInfo.ts | Add Capabilities to config info |
| extension/src/test/rpc/interactionServiceTests.test.ts | Update InteractionService tests for debug output/terminal fallback |
| extension/src/server/rpcClient.ts | Pass terminal factory to InteractionService |
| extension/src/mcp/AspireMcpServerDefinitionProvider.ts | Provide MCP server definition (stdio) |
| extension/src/loc/strings.ts | Add tooltip strings; remove status bar strings |
| extension/src/debugger/runCleanupRegistry.ts | Add run-scoped cleanup registry |
| extension/src/debugger/languages/node.ts | Add Node debugger extension |
| extension/src/debugger/languages/cli.ts | Reduce logging noise in CLI spawn |
| extension/src/debugger/languages/browser.ts | Add browser debugger extension |
| extension/src/debugger/debuggerExtensions.ts | Register new debugger extensions + add isApphost support |
| extension/src/debugger/adapterTracker.ts | Handle apphost restart suppression |
| extension/src/dcp/types.ts | Add node/browser/azure-functions launch config types |
| extension/src/commands/publish.ts | Route publish via editor command provider |
| extension/src/commands/do.ts | Add aspire do command support |
| extension/src/commands/deploy.ts | Route deploy via editor command provider |
| extension/src/capabilities.ts | Report node/browser/azure-functions capabilities |
| extension/schemas/aspire-settings.schema.json | Remove deprecated schema settings |
| extension/schemas/aspire-global-settings.schema.json | Remove deprecated schema settings |
| extension/README.md | Document command/do in launch.json |
| eng/scripts/split-test-projects-for-ci.ps1 | Exclude outerloop/quarantined in listing |
| eng/scripts/split-test-matrix-by-deps.ps1 | Split nuget matrix by OS |
| eng/scripts/generate-specialized-test-projects-list.sh | Improve OuterloopTest attribute matching |
| eng/scripts/expand-test-matrix-github.ps1 | Support per-OS custom runners |
| eng/scripts/build-test-matrix.ps1 | Pass through runners metadata |
| eng/Versions.props | Bump DCP versions to 0.22.9 |
| eng/Version.Details.xml | Bump DCP dependency metadata + SHAs |
| eng/Testing.targets | Document custom runner properties |
| eng/Testing.props | Conditional macOS PR test gating |
| eng/TestEnumerationRunsheetBuilder/TestEnumerationRunsheetBuilder.targets | Emit runners JSON metadata |
| eng/Signing.props | Add signing for get-aspire-cli.ps1 |
| eng/Publishing.props | Publish CLI install scripts + checksums |
| docs/using-latest-daily.md | Fix prompt formatting |
| docs/specs/polyglot-apphost-testing.md | Update command usage to aspire start |
| docs/ci/auto-rerun-transient-ci-failures.md | New workflow behavior contract doc |
| docs/azure.md | New Azure integration notes |
| Directory.Packages.props | Update/add Azure + Hex1b + Identity versions |
| Aspire.slnx | Update Foundry refs + add new playground/tests projects |
| AGENTS.md | Alignment guidance for workflow matcher + OuterloopTest usage |
| .vscode/mcp.json | Update Hex1b MCP server version |
| .github/workflows/update-ai-foundry-models.yml | Rename + new Foundry tooling paths |
| .github/workflows/specialized-test-runner.yml | Add CLI archive build dependency |
| .github/workflows/polyglot-validation/Dockerfile.typescript | Add telemetry opt-out + TS playground tests |
| .github/workflows/polyglot-validation/Dockerfile.rust | Telemetry opt-out + --nologo |
| .github/workflows/polyglot-validation/Dockerfile.python | Telemetry opt-out + --nologo |
| .github/workflows/polyglot-validation/Dockerfile.java | Telemetry opt-out + --nologo |
| .github/workflows/polyglot-validation/Dockerfile.go | Telemetry opt-out + --nologo |
| .github/workflows/generate-ats-diffs.yml | Use sdk dump --format ci + set repo root env |
| .dockerignore | New repo-level docker ignore |
Files not reviewed (3)
- playground/TypeScriptAppHost/package-lock.json: Language not supported
- playground/polyglot/TypeScript/Aspire.Hosting.Azure.AppService/ValidationAppHost/package-lock.json: Language not supported
- playground/polyglot/TypeScript/Aspire.Hosting.Azure.Kusto/ValidationAppHost/package-lock.json: Language not supported
| "$schema": "https://json.schemastore.org/launchsettings.json", | ||
| "profiles": { | ||
| "https": { | ||
| "commandName": "Project", | ||
| "dotnetRunMessages": true, | ||
| "launchBrowser": true, | ||
| "applicationUrl": "https://foundryagententerprise.dev.localhost:17107;http://foundryagententerprise.dev.localhost:15087", | ||
| "environmentVariables": { | ||
| "ASPNETCORE_ENVIRONMENT": "Development", | ||
| "DOTNET_ENVIRONMENT": "Development", | ||
| "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21185", | ||
| "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23160", | ||
| "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22164" | ||
| } | ||
| }, | ||
| "http": { | ||
| "commandName": "Project", | ||
| "dotnetRunMessages": true, | ||
| "launchBrowser": true, | ||
| "applicationUrl": "http://foundryagententerprise.dev.localhost:15087", | ||
| "environmentVariables": { | ||
| "ASPNETCORE_ENVIRONMENT": "Development", | ||
| "DOTNET_ENVIRONMENT": "Development", | ||
| "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19052", | ||
| "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18189", | ||
| "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20220" | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
This file is named appsettings.json but contains launchSettings.json schema and profiles. .NET will treat it as configuration (and it won’t be applied as launch settings), which is likely unintended. Move this content to Properties/launchSettings.json, and keep appsettings.json for app configuration.
| "$schema": "https://json.schemastore.org/launchsettings.json", | |
| "profiles": { | |
| "https": { | |
| "commandName": "Project", | |
| "dotnetRunMessages": true, | |
| "launchBrowser": true, | |
| "applicationUrl": "https://foundryagententerprise.dev.localhost:17107;http://foundryagententerprise.dev.localhost:15087", | |
| "environmentVariables": { | |
| "ASPNETCORE_ENVIRONMENT": "Development", | |
| "DOTNET_ENVIRONMENT": "Development", | |
| "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21185", | |
| "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23160", | |
| "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22164" | |
| } | |
| }, | |
| "http": { | |
| "commandName": "Project", | |
| "dotnetRunMessages": true, | |
| "launchBrowser": true, | |
| "applicationUrl": "http://foundryagententerprise.dev.localhost:15087", | |
| "environmentVariables": { | |
| "ASPNETCORE_ENVIRONMENT": "Development", | |
| "DOTNET_ENVIRONMENT": "Development", | |
| "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19052", | |
| "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18189", | |
| "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20220" | |
| } | |
| } | |
| } |
| if (handlers) { | ||
| for (const handler of handlers) { | ||
| handler(); | ||
| } | ||
| runCleanupHandlers.delete(runId); |
There was a problem hiding this comment.
If any cleanup handler throws, later handlers won’t run and the runId entry won’t be removed (potential leak + incomplete cleanup). Consider wrapping each handler call in try/catch and ensuring the registry entry is deleted in a finally block so cleanup remains best-effort and deterministic.
| if (handlers) { | |
| for (const handler of handlers) { | |
| handler(); | |
| } | |
| runCleanupHandlers.delete(runId); | |
| if (!handlers) { | |
| return; | |
| } | |
| // Remove the handlers entry before invoking them so the registry is cleaned | |
| // up even if any individual handler throws. | |
| runCleanupHandlers.delete(runId); | |
| for (const handler of handlers) { | |
| try { | |
| handler(); | |
| } catch (error) { | |
| // Swallow errors from individual cleanup handlers to allow the rest | |
| // of the handlers to run. | |
| // eslint-disable-next-line no-console | |
| console.error('Error during run cleanup for runId:', runId, error); | |
| } |
| export const browserDebuggerExtension: ResourceDebuggerExtension = { | ||
| resourceType: 'browser', | ||
| debugAdapter: 'pwa-msedge', | ||
| extensionId: null, // built-in to VS Code via js-debug |
There was a problem hiding this comment.
The extension registers a debugger extension/tracker under debugAdapter: 'pwa-msedge', but the actual launched debug session type is set dynamically via debugConfiguration.type = pwa-${browser}``. If launchConfig.browser is not `msedge`, the debug session will use a different adapter (e.g., `pwa-chrome`) and any adapter-specific wiring (like tracker factories) won’t apply. Either constrain `browser` to `msedge` here, or update the surrounding infrastructure to register trackers/handlers for all supported `pwa-*` adapters you might emit.
| // Map browser name to VS Code js-debug adapter type (pwa- prefix required) | ||
| const browser = launchConfig.browser || 'msedge'; | ||
| debugConfiguration.type = `pwa-${browser}`; |
There was a problem hiding this comment.
The extension registers a debugger extension/tracker under debugAdapter: 'pwa-msedge', but the actual launched debug session type is set dynamically via debugConfiguration.type = pwa-${browser}``. If launchConfig.browser is not `msedge`, the debug session will use a different adapter (e.g., `pwa-chrome`) and any adapter-specific wiring (like tracker factories) won’t apply. Either constrain `browser` to `msedge` here, or update the surrounding infrastructure to register trackers/handlers for all supported `pwa-*` adapters you might emit.
| // Map browser name to VS Code js-debug adapter type (pwa- prefix required) | |
| const browser = launchConfig.browser || 'msedge'; | |
| debugConfiguration.type = `pwa-${browser}`; | |
| // Use VS Code js-debug adapter type matching the registered debugAdapter | |
| debugConfiguration.type = 'pwa-msedge'; |
| // Re-evaluate when workspace folders change | ||
| this._workspaceFolderChangeDisposable = vscode.workspace.onDidChangeWorkspaceFolders(() => { | ||
| this.refresh(); | ||
| }); |
There was a problem hiding this comment.
The provider never calls refresh() initially, so _cliAvailable/_shouldProvide remain at defaults and provideMcpServerDefinitions will return [] until a configuration/workspace-folders change occurs. To avoid the MCP server definition never appearing in a stable workspace session, trigger an initial refresh (e.g., void this.refresh() in the constructor, or ensure activation code calls await provider.refresh() right after construction).
| }); | |
| }); | |
| // Perform an initial evaluation so MCP server definitions are available | |
| // even if no configuration or workspace folder changes occur. | |
| void this.refresh(); |
| import logging | ||
| import opentelemetry._logs as otel_logs | ||
| import opentelemetry.exporter.otlp.proto.grpc._log_exporter as log_exporter | ||
| import opentelemetry.exporter.otlp.proto.grpc.metric_exporter as metric_exporter | ||
| import opentelemetry.exporter.otlp.proto.grpc.trace_exporter as trace_exporter | ||
| import opentelemetry.metrics as otel_metrics | ||
| import opentelemetry.sdk._logs as otel_sdk_logs | ||
| import opentelemetry.sdk._logs.export as otel_logs_export | ||
| import opentelemetry.sdk.metrics as otel_sdk_metrics | ||
| import opentelemetry.sdk.metrics.export as otel_metrics_export | ||
| import opentelemetry.sdk.trace as otel_sdk_trace | ||
| import opentelemetry.sdk.trace.export as otel_trace_export | ||
| import opentelemetry.trace as otel_trace |
There was a problem hiding this comment.
This uses multiple underscore-prefixed OpenTelemetry modules (e.g., opentelemetry._logs, opentelemetry.sdk._logs, _log_exporter), which are typically internal/unstable APIs and may break across package updates. If possible, switch to the public/stable modules for logs/exporters (or gate this behind pinned versions) to reduce maintenance risk.
| ## CLI Primitives | ||
|
|
||
| ### `aspire run --detach` | ||
| ### `aspire start` |
There was a problem hiding this comment.
Within the same section, examples use both --apphost and --project for aspire start. This inconsistency makes it unclear which flag is correct. Standardize the examples to the intended CLI contract (and, if both are supported, call that out explicitly).
|
|
||
| ```bash | ||
| aspire run --detach --project ./MyApp.AppHost/MyApp.AppHost.csproj | ||
| aspire start --apphost ./MyApp.AppHost/MyApp.AppHost.csproj |
There was a problem hiding this comment.
Within the same section, examples use both --apphost and --project for aspire start. This inconsistency makes it unclear which flag is correct. Standardize the examples to the intended CLI contract (and, if both are supported, call that out explicitly).
| aspire start --apphost ./MyApp.AppHost/MyApp.AppHost.csproj | |
| aspire start --project ./MyApp.AppHost/MyApp.AppHost.csproj |
|
|
||
| ```bash | ||
| aspire run --detach --format json --project ./MyApp.AppHost/MyApp.AppHost.csproj | ||
| aspire start --format json --project ./MyApp.AppHost/MyApp.AppHost.csproj |
There was a problem hiding this comment.
Within the same section, examples use both --apphost and --project for aspire start. This inconsistency makes it unclear which flag is correct. Standardize the examples to the intended CLI contract (and, if both are supported, call that out explicitly).
| aspire start --format json --project ./MyApp.AppHost/MyApp.AppHost.csproj | |
| aspire start --format json --apphost ./MyApp.AppHost/MyApp.AppHost.csproj |
| async refresh(): Promise<void> { | ||
| const [cliResult, shouldProvide] = await Promise.all([ | ||
| resolveCliPath(), | ||
| checkShouldProvideMcpServer(), | ||
| ]); |
There was a problem hiding this comment.
New MCP server-definition logic (CLI path resolution + setting/workspace gating + change detection) is introduced here but there’s no corresponding unit test coverage shown. Adding tests for refresh() (state transitions, onDidChange firing, and provideMcpServerDefinitions gating) would help prevent regressions since this is activation/UX-critical behavior.
|
Conflict resolution: Kept both event additions and renumbered the release-side trust-check events to avoid duplicate [Event(43, Level = EventLevel.Informational, Message = "DCP Service object preparation starting...")]
public void DcpServiceObjectPreparationStart() { ... }
[Event(44, Level = EventLevel.Informational, Message = "DCP Service object preparation completed")]
public void DcpServiceObjectPreparationStop() { ... }
[Event(45, Level = EventLevel.Informational, Message = "Development certificate trust check is starting...")]
public void DevelopmentCertificateTrustCheckStart() { ... }
[Event(46, Level = EventLevel.Informational, Message = "Development certificate trust check completed")]
public void DevelopmentCertificateTrustCheckStop() { ... }Main already used |
|
Conflict resolution: Kept the centralized endpoint naming from main so the OTLP annotations match current lookup usage. dashboardResource.Annotations.Add(new EndpointAnnotation(
ProtocolType.Tcp,
name: KnownEndpointNames.OtlpGrpcEndpointName,
uriScheme: address.Scheme,
port: address.Port,
isProxied: true,
transport: "http2")
{
TargetHost = address.Host
});
dashboardResource.Annotations.Add(new EndpointAnnotation(
ProtocolType.Tcp,
name: KnownEndpointNames.OtlpHttpEndpointName,
uriScheme: address.Scheme,
port: address.Port,
isProxied: true)
{
TargetHost = address.Host
});This avoids annotating under one name and resolving under another. |
|
Conflict resolution: Took the release-side executable debug flow here: mark the executable as IDE-launched during prepare, and defer launch configuration annotation until after endpoint allocation. if (executable.SupportsDebugging(_configuration, out _))
{
// Just mark as IDE execution here - the actual launch configuration callback
// will be invoked in CreateExecutableAsync after endpoints are allocated.
exe.Spec.ExecutionType = ExecutionType.IDE;
exe.Spec.FallbackExecutionTypes = [ExecutionType.Process];
}That preserves the newer 13.2 JS / Azure Functions debugging behavior. |
|
Conflict resolution: Resolved code:
Kept both test additions because they cover different dependency-discovery paths. #region Multi-Resource GetDependenciesAsync Tests
...
[Fact]
public async Task ConditionalReferenceExpressionIncludesBothBranchDependencies()Main added multi-resource dependency coverage; release added conditional |
|
Conflict resolution: Resolved code:
Combined the shared-helper baseline with the 13.2 CLI E2E helper additions instead of choosing one side. internal static Hex1bTerminalInputSequenceBuilder DeclineAgentInitPrompt(
this Hex1bTerminalInputSequenceBuilder builder,
TimeSpan? timeout = null)
internal static Hex1bTerminalInputSequenceBuilder DeclineAgentInitPrompt(
this Hex1bTerminalInputSequenceBuilder builder,
SequenceCounter counter,
TimeSpan? timeout = null)This keeps the newer |
As long as there's no concern with the event IDs changing between 13.2 and 13.3. If there's the possibility of an issue changing the ID after it's been used in a release we might want to consider bumping the IDs from main instead. |
@danegsta who can answer this? Should this merge wait till we figure that out? |
|
We want stable numbers. release/13.2 has this: [Event(43, Level = EventLevel.Informational, Message = "Development certificate trust check is starting...")]
public void DevelopmentCertificateTrustCheckStart()
{
if (IsEnabled())
{
WriteEvent(43);
}
}
[Event(44, Level = EventLevel.Informational, Message = "Development certificate trust check completed")]
public void DevelopmentCertificateTrustCheckStop()
{
if (IsEnabled())
{
WriteEvent(44);
}
}The merge to main should have this: [Event(43, Level = EventLevel.Informational, Message = "Development certificate trust check is starting...")]
public void DevelopmentCertificateTrustCheckStart()
{
if (IsEnabled())
{
WriteEvent(43);
}
}
[Event(44, Level = EventLevel.Informational, Message = "Development certificate trust check completed")]
public void DevelopmentCertificateTrustCheckStop()
{
if (IsEnabled())
{
WriteEvent(44);
}
}
[Event(45, Level = EventLevel.Informational, Message = "DCP Service object preparation starting...")]
public void DcpServiceObjectPreparationStart()
{
if (IsEnabled())
{
WriteEvent(45);
}
}
[Event(46, Level = EventLevel.Informational, Message = "DCP Service object preparation completed")]
public void DcpServiceObjectPreparationStop()
{
if (IsEnabled())
{
WriteEvent(46);
}
}Update the PR to main have this fix and then it's fine. |
|
@copilot address #15151 (comment) |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Fixed — I updated
I also rebuilt |
Description
Backmerge
origin/release/13.2intomain.This carries the latest 13.2 servicing fixes forward and preserves the release-side behavior in the handful of places where the merge needed manual intervention.
Non-trivial merge conflicts resolved in this backmerge:
src/Aspire.Hosting/AspireEventSource.cs: kept both additions and renumberedDevelopmentCertificateTrustCheck*to event ids45/46so they do not collide withDcpServiceObjectPreparation*on43/44.src/Aspire.Hosting/Dashboard/DashboardEventHandlers.cs: keptKnownEndpointNames.OtlpGrpcEndpointName/KnownEndpointNames.OtlpHttpEndpointNameso the dashboard endpoint annotations continue to match the current lookup call sites.src/Aspire.Hosting/Dcp/DcpExecutor.cs: kept the release-side debugging flow where executable launch configurations are applied after endpoint allocation, which preserves the JS/Azure Functions debugging behavior from the 13.2 changes.tests/Aspire.Hosting.Tests/ResourceDependencyTests.cs: combined the main-side multi-resource dependency coverage with the release-side conditionalReferenceExpressioncoverage.tests/Shared/Hex1bTestHelpers.cs: combined the shared-helper baseline with the 13.2aspire init/aspire newagent-init flow and newer CLI E2E bundle helpers.Original PRs involved in those areas: #14557, #14666, #14478, #14919, #14629, #14992, #15091, #15118.
CC @karolz-ms @danegsta @adamint @JamesNK @mitchdenny @eerhardt @radical @sebastienros
Validation:
dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj -- --filter-class "*.ResourceDependencyTests" --filter-class "*.DashboardLifecycleHookTests" --filter-class "*.DcpExecutorTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"dotnet test tests/Aspire.Cli.Tests/Aspire.Cli.Tests.csproj -- --filter-class "*.UpdateCommandTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"dotnet build tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj -nologoFixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?aspire.devissue: