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,88 @@
1
+ "use strict";
2
+ /**
3
+ * commit-spec-analyzer.ts — Batch analysis of incremental commits.
4
+ *
5
+ * References build pipeline's scan() Strategy A pattern: iterate commits,
6
+ * resolve scopes, extract metadata, parse diffs — all before any DB writes.
7
+ *
8
+ * @module spec/evolve/commit-spec-analyzer
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.analyzeIncrementalCommits = analyzeIncrementalCommits;
12
+ const git_1 = require("../git");
13
+ const scan_1 = require("../build/scan");
14
+ const diff_parser_1 = require("../build/diff-parser");
15
+ const utils_1 = require("../utils");
16
+ // =============================================================================
17
+ // Public API
18
+ // =============================================================================
19
+ /**
20
+ * Batch-analyze a list of incremental commits for spec matching.
21
+ *
22
+ * For each commit:
23
+ * 1. Resolve scope from commit message.
24
+ * 2. If scope matches a local spec file, extract metadata and parse the diff.
25
+ * 3. Return a CommitSpecAnalysis for every commit (matched or not).
26
+ *
27
+ * This function performs NO database writes. All side effects are read-only:
28
+ * `getCommitDiff()` and `analyzeCommitDiff()` read from the git repo's
29
+ * object store but do not modify anything.
30
+ *
31
+ * The most expensive operations (`getCommitDiff` + `analyzeCommitDiff`) are
32
+ * only performed for scope-matched commits so that unmatched commits are
33
+ * nearly zero-cost during scan.
34
+ *
35
+ * @param repoPath - Absolute path to the git repository.
36
+ * @param specStoragePath - Path to spec storage directory.
37
+ * @param commits - Incremental commits to analyze (chronological order).
38
+ * @param config - Resolved SpecConfig.
39
+ * @returns Array of CommitSpecAnalysis, one per input commit.
40
+ */
41
+ function analyzeIncrementalCommits(repoPath, specStoragePath, commits, config) {
42
+ const results = [];
43
+ // Hoist the directory read out of the per-commit loop.
44
+ const specIds = new Set((0, utils_1.discoverSpecs)(specStoragePath).map((e) => e.specId));
45
+ for (const commit of commits) {
46
+ // 1. Scope resolution + spec metadata
47
+ const { specId, metadata } = (0, scan_1.matchCommitToSpec)(commit.message, specIds, specStoragePath, config);
48
+ if (!specId) {
49
+ results.push({
50
+ commit,
51
+ matched: false,
52
+ skipReason: 'Commit message scope did not match any local spec',
53
+ });
54
+ continue;
55
+ }
56
+ if (!metadata) {
57
+ results.push({
58
+ commit,
59
+ matched: false,
60
+ skipReason: `Scope "${specId}" matched but no valid spec metadata found`,
61
+ });
62
+ continue;
63
+ }
64
+ // 3. Parse diff (only for matched commits — the expensive step)
65
+ let fragments;
66
+ try {
67
+ const diff = (0, git_1.getCommitDiff)(repoPath, commit.hash);
68
+ fragments = (0, diff_parser_1.analyzeCommitDiff)(repoPath, commit.hash, diff);
69
+ }
70
+ catch (err) {
71
+ results.push({
72
+ commit,
73
+ matched: false,
74
+ skipReason: `Diff analysis failed: ${err instanceof Error ? err.message : String(err)}`,
75
+ });
76
+ continue;
77
+ }
78
+ results.push({
79
+ commit,
80
+ matched: true,
81
+ specId,
82
+ metadata,
83
+ fragments,
84
+ });
85
+ }
86
+ return results;
87
+ }
88
+ //# sourceMappingURL=commit-spec-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-spec-analyzer.js","sourceRoot":"","sources":["../../../src/spec/evolve/commit-spec-analyzer.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuDH,8DA0DC;AA9GD,gCAAmD;AACnD,wCAAkD;AAElD,sDAAuE;AACvE,oCAAyC;AAsBzC,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,yBAAyB,CACvC,QAAgB,EAChB,eAAuB,EACvB,OAAqB,EACrB,MAAkB;IAElB,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,uDAAuD;IACvD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAA,qBAAa,EAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,sCAAsC;QACtC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,wBAAiB,EAC5C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CACjD,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,mDAAmD;aAChE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,UAAU,MAAM,4CAA4C;aACzE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,gEAAgE;QAChE,IAAI,SAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,mBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,SAAS,GAAG,IAAA,+BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACxF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,OAAO,EAAE,IAAI;YACb,MAAM;YACN,QAAQ;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * commit-spec-persister.ts — Per-commit graph persistence.
3
+ *
4
+ * Each commit is persisted in its own transaction so that a single failure
5
+ * does not roll back other successful commits. This aligns with the
6
+ * meta.json advancement rule: advance to the last commit whose phase-1
7
+ * persistence succeeded.
8
+ *
9
+ * @module spec/evolve/commit-spec-persister
10
+ */
11
+ import { SqliteDatabase } from '../../db/sqlite-adapter';
12
+ import { CommitSpecAnalysis } from './commit-spec-analyzer';
13
+ export interface PersistResult {
14
+ /** Commit hash being persisted. */
15
+ commitHash: string;
16
+ /** Always true in a PersistResult — only matched analyses are persisted. */
17
+ matched: true;
18
+ /** The spec ID that was persisted. */
19
+ specId: string;
20
+ /** File paths from the diff fragments (for phase 2 impact location). */
21
+ filePaths: string[];
22
+ /** Statistics. */
23
+ stats: {
24
+ fragmentsInserted: number;
25
+ relationsCreated: number;
26
+ };
27
+ }
28
+ /**
29
+ * Persist the knowledge graph entries for a single scope-matched commit.
30
+ *
31
+ * All INSERTs use OR REPLACE / OR IGNORE semantics so repeated calls with
32
+ * the same data are idempotent.
33
+ *
34
+ * The caller is responsible for retry on failure — this function does
35
+ * not retry internally.
36
+ *
37
+ * Steps (inside a single DB transaction):
38
+ * 1. CommitNode (INSERT OR REPLACE)
39
+ * 2. SpecNode (INSERT OR REPLACE)
40
+ * 3. GENERATE relation (INSERT OR IGNORE)
41
+ * 4. For each diff fragment:
42
+ * a. CodeFragment node (INSERT, auto-generated id)
43
+ * b. CONTAINS relation (INSERT OR IGNORE)
44
+ *
45
+ * @param db - Active SQLite database handle.
46
+ * @param analysis - CommitSpecAnalysis with matched=true.
47
+ * @returns PersistResult on success.
48
+ * @throws On transaction failure (caller decides whether to retry or skip).
49
+ */
50
+ export declare function persistCommitSpecGraph(db: SqliteDatabase, analysis: CommitSpecAnalysis & {
51
+ matched: true;
52
+ }): PersistResult;
53
+ //# sourceMappingURL=commit-spec-persister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-spec-persister.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/commit-spec-persister.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAY5D,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,OAAO,EAAE,IAAI,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE;QACL,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,kBAAkB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAC/C,aAAa,CAuDf"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * commit-spec-persister.ts — Per-commit graph persistence.
4
+ *
5
+ * Each commit is persisted in its own transaction so that a single failure
6
+ * does not roll back other successful commits. This aligns with the
7
+ * meta.json advancement rule: advance to the last commit whose phase-1
8
+ * persistence succeeded.
9
+ *
10
+ * @module spec/evolve/commit-spec-persister
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.persistCommitSpecGraph = persistCommitSpecGraph;
14
+ const commit_node_1 = require("../db/commit-node");
15
+ const relations_1 = require("../db/relations");
16
+ const persist_1 = require("../db/persist");
17
+ const errors_1 = require("../../errors");
18
+ // =============================================================================
19
+ // Public API
20
+ // =============================================================================
21
+ /**
22
+ * Persist the knowledge graph entries for a single scope-matched commit.
23
+ *
24
+ * All INSERTs use OR REPLACE / OR IGNORE semantics so repeated calls with
25
+ * the same data are idempotent.
26
+ *
27
+ * The caller is responsible for retry on failure — this function does
28
+ * not retry internally.
29
+ *
30
+ * Steps (inside a single DB transaction):
31
+ * 1. CommitNode (INSERT OR REPLACE)
32
+ * 2. SpecNode (INSERT OR REPLACE)
33
+ * 3. GENERATE relation (INSERT OR IGNORE)
34
+ * 4. For each diff fragment:
35
+ * a. CodeFragment node (INSERT, auto-generated id)
36
+ * b. CONTAINS relation (INSERT OR IGNORE)
37
+ *
38
+ * @param db - Active SQLite database handle.
39
+ * @param analysis - CommitSpecAnalysis with matched=true.
40
+ * @returns PersistResult on success.
41
+ * @throws On transaction failure (caller decides whether to retry or skip).
42
+ */
43
+ function persistCommitSpecGraph(db, analysis) {
44
+ const { commit } = analysis;
45
+ const metadata = analysis.metadata;
46
+ const fragments = analysis.fragments;
47
+ const filePaths = fragments.map((f) => f.filePath);
48
+ let fragmentsInserted = 0;
49
+ let relationsCreated = 0;
50
+ db.exec('BEGIN');
51
+ try {
52
+ // 1. CommitNode (idempotent — INSERT OR REPLACE)
53
+ (0, commit_node_1.insertCommitNode)(db, {
54
+ hash: commit.hash,
55
+ message: commit.message,
56
+ author: commit.author,
57
+ timestamp: commit.timestamp,
58
+ });
59
+ // 2. SpecNode (idempotent — INSERT OR REPLACE, last write wins for timestamp)
60
+ (0, persist_1.upsertSpecFromMetadata)(db, metadata, commit.timestamp);
61
+ // 3. GENERATE relation (idempotent — INSERT OR IGNORE)
62
+ (0, relations_1.insertSpecCommitRelation)(db, metadata.specId, commit.hash, 'GENERATE');
63
+ relationsCreated++;
64
+ // 4. CodeFragment nodes + CONTAINS relations
65
+ const persisted = (0, persist_1.persistCommitFragments)(db, commit.hash, fragments);
66
+ fragmentsInserted += persisted.fragmentsInserted;
67
+ relationsCreated += persisted.relationsCreated;
68
+ db.exec('COMMIT');
69
+ (0, errors_1.logDebug)('persistCommitSpecGraph: persisted', {
70
+ commitHash: commit.hash.slice(0, 7),
71
+ specId: metadata.specId,
72
+ fragments: fragmentsInserted,
73
+ relations: relationsCreated,
74
+ });
75
+ return {
76
+ commitHash: commit.hash,
77
+ matched: true,
78
+ specId: metadata.specId,
79
+ filePaths,
80
+ stats: { fragmentsInserted, relationsCreated },
81
+ };
82
+ }
83
+ catch (e) {
84
+ db.exec('ROLLBACK');
85
+ const msg = e instanceof Error ? e.message : String(e);
86
+ (0, errors_1.logWarn)('persistCommitSpecGraph: transaction failed', {
87
+ commitHash: commit.hash.slice(0, 7),
88
+ error: msg,
89
+ });
90
+ throw e; // Let the pipeline decide: skip this commit and advance or stop
91
+ }
92
+ }
93
+ //# sourceMappingURL=commit-spec-persister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-spec-persister.js","sourceRoot":"","sources":["../../../src/spec/evolve/commit-spec-persister.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAyDH,wDA0DC;AA/GD,mDAAqD;AACrD,+CAEyB;AACzB,2CAA+E;AAC/E,yCAAiD;AAsBjD,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,sBAAsB,CACpC,EAAkB,EAClB,QAAgD;IAEhD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAS,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAU,CAAC;IACtC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,iDAAiD;QACjD,IAAA,8BAAgB,EAAC,EAAE,EAAE;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,8EAA8E;QAC9E,IAAA,gCAAsB,EAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAEvD,uDAAuD;QACvD,IAAA,oCAAwB,EAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvE,gBAAgB,EAAE,CAAC;QAEnB,6CAA6C;QAC7C,MAAM,SAAS,GAAG,IAAA,gCAAsB,EAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrE,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC;QACjD,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC;QAE/C,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElB,IAAA,iBAAQ,EAAC,mCAAmC,EAAE;YAC5C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,iBAAiB;YAC5B,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS;YACT,KAAK,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;SAC/C,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,IAAA,gBAAO,EAAC,4CAA4C,EAAE;YACpD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,gEAAgE;IAC3E,CAAC;AACH,CAAC"}
@@ -1,13 +1,29 @@
1
1
  import { SqliteDatabase } from '../../db/sqlite-adapter';
2
+ export interface AffectedSpecEntry {
3
+ /** The affected historical spec ID. */
4
+ specId: string;
5
+ /** New commit hashes that affect this spec (file path overlap). */
6
+ affectingCommits: string[];
7
+ }
2
8
  /**
3
- * Find specs affected by the given list of file paths.
9
+ * Locate historical (pre-existing) specs affected by new commits, grouped
10
+ * by spec → affecting commit list in one pass.
4
11
  *
5
- * Each file path should already be clean (no `a/` or `b/` prefix) — paths
6
- * sourced from `DiffFragment.filePath` via diff-parser already have prefixes
7
- * stripped.
12
+ * Two-phase query strategy:
8
13
  *
9
- * Queries the spec knowledge graph for specs whose code fragments match the
10
- * path, returns deduplicated, alphabetically sorted spec IDs.
14
+ * Phase A: For each file path in the new commits, find all spec IDs whose
15
+ * code fragments share the same file path (reusing findSpecIdsByFragmentPath).
16
+ * Exclude specIds in excludeSpecIds (phase 1 newly inserted specs).
17
+ *
18
+ * Phase B: For each candidate spec, determine which new commits' file paths
19
+ * overlap with the spec's known fragment file paths. File paths are
20
+ * considered overlapping when one contains the other (substring match).
21
+ *
22
+ * @param db Active SQLite database handle.
23
+ * @param commitFilePaths Map of new commit hash → file paths (from phase 1).
24
+ * @param excludeSpecIds Spec IDs to exclude (phase 1 newly inserted specs).
25
+ * @param onlyActive If true (default), filter to specs with status = 'active'.
26
+ * @returns Sorted array of AffectedSpecEntry.
11
27
  */
12
- export declare function locateAffectedSpecs(db: SqliteDatabase, filePaths: string[]): string[];
28
+ export declare function locateAffectedSpecsWithCommits(db: SqliteDatabase, commitFilePaths: Map<string, string[]>, excludeSpecIds: Set<string>, onlyActive?: boolean): AffectedSpecEntry[];
13
29
  //# sourceMappingURL=impact-locator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"impact-locator.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/impact-locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAWV"}
1
+ {"version":3,"file":"impact-locator.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/impact-locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAWzD,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,cAAc,EAClB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACtC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,UAAU,GAAE,OAAc,GACzB,iBAAiB,EAAE,CAmDrB"}
@@ -1,25 +1,69 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.locateAffectedSpecs = locateAffectedSpecs;
4
- const queries_1 = require("../graph/queries");
3
+ exports.locateAffectedSpecsWithCommits = locateAffectedSpecsWithCommits;
4
+ const relations_1 = require("../db/relations");
5
5
  /**
6
- * Find specs affected by the given list of file paths.
6
+ * Locate historical (pre-existing) specs affected by new commits, grouped
7
+ * by spec → affecting commit list in one pass.
7
8
  *
8
- * Each file path should already be clean (no `a/` or `b/` prefix) — paths
9
- * sourced from `DiffFragment.filePath` via diff-parser already have prefixes
10
- * stripped.
9
+ * Two-phase query strategy:
11
10
  *
12
- * Queries the spec knowledge graph for specs whose code fragments match the
13
- * path, returns deduplicated, alphabetically sorted spec IDs.
11
+ * Phase A: For each file path in the new commits, find all spec IDs whose
12
+ * code fragments share the same file path (reusing findSpecIdsByFragmentPath).
13
+ * Exclude specIds in excludeSpecIds (phase 1 newly inserted specs).
14
+ *
15
+ * Phase B: For each candidate spec, determine which new commits' file paths
16
+ * overlap with the spec's known fragment file paths. File paths are
17
+ * considered overlapping when one contains the other (substring match).
18
+ *
19
+ * @param db Active SQLite database handle.
20
+ * @param commitFilePaths Map of new commit hash → file paths (from phase 1).
21
+ * @param excludeSpecIds Spec IDs to exclude (phase 1 newly inserted specs).
22
+ * @param onlyActive If true (default), filter to specs with status = 'active'.
23
+ * @returns Sorted array of AffectedSpecEntry.
14
24
  */
15
- function locateAffectedSpecs(db, filePaths) {
16
- const specIds = new Set();
17
- for (const fp of filePaths) {
18
- const matches = (0, queries_1.findSpecsByFragmentPath)(db, fp);
25
+ function locateAffectedSpecsWithCommits(db, commitFilePaths, excludeSpecIds, onlyActive = true) {
26
+ // --- Phase A: find candidate spec IDs ---
27
+ const allFilePaths = [...new Set(Array.from(commitFilePaths.values()).flat())];
28
+ const candidateSpecIds = new Set();
29
+ for (const fp of allFilePaths) {
30
+ const matches = (0, relations_1.findSpecIdsByFragmentPath)(db, fp);
19
31
  for (const specId of matches) {
20
- specIds.add(specId);
32
+ if (!excludeSpecIds.has(specId)) {
33
+ candidateSpecIds.add(specId);
34
+ }
35
+ }
36
+ }
37
+ if (candidateSpecIds.size === 0)
38
+ return [];
39
+ // Filter to active specs
40
+ const activeSpecIds = onlyActive
41
+ ? (0, relations_1.findActiveSpecIds)(db, [...candidateSpecIds])
42
+ : [...candidateSpecIds];
43
+ if (activeSpecIds.length === 0)
44
+ return [];
45
+ // --- Phase B: group new commits by spec ---
46
+ const results = [];
47
+ for (const specId of activeSpecIds) {
48
+ const specPathSet = new Set((0, relations_1.findFragmentPathsBySpec)(db, specId));
49
+ // Find new commits whose file paths overlap with spec's fragment paths
50
+ const affectingCommits = [];
51
+ for (const [commitHash, filePaths] of commitFilePaths) {
52
+ const overlaps = filePaths.some((fp) => {
53
+ for (const sfp of specPathSet) {
54
+ if (sfp.includes(fp) || fp.includes(sfp))
55
+ return true;
56
+ }
57
+ return false;
58
+ });
59
+ if (overlaps) {
60
+ affectingCommits.push(commitHash);
61
+ }
62
+ }
63
+ if (affectingCommits.length > 0) {
64
+ results.push({ specId, affectingCommits });
21
65
  }
22
66
  }
23
- return Array.from(specIds).sort();
67
+ return results.sort((a, b) => a.specId.localeCompare(b.specId));
24
68
  }
25
69
  //# sourceMappingURL=impact-locator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"impact-locator.js","sourceRoot":"","sources":["../../../src/spec/evolve/impact-locator.ts"],"names":[],"mappings":";;AAaA,kDAcC;AA1BD,8CAA2D;AAE3D;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,EAAkB,EAClB,SAAmB;IAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"impact-locator.js","sourceRoot":"","sources":["../../../src/spec/evolve/impact-locator.ts"],"names":[],"mappings":";;AAsCA,wEAwDC;AA7FD,+CAIyB;AAazB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,8BAA8B,CAC5C,EAAkB,EAClB,eAAsC,EACtC,cAA2B,EAC3B,aAAsB,IAAI;IAE1B,2CAA2C;IAC3C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAC9B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAC5C,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAA,qCAAyB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3C,yBAAyB;IACzB,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,IAAA,6BAAiB,EAAC,EAAE,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAE1B,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,6CAA6C;IAC7C,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAA,mCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAEjE,uEAAuE;QACvE,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,OAAO,IAAI,CAAC;gBACxD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -1,42 +1,79 @@
1
1
  import { SqliteDatabase } from '../../db/sqlite-adapter';
2
- import { LLMConfig } from '../config';
3
- export interface EvolvedSpec {
2
+ import { SpecConfig } from '../config';
3
+ interface EvolvedSpec {
4
4
  specId: string;
5
5
  action: 'UPDATE' | 'DEPRECATE' | 'UNCHANGED';
6
6
  newVersion?: number;
7
7
  newSpecId?: string;
8
8
  }
9
- export interface EvolveResult {
9
+ interface EvolveResult {
10
10
  commitHash: string;
11
- generateSpecId?: string;
12
- generateRelationCreated: boolean;
13
- isLogicChange: boolean;
14
- logicCheckReason: string;
15
- affectedSpecCount: number;
11
+ /** Whether phase 1 analysis matched a spec. */
12
+ matched: boolean;
13
+ /** Matched spec ID (only when matched). */
14
+ matchedSpecId?: string;
15
+ /** Whether phase 1 persistence was skipped. */
16
+ phaseOneSkipped: boolean;
17
+ /** Reason for skipping (only when phaseOneSkipped). */
18
+ phaseOneSkipReason?: string;
19
+ /** Spec evolution decisions from phase 3 (may be empty). */
16
20
  evolvedSpecs: EvolvedSpec[];
17
- fragmentsCount: number;
21
+ /** Counts from phase 1 persistence. */
22
+ fragmentsInserted: number;
18
23
  relationsCreated: number;
19
- persisted: boolean;
20
- /** True when the commit was skipped because LLM is not available. */
21
- skipped: boolean;
22
- /** Human-readable reason for skipping, if skipped is true. */
23
- skipReason?: string;
24
24
  }
25
25
  export interface BatchEvolveResult {
26
- /** The last evolved commit hash from meta.json (null if never evolved). */
26
+ /** Last evolved commit from meta.json (null if never evolved). */
27
27
  fromCommit: string | null;
28
- /** The commit hash that was just evolved up to (usually HEAD). */
28
+ /** Last successfully processed commit, or HEAD. */
29
29
  toCommit: string;
30
- /** Number of commits in the range (including skipped). */
31
- commitsProcessed: number;
32
- /** Per-commit results. */
30
+ /** Total commits in the range. */
31
+ commitsScanned: number;
32
+ /** Commits where phase 1 analysis matched a spec. */
33
+ phaseOneMatched: number;
34
+ /** Commits where phase 1 analysis did NOT match a spec. */
35
+ phaseOneSkipped: number;
36
+ /** Commits where phase 1 persistence failed. */
37
+ phaseOneFailures: number;
38
+ /** Number of historical specs evaluated in phase 3. */
39
+ historicalSpecsEvaluated: number;
40
+ /** Phase 3 action counts. */
41
+ specsUpdated: number;
42
+ specsDeprecated: number;
43
+ specsUnchanged: number;
44
+ /** Per-commit results, for detailed CLI output. */
33
45
  perCommitResults: EvolveResult[];
34
- /** Whether meta.json was updated at the end. */
46
+ /** Whether meta.json was updated. */
35
47
  metaUpdated: boolean;
36
- /** Number of commits skipped (no LLM, did not match Path A). */
37
- skippedCommits: number;
38
- /** Number of commits that threw an error during evolve. */
39
- failures: number;
48
+ /** True when the entire run performed no useful work. */
49
+ skipped: boolean;
50
+ /** Reason when skipped = true. */
51
+ skipReason?: string;
52
+ /** True when mine pipeline was invoked as a fallback. */
53
+ mineFallback: boolean;
40
54
  }
41
- export declare function runBatchEvolvePipeline(repoPath: string, db: SqliteDatabase, llmConfig?: LLMConfig): Promise<BatchEvolveResult>;
55
+ /**
56
+ * Run the spec self-evolve pipeline for all new commits since the last evolve.
57
+ *
58
+ * This is the ONLY public entry point. It replaces both the old
59
+ * ``runEvolvePipeline`` (per-commit) and ``runBatchEvolvePipeline`` (batch
60
+ * wrapper) with a unified batch pipeline that aligns with the post-commit
61
+ * hook's cumulative commit threshold trigger.
62
+ *
63
+ * Flow:
64
+ * 0. Prep: meta.json → lock → schema → resolve HEAD + range.
65
+ * 1a. Batch analysis of all incremental commits (no DB writes).
66
+ * 1b. Per-commit persistence with independent transactions.
67
+ * 2. Impact location: find old specs affected by new commits.
68
+ * 3. LLM evaluation per spec cluster (only if LLM configured).
69
+ * ↓ or: mine-style fallback (if phase 1 produced zero matches + LLM).
70
+ * 4. Advance meta.json to last phase-1 success.
71
+ *
72
+ * @param repoPath - Absolute path to the git repository.
73
+ * @param db - Active SQLite database handle.
74
+ * @param config - Spec configuration (loaded from configs.json); when config.llm is absent, phase 3 is skipped
75
+ * (phase 1 graph construction still runs).
76
+ */
77
+ export declare function runEvolvePipeline(repoPath: string, db: SqliteDatabase, config: SpecConfig): Promise<BatchEvolveResult>;
78
+ export {};
42
79
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AA6BtD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4XD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,gDAAgD;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoDD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,cAAc,EAClB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAA+B,UAAU,EAAE,MAAM,WAAW,CAAC;AAgCpE,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,wBAAwB,EAAE,MAAM,CAAC;IACjC,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,YAAY,EAAE,OAAO,CAAC;CACvB;AAieD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA6G5B"}