@generacy-ai/workflow-engine 0.0.0-preview-20260304013206

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 (347) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +265 -0
  3. package/dist/actions/base-action.d.ts +63 -0
  4. package/dist/actions/base-action.d.ts.map +1 -0
  5. package/dist/actions/base-action.js +130 -0
  6. package/dist/actions/base-action.js.map +1 -0
  7. package/dist/actions/builtin/agent-invoke.d.ts +16 -0
  8. package/dist/actions/builtin/agent-invoke.d.ts.map +1 -0
  9. package/dist/actions/builtin/agent-invoke.js +108 -0
  10. package/dist/actions/builtin/agent-invoke.js.map +1 -0
  11. package/dist/actions/builtin/humancy-api-handler.d.ts +191 -0
  12. package/dist/actions/builtin/humancy-api-handler.d.ts.map +1 -0
  13. package/dist/actions/builtin/humancy-api-handler.js +521 -0
  14. package/dist/actions/builtin/humancy-api-handler.js.map +1 -0
  15. package/dist/actions/builtin/humancy-review.d.ts +83 -0
  16. package/dist/actions/builtin/humancy-review.d.ts.map +1 -0
  17. package/dist/actions/builtin/humancy-review.js +250 -0
  18. package/dist/actions/builtin/humancy-review.js.map +1 -0
  19. package/dist/actions/builtin/pr-create.d.ts +16 -0
  20. package/dist/actions/builtin/pr-create.d.ts.map +1 -0
  21. package/dist/actions/builtin/pr-create.js +110 -0
  22. package/dist/actions/builtin/pr-create.js.map +1 -0
  23. package/dist/actions/builtin/shell.d.ts +16 -0
  24. package/dist/actions/builtin/shell.d.ts.map +1 -0
  25. package/dist/actions/builtin/shell.js +80 -0
  26. package/dist/actions/builtin/shell.js.map +1 -0
  27. package/dist/actions/builtin/speckit/index.d.ts +47 -0
  28. package/dist/actions/builtin/speckit/index.d.ts.map +1 -0
  29. package/dist/actions/builtin/speckit/index.js +347 -0
  30. package/dist/actions/builtin/speckit/index.js.map +1 -0
  31. package/dist/actions/builtin/speckit/lib/feature.d.ts +17 -0
  32. package/dist/actions/builtin/speckit/lib/feature.d.ts.map +1 -0
  33. package/dist/actions/builtin/speckit/lib/feature.js +430 -0
  34. package/dist/actions/builtin/speckit/lib/feature.js.map +1 -0
  35. package/dist/actions/builtin/speckit/lib/fs.d.ts +62 -0
  36. package/dist/actions/builtin/speckit/lib/fs.d.ts.map +1 -0
  37. package/dist/actions/builtin/speckit/lib/fs.js +181 -0
  38. package/dist/actions/builtin/speckit/lib/fs.js.map +1 -0
  39. package/dist/actions/builtin/speckit/lib/paths.d.ts +7 -0
  40. package/dist/actions/builtin/speckit/lib/paths.d.ts.map +1 -0
  41. package/dist/actions/builtin/speckit/lib/paths.js +161 -0
  42. package/dist/actions/builtin/speckit/lib/paths.js.map +1 -0
  43. package/dist/actions/builtin/speckit/lib/prereqs.d.ts +8 -0
  44. package/dist/actions/builtin/speckit/lib/prereqs.d.ts.map +1 -0
  45. package/dist/actions/builtin/speckit/lib/prereqs.js +194 -0
  46. package/dist/actions/builtin/speckit/lib/prereqs.js.map +1 -0
  47. package/dist/actions/builtin/speckit/lib/stream-batcher.d.ts +14 -0
  48. package/dist/actions/builtin/speckit/lib/stream-batcher.d.ts.map +1 -0
  49. package/dist/actions/builtin/speckit/lib/stream-batcher.js +31 -0
  50. package/dist/actions/builtin/speckit/lib/stream-batcher.js.map +1 -0
  51. package/dist/actions/builtin/speckit/lib/templates.d.ts +15 -0
  52. package/dist/actions/builtin/speckit/lib/templates.d.ts.map +1 -0
  53. package/dist/actions/builtin/speckit/lib/templates.js +176 -0
  54. package/dist/actions/builtin/speckit/lib/templates.js.map +1 -0
  55. package/dist/actions/builtin/speckit/operations/check-prereqs.d.ts +11 -0
  56. package/dist/actions/builtin/speckit/operations/check-prereqs.d.ts.map +1 -0
  57. package/dist/actions/builtin/speckit/operations/check-prereqs.js +22 -0
  58. package/dist/actions/builtin/speckit/operations/check-prereqs.js.map +1 -0
  59. package/dist/actions/builtin/speckit/operations/clarify.d.ts +7 -0
  60. package/dist/actions/builtin/speckit/operations/clarify.d.ts.map +1 -0
  61. package/dist/actions/builtin/speckit/operations/clarify.js +302 -0
  62. package/dist/actions/builtin/speckit/operations/clarify.js.map +1 -0
  63. package/dist/actions/builtin/speckit/operations/copy-template.d.ts +11 -0
  64. package/dist/actions/builtin/speckit/operations/copy-template.d.ts.map +1 -0
  65. package/dist/actions/builtin/speckit/operations/copy-template.js +23 -0
  66. package/dist/actions/builtin/speckit/operations/copy-template.js.map +1 -0
  67. package/dist/actions/builtin/speckit/operations/create-feature.d.ts +11 -0
  68. package/dist/actions/builtin/speckit/operations/create-feature.d.ts.map +1 -0
  69. package/dist/actions/builtin/speckit/operations/create-feature.js +25 -0
  70. package/dist/actions/builtin/speckit/operations/create-feature.js.map +1 -0
  71. package/dist/actions/builtin/speckit/operations/get-paths.d.ts +11 -0
  72. package/dist/actions/builtin/speckit/operations/get-paths.d.ts.map +1 -0
  73. package/dist/actions/builtin/speckit/operations/get-paths.js +17 -0
  74. package/dist/actions/builtin/speckit/operations/get-paths.js.map +1 -0
  75. package/dist/actions/builtin/speckit/operations/implement.d.ts +7 -0
  76. package/dist/actions/builtin/speckit/operations/implement.d.ts.map +1 -0
  77. package/dist/actions/builtin/speckit/operations/implement.js +246 -0
  78. package/dist/actions/builtin/speckit/operations/implement.js.map +1 -0
  79. package/dist/actions/builtin/speckit/operations/plan.d.ts +7 -0
  80. package/dist/actions/builtin/speckit/operations/plan.d.ts.map +1 -0
  81. package/dist/actions/builtin/speckit/operations/plan.js +253 -0
  82. package/dist/actions/builtin/speckit/operations/plan.js.map +1 -0
  83. package/dist/actions/builtin/speckit/operations/specify.d.ts +7 -0
  84. package/dist/actions/builtin/speckit/operations/specify.d.ts.map +1 -0
  85. package/dist/actions/builtin/speckit/operations/specify.js +178 -0
  86. package/dist/actions/builtin/speckit/operations/specify.js.map +1 -0
  87. package/dist/actions/builtin/speckit/operations/tasks-to-issues.d.ts +42 -0
  88. package/dist/actions/builtin/speckit/operations/tasks-to-issues.d.ts.map +1 -0
  89. package/dist/actions/builtin/speckit/operations/tasks-to-issues.js +386 -0
  90. package/dist/actions/builtin/speckit/operations/tasks-to-issues.js.map +1 -0
  91. package/dist/actions/builtin/speckit/operations/tasks.d.ts +7 -0
  92. package/dist/actions/builtin/speckit/operations/tasks.d.ts.map +1 -0
  93. package/dist/actions/builtin/speckit/operations/tasks.js +234 -0
  94. package/dist/actions/builtin/speckit/operations/tasks.js.map +1 -0
  95. package/dist/actions/builtin/speckit/types.d.ts +268 -0
  96. package/dist/actions/builtin/speckit/types.d.ts.map +1 -0
  97. package/dist/actions/builtin/speckit/types.js +11 -0
  98. package/dist/actions/builtin/speckit/types.js.map +1 -0
  99. package/dist/actions/builtin/verification-check.d.ts +16 -0
  100. package/dist/actions/builtin/verification-check.d.ts.map +1 -0
  101. package/dist/actions/builtin/verification-check.js +99 -0
  102. package/dist/actions/builtin/verification-check.js.map +1 -0
  103. package/dist/actions/builtin/workspace-prepare.d.ts +16 -0
  104. package/dist/actions/builtin/workspace-prepare.d.ts.map +1 -0
  105. package/dist/actions/builtin/workspace-prepare.js +108 -0
  106. package/dist/actions/builtin/workspace-prepare.js.map +1 -0
  107. package/dist/actions/cli-utils.d.ts +76 -0
  108. package/dist/actions/cli-utils.d.ts.map +1 -0
  109. package/dist/actions/cli-utils.js +278 -0
  110. package/dist/actions/cli-utils.js.map +1 -0
  111. package/dist/actions/epic/check-completion.d.ts +14 -0
  112. package/dist/actions/epic/check-completion.d.ts.map +1 -0
  113. package/dist/actions/epic/check-completion.js +57 -0
  114. package/dist/actions/epic/check-completion.js.map +1 -0
  115. package/dist/actions/epic/close.d.ts +18 -0
  116. package/dist/actions/epic/close.d.ts.map +1 -0
  117. package/dist/actions/epic/close.js +76 -0
  118. package/dist/actions/epic/close.js.map +1 -0
  119. package/dist/actions/epic/create-pr.d.ts +22 -0
  120. package/dist/actions/epic/create-pr.d.ts.map +1 -0
  121. package/dist/actions/epic/create-pr.js +140 -0
  122. package/dist/actions/epic/create-pr.js.map +1 -0
  123. package/dist/actions/epic/dispatch-children.d.ts +16 -0
  124. package/dist/actions/epic/dispatch-children.d.ts.map +1 -0
  125. package/dist/actions/epic/dispatch-children.js +95 -0
  126. package/dist/actions/epic/dispatch-children.js.map +1 -0
  127. package/dist/actions/epic/find-children.d.ts +16 -0
  128. package/dist/actions/epic/find-children.d.ts.map +1 -0
  129. package/dist/actions/epic/find-children.js +92 -0
  130. package/dist/actions/epic/find-children.js.map +1 -0
  131. package/dist/actions/epic/index.d.ts +20 -0
  132. package/dist/actions/epic/index.d.ts.map +1 -0
  133. package/dist/actions/epic/index.js +35 -0
  134. package/dist/actions/epic/index.js.map +1 -0
  135. package/dist/actions/epic/post-tasks-summary.d.ts +18 -0
  136. package/dist/actions/epic/post-tasks-summary.d.ts.map +1 -0
  137. package/dist/actions/epic/post-tasks-summary.js +123 -0
  138. package/dist/actions/epic/post-tasks-summary.js.map +1 -0
  139. package/dist/actions/epic/update-status.d.ts +22 -0
  140. package/dist/actions/epic/update-status.d.ts.map +1 -0
  141. package/dist/actions/epic/update-status.js +105 -0
  142. package/dist/actions/epic/update-status.js.map +1 -0
  143. package/dist/actions/github/add-comment.d.ts +14 -0
  144. package/dist/actions/github/add-comment.d.ts.map +1 -0
  145. package/dist/actions/github/add-comment.js +44 -0
  146. package/dist/actions/github/add-comment.js.map +1 -0
  147. package/dist/actions/github/client/gh-cli.d.ts +68 -0
  148. package/dist/actions/github/client/gh-cli.d.ts.map +1 -0
  149. package/dist/actions/github/client/gh-cli.js +781 -0
  150. package/dist/actions/github/client/gh-cli.js.map +1 -0
  151. package/dist/actions/github/client/index.d.ts +12 -0
  152. package/dist/actions/github/client/index.d.ts.map +1 -0
  153. package/dist/actions/github/client/index.js +10 -0
  154. package/dist/actions/github/client/index.js.map +1 -0
  155. package/dist/actions/github/client/interface.d.ts +270 -0
  156. package/dist/actions/github/client/interface.d.ts.map +1 -0
  157. package/dist/actions/github/client/interface.js +2 -0
  158. package/dist/actions/github/client/interface.js.map +1 -0
  159. package/dist/actions/github/commit-and-push.d.ts +19 -0
  160. package/dist/actions/github/commit-and-push.d.ts.map +1 -0
  161. package/dist/actions/github/commit-and-push.js +86 -0
  162. package/dist/actions/github/commit-and-push.js.map +1 -0
  163. package/dist/actions/github/create-draft-pr.d.ts +18 -0
  164. package/dist/actions/github/create-draft-pr.d.ts.map +1 -0
  165. package/dist/actions/github/create-draft-pr.js +76 -0
  166. package/dist/actions/github/create-draft-pr.js.map +1 -0
  167. package/dist/actions/github/get-context.d.ts +23 -0
  168. package/dist/actions/github/get-context.d.ts.map +1 -0
  169. package/dist/actions/github/get-context.js +109 -0
  170. package/dist/actions/github/get-context.js.map +1 -0
  171. package/dist/actions/github/index.d.ts +32 -0
  172. package/dist/actions/github/index.d.ts.map +1 -0
  173. package/dist/actions/github/index.js +67 -0
  174. package/dist/actions/github/index.js.map +1 -0
  175. package/dist/actions/github/label-definitions.d.ts +19 -0
  176. package/dist/actions/github/label-definitions.d.ts.map +1 -0
  177. package/dist/actions/github/label-definitions.js +71 -0
  178. package/dist/actions/github/label-definitions.js.map +1 -0
  179. package/dist/actions/github/mark-pr-ready.d.ts +14 -0
  180. package/dist/actions/github/mark-pr-ready.d.ts.map +1 -0
  181. package/dist/actions/github/mark-pr-ready.js +43 -0
  182. package/dist/actions/github/mark-pr-ready.js.map +1 -0
  183. package/dist/actions/github/merge-from-base.d.ts +15 -0
  184. package/dist/actions/github/merge-from-base.d.ts.map +1 -0
  185. package/dist/actions/github/merge-from-base.js +120 -0
  186. package/dist/actions/github/merge-from-base.js.map +1 -0
  187. package/dist/actions/github/preflight.d.ts +36 -0
  188. package/dist/actions/github/preflight.d.ts.map +1 -0
  189. package/dist/actions/github/preflight.js +292 -0
  190. package/dist/actions/github/preflight.js.map +1 -0
  191. package/dist/actions/github/read-pr-feedback.d.ts +14 -0
  192. package/dist/actions/github/read-pr-feedback.d.ts.map +1 -0
  193. package/dist/actions/github/read-pr-feedback.js +53 -0
  194. package/dist/actions/github/read-pr-feedback.js.map +1 -0
  195. package/dist/actions/github/respond-pr-feedback.d.ts +14 -0
  196. package/dist/actions/github/respond-pr-feedback.d.ts.map +1 -0
  197. package/dist/actions/github/respond-pr-feedback.js +58 -0
  198. package/dist/actions/github/respond-pr-feedback.js.map +1 -0
  199. package/dist/actions/github/review-changes.d.ts +19 -0
  200. package/dist/actions/github/review-changes.d.ts.map +1 -0
  201. package/dist/actions/github/review-changes.js +95 -0
  202. package/dist/actions/github/review-changes.js.map +1 -0
  203. package/dist/actions/github/sync-labels.d.ts +14 -0
  204. package/dist/actions/github/sync-labels.d.ts.map +1 -0
  205. package/dist/actions/github/sync-labels.js +81 -0
  206. package/dist/actions/github/sync-labels.js.map +1 -0
  207. package/dist/actions/github/update-pr.d.ts +14 -0
  208. package/dist/actions/github/update-pr.d.ts.map +1 -0
  209. package/dist/actions/github/update-pr.js +63 -0
  210. package/dist/actions/github/update-pr.js.map +1 -0
  211. package/dist/actions/index.d.ts +109 -0
  212. package/dist/actions/index.d.ts.map +1 -0
  213. package/dist/actions/index.js +233 -0
  214. package/dist/actions/index.js.map +1 -0
  215. package/dist/actions/workflow/check-gate.d.ts +15 -0
  216. package/dist/actions/workflow/check-gate.d.ts.map +1 -0
  217. package/dist/actions/workflow/check-gate.js +75 -0
  218. package/dist/actions/workflow/check-gate.js.map +1 -0
  219. package/dist/actions/workflow/index.d.ts +21 -0
  220. package/dist/actions/workflow/index.d.ts.map +1 -0
  221. package/dist/actions/workflow/index.js +31 -0
  222. package/dist/actions/workflow/index.js.map +1 -0
  223. package/dist/actions/workflow/update-phase.d.ts +15 -0
  224. package/dist/actions/workflow/update-phase.d.ts.map +1 -0
  225. package/dist/actions/workflow/update-phase.js +143 -0
  226. package/dist/actions/workflow/update-phase.js.map +1 -0
  227. package/dist/actions/workflow/update-stage.d.ts +19 -0
  228. package/dist/actions/workflow/update-stage.d.ts.map +1 -0
  229. package/dist/actions/workflow/update-stage.js +137 -0
  230. package/dist/actions/workflow/update-stage.js.map +1 -0
  231. package/dist/errors/base-workflow-not-found.d.ts +10 -0
  232. package/dist/errors/base-workflow-not-found.d.ts.map +1 -0
  233. package/dist/errors/base-workflow-not-found.js +18 -0
  234. package/dist/errors/base-workflow-not-found.js.map +1 -0
  235. package/dist/errors/circular-extends.d.ts +9 -0
  236. package/dist/errors/circular-extends.d.ts.map +1 -0
  237. package/dist/errors/circular-extends.js +13 -0
  238. package/dist/errors/circular-extends.js.map +1 -0
  239. package/dist/errors/correlation-timeout.d.ts +9 -0
  240. package/dist/errors/correlation-timeout.d.ts.map +1 -0
  241. package/dist/errors/correlation-timeout.js +13 -0
  242. package/dist/errors/correlation-timeout.js.map +1 -0
  243. package/dist/errors/workflow-override.d.ts +9 -0
  244. package/dist/errors/workflow-override.d.ts.map +1 -0
  245. package/dist/errors/workflow-override.js +12 -0
  246. package/dist/errors/workflow-override.js.map +1 -0
  247. package/dist/executor/events.d.ts +55 -0
  248. package/dist/executor/events.d.ts.map +1 -0
  249. package/dist/executor/events.js +72 -0
  250. package/dist/executor/events.js.map +1 -0
  251. package/dist/executor/gate-handler.d.ts +55 -0
  252. package/dist/executor/gate-handler.d.ts.map +1 -0
  253. package/dist/executor/gate-handler.js +139 -0
  254. package/dist/executor/gate-handler.js.map +1 -0
  255. package/dist/executor/index.d.ts +140 -0
  256. package/dist/executor/index.d.ts.map +1 -0
  257. package/dist/executor/index.js +681 -0
  258. package/dist/executor/index.js.map +1 -0
  259. package/dist/index.d.ts +24 -0
  260. package/dist/index.d.ts.map +1 -0
  261. package/dist/index.js +34 -0
  262. package/dist/index.js.map +1 -0
  263. package/dist/interpolation/context.d.ts +117 -0
  264. package/dist/interpolation/context.d.ts.map +1 -0
  265. package/dist/interpolation/context.js +256 -0
  266. package/dist/interpolation/context.js.map +1 -0
  267. package/dist/interpolation/index.d.ts +76 -0
  268. package/dist/interpolation/index.d.ts.map +1 -0
  269. package/dist/interpolation/index.js +264 -0
  270. package/dist/interpolation/index.js.map +1 -0
  271. package/dist/loader/extends.d.ts +48 -0
  272. package/dist/loader/extends.d.ts.map +1 -0
  273. package/dist/loader/extends.js +140 -0
  274. package/dist/loader/extends.js.map +1 -0
  275. package/dist/loader/index.d.ts +50 -0
  276. package/dist/loader/index.d.ts.map +1 -0
  277. package/dist/loader/index.js +190 -0
  278. package/dist/loader/index.js.map +1 -0
  279. package/dist/loader/schema.d.ts +506 -0
  280. package/dist/loader/schema.d.ts.map +1 -0
  281. package/dist/loader/schema.js +63 -0
  282. package/dist/loader/schema.js.map +1 -0
  283. package/dist/loader/validator.d.ts +33 -0
  284. package/dist/loader/validator.d.ts.map +1 -0
  285. package/dist/loader/validator.js +135 -0
  286. package/dist/loader/validator.js.map +1 -0
  287. package/dist/registry/index.d.ts +42 -0
  288. package/dist/registry/index.d.ts.map +1 -0
  289. package/dist/registry/index.js +77 -0
  290. package/dist/registry/index.js.map +1 -0
  291. package/dist/retry/index.d.ts +37 -0
  292. package/dist/retry/index.d.ts.map +1 -0
  293. package/dist/retry/index.js +225 -0
  294. package/dist/retry/index.js.map +1 -0
  295. package/dist/retry/strategies.d.ts +74 -0
  296. package/dist/retry/strategies.d.ts.map +1 -0
  297. package/dist/retry/strategies.js +136 -0
  298. package/dist/retry/strategies.js.map +1 -0
  299. package/dist/store/filesystem-store.d.ts +52 -0
  300. package/dist/store/filesystem-store.d.ts.map +1 -0
  301. package/dist/store/filesystem-store.js +230 -0
  302. package/dist/store/filesystem-store.js.map +1 -0
  303. package/dist/store/index.d.ts +7 -0
  304. package/dist/store/index.d.ts.map +1 -0
  305. package/dist/store/index.js +6 -0
  306. package/dist/store/index.js.map +1 -0
  307. package/dist/types/action.d.ts +358 -0
  308. package/dist/types/action.d.ts.map +1 -0
  309. package/dist/types/action.js +96 -0
  310. package/dist/types/action.js.map +1 -0
  311. package/dist/types/events.d.ts +25 -0
  312. package/dist/types/events.d.ts.map +1 -0
  313. package/dist/types/events.js +6 -0
  314. package/dist/types/events.js.map +1 -0
  315. package/dist/types/execution.d.ts +145 -0
  316. package/dist/types/execution.d.ts.map +1 -0
  317. package/dist/types/execution.js +2 -0
  318. package/dist/types/execution.js.map +1 -0
  319. package/dist/types/gate.d.ts +98 -0
  320. package/dist/types/gate.d.ts.map +1 -0
  321. package/dist/types/gate.js +41 -0
  322. package/dist/types/gate.js.map +1 -0
  323. package/dist/types/github.d.ts +706 -0
  324. package/dist/types/github.d.ts.map +1 -0
  325. package/dist/types/github.js +6 -0
  326. package/dist/types/github.js.map +1 -0
  327. package/dist/types/index.d.ts +17 -0
  328. package/dist/types/index.d.ts.map +1 -0
  329. package/dist/types/index.js +8 -0
  330. package/dist/types/index.js.map +1 -0
  331. package/dist/types/logger.d.ts +60 -0
  332. package/dist/types/logger.d.ts.map +1 -0
  333. package/dist/types/logger.js +66 -0
  334. package/dist/types/logger.js.map +1 -0
  335. package/dist/types/retry.d.ts +36 -0
  336. package/dist/types/retry.d.ts.map +1 -0
  337. package/dist/types/retry.js +6 -0
  338. package/dist/types/retry.js.map +1 -0
  339. package/dist/types/store.d.ts +88 -0
  340. package/dist/types/store.d.ts.map +1 -0
  341. package/dist/types/store.js +6 -0
  342. package/dist/types/store.js.map +1 -0
  343. package/dist/types/workflow.d.ts +105 -0
  344. package/dist/types/workflow.d.ts.map +1 -0
  345. package/dist/types/workflow.js +6 -0
  346. package/dist/types/workflow.js.map +1 -0
  347. package/package.json +69 -0
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Tasks operation handler.
3
+ * Uses agent.invoke to generate task list from specification and plan.
4
+ */
5
+ import { join } from 'node:path';
6
+ import { executeCommand } from '../../../cli-utils.js';
7
+ import { exists, readFile } from '../lib/fs.js';
8
+ import { StreamBatcher } from '../lib/stream-batcher.js';
9
+ /**
10
+ * Build the prompt for task list generation
11
+ */
12
+ function buildTasksPrompt(featureDir, specContent, planContent) {
13
+ return `Generate a detailed task list for implementing this feature.
14
+
15
+ Feature directory: ${featureDir}
16
+ Tasks file: ${join(featureDir, 'tasks.md')}
17
+
18
+ Specification:
19
+ ${specContent}
20
+
21
+ Implementation Plan:
22
+ ${planContent}
23
+
24
+ Instructions:
25
+ 1. Analyze the specification and plan
26
+ 2. Break down the implementation into discrete tasks
27
+ 3. Organize tasks by implementation phase
28
+ 4. Mark parallel tasks that can be done concurrently
29
+ 5. Include setup, testing, and documentation tasks
30
+
31
+ Generate a task list with this format:
32
+ # Tasks: [Feature Name]
33
+
34
+ **Input**: Design documents from feature directory
35
+ **Prerequisites**: plan.md (required), spec.md (required)
36
+ **Status**: Ready
37
+
38
+ ## Format: \`[ID] [P?] [Story] Description\`
39
+ - **[P]**: Can run in parallel (different files, no dependencies)
40
+ - **[Story]**: Which user story this task belongs to
41
+
42
+ ---
43
+
44
+ ## Phase 1: [Phase Name]
45
+
46
+ ### T001 [Task description]
47
+ **File**: \`path/to/file.ts\`
48
+ - Sub-task 1
49
+ - Sub-task 2
50
+
51
+ ### T002 [P] [Task description]
52
+ **Files**:
53
+ - \`path/to/file1.ts\`
54
+ - \`path/to/file2.ts\`
55
+ - Sub-task 1
56
+
57
+ ---
58
+
59
+ ## Phase N: Testing
60
+
61
+ ### TXXX Write unit tests
62
+ **Files**:
63
+ - \`tests/*.test.ts\`
64
+ - Test coverage requirements
65
+
66
+ ---
67
+
68
+ ## Dependencies & Execution Order
69
+
70
+ **Phase dependencies (sequential)**:
71
+ - Phase 1 must complete before Phase 2
72
+ - Testing depends on implementation
73
+
74
+ **Parallel opportunities within phases**:
75
+ - Tasks marked [P] can run in parallel
76
+
77
+ **Critical path**:
78
+ T001 → T002 → ... → Final task
79
+
80
+ Write the task list directly to the tasks.md file.`;
81
+ }
82
+ /**
83
+ * Count tasks in tasks content
84
+ */
85
+ function countTasks(content) {
86
+ const taskMatches = content.match(/###\s*T\d+/g);
87
+ return taskMatches ? taskMatches.length : 0;
88
+ }
89
+ /**
90
+ * Extract phase names from tasks content
91
+ */
92
+ function extractPhases(content) {
93
+ const phases = [];
94
+ const phaseMatches = content.matchAll(/##\s*Phase\s*\d+:?\s*([^\n]+)/gi);
95
+ for (const match of phaseMatches) {
96
+ if (match[1]) {
97
+ phases.push(match[1].trim());
98
+ }
99
+ }
100
+ return phases;
101
+ }
102
+ /**
103
+ * Estimate complexity based on task count and phases
104
+ */
105
+ function estimateComplexity(taskCount, phaseCount) {
106
+ if (taskCount <= 5 && phaseCount <= 2) {
107
+ return 'simple';
108
+ }
109
+ else if (taskCount <= 15 && phaseCount <= 4) {
110
+ return 'moderate';
111
+ }
112
+ return 'complex';
113
+ }
114
+ /**
115
+ * Execute the tasks operation using agent.invoke delegation
116
+ */
117
+ export async function executeTasks(input, context) {
118
+ const specFile = join(input.feature_dir, 'spec.md');
119
+ const planFile = join(input.feature_dir, 'plan.md');
120
+ const tasksFile = join(input.feature_dir, 'tasks.md');
121
+ context.logger.info(`Generating task list for: ${input.feature_dir}`);
122
+ // Read the spec file
123
+ if (!(await exists(specFile))) {
124
+ context.logger.error('Spec file not found');
125
+ return {
126
+ success: false,
127
+ tasks_file: tasksFile,
128
+ task_count: 0,
129
+ phases: [],
130
+ estimated_complexity: 'simple',
131
+ };
132
+ }
133
+ // Read the plan file
134
+ if (!(await exists(planFile))) {
135
+ context.logger.error('Plan file not found');
136
+ return {
137
+ success: false,
138
+ tasks_file: tasksFile,
139
+ task_count: 0,
140
+ phases: [],
141
+ estimated_complexity: 'simple',
142
+ };
143
+ }
144
+ let specContent;
145
+ let planContent;
146
+ try {
147
+ specContent = await readFile(specFile);
148
+ planContent = await readFile(planFile);
149
+ }
150
+ catch (error) {
151
+ context.logger.error(`Failed to read files: ${error instanceof Error ? error.message : String(error)}`);
152
+ return {
153
+ success: false,
154
+ tasks_file: tasksFile,
155
+ task_count: 0,
156
+ phases: [],
157
+ estimated_complexity: 'simple',
158
+ };
159
+ }
160
+ // Build prompt
161
+ const prompt = buildTasksPrompt(input.feature_dir, specContent, planContent);
162
+ try {
163
+ // Invoke Claude agent (--dangerously-skip-permissions for automated workflows)
164
+ const args = ['-p', prompt, '--output-format', 'json', '--dangerously-skip-permissions'];
165
+ const timeout = (input.timeout ?? 300) * 1000;
166
+ // Set up streaming batchers for real-time log output
167
+ const stdoutBatcher = new StreamBatcher((content) => {
168
+ context.emitEvent?.({
169
+ type: 'log:append',
170
+ data: { stream: 'stdout', stepName: 'tasks', content },
171
+ });
172
+ });
173
+ const stderrBatcher = new StreamBatcher((content) => {
174
+ context.emitEvent?.({
175
+ type: 'log:append',
176
+ data: { stream: 'stderr', stepName: 'tasks', content },
177
+ });
178
+ });
179
+ const result = await executeCommand('claude', args, {
180
+ cwd: input.feature_dir,
181
+ timeout,
182
+ signal: context.signal,
183
+ onStdout: (chunk) => stdoutBatcher.append(chunk),
184
+ onStderr: (chunk) => stderrBatcher.append(chunk),
185
+ });
186
+ // Flush remaining batched content
187
+ stdoutBatcher.flush();
188
+ stderrBatcher.flush();
189
+ if (result.exitCode !== 0) {
190
+ return {
191
+ success: false,
192
+ tasks_file: tasksFile,
193
+ task_count: 0,
194
+ phases: [],
195
+ estimated_complexity: 'simple',
196
+ };
197
+ }
198
+ // Read the generated tasks to extract metrics
199
+ let taskCount = 0;
200
+ let phases = [];
201
+ let complexity = 'simple';
202
+ if (await exists(tasksFile)) {
203
+ try {
204
+ const tasksContent = await readFile(tasksFile);
205
+ taskCount = countTasks(tasksContent);
206
+ phases = extractPhases(tasksContent);
207
+ complexity = estimateComplexity(taskCount, phases.length);
208
+ }
209
+ catch {
210
+ // Ignore read errors
211
+ }
212
+ }
213
+ context.logger.info(`Task list generated: ${taskCount} tasks in ${phases.length} phases`);
214
+ context.logger.info(`Estimated complexity: ${complexity}`);
215
+ return {
216
+ success: true,
217
+ tasks_file: tasksFile,
218
+ task_count: taskCount,
219
+ phases,
220
+ estimated_complexity: complexity,
221
+ };
222
+ }
223
+ catch (error) {
224
+ context.logger.error(`Tasks operation failed: ${error instanceof Error ? error.message : String(error)}`);
225
+ return {
226
+ success: false,
227
+ tasks_file: tasksFile,
228
+ task_count: 0,
229
+ phases: [],
230
+ estimated_complexity: 'simple',
231
+ };
232
+ }
233
+ }
234
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Types for speckit workflow actions.
3
+ * Defines input/output interfaces for all speckit operations.
4
+ */
5
+ /**
6
+ * Speckit operation identifiers.
7
+ * Extracted from step.uses or step.action string (e.g., 'speckit.create_feature' → 'create_feature')
8
+ */
9
+ export type SpecKitOperation = 'create_feature' | 'get_paths' | 'check_prereqs' | 'copy_template' | 'specify' | 'clarify' | 'plan' | 'tasks' | 'implement' | 'tasks_to_issues';
10
+ /**
11
+ * Available template names for copy_template operation
12
+ */
13
+ export type TemplateName = 'spec' | 'plan' | 'tasks' | 'checklist' | 'agent-file';
14
+ /**
15
+ * Input for speckit.create_feature operation
16
+ */
17
+ export interface CreateFeatureInput {
18
+ /** Feature description used to generate spec content */
19
+ description: string;
20
+ /** Optional 2-4 word short name for the branch */
21
+ short_name?: string;
22
+ /** Optional explicit branch number (1-999) */
23
+ number?: number;
24
+ /** Parent epic branch to branch from (for epic children) */
25
+ parent_epic_branch?: string;
26
+ /** Working directory */
27
+ cwd?: string;
28
+ }
29
+ /**
30
+ * Input for speckit.get_paths operation
31
+ */
32
+ export interface GetPathsInput {
33
+ /** Optional branch/feature name. Auto-detected if not provided. */
34
+ branch?: string;
35
+ /** Working directory */
36
+ cwd?: string;
37
+ }
38
+ /**
39
+ * Input for speckit.check_prereqs operation
40
+ */
41
+ export interface CheckPrereqsInput {
42
+ /** Branch/feature name. Auto-detected if not provided. */
43
+ branch?: string;
44
+ /** Whether spec.md is required (default: true) */
45
+ require_spec?: boolean;
46
+ /** Whether plan.md is required (default: false) */
47
+ require_plan?: boolean;
48
+ /** Whether tasks.md is required (default: false) */
49
+ require_tasks?: boolean;
50
+ /** Include tasks.md in available_docs if it exists */
51
+ include_tasks?: boolean;
52
+ /** Working directory */
53
+ cwd?: string;
54
+ }
55
+ /**
56
+ * Input for speckit.copy_template operation
57
+ */
58
+ export interface CopyTemplateInput {
59
+ /** List of template names to copy */
60
+ templates: TemplateName[];
61
+ /** Target feature directory. Auto-detected if not provided. */
62
+ feature_dir?: string;
63
+ /** Optional custom destination filename (single template only) */
64
+ dest_filename?: string;
65
+ /** Working directory */
66
+ cwd?: string;
67
+ }
68
+ /**
69
+ * Input for speckit.specify operation
70
+ */
71
+ export interface SpecifyInput {
72
+ /** Path to feature directory */
73
+ feature_dir: string;
74
+ /** GitHub issue URL to extract context from */
75
+ issue_url?: string;
76
+ /** Agent timeout in seconds (default: 300) */
77
+ timeout?: number;
78
+ }
79
+ /**
80
+ * Input for speckit.clarify operation
81
+ */
82
+ export interface ClarifyInput {
83
+ /** Path to feature directory */
84
+ feature_dir: string;
85
+ /** GitHub issue number to post questions to */
86
+ issue_number?: number;
87
+ /** Agent timeout in seconds (default: 300) */
88
+ timeout?: number;
89
+ }
90
+ /**
91
+ * Input for speckit.plan operation
92
+ */
93
+ export interface PlanInput {
94
+ /** Path to feature directory */
95
+ feature_dir: string;
96
+ /** Agent timeout in seconds (default: 600) */
97
+ timeout?: number;
98
+ }
99
+ /**
100
+ * Input for speckit.tasks operation
101
+ */
102
+ export interface TasksInput {
103
+ /** Path to feature directory */
104
+ feature_dir: string;
105
+ /** Agent timeout in seconds (default: 300) */
106
+ timeout?: number;
107
+ }
108
+ /**
109
+ * Input for speckit.implement operation
110
+ */
111
+ export interface ImplementInput {
112
+ /** Path to feature directory */
113
+ feature_dir: string;
114
+ /** Pattern to filter specific tasks */
115
+ task_filter?: string;
116
+ /** Agent timeout in seconds per task (default: 600) */
117
+ timeout?: number;
118
+ }
119
+ /**
120
+ * Output from speckit.create_feature operation
121
+ */
122
+ export interface CreateFeatureOutput {
123
+ success: boolean;
124
+ branch_name: string;
125
+ feature_num: string;
126
+ spec_file: string;
127
+ feature_dir: string;
128
+ git_branch_created: boolean;
129
+ branched_from_epic?: boolean;
130
+ parent_epic_branch?: string;
131
+ /** SHA of the commit the feature branch was based on */
132
+ base_commit?: string;
133
+ /** Descriptive error message when success is false */
134
+ error?: string;
135
+ }
136
+ /**
137
+ * Path configuration for a feature directory
138
+ */
139
+ export interface FeaturePaths {
140
+ repoRoot: string;
141
+ branch: string;
142
+ hasGit: boolean;
143
+ featureDir: string;
144
+ specFile: string;
145
+ planFile: string;
146
+ tasksFile: string;
147
+ researchFile: string;
148
+ dataModelFile: string;
149
+ quickstartFile: string;
150
+ contractsDir: string;
151
+ checklistsDir: string;
152
+ clarificationsFile: string;
153
+ }
154
+ /**
155
+ * Output from speckit.get_paths operation
156
+ */
157
+ export interface GetPathsOutput extends FeaturePaths {
158
+ success: boolean;
159
+ exists: boolean;
160
+ }
161
+ /**
162
+ * Output from speckit.check_prereqs operation
163
+ */
164
+ export interface CheckPrereqsOutput {
165
+ valid: boolean;
166
+ featureDir: string;
167
+ availableDocs: string[];
168
+ missingRequired?: string[];
169
+ error?: string;
170
+ }
171
+ /**
172
+ * Output from speckit.copy_template operation
173
+ */
174
+ export interface CopyTemplateOutput {
175
+ success: boolean;
176
+ copied: Array<{
177
+ template: string;
178
+ destPath: string;
179
+ }>;
180
+ errors?: Array<{
181
+ template: string;
182
+ error: {
183
+ code: string;
184
+ message: string;
185
+ };
186
+ }>;
187
+ }
188
+ /**
189
+ * Output from speckit.specify operation
190
+ */
191
+ export interface SpecifyOutput {
192
+ success: boolean;
193
+ spec_file: string;
194
+ summary: string;
195
+ user_stories_count: number;
196
+ functional_requirements_count: number;
197
+ }
198
+ /**
199
+ * A clarification question
200
+ */
201
+ export interface ClarificationQuestion {
202
+ topic: string;
203
+ context: string;
204
+ question: string;
205
+ options?: Array<{
206
+ label: string;
207
+ description: string;
208
+ }>;
209
+ }
210
+ /**
211
+ * Output from speckit.clarify operation
212
+ */
213
+ export interface ClarifyOutput {
214
+ success: boolean;
215
+ questions_count: number;
216
+ questions: ClarificationQuestion[];
217
+ posted_to_issue?: boolean;
218
+ clarifications_file: string;
219
+ }
220
+ /**
221
+ * Output from speckit.plan operation
222
+ */
223
+ export interface PlanOutput {
224
+ success: boolean;
225
+ plan_file: string;
226
+ artifacts_created: string[];
227
+ technologies: string[];
228
+ phases_count: number;
229
+ }
230
+ /**
231
+ * Output from speckit.tasks operation
232
+ */
233
+ export interface TasksOutput {
234
+ success: boolean;
235
+ tasks_file: string;
236
+ task_count: number;
237
+ phases: string[];
238
+ estimated_complexity: 'simple' | 'moderate' | 'complex';
239
+ }
240
+ /**
241
+ * Output from speckit.implement operation
242
+ */
243
+ export interface ImplementOutput {
244
+ success: boolean;
245
+ tasks_completed: number;
246
+ tasks_total: number;
247
+ tasks_skipped: number;
248
+ files_modified: string[];
249
+ tests_passed?: boolean;
250
+ errors?: string[];
251
+ }
252
+ /**
253
+ * Error codes for speckit operations
254
+ */
255
+ export type SpecKitErrorCode = 'BRANCH_EXISTS' | 'BRANCH_EXISTS_FOR_ISSUE' | 'BRANCH_NOT_FOUND' | 'SPEC_NOT_FOUND' | 'PLAN_NOT_FOUND' | 'TASKS_NOT_FOUND' | 'FEATURE_DIR_NOT_FOUND' | 'TEMPLATE_NOT_FOUND' | 'GIT_NOT_INITIALIZED' | 'GIT_OPERATION_FAILED' | 'INVALID_BRANCH_NAME' | 'INVALID_FEATURE_NUMBER' | 'INVALID_OPERATION' | 'FILE_WRITE_FAILED' | 'FILE_READ_FAILED';
256
+ /**
257
+ * Structured error for speckit operations
258
+ */
259
+ export interface SpecKitError {
260
+ code: SpecKitErrorCode;
261
+ message: string;
262
+ context?: Record<string, unknown>;
263
+ }
264
+ /**
265
+ * Create a structured speckit error
266
+ */
267
+ export declare function createSpecKitError(code: SpecKitErrorCode, message: string, context?: Record<string, unknown>): SpecKitError;
268
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/actions/builtin/speckit/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Types for speckit workflow actions.
3
+ * Defines input/output interfaces for all speckit operations.
4
+ */
5
+ /**
6
+ * Create a structured speckit error
7
+ */
8
+ export function createSpecKitError(code, message, context) {
9
+ return { code, message, context };
10
+ }
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/actions/builtin/speckit/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmTH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAsB,EACtB,OAAe,EACf,OAAiC;IAEjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Verification check action handler.
3
+ * Handles running tests and linting commands.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import type { ActionContext, ActionResult, ActionType, ValidationResult, StepDefinition } from '../../types/index.js';
7
+ /**
8
+ * Action handler for verification (test/lint) execution
9
+ */
10
+ export declare class VerificationCheckAction extends BaseAction {
11
+ readonly type: ActionType;
12
+ canHandle(step: StepDefinition): boolean;
13
+ validate(step: StepDefinition): ValidationResult;
14
+ protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
15
+ }
16
+ //# sourceMappingURL=verification-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-check.d.ts","sourceRoot":"","sources":["../../../src/actions/builtin/verification-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,gBAAgB,EAGhB,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IACrD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAwB;IAEjD,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAIxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB;cAqBhC,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CA4E3C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Verification check action handler.
3
+ * Handles running tests and linting commands.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import { parseActionType } from '../../types/action.js';
7
+ import { executeShellCommand } from '../cli-utils.js';
8
+ /**
9
+ * Action handler for verification (test/lint) execution
10
+ */
11
+ export class VerificationCheckAction extends BaseAction {
12
+ type = 'verification.check';
13
+ canHandle(step) {
14
+ return parseActionType(step) === 'verification.check';
15
+ }
16
+ validate(step) {
17
+ const errors = [];
18
+ const warnings = [];
19
+ const command = step.with?.['command'] ?? step.command;
20
+ if (!command) {
21
+ errors.push({
22
+ field: 'command',
23
+ message: 'Command is required for verification.check action',
24
+ code: 'MISSING_COMMAND',
25
+ });
26
+ }
27
+ return {
28
+ valid: errors.length === 0,
29
+ errors,
30
+ warnings,
31
+ };
32
+ }
33
+ async executeInternal(step, context) {
34
+ const input = {
35
+ command: this.getInput(step, context, 'command') ?? step.command ?? '',
36
+ workdir: this.getInput(step, context, 'workdir', context.workdir),
37
+ env: this.getInput(step, context, 'env'),
38
+ expectedExitCode: this.getInput(step, context, 'expectedExitCode', 0),
39
+ };
40
+ if (!input.command) {
41
+ return this.failureResult('Command is required');
42
+ }
43
+ context.logger.info(`Running verification: ${input.command}`);
44
+ try {
45
+ // Execute the verification command
46
+ const result = await executeShellCommand(input.command, {
47
+ cwd: input.workdir ?? context.workdir,
48
+ env: this.mergeEnv(context, { ...step.env, ...input.env }),
49
+ timeout: step.timeout ?? 600000, // 10 minute default for tests
50
+ signal: context.signal,
51
+ });
52
+ // Parse test results if possible
53
+ const verificationOutput = {
54
+ passed: result.exitCode === (input.expectedExitCode ?? 0),
55
+ output: result.stdout + (result.stderr ? '\n' + result.stderr : ''),
56
+ };
57
+ // Try to extract test counts from common test runner output patterns
58
+ const passedMatch = result.stdout.match(/(\d+)\s+pass(?:ed|ing)?/i);
59
+ const failedMatch = result.stdout.match(/(\d+)\s+fail(?:ed|ing|ures?)?/i);
60
+ const lintErrorsMatch = result.stdout.match(/(\d+)\s+(?:error|problem)s?/i);
61
+ if (passedMatch) {
62
+ verificationOutput.testsPassed = parseInt(passedMatch[1], 10);
63
+ }
64
+ if (failedMatch) {
65
+ verificationOutput.testsFailed = parseInt(failedMatch[1], 10);
66
+ }
67
+ if (lintErrorsMatch) {
68
+ verificationOutput.lintErrors = parseInt(lintErrorsMatch[1], 10);
69
+ }
70
+ // Determine success
71
+ const success = verificationOutput.passed;
72
+ if (success) {
73
+ context.logger.info('Verification passed');
74
+ }
75
+ else {
76
+ context.logger.warn(`Verification failed with exit code ${result.exitCode}`);
77
+ }
78
+ if (success) {
79
+ return this.successResult(verificationOutput, {
80
+ exitCode: result.exitCode,
81
+ stdout: result.stdout,
82
+ stderr: result.stderr,
83
+ });
84
+ }
85
+ else {
86
+ return this.failureResult(`Verification failed with exit code ${result.exitCode}`, {
87
+ output: verificationOutput,
88
+ exitCode: result.exitCode,
89
+ stdout: result.stdout,
90
+ stderr: result.stderr,
91
+ });
92
+ }
93
+ }
94
+ catch (error) {
95
+ return this.failureResult(error instanceof Error ? error.message : String(error));
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=verification-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-check.js","sourceRoot":"","sources":["../../../src/actions/builtin/verification-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Workspace prepare action handler.
3
+ * Handles git checkout/branch operations.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import type { ActionContext, ActionResult, ActionType, ValidationResult, StepDefinition } from '../../types/index.js';
7
+ /**
8
+ * Action handler for workspace preparation (git operations)
9
+ */
10
+ export declare class WorkspacePrepareAction extends BaseAction {
11
+ readonly type: ActionType;
12
+ canHandle(step: StepDefinition): boolean;
13
+ validate(step: StepDefinition): ValidationResult;
14
+ protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
15
+ }
16
+ //# sourceMappingURL=workspace-prepare.d.ts.map