-
6298069: Add single-pass multi-granularity conversion. The
convert-uscandconvert-ecfrcommands now accept--granularities section,chapter,title[,part]together with--output-chapter,--output-title, and--output-part(eCFR only) to produce every requested granularity from one parse of the source XML. The builders'emitAtoption accepts aReadonlySet<LevelType>in addition to a singleLevelType, and deeper levels emit first so that higher-level emissions see the complete subtree. Update scripts (update-usc.sh,update-ecfr.sh) collapse their Nconvert-*invocations into one, yielding a ~40-50% reduction in the incremental convert step's wall-clock on multi-granularity runs.Back-compat: the existing
-g/--granularity+-o/--outputsingle-granularity form continues to work unchanged and is mutually exclusive with--granularities.
-
28c1862: Fix eCFR title- and part-granularity emission.
convert-ecfr -g titleandconvert-ecfr -g partpreviously emitted stub files containing only frontmatter and an empty heading, because the builder's emit condition used>=instead of strict equality on the level index — every intermediate level (section, part, chapter) emitted standalone instead of aggregating into the parent's children tree.Align
EcfrASTBuilderwith the USLM builder's strict-equality behavior and populatetitle_namefromnode.headingwhen the emitted node itself is a title (a title has no title ancestor). Title-granularity output grows from ~289 bytes per title to ~400 KB per title with full chapter/part/section content inlined; part-granularity output now includes section content.
- f1cf97f: Persist API aggregate snapshots during ingest so the Data API can serve stats and Federal Register hierarchy endpoints without recomputing full-table aggregates on live requests.
- Add @lexbuild/mcp package — Model Context Protocol server for LexBuild
- fe043bf: Add incremental content update pipeline and documentation
- bee35c5: Docs update; Version bump
- 434ecfe: Bump version for docs site version sync
- 66af7d2: Update documentation for Data API: README.md, docs/, and internal docs
- 47a48df: Use PBKDF2 for API key hashing and fix CI test runner
- 0fef14e: Phase 5 of the Data API implementation. Adds full-text search across all three sources with faceted filtering, highlighting, and sort.
- e63fd69: Refactor shared API key schema and hashing to @lexbuild/core
- 92698e7: Phase 4 of the Data API implementation. Adds paginated document listings
- 62e6ad0: Data API Phase 0 implementation
- a94fa11: Phase 7 of the Data API implementation. Adds deploy script modes for API code and database deployment, and updates documentation across the monorepo.
- a63e95e: Data API Phase 1
- 2033419: Phase 3 of the Data API implementation.
- 9b7b181: Phase 6 of the Data API implementation. Adds API key management with SQLite-backed storage, tiered rate limiting, usage tracking, and CLI commands for key lifecycle management.
- 16aae5b: Prettier Formatting
- 15c21c9: Meilisearch Docker Container
- ae8e01c: Update documentation and CLAUDE.md files
- deb4785: Enrich FR with API JSON metadata
- 62f5fd3: Prettier Formatting
- 4599ccb: Cleanup and enhance comments throughout monorepo for better consistency
- c59e3a7: Patch Bump
- 428aaeb: Package README.md updates
- 0d01106: Implement Federal Register
- 974392c: Implement bulk xml downloader for federal register
- c873f5c: Update packages CLAUDE.md files
- 889a9c1: Fix parser error
- 89a630b: Fix FR conversion
- c3bec41: Implement concurrent downloads for FR
- c612cb6: Fix formatting issues with FR raw and rendered text
- 424d10c: Fix Federal Register downloader progress status; change 100ms request delay to 25ms for 4x faster throughput
- da51df3: bump version
- 9af2c94: @lexbuild/fr
- f2118bd: Phase 1 implementing Federal Register source
- 2a6e3f2: Implement Federal Register source
- d2e2520: Fix Claude PR Review Issues
- 9a8a655: Update CLAUDE.md files
- 67049b9: Update documentation for Federal Register source
- c8e6e86: Implement fixes for Claude PR Review issues
- 0c52c73: Fix ESLint errors
- a8b9cc1: Fix dependabot security vulnerabilities
- cab1c2c: Add download progress indicators
- f6d7281: fix: address PR review findings for download progress
- f89a4ee: chore(deps): bump yaml from ^2.7.0 to ^2.8.3
- cb27ce5: Astro SEO enhancements, JSON-LD, Twitter card support, and robots.txt
- 17cf9bf: add list-release-points to CLI command and release point history API
- d22de4d: Bump version
- 59c12a1: feat: per title data resolution and retry logic for eCFR API downloads
- 275f041: Address PR review feedback for download, highlights, and packaging
- c735a6f: Update convert command summary footer for titles, chapters, parts, and sections
- 82fb6cc: Manage Shiki's memory with forked child processes instead of a single process. Each child is 10k files and its memory is released back to the OS once highlighting is complete.
- 7fde270: Implement hierarchical filenames for downloaded .md files (i.e. usc-title-01-chapter-01-section-1.md)
- 95e44f5: eCFR data api fallbacks for when update is in progress; display date info during download
- 0305588: Prettier formatting issue fixes; pnpm format
- 268dc81: Update eCFR downloader to handle govinfo eCFR XML or eCFR.gov API XML
- 2abf796: Update monorepo README.md
- af2ea01: Fix eCFR frontmatter panel info
- 791ca5e: Set the eCFR data API as the default eCFR source (govinfo still available if desired)
- 65539ac: Update README.md files
- d71a5d8: Auto detect latest release of the USC and add options to choose previous release points
- 6a7111a: Add ENFILE/EMFILE retry wrapper for file writes in converters
- 93b4e78: refactor: remove Next.js web application, add Astro SSR app for browsing converted legal content
- #44
077dad9Thanks @chris-c-thomas! - Update turbo configuations and build scripts to better align with best practices
-
#40
3ecddf0Thanks @chris-c-thomas! - Refactor core packages for multiple source XML; add eCRF source; convert bulk eCRF XML to structured markdown. -
#40
e14242cThanks @chris-c-thomas! - Refactor download/convert commands to be namespaced to their respective sources -
#40
2a400d2Thanks @chris-c-thomas! - Add fourth granularity option to eCFR converter; by chapter
-
#40
13e0db4Thanks @chris-c-thomas! - Adjust downloader to gracefully skip reserved titles -
#40
bb5b8cfThanks @chris-c-thomas! - Update README.md files for core, usc, ecfr, and cli packages
- #37
f1fc762Thanks @chris-c-thomas! - Bump v1.8.0
- #35
9e4a623Thanks @chris-c-thomas! - Update for LexBuild deployment
- #33
69b95eaThanks @chris-c-thomas! - Change GitHub Actions to drop Node 20, keep 22, and add 24; Update documentation files to reflect those changes.
874a2deThanks @chris-c-thomas! - fix: resolve workspace:* dependencies to actual versions in published packages
- #29
ccae93bThanks @chris-c-thomas! - Refactor and enhance documentation
a0b59f6Thanks @chris-c-thomas! - Update additional references of lexbuild to LexBuild where appropriate
265bc0fThanks @chris-c-thomas! - Update README.md files
- #25
8c294fbThanks @chris-c-thomas! - Version bump v1.4.0
- #23
6ed94e2Thanks @chris-c-thomas! - Fix incorrect output structure for chapter conversions, update web app, and modify convert command's summary stats.
- #21
e42b53bThanks @chris-c-thomas! - Bump to v1.2.0
- #18
e216a97Thanks @chris-c-thomas! - Fix backslash escaping vulnerability; add permissions to ci.yml
-
#15
b60c8a5Thanks @chris-c-thomas! - Improve CLI help output with usage examples, granularity descriptions, and documentation links -
#14
0968b27Thanks @chris-c-thomas! - Add "title" output granularity (-g title) that produces a single Markdown file per title with recursive heading
-
#16
0672a8bThanks @chris-c-thomas! - Remove null return type from writeWholeTitle -
#16
18578e8Thanks @chris-c-thomas! - Fix additional heading collisions, token estimation inconsistencies, and validate granularity commands to prevent invalid options -
#14
bd0ac38Thanks @chris-c-thomas! - Fix heading level issues -
#16
1faf32aThanks @chris-c-thomas! - Additional clceanup -
#14
6e50a6fThanks @chris-c-thomas! - Fix doc heading format and chapter count inconsistency -
#14
45007c1Thanks @chris-c-thomas! - Fixed chapter related output with regard to headings and metadata -
#14
e88a24eThanks @chris-c-thomas! - Fix section heading collision at depth 5 -
#16
f33a033Thanks @chris-c-thomas! - Fix token estimation for title-level conversions -
#14
db9bf75Thanks @chris-c-thomas! - Fix appendix naming conflicts
- #12
0e49c15Thanks @chris-c-thomas! - Update files to reference lexbuild as LexBuild as the project name
- f86d74e: Quick fix
- 2598707: Fix README.md badge
- baaeba1: Update READMEs and package.json files
- 54219a7: Fix links that display on the npm registry
- Add package README.md files
- First stable release. Converts all 54 titles of the U.S. Code from USLM XML to structured Markdown optimized for AI, RAG pipelines, and semantic search.
- Cleanup repo
- lexbuild convert --all now scans --input-dir for whatever usc{NN}.xml
- Cleanup files in project
- Enhance downloader for when all titles are downloaded
- 529f4bf: CLI TUI formatting fixes
- 3a29a8e: Add
--titlesmulti-select option to download and convert commands. Supports ranges (1-5), comma-separated lists
- Add chalk, ora, and cli-table3 for polished terminal output with spinners and formatted
- Phase 4: Polish and Publish — snapshot tests, title-level README generation, CI/CD, documentation polish
- Phase 3: Scale & Download
- feat(usc): OLRC downloader with zip extraction and release point support
- feat(cli):
lexbuild downloadcommand with--title,--all,--release-point - feat(usc,cli):
--dry-runmode for convert command - feat(usc,cli): peak memory and token reporting in convert output
- feat(core,usc): handle appendix titles with separate output directories
- feat(usc): disambiguate duplicate section numbers with
-2suffix - feat(usc): status edge cases (repealed, reserved, transferred) in frontmatter and
_meta.json
- abf4e13: Phase 2: Content Fidelity
- Fix extra blank lines in multi-paragraph content blocks
- Cross-reference link resolver with register/resolve/fallback and two-pass wiring
- XHTML table conversion to Markdown pipe tables
- USLM layout table conversion for TOC structures and tabular notes
- Notes filtering with --no-include-notes, --include-editorial-notes, --include-statutory-notes, --include-amendments
- _meta.json sidecar index generation at title and chapter levels
- Chapter-level granularity mode (--granularity chapter)
- Fix collector zone ordering bug (table/layout/toc checked before normal handlers)
- E2E verified against Title 1 (39 sections) and Title 5 (1162 sections)
- Phase 1: Foundation — initial implementation
- SAX streaming XML parser with namespace normalization
- AST node types and stack-based builder with section-emit pattern
- Markdown renderer with bold inline numbering, cross-reference link modes, notes, and blockquotes
- YAML frontmatter generator with format versioning
- USC converter pipeline: XML → parse → build → render → write section files
- CLI
convertcommand with output directory, link style, and source credit options - E2E verified against Title 1 (39 sections, 3 chapters)