feat(kernel): R1 scaffold — napi-rs extraction kernel, buffer contract, routing + fallback, grammar-parity CI
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.<kind>/@name/@ref.<kind> 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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4efc6c70e2
commit
c5eebe6beb
+25
-14
@@ -14,6 +14,10 @@
|
||||
* Defined as a runtime-iterable `as const` array so the same source
|
||||
* of truth backs both the TS type and any runtime validation
|
||||
* (e.g. the search query parser).
|
||||
*
|
||||
* The ARRAY ORDER is part of the native kernel's wire contract (kinds cross
|
||||
* the boundary as indexes — see src/extraction/kernel/layout.ts); append new
|
||||
* kinds, never reorder.
|
||||
*/
|
||||
export const NODE_KINDS = [
|
||||
'file',
|
||||
@@ -43,21 +47,28 @@ export const NODE_KINDS = [
|
||||
export type NodeKind = (typeof NODE_KINDS)[number];
|
||||
|
||||
/**
|
||||
* Types of edges (relationships) between nodes
|
||||
* Types of edges (relationships) between nodes.
|
||||
*
|
||||
* Runtime-iterable like NODE_KINDS. The ARRAY ORDER is part of the native
|
||||
* kernel's wire contract (kinds cross the boundary as indexes — see
|
||||
* src/extraction/kernel/layout.ts); append new kinds, never reorder.
|
||||
*/
|
||||
export type EdgeKind =
|
||||
| 'contains' // Parent contains child (file→class, class→method)
|
||||
| 'calls' // Function/method calls another
|
||||
| 'imports' // File imports from another
|
||||
| 'exports' // File exports a symbol
|
||||
| 'extends' // Class/interface extends another
|
||||
| 'implements' // Class implements interface
|
||||
| 'references' // Generic reference to another symbol
|
||||
| 'type_of' // Variable/parameter has type
|
||||
| 'returns' // Function returns type
|
||||
| 'instantiates' // Creates instance of class
|
||||
| 'overrides' // Method overrides parent method
|
||||
| 'decorates'; // Decorator applied to symbol
|
||||
export const EDGE_KINDS = [
|
||||
'contains', // Parent contains child (file→class, class→method)
|
||||
'calls', // Function/method calls another
|
||||
'imports', // File imports from another
|
||||
'exports', // File exports a symbol
|
||||
'extends', // Class/interface extends another
|
||||
'implements', // Class implements interface
|
||||
'references', // Generic reference to another symbol
|
||||
'type_of', // Variable/parameter has type
|
||||
'returns', // Function returns type
|
||||
'instantiates', // Creates instance of class
|
||||
'overrides', // Method overrides parent method
|
||||
'decorates', // Decorator applied to symbol
|
||||
] as const;
|
||||
|
||||
export type EdgeKind = (typeof EDGE_KINDS)[number];
|
||||
|
||||
/**
|
||||
* Supported programming languages. See NODE_KINDS for why this is a
|
||||
|
||||
Reference in New Issue
Block a user