homegraph 1.2.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/README.md +48 -11
  2. package/dist/bin/homegraph.js +298 -72
  3. package/dist/bin/homegraph.js.map +1 -1
  4. package/dist/context/index.d.ts.map +1 -1
  5. package/dist/context/index.js +117 -11
  6. package/dist/context/index.js.map +1 -1
  7. package/dist/db/index.d.ts +207 -6
  8. package/dist/db/index.d.ts.map +1 -1
  9. package/dist/db/index.js +461 -20
  10. package/dist/db/index.js.map +1 -1
  11. package/dist/db/migrations.d.ts +1 -1
  12. package/dist/db/migrations.d.ts.map +1 -1
  13. package/dist/db/migrations.js +19 -1
  14. package/dist/db/migrations.js.map +1 -1
  15. package/dist/db/queries.d.ts +157 -3
  16. package/dist/db/queries.d.ts.map +1 -1
  17. package/dist/db/queries.js +426 -9
  18. package/dist/db/queries.js.map +1 -1
  19. package/dist/db/schema.sql +32 -1
  20. package/dist/db/sqlite-adapter.d.ts +24 -17
  21. package/dist/db/sqlite-adapter.d.ts.map +1 -1
  22. package/dist/db/sqlite-adapter.js +292 -36
  23. package/dist/db/sqlite-adapter.js.map +1 -1
  24. package/dist/db/wal-valve.d.ts +119 -0
  25. package/dist/db/wal-valve.d.ts.map +1 -0
  26. package/dist/db/wal-valve.js +290 -0
  27. package/dist/db/wal-valve.js.map +1 -0
  28. package/dist/directory.d.ts +9 -5
  29. package/dist/directory.d.ts.map +1 -1
  30. package/dist/directory.js +210 -19
  31. package/dist/directory.js.map +1 -1
  32. package/dist/extraction/arkts-batch-worker.js +3 -2
  33. package/dist/extraction/arkts-batch-worker.js.map +1 -1
  34. package/dist/extraction/cfml-extractor.d.ts +107 -0
  35. package/dist/extraction/cfml-extractor.d.ts.map +1 -0
  36. package/dist/extraction/cfml-extractor.js +494 -0
  37. package/dist/extraction/cfml-extractor.js.map +1 -0
  38. package/dist/extraction/default-ignore.d.ts +39 -0
  39. package/dist/extraction/default-ignore.d.ts.map +1 -0
  40. package/dist/extraction/default-ignore.js +221 -0
  41. package/dist/extraction/default-ignore.js.map +1 -0
  42. package/dist/extraction/grammars.d.ts +25 -1
  43. package/dist/extraction/grammars.d.ts.map +1 -1
  44. package/dist/extraction/grammars.js +177 -24
  45. package/dist/extraction/grammars.js.map +1 -1
  46. package/dist/extraction/index.d.ts +52 -14
  47. package/dist/extraction/index.d.ts.map +1 -1
  48. package/dist/extraction/index.js +521 -314
  49. package/dist/extraction/index.js.map +1 -1
  50. package/dist/extraction/languages/arkts.d.ts +90 -6
  51. package/dist/extraction/languages/arkts.d.ts.map +1 -1
  52. package/dist/extraction/languages/arkts.js +1579 -128
  53. package/dist/extraction/languages/arkts.js.map +1 -1
  54. package/dist/extraction/languages/c-cpp.d.ts +42 -0
  55. package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  56. package/dist/extraction/languages/c-cpp.js +369 -4
  57. package/dist/extraction/languages/c-cpp.js.map +1 -1
  58. package/dist/extraction/languages/cfquery.d.ts +12 -0
  59. package/dist/extraction/languages/cfquery.d.ts.map +1 -0
  60. package/dist/extraction/languages/cfquery.js +28 -0
  61. package/dist/extraction/languages/cfquery.js.map +1 -0
  62. package/dist/extraction/languages/cfscript.d.ts +3 -0
  63. package/dist/extraction/languages/cfscript.d.ts.map +1 -0
  64. package/dist/extraction/languages/cfscript.js +73 -0
  65. package/dist/extraction/languages/cfscript.js.map +1 -0
  66. package/dist/extraction/languages/cobol.d.ts +33 -0
  67. package/dist/extraction/languages/cobol.d.ts.map +1 -0
  68. package/dist/extraction/languages/cobol.js +499 -0
  69. package/dist/extraction/languages/cobol.js.map +1 -0
  70. package/dist/extraction/languages/erlang.d.ts +3 -0
  71. package/dist/extraction/languages/erlang.d.ts.map +1 -0
  72. package/dist/extraction/languages/erlang.js +350 -0
  73. package/dist/extraction/languages/erlang.js.map +1 -0
  74. package/dist/extraction/languages/index.d.ts.map +1 -1
  75. package/dist/extraction/languages/index.js +16 -0
  76. package/dist/extraction/languages/index.js.map +1 -1
  77. package/dist/extraction/languages/nix.d.ts +3 -0
  78. package/dist/extraction/languages/nix.d.ts.map +1 -0
  79. package/dist/extraction/languages/nix.js +294 -0
  80. package/dist/extraction/languages/nix.js.map +1 -0
  81. package/dist/extraction/languages/solidity.d.ts +3 -0
  82. package/dist/extraction/languages/solidity.d.ts.map +1 -0
  83. package/dist/extraction/languages/solidity.js +293 -0
  84. package/dist/extraction/languages/solidity.js.map +1 -0
  85. package/dist/extraction/languages/terraform.d.ts +3 -0
  86. package/dist/extraction/languages/terraform.d.ts.map +1 -0
  87. package/dist/extraction/languages/terraform.js +641 -0
  88. package/dist/extraction/languages/terraform.js.map +1 -0
  89. package/dist/extraction/languages/vbnet.d.ts +11 -0
  90. package/dist/extraction/languages/vbnet.d.ts.map +1 -0
  91. package/dist/extraction/languages/vbnet.js +141 -0
  92. package/dist/extraction/languages/vbnet.js.map +1 -0
  93. package/dist/extraction/mybatis-extractor.d.ts +30 -10
  94. package/dist/extraction/mybatis-extractor.d.ts.map +1 -1
  95. package/dist/extraction/mybatis-extractor.js +140 -38
  96. package/dist/extraction/mybatis-extractor.js.map +1 -1
  97. package/dist/extraction/parse-pool.d.ts +27 -1
  98. package/dist/extraction/parse-pool.d.ts.map +1 -1
  99. package/dist/extraction/parse-pool.js +75 -7
  100. package/dist/extraction/parse-pool.js.map +1 -1
  101. package/dist/extraction/parse-worker.js +9 -2
  102. package/dist/extraction/parse-worker.js.map +1 -1
  103. package/dist/extraction/store-worker.d.ts +20 -0
  104. package/dist/extraction/store-worker.d.ts.map +1 -0
  105. package/dist/extraction/store-worker.js +102 -0
  106. package/dist/extraction/store-worker.js.map +1 -0
  107. package/dist/extraction/store-writer.d.ts +48 -0
  108. package/dist/extraction/store-writer.d.ts.map +1 -0
  109. package/dist/extraction/store-writer.js +167 -0
  110. package/dist/extraction/store-writer.js.map +1 -0
  111. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
  112. package/dist/extraction/tree-sitter-helpers.js +1 -0
  113. package/dist/extraction/tree-sitter-helpers.js.map +1 -1
  114. package/dist/extraction/tree-sitter-types.d.ts +3 -1
  115. package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  116. package/dist/extraction/tree-sitter.d.ts +38 -0
  117. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  118. package/dist/extraction/tree-sitter.js +801 -10
  119. package/dist/extraction/tree-sitter.js.map +1 -1
  120. package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
  121. package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  122. package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  123. package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  124. package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  125. package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  126. package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  127. package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
  128. package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  129. package/dist/extraction/wasm-runtime-flags.d.ts +14 -4
  130. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
  131. package/dist/extraction/wasm-runtime-flags.js +55 -7
  132. package/dist/extraction/wasm-runtime-flags.js.map +1 -1
  133. package/dist/graph/traversal.d.ts.map +1 -1
  134. package/dist/graph/traversal.js +1 -1
  135. package/dist/graph/traversal.js.map +1 -1
  136. package/dist/index.d.ts +74 -5
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +436 -55
  139. package/dist/index.js.map +1 -1
  140. package/dist/installer/index.d.ts +42 -0
  141. package/dist/installer/index.d.ts.map +1 -1
  142. package/dist/installer/index.js +97 -2
  143. package/dist/installer/index.js.map +1 -1
  144. package/dist/mcp/daemon.d.ts +25 -3
  145. package/dist/mcp/daemon.d.ts.map +1 -1
  146. package/dist/mcp/daemon.js +62 -8
  147. package/dist/mcp/daemon.js.map +1 -1
  148. package/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
  149. package/dist/mcp/dynamic-boundaries.js +2 -1
  150. package/dist/mcp/dynamic-boundaries.js.map +1 -1
  151. package/dist/mcp/early-ppid.d.ts +26 -0
  152. package/dist/mcp/early-ppid.d.ts.map +1 -0
  153. package/dist/mcp/early-ppid.js +29 -0
  154. package/dist/mcp/early-ppid.js.map +1 -0
  155. package/dist/mcp/engine.d.ts +4 -5
  156. package/dist/mcp/engine.d.ts.map +1 -1
  157. package/dist/mcp/engine.js +27 -1
  158. package/dist/mcp/engine.js.map +1 -1
  159. package/dist/mcp/index.d.ts.map +1 -1
  160. package/dist/mcp/index.js +41 -6
  161. package/dist/mcp/index.js.map +1 -1
  162. package/dist/mcp/liveness-watchdog.d.ts +18 -1
  163. package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
  164. package/dist/mcp/liveness-watchdog.js +73 -13
  165. package/dist/mcp/liveness-watchdog.js.map +1 -1
  166. package/dist/mcp/memory-budget.d.ts +30 -0
  167. package/dist/mcp/memory-budget.d.ts.map +1 -0
  168. package/dist/mcp/memory-budget.js +123 -0
  169. package/dist/mcp/memory-budget.js.map +1 -0
  170. package/dist/mcp/proxy.d.ts.map +1 -1
  171. package/dist/mcp/proxy.js +88 -4
  172. package/dist/mcp/proxy.js.map +1 -1
  173. package/dist/mcp/query-cache.d.ts +35 -4
  174. package/dist/mcp/query-cache.d.ts.map +1 -1
  175. package/dist/mcp/query-cache.js +89 -19
  176. package/dist/mcp/query-cache.js.map +1 -1
  177. package/dist/mcp/query-pool.d.ts +46 -12
  178. package/dist/mcp/query-pool.d.ts.map +1 -1
  179. package/dist/mcp/query-pool.js +100 -23
  180. package/dist/mcp/query-pool.js.map +1 -1
  181. package/dist/mcp/query-worker.d.ts +2 -2
  182. package/dist/mcp/query-worker.js +2 -2
  183. package/dist/mcp/server-instructions.d.ts +4 -27
  184. package/dist/mcp/server-instructions.d.ts.map +1 -1
  185. package/dist/mcp/server-instructions.js +39 -84
  186. package/dist/mcp/server-instructions.js.map +1 -1
  187. package/dist/mcp/session.d.ts +14 -0
  188. package/dist/mcp/session.d.ts.map +1 -1
  189. package/dist/mcp/session.js +28 -1
  190. package/dist/mcp/session.js.map +1 -1
  191. package/dist/mcp/startup-handshake.d.ts +44 -0
  192. package/dist/mcp/startup-handshake.d.ts.map +1 -0
  193. package/dist/mcp/startup-handshake.js +73 -0
  194. package/dist/mcp/startup-handshake.js.map +1 -0
  195. package/dist/mcp/tools.d.ts +104 -4
  196. package/dist/mcp/tools.d.ts.map +1 -1
  197. package/dist/mcp/tools.js +2432 -217
  198. package/dist/mcp/tools.js.map +1 -1
  199. package/dist/mcp/transport.d.ts.map +1 -1
  200. package/dist/mcp/transport.js +18 -0
  201. package/dist/mcp/transport.js.map +1 -1
  202. package/dist/project-config.d.ts +38 -0
  203. package/dist/project-config.d.ts.map +1 -1
  204. package/dist/project-config.js +101 -2
  205. package/dist/project-config.js.map +1 -1
  206. package/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
  207. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
  208. package/dist/resolution/c-fnptr-synthesizer.js +178 -146
  209. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
  210. package/dist/resolution/callback-synthesizer.d.ts +54 -10
  211. package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  212. package/dist/resolution/callback-synthesizer.js +1299 -257
  213. package/dist/resolution/callback-synthesizer.js.map +1 -1
  214. package/dist/resolution/cooperative-yield.d.ts +10 -2
  215. package/dist/resolution/cooperative-yield.d.ts.map +1 -1
  216. package/dist/resolution/cooperative-yield.js +6 -4
  217. package/dist/resolution/cooperative-yield.js.map +1 -1
  218. package/dist/resolution/frameworks/cics.d.ts +20 -0
  219. package/dist/resolution/frameworks/cics.d.ts.map +1 -0
  220. package/dist/resolution/frameworks/cics.js +90 -0
  221. package/dist/resolution/frameworks/cics.js.map +1 -0
  222. package/dist/resolution/frameworks/go.d.ts.map +1 -1
  223. package/dist/resolution/frameworks/go.js +29 -6
  224. package/dist/resolution/frameworks/go.js.map +1 -1
  225. package/dist/resolution/frameworks/index.d.ts.map +1 -1
  226. package/dist/resolution/frameworks/index.js +3 -0
  227. package/dist/resolution/frameworks/index.js.map +1 -1
  228. package/dist/resolution/frameworks/java.d.ts.map +1 -1
  229. package/dist/resolution/frameworks/java.js +14 -6
  230. package/dist/resolution/frameworks/java.js.map +1 -1
  231. package/dist/resolution/frameworks/terraform.d.ts +38 -0
  232. package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
  233. package/dist/resolution/frameworks/terraform.js +277 -0
  234. package/dist/resolution/frameworks/terraform.js.map +1 -0
  235. package/dist/resolution/goframe-synthesizer.d.ts +2 -1
  236. package/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
  237. package/dist/resolution/goframe-synthesizer.js +8 -3
  238. package/dist/resolution/goframe-synthesizer.js.map +1 -1
  239. package/dist/resolution/import-resolver.d.ts +9 -3
  240. package/dist/resolution/import-resolver.d.ts.map +1 -1
  241. package/dist/resolution/import-resolver.js +295 -11
  242. package/dist/resolution/import-resolver.js.map +1 -1
  243. package/dist/resolution/index.d.ts +146 -8
  244. package/dist/resolution/index.d.ts.map +1 -1
  245. package/dist/resolution/index.js +1089 -131
  246. package/dist/resolution/index.js.map +1 -1
  247. package/dist/resolution/memory-budget.d.ts +48 -0
  248. package/dist/resolution/memory-budget.d.ts.map +1 -0
  249. package/dist/resolution/memory-budget.js +162 -0
  250. package/dist/resolution/memory-budget.js.map +1 -0
  251. package/dist/resolution/name-matcher.d.ts +12 -4
  252. package/dist/resolution/name-matcher.d.ts.map +1 -1
  253. package/dist/resolution/name-matcher.js +793 -130
  254. package/dist/resolution/name-matcher.js.map +1 -1
  255. package/dist/resolution/resolver-pool.d.ts +106 -0
  256. package/dist/resolution/resolver-pool.d.ts.map +1 -0
  257. package/dist/resolution/resolver-pool.js +344 -0
  258. package/dist/resolution/resolver-pool.js.map +1 -0
  259. package/dist/resolution/resolver-worker.d.ts +17 -0
  260. package/dist/resolution/resolver-worker.d.ts.map +1 -0
  261. package/dist/resolution/resolver-worker.js +141 -0
  262. package/dist/resolution/resolver-worker.js.map +1 -0
  263. package/dist/resolution/strip-comments.d.ts +1 -1
  264. package/dist/resolution/strip-comments.d.ts.map +1 -1
  265. package/dist/resolution/strip-comments.js +49 -0
  266. package/dist/resolution/strip-comments.js.map +1 -1
  267. package/dist/resolution/types.d.ts +32 -0
  268. package/dist/resolution/types.d.ts.map +1 -1
  269. package/dist/resolution/workspace-packages.d.ts +10 -0
  270. package/dist/resolution/workspace-packages.d.ts.map +1 -1
  271. package/dist/resolution/workspace-packages.js +142 -4
  272. package/dist/resolution/workspace-packages.js.map +1 -1
  273. package/dist/search/identifier-segments.d.ts +60 -0
  274. package/dist/search/identifier-segments.d.ts.map +1 -0
  275. package/dist/search/identifier-segments.js +176 -0
  276. package/dist/search/identifier-segments.js.map +1 -0
  277. package/dist/search/query-utils.d.ts +201 -0
  278. package/dist/search/query-utils.d.ts.map +1 -1
  279. package/dist/search/query-utils.js +919 -2
  280. package/dist/search/query-utils.js.map +1 -1
  281. package/dist/spec/build/diff-parser.d.ts +55 -0
  282. package/dist/spec/build/diff-parser.d.ts.map +1 -0
  283. package/dist/spec/build/diff-parser.js +205 -0
  284. package/dist/spec/build/diff-parser.js.map +1 -0
  285. package/dist/spec/build/git-scanner.d.ts +93 -0
  286. package/dist/spec/build/git-scanner.d.ts.map +1 -0
  287. package/dist/spec/build/git-scanner.js +254 -0
  288. package/dist/spec/build/git-scanner.js.map +1 -0
  289. package/dist/spec/build/pipeline.d.ts +54 -0
  290. package/dist/spec/build/pipeline.d.ts.map +1 -0
  291. package/dist/spec/build/pipeline.js +170 -0
  292. package/dist/spec/build/pipeline.js.map +1 -0
  293. package/dist/spec/build/scan.d.ts +48 -0
  294. package/dist/spec/build/scan.d.ts.map +1 -0
  295. package/dist/spec/build/scan.js +89 -0
  296. package/dist/spec/build/scan.js.map +1 -0
  297. package/dist/spec/build/scope-resolver.d.ts +50 -0
  298. package/dist/spec/build/scope-resolver.d.ts.map +1 -0
  299. package/dist/spec/build/scope-resolver.js +105 -0
  300. package/dist/spec/build/scope-resolver.js.map +1 -0
  301. package/dist/spec/build/spec-extractor.d.ts +74 -0
  302. package/dist/spec/build/spec-extractor.d.ts.map +1 -0
  303. package/dist/spec/build/spec-extractor.js +344 -0
  304. package/dist/spec/build/spec-extractor.js.map +1 -0
  305. package/dist/spec/config.d.ts +35 -1
  306. package/dist/spec/config.d.ts.map +1 -1
  307. package/dist/spec/config.js +30 -5
  308. package/dist/spec/config.js.map +1 -1
  309. package/dist/spec/db/fts.d.ts.map +1 -1
  310. package/dist/spec/db/fts.js +19 -50
  311. package/dist/spec/db/fts.js.map +1 -1
  312. package/dist/spec/db/index.d.ts +5 -3
  313. package/dist/spec/db/index.d.ts.map +1 -1
  314. package/dist/spec/db/index.js +16 -1
  315. package/dist/spec/db/index.js.map +1 -1
  316. package/dist/spec/db/persist.d.ts +45 -0
  317. package/dist/spec/db/persist.d.ts.map +1 -0
  318. package/dist/spec/db/persist.js +66 -0
  319. package/dist/spec/db/persist.js.map +1 -0
  320. package/dist/spec/db/relations.d.ts +80 -1
  321. package/dist/spec/db/relations.d.ts.map +1 -1
  322. package/dist/spec/db/relations.js +175 -4
  323. package/dist/spec/db/relations.js.map +1 -1
  324. package/dist/spec/db/schema.d.ts +4 -0
  325. package/dist/spec/db/schema.d.ts.map +1 -1
  326. package/dist/spec/db/schema.js +4 -0
  327. package/dist/spec/db/schema.js.map +1 -1
  328. package/dist/spec/db/schema.sql +5 -1
  329. package/dist/spec/db/spec-node.d.ts +5 -0
  330. package/dist/spec/db/spec-node.d.ts.map +1 -1
  331. package/dist/spec/db/spec-node.js +11 -5
  332. package/dist/spec/db/spec-node.js.map +1 -1
  333. package/dist/spec/db/sql-utils.d.ts +11 -0
  334. package/dist/spec/db/sql-utils.d.ts.map +1 -0
  335. package/dist/spec/db/sql-utils.js +19 -0
  336. package/dist/spec/db/sql-utils.js.map +1 -0
  337. package/dist/spec/evolve/cluster-context.d.ts +30 -0
  338. package/dist/spec/evolve/cluster-context.d.ts.map +1 -0
  339. package/dist/spec/evolve/cluster-context.js +78 -0
  340. package/dist/spec/evolve/cluster-context.js.map +1 -0
  341. package/dist/spec/evolve/commit-spec-analyzer.d.ts +51 -0
  342. package/dist/spec/evolve/commit-spec-analyzer.d.ts.map +1 -0
  343. package/dist/spec/evolve/commit-spec-analyzer.js +88 -0
  344. package/dist/spec/evolve/commit-spec-analyzer.js.map +1 -0
  345. package/dist/spec/evolve/commit-spec-persister.d.ts +53 -0
  346. package/dist/spec/evolve/commit-spec-persister.d.ts.map +1 -0
  347. package/dist/spec/evolve/commit-spec-persister.js +93 -0
  348. package/dist/spec/evolve/commit-spec-persister.js.map +1 -0
  349. package/dist/spec/evolve/impact-locator.d.ts +23 -7
  350. package/dist/spec/evolve/impact-locator.d.ts.map +1 -1
  351. package/dist/spec/evolve/impact-locator.js +58 -14
  352. package/dist/spec/evolve/impact-locator.js.map +1 -1
  353. package/dist/spec/evolve/pipeline.d.ts +62 -25
  354. package/dist/spec/evolve/pipeline.d.ts.map +1 -1
  355. package/dist/spec/evolve/pipeline.js +436 -457
  356. package/dist/spec/evolve/pipeline.js.map +1 -1
  357. package/dist/spec/evolve/spec-rewriter.d.ts +13 -13
  358. package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -1
  359. package/dist/spec/evolve/spec-rewriter.js +45 -45
  360. package/dist/spec/evolve/spec-rewriter.js.map +1 -1
  361. package/dist/spec/git/commits.d.ts +85 -0
  362. package/dist/spec/git/commits.d.ts.map +1 -0
  363. package/dist/spec/git/commits.js +218 -0
  364. package/dist/spec/git/commits.js.map +1 -0
  365. package/dist/spec/git/exec.d.ts +13 -0
  366. package/dist/spec/git/exec.d.ts.map +1 -0
  367. package/dist/spec/git/exec.js +19 -0
  368. package/dist/spec/git/exec.js.map +1 -0
  369. package/dist/spec/git/index.d.ts +9 -0
  370. package/dist/spec/git/index.d.ts.map +1 -0
  371. package/dist/spec/git/index.js +22 -0
  372. package/dist/spec/git/index.js.map +1 -0
  373. package/dist/spec/git-utils.d.ts +8 -0
  374. package/dist/spec/git-utils.d.ts.map +1 -0
  375. package/dist/spec/git-utils.js +14 -0
  376. package/dist/spec/git-utils.js.map +1 -0
  377. package/dist/spec/graph/index.d.ts +8 -0
  378. package/dist/spec/graph/index.d.ts.map +1 -0
  379. package/dist/spec/graph/index.js +17 -0
  380. package/dist/spec/graph/index.js.map +1 -0
  381. package/dist/spec/graph/queries.d.ts +6 -35
  382. package/dist/spec/graph/queries.d.ts.map +1 -1
  383. package/dist/spec/graph/queries.js +71 -248
  384. package/dist/spec/graph/queries.js.map +1 -1
  385. package/dist/spec/llm/agent-client.d.ts +59 -0
  386. package/dist/spec/llm/agent-client.d.ts.map +1 -0
  387. package/dist/spec/llm/agent-client.js +213 -0
  388. package/dist/spec/llm/agent-client.js.map +1 -0
  389. package/dist/spec/llm/agents/claude-code.d.ts +32 -0
  390. package/dist/spec/llm/agents/claude-code.d.ts.map +1 -0
  391. package/dist/spec/llm/agents/claude-code.js +125 -0
  392. package/dist/spec/llm/agents/claude-code.js.map +1 -0
  393. package/dist/spec/llm/agents/codex.d.ts +32 -0
  394. package/dist/spec/llm/agents/codex.d.ts.map +1 -0
  395. package/dist/spec/llm/agents/codex.js +145 -0
  396. package/dist/spec/llm/agents/codex.js.map +1 -0
  397. package/dist/spec/llm/agents/detect-utils.d.ts +28 -0
  398. package/dist/spec/llm/agents/detect-utils.d.ts.map +1 -0
  399. package/dist/spec/llm/agents/detect-utils.js +91 -0
  400. package/dist/spec/llm/agents/detect-utils.js.map +1 -0
  401. package/dist/spec/llm/agents/deveco-code.d.ts +33 -0
  402. package/dist/spec/llm/agents/deveco-code.d.ts.map +1 -0
  403. package/dist/spec/llm/agents/deveco-code.js +165 -0
  404. package/dist/spec/llm/agents/deveco-code.js.map +1 -0
  405. package/dist/spec/llm/agents/index.d.ts +31 -0
  406. package/dist/spec/llm/agents/index.d.ts.map +1 -0
  407. package/dist/spec/llm/agents/index.js +65 -0
  408. package/dist/spec/llm/agents/index.js.map +1 -0
  409. package/dist/spec/llm/agents/types.d.ts +76 -0
  410. package/dist/spec/llm/agents/types.d.ts.map +1 -0
  411. package/dist/spec/llm/agents/types.js +15 -0
  412. package/dist/spec/llm/agents/types.js.map +1 -0
  413. package/dist/spec/llm/client.d.ts +31 -11
  414. package/dist/spec/llm/client.d.ts.map +1 -1
  415. package/dist/spec/llm/client.js +143 -81
  416. package/dist/spec/llm/client.js.map +1 -1
  417. package/dist/spec/llm/factory.d.ts +41 -0
  418. package/dist/spec/llm/factory.d.ts.map +1 -0
  419. package/dist/spec/llm/factory.js +80 -0
  420. package/dist/spec/llm/factory.js.map +1 -0
  421. package/dist/spec/llm/prompts.d.ts +24 -8
  422. package/dist/spec/llm/prompts.d.ts.map +1 -1
  423. package/dist/spec/llm/prompts.js +100 -50
  424. package/dist/spec/llm/prompts.js.map +1 -1
  425. package/dist/spec/llm/retry.d.ts +53 -0
  426. package/dist/spec/llm/retry.d.ts.map +1 -0
  427. package/dist/spec/llm/retry.js +153 -0
  428. package/dist/spec/llm/retry.js.map +1 -0
  429. package/dist/spec/mine/clusterer.d.ts +63 -0
  430. package/dist/spec/mine/clusterer.d.ts.map +1 -0
  431. package/dist/spec/mine/clusterer.js +904 -0
  432. package/dist/spec/mine/clusterer.js.map +1 -0
  433. package/dist/spec/mine/clustering/features.d.ts +38 -0
  434. package/dist/spec/mine/clustering/features.d.ts.map +1 -0
  435. package/dist/spec/mine/clustering/features.js +108 -0
  436. package/dist/spec/mine/clustering/features.js.map +1 -0
  437. package/dist/spec/mine/clustering/index.d.ts +62 -0
  438. package/dist/spec/mine/clustering/index.d.ts.map +1 -0
  439. package/dist/spec/mine/clustering/index.js +259 -0
  440. package/dist/spec/mine/clustering/index.js.map +1 -0
  441. package/dist/spec/mine/clustering/leiden.d.ts +61 -0
  442. package/dist/spec/mine/clustering/leiden.d.ts.map +1 -0
  443. package/dist/spec/mine/clustering/leiden.js +489 -0
  444. package/dist/spec/mine/clustering/leiden.js.map +1 -0
  445. package/dist/spec/mine/clustering/text-similarity.d.ts +22 -0
  446. package/dist/spec/mine/clustering/text-similarity.d.ts.map +1 -0
  447. package/dist/spec/mine/clustering/text-similarity.js +98 -0
  448. package/dist/spec/mine/clustering/text-similarity.js.map +1 -0
  449. package/dist/spec/mine/generator.d.ts +54 -0
  450. package/dist/spec/mine/generator.d.ts.map +1 -0
  451. package/dist/spec/mine/generator.js +267 -0
  452. package/dist/spec/mine/generator.js.map +1 -0
  453. package/dist/spec/mine/persist.d.ts +37 -0
  454. package/dist/spec/mine/persist.d.ts.map +1 -0
  455. package/dist/spec/mine/persist.js +170 -0
  456. package/dist/spec/mine/persist.js.map +1 -0
  457. package/dist/spec/mine/pipeline.d.ts +41 -0
  458. package/dist/spec/mine/pipeline.d.ts.map +1 -0
  459. package/dist/spec/mine/pipeline.js +236 -0
  460. package/dist/spec/mine/pipeline.js.map +1 -0
  461. package/dist/spec/mine/progress-handler.d.ts +22 -0
  462. package/dist/spec/mine/progress-handler.d.ts.map +1 -0
  463. package/dist/spec/mine/progress-handler.js +108 -0
  464. package/dist/spec/mine/progress-handler.js.map +1 -0
  465. package/dist/spec/mine/progress.d.ts +23 -0
  466. package/dist/spec/mine/progress.d.ts.map +1 -0
  467. package/dist/spec/mine/progress.js +12 -0
  468. package/dist/spec/mine/progress.js.map +1 -0
  469. package/dist/spec/mine/scanner.d.ts +59 -0
  470. package/dist/spec/mine/scanner.d.ts.map +1 -0
  471. package/dist/spec/mine/scanner.js +383 -0
  472. package/dist/spec/mine/scanner.js.map +1 -0
  473. package/dist/spec/types.d.ts +32 -0
  474. package/dist/spec/types.d.ts.map +1 -1
  475. package/dist/spec/ui/index.d.ts +9 -0
  476. package/dist/spec/ui/index.d.ts.map +1 -0
  477. package/dist/spec/ui/index.js +16 -0
  478. package/dist/spec/ui/index.js.map +1 -0
  479. package/dist/spec/ui/progress-handler.d.ts +33 -0
  480. package/dist/spec/ui/progress-handler.d.ts.map +1 -0
  481. package/dist/spec/ui/progress-handler.js +132 -0
  482. package/dist/spec/ui/progress-handler.js.map +1 -0
  483. package/dist/spec/ui/progress.d.ts +24 -0
  484. package/dist/spec/ui/progress.d.ts.map +1 -0
  485. package/dist/spec/ui/progress.js +13 -0
  486. package/dist/spec/ui/progress.js.map +1 -0
  487. package/dist/spec/utils/fs.d.ts +45 -0
  488. package/dist/spec/utils/fs.d.ts.map +1 -0
  489. package/dist/spec/utils/fs.js +163 -0
  490. package/dist/spec/utils/fs.js.map +1 -0
  491. package/dist/spec/utils/index.d.ts +12 -0
  492. package/dist/spec/utils/index.d.ts.map +1 -0
  493. package/dist/spec/utils/index.js +26 -0
  494. package/dist/spec/utils/index.js.map +1 -0
  495. package/dist/spec/utils/meta.d.ts +32 -0
  496. package/dist/spec/utils/meta.d.ts.map +1 -0
  497. package/dist/spec/utils/meta.js +122 -0
  498. package/dist/spec/utils/meta.js.map +1 -0
  499. package/dist/spec/utils/truncate.d.ts +86 -0
  500. package/dist/spec/utils/truncate.d.ts.map +1 -0
  501. package/dist/spec/utils/truncate.js +172 -0
  502. package/dist/spec/utils/truncate.js.map +1 -0
  503. package/dist/spec/utils.d.ts +4 -16
  504. package/dist/spec/utils.d.ts.map +1 -1
  505. package/dist/spec/utils.js +6 -58
  506. package/dist/spec/utils.js.map +1 -1
  507. package/dist/sync/git-hooks.d.ts.map +1 -1
  508. package/dist/sync/git-hooks.js +2 -0
  509. package/dist/sync/git-hooks.js.map +1 -1
  510. package/dist/sync/watcher.d.ts +35 -6
  511. package/dist/sync/watcher.d.ts.map +1 -1
  512. package/dist/sync/watcher.js +127 -17
  513. package/dist/sync/watcher.js.map +1 -1
  514. package/dist/sync/worktree.d.ts.map +1 -1
  515. package/dist/sync/worktree.js +5 -0
  516. package/dist/sync/worktree.js.map +1 -1
  517. package/dist/telemetry/index.js +3 -3
  518. package/dist/telemetry/index.js.map +1 -1
  519. package/dist/types.d.ts +22 -1
  520. package/dist/types.d.ts.map +1 -1
  521. package/dist/types.js +10 -0
  522. package/dist/types.js.map +1 -1
  523. package/dist/upgrade/index.d.ts +32 -0
  524. package/dist/upgrade/index.d.ts.map +1 -1
  525. package/dist/upgrade/index.js +162 -14
  526. package/dist/upgrade/index.js.map +1 -1
  527. package/dist/upgrade/remove-binary.d.ts +87 -0
  528. package/dist/upgrade/remove-binary.d.ts.map +1 -0
  529. package/dist/upgrade/remove-binary.js +289 -0
  530. package/dist/upgrade/remove-binary.js.map +1 -0
  531. package/dist/upgrade/update-check.d.ts +92 -0
  532. package/dist/upgrade/update-check.d.ts.map +1 -0
  533. package/dist/upgrade/update-check.js +258 -0
  534. package/dist/upgrade/update-check.js.map +1 -0
  535. package/package.json +6 -2
  536. package/scripts/agent-eval/run-all.sh +6 -0
  537. package/scripts/build-bundle.sh +5 -0
  538. package/scripts/npm-shim.js +8 -1
  539. package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
  540. package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
  541. package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
  542. package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
  543. package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
  544. package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
  545. package/scripts/exp_boundary_eval/data/agents.json +0 -109
  546. package/scripts/exp_boundary_eval/data/experiments.json +0 -140
  547. package/scripts/qa_eval/README.md +0 -407
  548. package/scripts/qa_eval/_test_deveco_probe.py +0 -41
  549. package/scripts/qa_eval/agent_runner.py +0 -526
  550. package/scripts/qa_eval/data/.gitignore +0 -4
  551. package/scripts/qa_eval/data/test-set.jsonl +0 -2
  552. package/scripts/qa_eval/eval_metrics.py +0 -274
  553. package/scripts/qa_eval/external_agent.py +0 -976
  554. package/scripts/qa_eval/llm_config.py +0 -92
  555. package/scripts/qa_eval/memory_monitor.py +0 -132
  556. package/scripts/qa_eval/my_answer_accuracy.py +0 -187
  557. package/scripts/qa_eval/requirements.txt +0 -2
  558. package/scripts/qa_eval/run_pipeline.py +0 -804
  559. package/scripts/qa_eval/stats_efficiency.py +0 -279
  560. package/scripts/qa_eval/stats_scores.py +0 -207
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusterer.js","sourceRoot":"","sources":["../../../src/spec/mine/clusterer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Per-commit feature extraction for clustering — symbol names, file paths,
3
+ * directory prefixes, ticket references, change counts, and cohesion.
4
+ *
5
+ * @module spec/mine/clustering/features
6
+ */
7
+ import { CommitChange } from '../scanner';
8
+ /** Minimum number of changed symbols (added + removed + modified) required
9
+ * for a solo commit to be promoted into its own cluster. Commits below
10
+ * this threshold go to `unclustered` — they are too small to warrant a
11
+ * standalone spec document. */
12
+ export declare const MIN_SYMBOLS_FOR_SOLO_CLUSTER = 2;
13
+ /** Collect all symbol names across all file changes in a commit. */
14
+ export declare function collectSymbolNames(change: CommitChange): string[];
15
+ /** Collect all file paths changed in a commit. */
16
+ export declare function collectFilePaths(change: CommitChange): string[];
17
+ /** Collect directory prefixes (first 2 path segments) for module proximity.
18
+ * For single-segment paths (root-level files) the filename itself is used as
19
+ * the key — this prevents unrelated root-level files from falsely sharing an
20
+ * empty "directory" and being grouped together. */
21
+ export declare function collectDirectoryPrefixes(change: CommitChange): string[];
22
+ /** Count total changed symbols across all file changes in a commit. */
23
+ export declare function countChangedSymbols(change: CommitChange): number;
24
+ /** Compute the cohesion ratio for a commit — symbols changed per file touched.
25
+ * Low cohesion (< 1.0) suggests a mechanical refactor across many files;
26
+ * high cohesion (≥ 2.0) suggests concentrated feature work. */
27
+ export declare function computeCohesion(change: CommitChange): number;
28
+ /** Extract ticket references (e.g., PROJ-123, #456) from a commit message. */
29
+ export declare function extractTicketRefs(message: string): string[];
30
+ /**
31
+ * Fallback quality gate: true when a commit has at least one new file that
32
+ * is not a test file. Used when the symbol-level change count is below the
33
+ * solo-cluster threshold — a commit that adds non-test source files carries
34
+ * structural intent even when the extractor could not produce symbols
35
+ * (e.g. ArkTS files without an active extraction context).
36
+ */
37
+ export declare function hasNewNonTestFiles(change: CommitChange): boolean;
38
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/features.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;gCAGgC;AAChC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAWjE;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAM/D;AAED;;;oDAGoD;AACpD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAWvE;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQhE;AAED;;gEAEgE;AAChE,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAI5D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ3D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAOhE"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /**
3
+ * Per-commit feature extraction for clustering — symbol names, file paths,
4
+ * directory prefixes, ticket references, change counts, and cohesion.
5
+ *
6
+ * @module spec/mine/clustering/features
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MIN_SYMBOLS_FOR_SOLO_CLUSTER = void 0;
10
+ exports.collectSymbolNames = collectSymbolNames;
11
+ exports.collectFilePaths = collectFilePaths;
12
+ exports.collectDirectoryPrefixes = collectDirectoryPrefixes;
13
+ exports.countChangedSymbols = countChangedSymbols;
14
+ exports.computeCohesion = computeCohesion;
15
+ exports.extractTicketRefs = extractTicketRefs;
16
+ exports.hasNewNonTestFiles = hasNewNonTestFiles;
17
+ const query_utils_1 = require("../../../search/query-utils");
18
+ /** Minimum number of changed symbols (added + removed + modified) required
19
+ * for a solo commit to be promoted into its own cluster. Commits below
20
+ * this threshold go to `unclustered` — they are too small to warrant a
21
+ * standalone spec document. */
22
+ exports.MIN_SYMBOLS_FOR_SOLO_CLUSTER = 2;
23
+ /** Collect all symbol names across all file changes in a commit. */
24
+ function collectSymbolNames(change) {
25
+ const names = new Set();
26
+ for (const fc of change.fileChanges) {
27
+ for (const s of fc.addedSymbols)
28
+ names.add(s.name);
29
+ for (const s of fc.removedSymbols)
30
+ names.add(s.name);
31
+ for (const m of fc.modifiedSymbols) {
32
+ names.add(m.old.name);
33
+ names.add(m.new.name);
34
+ }
35
+ }
36
+ return Array.from(names);
37
+ }
38
+ /** Collect all file paths changed in a commit. */
39
+ function collectFilePaths(change) {
40
+ const paths = new Set();
41
+ for (const fc of change.fileChanges) {
42
+ paths.add(fc.filePath);
43
+ }
44
+ return Array.from(paths);
45
+ }
46
+ /** Collect directory prefixes (first 2 path segments) for module proximity.
47
+ * For single-segment paths (root-level files) the filename itself is used as
48
+ * the key — this prevents unrelated root-level files from falsely sharing an
49
+ * empty "directory" and being grouped together. */
50
+ function collectDirectoryPrefixes(change) {
51
+ const dirs = new Set();
52
+ for (const fc of change.fileChanges) {
53
+ const parts = fc.filePath.split('/');
54
+ if (parts.length === 1) {
55
+ dirs.add(parts[0]);
56
+ }
57
+ else {
58
+ dirs.add(parts.slice(0, 2).join('/'));
59
+ }
60
+ }
61
+ return Array.from(dirs);
62
+ }
63
+ /** Count total changed symbols across all file changes in a commit. */
64
+ function countChangedSymbols(change) {
65
+ let count = 0;
66
+ for (const fc of change.fileChanges) {
67
+ count += fc.addedSymbols.length;
68
+ count += fc.removedSymbols.length;
69
+ count += fc.modifiedSymbols.length;
70
+ }
71
+ return count;
72
+ }
73
+ /** Compute the cohesion ratio for a commit — symbols changed per file touched.
74
+ * Low cohesion (< 1.0) suggests a mechanical refactor across many files;
75
+ * high cohesion (≥ 2.0) suggests concentrated feature work. */
76
+ function computeCohesion(change) {
77
+ const totalSymbols = countChangedSymbols(change);
78
+ const filesTouched = change.fileChanges.length || 1;
79
+ return totalSymbols / filesTouched;
80
+ }
81
+ /** Extract ticket references (e.g., PROJ-123, #456) from a commit message. */
82
+ function extractTicketRefs(message) {
83
+ const refs = [];
84
+ const jiraRe = /[A-Z]+-\d+/g;
85
+ const ghRe = /#\d+/g;
86
+ let m;
87
+ while ((m = jiraRe.exec(message)) !== null)
88
+ refs.push(m[0]);
89
+ while ((m = ghRe.exec(message)) !== null)
90
+ refs.push(m[0]);
91
+ return Array.from(new Set(refs));
92
+ }
93
+ /**
94
+ * Fallback quality gate: true when a commit has at least one new file that
95
+ * is not a test file. Used when the symbol-level change count is below the
96
+ * solo-cluster threshold — a commit that adds non-test source files carries
97
+ * structural intent even when the extractor could not produce symbols
98
+ * (e.g. ArkTS files without an active extraction context).
99
+ */
100
+ function hasNewNonTestFiles(change) {
101
+ for (const fc of change.fileChanges) {
102
+ if (fc.isNewFile && !(0, query_utils_1.isTestFile)(fc.filePath)) {
103
+ return true;
104
+ }
105
+ }
106
+ return false;
107
+ }
108
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Commit Clusterer — multi-signal graph clustering for the `spec mine` pipeline.
3
+ *
4
+ * Groups commits by structural (AST symbol overlap), file-path, temporal,
5
+ * and commit-message similarity. Pure TypeScript implementation — no native
6
+ * dependencies required.
7
+ *
8
+ * Orchestrates the pieces in this directory:
9
+ * - `text-similarity` — tokenize / Jaccard / cosine / TF-IDF
10
+ * - `features` — per-commit feature extraction
11
+ * - `leiden` — generic Leiden community detection + tuning
12
+ *
13
+ * @module spec/mine/clustering
14
+ */
15
+ import { CommitChange } from '../scanner';
16
+ /** A cluster of semantically-related commits. */
17
+ export interface CommitCluster {
18
+ id: number;
19
+ commits: CommitChange[];
20
+ primaryFiles: string[];
21
+ primarySymbols: string[];
22
+ summary: string;
23
+ timeRange: {
24
+ start: number;
25
+ end: number;
26
+ };
27
+ }
28
+ /** Full clustering result including unclustered outliers and stats. */
29
+ export interface ClusterResult {
30
+ clusters: CommitCluster[];
31
+ unclustered: CommitChange[];
32
+ stats: {
33
+ totalCommits: number;
34
+ clusteredCommits: number;
35
+ clusterCount: number;
36
+ };
37
+ }
38
+ /**
39
+ * Cluster commits using Leiden community detection on a multi-signal
40
+ * similarity graph, with recursive sub-splitting for large clusters.
41
+ *
42
+ * The pipeline:
43
+ * 1. Build a weighted similarity graph from AST symbol, file-path,
44
+ * commit-message TF-IDF, ticket-reference, and temporal signals.
45
+ * 2. Run Leiden community detection with auto-tuned resolution γ.
46
+ * 3. Greedy-merge if still too many communities.
47
+ * 4. Recursively split large clusters (≥ 4 commits) by running
48
+ * Leiden on their sub-graphs.
49
+ *
50
+ * Replaces the previous Louvain (no refinement) and connected-components
51
+ * (single-linkage chaining) approaches.
52
+ *
53
+ * @param changes - AST change data for each commit.
54
+ * @param threshold - Minimum similarity (0-1) for considering an edge.
55
+ * @param maxClusters - Desired maximum number of top-level clusters.
56
+ * The resolution parameter γ is auto-tuned to approach
57
+ * this target. Recursive splitting may produce more
58
+ * clusters at finer granularities.
59
+ * @returns Clustered result with stats.
60
+ */
61
+ export declare function clusterCommits(changes: CommitChange[], threshold: number, maxClusters: number): ClusterResult;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAwB1C,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAoFD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,aAAa,CA0Mf"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ /**
3
+ * Commit Clusterer — multi-signal graph clustering for the `spec mine` pipeline.
4
+ *
5
+ * Groups commits by structural (AST symbol overlap), file-path, temporal,
6
+ * and commit-message similarity. Pure TypeScript implementation — no native
7
+ * dependencies required.
8
+ *
9
+ * Orchestrates the pieces in this directory:
10
+ * - `text-similarity` — tokenize / Jaccard / cosine / TF-IDF
11
+ * - `features` — per-commit feature extraction
12
+ * - `leiden` — generic Leiden community detection + tuning
13
+ *
14
+ * @module spec/mine/clustering
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.clusterCommits = clusterCommits;
18
+ const errors_1 = require("../../../errors");
19
+ const text_similarity_1 = require("./text-similarity");
20
+ const features_1 = require("./features");
21
+ const leiden_1 = require("./leiden");
22
+ // ---------------------------------------------------------------------------
23
+ // Similarity Computation
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * Compute multi-signal similarity between two commits.
27
+ *
28
+ * Weights:
29
+ * - Symbol overlap (Jaccard): 0.40
30
+ * - Spatial proximity (Jaccard): 0.15 (max of file-path and dir-prefix)
31
+ * - Message TF-IDF cosine: 0.25
32
+ * - Ticket reference overlap: 0.10
33
+ * - Temporal proximity: 0.10 (half-life 3 days)
34
+ *
35
+ * A cohesion penalty is applied as a multiplier when one commit has low
36
+ * symbol-per-file density (< 2.0), which is characteristic of mechanical
37
+ * refactors that should not bridge unrelated feature clusters.
38
+ */
39
+ function computeSimilarity(a, b, aSymbols, bSymbols, aFiles, bFiles, aDirs, bDirs, aTickets, bTickets, msgTfidfMatrix, aIdx, bIdx) {
40
+ // Symbol overlap — highest weight because AST-level diff is precise
41
+ const symbolSim = (0, text_similarity_1.jaccard)(aSymbols, bSymbols);
42
+ // Spatial proximity — max of exact file-path and module-level dir-prefix
43
+ // overlap, so same-file edits get full credit and same-module edits also
44
+ // connect, without double-counting the same spatial dimension.
45
+ const spatialSim = Math.max((0, text_similarity_1.jaccard)(aFiles, bFiles), (0, text_similarity_1.jaccard)(aDirs, bDirs));
46
+ // Message TF-IDF cosine
47
+ const msgSim = (0, text_similarity_1.cosineSimilarity)(msgTfidfMatrix[aIdx], msgTfidfMatrix[bIdx]);
48
+ // Ticket reference overlap
49
+ const ticketSim = (0, text_similarity_1.jaccard)(aTickets, bTickets);
50
+ // Temporal proximity — half-life 3 days (259200 seconds)
51
+ const halfLife = 3 * 24 * 60 * 60 * 1000;
52
+ const maxTimeSpan = Math.abs(a.timestamp - b.timestamp);
53
+ const timeSim = Math.exp(-maxTimeSpan / halfLife);
54
+ // Cohesion penalty: low cohesion (many files, few symbols) = refactor-like.
55
+ // Penalty multiplier: 0.6 at cohesion 0 → 1.0 at cohesion ≥ 2.0
56
+ const minCohesion = Math.min((0, features_1.computeCohesion)(a), (0, features_1.computeCohesion)(b));
57
+ const cohesionPenalty = minCohesion >= 2.0
58
+ ? 1.0
59
+ : 0.6 + 0.4 * (minCohesion / 2.0);
60
+ const rawScore = 0.40 * symbolSim +
61
+ 0.15 * spatialSim +
62
+ 0.25 * msgSim +
63
+ 0.10 * ticketSim +
64
+ 0.10 * timeSim;
65
+ return rawScore * cohesionPenalty;
66
+ }
67
+ // ---------------------------------------------------------------------------
68
+ // Public API
69
+ // ---------------------------------------------------------------------------
70
+ /**
71
+ * Cluster commits using Leiden community detection on a multi-signal
72
+ * similarity graph, with recursive sub-splitting for large clusters.
73
+ *
74
+ * The pipeline:
75
+ * 1. Build a weighted similarity graph from AST symbol, file-path,
76
+ * commit-message TF-IDF, ticket-reference, and temporal signals.
77
+ * 2. Run Leiden community detection with auto-tuned resolution γ.
78
+ * 3. Greedy-merge if still too many communities.
79
+ * 4. Recursively split large clusters (≥ 4 commits) by running
80
+ * Leiden on their sub-graphs.
81
+ *
82
+ * Replaces the previous Louvain (no refinement) and connected-components
83
+ * (single-linkage chaining) approaches.
84
+ *
85
+ * @param changes - AST change data for each commit.
86
+ * @param threshold - Minimum similarity (0-1) for considering an edge.
87
+ * @param maxClusters - Desired maximum number of top-level clusters.
88
+ * The resolution parameter γ is auto-tuned to approach
89
+ * this target. Recursive splitting may produce more
90
+ * clusters at finer granularities.
91
+ * @returns Clustered result with stats.
92
+ */
93
+ function clusterCommits(changes, threshold, maxClusters) {
94
+ const n = changes.length;
95
+ // Edge cases: 0 or 1 commit — avoid Leiden overhead.
96
+ if (n === 0) {
97
+ return {
98
+ clusters: [],
99
+ unclustered: [],
100
+ stats: { totalCommits: 0, clusteredCommits: 0, clusterCount: 0 },
101
+ };
102
+ }
103
+ if (n === 1) {
104
+ const c = changes[0];
105
+ const totalSymbols = (0, features_1.countChangedSymbols)(c);
106
+ if (totalSymbols < features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER && !(0, features_1.hasNewNonTestFiles)(c)) {
107
+ (0, errors_1.logDebug)('Clusterer: single commit below quality threshold', {
108
+ hash: c.commitHash.slice(0, 7),
109
+ changedSymbols: totalSymbols,
110
+ minRequired: features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER,
111
+ });
112
+ return {
113
+ clusters: [],
114
+ unclustered: [c],
115
+ stats: { totalCommits: 1, clusteredCommits: 0, clusterCount: 0 },
116
+ };
117
+ }
118
+ const syms = (0, features_1.collectSymbolNames)(c);
119
+ const files = (0, features_1.collectFilePaths)(c);
120
+ return {
121
+ clusters: [
122
+ {
123
+ id: 0,
124
+ commits: [c],
125
+ primaryFiles: files,
126
+ primarySymbols: syms,
127
+ summary: `1 commit: ${c.commitMessage}`,
128
+ timeRange: { start: c.timestamp, end: c.timestamp },
129
+ },
130
+ ],
131
+ unclustered: [],
132
+ stats: { totalCommits: 1, clusteredCommits: 1, clusterCount: 1 },
133
+ };
134
+ }
135
+ // n >= 2: full pipeline from here.
136
+ // --- Pre-compute per-commit feature vectors ---
137
+ const messages = [];
138
+ const allSymbols = [];
139
+ const allFiles = [];
140
+ const allDirs = [];
141
+ const allTickets = [];
142
+ for (const change of changes) {
143
+ messages.push((0, text_similarity_1.tokenize)(change.commitMessage));
144
+ allSymbols.push((0, features_1.collectSymbolNames)(change));
145
+ allFiles.push((0, features_1.collectFilePaths)(change));
146
+ allDirs.push((0, features_1.collectDirectoryPrefixes)(change));
147
+ allTickets.push((0, features_1.extractTicketRefs)(change.commitMessage));
148
+ }
149
+ // --- Build TF-IDF vectors for commit messages ---
150
+ const tfidf = new text_similarity_1.TfidfVectorizer();
151
+ tfidf.fit(messages);
152
+ const msgTfidfMatrix = messages.map((msg) => tfidf.transform(msg));
153
+ // --- Build weighted similarity graph ---
154
+ const graph = Array.from({ length: n }, () => new Array(n).fill(0));
155
+ for (let i = 0; i < n; i++) {
156
+ for (let j = i + 1; j < n; j++) {
157
+ const sim = computeSimilarity(changes[i], changes[j], allSymbols[i], allSymbols[j], allFiles[i], allFiles[j], allDirs[i], allDirs[j], allTickets[i], allTickets[j], msgTfidfMatrix, i, j);
158
+ if (sim >= threshold) {
159
+ graph[i][j] = sim;
160
+ graph[j][i] = sim;
161
+ }
162
+ }
163
+ }
164
+ // --- Leiden community detection with auto-tuned resolution ---
165
+ let components = (0, leiden_1.autoTuneResolution)(graph, maxClusters);
166
+ // --- Greedy merge if still too many communities ---
167
+ if (components.length > maxClusters) {
168
+ (0, errors_1.logDebug)('Clusterer: post-Leiden greedy merge', {
169
+ beforeMerge: components.length,
170
+ maxClusters,
171
+ });
172
+ components = (0, leiden_1.greedyMerge)(graph, components, maxClusters);
173
+ }
174
+ // --- Recursive sub-splitting for large clusters ---
175
+ components = (0, leiden_1.recursiveSubSplit)(graph, components);
176
+ // --- Sort by size descending for deterministic output ---
177
+ components.sort((a, b) => b.length - a.length);
178
+ // --- Filter: size-1 communities go to unclustered if < MIN_SYMBOLS ---
179
+ const validComponents = [];
180
+ const unclusteredIndices = [];
181
+ for (const comp of components) {
182
+ if (comp.length === 1) {
183
+ const idx = comp[0];
184
+ const c = changes[idx];
185
+ if ((0, features_1.countChangedSymbols)(c) < features_1.MIN_SYMBOLS_FOR_SOLO_CLUSTER && !(0, features_1.hasNewNonTestFiles)(c)) {
186
+ unclusteredIndices.push(idx);
187
+ continue;
188
+ }
189
+ }
190
+ validComponents.push(comp);
191
+ }
192
+ // --- Build cluster objects ---
193
+ const clustered = new Set();
194
+ const clusters = [];
195
+ for (let i = 0; i < validComponents.length; i++) {
196
+ const comp = validComponents[i];
197
+ const clusterCommits = comp.map((idx) => {
198
+ clustered.add(idx);
199
+ return changes[idx];
200
+ });
201
+ // Compute primary files (appear in >50% of cluster commits)
202
+ const fileCounts = new Map();
203
+ const symbolCounts = new Map();
204
+ const allTimes = clusterCommits
205
+ .map((c) => c.timestamp)
206
+ .filter((t) => t > 0);
207
+ for (const c of clusterCommits) {
208
+ for (const fp of (0, features_1.collectFilePaths)(c)) {
209
+ fileCounts.set(fp, (fileCounts.get(fp) || 0) + 1);
210
+ }
211
+ for (const s of (0, features_1.collectSymbolNames)(c)) {
212
+ symbolCounts.set(s, (symbolCounts.get(s) || 0) + 1);
213
+ }
214
+ }
215
+ const half = clusterCommits.length / 2;
216
+ const primaryFiles = Array.from(fileCounts.entries())
217
+ .filter(([, count]) => count >= half)
218
+ .sort((a, b) => b[1] - a[1])
219
+ .map(([fp]) => fp);
220
+ const primarySymbols = Array.from(symbolCounts.entries())
221
+ .sort((a, b) => b[1] - a[1])
222
+ .slice(0, 10)
223
+ .map(([s]) => s);
224
+ // Build summary
225
+ const fileSummary = primaryFiles.length > 0
226
+ ? `changing ${primaryFiles.slice(0, 3).join(', ')}`
227
+ : '';
228
+ const summary = `${clusterCommits.length} commits ${fileSummary}`.trim();
229
+ clusters.push({
230
+ id: i,
231
+ commits: clusterCommits,
232
+ primaryFiles,
233
+ primarySymbols,
234
+ summary,
235
+ timeRange: {
236
+ start: allTimes.length > 0 ? Math.min(...allTimes) : 0,
237
+ end: allTimes.length > 0 ? Math.max(...allTimes) : 0,
238
+ },
239
+ });
240
+ }
241
+ // --- Unclustered commits ---
242
+ const unclustered = changes.filter((_, i) => !clustered.has(i));
243
+ (0, errors_1.logDebug)('Clusterer result', {
244
+ totalCommits: n,
245
+ clusterCount: clusters.length,
246
+ clusteredCommits: n - unclustered.length,
247
+ unclustered: unclustered.length,
248
+ });
249
+ return {
250
+ clusters,
251
+ unclustered,
252
+ stats: {
253
+ totalCommits: n,
254
+ clusteredCommits: n - unclustered.length,
255
+ clusterCount: clusters.length,
256
+ },
257
+ };
258
+ }
259
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Leiden community detection on a weighted similarity graph — a generic
3
+ * graph-clustering implementation with no dependency on the commit domain.
4
+ *
5
+ * Replaces Louvain and connected-components (single-linkage) to avoid chaining
6
+ * all nodes into one giant cluster and to guarantee well-connected communities
7
+ * via the refinement phase. A resolution parameter γ is auto-tuned via
8
+ * multiplicative search so the output community count stays close to a target.
9
+ *
10
+ * @module spec/mine/clustering/leiden
11
+ */
12
+ /**
13
+ * Weighted adjacency matrix: graph[i][j] = similarity score (0 means no edge).
14
+ * Always symmetric: graph[i][j] === graph[j][i].
15
+ */
16
+ export type WeightedGraph = number[][];
17
+ /**
18
+ * Core Leiden algorithm: iterative local-moving + refinement + aggregation.
19
+ *
20
+ * Unlike Louvain (which feeds the Phase-1 partition directly into aggregation),
21
+ * Leiden inserts a refinement step that splits each Phase-1 community into
22
+ * well-connected sub-communities. Only the refined partition is aggregated.
23
+ * This guarantees internally-connected communities and avoids the
24
+ * "disconnected community" defect of Louvain.
25
+ *
26
+ * @param graph - Weighted undirected similarity graph.
27
+ * @param gamma - Resolution parameter (default 1.0).
28
+ * @param depth - Aggregation depth guard (internal use).
29
+ */
30
+ export declare function leiden(graph: WeightedGraph, gamma: number, depth?: number): number[][];
31
+ /**
32
+ * Recursively split large clusters by running Leiden on their sub-graphs.
33
+ *
34
+ * For each cluster with size > MIN_SUBSPLIT_SIZE, extracts its sub-graph,
35
+ * runs Leiden with auto-tuned γ (targeting up to min(5, floor(size/2))),
36
+ * and recursively splits further if sub-communities still have structure.
37
+ *
38
+ * Stop conditions:
39
+ * - Cluster size ≤ MIN_SUBSPLIT_SIZE
40
+ * - Sub-graph Leiden returns 1 community (no further structure)
41
+ * - Max recursion depth reached (MAX_SUBSPLIT_DEPTH)
42
+ *
43
+ * @param graph - Full original weighted graph.
44
+ * @param communities - Current partition (list of node-index arrays).
45
+ * @param depth - Current recursion depth (internal).
46
+ * @returns Flat list of leaf-community node-index arrays.
47
+ */
48
+ export declare function recursiveSubSplit(graph: WeightedGraph, communities: number[][], depth?: number): number[][];
49
+ /**
50
+ * Adjust the resolution parameter γ so that Leiden produces approximately
51
+ * `targetClusters` communities.
52
+ *
53
+ * Uses multiplicative search: higher γ → more communities, lower γ → fewer.
54
+ */
55
+ export declare function autoTuneResolution(graph: WeightedGraph, maxClusters: number): number[][];
56
+ /**
57
+ * Greedily merge communities until count ≤ maxClusters, by repeatedly
58
+ * merging the pair with the highest average inter-community similarity.
59
+ */
60
+ export declare function greedyMerge(graph: WeightedGraph, communities: number[][], maxClusters: number): number[][];
61
+ //# sourceMappingURL=leiden.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/spec/mine/clustering/leiden.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,EAAE,EAAE,CAAC;AAoKvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,GAChB,MAAM,EAAE,EAAE,CAsGZ;AAqGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,EAAE,EACvB,KAAK,GAAE,MAAU,GAChB,MAAM,EAAE,EAAE,CAiCZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,EAAE,CA2EZ;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,EAAE,CAmCZ"}