cgraphx 2.0.2 → 2.0.3

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 (680) hide show
  1. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  2. package/dist/core/code/engine/cli/analyze.js +1086 -0
  3. package/dist/core/code/engine/cli/cli-message.js +83 -0
  4. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  5. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  6. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  7. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  8. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  9. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  10. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  11. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  12. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  13. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  14. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  15. package/dist/core/code/engine/cli/status.js +156 -0
  16. package/dist/core/code/engine/cli/tool.js +384 -0
  17. package/dist/core/code/engine/config/ignore-service.js +511 -0
  18. package/dist/core/code/engine/config/supported-languages.js +17 -0
  19. package/dist/core/code/engine/core/analysis-features.js +64 -0
  20. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  21. package/dist/core/code/engine/core/git-staleness.js +180 -0
  22. package/dist/core/code/engine/core/graph/graph.js +180 -0
  23. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  24. package/dist/core/code/engine/core/graph/types.js +2 -0
  25. package/dist/core/code/engine/core/index-freshness.js +12 -0
  26. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  27. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  28. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  29. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  30. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  31. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  32. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  33. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  34. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  35. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  36. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  37. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  38. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  39. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  40. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  41. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  42. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  43. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  44. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  45. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  46. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  47. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  48. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  49. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  50. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  51. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  52. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  53. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  54. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  55. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  56. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  57. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  58. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  81. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  82. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  83. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  84. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  85. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  86. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  87. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  88. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  89. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  90. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  91. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  92. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  93. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  94. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  95. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  96. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  97. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  98. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  99. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  100. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  101. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  102. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  103. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  104. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  105. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  106. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  107. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  108. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  109. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  110. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  111. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  113. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  114. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  115. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  116. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  117. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  118. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  119. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  120. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  121. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  122. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  123. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  124. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  125. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  126. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  127. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  128. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  129. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  130. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  131. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  132. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  133. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  134. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  135. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  136. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  137. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  138. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  139. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  140. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  141. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  142. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  143. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  144. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  145. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  146. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  147. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  148. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  149. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  150. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  151. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  157. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  158. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  159. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  160. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  161. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  162. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  163. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  164. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  165. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  166. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  167. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  168. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  169. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  170. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  171. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  172. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  173. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  174. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  175. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  176. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  177. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  178. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  179. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  180. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  181. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  182. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  183. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  184. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  185. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  186. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  187. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  188. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  189. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  190. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  191. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  199. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  200. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  201. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  202. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  203. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  204. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  205. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  206. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  207. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  208. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  209. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  210. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  211. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  212. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  213. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  214. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  215. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  217. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  218. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  219. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  220. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  221. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  222. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  223. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  224. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  225. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  226. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  227. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  228. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  229. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  230. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  231. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  232. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  233. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  234. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  235. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  236. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  237. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  238. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  239. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  240. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  241. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  242. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  243. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  244. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  245. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  246. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  247. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  248. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  249. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  250. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  257. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  258. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  259. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  260. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  261. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  262. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  263. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  264. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  265. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  266. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  267. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  268. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  269. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  270. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  271. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  272. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  273. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  274. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  281. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  282. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  283. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  284. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  285. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  286. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  287. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  288. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  289. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  290. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  291. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  292. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  293. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  294. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  295. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  296. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  297. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  298. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  299. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  300. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  301. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  302. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  303. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  304. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  305. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  306. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  307. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  308. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  315. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  316. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  317. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  318. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  319. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  320. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  321. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  322. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  323. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  324. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  325. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  326. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  327. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  328. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  329. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  330. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  331. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  332. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  333. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  334. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  335. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  336. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  337. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  338. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  339. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  340. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  341. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  342. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  343. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  344. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  345. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  346. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  347. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  348. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  349. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  350. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  351. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  352. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  353. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  354. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  355. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  356. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  357. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  358. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  359. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  360. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  361. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  362. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  363. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  364. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  365. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  366. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  367. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  368. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  369. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  370. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  371. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  372. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  373. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  374. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  375. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  376. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  377. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  378. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  379. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  380. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  381. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  382. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  383. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  384. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  385. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  386. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  387. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  388. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  389. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  390. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  391. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  396. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  397. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  398. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  399. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  400. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  401. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  402. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  403. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  404. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  405. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  406. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  407. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  408. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  409. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  410. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  411. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  412. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  414. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  415. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  416. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  417. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  418. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  419. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  420. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  421. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  422. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  423. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  424. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  425. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  426. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  427. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  428. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  429. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  430. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  431. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  432. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  433. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  434. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  435. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  436. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  437. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  438. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  439. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  440. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  442. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  443. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  444. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  445. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  446. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  447. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  448. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  449. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  450. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  451. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  452. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  453. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  454. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  455. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  456. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  457. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  458. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  459. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  460. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  461. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  468. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  469. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  470. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  471. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  472. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  473. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  474. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  475. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  476. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  477. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  478. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  479. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  480. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  481. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  482. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  483. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  484. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  485. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  486. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  487. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  488. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  489. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  490. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  491. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  492. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  493. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  494. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  495. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  496. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  497. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  498. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  499. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  500. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  501. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  502. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  513. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  514. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  515. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  516. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  517. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  518. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  519. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  520. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  521. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  522. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  523. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  524. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  525. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  526. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  527. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  528. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  529. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  530. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  531. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  532. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  533. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  534. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  535. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  536. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  537. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  538. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  539. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  540. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  541. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  542. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  543. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  544. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  545. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  546. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  547. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  548. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  549. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  550. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  551. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  552. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  553. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  554. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  555. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  556. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  557. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  558. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  559. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  560. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  561. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  562. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  563. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  564. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  565. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  566. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  567. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  568. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  569. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  570. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  571. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  572. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  573. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  574. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  575. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  576. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  577. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  578. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  579. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  580. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  581. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  582. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  583. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  584. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  585. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  586. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  587. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  588. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  589. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  590. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  591. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  592. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  593. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  594. package/dist/core/code/engine/core/logger.js +339 -0
  595. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  596. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  597. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  598. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  599. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  600. package/dist/core/code/engine/lib/utils.js +121 -0
  601. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  602. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  603. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  604. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  605. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  606. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  607. package/dist/core/code/engine/storage/branch-index.js +72 -0
  608. package/dist/core/code/engine/storage/file-hash.js +95 -0
  609. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  610. package/dist/core/code/engine/storage/git.js +555 -0
  611. package/dist/core/code/engine/storage/index-lock.js +664 -0
  612. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  613. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  614. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  615. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  616. package/dist/core/code/engine/types/pipeline.js +2 -0
  617. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  618. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  619. package/dist/core/code/shared/graph/types.js +8 -0
  620. package/dist/core/code/shared/index.js +105 -0
  621. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  622. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  623. package/dist/core/code/shared/integrations/retry.js +70 -0
  624. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  625. package/dist/core/code/shared/language-detection.js +162 -0
  626. package/dist/core/code/shared/languages.js +27 -0
  627. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  628. package/dist/core/code/shared/mro-strategy.js +2 -0
  629. package/dist/core/code/shared/pipeline.js +5 -0
  630. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  631. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  632. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  633. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  634. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  635. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  636. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  637. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  638. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  639. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  640. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  641. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  642. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  643. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  644. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  645. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  646. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  647. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  648. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  649. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  650. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  651. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  652. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  653. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  654. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  655. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  656. package/dist/core/code/shared/test-helpers.js +17 -0
  657. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  658. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  659. package/dist/core/timeline/cli.d.ts.map +1 -1
  660. package/dist/core/timeline/cli.js +13 -6
  661. package/dist/core/timeline/cli.js.map +1 -1
  662. package/dist/core/timeline/debris.d.ts +20 -0
  663. package/dist/core/timeline/debris.d.ts.map +1 -0
  664. package/dist/core/timeline/debris.js +124 -0
  665. package/dist/core/timeline/debris.js.map +1 -0
  666. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  667. package/dist/core/timeline/hook-runner.js +3 -1
  668. package/dist/core/timeline/hook-runner.js.map +1 -1
  669. package/dist/core/timeline/hooks.d.ts.map +1 -1
  670. package/dist/core/timeline/hooks.js +13 -5
  671. package/dist/core/timeline/hooks.js.map +1 -1
  672. package/dist/core/timeline/installer.d.ts +2 -0
  673. package/dist/core/timeline/installer.d.ts.map +1 -1
  674. package/dist/core/timeline/installer.js +12 -0
  675. package/dist/core/timeline/installer.js.map +1 -1
  676. package/dist/core/timeline/project-root.d.ts +21 -0
  677. package/dist/core/timeline/project-root.d.ts.map +1 -0
  678. package/dist/core/timeline/project-root.js +83 -0
  679. package/dist/core/timeline/project-root.js.map +1 -0
  680. package/package.json +1 -1
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOverloadableCallable = isOverloadableCallable;
4
+ exports.isPositionQualifiedLocalLabel = isPositionQualifiedLocalLabel;
5
+ /**
6
+ * Callables whose same-name overloads occupy distinct graph nodes keyed by
7
+ * parameter types / shape. Shared by graph-bridge registration (`node-lookup.ts`)
8
+ * and resolution (`ids.ts`) so overload keys stay aligned.
9
+ *
10
+ * Constructors belong here: a class with `Foo()` and `Foo(int)` mints distinct
11
+ * `#0`/`#1` Constructor nodes, and a `: this(...)` / `: base(...)` (C#),
12
+ * `this(...)`/`super(...)` (Java), or `new Foo(args)` edge must reach the
13
+ * right overload — otherwise both ctor nodes collapse onto the first-wins
14
+ * qualified/simple key and a ctor chain becomes a self-loop (#1928 F38 / #2046).
15
+ */
16
+ function isOverloadableCallable(label) {
17
+ return label === 'Function' || label === 'Method' || label === 'Constructor';
18
+ }
19
+ /**
20
+ * Labels whose FUNCTION-LOCAL declarations carry the enclosing-callable +
21
+ * position identity of #2699 (`Function:x.ts:run.save@3:2`).
22
+ *
23
+ * Wider than {@link isOverloadableCallable} on purpose. #2695 restricted the
24
+ * rule to callables because the collision that produced wrong CALLS edges was
25
+ * between callables, and widening churned ids for symbols the local-symbol
26
+ * pruner mostly deletes. But the issue's ORIGINAL complaint was about values:
27
+ * a top-level `const handler` and a function-local `const handler` collapsed
28
+ * onto one `Const:v.ts:handler`, and no callable gate ever reaches that. The
29
+ * limitation is closed here rather than carried.
30
+ *
31
+ * Only LOCALS are affected either way: the prefix comes from
32
+ * `enclosingCallablePrefix`, which returns `undefined` when nothing encloses
33
+ * the declaration, so top-level and class-member ids are untouched — that is
34
+ * what keeps this off the symbols other files and stored references address.
35
+ * A class field stays unqualified even inside a function, because the prefix
36
+ * walk boundaries on class-likes.
37
+ *
38
+ * ONE definition, deliberately: the id-building phase and the resolution phase
39
+ * must agree on this set or the caller attaches to a node that does not exist
40
+ * and the edge is silently dropped — the failure mode #2714 fixed, invisible
41
+ * from outside because "zero dangling edges" is what it looks like.
42
+ */
43
+ function isPositionQualifiedLocalLabel(label) {
44
+ return (isOverloadableCallable(label) ||
45
+ label === 'Variable' ||
46
+ label === 'Const' ||
47
+ label === 'Property' ||
48
+ label === 'Static');
49
+ }
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Wall-clock logging for the post-chunk deferred resolution band
4
+ * (imports → heritage → heritage map → legacy call resolution).
5
+ *
6
+ * Enabled when either:
7
+ * - `CGRAPH_VERBOSE=1` / `cgraph analyze -v` (primary path for #1741), or
8
+ * - `CGRAPH_PROFILE_DEFERRED=1` (force on without full verbose ingestion noise)
9
+ *
10
+ * Issue #1741: large Java/Kotlin repos appear stuck at "Resolving calls"
11
+ * because the UI progress bar updates every 100 files and intermediate
12
+ * stages emit little to the log.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.endTimer = exports.startTimer = exports.logDeferredProfile = exports.resetDeferredProfileDroppedCount = exports.getDeferredProfileDroppedCount = exports.profileElapsedMs = exports.profileNow = exports.alwaysOnSlowFileWarnMs = exports.deferredCallFileSlowMs = exports.deferredCallLogEveryN = exports.isDeferredResolutionProfileEnabled = exports.ALWAYS_ON_SLOW_FILE_WARN_THROTTLE_MS = void 0;
16
+ const logger_js_1 = require("../../logger.js");
17
+ const env_js_1 = require("./env.js");
18
+ const verbose_js_1 = require("./verbose.js");
19
+ // Module-private tuning constants for the gates below. Not exported — these
20
+ // are internal knobs, not part of the module's API surface.
21
+ const LOG_EVERY_N_VERBOSE = 10;
22
+ const LOG_EVERY_N_PROFILE = 100;
23
+ const DEFAULT_SLOW_MS_VERBOSE = 3_000;
24
+ const DEFAULT_SLOW_MS = 5_000;
25
+ /**
26
+ * Always-on (NOT gated on verbose/profile) threshold above which a single
27
+ * file's deferred call resolution earns a `logger.warn`. The verbose
28
+ * slow-file profile (above) only fires with `-v`/`CGRAPH_PROFILE_DEFERRED`;
29
+ * a plain `analyze` run that hangs in "Resolving calls" (the #1741 symptom)
30
+ * gives the user a frozen progress bar and nothing in the log. This higher
31
+ * default (15s — never hit by a healthy file) turns that silence into one
32
+ * actionable line naming the expensive file. Override via
33
+ * `CGRAPH_SLOW_FILE_WARN_MS`; the throttle in the caller bounds volume.
34
+ */
35
+ const DEFAULT_ALWAYS_ON_SLOW_FILE_WARN_MS = 15_000;
36
+ /** Min wall-clock gap between always-on slow-file warnings (throttle). */
37
+ exports.ALWAYS_ON_SLOW_FILE_WARN_THROTTLE_MS = 30_000;
38
+ /** True when deferred-stage timing / progress logs should emit. */
39
+ const isDeferredResolutionProfileEnabled = () => (0, verbose_js_1.isVerboseIngestionEnabled)() || (0, env_js_1.parseTruthyEnv)(process.env.CGRAPH_PROFILE_DEFERRED);
40
+ exports.isDeferredResolutionProfileEnabled = isDeferredResolutionProfileEnabled;
41
+ /** Log a call-resolution progress line every N files (finer when verbose). */
42
+ const deferredCallLogEveryN = () => (0, verbose_js_1.isVerboseIngestionEnabled)() ? LOG_EVERY_N_VERBOSE : LOG_EVERY_N_PROFILE;
43
+ exports.deferredCallLogEveryN = deferredCallLogEveryN;
44
+ /** Per-file call-resolution log threshold (ms). Lower default when verbose. */
45
+ const deferredCallFileSlowMs = () => {
46
+ const raw = process.env.CGRAPH_PROFILE_DEFERRED_SLOW_MS;
47
+ if (raw) {
48
+ // Use Number() not parseInt: parseInt('1e9', 10) === 1 (prefix-parses, drops the exponent),
49
+ // which would turn a user-intended "effectively disabled" threshold into a 1 ms log storm.
50
+ const n = Number(raw);
51
+ if (Number.isFinite(n) && n > 0)
52
+ return n;
53
+ }
54
+ return (0, verbose_js_1.isVerboseIngestionEnabled)() ? DEFAULT_SLOW_MS_VERBOSE : DEFAULT_SLOW_MS;
55
+ };
56
+ exports.deferredCallFileSlowMs = deferredCallFileSlowMs;
57
+ /**
58
+ * Always-on per-file slow threshold (ms) for the `logger.warn` watchdog in
59
+ * `processCallsFromExtracted`. Unlike {@link deferredCallFileSlowMs} this is
60
+ * NOT gated on verbose/profile — it fires on every run. `0` (or a negative /
61
+ * non-finite override) disables the watchdog entirely. Override via
62
+ * `CGRAPH_SLOW_FILE_WARN_MS`.
63
+ */
64
+ const alwaysOnSlowFileWarnMs = () => {
65
+ const raw = process.env.CGRAPH_SLOW_FILE_WARN_MS;
66
+ if (raw !== undefined) {
67
+ const n = Number(raw);
68
+ // 0 / negative / NaN → disabled. Use Number() not parseInt (see
69
+ // deferredCallFileSlowMs for the '1e9' prefix-parse hazard).
70
+ return Number.isFinite(n) && n > 0 ? n : 0;
71
+ }
72
+ return DEFAULT_ALWAYS_ON_SLOW_FILE_WARN_MS;
73
+ };
74
+ exports.alwaysOnSlowFileWarnMs = alwaysOnSlowFileWarnMs;
75
+ const profileNow = () => process.hrtime.bigint();
76
+ exports.profileNow = profileNow;
77
+ const profileElapsedMs = (start) => Number(process.hrtime.bigint() - start) / 1e6;
78
+ exports.profileElapsedMs = profileElapsedMs;
79
+ // Module-private counter for `[deferred-profile]` log lines the underlying
80
+ // logger refused to accept. Pino's SonicBoom transport is sync:false today,
81
+ // so steady-state `logger.info(string)` calls don't throw — but first-use
82
+ // construction paths (pino-pretty resolve, level validation) and any future
83
+ // transport reconfiguration could. The wrap below catches and counts so a
84
+ // failing logger cannot abort the deferred band, and the count surfaces in
85
+ // the deferred-band done-summary (see processCallsFromExtracted) so the
86
+ // failure is visible rather than silently swallowed (DoD §2.8).
87
+ let droppedLogLines = 0;
88
+ /**
89
+ * Number of `logDeferredProfile` calls whose underlying `logger.info` threw.
90
+ * Surfaced in the deferred-band done-summary when greater than zero.
91
+ */
92
+ const getDeferredProfileDroppedCount = () => droppedLogLines;
93
+ exports.getDeferredProfileDroppedCount = getDeferredProfileDroppedCount;
94
+ /**
95
+ * Reset the dropped-line counter. Call from test `afterEach` to keep the
96
+ * module-private state from leaking across tests. Also used inside
97
+ * `processCallsFromExtracted` at function entry so each analyze run gets
98
+ * a fresh count rather than accumulating across the process lifetime.
99
+ */
100
+ const resetDeferredProfileDroppedCount = () => {
101
+ droppedLogLines = 0;
102
+ };
103
+ exports.resetDeferredProfileDroppedCount = resetDeferredProfileDroppedCount;
104
+ const logDeferredProfile = (message) => {
105
+ try {
106
+ logger_js_1.logger.info(`[deferred-profile] ${message}`);
107
+ }
108
+ catch {
109
+ // Do not call the failing logger from the handler — that would risk
110
+ // an infinite loop if the failure mode is steady-state. Just count.
111
+ droppedLogLines++;
112
+ }
113
+ };
114
+ exports.logDeferredProfile = logDeferredProfile;
115
+ /**
116
+ * Capture a monotonic timestamp when profiling is enabled; otherwise return null.
117
+ * Pair with `endTimer` so the type system narrows correctly — using `null` instead
118
+ * of a `0n` sentinel makes "profiling disabled" structurally distinct from
119
+ * "zero elapsed time" and lets TypeScript catch missing guards.
120
+ */
121
+ const startTimer = (enabled) => enabled ? process.hrtime.bigint() : null;
122
+ exports.startTimer = startTimer;
123
+ /**
124
+ * Emit a `[deferred-profile]` log line for a captured timer. No-op when the
125
+ * timer is `null` (profiling was disabled at capture time). The formatter
126
+ * receives elapsed ms so the call sites stay readable.
127
+ *
128
+ * The format callback runs inside a try/catch so a throwing formatter
129
+ * (custom toString, JSON.stringify on a circular object) cannot abort the
130
+ * deferred resolution band — observability code must never escalate to a
131
+ * load-bearing failure. On catch we emit a single `formatter error: …`
132
+ * line via logDeferredProfile and return; the caller's stage continues
133
+ * as if profiling had no-op'd for this timer. DoD §2.8 ("no silent
134
+ * catches that swallow diagnostics") is satisfied by surfacing the
135
+ * failure message rather than dropping it.
136
+ */
137
+ const endTimer = (start, format) => {
138
+ if (start === null)
139
+ return;
140
+ const elapsedMs = (0, exports.profileElapsedMs)(start);
141
+ let message;
142
+ try {
143
+ message = format(elapsedMs);
144
+ }
145
+ catch (err) {
146
+ (0, exports.logDeferredProfile)(`formatter error: ${err instanceof Error ? err.message : String(err)}`);
147
+ return;
148
+ }
149
+ (0, exports.logDeferredProfile)(message);
150
+ };
151
+ exports.endTimer = endTimer;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.effectiveRamBytes = effectiveRamBytes;
7
+ exports.heapCapMbFor = heapCapMbFor;
8
+ exports.memoryAutopilotDisabled = memoryAutopilotDisabled;
9
+ exports.autoHeapCapMb = autoHeapCapMb;
10
+ const node_os_1 = __importDefault(require("node:os"));
11
+ /**
12
+ * Effective RAM in bytes: physical total, or a REAL smaller cgroup limit
13
+ * (#2649). `process.constrainedMemory()` returns a huge sentinel when
14
+ * unconstrained, and only the leaf cgroup's limit is visible (parent-slice
15
+ * caps are not) — so a smaller-than-physical value is trusted and anything
16
+ * else falls back to `os.totalmem()`. Mirrors `computeHeapCapMb`'s
17
+ * constrained handling in `cli/analyze.ts`; container-blind sizing told
18
+ * users "this machine has more memory" inside an 8GB-limited container on
19
+ * a 64GB host, and sized worker heap caps past the whole container.
20
+ */
21
+ function effectiveRamBytes() {
22
+ const total = node_os_1.default.totalmem();
23
+ const constrained = typeof process.constrainedMemory === 'function' ? process.constrainedMemory() : undefined;
24
+ return typeof constrained === 'number' && constrained > 0 && constrained < total
25
+ ? constrained
26
+ : total;
27
+ }
28
+ /** Historical floor for the auto heap cap — applied only up to 0.80 × RAM
29
+ * (a floor at or above physical memory swap-thrashes instead of OOMing,
30
+ * #2649). */
31
+ const HEAP_FLOOR_MB = 16384;
32
+ /**
33
+ * The RAM-aware heap cap formula (#2649), single-sourced here so the CLI
34
+ * respawn (`computeHeapCapMb` in `cli/analyze.ts`), and the server's
35
+ * analyze fork size from the same rule: `0.75 × effective RAM`, raised to
36
+ * the floor when RAM allows, never above `0.80 × effective RAM`.
37
+ */
38
+ function heapCapMbFor(effectiveBytes) {
39
+ const effectiveMb = Math.floor(effectiveBytes / (1024 * 1024));
40
+ return Math.min(Math.max(HEAP_FLOOR_MB, Math.floor(0.75 * effectiveMb)), Math.floor(0.8 * effectiveMb));
41
+ }
42
+ /**
43
+ * True when the operator has turned GitNexus's memory autopilot off
44
+ * (`CGRAPH_MEMORY=off`).
45
+ *
46
+ * One switch for one concern. Memory management has two automatic behaviours —
47
+ * re-running analyze with a RAM-aware heap cap, and aborting the parse before
48
+ * V8's ineffective-mark-compact death spiral — and an operator who wants to
49
+ * drive manually wants both off, not one. They were previously two separate
50
+ * variables (`CGRAPH_AUTO_HEAP`, `CGRAPH_HEAP_GUARD`), which is three knobs
51
+ * for one intent once the worker-heap override is counted; neither had shipped,
52
+ * so this consolidates them rather than deprecating anything.
53
+ *
54
+ * Note the ordinary way to pin the heap is Node's own `--max-old-space-size`,
55
+ * which `ensureHeap` already honours as the operator's decision. This switch is
56
+ * for declining the autopilot WITHOUT naming a size.
57
+ *
58
+ * Lives here beside the cap formula so policy and its escape hatch are
59
+ * single-sourced. Read every call (not memoized) so tests can stub the env.
60
+ */
61
+ function memoryAutopilotDisabled() {
62
+ return process.env.CGRAPH_MEMORY === 'off';
63
+ }
64
+ /** The cap for THIS machine/container: `heapCapMbFor(effectiveRamBytes())`. */
65
+ function autoHeapCapMb() {
66
+ return heapCapMbFor(effectiveRamBytes());
67
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Environment constants shared across the ingestion module.
4
+ *
5
+ * Centralizes `isDev` so every file in `ingestion/` imports from
6
+ * one canonical location rather than re-declaring the check.
7
+ *
8
+ * @module
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.isSemanticModelValidatorEnabled = exports.parsePositiveIntEnv = exports.parseTruthyEnv = exports.isDev = void 0;
12
+ /** Whether we're running in development mode (enables verbose console logging). */
13
+ exports.isDev = process.env.NODE_ENV === 'development';
14
+ /**
15
+ * Parse a narrow-form truthy env-var value. Accepts `'1'`, `'true'`, `'yes'`
16
+ * (case-insensitive, whitespace-trimmed). Anything else — including
17
+ * `undefined`, empty string, `'0'`, `'false'`, `'no'`, or unknown tokens —
18
+ * returns `false`.
19
+ *
20
+ * This is the shared helper for narrow-form truthy parsing across the
21
+ * ingestion module. `logger.ts` uses a broader negative-list form
22
+ * (`isTruthyEnv`) that intentionally accepts anything except a small set of
23
+ * falsy tokens — that lives separately because it follows pino-debug
24
+ * conventions and serves a different purpose.
25
+ */
26
+ const parseTruthyEnv = (raw) => {
27
+ if (raw === undefined)
28
+ return false;
29
+ const value = raw.trim().toLowerCase();
30
+ return value === '1' || value === 'true' || value === 'yes';
31
+ };
32
+ exports.parseTruthyEnv = parseTruthyEnv;
33
+ /**
34
+ * Parse a positive-integer env-var value. Returns the integer when `raw` is a
35
+ * finite integer `> 0`; otherwise (`undefined`, empty, non-numeric, `0`, or
36
+ * negative) returns `undefined` so the caller falls back to its default. Used
37
+ * for numeric tuning knobs like `CGRAPH_PDG_EMIT_CHUNK_SIZE` (#2202).
38
+ */
39
+ const parsePositiveIntEnv = (raw) => {
40
+ if (raw === undefined)
41
+ return undefined;
42
+ const n = Number(raw.trim());
43
+ return Number.isInteger(n) && n > 0 ? n : undefined;
44
+ };
45
+ exports.parsePositiveIntEnv = parsePositiveIntEnv;
46
+ /**
47
+ * Whether scope-resolution dev validators (e.g. `validateBindingsImmutability`)
48
+ * should run AND emit warnings. Off by default in CLI runs to avoid silent
49
+ * O(n) scans on large repos; on in `NODE_ENV=development` or when explicitly
50
+ * opted-in via `VALIDATE_SEMANTIC_MODEL=1`. `VALIDATE_SEMANTIC_MODEL=0` is the
51
+ * explicit off switch and wins over both.
52
+ *
53
+ * Read every call (not memoized) so test setups using `vi.stubEnv` work.
54
+ */
55
+ const isSemanticModelValidatorEnabled = () => {
56
+ if (process.env.VALIDATE_SEMANTIC_MODEL === '0')
57
+ return false;
58
+ return process.env.NODE_ENV === 'development' || process.env.VALIDATE_SEMANTIC_MODEL === '1';
59
+ };
60
+ exports.isSemanticModelValidatorEnabled = isSemanticModelValidatorEnabled;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.yieldToEventLoop = void 0;
4
+ /**
5
+ * Yield control to the event loop so spinners/progress can render.
6
+ * Call periodically in hot loops to prevent UI freezes.
7
+ */
8
+ const yieldToEventLoop = () => new Promise((resolve) => setImmediate(resolve));
9
+ exports.yieldToEventLoop = yieldToEventLoop;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * Topological level sort for file-level import graphs.
4
+ *
5
+ * Groups files into topological levels where files within the same level
6
+ * have no mutual import dependencies and can be processed in parallel.
7
+ * Files involved in import cycles are appended as a final group and
8
+ * processed last in an undefined order (best-effort propagation).
9
+ *
10
+ * Used by cross-file binding propagation to process files in the correct
11
+ * order — upstream exports must be resolved before downstream importers.
12
+ *
13
+ * @module
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.topologicalLevelSort = topologicalLevelSort;
17
+ /**
18
+ * Groups files by topological level using Kahn's algorithm on the **reverse**
19
+ * import graph.
20
+ *
21
+ * Files in the same level have no mutual dependencies — safe to process in parallel.
22
+ * Files involved in import cycles are appended as a final level and processed
23
+ * last in an undefined order (best-effort propagation, no ordering guarantees).
24
+ *
25
+ * ## Why the counter is named `pendingImportsPerFile` (not `inDegree`)
26
+ *
27
+ * Cross-file binding propagation must process **leaves first** — a file's
28
+ * imports must be resolved before the file itself is re-resolved. To get
29
+ * leaves first from Kahn's algorithm, we run Kahn's on the **reverse** of
30
+ * the import graph:
31
+ *
32
+ * - `importMap` is `importer → {imports}` (forward edges point at deps).
33
+ * - The reverse graph has edges `dep → {importers}`, materialized in
34
+ * `reverseDeps`.
35
+ * - On the reverse graph, "in-degree of node X" equals "number of imports X
36
+ * has in the forward graph" — i.e. X's forward **out-degree**.
37
+ *
38
+ * So `pendingImportsPerFile.get(file)` counts how many of `file`'s imports
39
+ * are still un-emitted. A file is ready (level 0 / appended to `currentLevel`)
40
+ * once all its imports have been emitted in earlier levels — that is, once
41
+ * its pending-imports count drops to 0. Pairing this counter with
42
+ * `reverseDeps` (dep → importers) is the standard Kahn's-on-the-reverse-graph
43
+ * formulation; it is **not** a bug to be "fixed" by counting forward
44
+ * in-degree (importers per file).
45
+ *
46
+ * **Do not rename this back to `inDegree` and do not invert the counting
47
+ * direction.** Doing either flips the emission order from leaves-first to
48
+ * roots-first, which silently breaks cross-file binding propagation
49
+ * (downstream files would be re-resolved before their upstream exports
50
+ * are available).
51
+ *
52
+ * @param importMap Map of file → set of files it imports (forward graph)
53
+ * @returns Levels (topologically ordered groups, leaves first)
54
+ * and count of files in cycles
55
+ */
56
+ function topologicalLevelSort(importMap) {
57
+ // Per-file count of imports that have not yet been emitted in an earlier
58
+ // level. See JSDoc above for why this is **not** standard `inDegree`.
59
+ const pendingImportsPerFile = new Map();
60
+ const reverseDeps = new Map();
61
+ for (const [file, deps] of importMap) {
62
+ if (!pendingImportsPerFile.has(file))
63
+ pendingImportsPerFile.set(file, 0);
64
+ for (const dep of deps) {
65
+ if (!pendingImportsPerFile.has(dep))
66
+ pendingImportsPerFile.set(dep, 0);
67
+ pendingImportsPerFile.set(file, (pendingImportsPerFile.get(file) ?? 0) + 1);
68
+ let rev = reverseDeps.get(dep);
69
+ if (!rev) {
70
+ rev = [];
71
+ reverseDeps.set(dep, rev);
72
+ }
73
+ rev.push(file);
74
+ }
75
+ }
76
+ const levels = [];
77
+ // Level 0: files with no un-emitted imports (true leaves of the import graph).
78
+ let currentLevel = [...pendingImportsPerFile.entries()]
79
+ .filter(([, d]) => d === 0)
80
+ .map(([f]) => f);
81
+ while (currentLevel.length > 0) {
82
+ levels.push(currentLevel);
83
+ const nextLevel = [];
84
+ for (const file of currentLevel) {
85
+ // For each importer of `file`, one of its pending imports just got
86
+ // emitted — decrement the importer's pending count. If it hits 0,
87
+ // the importer is ready for the next level.
88
+ for (const dependent of reverseDeps.get(file) ?? []) {
89
+ const newPending = (pendingImportsPerFile.get(dependent) ?? 1) - 1;
90
+ pendingImportsPerFile.set(dependent, newPending);
91
+ if (newPending === 0)
92
+ nextLevel.push(dependent);
93
+ }
94
+ }
95
+ currentLevel = nextLevel;
96
+ }
97
+ // Anything still > 0 participates in a cycle — append in undefined order.
98
+ const cycleFiles = [...pendingImportsPerFile.entries()].filter(([, d]) => d > 0).map(([f]) => f);
99
+ if (cycleFiles.length > 0) {
100
+ levels.push(cycleFiles);
101
+ }
102
+ return { levels, cycleCount: cycleFiles.length };
103
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /**
3
+ * Synchronous heap probes for large-repo OOM investigation (#1983).
4
+ *
5
+ * Writes to stderr (not pino) so lines flush under CI=1 / gdb attach.
6
+ * Enabled with `CGRAPH_DEBUG_HEAP=1` or `CGRAPH_PROFILE_DEFERRED=1`.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.logHeapProbe = exports.heapUsedMb = exports.isDebugHeapEnabled = void 0;
10
+ const node_fs_1 = require("node:fs");
11
+ const env_js_1 = require("./env.js");
12
+ const deferred_resolution_profile_js_1 = require("./deferred-resolution-profile.js");
13
+ const isDebugHeapEnabled = () => (0, env_js_1.parseTruthyEnv)(process.env.CGRAPH_DEBUG_HEAP) || (0, deferred_resolution_profile_js_1.isDeferredResolutionProfileEnabled)();
14
+ exports.isDebugHeapEnabled = isDebugHeapEnabled;
15
+ const heapUsedMb = () => Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
16
+ exports.heapUsedMb = heapUsedMb;
17
+ const rssMb = () => Math.round(process.memoryUsage().rss / 1024 / 1024);
18
+ /**
19
+ * Flush a one-line heap snapshot to stderr.
20
+ *
21
+ * stderr is async on a pipe (Linux), so a probe written just before an
22
+ * OOM-kill is lost in the pipe buffer. For OOM investigation set
23
+ * `CGRAPH_HEAP_PROBE_FILE=/path` — each probe is then ALSO appended to
24
+ * that file with a synchronous `appendFileSync`, whose `write(2)` syscall
25
+ * completes (data handed to the kernel) before the call returns, so the
26
+ * last line survives SIGKILL. Includes rss alongside heapUsed so the
27
+ * native/off-heap gap is visible.
28
+ */
29
+ const logHeapProbe = (label, detail) => {
30
+ if (!(0, exports.isDebugHeapEnabled)())
31
+ return;
32
+ const suffix = detail ? ` ${detail}` : '';
33
+ const line = `[gitnexus-heap] ${label} used_mb=${(0, exports.heapUsedMb)()} rss_mb=${rssMb()}${suffix}\n`;
34
+ process.stderr.write(line);
35
+ const file = process.env.CGRAPH_HEAP_PROBE_FILE;
36
+ if (file) {
37
+ try {
38
+ (0, node_fs_1.appendFileSync)(file, line);
39
+ }
40
+ catch {
41
+ // Best-effort diagnostics sink; never let a probe failure abort analyze.
42
+ }
43
+ }
44
+ };
45
+ exports.logHeapProbe = logHeapProbe;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROPERTY_MARKER_PREFIX = exports.HERITAGE_MARKER_PREFIX = void 0;
4
+ exports.encodeMarker = encodeMarker;
5
+ exports.decodeMarker = decodeMarker;
6
+ exports.isHeritageMarker = isHeritageMarker;
7
+ const PREFIX_BY_KIND = {
8
+ heritage: '__heritage__:',
9
+ property: '__property__:',
10
+ };
11
+ exports.HERITAGE_MARKER_PREFIX = PREFIX_BY_KIND.heritage;
12
+ exports.PROPERTY_MARKER_PREFIX = PREFIX_BY_KIND.property;
13
+ /**
14
+ * Build a marker string `<prefix><field>:<field>:...`. The `':'` delimiter IS the
15
+ * wire format, so a field that itself contains `':'` is structurally invalid and
16
+ * THROWS — callers must pre-normalize colon-bearing values (e.g. a qualified mixin
17
+ * arg `Outer::Mixin` → `Outer.Mixin`). This makes the #1981 silent edge-drop a
18
+ * loud failure instead.
19
+ */
20
+ function encodeMarker(kind, fields) {
21
+ for (const field of fields) {
22
+ if (field.includes(':')) {
23
+ throw new Error(`encodeMarker: field "${field}" contains the ':' delimiter; normalize it before encoding`);
24
+ }
25
+ }
26
+ return PREFIX_BY_KIND[kind] + fields.join(':');
27
+ }
28
+ /**
29
+ * Parse a marker string back into its kind + positional fields, or `null` if `raw`
30
+ * is not a marker. Mirrors the historical `slice(PREFIX.length).split(':')`.
31
+ */
32
+ function decodeMarker(raw) {
33
+ if (raw.startsWith(PREFIX_BY_KIND.heritage)) {
34
+ return { kind: 'heritage', fields: raw.slice(PREFIX_BY_KIND.heritage.length).split(':') };
35
+ }
36
+ if (raw.startsWith(PREFIX_BY_KIND.property)) {
37
+ return { kind: 'property', fields: raw.slice(PREFIX_BY_KIND.property.length).split(':') };
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * True if `raw` is a synthetic heritage/property marker — exactly the prior
43
+ * `startsWith('__heritage__:') || startsWith('__property__:')` pair.
44
+ */
45
+ function isHeritageMarker(raw) {
46
+ return raw.startsWith(PREFIX_BY_KIND.heritage) || raw.startsWith(PREFIX_BY_KIND.property);
47
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toZeroBasedLine = void 0;
4
+ /**
5
+ * Convert a 1-based source line number to the 0-based convention used by
6
+ * GraphNode `startLine`/`endLine`.
7
+ *
8
+ * The graph layer stores line numbers 0-based (tree-sitter `startPosition.row`),
9
+ * and this is load-bearing: the taint/PDG/CFG join and the MCP consumers all add
10
+ * `+ 1` to recover 1-based (see `summary-harvest-driver.ts` — "Function/Method
11
+ * node startLine is 0-based"). Most emitters get 0-based for free from
12
+ * tree-sitter. The exceptions are the regex-based COBOL/JCL processors (their
13
+ * parsers use `lineNum = i + 1`) and the scope-capture path (`Capture` ranges
14
+ * are 1-based per RFC §2.1). Those must convert to 0-based when they build a
15
+ * graph node, or the exact-content slice in `csv-generator.ts` drops the
16
+ * symbol's declaration line (#2379) and reported line numbers are off (#2377).
17
+ *
18
+ * Apply this ONLY at the graph-node `startLine:`/`endLine:` assignment. The
19
+ * parser-internal 1-based values (`.line`, `prog.startLine`) stay 1-based —
20
+ * they feed `L${line}` node/edge IDs and line-range containment checks that
21
+ * must not shift. The clamp guards degenerate inputs (line 0 / empty files).
22
+ */
23
+ const toZeroBasedLine = (oneBasedLine) => Math.max(0, oneBasedLine - 1);
24
+ exports.toZeroBasedLine = toZeroBasedLine;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._resetMaxFileSizeWarnings = exports.getMaxFileSizeBannerMessage = exports.getMaxFileSizeBytes = exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES = exports.DEFAULT_MAX_FILE_SIZE_BYTES = void 0;
4
+ const constants_js_1 = require("../constants.js");
5
+ const logger_js_1 = require("../../logger.js");
6
+ /** Default threshold (512 KB). Files larger than this are skipped by the walker. */
7
+ exports.DEFAULT_MAX_FILE_SIZE_BYTES = 512 * 1024;
8
+ /** Hard upper bound — tree-sitter refuses buffers above this regardless. */
9
+ exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES = constants_js_1.TREE_SITTER_MAX_BUFFER;
10
+ const warned = new Set();
11
+ const warnOnce = (key, message) => {
12
+ if (warned.has(key))
13
+ return;
14
+ warned.add(key);
15
+ logger_js_1.logger.warn(message);
16
+ };
17
+ /**
18
+ * Resolve the effective file-size skip threshold (bytes) for the walker.
19
+ * Reads `CGRAPH_MAX_FILE_SIZE` (KB). Invalid values fall back to the default
20
+ * and emit a one-time warning. Values above the tree-sitter ceiling are clamped.
21
+ */
22
+ const getMaxFileSizeBytes = () => {
23
+ const raw = process.env.CGRAPH_MAX_FILE_SIZE;
24
+ if (!raw)
25
+ return exports.DEFAULT_MAX_FILE_SIZE_BYTES;
26
+ const parsed = Number(raw);
27
+ if (!Number.isFinite(parsed) || parsed <= 0 || !Number.isInteger(parsed)) {
28
+ warnOnce(`invalid:${raw}`, ` CGRAPH_MAX_FILE_SIZE must be a positive integer (KB), got "${raw}" — using default ${exports.DEFAULT_MAX_FILE_SIZE_BYTES / 1024}KB`);
29
+ return exports.DEFAULT_MAX_FILE_SIZE_BYTES;
30
+ }
31
+ const bytes = parsed * 1024;
32
+ if (bytes > exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES) {
33
+ warnOnce(`clamp:${raw}`, ` CGRAPH_MAX_FILE_SIZE=${parsed}KB exceeds tree-sitter ceiling (${exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES / 1024}KB) — clamping`);
34
+ return exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES;
35
+ }
36
+ return bytes;
37
+ };
38
+ exports.getMaxFileSizeBytes = getMaxFileSizeBytes;
39
+ /**
40
+ * Build the CLI banner message announcing an active file-size override.
41
+ * Returns `null` when the effective threshold equals the default — the caller
42
+ * should print nothing in that case. The returned message reflects the
43
+ * *effective* post-clamp threshold, not the raw env value, so operators reading
44
+ * startup output see the actual configuration the walker will use.
45
+ */
46
+ const getMaxFileSizeBannerMessage = () => {
47
+ const effectiveBytes = (0, exports.getMaxFileSizeBytes)();
48
+ if (effectiveBytes === exports.DEFAULT_MAX_FILE_SIZE_BYTES)
49
+ return null;
50
+ const effectiveKb = effectiveBytes / 1024;
51
+ const defaultKb = exports.DEFAULT_MAX_FILE_SIZE_BYTES / 1024;
52
+ return ` CGRAPH_MAX_FILE_SIZE: effective threshold ${effectiveKb}KB (default ${defaultKb}KB)`;
53
+ };
54
+ exports.getMaxFileSizeBannerMessage = getMaxFileSizeBannerMessage;
55
+ /** Test-only: reset the warn-once cache so repeated test runs can re-observe warnings. */
56
+ const _resetMaxFileSizeWarnings = () => {
57
+ warned.clear();
58
+ };
59
+ exports._resetMaxFileSizeWarnings = _resetMaxFileSizeWarnings;