@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,347 @@
1
+ /**
2
+ * SpecKit action handler.
3
+ * Implements speckit workflow operations for spec-driven development methodology.
4
+ *
5
+ * Operations are divided into two categories:
6
+ * - Deterministic: Direct library calls (create_feature, get_paths, check_prereqs, copy_template)
7
+ * - AI-dependent: Agent delegation (specify, clarify, plan, tasks, implement)
8
+ */
9
+ import { BaseAction } from '../../base-action.js';
10
+ // Import operation handlers
11
+ import { executeCreateFeature } from './operations/create-feature.js';
12
+ import { executeGetPaths } from './operations/get-paths.js';
13
+ import { executeCheckPrereqs } from './operations/check-prereqs.js';
14
+ import { executeCopyTemplate } from './operations/copy-template.js';
15
+ import { executeSpecify } from './operations/specify.js';
16
+ import { executeClarify } from './operations/clarify.js';
17
+ import { executePlan } from './operations/plan.js';
18
+ import { executeTasks } from './operations/tasks.js';
19
+ import { executeImplement } from './operations/implement.js';
20
+ import { executeTasksToIssues } from './operations/tasks-to-issues.js';
21
+ /** Valid speckit operations */
22
+ const VALID_OPERATIONS = new Set([
23
+ 'create_feature',
24
+ 'get_paths',
25
+ 'check_prereqs',
26
+ 'copy_template',
27
+ 'specify',
28
+ 'clarify',
29
+ 'plan',
30
+ 'tasks',
31
+ 'implement',
32
+ 'tasks_to_issues',
33
+ ]);
34
+ /**
35
+ * Action handler for speckit workflow operations.
36
+ * Dispatches to specific operation handlers based on the operation extracted from step.uses/step.action.
37
+ */
38
+ export class SpecKitAction extends BaseAction {
39
+ type = 'speckit';
40
+ /**
41
+ * Check if this handler can process the given step
42
+ */
43
+ canHandle(step) {
44
+ const uses = step.uses || step.action || '';
45
+ return uses.startsWith('speckit.') || uses.startsWith('speckit/');
46
+ }
47
+ /**
48
+ * Extract operation name from step definition
49
+ * @param step Workflow step definition
50
+ * @returns Operation name (e.g., 'create_feature', 'specify')
51
+ */
52
+ extractOperation(step) {
53
+ const actionString = step.uses || step.action || '';
54
+ // Match speckit.create_feature or speckit/create_feature
55
+ const match = actionString.match(/^speckit[./](.+)$/);
56
+ return match?.[1] || '';
57
+ }
58
+ /**
59
+ * Validate step configuration before execution
60
+ */
61
+ validate(step) {
62
+ const errors = [];
63
+ const operation = this.extractOperation(step);
64
+ if (!operation) {
65
+ errors.push({
66
+ field: 'uses',
67
+ message: 'Speckit operation not specified. Use format: speckit.<operation>',
68
+ code: 'MISSING_OPERATION',
69
+ });
70
+ return { valid: false, errors, warnings: [] };
71
+ }
72
+ if (!VALID_OPERATIONS.has(operation)) {
73
+ errors.push({
74
+ field: 'uses',
75
+ message: `Unknown speckit operation: ${operation}. Valid operations: ${[...VALID_OPERATIONS].join(', ')}`,
76
+ code: 'INVALID_OPERATION',
77
+ });
78
+ return { valid: false, errors, warnings: [] };
79
+ }
80
+ // Operation-specific validation
81
+ switch (operation) {
82
+ case 'create_feature': {
83
+ const description = step.with?.['description'];
84
+ if (!description) {
85
+ errors.push({
86
+ field: 'description',
87
+ message: 'Description is required for create_feature operation',
88
+ code: 'MISSING_DESCRIPTION',
89
+ });
90
+ }
91
+ break;
92
+ }
93
+ case 'specify':
94
+ case 'plan':
95
+ case 'tasks':
96
+ case 'implement': {
97
+ const featureDir = step.with?.['feature_dir'];
98
+ if (!featureDir) {
99
+ errors.push({
100
+ field: 'feature_dir',
101
+ message: `feature_dir is required for ${operation} operation`,
102
+ code: 'MISSING_FEATURE_DIR',
103
+ });
104
+ }
105
+ break;
106
+ }
107
+ case 'clarify': {
108
+ const featureDir = step.with?.['feature_dir'];
109
+ if (!featureDir) {
110
+ errors.push({
111
+ field: 'feature_dir',
112
+ message: 'feature_dir is required for clarify operation',
113
+ code: 'MISSING_FEATURE_DIR',
114
+ });
115
+ }
116
+ break;
117
+ }
118
+ case 'copy_template': {
119
+ const templates = step.with?.['templates'];
120
+ if (!templates || !Array.isArray(templates) || templates.length === 0) {
121
+ errors.push({
122
+ field: 'templates',
123
+ message: 'templates array is required for copy_template operation',
124
+ code: 'MISSING_TEMPLATES',
125
+ });
126
+ }
127
+ break;
128
+ }
129
+ case 'tasks_to_issues': {
130
+ const featureDir = step.with?.['feature_dir'];
131
+ if (!featureDir) {
132
+ errors.push({
133
+ field: 'feature_dir',
134
+ message: 'feature_dir is required for tasks_to_issues operation',
135
+ code: 'MISSING_FEATURE_DIR',
136
+ });
137
+ }
138
+ const epicIssueNumber = step.with?.['epic_issue_number'];
139
+ if (epicIssueNumber == null) {
140
+ errors.push({
141
+ field: 'epic_issue_number',
142
+ message: 'epic_issue_number is required for tasks_to_issues operation',
143
+ code: 'MISSING_EPIC_ISSUE_NUMBER',
144
+ });
145
+ }
146
+ const epicBranch = step.with?.['epic_branch'];
147
+ if (!epicBranch) {
148
+ errors.push({
149
+ field: 'epic_branch',
150
+ message: 'epic_branch is required for tasks_to_issues operation',
151
+ code: 'MISSING_EPIC_BRANCH',
152
+ });
153
+ }
154
+ break;
155
+ }
156
+ // get_paths and check_prereqs have optional inputs
157
+ }
158
+ return {
159
+ valid: errors.length === 0,
160
+ errors,
161
+ warnings: [],
162
+ };
163
+ }
164
+ /**
165
+ * Execute the speckit operation
166
+ */
167
+ async executeInternal(step, context) {
168
+ const operation = this.extractOperation(step);
169
+ if (!operation || !VALID_OPERATIONS.has(operation)) {
170
+ return this.failureResult(`Invalid speckit operation: ${operation}`);
171
+ }
172
+ context.logger.info(`Executing speckit.${operation}`);
173
+ try {
174
+ switch (operation) {
175
+ case 'create_feature':
176
+ return await this.handleCreateFeature(step, context);
177
+ case 'get_paths':
178
+ return await this.handleGetPaths(step, context);
179
+ case 'check_prereqs':
180
+ return await this.handleCheckPrereqs(step, context);
181
+ case 'copy_template':
182
+ return await this.handleCopyTemplate(step, context);
183
+ case 'specify':
184
+ return await this.handleSpecify(step, context);
185
+ case 'clarify':
186
+ return await this.handleClarify(step, context);
187
+ case 'plan':
188
+ return await this.handlePlan(step, context);
189
+ case 'tasks':
190
+ return await this.handleTasks(step, context);
191
+ case 'implement':
192
+ return await this.handleImplement(step, context);
193
+ case 'tasks_to_issues':
194
+ return await this.handleTasksToIssues(step, context);
195
+ default:
196
+ return this.failureResult(`Unhandled speckit operation: ${operation}`);
197
+ }
198
+ }
199
+ catch (error) {
200
+ return this.failureResult(error instanceof Error ? error.message : String(error));
201
+ }
202
+ }
203
+ // --- Deterministic Operation Handlers (Library Calls) ---
204
+ async handleCreateFeature(step, context) {
205
+ const input = {
206
+ description: this.getRequiredInput(step, context, 'description'),
207
+ short_name: this.getInput(step, context, 'short_name'),
208
+ number: this.getInput(step, context, 'number'),
209
+ parent_epic_branch: this.getInput(step, context, 'parent_epic_branch'),
210
+ cwd: this.getInput(step, context, 'cwd', context.workdir),
211
+ };
212
+ const result = await executeCreateFeature(input, context.logger);
213
+ if (result.success) {
214
+ return this.successResult(result, {
215
+ filesModified: [result.spec_file],
216
+ });
217
+ }
218
+ return this.failureResult('create_feature operation failed', { output: result });
219
+ }
220
+ async handleGetPaths(step, context) {
221
+ const input = {
222
+ branch: this.getInput(step, context, 'branch'),
223
+ cwd: this.getInput(step, context, 'cwd', context.workdir),
224
+ };
225
+ const result = await executeGetPaths(input, context.logger);
226
+ if (result.success) {
227
+ return this.successResult(result);
228
+ }
229
+ return this.failureResult('get_paths operation failed', { output: result });
230
+ }
231
+ async handleCheckPrereqs(step, context) {
232
+ const input = {
233
+ branch: this.getInput(step, context, 'branch'),
234
+ require_spec: this.getInput(step, context, 'require_spec', true),
235
+ require_plan: this.getInput(step, context, 'require_plan', false),
236
+ require_tasks: this.getInput(step, context, 'require_tasks', false),
237
+ include_tasks: this.getInput(step, context, 'include_tasks', false),
238
+ cwd: this.getInput(step, context, 'cwd', context.workdir),
239
+ };
240
+ const result = await executeCheckPrereqs(input, context.logger);
241
+ if (result.valid) {
242
+ return this.successResult(result);
243
+ }
244
+ return this.failureResult(result.error || 'check_prereqs failed', { output: result });
245
+ }
246
+ async handleCopyTemplate(step, context) {
247
+ const input = {
248
+ templates: this.getRequiredInput(step, context, 'templates'),
249
+ feature_dir: this.getInput(step, context, 'feature_dir'),
250
+ dest_filename: this.getInput(step, context, 'dest_filename'),
251
+ cwd: this.getInput(step, context, 'cwd', context.workdir),
252
+ };
253
+ const result = await executeCopyTemplate(input, context.logger);
254
+ if (result.success) {
255
+ return this.successResult(result, {
256
+ filesModified: result.copied.map(c => c.destPath),
257
+ });
258
+ }
259
+ return this.failureResult('copy_template operation failed', { output: result });
260
+ }
261
+ // --- AI-Dependent Operation Handlers (Agent Delegation) ---
262
+ async handleSpecify(step, context) {
263
+ const input = {
264
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
265
+ issue_url: this.getInput(step, context, 'issue_url'),
266
+ timeout: this.getInput(step, context, 'timeout', 300),
267
+ };
268
+ const result = await executeSpecify(input, context);
269
+ if (result.success) {
270
+ return this.successResult(result, {
271
+ filesModified: [result.spec_file],
272
+ });
273
+ }
274
+ return this.failureResult('specify operation failed', { output: result });
275
+ }
276
+ async handleClarify(step, context) {
277
+ const input = {
278
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
279
+ issue_number: this.getInput(step, context, 'issue_number'),
280
+ timeout: this.getInput(step, context, 'timeout', 300),
281
+ };
282
+ const result = await executeClarify(input, context);
283
+ if (result.success) {
284
+ return this.successResult(result, {
285
+ filesModified: [result.clarifications_file],
286
+ });
287
+ }
288
+ return this.failureResult('clarify operation failed', { output: result });
289
+ }
290
+ async handlePlan(step, context) {
291
+ const input = {
292
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
293
+ timeout: this.getInput(step, context, 'timeout', 600),
294
+ };
295
+ const result = await executePlan(input, context);
296
+ if (result.success) {
297
+ return this.successResult(result, {
298
+ filesModified: [result.plan_file, ...result.artifacts_created],
299
+ });
300
+ }
301
+ return this.failureResult('plan operation failed', { output: result });
302
+ }
303
+ async handleTasks(step, context) {
304
+ const input = {
305
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
306
+ timeout: this.getInput(step, context, 'timeout', 300),
307
+ };
308
+ const result = await executeTasks(input, context);
309
+ if (result.success) {
310
+ return this.successResult(result, {
311
+ filesModified: [result.tasks_file],
312
+ });
313
+ }
314
+ return this.failureResult('tasks operation failed', { output: result });
315
+ }
316
+ async handleImplement(step, context) {
317
+ const input = {
318
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
319
+ task_filter: this.getInput(step, context, 'task_filter'),
320
+ timeout: this.getInput(step, context, 'timeout', 600),
321
+ };
322
+ const result = await executeImplement(input, context);
323
+ if (result.success) {
324
+ return this.successResult(result, {
325
+ filesModified: result.files_modified,
326
+ });
327
+ }
328
+ return this.failureResult('implement operation failed', { output: result });
329
+ }
330
+ // --- Epic Operation Handlers ---
331
+ async handleTasksToIssues(step, context) {
332
+ const input = {
333
+ feature_dir: this.getRequiredInput(step, context, 'feature_dir'),
334
+ epic_issue_number: this.getRequiredInput(step, context, 'epic_issue_number'),
335
+ epic_branch: this.getRequiredInput(step, context, 'epic_branch'),
336
+ trigger_label: this.getInput(step, context, 'trigger_label'),
337
+ };
338
+ const result = await executeTasksToIssues(input, context);
339
+ if (result.failed_tasks.length > 0 && result.created_issues.length === 0) {
340
+ return this.failureResult(`tasks_to_issues failed: all ${result.failed_tasks.length} tasks failed to create issues`, { output: result });
341
+ }
342
+ return this.successResult(result);
343
+ }
344
+ }
345
+ // Export types for external use
346
+ export * from './types.js';
347
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actions/builtin/speckit/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type SimpleGit } from 'simple-git';
2
+ import type { CreateFeatureInput, CreateFeatureOutput } from '../types.js';
3
+ /** Pattern for valid feature names: \d+-short-name (flexible number padding) */
4
+ export declare const FEATURE_NAME_PATTERN: RegExp;
5
+ /** Maximum branch name length (GitHub limit) */
6
+ export declare const MAX_BRANCH_LENGTH = 244;
7
+ /**
8
+ * Resolve the default branch name from the remote's HEAD reference.
9
+ * Falls back to 'develop' if the symbolic-ref cannot be read (e.g. shallow clone, detached HEAD).
10
+ */
11
+ export declare function getDefaultBranch(git: SimpleGit): Promise<string>;
12
+ /**
13
+ * Create a new feature branch and initialize the spec directory with template files.
14
+ * Ported from speckit MCP create_feature tool.
15
+ */
16
+ export declare function createFeature(input: CreateFeatureInput): Promise<CreateFeatureOutput>;
17
+ //# sourceMappingURL=feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/lib/feature.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,QAAmC,CAAC;AAErE,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAsOrC;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAStE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqO3F"}