@quolu/lattice 0.43.0 → 0.45.0
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/package.json +4 -2
- package/sensor/NOTICE +8 -19
- package/sensor/dist/bin/lattice-sensor.js +31 -0
- package/sensor/dist/db/index.d.ts +114 -0
- package/sensor/dist/db/index.d.ts.map +1 -1
- package/sensor/dist/db/index.js +235 -7
- package/sensor/dist/db/index.js.map +1 -1
- package/sensor/dist/db/migrations.js +1 -1
- package/sensor/dist/db/migrations.js.map +1 -1
- package/sensor/dist/db/queries.d.ts +46 -8
- package/sensor/dist/db/queries.d.ts.map +1 -1
- package/sensor/dist/db/queries.js +99 -16
- package/sensor/dist/db/queries.js.map +1 -1
- package/sensor/dist/db/wal-valve.d.ts +15 -2
- package/sensor/dist/db/wal-valve.d.ts.map +1 -1
- package/sensor/dist/db/wal-valve.js +88 -6
- package/sensor/dist/db/wal-valve.js.map +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts.map +1 -1
- package/sensor/dist/extraction/extraction-version.js +5 -1
- package/sensor/dist/extraction/extraction-version.js.map +1 -1
- package/sensor/dist/extraction/function-ref.d.ts.map +1 -1
- package/sensor/dist/extraction/function-ref.js +6 -0
- package/sensor/dist/extraction/function-ref.js.map +1 -1
- package/sensor/dist/extraction/grammars.d.ts.map +1 -1
- package/sensor/dist/extraction/grammars.js +46 -0
- package/sensor/dist/extraction/grammars.js.map +1 -1
- package/sensor/dist/extraction/index.d.ts +11 -1
- package/sensor/dist/extraction/index.d.ts.map +1 -1
- package/sensor/dist/extraction/index.js +68 -16
- package/sensor/dist/extraction/index.js.map +1 -1
- package/sensor/dist/extraction/kernel/decode.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/decode.js +9 -3
- package/sensor/dist/extraction/kernel/decode.js.map +1 -1
- package/sensor/dist/extraction/kernel/index.d.ts +2 -0
- package/sensor/dist/extraction/kernel/index.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/index.js +122 -8
- package/sensor/dist/extraction/kernel/index.js.map +1 -1
- package/sensor/dist/extraction/kernel/layout.d.ts +10 -1
- package/sensor/dist/extraction/kernel/layout.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/layout.js +11 -2
- package/sensor/dist/extraction/kernel/layout.js.map +1 -1
- package/sensor/dist/extraction/kernel/loader.d.ts +42 -0
- package/sensor/dist/extraction/kernel/loader.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/loader.js.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.d.ts +13 -0
- package/sensor/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.js +809 -13
- package/sensor/dist/extraction/languages/c-cpp.js.map +1 -1
- package/sensor/dist/extraction/store-worker.js +29 -0
- package/sensor/dist/extraction/store-worker.js.map +1 -1
- package/sensor/dist/extraction/tree-sitter.d.ts +4 -1
- package/sensor/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/sensor/dist/extraction/tree-sitter.js +20 -4
- package/sensor/dist/extraction/tree-sitter.js.map +1 -1
- package/sensor/dist/extraction/wasm/tree-sitter-c.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-cpp.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-dart.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-kotlin.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-php.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-ruby.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-rust.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-swift.wasm +0 -0
- package/sensor/dist/index.d.ts +12 -1
- package/sensor/dist/index.d.ts.map +1 -1
- package/sensor/dist/index.js +42 -7
- package/sensor/dist/index.js.map +1 -1
- package/sensor/dist/mcp/daemon-registry.d.ts +5 -2
- package/sensor/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/sensor/dist/mcp/daemon-registry.js +5 -2
- package/sensor/dist/mcp/daemon-registry.js.map +1 -1
- package/sensor/dist/mcp/index.d.ts +24 -0
- package/sensor/dist/mcp/index.d.ts.map +1 -1
- package/sensor/dist/mcp/index.js +51 -2
- package/sensor/dist/mcp/index.js.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.js +3 -1
- package/sensor/dist/mcp/liveness-watchdog.js.map +1 -1
- package/sensor/dist/mcp/server-instructions.d.ts +1 -1
- package/sensor/dist/mcp/server-instructions.d.ts.map +1 -1
- package/sensor/dist/mcp/server-instructions.js +1 -0
- package/sensor/dist/mcp/server-instructions.js.map +1 -1
- package/sensor/dist/mcp/tools.d.ts +48 -0
- package/sensor/dist/mcp/tools.d.ts.map +1 -1
- package/sensor/dist/mcp/tools.js +231 -4
- package/sensor/dist/mcp/tools.js.map +1 -1
- package/sensor/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/c-fnptr-synthesizer.js +561 -127
- package/sensor/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts +1 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.js +80 -11
- package/sensor/dist/resolution/callback-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/import-resolver.d.ts.map +1 -1
- package/sensor/dist/resolution/import-resolver.js +34 -2
- package/sensor/dist/resolution/import-resolver.js.map +1 -1
- package/sensor/dist/resolution/index.d.ts +34 -0
- package/sensor/dist/resolution/index.d.ts.map +1 -1
- package/sensor/dist/resolution/index.js +393 -51
- package/sensor/dist/resolution/index.js.map +1 -1
- package/sensor/dist/resolution/memory-budget.d.ts +48 -0
- package/sensor/dist/resolution/memory-budget.d.ts.map +1 -0
- package/sensor/dist/resolution/memory-budget.js +162 -0
- package/sensor/dist/resolution/memory-budget.js.map +1 -0
- package/sensor/dist/resolution/name-matcher.d.ts +4 -7
- package/sensor/dist/resolution/name-matcher.d.ts.map +1 -1
- package/sensor/dist/resolution/name-matcher.js +256 -91
- package/sensor/dist/resolution/name-matcher.js.map +1 -1
- package/sensor/dist/resolution/resolver-pool.d.ts +41 -1
- package/sensor/dist/resolution/resolver-pool.d.ts.map +1 -1
- package/sensor/dist/resolution/resolver-pool.js +103 -3
- package/sensor/dist/resolution/resolver-pool.js.map +1 -1
- package/sensor/dist/resolution/resolver-worker.js +27 -0
- package/sensor/dist/resolution/resolver-worker.js.map +1 -1
- package/sensor/dist/sync/watcher.d.ts +8 -1
- package/sensor/dist/sync/watcher.d.ts.map +1 -1
- package/sensor/dist/sync/watcher.js +44 -2
- package/sensor/dist/sync/watcher.js.map +1 -1
- package/sensor/dist/types.d.ts +7 -3
- package/sensor/dist/types.d.ts.map +1 -1
- package/src/cli-help.mjs +16 -0
- package/src/sensor-adapter.mjs +4 -0
- package/src/sensor-cli.mjs +37 -5
- package/src/sensor-diff.mjs +661 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA4NH,8CAUC;AAoBD,sCAiBC;AAKD,wCAGC;AAKD,oDAKC;AAKD,kDAYC;AA1SD;;GAEG;AACU,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAWzC;;;;;GAKG;AACH,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,uEAAuE;QACpF,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;OAWP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,gFAAgF;QAC7F,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;OAEP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EACT,sGAAsG;QACxG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EACT,oHAAoH;QACtH,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,EAAE,CAAC,IAAI,CAAC;;OAEP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EACT,uGAAuG;QACzG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,2EAA2E;YAC3E,sEAAsE;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,kEAAkE;YAClE,0EAA0E;YAC1E,sEAAsE;YACtE,kEAAkE;YAClE,sEAAsE;YACtE,EAAE,CAAC,IAAI,CAAC;;;;;;;;OAQP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EACT,mGAAmG;QACrG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,0EAA0E;YAC1E,qEAAqE;YACrE,qEAAqE;YACrE,0EAA0E;YAC1E,iEAAiE;YACjE,EAAE,CAAC,IAAI,CAAC;;;;;;OAMP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EACT,kIAAkI;QACpI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACT,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,mEAAmE;YACnE,yEAAyE;YACzE,uEAAuE;YACvE,kEAAkE;YAClE,4CAA4C;YAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAA6B,CAAC;YAC/F,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,EAAE,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACvF,CAAC;YACD,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,19 @@ export declare class QueryBuilder {
|
|
|
24
24
|
*/
|
|
25
25
|
private runBatched;
|
|
26
26
|
constructor(db: SqliteDatabase);
|
|
27
|
+
/**
|
|
28
|
+
* Swap the underlying connection in place. Used by pool workers'
|
|
29
|
+
* connection recycling (plan §7a.6, writes-under-readers): a long-lived
|
|
30
|
+
* read connection pins WAL checkpoint progress, and the deep WAL that
|
|
31
|
+
* accumulates behind it taxes every main-thread B-tree page operation
|
|
32
|
+
* (deletes measured 42.6s → 118.8s from 0 to 4 attached readers on
|
|
33
|
+
* identical hardware). Workers therefore close and reopen their read-only
|
|
34
|
+
* connection at the pool-idle boundary; everything above the connection —
|
|
35
|
+
* this QueryBuilder, the resolver and its warm caches — survives, and only
|
|
36
|
+
* connection-derived state (prepared statements) resets, re-preparing
|
|
37
|
+
* lazily on next use.
|
|
38
|
+
*/
|
|
39
|
+
rebind(db: SqliteDatabase): void;
|
|
27
40
|
/** Set the normalized project-name tokens used to down-weight non-discriminative
|
|
28
41
|
* query words in path scoring (#720). Called once when the project opens. */
|
|
29
42
|
setProjectNameTokens(tokens: Set<string>): void;
|
|
@@ -386,13 +399,29 @@ export declare class QueryBuilder {
|
|
|
386
399
|
*/
|
|
387
400
|
upsertFile(file: FileRecord): void;
|
|
388
401
|
/**
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
402
|
+
* Stale means written by an extractor OLDER than the one now running — never
|
|
403
|
+
* a newer one. A row a newer engine wrote is not stale; it holds output this
|
|
404
|
+
* engine cannot produce, so re-extracting it here would DOWNGRADE the index.
|
|
405
|
+
* That is not hypothetical: a long-running daemon holding pre-upgrade code in
|
|
406
|
+
* memory kept rewriting a healed index back to its own older stamp, silently
|
|
407
|
+
* undoing every `sync`. Comparing with `!=` makes healing bidirectional, which
|
|
408
|
+
* turns two engines on one index into an endless mutual overwrite.
|
|
392
409
|
*/
|
|
393
|
-
/** Paths of tracked files whose rows were written by
|
|
410
|
+
/** Paths of tracked files whose rows were written by an older extractor. */
|
|
394
411
|
getExtractionStalePaths(currentVersion: number): string[];
|
|
412
|
+
/**
|
|
413
|
+
* Number of tracked files whose rows were written by an older extractor.
|
|
414
|
+
* Zero means nothing on disk is behind the running engine — the condition for
|
|
415
|
+
* advancing the global stamp.
|
|
416
|
+
*/
|
|
395
417
|
getExtractionStaleFileCount(currentVersion: number): number;
|
|
418
|
+
/**
|
|
419
|
+
* Number of tracked files written by a NEWER extractor than the one running.
|
|
420
|
+
* Non-zero means this engine is behind the index it is attached to — it must
|
|
421
|
+
* not rewrite those rows, and the operator should be told rather than left to
|
|
422
|
+
* wonder why the index never converges.
|
|
423
|
+
*/
|
|
424
|
+
getExtractionAheadFileCount(currentVersion: number): number;
|
|
396
425
|
/**
|
|
397
426
|
* Delete a file record and its nodes
|
|
398
427
|
*/
|
|
@@ -449,6 +478,15 @@ export declare class QueryBuilder {
|
|
|
449
478
|
* has been attempted.
|
|
450
479
|
*/
|
|
451
480
|
getUnresolvedReferencesBatch(offset: number, limit: number): UnresolvedReference[];
|
|
481
|
+
/**
|
|
482
|
+
* Keyset variant of {@link getUnresolvedReferencesBatch} for the batched
|
|
483
|
+
* resolution loop: seek past the last-seen row id instead of OFFSET-walking.
|
|
484
|
+
* OFFSET reads re-scan the accumulated failed-row prefix on every batch —
|
|
485
|
+
* O(failed rows) per read, measured at 54.6s of the kernel-scale batch loop
|
|
486
|
+
* (§7a.2) — while the seek is O(batch) forever. `id` is the rowid alias, so
|
|
487
|
+
* the enumeration order is identical to the OFFSET reader's.
|
|
488
|
+
*/
|
|
489
|
+
getUnresolvedReferencesBatchAfter(afterRowId: number, limit: number): UnresolvedReference[];
|
|
452
490
|
/**
|
|
453
491
|
* Get all tracked file paths (lightweight — no full FileRecord objects)
|
|
454
492
|
*/
|
|
@@ -495,7 +533,7 @@ export declare class QueryBuilder {
|
|
|
495
533
|
fromNodeId: string;
|
|
496
534
|
referenceName: string;
|
|
497
535
|
referenceKind: string;
|
|
498
|
-
}>):
|
|
536
|
+
}>): number;
|
|
499
537
|
/**
|
|
500
538
|
* Delete unresolved-ref rows by row id — the precise cleanup for refs a
|
|
501
539
|
* resolution pass actually processed. The key-tuple variant above also
|
|
@@ -504,7 +542,7 @@ export declare class QueryBuilder {
|
|
|
504
542
|
* caller's same-named call sites, the later sites' edges were silently never
|
|
505
543
|
* created (#1269).
|
|
506
544
|
*/
|
|
507
|
-
deleteReferencesByRowIds(rowIds: number[]):
|
|
545
|
+
deleteReferencesByRowIds(rowIds: number[]): number;
|
|
508
546
|
/**
|
|
509
547
|
* Mark refs a completed resolution pass could not resolve as status='failed'
|
|
510
548
|
* instead of deleting them (#1240). Failed rows are invisible to the pending
|
|
@@ -518,7 +556,7 @@ export declare class QueryBuilder {
|
|
|
518
556
|
fromNodeId: string;
|
|
519
557
|
referenceName: string;
|
|
520
558
|
referenceKind: string;
|
|
521
|
-
}>):
|
|
559
|
+
}>): number;
|
|
522
560
|
/**
|
|
523
561
|
* Park refs as status='failed' by row id — the precise counterpart of
|
|
524
562
|
* markReferencesFailed, for the same reason as deleteReferencesByRowIds:
|
|
@@ -530,7 +568,7 @@ export declare class QueryBuilder {
|
|
|
530
568
|
markReferencesFailedByRowIds(refs: Array<{
|
|
531
569
|
rowId: number;
|
|
532
570
|
referenceName: string;
|
|
533
|
-
}>):
|
|
571
|
+
}>): number;
|
|
534
572
|
/**
|
|
535
573
|
* Failed refs whose name tail matches one of the given symbol names — the
|
|
536
574
|
* candidates a sync should retry after files carrying those names changed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAmPlB;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAiB;IAM3B,OAAO,CAAC,iBAAiB,CAA0B;IAGnD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAGrC,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -231,6 +231,23 @@ class QueryBuilder {
|
|
|
231
231
|
constructor(db) {
|
|
232
232
|
this.db = db;
|
|
233
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Swap the underlying connection in place. Used by pool workers'
|
|
236
|
+
* connection recycling (plan §7a.6, writes-under-readers): a long-lived
|
|
237
|
+
* read connection pins WAL checkpoint progress, and the deep WAL that
|
|
238
|
+
* accumulates behind it taxes every main-thread B-tree page operation
|
|
239
|
+
* (deletes measured 42.6s → 118.8s from 0 to 4 attached readers on
|
|
240
|
+
* identical hardware). Workers therefore close and reopen their read-only
|
|
241
|
+
* connection at the pool-idle boundary; everything above the connection —
|
|
242
|
+
* this QueryBuilder, the resolver and its warm caches — survives, and only
|
|
243
|
+
* connection-derived state (prepared statements) resets, re-preparing
|
|
244
|
+
* lazily on next use.
|
|
245
|
+
*/
|
|
246
|
+
rebind(db) {
|
|
247
|
+
this.db = db;
|
|
248
|
+
this.stmts = {};
|
|
249
|
+
this.batchStmts.clear();
|
|
250
|
+
}
|
|
234
251
|
/** Set the normalized project-name tokens used to down-weight non-discriminative
|
|
235
252
|
* query words in path scoring (#720). Called once when the project opens. */
|
|
236
253
|
setProjectNameTokens(tokens) {
|
|
@@ -1656,23 +1673,44 @@ class QueryBuilder {
|
|
|
1656
1673
|
});
|
|
1657
1674
|
}
|
|
1658
1675
|
/**
|
|
1659
|
-
*
|
|
1660
|
-
*
|
|
1661
|
-
*
|
|
1676
|
+
* Stale means written by an extractor OLDER than the one now running — never
|
|
1677
|
+
* a newer one. A row a newer engine wrote is not stale; it holds output this
|
|
1678
|
+
* engine cannot produce, so re-extracting it here would DOWNGRADE the index.
|
|
1679
|
+
* That is not hypothetical: a long-running daemon holding pre-upgrade code in
|
|
1680
|
+
* memory kept rewriting a healed index back to its own older stamp, silently
|
|
1681
|
+
* undoing every `sync`. Comparing with `!=` makes healing bidirectional, which
|
|
1682
|
+
* turns two engines on one index into an endless mutual overwrite.
|
|
1662
1683
|
*/
|
|
1663
|
-
/** Paths of tracked files whose rows were written by
|
|
1684
|
+
/** Paths of tracked files whose rows were written by an older extractor. */
|
|
1664
1685
|
getExtractionStalePaths(currentVersion) {
|
|
1665
1686
|
const rows = this.db
|
|
1666
|
-
.prepare('SELECT path FROM files WHERE extraction_version
|
|
1687
|
+
.prepare('SELECT path FROM files WHERE extraction_version < ? ORDER BY path')
|
|
1667
1688
|
.all(currentVersion);
|
|
1668
1689
|
return rows.map((row) => row.path);
|
|
1669
1690
|
}
|
|
1691
|
+
/**
|
|
1692
|
+
* Number of tracked files whose rows were written by an older extractor.
|
|
1693
|
+
* Zero means nothing on disk is behind the running engine — the condition for
|
|
1694
|
+
* advancing the global stamp.
|
|
1695
|
+
*/
|
|
1670
1696
|
getExtractionStaleFileCount(currentVersion) {
|
|
1671
1697
|
const row = this.db
|
|
1672
|
-
.prepare('SELECT COUNT(*) AS stale FROM files WHERE extraction_version
|
|
1698
|
+
.prepare('SELECT COUNT(*) AS stale FROM files WHERE extraction_version < ?')
|
|
1673
1699
|
.get(currentVersion);
|
|
1674
1700
|
return row.stale;
|
|
1675
1701
|
}
|
|
1702
|
+
/**
|
|
1703
|
+
* Number of tracked files written by a NEWER extractor than the one running.
|
|
1704
|
+
* Non-zero means this engine is behind the index it is attached to — it must
|
|
1705
|
+
* not rewrite those rows, and the operator should be told rather than left to
|
|
1706
|
+
* wonder why the index never converges.
|
|
1707
|
+
*/
|
|
1708
|
+
getExtractionAheadFileCount(currentVersion) {
|
|
1709
|
+
const row = this.db
|
|
1710
|
+
.prepare('SELECT COUNT(*) AS ahead FROM files WHERE extraction_version > ?')
|
|
1711
|
+
.get(currentVersion);
|
|
1712
|
+
return row.ahead;
|
|
1713
|
+
}
|
|
1676
1714
|
/**
|
|
1677
1715
|
* Delete a file record and its nodes
|
|
1678
1716
|
*/
|
|
@@ -1871,6 +1909,38 @@ class QueryBuilder {
|
|
|
1871
1909
|
importedName: row.imported_name ?? undefined,
|
|
1872
1910
|
}));
|
|
1873
1911
|
}
|
|
1912
|
+
/**
|
|
1913
|
+
* Keyset variant of {@link getUnresolvedReferencesBatch} for the batched
|
|
1914
|
+
* resolution loop: seek past the last-seen row id instead of OFFSET-walking.
|
|
1915
|
+
* OFFSET reads re-scan the accumulated failed-row prefix on every batch —
|
|
1916
|
+
* O(failed rows) per read, measured at 54.6s of the kernel-scale batch loop
|
|
1917
|
+
* (§7a.2) — while the seek is O(batch) forever. `id` is the rowid alias, so
|
|
1918
|
+
* the enumeration order is identical to the OFFSET reader's.
|
|
1919
|
+
*/
|
|
1920
|
+
getUnresolvedReferencesBatchAfter(afterRowId, limit) {
|
|
1921
|
+
if (!this.stmts.getUnresolvedBatchAfter) {
|
|
1922
|
+
this.stmts.getUnresolvedBatchAfter = this.db.prepare("SELECT * FROM unresolved_refs WHERE status = 'pending' AND id > ? ORDER BY id LIMIT ?");
|
|
1923
|
+
}
|
|
1924
|
+
const rows = this.stmts.getUnresolvedBatchAfter.all(afterRowId, limit);
|
|
1925
|
+
return rows.map((row) => ({
|
|
1926
|
+
fromNodeId: row.from_node_id,
|
|
1927
|
+
referenceName: row.reference_name,
|
|
1928
|
+
referenceKind: row.reference_kind,
|
|
1929
|
+
line: row.line,
|
|
1930
|
+
column: row.col,
|
|
1931
|
+
candidates: row.candidates ? (0, utils_1.safeJsonParse)(row.candidates, undefined) : undefined,
|
|
1932
|
+
filePath: row.file_path,
|
|
1933
|
+
language: row.language,
|
|
1934
|
+
rowId: row.id,
|
|
1935
|
+
// The upstream keyset reader predates Lattice's import-binding columns
|
|
1936
|
+
// (v10). Every other unresolved_refs mapper carries them — dropping them
|
|
1937
|
+
// here silently strips `binding`/`importedName` from every resolved
|
|
1938
|
+
// import edge's metadata, because THIS is the reader the batched
|
|
1939
|
+
// resolution loop actually uses.
|
|
1940
|
+
bindingForm: (row.binding_form ?? undefined),
|
|
1941
|
+
importedName: row.imported_name ?? undefined,
|
|
1942
|
+
}));
|
|
1943
|
+
}
|
|
1874
1944
|
/**
|
|
1875
1945
|
* Get all tracked file paths (lightweight — no full FileRecord objects)
|
|
1876
1946
|
*/
|
|
@@ -1993,14 +2063,19 @@ class QueryBuilder {
|
|
|
1993
2063
|
*/
|
|
1994
2064
|
deleteSpecificResolvedReferences(refs) {
|
|
1995
2065
|
if (refs.length === 0)
|
|
1996
|
-
return;
|
|
2066
|
+
return 0;
|
|
1997
2067
|
const stmt = this.db.prepare('DELETE FROM unresolved_refs WHERE from_node_id = ? AND reference_name = ? AND reference_kind = ?');
|
|
2068
|
+
// Returns rows actually removed (SQLite `changes`, summed): the batched
|
|
2069
|
+
// resolution loop's non-progress guard keys on this — zero removals from
|
|
2070
|
+
// a batch that claimed work is the direct runaway signal (§7a.2).
|
|
2071
|
+
let changed = 0;
|
|
1998
2072
|
const deleteMany = this.db.transaction((items) => {
|
|
1999
2073
|
for (const ref of items) {
|
|
2000
|
-
stmt.run(ref.fromNodeId, ref.referenceName, ref.referenceKind);
|
|
2074
|
+
changed += stmt.run(ref.fromNodeId, ref.referenceName, ref.referenceKind).changes;
|
|
2001
2075
|
}
|
|
2002
2076
|
});
|
|
2003
2077
|
deleteMany(refs);
|
|
2078
|
+
return changed;
|
|
2004
2079
|
}
|
|
2005
2080
|
/**
|
|
2006
2081
|
* Delete unresolved-ref rows by row id — the precise cleanup for refs a
|
|
@@ -2012,12 +2087,14 @@ class QueryBuilder {
|
|
|
2012
2087
|
*/
|
|
2013
2088
|
deleteReferencesByRowIds(rowIds) {
|
|
2014
2089
|
if (rowIds.length === 0)
|
|
2015
|
-
return;
|
|
2090
|
+
return 0;
|
|
2016
2091
|
// One transaction for all chunks (each chunk was previously its own
|
|
2017
2092
|
// implicit transaction = its own WAL commit — measurable on 100k+-ref
|
|
2018
2093
|
// resolution persists), and the full-size chunk statement is cached so
|
|
2019
2094
|
// repeat calls skip the re-prepare; only the final partial chunk (if any)
|
|
2020
|
-
// prepares ad hoc.
|
|
2095
|
+
// prepares ad hoc. Returns rows actually removed (summed `changes`) for
|
|
2096
|
+
// the batched loop's non-progress guard (§7a.2).
|
|
2097
|
+
let changed = 0;
|
|
2021
2098
|
this.db.transaction(() => {
|
|
2022
2099
|
for (let i = 0; i < rowIds.length; i += SQLITE_PARAM_CHUNK_SIZE) {
|
|
2023
2100
|
const chunk = rowIds.slice(i, i + SQLITE_PARAM_CHUNK_SIZE);
|
|
@@ -2026,14 +2103,15 @@ class QueryBuilder {
|
|
|
2026
2103
|
const placeholders = new Array(SQLITE_PARAM_CHUNK_SIZE).fill('?').join(',');
|
|
2027
2104
|
this.stmts.deleteRefsByRowIdsFull = this.db.prepare(`DELETE FROM unresolved_refs WHERE id IN (${placeholders})`);
|
|
2028
2105
|
}
|
|
2029
|
-
this.stmts.deleteRefsByRowIdsFull.run(...chunk);
|
|
2106
|
+
changed += this.stmts.deleteRefsByRowIdsFull.run(...chunk).changes;
|
|
2030
2107
|
}
|
|
2031
2108
|
else {
|
|
2032
2109
|
const placeholders = chunk.map(() => '?').join(',');
|
|
2033
|
-
this.db.prepare(`DELETE FROM unresolved_refs WHERE id IN (${placeholders})`).run(...chunk);
|
|
2110
|
+
changed += this.db.prepare(`DELETE FROM unresolved_refs WHERE id IN (${placeholders})`).run(...chunk).changes;
|
|
2034
2111
|
}
|
|
2035
2112
|
}
|
|
2036
2113
|
})();
|
|
2114
|
+
return changed;
|
|
2037
2115
|
}
|
|
2038
2116
|
/**
|
|
2039
2117
|
* Mark refs a completed resolution pass could not resolve as status='failed'
|
|
@@ -2046,14 +2124,16 @@ class QueryBuilder {
|
|
|
2046
2124
|
*/
|
|
2047
2125
|
markReferencesFailed(refs) {
|
|
2048
2126
|
if (refs.length === 0)
|
|
2049
|
-
return;
|
|
2127
|
+
return 0;
|
|
2050
2128
|
const stmt = this.db.prepare("UPDATE unresolved_refs SET status = 'failed', name_tail = ? WHERE from_node_id = ? AND reference_name = ? AND reference_kind = ?");
|
|
2129
|
+
let changed = 0;
|
|
2051
2130
|
const markMany = this.db.transaction((items) => {
|
|
2052
2131
|
for (const ref of items) {
|
|
2053
|
-
stmt.run(referenceNameTail(ref.referenceName), ref.fromNodeId, ref.referenceName, ref.referenceKind);
|
|
2132
|
+
changed += stmt.run(referenceNameTail(ref.referenceName), ref.fromNodeId, ref.referenceName, ref.referenceKind).changes;
|
|
2054
2133
|
}
|
|
2055
2134
|
});
|
|
2056
2135
|
markMany(refs);
|
|
2136
|
+
return changed;
|
|
2057
2137
|
}
|
|
2058
2138
|
/**
|
|
2059
2139
|
* Park refs as status='failed' by row id — the precise counterpart of
|
|
@@ -2065,14 +2145,16 @@ class QueryBuilder {
|
|
|
2065
2145
|
*/
|
|
2066
2146
|
markReferencesFailedByRowIds(refs) {
|
|
2067
2147
|
if (refs.length === 0)
|
|
2068
|
-
return;
|
|
2148
|
+
return 0;
|
|
2069
2149
|
const stmt = this.db.prepare("UPDATE unresolved_refs SET status = 'failed', name_tail = ? WHERE id = ?");
|
|
2150
|
+
let changed = 0;
|
|
2070
2151
|
const markMany = this.db.transaction((items) => {
|
|
2071
2152
|
for (const ref of items) {
|
|
2072
|
-
stmt.run(referenceNameTail(ref.referenceName), ref.rowId);
|
|
2153
|
+
changed += stmt.run(referenceNameTail(ref.referenceName), ref.rowId).changes;
|
|
2073
2154
|
}
|
|
2074
2155
|
});
|
|
2075
2156
|
markMany(refs);
|
|
2157
|
+
return changed;
|
|
2076
2158
|
}
|
|
2077
2159
|
/**
|
|
2078
2160
|
* Failed refs whose name tail matches one of the given symbol names — the
|
|
@@ -2199,6 +2281,7 @@ class QueryBuilder {
|
|
|
2199
2281
|
edgesByKind,
|
|
2200
2282
|
filesByLanguage,
|
|
2201
2283
|
dbSizeBytes: 0, // Set by caller using DatabaseConnection.getSize()
|
|
2284
|
+
walSizeBytes: 0, // Set by caller using DatabaseConnection.getWalSizeBytes()
|
|
2202
2285
|
lastUpdated: Date.now(),
|
|
2203
2286
|
};
|
|
2204
2287
|
}
|