v0.1.8
What's Changed (93 commits since v0.1.7)
Concurrency & lifecycle hardening (15 PRs)
Systematic audit covering all SQLite stores, MCP client connections, proxy connection stacks, and compressor lifecycle. Key fixes: init-failure cleanup (#127, #141), cache stampede locks (#137, #139), LLMCompressor drain gate (#140), surfacing dedup/boost races (#133, #134).
Failure-path guards
- Auto-index stage guarded so failures don't kill agent response (F1)
- Surfacing drops
surfacing_idon record failure (S1) exc_info=Trueadded to inner auto-index/fact-index failure logs- Surfacing cache invalidation on negative feedback (#148)
Input validation & safety
Config precedence fix (#116), atomic CLI writes (#115), Pydantic constraints (#109), empty API key rejection (#123), max_upstream_chars OOM guard (#118), upstream result.content=None defense (#114, #119), pipeline error metrics (#117).
Features & performance
- BM25 tokenizer extended to Cyrillic, Arabic, Devanagari, Thai (#94)
- Periodic
cleanup_expired()for seen_memories - Hot-path regex hoisted to module level (#112)
- PRAGMA tuning centralized across all SQLite stores (#96)
Documentation
- Post-v0.1.7 full audit: 11 files updated (#150)
- New: Custom Integration guide for FileIndexer wiring (#149)
MEMTOMEM_STM_LOG_LEVELenv var documented across configuration, operations, CLI, and notebook 05
Tests
Coverage for memory ops, CLI, surfacing webhooks, privacy, circuit breaker, embedding provider, relevance scorer, and LLM compressor lifecycle (#84-#101).
Full Changelog: v0.1.7...v0.1.8