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.
Files changed (219) hide show
  1. package/README.md +56 -12
  2. package/dist/cli/analyze.js +166 -5
  3. package/dist/cli/clean.js +17 -3
  4. package/dist/cli/cli-message.d.ts +1 -1
  5. package/dist/cli/doctor.d.ts +18 -0
  6. package/dist/cli/doctor.js +76 -3
  7. package/dist/cli/embeddings.d.ts +12 -0
  8. package/dist/cli/embeddings.js +49 -0
  9. package/dist/cli/help-i18n.js +4 -0
  10. package/dist/cli/i18n/en.d.ts +10 -5
  11. package/dist/cli/i18n/en.js +10 -5
  12. package/dist/cli/i18n/resources.d.ts +15 -5
  13. package/dist/cli/i18n/zh-CN.d.ts +5 -0
  14. package/dist/cli/i18n/zh-CN.js +10 -5
  15. package/dist/cli/index.js +12 -1
  16. package/dist/core/augmentation/engine.js +4 -3
  17. package/dist/core/embeddings/embedder.js +16 -2
  18. package/dist/core/embeddings/embedding-pipeline.d.ts +20 -0
  19. package/dist/core/embeddings/embedding-pipeline.js +10 -2
  20. package/dist/core/embeddings/http-client.d.ts +28 -1
  21. package/dist/core/embeddings/http-client.js +107 -15
  22. package/dist/core/embeddings/node-module-compat.d.ts +23 -0
  23. package/dist/core/embeddings/node-module-compat.js +23 -0
  24. package/dist/core/embeddings/onnxruntime-common-resolver.js +6 -3
  25. package/dist/core/embeddings/onnxruntime-node-resolver.js +31 -5
  26. package/dist/core/embeddings/runtime-install.d.ts +119 -0
  27. package/dist/core/embeddings/runtime-install.js +372 -0
  28. package/dist/core/embeddings/runtime-support.d.ts +48 -17
  29. package/dist/core/embeddings/runtime-support.js +96 -0
  30. package/dist/core/group/extractors/http-patterns/python.js +246 -108
  31. package/dist/core/group/extractors/manifest-extractor.js +4 -0
  32. package/dist/core/incremental/escalation-gate.d.ts +38 -0
  33. package/dist/core/incremental/escalation-gate.js +48 -0
  34. package/dist/core/incremental/shadow-candidates.d.ts +3 -3
  35. package/dist/core/incremental/shadow-candidates.js +3 -3
  36. package/dist/core/incremental/subgraph-extract.d.ts +2 -2
  37. package/dist/core/incremental/subgraph-extract.js +2 -2
  38. package/dist/core/ingestion/cobol/jcl-processor.js +9 -8
  39. package/dist/core/ingestion/cobol-processor.js +27 -26
  40. package/dist/core/ingestion/community-processor.d.ts +51 -1
  41. package/dist/core/ingestion/community-processor.js +316 -63
  42. package/dist/core/ingestion/emit-references.js +3 -2
  43. package/dist/core/ingestion/languages/cpp/captures.js +157 -74
  44. package/dist/core/ingestion/markdown-processor.js +3 -2
  45. package/dist/core/ingestion/parsing-processor.d.ts +3 -1
  46. package/dist/core/ingestion/parsing-processor.js +4 -0
  47. package/dist/core/ingestion/pipeline-phases/parse-impl.js +42 -0
  48. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +83 -0
  49. package/dist/core/ingestion/route-extractors/constant-resolver.js +131 -0
  50. package/dist/core/ingestion/route-extractors/python-const-resolver.d.ts +75 -0
  51. package/dist/core/ingestion/route-extractors/python-const-resolver.js +299 -0
  52. package/dist/core/ingestion/tree-sitter-queries.d.ts +1 -1
  53. package/dist/core/ingestion/tree-sitter-queries.js +12 -1
  54. package/dist/core/ingestion/utils/line-base.d.ts +20 -0
  55. package/dist/core/ingestion/utils/line-base.js +20 -0
  56. package/dist/core/ingestion/utils/symbol-labels.d.ts +21 -0
  57. package/dist/core/ingestion/utils/symbol-labels.js +45 -0
  58. package/dist/core/ingestion/workers/parse-worker.d.ts +34 -0
  59. package/dist/core/ingestion/workers/parse-worker.js +40 -5
  60. package/dist/core/ingestion/workers/result-merge.js +4 -0
  61. package/dist/core/ingestion/workers/worker-pool.d.ts +14 -0
  62. package/dist/core/ingestion/workers/worker-pool.js +85 -5
  63. package/dist/core/lbug/csv-generator.js +8 -2
  64. package/dist/core/lbug/cypher-escape.d.ts +20 -0
  65. package/dist/core/lbug/cypher-escape.js +20 -0
  66. package/dist/core/lbug/extension-load-error.d.ts +67 -0
  67. package/dist/core/lbug/extension-load-error.js +320 -0
  68. package/dist/core/lbug/extension-loader.d.ts +17 -2
  69. package/dist/core/lbug/extension-loader.js +38 -13
  70. package/dist/core/lbug/lbug-adapter.d.ts +147 -1
  71. package/dist/core/lbug/lbug-adapter.js +390 -70
  72. package/dist/core/lbug/lbug-config.d.ts +28 -0
  73. package/dist/core/lbug/lbug-config.js +114 -4
  74. package/dist/core/lbug/native-check.d.ts +22 -0
  75. package/dist/core/lbug/native-check.js +66 -0
  76. package/dist/core/lbug/pool-adapter.js +10 -1
  77. package/dist/core/lbug/sidecar-recovery.d.ts +172 -0
  78. package/dist/core/lbug/sidecar-recovery.js +418 -16
  79. package/dist/core/platform/capabilities.js +27 -1
  80. package/dist/core/run-analyze.js +470 -108
  81. package/dist/core/search/fts-indexes.d.ts +7 -0
  82. package/dist/core/search/fts-indexes.js +37 -0
  83. package/dist/core/tree-sitter/safe-parse.d.ts +8 -3
  84. package/dist/core/tree-sitter/safe-parse.js +21 -7
  85. package/dist/core/wiki/graph-queries.js +6 -5
  86. package/dist/mcp/core/embedder.js +16 -2
  87. package/dist/mcp/local/line-display.d.ts +22 -0
  88. package/dist/mcp/local/line-display.js +3 -0
  89. package/dist/mcp/local/local-backend.d.ts +14 -0
  90. package/dist/mcp/local/local-backend.js +63 -19
  91. package/dist/mcp/local/pdg-impact.d.ts +5 -3
  92. package/dist/mcp/local/pdg-impact.js +5 -2
  93. package/dist/mcp/resources.js +1 -0
  94. package/dist/mcp/tools.js +1 -1
  95. package/dist/server/analyze-launch.d.ts +6 -0
  96. package/dist/server/analyze-launch.js +82 -6
  97. package/dist/server/api.d.ts +30 -0
  98. package/dist/server/api.js +63 -21
  99. package/dist/storage/parse-cache.js +1 -1
  100. package/dist/storage/repo-manager.d.ts +65 -1
  101. package/dist/storage/repo-manager.js +18 -1
  102. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +50 -3
  103. package/hooks/claude/gitnexus-hook.cjs +59 -9
  104. package/package.json +5 -3
  105. package/scripts/cross-platform-tests.ts +43 -0
  106. package/scripts/ensure-fts.ts +32 -0
  107. package/scripts/install-duckdb-extension.mjs +85 -24
  108. package/scripts/run-cross-platform.ts +46 -6
  109. package/scripts/shard-arg.ts +30 -0
  110. package/web/assets/ProcessFlowModal-Dna7GkwO.js +22 -0
  111. package/web/assets/{agent-Dli_x7bU.js → agent-DNYDy-KA.js} +49 -49
  112. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +1 -0
  113. package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +36 -0
  114. package/web/assets/{blockDiagram-7IZFK4PR-BkWhpzWB.js → blockDiagram-7IZFK4PR-Dut1BpTV.js} +2 -2
  115. package/web/assets/{c4Diagram-Y2BXMSZH-DtBvpzWD.js → c4Diagram-Y2BXMSZH-DOXVs7-C.js} +2 -2
  116. package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +4 -0
  117. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +1 -0
  118. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +321 -0
  119. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +159 -0
  120. package/web/assets/{chunk-6764PJDD-DpIS7hxD.js → chunk-6764PJDD-C7xxk063.js} +1 -1
  121. package/web/assets/{chunk-67TQ5CYL-4sNPJU1q.js → chunk-67TQ5CYL-zxhDWgyF.js} +3 -3
  122. package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +32 -0
  123. package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +10 -0
  124. package/web/assets/chunk-7W6UQGC5-pyKGssV3.js +1 -0
  125. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +1 -0
  126. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +1 -0
  127. package/web/assets/{chunk-INKRHTLW-Nu4ri9P-.js → chunk-INKRHTLW-D9BM9HWZ.js} +1 -1
  128. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +1 -0
  129. package/web/assets/{chunk-KGFNY3KK-JGMJvKCK.js → chunk-KGFNY3KK-tD2F6wxK.js} +1 -1
  130. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +1 -0
  131. package/web/assets/{chunk-KRXBNO2N-BW5o0KUN.js → chunk-KRXBNO2N-C-UNuKKf.js} +1 -1
  132. package/web/assets/{chunk-LCXTWHL2-CfLLCywY.js → chunk-LCXTWHL2-Ba9JK-6F.js} +2 -2
  133. package/web/assets/{chunk-LII3EMHJ-D-jm-dLa.js → chunk-LII3EMHJ-EGx-eBIu.js} +1 -1
  134. package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +1 -0
  135. package/web/assets/{chunk-QA3QBVWF-BgRW3SXd.js → chunk-QA3QBVWF-D4cSJBf6.js} +1 -1
  136. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +1 -0
  137. package/web/assets/{chunk-RG4AUYOV-CqWzWsV3.js → chunk-RG4AUYOV-OqBBMwuQ.js} +4 -4
  138. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +1 -0
  139. package/web/assets/chunk-RLI5ZMPA-CkXZ0y0U.js +1 -0
  140. package/web/assets/{chunk-T2UQINTJ-DSBqkzH7.js → chunk-T2UQINTJ-BJusEiGe.js} +1 -1
  141. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +1 -0
  142. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +1 -0
  143. package/web/assets/{chunk-UY5QBCOK-DyF0vyGd.js → chunk-UY5QBCOK-BCpUlARQ.js} +1 -1
  144. package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +2 -0
  145. package/web/assets/{chunk-W44A43WB-JqMLIpR0.js → chunk-W44A43WB-BN8EQc_u.js} +1 -1
  146. package/web/assets/{chunk-ZXARS5L4-CxN8oiwI.js → chunk-ZXARS5L4-BI_qR2Nm.js} +1 -1
  147. package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +1 -0
  148. package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +1 -0
  149. package/web/assets/cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js +1 -0
  150. package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +4 -0
  151. package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +43 -0
  152. package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +24 -0
  153. package/web/assets/{diagram-HNR7UZ2L-DFCfd5LI.js → diagram-HNR7UZ2L-DxKW2a2Y.js} +2 -2
  154. package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +24 -0
  155. package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +10 -0
  156. package/web/assets/{erDiagram-L5TCEMPS-8X1y6R4Y.js → erDiagram-L5TCEMPS-D0fvpWEX.js} +3 -3
  157. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +1 -0
  158. package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +162 -0
  159. package/web/assets/{ganttDiagram-JCBTUEKG-D3iL2Aet.js → ganttDiagram-JCBTUEKG-TzODrLzv.js} +2 -2
  160. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +1 -0
  161. package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +106 -0
  162. package/web/assets/index-B4eB4dNZ.js +575 -0
  163. package/web/assets/index-CX_fADmQ.css +2 -0
  164. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +1 -0
  165. package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +2 -0
  166. package/web/assets/{ishikawaDiagram-BNXS4ZKH-DfYpxnE5.js → ishikawaDiagram-BNXS4ZKH-BLjivjXL.js} +3 -3
  167. package/web/assets/{journeyDiagram-M6C3CM3L-CvArszLo.js → journeyDiagram-M6C3CM3L-Cetgs3NH.js} +3 -3
  168. package/web/assets/{kanban-definition-75IXJCU3-CpfVLLf9.js → kanban-definition-75IXJCU3-DMlCaIpf.js} +5 -5
  169. package/web/assets/{katex-K3KEBU37-CTc5BslQ.js → katex-K3KEBU37-qRQBy-EZ.js} +2 -2
  170. package/web/assets/{mindmap-definition-2TDM6QVE-DypvbOMQ.js → mindmap-definition-2TDM6QVE-B4GbXQBc.js} +3 -3
  171. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +1 -0
  172. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +1 -0
  173. package/web/assets/{pieDiagram-CU6KROY3-s27EFWgP.js → pieDiagram-CU6KROY3-D3YC_xyg.js} +2 -2
  174. package/web/assets/{quadrantDiagram-VICAPDV7-yXSZ2lLz.js → quadrantDiagram-VICAPDV7-B1TQnlm0.js} +2 -2
  175. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +1 -0
  176. package/web/assets/{requirementDiagram-JXO7QTGE-CWhqInuf.js → requirementDiagram-JXO7QTGE-f8wczLQf.js} +3 -3
  177. package/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  178. package/web/assets/{sankeyDiagram-URQDO5SZ-1qEjlFIB.js → sankeyDiagram-URQDO5SZ-BTxzG5j0.js} +2 -2
  179. package/web/assets/{sequenceDiagram-VS2MUI6T-RyTlZ5cR.js → sequenceDiagram-VS2MUI6T-DuamM-IR.js} +5 -5
  180. package/web/assets/src-BNCXICdA.js +1 -0
  181. package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +1 -0
  182. package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +1 -0
  183. package/web/assets/{timeline-definition-O6YCAMPW-DrrqLYAf.js → timeline-definition-O6YCAMPW-07BR8R8G.js} +3 -3
  184. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +1 -0
  185. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +1 -0
  186. package/web/assets/{vennDiagram-MWXL3ELB-B0RkWAim.js → vennDiagram-MWXL3ELB-BQX2ossk.js} +4 -4
  187. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +1 -0
  188. package/web/assets/{wardleyDiagram-CUQ6CDDI-boUxiQ5F.js → wardleyDiagram-CUQ6CDDI-CGIJBBiK.js} +3 -3
  189. package/web/assets/{xychartDiagram-N2JHSOCM-BOLm0eNm.js → xychartDiagram-N2JHSOCM-B3HNMuWp.js} +4 -4
  190. package/web/index.html +17 -10
  191. package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +0 -1
  192. package/web/assets/architectureDiagram-UL44E2DR-dEkqUZN9.js +0 -36
  193. package/web/assets/chunk-3SSMPTDK-B4_etUhr.js +0 -321
  194. package/web/assets/chunk-7W6UQGC5-KyEG0HQg.js +0 -1
  195. package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +0 -161
  196. package/web/assets/classDiagram-KGZ6W3CR-CMne4tG9.js +0 -1
  197. package/web/assets/classDiagram-v2-72OJOZXJ-CMne4tG9.js +0 -1
  198. package/web/assets/cose-bilkent-UX7MHV2Q-D71wNYRJ.js +0 -1
  199. package/web/assets/dagre-ND4H6XIP-Co5rRx9X.js +0 -4
  200. package/web/assets/diagram-3NCE3AQN-DBp4O00j.js +0 -43
  201. package/web/assets/diagram-GF46GFSD-6N_8yS0i.js +0 -24
  202. package/web/assets/diagram-QXG6HAR7-Di093rFg.js +0 -24
  203. package/web/assets/diagram-WEQXMOUZ-DZWi4SUN.js +0 -10
  204. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +0 -1
  205. package/web/assets/flowDiagram-H6V6AXG4-CMpY8Ufn.js +0 -162
  206. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +0 -1
  207. package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +0 -106
  208. package/web/assets/index-KctnI3Vq.js +0 -635
  209. package/web/assets/index-_lgn7hs5.css +0 -2
  210. package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +0 -1
  211. package/web/assets/infoDiagram-3YFTVSEB-BaLMZkUg.js +0 -2
  212. package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +0 -1
  213. package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +0 -1
  214. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +0 -1
  215. package/web/assets/stateDiagram-7D4R322I-DTjVfX4A.js +0 -1
  216. package/web/assets/stateDiagram-v2-36443NZ5-xY9_k9_Q.js +0 -1
  217. package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +0 -1
  218. package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +0 -1
  219. 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 { CachedEmbedding } from '../embeddings/types.js';
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