@functional-systems/srcx 0.1.0-dev.20 → 0.1.0-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Add Python/Go/Rust/C/C++/Shell/SQL syntax chunking with language-specific
6
+ declaration, function and statement boundaries, symbol/scope metadata and
7
+ bounded source-preserving splits. Bundle the pinned SQL grammar with licenses.
8
+
5
9
  - Distinguish Qwen setup, cache, device, input-size and timeout failures with
6
10
  actionable messages while keeping raw worker diagnostics private.
7
11
 
package/DESIGN.md CHANGED
@@ -53,7 +53,7 @@ Current recommendations, distinguished from user-confirmed choices:
53
53
  | Runtime | TypeScript and a supported Node.js release compatible with the existing SDK |
54
54
  | Database | LambdaDB only; no public backend selection or interchangeable database framework |
55
55
  | API key | Read `LAMBDADB_API_KEY` by default; optional environment-variable-name override |
56
- | Syntax | Java and TypeScript/JavaScript first; other text uses recorded fallback |
56
+ | Syntax | Java, TypeScript/JavaScript, Python, Go, Rust, C/C++, Shell and SQL; other text uses recorded fallback |
57
57
  | Source | Exact UTF-8 source inside file documents, with local blob cache |
58
58
  | File size | Start with a 1 MiB raw-source limit and explicit exclusions |
59
59
  | Embedding | A fixed `none` preset first; with a model, embed meaningful code and prose chunks while recording policy-based skips |
@@ -658,6 +658,25 @@ is not an unconditional one-function-per-chunk rule.
658
658
 
659
659
  ### Initial boundary and size rules
660
660
 
661
+ The implementation adds Python/Go/Rust/C/C++/Shell using the existing pinned WASM
662
+ grammars and SQL using a bundled, checksum-pinned grammar (see
663
+ `runtime/grammars/README.md`).
664
+ Python splits top-level declarations and class bodies, keeps decorators with their
665
+ function/class, and records nested class scopes. Go keeps functions/methods,
666
+ extracts receiver type scopes, and separates named types in grouped declarations.
667
+ Rust splits `impl`, `trait` and inline module bodies, retaining generic type/trait
668
+ scopes and outer attributes/doc comments with each declaration. Macros and `cfg`
669
+ conditions remain authored source; there is no compiler expansion or evaluation.
670
+ C/C++ walks declarators and namespace/class bodies, preserving templates and both
671
+ preprocessor branches without evaluating conditions. `.h` uses C; C++ header
672
+ extensions use C++. Shell covers `.sh`/`.bash` with the Bash grammar, keeping
673
+ functions and compound commands intact. SQL keeps each top-level statement,
674
+ including CTEs and supported quoted bodies, and records created object/schema
675
+ names. Unknown dialect syntax uses whole-file parse fallback.
676
+ Functions and SQL statements larger than the token ceiling use the common bounded text splitter with
677
+ their symbol/scope preserved; nested functions stay in the containing function.
678
+ These rules do not change Java/TypeScript/JavaScript boundaries.
679
+
661
680
  Prefer functions/methods and split large nodes along internal statement boundaries.
662
681
  Cover class headers, imports, types, fields, constants, top-level code, comments,
663
682
  punctuation, and gaps. Merge small adjacent units only within one scope and budget.
package/README.md CHANGED
@@ -70,12 +70,39 @@ submodules, LFS pointers, dependencies/build output, binary/invalid UTF-8 data,
70
70
  invalid UTF-8 paths, and files above 1 MiB. Excluded paths are preserved losslessly
71
71
  in `pathBase64`.
72
72
 
73
- Java, TypeScript/TSX, and JavaScript use pinned Tree-sitter WASM grammars. Markdown
74
- uses heading/paragraph/fence boundaries; configuration text uses section/line
75
- boundaries. Parse errors and unsupported languages use recorded text fallback.
76
- Chunks cover the exact source bytes, carry one-based line ranges, target 800 tokens,
77
- and stay below 1,500 tokens including path/symbol context. The internal window
78
- baseline is available to the test/build API, not as a public storage backend.
73
+ Java, TypeScript/TSX, JavaScript/JSX, Python, Go, Rust, C/C++, Shell and SQL use
74
+ pinned Tree-sitter WASM grammars.
75
+
76
+ | Language filter | File extensions | Boundaries and metadata |
77
+ | --------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
78
+ | `python` | `.py`, `.pyi` | Decorators, functions, classes, method scopes and docstrings |
79
+ | `go` | `.go` | Named types, functions and generic/pointer/value receiver scopes |
80
+ | `rust` | `.rs` | Functions, types and `impl`/`trait`/module scopes; outer attributes and doc comments stay with declarations |
81
+ | `c` | `.c`, `.h` | Functions, pointer declarators, types and preprocessor branches |
82
+ | `cpp` | `.cpp`, `.cc`, `.cxx`, `.C`, `.hpp`, `.hh`, `.hxx` | Functions, templates, namespace/class scopes and qualified names |
83
+ | `shell` | `.sh`, `.bash` | Bash-compatible functions and compound commands, including heredocs |
84
+ | `sql` | `.sql` | Statements, CTEs and supported function bodies; created object names/schema scopes |
85
+
86
+ `.h` files use the C grammar deterministically; C++ headers should use a listed
87
+ C++ extension for syntax chunking. Shell does not infer extensionless scripts from
88
+ shebangs or claim Zsh/Fish/PowerShell support. SQL uses the bundled
89
+ [grammar artifact](runtime/grammars/README.md); dialect-specific syntax unsupported
90
+ by that grammar falls back to text. SQL strings and supported dollar-quoted bodies
91
+ are parsed as part of their containing statement, not split at each semicolon.
92
+ Rust macros/`cfg` and C/C++ preprocessor conditions are not expanded or evaluated;
93
+ search uses authored source, including both conditional branches.
94
+
95
+ Markdown uses heading/paragraph/fence boundaries; configuration text uses
96
+ section/line boundaries. Parse errors and unsupported languages use recorded text
97
+ fallback. Chunks cover the exact source bytes, carry one-based line ranges, target
98
+ 800 tokens, and stay below 1,500 tokens including path/symbol context. The internal
99
+ window baseline is available to the test/build API, not as a public storage backend.
100
+
101
+ Added-language functions and SQL statements stay together when they fit the token
102
+ ceiling. Larger units use bounded text splitting with the same symbol/scope
103
+ metadata; nested functions remain inside their containing function. Syntax
104
+ unsupported by the pinned grammars uses recorded whole-file parse fallback.
105
+ Language labels remain available to `--language` filters even after fallback.
79
106
 
80
107
  ## Opt into managed embeddings
81
108
 
package/VALIDATION.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  Date: 2026-09-26 (Asia/Seoul).
4
4
 
5
+ ## Additional language chunking
6
+
7
+ Python (`.py`, `.pyi`), Go and Rust (`.rs`) use the pinned Tree-sitter grammars. Fixtures
8
+ verify decorated/async Python functions, class methods and nested class scopes,
9
+ docstrings, Go generic/pointer/value receivers, grouped types, Rust generic
10
+ `impl`/`trait` and module scopes, attributes/doc comments, authored macros, and complete UTF-8
11
+ source coverage with BOM, CRLF and Unicode. Long functions keep their symbol/scope
12
+ through bounded splitting; invalid parses retain text fallback. Artifact checks
13
+ verify language and symbol metadata in lexical/small/large build payloads.
14
+
15
+ C/C++ fixtures verify pointer declarators, templates, namespace/class scopes,
16
+ qualified names and both preprocessor branches. Shell fixtures retain quoted
17
+ semicolons, heredocs and compound commands. SQL fixtures retain CREATE/INSERT,
18
+ CTEs and dollar-quoted function bodies as statements, with created object/schema
19
+ metadata. Each added language is checked for token bounds, parse-error fallback,
20
+ exact source coverage and lexical/small/large payloads.
21
+
22
+ Local validation passed 107 Node tests, typecheck, formatting and version checks.
23
+ Four installed-package CLI checks cover the existing lexical/small/large workflow
24
+ and Python/Go/Rust/C/C++/Shell/SQL grammar loading with exact source payloads from
25
+ the npm artifact. The artifact check also verifies the SQL binary checksum and
26
+ packaged license notices.
27
+ The connected CLI checks use the synthetic SDK/HTTP test store. There were no live
28
+ LambdaDB writes, paid embedding calls or new ranking measurements. Earlier
29
+ retrieval results remain evidence for their original corpus and configuration.
30
+
5
31
  ## Qwen failure diagnostics
6
32
 
7
33
  Known worker failures now produce distinct setup, cache, device and input-limit
package/dist/build.d.ts CHANGED
@@ -39,7 +39,7 @@ export type Preset = {
39
39
  } | null;
40
40
  };
41
41
  export declare const PRESET: Preset;
42
- /** Opt-in managed preset; PRESET stays byte-for-byte compatible with lexical corpora. */
42
+ /** Embedding variants share the same chunking behavior. */
43
43
  export declare const MANAGED_PRESET: Preset;
44
44
  export declare const MANAGED_LARGE_PRESET: Preset;
45
45
  export declare function presetFor(embedding?: string): Preset;
package/dist/build.js CHANGED
@@ -20,7 +20,7 @@ export const PRESET = {
20
20
  maxFileBytes: 1024 * 1024,
21
21
  embedding: null,
22
22
  };
23
- /** Opt-in managed preset; PRESET stays byte-for-byte compatible with lexical corpora. */
23
+ /** Embedding variants share the same chunking behavior. */
24
24
  export const MANAGED_PRESET = {
25
25
  ...PRESET,
26
26
  embedding: {
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/chunk.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export declare function tokens(text: string): number;
2
2
  export declare const CHUNKER: {
3
- readonly version: 1;
3
+ readonly version: 2;
4
4
  readonly parser: "web-tree-sitter@0.25.10";
5
5
  readonly grammars: "tree-sitter-wasms@0.1.13";
6
+ readonly sqlGrammar: "tree-sitter-wasm@2.0.2/sql/b77530893b1dd6d1d4814eacf34d25bcbe4a12ec9a25a8c45b320d447265f42b";
6
7
  readonly tokenizer: "js-tiktoken@1.0.21/cl100k_base";
7
8
  readonly targetTokens: 800;
8
9
  readonly maxTokens: 1500;
package/dist/chunk.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { fileURLToPath } from "node:url";
1
2
  import { createRequire } from "node:module";
2
3
  import { Parser, Language } from "web-tree-sitter";
3
4
  import { getEncoding } from "js-tiktoken";
@@ -8,9 +9,10 @@ export function tokens(text) {
8
9
  return encoding.encode(text, [], []).length;
9
10
  }
10
11
  export const CHUNKER = {
11
- version: 1,
12
+ version: 2,
12
13
  parser: "web-tree-sitter@0.25.10",
13
14
  grammars: "tree-sitter-wasms@0.1.13",
15
+ sqlGrammar: "tree-sitter-wasm@2.0.2/sql/b77530893b1dd6d1d4814eacf34d25bcbe4a12ec9a25a8c45b320d447265f42b",
14
16
  tokenizer: "js-tiktoken@1.0.21/cl100k_base",
15
17
  targetTokens: 800,
16
18
  maxTokens: 1500,
@@ -25,14 +27,33 @@ async function language(name) {
25
27
  await initialized;
26
28
  let l = languages.get(name);
27
29
  if (!l) {
28
- l = await Language.load(require.resolve(`tree-sitter-wasms/out/tree-sitter-${name}.wasm`));
30
+ l = await Language.load(name === "sql"
31
+ ? fileURLToPath(new URL("../runtime/grammars/tree-sitter-sql.wasm", import.meta.url))
32
+ : require.resolve(`tree-sitter-wasms/out/tree-sitter-${name === "shell" ? "bash" : name}.wasm`));
29
33
  languages.set(name, l);
30
34
  }
31
35
  return l;
32
36
  }
33
37
  export function detectLanguage(path) {
38
+ if (path.endsWith(".C"))
39
+ return "cpp";
34
40
  const ext = path.split(".").at(-1)?.toLowerCase();
35
41
  return ({
42
+ py: "python",
43
+ pyi: "python",
44
+ go: "go",
45
+ rs: "rust",
46
+ c: "c",
47
+ h: "c",
48
+ cc: "cpp",
49
+ cpp: "cpp",
50
+ cxx: "cpp",
51
+ hh: "cpp",
52
+ hpp: "cpp",
53
+ hxx: "cpp",
54
+ sh: "shell",
55
+ bash: "shell",
56
+ sql: "sql",
36
57
  java: "java",
37
58
  ts: "typescript",
38
59
  tsx: "tsx",
@@ -78,6 +99,266 @@ function scopeName(n) {
78
99
  }
79
100
  return names.length ? names.join(".") : undefined;
80
101
  }
102
+ /** Keep complete functions (including decorators) before token-bound splitting. */
103
+ function pythonUnits(root) {
104
+ const units = [];
105
+ function visit(n, scope) {
106
+ const definition = n.childForFieldName("definition") ?? n;
107
+ const body = definition.childForFieldName("body");
108
+ const symbol = definition.childForFieldName("name")?.text.slice(0, 200);
109
+ const unit = {
110
+ start: n.startIndex,
111
+ end: n.endIndex,
112
+ kind: classify(definition.type),
113
+ scope,
114
+ symbol,
115
+ };
116
+ if (definition.type === "class_definition" && body) {
117
+ units.push({ ...unit, end: body.startIndex });
118
+ const nested = [scope, symbol].filter(Boolean).join(".");
119
+ for (const child of body.namedChildren)
120
+ if (child)
121
+ visit(child, nested);
122
+ }
123
+ else {
124
+ if (definition.type === "function_definition" && body)
125
+ unit.signature = definition.text
126
+ .slice(0, body.startIndex - definition.startIndex)
127
+ .trim()
128
+ .slice(0, 240);
129
+ if (definition.type === "expression_statement" &&
130
+ definition.firstNamedChild?.type === "string")
131
+ unit.kind = "documentation";
132
+ units.push(unit);
133
+ }
134
+ }
135
+ for (const n of root.namedChildren)
136
+ if (n)
137
+ visit(n);
138
+ return units;
139
+ }
140
+ function goUnits(root) {
141
+ const units = [];
142
+ for (const n of root.namedChildren) {
143
+ if (!n)
144
+ continue;
145
+ if (n.type === "type_declaration") {
146
+ // Include the type keyword and grouped declaration delimiters in coverage.
147
+ const specs = n.namedChildren.filter((node) => node !== null);
148
+ for (const [i, spec] of specs.entries())
149
+ units.push({
150
+ start: i === 0 ? n.startIndex : spec.startIndex,
151
+ end: i === specs.length - 1 ? n.endIndex : spec.endIndex,
152
+ kind: classify(spec.type),
153
+ symbol: spec.childForFieldName("name")?.text.slice(0, 200),
154
+ });
155
+ continue;
156
+ }
157
+ const unit = {
158
+ start: n.startIndex,
159
+ end: n.endIndex,
160
+ kind: classify(n.type),
161
+ symbol: n.childForFieldName("name")?.text.slice(0, 200),
162
+ };
163
+ let receiver = n
164
+ .childForFieldName("receiver")
165
+ ?.firstNamedChild?.childForFieldName("type");
166
+ if (receiver?.type === "pointer_type")
167
+ receiver = receiver.firstNamedChild;
168
+ if (receiver?.type === "generic_type")
169
+ receiver = receiver.childForFieldName("type");
170
+ if (receiver)
171
+ unit.scope = receiver.text.slice(0, 160);
172
+ const body = n.childForFieldName("body");
173
+ if (unit.kind === "function")
174
+ unit.signature = n.text
175
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
176
+ .trim()
177
+ .slice(0, 240);
178
+ units.push(unit);
179
+ }
180
+ return units;
181
+ }
182
+ /** Walk declarators rather than parameter/type names (including pointer returns). */
183
+ function declaratorName(n) {
184
+ if (!n)
185
+ return undefined;
186
+ if (/^(identifier|field_identifier|type_identifier|qualified_identifier|destructor_name|operator_name)$/.test(n.type))
187
+ return n.text;
188
+ return declaratorName(n.childForFieldName("declarator") ??
189
+ (n.type === "parenthesized_declarator" ? n.firstNamedChild : null));
190
+ }
191
+ function cUnits(root) {
192
+ const units = [];
193
+ function visit(n, scope, start = n.startIndex) {
194
+ if (n.type === "template_declaration") {
195
+ const declaration = n.namedChildren
196
+ .filter((c) => !!c && c.type !== "template_parameter_list")
197
+ .at(-1);
198
+ if (declaration) {
199
+ visit(declaration, scope, start);
200
+ return;
201
+ }
202
+ }
203
+ const body = n.childForFieldName("body");
204
+ const symbol = n.childForFieldName("name")?.text ??
205
+ declaratorName(n.childForFieldName("declarator"));
206
+ const unit = {
207
+ start,
208
+ end: n.endIndex,
209
+ kind: n.type === "preproc_include" ? "imports" : classify(n.type),
210
+ scope,
211
+ symbol: symbol?.slice(0, 200),
212
+ };
213
+ if (body && /^(declaration_list|field_declaration_list)$/.test(body.type)) {
214
+ const nested = [scope, symbol].filter(Boolean).join("::") || undefined;
215
+ units.push({ ...unit, end: body.startIndex + 1 });
216
+ for (const child of body.namedChildren)
217
+ if (child)
218
+ visit(child, nested);
219
+ units.push({
220
+ start: body.endIndex - 1,
221
+ end: n.endIndex,
222
+ kind: "structural",
223
+ scope: nested,
224
+ });
225
+ }
226
+ else if (/^preproc_(if|ifdef|elif|else|elifdef)$/.test(n.type)) {
227
+ // Preserve directives and both branches without evaluating the build configuration.
228
+ const condition = n.childForFieldName("condition") ?? n.childForFieldName("name");
229
+ const children = n.namedChildren.filter((c) => !!c && c.id !== condition?.id);
230
+ if (!children.length) {
231
+ units.push(unit);
232
+ return;
233
+ }
234
+ units.push({ ...unit, end: children[0].startIndex });
235
+ for (const child of children)
236
+ visit(child, scope);
237
+ const end = children.at(-1).endIndex;
238
+ if (end < n.endIndex)
239
+ units.push({ start: end, end: n.endIndex, kind: "structural", scope });
240
+ }
241
+ else {
242
+ if (n.type === "function_definition")
243
+ unit.signature = n.text
244
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
245
+ .trim()
246
+ .slice(0, 240);
247
+ units.push(unit);
248
+ }
249
+ }
250
+ for (const n of root.namedChildren)
251
+ if (n)
252
+ visit(n);
253
+ return units;
254
+ }
255
+ function shellUnits(root) {
256
+ return root.namedChildren
257
+ .filter((n) => !!n)
258
+ .map((n) => {
259
+ const body = n.childForFieldName("body");
260
+ return {
261
+ start: n.startIndex,
262
+ end: n.endIndex,
263
+ kind: classify(n.type),
264
+ symbol: n.type === "function_definition"
265
+ ? n.childForFieldName("name")?.text.slice(0, 200)
266
+ : undefined,
267
+ signature: n.type === "function_definition"
268
+ ? n.text
269
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
270
+ .trim()
271
+ .slice(0, 240)
272
+ : undefined,
273
+ };
274
+ });
275
+ }
276
+ function sqlUnits(root) {
277
+ return root.namedChildren
278
+ .filter((n) => !!n)
279
+ .map((n) => {
280
+ const declaration = n.firstNamedChild;
281
+ // Object names describe DDL declarations, not every table referenced by a query.
282
+ const object = declaration?.type.startsWith("create_")
283
+ ? declaration.namedChildren.find((c) => c?.type === "object_reference")
284
+ : undefined;
285
+ return {
286
+ start: n.startIndex,
287
+ end: n.nextSibling?.type === ";" ? n.nextSibling.endIndex : n.endIndex,
288
+ kind: n.type === "comment" ? "documentation" : "statement",
289
+ symbol: object?.childForFieldName("name")?.text.slice(0, 200),
290
+ scope: object?.childForFieldName("schema")?.text.slice(0, 160),
291
+ };
292
+ });
293
+ }
294
+ function rustUnits(root) {
295
+ const units = [];
296
+ function visit(container, scope) {
297
+ let prefix;
298
+ for (const n of container.namedChildren) {
299
+ if (!n)
300
+ continue;
301
+ // Outer attributes/doc comments belong to the following item, not a chunk
302
+ // containing only cfg/derive metadata. Inner module docs remain separate.
303
+ if (n.type === "attribute_item" ||
304
+ /^(\/\/\/(?!\/)|\/\*\*(?!\*))/.test(n.text)) {
305
+ prefix ??= n.startIndex;
306
+ continue;
307
+ }
308
+ if (prefix !== undefined && n.type.endsWith("comment"))
309
+ continue;
310
+ const body = n.childForFieldName("body");
311
+ const name = n.childForFieldName("name")?.text;
312
+ const type = n.childForFieldName("type")?.text;
313
+ const trait = n.childForFieldName("trait")?.text;
314
+ const unit = {
315
+ start: prefix ?? n.startIndex,
316
+ end: n.endIndex,
317
+ kind: n.type === "use_declaration" || n.type === "extern_crate_declaration"
318
+ ? "imports"
319
+ : classify(n.type),
320
+ scope,
321
+ symbol: (name ??
322
+ (n.type === "impl_item" ? type : n.childForFieldName("macro")?.text))?.slice(0, 200),
323
+ };
324
+ prefix = undefined;
325
+ if (body?.type === "declaration_list") {
326
+ const owner = n.type === "impl_item"
327
+ ? [type, trait].filter(Boolean).join(" as ")
328
+ : name;
329
+ const nested = [scope, owner].filter(Boolean).join("::").slice(0, 160) || undefined;
330
+ units.push({ ...unit, end: body.startIndex + 1 });
331
+ visit(body, nested);
332
+ // Keep closing delimiters with their container, including empty bodies.
333
+ units.push({
334
+ start: body.endIndex - 1,
335
+ end: n.endIndex,
336
+ kind: "structural",
337
+ scope: nested,
338
+ });
339
+ }
340
+ else {
341
+ if (unit.kind === "function")
342
+ unit.signature = n.text
343
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
344
+ .trim()
345
+ .slice(0, 240);
346
+ units.push(unit);
347
+ }
348
+ }
349
+ if (prefix !== undefined)
350
+ units.push({
351
+ start: prefix,
352
+ end: container.type === "declaration_list"
353
+ ? container.endIndex - 1
354
+ : container.endIndex,
355
+ kind: "documentation",
356
+ scope,
357
+ });
358
+ }
359
+ visit(root);
360
+ return units;
361
+ }
81
362
  /** Bound strings without slicing a surrogate pair; prefer line ends where possible. */
82
363
  function splitUnit(source, path, u, overlap, policy) {
83
364
  const result = [];
@@ -163,7 +444,19 @@ export async function chunk(source, path, mode = "syntax", policy = CHUNKER.enri
163
444
  status = "window-baseline";
164
445
  units = [{ start: 0, end: source.length, kind: "fallback" }];
165
446
  }
166
- else if (["java", "typescript", "tsx", "javascript"].includes(lang)) {
447
+ else if ([
448
+ "java",
449
+ "typescript",
450
+ "tsx",
451
+ "javascript",
452
+ "python",
453
+ "go",
454
+ "rust",
455
+ "c",
456
+ "cpp",
457
+ "shell",
458
+ "sql",
459
+ ].includes(lang)) {
167
460
  const grammar = await language(lang);
168
461
  const parser = new Parser();
169
462
  let tree = null;
@@ -199,7 +492,20 @@ export async function chunk(source, path, mode = "syntax", policy = CHUNKER.enri
199
492
  else if (n.endIndex > n.startIndex)
200
493
  units.push(u);
201
494
  }
202
- visit(tree.rootNode);
495
+ if (lang === "python")
496
+ units = pythonUnits(tree.rootNode);
497
+ else if (lang === "go")
498
+ units = goUnits(tree.rootNode);
499
+ else if (lang === "rust")
500
+ units = rustUnits(tree.rootNode);
501
+ else if (lang === "c" || lang === "cpp")
502
+ units = cUnits(tree.rootNode);
503
+ else if (lang === "shell")
504
+ units = shellUnits(tree.rootNode);
505
+ else if (lang === "sql")
506
+ units = sqlUnits(tree.rootNode);
507
+ else
508
+ visit(tree.rootNode);
203
509
  // Attach every gap (punctuation, BOM, comments, whitespace) without altering source bytes.
204
510
  let cursor = 0;
205
511
  const covered = [];
@@ -241,6 +547,9 @@ export async function chunk(source, path, mode = "syntax", policy = CHUNKER.enri
241
547
  for (const u of units) {
242
548
  const prev = merged.at(-1);
243
549
  if (prev &&
550
+ lang !== "sql" &&
551
+ (!["python", "go", "rust", "c", "cpp", "shell"].includes(lang) ||
552
+ (!prev.symbol && !u.symbol)) &&
244
553
  prev.kind !== "function" &&
245
554
  u.kind === prev.kind &&
246
555
  u.scope === prev.scope &&
package/dist/chunk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functional-systems/srcx",
3
- "version": "0.1.0-dev.20",
3
+ "version": "0.1.0-dev.21",
4
4
  "private": false,
5
5
  "description": "Version-aware code search on LambdaDB",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  "files": [
11
11
  "dist",
12
12
  "runtime/qwen.py",
13
+ "runtime/grammars",
13
14
  "runtime/requirements.txt",
14
15
  "README.md",
15
16
  "DESIGN.md",
@@ -64,5 +65,5 @@
64
65
  "url": "https://github.com/lambdadb/srcx/issues"
65
66
  },
66
67
  "license": "Apache-2.0",
67
- "gitHead": "d1cdcfd08f3ca8becb5d6a5cd8c42552429509c1"
68
+ "gitHead": "26e0b14ad293d4f2b48a7aa5987f03b8a9c3bea4"
68
69
  }
@@ -0,0 +1,26 @@
1
+ # Bundled SQL grammar
2
+
3
+ `tree-sitter-sql.wasm` is extracted unchanged from
4
+ [`tree-sitter-wasm@2.0.2`](https://www.npmjs.com/package/tree-sitter-wasm/v/2.0.2),
5
+ path `package/out/sql/tree-sitter-sql.wasm`. Only this grammar is bundled to avoid
6
+ adding the full 120 MB grammar distribution to every installation.
7
+
8
+ - Binary SHA-256: `b77530893b1dd6d1d4814eacf34d25bcbe4a12ec9a25a8c45b320d447265f42b`
9
+ - npm archive integrity: `sha512-zxC/EcugWmdytml6hZoU7vn1olencvNDSluO3BOyYsPWPXkBfbjmvNriJCHght+vXMYsLJZhK9v9e+YBggV4kQ==`
10
+ - Grammar source: <https://github.com/derekstride/tree-sitter-sql>
11
+ - Distributor: <https://github.com/Crysthamus/tree-sitter-wasm>
12
+ - MIT notices: `tree-sitter-sql.LICENSE` and `tree-sitter-wasm.LICENSE`.
13
+
14
+ The distributor declares `@derekstride/tree-sitter-sql@^0.3.11`; srcx pins the
15
+ actual binary above, not that floating source range. The SQL grammar identity and
16
+ checksum are included in `CHUNKER`, hence in preset/build identity. Loading is
17
+ local through `web-tree-sitter`; installation requires no grammar compilation or
18
+ runtime download. Installed-package tests exercise the bundled binary.
19
+
20
+ To reproduce extraction, use `npm pack tree-sitter-wasm@2.0.2 --ignore-scripts`,
21
+ verify the archive against the integrity above, then extract the named member
22
+ and verify its SHA-256. Preserve both license notices when replacing the file.
23
+ Run language and installed-package tests when updating the grammar.
24
+
25
+ Supported syntax is defined by this grammar, not by a database connection or
26
+ server dialect setting. Unsupported/error parses use whole-file text fallback.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Derek Stride
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Crysthamus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/src/build.ts CHANGED
@@ -46,7 +46,7 @@ export const PRESET: Preset = {
46
46
  maxFileBytes: 1024 * 1024,
47
47
  embedding: null,
48
48
  };
49
- /** Opt-in managed preset; PRESET stays byte-for-byte compatible with lexical corpora. */
49
+ /** Embedding variants share the same chunking behavior. */
50
50
  export const MANAGED_PRESET: Preset = {
51
51
  ...PRESET,
52
52
  embedding: {
package/src/chunk.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { fileURLToPath } from "node:url";
1
2
  import { createRequire } from "node:module";
2
3
  import { Parser, Language, type Node } from "web-tree-sitter";
3
4
  import { getEncoding } from "js-tiktoken";
@@ -8,9 +9,11 @@ export function tokens(text: string): number {
8
9
  return encoding.encode(text, [], []).length;
9
10
  }
10
11
  export const CHUNKER = {
11
- version: 1,
12
+ version: 2,
12
13
  parser: "web-tree-sitter@0.25.10",
13
14
  grammars: "tree-sitter-wasms@0.1.13",
15
+ sqlGrammar:
16
+ "tree-sitter-wasm@2.0.2/sql/b77530893b1dd6d1d4814eacf34d25bcbe4a12ec9a25a8c45b320d447265f42b",
14
17
  tokenizer: "js-tiktoken@1.0.21/cl100k_base",
15
18
  targetTokens: 800,
16
19
  maxTokens: 1500,
@@ -46,17 +49,42 @@ async function language(name: string): Promise<Language> {
46
49
  let l = languages.get(name);
47
50
  if (!l) {
48
51
  l = await Language.load(
49
- require.resolve(`tree-sitter-wasms/out/tree-sitter-${name}.wasm`),
52
+ name === "sql"
53
+ ? fileURLToPath(
54
+ new URL(
55
+ "../runtime/grammars/tree-sitter-sql.wasm",
56
+ import.meta.url,
57
+ ),
58
+ )
59
+ : require.resolve(
60
+ `tree-sitter-wasms/out/tree-sitter-${name === "shell" ? "bash" : name}.wasm`,
61
+ ),
50
62
  );
51
63
  languages.set(name, l);
52
64
  }
53
65
  return l;
54
66
  }
55
67
  export function detectLanguage(path: string): string {
68
+ if (path.endsWith(".C")) return "cpp";
56
69
  const ext = path.split(".").at(-1)?.toLowerCase();
57
70
  return (
58
71
  (
59
72
  {
73
+ py: "python",
74
+ pyi: "python",
75
+ go: "go",
76
+ rs: "rust",
77
+ c: "c",
78
+ h: "c",
79
+ cc: "cpp",
80
+ cpp: "cpp",
81
+ cxx: "cpp",
82
+ hh: "cpp",
83
+ hpp: "cpp",
84
+ hxx: "cpp",
85
+ sh: "shell",
86
+ bash: "shell",
87
+ sql: "sql",
60
88
  java: "java",
61
89
  ts: "typescript",
62
90
  tsx: "tsx",
@@ -102,6 +130,278 @@ function scopeName(n: Node): string | undefined {
102
130
  }
103
131
  return names.length ? names.join(".") : undefined;
104
132
  }
133
+
134
+ /** Keep complete functions (including decorators) before token-bound splitting. */
135
+ function pythonUnits(root: Node): Unit[] {
136
+ const units: Unit[] = [];
137
+ function visit(n: Node, scope?: string): void {
138
+ const definition = n.childForFieldName("definition") ?? n;
139
+ const body = definition.childForFieldName("body");
140
+ const symbol = definition.childForFieldName("name")?.text.slice(0, 200);
141
+ const unit: Unit = {
142
+ start: n.startIndex,
143
+ end: n.endIndex,
144
+ kind: classify(definition.type),
145
+ scope,
146
+ symbol,
147
+ };
148
+ if (definition.type === "class_definition" && body) {
149
+ units.push({ ...unit, end: body.startIndex });
150
+ const nested = [scope, symbol].filter(Boolean).join(".");
151
+ for (const child of body.namedChildren) if (child) visit(child, nested);
152
+ } else {
153
+ if (definition.type === "function_definition" && body)
154
+ unit.signature = definition.text
155
+ .slice(0, body.startIndex - definition.startIndex)
156
+ .trim()
157
+ .slice(0, 240);
158
+ if (
159
+ definition.type === "expression_statement" &&
160
+ definition.firstNamedChild?.type === "string"
161
+ )
162
+ unit.kind = "documentation";
163
+ units.push(unit);
164
+ }
165
+ }
166
+ for (const n of root.namedChildren) if (n) visit(n);
167
+ return units;
168
+ }
169
+
170
+ function goUnits(root: Node): Unit[] {
171
+ const units: Unit[] = [];
172
+ for (const n of root.namedChildren) {
173
+ if (!n) continue;
174
+ if (n.type === "type_declaration") {
175
+ // Include the type keyword and grouped declaration delimiters in coverage.
176
+ const specs = n.namedChildren.filter(
177
+ (node): node is Node => node !== null,
178
+ );
179
+ for (const [i, spec] of specs.entries())
180
+ units.push({
181
+ start: i === 0 ? n.startIndex : spec.startIndex,
182
+ end: i === specs.length - 1 ? n.endIndex : spec.endIndex,
183
+ kind: classify(spec.type),
184
+ symbol: spec.childForFieldName("name")?.text.slice(0, 200),
185
+ });
186
+ continue;
187
+ }
188
+ const unit: Unit = {
189
+ start: n.startIndex,
190
+ end: n.endIndex,
191
+ kind: classify(n.type),
192
+ symbol: n.childForFieldName("name")?.text.slice(0, 200),
193
+ };
194
+ let receiver = n
195
+ .childForFieldName("receiver")
196
+ ?.firstNamedChild?.childForFieldName("type");
197
+ if (receiver?.type === "pointer_type") receiver = receiver.firstNamedChild;
198
+ if (receiver?.type === "generic_type")
199
+ receiver = receiver.childForFieldName("type");
200
+ if (receiver) unit.scope = receiver.text.slice(0, 160);
201
+ const body = n.childForFieldName("body");
202
+ if (unit.kind === "function")
203
+ unit.signature = n.text
204
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
205
+ .trim()
206
+ .slice(0, 240);
207
+ units.push(unit);
208
+ }
209
+ return units;
210
+ }
211
+
212
+ /** Walk declarators rather than parameter/type names (including pointer returns). */
213
+ function declaratorName(n: Node | null): string | undefined {
214
+ if (!n) return undefined;
215
+ if (
216
+ /^(identifier|field_identifier|type_identifier|qualified_identifier|destructor_name|operator_name)$/.test(
217
+ n.type,
218
+ )
219
+ )
220
+ return n.text;
221
+ return declaratorName(
222
+ n.childForFieldName("declarator") ??
223
+ (n.type === "parenthesized_declarator" ? n.firstNamedChild : null),
224
+ );
225
+ }
226
+
227
+ function cUnits(root: Node): Unit[] {
228
+ const units: Unit[] = [];
229
+ function visit(n: Node, scope?: string, start = n.startIndex): void {
230
+ if (n.type === "template_declaration") {
231
+ const declaration = n.namedChildren
232
+ .filter((c): c is Node => !!c && c.type !== "template_parameter_list")
233
+ .at(-1);
234
+ if (declaration) {
235
+ visit(declaration, scope, start);
236
+ return;
237
+ }
238
+ }
239
+ const body = n.childForFieldName("body");
240
+ const symbol =
241
+ n.childForFieldName("name")?.text ??
242
+ declaratorName(n.childForFieldName("declarator"));
243
+ const unit: Unit = {
244
+ start,
245
+ end: n.endIndex,
246
+ kind: n.type === "preproc_include" ? "imports" : classify(n.type),
247
+ scope,
248
+ symbol: symbol?.slice(0, 200),
249
+ };
250
+ if (body && /^(declaration_list|field_declaration_list)$/.test(body.type)) {
251
+ const nested = [scope, symbol].filter(Boolean).join("::") || undefined;
252
+ units.push({ ...unit, end: body.startIndex + 1 });
253
+ for (const child of body.namedChildren) if (child) visit(child, nested);
254
+ units.push({
255
+ start: body.endIndex - 1,
256
+ end: n.endIndex,
257
+ kind: "structural",
258
+ scope: nested,
259
+ });
260
+ } else if (/^preproc_(if|ifdef|elif|else|elifdef)$/.test(n.type)) {
261
+ // Preserve directives and both branches without evaluating the build configuration.
262
+ const condition =
263
+ n.childForFieldName("condition") ?? n.childForFieldName("name");
264
+ const children = n.namedChildren.filter(
265
+ (c): c is Node => !!c && c.id !== condition?.id,
266
+ );
267
+ if (!children.length) {
268
+ units.push(unit);
269
+ return;
270
+ }
271
+ units.push({ ...unit, end: children[0]!.startIndex });
272
+ for (const child of children) visit(child, scope);
273
+ const end = children.at(-1)!.endIndex;
274
+ if (end < n.endIndex)
275
+ units.push({ start: end, end: n.endIndex, kind: "structural", scope });
276
+ } else {
277
+ if (n.type === "function_definition")
278
+ unit.signature = n.text
279
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
280
+ .trim()
281
+ .slice(0, 240);
282
+ units.push(unit);
283
+ }
284
+ }
285
+ for (const n of root.namedChildren) if (n) visit(n);
286
+ return units;
287
+ }
288
+
289
+ function shellUnits(root: Node): Unit[] {
290
+ return root.namedChildren
291
+ .filter((n): n is Node => !!n)
292
+ .map((n) => {
293
+ const body = n.childForFieldName("body");
294
+ return {
295
+ start: n.startIndex,
296
+ end: n.endIndex,
297
+ kind: classify(n.type),
298
+ symbol:
299
+ n.type === "function_definition"
300
+ ? n.childForFieldName("name")?.text.slice(0, 200)
301
+ : undefined,
302
+ signature:
303
+ n.type === "function_definition"
304
+ ? n.text
305
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
306
+ .trim()
307
+ .slice(0, 240)
308
+ : undefined,
309
+ };
310
+ });
311
+ }
312
+
313
+ function sqlUnits(root: Node): Unit[] {
314
+ return root.namedChildren
315
+ .filter((n): n is Node => !!n)
316
+ .map((n) => {
317
+ const declaration = n.firstNamedChild;
318
+ // Object names describe DDL declarations, not every table referenced by a query.
319
+ const object = declaration?.type.startsWith("create_")
320
+ ? declaration.namedChildren.find((c) => c?.type === "object_reference")
321
+ : undefined;
322
+ return {
323
+ start: n.startIndex,
324
+ end: n.nextSibling?.type === ";" ? n.nextSibling.endIndex : n.endIndex,
325
+ kind: n.type === "comment" ? "documentation" : "statement",
326
+ symbol: object?.childForFieldName("name")?.text.slice(0, 200),
327
+ scope: object?.childForFieldName("schema")?.text.slice(0, 160),
328
+ };
329
+ });
330
+ }
331
+
332
+ function rustUnits(root: Node): Unit[] {
333
+ const units: Unit[] = [];
334
+ function visit(container: Node, scope?: string): void {
335
+ let prefix: number | undefined;
336
+ for (const n of container.namedChildren) {
337
+ if (!n) continue;
338
+ // Outer attributes/doc comments belong to the following item, not a chunk
339
+ // containing only cfg/derive metadata. Inner module docs remain separate.
340
+ if (
341
+ n.type === "attribute_item" ||
342
+ /^(\/\/\/(?!\/)|\/\*\*(?!\*))/.test(n.text)
343
+ ) {
344
+ prefix ??= n.startIndex;
345
+ continue;
346
+ }
347
+ if (prefix !== undefined && n.type.endsWith("comment")) continue;
348
+ const body = n.childForFieldName("body");
349
+ const name = n.childForFieldName("name")?.text;
350
+ const type = n.childForFieldName("type")?.text;
351
+ const trait = n.childForFieldName("trait")?.text;
352
+ const unit: Unit = {
353
+ start: prefix ?? n.startIndex,
354
+ end: n.endIndex,
355
+ kind:
356
+ n.type === "use_declaration" || n.type === "extern_crate_declaration"
357
+ ? "imports"
358
+ : classify(n.type),
359
+ scope,
360
+ symbol: (
361
+ name ??
362
+ (n.type === "impl_item" ? type : n.childForFieldName("macro")?.text)
363
+ )?.slice(0, 200),
364
+ };
365
+ prefix = undefined;
366
+ if (body?.type === "declaration_list") {
367
+ const owner =
368
+ n.type === "impl_item"
369
+ ? [type, trait].filter(Boolean).join(" as ")
370
+ : name;
371
+ const nested =
372
+ [scope, owner].filter(Boolean).join("::").slice(0, 160) || undefined;
373
+ units.push({ ...unit, end: body.startIndex + 1 });
374
+ visit(body, nested);
375
+ // Keep closing delimiters with their container, including empty bodies.
376
+ units.push({
377
+ start: body.endIndex - 1,
378
+ end: n.endIndex,
379
+ kind: "structural",
380
+ scope: nested,
381
+ });
382
+ } else {
383
+ if (unit.kind === "function")
384
+ unit.signature = n.text
385
+ .slice(0, body ? body.startIndex - n.startIndex : undefined)
386
+ .trim()
387
+ .slice(0, 240);
388
+ units.push(unit);
389
+ }
390
+ }
391
+ if (prefix !== undefined)
392
+ units.push({
393
+ start: prefix,
394
+ end:
395
+ container.type === "declaration_list"
396
+ ? container.endIndex - 1
397
+ : container.endIndex,
398
+ kind: "documentation",
399
+ scope,
400
+ });
401
+ }
402
+ visit(root);
403
+ return units;
404
+ }
105
405
  /** Bound strings without slicing a surrogate pair; prefer line ends where possible. */
106
406
  function splitUnit(
107
407
  source: string,
@@ -198,7 +498,21 @@ export async function chunk(
198
498
  if (mode === "window") {
199
499
  status = "window-baseline";
200
500
  units = [{ start: 0, end: source.length, kind: "fallback" }];
201
- } else if (["java", "typescript", "tsx", "javascript"].includes(lang)) {
501
+ } else if (
502
+ [
503
+ "java",
504
+ "typescript",
505
+ "tsx",
506
+ "javascript",
507
+ "python",
508
+ "go",
509
+ "rust",
510
+ "c",
511
+ "cpp",
512
+ "shell",
513
+ "sql",
514
+ ].includes(lang)
515
+ ) {
202
516
  const grammar = await language(lang);
203
517
  const parser = new Parser();
204
518
  let tree: ReturnType<Parser["parse"]> = null;
@@ -233,7 +547,13 @@ export async function chunk(
233
547
  for (const child of n.namedChildren) if (child) visit(child);
234
548
  } else if (n.endIndex > n.startIndex) units.push(u);
235
549
  }
236
- visit(tree.rootNode);
550
+ if (lang === "python") units = pythonUnits(tree.rootNode);
551
+ else if (lang === "go") units = goUnits(tree.rootNode);
552
+ else if (lang === "rust") units = rustUnits(tree.rootNode);
553
+ else if (lang === "c" || lang === "cpp") units = cUnits(tree.rootNode);
554
+ else if (lang === "shell") units = shellUnits(tree.rootNode);
555
+ else if (lang === "sql") units = sqlUnits(tree.rootNode);
556
+ else visit(tree.rootNode);
237
557
  // Attach every gap (punctuation, BOM, comments, whitespace) without altering source bytes.
238
558
  let cursor = 0;
239
559
  const covered: Unit[] = [];
@@ -272,6 +592,9 @@ export async function chunk(
272
592
  const prev = merged.at(-1);
273
593
  if (
274
594
  prev &&
595
+ lang !== "sql" &&
596
+ (!["python", "go", "rust", "c", "cpp", "shell"].includes(lang) ||
597
+ (!prev.symbol && !u.symbol)) &&
275
598
  prev.kind !== "function" &&
276
599
  u.kind === prev.kind &&
277
600
  u.scope === prev.scope &&