@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,81 @@
1
+ /**
2
+ * github.sync_labels action - creates/updates GitHub labels from configuration.
3
+ */
4
+ import { BaseAction } from '../base-action.js';
5
+ import { isNamespacedAction } from '../../types/action.js';
6
+ import { createGitHubClient } from './client/index.js';
7
+ import { WORKFLOW_LABELS } from './label-definitions.js';
8
+ /**
9
+ * github.sync_labels action handler
10
+ */
11
+ export class SyncLabelsAction extends BaseAction {
12
+ type = 'github.sync_labels';
13
+ canHandle(step) {
14
+ const uses = step.uses ?? step.action;
15
+ if (!uses)
16
+ return false;
17
+ return uses === 'github.sync_labels' ||
18
+ (isNamespacedAction(uses) && uses === this.type);
19
+ }
20
+ async executeInternal(step, context) {
21
+ // Get inputs
22
+ const dryRun = this.getInput(step, context, 'dry_run', true);
23
+ context.logger.info(`Syncing labels (dry_run: ${dryRun})`);
24
+ try {
25
+ // Get GitHub client
26
+ const client = createGitHubClient(context.workdir);
27
+ // Get repo info
28
+ const repoInfo = await client.getRepoInfo();
29
+ // Get existing labels
30
+ const existingLabels = await client.listLabels(repoInfo.owner, repoInfo.repo);
31
+ const existingMap = new Map(existingLabels.map(l => [l.name, l]));
32
+ const results = [];
33
+ const created = [];
34
+ const updated = [];
35
+ const unchanged = [];
36
+ // Process each configured label
37
+ for (const labelConfig of WORKFLOW_LABELS) {
38
+ const existing = existingMap.get(labelConfig.name);
39
+ if (!existing) {
40
+ // Create new label
41
+ if (!dryRun) {
42
+ await client.createLabel(repoInfo.owner, repoInfo.repo, labelConfig.name, labelConfig.color, labelConfig.description);
43
+ }
44
+ created.push(labelConfig.name);
45
+ results.push({ name: labelConfig.name, action: 'created' });
46
+ context.logger.info(`${dryRun ? '[DRY RUN] Would create' : 'Created'}: ${labelConfig.name}`);
47
+ }
48
+ else if (existing.color !== labelConfig.color ||
49
+ existing.description !== labelConfig.description) {
50
+ // Update existing label
51
+ if (!dryRun) {
52
+ await client.updateLabel(repoInfo.owner, repoInfo.repo, labelConfig.name, {
53
+ color: labelConfig.color,
54
+ description: labelConfig.description,
55
+ });
56
+ }
57
+ updated.push(labelConfig.name);
58
+ results.push({ name: labelConfig.name, action: 'updated' });
59
+ context.logger.info(`${dryRun ? '[DRY RUN] Would update' : 'Updated'}: ${labelConfig.name}`);
60
+ }
61
+ else {
62
+ // No change needed
63
+ unchanged.push(labelConfig.name);
64
+ results.push({ name: labelConfig.name, action: 'unchanged' });
65
+ }
66
+ }
67
+ context.logger.info(`Sync complete: ${created.length} created, ${updated.length} updated, ${unchanged.length} unchanged`);
68
+ const output = {
69
+ created,
70
+ updated,
71
+ unchanged,
72
+ results,
73
+ };
74
+ return this.successResult(output);
75
+ }
76
+ catch (error) {
77
+ return this.failureResult(error instanceof Error ? error.message : String(error));
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=sync-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-labels.js","sourceRoot":"","sources":["../../../src/actions/github/sync-labels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * github.update_pr action - updates PR description with phase status.
3
+ */
4
+ import { BaseAction } from '../base-action.js';
5
+ import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
6
+ /**
7
+ * github.update_pr action handler
8
+ */
9
+ export declare class UpdatePRAction extends BaseAction {
10
+ readonly type: ActionIdentifier;
11
+ canHandle(step: StepDefinition): boolean;
12
+ protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
13
+ }
14
+ //# sourceMappingURL=update-pr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-pr.d.ts","sourceRoot":"","sources":["../../../src/actions/github/update-pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAsB;IAErD,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;cAOxB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CAkD3C"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * github.update_pr action - updates PR description with phase status.
3
+ */
4
+ import { BaseAction } from '../base-action.js';
5
+ import { isNamespacedAction } from '../../types/action.js';
6
+ import { createGitHubClient } from './client/index.js';
7
+ /**
8
+ * github.update_pr action handler
9
+ */
10
+ export class UpdatePRAction extends BaseAction {
11
+ type = 'github.update_pr';
12
+ canHandle(step) {
13
+ const uses = step.uses ?? step.action;
14
+ if (!uses)
15
+ return false;
16
+ return uses === 'github.update_pr' ||
17
+ (isNamespacedAction(uses) && uses === this.type);
18
+ }
19
+ async executeInternal(step, context) {
20
+ // Get inputs
21
+ const issueNumber = this.getInput(step, context, 'issue_number');
22
+ const prNumberInput = this.getInput(step, context, 'pr_number');
23
+ const title = this.getInput(step, context, 'title');
24
+ const body = this.getInput(step, context, 'body');
25
+ context.logger.info('Updating PR');
26
+ try {
27
+ // Get GitHub client
28
+ const client = createGitHubClient(context.workdir);
29
+ // Get repo info and current branch
30
+ const repoInfo = await client.getRepoInfo();
31
+ const currentBranch = await client.getCurrentBranch();
32
+ // Find PR number if not provided
33
+ let prNumber = prNumberInput;
34
+ if (!prNumber) {
35
+ const pr = await client.findPRForBranch(repoInfo.owner, repoInfo.repo, currentBranch);
36
+ if (!pr) {
37
+ return this.failureResult('No PR found for current branch');
38
+ }
39
+ prNumber = pr.number;
40
+ }
41
+ // Update PR
42
+ const updates = {};
43
+ if (title)
44
+ updates.title = title;
45
+ if (body)
46
+ updates.body = body;
47
+ if (Object.keys(updates).length > 0) {
48
+ await client.updatePullRequest(repoInfo.owner, repoInfo.repo, prNumber, updates);
49
+ context.logger.info(`Updated PR #${prNumber}`);
50
+ }
51
+ const output = {
52
+ pr_number: prNumber,
53
+ pr_url: `https://github.com/${repoInfo.owner}/${repoInfo.repo}/pull/${prNumber}`,
54
+ updated: Object.keys(updates).length > 0,
55
+ };
56
+ return this.successResult(output);
57
+ }
58
+ catch (error) {
59
+ return this.failureResult(error instanceof Error ? error.message : String(error));
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=update-pr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-pr.js","sourceRoot":"","sources":["../../../src/actions/github/update-pr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Action handler registry and factory.
3
+ * Provides centralized registration and lookup of action handlers.
4
+ * Supports both single handler registration and namespace-based registration.
5
+ */
6
+ import type { ActionHandler, ActionType, ActionIdentifier, ActionNamespace, StepDefinition } from '../types/index.js';
7
+ /**
8
+ * Register an action handler
9
+ * @param handler The action handler to register
10
+ */
11
+ export declare function registerActionHandler(handler: ActionHandler): void;
12
+ /**
13
+ * Register a namespace of action handlers
14
+ * @param namespace The namespace definition with handlers
15
+ */
16
+ export declare function registerNamespace(namespace: ActionNamespace): void;
17
+ /**
18
+ * Unregister an action handler
19
+ * @param type The action type to unregister
20
+ */
21
+ export declare function unregisterActionHandler(type: ActionIdentifier): void;
22
+ /**
23
+ * Unregister an entire namespace
24
+ * @param namespace The namespace to unregister
25
+ */
26
+ export declare function unregisterNamespace(namespace: string): void;
27
+ /**
28
+ * Get an action handler for a workflow step
29
+ * @param step The workflow step to get a handler for
30
+ * @returns The action handler, or undefined if not found
31
+ */
32
+ export declare function getActionHandler(step: StepDefinition): ActionHandler | undefined;
33
+ /**
34
+ * Get an action handler by type
35
+ * @param type The action type or identifier
36
+ * @returns The action handler, or undefined if not found
37
+ */
38
+ export declare function getActionHandlerByType(type: ActionIdentifier): ActionHandler | undefined;
39
+ /**
40
+ * Get an action handler by namespace and name
41
+ * @param namespace The namespace (e.g., 'github')
42
+ * @param name The action name (e.g., 'preflight')
43
+ * @returns The action handler, or undefined if not found
44
+ */
45
+ export declare function getActionHandlerByNamespace(namespace: string, name: string): ActionHandler | undefined;
46
+ /**
47
+ * Check if a handler is registered for a given action type
48
+ * @param type The action type to check
49
+ * @returns true if a handler is registered
50
+ */
51
+ export declare function hasActionHandler(type: ActionIdentifier): boolean;
52
+ /**
53
+ * Check if a namespace is registered
54
+ * @param namespace The namespace to check
55
+ * @returns true if the namespace is registered
56
+ */
57
+ export declare function hasNamespace(namespace: string): boolean;
58
+ /**
59
+ * Get all registered action types
60
+ * @returns Array of registered action types/identifiers
61
+ */
62
+ export declare function getRegisteredActionTypes(): ActionIdentifier[];
63
+ /**
64
+ * Get all registered namespaces
65
+ * @returns Array of registered namespace names
66
+ */
67
+ export declare function getRegisteredNamespaces(): string[];
68
+ /**
69
+ * Get a namespace definition
70
+ * @param namespace The namespace name
71
+ * @returns The namespace definition, or undefined
72
+ */
73
+ export declare function getNamespace(namespace: string): ActionNamespace | undefined;
74
+ /**
75
+ * Get all handlers in a namespace
76
+ * @param namespace The namespace name
77
+ * @returns Array of handlers in the namespace
78
+ */
79
+ export declare function getNamespaceHandlers(namespace: string): ActionHandler[];
80
+ /**
81
+ * Clear all registered handlers (useful for testing)
82
+ */
83
+ export declare function clearActionRegistry(): void;
84
+ /**
85
+ * Get the action type for a workflow step
86
+ * @param step The workflow step
87
+ * @returns The detected action type
88
+ */
89
+ export declare function getActionType(step: StepDefinition): ActionType;
90
+ /**
91
+ * Register all built-in action handlers
92
+ */
93
+ export declare function registerBuiltinActions(): void;
94
+ export { BaseAction } from './base-action.js';
95
+ export { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
96
+ export { AgentInvokeAction } from './builtin/agent-invoke.js';
97
+ export { VerificationCheckAction } from './builtin/verification-check.js';
98
+ export { PrCreateAction } from './builtin/pr-create.js';
99
+ export { ShellAction } from './builtin/shell.js';
100
+ export { HumancyReviewAction, type HumanDecisionHandler } from './builtin/humancy-review.js';
101
+ export { HumancyApiDecisionHandler, type HumancyApiHandlerConfig } from './builtin/humancy-api-handler.js';
102
+ export { CorrelationTimeoutError } from '../errors/correlation-timeout.js';
103
+ export { SpecKitAction } from './builtin/speckit/index.js';
104
+ export * from './builtin/speckit/types.js';
105
+ export { checkCLI, checkAllCLIs, executeCommand, executeShellCommand, parseJSONSafe, extractJSON, type CommandOptions, type CommandResult, type CLIStatus, } from './cli-utils.js';
106
+ export { githubNamespace, githubActionHandlers } from './github/index.js';
107
+ export { workflowNamespace, workflowActionHandlers } from './workflow/index.js';
108
+ export { epicNamespace, epicActionHandlers } from './epic/index.js';
109
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAatH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAmBlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAsBlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAWpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAS3D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAahF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,GAAG,SAAS,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,gBAAgB,EAAE,CAE7D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAE9D;AAgBD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAc7C;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,233 @@
1
+ import { parseActionType, parseNamespacedAction } from '../types/action.js';
2
+ /**
3
+ * Registry of action handlers by type (supports both flat and namespaced)
4
+ */
5
+ const actionRegistry = new Map();
6
+ /**
7
+ * Registry of namespaces for organization
8
+ */
9
+ const namespaceRegistry = new Map();
10
+ /**
11
+ * Register an action handler
12
+ * @param handler The action handler to register
13
+ */
14
+ export function registerActionHandler(handler) {
15
+ if (actionRegistry.has(handler.type)) {
16
+ console.warn(`Overwriting existing handler for action type: ${handler.type}`);
17
+ }
18
+ actionRegistry.set(handler.type, handler);
19
+ // Also register in namespace if it's a namespaced action
20
+ const parsed = parseNamespacedAction(handler.type);
21
+ if (parsed) {
22
+ let ns = namespaceRegistry.get(parsed.namespace);
23
+ if (!ns) {
24
+ ns = { namespace: parsed.namespace, handlers: [] };
25
+ namespaceRegistry.set(parsed.namespace, ns);
26
+ }
27
+ // Add if not already present
28
+ if (!ns.handlers.some(h => h.type === handler.type)) {
29
+ ns.handlers.push(handler);
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * Register a namespace of action handlers
35
+ * @param namespace The namespace definition with handlers
36
+ */
37
+ export function registerNamespace(namespace) {
38
+ // Store the namespace
39
+ const existing = namespaceRegistry.get(namespace.namespace);
40
+ if (existing) {
41
+ // Merge handlers
42
+ for (const handler of namespace.handlers) {
43
+ if (!existing.handlers.some(h => h.type === handler.type)) {
44
+ existing.handlers.push(handler);
45
+ }
46
+ // Also register individually
47
+ actionRegistry.set(handler.type, handler);
48
+ }
49
+ if (namespace.description && !existing.description) {
50
+ existing.description = namespace.description;
51
+ }
52
+ }
53
+ else {
54
+ namespaceRegistry.set(namespace.namespace, namespace);
55
+ // Register all handlers individually as well
56
+ for (const handler of namespace.handlers) {
57
+ actionRegistry.set(handler.type, handler);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Unregister an action handler
63
+ * @param type The action type to unregister
64
+ */
65
+ export function unregisterActionHandler(type) {
66
+ actionRegistry.delete(type);
67
+ // Also remove from namespace
68
+ const parsed = parseNamespacedAction(type);
69
+ if (parsed) {
70
+ const ns = namespaceRegistry.get(parsed.namespace);
71
+ if (ns) {
72
+ ns.handlers = ns.handlers.filter(h => h.type !== type);
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * Unregister an entire namespace
78
+ * @param namespace The namespace to unregister
79
+ */
80
+ export function unregisterNamespace(namespace) {
81
+ const ns = namespaceRegistry.get(namespace);
82
+ if (ns) {
83
+ // Remove all handlers in the namespace
84
+ for (const handler of ns.handlers) {
85
+ actionRegistry.delete(handler.type);
86
+ }
87
+ namespaceRegistry.delete(namespace);
88
+ }
89
+ }
90
+ /**
91
+ * Get an action handler for a workflow step
92
+ * @param step The workflow step to get a handler for
93
+ * @returns The action handler, or undefined if not found
94
+ */
95
+ export function getActionHandler(step) {
96
+ const actionType = parseActionType(step);
97
+ // First, check if any registered handler can handle this specific step
98
+ // This allows handlers to have more specific canHandle logic
99
+ for (const handler of actionRegistry.values()) {
100
+ if (handler.canHandle(step)) {
101
+ return handler;
102
+ }
103
+ }
104
+ // Fall back to type-based lookup
105
+ return actionRegistry.get(actionType);
106
+ }
107
+ /**
108
+ * Get an action handler by type
109
+ * @param type The action type or identifier
110
+ * @returns The action handler, or undefined if not found
111
+ */
112
+ export function getActionHandlerByType(type) {
113
+ return actionRegistry.get(type);
114
+ }
115
+ /**
116
+ * Get an action handler by namespace and name
117
+ * @param namespace The namespace (e.g., 'github')
118
+ * @param name The action name (e.g., 'preflight')
119
+ * @returns The action handler, or undefined if not found
120
+ */
121
+ export function getActionHandlerByNamespace(namespace, name) {
122
+ return actionRegistry.get(`${namespace}.${name}`);
123
+ }
124
+ /**
125
+ * Check if a handler is registered for a given action type
126
+ * @param type The action type to check
127
+ * @returns true if a handler is registered
128
+ */
129
+ export function hasActionHandler(type) {
130
+ return actionRegistry.has(type);
131
+ }
132
+ /**
133
+ * Check if a namespace is registered
134
+ * @param namespace The namespace to check
135
+ * @returns true if the namespace is registered
136
+ */
137
+ export function hasNamespace(namespace) {
138
+ return namespaceRegistry.has(namespace);
139
+ }
140
+ /**
141
+ * Get all registered action types
142
+ * @returns Array of registered action types/identifiers
143
+ */
144
+ export function getRegisteredActionTypes() {
145
+ return Array.from(actionRegistry.keys());
146
+ }
147
+ /**
148
+ * Get all registered namespaces
149
+ * @returns Array of registered namespace names
150
+ */
151
+ export function getRegisteredNamespaces() {
152
+ return Array.from(namespaceRegistry.keys());
153
+ }
154
+ /**
155
+ * Get a namespace definition
156
+ * @param namespace The namespace name
157
+ * @returns The namespace definition, or undefined
158
+ */
159
+ export function getNamespace(namespace) {
160
+ return namespaceRegistry.get(namespace);
161
+ }
162
+ /**
163
+ * Get all handlers in a namespace
164
+ * @param namespace The namespace name
165
+ * @returns Array of handlers in the namespace
166
+ */
167
+ export function getNamespaceHandlers(namespace) {
168
+ return namespaceRegistry.get(namespace)?.handlers ?? [];
169
+ }
170
+ /**
171
+ * Clear all registered handlers (useful for testing)
172
+ */
173
+ export function clearActionRegistry() {
174
+ actionRegistry.clear();
175
+ namespaceRegistry.clear();
176
+ }
177
+ /**
178
+ * Get the action type for a workflow step
179
+ * @param step The workflow step
180
+ * @returns The detected action type
181
+ */
182
+ export function getActionType(step) {
183
+ return parseActionType(step);
184
+ }
185
+ // Action handlers
186
+ import { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
187
+ import { AgentInvokeAction } from './builtin/agent-invoke.js';
188
+ import { VerificationCheckAction } from './builtin/verification-check.js';
189
+ import { PrCreateAction } from './builtin/pr-create.js';
190
+ import { ShellAction } from './builtin/shell.js';
191
+ import { HumancyReviewAction } from './builtin/humancy-review.js';
192
+ import { SpecKitAction } from './builtin/speckit/index.js';
193
+ // Namespace imports
194
+ import { githubNamespace } from './github/index.js';
195
+ import { workflowNamespace } from './workflow/index.js';
196
+ import { epicNamespace } from './epic/index.js';
197
+ /**
198
+ * Register all built-in action handlers
199
+ */
200
+ export function registerBuiltinActions() {
201
+ // Register legacy/built-in handlers
202
+ registerActionHandler(new WorkspacePrepareAction());
203
+ registerActionHandler(new AgentInvokeAction());
204
+ registerActionHandler(new VerificationCheckAction());
205
+ registerActionHandler(new PrCreateAction());
206
+ registerActionHandler(new ShellAction());
207
+ registerActionHandler(new HumancyReviewAction());
208
+ registerActionHandler(new SpecKitAction());
209
+ // Register namespaced action handlers
210
+ registerNamespace(githubNamespace);
211
+ registerNamespace(workflowNamespace);
212
+ registerNamespace(epicNamespace);
213
+ }
214
+ // Re-export base action
215
+ export { BaseAction } from './base-action.js';
216
+ // Re-export action classes
217
+ export { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
218
+ export { AgentInvokeAction } from './builtin/agent-invoke.js';
219
+ export { VerificationCheckAction } from './builtin/verification-check.js';
220
+ export { PrCreateAction } from './builtin/pr-create.js';
221
+ export { ShellAction } from './builtin/shell.js';
222
+ export { HumancyReviewAction } from './builtin/humancy-review.js';
223
+ export { HumancyApiDecisionHandler } from './builtin/humancy-api-handler.js';
224
+ export { CorrelationTimeoutError } from '../errors/correlation-timeout.js';
225
+ export { SpecKitAction } from './builtin/speckit/index.js';
226
+ export * from './builtin/speckit/types.js';
227
+ // Re-export CLI utilities
228
+ export { checkCLI, checkAllCLIs, executeCommand, executeShellCommand, parseJSONSafe, extractJSON, } from './cli-utils.js';
229
+ // Re-export namespaces
230
+ export { githubNamespace, githubActionHandlers } from './github/index.js';
231
+ export { workflowNamespace, workflowActionHandlers } from './workflow/index.js';
232
+ export { epicNamespace, epicActionHandlers } from './epic/index.js';
233
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * workflow.check_gate action - checks review gate status.
3
+ * Determines if a workflow can proceed past a review gate.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
7
+ /**
8
+ * workflow.check_gate action handler
9
+ */
10
+ export declare class CheckGateAction extends BaseAction {
11
+ readonly type: ActionIdentifier;
12
+ canHandle(step: StepDefinition): boolean;
13
+ protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
14
+ }
15
+ //# sourceMappingURL=check-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-gate.d.ts","sourceRoot":"","sources":["../../../src/actions/workflow/check-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAyB;IAExD,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;cAOxB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CAkE3C"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * workflow.check_gate action - checks review gate status.
3
+ * Determines if a workflow can proceed past a review gate.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import { isNamespacedAction } from '../../types/action.js';
7
+ import { createGitHubClient } from '../github/client/index.js';
8
+ /**
9
+ * workflow.check_gate action handler
10
+ */
11
+ export class CheckGateAction extends BaseAction {
12
+ type = 'workflow.check_gate';
13
+ canHandle(step) {
14
+ const uses = step.uses ?? step.action;
15
+ if (!uses)
16
+ return false;
17
+ return uses === 'workflow.check_gate' ||
18
+ (isNamespacedAction(uses) && uses === this.type);
19
+ }
20
+ async executeInternal(step, context) {
21
+ // Get inputs
22
+ const issueNumber = this.getRequiredInput(step, context, 'issue_number');
23
+ const phase = this.getRequiredInput(step, context, 'phase');
24
+ context.logger.info(`Checking gate ${phase} for issue #${issueNumber}`);
25
+ try {
26
+ // Get GitHub client
27
+ const client = createGitHubClient(context.workdir);
28
+ // Get repo info
29
+ const repoInfo = await client.getRepoInfo();
30
+ // Get issue labels
31
+ const issue = await client.getIssue(repoInfo.owner, repoInfo.repo, issueNumber);
32
+ const labels = issue.labels.map(l => l.name);
33
+ // Check for gate-related labels
34
+ const needsLabel = `needs:${phase}`;
35
+ const waitingLabel = `waiting-for:${phase}`;
36
+ const completedLabel = `completed:${phase}`;
37
+ const hasNeeds = labels.includes(needsLabel);
38
+ const hasWaiting = labels.includes(waitingLabel);
39
+ const hasCompleted = labels.includes(completedLabel);
40
+ // Determine gate status
41
+ let canProceed = true;
42
+ let gateActive = false;
43
+ let waitingFor;
44
+ let completed;
45
+ let blockedReason;
46
+ if (hasNeeds || hasWaiting) {
47
+ gateActive = true;
48
+ if (!hasCompleted) {
49
+ canProceed = false;
50
+ waitingFor = phase;
51
+ blockedReason = `Waiting for ${phase} approval`;
52
+ }
53
+ else {
54
+ completed = phase;
55
+ }
56
+ }
57
+ if (hasCompleted) {
58
+ completed = phase;
59
+ }
60
+ const output = {
61
+ can_proceed: canProceed,
62
+ gate_active: gateActive,
63
+ waiting_for: waitingFor,
64
+ completed,
65
+ blocked_reason: blockedReason,
66
+ };
67
+ context.logger.info(`Gate check result: can_proceed=${canProceed}`);
68
+ return this.successResult(output);
69
+ }
70
+ catch (error) {
71
+ return this.failureResult(error instanceof Error ? error.message : String(error));
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=check-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-gate.js","sourceRoot":"","sources":["../../../src/actions/workflow/check-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACpC,IAAI,GAAqB,qBAAqB,CAAC;IAExD,SAAS,CAAC,IAAoB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,KAAK,qBAAqB;YAC9B,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,IAAoB,EACpB,OAAsB;QAEtB,aAAa;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAS,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAa,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,eAAe,WAAW,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,MAAM,GAAiB,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEjE,gBAAgB;YAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAE5C,mBAAmB;YACnB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE7C,gCAAgC;YAChC,MAAM,UAAU,GAAG,SAAS,KAAK,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,eAAe,KAAK,EAAE,CAAC;YAC5C,MAAM,cAAc,GAAG,aAAa,KAAK,EAAE,CAAC;YAE5C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAErD,wBAAwB;YACxB,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,UAA8B,CAAC;YACnC,IAAI,SAA6B,CAAC;YAClC,IAAI,aAAiC,CAAC;YAEtC,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC3B,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,UAAU,GAAG,KAAK,CAAC;oBACnB,UAAU,GAAG,KAAK,CAAC;oBACnB,aAAa,GAAG,eAAe,KAAK,WAAW,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;YAED,MAAM,MAAM,GAAoB;gBAC9B,WAAW,EAAE,UAAU;gBACvB,WAAW,EAAE,UAAU;gBACvB,WAAW,EAAE,UAAU;gBACvB,SAAS;gBACT,cAAc,EAAE,aAAa;aAC9B,CAAC;YAEF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;YAEpE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,aAAa,CACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}