homegraph 1.1.2 → 1.2.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 (361) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +268 -243
  3. package/dist/arkts/ohos-api-index.d.ts +15 -0
  4. package/dist/arkts/ohos-api-index.d.ts.map +1 -0
  5. package/dist/arkts/ohos-api-index.js +190 -0
  6. package/dist/arkts/ohos-api-index.js.map +1 -0
  7. package/dist/arkts/ohos-sdk-input.d.ts +36 -0
  8. package/dist/arkts/ohos-sdk-input.d.ts.map +1 -0
  9. package/dist/arkts/ohos-sdk-input.js +214 -0
  10. package/dist/arkts/ohos-sdk-input.js.map +1 -0
  11. package/dist/bin/command-supervision.d.ts +12 -0
  12. package/dist/bin/command-supervision.d.ts.map +1 -0
  13. package/dist/bin/command-supervision.js +86 -0
  14. package/dist/bin/command-supervision.js.map +1 -0
  15. package/dist/bin/homegraph.d.ts +1 -1
  16. package/dist/bin/homegraph.js +971 -71
  17. package/dist/bin/homegraph.js.map +1 -1
  18. package/dist/db/index.d.ts +20 -0
  19. package/dist/db/index.d.ts.map +1 -1
  20. package/dist/db/index.js +39 -0
  21. package/dist/db/index.js.map +1 -1
  22. package/dist/db/migrations.d.ts +1 -1
  23. package/dist/db/migrations.d.ts.map +1 -1
  24. package/dist/db/migrations.js +58 -19
  25. package/dist/db/migrations.js.map +1 -1
  26. package/dist/db/queries.d.ts +14 -0
  27. package/dist/db/queries.d.ts.map +1 -1
  28. package/dist/db/queries.js +314 -143
  29. package/dist/db/queries.js.map +1 -1
  30. package/dist/db/schema.sql +172 -152
  31. package/dist/directory.d.ts +32 -0
  32. package/dist/directory.d.ts.map +1 -1
  33. package/dist/directory.js +88 -5
  34. package/dist/directory.js.map +1 -1
  35. package/dist/extraction/arkts-batch-worker.d.ts +2 -0
  36. package/dist/extraction/arkts-batch-worker.d.ts.map +1 -0
  37. package/dist/extraction/arkts-batch-worker.js +28 -0
  38. package/dist/extraction/arkts-batch-worker.js.map +1 -0
  39. package/dist/extraction/context.d.ts +11 -0
  40. package/dist/extraction/context.d.ts.map +1 -1
  41. package/dist/extraction/context.js +20 -0
  42. package/dist/extraction/context.js.map +1 -1
  43. package/dist/extraction/index.d.ts +16 -2
  44. package/dist/extraction/index.d.ts.map +1 -1
  45. package/dist/extraction/index.js +619 -380
  46. package/dist/extraction/index.js.map +1 -1
  47. package/dist/extraction/languages/arkts-state-decorators.d.ts +13 -0
  48. package/dist/extraction/languages/arkts-state-decorators.d.ts.map +1 -0
  49. package/dist/extraction/languages/arkts-state-decorators.js +26 -0
  50. package/dist/extraction/languages/arkts-state-decorators.js.map +1 -0
  51. package/dist/extraction/languages/arkts-viewtree.d.ts +4 -2
  52. package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -1
  53. package/dist/extraction/languages/arkts-viewtree.js +21 -6
  54. package/dist/extraction/languages/arkts-viewtree.js.map +1 -1
  55. package/dist/extraction/languages/arkts.d.ts +98 -2
  56. package/dist/extraction/languages/arkts.d.ts.map +1 -1
  57. package/dist/extraction/languages/arkts.js +1290 -61
  58. package/dist/extraction/languages/arkts.js.map +1 -1
  59. package/dist/extraction/languages/c-cpp.d.ts +56 -0
  60. package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  61. package/dist/extraction/languages/c-cpp.js +198 -1
  62. package/dist/extraction/languages/c-cpp.js.map +1 -1
  63. package/dist/extraction/languages/ohos-api-consumer.d.ts +34 -0
  64. package/dist/extraction/languages/ohos-api-consumer.d.ts.map +1 -0
  65. package/dist/extraction/languages/ohos-api-consumer.js +283 -0
  66. package/dist/extraction/languages/ohos-api-consumer.js.map +1 -0
  67. package/dist/extraction/parse-pool.d.ts +126 -0
  68. package/dist/extraction/parse-pool.d.ts.map +1 -0
  69. package/dist/extraction/parse-pool.js +319 -0
  70. package/dist/extraction/parse-pool.js.map +1 -0
  71. package/dist/extraction/tree-sitter-types.d.ts +17 -0
  72. package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  73. package/dist/extraction/tree-sitter.d.ts +21 -0
  74. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  75. package/dist/extraction/tree-sitter.js +198 -27
  76. package/dist/extraction/tree-sitter.js.map +1 -1
  77. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  78. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  79. package/dist/graph/traversal.d.ts.map +1 -1
  80. package/dist/graph/traversal.js +76 -17
  81. package/dist/graph/traversal.js.map +1 -1
  82. package/dist/index.d.ts +25 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +78 -4
  85. package/dist/index.js.map +1 -1
  86. package/dist/installer/instructions-template.js +9 -9
  87. package/dist/installer/targets/shared.d.ts +5 -6
  88. package/dist/installer/targets/shared.d.ts.map +1 -1
  89. package/dist/installer/targets/shared.js +5 -6
  90. package/dist/installer/targets/shared.js.map +1 -1
  91. package/dist/mcp/daemon-paths.d.ts +30 -3
  92. package/dist/mcp/daemon-paths.d.ts.map +1 -1
  93. package/dist/mcp/daemon-paths.js +50 -10
  94. package/dist/mcp/daemon-paths.js.map +1 -1
  95. package/dist/mcp/daemon-registry.d.ts.map +1 -1
  96. package/dist/mcp/daemon-registry.js +7 -3
  97. package/dist/mcp/daemon-registry.js.map +1 -1
  98. package/dist/mcp/daemon.d.ts +48 -0
  99. package/dist/mcp/daemon.d.ts.map +1 -1
  100. package/dist/mcp/daemon.js +196 -32
  101. package/dist/mcp/daemon.js.map +1 -1
  102. package/dist/mcp/engine.d.ts +17 -0
  103. package/dist/mcp/engine.d.ts.map +1 -1
  104. package/dist/mcp/engine.js +73 -1
  105. package/dist/mcp/engine.js.map +1 -1
  106. package/dist/mcp/index.d.ts.map +1 -1
  107. package/dist/mcp/index.js +25 -43
  108. package/dist/mcp/index.js.map +1 -1
  109. package/dist/mcp/liveness-watchdog.js +16 -16
  110. package/dist/mcp/ppid-watchdog.d.ts +18 -0
  111. package/dist/mcp/ppid-watchdog.d.ts.map +1 -1
  112. package/dist/mcp/ppid-watchdog.js +37 -0
  113. package/dist/mcp/ppid-watchdog.js.map +1 -1
  114. package/dist/mcp/query-cache.d.ts +25 -0
  115. package/dist/mcp/query-cache.d.ts.map +1 -0
  116. package/dist/mcp/query-cache.js +191 -0
  117. package/dist/mcp/query-cache.js.map +1 -0
  118. package/dist/mcp/query-pool.d.ts +94 -0
  119. package/dist/mcp/query-pool.d.ts.map +1 -0
  120. package/dist/mcp/query-pool.js +297 -0
  121. package/dist/mcp/query-pool.js.map +1 -0
  122. package/dist/mcp/query-worker.d.ts +24 -0
  123. package/dist/mcp/query-worker.d.ts.map +1 -0
  124. package/dist/mcp/query-worker.js +87 -0
  125. package/dist/mcp/query-worker.js.map +1 -0
  126. package/dist/mcp/server-instructions.d.ts +5 -7
  127. package/dist/mcp/server-instructions.d.ts.map +1 -1
  128. package/dist/mcp/server-instructions.js +72 -74
  129. package/dist/mcp/server-instructions.js.map +1 -1
  130. package/dist/mcp/tools.d.ts +94 -4
  131. package/dist/mcp/tools.d.ts.map +1 -1
  132. package/dist/mcp/tools.js +877 -71
  133. package/dist/mcp/tools.js.map +1 -1
  134. package/dist/project-config.d.ts +20 -0
  135. package/dist/project-config.d.ts.map +1 -1
  136. package/dist/project-config.js +42 -2
  137. package/dist/project-config.js.map +1 -1
  138. package/dist/reasoning/login.js +1 -1
  139. package/dist/reasoning/login.js.map +1 -1
  140. package/dist/reasoning/reasoner.js +32 -32
  141. package/dist/resolution/c-fnptr-synthesizer.d.ts +0 -28
  142. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
  143. package/dist/resolution/c-fnptr-synthesizer.js +765 -79
  144. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
  145. package/dist/resolution/callback-synthesizer.d.ts +1 -1
  146. package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  147. package/dist/resolution/callback-synthesizer.js +72 -11
  148. package/dist/resolution/callback-synthesizer.js.map +1 -1
  149. package/dist/resolution/cooperative-yield.d.ts +32 -0
  150. package/dist/resolution/cooperative-yield.d.ts.map +1 -0
  151. package/dist/resolution/cooperative-yield.js +42 -0
  152. package/dist/resolution/cooperative-yield.js.map +1 -0
  153. package/dist/resolution/index.d.ts +11 -2
  154. package/dist/resolution/index.d.ts.map +1 -1
  155. package/dist/resolution/index.js +72 -4
  156. package/dist/resolution/index.js.map +1 -1
  157. package/dist/resolution/name-matcher.d.ts +22 -0
  158. package/dist/resolution/name-matcher.d.ts.map +1 -1
  159. package/dist/resolution/name-matcher.js +317 -20
  160. package/dist/resolution/name-matcher.js.map +1 -1
  161. package/dist/spec/config.d.ts +39 -0
  162. package/dist/spec/config.d.ts.map +1 -0
  163. package/dist/spec/config.js +304 -0
  164. package/dist/spec/config.js.map +1 -0
  165. package/dist/spec/db/commit-node.d.ts +23 -0
  166. package/dist/spec/db/commit-node.d.ts.map +1 -0
  167. package/dist/spec/db/commit-node.js +62 -0
  168. package/dist/spec/db/commit-node.js.map +1 -0
  169. package/dist/spec/db/fragment-node.d.ts +24 -0
  170. package/dist/spec/db/fragment-node.d.ts.map +1 -0
  171. package/dist/spec/db/fragment-node.js +128 -0
  172. package/dist/spec/db/fragment-node.js.map +1 -0
  173. package/dist/spec/db/fts.d.ts +74 -0
  174. package/dist/spec/db/fts.d.ts.map +1 -0
  175. package/dist/spec/db/fts.js +324 -0
  176. package/dist/spec/db/fts.js.map +1 -0
  177. package/dist/spec/db/index.d.ts +13 -0
  178. package/dist/spec/db/index.d.ts.map +1 -0
  179. package/dist/spec/db/index.js +50 -0
  180. package/dist/spec/db/index.js.map +1 -0
  181. package/dist/spec/db/relations.d.ts +55 -0
  182. package/dist/spec/db/relations.d.ts.map +1 -0
  183. package/dist/spec/db/relations.js +158 -0
  184. package/dist/spec/db/relations.js.map +1 -0
  185. package/dist/spec/db/schema.d.ts +33 -0
  186. package/dist/spec/db/schema.d.ts.map +1 -0
  187. package/dist/spec/db/schema.js +119 -0
  188. package/dist/spec/db/schema.js.map +1 -0
  189. package/dist/spec/db/schema.sql +117 -0
  190. package/dist/spec/db/spec-node.d.ts +41 -0
  191. package/dist/spec/db/spec-node.d.ts.map +1 -0
  192. package/dist/spec/db/spec-node.js +114 -0
  193. package/dist/spec/db/spec-node.js.map +1 -0
  194. package/dist/spec/evolve/impact-locator.d.ts +13 -0
  195. package/dist/spec/evolve/impact-locator.d.ts.map +1 -0
  196. package/dist/spec/evolve/impact-locator.js +25 -0
  197. package/dist/spec/evolve/impact-locator.js.map +1 -0
  198. package/dist/spec/evolve/llm-client.d.ts +50 -0
  199. package/dist/spec/evolve/llm-client.d.ts.map +1 -0
  200. package/dist/spec/evolve/llm-client.js +176 -0
  201. package/dist/spec/evolve/llm-client.js.map +1 -0
  202. package/dist/spec/evolve/logic-checker.d.ts +12 -0
  203. package/dist/spec/evolve/logic-checker.d.ts.map +1 -0
  204. package/dist/spec/evolve/logic-checker.js +24 -0
  205. package/dist/spec/evolve/logic-checker.js.map +1 -0
  206. package/dist/spec/evolve/pipeline.d.ts +42 -0
  207. package/dist/spec/evolve/pipeline.d.ts.map +1 -0
  208. package/dist/spec/evolve/pipeline.js +567 -0
  209. package/dist/spec/evolve/pipeline.js.map +1 -0
  210. package/dist/spec/evolve/spec-rewriter.d.ts +42 -0
  211. package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -0
  212. package/dist/spec/evolve/spec-rewriter.js +230 -0
  213. package/dist/spec/evolve/spec-rewriter.js.map +1 -0
  214. package/dist/spec/graph/queries.d.ts +155 -0
  215. package/dist/spec/graph/queries.d.ts.map +1 -0
  216. package/dist/spec/graph/queries.js +440 -0
  217. package/dist/spec/graph/queries.js.map +1 -0
  218. package/dist/spec/llm/client.d.ts +29 -0
  219. package/dist/spec/llm/client.d.ts.map +1 -0
  220. package/dist/spec/llm/client.js +123 -0
  221. package/dist/spec/llm/client.js.map +1 -0
  222. package/dist/spec/llm/index.d.ts +3 -0
  223. package/dist/spec/llm/index.d.ts.map +1 -0
  224. package/dist/spec/llm/index.js +11 -0
  225. package/dist/spec/llm/index.js.map +1 -0
  226. package/dist/spec/llm/prompts.d.ts +13 -0
  227. package/dist/spec/llm/prompts.d.ts.map +1 -0
  228. package/dist/spec/llm/prompts.js +75 -0
  229. package/dist/spec/llm/prompts.js.map +1 -0
  230. package/dist/spec/mining/diff-parser.d.ts +33 -0
  231. package/dist/spec/mining/diff-parser.d.ts.map +1 -0
  232. package/dist/spec/mining/diff-parser.js +166 -0
  233. package/dist/spec/mining/diff-parser.js.map +1 -0
  234. package/dist/spec/mining/git-scanner.d.ts +103 -0
  235. package/dist/spec/mining/git-scanner.d.ts.map +1 -0
  236. package/dist/spec/mining/git-scanner.js +307 -0
  237. package/dist/spec/mining/git-scanner.js.map +1 -0
  238. package/dist/spec/mining/pipeline.d.ts +53 -0
  239. package/dist/spec/mining/pipeline.d.ts.map +1 -0
  240. package/dist/spec/mining/pipeline.js +178 -0
  241. package/dist/spec/mining/pipeline.js.map +1 -0
  242. package/dist/spec/mining/scope-resolver.d.ts +45 -0
  243. package/dist/spec/mining/scope-resolver.d.ts.map +1 -0
  244. package/dist/spec/mining/scope-resolver.js +103 -0
  245. package/dist/spec/mining/scope-resolver.js.map +1 -0
  246. package/dist/spec/mining/spec-extractor.d.ts +69 -0
  247. package/dist/spec/mining/spec-extractor.d.ts.map +1 -0
  248. package/dist/spec/mining/spec-extractor.js +369 -0
  249. package/dist/spec/mining/spec-extractor.js.map +1 -0
  250. package/dist/spec/types.d.ts +149 -0
  251. package/dist/spec/types.d.ts.map +1 -0
  252. package/dist/spec/types.js +15 -0
  253. package/dist/spec/types.js.map +1 -0
  254. package/dist/spec/utils.d.ts +167 -0
  255. package/dist/spec/utils.d.ts.map +1 -0
  256. package/dist/spec/utils.js +463 -0
  257. package/dist/spec/utils.js.map +1 -0
  258. package/dist/sync/worktree.d.ts +9 -0
  259. package/dist/sync/worktree.d.ts.map +1 -1
  260. package/dist/sync/worktree.js +40 -0
  261. package/dist/sync/worktree.js.map +1 -1
  262. package/dist/types.d.ts +6 -1
  263. package/dist/types.d.ts.map +1 -1
  264. package/dist/ui/shimmer-progress.d.ts +2 -0
  265. package/dist/ui/shimmer-progress.d.ts.map +1 -1
  266. package/dist/ui/shimmer-progress.js +19 -2
  267. package/dist/ui/shimmer-progress.js.map +1 -1
  268. package/dist/upgrade/index.js +1 -1
  269. package/dist/upgrade/index.js.map +1 -1
  270. package/package.json +58 -57
  271. package/scripts/add-lang/bench.sh +60 -60
  272. package/scripts/add-lang/check-grammar.mjs +75 -75
  273. package/scripts/add-lang/dump-ast.mjs +103 -103
  274. package/scripts/add-lang/verify-extraction.mjs +70 -70
  275. package/scripts/agent-eval/ab-adoption.sh +91 -91
  276. package/scripts/agent-eval/ab-hook.sh +86 -86
  277. package/scripts/agent-eval/ab-impl.sh +78 -78
  278. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -102
  279. package/scripts/agent-eval/ab-sufficiency.sh +78 -78
  280. package/scripts/agent-eval/arms-F.sh +21 -21
  281. package/scripts/agent-eval/arms-matrix.sh +37 -37
  282. package/scripts/agent-eval/audit.sh +68 -68
  283. package/scripts/agent-eval/bench-readme.sh +28 -28
  284. package/scripts/agent-eval/bench-why-repo.sh +22 -22
  285. package/scripts/agent-eval/block-read-hook.sh +19 -19
  286. package/scripts/agent-eval/hook-settings.json +15 -15
  287. package/scripts/agent-eval/itrun.sh +120 -120
  288. package/scripts/agent-eval/offload-eval-3arm.sh +72 -72
  289. package/scripts/agent-eval/offload-eval-cost.mjs +133 -133
  290. package/scripts/agent-eval/offload-eval-effort.mjs +108 -108
  291. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -25
  292. package/scripts/agent-eval/offload-eval-frontload.sh +47 -47
  293. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -18
  294. package/scripts/agent-eval/offload-eval-hook.mjs +84 -84
  295. package/scripts/agent-eval/offload-eval-judge.mjs +103 -103
  296. package/scripts/agent-eval/offload-eval-matrix.sh +20 -20
  297. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -94
  298. package/scripts/agent-eval/offload-eval-refs1.sh +50 -50
  299. package/scripts/agent-eval/offload-eval-setup.sh +24 -24
  300. package/scripts/agent-eval/offload-eval-styles.sh +71 -71
  301. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -68
  302. package/scripts/agent-eval/offload-eval.md +76 -76
  303. package/scripts/agent-eval/parse-arms.mjs +116 -116
  304. package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
  305. package/scripts/agent-eval/parse-run.mjs +45 -45
  306. package/scripts/agent-eval/parse-session.mjs +93 -93
  307. package/scripts/agent-eval/probe-context.mjs +21 -21
  308. package/scripts/agent-eval/probe-explore.mjs +40 -40
  309. package/scripts/agent-eval/probe-node.mjs +20 -20
  310. package/scripts/agent-eval/probe-sweep.mjs +119 -119
  311. package/scripts/agent-eval/probe-trace.mjs +20 -20
  312. package/scripts/agent-eval/redirect-read-hook.sh +38 -38
  313. package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
  314. package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
  315. package/scripts/agent-eval/run-agent.sh +34 -34
  316. package/scripts/agent-eval/run-all.sh +69 -69
  317. package/scripts/agent-eval/run-arms.sh +56 -56
  318. package/scripts/agent-eval/seq-matrix.mjs +137 -137
  319. package/scripts/build-bundle.sh +118 -118
  320. package/scripts/exp_boundary_eval/README.md +247 -0
  321. package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
  322. package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
  323. package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
  324. package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
  325. package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
  326. package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
  327. package/scripts/exp_boundary_eval/_test_mcp_chain.py +78 -0
  328. package/scripts/exp_boundary_eval/_test_stdin.py +8 -0
  329. package/scripts/exp_boundary_eval/_utils.py +1116 -0
  330. package/scripts/exp_boundary_eval/analyze.py +1313 -0
  331. package/scripts/exp_boundary_eval/data/agents.json +109 -0
  332. package/scripts/exp_boundary_eval/data/experiments.json +140 -0
  333. package/scripts/exp_boundary_eval/deveco_arm.py +519 -0
  334. package/scripts/exp_boundary_eval/run_all.py +378 -0
  335. package/scripts/exp_boundary_eval/run_one.py +165 -0
  336. package/scripts/exp_boundary_eval/run_session.py +158 -0
  337. package/scripts/exp_boundary_eval/setup.py +120 -0
  338. package/scripts/exp_boundary_eval/win_mcp_launcher.py +73 -0
  339. package/scripts/exp_boundary_eval/win_mcp_stdio_wrap.js +36 -0
  340. package/scripts/exp_boundary_eval/win_node_launcher.py +24 -0
  341. package/scripts/extract-release-notes.mjs +130 -130
  342. package/scripts/local-install.sh +41 -41
  343. package/scripts/npm-sdk.js +75 -75
  344. package/scripts/npm-shim.js +268 -246
  345. package/scripts/ohos-sdk-publish.mjs +133 -0
  346. package/scripts/pack-npm.sh +119 -119
  347. package/scripts/prepare-release.mjs +270 -270
  348. package/scripts/qa_eval/README.md +407 -404
  349. package/scripts/qa_eval/_test_deveco_probe.py +41 -41
  350. package/scripts/qa_eval/agent_runner.py +526 -526
  351. package/scripts/qa_eval/data/.gitignore +4 -4
  352. package/scripts/qa_eval/data/test-set.jsonl +2 -22
  353. package/scripts/qa_eval/eval_metrics.py +274 -233
  354. package/scripts/qa_eval/external_agent.py +976 -671
  355. package/scripts/qa_eval/llm_config.py +92 -92
  356. package/scripts/qa_eval/memory_monitor.py +132 -132
  357. package/scripts/qa_eval/my_answer_accuracy.py +187 -187
  358. package/scripts/qa_eval/requirements.txt +2 -2
  359. package/scripts/qa_eval/run_pipeline.py +804 -711
  360. package/scripts/qa_eval/stats_efficiency.py +279 -279
  361. package/scripts/qa_eval/stats_scores.py +207 -207
@@ -0,0 +1,567 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runBatchEvolvePipeline = runBatchEvolvePipeline;
37
+ /**
38
+ * Self-evolve pipeline orchestrator — evaluates new commits against existing
39
+ * specs and rewrites / deprecates them as needed.
40
+ *
41
+ * Replaces `commit4spec/self_evolve/pipeline.py` (lines 79-289).
42
+ *
43
+ * @module spec/evolve/pipeline
44
+ */
45
+ const path = __importStar(require("path"));
46
+ const fs = __importStar(require("fs"));
47
+ const child_process_1 = require("child_process");
48
+ const config_1 = require("../config");
49
+ const utils_1 = require("../utils");
50
+ const schema_1 = require("../db/schema");
51
+ const spec_node_1 = require("../db/spec-node");
52
+ const commit_node_1 = require("../db/commit-node");
53
+ const fragment_node_1 = require("../db/fragment-node");
54
+ const relations_1 = require("../db/relations");
55
+ const git_scanner_1 = require("../mining/git-scanner");
56
+ const scope_resolver_1 = require("../mining/scope-resolver");
57
+ const spec_extractor_1 = require("../mining/spec-extractor");
58
+ const diff_parser_1 = require("../mining/diff-parser");
59
+ const client_1 = require("../llm/client");
60
+ const logic_checker_1 = require("./logic-checker");
61
+ const impact_locator_1 = require("./impact-locator");
62
+ const spec_rewriter_1 = require("./spec-rewriter");
63
+ const errors_1 = require("../../errors");
64
+ // =============================================================================
65
+ // Helpers
66
+ // =============================================================================
67
+ /**
68
+ * Look up a spec from the DB and return its version and filePath.
69
+ * Falls back to constructing a plan.md path when the spec is not found.
70
+ */
71
+ function getSpecPathInfo(db, specStoragePath, specId) {
72
+ const node = (0, spec_node_1.findSpecById)(db, specId);
73
+ if (node) {
74
+ return { version: node.version, filePath: node.filePath };
75
+ }
76
+ return { version: 0, filePath: path.join(specStoragePath, specId, 'plan.md') };
77
+ }
78
+ // =============================================================================
79
+ // runEvolvePipeline (internal — only called by runBatchEvolvePipeline)
80
+ // =============================================================================
81
+ /**
82
+ * Run the full self-evolve pipeline for a single commit.
83
+ *
84
+ * **Internal.** Not exported — the public entry point is
85
+ * {@link runBatchEvolvePipeline}, which reads meta.json, initialises the
86
+ * schema, and calls this function for each commit in the range.
87
+ *
88
+ * Flow (ported from pipeline.py:79-289):
89
+ *
90
+ * 1. Load context (commit info, diff, LLM client, config).
91
+ * 2. **Path A (GENERATE):** resolve scope from commit message.
92
+ * 3. **LLM logic check:** determine if the commit is a business-logic change.
93
+ * 4. **Path B (impact + rewrite):** if logic change, find affected active
94
+ * specs and evaluate each one.
95
+ * 5. If neither Path A nor Path B produced candidates, return early.
96
+ * 6. Persist everything in a single DB transaction.
97
+ *
98
+ * @param repoPath - Absolute path to the git repository.
99
+ * @param db - Active SQLite database handle (schema already initialised).
100
+ * @param specStoragePath - Path to the spec storage directory (from meta.json).
101
+ * @param commitHash - Commit hash to process.
102
+ * @param llmConfig - Optional LLM config override; falls back to spec config.
103
+ */
104
+ async function runEvolvePipeline(repoPath, db, specStoragePath, commitHash, llmConfig) {
105
+ // ------------------------------------------------------------------
106
+ // 1. Context loading
107
+ // ------------------------------------------------------------------
108
+ // meta.json and schema already handled by runBatchEvolvePipeline
109
+ // Resolve commit hash
110
+ const resolvedHash = commitHash ||
111
+ (() => {
112
+ try {
113
+ return (0, child_process_1.execFileSync)('git', ['rev-parse', 'HEAD'], {
114
+ cwd: repoPath,
115
+ encoding: 'utf8',
116
+ stdio: ['ignore', 'pipe', 'ignore'],
117
+ windowsHide: true,
118
+ }).trim();
119
+ }
120
+ catch {
121
+ return '';
122
+ }
123
+ })();
124
+ if (!resolvedHash) {
125
+ throw new Error('No commits found in repository.');
126
+ }
127
+ // Get commit info and diff
128
+ const commitInfo = (0, git_scanner_1.getCommitInfo)(repoPath, resolvedHash);
129
+ if (!commitInfo) {
130
+ throw new Error(`Commit ${resolvedHash} not found in repository.`);
131
+ }
132
+ const diff = (0, git_scanner_1.getCommitDiff)(repoPath, resolvedHash);
133
+ // Parse diff into fragments once — reused for file paths and persistence.
134
+ const diffFragments = (0, diff_parser_1.analyzeCommitDiff)(repoPath, resolvedHash, diff);
135
+ // Load spec config and optionally create LLM client.
136
+ // When LLM is not available we still run Path A (scope-based GENERATE).
137
+ const specConfig = (0, config_1.loadSpecConfig)(repoPath);
138
+ const resolvedLLMConfig = llmConfig || specConfig.llm;
139
+ const client = resolvedLLMConfig
140
+ ? new client_1.OpenAiLlmClient(resolvedLLMConfig)
141
+ : undefined;
142
+ // ------------------------------------------------------------------
143
+ // 2. Path A (GENERATE) — commit message scope resolution
144
+ // ------------------------------------------------------------------
145
+ const pathASpecId = (0, scope_resolver_1.resolveScopeToSpec)(commitInfo.message, specStoragePath, specConfig);
146
+ let pathASpecMetadata = null;
147
+ if (pathASpecId) {
148
+ pathASpecMetadata = (0, spec_extractor_1.extractSpecMetadata)(specStoragePath, pathASpecId, specConfig);
149
+ }
150
+ // ------------------------------------------------------------------
151
+ // 2.5 Early skip: Path A didn't match and no LLM client is available.
152
+ // Non-Path-A commits cannot be processed without LLM for logic
153
+ // checking and spec evaluation.
154
+ // ------------------------------------------------------------------
155
+ if (!pathASpecId && !client) {
156
+ (0, errors_1.logWarn)('Skipping commit — no LLM configured and commit does not match Path A', {
157
+ commitHash: resolvedHash.slice(0, 7),
158
+ });
159
+ return {
160
+ commitHash: resolvedHash,
161
+ generateRelationCreated: false,
162
+ isLogicChange: false,
163
+ logicCheckReason: '',
164
+ affectedSpecCount: 0,
165
+ evolvedSpecs: [],
166
+ fragmentsCount: 0,
167
+ relationsCreated: 0,
168
+ persisted: false,
169
+ skipped: true,
170
+ skipReason: 'LLM not configured — commit message does not contain a spec scope (Path A)',
171
+ };
172
+ }
173
+ // ------------------------------------------------------------------
174
+ // 3. LLM logic check
175
+ // ------------------------------------------------------------------
176
+ let logicResult = { isLogic: false, reason: '' };
177
+ if (client) {
178
+ try {
179
+ logicResult = await (0, logic_checker_1.isLogicChange)(commitInfo.message, diff, client);
180
+ }
181
+ catch {
182
+ (0, errors_1.logWarn)('LLM logic check failed, treating as non-logic change', {
183
+ commitHash: resolvedHash.slice(0, 7),
184
+ });
185
+ logicResult = { isLogic: false, reason: 'LLM call failed' };
186
+ }
187
+ }
188
+ // ------------------------------------------------------------------
189
+ // 4. Path B (impact + rewrite) — only when the commit is a logic change
190
+ // ------------------------------------------------------------------
191
+ let pathBSpecIds = [];
192
+ if (logicResult.isLogic) {
193
+ // Extract file paths from diff fragments
194
+ const filePaths = diffFragments.map(f => f.filePath);
195
+ // Locate affected specs
196
+ const affectedSpecIds = (0, impact_locator_1.locateAffectedSpecs)(db, filePaths);
197
+ if (affectedSpecIds.length > 0) {
198
+ // Filter to active specs only
199
+ const placeholders = affectedSpecIds.map(() => '?').join(',');
200
+ const activeRows = db
201
+ .prepare(`SELECT id FROM spec_nodes WHERE status = 'active' AND id IN (${placeholders})`)
202
+ .all(...affectedSpecIds);
203
+ pathBSpecIds = activeRows.map((r) => r.id);
204
+ // Remove Path A spec from Path B list (if present)
205
+ if (pathASpecId) {
206
+ pathBSpecIds = pathBSpecIds.filter((id) => id !== pathASpecId);
207
+ }
208
+ }
209
+ (0, errors_1.logDebug)('Path B: affected active specs', {
210
+ count: pathBSpecIds.length,
211
+ specIds: pathBSpecIds,
212
+ });
213
+ }
214
+ // ------------------------------------------------------------------
215
+ // 5. Decide relevance
216
+ // ------------------------------------------------------------------
217
+ const hasPathA = pathASpecId !== null;
218
+ const hasPathB = pathBSpecIds.length > 0;
219
+ if (!hasPathA && !hasPathB) {
220
+ (0, errors_1.logDebug)('runEvolvePipeline: no relevant spec found, returning early', {
221
+ commitHash: resolvedHash.slice(0, 7),
222
+ });
223
+ return {
224
+ commitHash: resolvedHash,
225
+ generateRelationCreated: false,
226
+ isLogicChange: logicResult.isLogic,
227
+ logicCheckReason: logicResult.reason,
228
+ affectedSpecCount: 0,
229
+ evolvedSpecs: [],
230
+ fragmentsCount: 0,
231
+ relationsCreated: 0,
232
+ persisted: false,
233
+ skipped: false,
234
+ };
235
+ }
236
+ const pendingDecisions = [];
237
+ for (let idx = 0; idx < pathBSpecIds.length; idx++) {
238
+ const specId = pathBSpecIds[idx];
239
+ const scheduleNextSpecs = pathBSpecIds.slice(idx + 1);
240
+ const { version, filePath } = getSpecPathInfo(db, specStoragePath, specId);
241
+ const decision = await (0, spec_rewriter_1.evaluateSpec)(specId, specStoragePath, filePath, commitInfo.message, diff, scheduleNextSpecs, client);
242
+ pendingDecisions.push({ specId, decision, version, filePath });
243
+ }
244
+ // ------------------------------------------------------------------
245
+ // 7. Persist (atomic via explicit BEGIN/COMMIT/ROLLBACK)
246
+ // All LLM evaluation is complete; only fast DB writes remain.
247
+ // ------------------------------------------------------------------
248
+ const evolveResult = {
249
+ commitHash: resolvedHash,
250
+ generateSpecId: pathASpecId ?? undefined,
251
+ generateRelationCreated: false,
252
+ isLogicChange: logicResult.isLogic,
253
+ logicCheckReason: logicResult.reason,
254
+ affectedSpecCount: pathBSpecIds.length,
255
+ evolvedSpecs: [],
256
+ fragmentsCount: 0,
257
+ relationsCreated: 0,
258
+ persisted: true,
259
+ skipped: false,
260
+ };
261
+ db.exec('BEGIN');
262
+ try {
263
+ // ---- Insert CommitNode ----
264
+ (0, commit_node_1.insertCommitNode)(db, {
265
+ hash: commitInfo.hash,
266
+ message: commitInfo.message,
267
+ author: commitInfo.author,
268
+ timestamp: commitInfo.timestamp,
269
+ });
270
+ // ---- Path A: Insert SpecNode + GENERATE relation ----
271
+ if (pathASpecId && pathASpecMetadata) {
272
+ (0, spec_node_1.insertSpecNode)(db, {
273
+ id: pathASpecMetadata.specId,
274
+ title: pathASpecMetadata.title,
275
+ subtitles: pathASpecMetadata.subtitles,
276
+ status: 'active',
277
+ version: 1,
278
+ filePath: pathASpecMetadata.filePath,
279
+ timestamp: commitInfo.timestamp,
280
+ });
281
+ (0, relations_1.insertSpecCommitRelation)(db, pathASpecMetadata.specId, commitInfo.hash, 'GENERATE');
282
+ evolveResult.generateRelationCreated = true;
283
+ evolveResult.relationsCreated++;
284
+ }
285
+ else if (pathASpecId) {
286
+ (0, errors_1.logWarn)('Path A: specId resolved but no metadata extracted, skipping insert', {
287
+ specId: pathASpecId,
288
+ });
289
+ }
290
+ // ---- Path B: Apply pre-evaluated decisions ----
291
+ const evolvedSpecs = [];
292
+ for (const pending of pendingDecisions) {
293
+ const { specId, decision, version, filePath } = pending;
294
+ if (decision.action === 'UPDATE') {
295
+ const updateResult = (0, spec_rewriter_1.applyUpdate)(db, specStoragePath, specId, filePath, version, decision, commitInfo.hash);
296
+ evolvedSpecs.push({
297
+ specId,
298
+ action: 'UPDATE',
299
+ newVersion: updateResult.newVersion,
300
+ newSpecId: updateResult.newSpecId,
301
+ });
302
+ evolveResult.relationsCreated += 2; // EVOLVED_FROM + GENERATE
303
+ }
304
+ else if (decision.action === 'DEPRECATE') {
305
+ (0, spec_rewriter_1.applyDeprecate)(db, specId);
306
+ evolvedSpecs.push({
307
+ specId,
308
+ action: 'DEPRECATE',
309
+ });
310
+ // applyDeprecate creates one EVOLVED_FROM relation
311
+ evolveResult.relationsCreated += 1;
312
+ }
313
+ else {
314
+ // UNCHANGED
315
+ evolvedSpecs.push({
316
+ specId,
317
+ action: 'UNCHANGED',
318
+ });
319
+ }
320
+ }
321
+ evolveResult.evolvedSpecs = evolvedSpecs;
322
+ // ---- Common: Persist pre-parsed fragments and create CONTAINS relations ----
323
+ for (const frag of diffFragments) {
324
+ const inserted = (0, fragment_node_1.insertCodeFragment)(db, {
325
+ id: '',
326
+ changeType: frag.changeType,
327
+ filePath: frag.filePath,
328
+ startLine: frag.startLine,
329
+ endLine: frag.endLine,
330
+ codeDiff: frag.codeDiff,
331
+ });
332
+ evolveResult.fragmentsCount++;
333
+ (0, relations_1.insertCommitFragmentRelation)(db, commitInfo.hash, inserted.id);
334
+ evolveResult.relationsCreated++;
335
+ }
336
+ db.exec('COMMIT');
337
+ }
338
+ catch (e) {
339
+ db.exec('ROLLBACK');
340
+ throw e;
341
+ }
342
+ return evolveResult;
343
+ }
344
+ // =============================================================================
345
+ // runBatchEvolvePipeline
346
+ // =============================================================================
347
+ /**
348
+ * Run the self-evolve pipeline for all NEW commits since the last evolve.
349
+ *
350
+ * Reads `currentCommitID` from `meta.json` and processes every commit between
351
+ * that hash and `HEAD` in chronological order. Each commit is independently
352
+ * evolved via `runEvolvePipeline`. On full success, `meta.json` is refreshed
353
+ * with the new HEAD as `currentCommitID` and `updatedAt` set to now.
354
+ *
355
+ * When `currentCommitID` is missing (first evolve after an older mine, or
356
+ * corrupt meta), the function falls back to processing only HEAD.
357
+ *
358
+ * **Partial failure:** If any commit fails, the failing commit is logged but
359
+ * processing continues to the next one. `meta.json` is **only** updated when
360
+ * **all** commits succeed — this preserves the invariant that
361
+ * `currentCommitID` always points to the last *successfully* evolved commit.
362
+ *
363
+ * Edge cases:
364
+ * - `currentCommitID` equals HEAD → 0 new commits, `metaUpdated: false`.
365
+ * - `currentCommitID` is not an ancestor of HEAD (rebase / force-push) →
366
+ * throws an error asking the user to re-mine.
367
+ */
368
+ const LOCK_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
369
+ /**
370
+ * Acquire a file-based advisory lock to prevent concurrent evolve runs.
371
+ * Returns true if the lock was acquired (or the existing lock is stale).
372
+ * Returns false if another evolve instance holds the lock.
373
+ */
374
+ function acquireEvolveLock(lockFile) {
375
+ try {
376
+ if (fs.existsSync(lockFile)) {
377
+ const stat = fs.statSync(lockFile);
378
+ if (Date.now() - stat.mtimeMs > LOCK_TIMEOUT_MS) {
379
+ // Stale lock — previous process may have crashed
380
+ fs.unlinkSync(lockFile);
381
+ }
382
+ else {
383
+ return false;
384
+ }
385
+ }
386
+ fs.writeFileSync(lockFile, String(process.pid));
387
+ return true;
388
+ }
389
+ catch {
390
+ return false;
391
+ }
392
+ }
393
+ async function runBatchEvolvePipeline(repoPath, db, llmConfig) {
394
+ const meta = (0, utils_1.readMeta)(repoPath);
395
+ if (!meta) {
396
+ throw new Error("No meta.json found. Run 'homegraph spec mine' first.");
397
+ }
398
+ // Ensure only one evolve instance runs at a time (post-commit hook may
399
+ // fire multiple times in quick succession).
400
+ const lockFile = path.join(repoPath, utils_1.SPEC_DATA_DIR, 'logs', 'evolve.lock');
401
+ fs.mkdirSync(path.dirname(lockFile), { recursive: true });
402
+ if (!acquireEvolveLock(lockFile)) {
403
+ (0, errors_1.logDebug)('runBatchEvolvePipeline: another evolve instance is running, skipping');
404
+ return {
405
+ fromCommit: meta.currentCommitID || null,
406
+ toCommit: '',
407
+ commitsProcessed: 0,
408
+ perCommitResults: [],
409
+ metaUpdated: false,
410
+ skippedCommits: 0,
411
+ failures: 0,
412
+ };
413
+ }
414
+ (0, schema_1.initSpecSchema)(db);
415
+ try {
416
+ return await runBatchEvolvePipelineImpl(repoPath, db, meta, llmConfig);
417
+ }
418
+ finally {
419
+ try {
420
+ fs.unlinkSync(lockFile);
421
+ }
422
+ catch { /* may already be deleted */ }
423
+ }
424
+ }
425
+ /**
426
+ * Inner implementation — split out so the lock clean-up in the outer function
427
+ * only needs one try/finally block.
428
+ */
429
+ async function runBatchEvolvePipelineImpl(repoPath, db, meta, llmConfig) {
430
+ // Resolve HEAD
431
+ let headHash;
432
+ try {
433
+ headHash = (0, child_process_1.execFileSync)('git', ['rev-parse', 'HEAD'], {
434
+ cwd: repoPath,
435
+ encoding: 'utf8',
436
+ stdio: ['ignore', 'pipe', 'ignore'],
437
+ windowsHide: true,
438
+ }).trim();
439
+ }
440
+ catch {
441
+ throw new Error('Failed to resolve HEAD. Not a valid git repository?');
442
+ }
443
+ if (!headHash) {
444
+ throw new Error('No commits found in repository.');
445
+ }
446
+ const lastEvolved = meta.currentCommitID || null;
447
+ // Fallback: no currentCommitID → process just HEAD
448
+ if (!lastEvolved) {
449
+ (0, errors_1.logDebug)('runBatchEvolvePipeline: no currentCommitID in meta.json — processing HEAD only', {
450
+ headHash: headHash.slice(0, 7),
451
+ });
452
+ const result = await runEvolvePipeline(repoPath, db, meta.specStoragePath, headHash, llmConfig);
453
+ // Only refresh meta.json when the commit was actually processed (not skipped).
454
+ const metaUpdated = !result.skipped;
455
+ if (metaUpdated) {
456
+ (0, utils_1.writeMeta)(repoPath, meta.specStoragePath, headHash);
457
+ }
458
+ return {
459
+ fromCommit: null,
460
+ toCommit: headHash,
461
+ commitsProcessed: 1,
462
+ perCommitResults: [result],
463
+ metaUpdated,
464
+ skippedCommits: result.skipped ? 1 : 0,
465
+ failures: 0,
466
+ };
467
+ }
468
+ // No new commits
469
+ if (lastEvolved === headHash) {
470
+ (0, errors_1.logDebug)('runBatchEvolvePipeline: no new commits to evolve', {
471
+ currentCommitID: lastEvolved.slice(0, 7),
472
+ });
473
+ return {
474
+ fromCommit: lastEvolved,
475
+ toCommit: headHash,
476
+ commitsProcessed: 0,
477
+ perCommitResults: [],
478
+ metaUpdated: false,
479
+ skippedCommits: 0,
480
+ failures: 0,
481
+ };
482
+ }
483
+ // Validate ancestry: lastEvolved must be an ancestor of HEAD
484
+ try {
485
+ (0, child_process_1.execFileSync)('git', ['merge-base', '--is-ancestor', lastEvolved, headHash], {
486
+ cwd: repoPath,
487
+ stdio: 'ignore',
488
+ windowsHide: true,
489
+ });
490
+ }
491
+ catch {
492
+ throw new Error(`The last evolved commit (${lastEvolved.slice(0, 7)}) is not an ancestor of ` +
493
+ `HEAD (${headHash.slice(0, 7)}). This usually happens after a rebase ` +
494
+ `or force-push. Please re-run 'homegraph spec mine' to rebuild the ` +
495
+ `knowledge graph, then run 'homegraph spec evolve' again.`);
496
+ }
497
+ // Get commit range in chronological order (oldest first)
498
+ const commits = (0, git_scanner_1.getCommitRange)(repoPath, lastEvolved, headHash);
499
+ if (commits.length === 0) {
500
+ (0, errors_1.logDebug)('runBatchEvolvePipeline: range query returned 0 commits', {
501
+ from: lastEvolved.slice(0, 7),
502
+ to: headHash.slice(0, 7),
503
+ });
504
+ return {
505
+ fromCommit: lastEvolved,
506
+ toCommit: headHash,
507
+ commitsProcessed: 0,
508
+ perCommitResults: [],
509
+ metaUpdated: false,
510
+ skippedCommits: 0,
511
+ failures: 0,
512
+ };
513
+ }
514
+ (0, errors_1.logDebug)('runBatchEvolvePipeline: processing commit range', {
515
+ count: commits.length,
516
+ from: lastEvolved.slice(0, 7),
517
+ to: headHash.slice(0, 7),
518
+ });
519
+ // Process each commit independently
520
+ const perCommitResults = [];
521
+ let failures = 0;
522
+ let skippedCount = 0;
523
+ for (const commit of commits) {
524
+ try {
525
+ const result = await runEvolvePipeline(repoPath, db, meta.specStoragePath, commit.hash, llmConfig);
526
+ perCommitResults.push(result);
527
+ if (result.skipped)
528
+ skippedCount++;
529
+ }
530
+ catch (err) {
531
+ failures++;
532
+ (0, errors_1.logWarn)('runBatchEvolvePipeline: commit evolve failed, continuing', {
533
+ commitHash: commit.hash.slice(0, 7),
534
+ error: err instanceof Error ? err.message : String(err),
535
+ });
536
+ perCommitResults.push({
537
+ commitHash: commit.hash,
538
+ generateRelationCreated: false,
539
+ isLogicChange: false,
540
+ logicCheckReason: `Evolve failed: ${err instanceof Error ? err.message : String(err)}`,
541
+ affectedSpecCount: 0,
542
+ evolvedSpecs: [],
543
+ fragmentsCount: 0,
544
+ relationsCreated: 0,
545
+ persisted: false,
546
+ skipped: false,
547
+ });
548
+ }
549
+ }
550
+ // Refresh meta.json as long as at least one commit was actually
551
+ // processed (neither skipped nor failed).
552
+ const processedCount = commits.length - failures - skippedCount;
553
+ const metaUpdated = processedCount > 0;
554
+ if (metaUpdated) {
555
+ (0, utils_1.writeMeta)(repoPath, meta.specStoragePath, headHash);
556
+ }
557
+ return {
558
+ fromCommit: lastEvolved,
559
+ toCommit: headHash,
560
+ commitsProcessed: commits.length,
561
+ perCommitResults,
562
+ metaUpdated,
563
+ skippedCommits: skippedCount,
564
+ failures,
565
+ };
566
+ }
567
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { SqliteDatabase } from '../../db/sqlite-adapter';
2
+ import { LlmClient } from '../llm/client';
3
+ export interface EvolveDecision {
4
+ action: 'UPDATE' | 'DEPRECATE' | 'UNCHANGED';
5
+ title?: string;
6
+ subtitles?: string[];
7
+ plan_content?: string;
8
+ }
9
+ /**
10
+ * Ask the LLM whether a commit requires updating, deprecating, or leaving
11
+ * a spec unchanged.
12
+ *
13
+ * @param specId - The spec identifier (for logging / context).
14
+ * @param specStoragePath - Root spec storage directory.
15
+ * @param specFilePath - Absolute path to the plan.md file.
16
+ * @param commitMessage - First line of the commit message.
17
+ * @param commitDiff - Full unified diff of the commit.
18
+ * @param scheduleNextSpecs - Remaining spec IDs to be processed (for context).
19
+ * @param client - Optional LLM client; if absent, returns UNCHANGED.
20
+ */
21
+ export declare function evaluateSpec(specId: string, _specStoragePath: string, specFilePath: string, commitMessage: string, commitDiff: string, scheduleNextSpecs: string[], client?: LlmClient): Promise<EvolveDecision>;
22
+ /**
23
+ * Apply an UPDATE decision: backup the old plan, write the new plan, version
24
+ * the spec in the database, and transfer relations.
25
+ *
26
+ * 10-step process (ported from spec_rewriter.py:79-178).
27
+ *
28
+ * @returns The new spec ID (same as old) and bumped version number.
29
+ */
30
+ export declare function applyUpdate(db: SqliteDatabase, specStoragePath: string, oldSpecId: string, oldFilePath: string, oldVersion: number, decision: EvolveDecision, commitHash: string): {
31
+ newSpecId: string;
32
+ newVersion: number;
33
+ };
34
+ /**
35
+ * Apply a DEPRECATE decision: mark the spec as deprecated, create a
36
+ * deprecated target node, create the EVOLVED_FROM relation, and clean
37
+ * SIMILAR_TO relations.
38
+ *
39
+ * Ported from spec_rewriter.py:181-231.
40
+ */
41
+ export declare function applyDeprecate(db: SqliteDatabase, oldSpecId: string): void;
42
+ //# sourceMappingURL=spec-rewriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-rewriter.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/spec-rewriter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAgBzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAW1C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,cAAc,CAAC,CAoDzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,cAAc,EAClB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAmF3C;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CAqBN"}