[release/13.4] Add embedded Aspire skills fallback#17548
Conversation
Embed a checked-in Aspire skills bundle snapshot for CLI fallback, make agent init warn instead of fail when bundle acquisition is unavailable, and add automation to refresh the snapshot via a draft PR. Co-authored-by: IEvangelist <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17548Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17548" |
There was a problem hiding this comment.
Pull request overview
Backports the embedded Aspire skills bundle fallback to release/13.4 so aspire agent init can proceed when neither a validated cache nor the microsoft/aspire-skills GitHub release asset is available, while keeping hash/attestation validation and safe extraction.
Changes:
- Add an embedded (assembly resource) Aspire skills bundle + metadata and wire it into
AspireSkillsInstalleras a third acquisition source. - Change
aspire agent initoutput to emit a single “installed skills” summary instead of per-skill messages. - Add automation (scripts + workflows) to verify and refresh the embedded bundle, including draft PR support in the shared
create-pull-requestaction.
Reviewed changes
Copilot reviewed 29 out of 31 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Aspire.Cli.Tests/Commands/AgentInitCommandTests.cs | Updates/extends tests to validate the new “installed skills summary” output. |
| tests/Aspire.Cli.Tests/Agents/AspireSkillsInstallerTests.cs | Adds tests covering embedded-bundle fallback behaviors and SHA-256 validation. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ru.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ko.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.it.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.fr.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf | Updates localized resources for new summary strings and embedded-fallback messaging. |
| src/Aspire.Cli/Resources/AgentCommandStrings.resx | Adds new summary string resources and updates GitHub-unavailable messaging to include embedded fallback. |
| src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs | Regenerates strongly-typed accessors for the updated resources. |
| src/Aspire.Cli/Program.cs | Registers the embedded bundle provider in DI. |
| src/Aspire.Cli/Commands/AgentInitCommand.cs | Aggregates per-skill installs into a single summary message and refactors install result reporting. |
| src/Aspire.Cli/Aspire.Cli.csproj | Embeds the snapshot archive + metadata as assembly resources. |
| src/Aspire.Cli/Agents/AspireSkills/SkillBundleManifest.cs | Adds JSON model + source-gen context entry for embedded bundle metadata. |
| src/Aspire.Cli/Agents/AspireSkills/EmbeddedAspireSkillsBundleProvider.cs | Implements reading embedded snapshot + metadata from assembly resources. |
| src/Aspire.Cli/Agents/AspireSkills/Embedded/aspire-skills.metadata.json | Adds pinned embedded snapshot metadata (version/repo/tag/asset/SHA-256). |
| src/Aspire.Cli/Agents/AspireSkills/AspireSkillsInstaller.cs | Adds embedded acquisition path with SHA-256 verification and fallback logic. |
| src/Aspire.Cli/Agents/AspireSkills/AspireSkillsBundle.cs | Exposes SHA-256 normalization helper for installer reuse. |
| eng/scripts/verify-aspire-skills-bundle.ps1 | Adds script to validate embedded bundle SHA-256 and GitHub attestation. |
| eng/scripts/update-aspire-skills-bundle.ps1 | Adds script to download/attestation-verify a release asset and refresh embedded snapshot + pinned version. |
| .github/workflows/verify-aspire-skills-bundle.yml | Adds CI workflow to verify the embedded snapshot via the verification script. |
| .github/workflows/update-aspire-skills-bundle.yml | Adds scheduled/manual workflow to refresh the embedded snapshot and open a draft PR. |
| .github/actions/create-pull-request/action.yml | Adds a draft input and passes --draft to gh pr create when requested. |
Files not reviewed (1)
- src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs: Language not supported
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
❌ CLI E2E Tests failed — 106 passed, 1 failed, 2 unknown (commit Failed Tests
View all recordings
📹 Recordings uploaded automatically from CI run #26523783214 |
Documents changes from microsoft/aspire#17548: - aspire agent init now shows a consolidated installation summary instead of per-skill messages - Added documentation for the three-tier skill bundle acquisition strategy (local cache → GitHub release asset → embedded fallback) so users know the command works in air-gapped/offline environments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Pull request created: #1099
|
|
📝 Documentation has been drafted in microsoft/aspire.dev#1099 targeting Updated
Note This draft PR needs human review before merging. |
Backport of #17537 to release/13.4
Customer Impact
Customers running Aspire CLI agent initialization can be blocked when the Aspire skills bundle cannot be acquired from an existing cache or GitHub release assets. This backport adds an embedded, validated skills bundle fallback so the CLI can continue installing Aspire agent skills when online acquisition is unavailable.
Testing
Source PR validation covered restore, bundle update/verify scripts, GitHub attestation verification, UpdateXlf, targeted Aspire.Cli tests, Aspire.Cli build, and diff check. Manual release/13.4 backport validation covered restore, UpdateXlf, and targeted Aspire.Cli tests for AgentInitCommandTests and AspireSkillsInstallerTests.
Risk
Low. The change is scoped to Aspire CLI skills bundle acquisition, embedded fallback metadata, and refresh automation; existing attestation/hash validation and safe archive extraction paths remain in use.
Regression?
Unknown - the source PR did not link an issue or identify an explicit regression.