Added
- Shared
bootstrap()function (src/config/bootstrap.ts): Single entry point for configuration initialization — callsloadConfig()→toRuntimeConfig()→initRuntimeConfig(), returns the resolved config, idempotent. Eliminates the recurring pattern where entry points independently chain these calls (or forget to). resetRuntimeConfig()inmemory-config.ts: Test-only function to clear the runtime config cache.
Changed
- Entry point config initialization: All 4 entry points (
src/mcp/server.ts,src/dashboard/server.ts,src/hooks/session-start.ts,src/cli/commands/init/ingest.ts) now usebootstrap()instead of inlineinitRuntimeConfig(toRuntimeConfig(loadConfig())). The ingest command was also missinginitRuntimeConfig()entirely —getConfig()would have returned bare defaults instead of user config. - SECURITY.md: Updated supported versions to
>= 0.10.2.
Tests
- 32 new tests across 3 new/updated test files:
test/config/memory-config.test.ts(13 tests):initRuntimeConfig/getConfigcache lifecycle, deep-merge for all 7 nested config objects, override immutability, idempotency.test/config/loader.test.ts(+15 tests): Empty string env vars, NaN handling,clusterHourrange validation (−1, 0, 12, 23, 24),halfLifeHoursvalidation (−1, 0, 48),decayFactorvalidation (−0.1, 0, 0.95).test/config/bootstrap.test.ts(4 tests): Config resolution, idempotency, return value, CLI override passthrough.
- 2589 tests passing.
What's Changed
- Cleanup Phase 0-1: dependency security fixes and documentation accuracy by @gvonness-apolitical in #156
- Phase 2: Test coverage foundation (+181 tests, 61.9% → 65.5%) by @gvonness-apolitical in #157
- Phase 3: Consolidate duplication in vector-store and tools by @gvonness-apolitical in #158
- Phase 4a: Break searchContext and ingestSession into pipeline stages by @gvonness-apolitical in #159
- Phase 4b: Table-drive config and extract VectorStore cleanup by @gvonness-apolitical in #160
- Fix 20 bugs from full codebase review by @gvonness-apolitical in #161
- Add shared bootstrap() and config test coverage (v0.10.2) by @gvonness-apolitical in #162
Full Changelog: v0.10.1...v0.10.2