fix: bootstrap DTO class erasure + wizard failure + port prefill + Pi SDK copy (IUV-M01, #436)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful

- Bug 1 [CRITICAL]: drop `import type` on BootstrapSetupDto in bootstrap.controller.ts
  so NestJS preserves the class reference for design:paramtypes; ValidationPipe now
  correctly validates the DTO instead of 400ing on every field.
  Add e2e integration test (bootstrap.e2e.spec.ts) via @nestjs/testing + supertest
  that exercises the real DI/Fastify binding path to guard against regressions.
  Configure vitest to use unplugin-swc with decoratorMetadata:true.

- Bug 2: remove `&& headlessRun` guard in wizard.ts so bootstrap failure (completed:false)
  aborts with process.exit(1) in both interactive and headless modes — no more
  silent '✔ Wizard complete' after a 400.

- Bug 3: add `initialValue` to WizardPrompter.text() interface, ClackPrompter, and
  HeadlessPrompter; use it in gateway-config.ts promptPort() so 14242 prefills the
  input buffer and users can press Enter to accept. Apply same pattern to other
  gateway config prompts (databaseUrl, valkeyUrl, corsOrigin).

- Bug 4: add Pi SDK to the 'What is Mosaic?' intro copy in welcome.ts.

- Bump @mosaicstack/mosaic 0.0.25 → 0.0.26.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jarvis
2026-04-05 16:38:37 -05:00
parent a8cd52e88c
commit 56dde4126b
13 changed files with 608 additions and 17 deletions

View File

@@ -72,11 +72,17 @@
"zod": "^4.3.6"
},
"devDependencies": {
"@nestjs/testing": "^11.1.18",
"@swc/core": "^1.15.24",
"@swc/helpers": "^0.5.21",
"@types/node": "^22.0.0",
"@types/node-cron": "^3.0.11",
"@types/supertest": "^7.2.0",
"@types/uuid": "^10.0.0",
"supertest": "^7.2.2",
"tsx": "^4.0.0",
"typescript": "^5.8.0",
"unplugin-swc": "^1.5.9",
"vitest": "^2.0.0"
}
}