gitnexus 1.6.9 → 1.6.10-aptos.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.
Files changed (539) hide show
  1. package/README.md +211 -53
  2. package/dist/_shared/graph/types.d.ts +67 -3
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +1 -0
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js.map +1 -1
  7. package/dist/_shared/integrations/resilient-fetch.d.ts +3 -1
  8. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  9. package/dist/_shared/integrations/resilient-fetch.js +4 -3
  10. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  11. package/dist/_shared/language-detection.d.ts.map +1 -1
  12. package/dist/_shared/language-detection.js +2 -0
  13. package/dist/_shared/language-detection.js.map +1 -1
  14. package/dist/_shared/languages.d.ts +2 -0
  15. package/dist/_shared/languages.d.ts.map +1 -1
  16. package/dist/_shared/languages.js +2 -0
  17. package/dist/_shared/languages.js.map +1 -1
  18. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  19. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  20. package/dist/_shared/lbug/schema-constants.js +8 -0
  21. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  22. package/dist/_shared/pipeline.d.ts +1 -1
  23. package/dist/_shared/pipeline.d.ts.map +1 -1
  24. package/dist/_shared/scope-resolution/callable-flow-site.d.ts +110 -0
  25. package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
  26. package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
  27. package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
  28. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +1 -1
  29. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  30. package/dist/_shared/scope-resolution/finalize-algorithm.js +1 -1
  31. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  32. package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -1
  33. package/dist/_shared/scope-resolution/language-classification.js +1 -0
  34. package/dist/_shared/scope-resolution/language-classification.js.map +1 -1
  35. package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
  36. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  37. package/dist/_shared/scope-resolution/reference-site.d.ts +9 -1
  38. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  39. package/dist/_shared/scope-resolution/types.d.ts +20 -3
  40. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  41. package/dist/cli/ai-context.d.ts +1 -1
  42. package/dist/cli/ai-context.js +25 -44
  43. package/dist/cli/analyze.d.ts +5 -2
  44. package/dist/cli/analyze.js +197 -11
  45. package/dist/cli/clean.js +17 -3
  46. package/dist/cli/cli-message.d.ts +1 -1
  47. package/dist/cli/doctor.d.ts +18 -0
  48. package/dist/cli/doctor.js +96 -5
  49. package/dist/cli/editor-targets.d.ts +17 -2
  50. package/dist/cli/editor-targets.js +44 -0
  51. package/dist/cli/embeddings.d.ts +12 -0
  52. package/dist/cli/embeddings.js +49 -0
  53. package/dist/cli/eval-server.d.ts +23 -1
  54. package/dist/cli/eval-server.js +126 -8
  55. package/dist/cli/help-i18n.js +6 -0
  56. package/dist/cli/i18n/en.d.ts +18 -8
  57. package/dist/cli/i18n/en.js +18 -8
  58. package/dist/cli/i18n/resources.d.ts +28 -8
  59. package/dist/cli/i18n/zh-CN.d.ts +10 -0
  60. package/dist/cli/i18n/zh-CN.js +18 -8
  61. package/dist/cli/index.js +21 -7
  62. package/dist/cli/lazy-action.d.ts +7 -0
  63. package/dist/cli/lazy-action.js +27 -0
  64. package/dist/cli/mcp.js +6 -3
  65. package/dist/cli/move-availability.d.ts +5 -0
  66. package/dist/cli/move-availability.js +11 -0
  67. package/dist/cli/setup.d.ts +8 -0
  68. package/dist/cli/setup.js +230 -32
  69. package/dist/cli/skill-gen.js +38 -18
  70. package/dist/cli/standard-skills.d.ts +76 -0
  71. package/dist/cli/standard-skills.js +45 -0
  72. package/dist/cli/status.d.ts +4 -1
  73. package/dist/cli/status.js +57 -4
  74. package/dist/cli/tool.js +11 -0
  75. package/dist/cli/uninstall.js +77 -18
  76. package/dist/cli/wiki.d.ts +1 -0
  77. package/dist/cli/wiki.js +7 -1
  78. package/dist/config/ignore-service.d.ts +2 -0
  79. package/dist/config/ignore-service.js +27 -0
  80. package/dist/core/analysis-features.d.ts +21 -0
  81. package/dist/core/analysis-features.js +59 -0
  82. package/dist/core/analyzer-identity.d.ts +74 -0
  83. package/dist/core/analyzer-identity.js +1820 -0
  84. package/dist/core/augmentation/engine.js +13 -8
  85. package/dist/core/embeddings/embedder.d.ts +3 -2
  86. package/dist/core/embeddings/embedder.js +24 -7
  87. package/dist/core/embeddings/embedding-identity.d.ts +11 -0
  88. package/dist/core/embeddings/embedding-identity.js +24 -0
  89. package/dist/core/embeddings/embedding-pipeline.d.ts +36 -1
  90. package/dist/core/embeddings/embedding-pipeline.js +100 -9
  91. package/dist/core/embeddings/http-client.d.ts +33 -3
  92. package/dist/core/embeddings/http-client.js +237 -25
  93. package/dist/core/embeddings/node-module-compat.d.ts +25 -0
  94. package/dist/core/embeddings/node-module-compat.js +25 -0
  95. package/dist/core/embeddings/onnxruntime-common-resolver.js +8 -5
  96. package/dist/core/embeddings/onnxruntime-node-resolver.js +33 -7
  97. package/dist/core/embeddings/runtime-install.d.ts +119 -0
  98. package/dist/core/embeddings/runtime-install.js +372 -0
  99. package/dist/core/embeddings/runtime-support.d.ts +48 -17
  100. package/dist/core/embeddings/runtime-support.js +96 -0
  101. package/dist/core/git-staleness.js +1 -1
  102. package/dist/core/group/bridge-db.js +2 -0
  103. package/dist/core/group/extractors/http-patterns/python.js +246 -108
  104. package/dist/core/group/extractors/manifest-extractor.js +4 -0
  105. package/dist/core/incremental/escalation-gate.d.ts +38 -0
  106. package/dist/core/incremental/escalation-gate.js +48 -0
  107. package/dist/core/incremental/shadow-candidates.d.ts +3 -3
  108. package/dist/core/incremental/shadow-candidates.js +3 -3
  109. package/dist/core/incremental/subgraph-extract.d.ts +2 -2
  110. package/dist/core/incremental/subgraph-extract.js +2 -2
  111. package/dist/core/index-freshness.d.ts +5 -0
  112. package/dist/core/index-freshness.js +13 -0
  113. package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
  114. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
  115. package/dist/core/ingestion/cobol/jcl-processor.js +9 -8
  116. package/dist/core/ingestion/cobol-processor.js +27 -26
  117. package/dist/core/ingestion/community-processor.d.ts +51 -1
  118. package/dist/core/ingestion/community-processor.js +323 -64
  119. package/dist/core/ingestion/emit-references.js +7 -2
  120. package/dist/core/ingestion/filesystem-walker.js +4 -0
  121. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +3 -0
  122. package/dist/core/ingestion/frameworks/spring/analysis-features.js +7 -0
  123. package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
  124. package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
  125. package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
  126. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +26 -0
  127. package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
  128. package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
  129. package/dist/core/ingestion/languages/c/captures.js +56 -0
  130. package/dist/core/ingestion/languages/c/query.js +17 -0
  131. package/dist/core/ingestion/languages/c/scope-resolver.js +6 -0
  132. package/dist/core/ingestion/languages/cobol/captures.js +93 -0
  133. package/dist/core/ingestion/languages/cobol/scope-resolver.js +7 -0
  134. package/dist/core/ingestion/languages/cpp/captures.js +365 -75
  135. package/dist/core/ingestion/languages/cpp/scope-resolver.js +14 -0
  136. package/dist/core/ingestion/languages/csharp/captures.js +25 -0
  137. package/dist/core/ingestion/languages/dart/captures.js +90 -2
  138. package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
  139. package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
  140. package/dist/core/ingestion/languages/dart.js +2 -0
  141. package/dist/core/ingestion/languages/go/captures.js +34 -0
  142. package/dist/core/ingestion/languages/index.d.ts +1 -0
  143. package/dist/core/ingestion/languages/index.js +2 -0
  144. package/dist/core/ingestion/languages/java/analysis-features.d.ts +3 -0
  145. package/dist/core/ingestion/languages/java/analysis-features.js +13 -0
  146. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +22 -0
  147. package/dist/core/ingestion/languages/java/capture-side-channel.js +58 -0
  148. package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
  149. package/dist/core/ingestion/languages/java/captures.js +193 -17
  150. package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
  151. package/dist/core/ingestion/languages/java/package-facts.js +9 -0
  152. package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
  153. package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
  154. package/dist/core/ingestion/languages/java/query.js +23 -0
  155. package/dist/core/ingestion/languages/java/scope-resolver.js +23 -0
  156. package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
  157. package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
  158. package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
  159. package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
  160. package/dist/core/ingestion/languages/java.js +3 -0
  161. package/dist/core/ingestion/languages/javascript/captures.js +16 -0
  162. package/dist/core/ingestion/languages/javascript/query.js +21 -0
  163. package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
  164. package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
  165. package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
  166. package/dist/core/ingestion/languages/jvm/package-siblings.js +129 -0
  167. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +17 -3
  168. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +42 -8
  169. package/dist/core/ingestion/languages/kotlin/captures.js +59 -0
  170. package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
  171. package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
  172. package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
  173. package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
  174. package/dist/core/ingestion/languages/kotlin/query.js +19 -0
  175. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +9 -1
  176. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
  177. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
  178. package/dist/core/ingestion/languages/kotlin.js +5 -6
  179. package/dist/core/ingestion/languages/move.d.ts +1 -0
  180. package/dist/core/ingestion/languages/move.js +27 -0
  181. package/dist/core/ingestion/languages/php/captures.js +40 -0
  182. package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
  183. package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
  184. package/dist/core/ingestion/languages/php/import-target.js +110 -2
  185. package/dist/core/ingestion/languages/php/interpret.js +10 -0
  186. package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
  187. package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
  188. package/dist/core/ingestion/languages/python/captures.js +24 -5
  189. package/dist/core/ingestion/languages/python/interpret.js +4 -0
  190. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +15 -2
  191. package/dist/core/ingestion/languages/python/receiver-binding.js +96 -2
  192. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
  193. package/dist/core/ingestion/languages/python/simple-hooks.js +15 -5
  194. package/dist/core/ingestion/languages/ruby/captures.js +42 -0
  195. package/dist/core/ingestion/languages/rust/captures.js +13 -0
  196. package/dist/core/ingestion/languages/rust/interpret.js +18 -0
  197. package/dist/core/ingestion/languages/rust/query.js +9 -0
  198. package/dist/core/ingestion/languages/rust/range-binding.js +6 -2
  199. package/dist/core/ingestion/languages/swift/captures.js +12 -0
  200. package/dist/core/ingestion/languages/typescript/captures.js +21 -0
  201. package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
  202. package/dist/core/ingestion/languages/typescript/query.js +37 -0
  203. package/dist/core/ingestion/markdown-processor.js +3 -2
  204. package/dist/core/ingestion/model/registration-table.js +1 -0
  205. package/dist/core/ingestion/parsing-processor.d.ts +3 -1
  206. package/dist/core/ingestion/parsing-processor.js +36 -1
  207. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  208. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  209. package/dist/core/ingestion/pipeline-phases/parse-impl.js +56 -2
  210. package/dist/core/ingestion/pipeline-phases/parse.d.ts +0 -2
  211. package/dist/core/ingestion/pipeline-phases/parse.js +12 -3
  212. package/dist/core/ingestion/pipeline-phases/processes.d.ts +8 -0
  213. package/dist/core/ingestion/pipeline-phases/processes.js +11 -1
  214. package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
  215. package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
  216. package/dist/core/ingestion/pipeline-phases/standalone-ingest.d.ts +10 -0
  217. package/dist/core/ingestion/pipeline-phases/standalone-ingest.js +6 -0
  218. package/dist/core/ingestion/pipeline.d.ts +4 -2
  219. package/dist/core/ingestion/pipeline.js +5 -2
  220. package/dist/core/ingestion/resolve-references.js +12 -0
  221. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +83 -0
  222. package/dist/core/ingestion/route-extractors/constant-resolver.js +131 -0
  223. package/dist/core/ingestion/route-extractors/python-const-resolver.d.ts +75 -0
  224. package/dist/core/ingestion/route-extractors/python-const-resolver.js +299 -0
  225. package/dist/core/ingestion/scope-extractor.js +306 -43
  226. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +71 -2
  227. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
  228. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
  229. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +3 -1
  230. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +6 -0
  231. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +1 -0
  232. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +4 -1
  233. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +7 -2
  234. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +47 -0
  235. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1138 -0
  236. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +16 -4
  237. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +97 -1
  238. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +60 -0
  239. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +111 -0
  240. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +4 -3
  241. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +5 -0
  242. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +25 -38
  243. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +6 -0
  244. package/dist/core/ingestion/scope-resolution/pipeline/run.js +147 -35
  245. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
  246. package/dist/core/ingestion/scope-resolution/scope/walkers.js +73 -44
  247. package/dist/core/ingestion/taint/typescript-model.js +34 -2
  248. package/dist/core/ingestion/tree-sitter-queries.d.ts +2 -2
  249. package/dist/core/ingestion/tree-sitter-queries.js +23 -2
  250. package/dist/core/ingestion/type-extractors/jvm.js +17 -2
  251. package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -0
  252. package/dist/core/ingestion/utils/ast-helpers.js +153 -2
  253. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +94 -0
  254. package/dist/core/ingestion/utils/callable-flow-captures.js +878 -0
  255. package/dist/core/ingestion/utils/line-base.d.ts +20 -0
  256. package/dist/core/ingestion/utils/line-base.js +20 -0
  257. package/dist/core/ingestion/utils/symbol-labels.d.ts +21 -0
  258. package/dist/core/ingestion/utils/symbol-labels.js +45 -0
  259. package/dist/core/ingestion/workers/parse-worker.d.ts +34 -0
  260. package/dist/core/ingestion/workers/parse-worker.js +40 -5
  261. package/dist/core/ingestion/workers/result-merge.js +4 -0
  262. package/dist/core/ingestion/workers/worker-pool.d.ts +28 -0
  263. package/dist/core/ingestion/workers/worker-pool.js +128 -28
  264. package/dist/core/lbug/csv-generator.d.ts +15 -0
  265. package/dist/core/lbug/csv-generator.js +124 -27
  266. package/dist/core/lbug/cypher-escape.d.ts +20 -0
  267. package/dist/core/lbug/cypher-escape.js +20 -0
  268. package/dist/core/lbug/extension-load-error.d.ts +67 -0
  269. package/dist/core/lbug/extension-load-error.js +326 -0
  270. package/dist/core/lbug/extension-loader.d.ts +17 -2
  271. package/dist/core/lbug/extension-loader.js +38 -13
  272. package/dist/core/lbug/lbug-adapter.d.ts +203 -2
  273. package/dist/core/lbug/lbug-adapter.js +527 -86
  274. package/dist/core/lbug/lbug-config.d.ts +56 -2
  275. package/dist/core/lbug/lbug-config.js +267 -7
  276. package/dist/core/lbug/move-columns.d.ts +7 -0
  277. package/dist/core/lbug/move-columns.js +86 -0
  278. package/dist/core/lbug/native-check.d.ts +40 -0
  279. package/dist/core/lbug/native-check.js +90 -0
  280. package/dist/core/lbug/node-table-layout.d.ts +29 -0
  281. package/dist/core/lbug/node-table-layout.js +119 -0
  282. package/dist/core/lbug/pool-adapter.d.ts +23 -1
  283. package/dist/core/lbug/pool-adapter.js +115 -8
  284. package/dist/core/lbug/schema.d.ts +4 -3
  285. package/dist/core/lbug/schema.js +16 -16
  286. package/dist/core/lbug/sidecar-recovery.d.ts +172 -0
  287. package/dist/core/lbug/sidecar-recovery.js +418 -16
  288. package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
  289. package/dist/core/move/artifact-download.d.ts +19 -0
  290. package/dist/core/move/artifact-download.js +179 -0
  291. package/dist/core/move/compiler-facts.d.ts +120 -0
  292. package/dist/core/move/compiler-facts.js +9 -0
  293. package/dist/core/move/consistency.d.ts +28 -0
  294. package/dist/core/move/consistency.js +98 -0
  295. package/dist/core/move/constants.d.ts +98 -0
  296. package/dist/core/move/constants.js +136 -0
  297. package/dist/core/move/discovery.d.ts +10 -0
  298. package/dist/core/move/discovery.js +22 -0
  299. package/dist/core/move/entry-points.d.ts +14 -0
  300. package/dist/core/move/entry-points.js +40 -0
  301. package/dist/core/move/facts-mapper.d.ts +75 -0
  302. package/dist/core/move/facts-mapper.js +534 -0
  303. package/dist/core/move/install-lock.d.ts +14 -0
  304. package/dist/core/move/install-lock.js +102 -0
  305. package/dist/core/move/install.d.ts +39 -0
  306. package/dist/core/move/install.js +391 -0
  307. package/dist/core/move/mcp-client.d.ts +115 -0
  308. package/dist/core/move/mcp-client.js +436 -0
  309. package/dist/core/move/move-ingest.d.ts +49 -0
  310. package/dist/core/move/move-ingest.js +320 -0
  311. package/dist/core/move/provision.d.ts +19 -0
  312. package/dist/core/move/provision.js +91 -0
  313. package/dist/core/move/release.d.ts +6 -0
  314. package/dist/core/move/release.js +10 -0
  315. package/dist/core/move/symbol-id.d.ts +35 -0
  316. package/dist/core/move/symbol-id.js +65 -0
  317. package/dist/core/move/type-parser.d.ts +11 -0
  318. package/dist/core/move/type-parser.js +38 -0
  319. package/dist/core/platform/capabilities.d.ts +0 -1
  320. package/dist/core/platform/capabilities.js +39 -8
  321. package/dist/core/run-analyze.d.ts +3 -3
  322. package/dist/core/run-analyze.js +1001 -184
  323. package/dist/core/search/fts-indexes.d.ts +31 -0
  324. package/dist/core/search/fts-indexes.js +73 -0
  325. package/dist/core/search/fts-schema.js +2 -0
  326. package/dist/core/tree-sitter/safe-parse.d.ts +8 -3
  327. package/dist/core/tree-sitter/safe-parse.js +21 -7
  328. package/dist/core/wiki/graph-queries.js +6 -5
  329. package/dist/core/wiki/llm-client.d.ts +8 -2
  330. package/dist/core/wiki/llm-client.js +41 -5
  331. package/dist/mcp/core/embedder.js +16 -2
  332. package/dist/mcp/http-transport.d.ts +5 -0
  333. package/dist/mcp/http-transport.js +19 -5
  334. package/dist/mcp/local/bean-metadata.d.ts +2 -0
  335. package/dist/mcp/local/bean-metadata.js +25 -0
  336. package/dist/mcp/local/line-display.d.ts +22 -0
  337. package/dist/mcp/local/line-display.js +3 -0
  338. package/dist/mcp/local/local-backend.d.ts +19 -1
  339. package/dist/mcp/local/local-backend.js +402 -155
  340. package/dist/mcp/local/pdg-impact.d.ts +5 -3
  341. package/dist/mcp/local/pdg-impact.js +5 -2
  342. package/dist/mcp/output-budget.d.ts +5 -0
  343. package/dist/mcp/output-budget.js +52 -0
  344. package/dist/mcp/read-only-policy.d.ts +12 -0
  345. package/dist/mcp/read-only-policy.js +102 -0
  346. package/dist/mcp/repository-policy.d.ts +34 -0
  347. package/dist/mcp/repository-policy.js +328 -0
  348. package/dist/mcp/resources.js +32 -5
  349. package/dist/mcp/server.d.ts +5 -2
  350. package/dist/mcp/server.js +29 -9
  351. package/dist/mcp/tools.d.ts +0 -8
  352. package/dist/mcp/tools.js +102 -5
  353. package/dist/server/analyze-job.d.ts +3 -0
  354. package/dist/server/analyze-job.js +17 -0
  355. package/dist/server/analyze-launch.d.ts +6 -0
  356. package/dist/server/analyze-launch.js +82 -6
  357. package/dist/server/analyze-worker-core.d.ts +2 -1
  358. package/dist/server/analyze-worker-core.js +5 -2
  359. package/dist/server/analyze-worker.js +29 -6
  360. package/dist/server/api.d.ts +30 -0
  361. package/dist/server/api.js +120 -34
  362. package/dist/server/mcp-http.d.ts +1 -1
  363. package/dist/server/mcp-http.js +4 -2
  364. package/dist/server/upload-ingest.js +2 -1
  365. package/dist/server/validation.js +2 -1
  366. package/dist/storage/git.d.ts +31 -0
  367. package/dist/storage/git.js +111 -1
  368. package/dist/storage/parse-cache.js +7 -1
  369. package/dist/storage/parsedfile-store.d.ts +8 -0
  370. package/dist/storage/parsedfile-store.js +165 -1
  371. package/dist/storage/repo-manager.d.ts +194 -2
  372. package/dist/storage/repo-manager.js +56 -1
  373. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +50 -3
  374. package/hooks/claude/gitnexus-hook.cjs +59 -9
  375. package/hooks/claude/pre-tool-use.sh +0 -0
  376. package/hooks/claude/session-start.sh +0 -0
  377. package/package.json +21 -15
  378. package/scripts/cross-platform-tests.ts +56 -0
  379. package/scripts/ensure-fts.ts +43 -0
  380. package/scripts/install-duckdb-extension.mjs +85 -24
  381. package/scripts/run-cross-platform.ts +61 -6
  382. package/scripts/shard-arg.ts +30 -0
  383. package/scripts/sync-plugin-manifests.mjs +192 -0
  384. package/skills/gitnexus-lfg/README.md +55 -0
  385. package/skills/gitnexus-lfg/SKILL.md +86 -0
  386. package/skills/gitnexus-plan/README.md +142 -0
  387. package/skills/gitnexus-plan/SKILL.md +348 -0
  388. package/skills/gitnexus-plan/references/context-ledger.md +137 -0
  389. package/skills/gitnexus-plan/references/context-pack.md +126 -0
  390. package/skills/gitnexus-plan/references/evidence-provenance.md +272 -0
  391. package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
  392. package/skills/gitnexus-plan/references/plan-template.md +201 -0
  393. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2084 -0
  394. package/skills/gitnexus-review/SKILL.md +273 -0
  395. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
  396. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
  397. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
  398. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
  399. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
  400. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
  401. package/skills/gitnexus-work/README.md +71 -0
  402. package/skills/gitnexus-work/SKILL.md +269 -0
  403. package/skills/gitnexus-work/references/evidence-provenance.md +272 -0
  404. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2084 -0
  405. package/web/assets/ProcessFlowModal-B_bfBySy.js +22 -0
  406. package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
  407. package/web/assets/agent-Bqxn-abU.js +626 -0
  408. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +1 -0
  409. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +36 -0
  410. package/web/assets/{blockDiagram-7IZFK4PR-BkWhpzWB.js → blockDiagram-7IZFK4PR-DBefcjof.js} +7 -7
  411. package/web/assets/{c4Diagram-Y2BXMSZH-DtBvpzWD.js → c4Diagram-Y2BXMSZH-EjWnjEJl.js} +6 -6
  412. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +4 -0
  413. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +1 -0
  414. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +321 -0
  415. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +159 -0
  416. package/web/assets/{chunk-6764PJDD-DpIS7hxD.js → chunk-6764PJDD-C7xxk063.js} +1 -1
  417. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +124 -0
  418. package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +32 -0
  419. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +10 -0
  420. package/web/assets/chunk-7W6UQGC5-pyKGssV3.js +1 -0
  421. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +1 -0
  422. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +1 -0
  423. package/web/assets/{chunk-INKRHTLW-Nu4ri9P-.js → chunk-INKRHTLW-Ckl3_KkO.js} +13 -13
  424. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +1 -0
  425. package/web/assets/{chunk-KGFNY3KK-JGMJvKCK.js → chunk-KGFNY3KK-BZeP-55u.js} +17 -17
  426. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +1 -0
  427. package/web/assets/{chunk-KRXBNO2N-BW5o0KUN.js → chunk-KRXBNO2N-C-UNuKKf.js} +1 -1
  428. package/web/assets/{chunk-LCXTWHL2-CfLLCywY.js → chunk-LCXTWHL2-C162wE5z.js} +5 -5
  429. package/web/assets/chunk-LII3EMHJ-BL6lKJ_P.js +1 -0
  430. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +1 -0
  431. package/web/assets/chunk-QA3QBVWF-DVXPOIxe.js +2 -0
  432. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +1 -0
  433. package/web/assets/chunk-RG4AUYOV-ZNgyLFq6.js +206 -0
  434. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +1 -0
  435. package/web/assets/chunk-RLI5ZMPA-CkXZ0y0U.js +1 -0
  436. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +1 -0
  437. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +1 -0
  438. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +1 -0
  439. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +1 -0
  440. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +2 -0
  441. package/web/assets/{chunk-W44A43WB-JqMLIpR0.js → chunk-W44A43WB-BN8EQc_u.js} +1 -1
  442. package/web/assets/chunk-ZXARS5L4-C3v-4Fsw.js +1 -0
  443. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +1 -0
  444. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +1 -0
  445. package/web/assets/cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js +1 -0
  446. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +4 -0
  447. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +43 -0
  448. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +24 -0
  449. package/web/assets/diagram-HNR7UZ2L-DVRltWbL.js +3 -0
  450. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +24 -0
  451. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +10 -0
  452. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +85 -0
  453. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +1 -0
  454. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +162 -0
  455. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +292 -0
  456. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +1 -0
  457. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +106 -0
  458. package/web/assets/index-CX_fADmQ.css +2 -0
  459. package/web/assets/index-D1Z3dGGz.js +575 -0
  460. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +1 -0
  461. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +2 -0
  462. package/web/assets/{ishikawaDiagram-BNXS4ZKH-DfYpxnE5.js → ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js} +6 -6
  463. package/web/assets/journeyDiagram-M6C3CM3L-C6wjooas.js +139 -0
  464. package/web/assets/kanban-definition-75IXJCU3-5_UVY79g.js +89 -0
  465. package/web/assets/{katex-K3KEBU37-CTc5BslQ.js → katex-K3KEBU37-qRQBy-EZ.js} +2 -2
  466. package/web/assets/{mindmap-definition-2TDM6QVE-DypvbOMQ.js → mindmap-definition-2TDM6QVE-8xDLzk2e.js} +29 -29
  467. package/web/assets/node-Ct_zna8U.js +8 -0
  468. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +1 -0
  469. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +1 -0
  470. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +30 -0
  471. package/web/assets/preload-helper-Czpn1I53.js +1 -0
  472. package/web/assets/{quadrantDiagram-VICAPDV7-yXSZ2lLz.js → quadrantDiagram-VICAPDV7-DR54jOeR.js} +6 -6
  473. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +1 -0
  474. package/web/assets/requirementDiagram-JXO7QTGE-PEkg7sKC.js +84 -0
  475. package/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  476. package/web/assets/sankeyDiagram-URQDO5SZ-DDWEtjcs.js +40 -0
  477. package/web/assets/sdk-CzHHH8tD.js +37 -0
  478. package/web/assets/sequenceDiagram-VS2MUI6T-Bv-uwANx.js +162 -0
  479. package/web/assets/src-JV30wyV8.js +1 -0
  480. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +1 -0
  481. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +1 -0
  482. package/web/assets/timeline-definition-O6YCAMPW-Qmsuo7qS.js +120 -0
  483. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +1 -0
  484. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +1 -0
  485. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +34 -0
  486. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +1 -0
  487. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +78 -0
  488. package/web/assets/{xychartDiagram-N2JHSOCM-BOLm0eNm.js → xychartDiagram-N2JHSOCM-CoZ_Tits.js} +6 -6
  489. package/web/index.html +18 -10
  490. package/skills/gitnexus-pr-review.md +0 -163
  491. package/web/assets/agent-Dli_x7bU.js +0 -660
  492. package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +0 -1
  493. package/web/assets/architectureDiagram-UL44E2DR-dEkqUZN9.js +0 -36
  494. package/web/assets/chunk-3SSMPTDK-B4_etUhr.js +0 -321
  495. package/web/assets/chunk-67TQ5CYL-4sNPJU1q.js +0 -124
  496. package/web/assets/chunk-7W6UQGC5-KyEG0HQg.js +0 -1
  497. package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +0 -161
  498. package/web/assets/chunk-LII3EMHJ-D-jm-dLa.js +0 -1
  499. package/web/assets/chunk-QA3QBVWF-BgRW3SXd.js +0 -2
  500. package/web/assets/chunk-RG4AUYOV-CqWzWsV3.js +0 -206
  501. package/web/assets/chunk-T2UQINTJ-DSBqkzH7.js +0 -1
  502. package/web/assets/chunk-UY5QBCOK-DyF0vyGd.js +0 -1
  503. package/web/assets/chunk-ZXARS5L4-CxN8oiwI.js +0 -1
  504. package/web/assets/classDiagram-KGZ6W3CR-CMne4tG9.js +0 -1
  505. package/web/assets/classDiagram-v2-72OJOZXJ-CMne4tG9.js +0 -1
  506. package/web/assets/cose-bilkent-UX7MHV2Q-D71wNYRJ.js +0 -1
  507. package/web/assets/dagre-ND4H6XIP-Co5rRx9X.js +0 -4
  508. package/web/assets/diagram-3NCE3AQN-DBp4O00j.js +0 -43
  509. package/web/assets/diagram-GF46GFSD-6N_8yS0i.js +0 -24
  510. package/web/assets/diagram-HNR7UZ2L-DFCfd5LI.js +0 -3
  511. package/web/assets/diagram-QXG6HAR7-Di093rFg.js +0 -24
  512. package/web/assets/diagram-WEQXMOUZ-DZWi4SUN.js +0 -10
  513. package/web/assets/erDiagram-L5TCEMPS-8X1y6R4Y.js +0 -85
  514. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +0 -1
  515. package/web/assets/flowDiagram-H6V6AXG4-CMpY8Ufn.js +0 -162
  516. package/web/assets/ganttDiagram-JCBTUEKG-D3iL2Aet.js +0 -292
  517. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +0 -1
  518. package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +0 -106
  519. package/web/assets/index-KctnI3Vq.js +0 -635
  520. package/web/assets/index-_lgn7hs5.css +0 -2
  521. package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +0 -1
  522. package/web/assets/infoDiagram-3YFTVSEB-BaLMZkUg.js +0 -2
  523. package/web/assets/journeyDiagram-M6C3CM3L-CvArszLo.js +0 -139
  524. package/web/assets/kanban-definition-75IXJCU3-CpfVLLf9.js +0 -89
  525. package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +0 -1
  526. package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +0 -1
  527. package/web/assets/pieDiagram-CU6KROY3-s27EFWgP.js +0 -30
  528. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +0 -1
  529. package/web/assets/requirementDiagram-JXO7QTGE-CWhqInuf.js +0 -84
  530. package/web/assets/sankeyDiagram-URQDO5SZ-1qEjlFIB.js +0 -40
  531. package/web/assets/sequenceDiagram-VS2MUI6T-RyTlZ5cR.js +0 -162
  532. package/web/assets/stateDiagram-7D4R322I-DTjVfX4A.js +0 -1
  533. package/web/assets/stateDiagram-v2-36443NZ5-xY9_k9_Q.js +0 -1
  534. package/web/assets/timeline-definition-O6YCAMPW-DrrqLYAf.js +0 -120
  535. package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +0 -1
  536. package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +0 -1
  537. package/web/assets/vennDiagram-MWXL3ELB-B0RkWAim.js +0 -34
  538. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +0 -1
  539. package/web/assets/wardleyDiagram-CUQ6CDDI-boUxiQ5F.js +0 -78
@@ -0,0 +1,29 @@
1
+ import type { NodeTableName } from '../../_shared/index.js';
2
+ export type CsvColumnEncoding = 'node-id' | 'string' | 'number' | 'boolean' | 'string-array' | 'content' | 'description';
3
+ export interface NodeTableColumnSpec {
4
+ name: string;
5
+ ddlType: string;
6
+ csvEncoding: CsvColumnEncoding;
7
+ defaultValue?: string | number | boolean;
8
+ }
9
+ export interface NodeTableLayout {
10
+ table: NodeTableName;
11
+ columns: readonly NodeTableColumnSpec[];
12
+ quoteTableName?: boolean;
13
+ }
14
+ export declare const CODE_ELEMENT_COLUMNS: string[];
15
+ export declare const MULTI_LANG_BASE_COLUMNS: string[];
16
+ export declare const NODE_TABLE_LAYOUTS: {
17
+ readonly Function: NodeTableLayout;
18
+ readonly Struct: NodeTableLayout;
19
+ readonly Enum: NodeTableLayout;
20
+ readonly EnumVariant: NodeTableLayout;
21
+ readonly Const: NodeTableLayout;
22
+ readonly Module: NodeTableLayout;
23
+ };
24
+ export type LayoutTableName = keyof typeof NODE_TABLE_LAYOUTS;
25
+ export declare const hasNodeTableLayout: (table: string) => table is LayoutTableName;
26
+ export declare const getNodeTableLayout: (table: LayoutTableName) => NodeTableLayout;
27
+ export declare const getNodeTableColumnNames: (table: NodeTableName) => readonly string[] | undefined;
28
+ export declare const getNodeTableCsvHeader: (table: LayoutTableName) => string;
29
+ export declare const buildNodeTableSchema: (table: LayoutTableName) => string;
@@ -0,0 +1,119 @@
1
+ const column = (name, ddlType, csvEncoding = 'string', defaultValue) => ({ name, ddlType, csvEncoding, defaultValue });
2
+ const CODE_ELEMENT_BASE = [
3
+ column('id', 'STRING', 'node-id'),
4
+ column('name', 'STRING'),
5
+ column('filePath', 'STRING'),
6
+ column('startLine', 'INT64', 'number', -1),
7
+ column('endLine', 'INT64', 'number', -1),
8
+ column('isExported', 'BOOLEAN', 'boolean', false),
9
+ column('content', 'STRING', 'content'),
10
+ column('description', 'STRING', 'description'),
11
+ ];
12
+ // Same base as code elements minus isExported (multi-language tables have none).
13
+ const MULTI_LANGUAGE_BASE = CODE_ELEMENT_BASE.filter(({ name }) => name !== 'isExported');
14
+ export const CODE_ELEMENT_COLUMNS = CODE_ELEMENT_BASE.map(({ name }) => name);
15
+ export const MULTI_LANG_BASE_COLUMNS = MULTI_LANGUAGE_BASE.map(({ name }) => name);
16
+ const FUNCTION_LAYOUT = {
17
+ table: 'Function',
18
+ columns: [
19
+ ...CODE_ELEMENT_BASE,
20
+ column('language', 'STRING'),
21
+ column('qualifiedName', 'STRING'),
22
+ column('moduleQualifiedName', 'STRING'),
23
+ column('visibility', 'STRING'),
24
+ column('visibilityModifier', 'STRING'),
25
+ column('isEntry', 'BOOLEAN', 'boolean', false),
26
+ column('isView', 'BOOLEAN', 'boolean', false),
27
+ column('isInline', 'BOOLEAN', 'boolean', false),
28
+ column('isNative', 'BOOLEAN', 'boolean', false),
29
+ column('parameterCount', 'INT32', 'number', 0),
30
+ column('returnType', 'STRING'),
31
+ column('acquires', 'STRING[]', 'string-array'),
32
+ column('usedTypes', 'STRING[]', 'string-array'),
33
+ column('attributes', 'STRING[]', 'string-array'),
34
+ column('attributesJson', 'STRING'),
35
+ column('typeParamsJson', 'STRING'),
36
+ column('locationFidelity', 'STRING'),
37
+ ],
38
+ };
39
+ const structLikeLayout = (table) => ({
40
+ table,
41
+ quoteTableName: true,
42
+ columns: [
43
+ ...MULTI_LANGUAGE_BASE,
44
+ column('language', 'STRING'),
45
+ column('qualifiedName', 'STRING'),
46
+ column('moduleQualifiedName', 'STRING'),
47
+ column('moduleAddress', 'STRING'),
48
+ column('abilities', 'STRING[]', 'string-array'),
49
+ column('isResource', 'BOOLEAN', 'boolean', false),
50
+ column('isEvent', 'BOOLEAN', 'boolean', false),
51
+ column('fieldList', 'STRING[]', 'string-array'),
52
+ column('attributes', 'STRING[]', 'string-array'),
53
+ column('attributesJson', 'STRING'),
54
+ column('typeParamsJson', 'STRING'),
55
+ column('moveDeclarationKind', 'STRING'),
56
+ column('locationFidelity', 'STRING'),
57
+ ],
58
+ });
59
+ const ENUM_VARIANT_LAYOUT = {
60
+ table: 'EnumVariant',
61
+ quoteTableName: true,
62
+ columns: [
63
+ ...MULTI_LANGUAGE_BASE,
64
+ column('language', 'STRING'),
65
+ column('qualifiedName', 'STRING'),
66
+ column('parentEnum', 'STRING'),
67
+ column('moduleQualifiedName', 'STRING'),
68
+ column('variantKind', 'STRING'),
69
+ column('fieldsJson', 'STRING'),
70
+ column('attributes', 'STRING[]', 'string-array'),
71
+ column('attributesJson', 'STRING'),
72
+ column('locationFidelity', 'STRING'),
73
+ ],
74
+ };
75
+ const CONST_LAYOUT = {
76
+ table: 'Const',
77
+ quoteTableName: true,
78
+ columns: [
79
+ ...MULTI_LANGUAGE_BASE,
80
+ column('language', 'STRING'),
81
+ column('qualifiedName', 'STRING'),
82
+ column('moduleQualifiedName', 'STRING'),
83
+ column('constType', 'STRING'),
84
+ column('constValue', 'STRING'),
85
+ column('isErrorCode', 'BOOLEAN', 'boolean', false),
86
+ column('locationFidelity', 'STRING'),
87
+ ],
88
+ };
89
+ const MODULE_LAYOUT = {
90
+ table: 'Module',
91
+ quoteTableName: true,
92
+ columns: [
93
+ ...MULTI_LANGUAGE_BASE,
94
+ column('language', 'STRING'),
95
+ column('qualifiedName', 'STRING'),
96
+ column('moduleAddress', 'STRING'),
97
+ column('attributes', 'STRING[]', 'string-array'),
98
+ column('attributesJson', 'STRING'),
99
+ column('locationFidelity', 'STRING'),
100
+ ],
101
+ };
102
+ export const NODE_TABLE_LAYOUTS = {
103
+ Function: FUNCTION_LAYOUT,
104
+ Struct: structLikeLayout('Struct'),
105
+ Enum: structLikeLayout('Enum'),
106
+ EnumVariant: ENUM_VARIANT_LAYOUT,
107
+ Const: CONST_LAYOUT,
108
+ Module: MODULE_LAYOUT,
109
+ };
110
+ export const hasNodeTableLayout = (table) => Object.hasOwn(NODE_TABLE_LAYOUTS, table);
111
+ export const getNodeTableLayout = (table) => NODE_TABLE_LAYOUTS[table];
112
+ export const getNodeTableColumnNames = (table) => hasNodeTableLayout(table) ? getNodeTableLayout(table).columns.map(({ name }) => name) : undefined;
113
+ export const getNodeTableCsvHeader = (table) => NODE_TABLE_LAYOUTS[table].columns.map(({ name }) => name).join(',');
114
+ export const buildNodeTableSchema = (table) => {
115
+ const layout = NODE_TABLE_LAYOUTS[table];
116
+ const tableName = layout.quoteTableName ? `\`${layout.table}\`` : layout.table;
117
+ const columns = layout.columns.map(({ name, ddlType }) => ` ${name} ${ddlType},`).join('\n');
118
+ return `\nCREATE NODE TABLE ${tableName} (\n${columns}\n PRIMARY KEY (id)\n)`;
119
+ };
@@ -15,6 +15,21 @@
15
15
  * from the same Database is the officially supported concurrency pattern.
16
16
  */
17
17
  import lbug from '@ladybugdb/core';
18
+ /** Filesystem identity used to detect an index rebuilt/mutated under a live
19
+ * read pool. `ino` catches a full-rebuild unlink+recreate or an atomic-rename
20
+ * swap; `mtimeMs`+`size` catch an in-place incremental writeback. */
21
+ interface DbIdentity {
22
+ ino: number;
23
+ mtimeMs: number;
24
+ size: number;
25
+ }
26
+ export declare function statDbIdentity(dbPath: string): Promise<DbIdentity | null>;
27
+ /** True only when both identities are known AND differ. A stat failure
28
+ * (ENOENT during the brief unlink window of a full rebuild) yields false, so
29
+ * the reader keeps serving its still-valid open inode until the NEW file
30
+ * appears with a different identity — avoiding a churn into a failed reopen
31
+ * mid-rebuild. */
32
+ export declare function dbIdentityChanged(prev: DbIdentity | null, next: DbIdentity | null): boolean;
18
33
  /**
19
34
  * Listeners notified when a pool entry is torn down (LRU eviction, idle
20
35
  * timeout, explicit close). Used by upper layers (e.g. the BM25 search
@@ -87,7 +102,14 @@ export declare function restoreStdout(): void;
87
102
  * Concurrent calls for the same repoId are deduplicated — the second caller
88
103
  * awaits the first's in-progress init rather than starting a redundant one.
89
104
  */
90
- export declare const initLbug: (repoId: string, dbPath: string) => Promise<void>;
105
+ /**
106
+ * Returns `true` when this call (re)opened a fresh handle onto the current
107
+ * on-disk file, `false` when it reused/served the existing handle (unchanged,
108
+ * or changed-but-a-query-is-in-flight). Callers that gate their own freshness
109
+ * bookkeeping on "did the pool actually roll over" (LocalBackend) use the
110
+ * return value; callers that only need the pool ready can ignore it.
111
+ */
112
+ export declare const initLbug: (repoId: string, dbPath: string) => Promise<boolean>;
91
113
  /**
92
114
  * Initialize a pool entry from a pre-existing Database object.
93
115
  *
@@ -16,10 +16,29 @@
16
16
  */
17
17
  import fs from 'fs/promises';
18
18
  import lbug from '@ladybugdb/core';
19
- import { isReadOnlyDbError, loadFTSExtension } from './lbug-adapter.js';
19
+ import { isReadOnlyDbError, loadFTSExtension, loadVectorExtension } from './lbug-adapter.js';
20
20
  import { closeQueryResults } from './query-result-utils.js';
21
21
  import { createLbugDatabase, isWalCorruptionError, toNativeSafePath, WAL_RECOVERY_SUGGESTION, } from './lbug-config.js';
22
- import { isMissingFsError, isMissingShadowSidecarError, isReadOnlyShadowReplayError, preflightLbugSidecars, quarantineWalForMissingShadow, renameFailureMessage, statIfExists, } from './sidecar-recovery.js';
22
+ import { guardWalQuarantine, isMissingFsError, isMissingShadowSidecarError, isReadOnlyShadowReplayError, preflightLbugSidecars, quarantineWalForMissingShadow, renameFailureMessage, statIfExists, } from './sidecar-recovery.js';
23
+ export async function statDbIdentity(dbPath) {
24
+ try {
25
+ const s = await fs.stat(dbPath);
26
+ return { ino: s.ino, mtimeMs: s.mtimeMs, size: s.size };
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /** True only when both identities are known AND differ. A stat failure
33
+ * (ENOENT during the brief unlink window of a full rebuild) yields false, so
34
+ * the reader keeps serving its still-valid open inode until the NEW file
35
+ * appears with a different identity — avoiding a churn into a failed reopen
36
+ * mid-rebuild. */
37
+ export function dbIdentityChanged(prev, next) {
38
+ if (!prev || !next)
39
+ return false;
40
+ return prev.ino !== next.ino || prev.mtimeMs !== next.mtimeMs || prev.size !== next.size;
41
+ }
23
42
  const pool = new Map();
24
43
  const poolCloseListeners = new Set();
25
44
  /**
@@ -244,6 +263,7 @@ function closeOne(repoId) {
244
263
  // for the same dbPath reuse it instead of hitting a file lock.
245
264
  shared.refCount = 0;
246
265
  shared.ftsLoaded = false;
266
+ shared.vectorLoaded = false;
247
267
  }
248
268
  else {
249
269
  shared.db.close().catch(() => { });
@@ -306,7 +326,16 @@ setInterval(() => {
306
326
  function createConnection(db) {
307
327
  silenceStdout();
308
328
  try {
309
- return new lbug.Connection(db);
329
+ const conn = new lbug.Connection(db);
330
+ // Bound a single query at the engine level so a pathological query cannot
331
+ // hang a pooled connection past the JS-side Promise.race guard (which frees
332
+ // the waiter but not the native call). Matches QUERY_TIMEOUT_MS. Guarded so
333
+ // test doubles that don't model the engine method don't break connection
334
+ // creation.
335
+ if (typeof conn.setQueryTimeout === 'function') {
336
+ conn.setQueryTimeout(QUERY_TIMEOUT_MS);
337
+ }
338
+ return conn;
310
339
  }
311
340
  finally {
312
341
  restoreStdout();
@@ -316,6 +345,8 @@ function createConnection(db) {
316
345
  const QUERY_TIMEOUT_MS = 30_000;
317
346
  /** Waiter queue timeout in milliseconds */
318
347
  const WAITER_TIMEOUT_MS = 15_000;
348
+ // Read-only open retry while `gitnexus analyze` writes. Catalogued as entry 4
349
+ // of the lbug-config retry-budget registry.
319
350
  const LOCK_RETRY_ATTEMPTS = 3;
320
351
  const LOCK_RETRY_DELAY_MS = 2000;
321
352
  const SHADOW_REPLAY_PROBE_QUERY = 'MATCH (n) RETURN n LIMIT 1';
@@ -349,6 +380,12 @@ const poolSidecarLogger = {
349
380
  * See plan: docs/plans/2026-05-21-001-fix-pr-1747-quarantine-enoent-and-large-wal-plan.md (U2)
350
381
  */
351
382
  async function tryQuarantineForMissingShadow(dbPath, opts) {
383
+ // Refuse (throw) before renaming a live WAL when the shadow is present on
384
+ // disk or the orphan WAL is too large — parity with the serve path's
385
+ // refuseLargeWalQuarantine (issue #2382 review, Finding B). Kept OUTSIDE the
386
+ // try so the actionable recovery message propagates to the MCP caller rather
387
+ // than being re-wrapped as a rename failure.
388
+ await guardWalQuarantine(dbPath, opts.reason, opts.err, poolSidecarLogger);
352
389
  try {
353
390
  const quarantinePath = await quarantineWalForMissingShadow(dbPath, {
354
391
  logger: poolSidecarLogger,
@@ -396,6 +433,7 @@ async function replayShadowPagesWithWritableOpen(dbPath) {
396
433
  if (isMissingShadowSidecarError(err)) {
397
434
  await tryQuarantineForMissingShadow(dbPath, {
398
435
  reason: 'pool writable replay recovery',
436
+ err,
399
437
  });
400
438
  return;
401
439
  }
@@ -429,6 +467,7 @@ async function openReadOnlyDatabase(dbPath) {
429
467
  db = undefined;
430
468
  await tryQuarantineForMissingShadow(dbPath, {
431
469
  reason: 'pool read-only recovery',
470
+ err,
432
471
  });
433
472
  await preflightLbugSidecars(dbPath, {
434
473
  mode: 'read-only',
@@ -494,18 +533,46 @@ const initPromises = new Map();
494
533
  * Concurrent calls for the same repoId are deduplicated — the second caller
495
534
  * awaits the first's in-progress init rather than starting a redundant one.
496
535
  */
536
+ /**
537
+ * Returns `true` when this call (re)opened a fresh handle onto the current
538
+ * on-disk file, `false` when it reused/served the existing handle (unchanged,
539
+ * or changed-but-a-query-is-in-flight). Callers that gate their own freshness
540
+ * bookkeeping on "did the pool actually roll over" (LocalBackend) use the
541
+ * return value; callers that only need the pool ready can ignore it.
542
+ */
497
543
  export const initLbug = async (repoId, dbPath) => {
498
544
  const existing = pool.get(repoId);
499
545
  if (existing) {
500
546
  existing.lastUsed = Date.now();
501
- return;
547
+ // Detect an index that `analyze` rebuilt or mutated under this live read
548
+ // pool. Without this, the pool keeps serving the old (POSIX:
549
+ // unlinked-but-open) inode until LRU/idle eviction — a stale-read window
550
+ // of up to IDLE_TIMEOUT_MS after analyze finishes.
551
+ const current = await statDbIdentity(dbPath);
552
+ if (!dbIdentityChanged(existing.dbIdentity, current))
553
+ return false; // unchanged → reuse
554
+ // A query is in flight on this entry; closing its connection (and the
555
+ // shared Database at refCount 0) mid-use is a native use-after-free. Serve
556
+ // the current handle for this dispatch — the next initLbug that finds the
557
+ // entry idle (checkedOut === 0) reopens, since the identity stays divergent
558
+ // until then. Under sustained overlapping queries `checkedOut` may never
559
+ // reach 0 and `lastUsed` keeps the idle timer from evicting, so this window
560
+ // is bounded by the load, not IDLE_TIMEOUT_MS — the data stays consistent
561
+ // (a complete older snapshot), just not the newest. Callers that route
562
+ // freshness THROUGH initLbug (rather than calling closeLbug directly) get
563
+ // this guard for free; that is why LocalBackend delegates here (#2614).
564
+ if (existing.checkedOut > 0)
565
+ return false;
566
+ closeOne(repoId); // idle & changed → evict, then fall through to reopen the new file
502
567
  }
503
568
  // Deduplicate concurrent init calls for the same repoId —
504
569
  // prevents double-init race when multiple parallel tool calls
505
570
  // trigger initialization for the same repo simultaneously.
506
571
  const pending = initPromises.get(repoId);
507
- if (pending)
508
- return pending;
572
+ if (pending) {
573
+ await pending;
574
+ return true;
575
+ }
509
576
  const promise = doInitLbug(repoId, dbPath);
510
577
  initPromises.set(repoId, promise);
511
578
  try {
@@ -514,6 +581,7 @@ export const initLbug = async (repoId, dbPath) => {
514
581
  finally {
515
582
  initPromises.delete(repoId);
516
583
  }
584
+ return true;
517
585
  };
518
586
  /**
519
587
  * Internal init — creates DB, pre-warms connections, loads FTS, then registers pool.
@@ -532,6 +600,21 @@ async function doInitLbug(repoId, dbPath) {
532
600
  // Reuse an existing native Database if another repoId already opened this path.
533
601
  // This prevents buffer manager exhaustion from multiple mmap regions on the same file.
534
602
  let shared = dbCache.get(dbPath);
603
+ if (shared && !shared.external && shared.dbIdentity) {
604
+ // #2614 F2: a cached read-only Database is keyed by dbPath and shared across
605
+ // pool consumers. If the on-disk index was rebuilt/swapped (new inode) while
606
+ // ANOTHER consumer still holds this handle (refCount kept it alive), reusing
607
+ // it serves a superseded index. Unreachable via the MCP backend (one
608
+ // consumer per lbugPath ⇒ refCount hits 0 ⇒ closeOne reopens fresh); a
609
+ // complete fix needs per-inode handles rather than a dbPath-keyed cache.
610
+ // Surface it so the corner is observable instead of silently stale.
611
+ const current = await statDbIdentity(dbPath);
612
+ if (dbIdentityChanged(shared.dbIdentity, current)) {
613
+ realStderrWrite(`GitNexus: reusing a shared read-only handle for ${dbPath} whose on-disk ` +
614
+ `index was rebuilt while another consumer holds it — results may be stale ` +
615
+ `until that consumer releases it.\n`);
616
+ }
617
+ }
535
618
  if (!shared) {
536
619
  // Open in read-only mode — MCP server never writes to the database.
537
620
  // This allows multiple MCP server instances to read concurrently, and
@@ -540,7 +623,7 @@ async function doInitLbug(repoId, dbPath) {
540
623
  for (let attempt = 1; attempt <= LOCK_RETRY_ATTEMPTS; attempt++) {
541
624
  try {
542
625
  const db = await openReadOnlyDatabase(dbPath);
543
- shared = { db, refCount: 0, ftsLoaded: false };
626
+ shared = { db, refCount: 0, ftsLoaded: false, dbIdentity: await statDbIdentity(dbPath) };
544
627
  dbCache.set(dbPath, shared);
545
628
  break;
546
629
  }
@@ -549,7 +632,12 @@ async function doInitLbug(repoId, dbPath) {
549
632
  if (isWalCorruptionError(lastError)) {
550
633
  try {
551
634
  const db = await tryQuarantineAndReopen(dbPath, repoId);
552
- shared = { db, refCount: 0, ftsLoaded: false };
635
+ shared = {
636
+ db,
637
+ refCount: 0,
638
+ ftsLoaded: false,
639
+ dbIdentity: await statDbIdentity(dbPath),
640
+ };
553
641
  dbCache.set(dbPath, shared);
554
642
  break;
555
643
  }
@@ -559,6 +647,7 @@ async function doInitLbug(repoId, dbPath) {
559
647
  }
560
648
  }
561
649
  if (lastError.message.startsWith('LadybugDB checkpoint sidecar is missing') ||
650
+ lastError.message.startsWith('LadybugDB checkpoint sidecar is present but unreachable') ||
562
651
  lastError.message.startsWith('GitNexus could not move the LadybugDB WAL sidecar') ||
563
652
  isMissingShadowSidecarError(lastError)) {
564
653
  throw lastError;
@@ -599,9 +688,19 @@ async function doInitLbug(repoId, dbPath) {
599
688
  if (!shared.ftsLoaded) {
600
689
  shared.ftsLoaded = await loadFTSExtension(available[0], { policy: 'load-only' });
601
690
  }
691
+ // VECTOR too — extension load scope is per-Database, so this one load
692
+ // makes QUERY_VECTOR_INDEX legal on every pooled connection. Same
693
+ // load-only contract as FTS above; on failure the semantic-query lane
694
+ // falls back to the exact scan with its own diagnostic (#2623 follow-up).
695
+ if (!shared.vectorLoaded) {
696
+ shared.vectorLoaded = await loadVectorExtension(available[0], { policy: 'load-only' });
697
+ }
602
698
  // Register pool entry only after all connections are pre-warmed and FTS is
603
699
  // loaded. Concurrent executeQuery calls see either "not initialized"
604
700
  // (and throw cleanly) or a fully ready pool — never a half-built one.
701
+ // Record the on-disk identity so a later initLbug can detect an analyze
702
+ // rebuild/mutation and re-open onto the new file (pool staleness invalidation).
703
+ const dbIdentity = await statDbIdentity(dbPath);
605
704
  pool.set(repoId, {
606
705
  db,
607
706
  available,
@@ -609,6 +708,7 @@ async function doInitLbug(repoId, dbPath) {
609
708
  waiters: [],
610
709
  lastUsed: Date.now(),
611
710
  dbPath,
711
+ dbIdentity,
612
712
  closed: false,
613
713
  });
614
714
  ensureIdleTimer();
@@ -657,6 +757,11 @@ export async function initLbugWithDb(repoId, existingDb, dbPath) {
657
757
  if (!shared.ftsLoaded) {
658
758
  shared.ftsLoaded = await loadFTSExtension(available[0], { policy: 'load-only' });
659
759
  }
760
+ // VECTOR too — same per-Database scope and load-only contract as the
761
+ // doInitLbug site above (#2623 follow-up).
762
+ if (!shared.vectorLoaded) {
763
+ shared.vectorLoaded = await loadVectorExtension(available[0], { policy: 'load-only' });
764
+ }
660
765
  pool.set(repoId, {
661
766
  db: existingDb,
662
767
  available,
@@ -664,6 +769,8 @@ export async function initLbugWithDb(repoId, existingDb, dbPath) {
664
769
  waiters: [],
665
770
  lastUsed: Date.now(),
666
771
  dbPath,
772
+ // Injected/external DB (tests) — not tracked for rebuild invalidation.
773
+ dbIdentity: null,
667
774
  closed: false,
668
775
  });
669
776
  ensureIdleTimer();
@@ -13,8 +13,8 @@ export { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME };
13
13
  export type { NodeTableName, RelType } from '../../_shared/index.js';
14
14
  export declare const FILE_SCHEMA = "\nCREATE NODE TABLE File (\n id STRING,\n name STRING,\n filePath STRING,\n content STRING,\n PRIMARY KEY (id)\n)";
15
15
  export declare const FOLDER_SCHEMA = "\nCREATE NODE TABLE Folder (\n id STRING,\n name STRING,\n filePath STRING,\n PRIMARY KEY (id)\n)";
16
- export declare const FUNCTION_SCHEMA = "\nCREATE NODE TABLE Function (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
17
- export declare const CLASS_SCHEMA = "\nCREATE NODE TABLE Class (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
16
+ export declare const FUNCTION_SCHEMA: string;
17
+ export declare const CLASS_SCHEMA = "\nCREATE NODE TABLE Class (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n frameworkAnnotations STRING[],\n PRIMARY KEY (id)\n)";
18
18
  export declare const INTERFACE_SCHEMA = "\nCREATE NODE TABLE Interface (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
19
19
  export declare const METHOD_SCHEMA = "\nCREATE NODE TABLE Method (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n parameterCount INT32,\n returnType STRING,\n PRIMARY KEY (id)\n)";
20
20
  export declare const CODE_ELEMENT_SCHEMA = "\nCREATE NODE TABLE CodeElement (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
@@ -22,6 +22,7 @@ export declare const COMMUNITY_SCHEMA = "\nCREATE NODE TABLE Community (\n id S
22
22
  export declare const PROCESS_SCHEMA = "\nCREATE NODE TABLE Process (\n id STRING,\n label STRING,\n heuristicLabel STRING,\n processType STRING,\n stepCount INT32,\n communities STRING[],\n entryPointId STRING,\n terminalId STRING,\n PRIMARY KEY (id)\n)";
23
23
  export declare const STRUCT_SCHEMA: string;
24
24
  export declare const ENUM_SCHEMA: string;
25
+ export declare const ENUM_VARIANT_SCHEMA: string;
25
26
  export declare const MACRO_SCHEMA: string;
26
27
  export declare const TYPEDEF_SCHEMA: string;
27
28
  export declare const UNION_SCHEMA: string;
@@ -43,7 +44,7 @@ export declare const ROUTE_SCHEMA = "\nCREATE NODE TABLE Route (\n id STRING,\n
43
44
  export declare const TOOL_SCHEMA = "\nCREATE NODE TABLE Tool (\n id STRING,\n name STRING,\n filePath STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
44
45
  export declare const SECTION_SCHEMA = "\nCREATE NODE TABLE Section (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n level INT64,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
45
46
  export declare const BASICBLOCK_SCHEMA = "\nCREATE NODE TABLE BasicBlock (\n id STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n text STRING,\n callees STRING,\n calleeIds STRING,\n PRIMARY KEY (id)\n)";
46
- export declare const RELATION_SCHEMA = "\nCREATE REL TABLE CodeRelation (\n FROM File TO File,\n FROM File TO Folder,\n FROM File TO Function,\n FROM File TO Class,\n FROM File TO Interface,\n FROM File TO Method,\n FROM File TO CodeElement,\n FROM File TO `Struct`,\n FROM File TO `Enum`,\n FROM File TO `Macro`,\n FROM File TO `Typedef`,\n FROM File TO `Union`,\n FROM File TO `Namespace`,\n FROM File TO `Trait`,\n FROM File TO `Impl`,\n FROM File TO `TypeAlias`,\n FROM File TO `Const`,\n FROM File TO `Static`,\n FROM File TO `Variable`,\n FROM File TO `Property`,\n FROM File TO `Record`,\n FROM File TO `Delegate`,\n FROM File TO `Annotation`,\n FROM File TO `Constructor`,\n FROM File TO `Template`,\n FROM File TO `Module`,\n FROM File TO Section,\n FROM Folder TO Folder,\n FROM Folder TO File,\n FROM Function TO Function,\n FROM Function TO Method,\n FROM Function TO Class,\n FROM Function TO Community,\n FROM Function TO `Macro`,\n FROM Function TO `Struct`,\n FROM Function TO `Template`,\n FROM Function TO `Enum`,\n FROM Function TO `Namespace`,\n FROM Function TO `TypeAlias`,\n FROM Function TO `Module`,\n FROM Function TO `Impl`,\n FROM Function TO Interface,\n FROM Function TO `Constructor`,\n FROM Function TO `Const`,\n FROM Function TO `Typedef`,\n FROM Function TO `Union`,\n FROM Function TO `Property`,\n FROM Function TO CodeElement,\n FROM Class TO Method,\n FROM Class TO Function,\n FROM Class TO Class,\n FROM Class TO Interface,\n FROM Class TO Community,\n FROM Class TO `Template`,\n FROM Class TO `TypeAlias`,\n FROM Class TO `Struct`,\n FROM Class TO `Enum`,\n FROM Class TO `Annotation`,\n FROM Class TO `Constructor`,\n FROM Class TO `Trait`,\n FROM Class TO `Macro`,\n FROM Class TO `Impl`,\n FROM Class TO `Union`,\n FROM Class TO `Namespace`,\n FROM Class TO `Typedef`,\n FROM Class TO `Property`,\n FROM Method TO Function,\n FROM Method TO Method,\n FROM Method TO Class,\n FROM Method TO Community,\n FROM Method TO `Template`,\n FROM Method TO `Struct`,\n FROM Method TO `TypeAlias`,\n FROM Method TO `Enum`,\n FROM Method TO `Macro`,\n FROM Method TO `Namespace`,\n FROM Method TO `Module`,\n FROM Method TO `Impl`,\n FROM Method TO Interface,\n FROM Method TO `Constructor`,\n FROM Method TO `Property`,\n FROM Method TO CodeElement,\n FROM `Template` TO `Template`,\n FROM `Template` TO Function,\n FROM `Template` TO Method,\n FROM `Template` TO Class,\n FROM `Template` TO `Struct`,\n FROM `Template` TO `TypeAlias`,\n FROM `Template` TO `Enum`,\n FROM `Template` TO `Macro`,\n FROM `Template` TO Interface,\n FROM `Template` TO `Constructor`,\n FROM `Module` TO `Module`,\n FROM Section TO Section,\n FROM Section TO File,\n FROM File TO Route,\n FROM Function TO Route,\n FROM Method TO Route,\n FROM File TO Tool,\n FROM Function TO Tool,\n FROM Method TO Tool,\n FROM CodeElement TO Community,\n FROM Interface TO Community,\n FROM Interface TO Function,\n FROM Interface TO Method,\n FROM Interface TO Class,\n FROM Interface TO Interface,\n FROM Interface TO `TypeAlias`,\n FROM Interface TO `Struct`,\n FROM Interface TO `Constructor`,\n FROM Interface TO `Property`,\n FROM `Struct` TO Community,\n FROM `Struct` TO `Trait`,\n FROM `Struct` TO `Struct`,\n FROM `Struct` TO Class,\n FROM `Struct` TO `Enum`,\n FROM `Struct` TO Function,\n FROM `Struct` TO Method,\n FROM `Struct` TO Interface,\n FROM `Struct` TO `Constructor`,\n FROM `Struct` TO `Property`,\n FROM `Enum` TO `Enum`,\n FROM `Enum` TO Community,\n FROM `Enum` TO Class,\n FROM `Enum` TO Interface,\n FROM `Macro` TO Community,\n FROM `Macro` TO Function,\n FROM `Macro` TO Method,\n FROM `Module` TO Function,\n FROM `Module` TO Method,\n FROM `Typedef` TO Community,\n FROM `Union` TO Community,\n FROM `Namespace` TO Community,\n FROM `Namespace` TO `Struct`,\n FROM `Trait` TO Method,\n FROM `Trait` TO `Constructor`,\n FROM `Trait` TO `Property`,\n FROM `Trait` TO Community,\n FROM `Impl` TO Method,\n FROM `Impl` TO `Constructor`,\n FROM `Impl` TO `Property`,\n FROM `Impl` TO Community,\n FROM `Impl` TO `Trait`,\n FROM `Impl` TO `Struct`,\n FROM `Impl` TO `Impl`,\n FROM `TypeAlias` TO Community,\n FROM `TypeAlias` TO `Trait`,\n FROM `TypeAlias` TO Class,\n FROM `Const` TO Community,\n FROM `Static` TO Community,\n FROM `Variable` TO Community,\n FROM `Property` TO Community,\n FROM `Record` TO Method,\n FROM `Record` TO `Constructor`,\n FROM `Record` TO `Property`,\n FROM `Record` TO Community,\n FROM `Delegate` TO Community,\n FROM `Annotation` TO Community,\n FROM `Constructor` TO Community,\n FROM `Constructor` TO Interface,\n FROM `Constructor` TO Class,\n FROM `Constructor` TO Method,\n FROM `Constructor` TO Function,\n FROM `Constructor` TO `Constructor`,\n FROM `Constructor` TO `Struct`,\n FROM `Constructor` TO `Macro`,\n FROM `Constructor` TO `Template`,\n FROM `Constructor` TO `TypeAlias`,\n FROM `Constructor` TO `Enum`,\n FROM `Constructor` TO `Annotation`,\n FROM `Constructor` TO `Impl`,\n FROM `Constructor` TO `Namespace`,\n FROM `Constructor` TO `Module`,\n FROM `Constructor` TO `Property`,\n FROM `Constructor` TO `Typedef`,\n FROM `Template` TO Community,\n FROM `Module` TO Community,\n FROM Function TO Process,\n FROM Method TO Process,\n FROM Class TO Process,\n FROM Interface TO Process,\n FROM `Struct` TO Process,\n FROM `Constructor` TO Process,\n FROM `Module` TO Process,\n FROM `Macro` TO Process,\n FROM `Impl` TO Process,\n FROM `Typedef` TO Process,\n FROM `TypeAlias` TO Process,\n FROM `Enum` TO Process,\n FROM `Union` TO Process,\n FROM `Namespace` TO Process,\n FROM `Trait` TO Process,\n FROM `Const` TO Process,\n FROM `Static` TO Process,\n FROM `Variable` TO Process,\n FROM `Property` TO Process,\n FROM `Record` TO Process,\n FROM `Delegate` TO Process,\n FROM `Annotation` TO Process,\n FROM `Template` TO Process,\n FROM CodeElement TO Process,\n FROM Route TO Process,\n FROM Tool TO Process,\n FROM BasicBlock TO BasicBlock,\n type STRING,\n confidence DOUBLE,\n reason STRING,\n step INT32\n)";
47
+ export declare const RELATION_SCHEMA = "\nCREATE REL TABLE CodeRelation (\n FROM File TO File,\n FROM File TO Folder,\n FROM File TO Function,\n FROM File TO Class,\n FROM File TO Interface,\n FROM File TO Method,\n FROM File TO CodeElement,\n FROM File TO `Struct`,\n FROM File TO `Enum`,\n FROM File TO `Macro`,\n FROM File TO `Typedef`,\n FROM File TO `Union`,\n FROM File TO `Namespace`,\n FROM File TO `Trait`,\n FROM File TO `Impl`,\n FROM File TO `TypeAlias`,\n FROM File TO `Const`,\n FROM File TO `Static`,\n FROM File TO `Variable`,\n FROM File TO `Property`,\n FROM File TO `Record`,\n FROM File TO `Delegate`,\n FROM File TO `Annotation`,\n FROM File TO `Constructor`,\n FROM File TO `Template`,\n FROM File TO `Module`,\n FROM File TO Section,\n FROM Folder TO Folder,\n FROM Folder TO File,\n FROM Function TO Function,\n FROM Function TO Method,\n FROM Function TO Class,\n FROM Function TO Community,\n FROM Function TO `Macro`,\n FROM Function TO `Struct`,\n FROM Function TO `Template`,\n FROM Function TO `Enum`,\n FROM Function TO `Namespace`,\n FROM Function TO `TypeAlias`,\n FROM Function TO `Module`,\n FROM Function TO `Impl`,\n FROM Function TO Interface,\n FROM Function TO `Constructor`,\n FROM Function TO `Const`,\n FROM Function TO `Typedef`,\n FROM Function TO `Union`,\n FROM Function TO `Property`,\n FROM Function TO CodeElement,\n FROM Class TO Method,\n FROM Class TO Function,\n FROM Class TO Class,\n FROM Class TO Interface,\n FROM Class TO Community,\n FROM Class TO `Template`,\n FROM Class TO `TypeAlias`,\n FROM Class TO `Struct`,\n FROM Class TO `Enum`,\n FROM Class TO `Annotation`,\n FROM Class TO `Constructor`,\n FROM Class TO `Trait`,\n FROM Class TO `Macro`,\n FROM Class TO `Impl`,\n FROM Class TO `Union`,\n FROM Class TO `Namespace`,\n FROM Class TO `Typedef`,\n FROM Class TO `Property`,\n FROM Method TO Function,\n FROM Method TO Method,\n FROM Method TO Class,\n FROM Method TO Community,\n FROM Method TO `Template`,\n FROM Method TO `Struct`,\n FROM Method TO `TypeAlias`,\n FROM Method TO `Enum`,\n FROM Method TO `Macro`,\n FROM Method TO `Namespace`,\n FROM Method TO `Module`,\n FROM Method TO `Impl`,\n FROM Method TO Interface,\n FROM Method TO `Constructor`,\n FROM Method TO `Property`,\n FROM Method TO CodeElement,\n FROM `Template` TO `Template`,\n FROM `Template` TO Function,\n FROM `Template` TO Method,\n FROM `Template` TO Class,\n FROM `Template` TO `Struct`,\n FROM `Template` TO `TypeAlias`,\n FROM `Template` TO `Enum`,\n FROM `Template` TO `Macro`,\n FROM `Template` TO Interface,\n FROM `Template` TO `Constructor`,\n FROM `Module` TO `Module`,\n FROM Section TO Section,\n FROM Section TO File,\n FROM File TO Route,\n FROM Function TO Route,\n FROM Method TO Route,\n FROM File TO Tool,\n FROM Function TO Tool,\n FROM Method TO Tool,\n FROM CodeElement TO Community,\n FROM Interface TO Community,\n FROM Interface TO Function,\n FROM Interface TO Method,\n FROM Interface TO Class,\n FROM Interface TO Interface,\n FROM Interface TO `TypeAlias`,\n FROM Interface TO `Struct`,\n FROM Interface TO `Constructor`,\n FROM Interface TO `Property`,\n FROM `Struct` TO Community,\n FROM `Struct` TO `Trait`,\n FROM `Struct` TO `Struct`,\n FROM `Struct` TO Class,\n FROM `Struct` TO `Enum`,\n FROM `Struct` TO Function,\n FROM `Struct` TO Method,\n FROM `Struct` TO Interface,\n FROM `Struct` TO `Constructor`,\n FROM `Struct` TO `Property`,\n FROM `Enum` TO `Enum`,\n FROM `Enum` TO Community,\n FROM `Enum` TO Class,\n FROM `Enum` TO Interface,\n FROM `Macro` TO Community,\n FROM `Macro` TO Function,\n FROM `Macro` TO Method,\n FROM `Module` TO Function,\n FROM `Module` TO Method,\n // Move/Aptos: module defines structs/enums/consts; enums contain variants.\n FROM `Module` TO `Struct`,\n FROM `Module` TO `Enum`,\n FROM `Module` TO `Const`,\n FROM `Enum` TO `EnumVariant`,\n FROM `Module` TO `EnumVariant`,\n FROM `Typedef` TO Community,\n FROM `Union` TO Community,\n FROM `Namespace` TO Community,\n FROM `Namespace` TO `Struct`,\n FROM `Trait` TO Method,\n FROM `Trait` TO `Constructor`,\n FROM `Trait` TO `Property`,\n FROM `Trait` TO Community,\n FROM `Impl` TO Method,\n FROM `Impl` TO `Constructor`,\n FROM `Impl` TO `Property`,\n FROM `Impl` TO Community,\n FROM `Impl` TO `Trait`,\n FROM `Impl` TO `Struct`,\n FROM `Impl` TO `Impl`,\n FROM `TypeAlias` TO Community,\n FROM `TypeAlias` TO `Trait`,\n FROM `TypeAlias` TO Class,\n FROM `Const` TO Community,\n FROM `Static` TO Community,\n FROM `Variable` TO Community,\n FROM `Property` TO Community,\n FROM `Property` TO `Property`,\n FROM `Record` TO Method,\n FROM `Record` TO `Constructor`,\n FROM `Record` TO `Property`,\n FROM `Record` TO Community,\n FROM `Delegate` TO Community,\n FROM `Annotation` TO Community,\n FROM `Constructor` TO Community,\n FROM `Constructor` TO Interface,\n FROM `Constructor` TO Class,\n FROM `Constructor` TO Method,\n FROM `Constructor` TO Function,\n FROM `Constructor` TO `Constructor`,\n FROM `Constructor` TO `Struct`,\n FROM `Constructor` TO `Macro`,\n FROM `Constructor` TO `Template`,\n FROM `Constructor` TO `TypeAlias`,\n FROM `Constructor` TO `Enum`,\n FROM `Constructor` TO `Annotation`,\n FROM `Constructor` TO `Impl`,\n FROM `Constructor` TO `Namespace`,\n FROM `Constructor` TO `Module`,\n FROM `Constructor` TO `Property`,\n FROM `Constructor` TO `Typedef`,\n FROM `Template` TO Community,\n FROM `Module` TO Community,\n FROM Function TO Process,\n FROM Method TO Process,\n FROM Class TO Process,\n FROM Interface TO Process,\n FROM `Struct` TO Process,\n FROM `Constructor` TO Process,\n FROM `Module` TO Process,\n FROM `Macro` TO Process,\n FROM `Impl` TO Process,\n FROM `Typedef` TO Process,\n FROM `TypeAlias` TO Process,\n FROM `Enum` TO Process,\n FROM `Union` TO Process,\n FROM `Namespace` TO Process,\n FROM `Trait` TO Process,\n FROM `Const` TO Process,\n FROM `Static` TO Process,\n FROM `Variable` TO Process,\n FROM `Property` TO Process,\n FROM `Record` TO Process,\n FROM `Delegate` TO Process,\n FROM `Annotation` TO Process,\n FROM `Template` TO Process,\n FROM CodeElement TO Process,\n FROM Route TO Process,\n FROM Tool TO Process,\n FROM BasicBlock TO BasicBlock,\n type STRING,\n confidence DOUBLE,\n reason STRING,\n step INT32\n)";
47
48
  export declare const EMBEDDING_DIMS: number;
48
49
  /** HNSW vector index name for the CodeEmbedding table. */
49
50
  export declare const EMBEDDING_INDEX_NAME = "code_embedding_idx";
@@ -10,6 +10,7 @@
10
10
  */
11
11
  // Import from shared package (single source of truth) — used in DDL templates below
12
12
  import { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME } from '../../_shared/index.js';
13
+ import { buildNodeTableSchema } from './node-table-layout.js';
13
14
  // Re-export so downstream consumers keep the same import path
14
15
  export { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME };
15
16
  // ============================================================================
@@ -30,18 +31,7 @@ CREATE NODE TABLE Folder (
30
31
  filePath STRING,
31
32
  PRIMARY KEY (id)
32
33
  )`;
33
- export const FUNCTION_SCHEMA = `
34
- CREATE NODE TABLE Function (
35
- id STRING,
36
- name STRING,
37
- filePath STRING,
38
- startLine INT64,
39
- endLine INT64,
40
- isExported BOOLEAN,
41
- content STRING,
42
- description STRING,
43
- PRIMARY KEY (id)
44
- )`;
34
+ export const FUNCTION_SCHEMA = buildNodeTableSchema('Function');
45
35
  export const CLASS_SCHEMA = `
46
36
  CREATE NODE TABLE Class (
47
37
  id STRING,
@@ -52,6 +42,7 @@ CREATE NODE TABLE Class (
52
42
  isExported BOOLEAN,
53
43
  content STRING,
54
44
  description STRING,
45
+ frameworkAnnotations STRING[],
55
46
  PRIMARY KEY (id)
56
47
  )`;
57
48
  export const INTERFACE_SCHEMA = `
@@ -138,8 +129,9 @@ CREATE NODE TABLE \`${name}\` (
138
129
  description STRING,
139
130
  PRIMARY KEY (id)
140
131
  )`;
141
- export const STRUCT_SCHEMA = CODE_ELEMENT_BASE('Struct');
142
- export const ENUM_SCHEMA = CODE_ELEMENT_BASE('Enum');
132
+ export const STRUCT_SCHEMA = buildNodeTableSchema('Struct');
133
+ export const ENUM_SCHEMA = buildNodeTableSchema('Enum');
134
+ export const ENUM_VARIANT_SCHEMA = buildNodeTableSchema('EnumVariant');
143
135
  export const MACRO_SCHEMA = CODE_ELEMENT_BASE('Macro');
144
136
  export const TYPEDEF_SCHEMA = CODE_ELEMENT_BASE('Typedef');
145
137
  export const UNION_SCHEMA = CODE_ELEMENT_BASE('Union');
@@ -147,7 +139,7 @@ export const NAMESPACE_SCHEMA = CODE_ELEMENT_BASE('Namespace');
147
139
  export const TRAIT_SCHEMA = CODE_ELEMENT_BASE('Trait');
148
140
  export const IMPL_SCHEMA = CODE_ELEMENT_BASE('Impl');
149
141
  export const TYPE_ALIAS_SCHEMA = CODE_ELEMENT_BASE('TypeAlias');
150
- export const CONST_SCHEMA = CODE_ELEMENT_BASE('Const');
142
+ export const CONST_SCHEMA = buildNodeTableSchema('Const');
151
143
  export const STATIC_SCHEMA = CODE_ELEMENT_BASE('Static');
152
144
  export const VARIABLE_SCHEMA = CODE_ELEMENT_BASE('Variable');
153
145
  export const PROPERTY_SCHEMA = `
@@ -167,7 +159,7 @@ export const DELEGATE_SCHEMA = CODE_ELEMENT_BASE('Delegate');
167
159
  export const ANNOTATION_SCHEMA = CODE_ELEMENT_BASE('Annotation');
168
160
  export const CONSTRUCTOR_SCHEMA = CODE_ELEMENT_BASE('Constructor');
169
161
  export const TEMPLATE_SCHEMA = CODE_ELEMENT_BASE('Template');
170
- export const MODULE_SCHEMA = CODE_ELEMENT_BASE('Module');
162
+ export const MODULE_SCHEMA = buildNodeTableSchema('Module');
171
163
  // API route endpoints (Next.js, Express, etc.)
172
164
  export const ROUTE_SCHEMA = `
173
165
  CREATE NODE TABLE Route (
@@ -357,6 +349,12 @@ CREATE REL TABLE ${REL_TABLE_NAME} (
357
349
  FROM \`Macro\` TO Method,
358
350
  FROM \`Module\` TO Function,
359
351
  FROM \`Module\` TO Method,
352
+ // Move/Aptos: module defines structs/enums/consts; enums contain variants.
353
+ FROM \`Module\` TO \`Struct\`,
354
+ FROM \`Module\` TO \`Enum\`,
355
+ FROM \`Module\` TO \`Const\`,
356
+ FROM \`Enum\` TO \`EnumVariant\`,
357
+ FROM \`Module\` TO \`EnumVariant\`,
360
358
  FROM \`Typedef\` TO Community,
361
359
  FROM \`Union\` TO Community,
362
360
  FROM \`Namespace\` TO Community,
@@ -379,6 +377,7 @@ CREATE REL TABLE ${REL_TABLE_NAME} (
379
377
  FROM \`Static\` TO Community,
380
378
  FROM \`Variable\` TO Community,
381
379
  FROM \`Property\` TO Community,
380
+ FROM \`Property\` TO \`Property\`,
382
381
  FROM \`Record\` TO Method,
383
382
  FROM \`Record\` TO \`Constructor\`,
384
383
  FROM \`Record\` TO \`Property\`,
@@ -488,6 +487,7 @@ export const NODE_SCHEMA_QUERIES = [
488
487
  // Multi-language support
489
488
  STRUCT_SCHEMA,
490
489
  ENUM_SCHEMA,
490
+ ENUM_VARIANT_SCHEMA,
491
491
  MACRO_SCHEMA,
492
492
  TYPEDEF_SCHEMA,
493
493
  UNION_SCHEMA,