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
package/README.md ADDED
@@ -0,0 +1,454 @@
1
+ # Red64 CLI
2
+
3
+ **Deterministic spec-driven development orchestrator for AI-assisted coding.**
4
+
5
+ Red64 automates the entire feature development lifecycle—from requirements to implementation—using a structured, phase-gated workflow that ensures quality and traceability.
6
+
7
+ ![Red64 Flow Demo](docs/assets/demo.gif)
8
+ <!-- TODO: Add screencast -->
9
+
10
+ ---
11
+
12
+ ## Quick Start
13
+
14
+ ### 1. Install
15
+
16
+ ```bash
17
+ # Clone and install
18
+ git clone https://github.com/your-org/red64-cli.git
19
+ cd red64-cli
20
+ npm install
21
+ npm link
22
+ ```
23
+
24
+ ### 2. Initialize your project
25
+
26
+ ```bash
27
+ cd /path/to/your/project
28
+ red64 init
29
+ ```
30
+
31
+ ### 3. Start a feature
32
+
33
+ ```bash
34
+ red64 start "user-authentication" "Add login and registration with JWT tokens"
35
+ ```
36
+
37
+ Red64 will:
38
+ 1. Create an isolated git worktree
39
+ 2. Generate requirements (EARS format)
40
+ 3. Create technical design
41
+ 4. Break down into implementation tasks
42
+ 5. Execute each task with commits
43
+ 6. Complete with a ready-to-review branch
44
+
45
+ ---
46
+
47
+ ## What is Red64?
48
+
49
+ Red64 is a **spec-driven development orchestrator** that brings structure and determinism to AI-assisted coding. Instead of ad-hoc prompting, Red64 enforces a rigorous workflow:
50
+
51
+ ```
52
+ Requirements → Design → Tasks → Implementation
53
+ ↓ ↓ ↓ ↓
54
+ (review) (review) (review) (commits)
55
+ ```
56
+
57
+ ### Key Features
58
+
59
+ | Feature | Description |
60
+ |---------|-------------|
61
+ | **Spec-Driven** | Every feature starts with formal requirements and design |
62
+ | **Phase Gates** | Human review required between phases (or auto-approve with `-y`) |
63
+ | **Git Isolation** | Each feature runs in its own worktree and branch (sibling directory) |
64
+ | **Atomic Commits** | One commit per task for clean history |
65
+ | **Sandboxed Execution** | Optional Docker isolation for safe agent execution |
66
+ | **Resumable Flows** | `start` auto-detects in-progress flows and offers resume |
67
+ | **API Health Checks** | Validates Claude API before starting (credits, auth, network) |
68
+
69
+ ### Goals
70
+
71
+ 1. **Predictability**: Same inputs produce consistent outputs through structured phases
72
+ 2. **Traceability**: Every code change links back to requirements and design decisions
73
+ 3. **Quality**: Mandatory review gates prevent AI hallucinations from reaching production
74
+ 4. **Isolation**: Git worktrees prevent work-in-progress from polluting main branch
75
+ 5. **Efficiency**: Automate the tedious parts while keeping humans in control
76
+
77
+ ---
78
+
79
+ ## Installation
80
+
81
+ ### Requirements
82
+
83
+ - Node.js >= 20.0.0
84
+ - Git
85
+ - Claude CLI (`npm install -g @anthropic-ai/claude-cli`)
86
+ - Docker (optional, for sandboxed execution)
87
+
88
+ ### From Source
89
+
90
+ ```bash
91
+ git clone https://github.com/your-org/red64-cli.git
92
+ cd red64-cli
93
+ npm install
94
+ npm run build
95
+ npm link
96
+ ```
97
+
98
+ ### Verify Installation
99
+
100
+ ```bash
101
+ red64 --version
102
+ red64 help
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Commands
108
+
109
+ ### `red64 init`
110
+
111
+ Initialize Red64 in your project. Creates `.red64/` directory with steering documents.
112
+
113
+ ```bash
114
+ red64 init
115
+ red64 init --repo owner/repo --stack nextjs
116
+ red64 init --agent gemini # Use Gemini as coding agent
117
+ ```
118
+
119
+ **Flags:**
120
+ - `-a, --agent <name>` — Coding agent: `claude`, `gemini`, `codex` (default: `claude`)
121
+
122
+ ![red64 init](docs/assets/init.png)
123
+ <!-- TODO: Add screenshot -->
124
+
125
+ ### `red64 start <feature> <description>`
126
+
127
+ Start a new feature development flow, or resume an existing one.
128
+
129
+ ```bash
130
+ red64 start "shopping-cart" "Add shopping cart with add/remove items and checkout"
131
+ ```
132
+
133
+ **Smart Resume Detection:**
134
+
135
+ When you run `start` for a feature that's already in progress (at any phase: requirements, design, tasks, or implementation), Red64 will:
136
+
137
+ 1. **Detect uncommitted changes** — If the worktree has uncommitted changes, prompts:
138
+ - Commit changes (WIP commit)
139
+ - Discard changes
140
+ - Cancel
141
+
142
+ 2. **Offer resume or restart** — If an in-progress flow is found, prompts:
143
+ - Resume from current phase
144
+ - Start fresh (discard previous progress)
145
+ - Cancel
146
+
147
+ This means you can always use `red64 start <feature>` to continue working—no separate resume command needed.
148
+
149
+ **Flags:**
150
+ - `-m, --model <name>` — Model to use (e.g., `claude-3-5-haiku-latest` for dev, `claude-sonnet-4-20250514` for prod)
151
+ - `-y, --yes` — Auto-approve all phases (skip review gates)
152
+ - `-b, --brownfield` — Enable gap analysis for existing codebases
153
+ - `-g, --greenfield` — New feature mode (default)
154
+ - `-s, --skip-permissions` — Pass to Claude CLI
155
+ - `-t, --tier <name>` — Use specific Claude config tier
156
+ - `--sandbox` — Run in Docker isolation
157
+ - `--verbose` — Show detailed execution logs
158
+
159
+ ![red64 start](docs/assets/start.png)
160
+ <!-- TODO: Add screenshot -->
161
+
162
+ ### `red64 status [feature]`
163
+
164
+ Show the status of a flow.
165
+
166
+ ```bash
167
+ red64 status shopping-cart
168
+ red64 status # Show all flows
169
+ ```
170
+
171
+ ![red64 status](docs/assets/status.png)
172
+ <!-- TODO: Add screenshot -->
173
+
174
+ ### `red64 list`
175
+
176
+ List all active flows in the repository.
177
+
178
+ ```bash
179
+ red64 list
180
+ ```
181
+
182
+ ### `red64 abort <feature>`
183
+
184
+ Abort a flow and clean up resources (worktree, branch).
185
+
186
+ ```bash
187
+ red64 abort shopping-cart
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Workflow Phases
193
+
194
+ ### 1. Initialization
195
+
196
+ Creates spec directory at `.red64/specs/<feature>/` with `spec.json`.
197
+
198
+ ### 2. Requirements Generation
199
+
200
+ Generates `requirements.md` using EARS (Easy Approach to Requirements Syntax) format:
201
+ - Ubiquitous requirements
202
+ - Event-driven requirements
203
+ - State-driven requirements
204
+ - Optional features
205
+ - Unwanted behaviors
206
+
207
+ ### 3. Gap Analysis (Brownfield only)
208
+
209
+ For existing codebases, analyzes what already exists and what needs to be built.
210
+
211
+ ### 4. Design Generation
212
+
213
+ Creates `design.md` with:
214
+ - Architecture decisions
215
+ - Component design
216
+ - Data models
217
+ - API contracts
218
+ - File structure
219
+
220
+ ### 5. Task Generation
221
+
222
+ Breaks down the design into atomic `tasks.md`:
223
+ - Each task is independently implementable
224
+ - Tasks are ordered by dependency
225
+ - Each task produces a commit
226
+
227
+ ### 6. Implementation
228
+
229
+ Executes tasks sequentially:
230
+ - Runs `/red64:spec-impl <feature> <task-id>`
231
+ - Commits after each task
232
+ - Checkpoints every 3 tasks (optional pause)
233
+
234
+ ### 7. Completion
235
+
236
+ Flow completes with:
237
+ - All tasks implemented
238
+ - Clean commit history
239
+ - Feature branch ready for PR
240
+
241
+ ---
242
+
243
+ ## Comparison with Other Tools
244
+
245
+ | Feature | Red64 | Cursor/Copilot | Aider | Claude Code |
246
+ |---------|-------|----------------|-------|-------------|
247
+ | **Spec-driven workflow** | Yes | No | No | No |
248
+ | **Phase gates** | Yes | No | No | No |
249
+ | **Git worktree isolation** | Yes | No | No | No |
250
+ | **Atomic commits per task** | Yes | No | Yes | No |
251
+ | **Requirements generation** | Yes | No | No | No |
252
+ | **Design documents** | Yes | No | No | No |
253
+ | **Resumable flows** | Yes | No | Partial | No |
254
+ | **Docker sandboxing** | Yes | No | No | Yes |
255
+ | **IDE integration** | No | Yes | Partial | Yes |
256
+ | **Real-time editing** | No | Yes | Yes | Yes |
257
+
258
+ ### When to use Red64
259
+
260
+ **Use Red64 when:**
261
+ - Building complete features (not quick fixes)
262
+ - You need traceable requirements and design
263
+ - Working on complex, multi-file changes
264
+ - You want clean git history with atomic commits
265
+ - You need to pause and resume work across sessions
266
+
267
+ **Use other tools when:**
268
+ - Making quick, single-file edits
269
+ - Exploring or prototyping ideas
270
+ - You need real-time IDE integration
271
+ - Working on bug fixes without spec requirements
272
+
273
+ ---
274
+
275
+ ## Limitations
276
+
277
+ ### Current Limitations
278
+
279
+ 1. **No IDE integration** — Red64 is CLI-only; no VS Code or JetBrains plugins yet
280
+ 2. **Sequential execution** — Tasks run one at a time, no parallelization
281
+ 3. **No incremental changes** — Regenerating a phase replaces previous output entirely
282
+ 4. **English-centric** — Prompts and templates are English-only (configurable per spec)
283
+
284
+ ### Known Issues
285
+
286
+ - Large codebases may hit context limits during design phase
287
+ - Docker sandbox requires pre-built image (`docker build -f Dockerfile.sandbox -t red64-sandbox:latest .`)
288
+ - Some UI frameworks may not render correctly in all terminals
289
+
290
+ ### Roadmap
291
+
292
+ - [ ] VS Code extension
293
+ - [ ] Parallel task execution
294
+ - [ ] Incremental phase editing
295
+ - [ ] Web dashboard for flow monitoring
296
+
297
+ ---
298
+
299
+ ## Project Structure
300
+
301
+ ```
302
+ .red64/
303
+ ├── specs/ # Feature specifications
304
+ │ └── <feature>/
305
+ │ ├── spec.json # Spec metadata
306
+ │ ├── requirements.md # EARS requirements
307
+ │ ├── design.md # Technical design
308
+ │ └── tasks.md # Implementation tasks
309
+ ├── flows/ # Flow state and logs
310
+ │ └── <feature>/
311
+ │ ├── state.json # Current flow state
312
+ │ └── flow.log # Execution log
313
+ └── steering/ # Project-wide guidance
314
+ ├── product.md # Product context
315
+ ├── tech.md # Technical standards
316
+ └── structure.md # Codebase structure
317
+ ```
318
+
319
+ ### Git Worktree Layout
320
+
321
+ Red64 creates git worktrees in a **sibling directory** following the [GitLens/VSCode convention](https://gist.github.com/ChristopherA/4643b2f5e024578606b9cd5d2e6815cc). This keeps the main repository clean and avoids nested git structures.
322
+
323
+ ```
324
+ ~/projects/
325
+ ├── my-project/ # Main repository (unchanged)
326
+ │ ├── .git/
327
+ │ ├── .red64/
328
+ │ ├── src/
329
+ │ └── package.json
330
+ └── my-project.worktrees/ # Worktrees directory (sibling)
331
+ ├── user-authentication/ # feature/user-authentication branch
332
+ │ ├── .red64/
333
+ │ ├── src/
334
+ │ └── package.json
335
+ └── shopping-cart/ # feature/shopping-cart branch
336
+ ├── .red64/
337
+ ├── src/
338
+ └── package.json
339
+ ```
340
+
341
+ **Benefits of sibling worktrees:**
342
+ - Main repository stays clean (no `.gitignore` needed for worktrees)
343
+ - No nested `.git` references inside the working tree
344
+ - Better IDE and tool compatibility
345
+ - Clear separation between main work and feature isolation
346
+ - Easy to see all active features at a glance
347
+
348
+ ---
349
+
350
+ ## Configuration
351
+
352
+ ### Steering Documents
353
+
354
+ Customize AI behavior by editing `.red64/steering/`:
355
+
356
+ - **product.md** — Product vision, user personas, business rules
357
+ - **tech.md** — Tech stack, coding standards, patterns to use/avoid
358
+ - **structure.md** — Codebase organization, file naming conventions
359
+
360
+ ### Coding Agents
361
+
362
+ Red64 supports multiple coding agents. Set the agent at init time:
363
+
364
+ ```bash
365
+ red64 init --agent claude # Default - Anthropic Claude
366
+ red64 init --agent gemini # Google Gemini
367
+ red64 init --agent codex # OpenAI Codex
368
+ ```
369
+
370
+ The agent is stored in `.red64/config.json` and used for all subsequent commands.
371
+
372
+ ### Model Selection
373
+
374
+ Override the model per command for cost optimization:
375
+
376
+ ```bash
377
+ # Development (cheap, fast models)
378
+ red64 start "feature" "desc" --model claude-3-5-haiku-latest
379
+ red64 start "feature" "desc" --model gemini-2.0-flash
380
+ red64 start "feature" "desc" --model gpt-4o-mini
381
+
382
+ # Production (best quality models)
383
+ red64 start "feature" "desc" --model claude-sonnet-4-20250514
384
+ red64 start "feature" "desc" --model gemini-2.5-pro
385
+ red64 start "feature" "desc" --model o1
386
+ ```
387
+
388
+ | Agent | Cheap (Dev) | Best (Prod) |
389
+ |-------|-------------|-------------|
390
+ | Claude | `claude-3-5-haiku-latest` | `claude-sonnet-4-20250514` |
391
+ | Gemini | `gemini-2.0-flash` | `gemini-2.5-pro` |
392
+ | Codex | `gpt-4o-mini` | `o1` |
393
+
394
+ ### Claude Tiers
395
+
396
+ Use different Claude configurations with `--tier`:
397
+
398
+ ```bash
399
+ red64 start "feature" "desc" --tier pro
400
+ # Uses ~/.claude-pro/ for configuration
401
+ ```
402
+
403
+ ---
404
+
405
+ ## Development
406
+
407
+ ### Run in development mode
408
+
409
+ ```bash
410
+ npm run dev -- start my-feature "Feature description"
411
+ ```
412
+
413
+ ### Run tests
414
+
415
+ ```bash
416
+ npm test
417
+ npm run test:ui
418
+ ```
419
+
420
+ ### Build
421
+
422
+ ```bash
423
+ npm run build
424
+ ```
425
+
426
+ ### Type checking
427
+
428
+ ```bash
429
+ npm run type-check
430
+ ```
431
+
432
+ ---
433
+
434
+ ## Contributing
435
+
436
+ 1. Fork the repository
437
+ 2. Create a feature branch
438
+ 3. Make your changes
439
+ 4. Run tests: `npm test`
440
+ 5. Submit a pull request
441
+
442
+ ---
443
+
444
+ ## License
445
+
446
+ MIT
447
+
448
+ ---
449
+
450
+ ## Acknowledgments
451
+
452
+ - Built by Yacin Bahi, yacin@Red64.io
453
+ - Inspired by spec-driven development and EARS requirements methodology
454
+ - Uses [Ink](https://github.com/vadimdemedes/ink) for terminal UI
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CLI argument parsing for red64
3
+ * Requirements: 3.2, 3.4, 4.7, 5.1-5.5, 8.1, 8.4, 8.5
4
+ */
5
+ import type { CLIConfig } from '../types/index.js';
6
+ /**
7
+ * Parse CLI arguments into CLIConfig
8
+ * This function wraps argument parsing logic for testability
9
+ */
10
+ export declare function parseArgs(argv: readonly string[]): CLIConfig;
11
+ /**
12
+ * Help text for red64 CLI
13
+ * Requirements: 4.7, 8.1, 8.4, 8.5
14
+ */
15
+ export declare const HELP_TEXT: string;
16
+ //# sourceMappingURL=parseArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgs.d.ts","sourceRoot":"","sources":["../../src/cli/parseArgs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,mBAAmB,CAAC;AAatF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CA8G5D;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,QAuBd,CAAC"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * CLI argument parsing for red64
3
+ * Requirements: 3.2, 3.4, 4.7, 5.1-5.5, 8.1, 8.4, 8.5
4
+ */
5
+ const VALID_AGENTS = ['claude', 'gemini', 'codex'];
6
+ const VALID_COMMANDS = [
7
+ 'init',
8
+ 'start',
9
+ 'status',
10
+ 'list',
11
+ 'abort',
12
+ 'help'
13
+ ];
14
+ /**
15
+ * Parse CLI arguments into CLIConfig
16
+ * This function wraps argument parsing logic for testability
17
+ */
18
+ export function parseArgs(argv) {
19
+ const flags = {
20
+ skipPermissions: false,
21
+ brownfield: false,
22
+ greenfield: true, // Default to greenfield mode
23
+ tier: undefined,
24
+ help: false,
25
+ version: false,
26
+ verbose: false,
27
+ yes: false,
28
+ sandbox: false,
29
+ model: undefined,
30
+ // Init-specific flags
31
+ repo: undefined,
32
+ stack: undefined,
33
+ 'skip-guided': undefined,
34
+ 'no-steering': undefined,
35
+ 'no-cache': undefined,
36
+ agent: undefined
37
+ };
38
+ const positionalArgs = [];
39
+ let command = undefined;
40
+ // Parse arguments
41
+ for (let i = 0; i < argv.length; i++) {
42
+ let arg = argv[i];
43
+ let argValue;
44
+ // Handle --flag=value syntax
45
+ if (arg.startsWith('--') && arg.includes('=')) {
46
+ const eqIndex = arg.indexOf('=');
47
+ argValue = arg.slice(eqIndex + 1);
48
+ arg = arg.slice(0, eqIndex);
49
+ }
50
+ if (arg === '--skip-permissions' || arg === '-s') {
51
+ flags.skipPermissions = true;
52
+ }
53
+ else if (arg === '--brownfield' || arg === '-b') {
54
+ flags.brownfield = true;
55
+ flags.greenfield = false;
56
+ }
57
+ else if (arg === '--greenfield' || arg === '-g') {
58
+ flags.greenfield = true;
59
+ flags.brownfield = false;
60
+ }
61
+ else if (arg === '--tier' || arg === '-t') {
62
+ // Use argValue if --tier=value, otherwise next arg
63
+ const value = argValue ?? argv[i + 1];
64
+ if (value && !value.startsWith('-')) {
65
+ flags.tier = value;
66
+ if (!argValue)
67
+ i++; // Only skip if we used next arg
68
+ }
69
+ }
70
+ else if (arg === '--help' || arg === '-h') {
71
+ flags.help = true;
72
+ }
73
+ else if (arg === '--version' || arg === '-v') {
74
+ flags.version = true;
75
+ }
76
+ else if (arg === '--verbose') {
77
+ flags.verbose = true;
78
+ }
79
+ else if (arg === '--yes' || arg === '-y') {
80
+ flags.yes = true;
81
+ }
82
+ else if (arg === '--sandbox') {
83
+ flags.sandbox = true;
84
+ }
85
+ else if (arg === '--model' || arg === '-m') {
86
+ const value = argValue ?? argv[i + 1];
87
+ if (value && !value.startsWith('-')) {
88
+ flags.model = value;
89
+ if (!argValue)
90
+ i++;
91
+ }
92
+ }
93
+ else if (arg === '--repo') {
94
+ const value = argValue ?? argv[i + 1];
95
+ if (value && !value.startsWith('-')) {
96
+ flags.repo = value;
97
+ if (!argValue)
98
+ i++;
99
+ }
100
+ }
101
+ else if (arg === '--stack') {
102
+ const value = argValue ?? argv[i + 1];
103
+ if (value && !value.startsWith('-')) {
104
+ flags.stack = value;
105
+ if (!argValue)
106
+ i++;
107
+ }
108
+ }
109
+ else if (arg === '--skip-guided') {
110
+ flags['skip-guided'] = true;
111
+ }
112
+ else if (arg === '--no-steering') {
113
+ flags['no-steering'] = true;
114
+ }
115
+ else if (arg === '--no-cache') {
116
+ flags['no-cache'] = true;
117
+ }
118
+ else if (arg === '--agent' || arg === '-a') {
119
+ const value = argValue ?? argv[i + 1];
120
+ if (value && !value.startsWith('-') && VALID_AGENTS.includes(value)) {
121
+ flags.agent = value;
122
+ if (!argValue)
123
+ i++;
124
+ }
125
+ }
126
+ else if (!arg.startsWith('-')) {
127
+ positionalArgs.push(arg);
128
+ }
129
+ }
130
+ // First positional argument is the command
131
+ if (positionalArgs.length > 0) {
132
+ const potentialCommand = positionalArgs[0];
133
+ if (VALID_COMMANDS.includes(potentialCommand)) {
134
+ command = potentialCommand;
135
+ positionalArgs.shift(); // Remove command from args
136
+ }
137
+ }
138
+ return {
139
+ command,
140
+ args: positionalArgs,
141
+ flags
142
+ };
143
+ }
144
+ /**
145
+ * Help text for red64 CLI
146
+ * Requirements: 4.7, 8.1, 8.4, 8.5
147
+ */
148
+ export const HELP_TEXT = `
149
+ Red64 Flow Orchestrator
150
+
151
+ Usage:
152
+ red64 init Bootstrap project for red64 flows
153
+ red64 start <feature> "<desc>" Start new feature flow (auto-resumes if exists)
154
+ red64 status [feature] Show flow status
155
+ red64 list List all active flows
156
+ red64 abort <feature> Abort and cleanup flow
157
+ red64 help Show this help
158
+
159
+ Init Options:
160
+ -a, --agent <name> Coding agent: claude, gemini, codex (default: claude)
161
+
162
+ Global Options:
163
+ -m, --model <name> Model to use (must match agent, e.g. claude-3-5-haiku-latest)
164
+ -s, --skip-permissions Pass skip-permissions to Claude CLI
165
+ -b, --brownfield Enable brownfield mode (gap analysis)
166
+ -g, --greenfield Greenfield mode (default)
167
+ -t, --tier <name> Use specified Claude config directory
168
+ --sandbox Run Claude in Docker container for isolation
169
+ -h, --help Show help
170
+ -v, --version Show version
171
+ `.trim();
172
+ //# sourceMappingURL=parseArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgs.js","sourceRoot":"","sources":["../../src/cli/parseArgs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Flag validation for red64 CLI
3
+ * Requirements: 5.1-5.5
4
+ */
5
+ import type { GlobalFlags } from '../types/index.js';
6
+ /**
7
+ * Validation error type
8
+ */
9
+ export type FlagValidationError = string;
10
+ /**
11
+ * Validation result
12
+ */
13
+ export interface FlagValidationResult {
14
+ readonly valid: boolean;
15
+ readonly errors: readonly FlagValidationError[];
16
+ }
17
+ /**
18
+ * Validate CLI flags and return validation result
19
+ * Requirements: 5.4, 5.5
20
+ */
21
+ export declare function validateFlags(flags: GlobalFlags): FlagValidationResult;
22
+ //# sourceMappingURL=validateFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateFlags.d.ts","sourceRoot":"","sources":["../../src/cli/validateFlags.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAiBtE"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Flag validation for red64 CLI
3
+ * Requirements: 5.1-5.5
4
+ */
5
+ /**
6
+ * Validate CLI flags and return validation result
7
+ * Requirements: 5.4, 5.5
8
+ */
9
+ export function validateFlags(flags) {
10
+ const errors = [];
11
+ // Validate tier has a value when provided (not empty string)
12
+ if (flags.tier === '') {
13
+ errors.push('Error: --tier requires a value');
14
+ }
15
+ // Validate brownfield and greenfield are mutually exclusive
16
+ if (flags.brownfield && flags.greenfield) {
17
+ errors.push('Error: --brownfield and --greenfield are mutually exclusive');
18
+ }
19
+ return {
20
+ valid: errors.length === 0,
21
+ errors
22
+ };
23
+ }
24
+ //# sourceMappingURL=validateFlags.js.map