vitest.config.ts is not under apps/gateway/src (rootDir), so including
it in tsconfig.json broke the build. Instead, add it to the
eslint allowDefaultProject list so the typescript-eslint parser can
lint it without being covered by the project tsconfig.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
Pi SDK is ESM-only. tsx (esbuild) doesn't emit decorator metadata,
so NestJS constructor injection fails without explicit @Inject().
- Set "type": "module" in gateway package.json
- Switch tsconfig to NodeNext module resolution
- Add @Inject(AgentService) to ChatController and ChatGateway
Tested end-to-end: REST /api/chat → Pi SDK → Anthropic → response OK.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>