Skip to content

v0.4.1: Catalog SQLite index, bls_search_series restored, OES gate

Choose a tag to compare

@cyanheads cyanheads released this 05 Jun 04:18
v0.4.1
a0d3043

Catalog SQLite index, bls_search_series restored, OES gate

Moves the LABSTAT series catalog from in-memory parse to an on-disk SQLite FTS5 store (sqliteMirrorStore). Off-heap storage removes the multi-GB heap footprint; search narrows via FTS5 then applies the bespoke relevance rescore.

Restores bls_search_series (#34) — download.bls.gov (Akamai) was returning 403 for any User-Agent containing a URL. The default UA drops the embedded GitHub URL, keeping name + contact email only.

Changed:

  • BlsCatalogService backed by sqliteMirrorStore FTS5 index, queried on demand (#33)
  • BLS_CATALOG_CACHE_PATH renamed BLS_CATALOG_DB_PATH (default .cache/bls-catalog.db)
  • User-Agent URL removed — cyanheads-bls-mcp/1.0 (casey@caseyjhand.com)
  • Dockerfile: mkdir .cache/.mirror + chown bun for non-root container user

Fixed:

  • bls_search_series returning 0 results — Akamai 403 on catalog download was silently emptying the index (#34)

Added:

  • BLS_CATALOG_INCLUDE_OES gate (default false) — OES/OEWS (~6M series / ~1.2 GB) opt-in; stays fetchable by ID when off (#33)

157 tests pass; bun run devcheck clean.