Three constructor parameters were missing explicit @Inject() decorators. Since tsx/esbuild doesn't support emitDecoratorMetadata, NestJS couldn't resolve them, causing the DI container to hang forever during onModuleInit with no error output.
Fixed:
SummarizationService: @Inject(EmbeddingService)
CronService: @Inject(SummarizationService)
SkillsController: @Inject(SkillsService)
Also includes the dotenv fix (PR #108) for loading .env from monorepo root.
## Summary
Three constructor parameters were missing explicit @Inject() decorators. Since tsx/esbuild doesn't support emitDecoratorMetadata, NestJS couldn't resolve them, causing the DI container to hang forever during onModuleInit with no error output.
Fixed:
- SummarizationService: @Inject(EmbeddingService)
- CronService: @Inject(SummarizationService)
- SkillsController: @Inject(SkillsService)
Also includes the dotenv fix (PR #108) for loading .env from monorepo root.
## Test plan
- [ ] pnpm --filter @mosaic/gateway exec tsx src/main.ts → Gateway
tsx/esbuild doesn't support emitDecoratorMetadata, so NestJS can't
infer constructor parameter types at runtime. Three services were
missing explicit @Inject() decorators:
- SummarizationService: EmbeddingService parameter
- CronService: SummarizationService parameter
- SkillsController: SkillsService parameter
Without these, NestJS DI hangs forever during onModuleInit resolution
with no error output — the process silently exits (or hangs with a
keepAlive).
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Three constructor parameters were missing explicit @Inject() decorators. Since tsx/esbuild doesn't support emitDecoratorMetadata, NestJS couldn't resolve them, causing the DI container to hang forever during onModuleInit with no error output.
Fixed:
Also includes the dotenv fix (PR #108) for loading .env from monorepo root.
Test plan