Skip to content

Flow main to feature/watch-prototype#14959

Merged
tmat merged 280 commits intodotnet:feature/watch-prototypefrom
tmat:main-to-feature-watch
Mar 5, 2026
Merged

Flow main to feature/watch-prototype#14959
tmat merged 280 commits intodotnet:feature/watch-prototypefrom
tmat:main-to-feature-watch

Conversation

@tmat
Copy link
Member

@tmat tmat commented Mar 5, 2026

No description provided.

github-actions bot and others added 30 commits February 3, 2026 14:16
…and_SkipsBuild_WhenExtensionDevKitCapabilityIsAvailable (dotnet#14322)

* [automated] Disable Aspire.Cli.Tests.Commands.RunCommandTests.RunCommand_SkipsBuild_WhenExtensionDevKitCapabilityIsAvailable

* Update tests/Aspire.Cli.Tests/Commands/RunCommandTests.cs

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: David Fowler <davidfowl@gmail.com>
Co-authored-by: sebastienros <sebastienros@users.noreply.github.com>
…net#14278)

* Refactor endpoint resolution logic so that `EndpointReferenceExpression.GetValueAsync()` can be context aware.

To make this work, DCP now always allocates a `DefaultAspireContainerNetwork` endpoint when a container is created alongside the existing `LocalhostNetwork` endpoint.

* PR Review + fix broken test.

* Fix `WithEnvironmentTests.EnvironmentVariableExpressions()`

* - Fix Broken Tests
- Add some DebuggerDisplay attributes to `ValueSnapshot`, and `NetworkEndpointSnapshotList` to make debugging easier
- Explcitly use `*.dev.internal` alias for container networks
- Don't allocate endpoints on custom networks

* Fix test changed by previous commit removing support for custom networks.

* One more failing test

* Remove redundant comment.
* Update dependencies from https://github.com/microsoft/dcp build 0.22.3
On relative base path root
Microsoft.DeveloperControlPlane.darwin-amd64 , Microsoft.DeveloperControlPlane.darwin-arm64 , Microsoft.DeveloperControlPlane.linux-amd64 , Microsoft.DeveloperControlPlane.linux-arm64 , Microsoft.DeveloperControlPlane.linux-musl-amd64 , Microsoft.DeveloperControlPlane.windows-amd64 , Microsoft.DeveloperControlPlane.windows-arm64 From Version 0.22.2 -> To Version 0.22.3

* Quarantine the tunnel test

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Karol Zadora-Przylecki <karolz@microsoft.com>
* Update MCP error to suggest 'aspire run --detach'

* Add test assertions for --detach in MCP error message

* Show help when aspire is invoked without arguments

* Return InvalidCommand exit code for consistency with other parent commands

* Add tests for parent command exit codes to prevent regression
Co-authored-by: Shilpi Rachna <shilpir@microsoft.com>
…n to public method (dotnet#14319)

* Initial plan

* Change GetHostAddressExpression implementations to public methods

Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com>

* Add Experimental attribute to GetHostAddressExpression methods

Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com>
…dotnet#14326)

* Add E2E deployment test for React + ASP.NET Core to Azure App Service

This adds a new deployment test that:
- Creates a project using the Starter App (ASP.NET Core/React) template
- Deploys to Azure App Service (instead of Container Apps)
- Verifies the deployed endpoints are accessible

The test follows the established patterns from AcaStarterDeploymentTests
and PythonFastApiDeploymentTests.

* Fix prompt sequence for React template

The React template (aspire-ts-cs-starter) has different prompts than the
Blazor starter template:
- Does NOT have a 'test project' prompt
- Output path prompt includes the default path

Updated to match the working JsReactTemplateTests pattern.

* Increase deployment timeouts to 30 min and fix cleanup workflow

- Increase pipeline wait timeout from 10-20 min to 30 min across all deployment tests
- Increase overall test timeout to 40 min to accommodate longer deployments
- Fix cleanup workflow to target both e2e-* (current) and rg-aspire-* (legacy) prefixes

* Add endpoint verification retry logic to deployment tests

Each endpoint is now retried up to 18 times (10 second intervals) for a total
of ~3 minutes before failing. This handles cases where deployed apps need
time to become responsive after deployment completes.

* Fix deployment test command to link to actual workflow run

Move the 'starting' comment from deployment-test-command.yml to
deployment-tests.yml where it has direct access to github.run_id.
The notify-start job only runs when pr_number is provided, matching
the existing post_pr_comment job pattern.

* Add Azure quota requirements to deployment test README

Document the required Azure subscription quotas for running deployment
E2E tests, including Container Apps managed environments (150+) and
App Service PremiumV3 vCPUs (10+). Also updated timeout documentation
and cleanup commands.

* Add Python FastAPI to Azure App Service deployment test

New test case AppServicePythonDeploymentTests that deploys the
FastAPI/React template to Azure App Service instead of Container Apps.
This mirrors PythonFastApiDeploymentTests but targets App Service.

* Enhance PR comment to show passed/failed tests separately

- Query individual matrix job results to determine per-test outcomes
- Display passed, failed, and cancelled tests in separate sections
- Show summary counts (X passed, Y failed, Z cancelled)
- Include recordings only for tests that have them

* Add Azure resource deployment E2E tests (Phase 1)

Add 7 new E2E deployment tests for Azure resources using aspire init:

Simple/Low-cost resources:
- AzureStorageDeploymentTests - Azure Storage Account
- AzureKeyVaultDeploymentTests - Azure Key Vault
- AzureAppConfigDeploymentTests - Azure App Configuration
- AzureLogAnalyticsDeploymentTests - Azure Log Analytics Workspace
- AzureContainerRegistryDeploymentTests - Azure Container Registry

Messaging resources:
- AzureServiceBusDeploymentTests - Azure Service Bus
- AzureEventHubsDeploymentTests - Azure Event Hubs

Each test:
1. Uses 'aspire init' to create a single-file AppHost
2. Adds the Azure hosting package via 'aspire add'
3. Injects resource code into apphost.cs
4. Deploys to Azure using 'aspire deploy'
5. Verifies the resource was created
6. Cleans up the resource group

* Fix duplicate heading in deployment tests README

* Fix Azure location for deployment tests - use westus3

The subscription has quota limits in eastus (only 1 Container App environment).
We have expanded quota in westus3, so change the workflow to deploy there.

* Fix Azure resource tests to handle NuGet.config prompt

The aspire init command now prompts for 'Create NuGet.config for selected channels?'
before creating the AppHost. Updated all 7 Azure resource tests to:
1. Handle the new NuGet.config prompt (press Enter for Yes)
2. Remove language selection handling (only appears with polyglot enabled)

* Fix aspire init pattern matching for CI environment

In CI, aspire init:
1. Auto-creates NuGet.config without prompting (no interactive prompt)
2. Shows 'Aspire initialization complete' instead of 'Created apphost.cs'

Updated all 7 Azure resource tests to:
- Wait for 'Aspire initialization complete' pattern
- Remove the NuGet.config prompt handling (not needed in CI)

* Handle NuGet.config prompt that may or may not appear in CI

The NuGet.config prompt behavior is inconsistent in CI - sometimes it appears
interactively, sometimes it auto-accepts. Updated tests to:
1. Wait 5 seconds after running aspire init
2. Press Enter (dismisses prompt if present, no-op if auto-accepted)
3. Then wait for 'Aspire initialization complete'

This handles both interactive and non-interactive cases.

* Add Azure Container App Environment for role assignment support

Azure resources that require role assignments (Storage, KeyVault, AppConfig,
ServiceBus, EventHubs) need a managed identity principal. The Container App
Environment provides this. Updated 5 failing tests to include:
  builder.AddAzureContainerAppEnvironment("env")

This provides the principal required for provisioning role assignments.

* Add Aspire.Hosting.Azure.ContainerApps package for CAE support

AddAzureContainerAppEnvironment() requires the ContainerApps hosting package.
Updated 5 tests to add this package before adding the specific Azure resource
package. Flow is now:
1. aspire init
2. aspire add Aspire.Hosting.Azure.ContainerApps
3. aspire add Aspire.Hosting.Azure.{Resource}
4. modify apphost.cs to use AddAzureContainerAppEnvironment + AddAzure{Resource}

* Fix aspire add integration selection prompt handling

Add pattern searcher for 'Select an integration to add:' prompt
and wait for it before pressing Enter to select the first match.
This handles the fuzzy matching that shows multiple options.

* Fix aspire add prompt handling - use combined pattern searcher

aspire add may show either:
- Integration selection prompt if multiple matches
- Version selection prompt if unique match

The combined searcher waits for either prompt type.

* Fix aspire add to handle TWO prompts for ContainerApps

aspire add Aspire.Hosting.Azure.ContainerApps triggers:
1. Integration selection prompt (matches multiple Azure packages)
2. Version selection prompt (in CI)

Need to wait for and handle both prompts sequentially.

* Address code review feedback

- Use discard pattern (_) instead of unused variable for AddAzureContainerAppEnvironment
- Update README.md Test Structure section to include new Azure resource test files

* Skip App Service deployment tests due to infrastructure timeouts

App Service provisioning takes longer than 30 minutes, causing test
timeouts. Skipped until infrastructure issues are resolved.

---------

Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
- Add step in run-tests.yml to copy .cast files and upload as
  'cli-e2e-recordings-{TestName}' artifacts
- Simplify cli-e2e-recording-comment.yml to filter by artifact name prefix
- Removes need for hardcoded test class name list

Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
* Add Kubernetes/Helm E2E test for CLI publishing

- Add KubernetesPublishTests.cs to correct project (Aspire.Cli.EndToEnd.Tests)
- Delete orphaned tests/Aspire.Cli.EndToEndTests folder (misnamed, no csproj)

* Address PR feedback: improve test reliability and cleanup

- Add .WithDimensions(160, 48) to terminal builder for consistency
- Make KinD/Helm versions configurable via environment variables
- Use unique cluster names (GUID-based) for parallel test execution
- Add kubectl wait --for=condition=Ready for proper pod verification
- Wrap test in try/finally with best-effort cleanup via Process API
- Improve comment explaining port override rationale

* Pass CancellationToken to WaitForExitAsync in cleanup

---------

Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
* Add initial Aspire.Hosting.Azure.Network integration

This is the first round of supporting Azure virtual networks in Aspire. Currently it supports:

Creating a virtual network
Creating subnets
Creating private endpoints to Storage blobs and queues
Future PRs will enable:

More private endpoint support. This is just the core / first resource.
Being able to add NAT Gateways and public IPs.
This pull request introduces a new Azure Virtual Network end-to-end sample to the repository, demonstrating how to configure a virtual network, subnets, private endpoints, and secure storage access for containerized applications. It also adds support for Azure Network and Private DNS provisioning packages, and makes minor improvements to existing storage modules.

* Get some stuff working

* Don't add VNet resources in run mode.

Add a delegation annotation so things like ACA can delegate subnets.

* Initial support for private endpoints.

* Add Azure.Provisioning.PrivateDns and update to latest

* Remove unncessary workaround

* Finish implementing private endpoints.

Gets AzureStorageEndToEnd working with a vnet and private endpoints.

* Make new Aspire.Hosting.Azure APIs experimental

* Add unit tests.

Remove NatGateway (for now). This will come in a separate PR.

Clean up some code.

* More clean up

* Move to a new playground app specific to VNets

* Fix AddSubnet API

* Rename AddAzurePrivateEndpoint and hang it off of AzureSubnetResource.

* Don't add PrivateEndpointTargetAnnotation in run mode. Also walk the hierarchy until you reach the root resource.

* Add WithSubnet API for ACA environments and improve delegation naming

- Add IAzureDelegatedSubnetResource interface and DelegatedSubnetAnnotation to Aspire.Hosting.Azure
- Implement IAzureDelegatedSubnetResource on AzureContainerAppEnvironmentResource
- Add WithSubnet<T> extension method in Network package for configuring subnet delegation
- Update ACA Bicep generation to read DelegatedSubnetAnnotation and configure VnetConfiguration
- Use serviceName for delegation name in Bicep output (e.g., 'Microsoft.App/environments')
- Mark new public APIs with [Experimental("ASPIREAZURE003")]
- Add unit test verifying ACA and VNet Bicep output with subnet delegation

* Separate and reuse Private DNS Zones across private endpoints

- Add AzurePrivateDnsZoneResource for shared DNS Zone management
- Add AzurePrivateDnsZoneVNetLinkResource for VNet-to-zone linking
- DNS Zones are cached at builder level and reused per zone name
- VNet Links tracked on DNS Zone to avoid duplicates
- PE Bicep now references existing DNS Zone instead of creating inline
- Add tests for DNS Zone reuse scenarios
- Add InternalsVisibleTo for test access to internal types

* Address PR feedback
…: Build ID 2896470 (dotnet#14349)

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2895925

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2896434

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2896434

* Localized file check-in by OneLocBuild Task: Build definition ID 1309: Build ID 2896434
* Allow subnet addressprefix to be a parameter.

Follow-up feedback from dotnet#13108

* Add parameter to virtual network
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: James Newton-King <james@newtonking.com>
* Add AKS starter deployment E2E test (Phase 1)

This adds a new end-to-end deployment test that validates Azure Kubernetes Service (AKS) infrastructure creation:

- Creates resource group, ACR, and AKS cluster
- Configures kubectl credentials
- Verifies cluster connectivity
- Cleans up resources after test

Phase 1 focuses on infrastructure only - Aspire deployment will be added in subsequent phases.

* Fix AKS test: register required resource providers

Add step to register Microsoft.ContainerService and Microsoft.ContainerRegistry
resource providers before attempting to create AKS resources. This fixes the
MissingSubscriptionRegistration error when the subscription hasn't been
configured for AKS usage.

* Fix AKS test: use Standard_B2s_v2 VM size

The subscription in westus3 doesn't have access to Standard_B2s, only
the v2 series VMs. Changed to Standard_B2s_v2 which is available.

* Fix AKS test: use Standard_D2s_v3 VM size

The subscription has zero quota for B-series VMs in westus3. Changed to
Standard_D2s_v3 which is a widely-available D-series VM with typical quota.

* Add Phase 2 & 3: Aspire project creation, Helm chart generation, and AKS deployment

Phase 2 additions:
- Create Aspire starter project using 'aspire new'
- Add Aspire.Hosting.Kubernetes package via 'aspire add'
- Modify AppHost.cs to call AddKubernetesEnvironment() with ACR config
- Login to ACR for Docker image push
- Run 'aspire publish' to generate Helm charts and push images

Phase 3 additions:
- Deploy Helm chart to AKS using 'helm install'
- Verify pods are running with kubectl
- Verify deployments are healthy

This completes the full end-to-end flow: AKS cluster creation -> Aspire project
creation -> Helm chart generation -> Deployment to Kubernetes

* Fix Kubernetes deployment: Add container build/push step

Changes:
- Remove invalid ContainerRegistry property from AddKubernetesEnvironment
- Add pragma warning disable for experimental ASPIREPIPELINES001
- Add container build step using dotnet publish /t:PublishContainer
- Push container images to ACR before Helm deployment
- Override Helm image values with ACR image references

The Kubernetes publisher generates Helm charts but doesn't build containers.
We need to build and push containers separately using dotnet publish.

* Fix duplicate Service ports in Kubernetes publisher

When multiple endpoints resolve to the same port number, the Service
manifest generator was creating duplicate port entries, which Kubernetes
rejects as invalid. This fix deduplicates ports by (port, protocol)
before adding them to the Service spec.

Fixes the error:
  Service 'xxx-service' is invalid: spec.ports[1]: Duplicate value

* Add explicit AKS-ACR attachment verification step

Added Step 6 to explicitly run 'az aks update --attach-acr' after AKS
cluster creation to ensure the AcrPull role assignment has properly
propagated. This addresses potential image pull permission issues where
AKS cannot pull images from the attached ACR.

Also renumbered all subsequent steps to maintain proper ordering.

* Fix AKS image pull: correct Helm value paths and add ACR check

* Fix duplicate Service/container ports: compare underlying values not Helm expressions

* Re-enable AppService deployment tests

* Add endpoint verification via kubectl port-forward to AKS test

* Wait for pods to be ready before port-forward verification

* Use retry loop for health endpoint verification and log HTTP status codes

* Use real app endpoints: /weatherforecast and / instead of /health

* Improve comments explaining duplicate port dedup rationale

* Refactor cleanup to async pattern matching other deployment tests

* Fix duplicate K8s ports: skip DefaultHttpsEndpoint in ProcessEndpoints

The Kubernetes publisher was generating duplicate Service/container ports
(both 8080/TCP) for ProjectResources with default http+https endpoints.
The root cause is that GenerateDefaultProjectEndpointMapping assigns the
same default port 8080 to every endpoint with None target port.

The proper fix mirrors the core framework's SetBothPortsEnvVariables()
behavior: skip the DefaultHttpsEndpoint (which the container won't listen
on — TLS termination happens at ingress/service mesh). The https endpoint
still gets an EndpointMapping (for service discovery) but reuses the http
endpoint's HelmValue, so no duplicate K8s port is generated.

Added Aspire.Hosting.Kubernetes to InternalsVisibleTo to access
ProjectResource.DefaultHttpsEndpoint. The downstream dedup in ToService()
and WithContainerPorts() remains as defense-in-depth.

Fixes dotnet#14029

* Add AKS + Redis E2E deployment test

Validates the Aspire starter template with Redis cache enabled deploys
correctly to AKS. Exercises the full pipeline: webfrontend → apiservice
→ Redis by hitting the /weather page (SSR, uses Redis output caching).

Key differences from the base AKS test:
- Selects 'Yes' for Redis Cache in aspire new prompts
- Redis uses public container image (no ACR push needed)
- Verifies /weather page content (confirms Redis integration works)

* Fix ACR name collision between parallel AKS tests

Both AKS tests generated the same ACR name from RunId+RunAttempt.
Use different prefixes (acrs/acrr) to ensure uniqueness.

* Fix Redis Helm deployment: provide missing cross-resource secret value

Work around K8s publisher bug where cross-resource secret references create
Helm value paths under the consuming resource instead of referencing the
owning resource's secret. The webfrontend template expects
secrets.webfrontend.cache_password but values.yaml only has
secrets.cache.REDIS_PASSWORD. Provide the missing value via --set.

---------

Co-authored-by: Mitch Denny <mitch@mitchdeny.com>
- when a Verify test fails, it auto-accepts the changes, so you can see the diff
- It fails the test (throwException: true)
- It doesn't do this on "build servers"
    - https://github.com/VerifyTests/DiffEngine/blob/fef0776f63f0cfa1ac070f16d0925dee89faf9de/src/DiffEngine/BuildServerDetector.cs is the checks for what is considered a "build server"
…es (dotnet#14335)

- Add Channel-based async FileLoggerProvider writing to ~/.aspire/logs/
- Add --debug-level (-v) option for console log verbosity
- Show 'See logs at {path}' instead of raw stack traces on console
- Centralize child process option forwarding via RootCommand.GetChildProcessArgs()
- Suppress Microsoft.Hosting.Lifetime logs from file logger
- Log backchannel socket errors at Debug level when AppHost has exited
- Add log cleanup to 'aspire cache clear'
- Make CliExecutionContext.LogFilePath a required constructor parameter

Fixes dotnet#13787
…#14372)

* Initial plan

* Fix CLI stop command description to mention resource stopping

Updated description from "Stop a running Aspire apphost." to
"Stop a running apphost or the specified resource." in the resx
file and all XLF localization files.

Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com>
…ummary (dotnet#14367)

* Initial plan

* Add deployed compute resources and endpoints to pipeline deployment summary

For both Azure Container Apps and Azure App Service deployments, the pipeline
summary now includes each compute resource name and its public endpoint URL
(or "No public endpoints" if none are configured). This makes it immediately
visible to users whether their services are publicly accessible after deployment.

Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com>

* Remove emoji from summary keys and add Docker Compose endpoint summary

Remove the emoji prefix (🖥️) from pipeline summary keys in
AzureContainerAppResource and AzureAppServiceWebSiteResource.
Add ctx.Summary.Add() calls to DockerComposeServiceResource.PrintEndpointsAsync()
so Docker Compose deployments also show compute resources and their endpoints
(or "No public endpoints") in the deployment summary.

Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com>

* Address PR review feedback: move endpoint check inside step lambda and simplify App Service

Move the anyPublicEndpoints check inside the step Action lambda in
AzureContainerAppResource so endpoints are evaluated at execution time,
not step creation time (addresses @eerhardt's feedback).

For AzureAppServiceWebSiteResource, remove the conditional entirely since
App Service always has a public endpoint at its .azurewebsites.net URL.
This restores the original always-show-URL behavior, avoids unnecessary
async resolution when there are no public endpoints, and addresses both
@eerhardt's and Copilot code review's feedback.

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>
…#14360)

* Implement IAzurePrivateEndpointTarget on more Azure resources

Follow up to dotnet#13108

Contributes to dotnet#13750

* Fix tests

* Fix Redis private dns zone name.
* Fix package signature verification and publishing commands to use dotnet.cmd

* Add .NET 10 SDK installation and update package verification commands

* Improve error handling in NuGet package verification and publishing steps
dotnet#14381)

On relative base path root
Microsoft.DeveloperControlPlane.darwin-amd64 , Microsoft.DeveloperControlPlane.darwin-arm64 , Microsoft.DeveloperControlPlane.linux-amd64 , Microsoft.DeveloperControlPlane.linux-arm64 , Microsoft.DeveloperControlPlane.linux-musl-amd64 , Microsoft.DeveloperControlPlane.windows-amd64 , Microsoft.DeveloperControlPlane.windows-arm64 From Version 0.22.3 -> To Version 0.22.4

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
adamint and others added 23 commits March 2, 2026 13:40
…t#14687)

Update the command table in extension/README.md to be consistent with
the actual command titles registered in package.nls.json:

- Fix 'Configure launch.json' -> 'Configure launch.json file'
- Fix 'Manage configuration settings' -> 'Extension settings'
- Add missing commands: Initialize Aspire, Open local/global Aspire settings
- Remove outdated Available/Preview availability column
Add PromptForFilePathAsync to IInteractionService that uses native OS file
pickers when the VS Code extension supports the file-pickers.v1 capability.
Falls back to PromptForStringAsync for older extensions or console mode.

Call sites updated: AgentInitCommand, NewCommand, ProjectUpdater.

Fixes dotnet#12758

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Pass open AppHost to CLI commands via --project flag

When the user has an AppHost file open in the editor or configured in
.aspire/settings.json, the extension now passes --project <path> to CLI
commands that support it (deploy, publish, add, update).

Fixes dotnet#11024

* Address review feedback: proper arg escaping, raw tokens, tighter AppHost heuristic

* Fix --project to --apphost and update tests for sync getAspireCliExecutablePath

- Change CLI flag from --project to --apphost to match current CLI interface
- Rename getProjectArgs to getAppHostArgs for consistency
- Tests already updated to stub vscode.workspace.getConfiguration instead of resolveCliPath
…05e-ad5c-9e112be93d9a

[main] Update dependencies from microsoft/dcp
…e view (dotnet#14848)

* Add Aspire Activity Bar panel with running apphosts tree view

- Add Aspire sidebar panel in VS Code with running AppHosts tree view
- Extend 'aspire ps --format json --resources' to include per-AppHost resource data
- Show resources (with state, type, endpoints) as collapsible tree items
- Backward-compatible: falls back gracefully if CLI doesn't support --resources
- Visibility-based polling (only fetches when panel is visible)
- Add SVG icon, localized strings, and unit tests

* Add error welcome view, updateSelf command, initial visibility polling, and spawn error handling

- Show welcome view with upgrade prompt when CLI is missing or too old
- Add 'Update Aspire CLI' command (aspire update --self)
- Start polling immediately if tree view is already visible on creation
- Handle spawn errors (ENOENT) to prevent polling from getting stuck
- Change dashboard icon to link-external for clickable items
- Remove unused InfoMessageItem in favor of viewsWelcome-based error display

* Add Stop and View Logs context menu actions for AppHosts and Resources

- Stop AppHost: right-click context menu runs 'aspire stop --project <path>'
- Stop Resource: right-click context menu runs 'aspire stop <name> --project <path>'
- View Logs: right-click context menu runs 'aspire logs <name> --project <path> --follow'
- All commands hidden from command palette (tree-only actions)
- Localized all new command titles

* Add resource management commands and fix RPC race condition

- Add Start, Restart, Stop resource and Stop apphost context menu actions
- Add View logs context menu for streaming resource logs
- Add Execute command... context menu with quick pick for resource commands
- Fix RPC race condition: register interaction service endpoints before
  connection.listen() to prevent unhandled 'displayEmptyLine' errors
- Fix RPC client factory to use lazy debugSessionId reference
- Use --apphost flag (primary) instead of --project (legacy alias)
- Normalize casing: 'apphost' (lowercase h) in user-facing strings

* Remove unused string constants from strings.ts

* Add Aspire brand purple and semantic colors to tree view icons

- Register custom 'aspire.brandPurple' color (#512BD4 light, #7455DD dark)
- Color apphost and resources group icons with Aspire purple
- Color resource state icons: green for success, yellow for warning,
  red for error, purple for other active states

* Simplify tree provider, fix resource state icons and conditional commands

- Merge duplicate detail item classes into single DetailItem
- Extract _runResourceCommand helper for stop/start/restart/logs
- Store appHostPid directly on ResourceItem instead of parsing ID string
- Remove no-op resourceEndpointLabel wrapper
- Fix resource state icons to use exact PascalCase state values from KnownResourceStates
- Respect stateStyle overrides for health check warnings/errors on Running resources
- Show Start/Stop/Restart context menus only when resource has those commands available
- Reduce polling interval from 5s to 3s
* Display status in more places in CLI

* Update

* Update

* Update

* Update

* Add status to templates

* Fix emoji
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Include --disableProductStyleUrl in Azurite command line when running Azure Storage as an emulator. This is necessary because when a Container resource references the Storage emulator it gets a URL like storage.dev.internal:10000. Using a URL like this conflicts between the Storage SDK and the emulator because the Storage SDK sees port 10000 and uses path-style URLs. But the emulator rejects them because it expects "product-style" URLs.

Fix dotnet#14044
… file (dotnet#14748)

* feat: add CI trigger patterns file

Extract the CI-skip glob patterns into eng/testing/github-ci-trigger-patterns.txt
so that pattern maintenance is decoupled from the workflow definition.
Changing this file alone will not trigger CI, avoiding the chicken-and-egg
problem of the patterns being inlined in ci.yml.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor: read glob patterns from file in check-changed-files action

Replace the inline regex patterns input with a patterns_file input that
points to a file of glob patterns. Add a glob_to_regex() function that
converts glob syntax (**, *, literal dot) to anchored ERE regexes.

The action now:
- reads patterns from a file, skipping comments and blank lines
- converts each glob to an anchored regex before matching
- escapes regex metacharacters (. + ? [ ] ( ) |) in glob literals

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: use patterns_file in CI workflow

Replace the inline regex patterns block in ci.yml with a single
patterns_file reference to eng/testing/github-ci-trigger-patterns.txt.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add CI trigger patterns documentation

Explain the patterns file, its glob syntax, how to add new patterns,
and how the check-changed-files action converts globs to ERE regexes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Initial plan

* Unquarantine stable tests

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>
…lelization (dotnet#14858)

* Add ExtractTestPartitions tool and CI test matrix scripts

Add tooling for automated CI test splitting and matrix generation:

- ExtractTestPartitions: .NET tool that scans test assemblies for
  [Trait("Partition", "N")] attributes to discover test partitions
- split-test-projects-for-ci.ps1: discovers partitions from assemblies
  and generates per-project partition JSON files
- build-test-matrix.ps1: builds a canonical test matrix JSON from
  per-project metadata files
- expand-test-matrix-github.ps1: expands the canonical matrix into
  GitHub Actions format with per-OS job entries
- split-test-matrix-by-deps.ps1: splits the expanded matrix by
  dependency type (no-nugets, requires-nugets, requires-cli-archive)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Replace TestRunsheetBuilder with TestEnumerationRunsheetBuilder

Replace the old per-OS runsheet generation with a new metadata-driven
approach:

- Add TestEnumerationRunsheetBuilder.targets: generates per-project
  .tests-metadata.json files during build, containing project metadata
  (supported OSes, timeouts, dependencies, split configuration)
- Update AfterSolutionBuild.targets: add _GenerateCanonicalMatrixJson
  target that invokes build-test-matrix.ps1 to produce a canonical
  test matrix from the metadata files
- Update Testing.props: add default timeout values and _ShortName
  computation for CI display names
- Update tests/Directory.Build.targets: replace ExtractTestClassNames
  with GenerateTestPartitionsForCI target, add _ShouldArchiveTests
  logic after Testing.targets import
- Remove TestRunsheetBuilder.targets and GetTestProjects.proj

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Configure test projects for unified CI splitting infrastructure

Update test project files to use the new TestEnumerationRunsheetBuilder:

- Aspire.Hosting.Tests: enable SplitTestsOnCI with partition-based
  splitting via TestClassNamePrefixForCI
- Aspire.Cli.EndToEnd.Tests: migrate from ExtractTestClassNamesForHelix
  to SplitTestsOnCI, add RequiresCliArchive property
- Aspire.Deployment.EndToEnd.Tests: migrate to SplitTestsOnCI, enable
  RunOnGithubActionsLinux (controlled by OnlyDeploymentTests filter)
- Aspire.EndToEnd.Tests: add RequiresNugets property
- Aspire.Templates.Tests: migrate to SplitTestsOnCI, add RequiresNugets,
  RequiresTestSdk, EnablePlaywrightInstall, and timeout properties
- Aspire.Playground.Tests: remove obsolete TestRunnerPreCommand

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Simplify CI workflows to use unified test matrix

Rework the CI test orchestration to use a single, unified test matrix:

- enumerate-tests action: replace per-category build steps with a
  single build using TestEnumerationRunsheetBuilder, then expand via
  expand-test-matrix-github.ps1. Output a single all_tests matrix.
- tests.yml: collapse 3 per-OS setup jobs into 1, replace 9
  category×OS job groups with 4 dependency-based groups (no-nugets,
  no-nugets-overflow, requires-nugets, requires-cli-archive)
- deployment-tests.yml: use the unified enumerate-tests action with
  OnlyDeploymentTests=true, consume all_tests output
- run-tests.yml: pass through testProjectPath, timeouts, and
  extraTestArgs from matrix entries
- Remove tests-runner.yml (superseded by run-tests.yml)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update Helix targets to consume new partitions JSON format

Update send-to-helix-templatestests.targets to read test class names
from the new .tests-partitions.json format (produced by
GenerateTestPartitionsForCI) instead of the old .tests.list format.
Strip the 'class:' prefix from partition entries for compatibility
with the existing Helix work item generation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add Infrastructure.Tests for CI tooling validation

Add a new test project that validates the CI test splitting
infrastructure:

- ExtractTestPartitionsTests: tests the ExtractTestPartitions tool
  using dynamically-generated mock assemblies with various trait
  and attribute configurations
- BuildTestMatrixTests: validates build-test-matrix.ps1 canonical
  matrix generation from metadata files
- ExpandTestMatrixGitHubTests: validates expand-test-matrix-github.ps1
  GitHub Actions matrix expansion
- SplitTestMatrixByDepsTests: validates split-test-matrix-by-deps.ps1
  dependency-based matrix splitting
- SplitTestProjectsTests: validates split-test-projects-for-ci.ps1
  partition discovery
- Shared TestDataBuilder and PowerShellCommand helpers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add CI testing documentation and rebalance-tests skill

- docs/ci/TestingOnCI.md: comprehensive documentation covering the
  test splitting architecture, MSBuild properties, matrix generation
  pipeline, and how to add/rebalance test partitions
- .github/skills/rebalance-tests/SKILL.md: agent skill for analyzing
  CI build timings, downloading TRX files, computing optimal partition
  assignments via greedy bin-packing, and applying changes
- Update CLI E2E testing SKILL.md and README.md to reference the
  unified TestEnumerationRunsheetBuilder infrastructure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add partition traits to Aspire.Hosting.Tests for CI parallelization

Add [Trait("Partition", "N")] attributes to 118 test classes in
Aspire.Hosting.Tests, distributing them across 6 partitions. This
enables the CI infrastructure to split this large test project into
parallel jobs, reducing wall-clock test time.

Partition assignments are balanced by estimated test duration using
greedy bin-packing across the partitions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove rebalance-tests skill

Will be developed separately.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix ExtractTestPartitions race condition and remove silent fallback

- Make build/run failures of ExtractTestPartitions hard errors instead of
  silently falling back to class-based splitting
- Pre-build the tool in enumerate-tests action before parallel test matrix
  generation to eliminate file locking race condition

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix CLI E2E tests: add missing PR env vars to nuget-dependent test steps

The GITHUB_PR_NUMBER, GITHUB_PR_HEAD_SHA, and GH_TOKEN environment
variables were only set on the non-nuget test steps, but CLI E2E tests
have requiresNugets=true and always run via the nuget-dependent path.
This caused 'aspire: command not found' because the install script
could not authenticate or identify the PR to download artifacts from.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix GenerateTestPartitionsForCI running during GitHub Actions test execution

The GenerateTestPartitionsForCI target was firing during test execution jobs
in run-tests.yml because PrepareForHelix=true (passed for archiving) combined
with RunOnAzdoHelix=true (default) satisfied the condition. This caused
split-test-projects-for-ci.ps1 to run and fail since ExtractTestPartitions
wasn't built in that job.

Add IsGitHubActionsRunner!=true to the PrepareForHelix branch so partition
generation only runs via GenerateCIPartitions=true on GitHub Actions
(set by the enumerate-tests action) and via PrepareForHelix on AzDo Helix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix RepoRoot path quoting for Windows in GenerateTestPartitionsForCI

On Windows, RepoRoot ends with backslash (e.g. D:\a\_work\1\s\). When
wrapped in quotes for the PowerShell command, the trailing backslash
escapes the closing quote, embedding a literal quote character in the
path. TrimEnd the backslash before quoting to fix this.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update eng/TestEnumerationRunsheetBuilder/TestEnumerationRunsheetBuilder.targets

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update eng/TestEnumerationRunsheetBuilder/TestEnumerationRunsheetBuilder.targets

Co-authored-by: Copilot <175728472+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>
…14868)

* chore: trigger CI build for issue dotnet#14819 investigation

Whitespace change to trigger CI pipeline and E2E test execution
for reproducing the flaky DetachFormatJsonProducesValidJson test.

Fixes dotnet#14819

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix flaky E2E test: retry MSBuild evaluation on empty output

When dotnet msbuild -getProperty/-getItem returns exit code 0 but
produces no stdout output (likely due to MSBuild server contention
when another AppHost process is running), JsonDocument.Parse would
throw 'The input does not contain any JSON tokens', crashing the
aspire run --detach --format json command.

This fix adds retry logic (up to 3 attempts with increasing delay)
for this specific case, making the project discovery more resilient
to concurrent MSBuild operations.

Fixes dotnet#14819

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 polyglot exports for AppContainers

* Update exports

* Fix tests

* Add test for new behaviors

* Fix cancellation token wrappers in polyglot SDKs

Avoid generating/ registering CancellationToken as a handle wrapper in Go, Java, and Rust generators, and update snapshots.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…t#14569)

* Replace Playwright MCP server with Playwright CLI installation

Replace the Playwright MCP server configuration in `aspire agent init` with a
secure Playwright CLI installation workflow. Instead of writing MCP server
configuration to each agent environment's config file, the new approach:

- Resolves the @playwright/cli package version from npm registry
- Downloads the package tarball via `npm pack`
- Verifies supply chain integrity (SHA-512 SRI hash comparison)
- Runs `npm audit signatures` for provenance verification
- Installs globally from the verified tarball
- Runs `playwright-cli install --skills` to generate skill files

New abstractions:
- INpmRunner/NpmRunner: npm CLI command runner (resolve, pack, audit, install)
- IPlaywrightCliRunner/PlaywrightCliRunner: playwright-cli command runner
- PlaywrightCliInstaller: orchestrates the secure install flow

This removes ~400 lines of per-scanner MCP config writing code (different JSON
formats for VS Code, Claude Code, Copilot CLI, and OpenCode) and replaces it
with a single global CLI install.

Fixes dotnet#14430

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Pin Playwright CLI version range to 0.1.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add npm provenance verification and break-glass config

- Add INpmProvenanceChecker/NpmProvenanceChecker for SLSA attestation verification
- Return rich ProvenanceVerificationResult with gate-specific outcome enum
- Fix AuditSignaturesAsync with temp-project approach for global tools
- Add disablePlaywrightCliPackageValidation break-glass config option
- Add security design document (docs/specs/safe-npm-tool-install.md)
- Verify SRI integrity, Sigstore attestations, and source repository provenance

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix markdownlint: add language to fenced code block

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Improve version resolution and provenance verification

- Change version range from exact 0.1.1 to >=0.1.1 for future versions
- Add playwrightCliVersion config override for pinning specific versions
- Verify workflow path (.github/workflows/publish.yml) in provenance
- Verify SLSA build type (GitHub Actions) to confirm OIDC token issuer
- Add BuildType to NpmProvenanceData, WorkflowMismatch and
  BuildTypeMismatch outcomes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add tests for version pinning and default version range

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add E2E test for Playwright CLI installation via agent init

Verifies the full lifecycle: project creation, aspire agent init with
Claude Code environment, Playwright CLI installation with npm provenance
verification, and skill file generation.

Marked as OuterloopTest since it requires npm and network access.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Show status spinner during Playwright CLI installation

Wrap the installation work in IInteractionService.ShowStatusAsync to
display a spinner with 'Installing Playwright CLI...' status text while
the npm operations are in progress.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Mirror playwright-cli skill files to all detected agent environments

After playwright-cli install --skills creates files in .claude/skills/,
the installer now mirrors the playwright-cli skill directory to all
other detected agent environment skill directories (.github/skills/,
.opencode/skill/, etc.) so every configured environment has identical
skill files. Stale files in target directories are also removed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update security design doc to match implementation

- Step 4 now documents all three provenance gates: source repository,
  workflow path, and build type (with OIDC issuer implication)
- Added table of verified fields with expected values
- Updated implementation constants to include new fields
- Added configuration section documenting break-glass keys
- Updated verification diagram with workflow/build type checks
- Step 7 now documents skill file mirroring across environments
- Future improvements reflects experimental Sigstore branch status

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Verify workflow ref matches package version in provenance

Add Gate 6 to provenance verification: check that the workflow ref
(git tag) in the SLSA attestation matches refs/tags/v{version}. This
ensures the build was triggered from the expected release tag, not
an arbitrary branch or commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Use callback-based workflow ref validation in provenance checker

Make the workflow ref validation configurable per-package by accepting a
Func<WorkflowRefInfo, bool> callback instead of hardcoding the
refs/tags/v{version} format. The ref is parsed into a WorkflowRefInfo
record (Raw, Kind, Name) and the caller decides what's valid.

PlaywrightCliInstaller validates Kind=tags and Name=v{version}.
Other packages can use different tag conventions without modifying
the provenance checker.

Addresses review feedback from DamianEdwards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Replace npm provenance checking with Sigstore verification

Use the Sigstore and Tuf NuGet packages (0.2.0) to cryptographically
verify npm attestation bundles in-process, replacing the previous
approach of shelling out to 'npm audit signatures'.

- Add SigstoreNpmProvenanceChecker implementing INpmProvenanceChecker
  using SigstoreVerifier with CertificateIdentity.ForGitHubActions
- Remove the npm audit signatures step from PlaywrightCliInstaller
- Keep existing NpmProvenanceChecker but no longer register in DI
- Add optional sriIntegrity parameter to INpmProvenanceChecker for
  digest-based bundle verification
- Update safe-npm-tool-install.md spec to reflect new verification flow
- Temporarily add nuget.org to NuGet.config for Sigstore/Tuf packages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Refactor SigstoreNpmProvenanceChecker for clarity

Break the monolithic VerifyProvenanceAsync method into focused methods:
- FetchAttestationJsonAsync: fetches attestation JSON from npm registry
- ParseAttestation: parses JSON in a single pass, extracting both the
  Sigstore bundle and provenance data (eliminates duplicate JSON parsing)
- ParseProvenanceFromStatement: extracts provenance fields from in-toto statement
- VerifySigstoreBundleAsync: cryptographic Sigstore verification
- VerifyProvenanceFields: field-level provenance checks (source repo,
  workflow, build type, workflow ref)

Removes dependency on NpmProvenanceChecker.ParseProvenance() which was
re-parsing the same JSON and iterating attestations a second time.

Adds NpmAttestationParseResult type to carry both bundle and provenance
data from a single parse pass.

Adds comprehensive unit tests for ParseAttestation, ParseProvenanceFromStatement,
and VerifyProvenanceFields covering success and failure cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add libsodium to nuget-org package source mapping

libsodium is a transitive dependency of NSec.Cryptography (used by Sigstore)
and needs to be mapped to the nuget-org source for CI restore to succeed.

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>
NOTE: Merging to unblock build.

* Remove temporary nuget.org feed from NuGet.config

Remove the temporary nuget-org package source and its package source
mapping entries (Sigstore, Tuf, NSec.Cryptography, libsodium). These
packages will be resolved from the normal internal feeds (dotnet-public,
dotnet-eng) which have wildcard pattern mappings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update Sigstore and Tuf packages to 0.3.0

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>
…et#14920)

Replace bare 'new HttpClient()' with 'app.CreateHttpClient()' which uses
IHttpClientFactory with AddStandardResilienceHandler() already configured
by TestDistributedApplicationBuilder. This adds automatic retries for
transient failures (502 BadGateway) caused by Docker inter-container
networking not being fully established when the test makes its HTTP request.

Fixes dotnet#9344

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Watch fork for prototyping

* Single file programs

* Move WatchPrototype dependencies into their own Directory.Packages.props

This means WatchPrototype dependencies won't affect the rest of the repo.

---------

Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
@tmat tmat merged commit ba030e9 into dotnet:feature/watch-prototype Mar 5, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.