takt 0.3.9 → 0.4.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 (309) hide show
  1. package/README.md +364 -325
  2. package/dist/agents/index.d.ts +1 -1
  3. package/dist/agents/index.d.ts.map +1 -1
  4. package/dist/agents/index.js +1 -1
  5. package/dist/agents/index.js.map +1 -1
  6. package/dist/agents/runner.d.ts +0 -1
  7. package/dist/agents/runner.d.ts.map +1 -1
  8. package/dist/agents/runner.js +6 -5
  9. package/dist/agents/runner.js.map +1 -1
  10. package/dist/agents/types.d.ts +3 -1
  11. package/dist/agents/types.d.ts.map +1 -1
  12. package/dist/app/cli/commands.d.ts +1 -1
  13. package/dist/app/cli/commands.js +9 -1
  14. package/dist/app/cli/commands.js.map +1 -1
  15. package/dist/app/cli/routing.js +1 -0
  16. package/dist/app/cli/routing.js.map +1 -1
  17. package/dist/core/models/index.d.ts +1 -1
  18. package/dist/core/models/index.d.ts.map +1 -1
  19. package/dist/core/models/schemas.d.ts +8 -6
  20. package/dist/core/models/schemas.d.ts.map +1 -1
  21. package/dist/core/models/schemas.js +16 -15
  22. package/dist/core/models/schemas.js.map +1 -1
  23. package/dist/core/models/types.d.ts +1 -1
  24. package/dist/core/models/types.d.ts.map +1 -1
  25. package/dist/core/models/workflow-types.d.ts +26 -24
  26. package/dist/core/models/workflow-types.d.ts.map +1 -1
  27. package/dist/core/workflow/constants.d.ts +7 -7
  28. package/dist/core/workflow/constants.d.ts.map +1 -1
  29. package/dist/core/workflow/constants.js +7 -7
  30. package/dist/core/workflow/constants.js.map +1 -1
  31. package/dist/core/workflow/engine/MovementExecutor.d.ts +59 -0
  32. package/dist/core/workflow/engine/MovementExecutor.d.ts.map +1 -0
  33. package/dist/core/workflow/engine/{StepExecutor.js → MovementExecutor.js} +30 -25
  34. package/dist/core/workflow/engine/MovementExecutor.js.map +1 -0
  35. package/dist/core/workflow/engine/OptionsBuilder.d.ts +6 -6
  36. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  37. package/dist/core/workflow/engine/OptionsBuilder.js +8 -3
  38. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  39. package/dist/core/workflow/engine/ParallelRunner.d.ts +12 -10
  40. package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
  41. package/dist/core/workflow/engine/ParallelRunner.js +46 -41
  42. package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
  43. package/dist/core/workflow/engine/WorkflowEngine.d.ts +16 -16
  44. package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
  45. package/dist/core/workflow/engine/WorkflowEngine.js +105 -92
  46. package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
  47. package/dist/core/workflow/engine/blocked-handler.d.ts +3 -3
  48. package/dist/core/workflow/engine/blocked-handler.d.ts.map +1 -1
  49. package/dist/core/workflow/engine/blocked-handler.js +2 -2
  50. package/dist/core/workflow/engine/blocked-handler.js.map +1 -1
  51. package/dist/core/workflow/engine/index.d.ts +2 -1
  52. package/dist/core/workflow/engine/index.d.ts.map +1 -1
  53. package/dist/core/workflow/engine/index.js +1 -1
  54. package/dist/core/workflow/engine/index.js.map +1 -1
  55. package/dist/core/workflow/engine/loop-detector.d.ts +5 -5
  56. package/dist/core/workflow/engine/loop-detector.d.ts.map +1 -1
  57. package/dist/core/workflow/engine/loop-detector.js +8 -8
  58. package/dist/core/workflow/engine/loop-detector.js.map +1 -1
  59. package/dist/core/workflow/engine/parallel-logger.d.ts +15 -15
  60. package/dist/core/workflow/engine/parallel-logger.d.ts.map +1 -1
  61. package/dist/core/workflow/engine/parallel-logger.js +22 -21
  62. package/dist/core/workflow/engine/parallel-logger.js.map +1 -1
  63. package/dist/core/workflow/engine/state-manager.d.ts +6 -6
  64. package/dist/core/workflow/engine/state-manager.d.ts.map +1 -1
  65. package/dist/core/workflow/engine/state-manager.js +15 -16
  66. package/dist/core/workflow/engine/state-manager.js.map +1 -1
  67. package/dist/core/workflow/engine/transitions.d.ts +5 -5
  68. package/dist/core/workflow/engine/transitions.d.ts.map +1 -1
  69. package/dist/core/workflow/engine/transitions.js +4 -4
  70. package/dist/core/workflow/engine/transitions.js.map +1 -1
  71. package/dist/core/workflow/evaluation/AggregateEvaluator.d.ts +15 -15
  72. package/dist/core/workflow/evaluation/AggregateEvaluator.d.ts.map +1 -1
  73. package/dist/core/workflow/evaluation/AggregateEvaluator.js +35 -33
  74. package/dist/core/workflow/evaluation/AggregateEvaluator.js.map +1 -1
  75. package/dist/core/workflow/evaluation/RuleEvaluator.d.ts +8 -8
  76. package/dist/core/workflow/evaluation/RuleEvaluator.d.ts.map +1 -1
  77. package/dist/core/workflow/evaluation/RuleEvaluator.js +18 -14
  78. package/dist/core/workflow/evaluation/RuleEvaluator.js.map +1 -1
  79. package/dist/core/workflow/evaluation/index.d.ts +4 -4
  80. package/dist/core/workflow/evaluation/index.d.ts.map +1 -1
  81. package/dist/core/workflow/evaluation/index.js +1 -1
  82. package/dist/core/workflow/evaluation/index.js.map +1 -1
  83. package/dist/core/workflow/evaluation/rule-utils.d.ts +4 -4
  84. package/dist/core/workflow/evaluation/rule-utils.d.ts.map +1 -1
  85. package/dist/core/workflow/evaluation/rule-utils.js +2 -2
  86. package/dist/core/workflow/evaluation/rule-utils.js.map +1 -1
  87. package/dist/core/workflow/index.d.ts +6 -6
  88. package/dist/core/workflow/index.d.ts.map +1 -1
  89. package/dist/core/workflow/index.js +5 -5
  90. package/dist/core/workflow/index.js.map +1 -1
  91. package/dist/core/workflow/instruction/InstructionBuilder.d.ts +17 -15
  92. package/dist/core/workflow/instruction/InstructionBuilder.d.ts.map +1 -1
  93. package/dist/core/workflow/instruction/InstructionBuilder.js +105 -120
  94. package/dist/core/workflow/instruction/InstructionBuilder.js.map +1 -1
  95. package/dist/core/workflow/instruction/ReportInstructionBuilder.d.ts +10 -11
  96. package/dist/core/workflow/instruction/ReportInstructionBuilder.d.ts.map +1 -1
  97. package/dist/core/workflow/instruction/ReportInstructionBuilder.js +38 -84
  98. package/dist/core/workflow/instruction/ReportInstructionBuilder.js.map +1 -1
  99. package/dist/core/workflow/instruction/StatusJudgmentBuilder.d.ts +6 -5
  100. package/dist/core/workflow/instruction/StatusJudgmentBuilder.d.ts.map +1 -1
  101. package/dist/core/workflow/instruction/StatusJudgmentBuilder.js +14 -22
  102. package/dist/core/workflow/instruction/StatusJudgmentBuilder.js.map +1 -1
  103. package/dist/core/workflow/instruction/escape.d.ts +3 -3
  104. package/dist/core/workflow/instruction/escape.d.ts.map +1 -1
  105. package/dist/core/workflow/instruction/escape.js +3 -3
  106. package/dist/core/workflow/instruction/escape.js.map +1 -1
  107. package/dist/core/workflow/instruction/instruction-context.d.ts +16 -49
  108. package/dist/core/workflow/instruction/instruction-context.d.ts.map +1 -1
  109. package/dist/core/workflow/instruction/instruction-context.js +17 -62
  110. package/dist/core/workflow/instruction/instruction-context.js.map +1 -1
  111. package/dist/core/workflow/instruction/status-rules.d.ts +19 -14
  112. package/dist/core/workflow/instruction/status-rules.d.ts.map +1 -1
  113. package/dist/core/workflow/instruction/status-rules.js +47 -66
  114. package/dist/core/workflow/instruction/status-rules.js.map +1 -1
  115. package/dist/core/workflow/phase-runner.d.ts +14 -8
  116. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  117. package/dist/core/workflow/phase-runner.js +75 -78
  118. package/dist/core/workflow/phase-runner.js.map +1 -1
  119. package/dist/core/workflow/types.d.ts +15 -12
  120. package/dist/core/workflow/types.d.ts.map +1 -1
  121. package/dist/features/config/ejectBuiltin.js +3 -3
  122. package/dist/features/config/ejectBuiltin.js.map +1 -1
  123. package/dist/features/interactive/interactive.d.ts.map +1 -1
  124. package/dist/features/interactive/interactive.js +38 -169
  125. package/dist/features/interactive/interactive.js.map +1 -1
  126. package/dist/features/prompt/index.d.ts +5 -0
  127. package/dist/features/prompt/index.d.ts.map +1 -0
  128. package/dist/features/prompt/index.js +5 -0
  129. package/dist/features/prompt/index.js.map +1 -0
  130. package/dist/features/prompt/preview.d.ts +14 -0
  131. package/dist/features/prompt/preview.d.ts.map +1 -0
  132. package/dist/features/prompt/preview.js +74 -0
  133. package/dist/features/prompt/preview.js.map +1 -0
  134. package/dist/features/tasks/add/index.d.ts +6 -9
  135. package/dist/features/tasks/add/index.d.ts.map +1 -1
  136. package/dist/features/tasks/add/index.js +23 -55
  137. package/dist/features/tasks/add/index.js.map +1 -1
  138. package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
  139. package/dist/features/tasks/execute/selectAndExecute.js +1 -0
  140. package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
  141. package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
  142. package/dist/features/tasks/execute/taskExecution.js +4 -3
  143. package/dist/features/tasks/execute/taskExecution.js.map +1 -1
  144. package/dist/features/tasks/execute/types.d.ts +13 -0
  145. package/dist/features/tasks/execute/types.d.ts.map +1 -1
  146. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  147. package/dist/features/tasks/execute/workflowExecution.js +63 -18
  148. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  149. package/dist/features/tasks/index.d.ts +1 -1
  150. package/dist/features/tasks/index.d.ts.map +1 -1
  151. package/dist/features/tasks/index.js +1 -1
  152. package/dist/features/tasks/index.js.map +1 -1
  153. package/dist/features/tasks/list/index.d.ts.map +1 -1
  154. package/dist/features/tasks/list/index.js +0 -1
  155. package/dist/features/tasks/list/index.js.map +1 -1
  156. package/dist/features/tasks/list/taskActions.d.ts +1 -0
  157. package/dist/features/tasks/list/taskActions.d.ts.map +1 -1
  158. package/dist/features/tasks/list/taskActions.js +24 -1
  159. package/dist/features/tasks/list/taskActions.js.map +1 -1
  160. package/dist/features/workflowSelection/index.js +1 -1
  161. package/dist/features/workflowSelection/index.js.map +1 -1
  162. package/dist/index.d.ts +3 -3
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +1 -1
  165. package/dist/index.js.map +1 -1
  166. package/dist/infra/claude/client.d.ts +1 -1
  167. package/dist/infra/claude/client.d.ts.map +1 -1
  168. package/dist/infra/claude/client.js +6 -24
  169. package/dist/infra/claude/client.js.map +1 -1
  170. package/dist/infra/claude/executor.d.ts +0 -1
  171. package/dist/infra/claude/executor.d.ts.map +1 -1
  172. package/dist/infra/claude/executor.js +0 -2
  173. package/dist/infra/claude/executor.js.map +1 -1
  174. package/dist/infra/claude/index.js +2 -2
  175. package/dist/infra/claude/index.js.map +1 -1
  176. package/dist/infra/claude/options-builder.js +4 -4
  177. package/dist/infra/claude/options-builder.js.map +1 -1
  178. package/dist/infra/claude/process.d.ts +1 -1
  179. package/dist/infra/claude/process.d.ts.map +1 -1
  180. package/dist/infra/claude/process.js +1 -1
  181. package/dist/infra/claude/process.js.map +1 -1
  182. package/dist/infra/claude/query-manager.d.ts +1 -1
  183. package/dist/infra/claude/query-manager.d.ts.map +1 -1
  184. package/dist/infra/claude/query-manager.js +1 -2
  185. package/dist/infra/claude/query-manager.js.map +1 -1
  186. package/dist/infra/claude/stream-converter.d.ts +2 -2
  187. package/dist/infra/claude/stream-converter.js +2 -2
  188. package/dist/infra/claude/types.d.ts +1 -1
  189. package/dist/infra/claude/types.d.ts.map +1 -1
  190. package/dist/infra/codex/client.d.ts.map +1 -1
  191. package/dist/infra/codex/client.js +0 -1
  192. package/dist/infra/codex/client.js.map +1 -1
  193. package/dist/infra/config/global/globalConfig.d.ts.map +1 -1
  194. package/dist/infra/config/global/globalConfig.js +0 -1
  195. package/dist/infra/config/global/globalConfig.js.map +1 -1
  196. package/dist/infra/config/loaders/agentLoader.d.ts +1 -1
  197. package/dist/infra/config/loaders/agentLoader.d.ts.map +1 -1
  198. package/dist/infra/config/loaders/agentLoader.js +6 -5
  199. package/dist/infra/config/loaders/agentLoader.js.map +1 -1
  200. package/dist/infra/config/loaders/loader.d.ts +1 -1
  201. package/dist/infra/config/loaders/loader.js +1 -1
  202. package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
  203. package/dist/infra/config/loaders/workflowParser.js +9 -5
  204. package/dist/infra/config/loaders/workflowParser.js.map +1 -1
  205. package/dist/infra/config/loaders/workflowResolver.d.ts +4 -4
  206. package/dist/infra/config/loaders/workflowResolver.js +11 -11
  207. package/dist/infra/config/loaders/workflowResolver.js.map +1 -1
  208. package/dist/infra/config/paths.d.ts +4 -4
  209. package/dist/infra/config/paths.d.ts.map +1 -1
  210. package/dist/infra/config/paths.js +7 -7
  211. package/dist/infra/config/paths.js.map +1 -1
  212. package/dist/infra/config/project/index.d.ts +1 -1
  213. package/dist/infra/config/project/index.d.ts.map +1 -1
  214. package/dist/infra/config/project/index.js.map +1 -1
  215. package/dist/infra/config/project/projectConfig.d.ts +2 -2
  216. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  217. package/dist/infra/config/types.d.ts +0 -2
  218. package/dist/infra/config/types.d.ts.map +1 -1
  219. package/dist/infra/fs/index.d.ts +1 -1
  220. package/dist/infra/fs/index.d.ts.map +1 -1
  221. package/dist/infra/fs/index.js.map +1 -1
  222. package/dist/infra/fs/session.d.ts +1 -1
  223. package/dist/infra/fs/session.d.ts.map +1 -1
  224. package/dist/infra/fs/session.js +0 -1
  225. package/dist/infra/fs/session.js.map +1 -1
  226. package/dist/infra/providers/index.d.ts.map +1 -1
  227. package/dist/infra/providers/index.js +0 -1
  228. package/dist/infra/providers/index.js.map +1 -1
  229. package/dist/infra/task/autoCommit.js +1 -1
  230. package/dist/infra/task/autoCommit.js.map +1 -1
  231. package/dist/infra/task/branchList.d.ts +4 -2
  232. package/dist/infra/task/branchList.d.ts.map +1 -1
  233. package/dist/infra/task/branchList.js +87 -9
  234. package/dist/infra/task/branchList.js.map +1 -1
  235. package/dist/infra/task/clone.js +1 -1
  236. package/dist/infra/task/clone.js.map +1 -1
  237. package/dist/infra/task/parser.d.ts +1 -1
  238. package/dist/infra/task/parser.js +1 -1
  239. package/dist/infra/task/summarize.d.ts.map +1 -1
  240. package/dist/infra/task/summarize.js +3 -15
  241. package/dist/infra/task/summarize.js.map +1 -1
  242. package/dist/infra/task/types.d.ts +1 -0
  243. package/dist/infra/task/types.d.ts.map +1 -1
  244. package/dist/shared/context.d.ts.map +1 -1
  245. package/dist/shared/context.js +0 -1
  246. package/dist/shared/context.js.map +1 -1
  247. package/dist/shared/i18n/index.d.ts +31 -0
  248. package/dist/shared/i18n/index.d.ts.map +1 -0
  249. package/dist/shared/i18n/index.js +97 -0
  250. package/dist/shared/i18n/index.js.map +1 -0
  251. package/dist/shared/i18n/labels_en.yaml +37 -0
  252. package/dist/shared/i18n/labels_ja.yaml +37 -0
  253. package/dist/shared/prompt/select.d.ts +0 -3
  254. package/dist/shared/prompt/select.d.ts.map +1 -1
  255. package/dist/shared/prompt/select.js +5 -20
  256. package/dist/shared/prompt/select.js.map +1 -1
  257. package/dist/shared/prompts/en/perform_agent_system_prompt.md +7 -0
  258. package/dist/shared/prompts/en/perform_builtin_agent_system_prompt.md +7 -0
  259. package/dist/shared/prompts/en/perform_judge_message.md +24 -0
  260. package/dist/shared/prompts/en/perform_phase1_message.md +45 -0
  261. package/dist/shared/prompts/en/perform_phase2_message.md +31 -0
  262. package/dist/shared/prompts/en/perform_phase3_message.md +19 -0
  263. package/dist/shared/prompts/en/score_interactive_system_prompt.md +53 -0
  264. package/dist/shared/prompts/en/score_slug_system_prompt.md +19 -0
  265. package/dist/shared/prompts/en/score_summary_system_prompt.md +25 -0
  266. package/dist/shared/prompts/index.d.ts +27 -0
  267. package/dist/shared/prompts/index.d.ts.map +1 -0
  268. package/dist/shared/prompts/index.js +111 -0
  269. package/dist/shared/prompts/index.js.map +1 -0
  270. package/dist/shared/prompts/ja/perform_agent_system_prompt.md +7 -0
  271. package/dist/shared/prompts/ja/perform_builtin_agent_system_prompt.md +7 -0
  272. package/dist/shared/prompts/ja/perform_judge_message.md +24 -0
  273. package/dist/shared/prompts/ja/perform_phase1_message.md +44 -0
  274. package/dist/shared/prompts/ja/perform_phase2_message.md +30 -0
  275. package/dist/shared/prompts/ja/perform_phase3_message.md +19 -0
  276. package/dist/shared/prompts/ja/score_interactive_system_prompt.md +59 -0
  277. package/dist/shared/prompts/ja/score_slug_system_prompt.md +19 -0
  278. package/dist/shared/prompts/ja/score_summary_system_prompt.md +32 -0
  279. package/dist/shared/ui/LogManager.d.ts +1 -1
  280. package/dist/shared/ui/LogManager.d.ts.map +1 -1
  281. package/dist/shared/ui/LogManager.js +1 -2
  282. package/dist/shared/ui/LogManager.js.map +1 -1
  283. package/dist/shared/utils/debug.js +1 -1
  284. package/dist/shared/utils/debug.js.map +1 -1
  285. package/dist/shared/utils/types.d.ts +29 -1
  286. package/dist/shared/utils/types.d.ts.map +1 -1
  287. package/package.json +2 -2
  288. package/resources/global/en/{workflows → pieces}/default.yaml +16 -16
  289. package/resources/global/en/{workflows → pieces}/expert-cqrs.yaml +17 -17
  290. package/resources/global/en/{workflows → pieces}/expert.yaml +20 -20
  291. package/resources/global/en/{workflows → pieces}/magi.yaml +4 -4
  292. package/resources/global/en/{workflows → pieces}/minimal.yaml +7 -7
  293. package/resources/global/en/{workflows → pieces}/research.yaml +11 -11
  294. package/resources/global/en/{workflows → pieces}/review-fix-minimal.yaml +8 -8
  295. package/resources/global/en/{workflows → pieces}/review-only.yaml +7 -7
  296. package/resources/global/ja/agents/default/architecture-reviewer.md +3 -3
  297. package/resources/global/ja/agents/default/supervisor.md +1 -1
  298. package/resources/global/ja/agents/templates/planner.md +1 -1
  299. package/resources/global/ja/{workflows → pieces}/default.yaml +12 -12
  300. package/resources/global/ja/{workflows → pieces}/expert-cqrs.yaml +18 -18
  301. package/resources/global/ja/{workflows → pieces}/expert.yaml +15 -15
  302. package/resources/global/ja/{workflows → pieces}/magi.yaml +4 -4
  303. package/resources/global/ja/{workflows → pieces}/minimal.yaml +8 -8
  304. package/resources/global/ja/{workflows → pieces}/research.yaml +11 -11
  305. package/resources/global/ja/{workflows → pieces}/review-fix-minimal.yaml +8 -8
  306. package/resources/global/ja/{workflows → pieces}/review-only.yaml +7 -7
  307. package/dist/core/workflow/engine/StepExecutor.d.ts +0 -52
  308. package/dist/core/workflow/engine/StepExecutor.d.ts.map +0 -1
  309. package/dist/core/workflow/engine/StepExecutor.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/workflow/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,aAAa,EAAE,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAE,CACjD,wBAAwB,QAAQ,SAAS,KAAK,wCAAwC;IACxF,YAAY,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,iBAAiB,QAAQ,EAAE;IAC/D,qBAAqB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,0BAA0B,OAAO,EAAE;IAC/E,sBAAsB,EAAE,wBAAwB;CACjD,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/workflow/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,aAAa,EAAE,CAAC,YAAoB,EAAE,KAAa,EAAE,EAAE,CACrD,4BAA4B,YAAY,SAAS,KAAK,wCAAwC;IAChG,gBAAgB,EAAE,CAAC,YAAoB,EAAE,EAAE,CAAC,qBAAqB,YAAY,EAAE;IAC/E,yBAAyB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,8BAA8B,OAAO,EAAE;IACvF,sBAAsB,EAAE,wBAAwB;CACjD,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Executes a single workflow movement through the 3-phase model.
3
+ *
4
+ * Phase 1: Main agent execution (with tools)
5
+ * Phase 2: Report output (Write-only, optional)
6
+ * Phase 3: Status judgment (no tools, optional)
7
+ */
8
+ import type { WorkflowMovement, WorkflowState, AgentResponse, Language } from '../../models/types.js';
9
+ import type { PhaseName } from '../types.js';
10
+ import type { OptionsBuilder } from './OptionsBuilder.js';
11
+ export interface MovementExecutorDeps {
12
+ readonly optionsBuilder: OptionsBuilder;
13
+ readonly getCwd: () => string;
14
+ readonly getProjectCwd: () => string;
15
+ readonly getReportDir: () => string;
16
+ readonly getLanguage: () => Language | undefined;
17
+ readonly getInteractive: () => boolean;
18
+ readonly getWorkflowMovements: () => ReadonlyArray<{
19
+ name: string;
20
+ description?: string;
21
+ }>;
22
+ readonly detectRuleIndex: (content: string, movementName: string) => number;
23
+ readonly callAiJudge: (agentOutput: string, conditions: Array<{
24
+ index: number;
25
+ text: string;
26
+ }>, options: {
27
+ cwd: string;
28
+ }) => Promise<number>;
29
+ readonly onPhaseStart?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, instruction: string) => void;
30
+ readonly onPhaseComplete?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, content: string, status: string, error?: string) => void;
31
+ }
32
+ export declare class MovementExecutor {
33
+ private readonly deps;
34
+ constructor(deps: MovementExecutorDeps);
35
+ /** Build Phase 1 instruction from template */
36
+ buildInstruction(step: WorkflowMovement, movementIteration: number, state: WorkflowState, task: string, maxIterations: number): string;
37
+ /**
38
+ * Execute a normal (non-parallel) movement through all 3 phases.
39
+ *
40
+ * Returns the final response (with matchedRuleIndex if a rule matched)
41
+ * and the instruction used for Phase 1.
42
+ */
43
+ runNormalMovement(step: WorkflowMovement, state: WorkflowState, task: string, maxIterations: number, updateAgentSession: (agent: string, sessionId: string | undefined) => void, prebuiltInstruction?: string): Promise<{
44
+ response: AgentResponse;
45
+ instruction: string;
46
+ }>;
47
+ /** Collect movement:report events for each report file that exists */
48
+ emitMovementReports(step: WorkflowMovement): void;
49
+ private reportFiles;
50
+ /** Check if report file exists and collect for emission */
51
+ private checkReportFile;
52
+ /** Drain collected report files (called by engine after movement execution) */
53
+ drainReportFiles(): Array<{
54
+ step: WorkflowMovement;
55
+ filePath: string;
56
+ fileName: string;
57
+ }>;
58
+ }
59
+ //# sourceMappingURL=MovementExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MovementExecutor.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/engine/MovementExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5E,QAAQ,CAAC,WAAW,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACtH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtJ;AAED,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,oBAAoB;IAG7C,8CAA8C;IAC9C,gBAAgB,CACd,IAAI,EAAE,gBAAgB,EACtB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,MAAM;IAmBT;;;;;OAKG;IACG,iBAAiB,CACrB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EAC1E,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAmD5D,sEAAsE;IACtE,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAiBjD,OAAO,CAAC,WAAW,CAA6E;IAEhG,2DAA2D;IAC3D,OAAO,CAAC,eAAe;IAOvB,+EAA+E;IAC/E,gBAAgB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAM1F"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Executes a single workflow step through the 3-phase model.
2
+ * Executes a single workflow movement through the 3-phase model.
3
3
  *
4
4
  * Phase 1: Main agent execution (with tools)
5
5
  * Phase 2: Report output (Write-only, optional)
@@ -11,21 +11,22 @@ import { runAgent } from '../../../agents/runner.js';
11
11
  import { InstructionBuilder, isReportObjectConfig } from '../instruction/InstructionBuilder.js';
12
12
  import { needsStatusJudgmentPhase, runReportPhase, runStatusJudgmentPhase } from '../phase-runner.js';
13
13
  import { detectMatchedRule } from '../evaluation/index.js';
14
- import { incrementStepIteration, getPreviousOutput } from './state-manager.js';
14
+ import { incrementMovementIteration, getPreviousOutput } from './state-manager.js';
15
15
  import { createLogger } from '../../../shared/utils/index.js';
16
- const log = createLogger('step-executor');
17
- export class StepExecutor {
16
+ const log = createLogger('movement-executor');
17
+ export class MovementExecutor {
18
18
  deps;
19
19
  constructor(deps) {
20
20
  this.deps = deps;
21
21
  }
22
22
  /** Build Phase 1 instruction from template */
23
- buildInstruction(step, stepIteration, state, task, maxIterations) {
23
+ buildInstruction(step, movementIteration, state, task, maxIterations) {
24
+ const workflowMovements = this.deps.getWorkflowMovements();
24
25
  return new InstructionBuilder(step, {
25
26
  task,
26
27
  iteration: state.iteration,
27
28
  maxIterations,
28
- stepIteration,
29
+ movementIteration,
29
30
  cwd: this.deps.getCwd(),
30
31
  projectCwd: this.deps.getProjectCwd(),
31
32
  userInputs: state.userInputs,
@@ -33,35 +34,39 @@ export class StepExecutor {
33
34
  reportDir: join(this.deps.getProjectCwd(), this.deps.getReportDir()),
34
35
  language: this.deps.getLanguage(),
35
36
  interactive: this.deps.getInteractive(),
37
+ workflowMovements: workflowMovements,
38
+ currentMovementIndex: workflowMovements.findIndex(s => s.name === step.name),
36
39
  }).build();
37
40
  }
38
41
  /**
39
- * Execute a normal (non-parallel) step through all 3 phases.
42
+ * Execute a normal (non-parallel) movement through all 3 phases.
40
43
  *
41
44
  * Returns the final response (with matchedRuleIndex if a rule matched)
42
45
  * and the instruction used for Phase 1.
43
46
  */
44
- async runNormalStep(step, state, task, maxIterations, updateAgentSession, prebuiltInstruction) {
45
- const stepIteration = prebuiltInstruction
46
- ? state.stepIterations.get(step.name) ?? 1
47
- : incrementStepIteration(state, step.name);
48
- const instruction = prebuiltInstruction ?? this.buildInstruction(step, stepIteration, state, task, maxIterations);
47
+ async runNormalMovement(step, state, task, maxIterations, updateAgentSession, prebuiltInstruction) {
48
+ const movementIteration = prebuiltInstruction
49
+ ? state.movementIterations.get(step.name) ?? 1
50
+ : incrementMovementIteration(state, step.name);
51
+ const instruction = prebuiltInstruction ?? this.buildInstruction(step, movementIteration, state, task, maxIterations);
49
52
  const sessionKey = step.agent ?? step.name;
50
- log.debug('Running step', {
51
- step: step.name,
53
+ log.debug('Running movement', {
54
+ movement: step.name,
52
55
  agent: step.agent ?? '(none)',
53
- stepIteration,
56
+ movementIteration,
54
57
  iteration: state.iteration,
55
58
  sessionId: state.agentSessions.get(sessionKey) ?? 'new',
56
59
  });
57
- // Phase 1: main execution (Write excluded if step has report)
60
+ // Phase 1: main execution (Write excluded if movement has report)
61
+ this.deps.onPhaseStart?.(step, 1, 'execute', instruction);
58
62
  const agentOptions = this.deps.optionsBuilder.buildAgentOptions(step);
59
63
  let response = await runAgent(step.agent, instruction, agentOptions);
60
64
  updateAgentSession(sessionKey, response.sessionId);
61
- const phaseCtx = this.deps.optionsBuilder.buildPhaseRunnerContext(state, updateAgentSession);
65
+ this.deps.onPhaseComplete?.(step, 1, 'execute', response.content, response.status, response.error);
66
+ const phaseCtx = this.deps.optionsBuilder.buildPhaseRunnerContext(state, updateAgentSession, this.deps.onPhaseStart, this.deps.onPhaseComplete);
62
67
  // Phase 2: report output (resume same session, Write only)
63
68
  if (step.report) {
64
- await runReportPhase(step, stepIteration, phaseCtx);
69
+ await runReportPhase(step, movementIteration, phaseCtx);
65
70
  }
66
71
  // Phase 3: status judgment (resume session, no tools, output status tag)
67
72
  let tagContent = '';
@@ -76,15 +81,15 @@ export class StepExecutor {
76
81
  callAiJudge: this.deps.callAiJudge,
77
82
  });
78
83
  if (match) {
79
- log.debug('Rule matched', { step: step.name, ruleIndex: match.index, method: match.method });
84
+ log.debug('Rule matched', { movement: step.name, ruleIndex: match.index, method: match.method });
80
85
  response = { ...response, matchedRuleIndex: match.index, matchedRuleMethod: match.method };
81
86
  }
82
- state.stepOutputs.set(step.name, response);
83
- this.emitStepReports(step);
87
+ state.movementOutputs.set(step.name, response);
88
+ this.emitMovementReports(step);
84
89
  return { response, instruction };
85
90
  }
86
- /** Emit step:report events for each report file that exists */
87
- emitStepReports(step) {
91
+ /** Collect movement:report events for each report file that exists */
92
+ emitMovementReports(step) {
88
93
  if (!step.report)
89
94
  return;
90
95
  const baseDir = join(this.deps.getProjectCwd(), this.deps.getReportDir());
@@ -110,11 +115,11 @@ export class StepExecutor {
110
115
  this.reportFiles.push({ step, filePath, fileName });
111
116
  }
112
117
  }
113
- /** Drain collected report files (called by engine after step execution) */
118
+ /** Drain collected report files (called by engine after movement execution) */
114
119
  drainReportFiles() {
115
120
  const files = this.reportFiles;
116
121
  this.reportFiles = [];
117
122
  return files;
118
123
  }
119
124
  }
120
- //# sourceMappingURL=StepExecutor.js.map
125
+ //# sourceMappingURL=MovementExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MovementExecutor.js","sourceRoot":"","sources":["../../../../src/core/workflow/engine/MovementExecutor.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@
4
4
  * Centralizes the option construction logic that was previously
5
5
  * scattered across WorkflowEngine methods.
6
6
  */
7
- import type { WorkflowStep, WorkflowState, Language } from '../../models/types.js';
7
+ import type { WorkflowMovement, WorkflowState, Language } from '../../models/types.js';
8
8
  import type { RunAgentOptions } from '../../../agents/runner.js';
9
9
  import type { PhaseRunnerContext } from '../phase-runner.js';
10
- import type { WorkflowEngineOptions } from '../types.js';
10
+ import type { WorkflowEngineOptions, PhaseName } from '../types.js';
11
11
  export declare class OptionsBuilder {
12
12
  private readonly engineOptions;
13
13
  private readonly getCwd;
@@ -17,12 +17,12 @@ export declare class OptionsBuilder {
17
17
  private readonly getLanguage;
18
18
  constructor(engineOptions: WorkflowEngineOptions, getCwd: () => string, getProjectCwd: () => string, getSessionId: (agent: string) => string | undefined, getReportDir: () => string, getLanguage: () => Language | undefined);
19
19
  /** Build common RunAgentOptions shared by all phases */
20
- buildBaseOptions(step: WorkflowStep): RunAgentOptions;
20
+ buildBaseOptions(step: WorkflowMovement): RunAgentOptions;
21
21
  /** Build RunAgentOptions for Phase 1 (main execution) */
22
- buildAgentOptions(step: WorkflowStep): RunAgentOptions;
22
+ buildAgentOptions(step: WorkflowMovement): RunAgentOptions;
23
23
  /** Build RunAgentOptions for session-resume phases (Phase 2, Phase 3) */
24
- buildResumeOptions(step: WorkflowStep, sessionId: string, overrides: Pick<RunAgentOptions, 'allowedTools' | 'maxTurns'>): RunAgentOptions;
24
+ buildResumeOptions(step: WorkflowMovement, sessionId: string, overrides: Pick<RunAgentOptions, 'allowedTools' | 'maxTurns'>): RunAgentOptions;
25
25
  /** Build PhaseRunnerContext for Phase 2/3 execution */
26
- buildPhaseRunnerContext(state: WorkflowState, updateAgentSession: (agent: string, sessionId: string | undefined) => void): PhaseRunnerContext;
26
+ buildPhaseRunnerContext(state: WorkflowState, updateAgentSession: (agent: string, sessionId: string | undefined) => void, onPhaseStart?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, instruction: string) => void, onPhaseComplete?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, content: string, status: string, error?: string) => void): PhaseRunnerContext;
27
27
  }
28
28
  //# sourceMappingURL=OptionsBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/engine/OptionsBuilder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,aAAa,EAAE,qBAAqB,EACpC,MAAM,EAAE,MAAM,MAAM,EACpB,aAAa,EAAE,MAAM,MAAM,EAC3B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACnD,YAAY,EAAE,MAAM,MAAM,EAC1B,WAAW,EAAE,MAAM,QAAQ,GAAG,SAAS;IAG1D,wDAAwD;IACxD,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe;IAcrD,yDAAyD;IACzD,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe;IAetD,yEAAyE;IACzE,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,UAAU,CAAC,GAC5D,eAAe;IAWlB,uDAAuD;IACvD,uBAAuB,CACrB,KAAK,EAAE,aAAa,EACpB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACzE,kBAAkB;CAWtB"}
1
+ {"version":3,"file":"OptionsBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/engine/OptionsBuilder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,aAAa,EAAE,qBAAqB,EACpC,MAAM,EAAE,MAAM,MAAM,EACpB,aAAa,EAAE,MAAM,MAAM,EAC3B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACnD,YAAY,EAAE,MAAM,MAAM,EAC1B,WAAW,EAAE,MAAM,QAAQ,GAAG,SAAS;IAG1D,wDAAwD;IACxD,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe;IAezD,yDAAyD;IACzD,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe;IAkB1D,yEAAyE;IACzE,kBAAkB,CAChB,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,UAAU,CAAC,GAC5D,eAAe;IAWlB,uDAAuD;IACvD,uBAAuB,CACrB,KAAK,EAAE,aAAa,EACpB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EAC1E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EAC5G,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,GAC1I,kBAAkB;CAatB"}
@@ -28,6 +28,7 @@ export class OptionsBuilder {
28
28
  provider: step.provider ?? this.engineOptions.provider,
29
29
  model: step.model ?? this.engineOptions.model,
30
30
  permissionMode: step.permissionMode,
31
+ language: this.getLanguage(),
31
32
  onStream: this.engineOptions.onStream,
32
33
  onPermissionRequest: this.engineOptions.onPermissionRequest,
33
34
  onAskUserQuestion: this.engineOptions.onAskUserQuestion,
@@ -36,15 +37,17 @@ export class OptionsBuilder {
36
37
  }
37
38
  /** Build RunAgentOptions for Phase 1 (main execution) */
38
39
  buildAgentOptions(step) {
39
- // Phase 1: exclude Write from allowedTools when step has report config AND edit is NOT enabled
40
+ // Phase 1: exclude Write from allowedTools when movement has report config AND edit is NOT enabled
40
41
  // (If edit is enabled, Write is needed for code implementation even if report exists)
41
42
  // Note: edit defaults to undefined, so check !== true to catch both false and undefined
42
43
  const allowedTools = step.report && step.edit !== true
43
44
  ? step.allowedTools?.filter((t) => t !== 'Write')
44
45
  : step.allowedTools;
46
+ // Skip session resume when cwd !== projectCwd (worktree execution) to avoid cross-directory contamination
47
+ const shouldResumeSession = step.session !== 'refresh' && this.getCwd() === this.getProjectCwd();
45
48
  return {
46
49
  ...this.buildBaseOptions(step),
47
- sessionId: step.session === 'refresh' ? undefined : this.getSessionId(step.agent ?? step.name),
50
+ sessionId: shouldResumeSession ? this.getSessionId(step.agent ?? step.name) : undefined,
48
51
  allowedTools,
49
52
  };
50
53
  }
@@ -60,7 +63,7 @@ export class OptionsBuilder {
60
63
  };
61
64
  }
62
65
  /** Build PhaseRunnerContext for Phase 2/3 execution */
63
- buildPhaseRunnerContext(state, updateAgentSession) {
66
+ buildPhaseRunnerContext(state, updateAgentSession, onPhaseStart, onPhaseComplete) {
64
67
  return {
65
68
  cwd: this.getCwd(),
66
69
  reportDir: join(this.getProjectCwd(), this.getReportDir()),
@@ -69,6 +72,8 @@ export class OptionsBuilder {
69
72
  getSessionId: (agent) => state.agentSessions.get(agent),
70
73
  buildResumeOptions: this.buildResumeOptions.bind(this),
71
74
  updateAgentSession,
75
+ onPhaseStart,
76
+ onPhaseComplete,
72
77
  };
73
78
  }
74
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsBuilder.js","sourceRoot":"","sources":["../../../../src/core/workflow/engine/OptionsBuilder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMjC,MAAM,OAAO,cAAc;IAEN;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,aAAoC,EACpC,MAAoB,EACpB,aAA2B,EAC3B,YAAmD,EACnD,YAA0B,EAC1B,WAAuC;QALvC,kBAAa,GAAb,aAAa,CAAuB;QACpC,WAAM,GAAN,MAAM,CAAc;QACpB,kBAAa,GAAb,aAAa,CAAc;QAC3B,iBAAY,GAAZ,YAAY,CAAuC;QACnD,iBAAY,GAAZ,YAAY,CAAc;QAC1B,gBAAW,GAAX,WAAW,CAA4B;IACvD,CAAC;IAEJ,wDAAwD;IACxD,gBAAgB,CAAC,IAAkB;QACjC,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ;YACtD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK;YAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;YACrC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB;YAC3D,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;YACvD,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;SACxD,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,iBAAiB,CAAC,IAAkB;QAClC,+FAA+F;QAC/F,sFAAsF;QACtF,wFAAwF;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YACpD,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAEtB,OAAO;YACL,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;YAC9F,YAAY;SACb,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,kBAAkB,CAChB,IAAkB,EAClB,SAAiB,EACjB,SAA6D;QAE7D,OAAO;YACL,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC9B,uDAAuD;YACvD,cAAc,EAAE,SAAS;YACzB,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,uBAAuB,CACrB,KAAoB,EACpB,kBAA0E;QAE1E,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;YAClB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1D,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW;YAC3C,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/D,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,kBAAkB;SACnB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"OptionsBuilder.js","sourceRoot":"","sources":["../../../../src/core/workflow/engine/OptionsBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,38 @@
1
1
  /**
2
- * Executes parallel workflow steps concurrently and aggregates results.
2
+ * Executes parallel workflow movements concurrently and aggregates results.
3
3
  *
4
4
  * When onStream is provided, uses ParallelLogger to prefix each
5
- * sub-step's output with `[name]` for readable interleaved display.
5
+ * sub-movement's output with `[name]` for readable interleaved display.
6
6
  */
7
- import type { WorkflowStep, WorkflowState, AgentResponse } from '../../models/types.js';
7
+ import type { WorkflowMovement, WorkflowState, AgentResponse } from '../../models/types.js';
8
8
  import type { OptionsBuilder } from './OptionsBuilder.js';
9
- import type { StepExecutor } from './StepExecutor.js';
10
- import type { WorkflowEngineOptions } from '../types.js';
9
+ import type { MovementExecutor } from './MovementExecutor.js';
10
+ import type { WorkflowEngineOptions, PhaseName } from '../types.js';
11
11
  export interface ParallelRunnerDeps {
12
12
  readonly optionsBuilder: OptionsBuilder;
13
- readonly stepExecutor: StepExecutor;
13
+ readonly movementExecutor: MovementExecutor;
14
14
  readonly engineOptions: WorkflowEngineOptions;
15
15
  readonly getCwd: () => string;
16
16
  readonly getReportDir: () => string;
17
17
  readonly getInteractive: () => boolean;
18
- readonly detectRuleIndex: (content: string, stepName: string) => number;
18
+ readonly detectRuleIndex: (content: string, movementName: string) => number;
19
19
  readonly callAiJudge: (agentOutput: string, conditions: Array<{
20
20
  index: number;
21
21
  text: string;
22
22
  }>, options: {
23
23
  cwd: string;
24
24
  }) => Promise<number>;
25
+ readonly onPhaseStart?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, instruction: string) => void;
26
+ readonly onPhaseComplete?: (step: WorkflowMovement, phase: 1 | 2 | 3, phaseName: PhaseName, content: string, status: string, error?: string) => void;
25
27
  }
26
28
  export declare class ParallelRunner {
27
29
  private readonly deps;
28
30
  constructor(deps: ParallelRunnerDeps);
29
31
  /**
30
- * Run a parallel step: execute all sub-steps concurrently, then aggregate results.
31
- * The aggregated output becomes the parent step's response for rules evaluation.
32
+ * Run a parallel movement: execute all sub-movements concurrently, then aggregate results.
33
+ * The aggregated output becomes the parent movement's response for rules evaluation.
32
34
  */
33
- runParallelStep(step: WorkflowStep, state: WorkflowState, task: string, maxIterations: number, updateAgentSession: (agent: string, sessionId: string | undefined) => void): Promise<{
35
+ runParallelMovement(step: WorkflowMovement, state: WorkflowState, task: string, maxIterations: number, updateAgentSession: (agent: string, sessionId: string | undefined) => void): Promise<{
34
36
  response: AgentResponse;
35
37
  instruction: string;
36
38
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelRunner.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/engine/ParallelRunner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACxE,QAAQ,CAAC,WAAW,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAG3C;;;OAGG;IACG,eAAe,CACnB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACzE,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAyG7D"}
1
+ {"version":3,"file":"ParallelRunner.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/engine/ParallelRunner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5E,QAAQ,CAAC,WAAW,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACtH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtJ;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAG3C;;;OAGG;IACG,mBAAmB,CACvB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACzE,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CA8G7D"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Executes parallel workflow steps concurrently and aggregates results.
2
+ * Executes parallel workflow movements concurrently and aggregates results.
3
3
  *
4
4
  * When onStream is provided, uses ParallelLogger to prefix each
5
- * sub-step's output with `[name]` for readable interleaved display.
5
+ * sub-movement's output with `[name]` for readable interleaved display.
6
6
  */
7
7
  import { runAgent } from '../../../agents/runner.js';
8
8
  import { ParallelLogger } from './parallel-logger.js';
9
9
  import { needsStatusJudgmentPhase, runReportPhase, runStatusJudgmentPhase } from '../phase-runner.js';
10
10
  import { detectMatchedRule } from '../evaluation/index.js';
11
- import { incrementStepIteration } from './state-manager.js';
11
+ import { incrementMovementIteration } from './state-manager.js';
12
12
  import { createLogger } from '../../../shared/utils/index.js';
13
13
  const log = createLogger('parallel-runner');
14
14
  export class ParallelRunner {
@@ -17,25 +17,28 @@ export class ParallelRunner {
17
17
  this.deps = deps;
18
18
  }
19
19
  /**
20
- * Run a parallel step: execute all sub-steps concurrently, then aggregate results.
21
- * The aggregated output becomes the parent step's response for rules evaluation.
20
+ * Run a parallel movement: execute all sub-movements concurrently, then aggregate results.
21
+ * The aggregated output becomes the parent movement's response for rules evaluation.
22
22
  */
23
- async runParallelStep(step, state, task, maxIterations, updateAgentSession) {
24
- const subSteps = step.parallel;
25
- const stepIteration = incrementStepIteration(state, step.name);
26
- log.debug('Running parallel step', {
27
- step: step.name,
28
- subSteps: subSteps.map(s => s.name),
29
- stepIteration,
23
+ async runParallelMovement(step, state, task, maxIterations, updateAgentSession) {
24
+ if (!step.parallel) {
25
+ throw new Error(`Movement "${step.name}" has no parallel sub-movements`);
26
+ }
27
+ const subMovements = step.parallel;
28
+ const movementIteration = incrementMovementIteration(state, step.name);
29
+ log.debug('Running parallel movement', {
30
+ movement: step.name,
31
+ subMovements: subMovements.map(s => s.name),
32
+ movementIteration,
30
33
  });
31
34
  // Create parallel logger for prefixed output (only when streaming is enabled)
32
35
  const parallelLogger = this.deps.engineOptions.onStream
33
36
  ? new ParallelLogger({
34
- subStepNames: subSteps.map((s) => s.name),
37
+ subMovementNames: subMovements.map((s) => s.name),
35
38
  parentOnStream: this.deps.engineOptions.onStream,
36
39
  })
37
40
  : undefined;
38
- const phaseCtx = this.deps.optionsBuilder.buildPhaseRunnerContext(state, updateAgentSession);
41
+ const phaseCtx = this.deps.optionsBuilder.buildPhaseRunnerContext(state, updateAgentSession, this.deps.onPhaseStart, this.deps.onPhaseComplete);
39
42
  const ruleCtx = {
40
43
  state,
41
44
  cwd: this.deps.getCwd(),
@@ -43,53 +46,55 @@ export class ParallelRunner {
43
46
  detectRuleIndex: this.deps.detectRuleIndex,
44
47
  callAiJudge: this.deps.callAiJudge,
45
48
  };
46
- // Run all sub-steps concurrently
47
- const subResults = await Promise.all(subSteps.map(async (subStep, index) => {
48
- const subIteration = incrementStepIteration(state, subStep.name);
49
- const subInstruction = this.deps.stepExecutor.buildInstruction(subStep, subIteration, state, task, maxIterations);
50
- // Phase 1: main execution (Write excluded if sub-step has report)
51
- const baseOptions = this.deps.optionsBuilder.buildAgentOptions(subStep);
49
+ // Run all sub-movements concurrently
50
+ const subResults = await Promise.all(subMovements.map(async (subMovement, index) => {
51
+ const subIteration = incrementMovementIteration(state, subMovement.name);
52
+ const subInstruction = this.deps.movementExecutor.buildInstruction(subMovement, subIteration, state, task, maxIterations);
53
+ // Phase 1: main execution (Write excluded if sub-movement has report)
54
+ const baseOptions = this.deps.optionsBuilder.buildAgentOptions(subMovement);
52
55
  // Override onStream with parallel logger's prefixed handler (immutable)
53
56
  const agentOptions = parallelLogger
54
- ? { ...baseOptions, onStream: parallelLogger.createStreamHandler(subStep.name, index) }
57
+ ? { ...baseOptions, onStream: parallelLogger.createStreamHandler(subMovement.name, index) }
55
58
  : baseOptions;
56
- const subSessionKey = subStep.agent ?? subStep.name;
57
- const subResponse = await runAgent(subStep.agent, subInstruction, agentOptions);
59
+ const subSessionKey = subMovement.agent ?? subMovement.name;
60
+ this.deps.onPhaseStart?.(subMovement, 1, 'execute', subInstruction);
61
+ const subResponse = await runAgent(subMovement.agent, subInstruction, agentOptions);
58
62
  updateAgentSession(subSessionKey, subResponse.sessionId);
59
- // Phase 2: report output for sub-step
60
- if (subStep.report) {
61
- await runReportPhase(subStep, subIteration, phaseCtx);
63
+ this.deps.onPhaseComplete?.(subMovement, 1, 'execute', subResponse.content, subResponse.status, subResponse.error);
64
+ // Phase 2: report output for sub-movement
65
+ if (subMovement.report) {
66
+ await runReportPhase(subMovement, subIteration, phaseCtx);
62
67
  }
63
- // Phase 3: status judgment for sub-step
68
+ // Phase 3: status judgment for sub-movement
64
69
  let subTagContent = '';
65
- if (needsStatusJudgmentPhase(subStep)) {
66
- subTagContent = await runStatusJudgmentPhase(subStep, phaseCtx);
70
+ if (needsStatusJudgmentPhase(subMovement)) {
71
+ subTagContent = await runStatusJudgmentPhase(subMovement, phaseCtx);
67
72
  }
68
- const match = await detectMatchedRule(subStep, subResponse.content, subTagContent, ruleCtx);
73
+ const match = await detectMatchedRule(subMovement, subResponse.content, subTagContent, ruleCtx);
69
74
  const finalResponse = match
70
75
  ? { ...subResponse, matchedRuleIndex: match.index, matchedRuleMethod: match.method }
71
76
  : subResponse;
72
- state.stepOutputs.set(subStep.name, finalResponse);
73
- this.deps.stepExecutor.emitStepReports(subStep);
74
- return { subStep, response: finalResponse, instruction: subInstruction };
77
+ state.movementOutputs.set(subMovement.name, finalResponse);
78
+ this.deps.movementExecutor.emitMovementReports(subMovement);
79
+ return { subMovement, response: finalResponse, instruction: subInstruction };
75
80
  }));
76
81
  // Print completion summary
77
82
  if (parallelLogger) {
78
83
  parallelLogger.printSummary(step.name, subResults.map((r) => ({
79
- name: r.subStep.name,
80
- condition: r.response.matchedRuleIndex != null && r.subStep.rules
81
- ? r.subStep.rules[r.response.matchedRuleIndex]?.condition
84
+ name: r.subMovement.name,
85
+ condition: r.response.matchedRuleIndex != null && r.subMovement.rules
86
+ ? r.subMovement.rules[r.response.matchedRuleIndex]?.condition
82
87
  : undefined,
83
88
  })));
84
89
  }
85
- // Aggregate sub-step outputs into parent step's response
90
+ // Aggregate sub-movement outputs into parent movement's response
86
91
  const aggregatedContent = subResults
87
- .map((r) => `## ${r.subStep.name}\n${r.response.content}`)
92
+ .map((r) => `## ${r.subMovement.name}\n${r.response.content}`)
88
93
  .join('\n\n---\n\n');
89
94
  const aggregatedInstruction = subResults
90
95
  .map((r) => r.instruction)
91
96
  .join('\n\n');
92
- // Parent step uses aggregate conditions, so tagContent is empty
97
+ // Parent movement uses aggregate conditions, so tagContent is empty
93
98
  const match = await detectMatchedRule(step, aggregatedContent, '', ruleCtx);
94
99
  const aggregatedResponse = {
95
100
  agent: step.name,
@@ -98,8 +103,8 @@ export class ParallelRunner {
98
103
  timestamp: new Date(),
99
104
  ...(match && { matchedRuleIndex: match.index, matchedRuleMethod: match.method }),
100
105
  };
101
- state.stepOutputs.set(step.name, aggregatedResponse);
102
- this.deps.stepExecutor.emitStepReports(step);
106
+ state.movementOutputs.set(step.name, aggregatedResponse);
107
+ this.deps.movementExecutor.emitMovementReports(step);
103
108
  return { response: aggregatedResponse, instruction: aggregatedInstruction };
104
109
  }
105
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelRunner.js","sourceRoot":"","sources":["../../../../src/core/workflow/engine/ParallelRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParallelRunner.js","sourceRoot":"","sources":["../../../../src/core/workflow/engine/ParallelRunner.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Workflow execution engine.
3
3
  *
4
- * Orchestrates the main execution loop: step transitions, abort handling,
5
- * loop detection, and iteration limits. Delegates step execution to
6
- * StepExecutor (normal steps) and ParallelRunner (parallel steps).
4
+ * Orchestrates the main execution loop: movement transitions, abort handling,
5
+ * loop detection, and iteration limits. Delegates movement execution to
6
+ * MovementExecutor (normal movements) and ParallelRunner (parallel movements).
7
7
  */
8
8
  import { EventEmitter } from 'node:events';
9
- import type { WorkflowConfig, WorkflowState, WorkflowStep, AgentResponse } from '../../models/types.js';
9
+ import type { WorkflowConfig, WorkflowState, WorkflowMovement, AgentResponse } from '../../models/types.js';
10
10
  import type { WorkflowEngineOptions } from '../types.js';
11
11
  export type { WorkflowEvents, UserInputRequest, IterationLimitRequest, SessionUpdateCallback, IterationLimitCallback, WorkflowEngineOptions, } from '../types.js';
12
- export { COMPLETE_STEP, ABORT_STEP } from '../constants.js';
12
+ export { COMPLETE_MOVEMENT, ABORT_MOVEMENT } from '../constants.js';
13
13
  /** Workflow engine for orchestrating agent execution */
14
14
  export declare class WorkflowEngine extends EventEmitter {
15
15
  private state;
@@ -22,7 +22,7 @@ export declare class WorkflowEngine extends EventEmitter {
22
22
  private reportDir;
23
23
  private abortRequested;
24
24
  private readonly optionsBuilder;
25
- private readonly stepExecutor;
25
+ private readonly movementExecutor;
26
26
  private readonly parallelRunner;
27
27
  private readonly detectRuleIndex;
28
28
  private readonly callAiJudge;
@@ -41,30 +41,30 @@ export declare class WorkflowEngine extends EventEmitter {
41
41
  getCwd(): string;
42
42
  /** Get project root directory (where .takt/ lives) */
43
43
  getProjectCwd(): string;
44
- /** Request graceful abort: interrupt running queries and stop after current step */
44
+ /** Request graceful abort: interrupt running queries and stop after current movement */
45
45
  abort(): void;
46
46
  /** Check if abort has been requested */
47
47
  isAbortRequested(): boolean;
48
- /** Get step by name */
49
- private getStep;
48
+ /** Get movement by name */
49
+ private getMovement;
50
50
  /** Update agent session and notify via callback if session changed */
51
51
  private updateAgentSession;
52
- /** Emit step:report events collected by StepExecutor */
52
+ /** Emit movement:report events collected by MovementExecutor */
53
53
  private emitCollectedReports;
54
- /** Run a single step (delegates to ParallelRunner if step has parallel sub-steps) */
55
- private runStep;
54
+ /** Run a single movement (delegates to ParallelRunner if movement has parallel sub-movements) */
55
+ private runMovement;
56
56
  /**
57
- * Determine next step for a completed step using rules-based routing.
57
+ * Determine next movement for a completed movement using rules-based routing.
58
58
  */
59
- private resolveNextStep;
59
+ private resolveNextMovement;
60
60
  /** Build instruction (public, used by workflowExecution.ts for logging) */
61
- buildInstruction(step: WorkflowStep, stepIteration: number): string;
61
+ buildInstruction(step: WorkflowMovement, movementIteration: number): string;
62
62
  /** Run the workflow to completion */
63
63
  run(): Promise<WorkflowState>;
64
64
  /** Run a single iteration (for interactive mode) */
65
65
  runSingleIteration(): Promise<{
66
66
  response: AgentResponse;
67
- nextStep: string;
67
+ nextMovement: string;
68
68
  isComplete: boolean;
69
69
  loopDetected?: boolean;
70
70
  }>;