Workspace packages import 'notifkit' which resolves to root dist/index.d.mts. Running build first ensures declaration files exist before workspace typecheck runs.
- Scope root tsconfig to exclude workspace packages and restore declaration resolution
- Align MCP package zod dependency to ^4.6.5 and update record schemas to explicit key/value syntax
- Upgrade ai dependency to ^7.0.118 to restore bundled dist/index.d.ts declarations
- Fix rate limiter inFlightLease promise initialization in TS strict mode
- Add typecheck:workspaces script and wire into CI workflow
- Fix worker spawning in tests/chaos/crash.test.ts to support Linux runners
- Gracefully handle closed connections during RedisClient.disconnect()
- Detach SIGINT/SIGTERM process listeners on NotifkitServer.stop()
- Only run coverage badge generation if the test step was not skipped
- Add .github/workflows/ci.yml with typecheck, lint, build, test, and badge publishing
- Add scripts/coverage-badge.mjs to generate shields.io endpoint JSON from coverage summary
- Update vitest.config.ts with json-summary reporter and include package sources
- Update README.md coverage badge to read from badges branch endpoint
- Ignore badge directory and ignore .next in eslint.config.js