red64-cli 0.1.0

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 (354) hide show
  1. package/README.md +454 -0
  2. package/dist/cli/parseArgs.d.ts +16 -0
  3. package/dist/cli/parseArgs.d.ts.map +1 -0
  4. package/dist/cli/parseArgs.js +172 -0
  5. package/dist/cli/parseArgs.js.map +1 -0
  6. package/dist/cli/validateFlags.d.ts +22 -0
  7. package/dist/cli/validateFlags.d.ts.map +1 -0
  8. package/dist/cli/validateFlags.js +24 -0
  9. package/dist/cli/validateFlags.js.map +1 -0
  10. package/dist/cli.d.ts +7 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +90 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/components/App.d.ts +20 -0
  15. package/dist/components/App.d.ts.map +1 -0
  16. package/dist/components/App.js +35 -0
  17. package/dist/components/App.js.map +1 -0
  18. package/dist/components/CommandRouter.d.ts +21 -0
  19. package/dist/components/CommandRouter.d.ts.map +1 -0
  20. package/dist/components/CommandRouter.js +30 -0
  21. package/dist/components/CommandRouter.js.map +1 -0
  22. package/dist/components/GlobalConfig.d.ts +26 -0
  23. package/dist/components/GlobalConfig.d.ts.map +1 -0
  24. package/dist/components/GlobalConfig.js +30 -0
  25. package/dist/components/GlobalConfig.js.map +1 -0
  26. package/dist/components/index.d.ts +9 -0
  27. package/dist/components/index.d.ts.map +1 -0
  28. package/dist/components/index.js +9 -0
  29. package/dist/components/index.js.map +1 -0
  30. package/dist/components/init/CompleteStep.d.ts +11 -0
  31. package/dist/components/init/CompleteStep.d.ts.map +1 -0
  32. package/dist/components/init/CompleteStep.js +15 -0
  33. package/dist/components/init/CompleteStep.js.map +1 -0
  34. package/dist/components/init/ErrorStep.d.ts +14 -0
  35. package/dist/components/init/ErrorStep.d.ts.map +1 -0
  36. package/dist/components/init/ErrorStep.js +36 -0
  37. package/dist/components/init/ErrorStep.js.map +1 -0
  38. package/dist/components/init/FetchStep.d.ts +15 -0
  39. package/dist/components/init/FetchStep.d.ts.map +1 -0
  40. package/dist/components/init/FetchStep.js +33 -0
  41. package/dist/components/init/FetchStep.js.map +1 -0
  42. package/dist/components/init/SetupStep.d.ts +14 -0
  43. package/dist/components/init/SetupStep.d.ts.map +1 -0
  44. package/dist/components/init/SetupStep.js +78 -0
  45. package/dist/components/init/SetupStep.js.map +1 -0
  46. package/dist/components/init/SteeringStep.d.ts +12 -0
  47. package/dist/components/init/SteeringStep.d.ts.map +1 -0
  48. package/dist/components/init/SteeringStep.js +43 -0
  49. package/dist/components/init/SteeringStep.js.map +1 -0
  50. package/dist/components/init/WelcomeStep.d.ts +12 -0
  51. package/dist/components/init/WelcomeStep.d.ts.map +1 -0
  52. package/dist/components/init/WelcomeStep.js +52 -0
  53. package/dist/components/init/WelcomeStep.js.map +1 -0
  54. package/dist/components/init/index.d.ts +11 -0
  55. package/dist/components/init/index.d.ts.map +1 -0
  56. package/dist/components/init/index.js +10 -0
  57. package/dist/components/init/index.js.map +1 -0
  58. package/dist/components/init/types.d.ts +98 -0
  59. package/dist/components/init/types.d.ts.map +1 -0
  60. package/dist/components/init/types.js +6 -0
  61. package/dist/components/init/types.js.map +1 -0
  62. package/dist/components/screens/AbortScreen.d.ts +14 -0
  63. package/dist/components/screens/AbortScreen.d.ts.map +1 -0
  64. package/dist/components/screens/AbortScreen.js +181 -0
  65. package/dist/components/screens/AbortScreen.js.map +1 -0
  66. package/dist/components/screens/ApprovalScreen.d.ts +24 -0
  67. package/dist/components/screens/ApprovalScreen.d.ts.map +1 -0
  68. package/dist/components/screens/ApprovalScreen.js +82 -0
  69. package/dist/components/screens/ApprovalScreen.js.map +1 -0
  70. package/dist/components/screens/HelpScreen.d.ts +20 -0
  71. package/dist/components/screens/HelpScreen.d.ts.map +1 -0
  72. package/dist/components/screens/HelpScreen.js +70 -0
  73. package/dist/components/screens/HelpScreen.js.map +1 -0
  74. package/dist/components/screens/InitScreen.d.ts +15 -0
  75. package/dist/components/screens/InitScreen.d.ts.map +1 -0
  76. package/dist/components/screens/InitScreen.js +420 -0
  77. package/dist/components/screens/InitScreen.js.map +1 -0
  78. package/dist/components/screens/ListScreen.d.ts +14 -0
  79. package/dist/components/screens/ListScreen.d.ts.map +1 -0
  80. package/dist/components/screens/ListScreen.js +57 -0
  81. package/dist/components/screens/ListScreen.js.map +1 -0
  82. package/dist/components/screens/ProgressScreen.d.ts +26 -0
  83. package/dist/components/screens/ProgressScreen.d.ts.map +1 -0
  84. package/dist/components/screens/ProgressScreen.js +64 -0
  85. package/dist/components/screens/ProgressScreen.js.map +1 -0
  86. package/dist/components/screens/ResumeScreen.d.ts +14 -0
  87. package/dist/components/screens/ResumeScreen.d.ts.map +1 -0
  88. package/dist/components/screens/ResumeScreen.js +108 -0
  89. package/dist/components/screens/ResumeScreen.js.map +1 -0
  90. package/dist/components/screens/ScreenProps.d.ts +12 -0
  91. package/dist/components/screens/ScreenProps.d.ts.map +1 -0
  92. package/dist/components/screens/ScreenProps.js +5 -0
  93. package/dist/components/screens/ScreenProps.js.map +1 -0
  94. package/dist/components/screens/StartScreen.d.ts +26 -0
  95. package/dist/components/screens/StartScreen.d.ts.map +1 -0
  96. package/dist/components/screens/StartScreen.js +1021 -0
  97. package/dist/components/screens/StartScreen.js.map +1 -0
  98. package/dist/components/screens/StatusScreen.d.ts +14 -0
  99. package/dist/components/screens/StatusScreen.d.ts.map +1 -0
  100. package/dist/components/screens/StatusScreen.js +115 -0
  101. package/dist/components/screens/StatusScreen.js.map +1 -0
  102. package/dist/components/screens/index.d.ts +15 -0
  103. package/dist/components/screens/index.d.ts.map +1 -0
  104. package/dist/components/screens/index.js +12 -0
  105. package/dist/components/screens/index.js.map +1 -0
  106. package/dist/components/ui/ErrorBoundary.d.ts +34 -0
  107. package/dist/components/ui/ErrorBoundary.d.ts.map +1 -0
  108. package/dist/components/ui/ErrorBoundary.js +37 -0
  109. package/dist/components/ui/ErrorBoundary.js.map +1 -0
  110. package/dist/components/ui/ErrorDisplay.d.ts +20 -0
  111. package/dist/components/ui/ErrorDisplay.d.ts.map +1 -0
  112. package/dist/components/ui/ErrorDisplay.js +12 -0
  113. package/dist/components/ui/ErrorDisplay.js.map +1 -0
  114. package/dist/components/ui/ErrorRecoveryPrompt.d.ts +30 -0
  115. package/dist/components/ui/ErrorRecoveryPrompt.d.ts.map +1 -0
  116. package/dist/components/ui/ErrorRecoveryPrompt.js +66 -0
  117. package/dist/components/ui/ErrorRecoveryPrompt.js.map +1 -0
  118. package/dist/components/ui/FeatureSidebar.d.ts +27 -0
  119. package/dist/components/ui/FeatureSidebar.d.ts.map +1 -0
  120. package/dist/components/ui/FeatureSidebar.js +166 -0
  121. package/dist/components/ui/FeatureSidebar.js.map +1 -0
  122. package/dist/components/ui/FlowTable.d.ts +21 -0
  123. package/dist/components/ui/FlowTable.d.ts.map +1 -0
  124. package/dist/components/ui/FlowTable.js +105 -0
  125. package/dist/components/ui/FlowTable.js.map +1 -0
  126. package/dist/components/ui/Header.d.ts +20 -0
  127. package/dist/components/ui/Header.d.ts.map +1 -0
  128. package/dist/components/ui/Header.js +11 -0
  129. package/dist/components/ui/Header.js.map +1 -0
  130. package/dist/components/ui/OutputRegion.d.ts +20 -0
  131. package/dist/components/ui/OutputRegion.d.ts.map +1 -0
  132. package/dist/components/ui/OutputRegion.js +14 -0
  133. package/dist/components/ui/OutputRegion.js.map +1 -0
  134. package/dist/components/ui/PhaseProgressView.d.ts +23 -0
  135. package/dist/components/ui/PhaseProgressView.d.ts.map +1 -0
  136. package/dist/components/ui/PhaseProgressView.js +117 -0
  137. package/dist/components/ui/PhaseProgressView.js.map +1 -0
  138. package/dist/components/ui/ProgressBar.d.ts +20 -0
  139. package/dist/components/ui/ProgressBar.d.ts.map +1 -0
  140. package/dist/components/ui/ProgressBar.js +12 -0
  141. package/dist/components/ui/ProgressBar.js.map +1 -0
  142. package/dist/components/ui/SelectMenu.d.ts +27 -0
  143. package/dist/components/ui/SelectMenu.d.ts.map +1 -0
  144. package/dist/components/ui/SelectMenu.js +21 -0
  145. package/dist/components/ui/SelectMenu.js.map +1 -0
  146. package/dist/components/ui/Spinner.d.ts +18 -0
  147. package/dist/components/ui/Spinner.d.ts.map +1 -0
  148. package/dist/components/ui/Spinner.js +10 -0
  149. package/dist/components/ui/Spinner.js.map +1 -0
  150. package/dist/components/ui/StatusLine.d.ts +21 -0
  151. package/dist/components/ui/StatusLine.d.ts.map +1 -0
  152. package/dist/components/ui/StatusLine.js +30 -0
  153. package/dist/components/ui/StatusLine.js.map +1 -0
  154. package/dist/components/ui/index.d.ts +16 -0
  155. package/dist/components/ui/index.d.ts.map +1 -0
  156. package/dist/components/ui/index.js +16 -0
  157. package/dist/components/ui/index.js.map +1 -0
  158. package/dist/services/AgentInvoker.d.ts +20 -0
  159. package/dist/services/AgentInvoker.d.ts.map +1 -0
  160. package/dist/services/AgentInvoker.js +282 -0
  161. package/dist/services/AgentInvoker.js.map +1 -0
  162. package/dist/services/BranchService.d.ts +28 -0
  163. package/dist/services/BranchService.d.ts.map +1 -0
  164. package/dist/services/BranchService.js +114 -0
  165. package/dist/services/BranchService.js.map +1 -0
  166. package/dist/services/CacheService.d.ts +57 -0
  167. package/dist/services/CacheService.d.ts.map +1 -0
  168. package/dist/services/CacheService.js +208 -0
  169. package/dist/services/CacheService.js.map +1 -0
  170. package/dist/services/ClaudeErrorDetector.d.ts +45 -0
  171. package/dist/services/ClaudeErrorDetector.d.ts.map +1 -0
  172. package/dist/services/ClaudeErrorDetector.js +207 -0
  173. package/dist/services/ClaudeErrorDetector.js.map +1 -0
  174. package/dist/services/ClaudeHealthCheck.d.ts +37 -0
  175. package/dist/services/ClaudeHealthCheck.d.ts.map +1 -0
  176. package/dist/services/ClaudeHealthCheck.js +197 -0
  177. package/dist/services/ClaudeHealthCheck.js.map +1 -0
  178. package/dist/services/CommitService.d.ts +36 -0
  179. package/dist/services/CommitService.d.ts.map +1 -0
  180. package/dist/services/CommitService.js +159 -0
  181. package/dist/services/CommitService.js.map +1 -0
  182. package/dist/services/ConfigService.d.ts +49 -0
  183. package/dist/services/ConfigService.d.ts.map +1 -0
  184. package/dist/services/ConfigService.js +57 -0
  185. package/dist/services/ConfigService.js.map +1 -0
  186. package/dist/services/DockerRunner.d.ts +45 -0
  187. package/dist/services/DockerRunner.d.ts.map +1 -0
  188. package/dist/services/DockerRunner.js +170 -0
  189. package/dist/services/DockerRunner.js.map +1 -0
  190. package/dist/services/ExtendedFlowStateMachine.d.ts +31 -0
  191. package/dist/services/ExtendedFlowStateMachine.d.ts.map +1 -0
  192. package/dist/services/ExtendedFlowStateMachine.js +302 -0
  193. package/dist/services/ExtendedFlowStateMachine.js.map +1 -0
  194. package/dist/services/FeatureValidator.d.ts +26 -0
  195. package/dist/services/FeatureValidator.d.ts.map +1 -0
  196. package/dist/services/FeatureValidator.js +48 -0
  197. package/dist/services/FeatureValidator.js.map +1 -0
  198. package/dist/services/FlowStateMachine.d.ts +26 -0
  199. package/dist/services/FlowStateMachine.d.ts.map +1 -0
  200. package/dist/services/FlowStateMachine.js +177 -0
  201. package/dist/services/FlowStateMachine.js.map +1 -0
  202. package/dist/services/GitHubService.d.ts +72 -0
  203. package/dist/services/GitHubService.d.ts.map +1 -0
  204. package/dist/services/GitHubService.js +150 -0
  205. package/dist/services/GitHubService.js.map +1 -0
  206. package/dist/services/GitStatusChecker.d.ts +29 -0
  207. package/dist/services/GitStatusChecker.d.ts.map +1 -0
  208. package/dist/services/GitStatusChecker.js +127 -0
  209. package/dist/services/GitStatusChecker.js.map +1 -0
  210. package/dist/services/PRCreatorService.d.ts +59 -0
  211. package/dist/services/PRCreatorService.d.ts.map +1 -0
  212. package/dist/services/PRCreatorService.js +212 -0
  213. package/dist/services/PRCreatorService.js.map +1 -0
  214. package/dist/services/PRStatusFetcher.d.ts +39 -0
  215. package/dist/services/PRStatusFetcher.d.ts.map +1 -0
  216. package/dist/services/PRStatusFetcher.js +144 -0
  217. package/dist/services/PRStatusFetcher.js.map +1 -0
  218. package/dist/services/PhaseExecutor.d.ts +29 -0
  219. package/dist/services/PhaseExecutor.d.ts.map +1 -0
  220. package/dist/services/PhaseExecutor.js +125 -0
  221. package/dist/services/PhaseExecutor.js.map +1 -0
  222. package/dist/services/SpecInitService.d.ts +33 -0
  223. package/dist/services/SpecInitService.d.ts.map +1 -0
  224. package/dist/services/SpecInitService.js +168 -0
  225. package/dist/services/SpecInitService.js.map +1 -0
  226. package/dist/services/StateStore.d.ts +24 -0
  227. package/dist/services/StateStore.d.ts.map +1 -0
  228. package/dist/services/StateStore.js +171 -0
  229. package/dist/services/StateStore.js.map +1 -0
  230. package/dist/services/TaskParser.d.ts +44 -0
  231. package/dist/services/TaskParser.d.ts.map +1 -0
  232. package/dist/services/TaskParser.js +167 -0
  233. package/dist/services/TaskParser.js.map +1 -0
  234. package/dist/services/TaskRunner.d.ts +52 -0
  235. package/dist/services/TaskRunner.d.ts.map +1 -0
  236. package/dist/services/TaskRunner.js +135 -0
  237. package/dist/services/TaskRunner.js.map +1 -0
  238. package/dist/services/TemplateService.d.ts +73 -0
  239. package/dist/services/TemplateService.d.ts.map +1 -0
  240. package/dist/services/TemplateService.js +263 -0
  241. package/dist/services/TemplateService.js.map +1 -0
  242. package/dist/services/WorktreeService.d.ts +51 -0
  243. package/dist/services/WorktreeService.d.ts.map +1 -0
  244. package/dist/services/WorktreeService.js +204 -0
  245. package/dist/services/WorktreeService.js.map +1 -0
  246. package/dist/services/index.d.ts +25 -0
  247. package/dist/services/index.d.ts.map +1 -0
  248. package/dist/services/index.js +25 -0
  249. package/dist/services/index.js.map +1 -0
  250. package/dist/types/extended-flow.d.ts +167 -0
  251. package/dist/types/extended-flow.d.ts.map +1 -0
  252. package/dist/types/extended-flow.js +103 -0
  253. package/dist/types/extended-flow.js.map +1 -0
  254. package/dist/types/index.d.ts +210 -0
  255. package/dist/types/index.d.ts.map +1 -0
  256. package/dist/types/index.js +28 -0
  257. package/dist/types/index.js.map +1 -0
  258. package/dist/utils/git.d.ts +41 -0
  259. package/dist/utils/git.d.ts.map +1 -0
  260. package/dist/utils/git.js +68 -0
  261. package/dist/utils/git.js.map +1 -0
  262. package/dist/utils/index.d.ts +6 -0
  263. package/dist/utils/index.d.ts.map +1 -0
  264. package/dist/utils/index.js +6 -0
  265. package/dist/utils/index.js.map +1 -0
  266. package/dist/utils/paths.d.ts +30 -0
  267. package/dist/utils/paths.d.ts.map +1 -0
  268. package/dist/utils/paths.js +43 -0
  269. package/dist/utils/paths.js.map +1 -0
  270. package/framework/.red64/settings/rules/design-discovery-full.md +93 -0
  271. package/framework/.red64/settings/rules/design-discovery-light.md +49 -0
  272. package/framework/.red64/settings/rules/design-principles.md +182 -0
  273. package/framework/.red64/settings/rules/design-review.md +110 -0
  274. package/framework/.red64/settings/rules/ears-format.md +49 -0
  275. package/framework/.red64/settings/rules/gap-analysis.md +144 -0
  276. package/framework/.red64/settings/rules/steering-principles.md +90 -0
  277. package/framework/.red64/settings/rules/tasks-generation.md +131 -0
  278. package/framework/.red64/settings/rules/tasks-parallel-analysis.md +34 -0
  279. package/framework/.red64/settings/templates/flow-state.json +48 -0
  280. package/framework/.red64/settings/templates/specs/design.md +276 -0
  281. package/framework/.red64/settings/templates/specs/init.json +24 -0
  282. package/framework/.red64/settings/templates/specs/requirements-init.md +9 -0
  283. package/framework/.red64/settings/templates/specs/requirements.md +26 -0
  284. package/framework/.red64/settings/templates/specs/research.md +61 -0
  285. package/framework/.red64/settings/templates/specs/tasks.md +21 -0
  286. package/framework/.red64/settings/templates/steering/product.md +18 -0
  287. package/framework/.red64/settings/templates/steering/structure.md +41 -0
  288. package/framework/.red64/settings/templates/steering/tech.md +45 -0
  289. package/framework/.red64/settings/templates/steering-custom/api-standards.md +69 -0
  290. package/framework/.red64/settings/templates/steering-custom/authentication.md +67 -0
  291. package/framework/.red64/settings/templates/steering-custom/database.md +46 -0
  292. package/framework/.red64/settings/templates/steering-custom/deployment.md +54 -0
  293. package/framework/.red64/settings/templates/steering-custom/error-handling.md +59 -0
  294. package/framework/.red64/settings/templates/steering-custom/security.md +55 -0
  295. package/framework/.red64/settings/templates/steering-custom/testing.md +47 -0
  296. package/framework/agents/claude/.claude/agents/red64/spec-design.md +174 -0
  297. package/framework/agents/claude/.claude/agents/red64/spec-impl.md +120 -0
  298. package/framework/agents/claude/.claude/agents/red64/spec-requirements.md +102 -0
  299. package/framework/agents/claude/.claude/agents/red64/spec-tasks.md +141 -0
  300. package/framework/agents/claude/.claude/agents/red64/steering-custom.md +147 -0
  301. package/framework/agents/claude/.claude/agents/red64/steering.md +163 -0
  302. package/framework/agents/claude/.claude/agents/red64/validate-design.md +98 -0
  303. package/framework/agents/claude/.claude/agents/red64/validate-gap.md +99 -0
  304. package/framework/agents/claude/.claude/agents/red64/validate-impl.md +146 -0
  305. package/framework/agents/claude/.claude/commands/red64/spec-design.md +64 -0
  306. package/framework/agents/claude/.claude/commands/red64/spec-impl.md +68 -0
  307. package/framework/agents/claude/.claude/commands/red64/spec-init.md +65 -0
  308. package/framework/agents/claude/.claude/commands/red64/spec-quick.md +360 -0
  309. package/framework/agents/claude/.claude/commands/red64/spec-requirements.md +62 -0
  310. package/framework/agents/claude/.claude/commands/red64/spec-status.md +87 -0
  311. package/framework/agents/claude/.claude/commands/red64/spec-tasks.md +75 -0
  312. package/framework/agents/claude/.claude/commands/red64/steering-custom.md +59 -0
  313. package/framework/agents/claude/.claude/commands/red64/steering.md +62 -0
  314. package/framework/agents/claude/.claude/commands/red64/validate-design.md +59 -0
  315. package/framework/agents/claude/.claude/commands/red64/validate-gap.md +53 -0
  316. package/framework/agents/claude/.claude/commands/red64/validate-impl.md +68 -0
  317. package/framework/agents/claude/docs/CLAUDE.md +45 -0
  318. package/framework/agents/codex/.codex/agents/red64/spec-design.md +174 -0
  319. package/framework/agents/codex/.codex/agents/red64/spec-impl.md +120 -0
  320. package/framework/agents/codex/.codex/agents/red64/spec-requirements.md +102 -0
  321. package/framework/agents/codex/.codex/agents/red64/spec-tasks.md +141 -0
  322. package/framework/agents/codex/.codex/agents/red64/steering-custom.md +147 -0
  323. package/framework/agents/codex/.codex/agents/red64/steering.md +163 -0
  324. package/framework/agents/codex/.codex/agents/red64/validate-design.md +98 -0
  325. package/framework/agents/codex/.codex/agents/red64/validate-gap.md +99 -0
  326. package/framework/agents/codex/.codex/agents/red64/validate-impl.md +146 -0
  327. package/framework/agents/codex/.codex/commands/red64/spec-design.md +64 -0
  328. package/framework/agents/codex/.codex/commands/red64/spec-impl.md +68 -0
  329. package/framework/agents/codex/.codex/commands/red64/spec-init.md +65 -0
  330. package/framework/agents/codex/.codex/commands/red64/spec-quick.md +360 -0
  331. package/framework/agents/codex/.codex/commands/red64/spec-requirements.md +62 -0
  332. package/framework/agents/codex/.codex/commands/red64/spec-status.md +87 -0
  333. package/framework/agents/codex/.codex/commands/red64/spec-tasks.md +75 -0
  334. package/framework/agents/codex/.codex/commands/red64/steering-custom.md +59 -0
  335. package/framework/agents/codex/.codex/commands/red64/steering.md +62 -0
  336. package/framework/agents/codex/.codex/commands/red64/validate-design.md +59 -0
  337. package/framework/agents/codex/.codex/commands/red64/validate-gap.md +53 -0
  338. package/framework/agents/codex/.codex/commands/red64/validate-impl.md +68 -0
  339. package/framework/agents/codex/docs/AGENTS.md +68 -0
  340. package/framework/agents/gemini/commands.toml +607 -0
  341. package/framework/agents/gemini/docs/GEMINI.md +45 -0
  342. package/framework/stacks/generic/product.md +27 -0
  343. package/framework/stacks/generic/structure.md +46 -0
  344. package/framework/stacks/generic/tech.md +47 -0
  345. package/framework/stacks/node/product.md +27 -0
  346. package/framework/stacks/node/structure.md +82 -0
  347. package/framework/stacks/node/tech.md +63 -0
  348. package/framework/stacks/python/product.md +27 -0
  349. package/framework/stacks/python/structure.md +78 -0
  350. package/framework/stacks/python/tech.md +64 -0
  351. package/framework/stacks/react/product.md +27 -0
  352. package/framework/stacks/react/structure.md +76 -0
  353. package/framework/stacks/react/tech.md +65 -0
  354. package/package.json +47 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Worktree Service
3
+ * Task 1.2: Build worktree service for git worktree operations
4
+ * Requirements: 1.3, 1.4
5
+ */
6
+ import { spawn } from 'node:child_process';
7
+ import { join, dirname, basename } from 'node:path';
8
+ /**
9
+ * Execute git command and return result
10
+ */
11
+ function execGit(args, cwd) {
12
+ return new Promise((resolve) => {
13
+ const process = spawn('git', args, {
14
+ cwd,
15
+ stdio: ['pipe', 'pipe', 'pipe']
16
+ });
17
+ let stdout = '';
18
+ let stderr = '';
19
+ process.stdout?.on('data', (data) => {
20
+ stdout += data.toString();
21
+ });
22
+ process.stderr?.on('data', (data) => {
23
+ stderr += data.toString();
24
+ });
25
+ process.on('close', (code) => {
26
+ resolve({ stdout, stderr, exitCode: code ?? 0 });
27
+ });
28
+ process.on('error', (error) => {
29
+ resolve({
30
+ stdout,
31
+ stderr: stderr || `Git error: ${error.message}`,
32
+ exitCode: -1
33
+ });
34
+ });
35
+ });
36
+ }
37
+ /**
38
+ * Parse porcelain output from git worktree list
39
+ */
40
+ function parseWorktreeList(output) {
41
+ const worktrees = [];
42
+ const lines = output.trim().split('\n');
43
+ let currentPath = '';
44
+ let currentBranch = '';
45
+ for (const line of lines) {
46
+ if (line.startsWith('worktree ')) {
47
+ // If we have a previous worktree, push it
48
+ if (currentPath) {
49
+ worktrees.push({
50
+ path: currentPath,
51
+ branch: currentBranch,
52
+ exists: true
53
+ });
54
+ }
55
+ currentPath = line.substring(9); // Remove 'worktree '
56
+ currentBranch = '';
57
+ }
58
+ else if (line.startsWith('branch refs/heads/')) {
59
+ currentBranch = line.substring(18); // Remove 'branch refs/heads/'
60
+ }
61
+ else if (line === 'detached') {
62
+ currentBranch = '';
63
+ }
64
+ }
65
+ // Push last worktree
66
+ if (currentPath) {
67
+ worktrees.push({
68
+ path: currentPath,
69
+ branch: currentBranch,
70
+ exists: true
71
+ });
72
+ }
73
+ return worktrees;
74
+ }
75
+ /**
76
+ * Sanitize feature name for use in git branch names and paths
77
+ * - Replace spaces with hyphens
78
+ * - Remove invalid characters
79
+ * - Convert to lowercase
80
+ */
81
+ export function sanitizeFeatureName(feature) {
82
+ return feature
83
+ .toLowerCase()
84
+ .replace(/\s+/g, '-') // Replace spaces with hyphens
85
+ .replace(/[^a-z0-9\-_]/g, '') // Remove invalid characters
86
+ .replace(/-+/g, '-') // Collapse multiple hyphens
87
+ .replace(/^-|-$/g, ''); // Trim leading/trailing hyphens
88
+ }
89
+ /**
90
+ * Get the worktrees root directory (sibling to repo)
91
+ * Following GitLens/VSCode convention: ../repo-name.worktrees/
92
+ */
93
+ export function getWorktreesRoot(repoPath) {
94
+ const repoName = basename(repoPath);
95
+ const parentDir = dirname(repoPath);
96
+ return join(parentDir, `${repoName}.worktrees`);
97
+ }
98
+ /**
99
+ * Get worktree path for a feature
100
+ * Places worktrees outside the repo: ../repo-name.worktrees/feature-name
101
+ */
102
+ function getWorktreePath(repoPath, feature) {
103
+ return join(getWorktreesRoot(repoPath), sanitizeFeatureName(feature));
104
+ }
105
+ /**
106
+ * Get branch name for a feature
107
+ */
108
+ function getBranchName(feature) {
109
+ return `feature/${sanitizeFeatureName(feature)}`;
110
+ }
111
+ /**
112
+ * Create worktree service
113
+ * Requirements: 1.3, 1.4 - Factory function for git worktree operations
114
+ */
115
+ export function createWorktreeService() {
116
+ return {
117
+ /**
118
+ * Check if a worktree exists for a given feature
119
+ * Requirements: 1.3 - Check for existing worktree
120
+ */
121
+ async check(repoPath, feature) {
122
+ const result = await execGit(['worktree', 'list', '--porcelain'], repoPath);
123
+ if (result.exitCode !== 0) {
124
+ return {
125
+ path: '',
126
+ branch: '',
127
+ exists: false
128
+ };
129
+ }
130
+ const worktrees = parseWorktreeList(result.stdout);
131
+ const expectedPath = getWorktreePath(repoPath, feature);
132
+ const expectedBranch = getBranchName(feature);
133
+ const found = worktrees.find((wt) => wt.path === expectedPath || wt.branch === expectedBranch);
134
+ if (found) {
135
+ return {
136
+ path: found.path,
137
+ branch: found.branch,
138
+ exists: true
139
+ };
140
+ }
141
+ return {
142
+ path: '',
143
+ branch: '',
144
+ exists: false
145
+ };
146
+ },
147
+ /**
148
+ * Create a new worktree for a feature
149
+ * Requirements: 1.4 - Create worktree at ../repo.worktrees/<feature> with branch feature/<feature>
150
+ */
151
+ async create(repoPath, feature) {
152
+ const worktreePath = getWorktreePath(repoPath, feature);
153
+ const branchName = getBranchName(feature);
154
+ const result = await execGit(['worktree', 'add', '-b', branchName, worktreePath], repoPath);
155
+ if (result.exitCode !== 0) {
156
+ return {
157
+ success: false,
158
+ path: undefined,
159
+ error: result.stderr || 'Failed to create worktree'
160
+ };
161
+ }
162
+ return {
163
+ success: true,
164
+ path: worktreePath,
165
+ error: undefined
166
+ };
167
+ },
168
+ /**
169
+ * Remove a worktree
170
+ * Requirements: 1.4 - Worktree cleanup
171
+ */
172
+ async remove(repoPath, feature, force) {
173
+ const worktreePath = getWorktreePath(repoPath, feature);
174
+ const args = force
175
+ ? ['worktree', 'remove', '--force', worktreePath]
176
+ : ['worktree', 'remove', worktreePath];
177
+ const result = await execGit(args, repoPath);
178
+ if (result.exitCode !== 0) {
179
+ return {
180
+ success: false,
181
+ path: undefined,
182
+ error: result.stderr || 'Failed to remove worktree'
183
+ };
184
+ }
185
+ return {
186
+ success: true,
187
+ path: worktreePath,
188
+ error: undefined
189
+ };
190
+ },
191
+ /**
192
+ * List all worktrees
193
+ * Requirements: 1.3 - Parse git worktree list output
194
+ */
195
+ async list(repoPath) {
196
+ const result = await execGit(['worktree', 'list', '--porcelain'], repoPath);
197
+ if (result.exitCode !== 0 || !result.stdout.trim()) {
198
+ return [];
199
+ }
200
+ return parseWorktreeList(result.stdout);
201
+ }
202
+ };
203
+ }
204
+ //# sourceMappingURL=WorktreeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorktreeService.js","sourceRoot":"","sources":["../../src/services/WorktreeService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Services index
3
+ */
4
+ export { createFlowMachine, transition, type FlowMachineService } from './FlowStateMachine.js';
5
+ export { createStateStore, type StateStoreService } from './StateStore.js';
6
+ export { createAgentInvoker, type AgentInvokerService } from './AgentInvoker.js';
7
+ export { createPhaseExecutor, type PhaseExecutorService, type PhaseExecutionResult } from './PhaseExecutor.js';
8
+ export { createFeatureValidator, type FeatureValidatorService, type ValidationResult } from './FeatureValidator.js';
9
+ export { createWorktreeService, sanitizeFeatureName, type WorktreeServiceInterface, type WorktreeInfo, type WorktreeResult } from './WorktreeService.js';
10
+ export { createExtendedFlowMachine, extendedTransition, type ExtendedFlowMachineService } from './ExtendedFlowStateMachine.js';
11
+ export { createCommitService, type CommitServiceInterface, type CommitResult } from './CommitService.js';
12
+ export { createTaskParser, type TaskParserService, type Task } from './TaskParser.js';
13
+ export { createTaskRunner, type TaskRunnerService, type TaskExecutionOptions, type TaskExecutionResult, type CheckpointDecision } from './TaskRunner.js';
14
+ export { createPRCreatorService, type PRCreatorServiceInterface, type PRCreateOptions, type PRCreateResult, type PRMergeOptions, type PRMergeResult } from './PRCreatorService.js';
15
+ export { createGitStatusChecker, type GitStatusCheckerService, type GitStatus } from './GitStatusChecker.js';
16
+ export { createPRStatusFetcher, type PRStatusFetcherService, type PRStatus, type PRCloseResult } from './PRStatusFetcher.js';
17
+ export { createBranchService, type BranchServiceInterface, type BranchDeleteResult } from './BranchService.js';
18
+ export { createCacheService, type CacheService, type CacheEntry, type CacheServiceConfig } from './CacheService.js';
19
+ export { createTemplateService, type TemplateService, type StructureResult, type StackTemplateOptions, type ExtractOptions } from './TemplateService.js';
20
+ export { createConfigService, type ConfigService, type InitConfig, type ProjectType } from './ConfigService.js';
21
+ export { createGitHubService, GitHubFetchError, type GitHubService, type GitHubServiceConfig, type FetchOptions, type FetchProgress, type FetchResult, type GitHubErrorCode } from './GitHubService.js';
22
+ export { createSpecInitService, type SpecInitService, type SpecInitResult } from './SpecInitService.js';
23
+ export { createClaudeErrorDetector, type ClaudeErrorDetectorService, type ClaudeError, type ClaudeErrorCode } from './ClaudeErrorDetector.js';
24
+ export { createClaudeHealthCheck, type ClaudeHealthCheckService, type HealthCheckResult, type HealthCheckOptions } from './ClaudeHealthCheck.js';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Services index
3
+ */
4
+ export { createFlowMachine, transition } from './FlowStateMachine.js';
5
+ export { createStateStore } from './StateStore.js';
6
+ export { createAgentInvoker } from './AgentInvoker.js';
7
+ export { createPhaseExecutor } from './PhaseExecutor.js';
8
+ export { createFeatureValidator } from './FeatureValidator.js';
9
+ export { createWorktreeService, sanitizeFeatureName } from './WorktreeService.js';
10
+ export { createExtendedFlowMachine, extendedTransition } from './ExtendedFlowStateMachine.js';
11
+ export { createCommitService } from './CommitService.js';
12
+ export { createTaskParser } from './TaskParser.js';
13
+ export { createTaskRunner } from './TaskRunner.js';
14
+ export { createPRCreatorService } from './PRCreatorService.js';
15
+ export { createGitStatusChecker } from './GitStatusChecker.js';
16
+ export { createPRStatusFetcher } from './PRStatusFetcher.js';
17
+ export { createBranchService } from './BranchService.js';
18
+ export { createCacheService } from './CacheService.js';
19
+ export { createTemplateService } from './TemplateService.js';
20
+ export { createConfigService } from './ConfigService.js';
21
+ export { createGitHubService, GitHubFetchError } from './GitHubService.js';
22
+ export { createSpecInitService } from './SpecInitService.js';
23
+ export { createClaudeErrorDetector } from './ClaudeErrorDetector.js';
24
+ export { createClaudeHealthCheck } from './ClaudeHealthCheck.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EAGvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAKjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EAGvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EAItB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EAIpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAOjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EAIxB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Extended Flow Types
3
+ * Task 2.1: Define extended flow phase types and events
4
+ * Requirements: 2.1, 2.5
5
+ */
6
+ /**
7
+ * Workflow mode - greenfield for new projects, brownfield for existing
8
+ * Requirements: 2.5 - Support both greenfield and brownfield phase sequences
9
+ */
10
+ export type WorkflowMode = 'greenfield' | 'brownfield';
11
+ /**
12
+ * Extended FlowPhase discriminated union
13
+ * Requirements: 2.1 - Define workflow phases including brownfield-specific phases
14
+ */
15
+ export type ExtendedFlowPhase = {
16
+ type: 'idle';
17
+ } | {
18
+ type: 'initializing';
19
+ feature: string;
20
+ description: string;
21
+ } | {
22
+ type: 'requirements-generating';
23
+ feature: string;
24
+ } | {
25
+ type: 'requirements-approval';
26
+ feature: string;
27
+ } | {
28
+ type: 'gap-analysis';
29
+ feature: string;
30
+ } | {
31
+ type: 'gap-review';
32
+ feature: string;
33
+ } | {
34
+ type: 'design-generating';
35
+ feature: string;
36
+ } | {
37
+ type: 'design-approval';
38
+ feature: string;
39
+ } | {
40
+ type: 'design-validation';
41
+ feature: string;
42
+ } | {
43
+ type: 'design-validation-review';
44
+ feature: string;
45
+ } | {
46
+ type: 'tasks-generating';
47
+ feature: string;
48
+ } | {
49
+ type: 'tasks-approval';
50
+ feature: string;
51
+ } | {
52
+ type: 'implementing';
53
+ feature: string;
54
+ currentTask: number;
55
+ totalTasks: number;
56
+ } | {
57
+ type: 'paused';
58
+ feature: string;
59
+ pausedAt: number;
60
+ totalTasks: number;
61
+ } | {
62
+ type: 'validation';
63
+ feature: string;
64
+ } | {
65
+ type: 'pr';
66
+ feature: string;
67
+ } | {
68
+ type: 'merge-decision';
69
+ feature: string;
70
+ prUrl: string;
71
+ } | {
72
+ type: 'complete';
73
+ feature: string;
74
+ } | {
75
+ type: 'aborted';
76
+ feature: string;
77
+ reason: string;
78
+ } | {
79
+ type: 'error';
80
+ feature: string;
81
+ error: string;
82
+ };
83
+ /**
84
+ * Extended FlowEvent discriminated union
85
+ * Requirements: 2.1 - Define events including task/PR events
86
+ */
87
+ export type ExtendedFlowEvent = {
88
+ type: 'START';
89
+ feature: string;
90
+ description: string;
91
+ mode: WorkflowMode;
92
+ } | {
93
+ type: 'RESUME';
94
+ feature: string;
95
+ } | {
96
+ type: 'PHASE_COMPLETE';
97
+ } | {
98
+ type: 'PHASE_COMPLETE_WITH_DATA';
99
+ data: Record<string, unknown>;
100
+ } | {
101
+ type: 'APPROVE';
102
+ } | {
103
+ type: 'REJECT';
104
+ } | {
105
+ type: 'PAUSE';
106
+ } | {
107
+ type: 'ABORT';
108
+ reason: string;
109
+ } | {
110
+ type: 'ERROR';
111
+ error: string;
112
+ } | {
113
+ type: 'TASK_COMPLETE';
114
+ taskIndex: number;
115
+ } | {
116
+ type: 'PR_CREATED';
117
+ prUrl: string;
118
+ } | {
119
+ type: 'MERGE';
120
+ } | {
121
+ type: 'SKIP_MERGE';
122
+ };
123
+ /**
124
+ * Greenfield phase sequence constant
125
+ * Requirements: 2.5 - Define valid phase order for greenfield mode
126
+ */
127
+ export declare const GREENFIELD_PHASES: readonly ExtendedFlowPhase['type'][];
128
+ /**
129
+ * Brownfield phase sequence constant
130
+ * Requirements: 2.5 - Define valid phase order for brownfield mode
131
+ */
132
+ export declare const BROWNFIELD_PHASES: readonly ExtendedFlowPhase['type'][];
133
+ /**
134
+ * Check if a phase type is an approval phase
135
+ */
136
+ export declare function isApprovalPhase(phaseType: ExtendedFlowPhase['type']): boolean;
137
+ /**
138
+ * Check if a phase type is a generating phase
139
+ */
140
+ export declare function isGeneratingPhase(phaseType: ExtendedFlowPhase['type']): boolean;
141
+ /**
142
+ * Check if a phase type is a terminal phase
143
+ */
144
+ export declare function isTerminalPhase(phaseType: ExtendedFlowPhase['type']): boolean;
145
+ /**
146
+ * Get the phase sequence for a workflow mode
147
+ */
148
+ export declare function getPhaseSequence(mode: WorkflowMode): readonly ExtendedFlowPhase['type'][];
149
+ /**
150
+ * Extended FlowState interface with workflow mode and PR info
151
+ */
152
+ export interface ExtendedFlowState {
153
+ readonly feature: string;
154
+ readonly phase: ExtendedFlowPhase;
155
+ readonly createdAt: string;
156
+ readonly updatedAt: string;
157
+ readonly history: readonly ExtendedFlowPhase[];
158
+ readonly metadata: {
159
+ readonly description: string;
160
+ readonly mode: WorkflowMode;
161
+ readonly tier?: string;
162
+ readonly worktreePath?: string;
163
+ readonly prUrl?: string;
164
+ readonly prNumber?: number;
165
+ };
166
+ }
167
+ //# sourceMappingURL=extended-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-flow.d.ts","sourceRoot":"","sources":["../../src/types/extended-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Extended Flow Types
3
+ * Task 2.1: Define extended flow phase types and events
4
+ * Requirements: 2.1, 2.5
5
+ */
6
+ /**
7
+ * Greenfield phase sequence constant
8
+ * Requirements: 2.5 - Define valid phase order for greenfield mode
9
+ */
10
+ export const GREENFIELD_PHASES = [
11
+ 'initializing',
12
+ 'requirements-generating',
13
+ 'requirements-approval',
14
+ 'design-generating',
15
+ 'design-approval',
16
+ 'tasks-generating',
17
+ 'tasks-approval',
18
+ 'implementing',
19
+ 'validation',
20
+ 'pr',
21
+ 'merge-decision',
22
+ 'complete'
23
+ ];
24
+ /**
25
+ * Brownfield phase sequence constant
26
+ * Requirements: 2.5 - Define valid phase order for brownfield mode
27
+ */
28
+ export const BROWNFIELD_PHASES = [
29
+ 'initializing',
30
+ 'requirements-generating',
31
+ 'requirements-approval',
32
+ 'gap-analysis',
33
+ 'gap-review',
34
+ 'design-generating',
35
+ 'design-approval',
36
+ 'design-validation',
37
+ 'design-validation-review',
38
+ 'tasks-generating',
39
+ 'tasks-approval',
40
+ 'implementing',
41
+ 'validation',
42
+ 'pr',
43
+ 'merge-decision',
44
+ 'complete'
45
+ ];
46
+ /**
47
+ * Approval phases - require user input to proceed
48
+ */
49
+ const APPROVAL_PHASES = new Set([
50
+ 'requirements-approval',
51
+ 'design-approval',
52
+ 'tasks-approval',
53
+ 'gap-review',
54
+ 'design-validation-review',
55
+ 'merge-decision'
56
+ ]);
57
+ /**
58
+ * Generating/executing phases - agent or automation is working
59
+ */
60
+ const GENERATING_PHASES = new Set([
61
+ 'initializing',
62
+ 'requirements-generating',
63
+ 'design-generating',
64
+ 'tasks-generating',
65
+ 'gap-analysis',
66
+ 'design-validation',
67
+ 'implementing',
68
+ 'validation',
69
+ 'pr'
70
+ ]);
71
+ /**
72
+ * Terminal phases - flow has ended
73
+ */
74
+ const TERMINAL_PHASES = new Set([
75
+ 'complete',
76
+ 'aborted',
77
+ 'error'
78
+ ]);
79
+ /**
80
+ * Check if a phase type is an approval phase
81
+ */
82
+ export function isApprovalPhase(phaseType) {
83
+ return APPROVAL_PHASES.has(phaseType);
84
+ }
85
+ /**
86
+ * Check if a phase type is a generating phase
87
+ */
88
+ export function isGeneratingPhase(phaseType) {
89
+ return GENERATING_PHASES.has(phaseType);
90
+ }
91
+ /**
92
+ * Check if a phase type is a terminal phase
93
+ */
94
+ export function isTerminalPhase(phaseType) {
95
+ return TERMINAL_PHASES.has(phaseType);
96
+ }
97
+ /**
98
+ * Get the phase sequence for a workflow mode
99
+ */
100
+ export function getPhaseSequence(mode) {
101
+ return mode === 'brownfield' ? BROWNFIELD_PHASES : GREENFIELD_PHASES;
102
+ }
103
+ //# sourceMappingURL=extended-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-flow.js","sourceRoot":"","sources":["../../src/types/extended-flow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8DH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyC;IACrE,cAAc;IACd,yBAAyB;IACzB,uBAAuB;IACvB,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,IAAI;IACJ,gBAAgB;IAChB,UAAU;CACF,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyC;IACrE,cAAc;IACd,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,0BAA0B;IAC1B,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,IAAI;IACJ,gBAAgB;IAChB,UAAU;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,eAAe,GAA2C,IAAI,GAAG,CAAC;IACtE,uBAAuB;IACvB,iBAAiB;IACjB,gBAAgB;IAChB,YAAY;IACZ,0BAA0B;IAC1B,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,iBAAiB,GAA2C,IAAI,GAAG,CAAC;IACxE,cAAc;IACd,yBAAyB;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,IAAI;CACL,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,eAAe,GAA2C,IAAI,GAAG,CAAC;IACtE,UAAU;IACV,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoC;IAClE,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoC;IACpE,OAAO,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoC;IAClE,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB;IAElB,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACvE,CAAC"}