code-kb v1.0.2
Release Notes: code-kb v1.0.2
code-kb v1.0.2 is a patch release that fixes the extractor version guard, shrinks the index by asking julie-extract for the facts extraction level, and ties extractor scans to the code-kb process that started them. It requires julie-extract 3.0.0, which ships inside every release archive.
What's Changed
1. Extractor Version Guard (Defect Fix)
- Rebuild loop fixed: The index guard now compares the recorded extractor version with the
julie-extractbinary in use, not with the pin. A non-pinned extractor caused a full index rebuild on every tool call and every server start. Reproduced on a two-file repo: three reads, three rebuilds. - Pinned-first discovery: Among
JULIE_EXTRACT_BIN, the executable's sibling,.tools/julie-extractup the directory tree, andPATH, the first candidate whose version matches the pin wins. A repository that vendors its own olderjulie-extractno longer overrides the installed one. - Level guard: An index recorded at another extraction level is rebuilt once.
2. Smaller Index (facts Extraction Level)
- New artifacts are built with
julie-extract scan --level facts: the symbol core, structural facts, literals, and the type-usage and member-access identifiers, without the call and variable-reference identifiers and thesource_regionstable thatcode-kbnever reads. On a 12,788-file repository this cuts the index from 3.9 GB to 1.7 GB, the scan from 85 s to 52 s, and peak extractor memory from 5.3 GB to 2.6 GB, with identical structural-fact and literal counts. - Existing
full-level indexes are rebuilt once on the first call.
3. References Beyond Calls
find_references(direction="callers")now also returns type usages (annotations, casts) and member accesses of the name, read from the extractor's identifier rows. Before, a class, type, or field only showed its call sites.
4. Call Resolution Ranking
- Unresolved call edges are matched to definitions by name and now ranked by the call site. A bare call prefers a same-named definition in the same file, then in the same directory, before merging with all others. A method call through a variable prefers the method on the variable's recorded type (parameters, annotated bindings,
self). - The five copies of the matching predicate in
find_references,get_symbol_context, andblast_radiusnow share one function, so all three tools rank the same way. - On a 12,788-file repository, 11,879 of 39,405 ambiguous bare-call edges narrow to exactly one definition.
- The receiver rule narrows fewer edges (2,529 of 175,256 ambiguous method calls on the same repository) because the extractor records variable types only for parameters, annotated bindings, and
self.
5. Syntax Validation Moves to the Extractor
replace_symbol_bodynow validates the proposed file text withjulie-extract check(new in julie-extract 3.0.0) instead of five bundled tree-sitter grammars. Every language the extractor parses is now checked, not only Rust, JavaScript, TypeScript, Python, and Go.- The six tree-sitter crates are gone from the dependency tree. This release pins julie-extract 3.0.0.
6. Plugin Installs Without a Manual Binary Step
- Every harness plugin now starts
code-kbthroughbin/code-kb-launcher.cjs, a dependency-free Node script. On first run it downloads the release archive for the plugin's version, verifies the SHA-256 sidecar, and unpackscode-kbandjulie-extractinto~/.code-kb/dist/<version>/. Later runs start instantly. - New Antigravity plugin manifests (
plugin.json,mcp.json,mcp_config.json,hooks.json) soagy plugin installworks like Claude Code and Codex. - Node.js 18 or newer is now required for plugin installs. Manual installs of the release archive work as before.
CODE_KB_HOME,CODE_KB_VERSION, andCODE_KB_BINsteer the launcher. A binary or symlink at~/.code-kb/bin/code-kboverrides the download in every harness, and a plugin installed from a source checkout runs that checkout'starget/release/code-kbwhen it exists.
7. Extractor Process Hygiene
- Parent watchdog: Scans pass
--parent-pid(Unix), so an extractor scan aborts when thecode-kbprocess that started it dies. - Empty artifact recovery: A zero-byte or unreadable
artifact.dbleft by an interrupted scan is removed and rebuilt instead of failing every laterscan.
8. Index Self-Healing in the CLI and at Session Start
- CLI commands now build a missing index and reconcile a stale one before answering, the same as the MCP server. A fresh clone or a new git worktree no longer needs
code-kb scanfirst, and a worktree copies its parent repository's index instead of scanning. - The MCP server reconciles the index in the background at startup; the first tool call now waits for that reconciliation, so a lookup right after a branch switch no longer answers from the stale index.
9. Install Guidance
- The README states that
cargo install code-kb-cliinstallscode-kbonly and where to get the pinnedjulie-extract. - The missing-extractor error names the download page.
- The README now explains how the server finds the workspace and shows
--rootin every GUI-app config (Cursor, OpenCode, Claude Desktop, the Antigravity IDE). Terminal harnesses keepcode-kb servewith no flag.
Crates.io
code-kb-core 1.0.2 and code-kb-cli 1.0.2 are published. cargo install code-kb-cli builds code-kb only; cargo binstall code-kb-cli fetches the release archive below. Both need julie-extract 3.0.0 from the julie-extractors releases on PATH or in JULIE_EXTRACT_BIN.
Assets & Checksums
Bundled release archives include matching precompiled code-kb and pinned julie-extract (v3.0.0) binaries:
| Archive | Platform | SHA256 Checksum |
|---|---|---|
code-kb-v1.0.2-x86_64-unknown-linux-gnu.tar.gz |
Linux x86_64 | 9e86596baf3c84ec2874e7b4a4fe0f0590d5e6ab4e6af851bb4b0579f8bf7957 |
code-kb-v1.0.2-aarch64-apple-darwin.tar.gz |
macOS Apple Silicon | 03ff5fef1e18b3b25166eee9f6af2d607a3a1b34e55f7eafb2c4b7b4c32ac534 |
code-kb-v1.0.2-x86_64-apple-darwin.tar.gz |
macOS Intel | 7a462f0f072c5e071c2098ac1d952a9ce2f77b1a53a6ca924694c9bda5fdd730 |
code-kb-v1.0.2-x86_64-pc-windows-msvc.zip |
Windows x86_64 | b2ab4635e381ec70133e0fe1e0e57513827fcc3980fdbfb8c808b02bbc8b28de |