@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,109 @@
1
+ /**
2
+ * github.get_context action - retrieves spec artifacts for context.
3
+ * Loads spec.md, plan.md, tasks.md and determines current phase.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import { isNamespacedAction } from '../../types/action.js';
7
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ /**
10
+ * Determine current phase from tasks.md content
11
+ */
12
+ function determinePhaseFromTasks(tasks) {
13
+ // Check if all tasks are complete
14
+ const incompleteTasks = tasks.match(/- \[ \]/g);
15
+ const completeTasks = tasks.match(/- \[x\]/gi);
16
+ if (!incompleteTasks || incompleteTasks.length === 0) {
17
+ return 'validate'; // All done
18
+ }
19
+ if (!completeTasks || completeTasks.length === 0) {
20
+ return 'implement'; // Starting implementation
21
+ }
22
+ return 'implement'; // In progress
23
+ }
24
+ /**
25
+ * github.get_context action handler
26
+ */
27
+ export class GetContextAction extends BaseAction {
28
+ type = 'github.get_context';
29
+ canHandle(step) {
30
+ const uses = step.uses ?? step.action;
31
+ if (!uses)
32
+ return false;
33
+ return uses === 'github.get_context' ||
34
+ (isNamespacedAction(uses) && uses === this.type);
35
+ }
36
+ async executeInternal(step, context) {
37
+ // Get inputs
38
+ const issueNumber = this.getRequiredInput(step, context, 'issue_number');
39
+ const parentEpicNumber = this.getInput(step, context, 'parent_epic_number');
40
+ const issueBody = this.getInput(step, context, 'issue_body');
41
+ context.logger.info(`Getting context for issue #${issueNumber}`);
42
+ try {
43
+ // Find feature directory
44
+ const specsDir = join(context.workdir, 'specs');
45
+ const featureDir = this.findFeatureDir(specsDir, issueNumber);
46
+ if (!featureDir) {
47
+ return this.failureResult(`No spec directory found for issue #${issueNumber}`);
48
+ }
49
+ const featurePath = join(specsDir, featureDir);
50
+ // Read artifacts
51
+ const spec = this.readArtifact(featurePath, 'spec.md');
52
+ const plan = this.readArtifact(featurePath, 'plan.md');
53
+ const tasks = this.readArtifact(featurePath, 'tasks.md');
54
+ // Determine phase
55
+ let phase = 'specify';
56
+ if (spec && !plan)
57
+ phase = 'plan';
58
+ else if (plan && !tasks)
59
+ phase = 'tasks';
60
+ else if (tasks)
61
+ phase = determinePhaseFromTasks(tasks);
62
+ // Build output
63
+ const output = {
64
+ spec,
65
+ plan,
66
+ tasks,
67
+ phase,
68
+ feature_dir: featurePath,
69
+ };
70
+ // If this is an epic child, load parent context
71
+ if (parentEpicNumber) {
72
+ const parentDir = this.findFeatureDir(specsDir, parentEpicNumber);
73
+ if (parentDir) {
74
+ const parentPath = join(specsDir, parentDir);
75
+ output.epic_context = {
76
+ parent_spec: this.readArtifact(parentPath, 'spec.md'),
77
+ parent_plan: this.readArtifact(parentPath, 'plan.md'),
78
+ parent_tasks: this.readArtifact(parentPath, 'tasks.md'),
79
+ };
80
+ }
81
+ }
82
+ return this.successResult(output);
83
+ }
84
+ catch (error) {
85
+ return this.failureResult(error instanceof Error ? error.message : String(error));
86
+ }
87
+ }
88
+ /**
89
+ * Find the feature directory for an issue number
90
+ */
91
+ findFeatureDir(specsDir, issueNumber) {
92
+ if (!existsSync(specsDir)) {
93
+ return undefined;
94
+ }
95
+ const dirs = readdirSync(specsDir);
96
+ return dirs.find(d => d.startsWith(`${issueNumber}-`));
97
+ }
98
+ /**
99
+ * Read an artifact file, returning undefined if it doesn't exist
100
+ */
101
+ readArtifact(featurePath, filename) {
102
+ const filepath = join(featurePath, filename);
103
+ if (!existsSync(filepath)) {
104
+ return undefined;
105
+ }
106
+ return readFileSync(filepath, 'utf-8');
107
+ }
108
+ }
109
+ //# sourceMappingURL=get-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-context.js","sourceRoot":"","sources":["../../../src/actions/github/get-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,kCAAkC;IAClC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,CAAC,WAAW;IAChC,CAAC;IAED,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC,CAAC,0BAA0B;IAChD,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,cAAc;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IACrC,IAAI,GAAqB,oBAAoB,CAAC;IAEvD,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,oBAAoB;YAC7B,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,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAErE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,aAAa,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE/C,iBAAiB;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAEzD,kBAAkB;YAClB,IAAI,KAAK,GAAc,SAAS,CAAC;YACjC,IAAI,IAAI,IAAI,CAAC,IAAI;gBAAE,KAAK,GAAG,MAAM,CAAC;iBAC7B,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,OAAO,CAAC;iBACpC,IAAI,KAAK;gBAAE,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAEvD,eAAe;YACf,MAAM,MAAM,GAAqB;gBAC/B,IAAI;gBACJ,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,WAAW,EAAE,WAAW;aACzB,CAAC;YAEF,gDAAgD;YAChD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,YAAY,GAAG;wBACpB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC;wBACrD,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC;wBACrD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC;qBACxD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,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;IAED;;OAEG;IACK,cAAc,CAAC,QAAgB,EAAE,WAAmB;QAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * GitHub action namespace registration.
3
+ * Exports all github.* actions and provides namespace registration.
4
+ */
5
+ import type { ActionNamespace, ActionHandler } from '../../types/index.js';
6
+ export { PreflightAction } from './preflight.js';
7
+ export { GetContextAction } from './get-context.js';
8
+ export { ReviewChangesAction } from './review-changes.js';
9
+ export { CommitAndPushAction } from './commit-and-push.js';
10
+ export { MergeFromBaseAction } from './merge-from-base.js';
11
+ export { CreateDraftPRAction } from './create-draft-pr.js';
12
+ export { MarkPRReadyAction } from './mark-pr-ready.js';
13
+ export { UpdatePRAction } from './update-pr.js';
14
+ export { ReadPRFeedbackAction } from './read-pr-feedback.js';
15
+ export { RespondPRFeedbackAction } from './respond-pr-feedback.js';
16
+ export { AddCommentAction } from './add-comment.js';
17
+ export { SyncLabelsAction } from './sync-labels.js';
18
+ export * from './client/index.js';
19
+ export { parseGitHubIssueUrl } from './preflight.js';
20
+ /**
21
+ * All GitHub action handlers
22
+ */
23
+ export declare const githubActionHandlers: ActionHandler[];
24
+ /**
25
+ * GitHub action namespace definition
26
+ */
27
+ export declare const githubNamespace: ActionNamespace;
28
+ /**
29
+ * Get all GitHub action handlers
30
+ */
31
+ export declare function getGitHubActionHandlers(): ActionHandler[];
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/github/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqB3E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAgB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAI7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,aAAa,EAAE,CAEzD"}
@@ -0,0 +1,67 @@
1
+ // Core GitHub actions
2
+ import { PreflightAction } from './preflight.js';
3
+ import { GetContextAction } from './get-context.js';
4
+ import { ReviewChangesAction } from './review-changes.js';
5
+ import { CommitAndPushAction } from './commit-and-push.js';
6
+ import { MergeFromBaseAction } from './merge-from-base.js';
7
+ // PR management actions
8
+ import { CreateDraftPRAction } from './create-draft-pr.js';
9
+ import { MarkPRReadyAction } from './mark-pr-ready.js';
10
+ import { UpdatePRAction } from './update-pr.js';
11
+ import { ReadPRFeedbackAction } from './read-pr-feedback.js';
12
+ import { RespondPRFeedbackAction } from './respond-pr-feedback.js';
13
+ import { AddCommentAction } from './add-comment.js';
14
+ // Infrastructure actions
15
+ import { SyncLabelsAction } from './sync-labels.js';
16
+ // Re-export action classes
17
+ export { PreflightAction } from './preflight.js';
18
+ export { GetContextAction } from './get-context.js';
19
+ export { ReviewChangesAction } from './review-changes.js';
20
+ export { CommitAndPushAction } from './commit-and-push.js';
21
+ export { MergeFromBaseAction } from './merge-from-base.js';
22
+ export { CreateDraftPRAction } from './create-draft-pr.js';
23
+ export { MarkPRReadyAction } from './mark-pr-ready.js';
24
+ export { UpdatePRAction } from './update-pr.js';
25
+ export { ReadPRFeedbackAction } from './read-pr-feedback.js';
26
+ export { RespondPRFeedbackAction } from './respond-pr-feedback.js';
27
+ export { AddCommentAction } from './add-comment.js';
28
+ export { SyncLabelsAction } from './sync-labels.js';
29
+ // Re-export client
30
+ export * from './client/index.js';
31
+ // Re-export URL parser utility
32
+ export { parseGitHubIssueUrl } from './preflight.js';
33
+ /**
34
+ * All GitHub action handlers
35
+ */
36
+ export const githubActionHandlers = [
37
+ // Core actions
38
+ new PreflightAction(),
39
+ new GetContextAction(),
40
+ new ReviewChangesAction(),
41
+ new CommitAndPushAction(),
42
+ new MergeFromBaseAction(),
43
+ // PR management actions
44
+ new CreateDraftPRAction(),
45
+ new MarkPRReadyAction(),
46
+ new UpdatePRAction(),
47
+ new ReadPRFeedbackAction(),
48
+ new RespondPRFeedbackAction(),
49
+ new AddCommentAction(),
50
+ // Infrastructure actions
51
+ new SyncLabelsAction(),
52
+ ];
53
+ /**
54
+ * GitHub action namespace definition
55
+ */
56
+ export const githubNamespace = {
57
+ namespace: 'github',
58
+ description: 'GitHub API and git operations for workflow automation',
59
+ handlers: githubActionHandlers,
60
+ };
61
+ /**
62
+ * Get all GitHub action handlers
63
+ */
64
+ export function getGitHubActionHandlers() {
65
+ return [...githubActionHandlers];
66
+ }
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/github/index.ts"],"names":[],"mappings":"AAMA,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,eAAe;IACf,IAAI,eAAe,EAAE;IACrB,IAAI,gBAAgB,EAAE;IACtB,IAAI,mBAAmB,EAAE;IACzB,IAAI,mBAAmB,EAAE;IACzB,IAAI,mBAAmB,EAAE;IACzB,wBAAwB;IACxB,IAAI,mBAAmB,EAAE;IACzB,IAAI,iBAAiB,EAAE;IACvB,IAAI,cAAc,EAAE;IACpB,IAAI,oBAAoB,EAAE;IAC1B,IAAI,uBAAuB,EAAE;IAC7B,IAAI,gBAAgB,EAAE;IACtB,yBAAyB;IACzB,IAAI,gBAAgB,EAAE;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,uDAAuD;IACpE,QAAQ,EAAE,oBAAoB;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,oBAAoB,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared label definitions for workflow management.
3
+ *
4
+ * These labels are used by sync-labels action and can be imported
5
+ * by other modules that need to reference the canonical label set.
6
+ */
7
+ /**
8
+ * Label definition with required fields for workflow labels.
9
+ */
10
+ export interface LabelDefinition {
11
+ name: string;
12
+ color: string;
13
+ description: string;
14
+ }
15
+ /**
16
+ * Canonical set of workflow labels managed by the label sync utility.
17
+ */
18
+ export declare const WORKFLOW_LABELS: LabelDefinition[];
19
+ //# sourceMappingURL=label-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-definitions.d.ts","sourceRoot":"","sources":["../../../src/actions/github/label-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,EAoE5C,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared label definitions for workflow management.
3
+ *
4
+ * These labels are used by sync-labels action and can be imported
5
+ * by other modules that need to reference the canonical label set.
6
+ */
7
+ /**
8
+ * Canonical set of workflow labels managed by the label sync utility.
9
+ */
10
+ export const WORKFLOW_LABELS = [
11
+ // Phase labels
12
+ { name: 'phase:specify', color: '0052CC', description: 'Specification phase' },
13
+ { name: 'phase:clarify', color: '0052CC', description: 'Clarification phase' },
14
+ { name: 'phase:plan', color: '0052CC', description: 'Planning phase' },
15
+ { name: 'phase:tasks', color: '0052CC', description: 'Task generation phase' },
16
+ { name: 'phase:implement', color: '0052CC', description: 'Implementation phase' },
17
+ { name: 'phase:validate', color: '0052CC', description: 'Validation phase' },
18
+ // Waiting-for labels (review gates)
19
+ { name: 'waiting-for:spec-review', color: 'FBCA04', description: 'Waiting for spec review' },
20
+ { name: 'waiting-for:clarification', color: 'FBCA04', description: 'Waiting for clarification answers' },
21
+ { name: 'waiting-for:clarification-review', color: 'FBCA04', description: 'Waiting for clarification review' },
22
+ { name: 'waiting-for:plan-review', color: 'FBCA04', description: 'Waiting for plan review' },
23
+ { name: 'waiting-for:tasks-review', color: 'FBCA04', description: 'Waiting for tasks review' },
24
+ { name: 'waiting-for:implementation-review', color: 'FBCA04', description: 'Waiting for implementation review' },
25
+ { name: 'waiting-for:manual-validation', color: 'FBCA04', description: 'Waiting for manual validation' },
26
+ { name: 'waiting-for:pr-feedback', color: 'FBCA04', description: 'Waiting to address PR feedback' },
27
+ { name: 'waiting-for:address-pr-feedback', color: 'FBCA04', description: 'Agent is addressing PR review feedback' },
28
+ { name: 'waiting-for:children-complete', color: 'FBCA04', description: 'Waiting for child issues to complete' },
29
+ { name: 'waiting-for:epic-approval', color: 'FBCA04', description: 'Epic rollup PR awaiting approval' },
30
+ { name: 'waiting-for:dependencies', color: 'FBCA04', description: 'Waiting for blocking issues' },
31
+ // Completed labels
32
+ { name: 'completed:spec-review', color: '0E8A16', description: 'Spec review completed' },
33
+ { name: 'completed:clarification', color: '0E8A16', description: 'Clarification completed' },
34
+ { name: 'completed:clarification-review', color: '0E8A16', description: 'Clarification review completed' },
35
+ { name: 'completed:plan-review', color: '0E8A16', description: 'Plan review completed' },
36
+ { name: 'completed:tasks-review', color: '0E8A16', description: 'Tasks review completed' },
37
+ { name: 'completed:implementation-review', color: '0E8A16', description: 'Implementation review completed' },
38
+ { name: 'completed:manual-validation', color: '0E8A16', description: 'Manual validation completed' },
39
+ { name: 'completed:setup', color: '0E8A16', description: 'Setup phase completed' },
40
+ { name: 'completed:specify', color: '0E8A16', description: 'Specification phase completed' },
41
+ { name: 'completed:clarify', color: '0E8A16', description: 'Clarification phase completed' },
42
+ { name: 'completed:plan', color: '0E8A16', description: 'Planning phase completed' },
43
+ { name: 'completed:tasks', color: '0E8A16', description: 'Task generation completed' },
44
+ { name: 'completed:implement', color: '0E8A16', description: 'Implementation completed' },
45
+ { name: 'completed:validate', color: '0E8A16', description: 'Validation completed' },
46
+ { name: 'completed:children-complete', color: '0E8A16', description: 'All epic children completed' },
47
+ { name: 'completed:epic-approval', color: '0E8A16', description: 'Epic rollup PR approved and merged' },
48
+ // Issue type labels
49
+ { name: 'type:feature', color: '1D76DB', description: 'Feature request' },
50
+ { name: 'type:bug', color: 'D73A4A', description: 'Bug report' },
51
+ { name: 'type:epic', color: '5319E7', description: 'Epic issue with children' },
52
+ // Agent labels
53
+ { name: 'agent:dispatched', color: 'C5DEF5', description: 'Dispatched to agent queue' },
54
+ { name: 'agent:in-progress', color: '0366D6', description: 'Agent is actively working' },
55
+ { name: 'agent:paused', color: 'F9D0C4', description: 'Agent work is paused' },
56
+ { name: 'agent:error', color: 'D73A4A', description: 'Agent encountered an error' },
57
+ // Needs labels
58
+ { name: 'needs:epic-approval', color: 'D93F0B', description: 'Epic PR needs approval' },
59
+ { name: 'needs:human-review', color: 'D93F0B', description: 'Requires human review' },
60
+ // Process trigger labels
61
+ { name: 'process:speckit-feature', color: 'D876E3', description: 'Speckit feature process trigger' },
62
+ { name: 'process:speckit-bugfix', color: 'D876E3', description: 'Speckit bugfix process trigger' },
63
+ { name: 'process:speckit-epic', color: 'D876E3', description: 'Speckit epic process trigger' },
64
+ // Workflow identity labels (persist for issue lifetime)
65
+ { name: 'workflow:speckit-feature', color: '6F42C1', description: 'Speckit feature workflow' },
66
+ { name: 'workflow:speckit-bugfix', color: '6F42C1', description: 'Speckit bugfix workflow' },
67
+ { name: 'workflow:speckit-epic', color: '6F42C1', description: 'Speckit epic workflow' },
68
+ // Relationship labels
69
+ { name: 'epic-child', color: 'bfd4f2', description: 'Child issue of an epic' },
70
+ ];
71
+ //# sourceMappingURL=label-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-definitions.js","sourceRoot":"","sources":["../../../src/actions/github/label-definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * github.mark_pr_ready action - converts a draft PR to ready for review.
3
+ */
4
+ import { BaseAction } from '../base-action.js';
5
+ import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
6
+ /**
7
+ * github.mark_pr_ready action handler
8
+ */
9
+ export declare class MarkPRReadyAction 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=mark-pr-ready.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-pr-ready.d.ts","sourceRoot":"","sources":["../../../src/actions/github/mark-pr-ready.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,iBAAkB,SAAQ,UAAU;IAC/C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAA0B;IAEzD,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;CA+B3C"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * github.mark_pr_ready action - converts a draft PR to ready for review.
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.mark_pr_ready action handler
9
+ */
10
+ export class MarkPRReadyAction extends BaseAction {
11
+ type = 'github.mark_pr_ready';
12
+ canHandle(step) {
13
+ const uses = step.uses ?? step.action;
14
+ if (!uses)
15
+ return false;
16
+ return uses === 'github.mark_pr_ready' ||
17
+ (isNamespacedAction(uses) && uses === this.type);
18
+ }
19
+ async executeInternal(step, context) {
20
+ // Get inputs
21
+ const prNumber = this.getRequiredInput(step, context, 'pr_number');
22
+ context.logger.info(`Marking PR #${prNumber} as ready for review`);
23
+ try {
24
+ // Get GitHub client
25
+ const client = createGitHubClient(context.workdir);
26
+ // Get repo info
27
+ const repoInfo = await client.getRepoInfo();
28
+ // Mark PR as ready
29
+ await client.markPRReady(repoInfo.owner, repoInfo.repo, prNumber);
30
+ context.logger.info(`PR #${prNumber} is now ready for review`);
31
+ const output = {
32
+ success: true,
33
+ pr_number: prNumber,
34
+ pr_url: `https://github.com/${repoInfo.owner}/${repoInfo.repo}/pull/${prNumber}`,
35
+ };
36
+ return this.successResult(output);
37
+ }
38
+ catch (error) {
39
+ return this.failureResult(error instanceof Error ? error.message : String(error));
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=mark-pr-ready.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-pr-ready.js","sourceRoot":"","sources":["../../../src/actions/github/mark-pr-ready.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IACtC,IAAI,GAAqB,sBAAsB,CAAC;IAEzD,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,sBAAsB;YAC/B,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,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAS,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAE3E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,QAAQ,sBAAsB,CAAC,CAAC;QAEnE,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,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,0BAA0B,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAsB;gBAChC,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE,sBAAsB,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,SAAS,QAAQ,EAAE;aACjF,CAAC;YAEF,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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * github.merge_from_base action - merges from base branch with conflict detection.
3
+ * Fetches latest changes and merges, reporting any conflicts.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
7
+ /**
8
+ * github.merge_from_base action handler
9
+ */
10
+ export declare class MergeFromBaseAction 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=merge-from-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-from-base.d.ts","sourceRoot":"","sources":["../../../src/actions/github/merge-from-base.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,mBAAoB,SAAQ,UAAU;IACjD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAA4B;IAE3D,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;CAwH3C"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * github.merge_from_base action - merges from base branch with conflict detection.
3
+ * Fetches latest changes and merges, reporting any conflicts.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import { isNamespacedAction } from '../../types/action.js';
7
+ import { createGitHubClient } from './client/index.js';
8
+ /**
9
+ * github.merge_from_base action handler
10
+ */
11
+ export class MergeFromBaseAction extends BaseAction {
12
+ type = 'github.merge_from_base';
13
+ canHandle(step) {
14
+ const uses = step.uses ?? step.action;
15
+ if (!uses)
16
+ return false;
17
+ return uses === 'github.merge_from_base' ||
18
+ (isNamespacedAction(uses) && uses === this.type);
19
+ }
20
+ async executeInternal(step, context) {
21
+ // Get inputs
22
+ const abortOnConflict = this.getInput(step, context, 'abort_on_conflict', false);
23
+ const autoResolve = this.getInput(step, context, 'auto_resolve', true);
24
+ const parentEpicNumber = this.getInput(step, context, 'parent_epic_number');
25
+ context.logger.info('Merging from base branch');
26
+ try {
27
+ // Get GitHub client
28
+ const client = createGitHubClient(context.workdir);
29
+ // Check for uncommitted changes first
30
+ const status = await client.getStatus();
31
+ let stashCreated = false;
32
+ if (status.has_changes) {
33
+ // Stash changes before merge
34
+ stashCreated = await client.stash('autodev: pre-merge stash');
35
+ context.logger.info('Stashed uncommitted changes');
36
+ }
37
+ // Fetch latest from remote
38
+ await client.fetch('origin', true);
39
+ // Determine base branch
40
+ let baseBranch;
41
+ let mergedFromEpic = false;
42
+ if (parentEpicNumber) {
43
+ // Try to find epic branch
44
+ const epicBranch = `${parentEpicNumber}-`;
45
+ const currentBranch = await client.getCurrentBranch();
46
+ // Epic branches would be like: epic/123-feature or 123-feature
47
+ baseBranch = `origin/${epicBranch}`;
48
+ // Check if exists, otherwise fall back to default
49
+ const exists = await client.branchExists(epicBranch, true);
50
+ if (!exists) {
51
+ baseBranch = `origin/${await client.getDefaultBranch()}`;
52
+ }
53
+ else {
54
+ mergedFromEpic = true;
55
+ }
56
+ }
57
+ else {
58
+ // Use default branch
59
+ const defaultBranch = await client.getDefaultBranch();
60
+ baseBranch = `origin/${defaultBranch}`;
61
+ }
62
+ context.logger.info(`Merging from ${baseBranch}`);
63
+ // Perform merge
64
+ const mergeResult = await client.merge(baseBranch);
65
+ // Handle conflicts
66
+ let conflictsRemaining = [];
67
+ const conflictsResolved = 0;
68
+ if (!mergeResult.success && mergeResult.conflicts.length > 0) {
69
+ if (abortOnConflict) {
70
+ // Abort merge and restore stash
71
+ await client.mergeAbort();
72
+ if (stashCreated) {
73
+ await client.stashPop();
74
+ }
75
+ return this.failureResult(`Merge conflict detected in ${mergeResult.conflicts.length} file(s). Aborted.`, {
76
+ output: {
77
+ success: false,
78
+ base_branch: baseBranch,
79
+ merged_from_epic: mergedFromEpic,
80
+ commits_merged: 0,
81
+ already_up_to_date: false,
82
+ conflicts_resolved: 0,
83
+ conflicts_remaining: mergeResult.conflicts,
84
+ stash_created: stashCreated,
85
+ summary: `Merge aborted due to ${mergeResult.conflicts.length} conflict(s)`,
86
+ },
87
+ });
88
+ }
89
+ // Return conflicts for agent resolution
90
+ conflictsRemaining = mergeResult.conflicts;
91
+ }
92
+ // Restore stash if created
93
+ if (stashCreated) {
94
+ const stashResult = await client.stashPop();
95
+ if (!stashResult.success && stashResult.conflicts) {
96
+ context.logger.warn('Stash pop resulted in conflicts');
97
+ }
98
+ }
99
+ const output = {
100
+ success: mergeResult.success || conflictsRemaining.length === 0,
101
+ base_branch: baseBranch.replace('origin/', ''),
102
+ merged_from_epic: mergedFromEpic,
103
+ commits_merged: mergeResult.commits_merged,
104
+ already_up_to_date: mergeResult.already_up_to_date,
105
+ conflicts_resolved: conflictsResolved,
106
+ conflicts_remaining: conflictsRemaining,
107
+ stash_created: stashCreated,
108
+ summary: mergeResult.summary,
109
+ };
110
+ if (conflictsRemaining.length > 0) {
111
+ return this.failureResult(`Merge completed with ${conflictsRemaining.length} conflict(s) requiring resolution`, { output });
112
+ }
113
+ return this.successResult(output);
114
+ }
115
+ catch (error) {
116
+ return this.failureResult(error instanceof Error ? error.message : String(error));
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=merge-from-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-from-base.js","sourceRoot":"","sources":["../../../src/actions/github/merge-from-base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * github.preflight action - validates environment before workflow execution.
3
+ * Parses issue URL, detects branch state, analyzes labels, and checks prerequisites.
4
+ */
5
+ import { BaseAction } from '../base-action.js';
6
+ import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition, ParsedIssueUrl } from '../../types/index.js';
7
+ /**
8
+ * Parse a GitHub issue URL into owner, repo, and number
9
+ */
10
+ export declare function parseGitHubIssueUrl(url: string): ParsedIssueUrl;
11
+ /**
12
+ * github.preflight action handler
13
+ */
14
+ export declare class PreflightAction extends BaseAction {
15
+ readonly type: ActionIdentifier;
16
+ private client;
17
+ canHandle(step: StepDefinition): boolean;
18
+ protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
19
+ /**
20
+ * Generate expected branch name from issue number and title
21
+ */
22
+ private generateExpectedBranch;
23
+ /**
24
+ * Check speckit artifact status
25
+ */
26
+ private checkSpeckitStatus;
27
+ /**
28
+ * Detect epic context from issue body and labels
29
+ */
30
+ private detectEpicContext;
31
+ /**
32
+ * Find existing branches for an issue number
33
+ */
34
+ private findExistingBranches;
35
+ }
36
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/actions/github/preflight.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,EAOd,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAO9B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAU/D;AA8GD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAsB;IAErD,OAAO,CAAC,MAAM,CAA2B;IAEzC,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;IAsG1C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;YACW,oBAAoB;CAsBnC"}