@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,11 @@
1
+ /**
2
+ * Get paths operation handler.
3
+ * Wraps the paths library for workflow execution.
4
+ */
5
+ import type { Logger } from '../../../../types/logger.js';
6
+ import type { GetPathsInput, GetPathsOutput } from '../types.js';
7
+ /**
8
+ * Execute the get_paths operation
9
+ */
10
+ export declare function executeGetPaths(input: GetPathsInput, logger: Logger): Promise<GetPathsOutput>;
11
+ //# sourceMappingURL=get-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paths.d.ts","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/get-paths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGjE;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAazB"}
@@ -0,0 +1,17 @@
1
+ import { getPaths } from '../lib/paths.js';
2
+ /**
3
+ * Execute the get_paths operation
4
+ */
5
+ export async function executeGetPaths(input, logger) {
6
+ logger.info(`Getting paths for branch: ${input.branch || '(auto-detect)'}`);
7
+ const result = await getPaths(input);
8
+ if (result.success) {
9
+ logger.info(`Feature directory: ${result.featureDir}`);
10
+ logger.info(`Feature exists: ${result.exists}`);
11
+ }
12
+ else {
13
+ logger.error('Failed to get paths');
14
+ }
15
+ return result;
16
+ }
17
+ //# sourceMappingURL=get-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-paths.js","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/get-paths.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoB,EACpB,MAAc;IAEd,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ActionContext } from '../../../../types/index.js';
2
+ import type { ImplementInput, ImplementOutput } from '../types.js';
3
+ /**
4
+ * Execute the implement operation using agent.invoke delegation
5
+ */
6
+ export declare function executeImplement(input: ImplementInput, context: ActionContext): Promise<ImplementOutput>;
7
+ //# sourceMappingURL=implement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.d.ts","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/implement.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgJnE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAkJ1B"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Implement operation handler.
3
+ * Uses agent.invoke to execute tasks from the task list.
4
+ */
5
+ import { join } from 'node:path';
6
+ import { executeCommand } from '../../../cli-utils.js';
7
+ import { exists, readFile, writeFile } from '../lib/fs.js';
8
+ import { StreamBatcher } from '../lib/stream-batcher.js';
9
+ /**
10
+ * Parse tasks from tasks.md content
11
+ */
12
+ function parseTasks(content) {
13
+ const tasks = [];
14
+ const lines = content.split('\n');
15
+ let currentTask = null;
16
+ let inFiles = false;
17
+ for (const line of lines) {
18
+ // Match task header: ### T001 [P] Description or - [ ] T001 Description
19
+ // Also detects [DONE] marker for heading-format completion tracking
20
+ const taskMatch = line.match(/(?:###\s*|[-*]\s*\[([ xX])\]\s*)(T\d+)\s*(\[DONE\]\s*)?(\[P\])?\s*(.*)/);
21
+ if (taskMatch && taskMatch[2]) {
22
+ if (currentTask) {
23
+ tasks.push(currentTask);
24
+ }
25
+ currentTask = {
26
+ id: taskMatch[2],
27
+ description: (taskMatch[5] ?? '').trim(),
28
+ files: [],
29
+ subtasks: [],
30
+ isParallel: !!taskMatch[4],
31
+ isComplete: taskMatch[1] ? taskMatch[1].toLowerCase() === 'x' : !!taskMatch[3],
32
+ };
33
+ inFiles = false;
34
+ continue;
35
+ }
36
+ if (currentTask) {
37
+ // Match file paths
38
+ const fileMatch = line.match(/\*\*Files?\*\*:\s*`([^`]+)`/);
39
+ if (fileMatch?.[1]) {
40
+ currentTask.files.push(fileMatch[1]);
41
+ inFiles = true;
42
+ continue;
43
+ }
44
+ // Match file list items
45
+ if (inFiles && line.match(/^[-*]\s*`([^`]+)`/)) {
46
+ const pathMatch = line.match(/`([^`]+)`/);
47
+ if (pathMatch?.[1]) {
48
+ currentTask.files.push(pathMatch[1]);
49
+ }
50
+ continue;
51
+ }
52
+ // Match subtasks (lines starting with - or * that aren't files)
53
+ const subtaskMatch = line.match(/^[-*]\s+(?![`[])(.+)/);
54
+ if (subtaskMatch?.[1] && !inFiles) {
55
+ currentTask.subtasks.push(subtaskMatch[1].trim());
56
+ }
57
+ // Reset inFiles if we hit a blank line or another section
58
+ if (line.trim() === '' || line.startsWith('##')) {
59
+ inFiles = false;
60
+ }
61
+ }
62
+ }
63
+ if (currentTask) {
64
+ tasks.push(currentTask);
65
+ }
66
+ return tasks;
67
+ }
68
+ /**
69
+ * Mark a task as complete in tasks.md content
70
+ */
71
+ function markTaskComplete(content, taskId) {
72
+ // Replace checkbox format: - [ ] Txxx -> - [X] Txxx
73
+ content = content.replace(new RegExp(`([-*]\\s*)\\[\\s*\\](\\s*${taskId})`, 'g'), '$1[X]$2');
74
+ // Replace heading format: ### Txxx -> ### Txxx [DONE] (only if not already marked)
75
+ content = content.replace(new RegExp(`(###\\s*${taskId})(?!\\s*\\[DONE\\])`, 'g'), '$1 [DONE]');
76
+ return content;
77
+ }
78
+ /**
79
+ * Build the prompt for implementing a single task
80
+ */
81
+ function buildTaskPrompt(task, featureDir, specContent, planContent) {
82
+ let prompt = `Implement task ${task.id}: ${task.description}
83
+
84
+ Feature directory: ${featureDir}
85
+
86
+ `;
87
+ if (task.files.length > 0) {
88
+ prompt += `Files to modify/create:
89
+ ${task.files.map(f => `- ${f}`).join('\n')}
90
+
91
+ `;
92
+ }
93
+ if (task.subtasks.length > 0) {
94
+ prompt += `Subtasks:
95
+ ${task.subtasks.map(s => `- ${s}`).join('\n')}
96
+
97
+ `;
98
+ }
99
+ prompt += `Context from spec.md (summary):
100
+ ${specContent.substring(0, 2000)}
101
+
102
+ Context from plan.md (summary):
103
+ ${planContent.substring(0, 2000)}
104
+
105
+ Instructions:
106
+ 1. Implement the task according to the specification
107
+ 2. Follow the architectural patterns from the plan
108
+ 3. Write clean, well-documented code
109
+ 4. Include appropriate error handling
110
+ 5. Ensure type safety (for TypeScript)
111
+
112
+ Complete this task by writing the necessary code.`;
113
+ return prompt;
114
+ }
115
+ /**
116
+ * Execute the implement operation using agent.invoke delegation
117
+ */
118
+ export async function executeImplement(input, context) {
119
+ const specFile = join(input.feature_dir, 'spec.md');
120
+ const planFile = join(input.feature_dir, 'plan.md');
121
+ const tasksFile = join(input.feature_dir, 'tasks.md');
122
+ context.logger.info(`Implementing tasks for: ${input.feature_dir}`);
123
+ // Read required files
124
+ if (!(await exists(tasksFile))) {
125
+ context.logger.error('Tasks file not found');
126
+ return {
127
+ success: false,
128
+ tasks_completed: 0,
129
+ tasks_total: 0,
130
+ tasks_skipped: 0,
131
+ files_modified: [],
132
+ errors: ['Tasks file not found'],
133
+ };
134
+ }
135
+ let tasksContent;
136
+ let specContent;
137
+ let planContent;
138
+ try {
139
+ tasksContent = await readFile(tasksFile);
140
+ specContent = await exists(specFile) ? await readFile(specFile) : '';
141
+ planContent = await exists(planFile) ? await readFile(planFile) : '';
142
+ }
143
+ catch (error) {
144
+ context.logger.error(`Failed to read files: ${error instanceof Error ? error.message : String(error)}`);
145
+ return {
146
+ success: false,
147
+ tasks_completed: 0,
148
+ tasks_total: 0,
149
+ tasks_skipped: 0,
150
+ files_modified: [],
151
+ errors: [error instanceof Error ? error.message : String(error)],
152
+ };
153
+ }
154
+ // Parse tasks
155
+ let tasks = parseTasks(tasksContent);
156
+ // Apply filter if specified
157
+ if (input.task_filter) {
158
+ const filterPattern = new RegExp(input.task_filter, 'i');
159
+ tasks = tasks.filter(t => filterPattern.test(t.id) || filterPattern.test(t.description));
160
+ context.logger.info(`Filtered to ${tasks.length} tasks matching: ${input.task_filter}`);
161
+ }
162
+ // Filter out completed tasks
163
+ const pendingTasks = tasks.filter(t => !t.isComplete);
164
+ const skippedTasks = tasks.filter(t => t.isComplete);
165
+ context.logger.info(`Tasks: ${pendingTasks.length} pending, ${skippedTasks.length} already complete`);
166
+ if (pendingTasks.length === 0) {
167
+ context.logger.info('All tasks already complete');
168
+ return {
169
+ success: true,
170
+ tasks_completed: 0,
171
+ tasks_total: tasks.length,
172
+ tasks_skipped: skippedTasks.length,
173
+ files_modified: [],
174
+ };
175
+ }
176
+ const completedTasks = [];
177
+ const filesModified = new Set();
178
+ const errors = [];
179
+ const timeout = (input.timeout ?? 600) * 1000;
180
+ // Execute tasks
181
+ for (const task of pendingTasks) {
182
+ context.logger.info(`Executing task ${task.id}: ${task.description.substring(0, 50)}...`);
183
+ // Check for cancellation
184
+ if (context.signal.aborted) {
185
+ context.logger.warn('Implementation cancelled');
186
+ break;
187
+ }
188
+ const prompt = buildTaskPrompt(task, input.feature_dir, specContent, planContent);
189
+ try {
190
+ // Set up streaming batchers for real-time log output (per-task)
191
+ const stdoutBatcher = new StreamBatcher((content) => {
192
+ context.emitEvent?.({
193
+ type: 'log:append',
194
+ data: { stream: 'stdout', stepName: `implement:${task.id}`, content },
195
+ });
196
+ });
197
+ const stderrBatcher = new StreamBatcher((content) => {
198
+ context.emitEvent?.({
199
+ type: 'log:append',
200
+ data: { stream: 'stderr', stepName: `implement:${task.id}`, content },
201
+ });
202
+ });
203
+ const result = await executeCommand('claude', ['-p', prompt, '--output-format', 'json', '--dangerously-skip-permissions'], {
204
+ cwd: input.feature_dir,
205
+ timeout,
206
+ signal: context.signal,
207
+ onStdout: (chunk) => stdoutBatcher.append(chunk),
208
+ onStderr: (chunk) => stderrBatcher.append(chunk),
209
+ });
210
+ // Flush remaining batched content
211
+ stdoutBatcher.flush();
212
+ stderrBatcher.flush();
213
+ if (result.exitCode === 0) {
214
+ completedTasks.push(task.id);
215
+ // Track files that were supposed to be modified
216
+ for (const file of task.files) {
217
+ filesModified.add(file);
218
+ }
219
+ context.logger.info(`Task ${task.id} completed`);
220
+ // Update tasks.md to mark task complete
221
+ tasksContent = markTaskComplete(tasksContent, task.id);
222
+ await writeFile(tasksFile, tasksContent);
223
+ }
224
+ else {
225
+ errors.push(`Task ${task.id} failed: Agent returned non-zero exit code`);
226
+ context.logger.error(`Task ${task.id} failed`);
227
+ }
228
+ }
229
+ catch (error) {
230
+ const errorMsg = error instanceof Error ? error.message : String(error);
231
+ errors.push(`Task ${task.id} failed: ${errorMsg}`);
232
+ context.logger.error(`Task ${task.id} failed: ${errorMsg}`);
233
+ }
234
+ }
235
+ const success = errors.length === 0;
236
+ context.logger.info(`Implementation complete: ${completedTasks.length}/${pendingTasks.length} tasks completed`);
237
+ return {
238
+ success,
239
+ tasks_completed: completedTasks.length,
240
+ tasks_total: tasks.length,
241
+ tasks_skipped: skippedTasks.length,
242
+ files_modified: [...filesModified],
243
+ errors: errors.length > 0 ? errors : undefined,
244
+ };
245
+ }
246
+ //# sourceMappingURL=implement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/implement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ActionContext } from '../../../../types/index.js';
2
+ import type { PlanInput, PlanOutput } from '../types.js';
3
+ /**
4
+ * Execute the plan operation using agent.invoke delegation
5
+ */
6
+ export declare function executePlan(input: PlanInput, context: ActionContext): Promise<PlanOutput>;
7
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/plan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8IzD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CAgIrB"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Plan operation handler.
3
+ * Uses agent.invoke to generate implementation plan from specification.
4
+ */
5
+ import { join } from 'node:path';
6
+ import { executeCommand } from '../../../cli-utils.js';
7
+ import { exists, readFile, readDir } from '../lib/fs.js';
8
+ import { StreamBatcher } from '../lib/stream-batcher.js';
9
+ /**
10
+ * Build the prompt for plan generation
11
+ */
12
+ function buildPlanPrompt(featureDir, specContent, clarificationsContent) {
13
+ let prompt = `Generate an implementation plan for this feature specification.
14
+
15
+ Feature directory: ${featureDir}
16
+ Plan file: ${join(featureDir, 'plan.md')}
17
+
18
+ Specification:
19
+ ${specContent}
20
+
21
+ `;
22
+ if (clarificationsContent) {
23
+ prompt += `Clarifications and answers:
24
+ ${clarificationsContent}
25
+
26
+ `;
27
+ }
28
+ prompt += `Instructions:
29
+ 1. Analyze the specification and clarifications
30
+ 2. Determine the technical approach and architecture
31
+ 3. Identify required technologies and dependencies
32
+ 4. Break down the implementation into phases
33
+ 5. Create supporting artifacts as needed
34
+
35
+ Generate a comprehensive implementation plan with:
36
+ - Summary of the approach
37
+ - Technical context (language, framework, dependencies)
38
+ - Architecture overview
39
+ - Implementation phases
40
+ - API contracts (if applicable)
41
+ - Data models (if applicable)
42
+ - Key technical decisions with rationale
43
+ - Risk mitigation strategies
44
+
45
+ Also create supporting artifacts if needed:
46
+ - data-model.md: If there are new entities or schemas
47
+ - research.md: If technical decisions need documentation
48
+ - contracts/*.yaml: If there are new API endpoints
49
+
50
+ Write all artifacts directly to the feature directory.`;
51
+ return prompt;
52
+ }
53
+ /**
54
+ * Extract technologies from plan content
55
+ */
56
+ function extractTechnologies(content) {
57
+ const technologies = [];
58
+ // Look for common technology mentions
59
+ const techPatterns = [
60
+ /typescript/gi,
61
+ /javascript/gi,
62
+ /react/gi,
63
+ /node\.?js/gi,
64
+ /postgresql/gi,
65
+ /mongodb/gi,
66
+ /redis/gi,
67
+ /docker/gi,
68
+ /kubernetes/gi,
69
+ /graphql/gi,
70
+ /rest\s*api/gi,
71
+ /vitest/gi,
72
+ /jest/gi,
73
+ ];
74
+ for (const pattern of techPatterns) {
75
+ if (pattern.test(content)) {
76
+ const match = content.match(pattern);
77
+ if (match) {
78
+ const tech = match[0].toLowerCase().replace(/\s+/g, '');
79
+ if (!technologies.includes(tech)) {
80
+ technologies.push(tech);
81
+ }
82
+ }
83
+ }
84
+ }
85
+ // Also look for explicit "Technologies:" section
86
+ const techSection = content.match(/##\s*(?:Technologies?|Tech\s*Stack|Dependencies)\s*\n([\s\S]*?)(?=##|$)/i);
87
+ if (techSection?.[1]) {
88
+ const lines = techSection[1].split('\n');
89
+ for (const line of lines) {
90
+ const itemMatch = line.match(/[-*]\s*(?:\*\*)?([^*:\n]+)/);
91
+ if (itemMatch?.[1]) {
92
+ const tech = itemMatch[1].trim().toLowerCase();
93
+ if (tech.length > 1 && !technologies.includes(tech)) {
94
+ technologies.push(tech);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ return technologies;
100
+ }
101
+ /**
102
+ * Count phases in plan content
103
+ */
104
+ function countPhases(content) {
105
+ const phaseMatches = content.match(/##\s*Phase\s*\d+/gi);
106
+ return phaseMatches ? phaseMatches.length : 0;
107
+ }
108
+ /**
109
+ * Find artifacts created in feature directory
110
+ */
111
+ async function findCreatedArtifacts(featureDir) {
112
+ const artifacts = [];
113
+ const expectedFiles = ['data-model.md', 'research.md', 'quickstart.md'];
114
+ for (const file of expectedFiles) {
115
+ const filePath = join(featureDir, file);
116
+ if (await exists(filePath)) {
117
+ artifacts.push(filePath);
118
+ }
119
+ }
120
+ // Check contracts directory
121
+ const contractsDir = join(featureDir, 'contracts');
122
+ if (await exists(contractsDir)) {
123
+ const contracts = await readDir(contractsDir);
124
+ for (const contract of contracts) {
125
+ if (contract.endsWith('.yaml') || contract.endsWith('.yml')) {
126
+ artifacts.push(join(contractsDir, contract));
127
+ }
128
+ }
129
+ }
130
+ return artifacts;
131
+ }
132
+ /**
133
+ * Execute the plan operation using agent.invoke delegation
134
+ */
135
+ export async function executePlan(input, context) {
136
+ const specFile = join(input.feature_dir, 'spec.md');
137
+ const planFile = join(input.feature_dir, 'plan.md');
138
+ const clarificationsFile = join(input.feature_dir, 'clarifications.md');
139
+ context.logger.info(`Generating implementation plan for: ${input.feature_dir}`);
140
+ // Read the spec file
141
+ if (!(await exists(specFile))) {
142
+ return {
143
+ success: false,
144
+ plan_file: planFile,
145
+ artifacts_created: [],
146
+ technologies: [],
147
+ phases_count: 0,
148
+ };
149
+ }
150
+ let specContent;
151
+ try {
152
+ specContent = await readFile(specFile);
153
+ }
154
+ catch (error) {
155
+ context.logger.error(`Failed to read spec file: ${error instanceof Error ? error.message : String(error)}`);
156
+ return {
157
+ success: false,
158
+ plan_file: planFile,
159
+ artifacts_created: [],
160
+ technologies: [],
161
+ phases_count: 0,
162
+ };
163
+ }
164
+ // Read clarifications if available
165
+ let clarificationsContent;
166
+ if (await exists(clarificationsFile)) {
167
+ try {
168
+ clarificationsContent = await readFile(clarificationsFile);
169
+ }
170
+ catch {
171
+ // Ignore read errors
172
+ }
173
+ }
174
+ // Build prompt
175
+ const prompt = buildPlanPrompt(input.feature_dir, specContent, clarificationsContent);
176
+ try {
177
+ // Invoke Claude agent (--dangerously-skip-permissions for automated workflows)
178
+ const args = ['-p', prompt, '--output-format', 'json', '--dangerously-skip-permissions'];
179
+ const timeout = (input.timeout ?? 600) * 1000;
180
+ // Set up streaming batchers for real-time log output
181
+ const stdoutBatcher = new StreamBatcher((content) => {
182
+ context.emitEvent?.({
183
+ type: 'log:append',
184
+ data: { stream: 'stdout', stepName: 'plan', content },
185
+ });
186
+ });
187
+ const stderrBatcher = new StreamBatcher((content) => {
188
+ context.emitEvent?.({
189
+ type: 'log:append',
190
+ data: { stream: 'stderr', stepName: 'plan', content },
191
+ });
192
+ });
193
+ const result = await executeCommand('claude', args, {
194
+ cwd: input.feature_dir,
195
+ timeout,
196
+ signal: context.signal,
197
+ onStdout: (chunk) => stdoutBatcher.append(chunk),
198
+ onStderr: (chunk) => stderrBatcher.append(chunk),
199
+ });
200
+ // Flush remaining batched content
201
+ stdoutBatcher.flush();
202
+ stderrBatcher.flush();
203
+ if (result.exitCode !== 0) {
204
+ return {
205
+ success: false,
206
+ plan_file: planFile,
207
+ artifacts_created: [],
208
+ technologies: [],
209
+ phases_count: 0,
210
+ };
211
+ }
212
+ // Read the generated plan to extract metrics
213
+ let technologies = [];
214
+ let phasesCount = 0;
215
+ if (await exists(planFile)) {
216
+ try {
217
+ const planContent = await readFile(planFile);
218
+ technologies = extractTechnologies(planContent);
219
+ phasesCount = countPhases(planContent);
220
+ }
221
+ catch {
222
+ // Ignore read errors
223
+ }
224
+ }
225
+ // Find any additional artifacts created
226
+ const artifactsCreated = await findCreatedArtifacts(input.feature_dir);
227
+ // Filter out the plan file itself
228
+ const additionalArtifacts = artifactsCreated.filter(a => a !== planFile);
229
+ context.logger.info(`Plan generated with ${phasesCount} phases`);
230
+ context.logger.info(`Technologies identified: ${technologies.join(', ') || 'none'}`);
231
+ if (additionalArtifacts.length > 0) {
232
+ context.logger.info(`Additional artifacts created: ${additionalArtifacts.length}`);
233
+ }
234
+ return {
235
+ success: true,
236
+ plan_file: planFile,
237
+ artifacts_created: additionalArtifacts,
238
+ technologies,
239
+ phases_count: phasesCount,
240
+ };
241
+ }
242
+ catch (error) {
243
+ context.logger.error(`Plan operation failed: ${error instanceof Error ? error.message : String(error)}`);
244
+ return {
245
+ success: false,
246
+ plan_file: planFile,
247
+ artifacts_created: [],
248
+ technologies: [],
249
+ phases_count: 0,
250
+ };
251
+ }
252
+ }
253
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ActionContext } from '../../../../types/index.js';
2
+ import type { SpecifyInput, SpecifyOutput } from '../types.js';
3
+ /**
4
+ * Execute the specify operation using agent.invoke delegation
5
+ */
6
+ export declare function executeSpecify(input: SpecifyInput, context: ActionContext): Promise<SpecifyOutput>;
7
+ //# sourceMappingURL=specify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../../../../src/actions/builtin/speckit/operations/specify.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmE/D;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,aAAa,CAAC,CAwHxB"}