@yalehwang/archguard 0.1.31 → 0.1.33

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 (574) hide show
  1. package/README.md +106 -19
  2. package/assets/grammars/benchmarks.md +101 -0
  3. package/assets/grammars/checksums.json +8 -0
  4. package/{node_modules/tree-sitter/LICENSE → assets/grammars/licenses/tree-sitter-cpp.LICENSE} +2 -2
  5. package/{node_modules/node-gyp-build/LICENSE → assets/grammars/licenses/tree-sitter-go.LICENSE} +5 -5
  6. package/assets/grammars/licenses/tree-sitter-java.LICENSE +21 -0
  7. package/assets/grammars/licenses/tree-sitter-kotlin.LICENSE +21 -0
  8. package/assets/grammars/licenses/tree-sitter-python.LICENSE +21 -0
  9. package/assets/grammars/licenses/tree-sitter.LICENSE +21 -0
  10. package/assets/grammars/provenance.json +66 -0
  11. package/assets/grammars/tree-sitter-cpp.wasm +0 -0
  12. package/assets/grammars/tree-sitter-go.wasm +0 -0
  13. package/assets/grammars/tree-sitter-java.wasm +0 -0
  14. package/assets/grammars/tree-sitter-kotlin.wasm +0 -0
  15. package/assets/grammars/tree-sitter-python.wasm +0 -0
  16. package/assets/grammars/tree-sitter.wasm +0 -0
  17. package/dist/analysis/fitness/rule-types.d.ts +1 -33
  18. package/dist/analysis/fitness/rule-types.d.ts.map +1 -1
  19. package/dist/analysis/gim/direction-hint.d.ts.map +1 -1
  20. package/dist/analysis/gim/direction-hint.js +15 -5
  21. package/dist/analysis/gim/direction-hint.js.map +1 -1
  22. package/dist/analysis/gim/gim-loss-evaluator.d.ts.map +1 -1
  23. package/dist/analysis/gim/gim-loss-evaluator.js +12 -6
  24. package/dist/analysis/gim/gim-loss-evaluator.js.map +1 -1
  25. package/dist/analysis/jl/adjacency-builder.d.ts +8 -0
  26. package/dist/analysis/jl/adjacency-builder.d.ts.map +1 -0
  27. package/dist/analysis/jl/adjacency-builder.js +65 -0
  28. package/dist/analysis/jl/adjacency-builder.js.map +1 -0
  29. package/dist/analysis/jl/cluster-boundary-analyzer.d.ts +13 -0
  30. package/dist/analysis/jl/cluster-boundary-analyzer.d.ts.map +1 -0
  31. package/dist/analysis/jl/cluster-boundary-analyzer.js +233 -0
  32. package/dist/analysis/jl/cluster-boundary-analyzer.js.map +1 -0
  33. package/dist/analysis/jl/drift-calculator.d.ts +6 -0
  34. package/dist/analysis/jl/drift-calculator.d.ts.map +1 -0
  35. package/dist/analysis/jl/drift-calculator.js +104 -0
  36. package/dist/analysis/jl/drift-calculator.js.map +1 -0
  37. package/dist/analysis/jl/drift-exit-code.d.ts +4 -0
  38. package/dist/analysis/jl/drift-exit-code.d.ts.map +1 -0
  39. package/dist/analysis/jl/drift-exit-code.js +9 -0
  40. package/dist/analysis/jl/drift-exit-code.js.map +1 -0
  41. package/dist/analysis/jl/entity-aligner.d.ts +6 -0
  42. package/dist/analysis/jl/entity-aligner.d.ts.map +1 -0
  43. package/dist/analysis/jl/entity-aligner.js +33 -0
  44. package/dist/analysis/jl/entity-aligner.js.map +1 -0
  45. package/dist/analysis/jl/history-writer.d.ts +7 -0
  46. package/dist/analysis/jl/history-writer.d.ts.map +1 -0
  47. package/dist/analysis/jl/history-writer.js +74 -0
  48. package/dist/analysis/jl/history-writer.js.map +1 -0
  49. package/dist/analysis/jl/intrinsic-dimension.d.ts +14 -0
  50. package/dist/analysis/jl/intrinsic-dimension.d.ts.map +1 -0
  51. package/dist/analysis/jl/intrinsic-dimension.js +80 -0
  52. package/dist/analysis/jl/intrinsic-dimension.js.map +1 -0
  53. package/dist/analysis/jl/jl-projector.d.ts +7 -0
  54. package/dist/analysis/jl/jl-projector.d.ts.map +1 -0
  55. package/dist/analysis/jl/jl-projector.js +52 -0
  56. package/dist/analysis/jl/jl-projector.js.map +1 -0
  57. package/dist/analysis/jl/kmeans.d.ts +11 -0
  58. package/dist/analysis/jl/kmeans.d.ts.map +1 -0
  59. package/dist/analysis/jl/kmeans.js +273 -0
  60. package/dist/analysis/jl/kmeans.js.map +1 -0
  61. package/dist/analysis/jl/types.d.ts +166 -0
  62. package/dist/analysis/jl/types.d.ts.map +1 -0
  63. package/dist/analysis/jl/types.js +19 -0
  64. package/dist/analysis/jl/types.js.map +1 -0
  65. package/dist/analysis/shape-smells/index.d.ts +5 -0
  66. package/dist/analysis/shape-smells/index.d.ts.map +1 -0
  67. package/dist/analysis/shape-smells/index.js +5 -0
  68. package/dist/analysis/shape-smells/index.js.map +1 -0
  69. package/dist/analysis/shape-smells/literal-dispersion.d.ts +9 -0
  70. package/dist/analysis/shape-smells/literal-dispersion.d.ts.map +1 -0
  71. package/dist/analysis/shape-smells/literal-dispersion.js +157 -0
  72. package/dist/analysis/shape-smells/literal-dispersion.js.map +1 -0
  73. package/dist/analysis/shape-smells/persistence.d.ts +5 -0
  74. package/dist/analysis/shape-smells/persistence.d.ts.map +1 -0
  75. package/dist/analysis/shape-smells/persistence.js +59 -0
  76. package/dist/analysis/shape-smells/persistence.js.map +1 -0
  77. package/dist/analysis/shape-smells/scope-filter.d.ts +7 -0
  78. package/dist/analysis/shape-smells/scope-filter.d.ts.map +1 -0
  79. package/dist/analysis/shape-smells/scope-filter.js +28 -0
  80. package/dist/analysis/shape-smells/scope-filter.js.map +1 -0
  81. package/dist/analysis/shape-smells/types.d.ts +40 -0
  82. package/dist/analysis/shape-smells/types.d.ts.map +1 -0
  83. package/dist/analysis/shape-smells/types.js +2 -0
  84. package/dist/analysis/shape-smells/types.js.map +1 -0
  85. package/dist/analysis/snapshot-store.js +2 -2
  86. package/dist/analysis/snapshot-store.js.map +1 -1
  87. package/dist/analysis/test-analyzer.d.ts.map +1 -1
  88. package/dist/analysis/test-analyzer.js +1 -1
  89. package/dist/analysis/test-analyzer.js.map +1 -1
  90. package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
  91. package/dist/cli/analyze/normalize-to-diagrams.js +35 -0
  92. package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
  93. package/dist/cli/analyze/run-analysis.d.ts +6 -0
  94. package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
  95. package/dist/cli/analyze/run-analysis.js +65 -43
  96. package/dist/cli/analyze/run-analysis.js.map +1 -1
  97. package/dist/cli/cache/cache-manager.js +2 -2
  98. package/dist/cli/cache/cache-manager.js.map +1 -1
  99. package/dist/cli/cognitive/ccb-assembler.js.map +1 -1
  100. package/dist/cli/commands/analyze.d.ts +17 -0
  101. package/dist/cli/commands/analyze.d.ts.map +1 -1
  102. package/dist/cli/commands/analyze.js +129 -2
  103. package/dist/cli/commands/analyze.js.map +1 -1
  104. package/dist/cli/commands/check.js.map +1 -1
  105. package/dist/cli/commands/diff.js +1 -1
  106. package/dist/cli/commands/diff.js.map +1 -1
  107. package/dist/cli/commands/init.js.map +1 -1
  108. package/dist/cli/commands/query.d.ts +3 -0
  109. package/dist/cli/commands/query.d.ts.map +1 -1
  110. package/dist/cli/commands/query.js +128 -0
  111. package/dist/cli/commands/query.js.map +1 -1
  112. package/dist/cli/config-loader.d.ts.map +1 -1
  113. package/dist/cli/config-loader.js +6 -1
  114. package/dist/cli/config-loader.js.map +1 -1
  115. package/dist/cli/index.js.map +1 -1
  116. package/dist/cli/mcp/analyze-tool.d.ts +2 -0
  117. package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
  118. package/dist/cli/mcp/analyze-tool.js +5 -0
  119. package/dist/cli/mcp/analyze-tool.js.map +1 -1
  120. package/dist/cli/mcp/mcp-server.d.ts +7 -2
  121. package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
  122. package/dist/cli/mcp/mcp-server.js +43 -3
  123. package/dist/cli/mcp/mcp-server.js.map +1 -1
  124. package/dist/cli/mcp/tools/arch-health-tools.d.ts +16 -0
  125. package/dist/cli/mcp/tools/arch-health-tools.d.ts.map +1 -0
  126. package/dist/cli/mcp/tools/arch-health-tools.js +207 -0
  127. package/dist/cli/mcp/tools/arch-health-tools.js.map +1 -0
  128. package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts.map +1 -1
  129. package/dist/cli/mcp/tools/atlas-analytics-tools.js +5 -4
  130. package/dist/cli/mcp/tools/atlas-analytics-tools.js.map +1 -1
  131. package/dist/cli/mcp/tools/gim-tools.d.ts.map +1 -1
  132. package/dist/cli/mcp/tools/gim-tools.js +5 -1
  133. package/dist/cli/mcp/tools/gim-tools.js.map +1 -1
  134. package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts.map +1 -1
  135. package/dist/cli/mcp/tools/git-history-analyze-tool.js.map +1 -1
  136. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js.map +1 -1
  137. package/dist/cli/mcp/tools/git-history-tools.js.map +1 -1
  138. package/dist/cli/mcp/tools/metric-trend-tools.d.ts.map +1 -1
  139. package/dist/cli/mcp/tools/metric-trend-tools.js +2 -1
  140. package/dist/cli/mcp/tools/metric-trend-tools.js.map +1 -1
  141. package/dist/cli/mcp/tools/package-metrics-tools.d.ts.map +1 -1
  142. package/dist/cli/mcp/tools/package-metrics-tools.js +2 -1
  143. package/dist/cli/mcp/tools/package-metrics-tools.js.map +1 -1
  144. package/dist/cli/mcp/tools/shape-smell-tools.d.ts +3 -0
  145. package/dist/cli/mcp/tools/shape-smell-tools.d.ts.map +1 -0
  146. package/dist/cli/mcp/tools/shape-smell-tools.js +187 -0
  147. package/dist/cli/mcp/tools/shape-smell-tools.js.map +1 -0
  148. package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -1
  149. package/dist/cli/mcp/tools/test-analysis-tools.js +4 -4
  150. package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -1
  151. package/dist/cli/processors/arch-json-provider-types.d.ts +5 -0
  152. package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -1
  153. package/dist/cli/processors/arch-json-provider.d.ts +5 -0
  154. package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
  155. package/dist/cli/processors/arch-json-provider.js +113 -55
  156. package/dist/cli/processors/arch-json-provider.js.map +1 -1
  157. package/dist/cli/processors/arch-json-utils.d.ts.map +1 -1
  158. package/dist/cli/processors/arch-json-utils.js +12 -3
  159. package/dist/cli/processors/arch-json-utils.js.map +1 -1
  160. package/dist/cli/processors/diagram-output-router.d.ts +1 -0
  161. package/dist/cli/processors/diagram-output-router.d.ts.map +1 -1
  162. package/dist/cli/processors/diagram-output-router.js +54 -66
  163. package/dist/cli/processors/diagram-output-router.js.map +1 -1
  164. package/dist/cli/processors/diagram-processor.d.ts +4 -0
  165. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  166. package/dist/cli/processors/diagram-processor.js +2 -0
  167. package/dist/cli/processors/diagram-processor.js.map +1 -1
  168. package/dist/cli/processors/worker-pool-factory.d.ts +3 -0
  169. package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -1
  170. package/dist/cli/processors/worker-pool-factory.js +9 -0
  171. package/dist/cli/processors/worker-pool-factory.js.map +1 -1
  172. package/dist/cli/query/engine-loader.d.ts.map +1 -1
  173. package/dist/cli/query/engine-loader.js +3 -3
  174. package/dist/cli/query/engine-loader.js.map +1 -1
  175. package/dist/cli/query/query-artifacts.js +2 -2
  176. package/dist/cli/query/query-artifacts.js.map +1 -1
  177. package/dist/cli/utils/cluster-archjson-loader.d.ts +3 -0
  178. package/dist/cli/utils/cluster-archjson-loader.d.ts.map +1 -0
  179. package/dist/cli/utils/cluster-archjson-loader.js +28 -0
  180. package/dist/cli/utils/cluster-archjson-loader.js.map +1 -0
  181. package/dist/cli/utils/drift-baseline.d.ts +27 -0
  182. package/dist/cli/utils/drift-baseline.d.ts.map +1 -0
  183. package/dist/cli/utils/drift-baseline.js +95 -0
  184. package/dist/cli/utils/drift-baseline.js.map +1 -0
  185. package/dist/cli/utils/drift-reporter.d.ts +3 -0
  186. package/dist/cli/utils/drift-reporter.d.ts.map +1 -0
  187. package/dist/cli/utils/drift-reporter.js +49 -0
  188. package/dist/cli/utils/drift-reporter.js.map +1 -0
  189. package/dist/core/index.d.ts +7 -0
  190. package/dist/core/index.d.ts.map +1 -0
  191. package/dist/core/index.js +4 -0
  192. package/dist/core/index.js.map +1 -0
  193. package/dist/core/interfaces/language-plugin.d.ts +1 -0
  194. package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
  195. package/dist/core/pack-registry/errors.d.ts +5 -0
  196. package/dist/core/pack-registry/errors.d.ts.map +1 -0
  197. package/dist/core/pack-registry/errors.js +9 -0
  198. package/dist/core/pack-registry/errors.js.map +1 -0
  199. package/dist/core/pack-registry/index.d.ts +7 -0
  200. package/dist/core/pack-registry/index.d.ts.map +1 -0
  201. package/dist/core/pack-registry/index.js +4 -0
  202. package/dist/core/pack-registry/index.js.map +1 -0
  203. package/dist/core/pack-registry/knowledge-pack-schema.d.ts +188 -0
  204. package/dist/core/pack-registry/knowledge-pack-schema.d.ts.map +1 -0
  205. package/dist/core/pack-registry/knowledge-pack-schema.js +108 -0
  206. package/dist/core/pack-registry/knowledge-pack-schema.js.map +1 -0
  207. package/dist/core/pack-registry/pack-registry.d.ts +15 -0
  208. package/dist/core/pack-registry/pack-registry.d.ts.map +1 -0
  209. package/dist/core/pack-registry/pack-registry.js +99 -0
  210. package/dist/core/pack-registry/pack-registry.js.map +1 -0
  211. package/dist/core/pack-registry/types.d.ts +87 -0
  212. package/dist/core/pack-registry/types.d.ts.map +1 -0
  213. package/dist/core/pack-registry/types.js +2 -0
  214. package/dist/core/pack-registry/types.js.map +1 -0
  215. package/dist/core/plugin-registry.d.ts +2 -0
  216. package/dist/core/plugin-registry.d.ts.map +1 -1
  217. package/dist/core/plugin-registry.js +15 -2
  218. package/dist/core/plugin-registry.js.map +1 -1
  219. package/dist/core/query/arch-index-builder.js.map +1 -1
  220. package/dist/core/rule-engine/ast-node.d.ts +6 -0
  221. package/dist/core/rule-engine/ast-node.d.ts.map +1 -0
  222. package/dist/core/rule-engine/ast-node.js +15 -0
  223. package/dist/core/rule-engine/ast-node.js.map +1 -0
  224. package/dist/core/rule-engine/index.d.ts +5 -0
  225. package/dist/core/rule-engine/index.d.ts.map +1 -0
  226. package/dist/core/rule-engine/index.js +4 -0
  227. package/dist/core/rule-engine/index.js.map +1 -0
  228. package/dist/core/rule-engine/rule-based-plugin.d.ts +22 -0
  229. package/dist/core/rule-engine/rule-based-plugin.d.ts.map +1 -0
  230. package/dist/core/rule-engine/rule-based-plugin.js +171 -0
  231. package/dist/core/rule-engine/rule-based-plugin.js.map +1 -0
  232. package/dist/core/rule-engine/rule-engine.d.ts +52 -0
  233. package/dist/core/rule-engine/rule-engine.d.ts.map +1 -0
  234. package/dist/core/rule-engine/rule-engine.js +655 -0
  235. package/dist/core/rule-engine/rule-engine.js.map +1 -0
  236. package/dist/mermaid/auto-repair.js +1 -1
  237. package/dist/mermaid/auto-repair.js.map +1 -1
  238. package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -1
  239. package/dist/mermaid/diagram-generator.d.ts.map +1 -1
  240. package/dist/mermaid/diagram-generator.js +17 -18
  241. package/dist/mermaid/diagram-generator.js.map +1 -1
  242. package/dist/mermaid/generator.d.ts.map +1 -1
  243. package/dist/mermaid/generator.js +19 -1
  244. package/dist/mermaid/generator.js.map +1 -1
  245. package/dist/mermaid/renderer.d.ts.map +1 -1
  246. package/dist/mermaid/renderer.js +1 -1
  247. package/dist/mermaid/renderer.js.map +1 -1
  248. package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
  249. package/dist/mermaid/test-coverage-renderer.js +18 -12
  250. package/dist/mermaid/test-coverage-renderer.js.map +1 -1
  251. package/dist/mermaid/types.d.ts +25 -1
  252. package/dist/mermaid/types.d.ts.map +1 -1
  253. package/dist/mermaid/validation-pipeline.d.ts +4 -16
  254. package/dist/mermaid/validation-pipeline.d.ts.map +1 -1
  255. package/dist/mermaid/validation-pipeline.js.map +1 -1
  256. package/dist/parser/archjson-aggregator.js +2 -2
  257. package/dist/parser/archjson-aggregator.js.map +1 -1
  258. package/dist/parser/parallel-parser.d.ts +10 -0
  259. package/dist/parser/parallel-parser.d.ts.map +1 -1
  260. package/dist/parser/parallel-parser.js +76 -35
  261. package/dist/parser/parallel-parser.js.map +1 -1
  262. package/dist/parser/parse-worker-pool.d.ts +59 -0
  263. package/dist/parser/parse-worker-pool.d.ts.map +1 -0
  264. package/dist/parser/parse-worker-pool.js +170 -0
  265. package/dist/parser/parse-worker-pool.js.map +1 -0
  266. package/dist/parser/parse-worker.d.ts +2 -0
  267. package/dist/parser/parse-worker.d.ts.map +1 -0
  268. package/dist/parser/parse-worker.js +72 -0
  269. package/dist/parser/parse-worker.js.map +1 -0
  270. package/dist/parser/process-parse-worker-pools.d.ts +18 -0
  271. package/dist/parser/process-parse-worker-pools.d.ts.map +1 -0
  272. package/dist/parser/process-parse-worker-pools.js +31 -0
  273. package/dist/parser/process-parse-worker-pools.js.map +1 -0
  274. package/dist/parser/typescript-parser.d.ts.map +1 -1
  275. package/dist/parser/typescript-parser.js +3 -2
  276. package/dist/parser/typescript-parser.js.map +1 -1
  277. package/dist/plugins/cpp/builders/class-builder.d.ts +3 -2
  278. package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
  279. package/dist/plugins/cpp/builders/class-builder.js +19 -0
  280. package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
  281. package/dist/plugins/cpp/index.d.ts +4 -1
  282. package/dist/plugins/cpp/index.d.ts.map +1 -1
  283. package/dist/plugins/cpp/index.js +11 -2
  284. package/dist/plugins/cpp/index.js.map +1 -1
  285. package/dist/plugins/cpp/mappers/class-capture-mapper.d.ts +14 -0
  286. package/dist/plugins/cpp/mappers/class-capture-mapper.d.ts.map +1 -0
  287. package/dist/plugins/cpp/mappers/class-capture-mapper.js +76 -0
  288. package/dist/plugins/cpp/mappers/class-capture-mapper.js.map +1 -0
  289. package/dist/plugins/cpp/mappers/enum-capture-mapper.d.ts +6 -0
  290. package/dist/plugins/cpp/mappers/enum-capture-mapper.d.ts.map +1 -0
  291. package/dist/plugins/cpp/mappers/enum-capture-mapper.js +31 -0
  292. package/dist/plugins/cpp/mappers/enum-capture-mapper.js.map +1 -0
  293. package/dist/plugins/cpp/mappers/field-capture-mapper.d.ts +12 -0
  294. package/dist/plugins/cpp/mappers/field-capture-mapper.d.ts.map +1 -0
  295. package/dist/plugins/cpp/mappers/field-capture-mapper.js +66 -0
  296. package/dist/plugins/cpp/mappers/field-capture-mapper.js.map +1 -0
  297. package/dist/plugins/cpp/mappers/function-capture-mapper.d.ts +6 -0
  298. package/dist/plugins/cpp/mappers/function-capture-mapper.d.ts.map +1 -0
  299. package/dist/plugins/cpp/mappers/function-capture-mapper.js +25 -0
  300. package/dist/plugins/cpp/mappers/function-capture-mapper.js.map +1 -0
  301. package/dist/plugins/cpp/mappers/include-capture-mapper.d.ts +5 -0
  302. package/dist/plugins/cpp/mappers/include-capture-mapper.d.ts.map +1 -0
  303. package/dist/plugins/cpp/mappers/include-capture-mapper.js +10 -0
  304. package/dist/plugins/cpp/mappers/include-capture-mapper.js.map +1 -0
  305. package/dist/plugins/cpp/queries/classes.scm +7 -0
  306. package/dist/plugins/cpp/queries/enums.scm +3 -0
  307. package/dist/plugins/cpp/queries/fields.scm +6 -0
  308. package/dist/plugins/cpp/queries/functions.scm +7 -0
  309. package/dist/plugins/cpp/queries/includes.scm +8 -0
  310. package/dist/plugins/cpp/tree-sitter-bridge.d.ts +8 -14
  311. package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
  312. package/dist/plugins/cpp/tree-sitter-bridge.js +60 -238
  313. package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
  314. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -1
  315. package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -1
  316. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -1
  317. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -1
  318. package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -1
  319. package/dist/plugins/golang/atlas/go-mod-resolver.js +2 -1
  320. package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -1
  321. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.d.ts.map +1 -1
  322. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js.map +1 -1
  323. package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.d.ts.map +1 -1
  324. package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.js.map +1 -1
  325. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.d.ts.map +1 -1
  326. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.js.map +1 -1
  327. package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -1
  328. package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -1
  329. package/dist/plugins/golang/builders/function-builder.d.ts +4 -4
  330. package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -1
  331. package/dist/plugins/golang/builders/function-builder.js.map +1 -1
  332. package/dist/plugins/golang/builders/goroutine-builder.d.ts +2 -2
  333. package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -1
  334. package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -1
  335. package/dist/plugins/golang/builders/interface-builder.d.ts +4 -4
  336. package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -1
  337. package/dist/plugins/golang/builders/interface-builder.js.map +1 -1
  338. package/dist/plugins/golang/builders/node-utils.d.ts +3 -3
  339. package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -1
  340. package/dist/plugins/golang/builders/node-utils.js.map +1 -1
  341. package/dist/plugins/golang/builders/struct-builder.d.ts +2 -2
  342. package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -1
  343. package/dist/plugins/golang/builders/struct-builder.js.map +1 -1
  344. package/dist/plugins/golang/go-atlas-adapter.d.ts +3 -3
  345. package/dist/plugins/golang/go-atlas-adapter.d.ts.map +1 -1
  346. package/dist/plugins/golang/go-atlas-adapter.js +4 -4
  347. package/dist/plugins/golang/go-atlas-adapter.js.map +1 -1
  348. package/dist/plugins/golang/go-parse-coordinator.d.ts +10 -2
  349. package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -1
  350. package/dist/plugins/golang/go-parse-coordinator.js +44 -6
  351. package/dist/plugins/golang/go-parse-coordinator.js.map +1 -1
  352. package/dist/plugins/golang/gopls-client.d.ts +32 -3
  353. package/dist/plugins/golang/gopls-client.d.ts.map +1 -1
  354. package/dist/plugins/golang/gopls-client.js +246 -40
  355. package/dist/plugins/golang/gopls-client.js.map +1 -1
  356. package/dist/plugins/golang/gopls-interface-resolver.d.ts +14 -1
  357. package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -1
  358. package/dist/plugins/golang/gopls-interface-resolver.js +42 -11
  359. package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -1
  360. package/dist/plugins/golang/index.d.ts +3 -1
  361. package/dist/plugins/golang/index.d.ts.map +1 -1
  362. package/dist/plugins/golang/index.js +20 -3
  363. package/dist/plugins/golang/index.js.map +1 -1
  364. package/dist/plugins/golang/interface-matcher.d.ts.map +1 -1
  365. package/dist/plugins/golang/interface-matcher.js +32 -30
  366. package/dist/plugins/golang/interface-matcher.js.map +1 -1
  367. package/dist/plugins/golang/tree-sitter-bridge.d.ts +3 -2
  368. package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
  369. package/dist/plugins/golang/tree-sitter-bridge.js +25 -23
  370. package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
  371. package/dist/plugins/golang/types.d.ts +4 -0
  372. package/dist/plugins/golang/types.d.ts.map +1 -1
  373. package/dist/plugins/java/dependency-extractor.d.ts.map +1 -1
  374. package/dist/plugins/java/dependency-extractor.js.map +1 -1
  375. package/dist/plugins/java/index.d.ts +4 -0
  376. package/dist/plugins/java/index.d.ts.map +1 -1
  377. package/dist/plugins/java/index.js +12 -1
  378. package/dist/plugins/java/index.js.map +1 -1
  379. package/dist/plugins/java/tree-sitter-bridge.d.ts +3 -2
  380. package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
  381. package/dist/plugins/java/tree-sitter-bridge.js +33 -31
  382. package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
  383. package/dist/plugins/java/types.d.ts +1 -1
  384. package/dist/plugins/java/types.d.ts.map +1 -1
  385. package/dist/plugins/kotlin/builders/class-builder.d.ts +2 -1
  386. package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -1
  387. package/dist/plugins/kotlin/builders/class-builder.js.map +1 -1
  388. package/dist/plugins/kotlin/builders/function-builder.d.ts +2 -1
  389. package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -1
  390. package/dist/plugins/kotlin/builders/function-builder.js.map +1 -1
  391. package/dist/plugins/kotlin/index.d.ts +6 -3
  392. package/dist/plugins/kotlin/index.d.ts.map +1 -1
  393. package/dist/plugins/kotlin/index.js +12 -4
  394. package/dist/plugins/kotlin/index.js.map +1 -1
  395. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +3 -3
  396. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -1
  397. package/dist/plugins/kotlin/tree-sitter-bridge.js +6 -7
  398. package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -1
  399. package/dist/plugins/python/archjson-mapper.d.ts.map +1 -1
  400. package/dist/plugins/python/archjson-mapper.js.map +1 -1
  401. package/dist/plugins/python/index.d.ts +4 -0
  402. package/dist/plugins/python/index.d.ts.map +1 -1
  403. package/dist/plugins/python/index.js +12 -1
  404. package/dist/plugins/python/index.js.map +1 -1
  405. package/dist/plugins/python/tree-sitter-bridge.d.ts +3 -2
  406. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
  407. package/dist/plugins/python/tree-sitter-bridge.js +50 -48
  408. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
  409. package/dist/plugins/shared/capture-mapper.d.ts +12 -0
  410. package/dist/plugins/shared/capture-mapper.d.ts.map +1 -0
  411. package/dist/plugins/shared/capture-mapper.js +33 -0
  412. package/dist/plugins/shared/capture-mapper.js.map +1 -0
  413. package/dist/plugins/shared/index.d.ts +4 -0
  414. package/dist/plugins/shared/index.d.ts.map +1 -0
  415. package/dist/plugins/shared/index.js +3 -0
  416. package/dist/plugins/shared/index.js.map +1 -0
  417. package/dist/plugins/shared/native-parser-backend.d.ts +34 -0
  418. package/dist/plugins/shared/native-parser-backend.d.ts.map +1 -0
  419. package/dist/plugins/shared/native-parser-backend.js +96 -0
  420. package/dist/plugins/shared/native-parser-backend.js.map +1 -0
  421. package/dist/plugins/shared/parser-backend.d.ts +13 -0
  422. package/dist/plugins/shared/parser-backend.d.ts.map +1 -0
  423. package/dist/plugins/shared/parser-backend.js +39 -0
  424. package/dist/plugins/shared/parser-backend.js.map +1 -0
  425. package/dist/plugins/shared/parser-runtime.d.ts +32 -0
  426. package/dist/plugins/shared/parser-runtime.d.ts.map +1 -0
  427. package/dist/plugins/shared/parser-runtime.js +156 -0
  428. package/dist/plugins/shared/parser-runtime.js.map +1 -0
  429. package/dist/plugins/shared/plugin-factory.d.ts +5 -0
  430. package/dist/plugins/shared/plugin-factory.d.ts.map +1 -0
  431. package/dist/plugins/shared/plugin-factory.js +27 -0
  432. package/dist/plugins/shared/plugin-factory.js.map +1 -0
  433. package/dist/plugins/shared/query-loader.d.ts +14 -0
  434. package/dist/plugins/shared/query-loader.d.ts.map +1 -0
  435. package/dist/plugins/shared/query-loader.js +47 -0
  436. package/dist/plugins/shared/query-loader.js.map +1 -0
  437. package/dist/plugins/shared/syntax-tree.d.ts +45 -0
  438. package/dist/plugins/shared/syntax-tree.d.ts.map +1 -0
  439. package/dist/plugins/shared/syntax-tree.js +2 -0
  440. package/dist/plugins/shared/syntax-tree.js.map +1 -0
  441. package/dist/plugins/shared/wasm-parser-backend.d.ts +18 -0
  442. package/dist/plugins/shared/wasm-parser-backend.d.ts.map +1 -0
  443. package/dist/plugins/shared/wasm-parser-backend.js +127 -0
  444. package/dist/plugins/shared/wasm-parser-backend.js.map +1 -0
  445. package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
  446. package/dist/plugins/typescript/builders/module-graph-builder.js +2 -3
  447. package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
  448. package/dist/plugins/typescript/index.d.ts.map +1 -1
  449. package/dist/plugins/typescript/index.js +6 -6
  450. package/dist/plugins/typescript/index.js.map +1 -1
  451. package/dist/types/config-cli.d.ts +3 -0
  452. package/dist/types/config-cli.d.ts.map +1 -1
  453. package/dist/types/config-global.d.ts +7 -1
  454. package/dist/types/config-global.d.ts.map +1 -1
  455. package/dist/types/config.d.ts +1 -0
  456. package/dist/types/config.d.ts.map +1 -1
  457. package/dist/types/config.js +1 -0
  458. package/dist/types/config.js.map +1 -1
  459. package/dist/types/fitness-rules.d.ts +34 -0
  460. package/dist/types/fitness-rules.d.ts.map +1 -0
  461. package/dist/types/fitness-rules.js +2 -0
  462. package/dist/types/fitness-rules.js.map +1 -0
  463. package/dist/types/index.d.ts +1 -1
  464. package/dist/types/index.d.ts.map +1 -1
  465. package/dist/types/parser-runtime.d.ts +4 -0
  466. package/dist/types/parser-runtime.d.ts.map +1 -0
  467. package/dist/types/parser-runtime.js +5 -0
  468. package/dist/types/parser-runtime.js.map +1 -0
  469. package/dist/utils/error-message.d.ts +2 -0
  470. package/dist/utils/error-message.d.ts.map +1 -0
  471. package/dist/utils/error-message.js +8 -0
  472. package/dist/utils/error-message.js.map +1 -0
  473. package/package.json +34 -18
  474. package/node_modules/node-addon-api/LICENSE.md +0 -9
  475. package/node_modules/node-addon-api/README.md +0 -95
  476. package/node_modules/node-addon-api/common.gypi +0 -21
  477. package/node_modules/node-addon-api/except.gypi +0 -25
  478. package/node_modules/node-addon-api/index.js +0 -14
  479. package/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
  480. package/node_modules/node-addon-api/napi-inl.h +0 -7033
  481. package/node_modules/node-addon-api/napi.h +0 -3309
  482. package/node_modules/node-addon-api/node_addon_api.gyp +0 -42
  483. package/node_modules/node-addon-api/node_api.gyp +0 -9
  484. package/node_modules/node-addon-api/noexcept.gypi +0 -26
  485. package/node_modules/node-addon-api/nothing.c +0 -0
  486. package/node_modules/node-addon-api/package-support.json +0 -21
  487. package/node_modules/node-addon-api/package.json +0 -480
  488. package/node_modules/node-addon-api/tools/README.md +0 -73
  489. package/node_modules/node-addon-api/tools/check-napi.js +0 -99
  490. package/node_modules/node-addon-api/tools/clang-format.js +0 -71
  491. package/node_modules/node-addon-api/tools/conversion.js +0 -301
  492. package/node_modules/node-gyp-build/README.md +0 -58
  493. package/node_modules/node-gyp-build/SECURITY.md +0 -5
  494. package/node_modules/node-gyp-build/bin.js +0 -84
  495. package/node_modules/node-gyp-build/build-test.js +0 -19
  496. package/node_modules/node-gyp-build/index.js +0 -6
  497. package/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  498. package/node_modules/node-gyp-build/optional.js +0 -7
  499. package/node_modules/node-gyp-build/package.json +0 -43
  500. package/node_modules/tree-sitter/README.md +0 -128
  501. package/node_modules/tree-sitter/binding.gyp +0 -80
  502. package/node_modules/tree-sitter/index.js +0 -916
  503. package/node_modules/tree-sitter/package.json +0 -76
  504. package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  505. package/node_modules/tree-sitter/src/addon_data.h +0 -47
  506. package/node_modules/tree-sitter/src/binding.cc +0 -35
  507. package/node_modules/tree-sitter/src/conversions.cc +0 -140
  508. package/node_modules/tree-sitter/src/conversions.h +0 -22
  509. package/node_modules/tree-sitter/src/language.cc +0 -106
  510. package/node_modules/tree-sitter/src/language.h +0 -17
  511. package/node_modules/tree-sitter/src/logger.cc +0 -70
  512. package/node_modules/tree-sitter/src/logger.h +0 -19
  513. package/node_modules/tree-sitter/src/lookaheaditerator.cc +0 -122
  514. package/node_modules/tree-sitter/src/lookaheaditerator.h +0 -33
  515. package/node_modules/tree-sitter/src/node.cc +0 -1088
  516. package/node_modules/tree-sitter/src/node.h +0 -30
  517. package/node_modules/tree-sitter/src/parser.cc +0 -306
  518. package/node_modules/tree-sitter/src/parser.h +0 -35
  519. package/node_modules/tree-sitter/src/query.cc +0 -397
  520. package/node_modules/tree-sitter/src/query.h +0 -40
  521. package/node_modules/tree-sitter/src/tree.cc +0 -316
  522. package/node_modules/tree-sitter/src/tree.h +0 -45
  523. package/node_modules/tree-sitter/src/tree_cursor.cc +0 -213
  524. package/node_modules/tree-sitter/src/tree_cursor.h +0 -52
  525. package/node_modules/tree-sitter/tree-sitter.d.ts +0 -1042
  526. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +0 -1478
  527. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +0 -48
  528. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +0 -41
  529. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +0 -291
  530. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +0 -68
  531. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +0 -146
  532. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +0 -11
  533. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +0 -523
  534. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +0 -36
  535. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +0 -21
  536. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +0 -293
  537. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +0 -293
  538. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +0 -52
  539. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +0 -483
  540. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +0 -54
  541. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +0 -12
  542. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +0 -875
  543. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +0 -2293
  544. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +0 -286
  545. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +0 -48
  546. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +0 -239
  547. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +0 -4350
  548. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +0 -34
  549. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +0 -95
  550. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +0 -911
  551. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +0 -133
  552. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +0 -1034
  553. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +0 -399
  554. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +0 -170
  555. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +0 -31
  556. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +0 -717
  557. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +0 -48
  558. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +0 -11
  559. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +0 -1
  560. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +0 -414
  561. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +0 -29
  562. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +0 -1
  563. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +0 -448
  564. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +0 -1
  565. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +0 -1
  566. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +0 -733
  567. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +0 -881
  568. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +0 -75
  569. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +0 -24
  570. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +0 -113
  571. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +0 -1314
  572. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +0 -1935
  573. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +0 -31
  574. package/scripts/postinstall-tree-sitter.mjs +0 -28
@@ -0,0 +1,74 @@
1
+ import path from 'path';
2
+ import crypto from 'crypto';
3
+ import fs from 'fs-extra';
4
+ import { HISTORY_SCHEMA_VERSION, MAX_SNAPSHOTS } from './types.js';
5
+ export const HISTORY_FILENAME = 'arch-health-history.json';
6
+ export function historyFilePath(archDir) {
7
+ return path.join(archDir, HISTORY_FILENAME);
8
+ }
9
+ async function readRawHistory(archDir) {
10
+ const filePath = historyFilePath(archDir);
11
+ if (!(await fs.pathExists(filePath)))
12
+ return null;
13
+ let raw;
14
+ try {
15
+ raw = await fs.readJson(filePath);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ if (typeof raw !== 'object' || raw === null)
21
+ return null;
22
+ return raw;
23
+ }
24
+ export async function readHistoryFile(archDir) {
25
+ const raw = await readRawHistory(archDir);
26
+ if (raw === null)
27
+ return null;
28
+ if (typeof raw.schemaVersion !== 'number')
29
+ return null;
30
+ if (raw.schemaVersion !== HISTORY_SCHEMA_VERSION)
31
+ return null;
32
+ if (!Array.isArray(raw.snapshots))
33
+ return null;
34
+ return {
35
+ schemaVersion: HISTORY_SCHEMA_VERSION,
36
+ language: typeof raw.language === 'string' ? raw.language : 'unknown',
37
+ snapshots: raw.snapshots,
38
+ };
39
+ }
40
+ export async function writeHistoryFile(archDir, history) {
41
+ const filePath = historyFilePath(archDir);
42
+ await fs.ensureDir(archDir);
43
+ const suffix = crypto.randomUUID().slice(0, 8);
44
+ const tmpPath = `${filePath}.tmp.${suffix}`;
45
+ await fs.writeJson(tmpPath, history, { spaces: 2 });
46
+ await fs.rename(tmpPath, filePath);
47
+ }
48
+ export async function appendSnapshot(archDir, language, snapshot) {
49
+ const raw = await readRawHistory(archDir);
50
+ if (raw !== null && raw.schemaVersion !== HISTORY_SCHEMA_VERSION) {
51
+ return {
52
+ ok: false,
53
+ reason: `history schemaVersion ${String(raw.schemaVersion)} is not compatible with ${HISTORY_SCHEMA_VERSION}`,
54
+ previous: null,
55
+ };
56
+ }
57
+ const existingSnapshots = raw !== null && Array.isArray(raw.snapshots)
58
+ ? raw.snapshots
59
+ : [];
60
+ const previous = existingSnapshots.length > 0 ? existingSnapshots[existingSnapshots.length - 1] : null;
61
+ const snapshots = [...existingSnapshots, snapshot];
62
+ snapshots.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
63
+ if (snapshots.length > MAX_SNAPSHOTS) {
64
+ snapshots.splice(0, snapshots.length - MAX_SNAPSHOTS);
65
+ }
66
+ const history = {
67
+ schemaVersion: HISTORY_SCHEMA_VERSION,
68
+ language,
69
+ snapshots,
70
+ };
71
+ await writeHistoryFile(archDir, history);
72
+ return { ok: true, previous };
73
+ }
74
+ //# sourceMappingURL=history-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-writer.js","sourceRoot":"","sources":["../../../src/analysis/jl/history-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IntrinsicDimensionResult, ProjectionMode } from './types.js';
2
+ export interface ComputeIntrinsicDimensionInput {
3
+ matrix: number[][];
4
+ entityCount: number;
5
+ mode: ProjectionMode;
6
+ k: number | null;
7
+ epsilon: number | null;
8
+ featureVersion?: string;
9
+ timestamp?: string;
10
+ commitSha?: string;
11
+ varianceThreshold?: number;
12
+ }
13
+ export declare function computeIntrinsicDimension(input: ComputeIntrinsicDimensionInput): IntrinsicDimensionResult;
14
+ //# sourceMappingURL=intrinsic-dimension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-dimension.d.ts","sourceRoot":"","sources":["../../../src/analysis/jl/intrinsic-dimension.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3E,MAAM,WAAW,8BAA8B;IAE7C,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IAEnB,WAAW,EAAE,MAAM,CAAC;IAEpB,IAAI,EAAE,cAAc,CAAC;IAErB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA8BD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,wBAAwB,CAgF1B"}
@@ -0,0 +1,80 @@
1
+ import { SVD } from 'ml-matrix';
2
+ import { FEATURE_VERSION, VARIANCE_THRESHOLD } from './types.js';
3
+ function round4(value) {
4
+ return Math.round(value * 10000) / 10000;
5
+ }
6
+ function centerColumns(matrix) {
7
+ const rows = matrix.length;
8
+ const cols = rows > 0 ? matrix[0].length : 0;
9
+ if (rows === 0 || cols === 0)
10
+ return [];
11
+ const means = new Array(cols).fill(0);
12
+ for (let j = 0; j < cols; j++) {
13
+ let sum = 0;
14
+ for (let i = 0; i < rows; i++)
15
+ sum += matrix[i][j];
16
+ means[j] = sum / rows;
17
+ }
18
+ return matrix.map((row) => row.map((value, j) => value - means[j]));
19
+ }
20
+ export function computeIntrinsicDimension(input) {
21
+ const { matrix, entityCount, mode, k, epsilon, featureVersion = FEATURE_VERSION, timestamp = new Date().toISOString(), commitSha, varianceThreshold = VARIANCE_THRESHOLD, } = input;
22
+ if (entityCount < 3) {
23
+ console.warn(`[jl] low entity count (${entityCount} < 3): d_int is not meaningful`);
24
+ }
25
+ const rows = matrix.length;
26
+ const cols = rows > 0 ? matrix[0].length : 0;
27
+ const isZeroMatrix = rows === 0 || cols === 0;
28
+ let singularValues = [];
29
+ if (!isZeroMatrix) {
30
+ const centered = centerColumns(matrix);
31
+ const svd = new SVD(centered);
32
+ singularValues = Array.from(svd.diagonal);
33
+ }
34
+ const totalEnergy = singularValues.reduce((sum, s) => sum + s * s, 0);
35
+ const noDependencies = isZeroMatrix || totalEnergy < 1e-12;
36
+ let dInt;
37
+ let varianceExplained;
38
+ if (noDependencies) {
39
+ console.warn('[jl] no dependencies detected (zero adjacency matrix): d_int = 0, varianceExplained = []');
40
+ dInt = 0;
41
+ varianceExplained = [];
42
+ }
43
+ else {
44
+ let cumulative = 0;
45
+ dInt = 0;
46
+ for (let i = 0; i < singularValues.length; i++) {
47
+ cumulative += singularValues[i] * singularValues[i];
48
+ if (cumulative / totalEnergy >= varianceThreshold) {
49
+ dInt = i + 1;
50
+ break;
51
+ }
52
+ }
53
+ if (dInt === 0)
54
+ dInt = singularValues.length;
55
+ const length = Math.min(dInt + 10, singularValues.length);
56
+ varianceExplained = new Array(length);
57
+ cumulative = 0;
58
+ for (let i = 0; i < length; i++) {
59
+ cumulative += singularValues[i] * singularValues[i];
60
+ varianceExplained[i] = cumulative / totalEnergy;
61
+ }
62
+ if (varianceExplained.length > 0) {
63
+ varianceExplained[varianceExplained.length - 1] = 1.0;
64
+ }
65
+ }
66
+ const dIntNormalized = entityCount > 0 ? round4(dInt / entityCount) : 0;
67
+ return {
68
+ timestamp,
69
+ commitSha,
70
+ entityCount,
71
+ mode,
72
+ featureVersion,
73
+ k,
74
+ dInt,
75
+ dIntNormalized,
76
+ varianceExplained,
77
+ epsilon,
78
+ };
79
+ }
80
+ //# sourceMappingURL=intrinsic-dimension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-dimension.js","sourceRoot":"","sources":["../../../src/analysis/jl/intrinsic-dimension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JLConfig, ProjectionMode } from './types.js';
2
+ export declare function computeMode(entityCount: number, config: JLConfig): ProjectionMode;
3
+ export declare function computeK(entityCount: number, epsilon: number): number;
4
+ export declare function mulberry32(seed: number): () => number;
5
+ export declare function buildAchlioptas(k: number, n: number, seed: number): number[][];
6
+ export declare function project(matrix: number[][], achlioptas: number[][], k: number): number[][];
7
+ //# sourceMappingURL=jl-projector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jl-projector.d.ts","sourceRoot":"","sources":["../../../src/analysis/jl/jl-projector.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ3D,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAEjF;AAUD,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CASrD;AAUD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAc9E;AAWD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAiBzF"}
@@ -0,0 +1,52 @@
1
+ export function computeMode(entityCount, config) {
2
+ return entityCount < config.directModeThreshold ? 'direct' : 'jl';
3
+ }
4
+ export function computeK(entityCount, epsilon) {
5
+ return Math.ceil((4 * Math.log(entityCount)) / (epsilon * epsilon));
6
+ }
7
+ export function mulberry32(seed) {
8
+ let a = seed >>> 0;
9
+ return function next() {
10
+ a |= 0;
11
+ a = (a + 0x6d2b79f5) | 0;
12
+ let t = Math.imul(a ^ (a >>> 15), 1 | a);
13
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
14
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
15
+ };
16
+ }
17
+ export function buildAchlioptas(k, n, seed) {
18
+ const rand = mulberry32(seed);
19
+ const matrix = new Array(k);
20
+ for (let i = 0; i < k; i++) {
21
+ const row = new Array(n);
22
+ for (let j = 0; j < n; j++) {
23
+ const r = rand();
24
+ if (r < 1 / 6)
25
+ row[j] = 1;
26
+ else if (r < 2 / 6)
27
+ row[j] = -1;
28
+ else
29
+ row[j] = 0;
30
+ }
31
+ matrix[i] = row;
32
+ }
33
+ return matrix;
34
+ }
35
+ export function project(matrix, achlioptas, k) {
36
+ const rows = matrix.length;
37
+ const result = new Array(rows);
38
+ const invSqrtK = 1 / Math.sqrt(k);
39
+ for (let i = 0; i < rows; i++) {
40
+ const outRow = new Array(k);
41
+ for (let col = 0; col < k; col++) {
42
+ let sum = 0;
43
+ for (let j = 0; j < matrix[i].length; j++) {
44
+ sum += matrix[i][j] * achlioptas[col][j];
45
+ }
46
+ outRow[col] = sum * invSqrtK;
47
+ }
48
+ result[i] = outRow;
49
+ }
50
+ return result;
51
+ }
52
+ //# sourceMappingURL=jl-projector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jl-projector.js","sourceRoot":"","sources":["../../../src/analysis/jl/jl-projector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { KMeansOptions, KMeansResult } from './types.js';
2
+ export declare function detectOrphans(matrix: number[][]): number[];
3
+ export declare class KMeansClusterer {
4
+ static cluster(matrix: number[][], options?: KMeansOptions): KMeansResult;
5
+ private static selectK;
6
+ private static runKMeans;
7
+ private static kmeanspp;
8
+ private static lloydIterate;
9
+ private static silhouette;
10
+ }
11
+ //# sourceMappingURL=kmeans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmeans.d.ts","sourceRoot":"","sources":["../../../src/analysis/jl/kmeans.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAc1D;AAyBD,qBAAa,eAAe;IAS1B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY;IAgF7E,OAAO,CAAC,MAAM,CAAC,OAAO;IAoDtB,OAAO,CAAC,MAAM,CAAC,SAAS;IAWxB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAmCvB,OAAO,CAAC,MAAM,CAAC,YAAY;IAkE3B,OAAO,CAAC,MAAM,CAAC,UAAU;CAmD1B"}
@@ -0,0 +1,273 @@
1
+ import { mulberry32 } from './jl-projector.js';
2
+ const DEFAULT_MAX_ITERATIONS = 100;
3
+ const DEFAULT_CONVERGENCE_THRESHOLD = 0.001;
4
+ const DEFAULT_SEED = 42;
5
+ const DEFAULT_SAMPLE_SIZE = 500;
6
+ const DEFAULT_SAMPLE_THRESHOLD = 2000;
7
+ export function detectOrphans(matrix) {
8
+ const orphans = [];
9
+ for (let i = 0; i < matrix.length; i++) {
10
+ const row = matrix[i];
11
+ let zero = true;
12
+ for (let j = 0; j < row.length; j++) {
13
+ if (row[j] !== 0) {
14
+ zero = false;
15
+ break;
16
+ }
17
+ }
18
+ if (zero)
19
+ orphans.push(i);
20
+ }
21
+ return orphans;
22
+ }
23
+ function euclidean(a, b) {
24
+ const len = Math.min(a.length, b.length);
25
+ let sum = 0;
26
+ for (let i = 0; i < len; i++) {
27
+ const d = (a[i] ?? 0) - (b[i] ?? 0);
28
+ sum += d * d;
29
+ }
30
+ return Math.sqrt(sum);
31
+ }
32
+ function nearestCentroid(point, centroids) {
33
+ let bestIndex = 0;
34
+ let bestDistance = Infinity;
35
+ for (let c = 0; c < centroids.length; c++) {
36
+ const d = euclidean(point, centroids[c]);
37
+ if (d < bestDistance) {
38
+ bestDistance = d;
39
+ bestIndex = c;
40
+ }
41
+ }
42
+ return bestIndex;
43
+ }
44
+ export class KMeansClusterer {
45
+ static cluster(matrix, options = {}) {
46
+ const seed = options.seed ?? DEFAULT_SEED;
47
+ const maxIterations = options.maxIterations ?? DEFAULT_MAX_ITERATIONS;
48
+ const convergenceThreshold = options.convergenceThreshold ?? DEFAULT_CONVERGENCE_THRESHOLD;
49
+ const sampleSize = options.sampleSize ?? DEFAULT_SAMPLE_SIZE;
50
+ const sampleThreshold = options.sampleThreshold ?? DEFAULT_SAMPLE_THRESHOLD;
51
+ const orphanSet = new Set(detectOrphans(matrix));
52
+ const entityIndices = [];
53
+ const clean = [];
54
+ for (let i = 0; i < matrix.length; i++) {
55
+ if (!orphanSet.has(i)) {
56
+ entityIndices.push(i);
57
+ clean.push(matrix[i]);
58
+ }
59
+ }
60
+ const orphanIndices = Array.from(orphanSet).sort((a, b) => a - b);
61
+ const n = clean.length;
62
+ if (n === 0) {
63
+ return {
64
+ k: 0,
65
+ assignments: [],
66
+ centroids: [],
67
+ silhouetteScore: 0,
68
+ converged: true,
69
+ iterations: 0,
70
+ orphanIndices,
71
+ entityIndices,
72
+ };
73
+ }
74
+ if (n === 1) {
75
+ return {
76
+ k: 1,
77
+ assignments: [0],
78
+ centroids: [clean[0]],
79
+ silhouetteScore: 0,
80
+ converged: true,
81
+ iterations: 1,
82
+ orphanIndices,
83
+ entityIndices,
84
+ };
85
+ }
86
+ const kInit = Math.max(2, options.kInit ?? 2);
87
+ const minK = Math.min(Math.max(2, kInit - 2), n);
88
+ const maxK = Math.min(kInit + 3, n);
89
+ const kRange = [];
90
+ for (let k = minK; k <= maxK; k++)
91
+ kRange.push(k);
92
+ const selected = this.selectK(clean, kRange, {
93
+ maxIterations,
94
+ convergenceThreshold,
95
+ seed,
96
+ sampleSize,
97
+ sampleThreshold,
98
+ });
99
+ const base = {
100
+ k: selected.k,
101
+ assignments: selected.assignments,
102
+ centroids: selected.centroids,
103
+ silhouetteScore: selected.silhouetteScore,
104
+ converged: selected.converged,
105
+ iterations: selected.iterations,
106
+ orphanIndices,
107
+ entityIndices,
108
+ };
109
+ if (selected.silhouetteScore < 0.2) {
110
+ return { ...base, warning: 'no clear cluster structure detected' };
111
+ }
112
+ return base;
113
+ }
114
+ static selectK(matrix, kRange, options) {
115
+ let best = null;
116
+ for (const k of kRange) {
117
+ const run = this.runKMeans(matrix, k, options);
118
+ const sil = this.silhouette(matrix, run.assignments, options);
119
+ if (best === null || sil > best.silhouetteScore) {
120
+ best = {
121
+ k,
122
+ assignments: run.assignments,
123
+ centroids: run.centroids,
124
+ silhouetteScore: sil,
125
+ converged: run.converged,
126
+ iterations: run.iterations,
127
+ };
128
+ }
129
+ }
130
+ return best;
131
+ }
132
+ static runKMeans(matrix, k, options) {
133
+ const rng = mulberry32(options.seed);
134
+ const initial = this.kmeanspp(matrix, k, rng);
135
+ return this.lloydIterate(matrix, initial, options.maxIterations, options.convergenceThreshold);
136
+ }
137
+ static kmeanspp(matrix, k, rng) {
138
+ const n = matrix.length;
139
+ const centroids = [];
140
+ const first = Math.floor(rng() * n);
141
+ centroids.push([...matrix[first]]);
142
+ const d2 = new Array(n).fill(0);
143
+ for (let c = 1; c < k; c++) {
144
+ let total = 0;
145
+ for (let i = 0; i < n; i++) {
146
+ const nearest = nearestCentroid(matrix[i], centroids);
147
+ d2[i] = euclidean(matrix[i], centroids[nearest]) ** 2;
148
+ total += d2[i];
149
+ }
150
+ if (total === 0) {
151
+ centroids.push([...matrix[Math.floor(rng() * n)]]);
152
+ }
153
+ else {
154
+ let r = rng() * total;
155
+ let idx = n - 1;
156
+ for (let i = 0; i < n; i++) {
157
+ r -= d2[i];
158
+ if (r <= 0) {
159
+ idx = i;
160
+ break;
161
+ }
162
+ }
163
+ centroids.push([...matrix[idx]]);
164
+ }
165
+ }
166
+ return centroids;
167
+ }
168
+ static lloydIterate(matrix, initialCentroids, maxIterations, convergenceThreshold) {
169
+ const n = matrix.length;
170
+ const k = initialCentroids.length;
171
+ const dim = matrix[0].length;
172
+ let centroids = initialCentroids.map((c) => [...c]);
173
+ const assignments = new Array(n).fill(0);
174
+ let converged = false;
175
+ let iterations = 0;
176
+ for (let iter = 1; iter <= maxIterations; iter++) {
177
+ iterations = iter;
178
+ for (let i = 0; i < n; i++)
179
+ assignments[i] = nearestCentroid(matrix[i], centroids);
180
+ const counts = new Array(k).fill(0);
181
+ const sums = Array.from({ length: k }, () => new Array(dim).fill(0));
182
+ for (let i = 0; i < n; i++) {
183
+ const c = assignments[i];
184
+ counts[c]++;
185
+ const row = matrix[i];
186
+ for (let d = 0; d < dim; d++)
187
+ sums[c][d] += row[d];
188
+ }
189
+ const newCentroids = new Array(k);
190
+ for (let c = 0; c < k; c++) {
191
+ if (counts[c] === 0) {
192
+ let farIndex = 0;
193
+ let farDist = -1;
194
+ for (let i = 0; i < n; i++) {
195
+ const d = euclidean(matrix[i], centroids[assignments[i]]);
196
+ if (d > farDist) {
197
+ farDist = d;
198
+ farIndex = i;
199
+ }
200
+ }
201
+ newCentroids[c] = [...matrix[farIndex]];
202
+ }
203
+ else {
204
+ newCentroids[c] = sums[c].map((s) => s / counts[c]);
205
+ }
206
+ }
207
+ let maxShift = 0;
208
+ for (let c = 0; c < k; c++) {
209
+ const shift = euclidean(centroids[c], newCentroids[c]);
210
+ if (shift > maxShift)
211
+ maxShift = shift;
212
+ }
213
+ centroids = newCentroids;
214
+ if (maxShift < convergenceThreshold) {
215
+ converged = true;
216
+ break;
217
+ }
218
+ }
219
+ return { assignments, centroids, converged, iterations };
220
+ }
221
+ static silhouette(matrix, assignments, options) {
222
+ const n = matrix.length;
223
+ const k = assignments.length > 0 ? Math.max(...assignments) + 1 : 0;
224
+ const members = Array.from({ length: k }, () => []);
225
+ for (let i = 0; i < n; i++)
226
+ members[assignments[i]].push(i);
227
+ let sample;
228
+ if (n > options.sampleThreshold) {
229
+ const rng = mulberry32(options.seed);
230
+ const size = Math.min(options.sampleSize, n);
231
+ sample = new Array(size);
232
+ for (let s = 0; s < size; s++)
233
+ sample[s] = Math.floor(rng() * n);
234
+ }
235
+ else {
236
+ sample = Array.from({ length: n }, (_, i) => i);
237
+ }
238
+ let sum = 0;
239
+ let count = 0;
240
+ for (const i of sample) {
241
+ const ci = assignments[i];
242
+ const same = members[ci];
243
+ let aSum = 0;
244
+ let aCount = 0;
245
+ for (const j of same) {
246
+ if (j === i)
247
+ continue;
248
+ aSum += euclidean(matrix[i], matrix[j]);
249
+ aCount++;
250
+ }
251
+ const a = aCount > 0 ? aSum / aCount : 0;
252
+ let b = Infinity;
253
+ for (let c = 0; c < k; c++) {
254
+ if (c === ci)
255
+ continue;
256
+ const other = members[c];
257
+ if (other.length === 0)
258
+ continue;
259
+ let bSum = 0;
260
+ for (const j of other)
261
+ bSum += euclidean(matrix[i], matrix[j]);
262
+ const bMean = bSum / other.length;
263
+ if (bMean < b)
264
+ b = bMean;
265
+ }
266
+ const s = aCount === 0 || b === Infinity ? 0 : (b - a) / Math.max(a, b);
267
+ sum += s;
268
+ count++;
269
+ }
270
+ return count > 0 ? sum / count : 0;
271
+ }
272
+ }
273
+ //# sourceMappingURL=kmeans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmeans.js","sourceRoot":"","sources":["../../../src/analysis/jl/kmeans.ts"],"names":[],"mappings":"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"}