gitnexus 1.6.11-rc.4 → 1.6.11-rc.41

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 (434) hide show
  1. package/README.md +81 -23
  2. package/dist/_shared/graph/types.d.ts +53 -2
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/impact-risk.d.ts +37 -0
  5. package/dist/_shared/impact-risk.d.ts.map +1 -0
  6. package/dist/_shared/impact-risk.js +92 -0
  7. package/dist/_shared/impact-risk.js.map +1 -0
  8. package/dist/_shared/index.d.ts +2 -0
  9. package/dist/_shared/index.d.ts.map +1 -1
  10. package/dist/_shared/index.js +2 -0
  11. package/dist/_shared/index.js.map +1 -1
  12. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  13. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  14. package/dist/_shared/lbug/schema-constants.js +4 -0
  15. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  16. package/dist/cli/ai-context.d.ts +4 -0
  17. package/dist/cli/ai-context.js +92 -16
  18. package/dist/cli/analyze-config.d.ts +2 -0
  19. package/dist/cli/analyze-config.js +30 -0
  20. package/dist/cli/analyze-options.d.ts +16 -0
  21. package/dist/cli/analyze-watch.d.ts +20 -0
  22. package/dist/cli/analyze-watch.js +380 -0
  23. package/dist/cli/analyze.d.ts +17 -0
  24. package/dist/cli/analyze.js +58 -7
  25. package/dist/cli/auto-sync.d.ts +1 -0
  26. package/dist/cli/auto-sync.js +107 -0
  27. package/dist/cli/detect-changes-format.js +21 -0
  28. package/dist/cli/eval-server.js +22 -5
  29. package/dist/cli/group.js +7 -1
  30. package/dist/cli/help-i18n.js +4 -0
  31. package/dist/cli/i18n/en.d.ts +18 -2
  32. package/dist/cli/i18n/en.js +18 -2
  33. package/dist/cli/i18n/resources.d.ts +34 -2
  34. package/dist/cli/i18n/zh-CN.d.ts +16 -0
  35. package/dist/cli/i18n/zh-CN.js +18 -2
  36. package/dist/cli/index.js +25 -4
  37. package/dist/cli/setup.js +37 -10
  38. package/dist/cli/status.js +91 -6
  39. package/dist/cli/watch-queue.d.ts +41 -0
  40. package/dist/cli/watch-queue.js +184 -0
  41. package/dist/cli/watch.d.ts +1 -0
  42. package/dist/cli/watch.js +6 -0
  43. package/dist/config/ignore-service.d.ts +11 -0
  44. package/dist/config/ignore-service.js +41 -4
  45. package/dist/config/repo-control-file.d.ts +3 -0
  46. package/dist/config/repo-control-file.js +115 -0
  47. package/dist/core/analysis-feature-registry.d.ts +2 -0
  48. package/dist/core/analysis-feature-registry.js +15 -0
  49. package/dist/core/analyzer-identity.js +21 -3
  50. package/dist/core/auto-sync/analysis-worker-launch.d.ts +30 -0
  51. package/dist/core/auto-sync/analysis-worker-launch.js +166 -0
  52. package/dist/core/auto-sync/config.d.ts +33 -0
  53. package/dist/core/auto-sync/config.js +320 -0
  54. package/dist/core/auto-sync/index.d.ts +6 -0
  55. package/dist/core/auto-sync/index.js +6 -0
  56. package/dist/core/auto-sync/path-security.d.ts +9 -0
  57. package/dist/core/auto-sync/path-security.js +251 -0
  58. package/dist/core/auto-sync/repo.d.ts +1 -0
  59. package/dist/core/auto-sync/repo.js +6 -0
  60. package/dist/core/auto-sync/runner.d.ts +44 -0
  61. package/dist/core/auto-sync/runner.js +428 -0
  62. package/dist/core/auto-sync/starter.d.ts +50 -0
  63. package/dist/core/auto-sync/starter.js +497 -0
  64. package/dist/core/auto-sync/state.d.ts +37 -0
  65. package/dist/core/auto-sync/state.js +119 -0
  66. package/dist/core/group/config-parser.js +8 -1
  67. package/dist/core/group/cross-impact.d.ts +5 -1
  68. package/dist/core/group/cross-impact.js +59 -6
  69. package/dist/core/group/extractors/http-patterns/java.js +22 -8
  70. package/dist/core/group/extractors/http-patterns/kotlin.js +86 -31
  71. package/dist/core/group/extractors/http-patterns/node.js +145 -8
  72. package/dist/core/group/extractors/http-patterns/python.js +11 -7
  73. package/dist/core/group/extractors/http-route-extractor.js +63 -17
  74. package/dist/core/group/extractors/java-workspace-extractor.js +244 -31
  75. package/dist/core/group/group-lock.js +5 -6
  76. package/dist/core/group/normalization.d.ts +38 -1
  77. package/dist/core/group/normalization.js +59 -3
  78. package/dist/core/group/service.d.ts +11 -0
  79. package/dist/core/group/service.js +13 -1
  80. package/dist/core/group/sync.d.ts +24 -1
  81. package/dist/core/group/sync.js +46 -8
  82. package/dist/core/group/types.d.ts +25 -1
  83. package/dist/core/incremental/derived-writeback.d.ts +36 -0
  84. package/dist/core/incremental/derived-writeback.js +68 -0
  85. package/dist/core/incremental/spring-config-drift.d.ts +12 -0
  86. package/dist/core/incremental/spring-config-drift.js +46 -0
  87. package/dist/core/incremental/subgraph-extract.d.ts +7 -4
  88. package/dist/core/incremental/subgraph-extract.js +30 -5
  89. package/dist/core/index-content-drift.d.ts +54 -0
  90. package/dist/core/index-content-drift.js +127 -0
  91. package/dist/core/ingestion/asyncapi/document.d.ts +226 -0
  92. package/dist/core/ingestion/asyncapi/document.js +758 -0
  93. package/dist/core/ingestion/asyncapi/protocol.d.ts +79 -0
  94. package/dist/core/ingestion/asyncapi/protocol.js +203 -0
  95. package/dist/core/ingestion/call-processor.js +3 -1
  96. package/dist/core/ingestion/destination-key.d.ts +59 -0
  97. package/dist/core/ingestion/destination-key.js +61 -0
  98. package/dist/core/ingestion/entry-point-scoring.d.ts +6 -2
  99. package/dist/core/ingestion/entry-point-scoring.js +8 -44
  100. package/dist/core/ingestion/filesystem-walker.d.ts +15 -5
  101. package/dist/core/ingestion/filesystem-walker.js +20 -3
  102. package/dist/core/ingestion/frameworks/spring/actuator-runtime.d.ts +26 -0
  103. package/dist/core/ingestion/frameworks/spring/actuator-runtime.js +843 -0
  104. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +5 -0
  105. package/dist/core/ingestion/frameworks/spring/analysis-features.js +9 -0
  106. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +8 -1
  107. package/dist/core/ingestion/frameworks/spring/argument-facts.d.ts +80 -0
  108. package/dist/core/ingestion/frameworks/spring/argument-facts.js +85 -0
  109. package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +1 -0
  110. package/dist/core/ingestion/frameworks/spring/config-bindings.js +2 -1
  111. package/dist/core/ingestion/frameworks/spring/destinations.d.ts +539 -0
  112. package/dist/core/ingestion/frameworks/spring/destinations.js +840 -0
  113. package/dist/core/ingestion/frameworks/spring/dynamic-lookups.d.ts +22 -0
  114. package/dist/core/ingestion/frameworks/spring/dynamic-lookups.js +124 -0
  115. package/dist/core/ingestion/frameworks/spring/message-producers.d.ts +78 -0
  116. package/dist/core/ingestion/frameworks/spring/message-producers.js +90 -0
  117. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +29 -0
  118. package/dist/core/ingestion/frameworks/spring/vendor-prefixes.d.ts +7 -0
  119. package/dist/core/ingestion/frameworks/spring/vendor-prefixes.js +22 -0
  120. package/dist/core/ingestion/language-provider.d.ts +143 -1
  121. package/dist/core/ingestion/language-provider.js +22 -0
  122. package/dist/core/ingestion/languages/csharp/razor-view-components.d.ts +62 -0
  123. package/dist/core/ingestion/languages/csharp/razor-view-components.js +954 -0
  124. package/dist/core/ingestion/languages/csharp/resolution-config.d.ts +3 -0
  125. package/dist/core/ingestion/languages/csharp/resolution-config.js +6 -1
  126. package/dist/core/ingestion/languages/csharp/scope-resolver.js +8 -0
  127. package/dist/core/ingestion/languages/java/analysis-features.d.ts +1 -1
  128. package/dist/core/ingestion/languages/java/analysis-features.js +14 -6
  129. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +8 -0
  130. package/dist/core/ingestion/languages/java/capture-side-channel.js +34 -0
  131. package/dist/core/ingestion/languages/java/captures.js +22 -1
  132. package/dist/core/ingestion/languages/java/lombok-synthesizer.d.ts +42 -0
  133. package/dist/core/ingestion/languages/java/lombok-synthesizer.js +439 -0
  134. package/dist/core/ingestion/languages/java/scope-resolver.js +2 -0
  135. package/dist/core/ingestion/languages/java/spring-actuator.d.ts +2 -0
  136. package/dist/core/ingestion/languages/java/spring-actuator.js +62 -0
  137. package/dist/core/ingestion/languages/java/spring-di.d.ts +17 -1
  138. package/dist/core/ingestion/languages/java/spring-di.js +44 -2
  139. package/dist/core/ingestion/languages/java/spring-dynamic-lookup.d.ts +8 -0
  140. package/dist/core/ingestion/languages/java/spring-dynamic-lookup.js +62 -0
  141. package/dist/core/ingestion/languages/java/spring-message-producers.d.ts +20 -0
  142. package/dist/core/ingestion/languages/java/spring-message-producers.js +83 -0
  143. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +11 -1
  144. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +13 -3
  145. package/dist/core/ingestion/languages/java.js +18 -8
  146. package/dist/core/ingestion/languages/jvm/accessor-synthesis.d.ts +99 -0
  147. package/dist/core/ingestion/languages/jvm/accessor-synthesis.js +173 -0
  148. package/dist/core/ingestion/languages/jvm/beanspec.d.ts +17 -0
  149. package/dist/core/ingestion/languages/jvm/beanspec.js +42 -0
  150. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  151. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +50 -0
  152. package/dist/core/ingestion/languages/kotlin/captures.js +24 -1
  153. package/dist/core/ingestion/languages/kotlin/lombok-synthesizer.d.ts +26 -0
  154. package/dist/core/ingestion/languages/kotlin/lombok-synthesizer.js +417 -0
  155. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +4 -0
  156. package/dist/core/ingestion/languages/kotlin/spring-actuator.d.ts +4 -0
  157. package/dist/core/ingestion/languages/kotlin/spring-actuator.js +172 -0
  158. package/dist/core/ingestion/languages/kotlin/spring-config-bindings.d.ts +18 -0
  159. package/dist/core/ingestion/languages/kotlin/spring-config-bindings.js +411 -0
  160. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +51 -1
  161. package/dist/core/ingestion/languages/kotlin/spring-di.js +86 -6
  162. package/dist/core/ingestion/languages/kotlin/spring-dynamic-lookup.d.ts +8 -0
  163. package/dist/core/ingestion/languages/kotlin/spring-dynamic-lookup.js +77 -0
  164. package/dist/core/ingestion/languages/kotlin/spring-message-producers.d.ts +17 -0
  165. package/dist/core/ingestion/languages/kotlin/spring-message-producers.js +119 -0
  166. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +16 -0
  167. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +77 -2
  168. package/dist/core/ingestion/languages/kotlin.js +24 -0
  169. package/dist/core/ingestion/languages/python.js +2 -0
  170. package/dist/core/ingestion/model/field-registry.d.ts +3 -3
  171. package/dist/core/ingestion/model/field-registry.js +11 -7
  172. package/dist/core/ingestion/model/method-registry.d.ts +3 -3
  173. package/dist/core/ingestion/model/method-registry.js +13 -8
  174. package/dist/core/ingestion/model/registration-table.js +3 -0
  175. package/dist/core/ingestion/model/type-registry.js +8 -4
  176. package/dist/core/ingestion/pipeline-phases/di.js +47 -14
  177. package/dist/core/ingestion/pipeline-phases/index.d.ts +1 -0
  178. package/dist/core/ingestion/pipeline-phases/index.js +1 -0
  179. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +7 -1
  180. package/dist/core/ingestion/pipeline-phases/parse-impl.js +83 -91
  181. package/dist/core/ingestion/pipeline-phases/parse.d.ts +19 -0
  182. package/dist/core/ingestion/pipeline-phases/processes.d.ts +2 -1
  183. package/dist/core/ingestion/pipeline-phases/processes.js +39 -4
  184. package/dist/core/ingestion/pipeline-phases/routes.js +27 -18
  185. package/dist/core/ingestion/pipeline-phases/runner.d.ts +4 -1
  186. package/dist/core/ingestion/pipeline-phases/runner.js +34 -14
  187. package/dist/core/ingestion/pipeline-phases/scan.js +106 -13
  188. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +2 -0
  189. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +8 -0
  190. package/dist/core/ingestion/pipeline-phases/spring-destinations.d.ts +123 -0
  191. package/dist/core/ingestion/pipeline-phases/spring-destinations.js +688 -0
  192. package/dist/core/ingestion/pipeline.d.ts +30 -1
  193. package/dist/core/ingestion/pipeline.js +52 -14
  194. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +16 -0
  195. package/dist/core/ingestion/route-extractors/constant-resolver.js +10 -0
  196. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +27 -1
  197. package/dist/core/ingestion/route-extractors/java-const-resolver.js +161 -13
  198. package/dist/core/ingestion/route-extractors/kotlin-const-resolver.d.ts +12 -18
  199. package/dist/core/ingestion/route-extractors/kotlin-const-resolver.js +214 -33
  200. package/dist/core/ingestion/route-extractors/kotlin-spring.d.ts +13 -0
  201. package/dist/core/ingestion/route-extractors/kotlin-spring.js +259 -0
  202. package/dist/core/ingestion/route-extractors/python-decorator-handler.d.ts +6 -0
  203. package/dist/core/ingestion/route-extractors/python-decorator-handler.js +16 -0
  204. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +30 -1
  205. package/dist/core/ingestion/route-extractors/spring-shared.js +77 -9
  206. package/dist/core/ingestion/route-extractors/spring.js +9 -5
  207. package/dist/core/ingestion/scope-extractor.js +1 -0
  208. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +28 -0
  209. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +11 -1
  210. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +26 -6
  211. package/dist/core/ingestion/scope-resolution/pipeline/run.js +5 -2
  212. package/dist/core/ingestion/utils/ast-helpers.d.ts +16 -0
  213. package/dist/core/ingestion/utils/ast-helpers.js +18 -0
  214. package/dist/core/ingestion/utils/test-file-path.d.ts +28 -0
  215. package/dist/core/ingestion/utils/test-file-path.js +87 -0
  216. package/dist/core/ingestion/workers/parse-worker.js +39 -3
  217. package/dist/core/lbug/csv-generator.d.ts +9 -0
  218. package/dist/core/lbug/csv-generator.js +87 -21
  219. package/dist/core/lbug/graph-emit-sink.d.ts +3 -2
  220. package/dist/core/lbug/graph-emit-sink.js +4 -2
  221. package/dist/core/lbug/lbug-adapter.d.ts +100 -5
  222. package/dist/core/lbug/lbug-adapter.js +229 -21
  223. package/dist/core/lbug/schema.d.ts +3 -2
  224. package/dist/core/lbug/schema.js +79 -15
  225. package/dist/core/run-analyze.d.ts +27 -0
  226. package/dist/core/run-analyze.js +374 -36
  227. package/dist/core/search/fts-indexes.d.ts +19 -1
  228. package/dist/core/search/fts-indexes.js +28 -1
  229. package/dist/mcp/local/local-backend.d.ts +27 -13
  230. package/dist/mcp/local/local-backend.js +218 -104
  231. package/dist/mcp/repository-policy.d.ts +5 -1
  232. package/dist/mcp/repository-policy.js +48 -4
  233. package/dist/mcp/resources.js +10 -1
  234. package/dist/mcp/server.js +6 -5
  235. package/dist/mcp/tools.js +35 -23
  236. package/dist/server/analyze-launch.d.ts +2 -0
  237. package/dist/server/analyze-launch.js +2 -0
  238. package/dist/server/analyze-worker-protocol.d.ts +6 -1
  239. package/dist/server/analyze-worker.d.ts +1 -0
  240. package/dist/server/analyze-worker.js +38 -20
  241. package/dist/server/api.d.ts +4 -0
  242. package/dist/server/api.js +98 -70
  243. package/dist/server/git-clone.d.ts +39 -10
  244. package/dist/server/git-clone.js +254 -56
  245. package/dist/server/grep-params.d.ts +18 -0
  246. package/dist/server/grep-params.js +83 -0
  247. package/dist/server/grep-scan.d.ts +23 -0
  248. package/dist/server/grep-scan.js +107 -0
  249. package/dist/server/grep-worker.d.ts +1 -0
  250. package/dist/server/grep-worker.js +12 -0
  251. package/dist/server/mcp-http.d.ts +8 -0
  252. package/dist/server/mcp-http.js +16 -1
  253. package/dist/storage/file-hash.d.ts +5 -0
  254. package/dist/storage/file-hash.js +16 -6
  255. package/dist/storage/file-lock.d.ts +15 -0
  256. package/dist/storage/file-lock.js +155 -0
  257. package/dist/storage/fs-atomic.d.ts +24 -0
  258. package/dist/storage/fs-atomic.js +86 -2
  259. package/dist/storage/git.d.ts +19 -8
  260. package/dist/storage/git.js +83 -24
  261. package/dist/storage/gitnexus-managed-paths.d.ts +36 -0
  262. package/dist/storage/gitnexus-managed-paths.js +46 -0
  263. package/dist/storage/parse-cache.d.ts +22 -4
  264. package/dist/storage/parse-cache.js +141 -29
  265. package/dist/storage/parsedfile-store.d.ts +34 -60
  266. package/dist/storage/parsedfile-store.js +177 -171
  267. package/dist/storage/repo-manager.d.ts +9 -0
  268. package/dist/storage/repo-manager.js +33 -18
  269. package/dist/storage/repo-meta.d.ts +46 -0
  270. package/dist/storage/v8-sidecar.d.ts +48 -0
  271. package/dist/storage/v8-sidecar.js +347 -0
  272. package/dist/types/pipeline.d.ts +14 -0
  273. package/dist/utils/process-identity.d.ts +2 -0
  274. package/dist/utils/process-identity.js +35 -0
  275. package/package.json +4 -2
  276. package/scripts/cross-platform-shard.ts +4 -2
  277. package/scripts/cross-platform-tests.ts +5 -1
  278. package/skills/gitnexus-cli.md +9 -1
  279. package/skills/gitnexus-impact-analysis.md +9 -0
  280. package/web/assets/ProcessFlowModal-DAeX2BHW.js +24 -0
  281. package/web/assets/{abnfDiagram-QNN2D4NM-Cq2djWWe.js → abnfDiagram-PAR5IXJI-J3OdeHLl.js} +1 -1
  282. package/web/assets/{agent-Dr4l5EOp.js → agent-9RdJj3B9.js} +108 -104
  283. package/web/assets/architecture-7GRP2DOG-M7G3SWCO-G3sWyX6M.js +1 -0
  284. package/web/assets/architectureDiagram-2PNWDENW-ysKcRlGT.js +36 -0
  285. package/web/assets/blockDiagram-PUWGUBOA-oLXTa1lY.js +129 -0
  286. package/web/assets/c4Diagram-3NLNHZP5-D3iu4eC0.js +38 -0
  287. package/web/assets/{chunk-2SREHG4O-Dip42xOq.js → chunk-2NMSUPJH-B24w-wng.js} +1 -1
  288. package/web/assets/{chunk-VJFVEZTB-CX66F2ep.js → chunk-32MCUW2P-ByUyt0Sa.js} +3 -3
  289. package/web/assets/{chunk-4RFN2BYJ-DHHWuC-n.js → chunk-3NPNU5GP-DocZ07Sg.js} +1 -1
  290. package/web/assets/{chunk-XNMVGMAZ-Cg_LnPtj.js → chunk-3SMGFRGC-CAu4JRLv.js} +1 -1
  291. package/web/assets/{chunk-W44A43WB-BN8EQc_u.js → chunk-4CAJECRU-DRYMwG9z.js} +1 -1
  292. package/web/assets/chunk-4OADUZ5Q-CxrSvOwZ.js +10 -0
  293. package/web/assets/{chunk-DMV4VAQV-Bn6WXDSX.js → chunk-5IQCK5RY-CCMhl4so.js} +2 -2
  294. package/web/assets/{chunk-RRFMTAIC-CMN0wcYA.js → chunk-5MVFYWFU-Db9KvrYO.js} +1 -1
  295. package/web/assets/chunk-CLS4B6BI-Uvx5QNsu.js +168 -0
  296. package/web/assets/chunk-DZP67EKU-B3Mt380j.js +70 -0
  297. package/web/assets/{chunk-6L755F7B-CMhLBxi2.js → chunk-EICP7K5X-CqwE9hui.js} +1 -1
  298. package/web/assets/{chunk-BI6VK774-D0oaWk8V.js → chunk-GDY2UAB4-CtQQR0a8.js} +1 -1
  299. package/web/assets/chunk-H7VHZCWX-CE1nAmt6.js +1 -0
  300. package/web/assets/chunk-IJBDOHL6-BUKtY6oF.js +1 -0
  301. package/web/assets/{chunk-OIYT25JQ-CQ6KOZGX.js → chunk-JFFVMJIA-0fJenqia.js} +1 -1
  302. package/web/assets/{chunk-HNC4WDU7-DoU3KnA7.js → chunk-JZGDI5JK-BeTMSSkJ.js} +1 -1
  303. package/web/assets/{chunk-EQFTRU2I-1ix7TzW9.js → chunk-KD6SPIPN-Qp1Pflah.js} +1 -1
  304. package/web/assets/chunk-NF366YI6-CpSpya3n.js +231 -0
  305. package/web/assets/chunk-NUDPKBEF-CU1-BQIW.js +34 -0
  306. package/web/assets/{chunk-SATU7PGQ-B1zhgOvc.js → chunk-OJINMHTS-zOCQe4eI.js} +1 -1
  307. package/web/assets/{chunk-E5QJAATJ-dh-5CtIV.js → chunk-Q6NGPIAH-yyBomb63.js} +1 -1
  308. package/web/assets/chunk-QJSWEUOL-D_rf9gPD.js +128 -0
  309. package/web/assets/chunk-R7JDMUKV-CRoqKpD6.js +1 -0
  310. package/web/assets/{chunk-VE5CLXGZ-C1vB7wpY.js → chunk-RCXAM2GK-CUqrWQDV.js} +1 -1
  311. package/web/assets/{chunk-66DQ2XMT-CM0xjFAN.js → chunk-RT4MAWR3-zXy9-Lvt.js} +1 -1
  312. package/web/assets/{chunk-TZUXEDM2-B7p9AcTw.js → chunk-SFMINX4W-J2UrvMpD.js} +1 -1
  313. package/web/assets/{chunk-LORZLZWG-B57uGw2N.js → chunk-SLDQ463B-CHY6e_bQ.js} +2 -2
  314. package/web/assets/{chunk-FWYVLQTC-BgDItRzJ.js → chunk-TCEHX7R3-CXPDEVbm.js} +1 -1
  315. package/web/assets/{chunk-224SPVON-B8gxtXpy.js → chunk-VQC2EELJ-Dc8fIy4R.js} +1 -1
  316. package/web/assets/chunk-VRZKL3EH-DB3KixTQ.js +1 -0
  317. package/web/assets/{chunk-A7VWPJGB-B4O3oQdQ.js → chunk-VTHDQ7BV-b7FsPQZO.js} +1 -1
  318. package/web/assets/chunk-VY2OSTJR-Dkgc3Brg.js +2 -0
  319. package/web/assets/chunk-WUBWJARI-7FwILJ3k.js +2 -0
  320. package/web/assets/{chunk-D6VWDJW2-BxcBdZ9c.js → chunk-YBMQ5JGJ-BSnyWZmd.js} +1 -1
  321. package/web/assets/chunk-YDMLL4PJ-IHhMngTz.js +2 -0
  322. package/web/assets/chunk-Z6V44ARX-BjCEsF0Q.js +62 -0
  323. package/web/assets/chunk-ZJJ7VQJP-Dz089b-K.js +321 -0
  324. package/web/assets/chunk-ZNLK7HRR-B0iFpmW4.js +1 -0
  325. package/web/assets/chunk-ZQN7UHIL-Cy7KAjQt.js +1 -0
  326. package/web/assets/{chunk-L5GCOVLC-CE2w8Nm_.js → chunk-ZS6VBONO-DBjJO0w9.js} +2 -2
  327. package/web/assets/{chunk-NV3KIAZN-5yvcpMiu.js → chunk-ZUNWM646-DNRJyNPe.js} +1 -1
  328. package/web/assets/classDiagram-FGAMPOII-C5Ibyode.js +1 -0
  329. package/web/assets/classDiagram-v2-AI5RJEK4-C5Ibyode.js +1 -0
  330. package/web/assets/{cose-bilkent-RZA4XIPR-BHpK4Crp.js → cose-bilkent-Q72C2OJ3-DMeFXnK8.js} +1 -1
  331. package/web/assets/cynefin-OW5HDTMX-6OCTWOGG-vlqakYcO.js +1 -0
  332. package/web/assets/{cynefinDiagram-TR7LZUCG-C3Iar9lZ.js → cynefinDiagram-2OOWUY4M-BY6DZkTt.js} +1 -1
  333. package/web/assets/dagre-MPVFI544-DWO70fy_.js +4 -0
  334. package/web/assets/diagram-AE4NWXFW-f7JRVRUL.js +24 -0
  335. package/web/assets/{diagram-L7DVE3PN-GIRyVUtt.js → diagram-BUJID5UG-BXZv1rCS.js} +2 -2
  336. package/web/assets/{diagram-JCD7PQ7C-DC5-9FRr.js → diagram-C44CZ5NI-CRNfvjCq.js} +1 -1
  337. package/web/assets/diagram-EYOLEXXS-DZOjKQVE.js +30 -0
  338. package/web/assets/diagram-P7B6PWOJ-D3SQmw3_.js +3 -0
  339. package/web/assets/{ebnfDiagram-DRHRQJWO-D8_CI4ZF.js → ebnfDiagram-FTPZ3PV6-jKWpIDN2.js} +1 -1
  340. package/web/assets/erDiagram-H3ERR26V-BqJntEuJ.js +99 -0
  341. package/web/assets/eventmodeling-NTZA5JFV-WKSWQHFS-Bq4FqtBL.js +1 -0
  342. package/web/assets/flowDiagram-YHGXBVSY-Dnlk2bEu.js +1 -0
  343. package/web/assets/ganttDiagram-RWFTB7ED-Bl6Y1K5T.js +292 -0
  344. package/web/assets/gitGraph-4MIJSDKK-JH2HKYUO-B3yc4GkH.js +1 -0
  345. package/web/assets/gitGraphDiagram-MAR6GKOP-CkNvsrdw.js +106 -0
  346. package/web/assets/{index-2zdvEdzg.js → index-kv_NN0HT.js} +5 -5
  347. package/web/assets/info-A6RAGUB7-3TX3OFWW-BM3N5_Dv.js +1 -0
  348. package/web/assets/infoDiagram-LV547AFH-COkFutAf.js +2 -0
  349. package/web/assets/{ishikawaDiagram-4JDSWWDM-DmqWtjkl.js → ishikawaDiagram-PUJQGNDS-Bb8FylSR.js} +2 -2
  350. package/web/assets/{journeyDiagram-QUS3FAKT-XAzVzrQW.js → journeyDiagram-EW5QJT4W-BzoHUBhM.js} +4 -4
  351. package/web/assets/{kanban-definition-D4L7SQKK-YurRnmYn.js → kanban-definition-JSQERAZB-Uy2Pi0yQ.js} +4 -4
  352. package/web/assets/katex-CZ4GXH2S-C0Fcou7U.js +257 -0
  353. package/web/assets/{mindmap-definition-66QP5TD6-ChrWWnil.js → mindmap-definition-VBJCLQLM-B-CnOnt_.js} +3 -3
  354. package/web/assets/packet-AYTQ26CC-MKII6P3Y-Bd52ZE3V.js +1 -0
  355. package/web/assets/{pegDiagram-YKIO5C6U-QGeQLEq2.js → pegDiagram-7WILOQTJ-D9sneKXg.js} +1 -1
  356. package/web/assets/pie-WAS4IAKB-6B4OPMJ5-DW5Xy69Z.js +1 -0
  357. package/web/assets/pieDiagram-EFA7CBSB-Dx2NQofL.js +39 -0
  358. package/web/assets/{quadrantDiagram-VO5QLCXA-B7098wSc.js → quadrantDiagram-WARVYA7P-DPKL9_0A.js} +3 -3
  359. package/web/assets/radar-RG4KPBEZ-UPTR3XUL-CkzibT2h.js +1 -0
  360. package/web/assets/railroad-74A4TZTK-MEFUPFMS-D9zF-mDN.js +1 -0
  361. package/web/assets/railroad-abnf-HS5TGJTU-R5YG2S5D-ruacjUbX.js +1 -0
  362. package/web/assets/railroad-ebnf-LZEXJU2U-G5QEX2L6-S1zc5OiO.js +1 -0
  363. package/web/assets/railroad-peg-WCYAUIDC-H5I2ZRY2-Cbcr0XzY.js +1 -0
  364. package/web/assets/{railroadDiagram-M77LTMSB-AXu4vxk_.js → railroadDiagram-5NIQVNLQ-DsweTo14.js} +1 -1
  365. package/web/assets/{requirementDiagram-RASO5HTO-B-l8InpK.js → requirementDiagram-SXREGOKZ-CXwdNSVR.js} +4 -4
  366. package/web/assets/{sankeyDiagram-F32LOJ6L-Kd7zjJgX.js → sankeyDiagram-VV74M2VP-CA6jtP9P.js} +3 -3
  367. package/web/assets/{sequenceDiagram-URATNSBD-BlcdY9DS.js → sequenceDiagram-52ZFIFDL-k_5rEbzm.js} +15 -15
  368. package/web/assets/stateDiagram-3QAKPIVI-BejHTf31.js +1 -0
  369. package/web/assets/stateDiagram-v2-HN2P4RDZ-BrfoRuOc.js +1 -0
  370. package/web/assets/swimlanes-QLVP42QD-CQSVO5D6.js +1 -0
  371. package/web/assets/swimlanesDiagram-JKPDBFCN-DrWB9kcD.js +8 -0
  372. package/web/assets/{timeline-definition-WJXWRH4I-DUfp1R3E.js → timeline-definition-GS45XAXW-C0Ks8rPP.js} +4 -4
  373. package/web/assets/treeView-Q6P3EWNA-ZRJGANNQ-DmKOCo6L.js +1 -0
  374. package/web/assets/treemap-WGGIJYW6-K64VN5AS-DO3xY92U.js +1 -0
  375. package/web/assets/{vennDiagram-K3VCMQLI-Bj-FN-XS.js → vennDiagram-QIQU2ZRJ-rgPiS837.js} +3 -3
  376. package/web/assets/wardley-WFR3VGLG-D67OWCCH-DiDPBNft.js +1 -0
  377. package/web/assets/wardleyDiagram-U6YNM66N-DRVr7SPi.js +78 -0
  378. package/web/assets/{xychartDiagram-5VRUVLCW-CK_rbSWE.js → xychartDiagram-XJAZEDNM-COtlZzYb.js} +3 -3
  379. package/web/index.html +17 -15
  380. package/web/assets/ProcessFlowModal-Badh2Pbg.js +0 -24
  381. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +0 -1
  382. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +0 -36
  383. package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +0 -132
  384. package/web/assets/c4Diagram-X2LASM7V-CnhoT4aV.js +0 -10
  385. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +0 -127
  386. package/web/assets/chunk-5VCL7Z4A-CQ-2dYWj.js +0 -1
  387. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +0 -1
  388. package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +0 -2
  389. package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +0 -32
  390. package/web/assets/chunk-KRXBNO2N-C-UNuKKf.js +0 -1
  391. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +0 -321
  392. package/web/assets/chunk-LIEV3EAG-pyKGssV3.js +0 -1
  393. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +0 -62
  394. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +0 -10
  395. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +0 -156
  396. package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +0 -70
  397. package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +0 -231
  398. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +0 -2
  399. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +0 -1
  400. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +0 -1
  401. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +0 -1
  402. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +0 -1
  403. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +0 -1
  404. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +0 -1
  405. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +0 -4
  406. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +0 -30
  407. package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +0 -3
  408. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +0 -24
  409. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +0 -85
  410. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +0 -1
  411. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +0 -1
  412. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +0 -292
  413. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +0 -1
  414. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +0 -106
  415. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +0 -1
  416. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +0 -2
  417. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +0 -257
  418. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +0 -1
  419. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +0 -1
  420. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +0 -39
  421. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +0 -1
  422. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +0 -1
  423. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +0 -1
  424. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +0 -1
  425. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +0 -1
  426. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +0 -1
  427. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +0 -1
  428. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +0 -2
  429. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +0 -8
  430. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +0 -1
  431. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +0 -1
  432. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +0 -1
  433. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +0 -78
  434. /package/web/assets/{sizeCapture-5GORAGP4-BEqQzsxs.js → sizeCapture-FGA5AGYP-BEqQzsxs.js} +0 -0
package/README.md CHANGED
@@ -204,7 +204,7 @@ Your AI agent gets **17 tools** (15 per-repo + 2 group) automatically:
204
204
  | `group_list` | List configured repository groups |
205
205
  | `group_sync` | Rebuild a group's Contract Registry and cross-repo links |
206
206
 
207
- > With one indexed repo, the `repo` param is optional. With multiple, specify which: `query({search_query: "auth", repo: "my-app"})`. Per-repo tools also take an optional `branch` for indexes pinned with `gitnexus analyze --branch`; omitting it queries the workspace index, which follows your checked-out working tree. `explain` and `pdg_query` need an index built with `gitnexus analyze --pdg`.
207
+ > Read-only tools can omit `repo` when one repo is indexed, an MCP default is configured, or the GitNexus process cwd is inside a registered path without crossing into an unindexed nested Git checkout. Otherwise—and for mutating tools with multiple indexed repos and no MCP default—specify it explicitly: `query({search_query: "auth", repo: "my-app"})`. Per-repo tools also take an optional `branch` for indexes pinned with `gitnexus analyze --branch`; omitting it queries the workspace index, which follows your checked-out working tree. `explain` and `pdg_query` need an index built with `gitnexus analyze --pdg`.
208
208
 
209
209
  ## MCP Resources
210
210
 
@@ -234,19 +234,22 @@ Your AI agent gets **17 tools** (15 per-repo + 2 group) automatically:
234
234
  gitnexus setup # Configure MCP for detected editors (one-time; use -c to select)
235
235
  gitnexus uninstall # Preview removal of GitNexus MCP/skills/hooks (add --force to apply)
236
236
  gitnexus analyze [path] # Index a repository (or update stale index)
237
+ gitnexus analyze [path] --watch # Watch local files and serialize incremental refreshes
237
238
  gitnexus analyze --repair-fts # Fast path: rebuild/verify only FTS indexes on existing index data
238
239
  gitnexus analyze --force # Full rebuild: re-parse + graph rebuild + FTS rebuild
239
240
  gitnexus analyze --embeddings # Enable embedding generation (slower, better search)
240
241
  gitnexus embeddings install # Fetch the optional local embedding stack on demand (--cuda, --force)
241
242
  gitnexus analyze --skills # Generate repo-specific skill files from detected communities
242
- gitnexus analyze --skip-agents-md # Preserve custom AGENTS.md/CLAUDE.md gitnexus section edits
243
+ gitnexus analyze --skip-agents-md # Preserve custom AGENTS.md/CLAUDE.md gitnexus section edits (does not skip standard skills; use --skip-skills; community --skills files are unaffected)
243
244
  gitnexus analyze --skip-skills # Skip installing standard .claude/skills/gitnexus-* skill files
244
245
  gitnexus analyze --skip-git # Index folders that are not Git repositories
245
246
  gitnexus analyze --workers <n> # Parse worker pool size (>=1; default: cores-1, capped at 16)
247
+ gitnexus analyze --spring-actuator ./actuator # Enrich with local Spring Boot Actuator JSON snapshots
246
248
  gitnexus analyze --verbose # Log skipped files when parsers are unavailable
247
249
  gitnexus analyze --max-file-size 1024 # Skip files larger than N KB (default: 512, cap: 32768)
248
250
  gitnexus analyze --worker-timeout 60 # Increase worker idle timeout for slow parses
249
251
  gitnexus analyze --wal-checkpoint-threshold 67108864 # 64 MiB. Control LadybugDB WAL auto-checkpoint threshold (default: 67108864 = 64 MiB; -1 keeps Ladybug stock ~16 MiB)
252
+ gitnexus auto-sync [init|start|restart|stop|status|reset] # Scheduled remote clone/pull + analyze from GITNEXUS_HOME/watch_config.yml
250
253
  gitnexus mcp # Start MCP server (stdio) — serves all indexed repos
251
254
  gitnexus serve # Start local HTTP server (multi-repo) for web UI
252
255
  gitnexus index # Register an existing .gitnexus/ folder into the global registry
@@ -282,6 +285,53 @@ gitnexus group status <name> # Check staleness of repos in a group
282
285
  gitnexus group impact <name> --target <symbol> --repo <groupPath> # Cross-repo blast radius
283
286
  ```
284
287
 
288
+ `gitnexus analyze --watch` requires a Git repository. It performs an initial
289
+ analysis and then debounces scanner-admitted working-tree changes for 300 ms by
290
+ default into serialized incremental refreshes. Events arriving during a run
291
+ remain queued, and retryable failures retain the same batch with bounded
292
+ backoff. Invalid `.gitnexusrc` or ignore-file reloads pause ordinary refreshes
293
+ until the control file is fixed. Watch refreshes update only the graph: they
294
+ intentionally skip AGENTS.md / CLAUDE.md injection and standard skill
295
+ installation. Run a one-shot `gitnexus analyze` when those generated files need
296
+ updating. Stop watch mode with Ctrl+C.
297
+
298
+ Watch mode accepts `--debounce`, `--workers`, `--worker-timeout`,
299
+ `--max-file-size`, `--branch`, `--pdg`, `--name`, `--allow-duplicate-name`, and
300
+ `--verbose`. Explicit one-shot options such as `--force`, `--repair-fts`,
301
+ embedding flags, `--skills`, `--default-branch`, `--skip-agents-md`,
302
+ `--skip-skills`, `--no-stats`, `--self-commit`, `--index-only`, and `--skip-git`
303
+ are rejected. Unsupported defaults from `.gitnexusrc` are ignored with a warning.
304
+
305
+ POSIX requests clone-first copy-and-swap publication when the live index has no
306
+ orphan sidecars. Windows and sidecar fallback runs update in place: failures
307
+ known to occur before writes are retried, while a failure that may have mutated
308
+ the live index stops the watcher. Watch mode does not pull remotes. Running MCP
309
+ and `serve` processes periodically check for a newly published index and reopen
310
+ it without a restart. MCP checks are throttled to once every five seconds, so a
311
+ tool call before the next check can briefly use the previous index.
312
+
313
+ ### `gitnexus auto-sync`
314
+
315
+ `gitnexus auto-sync` is a different product from `gitnexus analyze --watch`. It is the explicit long-running auto-sync entrypoint that clones or pulls configured remotes. `gitnexus watch` is reserved and does not start either job: it prints this split. `GITNEXUS_HOME` defaults to `~/.gitnexus`; `gitnexus auto-sync init` creates its default `$GITNEXUS_HOME/watch_config.yml`. Bare `gitnexus auto-sync` is the same as `gitnexus auto-sync start`; `restart`, `stop`, `status`, and `reset` manage the same `GITNEXUS_HOME` instance. `reset` removes only the derived analysis state and commit snapshot; clones, indexes, and registry entries are untouched. `start` runs in the foreground, reads the configuration once at startup, runs once immediately, then repeats on `sync_interval_minutes`; restart it after changing the configuration. Watch runtime artifacts live under `$GITNEXUS_HOME/watch/`: `project_commit_info.txt` is the human-readable per-loop snapshot, `auto-sync-state.json` is the machine state used for commit skipping and analyze failure thresholds, `watch.mutex` prevents multiple auto-sync processes for one home, `watch.owner.json` records ownership metadata, `watch.pid` plus `watch.status.json` expose process state, `watch.stop.<ownerId>.json` is a temporary owner-fenced stop request, and `quarantine/` stores partial clone output before entries are removed after 14 days, keeping at most the five newest entries per repository regardless of age. Mutexes with verified dead owners are reclaimed automatically after an abnormal exit. Invalid or legacy mutexes fail closed; confirm no auto-sync process is running before manually removing `watch.mutex` and stale `watch.pid` / `watch.owner.json`.
316
+
317
+ ```yaml
318
+ sync_interval_minutes: 10
319
+ max_concurrency: 1
320
+ repo_git_timeout: 10s
321
+ analyze_timeout: 5m
322
+ analyze_failure_threshold: 3
323
+ projects:
324
+ - local_path: /abs/path/to/repos
325
+ branches: [master, main]
326
+ overwrite_local_changes: false
327
+ remote_urls:
328
+ - git@github.com:owner/repo.git
329
+ - git@gitlab.com:group/repo.git
330
+ - git@gitee.com:owner/repo.git
331
+ ```
332
+
333
+ `sync_interval_minutes` must be an integer of at least `5`. `local_path` must be an absolute path without traversal; each remote is cloned below it as `host/namespace/repo`, preventing same-basename repositories from colliding. `remote_urls` must use SSH SCP form for github.com, gitlab.com, or gitee.com. `repo_git_timeout` applies to each repo clone/pull and defaults to `10s`; a bare number such as `10` is interpreted as seconds, while `10000ms`, `10s`, and `1m` keep their explicit units. It must not exceed one hour or `sync_interval_minutes`, whichever is smaller — so a bare `600000` is rejected, because it means 600000 seconds rather than milliseconds. `analyze_timeout` applies to each isolated analysis worker, defaults to half of `sync_interval_minutes`, and cannot exceed that value; this keeps it within Node's timer range. Timeout and `auto-sync stop` request safe cancellation; a worker already in native work exits after it returns to a JS-visible safe point. While waiting, auto-sync reports `cancelling` or `stopping` and keeps its ownership files so another auto-sync cannot take over. The parent waits up to 5 seconds for the worker to exit; after that it stops waiting, releases its ownership files, and leaves the worker to finish and exit on its own rather than killing it mid-write. `auto-sync stop` uses this same control path on macOS and Windows. `overwrite_local_changes` defaults to `false`; a dirty local clone is skipped with an error log, while `true` allows branch fallback to replace local changes and additionally discards untracked files and directories in the clone after checkout — ignored paths, including GitNexus's own `.gitnexus/` storage, are preserved. `max_concurrency` defaults to `1` and is capped at runtime by `floor(availableMemoryGB / 2)` with a minimum of `1`; the effective value is printed at the start of each loop. Each analysis worker's heap cap is the machine-wide cap divided by the number of repositories analyzed in parallel, so concurrent workers share one memory budget instead of each claiming the whole machine. `analyze_failure_threshold` defaults to `3`, must be at least `2`, and pauses repeated failures only for the same repo branch and commit; a new commit or `gitnexus auto-sync reset` clears the block and allows analysis again. Repositories are registered and added to groups by their full remote identity (`host/namespace/repo`), so repositories with the same basename remain distinct. Use `branches` to try branches in order; legacy `branch` remains supported, but the two fields cannot be set together. If all branches are unavailable or time out, watch logs an error, records the repo status, and skips that repo for the loop. Leave `group_name` empty or omit it to skip group add/sync for that project; otherwise create the group first with `gitnexus group create <name>`. `$GITNEXUS_HOME/watch/project_commit_info.txt` is for inspection only; GitNexus stores machine state separately in `$GITNEXUS_HOME/watch/auto-sync-state.json`.
334
+
285
335
  GraphQL contract matching is opt-in in the group's `group.yaml`:
286
336
 
287
337
  ```yaml
@@ -297,6 +347,14 @@ and root fields. Dynamic decorator names, anonymous operations, and ambiguous or
297
347
  anchors are deliberately omitted. Add common infrastructure fields such as `/health` to
298
348
  `matching.exclude_links_paths` to keep those GraphQL contracts visible without cross-linking them.
299
349
 
350
+ `--spring-actuator` is explicitly opt-in. The path may be a JSON bundle keyed by `mappings`, `beans`, `conditions`, `configprops`, and/or `env`, or a directory containing endpoint-named JSON files. Runtime mappings and beans confirm matching static nodes; conditions and configuration property keys enrich existing evidence, with conservative runtime-only nodes added when no match exists. The configured input is excluded from source scanning; only normalized repository-relative exclusions are retained for future scans, never absolute paths. Env/configprops values, origins, condition messages, and source names are never persisted or printed. Enabled runs always rebuild because runtime snapshots are external to git freshness; omitting the option later rebuilds once to remove runtime evidence. Project config can set the same path with `springActuator` in `.gitnexusrc`.
351
+
352
+ `--asyncapi-spec` is explicitly opt-in and accepts a directory of AsyncAPI documents or a single document; the path is resolved against the repository root, so a committed `docs/asyncapi` and an absolute cache written by something else both work. Each `operations[]` entry of an **AsyncAPI 3.x** document can contribute a `Destination` node keyed by broker and address, with `action: send` emitting `PUBLISHES_TO` and `action: receive` emitting `CONSUMES_FROM`, so a document and source code that name one address on one broker land on the same node. Edges start at the document, not at a callable — a document states that the service talks to an address, not which method does — and no address a document names is ever attached to an unresolved source site.
353
+
354
+ An operation must name a protocol, either through its own `bindings` or through the `servers[].protocol` of the servers its channel resolves to (a channel that lists no `servers` resolves to all of them); operations that name none are refused, as are operations whose two readings name different brokers, and channels that inherit a multi-protocol server set without choosing. HTTP and WebSocket documents are refused for destination minting: there the host rather than the address names the place, and an HTTP endpoint is already modelled as a `Route`. A parameterized address — a channel declaring `parameters`, or an address containing `{` — is refused rather than keyed: two services publishing `{env}.orders` share a pattern, not a queue. AsyncAPI **2.x is refused** under its own counted reason and never mapped, because its `publish`/`subscribe` are inverted relative to 3.x `send`/`receive` and a naive mapping would reverse the async graph while leaving it connected. Every refusal is counted, and a configured path that yields nothing is reported rather than passed over in silence.
355
+
356
+ Like Actuator snapshots, documents are external to git freshness — replacing one moves no commit and dirties no file — so an enabled run always rebuilds, and the first later run without the option rebuilds once to remove document-derived evidence. There is no glob-based auto-discovery, and the option is unsupported with `--watch`.
357
+
300
358
  > **`gitnexus uninstall`** reverses `gitnexus setup` — it removes the GitNexus MCP entries, hooks, and skill directories it added to each detected editor. Skill directories are identified **by bundled gitnexus skill name** (e.g. `gitnexus-cli/`), so if you customized files inside an installed skill directory, back them up first. It is a dry-run preview by default and prints the exact paths it would remove; pass `--force` to apply. Per-repo indexes (`gitnexus clean --all`) and the global npm package (`npm uninstall -g gitnexus`) are left for you to remove.
301
359
 
302
360
  ## Remote Embeddings
@@ -405,7 +463,7 @@ Installed automatically by both `gitnexus analyze` (per-repo) and `gitnexus setu
405
463
  LadybugDB native binary ships as a prebuild against that floor, so on an older host it cannot
406
464
  load and reinstalling does not help — see
407
465
  [Linux: `GLIBC_2.34' not found`](#linux-glibc_234-not-found).
408
- - **Windows, for full-text search:** the Microsoft Visual C++ 2015-2022 Redistributable (x64) *and*
466
+ - **Windows, for full-text search:** the Microsoft Visual C++ 2015-2022 Redistributable (x64) _and_
409
467
  OpenSSL 3 (`libssl-3-x64.dll`, `libcrypto-3-x64.dll`) resolvable on `PATH` — see
410
468
  [Windows: full-text search unavailable](#windows-full-text-search-unavailable).
411
469
 
@@ -682,17 +740,17 @@ For repositories with very large source files, `GITNEXUS_WORKER_SUB_BATCH_MAX_BY
682
740
 
683
741
  Four env vars expose the pool's resilience layers (respawn budget, cumulative-timeout cap, circuit breaker, startup handshake). Defaults are tuned for typical repos; bump them when an analyze legitimately needs more retries, or lower them to fail-fast on a known-bad shape.
684
742
 
685
- | Variable | Default | Effect |
686
- | ----------------------------------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
687
- | `GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT` | `3` | Max replacement spawns per slot before the slot is dropped from the active rotation. |
688
- | `GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS` | `5 × subBatchTimeoutMs` | Total retry wall-time budget per job before quarantining. Bounds exponentially-growing retry waits. |
689
- | `GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD` | `max(3, poolSize)` | Per-slot consecutive deaths before the pool's circuit breaker trips. After tripping, dispatches require a fresh pool. |
690
- | `GITNEXUS_WORKER_SHUTDOWN_DRAIN_MS` | `30000` | Max wait at pool shutdown for a retired worker still inside native code — terminated at its next JS-safe point instead of mid-native-call, which would abort the process (`Napi::Error`, #2432). |
691
- | `GITNEXUS_WORKER_READY_TIMEOUT_MS` | `5000` | Startup budget for a parse worker to load its grammar bindings and report `{type:'ready'}`. Slots that miss it are treated as startup crashes. Raise it on a slow or heavily loaded host where a full pool cold-starting concurrently needs more than 5s. |
692
- | `GITNEXUS_MEMORY` | `off` | unset (autopilot on) | `off` declines GitNexus's memory autopilot: analyze will neither re-run itself with a RAM-aware heap cap nor abort the parse before V8 enters its ineffective-mark-compact death spiral. Use it when you want to drive memory manually; to simply pin a heap size, pass Node's own `--max-old-space-size`, which is already honoured as your decision. |
693
- | `GITNEXUS_WORKER_HEAP_MB` | `clamp(512, RAM/2/poolSize, 4096)` | Per-worker V8 old-generation heap cap (#2649). Bounds pool RSS on large repos; a worker exceeding it dies with a real heap error handled by quarantine/respawn. |
694
- | `GITNEXUS_SERVER_ANALYZE_HEAP_MB` | `min(8192, auto cap)` | Heap for the web/MCP server's forked analyze worker (#2649). Defaults to the historical 8192 MB bounded by the machine/container's RAM-aware auto cap; set an absolute MB value to override. |
695
- | `GITNEXUS_CPP_CAPTURE_BUDGET_MS` | `20000` | Per-file wall-clock budget for C++ capture extraction; on breach the file keeps partial captures with a warning (#2432). `0` expires immediately. |
743
+ | Variable | Default | Effect |
744
+ | ----------------------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
745
+ | `GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT` | `3` | Max replacement spawns per slot before the slot is dropped from the active rotation. |
746
+ | `GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS` | `5 × subBatchTimeoutMs` | Total retry wall-time budget per job before quarantining. Bounds exponentially-growing retry waits. |
747
+ | `GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD` | `max(3, poolSize)` | Per-slot consecutive deaths before the pool's circuit breaker trips. After tripping, dispatches require a fresh pool. |
748
+ | `GITNEXUS_WORKER_SHUTDOWN_DRAIN_MS` | `30000` | Max wait at pool shutdown for a retired worker still inside native code — terminated at its next JS-safe point instead of mid-native-call, which would abort the process (`Napi::Error`, #2432). |
749
+ | `GITNEXUS_WORKER_READY_TIMEOUT_MS` | `5000` | Startup budget for a parse worker to load its grammar bindings and report `{type:'ready'}`. Slots that miss it are treated as startup crashes. Raise it on a slow or heavily loaded host where a full pool cold-starting concurrently needs more than 5s. |
750
+ | `GITNEXUS_MEMORY` | `off` | unset (autopilot on) | `off` declines GitNexus's memory autopilot: analyze will neither re-run itself with a RAM-aware heap cap nor abort the parse before V8 enters its ineffective-mark-compact death spiral. Use it when you want to drive memory manually; to simply pin a heap size, pass Node's own `--max-old-space-size`, which is already honoured as your decision. |
751
+ | `GITNEXUS_WORKER_HEAP_MB` | `clamp(512, RAM/2/poolSize, 4096)` | Per-worker V8 old-generation heap cap (#2649). Bounds pool RSS on large repos; a worker exceeding it dies with a real heap error handled by quarantine/respawn. |
752
+ | `GITNEXUS_SERVER_ANALYZE_HEAP_MB` | `min(8192, auto cap)` | Heap for the web/MCP server's forked analyze worker (#2649). Defaults to the historical 8192 MB bounded by the machine/container's RAM-aware auto cap; set an absolute MB value to override. |
753
+ | `GITNEXUS_CPP_CAPTURE_BUDGET_MS` | `20000` | Per-file wall-clock budget for C++ capture extraction; on breach the file keeps partial captures with a warning (#2432). `0` expires immediately. |
696
754
 
697
755
  ### Graph cleanup tuning
698
756
 
@@ -706,8 +764,8 @@ Programmatic callers can pass `keepLocalValueSymbols: true` in `PipelineOptions`
706
764
 
707
765
  ### Scope-resolution property-key dispatch cap
708
766
 
709
- During scope resolution GitNexus synthesizes CALLS edges through *property-key
710
- dispatch* — call sites like `hooks.emitScopeCaptures()` where a property key is
767
+ During scope resolution GitNexus synthesizes CALLS edges through _property-key
768
+ dispatch_ — call sites like `hooks.emitScopeCaptures()` where a property key is
711
769
  registered by multiple definitions across the codebase. To keep this fan-in
712
770
  bounded, each property key is capped at **32 registrations**: a key registered
713
771
  by more than 32 distinct functions is skipped entirely (no CALLS are synthesized
@@ -715,8 +773,8 @@ through it), and the dropped key names are surfaced in the analyze log for
715
773
  operator visibility. The cap is calibrated at 2× this repo's own provider table
716
774
  (16 legitimate registrations, one per language provider).
717
775
 
718
- | Variable | Default | Effect |
719
- | --------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
776
+ | Variable | Default | Effect |
777
+ | --------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
720
778
  | `GITNEXUS_MAX_PROPERTY_DISPATCH_FANOUT` | `32` | Per-property-key registration cap in the property-dispatch scope-resolution pass. Set to a positive integer to raise it for repositories whose provider/hook tables exceed the default and lose CALLS coverage on a legitimate key; non-integer or `< 1` values fall back to `32`. Lowering it tightens the overflow budget. |
721
779
 
722
780
  ```bash
@@ -729,11 +787,11 @@ npx gitnexus analyze --force
729
787
 
730
788
  ### Scope-resolution dispatch-target cap
731
789
 
732
- During scope resolution GitNexus resolves calls that flow through *callable
733
- values* — function/method references bound to variables, passed as arguments,
790
+ During scope resolution GitNexus resolves calls that flow through _callable
791
+ values_ — function/method references bound to variables, passed as arguments,
734
792
  or stored in maps/tables. To keep that inclusion-based resolution finite, each
735
793
  callable site is capped at **32 dispatch targets**. When a site gathers more
736
- candidates than the cap it is treated as **overflowed** and *all* of its call
794
+ candidates than the cap it is treated as **overflowed** and _all_ of its call
737
795
  edges are dropped — a cliff, not a tail, so a repository with a legitimately
738
796
  wide dispatch table (a single callable site resolving to 33+ targets) loses
739
797
  that site's whole call chain. In that case `analyze` logs
@@ -743,8 +801,8 @@ candidate count, and the cap (32).
743
801
 
744
802
  Raise the cap for such repositories:
745
803
 
746
- | Variable | Default | Effect |
747
- | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
804
+ | Variable | Default | Effect |
805
+ | ------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
748
806
  | `GITNEXUS_MAX_CALLABLE_VALUE_TARGETS` | `32` | Per-callable-site dispatch-target cap in the callable-value-flow scope-resolution pass. Set to a positive integer to raise it for repositories whose wide dispatch tables overflow the default and lose a whole call chain; non-integer or `< 1` values fall back to `32`. Lowering it tightens the overflow budget. |
749
807
 
750
808
  ```bash
@@ -5,7 +5,22 @@
5
5
  * Do NOT add Node.js-specific or browser-specific imports here.
6
6
  */
7
7
  import { SupportedLanguages } from '../languages.js';
8
- export type NodeLabel = 'Project' | 'Package' | 'Module' | 'Folder' | 'File' | 'Class' | 'Function' | 'Method' | 'Variable' | 'Interface' | 'Enum' | 'Decorator' | 'Import' | 'Type' | 'CodeElement' | 'Community' | 'Process' | 'Struct' | 'Macro' | 'Typedef' | 'Union' | 'Namespace' | 'Trait' | 'Impl' | 'TypeAlias' | 'Const' | 'Static' | 'Property' | 'Record' | 'Delegate' | 'Annotation' | 'Constructor' | 'Template' | 'Section' | 'Route' | 'Tool' | 'BasicBlock';
8
+ export type NodeLabel = 'Project' | 'Package' | 'Module' | 'Folder' | 'File' | 'Class' | 'Function' | 'Method' | 'Variable' | 'Interface' | 'Enum' | 'Decorator' | 'Import' | 'Type' | 'CodeElement' | 'Community' | 'Process' | 'Struct' | 'Macro' | 'Typedef' | 'Union' | 'Namespace' | 'Trait' | 'Impl' | 'TypeAlias' | 'Const' | 'Static' | 'Property' | 'Record' | 'Delegate' | 'Annotation' | 'Constructor' | 'Template' | 'Section' | 'Route' | 'Tool'
9
+ /**
10
+ * A message-broker destination — a Kafka topic, a Rabbit exchange/routing
11
+ * key, a JMS queue, a Spring Cloud Stream binding. The framework overlay for
12
+ * ASYNCHRONOUS entry/exit points, symmetric to `Route` for HTTP.
13
+ *
14
+ * Identity is `(broker, resolved ADDRESS)`, so a publisher and a consumer of
15
+ * the same address on the same broker land on one node and the connection is
16
+ * a single hop — while a Kafka topic and a Rabbit queue that share a name
17
+ * stay two nodes, the same way `GET /x` and `POST /x` are two Routes. A
18
+ * destination whose address could NOT be resolved is keyed by its source
19
+ * location instead and carries no `address` property at all. See
20
+ * `pipeline-phases/spring-destinations.ts` for why an unresolved spelling may
21
+ * not key a node, and `ingestion/destination-key.ts` for why the broker may.
22
+ */
23
+ | 'Destination' | 'BasicBlock';
9
24
  export type NodeProperties = {
10
25
  name: string;
11
26
  filePath: string;
@@ -48,13 +63,49 @@ export type NodeProperties = {
48
63
  responseKeys?: string[];
49
64
  errorKeys?: string[];
50
65
  middleware?: string[];
66
+ /** Route runtime evidence is authoritative only when this is exactly true. */
67
+ runtimeConfirmed?: boolean;
68
+ /** Provenance of runtime evidence; presence alone does not imply confirmation. */
69
+ runtimeSource?: string;
70
+ /** Runtime result such as runtime-confirmed or handler-conflict. */
71
+ runtimeStatus?: string;
72
+ /** The RESOLVED broker address. Together with `broker` it is the key a
73
+ * cross-repository pass joins on. Present only when the address resolved:
74
+ * absent is the load-bearing state, because an absent property cannot match
75
+ * another absent property. */
76
+ address?: string;
77
+ /** Broker family the syntax attests to (`kafka`, `rabbit`, `jms`, …). Part
78
+ * of the node's identity alongside `address`, not a label on it. */
79
+ broker?: string;
80
+ /** How the address was arrived at (`literal`, `constant`) when it resolved,
81
+ * or the named reason it did not. */
82
+ resolution?: string;
83
+ /** Configuration key named by an unresolvable `${…}` placeholder. The key
84
+ * only — configuration VALUES are deliberately absent from this graph. */
85
+ configKey?: string;
86
+ /** The `${key:default}` default text. Not an address: configuration can
87
+ * override it and the graph cannot see whether it did. */
88
+ configDefault?: string;
51
89
  text?: string;
52
90
  /** BasicBlock: space-joined leaf callee names invoked in the block — the
53
91
  * statement-precise inter-procedural reach substrate for impact mode. */
54
92
  callees?: string;
55
93
  [key: string]: unknown;
56
94
  };
57
- export type RelationshipType = 'CONTAINS' | 'CALLS' | 'INHERITS' | 'METHOD_OVERRIDES' | 'METHOD_IMPLEMENTS' | 'IMPORTS' | 'USES' | 'DEFINES' | 'DECORATES' | 'IMPLEMENTS' | 'EXTENDS' | 'HAS_METHOD' | 'HAS_PROPERTY' | 'ACCESSES' | 'MEMBER_OF' | 'STEP_IN_PROCESS' | 'HANDLES_ROUTE' | 'FETCHES' | 'HANDLES_TOOL' | 'ENTRY_POINT_OF' | 'WRAPS' | 'QUERIES'
95
+ export type RelationshipType = 'CONTAINS' | 'CALLS' | 'INHERITS' | 'METHOD_OVERRIDES' | 'METHOD_IMPLEMENTS' | 'IMPORTS' | 'USES' | 'DEFINES' | 'DECORATES' | 'IMPLEMENTS' | 'EXTENDS' | 'HAS_METHOD' | 'HAS_PROPERTY' | 'ACCESSES' | 'MEMBER_OF' | 'STEP_IN_PROCESS' | 'HANDLES_ROUTE'
96
+ /** Outbound async messaging. Source = the callable that performs the publish
97
+ * (or its File); target = the `Destination` it publishes to. Emitted by
98
+ * `pipeline-phases/spring-destinations.ts` from Spring messaging-template
99
+ * calls (`kafkaTemplate.send(...)`, `rabbitTemplate.convertAndSend(...)`).
100
+ * One edge per address: a publish that names two destinations yields two
101
+ * edges, and `reason` records which argument each came from. */
102
+ | 'PUBLISHES_TO'
103
+ /** Inbound async messaging — the mirror of `PUBLISHES_TO`. Source = the
104
+ * annotated handler callable (or its File); target = the `Destination` it
105
+ * subscribes to. Emitted from `@KafkaListener` / `@RabbitListener` /
106
+ * `@JmsListener` and their siblings. Together the two types make
107
+ * "who else reads what this service writes" a two-hop traversal. */
108
+ | 'CONSUMES_FROM' | 'FETCHES' | 'HANDLES_TOOL' | 'ENTRY_POINT_OF' | 'WRAPS' | 'QUERIES'
58
109
  /** Dependency-injection edge: a consumer class receives a likely provider
59
110
  * through constructor, field, method, or collection injection. A
60
111
  * per-language resolver identifies the site and provider metadata; the
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export type ImpactRisk = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL' | 'UNKNOWN';
2
+ export type ImpactRiskAxis = 'processes' | 'modules';
3
+ export type UnusedImpactRiskReason = 'file-nodes-have-no-process-or-community-membership' | 'enrichment-skipped' | 'enrichment-budget-exhausted' | 'enrichment-truncated' | 'enrichment-query-failed';
4
+ export interface UnusedImpactRiskAxis {
5
+ axis: ImpactRiskAxis;
6
+ reason: UnusedImpactRiskReason;
7
+ }
8
+ export interface ImpactRiskInput {
9
+ direction: 'upstream' | 'downstream';
10
+ directCount: number;
11
+ processCount: number;
12
+ moduleCount: number;
13
+ impactedCount: number;
14
+ unusedAxes?: readonly UnusedImpactRiskAxis[];
15
+ }
16
+ export interface ImpactRiskResult {
17
+ risk: ImpactRisk;
18
+ riskSharedAxes: ImpactRisk;
19
+ riskScale: {
20
+ comparableAcrossKinds: boolean;
21
+ unusedAxes: readonly UnusedImpactRiskAxis[];
22
+ };
23
+ }
24
+ /** Map walk outcomes to unused process/module axes so comparability matches what was sampled. */
25
+ export declare function unusedAxesForImpactWalk(input: {
26
+ isFileTarget: boolean;
27
+ skipEnrichment: boolean;
28
+ maxChunks: number;
29
+ processQueryFailed: boolean;
30
+ moduleQueryFailed: boolean;
31
+ /** When 0, a zero chunk budget is not an unused-axis event — there was nothing to enrich. */
32
+ impactedCount: number;
33
+ /** True when process/module queries ran on a strict subset of impacted symbols. */
34
+ enrichmentTruncated?: boolean;
35
+ }): UnusedImpactRiskAxis[];
36
+ export declare function scoreImpactRisk(input: ImpactRiskInput): ImpactRiskResult;
37
+ //# sourceMappingURL=impact-risk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact-risk.d.ts","sourceRoot":"","sources":["../src/impact-risk.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAC9B,oDAAoD,GACpD,oBAAoB,GACpB,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,GAAG,YAAY,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,UAAU,CAAC;IAC3B,SAAS,EAAE;QACT,qBAAqB,EAAE,OAAO,CAAC;QAC/B,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;KAC7C,CAAC;CACH;AAwDD,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,oBAAoB,EAAE,CAqBzB;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAuBxE"}
@@ -0,0 +1,92 @@
1
+ function score(input) {
2
+ const { direction, directCount, processCount, moduleCount, impactedCount } = input;
3
+ if (direction === 'upstream' && impactedCount === 0)
4
+ return 'UNKNOWN';
5
+ if (directCount >= 30 || processCount >= 5 || moduleCount >= 5 || impactedCount >= 200) {
6
+ return 'CRITICAL';
7
+ }
8
+ if (directCount >= 15 || processCount >= 3 || moduleCount >= 3 || impactedCount >= 100) {
9
+ return 'HIGH';
10
+ }
11
+ if (directCount >= 5 || impactedCount >= 30)
12
+ return 'MEDIUM';
13
+ return 'LOW';
14
+ }
15
+ const UNMEASURED_REASONS = new Set([
16
+ 'file-nodes-have-no-process-or-community-membership',
17
+ 'enrichment-skipped',
18
+ 'enrichment-budget-exhausted',
19
+ ]);
20
+ function unusedPair(reason) {
21
+ return [
22
+ { axis: 'processes', reason },
23
+ { axis: 'modules', reason },
24
+ ];
25
+ }
26
+ function countsWithUnmeasuredAxesZeroed(input) {
27
+ let processCount = input.processCount;
28
+ let moduleCount = input.moduleCount;
29
+ for (const unused of input.unusedAxes ?? []) {
30
+ if (!UNMEASURED_REASONS.has(unused.reason))
31
+ continue;
32
+ if (unused.axis === 'processes')
33
+ processCount = 0;
34
+ if (unused.axis === 'modules')
35
+ moduleCount = 0;
36
+ }
37
+ return {
38
+ direction: input.direction,
39
+ directCount: input.directCount,
40
+ processCount,
41
+ moduleCount,
42
+ impactedCount: input.impactedCount,
43
+ };
44
+ }
45
+ /** Map walk outcomes to unused process/module axes so comparability matches what was sampled. */
46
+ export function unusedAxesForImpactWalk(input) {
47
+ if (input.isFileTarget) {
48
+ return unusedPair('file-nodes-have-no-process-or-community-membership');
49
+ }
50
+ if (input.skipEnrichment) {
51
+ return unusedPair('enrichment-skipped');
52
+ }
53
+ if (input.maxChunks === 0 && input.impactedCount > 0) {
54
+ return unusedPair('enrichment-budget-exhausted');
55
+ }
56
+ const unused = [];
57
+ if (input.enrichmentTruncated) {
58
+ unused.push(...unusedPair('enrichment-truncated'));
59
+ }
60
+ if (input.processQueryFailed) {
61
+ unused.push({ axis: 'processes', reason: 'enrichment-query-failed' });
62
+ }
63
+ if (input.moduleQueryFailed) {
64
+ unused.push({ axis: 'modules', reason: 'enrichment-query-failed' });
65
+ }
66
+ return unused;
67
+ }
68
+ const INCOMPLETE_SAMPLE_REASONS = new Set([
69
+ 'enrichment-query-failed',
70
+ 'enrichment-truncated',
71
+ ]);
72
+ export function scoreImpactRisk(input) {
73
+ const unusedAxes = input.unusedAxes ?? [];
74
+ const observedRisk = score(countsWithUnmeasuredAxesZeroed(input));
75
+ const incompleteSample = unusedAxes.some((unused) => INCOMPLETE_SAMPLE_REASONS.has(unused.reason));
76
+ // Failed queries and truncated samples make observed process/module counts
77
+ // lower bounds. Preserve any HIGH/CRITICAL warning already proved by those
78
+ // counts, but never emit a confident LOW/MEDIUM edit gate from an incomplete
79
+ // enrichment pass.
80
+ const risk = incompleteSample && (observedRisk === 'LOW' || observedRisk === 'MEDIUM')
81
+ ? 'UNKNOWN'
82
+ : observedRisk;
83
+ return {
84
+ risk,
85
+ riskSharedAxes: score({ ...input, processCount: 0, moduleCount: 0 }),
86
+ riskScale: {
87
+ comparableAcrossKinds: unusedAxes.length === 0,
88
+ unusedAxes,
89
+ },
90
+ };
91
+ }
92
+ //# sourceMappingURL=impact-risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact-risk.js","sourceRoot":"","sources":["../src/impact-risk.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export type { NodeTableName, RelType } from './lbug/schema-constants.js';
4
4
  export { SupportedLanguages } from './languages.js';
5
5
  export { getLanguageFromFilename, getSyntaxLanguageFromFilename, isBladeTemplateFilename, } from './language-detection.js';
6
6
  export type { MroStrategy } from './mro-strategy.js';
7
+ export { scoreImpactRisk, unusedAxesForImpactWalk } from './impact-risk.js';
8
+ export type { ImpactRisk, ImpactRiskAxis, ImpactRiskInput, ImpactRiskResult, UnusedImpactRiskAxis, UnusedImpactRiskReason, } from './impact-risk.js';
7
9
  export type { PipelinePhase, PipelineProgress } from './pipeline.js';
8
10
  export type { ParameterTypeClass, SymbolDefinition, TypeParameter, } from './scope-resolution/symbol-definition.js';
9
11
  export type { ScopeId, DefId, ScopeKind, Range, Capture, CaptureMatch, BindingRef, ImportEdge, TypeRef, Scope, ResolutionEvidence, Resolution, Reference, ReferenceIndex, LookupParams, RegistryContributor, ParsedImport, ParsedTypeBinding, WorkspaceIndex, Callsite, ScopeLookup, } from './scope-resolution/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME, } from '.
3
3
  // Language support
4
4
  export { SupportedLanguages } from './languages.js';
5
5
  export { getLanguageFromFilename, getSyntaxLanguageFromFilename, isBladeTemplateFilename, } from './language-detection.js';
6
+ // Impact risk scoring
7
+ export { scoreImpactRisk, unusedAxesForImpactWalk } from './impact-risk.js';
6
8
  // Evidence + tie-break constants (RFC Appendix A, Appendix B)
7
9
  export { EvidenceWeights, typeBindingWeightAtDepth } from './scope-resolution/evidence-weights.js';
8
10
  export { ORIGIN_PRIORITY } from './scope-resolution/origin-priority.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAqCjC,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,yDAAyD;AACzD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AAGvD,sEAAsE;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,gEAAgE;AAChE,yEAAyE;AACzE,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AA4BxE,oFAAoF;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAMvF,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAUpE,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAKvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAKrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEpG,OAAO,EACL,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,0CAA0C,CAAC;AAUlD,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAErF,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E,8EAA8E;AAC9E,wEAAwE;AACxE,wEAAwE;AACxE,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEjG,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAG3C,mDAAmD;AACnD,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAGjC,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AA4C5E,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,yDAAyD;AACzD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AAGvD,sEAAsE;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,gEAAgE;AAChE,yEAAyE;AACzE,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AA4BxE,oFAAoF;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAMvF,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAUpE,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAKvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAKrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEpG,OAAO,EACL,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,0CAA0C,CAAC;AAUlD,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAErF,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E,8EAA8E;AAC9E,wEAAwE;AACxE,wEAAwE;AACxE,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEjG,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAG3C,mDAAmD;AACnD,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,sCAAsC,CAAC"}
@@ -7,10 +7,10 @@
7
7
  * Full DDL schemas remain in each package's own schema.ts because
8
8
  * the CLI uses native LadybugDB and the web uses WASM.
9
9
  */
10
- export declare const NODE_TABLES: readonly ['File', 'Folder', 'Function', 'Class', 'Interface', 'Method', 'CodeElement', 'Community', 'Process', 'Section', 'Struct', 'Enum', 'Macro', 'Typedef', 'Union', 'Namespace', 'Trait', 'Impl', 'TypeAlias', 'Const', 'Static', 'Variable', 'Property', 'Record', 'Delegate', 'Annotation', 'Constructor', 'Template', 'Module', 'Route', 'Tool', 'BasicBlock'];
10
+ export declare const NODE_TABLES: readonly ['File', 'Folder', 'Function', 'Class', 'Interface', 'Method', 'CodeElement', 'Community', 'Process', 'Section', 'Struct', 'Enum', 'Macro', 'Typedef', 'Union', 'Namespace', 'Trait', 'Impl', 'TypeAlias', 'Const', 'Static', 'Variable', 'Property', 'Record', 'Delegate', 'Annotation', 'Constructor', 'Template', 'Module', 'Route', 'Tool', 'Destination', 'BasicBlock'];
11
11
  export type NodeTableName = (typeof NODE_TABLES)[number];
12
12
  export declare const REL_TABLE_NAME = "CodeRelation";
13
- export declare const REL_TYPES: readonly ['CONTAINS', 'DEFINES', 'IMPORTS', 'CALLS', 'EXTENDS', 'IMPLEMENTS', 'HAS_METHOD', 'HAS_PROPERTY', 'ACCESSES', 'METHOD_OVERRIDES', 'OVERRIDES', 'METHOD_IMPLEMENTS', 'MEMBER_OF', 'STEP_IN_PROCESS', 'HANDLES_ROUTE', 'FETCHES', 'HANDLES_TOOL', 'ENTRY_POINT_OF', 'WRAPS', 'QUERIES', 'INJECTS', 'CONDITIONAL_ON', 'DECLARES', 'ADVISED_BY', 'CFG', 'REACHING_DEF', 'TAINTED', 'SANITIZES', 'TAINT_PATH', 'CDG', 'POST_DOMINATE'];
13
+ export declare const REL_TYPES: readonly ['CONTAINS', 'DEFINES', 'IMPORTS', 'CALLS', 'EXTENDS', 'IMPLEMENTS', 'HAS_METHOD', 'HAS_PROPERTY', 'ACCESSES', 'METHOD_OVERRIDES', 'OVERRIDES', 'METHOD_IMPLEMENTS', 'MEMBER_OF', 'STEP_IN_PROCESS', 'HANDLES_ROUTE', 'PUBLISHES_TO', 'CONSUMES_FROM', 'FETCHES', 'HANDLES_TOOL', 'ENTRY_POINT_OF', 'WRAPS', 'QUERIES', 'INJECTS', 'CONDITIONAL_ON', 'DECLARES', 'ADVISED_BY', 'CFG', 'REACHING_DEF', 'TAINTED', 'SANITIZES', 'TAINT_PATH', 'CDG', 'POST_DOMINATE'];
14
14
  export type RelType = (typeof REL_TYPES)[number];
15
15
  export declare const EMBEDDING_TABLE_NAME = "CodeEmbedding";
16
16
  //# sourceMappingURL=schema-constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EAEN,YAAY,CACJ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,YACpB,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EAIZ,KAAK,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EAKZ,KAAK,EACL,eAAe,CACP,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EAEN,aAAa,EAEb,YAAY,CACJ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,YACpB,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EAIZ,KAAK,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EAKZ,KAAK,EACL,eAAe,CACP,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
@@ -39,6 +39,8 @@ export const NODE_TABLES = [
39
39
  'Module',
40
40
  'Route',
41
41
  'Tool',
42
+ // Async messaging overlay — the broker-side counterpart of `Route`.
43
+ 'Destination',
42
44
  // Taint/PDG substrate (issue #2080) — inert until M1 (#2081) emits blocks.
43
45
  'BasicBlock',
44
46
  ];
@@ -59,6 +61,8 @@ export const REL_TYPES = [
59
61
  'MEMBER_OF',
60
62
  'STEP_IN_PROCESS',
61
63
  'HANDLES_ROUTE',
64
+ 'PUBLISHES_TO',
65
+ 'CONSUMES_FROM',
62
66
  'FETCHES',
63
67
  'HANDLES_TOOL',
64
68
  'ENTRY_POINT_OF',
@@ -1 +1 @@
1
- {"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,2EAA2E;IAC3E,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,YAAY;IACZ,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,KAAK;IACL,cAAc;IACd,SAAS;IACT,WAAW;IACX,YAAY;IACZ,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,8EAA8E;IAC9E,KAAK;IACL,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,oEAAoE;IACpE,aAAa;IACb,2EAA2E;IAC3E,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,YAAY;IACZ,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,KAAK;IACL,cAAc;IACd,SAAS;IACT,WAAW;IACX,YAAY;IACZ,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,8EAA8E;IAC9E,KAAK;IACL,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
@@ -30,6 +30,8 @@ export interface AIContextOptions {
30
30
  * "no PDG layer" note, so advertising it on a non-`--pdg` index is noise.
31
31
  */
32
32
  hasPdg?: boolean;
33
+ /** Whether this index includes opt-in Spring Actuator runtime evidence. */
34
+ hasSpringActuator?: boolean;
33
35
  }
34
36
  /**
35
37
  * Strip backticks from a branch name before it is embedded in a Markdown
@@ -62,6 +64,8 @@ export interface GitNexusContentOptions {
62
64
  * line below — false (default) omits it, so a non-pdg index doesn't advertise
63
65
  * a tool that only returns a "no PDG layer" note. */
64
66
  hasPdg?: boolean;
67
+ /** Whether Route nodes may carry Spring Actuator runtime evidence. */
68
+ hasSpringActuator?: boolean;
65
69
  }
66
70
  export declare function generateGitNexusContent(projectName: string, stats: RepoStats, opts?: GitNexusContentOptions): string;
67
71
  /**