Skip to content

[release/13.5] Move progress prompt title to options - #19424

Open
aspire-repo-bot[bot] wants to merge 7 commits into
release/13.5from
backport/pr-19382-to-release/13.5
Open

[release/13.5] Move progress prompt title to options#19424
aspire-repo-bot[bot] wants to merge 7 commits into
release/13.5from
backport/pr-19382-to-release/13.5

Conversation

@aspire-repo-bot

@aspire-repo-bot aspire-repo-bot Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Backport of #19382 to release/13.5

/cc James Newton-King (@JamesNK)

Customer Impact

This needs to land in 13.5 because the progress prompt API is new. Shipping 13.5 with the previous API shape and correcting it later would require breaking changes for customers. This change keeps the C# and generated polyglot APIs consistent before they ship.

Testing

Validated in #19382 with an Aspire.Hosting build, all seven PromptProgressAsync_* tests, two-pass code-generation snapshot tests for TypeScript, Python, Java, Go, and Rust, TypeScript API compatibility validation, compilation of the TypeScript, Go, and Python validation AppHosts, Java snapshot generation, and a Stress AppHost build.

Risk

Low. The change updates the C# API and generated polyglot API shape, but those APIs are new and unshipped, and the affected builds, tests, and generated snapshots were validated in the source PR.

Regression?

No. This is a pre-release API correction needed before 13.5 ships.

The progress dialog title now reaches the interaction through two
hand-written mappings that nothing asserted: CommandProgressOptions.Title
-> ProgressInteractionOptions.Title in ResourceCommandService, and
InteractionProgressOptions.Title -> ProgressInteractionOptions.Title in
the ATS export. Either could be dropped without failing a test, silently
losing the title for command progress dialogs and for every polyglot
AppHost.

Both tests were verified to fail when the corresponding mapping is
removed.

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

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19424

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19424"

@github-actions github-actions Bot added the area-app-model Issues pertaining to the APIs in Aspire.Hosting, e.g. DistributedApplication label Aug 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.

Moves the progress dialog title from a standalone promptProgress/PromptProgressAsync parameter into the progress options payload so polyglot SDKs share a single options shape and title is mapped consistently.

Changes:

  • Updates PromptProgressAsync (C#) and polyglot promptProgress bindings to remove the title parameter and use Options.Title instead.
  • Propagates the new Title field through ATS DTOs/codegen snapshots and sample apphosts (TS/Python/Java/Go).
  • Adds/updates tests to validate title mapping and interaction metadata.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/Shared/TestInteractionService.cs Adjusts test stub signature and interaction creation to the new options-based title.
tests/PolyglotAppHosts/Aspire.Hosting/TypeScript/apphost.mts Updates TS apphost usage to pass title via options object.
tests/PolyglotAppHosts/Aspire.Hosting/Python/apphost.py Updates Python apphost usage to pass title via options dict.
tests/PolyglotAppHosts/Aspire.Hosting/Java/AppHost.java Updates Java apphost usage to set title on InteractionProgressOptions.
tests/PolyglotAppHosts/Aspire.Hosting/Go/apphost.go Updates Go apphost usage to set title within InteractionProgressOptions.
tests/Aspire.Hosting.Tests/ResourceCommandServiceTests.cs Extends test to assert interaction title for command progress.
tests/Aspire.Hosting.Tests/InteractionServiceTests.cs Updates tests for new signature and adds assertions around title/message.
tests/Aspire.Hosting.Tests/AtsInteractionExportsTests.cs Adds tests verifying title mapping into ProgressInteractionOptions.
tests/Aspire.Hosting.CodeGeneration..Tests/Snapshots/ Updates generated SDK snapshots to reflect new API surface.
src/Aspire.Hosting/api/Aspire.Hosting.tscompat.suppression.txt Suppresses compatibility check for experimental parameter removal.
src/Aspire.Hosting/InteractionService.cs Updates implementation to read title from options.Title.
src/Aspire.Hosting/IInteractionService.cs Updates interface signature and adds Title to ProgressInteractionOptions.
src/Aspire.Hosting/CompatibilitySuppressions.xml Updates suppression target signature for PromptProgressAsync.
src/Aspire.Hosting/Ats/InteractionExports.cs Removes title argument from export and maps Title through DTO->options.
src/Aspire.Hosting/ApplicationModel/ResourceCommandService.cs Maps command progress title into ProgressInteractionOptions.Title.
playground/TypeScriptAppHost/apphost.mts Updates playground TS apphost usage to new options shape.
playground/Stress/Stress.AppHost/InteractionCommands.cs Updates stress apphost usage to set Title via options.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread tests/Shared/TestInteractionService.cs
Comment thread tests/Shared/TestInteractionService.cs
Comment thread src/Aspire.Hosting/IInteractionService.cs
Comment thread src/Aspire.Hosting/IInteractionService.cs
@github-actions

Copy link
Copy Markdown
Contributor

Tests selector (audit mode)

The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement.

48 / 100 test projects · 4 jobs, from 21 changed files.

Selected test projects (48 / 100)

Aspire.EndToEnd.Tests, Aspire.Hosting.Analyzers.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Kusto.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.CodeGeneration.Go.Tests, Aspire.Hosting.CodeGeneration.Java.Tests, Aspire.Hosting.CodeGeneration.Python.Tests, Aspire.Hosting.CodeGeneration.Rust.Tests, Aspire.Hosting.CodeGeneration.TypeScript.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.DevTunnels.Tests, Aspire.Hosting.Docker.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.EntityFrameworkCore.Tests, Aspire.Hosting.Foundry.Tests, Aspire.Hosting.Garnet.Tests, Aspire.Hosting.GitHub.Models.Tests, Aspire.Hosting.Go.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Kafka.Tests, Aspire.Hosting.Keycloak.Tests, Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests, Aspire.Hosting.MongoDB.Tests, Aspire.Hosting.MySql.Tests, Aspire.Hosting.Nats.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Oracle.Tests, Aspire.Hosting.Orleans.Tests, Aspire.Hosting.PostgreSQL.Tests, Aspire.Hosting.Python.Tests, Aspire.Hosting.Qdrant.Tests, Aspire.Hosting.RabbitMQ.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Redis.Tests, Aspire.Hosting.RemoteHost.Tests, Aspire.Hosting.Seq.Tests, Aspire.Hosting.SqlServer.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Hosting.Valkey.Tests, Aspire.Hosting.Yarp.Tests, Aspire.Playground.Tests

Selected jobs (4)

deployment-e2e, extension-e2e, polyglot, typescript-api-compat


How these were chosen — grouped by what changed

⚠️ 34 of the 48 selected test projects come from a single change — src/Aspire.Hosting/ApplicationModel/ResourceCommandService.cs.

🔧 src/Aspire.Hosting/ApplicationModel/ResourceCommandService.cs (changed source)
34 via the project graph

show 34

Aspire.Hosting.Analyzers.Tests (2 hops), Aspire.Hosting.Azure.Kusto.Tests (2 hops), Aspire.Hosting.Containers.Tests (2 hops), Aspire.Hosting.DevTunnels.Tests (2 hops), Aspire.Hosting.Docker.Tests (2 hops), Aspire.Hosting.DotnetTool.Tests (2 hops), Aspire.Hosting.EntityFrameworkCore.Tests (2 hops), Aspire.Hosting.Foundry.Tests (2 hops), Aspire.Hosting.Garnet.Tests (2 hops), Aspire.Hosting.GitHub.Models.Tests (2 hops), Aspire.Hosting.Go.Tests (2 hops), Aspire.Hosting.JavaScript.Tests (2 hops), Aspire.Hosting.Kafka.Tests (2 hops), Aspire.Hosting.Keycloak.Tests (2 hops), Aspire.Hosting.Kubernetes.Tests (2 hops), Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests (2 hops), Aspire.Hosting.MongoDB.Tests (2 hops), Aspire.Hosting.MySql.Tests (2 hops), Aspire.Hosting.Nats.Tests (2 hops), Aspire.Hosting.OpenAI.Tests (2 hops), Aspire.Hosting.Oracle.Tests (2 hops), Aspire.Hosting.Orleans.Tests (2 hops), Aspire.Hosting.PostgreSQL.Tests (2 hops), Aspire.Hosting.Python.Tests (2 hops), Aspire.Hosting.Qdrant.Tests (2 hops), Aspire.Hosting.RabbitMQ.Tests (2 hops), Aspire.Hosting.Redis.Tests (2 hops), Aspire.Hosting.Seq.Tests (2 hops), Aspire.Hosting.SqlServer.Tests (2 hops), Aspire.Hosting.Testing.Tests (2 hops), Aspire.Hosting.Valkey.Tests (2 hops), Aspire.Hosting.Yarp.Tests (2 hops), Aspire.Playground.Tests

🧪 tests/Aspire.Hosting.Tests/AtsInteractionExportsTests.cs (changed test)
1 directly: Aspire.Hosting.Tests
3 via the project graph: Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.Radius.Tests

🧪 tests/Shared/TestInteractionService.cs (changed test)
4 via the project graph: Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.RemoteHost.Tests

📦 affected project Aspire.Hosting
1 test: Aspire.EndToEnd.Tests

📄 playground/Stress/Stress.AppHost/InteractionCommands.cs (changed)
1 directly: Aspire.Playground.Tests

📄 playground/TypeScriptAppHost/apphost.mts (changed)
1 directly: Aspire.Playground.Tests

🧪 tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.go (changed test)
1 directly: Aspire.Hosting.CodeGeneration.Go.Tests

🧪 tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.java (changed test)
1 directly: Aspire.Hosting.CodeGeneration.Java.Tests

🧪 tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.py (changed test)
1 directly: Aspire.Hosting.CodeGeneration.Python.Tests

🧪 tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.rs (changed test)
1 directly: Aspire.Hosting.CodeGeneration.Rust.Tests

🧪 tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.ts (changed test)
1 directly: Aspire.Hosting.CodeGeneration.TypeScript.Tests

🧪 tests/Aspire.Hosting.Tests/InteractionServiceTests.cs (changed test)
1 directly: Aspire.Hosting.Tests

🧪 tests/Aspire.Hosting.Tests/ResourceCommandServiceTests.cs (changed test)
1 directly: Aspire.Hosting.Tests

Job reasons

Job Triggered by
deployment-e2e affected project Aspire.Hosting.Azure
extension-e2e src/Aspire.Hosting/ApplicationModel/ResourceCommandService.cs, src/Aspire.Hosting/Ats/InteractionExports.cs, src/Aspire.Hosting/CompatibilitySuppressions.xml, src/Aspire.Hosting/IInteractionService.cs, src/Aspire.Hosting/InteractionService.cs, src/Aspire.Hosting/api/Aspire.Hosting.tscompat.suppression.txt
• affected project Aspire.Hosting
polyglot tests/PolyglotAppHosts/Aspire.Hosting/Go/apphost.go, tests/PolyglotAppHosts/Aspire.Hosting/Java/AppHost.java, tests/PolyglotAppHosts/Aspire.Hosting/Python/apphost.py, tests/PolyglotAppHosts/Aspire.Hosting/TypeScript/apphost.mts
• affected project Aspire.Hosting.JavaScript
typescript-api-compat src/Aspire.Hosting/api/Aspire.Hosting.tscompat.suppression.txt
• affected project Aspire.Hosting

Selection computed for commit d268de0.

@JamesNK James Newton-King (JamesNK) added the Servicing-consider Issue for next servicing release review label Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-app-model Issues pertaining to the APIs in Aspire.Hosting, e.g. DistributedApplication Servicing-consider Issue for next servicing release review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants