Support JS AppHost package managers#39
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: afc58b38-2c51-4886-b3ab-770a9d4b8914
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: afc58b38-2c51-4886-b3ab-770a9d4b8914
45ad66c to
10a47b1
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds resolver-aligned guidance and evaluation coverage for TypeScript AppHost package-manager detection, ensuring agents preserve the Aspire lifecycle (aspire start) while selecting the correct package manager (and rejecting Yarn Classic).
Changes:
- Documented TypeScript AppHost package-manager detection order and supported command patterns.
- Added aspireify eval tasks covering Yarn Classic rejection, pnpm precedence over parent Yarn metadata, and npm fallback behavior.
- Added evaluation fixtures representing Yarn Classic and pnpm scenarios, plus updated cross-skill guidance to defer to aspireify package-manager rules.
Show a summary per file
| File | Description |
|---|---|
| skills/aspireify/references/typescript-authoring.md | Adds documentation for TS AppHost package-manager detection and recommended commands. |
| skills/aspireify/evals/tasks/typescript-package-manager-yarn-classic.yaml | New eval task to ensure Yarn Classic is explicitly rejected. |
| skills/aspireify/evals/tasks/typescript-package-manager-pnpm.yaml | New eval task to ensure pnpm is selected from AppHost-local markers and lifecycle remains aspire start. |
| skills/aspireify/evals/tasks/typescript-package-manager-fallback.yaml | New eval task to ensure npm fallback is explained without metadata changes. |
| skills/aspire/SKILL.md | Reinforces aspire start lifecycle and defers TS package-manager toolchain guidance to aspireify rules. |
| skills/aspire-init/references/init-workflow.md | Updates init workflow guidance to detect/preserve existing package-manager conventions before dependency commands. |
| evals/ts-apphost-package-managers/yarn-classic/package.json | Adds Yarn Classic fixture via packageManager: yarn@1.22.22. |
| evals/ts-apphost-package-managers/yarn-classic/apphost.ts | Adds minimal TS AppHost fixture for Yarn Classic scenario. |
| evals/ts-apphost-package-managers/pnpm/pnpm-lock.yaml | Adds pnpm lockfile fixture to drive pnpm detection. |
| evals/ts-apphost-package-managers/pnpm/package.json | Adds minimal TS AppHost package.json fixture for pnpm scenario. |
| evals/ts-apphost-package-managers/pnpm/apphost.ts | Adds minimal TS AppHost fixture for pnpm scenario. |
| evals/ts-apphost-package-managers/package.json | Adds parent workspace fixture declaring Yarn 4+, for precedence testing. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Files not reviewed (1)
- evals/ts-apphost-package-managers/pnpm/pnpm-lock.yaml: Generated file
- Files reviewed: 11/12 changed files
- Comments generated: 3
- Review effort level: Low
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 78419ae3-0687-4e50-aa25-e5c5331f83c1
There was a problem hiding this comment.
Review details
Files not reviewed (1)
- evals/ts-apphost-package-managers/pnpm/pnpm-lock.yaml: Generated file
Comments suppressed due to low confidence (1)
skills/aspireify/references/typescript-authoring.md:171
- The table column header "AppHost execution" can be read as the recommended way to run the AppHost, but the preceding sentence says these commands are only for dependency/toolchain diagnostics and do not replace
aspire start --non-interactive. Renaming the column to make its diagnostic intent explicit would reduce accidental misuse.
| Manager | Dependency command | Type-check | AppHost execution |
- Files reviewed: 9/10 changed files
- Comments generated: 1
- Review effort level: Low
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f5542622-4520-4c25-ad93-d4832aaa95aa
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f5542622-4520-4c25-ad93-d4832aaa95aa
IEvangelist
left a comment
There was a problem hiding this comment.
Approving. The earlier concerns about the TypeScript AppHost scaffold have been addressed in the latest revision: the pnpm and yarn-classic fixtures now use apphost.mts importing createBuilder from ./.aspire/modules/aspire.mjs, and the type-check/diagnostic command table now uses tsconfig.apphost.json with apphost.mts as the entry point.
Summary
aspire startas the lifecycle command and reject Yarn ClassicCloses microsoft/aspire#16656
Validation
waza check skills/aspireifygit diff --checkwaza runstarted but LLM graders were blocked by Copilot SDK model-service timeouts/retries