Skip to content

Bump Aspire to 13.4.3 and align AppHost SDK versions#1397

Merged
aaronpowell merged 1 commit into
mainfrom
aaronpowell/bump-aspire-13-4-3
Jun 15, 2026
Merged

Bump Aspire to 13.4.3 and align AppHost SDK versions#1397
aaronpowell merged 1 commit into
mainfrom
aaronpowell/bump-aspire-13-4-3

Conversation

@aaronpowell

Copy link
Copy Markdown
Member

Closes #N/A

This updates the repo to Aspire 13.4.3 and resolves the restore/build issues that surfaced during the version bump. The main goal was to keep AppHost versions consistent across .NET and TypeScript samples while clearing the package audit failures.

Key changes:

  • Updated AspireVersion to 13.4.3.
  • Corrected preview suffix formatting to -preview.1.26305.13 so prerelease package restore resolves correctly from NuGet.
  • Updated .NET AppHost SDK pins from Aspire.AppHost.Sdk/13.4.0 to Aspire.AppHost.Sdk/13.4.3.
  • Updated TypeScript AppHost aspire.config.json version pins from 13.4.0 to 13.4.3.
  • Added a central MessagePack override and explicit project references where needed, then moved to fixed version 2.5.301 for GHSA-hv8m-jj95-wg3x.

PR Checklist

  • Created a feature/dev branch in your fork (vs. submitting directly from a commit on main)
  • Based off latest main branch of toolkit
  • PR doesn't include merge commits (always rebase on top of our main, if needed)
  • New integration
    • Docs are written
    • Added description of major feature to project description for NuGet package (4000 total character limit, so don't push entire description over that)
  • Tests for the changes have been added (for bug fixes / features) (if applicable)
  • Contains NO breaking changes
  • Every new API (including internal ones) has full XML docs
  • Code follows all style conventions

Other information

  • No API surface changes were introduced; this is a version-alignment and dependency/remediation update.
  • Build completes after these updates, and the previous MessagePack NU1903 failures are resolved.

- Update Aspire core version to 13.4.3 and use preview.1.26305.13 suffix

- Upgrade MessagePack override to 2.5.301 and add explicit references for affected projects

- Update .NET AppHost SDK pins and TypeScript aspire.config.json versions from 13.4.0 to 13.4.3

Co-authored-by: Copilot <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/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1397

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1397"

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

This PR updates the repo’s Aspire dependency baseline to 13.4.3 and aligns AppHost SDK version pins across .NET and TypeScript samples, while also addressing a MessagePack security advisory via a central version override plus explicit references where needed.

Changes:

  • Bump AspireVersion to 13.4.3 and update AspirePreviewSuffix used by prerelease-only Aspire packages.
  • Align Aspire.AppHost.Sdk and TypeScript aspire.config.json SDK pins to 13.4.3 across tests and examples.
  • Add central MessagePack version override (2.5.301) and add explicit PackageReference entries to ensure the override applies.
Show a summary per file
File Description
Directory.Build.props Bumps Aspire version properties and preview suffix.
Directory.Packages.props Adds central MessagePack override to remediate GHSA; keeps package versions centrally managed.
tests/CommunityToolkit.Aspire.Testing/CommunityToolkit.Aspire.Testing.csproj Bumps AppHost SDK pin; adds MessagePack reference.
tests/CommunityToolkit.Aspire.SurrealDb.Tests/CommunityToolkit.Aspire.SurrealDb.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Sftp.Tests/CommunityToolkit.Aspire.Sftp.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.RavenDB.Client.Tests/CommunityToolkit.Aspire.RavenDB.Client.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.OllamaSharp.Tests/CommunityToolkit.Aspire.OllamaSharp.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Minio.Client.Tests/CommunityToolkit.Aspire.Minio.Client.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Microsoft.Data.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.Data.Sqlite.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Meilisearch.Tests/CommunityToolkit.Aspire.Meilisearch.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.MassTransit.RabbitMQ.Tests/CommunityToolkit.Aspire.MassTransit.RabbitMQ.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.KurrentDB.Tests/CommunityToolkit.Aspire.KurrentDB.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Zitadel.Tests/CommunityToolkit.Aspire.Hosting.Zitadel.Tests.csproj Normalizes formatting; adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Umami.Tests/CommunityToolkit.Aspire.Hosting.Umami.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.SurrealDb.Tests/CommunityToolkit.Aspire.Hosting.SurrealDb.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Stripe.Tests/CommunityToolkit.Aspire.Hosting.Stripe.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Sqlite.Tests/CommunityToolkit.Aspire.Hosting.Sqlite.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.Tests/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Solr.Tests/CommunityToolkit.Aspire.Hosting.Solr.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Sftp.Tests/CommunityToolkit.Aspire.Hosting.Sftp.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Rust.Tests/CommunityToolkit.Aspire.Hosting.Rust.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.RavenDB.Tests/CommunityToolkit.Aspire.Hosting.RavenDB.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.PowerShell.Tests/CommunityToolkit.Aspire.Hosting.PowerShell.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Perl.Tests/CommunityToolkit.Aspire.Hosting.Perl.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.PapercutSmtp.Tests/CommunityToolkit.Aspire.Hosting.PapercutSmtp.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests/CommunityToolkit.Aspire.Hosting.Ollama.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests/CommunityToolkit.Aspire.Hosting.Ngrok.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.Tests/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/CommunityToolkit.Aspire.Hosting.Minio.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests/CommunityToolkit.Aspire.Hosting.McpInspector.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.MailPit.Tests/CommunityToolkit.Aspire.Hosting.MailPit.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.LavinMQ.Tests/CommunityToolkit.Aspire.Hosting.LavinMQ.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.KurrentDB.Tests/CommunityToolkit.Aspire.Hosting.KurrentDB.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.Tests/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.Tests.csproj Normalizes formatting; adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.k6.Tests/CommunityToolkit.Aspire.Hosting.k6.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.Tests/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Java.Tests/CommunityToolkit.Aspire.Hosting.Java.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Flyway.Tests/CommunityToolkit.Aspire.Hosting.Flyway.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Flagd.Tests/CommunityToolkit.Aspire.Hosting.Flagd.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.Tests/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.DuckDB.Tests/CommunityToolkit.Aspire.Hosting.DuckDB.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Deno.Tests/CommunityToolkit.Aspire.Hosting.Deno.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Bun.Tests/CommunityToolkit.Aspire.Hosting.Bun.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Azure.Extensions.Tests/CommunityToolkit.Aspire.Hosting.Azure.Extensions.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.Tests/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests.csproj Normalizes formatting; adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests.csproj Adds MessagePack reference.
tests/CommunityToolkit.Aspire.DuckDB.NET.Data.Tests/CommunityToolkit.Aspire.DuckDB.NET.Data.Tests.csproj Adds MessagePack reference.
tests-app-hosts/Ollama.AppHost/Ollama.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
src/CommunityToolkit.Aspire.Hosting.Zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Umami/CommunityToolkit.Aspire.Hosting.Umami.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.SurrealDb/CommunityToolkit.Aspire.Hosting.SurrealDb.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Stripe/CommunityToolkit.Aspire.Hosting.Stripe.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Solr/CommunityToolkit.Aspire.Hosting.Solr.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Sftp/CommunityToolkit.Aspire.Hosting.Sftp.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Rust/CommunityToolkit.Aspire.Hosting.Rust.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Redis.Extensions/CommunityToolkit.Aspire.Hosting.Redis.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.RavenDB/CommunityToolkit.Aspire.Hosting.RavenDB.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Python.Extensions/CommunityToolkit.Aspire.Hosting.Python.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.PowerShell/CommunityToolkit.Aspire.Hosting.PowerShell.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Perl/CommunityToolkit.Aspire.Hosting.Perl.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.PapercutSmtp/CommunityToolkit.Aspire.Hosting.PapercutSmtp.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Ollama/CommunityToolkit.Aspire.Hosting.Ollama.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/CommunityToolkit.Aspire.Hosting.MySql.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Minio/CommunityToolkit.Aspire.Hosting.Minio.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.McpInspector/CommunityToolkit.Aspire.Hosting.McpInspector.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.MailPit/CommunityToolkit.Aspire.Hosting.MailPit.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.LavinMQ/CommunityToolkit.Aspire.Hosting.LavinMQ.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.KurrentDB/CommunityToolkit.Aspire.Hosting.KurrentDB.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.k6/CommunityToolkit.Aspire.Hosting.k6.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Golang/CommunityToolkit.Aspire.Hosting.Golang.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Flyway/CommunityToolkit.Aspire.Hosting.Flyway.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Flagd/CommunityToolkit.Aspire.Hosting.Flagd.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.DuckDB/CommunityToolkit.Aspire.Hosting.DuckDB.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Deno/CommunityToolkit.Aspire.Hosting.Deno.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.DbGate/CommunityToolkit.Aspire.Hosting.DbGate.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Dapr/CommunityToolkit.Aspire.Hosting.Dapr.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Bun/CommunityToolkit.Aspire.Hosting.Bun.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Azure.Extensions/CommunityToolkit.Aspire.Hosting.Azure.Extensions.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Azure.Dapr/CommunityToolkit.Aspire.Hosting.Azure.Dapr.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.Adminer/CommunityToolkit.Aspire.Hosting.Adminer.csproj Adds MessagePack reference for advisory remediation.
src/CommunityToolkit.Aspire.Hosting.ActiveMQ/CommunityToolkit.Aspire.Hosting.ActiveMQ.csproj Adds MessagePack reference for advisory remediation.
examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost/CommunityToolkit.Aspire.Hosting.Umami.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/umami/CommunityToolkit.Aspire.Hosting.Umami.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/surrealdb/CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/stripe/CommunityToolkit.Aspire.Hosting.Stripe.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/sqlserver-ext/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/sqlite/CommunityToolkit.Aspire.Sqlite.AppHost/CommunityToolkit.Aspire.Sqlite.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/sqlite/CommunityToolkit.Aspire.Hosting.Sqlite.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/sql-database-projects/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/solr/CommunityToolkit.Aspire.Hosting.Solr.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/sftp/CommunityToolkit.Aspire.Hosting.Sftp.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost/CommunityToolkit.Aspire.Hosting.Rust.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/ravendb/RavenDB.AppHost/CommunityToolkit.Aspire.Hosting.RavenDB.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.csproj Bumps AppHost SDK pin.
examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/powershell/CommunityToolkit.Aspire.PowerShell.AppHost/CommunityToolkit.Aspire.PowerShell.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/postgres-ext/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/perl/cpanm-api-integration/CpanmApiIntegration.AppHost/CpanmApiIntegration.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/papercut/CommunityToolkit.Aspire.Hosting.PapercutSmtp.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/ollama/CommunityToolkit.Aspire.Hosting.Ollama.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/ngrok/CommunityToolkit.Aspire.Hosting.Ngrok.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/mysql-ext/CommunityToolkit.Aspire.Hosting.MySql.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/mongodb-ext/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost/CommunityToolkit.Aspire.Hosting.Minio.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/minio/CommunityToolkit.Aspire.Hosting.Minio.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/meilisearch/CommunityToolkit.Aspire.Hosting.Meilisearch.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/mcp-inspector/CommunityToolkit.Aspire.Hosting.McpInspector.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/masstransit-rabbitmq/CommunityToolkit.Aspire.Hosting.MassTransit.RabbitMQ.AppHost/CommunityToolkit.Aspire.Hosting.MassTransit.RabbitMQ.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/mailpit/CommunityToolkit.Aspire.Hosting.MailPit.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/lavinmq/CommunityToolkit.Aspire.Hosting.LavinMQ.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/kurrentdb/CommunityToolkit.Aspire.Hosting.KurrentDB.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/keycloak-postgres/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost/CommunityToolkit.Aspire.Hosting.k6.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/k6/CommunityToolkit.Aspire.Hosting.k6.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/javascript-ext/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost/CommunityToolkit.Aspire.Hosting.Java.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/java/CommunityToolkit.Aspire.Hosting.Java.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/flyway/CommunityToolkit.Aspire.Hosting.Flyway.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/flyway/03.Repair/03.Repair.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/flyway/02.ContainerConfiguration/02.ContainerConfiguration.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/flyway/01.Basic/01.Basic.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/flagd/CommunityToolkit.Aspire.Hosting.Flagd.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/elasticsearch-ext/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/duckdb/CommunityToolkit.Aspire.DuckDB.AppHost/CommunityToolkit.Aspire.DuckDB.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost/CommunityToolkit.Aspire.Hosting.Deno.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/deno/CommunityToolkit.Aspire.Hosting.Deno.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/dbgate/CommunityToolkit.Aspire.Hosting.DbGate.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/data-api-builder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK pin (also contains an outdated Aspire package pin).
examples/dapr/CommunityToolkit.Aspire.Hosting.Dapr.AppHost/CommunityToolkit.Aspire.Hosting.Dapr.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/dapr/CommunityToolkit.Aspire.Hosting.Azure.Dapr.AppHost/CommunityToolkit.Aspire.Hosting.Azure.Dapr.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost/CommunityToolkit.Aspire.Hosting.Bun.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/bun/CommunityToolkit.Aspire.Hosting.Bun.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/azure-ext/CommunityToolkit.Aspire.Azure.Extensions.AppHost/CommunityToolkit.Aspire.Azure.Extensions.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/adminer/CommunityToolkit.Aspire.Hosting.Adminer.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.
examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.csproj Bumps AppHost SDK pin; adds MessagePack reference.
examples/activemq/CommunityToolkit.Aspire.Hosting.ActiveMQ.AppHost.TypeScript/aspire.config.json Bumps TypeScript Aspire SDK version pin.

Copilot's findings

  • Files reviewed: 197/197 changed files
  • Comments generated: 1

Comment on lines 6 to 8
"sdk": {
"version": "13.4.0"
"version": "13.4.3"
},
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
CommunityToolkit.Aspire.DuckDB.Api 99% 100% 13
CommunityToolkit.Aspire.DuckDB.NET.Data 67% 77% 32
CommunityToolkit.Aspire.GoFeatureFlag 100% 97% 44
CommunityToolkit.Aspire.Hosting.ActiveMQ 88% 48% 95
CommunityToolkit.Aspire.Hosting.ActiveMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.Adminer 89% 70% 20
CommunityToolkit.Aspire.Hosting.Azure.Dapr 28% 5% 38
CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis 56% 46% 26
CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder 85% 83% 18
CommunityToolkit.Aspire.Hosting.Azure.Extensions 64% 30% 27
CommunityToolkit.Aspire.Hosting.Bun 88% 69% 20
CommunityToolkit.Aspire.Hosting.Dapr 43% 25% 648
CommunityToolkit.Aspire.Hosting.DbGate 96% 62% 12
CommunityToolkit.Aspire.Hosting.Deno 95% 85% 24
CommunityToolkit.Aspire.Hosting.DuckDB 98% 90% 16
CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions 100% 94% 30
CommunityToolkit.Aspire.Hosting.Flagd 80% 100% 16
CommunityToolkit.Aspire.Hosting.Flyway 88% 100% 6
CommunityToolkit.Aspire.Hosting.GoFeatureFlag 80% 50% 24
CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService 100% 100% 3
CommunityToolkit.Aspire.Hosting.Java 86% 75% 207
CommunityToolkit.Aspire.Hosting.Java.ApiApp 65% 50% 11
CommunityToolkit.Aspire.Hosting.Java.WebApp 25% 18% 59
CommunityToolkit.Aspire.Hosting.JavaScript.Extensions 92% 83% 190
CommunityToolkit.Aspire.Hosting.k6 70% 10% 8
CommunityToolkit.Aspire.Hosting.k6.ApiService 64% 67% 13
CommunityToolkit.Aspire.Hosting.Keycloak.Extensions 100% 100% 11
CommunityToolkit.Aspire.Hosting.KurrentDB 88% 100% 19
CommunityToolkit.Aspire.Hosting.LavinMQ 90% 83% 18
CommunityToolkit.Aspire.Hosting.LavinMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.MailPit 91% 100% 13
CommunityToolkit.Aspire.Hosting.McpInspector 85% 60% 100
CommunityToolkit.Aspire.Hosting.McpInspector.McpServer 89% 100% 2
CommunityToolkit.Aspire.Hosting.Meilisearch 95% 85% 30
CommunityToolkit.Aspire.Hosting.Meilisearch.ApiService 82% 100% 15
CommunityToolkit.Aspire.Hosting.Minio 99% 91% 32
CommunityToolkit.Aspire.Hosting.Minio.ApiService 98% 92% 15
CommunityToolkit.Aspire.Hosting.MongoDB.Extensions 91% 90% 11
CommunityToolkit.Aspire.Hosting.MySql.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Ngrok 55% 43% 106
CommunityToolkit.Aspire.Hosting.Ollama 77% 67% 267
CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector 79% 70% 42
CommunityToolkit.Aspire.Hosting.PapercutSmtp 100% 100% 9
CommunityToolkit.Aspire.Hosting.Perl 85% 76% 745
CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions 93% 91% 47
CommunityToolkit.Aspire.Hosting.PowerShell 76% 59% 107
CommunityToolkit.Aspire.Hosting.Python.Extensions 46% 31% 44
CommunityToolkit.Aspire.Hosting.RavenDB 63% 46% 118
CommunityToolkit.Aspire.Hosting.RavenDB.ApiService 21% 33% 16
CommunityToolkit.Aspire.Hosting.Redis.Extensions 100% 71% 14
CommunityToolkit.Aspire.Hosting.Rust 96% 90% 13
CommunityToolkit.Aspire.Hosting.Sftp 90% 62% 15
CommunityToolkit.Aspire.Hosting.Sftp.ApiService 94% 100% 10
CommunityToolkit.Aspire.Hosting.Solr 88% 100% 19
CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects 68% 59% 146
CommunityToolkit.Aspire.Hosting.Sqlite 88% 93% 25
CommunityToolkit.Aspire.Hosting.SqlServer.Extensions 86% 81% 41
CommunityToolkit.Aspire.Hosting.Stripe 50% 17% 119
CommunityToolkit.Aspire.Hosting.SurrealDb 69% 51% 216
CommunityToolkit.Aspire.Hosting.SurrealDb.ApiService 81% 52% 299
CommunityToolkit.Aspire.Hosting.Umami 98% 75% 9
CommunityToolkit.Aspire.Hosting.Zitadel 97% 86% 31
CommunityToolkit.Aspire.KurrentDB 97% 95% 33
CommunityToolkit.Aspire.MassTransit.RabbitMQ 100% 100% 24
CommunityToolkit.Aspire.Meilisearch 97% 96% 38
CommunityToolkit.Aspire.Microsoft.Data.Sqlite 94% 85% 26
CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite 71% 73% 117
CommunityToolkit.Aspire.Minio.Client 93% 87% 67
CommunityToolkit.Aspire.OllamaSharp 78% 74% 76
CommunityToolkit.Aspire.RavenDB.Client 96% 73% 87
CommunityToolkit.Aspire.Sftp 94% 94% 54
CommunityToolkit.Aspire.Sqlite.Api 93% 93% 68
CommunityToolkit.Aspire.SurrealDb 87% 73% 39
Summary 76% (8701 / 11383) 61% (2565 / 4177) 5020

Minimum allowed line rate is 60%

@aaronpowell aaronpowell merged commit 56dc564 into main Jun 15, 2026
489 of 510 checks passed
@aaronpowell aaronpowell deleted the aaronpowell/bump-aspire-13-4-3 branch June 15, 2026 00:52
tamirdresher added a commit to tamirdresher/Aspire-1 that referenced this pull request Jun 18, 2026
- Bump AppHost SDK reference from Aspire.AppHost.Sdk/13.4.0 to 13.4.3
  (matches the post-13.4.3 upgrade Aaron sync'ed into main via CommunityToolkit#1397)
- Add hard PackageReference Include="MessagePack" to the hosting integration,
  AppHost, and Tests projects to pull the patched 2.5.301 pinned centrally
  in Directory.Packages.props instead of the vulnerable transitive version
  flowing through Aspire.Hosting (CVE-2026-48109 / GHSA-hv8m-jj95-wg3x)
- Remove root-level Squad.slnx (per request — the unified Aspire.slnx covers it)

Build clean (0 warnings, 0 errors) on all three Squad projects.
MessagePack 2.5.301 verified as the resolved version via dotnet list package
--include-transitive in AppHost, hosting, and tests projects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
aaronpowell added a commit that referenced this pull request Jun 25, 2026
…resource for Squad AI-agent teams (#1394)

* feat: add CommunityToolkit.Aspire.Hosting.Squad

Introduces a new hosting integration that lets a .NET Aspire AppHost
model a Squad (https://github.com/bradygaster/squad) AI-agent team
as a first-class Aspire resource.

Closes #1393

What's included
---------------
- `src/CommunityToolkit.Aspire.Hosting.Squad/` — the package
    - `SquadResource : Resource, IResourceWithConnectionString`
      Auto-discovers the agent roster from `.squad/team.md` (table and
      bullet-list formats), only keeping names that map to an existing
      `.squad/agents/{name}/charter.md` to filter typos. Exposes
      `squad://resource/{name}?teamRoot={...}&agents={csv}&protocol=maf-1.0`
      so downstream services can consume the team via `.WithReference`.
    - `SquadBuilderExtensions.AddSquad(name, teamRoot)` decorated with
      `[AspireExport]` (ATS-compatible).
    - `SquadLifecycleHook` publishes Spawning -> Active transitions
      on the dashboard and seeds `SquadDashboardProperties` so the
      roster, protocol version, and team root show on the resource row.
    - Dashboard commands wired via `WithCommand` (open Copilot CLI on
      the team root, etc.).
    - Public API surface file at
      `src/CommunityToolkit.Aspire.Hosting.Squad/api/CommunityToolkit.Aspire.Hosting.Squad.cs`
      per repo convention.
- `tests/CommunityToolkit.Aspire.Hosting.Squad.Tests/` — 7 xUnit unit
  tests covering: resource registration, default roster fallback,
  guard clauses, table-format roster parsing, bullet-format roster
  parsing, and connection-string shape. All pass locally on net10.0.
- `examples/squad/CommunityToolkit.Aspire.Hosting.Squad.AppHost/` —
  minimal AppHost example with a self-contained `sample-squad/.squad/`
  fixture so the example builds and runs without external state.
- Solution + root README updates (table row, link refs).

Out of scope (planned follow-ups, kept separate for reviewability)
------------------------------------------------------------------
- OpenTelemetry signals (agent spawns, token usage, session metrics).
  Depends on the Squad telemetry contract still being designed at
  bradygaster/squad#1144.
- Direct `Squad.Agents.AI` consumer-side extension that constructs an
  MAF `AIAgent` from a referenced squad. The connection-string shape
  here is the integration point; consumer-side wiring is a separate
  package design.

Local verification
------------------
- `dotnet build` on all three new projects (Release) — 0 warnings, 0 errors
- 7/7 tests pass via Microsoft Testing Platform on net10.0
- Example AppHost builds cleanly

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

* feat(examples): wire WithReference + Squad.Agents.AI into the example

The original example AppHost only registered a SquadResource. Per the PR
review request from #1394, the example now also demonstrates end-to-end
consumption: a downstream ApiApp project receives the squad://...
connection string via .WithReference(squad), parses the team root, and
uses Squad.Agents.AI to drive a real 3-turn conversation against the
referenced team.

What's added
------------
- examples/squad/CommunityToolkit.Aspire.Hosting.Squad.ApiApp/
    - ASP.NET minimal API; Program.cs reads ConnectionStrings:research-squad
      (squad://... format), extracts teamRoot, registers SquadAgent via
      AddSquadAgent, exposes POST /ask that runs a 3-turn conversation
      through AgentSession (demonstrates session memory across turns).
- examples/squad/CommunityToolkit.Aspire.Hosting.Squad.ServiceDefaults/
    - Standard Aspire ServiceDefaults shape (OTel + service discovery +
      health checks), mirroring the Java example layout.
- examples/squad/CommunityToolkit.Aspire.Hosting.Squad.AppHost/
    - Updated to AddProject<...>("squad-api").WithReference(researchSquad)
- Directory.Packages.props
    - Added Squad.Agents.AI 0.1.0-preview.3 (centralized version), the
      preview that ships the SessionConfig/OnPermissionRequest fix needed
      to drive a real conversation. See bradygaster/squad#1252.
- CommunityToolkit.Aspire.slnx
    - 2 new projects added (ApiApp, ServiceDefaults).
- src/CommunityToolkit.Aspire.Hosting.Squad/README.md
    - New "Consume the team from a service project" section pointing
      callers at the new examples/squad/ runnable.

Local verification
------------------
- dotnet build (Release) of all 5 squad-related projects: 0 warn, 0 err
- All 7 unit tests still pass on net10.0 (MTP)
- Squad.Agents.AI 0.1.0-preview.3 restores from nuget.org cleanly

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

* Bump Squad.Agents.AI to 0.2.0-preview.4 + workaround GitHub.Copilot.SDK direct ref

Squad.Agents.AI 0.2.0-preview.4 (released earlier today from bradygaster/squad#1259)
brings the package onto Microsoft.Agents.AI.GitHub.Copilot 1.10.0-rc1, which
transitively pulls GitHub.Copilot.SDK 1.0.0 GA. The earlier 0.1.0-preview.3 was
wedged on SDK 1.0.0-beta.2 + a CLI protocol the current copilot CLI no longer
speaks — verified by running the example ApiApp in this branch against a real
.squad-initialised team root and seeing the agent successfully read .squad/team.md
and dispatch work to multiple specialists.

Also add a direct PackageReference to GitHub.Copilot.SDK 1.0.0. This is a
temporary workaround: the SDK ships its CLI-binary-download MSBuild targets
under build/ (only auto-imported for projects with a *direct* PackageReference),
not buildTransitive/. microsoft/agent-framework#6457 (merged 2026-06-10) fixes
this at the MAF adapter level — once a MAF preview ships with that change, the
direct GitHub.Copilot.SDK ref can be dropped from Directory.Packages.props and
the ApiApp csproj. Both edit sites carry an inline comment explaining the lifecycle.

Verified: the hosting library, the ApiApp, and the AppHost all build clean, and
copilot.exe lands at the expected 'bin/{cfg}/{tfm}/runtimes/{rid}/native/' path
in the ApiApp output.

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

* Bump to Squad.Agents.AI 0.3.0-preview.5 + wire subagent observability into ApiApp

Squad.Agents.AI 0.3.0-preview.5 (released today from bradygaster/squad#1265) adds
a first-class subagent observability surface: a typed OnSubagentTrace callback +
an OpenTelemetry ActivitySource named 'Microsoft.Agents.AI.Squad' that emits one
span per task-tool dispatch with squad.subagent.name / squad.subagent.display_name /
squad.subagent.sdk_agent_id / squad.subagent.reply_preview tags.

This commit:

* Bumps Squad.Agents.AI from 0.2.0-preview.4 to 0.3.0-preview.5 in
  Directory.Packages.props.

* Wires the new ActivitySource into the ApiApp's OpenTelemetry tracer (one line
  on top of the AddServiceDefaults() configuration) so every subagent dispatch
  shows up as its own span in the Aspire dashboard's Traces view, with the
  subagent name + a preview of its reply attached as span tags.

* Adds OnSubagentTrace logging in the ApiApp so subagent lifecycle (spawn, reply,
  complete) also surfaces in the dashboard's Structured Logs view — both signals
  are correlated by Activity.Current so the OTel span and the structured log
  share the same trace id.

* Adds a new POST /dispatch endpoint that issues an explicit task-tool dispatch
  prompt ('use the task tool to dispatch two parallel subagents...'). Hitting
  this endpoint from the dashboard produces a multi-span trace showing the
  coordinator + each subagent as separate spans — the headline visibility demo.

* Existing POST /ask 3-turn endpoint kept for the session-memory demo.

Verified locally: AppHost boots clean, the 'research-squad' resource registers
2 agents (ralph, picard from the sample-squad team), and the ApiApp builds + runs
with the new observability wiring against Squad.Agents.AI 0.3.0-preview.5
restored from nuget.org.

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

* examples/squad: replace stub sample-squad with two real squads (research + dev)

The previous bundled sample-squad/ had stub one-line charters with nothing to
dispatch to, so /ask returned coordinator role-play and /dispatch produced no
subagent spans in the Aspire dashboard.

Replace it with two real Squad teams created via 'squad init --no-workflows'
and autonomously cast by the Squad coordinator running under 'copilot --yolo':

  research-squad/   Matrix-cast AI/ML research team
                    Morpheus (Lead) - Trinity (ML/Data) - Oracle (Eval) - Tank (Tester)
                    Stack: Python, PyTorch/TensorFlow, Jupyter, MLflow

  dev-squad/        Simpsons-cast full-stack development team
                    Lisa (Lead) - Marge (Frontend) - Frink (Backend) - Comic Book Guy (Tester)

Both squads have full .squad/ scaffolding: team.md, per-agent charter.md and
history.md, casting registry, decisions ledger, ceremonies, routing, and the
.copilot/ skills the agents read. Runtime state (orchestration-log/, log/,
sessions/, decisions/inbox/) is excluded via the per-squad .gitignore that
'squad init' generates.

AppHost wires both as Aspire resources via .AddSquad('research-squad', ...) and
.AddSquad('dev-squad', ...), and references both from the ApiApp via
.WithReference(researchSquad).WithReference(devSquad). Aspire injects two
connection strings under ConnectionStrings:research-squad and
ConnectionStrings:dev-squad.

ApiApp rewritten to:
- Register one SquadAgent per squad via AddKeyedSquadAgent(serviceKey, ...)
  using the keyed-DI overload shipped in Squad.Agents.AI 0.1.0-preview.2
- Resolve the right agent per request via [FromKeyedServices] / ?squad= query
- /ask?squad=research|dev runs a 3-turn conversation against the picked team
- /dispatch?squad=research|dev sends an explicit 'use the task tool to dispatch
  two parallel subagents' prompt so we reliably see real subagent spawns (not
  inline role-play) and one squad.subagent {Name} OTel span per spawn in the
  Aspire dashboard Traces view
- OnSubagentTrace forwards subagent start/done/message to console so the
  structured logs line up with the OTel trace timeline

AppHost launchSettings.json also gains DCP_IDE_REQUEST_TIMEOUT_SECONDS=300 to
prevent the 120s DCP/VS run-session race that falls back to bare dotnet.exe
and produces 'Usage: dotnet [path-to-application]' in the ApiApp logs.

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

* examples/squad: fix ?squad=research|dev keyed-DI lookup + clean AppHost comments

The ApiApp registered SquadAgent under keys 'research-squad' and 'dev-squad'
(the Aspire resource names) but the /ask and /dispatch endpoints take
?squad=research|dev (short form). The dictionary lookup mismatched and both
endpoints returned {"error":"Unknown squad 'research'..."}.

Fix:
- Register each keyed SquadAgent under the short name ('research', 'dev')
- Resolve the longer 'research-squad' / 'dev-squad' name only when reading
  the connection string (which IS keyed by the Aspire resource name)
- Drop the unused ResearchSquad/DevSquad const

Also clean up the duplicate using + stale comment block in AppHost/Program.cs
left over from the previous edit.

Verified end-to-end with a live run:
- Both squads come up Active in the dashboard (research: 7 agents discovered;
  dev: 6 agents discovered)
- POST /dispatch?squad=research returns the Morpheus + Trinity answers verbatim
- POST /dispatch?squad=dev returns the Lisa + Frink answers verbatim
- ApiApp spawns one copilot.exe child per request (real subagent dispatch, not
  inline role-play)

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

* examples/squad: ship .github/agents/squad.agent.md inside each squad folder

When 'squad init' is run from a folder that has a parent git repo (i.e. our
case — the Squad CLI's monorepo detection kicked in because Aspire-1 is a git
repo), the CLI places .github/agents/squad.agent.md at the GIT ROOT instead of
inside the squad folder. That made the example squads non-self-contained:
anyone cloning this repo and pointing SquadFolderPath at research-squad/ or
dev-squad/ would have no coordinator agent file (Copilot resolves
.github/agents/ relative to the consumer's git root, not ours).

For an in-repo example that ships as a finished artifact, the squads need to
own their own coordinator. Copy the same squad.agent.md (v0.9.6-insider.3,
71594 bytes) into each squad's own .github/agents/ directory.

Also expand each .gitignore to cover Copilot CLI SDK runtime files that get
created when a SquadAgent serves a request:
  .squad/session-state/
  .squad/session-store.db
  .squad/session-store.db-shm
  .squad/session-store.db-wal

The bundled .gitignore from 'squad init' already covered .squad/sessions/ but
those SDK-side files use slightly different paths.

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

* examples/squad: switch ApiApp to ILogger + emit subagent activity events

Two problems with the previous Console.WriteLine approach:

1. Console.WriteLine output did not consistently surface in the Aspire dashboard
   when the SDK fired OnSubagentTrace from its background event pump (different
   thread, no captured stdout context). The user reported empty Console Logs
   even though the callback was firing.

2. The SDK's per-subagent OTel spans (Microsoft.Agents.AI.Squad activity source)
   may end up as orphan traces — the SDK's Channel-based event pump can fire
   on a thread where Activity.Current has been cleared by the AsyncLocal flow,
   so StartActivity has no parent and the span becomes a new root trace
   detached from the HTTP request's trace.

Fixes:

- Use ILogger<>'s structured logging via Microsoft.Extensions.Options'
  Configure<ILoggerFactory> overload, which injects the fully-built
  ILoggerFactory into the SquadAgentOptions post-configure step (runs after
  the host is built, before any RunAsync call). Each subagent
  start / message / completed lands in the Aspire dashboard's Structured Logs
  view with the squad name, subagent name, and message preview as queryable
  fields.

- Add an app-owned ActivitySource ("Squad.Hosting.ApiApp") and wrap each
  /ask and /dispatch handler in a "squad.dispatch {endpoint} {squad}" span.
  This guarantees a single, named root span per request that the user's
  trace search can land on, even when the SDK's per-subagent spans become
  orphans.

- Inside OnSubagentTrace, also call Activity.Current?.AddEvent(...) so each
  subagent lifecycle event (start / message / completed) is attached as an
  OpenTelemetry ActivityEvent to whatever span is current at callback time
  (the SDK's subagent span when open, the dispatch wrapper otherwise).
  Events show up as labelled annotations on the span timeline in the Aspire
  dashboard trace detail view.

- Wire the new app source into AddOpenTelemetry().WithTracing(...) alongside
  the existing Microsoft.Agents.AI.Squad source.

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

* examples/squad: upgrade to Squad.Agents.AI 0.4.0-preview.6 + simplify ApiApp wiring

0.4.0 (bradygaster/squad#1271, merged today) ships two changes that remove
the boilerplate this example needed in 0.3.0:

1. AddKeyedSquadAgent("research-squad") now resolves
   ConnectionStrings:research-squad (Aspire-injected) directly, with a
   fallback to the legacy ConnectionStrings:squad-research-squad form.
   No more manual builder.Configuration.GetConnectionString() + URI parse +
   feeding SquadFolderPath through a configure callback.

2. EmitSubagentActivities defaults to true. Just call
   .AddSource(SquadAgentDiagnostics.ActivitySourceName) on the tracer and
   "squad.subagent {Name}" spans appear in the Aspire dashboard's Traces view
   with lifecycle ActivityEvents (start / message / completed / failed)
   annotated on the timeline — without setting OnSubagentTrace at all.
   OnSubagentTrace becomes a pure customisation hook now, kept here only to
   surface per-subagent ILogger lines in the Structured Logs view.

ApiApp Program.cs:
  - Drop the foreach that called GetConnectionString + ParseSquadTeamRoot
    (16 lines) — replaced by a single AddKeyedSquadAgent("{resource}") call
    per squad, with a separate AddOptions<>().Configure<ILoggerFactory>(...)
    hop for the OnSubagentTrace ILogger callback.
  - Drop the local ParseSquadTeamRoot helper — the SDK does the parsing.
  - Drop the squadTeamRoots dictionary — was a leaky abstraction of the
    SDK's connection-string handling. Replaced with squadKeysByShortName
    that just maps the query-param short name ("research") to the keyed-DI
    key ("research-squad").

Bumped Squad.Agents.AI 0.3.0-preview.5 → 0.4.0-preview.6 in
Directory.Packages.props.

End-to-end verified live against the published 0.4.0-preview.6 package:
  - Both squads register cleanly with no manual connection-string handling
  - POST /dispatch?squad=research returned the Morpheus + Trinity replies
    verbatim (real task-tool subagent dispatch)
  - Smaller, cleaner Program.cs that closely mirrors the README

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

* examples/squad: pass --agent squad to CLI + drop terse Instructions override

When running 'copilot --agent squad' interactively in a terminal, the
coordinator loads .github/agents/squad.agent.md (1023 lines: eager
execution, parallel fan-out, dispatch via task tool) as its system prompt
and follows that contract. When the same Squad team is invoked through
Squad.Agents.AI's SquadAgent, the underlying copilot.exe child process
was using its default agent — so the coordinator had no instructions to
fan out or dispatch, and the terse 'Be concise' Instructions override we
were passing actively encouraged it to role-play the team in a single
reply instead of spawning real subagents.

Fix:
- Pass --agent squad in CliArgs so the CLI selects squad.agent.md as the
  agent definition for the spawned session
- Drop the per-squad Instructions override (was overriding the full
  squad.agent.md system prompt with one terse line)

Verified live against Squad.Agents.AI 0.4.0-preview.6:
- POST /ask?squad=dev with a Full Mode prompt ('Use the task tool to
  dispatch each of Lisa, Marge, Frink and Comic Book Guy in parallel ...')
  produced the eager-execution narration ('Waiting for all four agents
  to return. Still waiting for Marge.') that only squad.agent.md emits,
  AND returned four distinct subagent replies — proof that --agent squad
  is active and the task tool is dispatching.

Note: 'team, i want every member to say its name' still gets a single
coordinator reply because squad.agent.md classifies that as Direct Mode
('Who's on the team?' → answer from team.md, no spawn). For the
observability demo, use either POST /dispatch?squad=X or send a Full Mode
prompt to /ask.

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

* examples/squad: bump Squad.Agents.AI 0.5.0-preview.7 -> 0.5.1-preview.8

0.5.0-preview.7 introduced a regression: setting sessionConfig.Agent ='squad'
caused a runtime failure ('Custom agent ''squad'' not found') because the SDK
property looks up the SDK's CustomAgents registry, NOT the on-disk
.github/agents/*.agent.md files.

0.5.1-preview.8 (bradygaster/squad#1277) reverts to the original --agent CLI
flag approach which actually reads the on-disk agent definition the same
way 'copilot --agent squad' does interactively.

Verified live: POST /dispatch?squad=dev now returns distinct subagent voices
(Lisa: 'A good software architecture makes change boring ...';
 Frink: 'A well-designed API's most important property is a clear, stable
        contract that makes correct usage obvious and reliable—glavin!'),
which confirms (a) --agent squad is now being passed through, (b)
squad.agent.md is loaded as the coordinator's system prompt, and (c) real
subagent dispatch via the task tool is happening (not coordinator role-play).

The ApiApp's Program.cs already drops the manual --agent CLI workaround from
the previous 0.5.0 upgrade commit, so this is a version-only bump.

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

* examples/squad: collapse /dispatch into /ask + fix nested-project build break

ApiApp:
  - Drop /dispatch. The endpoint was just /ask with a hardcoded "Use the task
    tool to dispatch ..." prompt; same SquadAgent.RunAsync path, same coordinator,
    same span/log surface — the only difference was the prompt. Removing it
    makes the API surface honest: there's one endpoint, the caller owns the
    prompt, the coordinator picks the mode (Direct / Lightweight / Full).
  - GET / now returns a copy-paste "sample_prompts" menu (roster_recall_direct_mode,
    multi_turn_memory, dispatch_full_mode_research, dispatch_full_mode_dev),
    each shaped like the /ask body so the user can paste straight through to
    reproduce every mode and see what the corresponding spans look like.
  - Drop the unused AskRequest.Default sample (the / index now owns sample prompts).
  - Rename the wrapper span "squad.dispatch ask {squad}" -> "squad.ask {squad}".

AppHost build break:
  Earlier interactive sessions created scratch C# projects inside the squads
  (e.g. research-squad/UserNameApp/, dev-squad/UserNameApp/) when the user
  asked the team to "write a program in C3 / C#". The Aspire AppHost SDK's
  default <Compile>, <Content>, <None>, and <EmbeddedResource> globs sweep
  any .cs / .csproj at any depth under the AppHost project folder, which
  caused two cascading build errors on the next F5:
    CS8802: Only one compilation unit can have top-level statements.
    CS0579: Duplicate AssemblyInfo attributes.
  Fix in two layers:
    1. AppHost.csproj: explicit <Compile|Content|None|EmbeddedResource Remove>
       on research-squad\** and dev-squad\**. The squads are scaffolding-only
       (.squad/, .github/, .copilot/, .mcp.json) and should never participate
       in the AppHost compile graph.
    2. Each squad's .gitignore: append *.csproj / *.fsproj / *.vbproj / bin/
       / obj/ guards so future scratch projects don't get committed either.
  Also delete the existing UserNameApp/ scratch dirs from both squads.

Squad.slnx:
  New focused solution file — just src/CommunityToolkit.Aspire.Hosting.Squad,
  the AppHost, the ApiApp, the ServiceDefaults, and the tests. Trims the
  noise out of F5 / VS solution explorer for anyone who clones the example
  and only wants to run the Squad bits without loading the rest of the
  Aspire repo's projects.

Verified live against Squad.Agents.AI 0.5.1-preview.8:
  - GET / lists 4 sample_prompts including the full-mode dispatch prompts
  - POST /ask?squad=dev with the dispatch_full_mode_dev sample produced Lisa
    + Frink replies with their distinct specialist voices, confirming real
    subagent dispatch through the task tool.

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

* review: address Copilot PR review comments on PR #1394

Five inline review comments from the Copilot reviewer, all addressed:

1. SquadResource.cs: Cast MatchCollection to IEnumerable<Match>
   Explicit .Cast<Match>() on both Regex.Matches results so the LINQ
   Concat/Select binding is unambiguous across TFMs (older targets expose
   MatchCollection only as non-generic IEnumerable). No behavior change on
   net10.0 where it already implements IList<Match>; defensive clarity only.

2. SquadBuilderExtensions.StartConsoleWindow: drop fragile cmd /c start invocation
   The previous approach used 'cmd /c start <windowTitle> powershell.exe ...',
   which fails or misbehaves when the title contains spaces (e.g.,
   'Copilot - research-squad'): cmd's quote-stripping causes 'start' to parse
   the title fragment as part of the command. Now launches powershell.exe
   directly with UseShellExecute=true and sets the title from inside the new
   shell via \System.Management.Automation.Internal.Host.InternalHost.UI.RawUI.WindowTitle, removing all cmd/start parsing
   fragility while preserving the friendly window title.

3. api/*.cs: regenerated to match the real public signature
   The hand-typed surface declared 'string teamRoot' (required) but the
   implementation exposes 'string? teamRoot = null'. Re-ran
   GenAPIGenerateReferenceAssemblySource; the file now correctly shows
   the nullable optional parameter and also picks up SquadTeamAnnotation,
   which the previous version had missed.

4. tests/AssemblyInfo.cs: removed
   InternalsVisibleTo on the test assembly grants visibility to itself
   (no-op). The production csproj already wires InternalsVisibleTo to the
   test assembly correctly; the test-side file was duplicate dead config.

5. tests/SquadResourceCreationTests.cs: deterministic temp cleanup
   Class now implements IDisposable and tracks every temp dir created by
   the helpers (instance-scoped _tempRoots). Dispose() best-effort deletes
   them recursively so test residue no longer accumulates in %TEMP%
   across runs.

Tests: 7/7 pass.

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

* review: address Aaron's PR feedback on #1394

- Bump AppHost SDK reference from Aspire.AppHost.Sdk/13.4.0 to 13.4.3
  (matches the post-13.4.3 upgrade Aaron sync'ed into main via #1397)
- Add hard PackageReference Include="MessagePack" to the hosting integration,
  AppHost, and Tests projects to pull the patched 2.5.301 pinned centrally
  in Directory.Packages.props instead of the vulnerable transitive version
  flowing through Aspire.Hosting (CVE-2026-48109 / GHSA-hv8m-jj95-wg3x)
- Remove root-level Squad.slnx (per request — the unified Aspire.slnx covers it)

Build clean (0 warnings, 0 errors) on all three Squad projects.
MessagePack 2.5.301 verified as the resolved version via dotnet list package
--include-transitive in AppHost, hosting, and tests projects.

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

* test(squad): raise line coverage 43% -> 79% (above the 60% gate)

Adds three test files covering the previously-untested classes:

- SquadLifecycleHookTests (12 tests, ~78% line / 100% branch)
  - Tests the hook in isolation with a CapturingEventing test double,
    a real ResourceNotificationService, and synthesised BeforeStart /
    AfterResourcesCreated / ResourceStopped events. No DCP / Dashboard
    runtime required.
  - Asserts state transitions Spawning -> Active -> Finished, no-ops for
    non-Squad ResourceStopped and zero-squad BeforeStart, ArgumentNullException
    on null eventing, and graceful degradation when SquadDashboardProperties
    raises an IOException.

- SquadDashboardPropertiesTests (7 tests, 100% line / 100% branch)
  - CreateStatic shape + null guard.
  - CreateWithLiveStats covers: no inbox dir, multiple .md files in inbox,
    decisions.md first-non-blank line, long-line truncation at 80 chars,
    whitespace-only decisions.md keeping the default 'none'.

- SquadBuilderCommandsTests (7 tests)
  - Exercises each dashboard command (refresh-agents, open-team-root,
    open-copilot-cli, check-inbox) by invoking the ExecuteCommand delegate
    on the resource's ResourceCommandAnnotation.
  - Covers the non-Windows branch of LaunchCopilotCli (the OS-bound
    spawn paths themselves are marked [ExcludeFromCodeCoverage]).

Also:
- Marks StartWindowsTerminal / StartConsoleWindow with
  [ExcludeFromCodeCoverage] - they hand off to wt.exe / powershell.exe
  and can only be exercised by a real desktop session. Argument-list
  building is simple and visible; the launch itself is OS-bound.
- Adds ProjectReference to CommunityToolkit.Aspire.Testing so we have
  the shared test infra available (matches every other integration test
  project in this repo).

Local verification:
- 28/28 tests pass (3-of-3 runs, no flake)
- dotnet build clean (0 warnings, 0 errors) on hosting, AppHost, tests
- Coverage measured via Microsoft.Testing.Extensions.CodeCoverage:
  Total lines 353, covered 279, line rate 79.0% (was 43%).

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

* chore: update Squad.Agents.AI to stable 0.5.1

Now that bradygaster/squad PR #1313 merged and NuGet 0.5.1 (stable)
is published, switch from preview to the stable release.

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

* Address review feedback: cross-platform CLI, primary ctors, remove api file

- Remove Windows-only guard from LaunchCopilotCli; add Linux/macOS support
- Convert SquadLifecycleHook to primary constructor
- Convert SquadTeamAnnotation to primary constructor
- Delete auto-generated api/CommunityToolkit.Aspire.Hosting.Squad.cs

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

* Fix test: non-Windows now attempts CLI launch (cross-platform)

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

* chore(deps): bump Squad.Agents.AI to 0.5.1-preview.16 (delegation fix)

Bumps the centrally-managed Squad.Agents.AI version from 0.5.1 to 0.5.1-preview.16
so the squad ApiApp example actually delegates work to its sub-agents via the
`task` tool. With 0.5.1, the dispatcher squads always reply directly to the
user instead of invoking sub-agents — the SDK was suppressing the dispatch
event. This was fixed upstream in microsoft/agents-ai-squad PR #1378.

Verified end-to-end on bradygaster/squad-with-aspire PR #46 (same one-line bump
on a sibling consumer of Squad.Agents.AI) — sub-agent traces and child spans now
appear correctly in the Aspire dashboard.

Side effect: 0.5.1-preview.16 requires GitHub.Copilot.SDK >= 1.0.3, so the
direct-pin workaround for GitHub.Copilot.SDK is bumped from 1.0.0 to 1.0.3 as
well (also brings the Copilot CLI runtime to 1.0.64-1, which is what the SDK
expects).

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

---------

Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Tamir Dresher <tamirdresher@users.noreply.github.com>
Co-authored-by: Aaron Powell <me@aaron-powell.com>
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.

2 participants