From c5eebe6beba7e0c251439f3c46d8445e0184f387 Mon Sep 17 00:00:00 2001 From: Colby McHenry Date: Thu, 16 Jul 2026 20:13:51 -0500 Subject: [PATCH] =?UTF-8?q?feat(kernel):=20R1=20scaffold=20=E2=80=94=20nap?= =?UTF-8?q?i-rs=20extraction=20kernel,=20buffer=20contract,=20routing=20+?= =?UTF-8?q?=20fallback,=20grammar-parity=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 0 of the Rust extraction-kernel migration (docs/design/ rust-kernel-migration-plan.md, now checked in with §3a recording the shipped state): - codegraph-kernel/ napi-rs crate: extractFile(path, content, language) → five flat buffers (meta/nodes/edges/refs/arena), one JS boundary crossing per file. Node ids computed Rust-side, byte-identical to generateNodeId (pinned by test vector). Reserved per-node metrics slot for the Arc 3.2 code-metrics work. - Generic .scm-driven emitter (@def./@name/@ref. captures, byte-range scope stack → ::-joined qualified names, contains edges, refs attributed to the innermost enclosing symbol). Seed TS/JS queries are smoke-level; R2 replaces them with the full port. - Routing seam in extractFromSource with per-file wasm fallback. DEFAULT_ROUTED is empty — no behavior change until a language passes its equivalence gate (R3). Dev opt-in: CODEGRAPH_KERNEL_LANGS. Kill switch: CODEGRAPH_KERNEL=0. Loader verifies ABI + kind tables before routing; EDGE_KINDS became a runtime array because kind order is now wire contract. - Grammar-source parity: vendored TS/TSX/JS wasm grammars built from the exact crate revisions (tree-sitter-typescript v0.23.2, tree-sitter-javascript v0.25.0, checked-in parser.c, ts-cli 0.25.10) — the tree-sitter-wasms builds were 2023-era, which the new kernel-grammar-parity test caught on day one. Production TS/JS parsing gets 2.5 years of grammar fixes; full suite green (2456 tests). - Build/release wiring: scripts/build-kernel.sh + npm run build:kernel; release.yml kernel prebuild matrix (continue-on-error — the kernel is optional everywhere, bundles fall back to the wasm path); bundles stage lib/kernel/codegraph-kernel.node; release job runs the kernel suites with CODEGRAPH_KERNEL_EXPECT=1. Co-Authored-By: Claude Fable 5 --- .github/workflows/release.yml | 63 ++ CHANGELOG.md | 1 + __tests__/kernel-grammar-parity.test.ts | 70 +++ __tests__/kernel-scaffold.test.ts | 192 +++++++ codegraph-kernel/.gitignore | 3 + codegraph-kernel/Cargo.lock | 542 ++++++++++++++++++ codegraph-kernel/Cargo.toml | 32 ++ codegraph-kernel/build.rs | 3 + codegraph-kernel/queries/javascript.scm | 12 + codegraph-kernel/queries/typescript.scm | 21 + codegraph-kernel/src/buffers.rs | 387 +++++++++++++ codegraph-kernel/src/emitter.rs | 300 ++++++++++ codegraph-kernel/src/ids.rs | 53 ++ codegraph-kernel/src/langs.rs | 78 +++ codegraph-kernel/src/lib.rs | 104 ++++ docs/design/rust-kernel-migration-plan.md | 270 +++++++++ package.json | 1 + scripts/build-bundle.sh | 20 + scripts/build-kernel.sh | 82 +++ src/extraction/grammars.ts | 13 + src/extraction/kernel/decode.ts | 176 ++++++ src/extraction/kernel/index.ts | 95 +++ src/extraction/kernel/layout.ts | 102 ++++ src/extraction/kernel/loader.ts | 148 +++++ src/extraction/tree-sitter.ts | 13 +- .../wasm/tree-sitter-javascript.wasm | Bin 0 -> 411832 bytes src/extraction/wasm/tree-sitter-tsx.wasm | Bin 0 -> 1445641 bytes .../wasm/tree-sitter-typescript.wasm | Bin 0 -> 1414055 bytes src/types.ts | 39 +- 29 files changed, 2804 insertions(+), 16 deletions(-) create mode 100644 __tests__/kernel-grammar-parity.test.ts create mode 100644 __tests__/kernel-scaffold.test.ts create mode 100644 codegraph-kernel/.gitignore create mode 100644 codegraph-kernel/Cargo.lock create mode 100644 codegraph-kernel/Cargo.toml create mode 100644 codegraph-kernel/build.rs create mode 100644 codegraph-kernel/queries/javascript.scm create mode 100644 codegraph-kernel/queries/typescript.scm create mode 100644 codegraph-kernel/src/buffers.rs create mode 100644 codegraph-kernel/src/emitter.rs create mode 100644 codegraph-kernel/src/ids.rs create mode 100644 codegraph-kernel/src/langs.rs create mode 100644 codegraph-kernel/src/lib.rs create mode 100644 docs/design/rust-kernel-migration-plan.md create mode 100755 scripts/build-kernel.sh create mode 100644 src/extraction/kernel/decode.ts create mode 100644 src/extraction/kernel/index.ts create mode 100644 src/extraction/kernel/layout.ts create mode 100644 src/extraction/kernel/loader.ts create mode 100755 src/extraction/wasm/tree-sitter-javascript.wasm create mode 100755 src/extraction/wasm/tree-sitter-tsx.wasm create mode 100755 src/extraction/wasm/tree-sitter-typescript.wasm diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 46e3b80..06a3f97 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,8 +29,45 @@ permissions: attestations: write # store the GitHub artifact attestations for the bundles jobs: + # Native extraction-kernel prebuilds (docs/design/rust-kernel-migration-plan.md). + # The kernel is an OPTIONAL per-language speedup: a bundle without a .node + # runs the wasm extraction path unchanged. continue-on-error keeps a Rust + # toolchain flake from ever blocking a release — the release job runs with + # whatever prebuilds succeeded. (Runner images ship rustup; build-kernel.sh + # adds each cross target itself.) + kernel: + continue-on-error: true + strategy: + fail-fast: false + matrix: + include: + - runner: macos-14 + targets: aarch64-apple-darwin x86_64-apple-darwin + - runner: ubuntu-22.04 # oldest glibc runner → widest compatibility + targets: x86_64-unknown-linux-gnu + - runner: ubuntu-22.04-arm + targets: aarch64-unknown-linux-gnu + - runner: windows-latest + targets: x86_64-pc-windows-msvc aarch64-pc-windows-msvc + runs-on: ${{ matrix.runner }} + steps: + - uses: actions/checkout@v6 + - name: Build kernel prebuilds + shell: bash + run: | + for t in ${{ matrix.targets }}; do + bash scripts/build-kernel.sh --target "$t" + done + ls -R codegraph-kernel/prebuilds + - uses: actions/upload-artifact@v4 + with: + name: kernel-${{ matrix.runner }} + path: codegraph-kernel/prebuilds/ + if-no-files-found: error + release: runs-on: ubuntu-latest + needs: kernel steps: - uses: actions/checkout@v6 with: @@ -127,6 +164,32 @@ jobs: git push origin "HEAD:${GITHUB_REF#refs/heads/}" fi + - name: Download kernel prebuilds + # Best-effort: whatever platform legs succeeded land in release/kernel/ + # (/codegraph-kernel.node); build-bundle.sh includes a target's + # kernel when present and falls back to the wasm path when not. + continue-on-error: true + uses: actions/download-artifact@v4 + with: + pattern: kernel-* + merge-multiple: true + path: release/kernel/ + + - name: Kernel contract + grammar-parity gate + # Asserts the native grammars and the vendored wasm grammars are built + # from the same grammar revisions (node-kind/field tables compared id + # by id) and that the .node speaks the expected wire contract. + # CODEGRAPH_KERNEL_EXPECT=1 turns a missing binary into a FAILURE here + # so the gate can't silently pass by not building the kernel. + run: | + if [ -f release/kernel/linux-x64/codegraph-kernel.node ]; then + mkdir -p codegraph-kernel/prebuilds/linux-x64 + cp release/kernel/linux-x64/codegraph-kernel.node codegraph-kernel/prebuilds/linux-x64/ + CODEGRAPH_KERNEL_EXPECT=1 npx vitest run __tests__/kernel-scaffold.test.ts __tests__/kernel-grammar-parity.test.ts + else + echo "::warning::no linux-x64 kernel prebuild — skipping kernel gate (bundles ship wasm-only)" + fi + - name: Build all platform bundles run: | for t in darwin-arm64 darwin-x64 linux-x64 linux-arm64 win32-x64 win32-arm64; do diff --git a/CHANGELOG.md b/CHANGELOG.md index a22a62b..656fc7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Fixes +- TypeScript, TSX, and JavaScript files now parse with up-to-date grammars — modern syntax such as `using` declarations and import attributes no longer trips parse errors that could drop surrounding symbols. (The previously bundled grammars dated from 2023.) - Searching or exploring by field names now finds the code that defines them. A query made of object keys or API field names (`profileInfo isTrialEligible quotaInfo billingMethod`) used to return unrelated results while the defining files never appeared, because three retrieval steps each dropped multi-word camelCase terms: an internal case-comparison bug, a match step that only considered classes (never functions or methods), and exploration seeding that required exact symbol-name matches. All three are fixed — `codegraph_explore` with a bag of field names now surfaces the controllers and services that assemble those fields. (#1196) - `codegraph.json`'s `includeIgnored` works again for the "folder of repos" layout: when one `.gitignore` rule covers a parent directory (`/repos/`) holding several embedded git repositories, opting in the individual repos (`"includeIgnored": ["repos/a/"]` — the exact spelling `codegraph init`'s own hint suggests) previously matched nothing and indexed zero files, looping the same suggestion back at you. Both spellings now work — name the parent directory to opt in everything under it, or name individual repos to opt in just those — and the hint no longer re-suggests repos that are already configured. (#1295) - Method calls on literals (`", ".join(...)` in Python, `"x".split(...)` in JavaScript, and the like) no longer produce call edges to unrelated project functions that happen to share the builtin's name — a codebase with a function called `join`, `get`, or `update` could show phantom callers from every string-builtin use. Additionally, a function nested inside another function is now only matched as a call target from inside its container, since it isn't reachable from anywhere else. Blast-radius and affected-test results get cleaner on Python and JavaScript codebases especially. (#1230) diff --git a/__tests__/kernel-grammar-parity.test.ts b/__tests__/kernel-grammar-parity.test.ts new file mode 100644 index 0000000..6081486 --- /dev/null +++ b/__tests__/kernel-grammar-parity.test.ts @@ -0,0 +1,70 @@ +/** + * Grammar-source parity gate (R1, migration plan §3.5). + * + * The native kernel compiles grammars from crates.io / vendored sources; the + * wasm fallback loads grammars from tree-sitter-wasms / src/extraction/wasm. + * If the two are built from different grammar revisions, a language's graph + * would depend on WHICH path extracted it — per-language routing (and the + * kernel-absent fallback) must be graph-neutral. + * + * Rather than trusting version metadata, this asserts the grammars are + * behaviorally identical where extraction can observe them: ABI version and + * the full node-kind and field tables, compared id by id. + * + * Runs wherever a kernel binary is staged (scripts/build-kernel.sh); skips + * otherwise. CI that builds the kernel sets CODEGRAPH_KERNEL_EXPECT=1 so the + * skip can't mask a missing build (asserted in kernel-scaffold.test.ts). + */ + +import { describe, it, expect, beforeAll } from 'vitest'; +import * as fs from 'fs'; +import * as path from 'path'; +import type { Language as WasmLanguage } from 'web-tree-sitter'; +import { getKernel, resetKernelForTests } from '../src/extraction/kernel'; +import { initGrammars, loadGrammarsForLanguages, getParser } from '../src/extraction/grammars'; +import type { Language } from '../src/types'; + +const KERNEL_PATH = path.join( + __dirname, + '..', + 'codegraph-kernel', + 'prebuilds', + `${process.platform}-${process.arch}`, + 'codegraph-kernel.node' +); +const kernelBuilt = fs.existsSync(KERNEL_PATH); + +// Every kernel-capable language. `jsx` shares the javascript grammar on BOTH +// paths (langs.rs mirrors WASM_GRAMMAR_FILES), so the distinct grammars are: +const GRAMMAR_LANGUAGES: Language[] = ['typescript', 'tsx', 'javascript']; + +describe.skipIf(!kernelBuilt)('kernel↔wasm grammar parity', () => { + beforeAll(async () => { + resetKernelForTests(); + await initGrammars(); + await loadGrammarsForLanguages(GRAMMAR_LANGUAGES); + }); + + it.each(GRAMMAR_LANGUAGES)('%s: node-kind and field tables are identical', (language) => { + const kernel = getKernel(); + expect(kernel).not.toBeNull(); + const native = kernel!.grammarInfo(language); + expect(native, `kernel has no grammar for ${language}`).not.toBeNull(); + + const wasmLang = getParser(language)?.language as WasmLanguage | null | undefined; + expect(wasmLang, `wasm grammar for ${language} not loaded`).toBeTruthy(); + + expect(native!.abiVersion, 'grammar ABI version').toBe(wasmLang!.abiVersion); + expect(native!.nodeKindCount, 'node-kind count').toBe(wasmLang!.nodeTypeCount); + expect(native!.fieldCount, 'field count').toBe(wasmLang!.fieldCount); + + const wasmKinds: (string | null)[] = []; + for (let i = 0; i < wasmLang!.nodeTypeCount; i++) wasmKinds.push(wasmLang!.nodeTypeForId(i)); + expect(native!.nodeKinds).toEqual(wasmKinds.map((k) => k ?? '')); + + // Field ids are 1-based on both sides. + const wasmFields: (string | null)[] = []; + for (let i = 1; i <= wasmLang!.fieldCount; i++) wasmFields.push(wasmLang!.fieldNameForId(i)); + expect(native!.fieldNames).toEqual(wasmFields.map((f) => f ?? '')); + }); +}); diff --git a/__tests__/kernel-scaffold.test.ts b/__tests__/kernel-scaffold.test.ts new file mode 100644 index 0000000..70bd224 --- /dev/null +++ b/__tests__/kernel-scaffold.test.ts @@ -0,0 +1,192 @@ +/** + * Native-kernel scaffold tests (R1, docs/design/rust-kernel-migration-plan.md). + * + * Covers the wire contract, decoder, routing policy, kill switch, and + * per-file fallback. These are SCAFFOLD tests — behavioral parity with the + * wasm extractors is R3's equivalence gate, not asserted here. + * + * The kernel binary is optional: without a staged .node + * (scripts/build-kernel.sh) the suite skips. CI that builds the kernel sets + * CODEGRAPH_KERNEL_EXPECT=1, which turns "missing binary" into a FAILURE so + * the gate can't silently pass by not building the kernel. + */ + +import { describe, it, expect, beforeAll, beforeEach, afterEach } from 'vitest'; +import * as fs from 'fs'; +import * as path from 'path'; +import { NODE_KINDS, EDGE_KINDS } from '../src/types'; +import { generateNodeId } from '../src/extraction/tree-sitter-helpers'; +import { getKernel, tryKernelExtract, kernelRoutes, resetKernelForTests } from '../src/extraction/kernel'; +import { extractFromSource } from '../src/extraction'; +import { initGrammars, loadGrammarsForLanguages } from '../src/extraction/grammars'; + +const KERNEL_PATH = path.join( + __dirname, + '..', + 'codegraph-kernel', + 'prebuilds', + `${process.platform}-${process.arch}`, + 'codegraph-kernel.node' +); +const kernelBuilt = fs.existsSync(KERNEL_PATH); +const expectKernel = process.env.CODEGRAPH_KERNEL_EXPECT === '1'; + +const FIXTURE = [ + 'export class MathHelper {', + ' calculateTotal(a: number): number { return helper(a); }', + '}', + 'function helper(x: number): number { return x * 2; }', + 'helper(3);', + '', +].join('\n'); + +const ENV_KEYS = ['CODEGRAPH_KERNEL', 'CODEGRAPH_KERNEL_LANGS', 'CODEGRAPH_KERNEL_PATH'] as const; +let savedEnv: Record; + +beforeEach(() => { + savedEnv = Object.fromEntries(ENV_KEYS.map((k) => [k, process.env[k]])); + for (const k of ENV_KEYS) delete process.env[k]; + resetKernelForTests(); +}); + +afterEach(() => { + for (const k of ENV_KEYS) { + if (savedEnv[k] === undefined) delete process.env[k]; + else process.env[k] = savedEnv[k]; + } + resetKernelForTests(); +}); + +it.runIf(expectKernel)('kernel binary must exist when CODEGRAPH_KERNEL_EXPECT=1', () => { + expect(kernelBuilt, `expected kernel at ${KERNEL_PATH} — run scripts/build-kernel.sh`).toBe(true); +}); + +describe.skipIf(!kernelBuilt)('kernel scaffold', () => { + it('loads and its kind tables match src/types.ts exactly', () => { + const kernel = getKernel(); + expect(kernel).not.toBeNull(); + const info = kernel!.contractInfo(); + expect(info.nodeKinds).toEqual([...NODE_KINDS]); + expect(info.edgeKinds).toEqual([...EDGE_KINDS]); + expect(info.languages).toContain('typescript'); + expect(info.languages).toContain('javascript'); + }); + + it('no language routes to the kernel by default (R1: wasm path unchanged)', () => { + expect(kernelRoutes('typescript')).toBe(false); + expect(tryKernelExtract('src/a.ts', 'function f() {}', 'typescript')).toBeNull(); + }); + + describe('with typescript routed (CODEGRAPH_KERNEL_LANGS)', () => { + beforeEach(() => { + process.env.CODEGRAPH_KERNEL_LANGS = 'typescript'; + }); + + it('decodes nodes, contains edges, and calls refs from the buffers', () => { + const result = tryKernelExtract('src/utils.ts', FIXTURE, 'typescript'); + expect(result).not.toBeNull(); + const { nodes, edges, unresolvedReferences, errors } = result!; + expect(errors).toEqual([]); + + const byKind = (kind: string) => nodes.filter((n) => n.kind === kind); + expect(byKind('file')).toHaveLength(1); + expect(byKind('class').map((n) => n.name)).toEqual(['MathHelper']); + expect(byKind('method').map((n) => n.qualifiedName)).toEqual(['MathHelper::calculateTotal']); + expect(byKind('function').map((n) => n.name)).toEqual(['helper']); + + const file = byKind('file')[0]!; + expect(file.id).toBe('file:src/utils.ts'); + expect(file.qualifiedName).toBe('src/utils.ts'); + expect(file.endLine).toBe(FIXTURE.split('\n').length); + expect(file.isExported).toBe(false); + + // Every node carries the decode-call constants. + for (const n of nodes) { + expect(n.filePath).toBe('src/utils.ts'); + expect(n.language).toBe('typescript'); + expect(n.updatedAt).toBeGreaterThan(0); + } + + // contains: file→class, class→method, file→function. + const contains = edges.filter((e) => e.kind === 'contains'); + const cls = byKind('class')[0]!; + const method = byKind('method')[0]!; + const fn = byKind('function')[0]!; + expect(contains).toContainEqual({ source: file.id, target: cls.id, kind: 'contains' }); + expect(contains).toContainEqual({ source: cls.id, target: method.id, kind: 'contains' }); + expect(contains).toContainEqual({ source: file.id, target: fn.id, kind: 'contains' }); + + // calls refs attach to the innermost enclosing symbol (method for the + // in-body call, file node for the top-level call). + const calls = unresolvedReferences.filter((r) => r.referenceKind === 'calls'); + expect(calls.map((r) => [r.fromNodeId, r.referenceName])).toEqual([ + [method.id, 'helper'], + [file.id, 'helper'], + ]); + for (const r of calls) { + expect(r.filePath).toBe('src/utils.ts'); + expect(r.language).toBe('typescript'); + expect(r.line).toBeGreaterThan(0); + } + }); + + it('kernel node ids are byte-identical to generateNodeId', () => { + const result = tryKernelExtract('src/utils.ts', FIXTURE, 'typescript')!; + for (const n of result.nodes) { + if (n.kind === 'file') continue; + expect(n.id).toBe(generateNodeId('src/utils.ts', n.kind, n.name, n.startLine)); + } + }); + + it('CODEGRAPH_KERNEL=0 kill switch disables routing', () => { + process.env.CODEGRAPH_KERNEL = '0'; + expect(kernelRoutes('typescript')).toBe(false); + expect(tryKernelExtract('src/a.ts', FIXTURE, 'typescript')).toBeNull(); + }); + + it('languages outside the route stay on the wasm path', () => { + expect(kernelRoutes('javascript')).toBe(false); + expect(tryKernelExtract('src/a.js', 'function f() {}', 'javascript')).toBeNull(); + }); + + it('tsx routes with its own entry and returns a graph', () => { + process.env.CODEGRAPH_KERNEL_LANGS = 'typescript,tsx'; + const result = tryKernelExtract( + 'src/App.tsx', + 'export function App() { return render(); }\n', + 'tsx' + ); + expect(result).not.toBeNull(); + expect(result!.nodes.some((n) => n.kind === 'function' && n.name === 'App')).toBe(true); + }); + }); + + describe('extractFromSource seam', () => { + beforeAll(async () => { + await initGrammars(); + await loadGrammarsForLanguages(['typescript']); + }); + + it('unrouted language flows through the wasm extractor unchanged', () => { + // `const f = () => 1` yields a function node on the wasm path; the seed + // kernel query deliberately doesn't extract it — so its presence proves + // which path ran. + const result = extractFromSource('src/a.ts', 'export const f = () => 1;\n', 'typescript'); + expect(result.nodes.some((n) => n.kind === 'function' && n.name === 'f')).toBe(true); + }); + + it('routed language takes the kernel and falls back per file on kernel absence', () => { + process.env.CODEGRAPH_KERNEL_LANGS = 'typescript'; + const viaKernel = extractFromSource('src/utils.ts', FIXTURE, 'typescript'); + expect(viaKernel.nodes.map((n) => n.kind)).toContain('method'); + + // Point the loader at a nonexistent binary: routing is requested but the + // kernel can't load, so the SAME call must fall back to wasm, not fail. + process.env.CODEGRAPH_KERNEL_PATH = path.join(__dirname, 'nope', 'missing.node'); + process.env.CODEGRAPH_KERNEL = '0'; // and belt-and-braces the kill switch + resetKernelForTests(); + const viaWasm = extractFromSource('src/utils.ts', FIXTURE, 'typescript'); + expect(viaWasm.nodes.some((n) => n.kind === 'class' && n.name === 'MathHelper')).toBe(true); + }); + }); +}); diff --git a/codegraph-kernel/.gitignore b/codegraph-kernel/.gitignore new file mode 100644 index 0000000..ae0e1e5 --- /dev/null +++ b/codegraph-kernel/.gitignore @@ -0,0 +1,3 @@ +target/ +prebuilds/ +*.node diff --git a/codegraph-kernel/Cargo.lock b/codegraph-kernel/Cargo.lock new file mode 100644 index 0000000..ee255a5 --- /dev/null +++ b/codegraph-kernel/Cargo.lock @@ -0,0 +1,542 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cc" +version = "1.2.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "codegraph-kernel" +version = "0.1.0" +dependencies = [ + "napi", + "napi-build", + "napi-derive", + "sha2", + "streaming-iterator", + "tree-sitter", + "tree-sitter-javascript", + "tree-sitter-typescript", +] + +[[package]] +name = "convert_case" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "affbf0190ed2caf063e3def54ff444b449371d55c58e513a95ab98eca50adb49" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a394189d59f9befacce833f337f7b1eca5e9a91221bcdd4d28e0114d96e597b3" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libloading" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "napi" +version = "3.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6826e5ddc15589b2d68c8ad5321c18e85d40488e93e32962f362e572669bccf6" +dependencies = [ + "bitflags", + "ctor", + "futures", + "napi-build", + "napi-sys", + "nohash-hasher", + "rustc-hash", +] + +[[package]] +name = "napi-build" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c366d2c8c60b86fa632df75f745509b52f9128f91a6bad4c796e44abb505e1" + +[[package]] +name = "napi-derive" +version = "3.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fe526e81c105d3640516fcde83909dd1afe757c0d7a15af58830b5bc0fb9a1" +dependencies = [ + "convert_case", + "ctor", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "napi-derive-backend" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514281397bcddd9ea9a876c7a21a57bff2374237a000ca9a64ea0211ec1993e2" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "semver", + "syn", +] + +[[package]] +name = "napi-sys" +version = "3.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e43cf2eb0bd1bf95a43c07c076ebd2da5d1e015a71c3d201faeffffcc0ecac" +dependencies = [ + "libloading", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "indexmap", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tree-sitter" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78f873475d258561b06f1c595d93308a7ed124d9977cb26b148c2084a4a3cc87" +dependencies = [ + "cc", + "regex", + "regex-syntax", + "serde_json", + "streaming-iterator", + "tree-sitter-language", +] + +[[package]] +name = "tree-sitter-javascript" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68204f2abc0627a90bdf06e605f5c470aa26fdcb2081ea553a04bdad756693f5" +dependencies = [ + "cc", + "tree-sitter-language", +] + +[[package]] +name = "tree-sitter-language" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782" + +[[package]] +name = "tree-sitter-typescript" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5f76ed8d947a75cc446d5fccd8b602ebf0cde64ccf2ffa434d873d7a575eff" +dependencies = [ + "cc", + "tree-sitter-language", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/codegraph-kernel/Cargo.toml b/codegraph-kernel/Cargo.toml new file mode 100644 index 0000000..3a89ece --- /dev/null +++ b/codegraph-kernel/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "codegraph-kernel" +version = "0.1.0" +edition = "2021" +license = "MIT" +publish = false +description = "Native extraction kernel for CodeGraph — tree-sitter parse+extract with one JS boundary crossing per file" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +napi = { version = "3", default-features = false, features = ["napi8"] } +napi-derive = "3" +tree-sitter = "0.25" +streaming-iterator = "0.1" +sha2 = "0.10" + +# Grammars — MUST stay revision-matched with the wasm grammars the fallback +# path loads (tree-sitter-wasms npm package / src/extraction/wasm/). The +# kernel-grammar-parity test asserts node-kind-table equality at test time; +# bump these together with the wasm side or that gate fails. +tree-sitter-typescript = "0.23" +tree-sitter-javascript = "0.25" + +[build-dependencies] +napi-build = "2" + +[profile.release] +lto = true +codegen-units = 1 +strip = "symbols" diff --git a/codegraph-kernel/build.rs b/codegraph-kernel/build.rs new file mode 100644 index 0000000..0f1b010 --- /dev/null +++ b/codegraph-kernel/build.rs @@ -0,0 +1,3 @@ +fn main() { + napi_build::setup(); +} diff --git a/codegraph-kernel/queries/javascript.scm b/codegraph-kernel/queries/javascript.scm new file mode 100644 index 0000000..b887211 --- /dev/null +++ b/codegraph-kernel/queries/javascript.scm @@ -0,0 +1,12 @@ +; Seed query for the R1 scaffold (JavaScript / JSX grammar) — smoke-level +; coverage only; R2 replaces this with the full port. See typescript.scm for +; the capture convention. + +(class_declaration name: (identifier) @name) @def.class +(function_declaration name: (identifier) @name) @def.function +(generator_function_declaration name: (identifier) @name) @def.function +(method_definition name: (property_identifier) @name) @def.method + +(call_expression function: (identifier) @ref.calls) +(call_expression function: (member_expression property: (property_identifier) @ref.calls)) +(new_expression constructor: (identifier) @ref.instantiates) diff --git a/codegraph-kernel/queries/typescript.scm b/codegraph-kernel/queries/typescript.scm new file mode 100644 index 0000000..5692108 --- /dev/null +++ b/codegraph-kernel/queries/typescript.scm @@ -0,0 +1,21 @@ +; Seed query for the R1 scaffold — smoke-level coverage that proves the +; buffer contract and emitter mechanics end to end. NOT extraction parity: +; R2 replaces this with the full TypeScript/TSX port. +; +; Capture convention (see emitter.rs): +; @def. — the declaration node; pairs with @name in the pattern +; @name — the declaration's name node +; @ref. — a reference; the capture's own text is the name + +(class_declaration name: (type_identifier) @name) @def.class +(abstract_class_declaration name: (type_identifier) @name) @def.class +(interface_declaration name: (type_identifier) @name) @def.interface +(enum_declaration name: (identifier) @name) @def.enum +(type_alias_declaration name: (type_identifier) @name) @def.type_alias +(function_declaration name: (identifier) @name) @def.function +(generator_function_declaration name: (identifier) @name) @def.function +(method_definition name: (property_identifier) @name) @def.method + +(call_expression function: (identifier) @ref.calls) +(call_expression function: (member_expression property: (property_identifier) @ref.calls)) +(new_expression constructor: (identifier) @ref.instantiates) diff --git a/codegraph-kernel/src/buffers.rs b/codegraph-kernel/src/buffers.rs new file mode 100644 index 0000000..f1b6594 --- /dev/null +++ b/codegraph-kernel/src/buffers.rs @@ -0,0 +1,387 @@ +//! Flat buffer contract — the ONE boundary crossing per file. +//! +//! The kernel returns five Buffers: meta, nodes, edges, refs, arena. All rows +//! are fixed-width little-endian; every string is an (offset, len) pair into +//! the UTF-8 arena. `OFFSET == NONE (0xFFFF_FFFF)` means "field absent". +//! +//! THIS FILE AND `src/extraction/kernel/layout.ts` MUST MATCH BYTE FOR BYTE. +//! Any layout change bumps `KERNEL_ABI_VERSION` — the TS loader refuses a +//! version it doesn't know and falls back to the wasm path. +//! +//! Layout (v1): +//! +//! meta (36 bytes): +//! 0 u8 KERNEL_ABI_VERSION +//! 1 [3] pad +//! 4 u32 node count +//! 8 u32 edge count +//! 12 u32 ref count +//! 16 u32 arena byte length +//! 20 u32 errors-JSON arena offset (NONE = no errors) +//! 24 u32 errors-JSON byte length +//! 28 f64 kernel-side wall duration (ms) — introspection only; the TS +//! wrapper measures the ExtractionResult.durationMs it reports +//! +//! node row (96 bytes): +//! 0 u8 NodeKind index (NODE_KINDS order) +//! 1 u8 visibility (0 absent, 1 public, 2 private, 3 protected, 4 internal) +//! 2 u16 bool flags — bit pairs (present, value): +//! 0/1 isExported, 2/3 isAsync, 4/5 isStatic, 6/7 isAbstract +//! 4 u32 startLine (1-based) +//! 8 u32 endLine +//! 12 u32 startColumn (0-based) +//! 16 u32 endColumn +//! 20 str name +//! 28 str qualifiedName +//! 36 str id (kernel-computed: "kind:hash32", or "file:" for the file node) +//! 44 str docstring +//! 52 str signature +//! 60 str decorators (NUL-joined list) +//! 68 str typeParameters (NUL-joined list) +//! 76 str returnType +//! 84 str extraJson (escape hatch: JSON of any extra Node props) +//! 92 u32 metrics slot (reserved for Arc 3.2 per-node code metrics; 0) +//! +//! edge row (44 bytes): +//! 0 u32 source node row index (NONE → use sourceIdStr) +//! 4 u32 target node row index (NONE → use targetIdStr) +//! 8 u8 EdgeKind index (EDGE_KINDS order) +//! 9 u8 provenance (0 absent, 1 tree-sitter, 2 scip, 3 heuristic) +//! 10 u16 pad +//! 12 u32 line (NONE absent) +//! 16 u32 column (NONE absent) +//! 20 str metadataJson +//! 28 str sourceIdStr +//! 36 str targetIdStr +//! +//! ref row (40 bytes): +//! 0 u32 fromNode row index (NONE → use fromNodeIdStr) +//! 4 u8 ReferenceKind (EDGE_KINDS index, or 200 = function_ref) +//! 5 [3] pad +//! 8 u32 line (1-based) +//! 12 u32 column (0-based) +//! 16 str referenceName +//! 24 str candidates (NUL-joined list) +//! 32 str fromNodeIdStr + +pub const KERNEL_ABI_VERSION: u8 = 1; +pub const NONE: u32 = 0xFFFF_FFFF; + +pub const META_SIZE: usize = 36; +pub const NODE_ROW_SIZE: usize = 96; +pub const EDGE_ROW_SIZE: usize = 44; +pub const REF_ROW_SIZE: usize = 40; + +/// Mirror of NODE_KINDS in src/types.ts — order is the wire contract. +pub const NODE_KINDS: [&str; 22] = [ + "file", + "module", + "class", + "struct", + "interface", + "trait", + "protocol", + "function", + "method", + "property", + "field", + "variable", + "constant", + "enum", + "enum_member", + "type_alias", + "namespace", + "parameter", + "import", + "export", + "route", + "component", +]; + +/// Mirror of EDGE_KINDS in src/types.ts — order is the wire contract. +pub const EDGE_KINDS: [&str; 12] = [ + "contains", + "calls", + "imports", + "exports", + "extends", + "implements", + "references", + "type_of", + "returns", + "instantiates", + "overrides", + "decorates", +]; + +/// ReferenceKind code for the internal-only `function_ref` (#756). +pub const FUNCTION_REF_CODE: u8 = 200; + +pub fn node_kind_index(kind: &str) -> Option { + NODE_KINDS.iter().position(|k| *k == kind).map(|i| i as u8) +} + +pub fn edge_kind_index(kind: &str) -> Option { + EDGE_KINDS.iter().position(|k| *k == kind).map(|i| i as u8) +} + +/// (offset, len) arena reference. `NONE_STR` encodes an absent field. +pub type StrRef = (u32, u32); +pub const NONE_STR: StrRef = (NONE, 0); + +/// UTF-8 string arena. Strings are appended verbatim; no dedup (per-file +/// buffers are transient and small — intern later if profiling says so). +#[derive(Default)] +pub struct Arena { + buf: Vec, +} + +impl Arena { + pub fn put(&mut self, s: &str) -> StrRef { + let off = self.buf.len() as u32; + self.buf.extend_from_slice(s.as_bytes()); + (off, s.len() as u32) + } + + /// Not used by the seed emitter yet — R2 (docstring/signature/etc.). Kept + /// so the arena API is complete alongside the layout it feeds. + #[allow(dead_code)] + pub fn put_opt(&mut self, s: Option<&str>) -> StrRef { + match s { + Some(s) => self.put(s), + None => NONE_STR, + } + } + + /// NUL-joined list; absent when the list is empty. (R2 surface: decorators, + /// typeParameters, candidates.) + #[allow(dead_code)] + pub fn put_list(&mut self, items: &[String]) -> StrRef { + if items.is_empty() { + return NONE_STR; + } + let joined = items.join("\0"); + self.put(&joined) + } + + pub fn len(&self) -> u32 { + self.buf.len() as u32 + } + + pub fn into_vec(self) -> Vec { + self.buf + } +} + +/// Tri-state booleans packed as (present, value) bit pairs. +#[derive(Default, Clone, Copy)] +pub struct BoolFlags(pub u16); + +impl BoolFlags { + pub fn set(&mut self, pair: u16, value: bool) { + self.0 |= 1 << (pair * 2); + if value { + self.0 |= 1 << (pair * 2 + 1); + } + } +} + +pub const FLAG_IS_EXPORTED: u16 = 0; +#[allow(dead_code)] // R2 surface — part of the v1 wire contract +pub const FLAG_IS_ASYNC: u16 = 1; +#[allow(dead_code)] // R2 surface — part of the v1 wire contract +pub const FLAG_IS_STATIC: u16 = 2; +#[allow(dead_code)] // R2 surface — part of the v1 wire contract +pub const FLAG_IS_ABSTRACT: u16 = 3; + +pub struct NodeRow { + pub kind: u8, + pub visibility: u8, + pub flags: BoolFlags, + pub start_line: u32, + pub end_line: u32, + pub start_column: u32, + pub end_column: u32, + pub name: StrRef, + pub qualified_name: StrRef, + pub id: StrRef, + pub docstring: StrRef, + pub signature: StrRef, + pub decorators: StrRef, + pub type_parameters: StrRef, + pub return_type: StrRef, + pub extra_json: StrRef, +} + +pub struct EdgeRow { + pub source_idx: u32, + pub target_idx: u32, + pub kind: u8, + pub provenance: u8, + pub line: u32, + pub column: u32, + pub metadata_json: StrRef, + pub source_id_str: StrRef, + pub target_id_str: StrRef, +} + +pub struct RefRow { + pub from_idx: u32, + pub kind: u8, + pub line: u32, + pub column: u32, + pub reference_name: StrRef, + pub candidates: StrRef, + pub from_id_str: StrRef, +} + +fn push_str_ref(buf: &mut Vec, r: StrRef) { + buf.extend_from_slice(&r.0.to_le_bytes()); + buf.extend_from_slice(&r.1.to_le_bytes()); +} + +pub struct Tables { + pub nodes: Vec, + pub edges: Vec, + pub refs: Vec, + pub node_count: u32, + pub edge_count: u32, + pub ref_count: u32, +} + +impl Default for Tables { + fn default() -> Self { + Tables { + nodes: Vec::with_capacity(NODE_ROW_SIZE * 64), + edges: Vec::with_capacity(EDGE_ROW_SIZE * 64), + refs: Vec::with_capacity(REF_ROW_SIZE * 64), + node_count: 0, + edge_count: 0, + ref_count: 0, + } + } +} + +impl Tables { + pub fn push_node(&mut self, r: &NodeRow) -> u32 { + let buf = &mut self.nodes; + buf.push(r.kind); + buf.push(r.visibility); + buf.extend_from_slice(&r.flags.0.to_le_bytes()); + buf.extend_from_slice(&r.start_line.to_le_bytes()); + buf.extend_from_slice(&r.end_line.to_le_bytes()); + buf.extend_from_slice(&r.start_column.to_le_bytes()); + buf.extend_from_slice(&r.end_column.to_le_bytes()); + push_str_ref(buf, r.name); + push_str_ref(buf, r.qualified_name); + push_str_ref(buf, r.id); + push_str_ref(buf, r.docstring); + push_str_ref(buf, r.signature); + push_str_ref(buf, r.decorators); + push_str_ref(buf, r.type_parameters); + push_str_ref(buf, r.return_type); + push_str_ref(buf, r.extra_json); + buf.extend_from_slice(&0u32.to_le_bytes()); // metrics slot (Arc 3.2) + let idx = self.node_count; + self.node_count += 1; + idx + } + + pub fn push_edge(&mut self, r: &EdgeRow) { + let buf = &mut self.edges; + buf.extend_from_slice(&r.source_idx.to_le_bytes()); + buf.extend_from_slice(&r.target_idx.to_le_bytes()); + buf.push(r.kind); + buf.push(r.provenance); + buf.extend_from_slice(&0u16.to_le_bytes()); // pad + buf.extend_from_slice(&r.line.to_le_bytes()); + buf.extend_from_slice(&r.column.to_le_bytes()); + push_str_ref(buf, r.metadata_json); + push_str_ref(buf, r.source_id_str); + push_str_ref(buf, r.target_id_str); + self.edge_count += 1; + } + + pub fn push_ref(&mut self, r: &RefRow) { + let buf = &mut self.refs; + buf.extend_from_slice(&r.from_idx.to_le_bytes()); + buf.push(r.kind); + buf.extend_from_slice(&[0u8; 3]); // pad + buf.extend_from_slice(&r.line.to_le_bytes()); + buf.extend_from_slice(&r.column.to_le_bytes()); + push_str_ref(buf, r.reference_name); + push_str_ref(buf, r.candidates); + push_str_ref(buf, r.from_id_str); + self.ref_count += 1; + } +} + +pub fn build_meta(t: &Tables, arena_len: u32, errors_json: StrRef, duration_ms: f64) -> Vec { + let mut m = Vec::with_capacity(META_SIZE); + m.push(KERNEL_ABI_VERSION); + m.extend_from_slice(&[0u8; 3]); + m.extend_from_slice(&t.node_count.to_le_bytes()); + m.extend_from_slice(&t.edge_count.to_le_bytes()); + m.extend_from_slice(&t.ref_count.to_le_bytes()); + m.extend_from_slice(&arena_len.to_le_bytes()); + m.extend_from_slice(&errors_json.0.to_le_bytes()); + m.extend_from_slice(&errors_json.1.to_le_bytes()); + m.extend_from_slice(&duration_ms.to_le_bytes()); + debug_assert_eq!(m.len(), META_SIZE); + m +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn row_sizes_match_constants() { + let mut t = Tables::default(); + let mut a = Arena::default(); + let name = a.put("x"); + t.push_node(&NodeRow { + kind: 0, + visibility: 0, + flags: BoolFlags::default(), + start_line: 1, + end_line: 1, + start_column: 0, + end_column: 0, + name, + qualified_name: name, + id: name, + docstring: NONE_STR, + signature: NONE_STR, + decorators: NONE_STR, + type_parameters: NONE_STR, + return_type: NONE_STR, + extra_json: NONE_STR, + }); + assert_eq!(t.nodes.len(), NODE_ROW_SIZE); + t.push_edge(&EdgeRow { + source_idx: 0, + target_idx: 0, + kind: 0, + provenance: 0, + line: NONE, + column: NONE, + metadata_json: NONE_STR, + source_id_str: NONE_STR, + target_id_str: NONE_STR, + }); + assert_eq!(t.edges.len(), EDGE_ROW_SIZE); + t.push_ref(&RefRow { + from_idx: 0, + kind: 1, + line: 1, + column: 0, + reference_name: name, + candidates: NONE_STR, + from_id_str: NONE_STR, + }); + assert_eq!(t.refs.len(), REF_ROW_SIZE); + let meta = build_meta(&t, a.len(), NONE_STR, 0.0); + assert_eq!(meta.len(), META_SIZE); + } +} diff --git a/codegraph-kernel/src/emitter.rs b/codegraph-kernel/src/emitter.rs new file mode 100644 index 0000000..b390659 --- /dev/null +++ b/codegraph-kernel/src/emitter.rs @@ -0,0 +1,300 @@ +//! Generic query-driven emitter: parse the file, run the language's `.scm` +//! query, and emit flat rows. The whole tree walk happens native-side; the +//! only JS boundary crossing is the returned buffers. +//! +//! Mechanics mirrored from `TreeSitterExtractor` (src/extraction/tree-sitter.ts): +//! - node row 0 is the file node (`file:`, endLine = newline count + 1, +//! isExported present+false — byte-parity with the TS file node); +//! - definitions form a scope stack by byte-range nesting; qualifiedName is +//! the stack's names joined with `::` (file excluded); +//! - every definition gets a `contains` edge from its parent scope (the +//! file node when top-level); +//! - references attach to the innermost enclosing definition, falling back +//! to the file node — same as the TS extractor's nodeStack semantics; +//! - definitions with empty names are skipped (issue #42 semantics). + +use crate::buffers::{ + build_meta, edge_kind_index, node_kind_index, Arena, BoolFlags, EdgeRow, NodeRow, RefRow, + Tables, FLAG_IS_EXPORTED, FUNCTION_REF_CODE, NODE_KINDS, NONE, NONE_STR, +}; +use crate::ids; +use crate::langs::LangSpec; +use streaming_iterator::StreamingIterator; +use tree_sitter::{Node, Parser, QueryCursor}; + +pub struct EmitOut { + pub meta: Vec, + pub nodes: Vec, + pub edges: Vec, + pub refs: Vec, + pub arena: Vec, +} + +/// What a query capture name means. Resolved once per query. +#[derive(Clone, Copy)] +enum Role { + /// `@def.` — value is the NODE_KINDS index. + Def(u8), + /// `@name` — the paired definition's name node. + Name, + /// `@ref.` / `@ref.function_ref` — value is the wire code. + Ref(u8), + /// Helper captures (`@_anchor` etc.) — ignored. + Ignore, +} + +fn resolve_roles(capture_names: &[&str], lang: &str) -> Result, String> { + capture_names + .iter() + .map(|name| { + if let Some(kind) = name.strip_prefix("def.") { + let idx = node_kind_index(kind) + .ok_or_else(|| format!("{lang}: unknown NodeKind in capture @{name}"))?; + Ok(Role::Def(idx)) + } else if let Some(kind) = name.strip_prefix("ref.") { + if kind == "function_ref" { + return Ok(Role::Ref(FUNCTION_REF_CODE)); + } + let idx = edge_kind_index(kind) + .ok_or_else(|| format!("{lang}: unknown EdgeKind in capture @{name}"))?; + Ok(Role::Ref(idx)) + } else if *name == "name" { + Ok(Role::Name) + } else { + Ok(Role::Ignore) + } + }) + .collect() +} + +struct Def { + kind: u8, + name_start: usize, + name_end: usize, + start_byte: usize, + end_byte: usize, + start_line: u32, + end_line: u32, + start_column: u32, + end_column: u32, + /// Node-table row index, assigned during the scope sweep. + row: u32, +} + +struct RefCap { + kind: u8, + name_start: usize, + name_end: usize, + start_byte: usize, + line: u32, + column: u32, +} + +pub fn extract(file_path: &str, source: &str, spec: &LangSpec) -> Result { + let t0 = std::time::Instant::now(); + + let mut parser = Parser::new(); + parser + .set_language(spec.language()) + .map_err(|e| format!("set_language({}) failed: {e}", spec.name))?; + let tree = parser + .parse(source, None) + .ok_or_else(|| "parser returned null tree".to_string())?; + let root = tree.root_node(); + + let query = spec.query()?; + let roles = resolve_roles(&query.capture_names(), spec.name)?; + + // ---- Collect definition + reference captures from the query. ---- + let mut defs: Vec = Vec::new(); + let mut refs: Vec = Vec::new(); + // A node can match several patterns (e.g. nested alternations); first + // pattern wins, mirroring the TS walk's one-node-one-symbol behaviour. + let mut seen_defs = std::collections::HashSet::::new(); + + let mut cursor = QueryCursor::new(); + let mut matches = cursor.matches(query, root, source.as_bytes()); + while let Some(m) = matches.next() { + let mut def_node: Option<(Node, u8)> = None; + let mut name_node: Option = None; + for cap in m.captures { + match roles[cap.index as usize] { + Role::Def(kind) => def_node = Some((cap.node, kind)), + Role::Name => name_node = Some(cap.node), + Role::Ref(kind) => { + let p = cap.node.start_position(); + refs.push(RefCap { + kind, + name_start: cap.node.start_byte(), + name_end: cap.node.end_byte(), + start_byte: cap.node.start_byte(), + line: p.row as u32 + 1, + column: p.column as u32, + }); + } + Role::Ignore => {} + } + } + if let (Some((node, kind)), Some(name)) = (def_node, name_node) { + // Empty names are not meaningful symbols (issue #42). + if name.end_byte() > name.start_byte() && seen_defs.insert(node.id()) { + let sp = node.start_position(); + let ep = node.end_position(); + defs.push(Def { + kind, + name_start: name.start_byte(), + name_end: name.end_byte(), + start_byte: node.start_byte(), + end_byte: node.end_byte(), + start_line: sp.row as u32 + 1, + end_line: ep.row as u32 + 1, + start_column: sp.column as u32, + end_column: ep.column as u32, + row: 0, + }); + } + } + } + + // Deterministic pre-order regardless of query-match ordering. + defs.sort_by(|a, b| { + a.start_byte + .cmp(&b.start_byte) + .then(b.end_byte.cmp(&a.end_byte)) + }); + refs.sort_by_key(|r| r.start_byte); + + // ---- Emit rows: file node first, then the scope-stack sweep. ---- + let mut arena = Arena::default(); + let mut tables = Tables::default(); + + let line_count = source.bytes().filter(|b| *b == b'\n').count() as u32 + 1; + let base_name = file_path.rsplit(['/', '\\']).next().unwrap_or(file_path); + let mut file_flags = BoolFlags::default(); + file_flags.set(FLAG_IS_EXPORTED, false); + let file_id = arena.put(&ids::file_node_id(file_path)); + let file_name = arena.put(base_name); + let file_qn = arena.put(file_path); + tables.push_node(&NodeRow { + kind: node_kind_index("file").unwrap(), + visibility: 0, + flags: file_flags, + start_line: 1, + end_line: line_count, + start_column: 0, + end_column: 0, + name: file_name, + qualified_name: file_qn, + id: file_id, + docstring: NONE_STR, + signature: NONE_STR, + decorators: NONE_STR, + type_parameters: NONE_STR, + return_type: NONE_STR, + extra_json: NONE_STR, + }); + + // Merged sweep over definitions and references in byte order, maintaining + // the scope stack (indices into `defs`). + let mut stack: Vec = Vec::new(); + let mut ref_i = 0usize; + + fn pop_to(stack: &mut Vec, defs: &[Def], byte: usize) { + while let Some(&top) = stack.last() { + if defs[top].end_byte <= byte { + stack.pop(); + } else { + break; + } + } + } + + let emit_ref = |r: &RefCap, stack: &[usize], defs: &[Def], arena: &mut Arena, tables: &mut Tables| { + let from_idx = stack.last().map(|&i| defs[i].row).unwrap_or(0); + let name = arena.put(&source[r.name_start..r.name_end]); + tables.push_ref(&RefRow { + from_idx, + kind: r.kind, + line: r.line, + column: r.column, + reference_name: name, + candidates: NONE_STR, + from_id_str: NONE_STR, + }); + }; + + for i in 0..defs.len() { + let def_start = defs[i].start_byte; + while ref_i < refs.len() && refs[ref_i].start_byte < def_start { + pop_to(&mut stack, &defs, refs[ref_i].start_byte); + emit_ref(&refs[ref_i], &stack, &defs, &mut arena, &mut tables); + ref_i += 1; + } + pop_to(&mut stack, &defs, def_start); + + let name = &source[defs[i].name_start..defs[i].name_end]; + let kind_str = NODE_KINDS[defs[i].kind as usize]; + // qualifiedName = enclosing definition names + own name, `::`-joined + // (buildQualifiedName semantics; file node excluded). + let mut qn = String::new(); + for &s in stack.iter() { + qn.push_str(&source[defs[s].name_start..defs[s].name_end]); + qn.push_str("::"); + } + qn.push_str(name); + + let id = ids::node_id(file_path, kind_str, name, defs[i].start_line); + let id_ref = arena.put(&id); + let name_ref = arena.put(name); + let qn_ref = arena.put(&qn); + let row = tables.push_node(&NodeRow { + kind: defs[i].kind, + visibility: 0, + flags: BoolFlags::default(), + start_line: defs[i].start_line, + end_line: defs[i].end_line, + start_column: defs[i].start_column, + end_column: defs[i].end_column, + name: name_ref, + qualified_name: qn_ref, + id: id_ref, + docstring: NONE_STR, + signature: NONE_STR, + decorators: NONE_STR, + type_parameters: NONE_STR, + return_type: NONE_STR, + extra_json: NONE_STR, + }); + defs[i].row = row; + + let parent_row = stack.last().map(|&s| defs[s].row).unwrap_or(0); + tables.push_edge(&EdgeRow { + source_idx: parent_row, + target_idx: row, + kind: edge_kind_index("contains").unwrap(), + provenance: 0, + line: NONE, + column: NONE, + metadata_json: NONE_STR, + source_id_str: NONE_STR, + target_id_str: NONE_STR, + }); + + stack.push(i); + } + while ref_i < refs.len() { + pop_to(&mut stack, &defs, refs[ref_i].start_byte); + emit_ref(&refs[ref_i], &stack, &defs, &mut arena, &mut tables); + ref_i += 1; + } + + let duration_ms = t0.elapsed().as_secs_f64() * 1000.0; + let meta = build_meta(&tables, arena.len(), NONE_STR, duration_ms); + Ok(EmitOut { + meta, + nodes: tables.nodes, + edges: tables.edges, + refs: tables.refs, + arena: arena.into_vec(), + }) +} diff --git a/codegraph-kernel/src/ids.rs b/codegraph-kernel/src/ids.rs new file mode 100644 index 0000000..23b3aeb --- /dev/null +++ b/codegraph-kernel/src/ids.rs @@ -0,0 +1,53 @@ +//! Node-ID generation — MUST produce byte-identical output to +//! `generateNodeId` in `src/extraction/tree-sitter-helpers.ts`: +//! +//! `${kind}:${sha256(`${filePath}:${kind}:${name}:${line}`).hex[0..32]}` +//! +//! and the file-node special case in `TreeSitterExtractor.extract()`: +//! +//! `file:${filePath}` +//! +//! Node identity is how the wasm path and the kernel path agree on the same +//! graph — a drift here breaks every edge. Pinned by the node-id parity test +//! in `__tests__/kernel-scaffold.test.ts`. + +use sha2::{Digest, Sha256}; + +pub fn node_id(file_path: &str, kind: &str, name: &str, line: u32) -> String { + let mut hasher = Sha256::new(); + hasher.update(file_path.as_bytes()); + hasher.update(b":"); + hasher.update(kind.as_bytes()); + hasher.update(b":"); + hasher.update(name.as_bytes()); + hasher.update(b":"); + hasher.update(line.to_string().as_bytes()); + let digest = hasher.finalize(); + // 32 hex chars = first 16 bytes. + let mut hex = String::with_capacity(kind.len() + 1 + 32); + hex.push_str(kind); + hex.push(':'); + for b in &digest[..16] { + hex.push_str(&format!("{b:02x}")); + } + hex +} + +pub fn file_node_id(file_path: &str) -> String { + format!("file:{file_path}") +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn matches_known_ts_output() { + // Pinned vector: node -e "crypto.createHash('sha256') + // .update('src/a.ts:function:foo:3').digest('hex').substring(0,32)" + assert_eq!( + node_id("src/a.ts", "function", "foo", 3), + "function:bfb15544fed707794274a5c61006ea7b" + ); + } +} diff --git a/codegraph-kernel/src/langs.rs b/codegraph-kernel/src/langs.rs new file mode 100644 index 0000000..159447c --- /dev/null +++ b/codegraph-kernel/src/langs.rs @@ -0,0 +1,78 @@ +//! Per-language specs: grammar + `.scm` query + (later) per-language config. +//! +//! Tier-1 languages are meant to be *mostly* a query file plus a small config +//! here; logic queries can't express stays TS-side as a per-language `post()` +//! hook over the returned buffers (see `src/extraction/kernel/route.ts`). +//! +//! Language strings are codegraph `Language` values (src/types.ts), not +//! grammar names — `tsx` and `jsx` are separate entries that reuse another +//! entry's grammar exactly like `WASM_GRAMMAR_FILES` does on the wasm path. + +use std::sync::OnceLock; +use tree_sitter::{Language, Query}; + +pub struct LangSpec { + /// codegraph Language string (src/types.ts). + pub name: &'static str, + get_language: fn() -> Language, + query_src: &'static str, + language: OnceLock, + query: OnceLock>, +} + +impl LangSpec { + const fn new(name: &'static str, get_language: fn() -> Language, query_src: &'static str) -> Self { + LangSpec { + name, + get_language, + query_src, + language: OnceLock::new(), + query: OnceLock::new(), + } + } + + pub fn language(&self) -> &Language { + self.language.get_or_init(self.get_language) + } + + pub fn query(&self) -> Result<&Query, String> { + self.query + .get_or_init(|| { + Query::new(self.language(), self.query_src) + .map_err(|e| format!("query compile failed for {}: {e}", self.name)) + }) + .as_ref() + .map_err(|e| e.clone()) + } +} + +fn ts_language() -> Language { + tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into() +} + +fn tsx_language() -> Language { + tree_sitter_typescript::LANGUAGE_TSX.into() +} + +fn js_language() -> Language { + tree_sitter_javascript::LANGUAGE.into() +} + +static TYPESCRIPT: LangSpec = LangSpec::new( + "typescript", + ts_language, + include_str!("../queries/typescript.scm"), +); +static TSX: LangSpec = LangSpec::new("tsx", tsx_language, include_str!("../queries/typescript.scm")); +static JAVASCRIPT: LangSpec = LangSpec::new( + "javascript", + js_language, + include_str!("../queries/javascript.scm"), +); +static JSX: LangSpec = LangSpec::new("jsx", js_language, include_str!("../queries/javascript.scm")); + +pub static ALL: [&LangSpec; 4] = [&TYPESCRIPT, &TSX, &JAVASCRIPT, &JSX]; + +pub fn spec_for(language: &str) -> Option<&'static LangSpec> { + ALL.iter().find(|s| s.name == language).copied() +} diff --git a/codegraph-kernel/src/lib.rs b/codegraph-kernel/src/lib.rs new file mode 100644 index 0000000..9d7e6c4 --- /dev/null +++ b/codegraph-kernel/src/lib.rs @@ -0,0 +1,104 @@ +//! codegraph-kernel — native extraction kernel (napi-rs). +//! +//! Replaces ONLY the parse+extract walk inside the parse workers, behind the +//! existing `ExtractionResult` contract. Input `(filePath, content, language)` +//! per file; output flat typed buffers — one boundary crossing per file. +//! Everything downstream (resolution, synthesis, frameworks, MCP) is +//! untouched and consumes the decoded result exactly as before. +//! +//! Calls are synchronous by design: the existing `ParseWorkerPool` workers +//! already parallelize per-file, so each worker thread drives its own kernel +//! call (do NOT rebuild the pool on the Rust side — see the migration plan §3). + +#![deny(clippy::all)] + +mod buffers; +mod emitter; +mod ids; +mod langs; + +use napi::bindgen_prelude::*; +use napi_derive::napi; + +/// The five flat tables for one file. See buffers.rs for the byte layout; +/// `src/extraction/kernel/layout.ts` is the TS mirror. +#[napi(object)] +pub struct ExtractBuffers { + pub meta: Buffer, + pub nodes: Buffer, + pub edges: Buffer, + pub refs: Buffer, + pub arena: Buffer, +} + +/// Wire-contract description — the TS loader verifies this against +/// src/types.ts before routing anything to the kernel, so an out-of-date +/// `.node` degrades to the wasm path instead of mis-decoding. +#[napi(object)] +pub struct ContractInfo { + pub abi_version: u32, + pub kernel_version: String, + pub node_kinds: Vec, + pub edge_kinds: Vec, + /// Languages this binary can extract (routing is still TS-side policy). + pub languages: Vec, +} + +/// Grammar identity for the grammar-source-parity gate: the wasm grammar and +/// the native grammar must expose identical node-kind/field tables, or +/// kernel-vs-fallback routing would be non-deterministic. +#[napi(object)] +pub struct GrammarInfo { + pub abi_version: u32, + pub node_kind_count: u32, + pub field_count: u32, + pub node_kinds: Vec, + pub field_names: Vec, +} + +#[napi] +pub fn contract_info() -> ContractInfo { + ContractInfo { + abi_version: buffers::KERNEL_ABI_VERSION as u32, + kernel_version: env!("CARGO_PKG_VERSION").to_string(), + node_kinds: buffers::NODE_KINDS.iter().map(|s| s.to_string()).collect(), + edge_kinds: buffers::EDGE_KINDS.iter().map(|s| s.to_string()).collect(), + languages: langs::ALL.iter().map(|s| s.name.to_string()).collect(), + } +} + +#[napi] +pub fn grammar_info(language: String) -> Option { + let spec = langs::spec_for(&language)?; + let lang = spec.language(); + let node_kind_count = lang.node_kind_count(); + let field_count = lang.field_count(); + let node_kinds = (0..node_kind_count) + .map(|i| lang.node_kind_for_id(i as u16).unwrap_or("").to_string()) + .collect(); + // Field ids are 1-based in tree-sitter. + let field_names = (1..=field_count) + .map(|i| lang.field_name_for_id(i as u16).unwrap_or("").to_string()) + .collect(); + Some(GrammarInfo { + abi_version: lang.abi_version() as u32, + node_kind_count: node_kind_count as u32, + field_count: field_count as u32, + node_kinds, + field_names, + }) +} + +#[napi] +pub fn extract_file(file_path: String, content: String, language: String) -> Result { + let spec = langs::spec_for(&language) + .ok_or_else(|| Error::from_reason(format!("kernel does not support language: {language}")))?; + let out = emitter::extract(&file_path, &content, spec).map_err(Error::from_reason)?; + Ok(ExtractBuffers { + meta: out.meta.into(), + nodes: out.nodes.into(), + edges: out.edges.into(), + refs: out.refs.into(), + arena: out.arena.into(), + }) +} diff --git a/docs/design/rust-kernel-migration-plan.md b/docs/design/rust-kernel-migration-plan.md new file mode 100644 index 0000000..8a22c74 --- /dev/null +++ b/docs/design/rust-kernel-migration-plan.md @@ -0,0 +1,270 @@ +# Rust extraction-kernel migration plan + post-kernel roadmap + +**Audience:** the agent/engineer executing the native-kernel project. Self-contained handoff: +context, current state, per-language tracker, gates, and the follow-on roadmap. +**Companion:** `docs/design/native-extraction-kernel.md` (architecture + spike detail). +**Written:** 2026-07-16, after the perf arc that shipped #1305, #1320, #1321, #1322, #1323. + +--- + +## 0. Execution order (the whole plan as one checklist) + +Work top to bottom; each step has a section below with the detail. + +- [x] **R1. Scaffold the napi-rs crate** (`codegraph-kernel`): buffer contract, generic + `.scm` emitter, build-pipeline integration, `CODEGRAPH_KERNEL=0` kill switch, + wasm fallback, grammar-source-parity CI. (§3) — **done 2026-07-16, see §3a.** +- [ ] **R2. Port TypeScript/JavaScript extraction** (tsx/jsx included) as language one. (§4) +- [ ] **R3. Run TS/JS through the equivalence gate** — graph parity, retrieval + invariants, agent A/B, perf + control repo. Ship behind the env flag, then default-on. (§5) +- [ ] **R4. Port Java** → re-run the dubbo benchmark → the cbm-parity headline. (§4, §6) +- [ ] **R5. Port Python, Go.** (§4) +- [ ] **R6. Kernel-scale re-validation** in the cg1212 container (expect parse 6m → ~2m). (§6) +- [ ] **R7. Long-tail languages opportunistically** per the tracker; T3 may stay TS forever. (§4) +- [ ] **P1. Kernel-scale resolution speed** — the 19.5-min sequential wall at 2M nodes. (§7a) +- [ ] **P2. Arc 3, graph richness** — in priority order: test edges → code metrics → + read/write refs → raises → doc sections → IaC nodes. Each behind the standard gate. (§7b) +- [ ] **P3. Parked items** — only with explicit maintainer approval. (§7c) + +--- + +## 1. Mission and the numbers that motivate it + +CodeGraph's remaining fresh-index gap vs codebase-memory-mcp (cbm) is the parse+extract +phase, and its floor is per-node JS↔WASM marshaling — proven, not suspected: + +| Measurement (2026-07-16, M3 Pro) | Result | +|---|---| +| dubbo (4,402 Java files) parse-loop, current 7-wasm-worker pipeline | 4,700ms | +| Same files, Rust tree-sitter parse+walk, rayon (spike) | **202ms** | +| Same, single Rust thread | 1,067ms | +| dubbo fresh init today / cbm | 11.1s / 7.1s (1.55×) | +| Linux kernel, same 2-CPU/6GB container | **we complete 27min; cbm dies at 0.16%, twice** | + +Spike source: session scratchpad `cg-kernel-spike/` (tree-sitter 0.25 + tree-sitter-java, +TreeCursor walk touching kind/range/name-field, flat-row output). Reproduce before starting — +it's ~80 lines and doubles as the emitter's seed. + +Expected end state: parse-loop 4.7s → ~1.0–1.5s on dubbo-class repos → total ≈ 7.5s, +**parity with cbm on their best surface**, while keeping every win we already hold +(sync 2.4–2.8×, agent A/B decisive, call-graph density 1.3–2.3×, byte-identical +determinism, constrained-hardware envelope). + +## 2. What the kernel is — and the boundary that makes it safe + +One napi-rs crate (`codegraph-kernel`) linking tree-sitter's C library and native grammars. +Input `(filePath, content, language)` per file; output **flat typed buffers** (nodes, edges, +unresolved refs) — one boundary crossing per file. It replaces ONLY the parse+extract walk +inside the parse workers, behind the existing `ExtractionResult` contract. + +**Never ported (works unchanged for all languages from day one):** name-matcher + +import-resolver, all framework resolvers (`src/resolution/frameworks/`), all 36 synthesis +passes, MCP/explore, sync/watcher, installer. They consume the graph and raw source, not +the parse tree. + +**Coexistence is permanent:** a language routes to the kernel only after its gate passes; +everything else stays on the wasm path forever if need be. No flag-day. Rollback per +language = flipping the route. + +**Distribution:** prebuilt `.node` per platform through the existing release-bundle +pipeline (`scripts/build-bundle.sh` + per-platform npm packages); the same crate compiled +to wasm is the universal fallback. Zero-native-build-on-install stays true. + +## 3. Phase 0 — scaffold (do first, ~days) + +1. `codegraph-kernel/` crate: napi-rs, tree-sitter C, rayon optional (workers already + parallelize per-file — start synchronous per call, one kernel call per file from the + existing `ParseWorkerPool` workers; do NOT rebuild the pool). +2. Buffer contract: decide the flat encoding (suggest: one `Buffer` per table, + fixed-width rows + a string arena; version byte first). Write the TS decoder next to + `parse-worker.ts`. +3. Generic emitter driven by per-language `.scm` query files + a small per-language Rust + config (node-kind → NodeKind mapping, name-field conventions). Escape hatch: a + per-language `post(buffers, source)` TS hook for logic queries can't express. +4. Build integration: napi prebuilds wired into the release workflow next to the Node + bundles; `CODEGRAPH_KERNEL=0` kill switch; wasm fallback auto-selected when the + `.node` is absent (source runs, unsupported platforms). +5. CI: assert native grammars and wasm grammars are built from the SAME grammar source + revisions (ABI drift between paths would make per-language routing non-deterministic). + +### 3a. Phase 0 — SHIPPED 2026-07-16 (what exists and the decisions made) + +- **Crate:** `codegraph-kernel/` (napi 3, tree-sitter 0.25, no CLI dependency — + `scripts/build-kernel.sh` does cargo build + stage into + `codegraph-kernel/prebuilds/-/codegraph-kernel.node`; `npm run + build:kernel`). Exports `extractFile`, `contractInfo`, `grammarInfo`. +- **Buffer contract v1:** five Buffers (meta/nodes/edges/refs/arena), fixed-width LE rows, + string arena with `(offset,len)` refs, `0xFFFFFFFF` = absent, version byte first, node + IDs computed Rust-side (sha256, byte-identical to `generateNodeId` — pinned by test), + tri-state bool flags, `extraJson` escape slot per node row, and a RESERVED u32 metrics + slot (Arc 3.2). Layout doc lives twice and must match: `codegraph-kernel/src/buffers.rs` + ↔ `src/extraction/kernel/layout.ts`. NODE_KINDS/EDGE_KINDS array ORDER in src/types.ts + is wire contract now (EDGE_KINDS became a runtime array for this). +- **Emitter:** generic, `.scm`-driven (`@def.` + `@name` + `@ref.` + capture convention), scope stack by byte-range nesting → `::`-joined qualifiedNames, + contains edges, refs attached to innermost enclosing def (file node fallback) — the + TreeSitterExtractor conventions. Seed TS/JS queries are SMOKE-level only; R2 replaces. +- **Routing:** inside `extractFromSource` (tree-sitter.ts) — `tryKernelExtract` first, + wasm `TreeSitterExtractor` as fallback (also per-FILE fallback on any kernel error). + DEFAULT_ROUTED is EMPTY; dev opt-in via `CODEGRAPH_KERNEL_LANGS=`; global + kill switch `CODEGRAPH_KERNEL=0`; loader verifies ABI + kind tables before routing + (stale .node → silent wasm, `CODEGRAPH_KERNEL_DEBUG=1` to see why). The escape hatch + landed as `post(result, source)` over the DECODED result (not raw buffers) — decoded + is what TS logic wants; see POST_PASSES in `src/extraction/kernel/index.ts`. +- **Grammar parity (the §3.5 CI) — and a decision that changed the wasm path:** the + parity test (`__tests__/kernel-grammar-parity.test.ts`, behavioral: ABI + node-kind + + field tables compared id-by-id) caught on day one that tree-sitter-wasms ships + 2023-era TS/JS grammars (^0.20.x) vs crates.io current. Resolution: **vendored fresh + wasm into `src/extraction/wasm/` built from the exact crate revisions** — + tree-sitter-typescript v0.23.2 (f975a62) for typescript+tsx, tree-sitter-javascript + v0.25.0 (44c892e) for javascript+jsx — from each repo's CHECKED-IN parser.c (no + `generate`), tree-sitter-cli 0.25.10, emcc. So the production wasm TS/JS grammars are + UPGRADED as of this change (full suite green, 2456 tests) and **R2/R3 parity diffs + are grammar-neutral**. Bump crate + vendored wasm together, or the parity test fails. +- **Release wiring:** `kernel` matrix job in release.yml (macos-14 ×2 targets, + ubuntu-22.04, ubuntu-22.04-arm, windows-latest ×2 — all continue-on-error: kernel is + optional, a toolchain flake never blocks a release) → artifacts → `release/kernel/` → + build-bundle.sh stages `lib/kernel/codegraph-kernel.node` when present. The release + job runs the kernel tests with `CODEGRAPH_KERNEL_EXPECT=1` (missing binary = FAILURE + there, skip elsewhere). +- **Loader search order:** `CODEGRAPH_KERNEL_PATH` → `/kernel/` (bundle) → + `/codegraph-kernel/prebuilds/-/` (source runs). +- **Known R2 gate item:** native columns are UTF-8 byte offsets; web-tree-sitter's are + UTF-16-derived — column NUMBERS on non-ASCII lines will differ in parity dumps + (text, lines, IDs unaffected). Classify or normalize when it shows up. + +## 4. Per-language tracker + +Tiers: **T1** = mostly `.scm` + mapping config. **T2** = needs bespoke pre/post passes kept +in TS (listed). **T3** = not a plain tree-sitter walk (standalone/multi-grammar extractor) +— migrate last or never; wasm/TS path is a fine permanent home. + +The user-facing language contract is `README.md → Language Support` (34 logos incl. +Metal, CUDA, Terraform/OpenTofu, Pascal/Delphi). Keep this tracker in sync with it — +every README language must have a row here, even the ones that only ride another +language's port. + +Grammar column: `crates.io` = mainstream native grammar crate exists; `vendored` = we ship +a rebuilt/patched wasm (ABI-15) and the kernel must compile OUR fork natively — verify +parity before porting the language. + +| Language(s) | Today | Tier | Grammar source | Migration notes / known traps | Status | +|---|---|---|---|---|---| +| typescript, tsx, javascript, jsx | `languages/typescript.ts`, `javascript.ts` + shared branches | T1 | crates.io | First target. Value-reference edges (#895/#897) and component recognition (#841 forwardRef/memo/styled) must survive — they're extraction-side. Largest test surface; gate is strictest here. | ☐ | +| java | `languages/java.ts` | T1 | crates.io | Second target; unlocks the dubbo-parity claim. Lombok member synthesis (#912) is a NODE synthesizer hook in extraction (`synthesizeMembers`) — port or keep as TS post-pass. | ☐ | +| python | `languages/python.ts` | T1 | crates.io | Third. Decorator extraction feeds framework route detection — parity required. | ☐ | +| go | `languages/go.ts` | T1 | crates.io | Third (tie). Value-reference edges ship here too (#897). | ☐ | +| ruby, php | dedicated files | T1 | crates.io | Straightforward; PHP property-receiver shapes (#1220/#1251) are RESOLUTION-side, unaffected. | ☐ | +| csharp | `languages/csharp.ts` | T1 | crates.io | Plain. | ☐ | +| rust, dart, scala, lua, luau, r | dedicated files | T1 | crates.io (luau/r/scala: verify crate freshness vs our wasm) | Long-tail T1; port opportunistically after the big five. | ☐ | +| kotlin | `languages/kotlin.ts` | T1½ | crates.io | Expect/actual pairing is synthesis-side (fine); extraction is clean but validate against a KMP repo. | ☐ | +| swift | shared + dedicated branch | T1½ | crates.io | **Trap:** in-class property extraction lives in `tree-sitter.ts`'s DEDICATED branch, not `swift.ts` (#1020 — Alamofire went 0→348 props). Gate on Alamofire. | ☐ | +| c, cpp | `languages/c-cpp.ts` | **T2** | crates.io | Keep as TS pre-passes: `blankCppExportMacros`/`blankCppInlineMacros` (UE `class MACRO Name` phantom-function misparse, #1096–#1102, CARLA 440→6), in-body reflection collapse guard (#1206), content-based `.h` C-vs-C++ detection. | ☐ | +| metal, cuda | dialects over the cpp grammar | **T2** (rides c/cpp) | crates.io (cpp) | README-listed as first-class languages. Both are dialect-gated cpp: Metal = specifier/`[[attribute]]` blanking (#1121, the preParse-takes-filePath pattern); CUDA = `<<<>>>` blanking + content-gated `.h` (#1172). Their pre-passes must run before the kernel parse or stay TS-side; gate them WITH the c/cpp port, not separately. | ☐ | +| objc | `languages/objc.ts` | T2 | crates.io | Rides the c-cpp trap family; RN bridge extraction feeds `rnCrossPlatformEdges` (synthesis-side, fine). | ☐ | +| arkts | `languages/arkts.ts` | T2 | **vendored** (harmony-contrib) | Dot-prefixed refs + decorator-gated matching fixed 36,840 wrong edges — that logic must port exactly or stay TS-side. Compile our grammar fork natively. | ☐ | +| pascal | `languages/pascal.ts` | T2 | **vendored** | Paired with dfm-extractor (T3); `extractPascalDefProc` indexed lookups. | ☐ | +| vbnet | `languages/vbnet.ts` | T2 | **vendored, patched + external scanner** | Our wasm is a patched grammar WITH a C external scanner — the kernel must build that scanner; ts-cli 0.24 dropped `\p{...}` classes during the original build (#1164). Highest grammar-build risk of any language. | ☐ | +| cobol | `languages/cobol.ts` | T2 | **vendored fork** | Paragraph-extent reconstruction + copybook resolution are extraction logic (#1161, CardDemo 43/44). Port carefully or keep TS post-pass. | ☐ | +| erlang | `languages/erlang.ts` | T2 | **vendored (WhatsApp/ELP)** | npm `tree-sitter-erlang` is HIJACKED — never source from it (#1165). gen_server dispatch is synthesis-side (fine). | ☐ | +| nix | `languages/nix.ts` | T2 | **vendored (ABI-15 rebuild)** | Option-path synthesizer is synthesis-side; the `===`-always-false → `.equals()` lesson (#1190) is wasm-binding-specific and disappears natively — still gate on nixpkgs (44k files). | ☐ | +| solidity | `languages/solidity.ts` | T2 | **vendored** | `modifier_invocation` outside body walk (#1170) is extraction-side; port it. | ☐ | +| terraform | `languages/terraform.ts` | T2 | **vendored** | `:`-scoped refs for module-boundary bridging (#1173); metadata does NOT persist — re-read source (#1174). | ☐ | +| cfml, cfscript, cfquery | `cfml-extractor.ts` + 3 grammar files | **T3** | **vendored ×3** | 3-grammar family with BOM-sensitive dialect sniffing (#1118/#1153–55). Leave on wasm until the very end, possibly forever. | ☐ | +| svelte, vue, astro, liquid | standalone extractors | **T3** | n/a (custom/embedded parsing) | Not tree-sitter walks. Permanent TS home is acceptable — file counts are small and these repos are small. | ☐ | +| dfm (Delphi forms), razor, mybatis XML | standalone extractors | **T3** | n/a | Same as above. mybatis pairs with a synthesis pass (fine). | ☐ | + +**Do-not-regress invariants during any port** (extraction-side, will show up in the gate): +node metadata is re-read from source, never persisted; parse commits stay in FILE ORDER +(#1015); `MAX_FILE_SIZE` skip; generated-file detection; `CODEGRAPH_PARSE_WORKERS` +semantics; framework `extract()` hooks keep running TS-side per file after the kernel pass. + +## 5. Equivalence gate (run per language, no exceptions) + +Byte-identity vs hand-written extractors is NOT expected — the gate is behavioral parity: + +1. **Graph parity:** fresh-index 3 real repos (small/medium/large for the language) on + wasm-path vs kernel-path builds. Dump with the `dump-graph.mjs` pattern (natural keys). + Node/edge/ref deltas ≤0.5% AND every diff category manually classified (the 13-edge + supertype-visibility bug this week was caught exactly this way — small diffs are real). +2. **Retrieval invariants:** the language's canonical flows still connect end-to-end in + `codegraph_explore` (playbook: `docs/design/dynamic-dispatch-coverage-playbook.md`); + node counts stable; synthesized-edge spot-check. +3. **Agent A/B non-regression** per the standard methodology (CLAUDE.md): `--model sonnet + --effort high` ALWAYS, ≥2 runs/arm, pre-warmed daemon, `CODEGRAPH_NO_PROMPT_HOOK=1`, + forbid subagent delegation in the prompt. +4. **Perf:** fresh-index improves on the language's repos; a NON-migrated control repo is + unchanged; suite green; Linux docker + Windows VM passes for platform-sensitive bits. + +## 6. Rollout order and expected wins + +1. **TS/JS/TSX/JSX** — most indexed files in the funnel; excalidraw 3.3s → ~2.3s expected. +2. **Java** — dubbo 11.1s → ~7.5s expected (**the cbm-parity headline**). +3. **Python, Go** — rounds out ~90% of real-world indexed files. +4. Kernel-scale re-run in the cg1212 container after (2): parse 6.0m → ~1.5–2m expected. +5. Long tail opportunistically; T3 possibly never — that's fine by design. + +Measurement discipline (hard-won this week — do NOT relearn these): +- Profile first. Ideas killed by measurement this week: sorted-chunk inserts (zero), + statement-batching the persist (zero — B-tree maintenance is the cost), RAM-disk/ + in-memory DB build (SLOWER — fastInit already writes at page-cache speed). +- `CODEGRAPH_SYNTH_TIMINGS=1` now emits full phase walls (`[phase-timing]`) + pool/batch + timings. UI distorts phase walls — pipe stdout away. +- Check host load before timing (iOS simulators inflated every phase ~30%); the + Monitor-on-loadavg pattern (fire <3.5) gives clean windows. +- `grep` is aliased to ugrep and silently treats `callback-synthesizer.ts` as binary — + use `grep -a`. + +## 7. AFTER the kernel: the follow-on roadmap (in order) + +### 7a. Kernel-scale resolution speed +The kernel makes parse fast; at Linux-kernel scale resolution is now the wall (19.5min +sequential in the 2-CPU container; the resolver pool requires ≥4 cores to engage). +Steps: re-run cg1212 validation on ≥4-core allocation (pool + parallel synthesis engage); +profile; likely levers: worker count scaling, batch size at scale, `warmCachesYielding` +on multi-GB DBs. Target: kernel <10min on a normal 8-core host. + +### 7b. Arc 3 — graph richness (forensics-backed; adopt cbm's real extras, skip inflation) +Priority order, each gated by the standard A/B + node-explosion probes: +1. **Test→subject edges** (first-class `tests` edges at index time; we compute covering + tests at query time today; cbm materializes 14.8k on dubbo). Feeds test-gap detection + (Lite headline) + Pro risk signals. Cheapest, do first. +2. **Per-node code metrics** (complexity, cognitive, `is_test`, `is_entry_point`, + param counts) — computed during extraction (the kernel makes this nearly free — + design the buffer contract with a metrics slot!). Feeds Pro risk-ranking verdicts + + explore ranking de-noise. +3. **Read/write distinction on references** (`USAGE` vs `WRITES`). The measured agent + frontier ("who mutates this state" — the canvasNonce class). HIGHEST value, HIGHEST + risk: scope to exported/state-relevant symbols; the tracking-every-local explosion is + the known failure mode (#999/#1212 class). Full validation methodology. +4. **Exception-flow edges** (`raises`) — throw→handler; moderate. +5. **Doc Section nodes** (markdown headings as nodes, linked to code) — maps onto Pro's + synced-business-docs story. +6. **IaC nodes** (k8s/docker/kustomize as graph nodes with cross-references). +NOT worth chasing (verified in their cache schema): per-variable node inflation (85% of +their node count), DB size parity (theirs is ~60% allocation slack), similarity vectors +in the core engine. + +### 7c. Deferred/parked (needs explicit approval before starting) +- Single-file SEA binary (distribution polish; zero speed). +- Team-shared graph artifact (cbm's `graph.db.zst` idea — good, but design it for the + Pro shared-worker story, not as an OSS clone). +- Full native rewrite: rejected with data — the moat (2,444 tests, byte-identical + determinism, this week's two caught-by-gate bugs) lives in the TS reference. + +## 8. Context for the executing agent + +- House rules live in `CLAUDE.md` (repo root) — the retrieval invariants, A/B model + policy, release rules (never `npm publish`/push tags), changelog format. +- This week's PR trail tells the story and the style: #1305, #1320 (checkpoint deferral + + double-buffered persist; THE invariant: batch k+1 READS batch k's edges — supertype + walks — so edges insert before fan-out), #1321 (parallel synthesis via pool reuse, + registry order = merge order), #1322 (bulk edge load, identity index stays), #1323 + (kernel-scale hardening: skip-don't-retry-on-main >1.5M nodes, yielding index recreate). +- Every perf PR shipped byte-identical with the dump-diff gate; keep that bar. +- Competitive context (validated 2026-07-16): cbm wins medium-repo fresh index 1.55–1.8× + (their RAM-first design); we win sync 2.4–2.8×, agent A/B (their 14 tools drew ZERO + calls in 8/8 runs), call-graph density 1.3–2.3×, and the constrained-hardware envelope + (Linux kernel on 2-CPU/6GB: we complete in 27min, they die at 0.16% — their speed IS + their memory floor). The kernel project closes their last number without giving up any + of ours. diff --git a/package.json b/package.json index 5d840fa..2defeb1 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "preuninstall": "node dist/bin/uninstall.js", "copy-assets": "node -e \"const fs=require('fs');fs.mkdirSync('dist/db',{recursive:true});fs.copyFileSync('src/db/schema.sql','dist/db/schema.sql');fs.mkdirSync('dist/extraction/wasm',{recursive:true});fs.readdirSync('src/extraction/wasm').filter(f=>f.endsWith('.wasm')).forEach(f=>fs.copyFileSync('src/extraction/wasm/'+f,'dist/extraction/wasm/'+f))\"", "dev": "tsc --watch", + "build:kernel": "bash scripts/build-kernel.sh", "cli": "npm run build && node dist/bin/codegraph.js", "test": "vitest run", "test:watch": "vitest", diff --git a/scripts/build-bundle.sh b/scripts/build-bundle.sh index 7184442..d0eb29c 100755 --- a/scripts/build-bundle.sh +++ b/scripts/build-bundle.sh @@ -68,6 +68,26 @@ echo "[bundle] installing production dependencies" ( cd "$STAGE/lib" && npm ci --omit=dev --ignore-scripts >/dev/null 2>&1 ) rm -f "$STAGE/lib/package-lock.json" +# 3b. Native extraction kernel (optional). Included when a prebuilt .node for +# the target exists — release/kernel//codegraph-kernel.node (the +# release workflow's prebuild artifacts) or the locally staged +# codegraph-kernel/prebuilds// (scripts/build-kernel.sh). Absent → +# the bundle simply runs the wasm extraction path; the kernel is a +# per-language speedup, never a requirement (see +# docs/design/rust-kernel-migration-plan.md). +KERNEL_NODE="" +for candidate in "$ROOT/release/kernel/${TARGET}/codegraph-kernel.node" \ + "$ROOT/codegraph-kernel/prebuilds/${TARGET}/codegraph-kernel.node"; do + if [ -f "$candidate" ]; then KERNEL_NODE="$candidate"; break; fi +done +if [ -n "$KERNEL_NODE" ]; then + mkdir -p "$STAGE/lib/kernel" + cp "$KERNEL_NODE" "$STAGE/lib/kernel/codegraph-kernel.node" + echo "[bundle] native kernel included ($KERNEL_NODE)" +else + echo "[bundle] no native kernel for ${TARGET} — bundle uses the wasm extraction path" +fi + # 4. Vendored Node + launcher (the launcher uses the bundled Node by relative # path, so no system Node is ever needed). # diff --git a/scripts/build-kernel.sh b/scripts/build-kernel.sh new file mode 100755 index 0000000..b1309bb --- /dev/null +++ b/scripts/build-kernel.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash +# +# Build the native extraction kernel (codegraph-kernel) and stage the .node +# where the TS loader (src/extraction/kernel/loader.ts) finds it for +# from-source runs and tests: +# +# codegraph-kernel/prebuilds/-/codegraph-kernel.node +# +# The kernel is OPTIONAL everywhere: when the .node is absent the extraction +# path falls back to the wasm pipeline. This script needs a Rust toolchain +# (rustup.rs); nothing else in the repo does. +# +# Usage: +# scripts/build-kernel.sh # host platform +# scripts/build-kernel.sh --target [--platform ] +# +# The cross-compile form is what the release workflow uses (e.g. +# --target x86_64-apple-darwin --platform darwin-x64 on a macos-arm runner). +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +CRATE="$ROOT/codegraph-kernel" + +TARGET="" +PLATFORM="" +while [ $# -gt 0 ]; do + case "$1" in + --target) TARGET="$2"; shift 2 ;; + --platform) PLATFORM="$2"; shift 2 ;; + *) echo "unknown arg: $1" >&2; exit 1 ;; + esac +done + +# Map a rust triple (or the host) to the bundle-target naming used across the +# release pipeline (darwin-arm64, linux-x64, win32-arm64, ...). +if [ -z "$PLATFORM" ]; then + if [ -n "$TARGET" ]; then + case "$TARGET" in + aarch64-apple-darwin) PLATFORM="darwin-arm64" ;; + x86_64-apple-darwin) PLATFORM="darwin-x64" ;; + x86_64-unknown-linux-gnu) PLATFORM="linux-x64" ;; + aarch64-unknown-linux-gnu) PLATFORM="linux-arm64" ;; + x86_64-pc-windows-msvc) PLATFORM="win32-x64" ;; + aarch64-pc-windows-msvc) PLATFORM="win32-arm64" ;; + *) echo "cannot map rust target '$TARGET' to a platform name; pass --platform" >&2; exit 1 ;; + esac + else + case "$(uname -s)-$(uname -m)" in + Darwin-arm64) PLATFORM="darwin-arm64" ;; + Darwin-x86_64) PLATFORM="darwin-x64" ;; + Linux-x86_64) PLATFORM="linux-x64" ;; + Linux-aarch64) PLATFORM="linux-arm64" ;; + MINGW*-x86_64|MSYS*-x86_64) PLATFORM="win32-x64" ;; + MINGW*-aarch64|MSYS*-aarch64) PLATFORM="win32-arm64" ;; + *) echo "unrecognized host $(uname -s)-$(uname -m); pass --platform" >&2; exit 1 ;; + esac + fi +fi + +echo "[kernel] building codegraph-kernel for ${PLATFORM}${TARGET:+ (target $TARGET)}" +cd "$CRATE" +if [ -n "$TARGET" ]; then + rustup target add "$TARGET" >/dev/null 2>&1 || true + cargo build --release --target "$TARGET" + OUTDIR="$CRATE/target/$TARGET/release" +else + cargo build --release + OUTDIR="$CRATE/target/release" +fi + +# cdylib name differs per OS; the staged name is always codegraph-kernel.node. +case "$PLATFORM" in + darwin-*) LIB="$OUTDIR/libcodegraph_kernel.dylib" ;; + linux-*) LIB="$OUTDIR/libcodegraph_kernel.so" ;; + win32-*) LIB="$OUTDIR/codegraph_kernel.dll" ;; +esac +[ -f "$LIB" ] || { echo "[kernel] error: built library not found at $LIB" >&2; exit 1; } + +DEST="$CRATE/prebuilds/$PLATFORM" +mkdir -p "$DEST" +cp "$LIB" "$DEST/codegraph-kernel.node" +echo "[kernel] staged $DEST/codegraph-kernel.node ($(du -h "$DEST/codegraph-kernel.node" | cut -f1))" diff --git a/src/extraction/grammars.ts b/src/extraction/grammars.ts index a26d232..92e39d0 100644 --- a/src/extraction/grammars.ts +++ b/src/extraction/grammars.ts @@ -271,10 +271,23 @@ export async function initGrammars(): Promise { * nix-community/tree-sitter-nix @ 3d0173d (MIT) with tree-sitter-cli 0.25.10 * (`generate` + `build --wasm`, ABI 15 — upstream's checked-in parser.c is * still ABI 13; all 54 upstream corpus tests pass on the regenerated parser). + * + * TypeScript/TSX/JavaScript (+jsx, which shares the javascript grammar): the + * tree-sitter-wasms builds are 2023-era (^0.20.x); we vendor wasm built from + * the SAME grammar revisions the native extraction kernel compiles + * (codegraph-kernel/Cargo.toml), so the kernel path and the wasm fallback + * parse identically and per-language routing stays graph-neutral: + * - tree-sitter/tree-sitter-typescript v0.23.2 (f975a62) → typescript + tsx + * - tree-sitter/tree-sitter-javascript v0.25.0 (44c892e) → javascript + jsx + * Built from each repo's CHECKED-IN parser.c (no `generate`) with + * tree-sitter-cli 0.25.10 `build --wasm` — the same tables crates.io compiles. + * The kernel-grammar-parity test asserts this alignment; bump the crate and + * the vendored wasm together. */ const VENDORED_WASM_LANGS: ReadonlySet = new Set([ 'pascal', 'scala', 'lua', 'luau', 'csharp', 'r', 'cfml', 'cfscript', 'cfquery', 'cobol', 'vbnet', 'erlang', 'terraform', 'arkts', 'nix', + 'typescript', 'tsx', 'javascript', 'jsx', ]); /** Absolute path of a language's grammar WASM (vendored or tree-sitter-wasms). */ diff --git a/src/extraction/kernel/decode.ts b/src/extraction/kernel/decode.ts new file mode 100644 index 0000000..2171aa5 --- /dev/null +++ b/src/extraction/kernel/decode.ts @@ -0,0 +1,176 @@ +/** + * Decode the kernel's flat buffers into an ExtractionResult — the single + * JS-side pass over the per-file tables. See layout.ts for the byte layout + * and codegraph-kernel/src/buffers.rs for the writer. + */ + +import type { + Edge, + EdgeKind, + ExtractionError, + ExtractionResult, + Language, + Node, + NodeKind, + ReferenceKind, + UnresolvedReference, +} from '../../types'; +import { NODE_KINDS, EDGE_KINDS } from '../../types'; +import type { KernelBuffers } from './loader'; +import { + EDGE, + EDGE_ROW_SIZE, + FLAG, + FUNCTION_REF_CODE, + KERNEL_ABI_VERSION, + META, + META_SIZE, + NODE, + NODE_ROW_SIZE, + NONE, + PROVENANCES, + REF, + REF_ROW_SIZE, + VISIBILITIES, +} from './layout'; + +/** Read an (offset, len) arena string; undefined when absent. */ +function str(arena: Buffer, row: Buffer, at: number): string | undefined { + const off = row.readUInt32LE(at); + if (off === NONE) return undefined; + const len = row.readUInt32LE(at + 4); + return arena.toString('utf8', off, off + len); +} + +/** NUL-joined list field; undefined when absent. */ +function strList(arena: Buffer, row: Buffer, at: number): string[] | undefined { + const joined = str(arena, row, at); + return joined === undefined ? undefined : joined.split('\0'); +} + +/** Tri-state boolean from a (present, value) bit pair. */ +function flag(flags: number, pair: number): boolean | undefined { + if ((flags & (1 << (pair * 2))) === 0) return undefined; + return (flags & (1 << (pair * 2 + 1))) !== 0; +} + +function u32opt(row: Buffer, at: number): number | undefined { + const v = row.readUInt32LE(at); + return v === NONE ? undefined : v; +} + +export function decodeExtractBuffers( + buffers: KernelBuffers, + filePath: string, + language: Language +): ExtractionResult { + const { meta, arena } = buffers; + if (meta.length < META_SIZE) throw new Error(`kernel meta too short: ${meta.length}`); + const version = meta.readUInt8(META.version); + if (version !== KERNEL_ABI_VERSION) { + throw new Error(`kernel buffer ABI ${version} != expected ${KERNEL_ABI_VERSION}`); + } + const nodeCount = meta.readUInt32LE(META.nodeCount); + const edgeCount = meta.readUInt32LE(META.edgeCount); + const refCount = meta.readUInt32LE(META.refCount); + + const now = Date.now(); + const nodes: Node[] = new Array(nodeCount); + // Node-table row index → node id, for edge/ref endpoint resolution. + const idByRow: string[] = new Array(nodeCount); + + for (let i = 0; i < nodeCount; i++) { + const row = buffers.nodes.subarray(i * NODE_ROW_SIZE, (i + 1) * NODE_ROW_SIZE); + const id = str(arena, row, NODE.id)!; + idByRow[i] = id; + const flags = row.readUInt16LE(NODE.flags); + const node: Node = { + id, + kind: NODE_KINDS[row.readUInt8(NODE.kind)] as NodeKind, + name: str(arena, row, NODE.name)!, + qualifiedName: str(arena, row, NODE.qualifiedName)!, + filePath, + language, + startLine: row.readUInt32LE(NODE.startLine), + endLine: row.readUInt32LE(NODE.endLine), + startColumn: row.readUInt32LE(NODE.startColumn), + endColumn: row.readUInt32LE(NODE.endColumn), + updatedAt: now, + }; + const docstring = str(arena, row, NODE.docstring); + if (docstring !== undefined) node.docstring = docstring; + const signature = str(arena, row, NODE.signature); + if (signature !== undefined) node.signature = signature; + const visibility = VISIBILITIES[row.readUInt8(NODE.visibility)]; + if (visibility !== undefined) node.visibility = visibility; + const isExported = flag(flags, FLAG.isExported); + if (isExported !== undefined) node.isExported = isExported; + const isAsync = flag(flags, FLAG.isAsync); + if (isAsync !== undefined) node.isAsync = isAsync; + const isStatic = flag(flags, FLAG.isStatic); + if (isStatic !== undefined) node.isStatic = isStatic; + const isAbstract = flag(flags, FLAG.isAbstract); + if (isAbstract !== undefined) node.isAbstract = isAbstract; + const decorators = strList(arena, row, NODE.decorators); + if (decorators !== undefined) node.decorators = decorators; + const typeParameters = strList(arena, row, NODE.typeParameters); + if (typeParameters !== undefined) node.typeParameters = typeParameters; + const returnType = str(arena, row, NODE.returnType); + if (returnType !== undefined) node.returnType = returnType; + const extraJson = str(arena, row, NODE.extraJson); + if (extraJson !== undefined) Object.assign(node, JSON.parse(extraJson) as Partial); + nodes[i] = node; + } + + const edges: Edge[] = new Array(edgeCount); + for (let i = 0; i < edgeCount; i++) { + const row = buffers.edges.subarray(i * EDGE_ROW_SIZE, (i + 1) * EDGE_ROW_SIZE); + const sourceIdx = row.readUInt32LE(EDGE.sourceIdx); + const targetIdx = row.readUInt32LE(EDGE.targetIdx); + const edge: Edge = { + source: sourceIdx === NONE ? str(arena, row, EDGE.sourceIdStr)! : idByRow[sourceIdx]!, + target: targetIdx === NONE ? str(arena, row, EDGE.targetIdStr)! : idByRow[targetIdx]!, + kind: EDGE_KINDS[row.readUInt8(EDGE.kind)] as EdgeKind, + }; + const line = u32opt(row, EDGE.line); + if (line !== undefined) edge.line = line; + const column = u32opt(row, EDGE.column); + if (column !== undefined) edge.column = column; + const provenance = PROVENANCES[row.readUInt8(EDGE.provenance)]; + if (provenance !== undefined) edge.provenance = provenance; + const metadataJson = str(arena, row, EDGE.metadataJson); + if (metadataJson !== undefined) edge.metadata = JSON.parse(metadataJson) as Record; + edges[i] = edge; + } + + const unresolvedReferences: UnresolvedReference[] = new Array(refCount); + for (let i = 0; i < refCount; i++) { + const row = buffers.refs.subarray(i * REF_ROW_SIZE, (i + 1) * REF_ROW_SIZE); + const fromIdx = row.readUInt32LE(REF.fromIdx); + const kindByte = row.readUInt8(REF.kind); + const ref: UnresolvedReference = { + fromNodeId: fromIdx === NONE ? str(arena, row, REF.fromIdStr)! : idByRow[fromIdx]!, + referenceName: str(arena, row, REF.referenceName)!, + referenceKind: + kindByte === FUNCTION_REF_CODE + ? 'function_ref' + : (EDGE_KINDS[kindByte] as ReferenceKind), + line: row.readUInt32LE(REF.line), + column: row.readUInt32LE(REF.column), + filePath, + language, + }; + const candidates = strList(arena, row, REF.candidates); + if (candidates !== undefined) ref.candidates = candidates; + unresolvedReferences[i] = ref; + } + + let errors: ExtractionError[] = []; + const errorsOff = meta.readUInt32LE(META.errorsOff); + if (errorsOff !== NONE) { + const errorsLen = meta.readUInt32LE(META.errorsLen); + errors = JSON.parse(arena.toString('utf8', errorsOff, errorsOff + errorsLen)) as ExtractionError[]; + } + + return { nodes, edges, unresolvedReferences, errors, durationMs: 0 }; +} diff --git a/src/extraction/kernel/index.ts b/src/extraction/kernel/index.ts new file mode 100644 index 0000000..3c27bd4 --- /dev/null +++ b/src/extraction/kernel/index.ts @@ -0,0 +1,95 @@ +/** + * Kernel routing — which languages go through the native kernel, and the + * single entry point the extraction path calls. + * + * Routing policy is deliberately TS-side and per-language (migration plan §2): + * a language routes to the kernel only after its equivalence gate passes; + * everything else stays on the wasm path forever if need be. Rollback per + * language = removing it from DEFAULT_ROUTED (or CODEGRAPH_KERNEL=0 for all). + * + * R1 status: NO language is default-routed yet. Development/testing opt-in: + * CODEGRAPH_KERNEL_LANGS=typescript,tsx (or "all" for every kernel-capable + * language). R3 flips TS/JS into DEFAULT_ROUTED once the gate passes. + */ + +import type { ExtractionResult, Language } from '../../types'; +import { getKernel, kernelSupports } from './loader'; +import { decodeExtractBuffers } from './decode'; + +export { getKernel, kernelSupports, resetKernelForTests } from './loader'; +export { decodeExtractBuffers } from './decode'; + +/** + * Languages routed to the kernel by default (gate-passed only — see the + * per-language tracker in docs/design/rust-kernel-migration-plan.md §4). + */ +const DEFAULT_ROUTED: ReadonlySet = new Set([]); + +/** + * Per-language TS post-pass over the decoded result — the escape hatch for + * logic `.scm` queries can't express (macro salvage, dialect sniffing, + * wrapper-based component recognition). Runs synchronously after decode, + * before the framework extract() hooks the caller applies. Keep these SMALL: + * anything heavy belongs in the Rust emitter. + */ +export type KernelPostPass = (result: ExtractionResult, source: string) => void; +const POST_PASSES: Partial> = { + // (none yet — R2+) +}; + +function isRouted(language: Language): boolean { + const env = process.env.CODEGRAPH_KERNEL_LANGS; + if (env === undefined || env === '') return DEFAULT_ROUTED.has(language); + if (env === 'all') return true; + return env + .split(',') + .map((s) => s.trim()) + .includes(language); +} + +/** True when `language` would be extracted by the kernel right now. */ +export function kernelRoutes(language: Language): boolean { + return isRouted(language) && kernelSupports(language); +} + +/** Warned-once registry so a broken language logs a single line, not one per file. */ +const warned = new Set(); + +/** + * Extract via the native kernel. Returns null when the kernel doesn't apply + * (not routed / not available / kill switch) — the caller falls back to the + * wasm TreeSitterExtractor. A kernel ERROR on a routed file also returns + * null: per-file fallback keeps indexing correct while a kernel bug costs + * only that file's speedup. + */ +export function tryKernelExtract( + filePath: string, + source: string, + language: Language +): ExtractionResult | null { + if (!kernelRoutes(language)) return null; + const kernel = getKernel(); + if (!kernel) return null; + const t0 = Date.now(); + try { + // NOTE(T2 languages): when a preParse-carrying language (csharp #237, + // metal #1121, cuda #1172, c/cpp macro blanking) routes here, its + // offset-preserving preParse hook must be applied to `source` first — + // wire that alongside the language's port, gated WITH its equivalence run. + const buffers = kernel.extractFile(filePath, source, language); + const result = decodeExtractBuffers(buffers, filePath, language); + POST_PASSES[language]?.(result, source); + result.durationMs = Date.now() - t0; + return result; + } catch (err) { + if (!warned.has(language)) { + warned.add(language); + process.stderr.write( + `[codegraph-kernel] ${language} extraction failed (${ + err instanceof Error ? err.message : String(err) + }) — falling back to the wasm path\n` + ); + } + return null; + } +} diff --git a/src/extraction/kernel/layout.ts b/src/extraction/kernel/layout.ts new file mode 100644 index 0000000..d3c4bcd --- /dev/null +++ b/src/extraction/kernel/layout.ts @@ -0,0 +1,102 @@ +/** + * Native-kernel buffer layout — TS mirror of codegraph-kernel/src/buffers.rs. + * + * The kernel returns five Buffers per file: meta, nodes, edges, refs, arena. + * Rows are fixed-width little-endian; strings are (offset, len) pairs into + * the UTF-8 arena; `offset === NONE` means "field absent". + * + * THIS FILE AND buffers.rs MUST MATCH BYTE FOR BYTE. Any layout change bumps + * KERNEL_ABI_VERSION on both sides — the loader refuses a version it doesn't + * know and the extraction path falls back to wasm. + * + * NodeKind / EdgeKind / provenance / visibility cross the boundary as indexes + * into NODE_KINDS / EDGE_KINDS (src/types.ts) and the small tables below, so + * those array orders are part of the contract (append, never reorder). The + * loader additionally verifies the kernel's own kind tables against + * NODE_KINDS/EDGE_KINDS at load time, so a stale .node degrades to the wasm + * path instead of mis-decoding. + */ + +export const KERNEL_ABI_VERSION = 1; + +/** Sentinel for "absent" in u32 slots and string-ref offsets. */ +export const NONE = 0xffffffff; + +export const META_SIZE = 36; +export const NODE_ROW_SIZE = 96; +export const EDGE_ROW_SIZE = 44; +export const REF_ROW_SIZE = 40; + +/** meta byte offsets */ +export const META = { + version: 0, // u8 + nodeCount: 4, // u32 + edgeCount: 8, // u32 + refCount: 12, // u32 + arenaLen: 16, // u32 + errorsOff: 20, // u32 (NONE = no errors) + errorsLen: 24, // u32 + durationMs: 28, // f64 (kernel-side wall; introspection only) +} as const; + +/** node row byte offsets */ +export const NODE = { + kind: 0, // u8 — NODE_KINDS index + visibility: 1, // u8 — VISIBILITIES index (0 = absent) + flags: 2, // u16 — (present, value) bit pairs, see FLAG + startLine: 4, // u32 + endLine: 8, // u32 + startColumn: 12, // u32 + endColumn: 16, // u32 + name: 20, // str + qualifiedName: 28, // str + id: 36, // str — kernel-computed node id + docstring: 44, // str + signature: 52, // str + decorators: 60, // str — NUL-joined list + typeParameters: 68, // str — NUL-joined list + returnType: 76, // str + extraJson: 84, // str — JSON of any extra Node props (escape hatch) + metrics: 92, // u32 — reserved (Arc 3.2 per-node code metrics) +} as const; + +/** edge row byte offsets */ +export const EDGE = { + sourceIdx: 0, // u32 (NONE → sourceIdStr) + targetIdx: 4, // u32 (NONE → targetIdStr) + kind: 8, // u8 — EDGE_KINDS index + provenance: 9, // u8 — PROVENANCES index (0 = absent) + line: 12, // u32 (NONE = absent) + column: 16, // u32 (NONE = absent) + metadataJson: 20, // str + sourceIdStr: 28, // str + targetIdStr: 36, // str +} as const; + +/** ref row byte offsets */ +export const REF = { + fromIdx: 0, // u32 (NONE → fromIdStr) + kind: 4, // u8 — EDGE_KINDS index, or FUNCTION_REF_CODE + line: 8, // u32 + column: 12, // u32 + referenceName: 16, // str + candidates: 24, // str — NUL-joined list + fromIdStr: 32, // str +} as const; + +/** ReferenceKind wire code for the internal-only `function_ref` (#756). */ +export const FUNCTION_REF_CODE = 200; + +/** Node bool-flag bit pairs: bit(2n) = present, bit(2n+1) = value. */ +export const FLAG = { + isExported: 0, + isAsync: 1, + isStatic: 2, + isAbstract: 3, +} as const; + +/** visibility byte values (0 = absent). */ +export const VISIBILITIES = [undefined, 'public', 'private', 'protected', 'internal'] as const; + +/** provenance byte values (0 = absent). */ +export const PROVENANCES = [undefined, 'tree-sitter', 'scip', 'heuristic'] as const; diff --git a/src/extraction/kernel/loader.ts b/src/extraction/kernel/loader.ts new file mode 100644 index 0000000..ae95f75 --- /dev/null +++ b/src/extraction/kernel/loader.ts @@ -0,0 +1,148 @@ +/** + * Native-kernel loader — finds, loads, and contract-verifies the + * codegraph-kernel .node addon. + * + * The kernel is OPTIONAL everywhere. Every failure mode here (no binary for + * this platform, dlopen error, ABI/kind-table mismatch) resolves to `null` + * and the extraction path silently keeps using the wasm pipeline — a missing + * or stale kernel must never break indexing, only skip the speedup. Set + * CODEGRAPH_KERNEL_DEBUG=1 to see why a kernel didn't load. + * + * Kill switch: CODEGRAPH_KERNEL=0 disables the kernel entirely (checked per + * call so tests and embedders can flip it at runtime). + * + * Search order: + * 1. CODEGRAPH_KERNEL_PATH — explicit .node path (dev/testing override) + * 2. /kernel/codegraph-kernel.node — the release bundle layout + * (lib/dist/** next to lib/kernel/; see scripts/build-bundle.sh) + * 3. /codegraph-kernel/prebuilds/-/codegraph-kernel.node + * — from-source runs and tests (staged by scripts/build-kernel.sh) + * + * "up3" = three directories above this file, which is the package root both + * from src/extraction/kernel/ and from dist/extraction/kernel/. + */ + +import * as fs from 'fs'; +import * as path from 'path'; +import { createRequire } from 'module'; +import { NODE_KINDS, EDGE_KINDS } from '../../types'; +import { KERNEL_ABI_VERSION } from './layout'; + +/** Raw buffer tables for one file — see layout.ts for the byte layout. */ +export interface KernelBuffers { + meta: Buffer; + nodes: Buffer; + edges: Buffer; + refs: Buffer; + arena: Buffer; +} + +export interface KernelContractInfo { + abiVersion: number; + kernelVersion: string; + nodeKinds: string[]; + edgeKinds: string[]; + languages: string[]; +} + +export interface KernelGrammarInfo { + abiVersion: number; + nodeKindCount: number; + fieldCount: number; + nodeKinds: string[]; + fieldNames: string[]; +} + +export interface KernelModule { + extractFile(filePath: string, content: string, language: string): KernelBuffers; + contractInfo(): KernelContractInfo; + grammarInfo(language: string): KernelGrammarInfo | null; +} + +const debugEnabled = () => process.env.CODEGRAPH_KERNEL_DEBUG === '1'; +function debug(msg: string): void { + if (debugEnabled()) process.stderr.write(`[codegraph-kernel] ${msg}\n`); +} + +/** Languages the loaded binary supports (contract-verified). Empty when no kernel. */ +let kernelLanguages: ReadonlySet = new Set(); +/** undefined = not attempted yet; null = attempted and unavailable. */ +let cached: KernelModule | null | undefined; + +function candidatePaths(): string[] { + const candidates: string[] = []; + if (process.env.CODEGRAPH_KERNEL_PATH) candidates.push(process.env.CODEGRAPH_KERNEL_PATH); + const packageRoot = path.resolve(__dirname, '..', '..', '..'); + candidates.push(path.join(packageRoot, 'kernel', 'codegraph-kernel.node')); + candidates.push( + path.join( + packageRoot, + 'codegraph-kernel', + 'prebuilds', + `${process.platform}-${process.arch}`, + 'codegraph-kernel.node' + ) + ); + return candidates; +} + +/** + * Verify the binary speaks our wire contract: same ABI version and byte-equal + * NodeKind/EdgeKind tables (kinds cross the boundary as indexes into these). + */ +function verifyContract(mod: KernelModule, from: string): boolean { + const info = mod.contractInfo(); + if (info.abiVersion !== KERNEL_ABI_VERSION) { + debug(`${from}: ABI ${info.abiVersion} != expected ${KERNEL_ABI_VERSION} — ignoring kernel`); + return false; + } + const sameTable = (a: readonly string[], b: readonly string[]) => + a.length === b.length && a.every((v, i) => v === b[i]); + if (!sameTable(info.nodeKinds, NODE_KINDS) || !sameTable(info.edgeKinds, EDGE_KINDS)) { + debug(`${from}: NodeKind/EdgeKind tables differ from src/types.ts — ignoring kernel`); + return false; + } + return true; +} + +/** + * Load (once per process) and return the kernel module, or null when + * unavailable. The kill switch is NOT checked here — callers route through + * `kernelAvailable()` / `tryKernelExtract()` which check it per call. + */ +export function getKernel(): KernelModule | null { + if (cached !== undefined) return cached; + cached = null; + for (const candidate of candidatePaths()) { + try { + if (!fs.existsSync(candidate)) continue; + // createRequire: works identically from CJS output and future ESM. + const req = createRequire(__filename); + const mod = req(candidate) as KernelModule; + if (typeof mod.extractFile !== 'function' || typeof mod.contractInfo !== 'function') { + debug(`${candidate}: missing expected exports — ignoring`); + continue; + } + if (!verifyContract(mod, candidate)) continue; + kernelLanguages = new Set(mod.contractInfo().languages); + debug(`loaded ${candidate} (languages: ${[...kernelLanguages].join(', ')})`); + cached = mod; + break; + } catch (err) { + debug(`${candidate}: failed to load — ${err instanceof Error ? err.message : String(err)}`); + } + } + return cached; +} + +/** True when the kill switch is off, a verified binary is loaded, and it supports `language`. */ +export function kernelSupports(language: string): boolean { + if (process.env.CODEGRAPH_KERNEL === '0') return false; + return getKernel() !== null && kernelLanguages.has(language); +} + +/** Test hook: forget the loaded module so a changed env is re-evaluated. */ +export function resetKernelForTests(): void { + cached = undefined; + kernelLanguages = new Set(); +} diff --git a/src/extraction/tree-sitter.ts b/src/extraction/tree-sitter.ts index f806738..f4f5979 100644 --- a/src/extraction/tree-sitter.ts +++ b/src/extraction/tree-sitter.ts @@ -30,6 +30,7 @@ import { DfmExtractor } from './dfm-extractor'; import { VueExtractor } from './vue-extractor'; import { MyBatisExtractor } from './mybatis-extractor'; import { CfmlExtractor } from './cfml-extractor'; +import { tryKernelExtract } from './kernel'; import { getAllFrameworkResolvers, getApplicableFrameworks, @@ -6700,8 +6701,16 @@ export function extractFromSource( const extractor = new DfmExtractor(filePath, source); result = extractor.extract(); } else { - const extractor = new TreeSitterExtractor(filePath, source, detectedLanguage); - result = extractor.extract(); + // Native-kernel route (docs/design/rust-kernel-migration-plan.md): gated + // per language, null when not routed/available or on a kernel error — + // the wasm TreeSitterExtractor below stays the fallback either way. + const kernelResult = tryKernelExtract(filePath, source, detectedLanguage); + if (kernelResult) { + result = kernelResult; + } else { + const extractor = new TreeSitterExtractor(filePath, source, detectedLanguage); + result = extractor.extract(); + } } // Framework-specific extraction (routes, middleware, etc.) diff --git a/src/extraction/wasm/tree-sitter-javascript.wasm b/src/extraction/wasm/tree-sitter-javascript.wasm new file mode 100755 index 0000000000000000000000000000000000000000..03e0bf198e45474d7b3a44e7e73ec6acfcdc9d61 GIT binary patch literal 411832 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 YuiD>G-g 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%0D}x}a9m?O{8kyT+RS&uLxRJ?lT#S{rNPFX8=( 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 literal 0 HcmV?d00001 diff --git a/src/extraction/wasm/tree-sitter-typescript.wasm b/src/extraction/wasm/tree-sitter-typescript.wasm new file mode 100755 index 0000000000000000000000000000000000000000..df83c8eb32104c17a3f2cf671626c961598593cd GIT binary patch literal 1414055 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