gitnexus 1.6.8-rc.9 → 1.6.8

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 (430) hide show
  1. package/README.md +3 -3
  2. package/dist/_shared/graph/types.d.ts +31 -1
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/language-detection.d.ts.map +1 -1
  5. package/dist/_shared/language-detection.js +11 -1
  6. package/dist/_shared/language-detection.js.map +1 -1
  7. package/dist/_shared/lbug/schema-constants.d.ts +1 -1
  8. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  9. package/dist/_shared/lbug/schema-constants.js +6 -0
  10. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  11. package/dist/_shared/scope-resolution/parsed-file.d.ts +21 -0
  12. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  13. package/dist/_shared/scope-resolution/symbol-definition.d.ts +6 -0
  14. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  15. package/dist/cli/ai-context.d.ts +31 -1
  16. package/dist/cli/ai-context.js +18 -16
  17. package/dist/cli/analyze-config.js +11 -0
  18. package/dist/cli/analyze.d.ts +14 -0
  19. package/dist/cli/analyze.js +98 -0
  20. package/dist/cli/embedding-dims.d.ts +33 -0
  21. package/dist/cli/embedding-dims.js +39 -0
  22. package/dist/cli/eval-server.d.ts +8 -0
  23. package/dist/cli/eval-server.js +242 -2
  24. package/dist/cli/help-i18n.js +19 -0
  25. package/dist/cli/i18n/en.d.ts +15 -1
  26. package/dist/cli/i18n/en.js +15 -1
  27. package/dist/cli/i18n/resources.d.ts +29 -1
  28. package/dist/cli/i18n/zh-CN.d.ts +14 -0
  29. package/dist/cli/i18n/zh-CN.js +15 -1
  30. package/dist/cli/index.js +89 -1
  31. package/dist/cli/mcp.d.ts +6 -1
  32. package/dist/cli/mcp.js +26 -1
  33. package/dist/cli/optional-grammars.d.ts +6 -8
  34. package/dist/cli/optional-grammars.js +8 -11
  35. package/dist/cli/setup.d.ts +3 -1
  36. package/dist/cli/setup.js +67 -17
  37. package/dist/cli/skill-gen.js +2 -1
  38. package/dist/cli/tool.d.ts +19 -1
  39. package/dist/cli/tool.js +96 -3
  40. package/dist/core/embeddings/hf-env.d.ts +0 -66
  41. package/dist/core/embeddings/http-client.d.ts +7 -0
  42. package/dist/core/embeddings/http-client.js +5 -3
  43. package/dist/core/embeddings/server-mapping.d.ts +1 -1
  44. package/dist/core/embeddings/server-mapping.js +7 -3
  45. package/dist/core/graph/import-cycles.d.ts +10 -0
  46. package/dist/core/graph/import-cycles.js +103 -0
  47. package/dist/core/group/cross-impact.d.ts +2 -1
  48. package/dist/core/group/cross-impact.js +5 -1
  49. package/dist/core/group/extractors/grpc-patterns/proto.js +10 -6
  50. package/dist/core/group/extractors/http-patterns/kotlin.js +7 -7
  51. package/dist/core/group/extractors/http-route-extractor.d.ts +24 -0
  52. package/dist/core/group/extractors/http-route-extractor.js +22 -4
  53. package/dist/core/group/extractors/include-extractor.js +22 -13
  54. package/dist/core/group/sync.d.ts +27 -1
  55. package/dist/core/group/sync.js +0 -0
  56. package/dist/core/incremental/subgraph-extract.js +18 -1
  57. package/dist/core/ingestion/cfg/cfg-builder.d.ts +114 -0
  58. package/dist/core/ingestion/cfg/cfg-builder.js +196 -0
  59. package/dist/core/ingestion/cfg/collect.d.ts +51 -0
  60. package/dist/core/ingestion/cfg/collect.js +77 -0
  61. package/dist/core/ingestion/cfg/control-dependence.d.ts +58 -0
  62. package/dist/core/ingestion/cfg/control-dependence.js +182 -0
  63. package/dist/core/ingestion/cfg/control-flow-context.d.ts +106 -0
  64. package/dist/core/ingestion/cfg/control-flow-context.js +124 -0
  65. package/dist/core/ingestion/cfg/emit.d.ts +293 -0
  66. package/dist/core/ingestion/cfg/emit.js +646 -0
  67. package/dist/core/ingestion/cfg/post-dominators.d.ts +79 -0
  68. package/dist/core/ingestion/cfg/post-dominators.js +176 -0
  69. package/dist/core/ingestion/cfg/reaching-def-reason-codec.d.ts +106 -0
  70. package/dist/core/ingestion/cfg/reaching-def-reason-codec.js +133 -0
  71. package/dist/core/ingestion/cfg/reaching-defs-graph.d.ts +18 -0
  72. package/dist/core/ingestion/cfg/reaching-defs-graph.js +312 -0
  73. package/dist/core/ingestion/cfg/reaching-defs.d.ts +162 -0
  74. package/dist/core/ingestion/cfg/reaching-defs.js +785 -0
  75. package/dist/core/ingestion/cfg/synthetic-escape.d.ts +124 -0
  76. package/dist/core/ingestion/cfg/synthetic-escape.js +300 -0
  77. package/dist/core/ingestion/cfg/traversal-result.d.ts +20 -0
  78. package/dist/core/ingestion/cfg/traversal-result.js +2 -0
  79. package/dist/core/ingestion/cfg/types.d.ts +274 -0
  80. package/dist/core/ingestion/cfg/types.js +13 -0
  81. package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.d.ts +111 -0
  82. package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.js +541 -0
  83. package/dist/core/ingestion/cfg/visitors/c-cpp.d.ts +74 -0
  84. package/dist/core/ingestion/cfg/visitors/c-cpp.js +584 -0
  85. package/dist/core/ingestion/cfg/visitors/call-site-harvest.d.ts +195 -0
  86. package/dist/core/ingestion/cfg/visitors/call-site-harvest.js +350 -0
  87. package/dist/core/ingestion/cfg/visitors/csharp-harvest.d.ts +124 -0
  88. package/dist/core/ingestion/cfg/visitors/csharp-harvest.js +589 -0
  89. package/dist/core/ingestion/cfg/visitors/csharp.d.ts +87 -0
  90. package/dist/core/ingestion/cfg/visitors/csharp.js +867 -0
  91. package/dist/core/ingestion/cfg/visitors/dart-harvest.d.ts +278 -0
  92. package/dist/core/ingestion/cfg/visitors/dart-harvest.js +870 -0
  93. package/dist/core/ingestion/cfg/visitors/dart.d.ts +119 -0
  94. package/dist/core/ingestion/cfg/visitors/dart.js +836 -0
  95. package/dist/core/ingestion/cfg/visitors/go-harvest.d.ts +160 -0
  96. package/dist/core/ingestion/cfg/visitors/go-harvest.js +621 -0
  97. package/dist/core/ingestion/cfg/visitors/go.d.ts +108 -0
  98. package/dist/core/ingestion/cfg/visitors/go.js +638 -0
  99. package/dist/core/ingestion/cfg/visitors/java-harvest.d.ts +108 -0
  100. package/dist/core/ingestion/cfg/visitors/java-harvest.js +513 -0
  101. package/dist/core/ingestion/cfg/visitors/java.d.ts +101 -0
  102. package/dist/core/ingestion/cfg/visitors/java.js +812 -0
  103. package/dist/core/ingestion/cfg/visitors/kotlin-harvest.d.ts +253 -0
  104. package/dist/core/ingestion/cfg/visitors/kotlin-harvest.js +719 -0
  105. package/dist/core/ingestion/cfg/visitors/kotlin.d.ts +121 -0
  106. package/dist/core/ingestion/cfg/visitors/kotlin.js +809 -0
  107. package/dist/core/ingestion/cfg/visitors/php-harvest.d.ts +172 -0
  108. package/dist/core/ingestion/cfg/visitors/php-harvest.js +626 -0
  109. package/dist/core/ingestion/cfg/visitors/php.d.ts +96 -0
  110. package/dist/core/ingestion/cfg/visitors/php.js +721 -0
  111. package/dist/core/ingestion/cfg/visitors/python-harvest.d.ts +212 -0
  112. package/dist/core/ingestion/cfg/visitors/python-harvest.js +739 -0
  113. package/dist/core/ingestion/cfg/visitors/python.d.ts +103 -0
  114. package/dist/core/ingestion/cfg/visitors/python.js +558 -0
  115. package/dist/core/ingestion/cfg/visitors/ruby-harvest.d.ts +223 -0
  116. package/dist/core/ingestion/cfg/visitors/ruby-harvest.js +587 -0
  117. package/dist/core/ingestion/cfg/visitors/ruby.d.ts +112 -0
  118. package/dist/core/ingestion/cfg/visitors/ruby.js +756 -0
  119. package/dist/core/ingestion/cfg/visitors/rust-harvest.d.ts +324 -0
  120. package/dist/core/ingestion/cfg/visitors/rust-harvest.js +873 -0
  121. package/dist/core/ingestion/cfg/visitors/rust.d.ts +95 -0
  122. package/dist/core/ingestion/cfg/visitors/rust.js +558 -0
  123. package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.d.ts +87 -0
  124. package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.js +116 -0
  125. package/dist/core/ingestion/cfg/visitors/swift-harvest.d.ts +255 -0
  126. package/dist/core/ingestion/cfg/visitors/swift-harvest.js +679 -0
  127. package/dist/core/ingestion/cfg/visitors/swift.d.ts +116 -0
  128. package/dist/core/ingestion/cfg/visitors/swift.js +787 -0
  129. package/dist/core/ingestion/cfg/visitors/typescript-harvest.d.ts +149 -0
  130. package/dist/core/ingestion/cfg/visitors/typescript-harvest.js +1056 -0
  131. package/dist/core/ingestion/cfg/visitors/typescript.d.ts +66 -0
  132. package/dist/core/ingestion/cfg/visitors/typescript.js +583 -0
  133. package/dist/core/ingestion/import-resolvers/utils.js +2 -0
  134. package/dist/core/ingestion/language-provider.d.ts +11 -0
  135. package/dist/core/ingestion/languages/c-cpp.js +6 -1
  136. package/dist/core/ingestion/languages/cobol.js +4 -0
  137. package/dist/core/ingestion/languages/cpp/arity-metadata.js +41 -2
  138. package/dist/core/ingestion/languages/cpp/captures.js +50 -1
  139. package/dist/core/ingestion/languages/cpp/conversion-rank.d.ts +2 -0
  140. package/dist/core/ingestion/languages/cpp/conversion-rank.js +89 -0
  141. package/dist/core/ingestion/languages/cpp/header-scan.d.ts +1 -1
  142. package/dist/core/ingestion/languages/cpp/header-scan.js +2 -2
  143. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +7 -2
  144. package/dist/core/ingestion/languages/cpp/member-lookup.js +2 -1
  145. package/dist/core/ingestion/languages/cpp/query.js +23 -0
  146. package/dist/core/ingestion/languages/cpp/scope-resolver.js +2 -1
  147. package/dist/core/ingestion/languages/csharp.js +2 -0
  148. package/dist/core/ingestion/languages/dart.js +2 -0
  149. package/dist/core/ingestion/languages/go.js +2 -0
  150. package/dist/core/ingestion/languages/java.js +3 -0
  151. package/dist/core/ingestion/languages/kotlin/query.js +3 -2
  152. package/dist/core/ingestion/languages/kotlin.js +3 -0
  153. package/dist/core/ingestion/languages/php.js +2 -0
  154. package/dist/core/ingestion/languages/python.js +2 -0
  155. package/dist/core/ingestion/languages/ruby.js +2 -0
  156. package/dist/core/ingestion/languages/rust.js +2 -0
  157. package/dist/core/ingestion/languages/swift.js +2 -0
  158. package/dist/core/ingestion/languages/typescript.js +5 -0
  159. package/dist/core/ingestion/languages/vue.js +6 -0
  160. package/dist/core/ingestion/method-extractors/configs/c-cpp.js +6 -13
  161. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  162. package/dist/core/ingestion/method-types.d.ts +2 -0
  163. package/dist/core/ingestion/model/symbol-table.d.ts +1 -0
  164. package/dist/core/ingestion/model/symbol-table.js +1 -0
  165. package/dist/core/ingestion/mro-processor.js +109 -0
  166. package/dist/core/ingestion/parsing-processor.js +23 -0
  167. package/dist/core/ingestion/pipeline-phases/call-summaries.d.ts +26 -0
  168. package/dist/core/ingestion/pipeline-phases/call-summaries.js +46 -0
  169. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  170. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  171. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +0 -21
  172. package/dist/core/ingestion/pipeline-phases/parse-impl.js +18 -1
  173. package/dist/core/ingestion/pipeline-phases/routes.d.ts +10 -0
  174. package/dist/core/ingestion/pipeline-phases/routes.js +30 -1
  175. package/dist/core/ingestion/pipeline-phases/taint-summaries.d.ts +30 -0
  176. package/dist/core/ingestion/pipeline-phases/taint-summaries.js +81 -0
  177. package/dist/core/ingestion/pipeline.d.ts +92 -10
  178. package/dist/core/ingestion/pipeline.js +11 -2
  179. package/dist/core/ingestion/scope-extractor.js +12 -2
  180. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +9 -0
  181. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +75 -0
  182. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +67 -0
  183. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -2
  184. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +14 -2
  185. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +6 -1
  186. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +13 -1
  187. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +9 -1
  188. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +28 -2
  189. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +4 -0
  190. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +9 -0
  191. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +6 -1
  192. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +174 -40
  193. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +24 -0
  194. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +276 -190
  195. package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +43 -3
  196. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +75 -0
  197. package/dist/core/ingestion/scope-resolution/pipeline/run.js +349 -1
  198. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
  199. package/dist/core/ingestion/taint/call-summary-codec.d.ts +75 -0
  200. package/dist/core/ingestion/taint/call-summary-codec.js +128 -0
  201. package/dist/core/ingestion/taint/call-summary-emit.d.ts +43 -0
  202. package/dist/core/ingestion/taint/call-summary-emit.js +70 -0
  203. package/dist/core/ingestion/taint/call-summary-harvest.d.ts +77 -0
  204. package/dist/core/ingestion/taint/call-summary-harvest.js +179 -0
  205. package/dist/core/ingestion/taint/call-summary-model.d.ts +47 -0
  206. package/dist/core/ingestion/taint/call-summary-model.js +25 -0
  207. package/dist/core/ingestion/taint/emit.d.ts +125 -0
  208. package/dist/core/ingestion/taint/emit.js +208 -0
  209. package/dist/core/ingestion/taint/interproc-emit.d.ts +50 -0
  210. package/dist/core/ingestion/taint/interproc-emit.js +88 -0
  211. package/dist/core/ingestion/taint/interproc-solver.d.ts +110 -0
  212. package/dist/core/ingestion/taint/interproc-solver.js +312 -0
  213. package/dist/core/ingestion/taint/match.d.ts +153 -0
  214. package/dist/core/ingestion/taint/match.js +278 -0
  215. package/dist/core/ingestion/taint/path-codec.d.ts +134 -0
  216. package/dist/core/ingestion/taint/path-codec.js +190 -0
  217. package/dist/core/ingestion/taint/propagate.d.ts +216 -0
  218. package/dist/core/ingestion/taint/propagate.js +659 -0
  219. package/dist/core/ingestion/taint/site-safety.d.ts +29 -0
  220. package/dist/core/ingestion/taint/site-safety.js +98 -0
  221. package/dist/core/ingestion/taint/source-sink-config.d.ts +107 -23
  222. package/dist/core/ingestion/taint/source-sink-config.js +35 -12
  223. package/dist/core/ingestion/taint/source-sink-registry.d.ts +6 -4
  224. package/dist/core/ingestion/taint/source-sink-registry.js +6 -4
  225. package/dist/core/ingestion/taint/summary-harvest-driver.d.ts +80 -0
  226. package/dist/core/ingestion/taint/summary-harvest-driver.js +179 -0
  227. package/dist/core/ingestion/taint/summary-harvest.d.ts +89 -0
  228. package/dist/core/ingestion/taint/summary-harvest.js +537 -0
  229. package/dist/core/ingestion/taint/summary-model.d.ts +200 -0
  230. package/dist/core/ingestion/taint/summary-model.js +86 -0
  231. package/dist/core/ingestion/taint/typescript-model.d.ts +38 -0
  232. package/dist/core/ingestion/taint/typescript-model.js +102 -0
  233. package/dist/core/ingestion/type-extractors/c-cpp.js +21 -0
  234. package/dist/core/ingestion/utils/env.d.ts +7 -0
  235. package/dist/core/ingestion/utils/env.js +12 -0
  236. package/dist/core/ingestion/utils/method-props.js +1 -0
  237. package/dist/core/ingestion/workers/parse-worker.d.ts +13 -0
  238. package/dist/core/ingestion/workers/parse-worker.js +76 -17
  239. package/dist/core/ingestion/workers/worker-pool.d.ts +9 -40
  240. package/dist/core/ingestion/workers/worker-pool.js +15 -2
  241. package/dist/core/lbug/csv-generator.d.ts +51 -3
  242. package/dist/core/lbug/csv-generator.js +369 -255
  243. package/dist/core/lbug/lbug-adapter.d.ts +58 -18
  244. package/dist/core/lbug/lbug-adapter.js +346 -84
  245. package/dist/core/lbug/lbug-config.d.ts +19 -0
  246. package/dist/core/lbug/lbug-config.js +29 -0
  247. package/dist/core/lbug/pdg-emit-sink.d.ts +127 -0
  248. package/dist/core/lbug/pdg-emit-sink.js +358 -0
  249. package/dist/core/lbug/pool-adapter.d.ts +35 -0
  250. package/dist/core/lbug/pool-adapter.js +90 -1
  251. package/dist/core/lbug/rel-pair-routing.d.ts +54 -0
  252. package/dist/core/lbug/rel-pair-routing.js +140 -0
  253. package/dist/core/lbug/schema.d.ts +2 -2
  254. package/dist/core/lbug/schema.js +3 -0
  255. package/dist/core/logger.d.ts +0 -5
  256. package/dist/core/run-analyze.d.ts +96 -0
  257. package/dist/core/run-analyze.js +207 -3
  258. package/dist/core/tree-sitter/parser-loader.js +5 -4
  259. package/dist/core/tree-sitter/safe-parse.d.ts +0 -5
  260. package/dist/core/tree-sitter/vendored-grammars.d.ts +39 -0
  261. package/dist/core/tree-sitter/vendored-grammars.js +57 -0
  262. package/dist/core/wiki/generator.js +3 -1
  263. package/dist/core/wiki/graph-queries.d.ts +6 -0
  264. package/dist/core/wiki/graph-queries.js +9 -1
  265. package/dist/mcp/http-transport.d.ts +134 -0
  266. package/dist/mcp/http-transport.js +503 -0
  267. package/dist/mcp/local/local-backend.d.ts +110 -24
  268. package/dist/mcp/local/local-backend.js +1225 -19
  269. package/dist/mcp/local/pdg-impact.d.ts +384 -0
  270. package/dist/mcp/local/pdg-impact.js +1972 -0
  271. package/dist/mcp/resources.js +13 -1
  272. package/dist/mcp/tools.d.ts +12 -0
  273. package/dist/mcp/tools.js +214 -7
  274. package/dist/server/analyze-launch.d.ts +29 -0
  275. package/dist/server/analyze-launch.js +137 -0
  276. package/dist/server/analyze-upload.d.ts +33 -0
  277. package/dist/server/analyze-upload.js +123 -0
  278. package/dist/server/analyze-worker.d.ts +17 -1
  279. package/dist/server/api.d.ts +17 -0
  280. package/dist/server/api.js +132 -168
  281. package/dist/server/git-clone.d.ts +43 -2
  282. package/dist/server/git-clone.js +211 -16
  283. package/dist/server/mcp-http.d.ts +5 -6
  284. package/dist/server/mcp-http.js +9 -82
  285. package/dist/server/middleware.d.ts +40 -0
  286. package/dist/server/middleware.js +92 -0
  287. package/dist/server/private-ip.d.ts +1 -0
  288. package/dist/server/private-ip.js +15 -0
  289. package/dist/server/upload-ingest.d.ts +56 -0
  290. package/dist/server/upload-ingest.js +276 -0
  291. package/dist/server/upload-paths.d.ts +37 -0
  292. package/dist/server/upload-paths.js +57 -0
  293. package/dist/server/upload-sweep.d.ts +20 -0
  294. package/dist/server/upload-sweep.js +57 -0
  295. package/dist/storage/git.js +5 -8
  296. package/dist/storage/parse-cache.d.ts +22 -1
  297. package/dist/storage/parse-cache.js +41 -10
  298. package/dist/storage/repo-manager.d.ts +121 -10
  299. package/dist/storage/repo-manager.js +43 -5
  300. package/dist/types/pipeline.d.ts +9 -0
  301. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +110 -10
  302. package/hooks/claude/gitnexus-hook.cjs +110 -13
  303. package/hooks/claude/hook-db-lock-probe.cjs +513 -26
  304. package/package.json +8 -2
  305. package/scripts/assert-publish-grammar-coverage.cjs +31 -0
  306. package/scripts/build-tree-sitter-grammars.cjs +16 -10
  307. package/scripts/cross-platform-tests.ts +1 -0
  308. package/skills/gitnexus-debugging.md +16 -4
  309. package/skills/gitnexus-exploring.md +3 -3
  310. package/skills/gitnexus-guide.md +33 -0
  311. package/skills/gitnexus-pdg-query.md +89 -0
  312. package/skills/gitnexus-refactoring.md +1 -1
  313. package/skills/gitnexus-taint-analysis.md +178 -0
  314. package/vendor/tree-sitter-c/package.json +1 -1
  315. package/vendor/tree-sitter-dart/package.json +1 -1
  316. package/vendor/tree-sitter-kotlin/package.json +1 -1
  317. package/vendor/tree-sitter-proto/package.json +1 -1
  318. package/vendor/tree-sitter-swift/package.json +1 -1
  319. package/web/assets/{agent-CKPMqImC.js → agent-D3Xd7zZE.js} +123 -123
  320. package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +1 -0
  321. package/web/assets/architectureDiagram-UL44E2DR-ChH9xW-N.js +36 -0
  322. package/web/assets/{blockDiagram-7IZFK4PR-B4niSLvR.js → blockDiagram-7IZFK4PR-BkWhpzWB.js} +1 -1
  323. package/web/assets/{c4Diagram-Y2BXMSZH-DIzEXalR.js → c4Diagram-Y2BXMSZH-DtBvpzWD.js} +1 -1
  324. package/web/assets/{chunk-3SSMPTDK-BzGeeheI.js → chunk-3SSMPTDK-B4_etUhr.js} +2 -2
  325. package/web/assets/{chunk-5IMINLNL-CnTLsXIV.js → chunk-5IMINLNL-DOdTeQri.js} +1 -1
  326. package/web/assets/{chunk-5VCL7Z4A-w1BCx98Z.js → chunk-5VCL7Z4A-CQ-2dYWj.js} +1 -1
  327. package/web/assets/chunk-6764PJDD-DpIS7hxD.js +1 -0
  328. package/web/assets/{chunk-67TQ5CYL-CChC2cAv.js → chunk-67TQ5CYL-4sNPJU1q.js} +3 -3
  329. package/web/assets/{chunk-7W6UQGC5-CgFyfZ6k.js → chunk-7W6UQGC5-KyEG0HQg.js} +1 -1
  330. package/web/assets/{chunk-AZZRMDJM-5E9ARdDQ.js → chunk-AZZRMDJM-y-xJBuMz.js} +1 -1
  331. package/web/assets/{chunk-INKRHTLW-ELpfuk9h.js → chunk-INKRHTLW-Nu4ri9P-.js} +1 -1
  332. package/web/assets/{chunk-JQRUD6KW-Dcq_Qnyy.js → chunk-JQRUD6KW-Dbva2Z17.js} +1 -1
  333. package/web/assets/{chunk-KGFNY3KK-W-VR57xb.js → chunk-KGFNY3KK-JGMJvKCK.js} +1 -1
  334. package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +161 -0
  335. package/web/assets/{chunk-KNLZD3CH-BuZBOcso.js → chunk-KNLZD3CH-BGlP6X9R.js} +1 -1
  336. package/web/assets/{chunk-KRXBNO2N-DH2NPM7I.js → chunk-KRXBNO2N-BW5o0KUN.js} +1 -1
  337. package/web/assets/{chunk-LCXTWHL2-Dfmux4m1.js → chunk-LCXTWHL2-zoomRtWX.js} +1 -1
  338. package/web/assets/{chunk-LII3EMHJ-3X33tCpU.js → chunk-LII3EMHJ-D-jm-dLa.js} +1 -1
  339. package/web/assets/{chunk-QA3QBVWF-D5Ha3GgB.js → chunk-QA3QBVWF-BgRW3SXd.js} +1 -1
  340. package/web/assets/{chunk-RG4AUYOV-CAkzcoRj.js → chunk-RG4AUYOV-DD0B2N2B.js} +1 -1
  341. package/web/assets/{chunk-T2UQINTJ-kGYG7ppP.js → chunk-T2UQINTJ-DSBqkzH7.js} +1 -1
  342. package/web/assets/chunk-T5OCTHI4-DdZvN-9i.js +1 -0
  343. package/web/assets/{chunk-UY5QBCOK-Du-c56gs.js → chunk-UY5QBCOK-DyF0vyGd.js} +1 -1
  344. package/web/assets/{chunk-W44A43WB-lrCpuupA.js → chunk-W44A43WB-JqMLIpR0.js} +1 -1
  345. package/web/assets/{chunk-ZXARS5L4-CSZRiyOf.js → chunk-ZXARS5L4-CxN8oiwI.js} +1 -1
  346. package/web/assets/classDiagram-KGZ6W3CR-DJm9BgF-.js +1 -0
  347. package/web/assets/classDiagram-v2-72OJOZXJ-DJm9BgF-.js +1 -0
  348. package/web/assets/{context-builder-_HS0v2ma.js → context-builder-BHiFUA8O.js} +10 -2
  349. package/web/assets/{cose-bilkent-UX7MHV2Q-BHv2bbtl.js → cose-bilkent-UX7MHV2Q-D71wNYRJ.js} +1 -1
  350. package/web/assets/dagre-ND4H6XIP-BIkxmhcu.js +4 -0
  351. package/web/assets/diagram-3NCE3AQN-BTa6iH0T.js +43 -0
  352. package/web/assets/diagram-GF46GFSD-DZDV0vBj.js +24 -0
  353. package/web/assets/{diagram-HNR7UZ2L-fUWreZzx.js → diagram-HNR7UZ2L-DFCfd5LI.js} +2 -2
  354. package/web/assets/diagram-QXG6HAR7-BzM--Jj0.js +24 -0
  355. package/web/assets/diagram-WEQXMOUZ-DFFwz0k4.js +10 -0
  356. package/web/assets/{erDiagram-L5TCEMPS-QN2eEP1e.js → erDiagram-L5TCEMPS-CfHMJJqo.js} +1 -1
  357. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +1 -0
  358. package/web/assets/{flowDiagram-H6V6AXG4-CXbXImlN.js → flowDiagram-H6V6AXG4-Be805QiJ.js} +3 -3
  359. package/web/assets/{ganttDiagram-JCBTUEKG-BHQssTz6.js → ganttDiagram-JCBTUEKG-D3iL2Aet.js} +1 -1
  360. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +1 -0
  361. package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +106 -0
  362. package/web/assets/index-BvYev1UJ.js +635 -0
  363. package/web/assets/index-_lgn7hs5.css +2 -0
  364. package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +1 -0
  365. package/web/assets/infoDiagram-3YFTVSEB-Y7BKSoke.js +2 -0
  366. package/web/assets/{ishikawaDiagram-BNXS4ZKH-6LKOvBfp.js → ishikawaDiagram-BNXS4ZKH-CT4SHFuI.js} +1 -1
  367. package/web/assets/{journeyDiagram-M6C3CM3L-DNPYCpvq.js → journeyDiagram-M6C3CM3L-CvArszLo.js} +1 -1
  368. package/web/assets/{kanban-definition-75IXJCU3-DgDi9oJT.js → kanban-definition-75IXJCU3-C6yDxr7N.js} +3 -3
  369. package/web/assets/{katex-K3KEBU37-CrVLz8l7.js → katex-K3KEBU37-CTc5BslQ.js} +1 -1
  370. package/web/assets/{mindmap-definition-2TDM6QVE-CwR5sBB-.js → mindmap-definition-2TDM6QVE-BOc2WEne.js} +1 -1
  371. package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +1 -0
  372. package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +1 -0
  373. package/web/assets/{pieDiagram-CU6KROY3-By8g6f6B.js → pieDiagram-CU6KROY3-Cvc0f_Pd.js} +1 -1
  374. package/web/assets/{quadrantDiagram-VICAPDV7-bAm6Hi_5.js → quadrantDiagram-VICAPDV7-yXSZ2lLz.js} +1 -1
  375. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +1 -0
  376. package/web/assets/{requirementDiagram-JXO7QTGE-7oDcJ1_J.js → requirementDiagram-JXO7QTGE-BRcZvHs4.js} +1 -1
  377. package/web/assets/{sankeyDiagram-URQDO5SZ-LFJz53u5.js → sankeyDiagram-URQDO5SZ-1qEjlFIB.js} +1 -1
  378. package/web/assets/{sequenceDiagram-VS2MUI6T-FySeKCUy.js → sequenceDiagram-VS2MUI6T-PcSCuvrB.js} +3 -3
  379. package/web/assets/stateDiagram-7D4R322I-D6qYSV1E.js +1 -0
  380. package/web/assets/stateDiagram-v2-36443NZ5-Bg-ImOSX.js +1 -0
  381. package/web/assets/{timeline-definition-O6YCAMPW-Ds2CnVZK.js → timeline-definition-O6YCAMPW-QWkh01xw.js} +1 -1
  382. package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +1 -0
  383. package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +1 -0
  384. package/web/assets/{vennDiagram-MWXL3ELB-DUIEwXWp.js → vennDiagram-MWXL3ELB-ak4DfwuM.js} +3 -3
  385. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +1 -0
  386. package/web/assets/{wardleyDiagram-CUQ6CDDI-DEiFPQih.js → wardleyDiagram-CUQ6CDDI-CTzR4Loq.js} +1 -1
  387. package/web/assets/{xychartDiagram-N2JHSOCM-BUbayhST.js → xychartDiagram-N2JHSOCM-DA1BEaQz.js} +1 -1
  388. package/web/index.html +13 -15
  389. package/scripts/materialize-vendor-grammars.cjs +0 -97
  390. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BETj2x4g.js +0 -1
  391. package/web/assets/architectureDiagram-UL44E2DR-D1EXI0zA.js +0 -36
  392. package/web/assets/chunk-2T2R6R2M-n6s9JZqv.js +0 -4
  393. package/web/assets/chunk-2UTLFMKG-CMBB1TMN.js +0 -1
  394. package/web/assets/chunk-4R4BOZG6-mKhL59ul.js +0 -159
  395. package/web/assets/chunk-6764PJDD-ChwMM2z4.js +0 -1
  396. package/web/assets/chunk-7J6CGLKN-DT-b53FT.js +0 -10
  397. package/web/assets/chunk-C62D2QBJ-CDAWj26E.js +0 -1
  398. package/web/assets/chunk-CEXFNPSA-D68Tk6ls.js +0 -1
  399. package/web/assets/chunk-CilyBKbf.js +0 -1
  400. package/web/assets/chunk-J5EP6P6S-DxWW0yvu.js +0 -1
  401. package/web/assets/chunk-KGYTTC2M-C6PHeuay.js +0 -1
  402. package/web/assets/chunk-RERM46MO-DQNbXtfw.js +0 -1
  403. package/web/assets/chunk-RKZBBQEN-BmTPLSyv.js +0 -1
  404. package/web/assets/chunk-RLI5ZMPA-DExu2DOK.js +0 -1
  405. package/web/assets/chunk-T5OCTHI4--9wWpVws.js +0 -1
  406. package/web/assets/chunk-UP6H54XL-DsKdC6jC.js +0 -1
  407. package/web/assets/chunk-UXSXWOXI-DR81EqLr.js +0 -1
  408. package/web/assets/classDiagram-KGZ6W3CR-Bv93af_b.js +0 -1
  409. package/web/assets/classDiagram-v2-72OJOZXJ-CLfEqHUa.js +0 -1
  410. package/web/assets/dagre-ND4H6XIP-DsIr9MOv.js +0 -4
  411. package/web/assets/diagram-3NCE3AQN-BqAtKUpW.js +0 -43
  412. package/web/assets/diagram-GF46GFSD-CaBG6n6o.js +0 -24
  413. package/web/assets/diagram-QXG6HAR7-CZ-O3rcV.js +0 -24
  414. package/web/assets/diagram-WEQXMOUZ-P4lSL4GH.js +0 -10
  415. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-B3myHUst.js +0 -1
  416. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DF3rtf4A.js +0 -1
  417. package/web/assets/gitGraphDiagram-S2ZK5IYY-CCwVLT__.js +0 -106
  418. package/web/assets/index-BKWA-m7o.css +0 -2
  419. package/web/assets/index-CG6q8eTs.js +0 -626
  420. package/web/assets/info-J43DQDTF-KCYPFFUO-R4XV_akJ.js +0 -1
  421. package/web/assets/infoDiagram-3YFTVSEB-DmLICZx1.js +0 -2
  422. package/web/assets/packet-YPE3B663-LP52Z2RK-CgQPdNZa.js +0 -1
  423. package/web/assets/pie-LRSECV5Y-TCRJHUBD-BzWOwc_c.js +0 -1
  424. package/web/assets/radar-GUYGQ44K-RDLRG3WG-B7KG0FN7.js +0 -1
  425. package/web/assets/stateDiagram-7D4R322I-CB2nABwH.js +0 -1
  426. package/web/assets/stateDiagram-v2-36443NZ5-COBGd2RL.js +0 -1
  427. package/web/assets/treeView-BLDUP644-QA4HXRO3-CRSxEwLO.js +0 -1
  428. package/web/assets/treemap-LRROVOQU-LLAWBHMP-a0PfKoVn.js +0 -1
  429. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-BKQ6e5mC.js +0 -1
  430. /package/web/assets/{chunk-AQ6EADP3-CCFje6lL.js → chunk-AQ6EADP3-CZhslHi-.js} +0 -0
@@ -2,6 +2,7 @@ import Parser from 'tree-sitter';
2
2
  import { createRequire } from 'node:module';
3
3
  import { SupportedLanguages } from '../../_shared/index.js';
4
4
  import { logger } from '../logger.js';
5
+ import { requireVendoredGrammar } from './vendored-grammars.js';
5
6
  const _require = createRequire(import.meta.url);
6
7
  const ISSUES_URL = 'https://github.com/abhigyanpatwari/GitNexus/issues';
7
8
  const SOURCES = {
@@ -71,7 +72,7 @@ const SOURCES = {
71
72
  // user-opt-out grammar like Swift/Dart/Kotlin: a failure here is always an
72
73
  // install/platform problem the user needs to see.
73
74
  [SupportedLanguages.C]: {
74
- load: () => _require('tree-sitter-c'),
75
+ load: () => requireVendoredGrammar('tree-sitter-c'),
75
76
  optional: true,
76
77
  severity: 'error',
77
78
  unavailableNote: 'C parsing disabled: vendored `tree-sitter-c` (under ' +
@@ -85,7 +86,7 @@ const SOURCES = {
85
86
  // optionalDependencies — may be absent on platforms without prebuilds
86
87
  // or when users skip optional installs.
87
88
  [SupportedLanguages.Swift]: {
88
- load: () => _require('tree-sitter-swift'),
89
+ load: () => requireVendoredGrammar('tree-sitter-swift'),
89
90
  optional: true,
90
91
  userSkippable: true,
91
92
  unavailableNote: 'Swift parsing disabled: vendored `tree-sitter-swift` (under ' +
@@ -94,7 +95,7 @@ const SOURCES = {
94
95
  `See ${ISSUES_URL}/1130.`,
95
96
  },
96
97
  [SupportedLanguages.Dart]: {
97
- load: () => _require('tree-sitter-dart'),
98
+ load: () => requireVendoredGrammar('tree-sitter-dart'),
98
99
  optional: true,
99
100
  userSkippable: true,
100
101
  unavailableNote: 'Dart parsing disabled: vendored `tree-sitter-dart` (under ' +
@@ -103,7 +104,7 @@ const SOURCES = {
103
104
  `See ${ISSUES_URL}/1125.`,
104
105
  },
105
106
  [SupportedLanguages.Kotlin]: {
106
- load: () => _require('tree-sitter-kotlin'),
107
+ load: () => requireVendoredGrammar('tree-sitter-kotlin'),
107
108
  optional: true,
108
109
  userSkippable: true,
109
110
  unavailableNote: 'Kotlin parsing disabled: vendored `tree-sitter-kotlin` (under ' +
@@ -24,11 +24,6 @@ export declare class ParseTimeoutError extends Error {
24
24
  * run). Safe to call at any time.
25
25
  */
26
26
  export declare function resetDegradedParseCounter(): void;
27
- /**
28
- * @internal Test-only alias for {@link resetDegradedParseCounter}, kept so the
29
- * existing `safe-parse.test.ts` import keeps working. Prefer the public name.
30
- */
31
- export declare function _resetDegradedParseCounter(): void;
32
27
  /**
33
28
  * True when the parsed tree contains any ERROR or MISSING node — i.e. the
34
29
  * source did not parse cleanly and tree-sitter applied error recovery.
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Absolute path to the vendored grammar tree (`<pkg>/vendor`).
3
+ *
4
+ * This module compiles to `<pkg>/dist/core/tree-sitter/vendored-grammars.js`
5
+ * and runs from `<pkg>/src/core/tree-sitter/...` under tsx in dev — both sit
6
+ * three directories below the package root, and the build (`tsc`) never bundles,
7
+ * so `import.meta.url` resolves the same way in both. `vendor/` ships in the
8
+ * published package via package.json `files`.
9
+ */
10
+ export declare const VENDOR_ROOT: string;
11
+ /**
12
+ * The tree-sitter grammars GitNexus vendors inside its own package (NOT npm
13
+ * dependencies). Kept in one place so consumers (runtime loaders, the CLI
14
+ * availability probe, and the test grammar-introspection helper) agree on which
15
+ * grammars resolve from `vendor/` rather than `node_modules`.
16
+ */
17
+ export declare const VENDORED_GRAMMAR_PACKAGES: ReadonlySet<string>;
18
+ /** Absolute directory of a vendored grammar package under `vendor/`. */
19
+ export declare const vendoredGrammarDir: (packageName: string) => string;
20
+ /**
21
+ * Load a vendored tree-sitter grammar by its absolute path under `vendor/`.
22
+ *
23
+ * GitNexus vendors five grammars (c/dart/proto/swift/kotlin) inside its own
24
+ * package under `vendor/`, each shipping committed per-platform prebuilds. They
25
+ * are deliberately NOT npm dependencies and must NEVER be copied into
26
+ * `node_modules`: an undeclared package under `node_modules` is "extraneous" to
27
+ * every subsequent `npm`/`npx` arborist reify, which prunes or relocates it.
28
+ * That is the root cause of #2111 / #1728 — on Windows the relocation throws
29
+ * `EPERM: operation not permitted, symlink` (errno -4048) during the npx-cache
30
+ * reify Antigravity triggers when it launches the MCP server, and on every OS
31
+ * the second run silently deletes the materialized grammars.
32
+ *
33
+ * Resolving the grammar by absolute path runs its own `bindings/node` entry,
34
+ * which calls `node-gyp-build(<grammarDir>)` and loads
35
+ * `vendor/<name>/prebuilds/<platform>-<arch>/…` directly — no build, no write,
36
+ * no `node_modules` copy. (`node-gyp-build` itself IS an npm dependency and
37
+ * resolves normally from the grammar directory.)
38
+ */
39
+ export declare const requireVendoredGrammar: (packageName: string) => unknown;
@@ -0,0 +1,57 @@
1
+ import { createRequire } from 'node:module';
2
+ import { fileURLToPath } from 'node:url';
3
+ import path from 'node:path';
4
+ const _require = createRequire(import.meta.url);
5
+ /**
6
+ * Absolute path to the vendored grammar tree (`<pkg>/vendor`).
7
+ *
8
+ * This module compiles to `<pkg>/dist/core/tree-sitter/vendored-grammars.js`
9
+ * and runs from `<pkg>/src/core/tree-sitter/...` under tsx in dev — both sit
10
+ * three directories below the package root, and the build (`tsc`) never bundles,
11
+ * so `import.meta.url` resolves the same way in both. `vendor/` ships in the
12
+ * published package via package.json `files`.
13
+ */
14
+ export const VENDOR_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..', 'vendor');
15
+ /**
16
+ * The tree-sitter grammars GitNexus vendors inside its own package (NOT npm
17
+ * dependencies). Kept in one place so consumers (runtime loaders, the CLI
18
+ * availability probe, and the test grammar-introspection helper) agree on which
19
+ * grammars resolve from `vendor/` rather than `node_modules`.
20
+ */
21
+ export const VENDORED_GRAMMAR_PACKAGES = new Set([
22
+ 'tree-sitter-c',
23
+ 'tree-sitter-dart',
24
+ 'tree-sitter-proto',
25
+ 'tree-sitter-swift',
26
+ 'tree-sitter-kotlin',
27
+ ]);
28
+ /** Absolute directory of a vendored grammar package under `vendor/`. */
29
+ export const vendoredGrammarDir = (packageName) => path.join(VENDOR_ROOT, packageName);
30
+ /**
31
+ * Load a vendored tree-sitter grammar by its absolute path under `vendor/`.
32
+ *
33
+ * GitNexus vendors five grammars (c/dart/proto/swift/kotlin) inside its own
34
+ * package under `vendor/`, each shipping committed per-platform prebuilds. They
35
+ * are deliberately NOT npm dependencies and must NEVER be copied into
36
+ * `node_modules`: an undeclared package under `node_modules` is "extraneous" to
37
+ * every subsequent `npm`/`npx` arborist reify, which prunes or relocates it.
38
+ * That is the root cause of #2111 / #1728 — on Windows the relocation throws
39
+ * `EPERM: operation not permitted, symlink` (errno -4048) during the npx-cache
40
+ * reify Antigravity triggers when it launches the MCP server, and on every OS
41
+ * the second run silently deletes the materialized grammars.
42
+ *
43
+ * Resolving the grammar by absolute path runs its own `bindings/node` entry,
44
+ * which calls `node-gyp-build(<grammarDir>)` and loads
45
+ * `vendor/<name>/prebuilds/<platform>-<arch>/…` directly — no build, no write,
46
+ * no `node_modules` copy. (`node-gyp-build` itself IS an npm dependency and
47
+ * resolves normally from the grammar directory.)
48
+ */
49
+ export const requireVendoredGrammar = (packageName) => {
50
+ // Fail loudly on a name that isn't actually vendored — a typo or a list that
51
+ // drifted out of sync (VENDORED_GRAMMAR_PACKAGES vs the CLI probe vs the build
52
+ // registry) would otherwise surface as a confusing absolute-path require miss.
53
+ if (!VENDORED_GRAMMAR_PACKAGES.has(packageName)) {
54
+ throw new Error(`'${packageName}' is not a vendored grammar (expected one of: ${[...VENDORED_GRAMMAR_PACKAGES].join(', ')}).`);
55
+ }
56
+ return _require(vendoredGrammarDir(packageName));
57
+ };
@@ -12,7 +12,7 @@
12
12
  import fs from 'fs/promises';
13
13
  import path from 'path';
14
14
  import { execSync, execFileSync } from 'child_process';
15
- import { initWikiDb, closeWikiDb, touchWikiDb, getFilesWithExports, getAllFiles, getIntraModuleCallEdges, getInterModuleCallEdges, getProcessesForFiles, getAllProcesses, getInterModuleEdgesForOverview, } from './graph-queries.js';
15
+ import { initWikiDb, closeWikiDb, touchWikiDb, pinWikiDb, getFilesWithExports, getAllFiles, getIntraModuleCallEdges, getInterModuleCallEdges, getProcessesForFiles, getAllProcesses, getInterModuleEdgesForOverview, } from './graph-queries.js';
16
16
  import { generateHTMLViewer } from './html-viewer.js';
17
17
  import { sanitizeMermaidMarkdown } from './mermaid-sanitizer.js';
18
18
  import { callLLM, estimateTokens, } from './llm-client.js';
@@ -183,6 +183,7 @@ export class WikiGenerator {
183
183
  }
184
184
  // Init graph
185
185
  this.onProgress('init', 2, 'Connecting to knowledge graph...');
186
+ const releaseWikiDbPin = pinWikiDb();
186
187
  await initWikiDb(this.lbugPath);
187
188
  let result;
188
189
  try {
@@ -201,6 +202,7 @@ export class WikiGenerator {
201
202
  }
202
203
  }
203
204
  finally {
205
+ releaseWikiDbPin();
204
206
  await closeWikiDb();
205
207
  }
206
208
  // Always generate the HTML viewer after wiki content changes
@@ -8,6 +8,12 @@
8
8
  * Touch the wiki DB connection to prevent idle timeout during long LLM calls.
9
9
  */
10
10
  export declare function touchWikiDb(): void;
11
+ /**
12
+ * Keep the wiki DB resident for a full generation run. Wiki generation can spend
13
+ * minutes inside LLM calls, and the pooled DB must survive both idle cleanup and
14
+ * unrelated LRU pressure until the run reaches its final graph queries.
15
+ */
16
+ export declare function pinWikiDb(): () => void;
11
17
  export interface FileWithExports {
12
18
  filePath: string;
13
19
  symbols: Array<{
@@ -4,7 +4,7 @@
4
4
  * Encapsulated Cypher queries against the GitNexus knowledge graph.
5
5
  * Uses the MCP-style pooled lbug-adapter for connection management.
6
6
  */
7
- import { initLbug, executeQuery, closeLbug, touchRepo } from '../lbug/pool-adapter.js';
7
+ import { initLbug, executeQuery, closeLbug, touchRepo, pinRepo } from '../lbug/pool-adapter.js';
8
8
  const REPO_ID = '__wiki__';
9
9
  /**
10
10
  * Touch the wiki DB connection to prevent idle timeout during long LLM calls.
@@ -12,6 +12,14 @@ const REPO_ID = '__wiki__';
12
12
  export function touchWikiDb() {
13
13
  touchRepo(REPO_ID);
14
14
  }
15
+ /**
16
+ * Keep the wiki DB resident for a full generation run. Wiki generation can spend
17
+ * minutes inside LLM calls, and the pooled DB must survive both idle cleanup and
18
+ * unrelated LRU pressure until the run reaches its final graph queries.
19
+ */
20
+ export function pinWikiDb() {
21
+ return pinRepo(REPO_ID);
22
+ }
15
23
  /**
16
24
  * Initialize the LadybugDB connection for wiki generation.
17
25
  */
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Dedicated MCP HTTP server.
3
+ *
4
+ * Provides HTTP-based MCP transport supporting:
5
+ * - Modern Streamable HTTP: POST /mcp
6
+ * - Legacy SSE transport: GET /sse + POST /messages
7
+ *
8
+ * Started via `gitnexus mcp --http`.
9
+ * stdio remains the default mode for `gitnexus mcp` (no breaking change).
10
+ *
11
+ * Exports createStreamableHttpHandler and createSseHandlers so that
12
+ * server/mcp-http.ts (web-UI route mount) can reuse them without inverting
13
+ * the established server/ → mcp/ dependency direction.
14
+ *
15
+ * Security considerations:
16
+ * - Default binds to 127.0.0.1 (loopback only).
17
+ * - Use --auth-token to enable Bearer Token authentication.
18
+ * - Use --host 0.0.0.0 to expose to all interfaces (requires --auth-token — refuses to start otherwise).
19
+ * - CORS is restricted to loopback origins when no auth token is configured.
20
+ * - PNA (Private Network Access) header is emitted only in response to browser preflight requests.
21
+ */
22
+ import type { Server as HttpServer } from 'http';
23
+ import { type Request, type Response, type NextFunction } from 'express';
24
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
25
+ import type { LocalBackend } from './local/local-backend.js';
26
+ /** HTTP server configuration options. */
27
+ export interface McpHttpOptions {
28
+ /** Listening port. */
29
+ port: number;
30
+ /** Bind address (default: 127.0.0.1). */
31
+ host: string;
32
+ /** Bearer auth token (optional; no auth when omitted). */
33
+ authToken?: string;
34
+ }
35
+ /**
36
+ * Creates a Bearer Token authentication middleware.
37
+ *
38
+ * - When authToken is not set, all requests pass through.
39
+ * - When authToken is set, checks the Authorization: Bearer <token> header.
40
+ * - Uses constant-time comparison to prevent timing oracle attacks.
41
+ * - Returns a JSON-RPC formatted 401 on failure.
42
+ */
43
+ export declare function createAuthMiddleware(authToken?: string): (req: Request, res: Response, next: NextFunction) => void;
44
+ /**
45
+ * Returns true when an Origin should be allowed by the no-auth (loopback-only)
46
+ * CORS policy — i.e. it is absent (non-browser caller) or a loopback origin.
47
+ *
48
+ * WHATWG URL keeps the brackets on IPv6 literals
49
+ * (`new URL('http://[::1]/').hostname === '[::1]'`) and canonicalizes the
50
+ * IPv4-mapped loopback to `[::ffff:7f00:1]`; loopback IPv4 is the whole
51
+ * 127.0.0.0/8 block — so all of those forms are matched explicitly.
52
+ */
53
+ export declare function isLoopbackOrigin(origin: string | undefined): boolean;
54
+ /** True for the exact loopback bind addresses. */
55
+ export declare function isLoopbackHost(host: string): boolean;
56
+ /** True for any-interface wildcard binds, whose externally-used Host is unknowable. */
57
+ export declare function isWildcardHost(host: string): boolean;
58
+ /**
59
+ * Computes the SDK DNS-rebinding `allowedHosts` list (a Host-header allowlist) for a
60
+ * bind host/port, or `undefined` when protection should stay off.
61
+ *
62
+ * Wildcard binds (`0.0.0.0` / `::`) return `undefined` — the Host a client
63
+ * legitimately uses is unknowable, so the bearer token (required for non-loopback
64
+ * binds) is the control. Loopback binds allow all three loopback host forms
65
+ * (bare + `:port`); a specific host (e.g. `192.168.1.50`) allows that host
66
+ * (bare + `:port`), which is knowable and a free defence-in-depth win.
67
+ */
68
+ export declare function computeAllowedHosts(host: string, port: number): string[] | undefined;
69
+ /**
70
+ * Resolves the MCP HTTP bearer token from the `--auth-token` flag or the
71
+ * `GITNEXUS_MCP_AUTH_TOKEN` env var (the flag wins). An empty or whitespace-only
72
+ * value is treated as "no token" so a blank env var cannot silently disable auth
73
+ * (and slip past the non-loopback hard-fail).
74
+ */
75
+ export declare function resolveAuthToken(optToken: string | undefined, env: NodeJS.ProcessEnv): string | undefined;
76
+ /**
77
+ * Starts a periodic sweep that closes and evicts sessions idle longer than
78
+ * `ttlMs`, returning the (unref'd) timer. Shared by both transport factories to
79
+ * guard against network drops where the per-session onclose never fires.
80
+ */
81
+ export declare function startIdleSweep<T extends {
82
+ server: Server;
83
+ lastActivity: number;
84
+ }>(sessions: Map<string, T>, ttlMs: number, intervalMs: number): NodeJS.Timeout;
85
+ /**
86
+ * Creates a reusable StreamableHTTP request handler.
87
+ *
88
+ * Encapsulates the session map and request-dispatch logic as an independent
89
+ * factory, reused by both startMcpHttpServer (POST /mcp) and the web-UI server
90
+ * route mount in server/mcp-http.ts (/api/mcp).
91
+ */
92
+ export declare function createStreamableHttpHandler(backend: LocalBackend, opts?: {
93
+ createServer?: () => Server;
94
+ host?: string;
95
+ port?: number;
96
+ }): {
97
+ handler: (req: Request, res: Response) => Promise<void>;
98
+ cleanup: () => Promise<void>;
99
+ };
100
+ /**
101
+ * Creates legacy SSE transport handlers.
102
+ *
103
+ * GET /sse (or custom path) establishes the SSE stream;
104
+ * POST /messages (or custom path) receives client JSON-RPC messages.
105
+ *
106
+ * Includes the same idle-TTL eviction as createStreamableHttpHandler to prevent
107
+ * memory leaks when clients drop without closing the SSE connection cleanly.
108
+ *
109
+ * @param backend LocalBackend instance
110
+ * @param messagesPath Path clients POST messages to (default: '/messages')
111
+ */
112
+ export declare function createSseHandlers(backend: LocalBackend, messagesPath?: string, opts?: {
113
+ maxSessions?: number;
114
+ host?: string;
115
+ port?: number;
116
+ }): {
117
+ sseHandler: (req: Request, res: Response) => Promise<void>;
118
+ messageHandler: (req: Request, res: Response) => Promise<void>;
119
+ cleanup: () => Promise<void>;
120
+ };
121
+ /**
122
+ * Creates and starts the dedicated MCP HTTP server.
123
+ *
124
+ * Mounts the following routes:
125
+ * - GET /health — health check (no auth required; for orchestrators/probes)
126
+ * - POST /mcp — Streamable HTTP (modern clients)
127
+ * - GET /sse — legacy SSE stream (old clients)
128
+ * - POST /messages — legacy SSE message endpoint
129
+ *
130
+ * @param backend LocalBackend instance
131
+ * @param options Server configuration
132
+ * @returns The listening http.Server
133
+ */
134
+ export declare function startMcpHttpServer(backend: LocalBackend, options: McpHttpOptions): Promise<HttpServer>;