gitnexus 1.6.10-rc.2 → 1.6.10-rc.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/README.md +56 -12
- package/dist/cli/analyze.js +166 -5
- package/dist/cli/clean.js +17 -3
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/doctor.d.ts +18 -0
- package/dist/cli/doctor.js +76 -3
- package/dist/cli/embeddings.d.ts +12 -0
- package/dist/cli/embeddings.js +49 -0
- package/dist/cli/help-i18n.js +4 -0
- package/dist/cli/i18n/en.d.ts +10 -5
- package/dist/cli/i18n/en.js +10 -5
- package/dist/cli/i18n/resources.d.ts +15 -5
- package/dist/cli/i18n/zh-CN.d.ts +5 -0
- package/dist/cli/i18n/zh-CN.js +10 -5
- package/dist/cli/index.js +12 -1
- package/dist/core/augmentation/engine.js +4 -3
- package/dist/core/embeddings/embedder.js +16 -2
- package/dist/core/embeddings/embedding-pipeline.d.ts +20 -0
- package/dist/core/embeddings/embedding-pipeline.js +10 -2
- package/dist/core/embeddings/http-client.d.ts +28 -1
- package/dist/core/embeddings/http-client.js +107 -15
- package/dist/core/embeddings/node-module-compat.d.ts +23 -0
- package/dist/core/embeddings/node-module-compat.js +23 -0
- package/dist/core/embeddings/onnxruntime-common-resolver.js +6 -3
- package/dist/core/embeddings/onnxruntime-node-resolver.js +31 -5
- package/dist/core/embeddings/runtime-install.d.ts +119 -0
- package/dist/core/embeddings/runtime-install.js +372 -0
- package/dist/core/embeddings/runtime-support.d.ts +48 -17
- package/dist/core/embeddings/runtime-support.js +96 -0
- package/dist/core/group/extractors/http-patterns/python.js +246 -108
- package/dist/core/group/extractors/manifest-extractor.js +4 -0
- package/dist/core/incremental/escalation-gate.d.ts +38 -0
- package/dist/core/incremental/escalation-gate.js +48 -0
- package/dist/core/incremental/shadow-candidates.d.ts +3 -3
- package/dist/core/incremental/shadow-candidates.js +3 -3
- package/dist/core/incremental/subgraph-extract.d.ts +2 -2
- package/dist/core/incremental/subgraph-extract.js +2 -2
- package/dist/core/ingestion/cobol/jcl-processor.js +9 -8
- package/dist/core/ingestion/cobol-processor.js +27 -26
- package/dist/core/ingestion/community-processor.d.ts +51 -1
- package/dist/core/ingestion/community-processor.js +316 -63
- package/dist/core/ingestion/emit-references.js +3 -2
- package/dist/core/ingestion/languages/cpp/captures.js +157 -74
- package/dist/core/ingestion/markdown-processor.js +3 -2
- package/dist/core/ingestion/parsing-processor.d.ts +3 -1
- package/dist/core/ingestion/parsing-processor.js +4 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +42 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +83 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.js +131 -0
- package/dist/core/ingestion/route-extractors/python-const-resolver.d.ts +75 -0
- package/dist/core/ingestion/route-extractors/python-const-resolver.js +299 -0
- package/dist/core/ingestion/tree-sitter-queries.d.ts +1 -1
- package/dist/core/ingestion/tree-sitter-queries.js +12 -1
- package/dist/core/ingestion/utils/line-base.d.ts +20 -0
- package/dist/core/ingestion/utils/line-base.js +20 -0
- package/dist/core/ingestion/utils/symbol-labels.d.ts +21 -0
- package/dist/core/ingestion/utils/symbol-labels.js +45 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +34 -0
- package/dist/core/ingestion/workers/parse-worker.js +40 -5
- package/dist/core/ingestion/workers/result-merge.js +4 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +14 -0
- package/dist/core/ingestion/workers/worker-pool.js +85 -5
- package/dist/core/lbug/csv-generator.js +8 -2
- package/dist/core/lbug/cypher-escape.d.ts +20 -0
- package/dist/core/lbug/cypher-escape.js +20 -0
- package/dist/core/lbug/extension-load-error.d.ts +67 -0
- package/dist/core/lbug/extension-load-error.js +320 -0
- package/dist/core/lbug/extension-loader.d.ts +17 -2
- package/dist/core/lbug/extension-loader.js +38 -13
- package/dist/core/lbug/lbug-adapter.d.ts +147 -1
- package/dist/core/lbug/lbug-adapter.js +390 -70
- package/dist/core/lbug/lbug-config.d.ts +28 -0
- package/dist/core/lbug/lbug-config.js +114 -4
- package/dist/core/lbug/native-check.d.ts +22 -0
- package/dist/core/lbug/native-check.js +66 -0
- package/dist/core/lbug/pool-adapter.js +10 -1
- package/dist/core/lbug/sidecar-recovery.d.ts +172 -0
- package/dist/core/lbug/sidecar-recovery.js +418 -16
- package/dist/core/platform/capabilities.js +27 -1
- package/dist/core/run-analyze.js +470 -108
- package/dist/core/search/fts-indexes.d.ts +7 -0
- package/dist/core/search/fts-indexes.js +37 -0
- package/dist/core/tree-sitter/safe-parse.d.ts +8 -3
- package/dist/core/tree-sitter/safe-parse.js +21 -7
- package/dist/core/wiki/graph-queries.js +6 -5
- package/dist/mcp/core/embedder.js +16 -2
- package/dist/mcp/local/line-display.d.ts +22 -0
- package/dist/mcp/local/line-display.js +3 -0
- package/dist/mcp/local/local-backend.d.ts +14 -0
- package/dist/mcp/local/local-backend.js +63 -19
- package/dist/mcp/local/pdg-impact.d.ts +5 -3
- package/dist/mcp/local/pdg-impact.js +5 -2
- package/dist/mcp/resources.js +1 -0
- package/dist/mcp/tools.js +1 -1
- package/dist/server/analyze-launch.d.ts +6 -0
- package/dist/server/analyze-launch.js +82 -6
- package/dist/server/api.d.ts +30 -0
- package/dist/server/api.js +63 -21
- package/dist/storage/parse-cache.js +1 -1
- package/dist/storage/repo-manager.d.ts +65 -1
- package/dist/storage/repo-manager.js +18 -1
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +50 -3
- package/hooks/claude/gitnexus-hook.cjs +59 -9
- package/package.json +5 -3
- package/scripts/cross-platform-tests.ts +43 -0
- package/scripts/ensure-fts.ts +32 -0
- package/scripts/install-duckdb-extension.mjs +85 -24
- package/scripts/run-cross-platform.ts +46 -6
- package/scripts/shard-arg.ts +30 -0
- package/web/assets/ProcessFlowModal-Dna7GkwO.js +22 -0
- package/web/assets/{agent-Dli_x7bU.js → agent-DNYDy-KA.js} +49 -49
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +1 -0
- package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-BkWhpzWB.js → blockDiagram-7IZFK4PR-Dut1BpTV.js} +2 -2
- package/web/assets/{c4Diagram-Y2BXMSZH-DtBvpzWD.js → c4Diagram-Y2BXMSZH-DOXVs7-C.js} +2 -2
- package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +4 -0
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +1 -0
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +321 -0
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +159 -0
- package/web/assets/{chunk-6764PJDD-DpIS7hxD.js → chunk-6764PJDD-C7xxk063.js} +1 -1
- package/web/assets/{chunk-67TQ5CYL-4sNPJU1q.js → chunk-67TQ5CYL-zxhDWgyF.js} +3 -3
- package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +32 -0
- package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +10 -0
- package/web/assets/chunk-7W6UQGC5-pyKGssV3.js +1 -0
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +1 -0
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Nu4ri9P-.js → chunk-INKRHTLW-D9BM9HWZ.js} +1 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +1 -0
- package/web/assets/{chunk-KGFNY3KK-JGMJvKCK.js → chunk-KGFNY3KK-tD2F6wxK.js} +1 -1
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +1 -0
- package/web/assets/{chunk-KRXBNO2N-BW5o0KUN.js → chunk-KRXBNO2N-C-UNuKKf.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-CfLLCywY.js → chunk-LCXTWHL2-Ba9JK-6F.js} +2 -2
- package/web/assets/{chunk-LII3EMHJ-D-jm-dLa.js → chunk-LII3EMHJ-EGx-eBIu.js} +1 -1
- package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +1 -0
- package/web/assets/{chunk-QA3QBVWF-BgRW3SXd.js → chunk-QA3QBVWF-D4cSJBf6.js} +1 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +1 -0
- package/web/assets/{chunk-RG4AUYOV-CqWzWsV3.js → chunk-RG4AUYOV-OqBBMwuQ.js} +4 -4
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +1 -0
- package/web/assets/chunk-RLI5ZMPA-CkXZ0y0U.js +1 -0
- package/web/assets/{chunk-T2UQINTJ-DSBqkzH7.js → chunk-T2UQINTJ-BJusEiGe.js} +1 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +1 -0
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +1 -0
- package/web/assets/{chunk-UY5QBCOK-DyF0vyGd.js → chunk-UY5QBCOK-BCpUlARQ.js} +1 -1
- package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +2 -0
- package/web/assets/{chunk-W44A43WB-JqMLIpR0.js → chunk-W44A43WB-BN8EQc_u.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-CxN8oiwI.js → chunk-ZXARS5L4-BI_qR2Nm.js} +1 -1
- package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +1 -0
- package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +1 -0
- package/web/assets/cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js +1 -0
- package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +4 -0
- package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +43 -0
- package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DFCfd5LI.js → diagram-HNR7UZ2L-DxKW2a2Y.js} +2 -2
- package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +24 -0
- package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +10 -0
- package/web/assets/{erDiagram-L5TCEMPS-8X1y6R4Y.js → erDiagram-L5TCEMPS-D0fvpWEX.js} +3 -3
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +1 -0
- package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +162 -0
- package/web/assets/{ganttDiagram-JCBTUEKG-D3iL2Aet.js → ganttDiagram-JCBTUEKG-TzODrLzv.js} +2 -2
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +1 -0
- package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +106 -0
- package/web/assets/index-B4eB4dNZ.js +575 -0
- package/web/assets/index-CX_fADmQ.css +2 -0
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +1 -0
- package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-DfYpxnE5.js → ishikawaDiagram-BNXS4ZKH-BLjivjXL.js} +3 -3
- package/web/assets/{journeyDiagram-M6C3CM3L-CvArszLo.js → journeyDiagram-M6C3CM3L-Cetgs3NH.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-CpfVLLf9.js → kanban-definition-75IXJCU3-DMlCaIpf.js} +5 -5
- package/web/assets/{katex-K3KEBU37-CTc5BslQ.js → katex-K3KEBU37-qRQBy-EZ.js} +2 -2
- package/web/assets/{mindmap-definition-2TDM6QVE-DypvbOMQ.js → mindmap-definition-2TDM6QVE-B4GbXQBc.js} +3 -3
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +1 -0
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +1 -0
- package/web/assets/{pieDiagram-CU6KROY3-s27EFWgP.js → pieDiagram-CU6KROY3-D3YC_xyg.js} +2 -2
- package/web/assets/{quadrantDiagram-VICAPDV7-yXSZ2lLz.js → quadrantDiagram-VICAPDV7-B1TQnlm0.js} +2 -2
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-CWhqInuf.js → requirementDiagram-JXO7QTGE-f8wczLQf.js} +3 -3
- package/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/web/assets/{sankeyDiagram-URQDO5SZ-1qEjlFIB.js → sankeyDiagram-URQDO5SZ-BTxzG5j0.js} +2 -2
- package/web/assets/{sequenceDiagram-VS2MUI6T-RyTlZ5cR.js → sequenceDiagram-VS2MUI6T-DuamM-IR.js} +5 -5
- package/web/assets/src-BNCXICdA.js +1 -0
- package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +1 -0
- package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +1 -0
- package/web/assets/{timeline-definition-O6YCAMPW-DrrqLYAf.js → timeline-definition-O6YCAMPW-07BR8R8G.js} +3 -3
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +1 -0
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +1 -0
- package/web/assets/{vennDiagram-MWXL3ELB-B0RkWAim.js → vennDiagram-MWXL3ELB-BQX2ossk.js} +4 -4
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +1 -0
- package/web/assets/{wardleyDiagram-CUQ6CDDI-boUxiQ5F.js → wardleyDiagram-CUQ6CDDI-CGIJBBiK.js} +3 -3
- package/web/assets/{xychartDiagram-N2JHSOCM-BOLm0eNm.js → xychartDiagram-N2JHSOCM-B3HNMuWp.js} +4 -4
- package/web/index.html +17 -10
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-dEkqUZN9.js +0 -36
- package/web/assets/chunk-3SSMPTDK-B4_etUhr.js +0 -321
- package/web/assets/chunk-7W6UQGC5-KyEG0HQg.js +0 -1
- package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +0 -161
- package/web/assets/classDiagram-KGZ6W3CR-CMne4tG9.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-CMne4tG9.js +0 -1
- package/web/assets/cose-bilkent-UX7MHV2Q-D71wNYRJ.js +0 -1
- package/web/assets/dagre-ND4H6XIP-Co5rRx9X.js +0 -4
- package/web/assets/diagram-3NCE3AQN-DBp4O00j.js +0 -43
- package/web/assets/diagram-GF46GFSD-6N_8yS0i.js +0 -24
- package/web/assets/diagram-QXG6HAR7-Di093rFg.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DZWi4SUN.js +0 -10
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-CMpY8Ufn.js +0 -162
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +0 -106
- package/web/assets/index-KctnI3Vq.js +0 -635
- package/web/assets/index-_lgn7hs5.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-BaLMZkUg.js +0 -2
- package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +0 -1
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DTjVfX4A.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-xY9_k9_Q.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +0 -1
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +0 -1
|
@@ -2,7 +2,7 @@ import lbug from '@ladybugdb/core';
|
|
|
2
2
|
import { KnowledgeGraph } from '../graph/types.js';
|
|
3
3
|
import { NodeTableName } from './schema.js';
|
|
4
4
|
import type { PdgEmitManifest } from './pdg-emit-sink.js';
|
|
5
|
-
import type
|
|
5
|
+
import { type CachedEmbedding } from '../embeddings/types.js';
|
|
6
6
|
import { type ExtensionEnsureOptions } from './extension-loader.js';
|
|
7
7
|
/** Result of splitting the relationship CSV into per-label-pair files. */
|
|
8
8
|
export interface RelCsvSplitResult {
|
|
@@ -83,6 +83,21 @@ pdgEmitManifest?: PdgEmitManifest) => Promise<{
|
|
|
83
83
|
warnings: string[];
|
|
84
84
|
}>;
|
|
85
85
|
export declare const COPY_CSV_OPTS = "(HEADER=true, ESCAPE='\"', DELIM=',', QUOTE='\"', PARALLEL=false, auto_detect=false)";
|
|
86
|
+
/**
|
|
87
|
+
* Fallback: insert relationships one-by-one if COPY fails.
|
|
88
|
+
*
|
|
89
|
+
* Exported for the quoted-id round-trip tests in
|
|
90
|
+
* `test/integration/lbug-core-adapter.test.ts` (the `DELETE_FILES_CHUNK_SIZE`
|
|
91
|
+
* exported-for-tests precedent); production callers stay in this module.
|
|
92
|
+
* Bails silently when the adapter singleton is closed.
|
|
93
|
+
*
|
|
94
|
+
* KNOWN PRE-EXISTING NARROWING (distinct from the `''` escaping bug, NOT
|
|
95
|
+
* fixed here): the row regex below matches CSV fields with `[^"]*`, so an id
|
|
96
|
+
* containing a double quote (CSV-escaped as `""`) never matches and the edge
|
|
97
|
+
* is skipped. Tracked as part of the quote-in-id divergence documented in
|
|
98
|
+
* `rel-pair-routing.ts`.
|
|
99
|
+
*/
|
|
100
|
+
export declare const fallbackRelationshipInserts: (validRelLines: string[], validTables: Set<string>, getNodeLabel: (id: string) => string) => Promise<void>;
|
|
86
101
|
export declare const getCopyQuery: (table: NodeTableName, filePath: string) => string;
|
|
87
102
|
/**
|
|
88
103
|
* Insert a single node to LadybugDB
|
|
@@ -198,6 +213,76 @@ export declare const safeClose: () => Promise<void>;
|
|
|
198
213
|
*/
|
|
199
214
|
export declare const closeLbugBeforeExit: () => Promise<void>;
|
|
200
215
|
export declare const closeLbug: () => Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* Thrown by {@link wipeLbugDbFiles} when a data-bearing member of the
|
|
218
|
+
* LadybugDB file family is still present after the bounded
|
|
219
|
+
* remove-and-verify retries (#2409, tri-review 4669518496 P2-4), and by
|
|
220
|
+
* run-analyze's dirty-recovery block when the crashed run's sidecars can
|
|
221
|
+
* neither be parked nor removed (this shipping review, FIX 1 — same lock
|
|
222
|
+
* class, same remediation, and the CLI already renders this type).
|
|
223
|
+
*
|
|
224
|
+
* Classify by TYPE (`err instanceof LbugWipeError`) — the repo norm from
|
|
225
|
+
* #2385 — never by message text. The MESSAGE is nonetheless fully
|
|
226
|
+
* self-contained (headline + blocked paths + remediation) because
|
|
227
|
+
* `gitnexus serve` forwards only `err.message` over worker IPC
|
|
228
|
+
* (analyze-worker-core.ts), so the serve surface has nothing but this
|
|
229
|
+
* string to show the user. The holder framing deliberately covers the
|
|
230
|
+
* own-process case (FIX 2, finder A): the blocking handle is often a
|
|
231
|
+
* lingering one from THIS process's just-closed DB or a transient AV scan
|
|
232
|
+
* — not necessarily another process — so an immediate re-run often
|
|
233
|
+
* succeeds.
|
|
234
|
+
*/
|
|
235
|
+
export declare class LbugWipeError extends Error {
|
|
236
|
+
/** Paths still present (or unverifiable) after all retries. */
|
|
237
|
+
readonly survivors: readonly string[];
|
|
238
|
+
constructor(survivors: readonly string[], options?: {
|
|
239
|
+
headline?: string;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Remove the LadybugDB file family and VERIFY each member is really gone.
|
|
244
|
+
*
|
|
245
|
+
* Owns the canonical 4-file family list — `<lbugPath>`, `.wal`, `.shadow`,
|
|
246
|
+
* `.lock` — so run-analyze's two wipe sites (full rebuild + the #2409
|
|
247
|
+
* escalation valve) can never drift apart. `.shadow` is included because a
|
|
248
|
+
* checkpoint-in-flight crash leaves a shadow sidecar, and a stale shadow next
|
|
249
|
+
* to a freshly created DB file is replay poison on the next open (#2409).
|
|
250
|
+
*
|
|
251
|
+
* Verification contract (tri-review 4669518496 P2-4 — the old inline loops
|
|
252
|
+
* swallowed rm failures and let `initLbug` reopen a still-populated DB the
|
|
253
|
+
* run believed it wiped): after `fs.rm({ recursive, force })`, each path is
|
|
254
|
+
* probed and counts as GONE only when the probe rejects with **ENOENT**. A
|
|
255
|
+
* resolving probe, or a rejection in the EPERM/EBUSY/EACCES class (Windows
|
|
256
|
+
* delete-pending / handle-release lag — see HANDLE_RELEASE_LOCK_CODES in
|
|
257
|
+
* lbug-config.ts), or any other code means the path is not verifiably gone:
|
|
258
|
+
* it is retried on the shared handle-release budget
|
|
259
|
+
* (HANDLE_RELEASE_PROBE_ATTEMPTS × linear HANDLE_RELEASE_PROBE_DELAY_MS,
|
|
260
|
+
* lbug-config.ts — the previous private mirror constants were
|
|
261
|
+
* documentation-coupled copies) and then handled by CLASS (this shipping
|
|
262
|
+
* review, FIX 2):
|
|
263
|
+
*
|
|
264
|
+
* - DATA-BEARING members (`<lbugPath>`, `.wal`, `.shadow`) — a survivor
|
|
265
|
+
* means the reopen would resurrect rows this run believes wiped: throw
|
|
266
|
+
* a typed {@link LbugWipeError}.
|
|
267
|
+
* - `.lock` — contentless: `initLbug` recreates it, and a genuinely held
|
|
268
|
+
* lock surfaces as initLbug's own lock-busy classification (a better
|
|
269
|
+
* error than this one). A `.lock`-only survivor (an AV-held
|
|
270
|
+
* delete-pending handle outlasting the budget previously failed a
|
|
271
|
+
* perfectly sound rebuild) logs a warning and CONTINUES.
|
|
272
|
+
*
|
|
273
|
+
* Linux unlinked-but-open (name gone, holder keeps the old inode) probes
|
|
274
|
+
* ENOENT and is accepted by design — both production wipe sites run after a
|
|
275
|
+
* real `closeLbug()`.
|
|
276
|
+
*
|
|
277
|
+
* Deliberately OUT of this contract: `cleanupOldKuzuFiles`
|
|
278
|
+
* (repo-manager.ts) sweeps the LEGACY kuzu-era file family during storage
|
|
279
|
+
* migration — different family, best-effort by design; and
|
|
280
|
+
* `sweepStaleSidecars` (lbug-config.ts) is a test-fixture-gated open-retry
|
|
281
|
+
* fallback that must never delete production files. Neither wipes the live
|
|
282
|
+
* DB the run is about to recreate, so neither needs (or may share) the
|
|
283
|
+
* loud-failure contract here.
|
|
284
|
+
*/
|
|
285
|
+
export declare const wipeLbugDbFiles: (lbugPath: string) => Promise<void>;
|
|
201
286
|
export declare const isLbugReady: () => boolean;
|
|
202
287
|
/**
|
|
203
288
|
* Delete all nodes (and their relationships) for a specific file from LadybugDB
|
|
@@ -208,6 +293,43 @@ export declare const isLbugReady: () => boolean;
|
|
|
208
293
|
export declare const deleteNodesForFile: (filePath: string, dbPath?: string) => Promise<{
|
|
209
294
|
deletedNodes: number;
|
|
210
295
|
}>;
|
|
296
|
+
/**
|
|
297
|
+
* Chunk size for {@link deleteNodesForFiles}. 200 paths keeps each
|
|
298
|
+
* statement ~13KB (well inside parser limits) while a ~700-file write set
|
|
299
|
+
* still collapses from ~13,000 statements to 124: 31 statements per chunk
|
|
300
|
+
* (1 CodeEmbedding join-delete + 30 filePath-bearing node tables — the
|
|
301
|
+
* 32-table NODE_TABLES roster minus Community/Process) × 4 chunks. The
|
|
302
|
+
* original "~40" claim under-counted the per-chunk statement fan-out
|
|
303
|
+
* (tri-review 4669518496 accuracy sweep).
|
|
304
|
+
*/
|
|
305
|
+
export declare const DELETE_FILES_CHUNK_SIZE = 200;
|
|
306
|
+
/**
|
|
307
|
+
* Batched variant of {@link deleteNodesForFile} for the incremental
|
|
308
|
+
* writeback (#2409). One `DETACH DELETE … WHERE n.filePath IN […]` per
|
|
309
|
+
* node table per chunk of paths, instead of a count + delete per table
|
|
310
|
+
* per FILE. The per-file loop issued ~13,000 single-row write
|
|
311
|
+
* transactions on a ~700-file write set — a WAL-append storm that made
|
|
312
|
+
* the incremental path slower than a full rebuild and is the write
|
|
313
|
+
* pattern behind the native mid-writeback deaths reported in #2409.
|
|
314
|
+
*
|
|
315
|
+
* NO general error swallowing: a zero-match chunk is a no-op success by
|
|
316
|
+
* construction (every node table except Community/Process has a filePath
|
|
317
|
+
* column), so anything thrown here is a real engine failure the caller
|
|
318
|
+
* must see — silently skipping was exactly how #2409 hid its root cause.
|
|
319
|
+
* The single tolerated exception (FIX 4) is the missing-embedding-table
|
|
320
|
+
* binder error on the embedding join-delete: a DB created without
|
|
321
|
+
* EMBEDDING_SCHEMA cannot own embedding rows, so skipping that one
|
|
322
|
+
* statement is sound, while failing would brick every incremental run on
|
|
323
|
+
* such a DB until `--force`. Statement count per chunk is unchanged by the
|
|
324
|
+
* multi-label join: 1 embedding join-delete + 30 node-table deletes = 31
|
|
325
|
+
* (the rejected per-label fallback shape would have been 19 + 30 = 49).
|
|
326
|
+
* Singleton-connection only: the analyze writeback owns the write lock,
|
|
327
|
+
* and `queryAndDrain` routes through `withConnLock` for it (the WAL
|
|
328
|
+
* checkpoint driver is live during this).
|
|
329
|
+
*/
|
|
330
|
+
export declare const deleteNodesForFiles: (filePaths: readonly string[], options?: {
|
|
331
|
+
onChunk?: (filesDone: number, filesTotal: number) => void;
|
|
332
|
+
}) => Promise<void>;
|
|
211
333
|
export declare const getEmbeddingTableName: () => string;
|
|
212
334
|
/**
|
|
213
335
|
* Return the distinct repo-relative paths of files that import
|
|
@@ -225,6 +347,30 @@ export declare const getEmbeddingTableName: () => string;
|
|
|
225
347
|
* exports.
|
|
226
348
|
*/
|
|
227
349
|
export declare const queryImporters: (targetFilePath: string) => Promise<string[]>;
|
|
350
|
+
/**
|
|
351
|
+
* Batched variant of {@link queryImporters} for the incremental importer
|
|
352
|
+
* BFS (#2409): distinct importers of ANY of the target paths, one query per
|
|
353
|
+
* chunk per BFS depth instead of one query per frontier FILE (a ~700-file
|
|
354
|
+
* frontier was ~700 sequential round-trips, each taking the connection lock
|
|
355
|
+
* against the live WAL checkpoint driver — ~5.6s of the writeback measured).
|
|
356
|
+
*
|
|
357
|
+
* Same contract as the singular form: reads the pre-pipeline DB state and
|
|
358
|
+
* swallows per-chunk query failures into a smaller result (correctness
|
|
359
|
+
* degrades on that branch — under-expansion means possibly-stale edges —
|
|
360
|
+
* but the DB stays writable and the writeback proceeds). Unlike the singular
|
|
361
|
+
* form the degradation is not silent (tri-review 4669518496 P2-5): every
|
|
362
|
+
* dropped chunk is logged and reported through `options.onChunkFailure`, so
|
|
363
|
+
* the orchestrator can count it into the #2410 crash diagnostics
|
|
364
|
+
* (`incrementalInProgress.droppedImporterChunks`).
|
|
365
|
+
*/
|
|
366
|
+
export declare const queryImportersBatch: (targetFilePaths: readonly string[], options?: {
|
|
367
|
+
/**
|
|
368
|
+
* Invoked once per chunk whose IMPORTS query failed and was dropped from
|
|
369
|
+
* the expansion. Observability only — the degrade-don't-fail contract is
|
|
370
|
+
* unchanged (the result just shrinks by the failed chunk's importers).
|
|
371
|
+
*/
|
|
372
|
+
onChunkFailure?: (chunkIndex: number, chunkSize: number, err: unknown) => void;
|
|
373
|
+
}) => Promise<string[]>;
|
|
228
374
|
/**
|
|
229
375
|
* Drop every Community and Process node (and their MEMBER_OF /
|
|
230
376
|
* STEP_IN_PROCESS edges via DETACH DELETE). Used at the start of an
|