homegraph 1.1.3 → 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 (246) hide show
  1. package/README.md +43 -18
  2. package/dist/arkts/ohos-api-index.d.ts +15 -0
  3. package/dist/arkts/ohos-api-index.d.ts.map +1 -0
  4. package/dist/arkts/ohos-api-index.js +190 -0
  5. package/dist/arkts/ohos-api-index.js.map +1 -0
  6. package/dist/arkts/ohos-sdk-input.d.ts +36 -0
  7. package/dist/arkts/ohos-sdk-input.d.ts.map +1 -0
  8. package/dist/arkts/ohos-sdk-input.js +214 -0
  9. package/dist/arkts/ohos-sdk-input.js.map +1 -0
  10. package/dist/bin/command-supervision.d.ts +12 -0
  11. package/dist/bin/command-supervision.d.ts.map +1 -0
  12. package/dist/bin/command-supervision.js +86 -0
  13. package/dist/bin/command-supervision.js.map +1 -0
  14. package/dist/bin/homegraph.d.ts +1 -1
  15. package/dist/bin/homegraph.js +706 -168
  16. package/dist/bin/homegraph.js.map +1 -1
  17. package/dist/db/index.d.ts +20 -0
  18. package/dist/db/index.d.ts.map +1 -1
  19. package/dist/db/index.js +39 -0
  20. package/dist/db/index.js.map +1 -1
  21. package/dist/db/migrations.d.ts +1 -1
  22. package/dist/db/migrations.d.ts.map +1 -1
  23. package/dist/db/migrations.js +40 -1
  24. package/dist/db/migrations.js.map +1 -1
  25. package/dist/db/queries.d.ts +14 -0
  26. package/dist/db/queries.d.ts.map +1 -1
  27. package/dist/db/queries.js +174 -3
  28. package/dist/db/queries.js.map +1 -1
  29. package/dist/db/schema.sql +20 -0
  30. package/dist/directory.d.ts +32 -0
  31. package/dist/directory.d.ts.map +1 -1
  32. package/dist/directory.js +83 -0
  33. package/dist/directory.js.map +1 -1
  34. package/dist/extraction/arkts-batch-worker.d.ts +2 -0
  35. package/dist/extraction/arkts-batch-worker.d.ts.map +1 -0
  36. package/dist/extraction/arkts-batch-worker.js +28 -0
  37. package/dist/extraction/arkts-batch-worker.js.map +1 -0
  38. package/dist/extraction/context.d.ts +11 -0
  39. package/dist/extraction/context.d.ts.map +1 -1
  40. package/dist/extraction/context.js +20 -0
  41. package/dist/extraction/context.js.map +1 -1
  42. package/dist/extraction/index.d.ts +16 -2
  43. package/dist/extraction/index.d.ts.map +1 -1
  44. package/dist/extraction/index.js +619 -380
  45. package/dist/extraction/index.js.map +1 -1
  46. package/dist/extraction/languages/arkts-state-decorators.d.ts +13 -0
  47. package/dist/extraction/languages/arkts-state-decorators.d.ts.map +1 -0
  48. package/dist/extraction/languages/arkts-state-decorators.js +26 -0
  49. package/dist/extraction/languages/arkts-state-decorators.js.map +1 -0
  50. package/dist/extraction/languages/arkts-viewtree.d.ts +4 -2
  51. package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -1
  52. package/dist/extraction/languages/arkts-viewtree.js +21 -6
  53. package/dist/extraction/languages/arkts-viewtree.js.map +1 -1
  54. package/dist/extraction/languages/arkts.d.ts +98 -2
  55. package/dist/extraction/languages/arkts.d.ts.map +1 -1
  56. package/dist/extraction/languages/arkts.js +1290 -61
  57. package/dist/extraction/languages/arkts.js.map +1 -1
  58. package/dist/extraction/languages/c-cpp.d.ts +56 -0
  59. package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  60. package/dist/extraction/languages/c-cpp.js +198 -1
  61. package/dist/extraction/languages/c-cpp.js.map +1 -1
  62. package/dist/extraction/languages/ohos-api-consumer.d.ts +34 -0
  63. package/dist/extraction/languages/ohos-api-consumer.d.ts.map +1 -0
  64. package/dist/extraction/languages/ohos-api-consumer.js +283 -0
  65. package/dist/extraction/languages/ohos-api-consumer.js.map +1 -0
  66. package/dist/extraction/parse-pool.d.ts +126 -0
  67. package/dist/extraction/parse-pool.d.ts.map +1 -0
  68. package/dist/extraction/parse-pool.js +319 -0
  69. package/dist/extraction/parse-pool.js.map +1 -0
  70. package/dist/extraction/tree-sitter-types.d.ts +17 -0
  71. package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  72. package/dist/extraction/tree-sitter.d.ts +21 -0
  73. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  74. package/dist/extraction/tree-sitter.js +198 -27
  75. package/dist/extraction/tree-sitter.js.map +1 -1
  76. package/dist/graph/traversal.d.ts.map +1 -1
  77. package/dist/graph/traversal.js +76 -17
  78. package/dist/graph/traversal.js.map +1 -1
  79. package/dist/index.d.ts +25 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +78 -4
  82. package/dist/index.js.map +1 -1
  83. package/dist/mcp/daemon-paths.d.ts +30 -3
  84. package/dist/mcp/daemon-paths.d.ts.map +1 -1
  85. package/dist/mcp/daemon-paths.js +50 -10
  86. package/dist/mcp/daemon-paths.js.map +1 -1
  87. package/dist/mcp/daemon-registry.d.ts.map +1 -1
  88. package/dist/mcp/daemon-registry.js +7 -3
  89. package/dist/mcp/daemon-registry.js.map +1 -1
  90. package/dist/mcp/daemon.d.ts +48 -0
  91. package/dist/mcp/daemon.d.ts.map +1 -1
  92. package/dist/mcp/daemon.js +196 -32
  93. package/dist/mcp/daemon.js.map +1 -1
  94. package/dist/mcp/engine.d.ts +17 -0
  95. package/dist/mcp/engine.d.ts.map +1 -1
  96. package/dist/mcp/engine.js +73 -1
  97. package/dist/mcp/engine.js.map +1 -1
  98. package/dist/mcp/index.d.ts.map +1 -1
  99. package/dist/mcp/index.js +25 -43
  100. package/dist/mcp/index.js.map +1 -1
  101. package/dist/mcp/ppid-watchdog.d.ts +18 -0
  102. package/dist/mcp/ppid-watchdog.d.ts.map +1 -1
  103. package/dist/mcp/ppid-watchdog.js +37 -0
  104. package/dist/mcp/ppid-watchdog.js.map +1 -1
  105. package/dist/mcp/query-cache.d.ts +25 -0
  106. package/dist/mcp/query-cache.d.ts.map +1 -0
  107. package/dist/mcp/query-cache.js +191 -0
  108. package/dist/mcp/query-cache.js.map +1 -0
  109. package/dist/mcp/query-pool.d.ts +94 -0
  110. package/dist/mcp/query-pool.d.ts.map +1 -0
  111. package/dist/mcp/query-pool.js +297 -0
  112. package/dist/mcp/query-pool.js.map +1 -0
  113. package/dist/mcp/query-worker.d.ts +24 -0
  114. package/dist/mcp/query-worker.d.ts.map +1 -0
  115. package/dist/mcp/query-worker.js +87 -0
  116. package/dist/mcp/query-worker.js.map +1 -0
  117. package/dist/mcp/server-instructions.d.ts +5 -7
  118. package/dist/mcp/server-instructions.d.ts.map +1 -1
  119. package/dist/mcp/server-instructions.js +12 -14
  120. package/dist/mcp/server-instructions.js.map +1 -1
  121. package/dist/mcp/tools.d.ts +77 -0
  122. package/dist/mcp/tools.d.ts.map +1 -1
  123. package/dist/mcp/tools.js +696 -60
  124. package/dist/mcp/tools.js.map +1 -1
  125. package/dist/project-config.d.ts +20 -0
  126. package/dist/project-config.d.ts.map +1 -1
  127. package/dist/project-config.js +42 -2
  128. package/dist/project-config.js.map +1 -1
  129. package/dist/reasoning/login.js +1 -1
  130. package/dist/reasoning/login.js.map +1 -1
  131. package/dist/resolution/c-fnptr-synthesizer.d.ts +0 -28
  132. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
  133. package/dist/resolution/c-fnptr-synthesizer.js +765 -79
  134. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
  135. package/dist/resolution/callback-synthesizer.d.ts +1 -1
  136. package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  137. package/dist/resolution/callback-synthesizer.js +72 -11
  138. package/dist/resolution/callback-synthesizer.js.map +1 -1
  139. package/dist/resolution/cooperative-yield.d.ts +32 -0
  140. package/dist/resolution/cooperative-yield.d.ts.map +1 -0
  141. package/dist/resolution/cooperative-yield.js +42 -0
  142. package/dist/resolution/cooperative-yield.js.map +1 -0
  143. package/dist/resolution/index.d.ts +11 -2
  144. package/dist/resolution/index.d.ts.map +1 -1
  145. package/dist/resolution/index.js +72 -4
  146. package/dist/resolution/index.js.map +1 -1
  147. package/dist/resolution/name-matcher.d.ts +22 -0
  148. package/dist/resolution/name-matcher.d.ts.map +1 -1
  149. package/dist/resolution/name-matcher.js +317 -20
  150. package/dist/resolution/name-matcher.js.map +1 -1
  151. package/dist/spec/config.d.ts +7 -11
  152. package/dist/spec/config.d.ts.map +1 -1
  153. package/dist/spec/config.js +77 -48
  154. package/dist/spec/config.js.map +1 -1
  155. package/dist/spec/db/fragment-node.d.ts +1 -0
  156. package/dist/spec/db/fragment-node.d.ts.map +1 -1
  157. package/dist/spec/db/fragment-node.js +8 -0
  158. package/dist/spec/db/fragment-node.js.map +1 -1
  159. package/dist/spec/db/fts.d.ts +14 -0
  160. package/dist/spec/db/fts.d.ts.map +1 -1
  161. package/dist/spec/db/fts.js +43 -4
  162. package/dist/spec/db/fts.js.map +1 -1
  163. package/dist/spec/db/schema.d.ts +6 -3
  164. package/dist/spec/db/schema.d.ts.map +1 -1
  165. package/dist/spec/db/schema.js +36 -4
  166. package/dist/spec/db/schema.js.map +1 -1
  167. package/dist/spec/db/schema.sql +11 -1
  168. package/dist/spec/evolve/logic-checker.d.ts +2 -2
  169. package/dist/spec/evolve/logic-checker.d.ts.map +1 -1
  170. package/dist/spec/evolve/logic-checker.js +3 -27
  171. package/dist/spec/evolve/logic-checker.js.map +1 -1
  172. package/dist/spec/evolve/pipeline.d.ts +21 -19
  173. package/dist/spec/evolve/pipeline.d.ts.map +1 -1
  174. package/dist/spec/evolve/pipeline.js +284 -31
  175. package/dist/spec/evolve/pipeline.js.map +1 -1
  176. package/dist/spec/evolve/spec-rewriter.d.ts +2 -2
  177. package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -1
  178. package/dist/spec/evolve/spec-rewriter.js +7 -31
  179. package/dist/spec/evolve/spec-rewriter.js.map +1 -1
  180. package/dist/spec/graph/queries.d.ts +97 -0
  181. package/dist/spec/graph/queries.d.ts.map +1 -1
  182. package/dist/spec/graph/queries.js +225 -0
  183. package/dist/spec/graph/queries.js.map +1 -1
  184. package/dist/spec/llm/client.d.ts +29 -0
  185. package/dist/spec/llm/client.d.ts.map +1 -0
  186. package/dist/spec/llm/client.js +123 -0
  187. package/dist/spec/llm/client.js.map +1 -0
  188. package/dist/spec/llm/index.d.ts +3 -0
  189. package/dist/spec/llm/index.d.ts.map +1 -0
  190. package/dist/spec/llm/index.js +11 -0
  191. package/dist/spec/llm/index.js.map +1 -0
  192. package/dist/spec/llm/prompts.d.ts +13 -0
  193. package/dist/spec/llm/prompts.d.ts.map +1 -0
  194. package/dist/spec/llm/prompts.js +75 -0
  195. package/dist/spec/llm/prompts.js.map +1 -0
  196. package/dist/spec/mining/git-scanner.d.ts +12 -0
  197. package/dist/spec/mining/git-scanner.d.ts.map +1 -1
  198. package/dist/spec/mining/git-scanner.js +41 -0
  199. package/dist/spec/mining/git-scanner.js.map +1 -1
  200. package/dist/spec/mining/pipeline.d.ts.map +1 -1
  201. package/dist/spec/mining/pipeline.js +14 -1
  202. package/dist/spec/mining/pipeline.js.map +1 -1
  203. package/dist/spec/utils.d.ts +2 -1
  204. package/dist/spec/utils.d.ts.map +1 -1
  205. package/dist/spec/utils.js +3 -1
  206. package/dist/spec/utils.js.map +1 -1
  207. package/dist/sync/worktree.d.ts +9 -0
  208. package/dist/sync/worktree.d.ts.map +1 -1
  209. package/dist/sync/worktree.js +40 -0
  210. package/dist/sync/worktree.js.map +1 -1
  211. package/dist/types.d.ts +6 -1
  212. package/dist/types.d.ts.map +1 -1
  213. package/dist/ui/shimmer-progress.d.ts +2 -0
  214. package/dist/ui/shimmer-progress.d.ts.map +1 -1
  215. package/dist/ui/shimmer-progress.js +19 -2
  216. package/dist/ui/shimmer-progress.js.map +1 -1
  217. package/dist/upgrade/index.js +1 -1
  218. package/dist/upgrade/index.js.map +1 -1
  219. package/package.json +3 -3
  220. package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
  221. package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
  222. package/scripts/exp_boundary_eval/README.md +247 -0
  223. package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
  224. package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
  225. package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
  226. package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
  227. package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
  228. package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
  229. package/scripts/exp_boundary_eval/_test_mcp_chain.py +78 -0
  230. package/scripts/exp_boundary_eval/_test_stdin.py +8 -0
  231. package/scripts/exp_boundary_eval/_utils.py +1116 -0
  232. package/scripts/exp_boundary_eval/analyze.py +1313 -0
  233. package/scripts/exp_boundary_eval/data/agents.json +109 -0
  234. package/scripts/exp_boundary_eval/data/experiments.json +140 -0
  235. package/scripts/exp_boundary_eval/deveco_arm.py +519 -0
  236. package/scripts/exp_boundary_eval/run_all.py +378 -0
  237. package/scripts/exp_boundary_eval/run_one.py +165 -0
  238. package/scripts/exp_boundary_eval/run_session.py +158 -0
  239. package/scripts/exp_boundary_eval/setup.py +120 -0
  240. package/scripts/exp_boundary_eval/win_mcp_launcher.py +73 -0
  241. package/scripts/exp_boundary_eval/win_mcp_stdio_wrap.js +36 -0
  242. package/scripts/exp_boundary_eval/win_node_launcher.py +24 -0
  243. package/scripts/npm-shim.js +25 -3
  244. package/scripts/ohos-sdk-publish.mjs +133 -0
  245. package/scripts/qa_eval/README.md +1 -1
  246. package/scripts/qa_eval/agent_runner.py +1 -1
@@ -1,4 +1,4 @@
1
- import { LLMClient } from './llm-client';
1
+ import { LlmClient } from '../llm/client';
2
2
  export interface LogicCheckResult {
3
3
  isLogic: boolean;
4
4
  reason: string;
@@ -8,5 +8,5 @@ export interface LogicCheckResult {
8
8
  * Uses LLM to analyze the commit message and diff.
9
9
  * If no LLM client is available, returns false.
10
10
  */
11
- export declare function isLogicChange(commitMessage: string, commitDiff: string, client?: LLMClient): Promise<LogicCheckResult>;
11
+ export declare function isLogicChange(commitMessage: string, commitDiff: string, client?: LlmClient): Promise<LogicCheckResult>;
12
12
  //# sourceMappingURL=logic-checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logic-checker.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/logic-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA0C3B"}
1
+ {"version":3,"file":"logic-checker.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/logic-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isLogicChange = isLogicChange;
4
+ const prompts_1 = require("../llm/prompts");
4
5
  const utils_1 = require("../utils");
5
6
  /**
6
7
  * Determine if a commit represents a business-logic change.
@@ -13,33 +14,8 @@ async function isLogicChange(commitMessage, commitDiff, client) {
13
14
  }
14
15
  // Truncate diff to 6000 chars for prompt budget
15
16
  const truncatedDiff = (0, utils_1.truncateText)(commitDiff, 6000);
16
- const systemPrompt = `You are a code review assistant. Your task is to determine whether a git commit represents a business-logic change (as opposed to purely cosmetic, formatting, comment-only, or test-only changes).
17
-
18
- A business-logic change includes:
19
- - Changes to algorithms, data structures, or control flow
20
- - Changes to business rules, validation logic, or domain behavior
21
- - Adding or removing functionality
22
- - Bug fixes that change behavior
23
-
24
- NOT business-logic changes:
25
- - Whitespace, formatting, or code style changes
26
- - Comment-only changes
27
- - Test-only changes (adding tests without changing production code)
28
- - Configuration changes that don't alter behavior
29
- - Package/dependency version bumps
30
-
31
- Respond with a JSON object:
32
- {
33
- "is_logic_change": true/false,
34
- "reason": "Brief explanation of why this is or is not a logic change"
35
- }`;
36
- const userPrompt = `Analyze this commit:
37
-
38
- Commit Message: ${commitMessage}
39
-
40
- Diff:
41
- ${truncatedDiff}`;
42
- const result = await client.chatJson(systemPrompt, userPrompt);
17
+ const userPrompt = (0, prompts_1.buildLogicCheckUserPrompt)(commitMessage, truncatedDiff);
18
+ const result = await client.chatJson(prompts_1.LOGIC_CHECK_SYSTEM_PROMPT, userPrompt);
43
19
  return {
44
20
  isLogic: result.is_logic_change === true,
45
21
  reason: typeof result.reason === 'string' ? result.reason : '',
@@ -1 +1 @@
1
- {"version":3,"file":"logic-checker.js","sourceRoot":"","sources":["../../../src/spec/evolve/logic-checker.ts"],"names":[],"mappings":";;AAaA,sCA8CC;AA1DD,oCAAwC;AAOxC;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,aAAqB,EACrB,UAAkB,EAClB,MAAkB;IAElB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACvD,CAAC;IAED,gDAAgD;IAChD,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;EAmBrB,CAAC;IAED,MAAM,UAAU,GAAG;;kBAEH,aAAa;;;EAG7B,aAAa,EAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE/D,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,eAAe,KAAK,IAAI;QACxC,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"logic-checker.js","sourceRoot":"","sources":["../../../src/spec/evolve/logic-checker.ts"],"names":[],"mappings":";;AAcA,sCAoBC;AAjCD,4CAAsF;AACtF,oCAAwC;AAOxC;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,aAAqB,EACrB,UAAkB,EAClB,MAAkB;IAElB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACvD,CAAC;IAED,gDAAgD;IAChD,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,IAAA,mCAAyB,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,mCAAyB,EAAE,UAAU,CAAC,CAAC;IAE5E,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,eAAe,KAAK,IAAI;QACxC,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC"}
@@ -17,24 +17,26 @@ export interface EvolveResult {
17
17
  fragmentsCount: number;
18
18
  relationsCreated: number;
19
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;
20
24
  }
21
- /**
22
- * Run the full self-evolve pipeline for a single commit.
23
- *
24
- * Flow (ported from pipeline.py:79-289):
25
- *
26
- * 1. Load context (meta, schema, commit info, diff, LLM client, config).
27
- * 2. **Path A (GENERATE):** resolve scope from commit message.
28
- * 3. **LLM logic check:** determine if the commit is a business-logic change.
29
- * 4. **Path B (impact + rewrite):** if logic change, find affected active
30
- * specs and evaluate each one.
31
- * 5. If neither Path A nor Path B produced candidates, return early.
32
- * 6. Persist everything in a single DB transaction.
33
- *
34
- * @param repoPath - Absolute path to the git repository.
35
- * @param db - Active SQLite database handle.
36
- * @param commitHash - Optional commit hash; defaults to HEAD.
37
- * @param llmConfig - Optional LLM config override; falls back to spec config.
38
- */
39
- export declare function runEvolvePipeline(repoPath: string, db: SqliteDatabase, commitHash?: string, llmConfig?: LLMConfig): Promise<EvolveResult>;
25
+ export interface BatchEvolveResult {
26
+ /** The last evolved commit hash from meta.json (null if never evolved). */
27
+ fromCommit: string | null;
28
+ /** The commit hash that was just evolved up to (usually HEAD). */
29
+ toCommit: string;
30
+ /** Number of commits in the range (including skipped). */
31
+ commitsProcessed: number;
32
+ /** Per-commit results. */
33
+ perCommitResults: EvolveResult[];
34
+ /** Whether meta.json was updated at the end. */
35
+ 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;
40
+ }
41
+ export declare function runBatchEvolvePipeline(repoPath: string, db: SqliteDatabase, llmConfig?: LLMConfig): Promise<BatchEvolveResult>;
40
42
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"AAUA,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;CACpB;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,cAAc,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,YAAY,CAAC,CAsSvB"}
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"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.runEvolvePipeline = runEvolvePipeline;
36
+ exports.runBatchEvolvePipeline = runBatchEvolvePipeline;
37
37
  /**
38
38
  * Self-evolve pipeline orchestrator — evaluates new commits against existing
39
39
  * specs and rewrites / deprecates them as needed.
@@ -43,6 +43,7 @@ exports.runEvolvePipeline = runEvolvePipeline;
43
43
  * @module spec/evolve/pipeline
44
44
  */
45
45
  const path = __importStar(require("path"));
46
+ const fs = __importStar(require("fs"));
46
47
  const child_process_1 = require("child_process");
47
48
  const config_1 = require("../config");
48
49
  const utils_1 = require("../utils");
@@ -55,7 +56,7 @@ const git_scanner_1 = require("../mining/git-scanner");
55
56
  const scope_resolver_1 = require("../mining/scope-resolver");
56
57
  const spec_extractor_1 = require("../mining/spec-extractor");
57
58
  const diff_parser_1 = require("../mining/diff-parser");
58
- const llm_client_1 = require("./llm-client");
59
+ const client_1 = require("../llm/client");
59
60
  const logic_checker_1 = require("./logic-checker");
60
61
  const impact_locator_1 = require("./impact-locator");
61
62
  const spec_rewriter_1 = require("./spec-rewriter");
@@ -75,14 +76,18 @@ function getSpecPathInfo(db, specStoragePath, specId) {
75
76
  return { version: 0, filePath: path.join(specStoragePath, specId, 'plan.md') };
76
77
  }
77
78
  // =============================================================================
78
- // runEvolvePipeline
79
+ // runEvolvePipeline (internal — only called by runBatchEvolvePipeline)
79
80
  // =============================================================================
80
81
  /**
81
82
  * Run the full self-evolve pipeline for a single commit.
82
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
+ *
83
88
  * Flow (ported from pipeline.py:79-289):
84
89
  *
85
- * 1. Load context (meta, schema, commit info, diff, LLM client, config).
90
+ * 1. Load context (commit info, diff, LLM client, config).
86
91
  * 2. **Path A (GENERATE):** resolve scope from commit message.
87
92
  * 3. **LLM logic check:** determine if the commit is a business-logic change.
88
93
  * 4. **Path B (impact + rewrite):** if logic change, find affected active
@@ -90,22 +95,17 @@ function getSpecPathInfo(db, specStoragePath, specId) {
90
95
  * 5. If neither Path A nor Path B produced candidates, return early.
91
96
  * 6. Persist everything in a single DB transaction.
92
97
  *
93
- * @param repoPath - Absolute path to the git repository.
94
- * @param db - Active SQLite database handle.
95
- * @param commitHash - Optional commit hash; defaults to HEAD.
96
- * @param llmConfig - Optional LLM config override; falls back to spec config.
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.
97
103
  */
98
- async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
104
+ async function runEvolvePipeline(repoPath, db, specStoragePath, commitHash, llmConfig) {
99
105
  // ------------------------------------------------------------------
100
106
  // 1. Context loading
101
107
  // ------------------------------------------------------------------
102
- // Read meta
103
- const meta = (0, utils_1.readMeta)(repoPath);
104
- if (!meta) {
105
- throw new Error("No meta.json found. Run 'homegraph spec mine' first.");
106
- }
107
- // Init schema
108
- (0, schema_1.initSpecSchema)(db);
108
+ // meta.json and schema already handled by runBatchEvolvePipeline
109
109
  // Resolve commit hash
110
110
  const resolvedHash = commitHash ||
111
111
  (() => {
@@ -132,30 +132,58 @@ async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
132
132
  const diff = (0, git_scanner_1.getCommitDiff)(repoPath, resolvedHash);
133
133
  // Parse diff into fragments once — reused for file paths and persistence.
134
134
  const diffFragments = (0, diff_parser_1.analyzeCommitDiff)(repoPath, resolvedHash, diff);
135
- // Load spec config and create LLM client
135
+ // Load spec config and optionally create LLM client.
136
+ // When LLM is not available we still run Path A (scope-based GENERATE).
136
137
  const specConfig = (0, config_1.loadSpecConfig)(repoPath);
137
138
  const resolvedLLMConfig = llmConfig || specConfig.llm;
138
- const client = new llm_client_1.LLMClient(resolvedLLMConfig);
139
+ const client = resolvedLLMConfig
140
+ ? new client_1.OpenAiLlmClient(resolvedLLMConfig)
141
+ : undefined;
139
142
  // ------------------------------------------------------------------
140
143
  // 2. Path A (GENERATE) — commit message scope resolution
141
144
  // ------------------------------------------------------------------
142
- const pathASpecId = (0, scope_resolver_1.resolveScopeToSpec)(commitInfo.message, meta.specStoragePath, specConfig);
145
+ const pathASpecId = (0, scope_resolver_1.resolveScopeToSpec)(commitInfo.message, specStoragePath, specConfig);
143
146
  let pathASpecMetadata = null;
144
147
  if (pathASpecId) {
145
- pathASpecMetadata = (0, spec_extractor_1.extractSpecMetadata)(meta.specStoragePath, pathASpecId, specConfig);
148
+ pathASpecMetadata = (0, spec_extractor_1.extractSpecMetadata)(specStoragePath, pathASpecId, specConfig);
146
149
  }
147
150
  // ------------------------------------------------------------------
148
- // 3. LLM logic check
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.
149
154
  // ------------------------------------------------------------------
150
- let logicResult = { isLogic: false, reason: '' };
151
- try {
152
- logicResult = await (0, logic_checker_1.isLogicChange)(commitInfo.message, diff, client);
153
- }
154
- catch {
155
- (0, errors_1.logWarn)('LLM logic check failed, treating as non-logic change', {
155
+ if (!pathASpecId && !client) {
156
+ (0, errors_1.logWarn)('Skipping commit — no LLM configured and commit does not match Path A', {
156
157
  commitHash: resolvedHash.slice(0, 7),
157
158
  });
158
- logicResult = { isLogic: false, reason: 'LLM call failed' };
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
+ }
159
187
  }
160
188
  // ------------------------------------------------------------------
161
189
  // 4. Path B (impact + rewrite) — only when the commit is a logic change
@@ -202,14 +230,15 @@ async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
202
230
  fragmentsCount: 0,
203
231
  relationsCreated: 0,
204
232
  persisted: false,
233
+ skipped: false,
205
234
  };
206
235
  }
207
236
  const pendingDecisions = [];
208
237
  for (let idx = 0; idx < pathBSpecIds.length; idx++) {
209
238
  const specId = pathBSpecIds[idx];
210
239
  const scheduleNextSpecs = pathBSpecIds.slice(idx + 1);
211
- const { version, filePath } = getSpecPathInfo(db, meta.specStoragePath, specId);
212
- const decision = await (0, spec_rewriter_1.evaluateSpec)(specId, meta.specStoragePath, filePath, commitInfo.message, diff, scheduleNextSpecs, client);
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);
213
242
  pendingDecisions.push({ specId, decision, version, filePath });
214
243
  }
215
244
  // ------------------------------------------------------------------
@@ -227,6 +256,7 @@ async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
227
256
  fragmentsCount: 0,
228
257
  relationsCreated: 0,
229
258
  persisted: true,
259
+ skipped: false,
230
260
  };
231
261
  db.exec('BEGIN');
232
262
  try {
@@ -262,7 +292,7 @@ async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
262
292
  for (const pending of pendingDecisions) {
263
293
  const { specId, decision, version, filePath } = pending;
264
294
  if (decision.action === 'UPDATE') {
265
- const updateResult = (0, spec_rewriter_1.applyUpdate)(db, meta.specStoragePath, specId, filePath, version, decision, commitInfo.hash);
295
+ const updateResult = (0, spec_rewriter_1.applyUpdate)(db, specStoragePath, specId, filePath, version, decision, commitInfo.hash);
266
296
  evolvedSpecs.push({
267
297
  specId,
268
298
  action: 'UPDATE',
@@ -311,4 +341,227 @@ async function runEvolvePipeline(repoPath, db, commitHash, llmConfig) {
311
341
  }
312
342
  return evolveResult;
313
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
+ }
314
567
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { SqliteDatabase } from '../../db/sqlite-adapter';
2
- import { LLMClient } from './llm-client';
2
+ import { LlmClient } from '../llm/client';
3
3
  export interface EvolveDecision {
4
4
  action: 'UPDATE' | 'DEPRECATE' | 'UNCHANGED';
5
5
  title?: string;
@@ -18,7 +18,7 @@ export interface EvolveDecision {
18
18
  * @param scheduleNextSpecs - Remaining spec IDs to be processed (for context).
19
19
  * @param client - Optional LLM client; if absent, returns UNCHANGED.
20
20
  */
21
- export declare function evaluateSpec(specId: string, _specStoragePath: string, specFilePath: string, commitMessage: string, commitDiff: string, scheduleNextSpecs: string[], client?: LLMClient): Promise<EvolveDecision>;
21
+ export declare function evaluateSpec(specId: string, _specStoragePath: string, specFilePath: string, commitMessage: string, commitDiff: string, scheduleNextSpecs: string[], client?: LlmClient): Promise<EvolveDecision>;
22
22
  /**
23
23
  * Apply an UPDATE decision: backup the old plan, write the new plan, version
24
24
  * the spec in the database, and transfer relations.
@@ -1 +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,cAAc,CAAC;AAOzC,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,CA2EzB;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"}
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"}