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.
- package/README.md +454 -0
- package/dist/cli/parseArgs.d.ts +16 -0
- package/dist/cli/parseArgs.d.ts.map +1 -0
- package/dist/cli/parseArgs.js +172 -0
- package/dist/cli/parseArgs.js.map +1 -0
- package/dist/cli/validateFlags.d.ts +22 -0
- package/dist/cli/validateFlags.d.ts.map +1 -0
- package/dist/cli/validateFlags.js +24 -0
- package/dist/cli/validateFlags.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +90 -0
- package/dist/cli.js.map +1 -0
- package/dist/components/App.d.ts +20 -0
- package/dist/components/App.d.ts.map +1 -0
- package/dist/components/App.js +35 -0
- package/dist/components/App.js.map +1 -0
- package/dist/components/CommandRouter.d.ts +21 -0
- package/dist/components/CommandRouter.d.ts.map +1 -0
- package/dist/components/CommandRouter.js +30 -0
- package/dist/components/CommandRouter.js.map +1 -0
- package/dist/components/GlobalConfig.d.ts +26 -0
- package/dist/components/GlobalConfig.d.ts.map +1 -0
- package/dist/components/GlobalConfig.js +30 -0
- package/dist/components/GlobalConfig.js.map +1 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +9 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/init/CompleteStep.d.ts +11 -0
- package/dist/components/init/CompleteStep.d.ts.map +1 -0
- package/dist/components/init/CompleteStep.js +15 -0
- package/dist/components/init/CompleteStep.js.map +1 -0
- package/dist/components/init/ErrorStep.d.ts +14 -0
- package/dist/components/init/ErrorStep.d.ts.map +1 -0
- package/dist/components/init/ErrorStep.js +36 -0
- package/dist/components/init/ErrorStep.js.map +1 -0
- package/dist/components/init/FetchStep.d.ts +15 -0
- package/dist/components/init/FetchStep.d.ts.map +1 -0
- package/dist/components/init/FetchStep.js +33 -0
- package/dist/components/init/FetchStep.js.map +1 -0
- package/dist/components/init/SetupStep.d.ts +14 -0
- package/dist/components/init/SetupStep.d.ts.map +1 -0
- package/dist/components/init/SetupStep.js +78 -0
- package/dist/components/init/SetupStep.js.map +1 -0
- package/dist/components/init/SteeringStep.d.ts +12 -0
- package/dist/components/init/SteeringStep.d.ts.map +1 -0
- package/dist/components/init/SteeringStep.js +43 -0
- package/dist/components/init/SteeringStep.js.map +1 -0
- package/dist/components/init/WelcomeStep.d.ts +12 -0
- package/dist/components/init/WelcomeStep.d.ts.map +1 -0
- package/dist/components/init/WelcomeStep.js +52 -0
- package/dist/components/init/WelcomeStep.js.map +1 -0
- package/dist/components/init/index.d.ts +11 -0
- package/dist/components/init/index.d.ts.map +1 -0
- package/dist/components/init/index.js +10 -0
- package/dist/components/init/index.js.map +1 -0
- package/dist/components/init/types.d.ts +98 -0
- package/dist/components/init/types.d.ts.map +1 -0
- package/dist/components/init/types.js +6 -0
- package/dist/components/init/types.js.map +1 -0
- package/dist/components/screens/AbortScreen.d.ts +14 -0
- package/dist/components/screens/AbortScreen.d.ts.map +1 -0
- package/dist/components/screens/AbortScreen.js +181 -0
- package/dist/components/screens/AbortScreen.js.map +1 -0
- package/dist/components/screens/ApprovalScreen.d.ts +24 -0
- package/dist/components/screens/ApprovalScreen.d.ts.map +1 -0
- package/dist/components/screens/ApprovalScreen.js +82 -0
- package/dist/components/screens/ApprovalScreen.js.map +1 -0
- package/dist/components/screens/HelpScreen.d.ts +20 -0
- package/dist/components/screens/HelpScreen.d.ts.map +1 -0
- package/dist/components/screens/HelpScreen.js +70 -0
- package/dist/components/screens/HelpScreen.js.map +1 -0
- package/dist/components/screens/InitScreen.d.ts +15 -0
- package/dist/components/screens/InitScreen.d.ts.map +1 -0
- package/dist/components/screens/InitScreen.js +420 -0
- package/dist/components/screens/InitScreen.js.map +1 -0
- package/dist/components/screens/ListScreen.d.ts +14 -0
- package/dist/components/screens/ListScreen.d.ts.map +1 -0
- package/dist/components/screens/ListScreen.js +57 -0
- package/dist/components/screens/ListScreen.js.map +1 -0
- package/dist/components/screens/ProgressScreen.d.ts +26 -0
- package/dist/components/screens/ProgressScreen.d.ts.map +1 -0
- package/dist/components/screens/ProgressScreen.js +64 -0
- package/dist/components/screens/ProgressScreen.js.map +1 -0
- package/dist/components/screens/ResumeScreen.d.ts +14 -0
- package/dist/components/screens/ResumeScreen.d.ts.map +1 -0
- package/dist/components/screens/ResumeScreen.js +108 -0
- package/dist/components/screens/ResumeScreen.js.map +1 -0
- package/dist/components/screens/ScreenProps.d.ts +12 -0
- package/dist/components/screens/ScreenProps.d.ts.map +1 -0
- package/dist/components/screens/ScreenProps.js +5 -0
- package/dist/components/screens/ScreenProps.js.map +1 -0
- package/dist/components/screens/StartScreen.d.ts +26 -0
- package/dist/components/screens/StartScreen.d.ts.map +1 -0
- package/dist/components/screens/StartScreen.js +1021 -0
- package/dist/components/screens/StartScreen.js.map +1 -0
- package/dist/components/screens/StatusScreen.d.ts +14 -0
- package/dist/components/screens/StatusScreen.d.ts.map +1 -0
- package/dist/components/screens/StatusScreen.js +115 -0
- package/dist/components/screens/StatusScreen.js.map +1 -0
- package/dist/components/screens/index.d.ts +15 -0
- package/dist/components/screens/index.d.ts.map +1 -0
- package/dist/components/screens/index.js +12 -0
- package/dist/components/screens/index.js.map +1 -0
- package/dist/components/ui/ErrorBoundary.d.ts +34 -0
- package/dist/components/ui/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ui/ErrorBoundary.js +37 -0
- package/dist/components/ui/ErrorBoundary.js.map +1 -0
- package/dist/components/ui/ErrorDisplay.d.ts +20 -0
- package/dist/components/ui/ErrorDisplay.d.ts.map +1 -0
- package/dist/components/ui/ErrorDisplay.js +12 -0
- package/dist/components/ui/ErrorDisplay.js.map +1 -0
- package/dist/components/ui/ErrorRecoveryPrompt.d.ts +30 -0
- package/dist/components/ui/ErrorRecoveryPrompt.d.ts.map +1 -0
- package/dist/components/ui/ErrorRecoveryPrompt.js +66 -0
- package/dist/components/ui/ErrorRecoveryPrompt.js.map +1 -0
- package/dist/components/ui/FeatureSidebar.d.ts +27 -0
- package/dist/components/ui/FeatureSidebar.d.ts.map +1 -0
- package/dist/components/ui/FeatureSidebar.js +166 -0
- package/dist/components/ui/FeatureSidebar.js.map +1 -0
- package/dist/components/ui/FlowTable.d.ts +21 -0
- package/dist/components/ui/FlowTable.d.ts.map +1 -0
- package/dist/components/ui/FlowTable.js +105 -0
- package/dist/components/ui/FlowTable.js.map +1 -0
- package/dist/components/ui/Header.d.ts +20 -0
- package/dist/components/ui/Header.d.ts.map +1 -0
- package/dist/components/ui/Header.js +11 -0
- package/dist/components/ui/Header.js.map +1 -0
- package/dist/components/ui/OutputRegion.d.ts +20 -0
- package/dist/components/ui/OutputRegion.d.ts.map +1 -0
- package/dist/components/ui/OutputRegion.js +14 -0
- package/dist/components/ui/OutputRegion.js.map +1 -0
- package/dist/components/ui/PhaseProgressView.d.ts +23 -0
- package/dist/components/ui/PhaseProgressView.d.ts.map +1 -0
- package/dist/components/ui/PhaseProgressView.js +117 -0
- package/dist/components/ui/PhaseProgressView.js.map +1 -0
- package/dist/components/ui/ProgressBar.d.ts +20 -0
- package/dist/components/ui/ProgressBar.d.ts.map +1 -0
- package/dist/components/ui/ProgressBar.js +12 -0
- package/dist/components/ui/ProgressBar.js.map +1 -0
- package/dist/components/ui/SelectMenu.d.ts +27 -0
- package/dist/components/ui/SelectMenu.d.ts.map +1 -0
- package/dist/components/ui/SelectMenu.js +21 -0
- package/dist/components/ui/SelectMenu.js.map +1 -0
- package/dist/components/ui/Spinner.d.ts +18 -0
- package/dist/components/ui/Spinner.d.ts.map +1 -0
- package/dist/components/ui/Spinner.js +10 -0
- package/dist/components/ui/Spinner.js.map +1 -0
- package/dist/components/ui/StatusLine.d.ts +21 -0
- package/dist/components/ui/StatusLine.d.ts.map +1 -0
- package/dist/components/ui/StatusLine.js +30 -0
- package/dist/components/ui/StatusLine.js.map +1 -0
- package/dist/components/ui/index.d.ts +16 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +16 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/services/AgentInvoker.d.ts +20 -0
- package/dist/services/AgentInvoker.d.ts.map +1 -0
- package/dist/services/AgentInvoker.js +282 -0
- package/dist/services/AgentInvoker.js.map +1 -0
- package/dist/services/BranchService.d.ts +28 -0
- package/dist/services/BranchService.d.ts.map +1 -0
- package/dist/services/BranchService.js +114 -0
- package/dist/services/BranchService.js.map +1 -0
- package/dist/services/CacheService.d.ts +57 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/CacheService.js +208 -0
- package/dist/services/CacheService.js.map +1 -0
- package/dist/services/ClaudeErrorDetector.d.ts +45 -0
- package/dist/services/ClaudeErrorDetector.d.ts.map +1 -0
- package/dist/services/ClaudeErrorDetector.js +207 -0
- package/dist/services/ClaudeErrorDetector.js.map +1 -0
- package/dist/services/ClaudeHealthCheck.d.ts +37 -0
- package/dist/services/ClaudeHealthCheck.d.ts.map +1 -0
- package/dist/services/ClaudeHealthCheck.js +197 -0
- package/dist/services/ClaudeHealthCheck.js.map +1 -0
- package/dist/services/CommitService.d.ts +36 -0
- package/dist/services/CommitService.d.ts.map +1 -0
- package/dist/services/CommitService.js +159 -0
- package/dist/services/CommitService.js.map +1 -0
- package/dist/services/ConfigService.d.ts +49 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/ConfigService.js +57 -0
- package/dist/services/ConfigService.js.map +1 -0
- package/dist/services/DockerRunner.d.ts +45 -0
- package/dist/services/DockerRunner.d.ts.map +1 -0
- package/dist/services/DockerRunner.js +170 -0
- package/dist/services/DockerRunner.js.map +1 -0
- package/dist/services/ExtendedFlowStateMachine.d.ts +31 -0
- package/dist/services/ExtendedFlowStateMachine.d.ts.map +1 -0
- package/dist/services/ExtendedFlowStateMachine.js +302 -0
- package/dist/services/ExtendedFlowStateMachine.js.map +1 -0
- package/dist/services/FeatureValidator.d.ts +26 -0
- package/dist/services/FeatureValidator.d.ts.map +1 -0
- package/dist/services/FeatureValidator.js +48 -0
- package/dist/services/FeatureValidator.js.map +1 -0
- package/dist/services/FlowStateMachine.d.ts +26 -0
- package/dist/services/FlowStateMachine.d.ts.map +1 -0
- package/dist/services/FlowStateMachine.js +177 -0
- package/dist/services/FlowStateMachine.js.map +1 -0
- package/dist/services/GitHubService.d.ts +72 -0
- package/dist/services/GitHubService.d.ts.map +1 -0
- package/dist/services/GitHubService.js +150 -0
- package/dist/services/GitHubService.js.map +1 -0
- package/dist/services/GitStatusChecker.d.ts +29 -0
- package/dist/services/GitStatusChecker.d.ts.map +1 -0
- package/dist/services/GitStatusChecker.js +127 -0
- package/dist/services/GitStatusChecker.js.map +1 -0
- package/dist/services/PRCreatorService.d.ts +59 -0
- package/dist/services/PRCreatorService.d.ts.map +1 -0
- package/dist/services/PRCreatorService.js +212 -0
- package/dist/services/PRCreatorService.js.map +1 -0
- package/dist/services/PRStatusFetcher.d.ts +39 -0
- package/dist/services/PRStatusFetcher.d.ts.map +1 -0
- package/dist/services/PRStatusFetcher.js +144 -0
- package/dist/services/PRStatusFetcher.js.map +1 -0
- package/dist/services/PhaseExecutor.d.ts +29 -0
- package/dist/services/PhaseExecutor.d.ts.map +1 -0
- package/dist/services/PhaseExecutor.js +125 -0
- package/dist/services/PhaseExecutor.js.map +1 -0
- package/dist/services/SpecInitService.d.ts +33 -0
- package/dist/services/SpecInitService.d.ts.map +1 -0
- package/dist/services/SpecInitService.js +168 -0
- package/dist/services/SpecInitService.js.map +1 -0
- package/dist/services/StateStore.d.ts +24 -0
- package/dist/services/StateStore.d.ts.map +1 -0
- package/dist/services/StateStore.js +171 -0
- package/dist/services/StateStore.js.map +1 -0
- package/dist/services/TaskParser.d.ts +44 -0
- package/dist/services/TaskParser.d.ts.map +1 -0
- package/dist/services/TaskParser.js +167 -0
- package/dist/services/TaskParser.js.map +1 -0
- package/dist/services/TaskRunner.d.ts +52 -0
- package/dist/services/TaskRunner.d.ts.map +1 -0
- package/dist/services/TaskRunner.js +135 -0
- package/dist/services/TaskRunner.js.map +1 -0
- package/dist/services/TemplateService.d.ts +73 -0
- package/dist/services/TemplateService.d.ts.map +1 -0
- package/dist/services/TemplateService.js +263 -0
- package/dist/services/TemplateService.js.map +1 -0
- package/dist/services/WorktreeService.d.ts +51 -0
- package/dist/services/WorktreeService.d.ts.map +1 -0
- package/dist/services/WorktreeService.js +204 -0
- package/dist/services/WorktreeService.js.map +1 -0
- package/dist/services/index.d.ts +25 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +25 -0
- package/dist/services/index.js.map +1 -0
- package/dist/types/extended-flow.d.ts +167 -0
- package/dist/types/extended-flow.d.ts.map +1 -0
- package/dist/types/extended-flow.js +103 -0
- package/dist/types/extended-flow.js.map +1 -0
- package/dist/types/index.d.ts +210 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +28 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/git.d.ts +41 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +68 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +30 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +43 -0
- package/dist/utils/paths.js.map +1 -0
- package/framework/.red64/settings/rules/design-discovery-full.md +93 -0
- package/framework/.red64/settings/rules/design-discovery-light.md +49 -0
- package/framework/.red64/settings/rules/design-principles.md +182 -0
- package/framework/.red64/settings/rules/design-review.md +110 -0
- package/framework/.red64/settings/rules/ears-format.md +49 -0
- package/framework/.red64/settings/rules/gap-analysis.md +144 -0
- package/framework/.red64/settings/rules/steering-principles.md +90 -0
- package/framework/.red64/settings/rules/tasks-generation.md +131 -0
- package/framework/.red64/settings/rules/tasks-parallel-analysis.md +34 -0
- package/framework/.red64/settings/templates/flow-state.json +48 -0
- package/framework/.red64/settings/templates/specs/design.md +276 -0
- package/framework/.red64/settings/templates/specs/init.json +24 -0
- package/framework/.red64/settings/templates/specs/requirements-init.md +9 -0
- package/framework/.red64/settings/templates/specs/requirements.md +26 -0
- package/framework/.red64/settings/templates/specs/research.md +61 -0
- package/framework/.red64/settings/templates/specs/tasks.md +21 -0
- package/framework/.red64/settings/templates/steering/product.md +18 -0
- package/framework/.red64/settings/templates/steering/structure.md +41 -0
- package/framework/.red64/settings/templates/steering/tech.md +45 -0
- package/framework/.red64/settings/templates/steering-custom/api-standards.md +69 -0
- package/framework/.red64/settings/templates/steering-custom/authentication.md +67 -0
- package/framework/.red64/settings/templates/steering-custom/database.md +46 -0
- package/framework/.red64/settings/templates/steering-custom/deployment.md +54 -0
- package/framework/.red64/settings/templates/steering-custom/error-handling.md +59 -0
- package/framework/.red64/settings/templates/steering-custom/security.md +55 -0
- package/framework/.red64/settings/templates/steering-custom/testing.md +47 -0
- package/framework/agents/claude/.claude/agents/red64/spec-design.md +174 -0
- package/framework/agents/claude/.claude/agents/red64/spec-impl.md +120 -0
- package/framework/agents/claude/.claude/agents/red64/spec-requirements.md +102 -0
- package/framework/agents/claude/.claude/agents/red64/spec-tasks.md +141 -0
- package/framework/agents/claude/.claude/agents/red64/steering-custom.md +147 -0
- package/framework/agents/claude/.claude/agents/red64/steering.md +163 -0
- package/framework/agents/claude/.claude/agents/red64/validate-design.md +98 -0
- package/framework/agents/claude/.claude/agents/red64/validate-gap.md +99 -0
- package/framework/agents/claude/.claude/agents/red64/validate-impl.md +146 -0
- package/framework/agents/claude/.claude/commands/red64/spec-design.md +64 -0
- package/framework/agents/claude/.claude/commands/red64/spec-impl.md +68 -0
- package/framework/agents/claude/.claude/commands/red64/spec-init.md +65 -0
- package/framework/agents/claude/.claude/commands/red64/spec-quick.md +360 -0
- package/framework/agents/claude/.claude/commands/red64/spec-requirements.md +62 -0
- package/framework/agents/claude/.claude/commands/red64/spec-status.md +87 -0
- package/framework/agents/claude/.claude/commands/red64/spec-tasks.md +75 -0
- package/framework/agents/claude/.claude/commands/red64/steering-custom.md +59 -0
- package/framework/agents/claude/.claude/commands/red64/steering.md +62 -0
- package/framework/agents/claude/.claude/commands/red64/validate-design.md +59 -0
- package/framework/agents/claude/.claude/commands/red64/validate-gap.md +53 -0
- package/framework/agents/claude/.claude/commands/red64/validate-impl.md +68 -0
- package/framework/agents/claude/docs/CLAUDE.md +45 -0
- package/framework/agents/codex/.codex/agents/red64/spec-design.md +174 -0
- package/framework/agents/codex/.codex/agents/red64/spec-impl.md +120 -0
- package/framework/agents/codex/.codex/agents/red64/spec-requirements.md +102 -0
- package/framework/agents/codex/.codex/agents/red64/spec-tasks.md +141 -0
- package/framework/agents/codex/.codex/agents/red64/steering-custom.md +147 -0
- package/framework/agents/codex/.codex/agents/red64/steering.md +163 -0
- package/framework/agents/codex/.codex/agents/red64/validate-design.md +98 -0
- package/framework/agents/codex/.codex/agents/red64/validate-gap.md +99 -0
- package/framework/agents/codex/.codex/agents/red64/validate-impl.md +146 -0
- package/framework/agents/codex/.codex/commands/red64/spec-design.md +64 -0
- package/framework/agents/codex/.codex/commands/red64/spec-impl.md +68 -0
- package/framework/agents/codex/.codex/commands/red64/spec-init.md +65 -0
- package/framework/agents/codex/.codex/commands/red64/spec-quick.md +360 -0
- package/framework/agents/codex/.codex/commands/red64/spec-requirements.md +62 -0
- package/framework/agents/codex/.codex/commands/red64/spec-status.md +87 -0
- package/framework/agents/codex/.codex/commands/red64/spec-tasks.md +75 -0
- package/framework/agents/codex/.codex/commands/red64/steering-custom.md +59 -0
- package/framework/agents/codex/.codex/commands/red64/steering.md +62 -0
- package/framework/agents/codex/.codex/commands/red64/validate-design.md +59 -0
- package/framework/agents/codex/.codex/commands/red64/validate-gap.md +53 -0
- package/framework/agents/codex/.codex/commands/red64/validate-impl.md +68 -0
- package/framework/agents/codex/docs/AGENTS.md +68 -0
- package/framework/agents/gemini/commands.toml +607 -0
- package/framework/agents/gemini/docs/GEMINI.md +45 -0
- package/framework/stacks/generic/product.md +27 -0
- package/framework/stacks/generic/structure.md +46 -0
- package/framework/stacks/generic/tech.md +47 -0
- package/framework/stacks/node/product.md +27 -0
- package/framework/stacks/node/structure.md +82 -0
- package/framework/stacks/node/tech.md +63 -0
- package/framework/stacks/python/product.md +27 -0
- package/framework/stacks/python/structure.md +78 -0
- package/framework/stacks/python/tech.md +64 -0
- package/framework/stacks/react/product.md +27 -0
- package/framework/stacks/react/structure.md +76 -0
- package/framework/stacks/react/tech.md +65 -0
- package/package.json +47 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help screen component
|
|
3
|
+
* Requirements: 4.7, 8.5
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { ScreenProps } from './ScreenProps.js';
|
|
7
|
+
import type { Command } from '../../types/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Extended props for HelpScreen
|
|
10
|
+
*/
|
|
11
|
+
interface HelpScreenProps extends ScreenProps {
|
|
12
|
+
readonly helpCommand?: Command;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Display comprehensive usage information for all commands
|
|
16
|
+
* Requirements: 4.7, 8.5 - Display detailed usage information with red64 branding
|
|
17
|
+
*/
|
|
18
|
+
export declare const HelpScreen: React.FC<HelpScreenProps>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=HelpScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpScreen.d.ts","sourceRoot":"","sources":["../../../src/components/screens/HelpScreen.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,UAAU,eAAgB,SAAQ,WAAW;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAyDD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkDhD,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
/**
|
|
4
|
+
* Command-specific help content
|
|
5
|
+
*/
|
|
6
|
+
const COMMAND_HELP = {
|
|
7
|
+
init: {
|
|
8
|
+
usage: 'red64 init [options]',
|
|
9
|
+
description: 'Initialize Red64 in your project. Creates .red64/ directory with configuration and steering documents.',
|
|
10
|
+
options: [
|
|
11
|
+
'-a, --agent <name> Coding agent: claude, gemini, codex (default: claude)',
|
|
12
|
+
'--repo <owner/repo> GitHub repository for framework templates',
|
|
13
|
+
'--stack <name> Tech stack template (react, node, python, etc.)',
|
|
14
|
+
'--skip-guided Skip interactive setup wizard',
|
|
15
|
+
'--no-steering Skip steering document generation',
|
|
16
|
+
'--no-cache Disable template caching',
|
|
17
|
+
'-h, --help Show this help'
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
start: {
|
|
21
|
+
usage: 'red64 start <feature> "<description>" [options]',
|
|
22
|
+
description: 'Start a new feature development flow, or resume an existing one. Creates git worktree, generates specs, and implements tasks.',
|
|
23
|
+
options: [
|
|
24
|
+
'-m, --model <name> Model to use (e.g., claude-3-5-haiku-latest for dev)',
|
|
25
|
+
'-y, --yes Auto-approve all phases (skip review gates)',
|
|
26
|
+
'-b, --brownfield Enable gap analysis for existing codebases',
|
|
27
|
+
'-g, --greenfield New feature mode (default)',
|
|
28
|
+
'-s, --skip-permissions Pass --dangerously-skip-permissions to Claude CLI',
|
|
29
|
+
'-t, --tier <name> Use specific Claude config directory',
|
|
30
|
+
'--sandbox Run in Docker isolation',
|
|
31
|
+
'--verbose Show detailed execution logs',
|
|
32
|
+
'-h, --help Show this help'
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
status: {
|
|
36
|
+
usage: 'red64 status [feature]',
|
|
37
|
+
description: 'Show the status of a flow. If no feature is specified, shows status of all flows.',
|
|
38
|
+
options: [
|
|
39
|
+
'-h, --help Show this help'
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
list: {
|
|
43
|
+
usage: 'red64 list',
|
|
44
|
+
description: 'List all active flows in the repository.',
|
|
45
|
+
options: [
|
|
46
|
+
'-h, --help Show this help'
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
abort: {
|
|
50
|
+
usage: 'red64 abort <feature>',
|
|
51
|
+
description: 'Abort a flow and clean up resources (worktree, branch, state).',
|
|
52
|
+
options: [
|
|
53
|
+
'-h, --help Show this help'
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Display comprehensive usage information for all commands
|
|
59
|
+
* Requirements: 4.7, 8.5 - Display detailed usage information with red64 branding
|
|
60
|
+
*/
|
|
61
|
+
export const HelpScreen = ({ helpCommand }) => {
|
|
62
|
+
// Show command-specific help if requested
|
|
63
|
+
if (helpCommand && COMMAND_HELP[helpCommand]) {
|
|
64
|
+
const help = COMMAND_HELP[helpCommand];
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["red64 ", helpCommand] }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Usage:" }), _jsxs(Text, { children: [" ", help.usage] }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Description:" }), _jsxs(Text, { children: [" ", help.description] }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Options:" }), help.options.map((opt, i) => (_jsxs(Text, { children: [" ", opt] }, i)))] }));
|
|
66
|
+
}
|
|
67
|
+
// Show general help
|
|
68
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Red64 Flow Orchestrator" }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Usage:" }), _jsx(Text, { children: " red64 init Bootstrap project for red64 flows" }), _jsxs(Text, { children: [" red64 start ", '<feature>', " ", "\"<desc>\"", " Start or resume feature flow"] }), _jsx(Text, { children: " red64 status [feature] Show flow status" }), _jsx(Text, { children: " red64 list List all active flows" }), _jsxs(Text, { children: [" red64 abort ", '<feature>', " Abort and cleanup flow"] }), _jsx(Text, { children: " red64 help Show this help" }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Global Options:" }), _jsxs(Text, { children: [" -m, --model ", '<name>', " Model to use (e.g., claude-3-5-haiku-latest)"] }), _jsx(Text, { children: " -s, --skip-permissions Pass skip-permissions to Claude CLI" }), _jsx(Text, { children: " -b, --brownfield Enable brownfield mode (gap analysis)" }), _jsx(Text, { children: " -g, --greenfield Greenfield mode (default)" }), _jsxs(Text, { children: [" -t, --tier ", '<name>', " Use specified Claude config directory"] }), _jsx(Text, { children: " --sandbox Run in Docker container for isolation" }), _jsx(Text, { children: " -h, --help Show help (use with command for details)" }), _jsx(Text, { children: " -v, --version Show version" }), _jsx(Text, {}), _jsxs(Text, { dimColor: true, children: ["Run 'red64 ", '<command>', " --help' for more information on a command."] })] }));
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=HelpScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpScreen.js","sourceRoot":"","sources":["../../../src/components/screens/HelpScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InitScreen - Init command wizard orchestrator
|
|
3
|
+
* Requirements: 1.1-1.7, 4.1-4.9, 5.1-5.7
|
|
4
|
+
* Tasks: 6.1, 6.2, 6.3
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { ScreenProps } from './ScreenProps.js';
|
|
8
|
+
/**
|
|
9
|
+
* InitScreen - Orchestrates the init command multi-step wizard
|
|
10
|
+
* Task 6.1: State management
|
|
11
|
+
* Task 6.2: Service coordination
|
|
12
|
+
* Task 6.3: Step rendering
|
|
13
|
+
*/
|
|
14
|
+
export declare const InitScreen: React.FC<ScreenProps>;
|
|
15
|
+
//# sourceMappingURL=InitScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitScreen.d.ts","sourceRoot":"","sources":["../../../src/components/screens/InitScreen.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA6DpD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqd5C,CAAC"}
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* InitScreen - Init command wizard orchestrator
|
|
4
|
+
* Requirements: 1.1-1.7, 4.1-4.9, 5.1-5.7
|
|
5
|
+
* Tasks: 6.1, 6.2, 6.3
|
|
6
|
+
*/
|
|
7
|
+
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
8
|
+
import { Box, Text, useApp } from 'ink';
|
|
9
|
+
import { Spinner } from '@inkjs/ui';
|
|
10
|
+
import { WelcomeStep, FetchStep, SetupStep, SteeringStep, CompleteStep, ErrorStep } from '../init/index.js';
|
|
11
|
+
import { createCacheService, createGitHubService, createTemplateService, createConfigService, createCommitService, GitHubFetchError } from '../../services/index.js';
|
|
12
|
+
import { spawn } from 'node:child_process';
|
|
13
|
+
const DEFAULT_REPO = 'Red64llc/red64-cli';
|
|
14
|
+
const DEFAULT_VERSION = 'main';
|
|
15
|
+
// Skip fetch mode - use bundled framework templates for development
|
|
16
|
+
// Set to false to download from GitHub
|
|
17
|
+
const SKIP_FETCH_MODE = true;
|
|
18
|
+
// Get the bundled framework path (for SKIP_FETCH_MODE)
|
|
19
|
+
function getBundledFrameworkPath() {
|
|
20
|
+
// When running from source: /path/to/red64-cli/framework
|
|
21
|
+
// When running from installed package: /path/to/node_modules/red64-cli/framework
|
|
22
|
+
const modulePath = new URL(import.meta.url).pathname;
|
|
23
|
+
const rootDir = modulePath.includes('/dist/')
|
|
24
|
+
? modulePath.split('/dist/')[0]
|
|
25
|
+
: modulePath.split('/src/')[0];
|
|
26
|
+
return `${rootDir}/framework`;
|
|
27
|
+
}
|
|
28
|
+
// Check if directory is a git repository
|
|
29
|
+
async function isGitRepo(dir) {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const proc = spawn('git', ['rev-parse', '--git-dir'], { cwd: dir, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
32
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
33
|
+
proc.on('error', () => resolve(false));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Initialize git repository
|
|
37
|
+
async function gitInit(dir) {
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
const proc = spawn('git', ['init'], { cwd: dir, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
40
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
41
|
+
proc.on('error', () => resolve(false));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* InitScreen - Orchestrates the init command multi-step wizard
|
|
46
|
+
* Task 6.1: State management
|
|
47
|
+
* Task 6.2: Service coordination
|
|
48
|
+
* Task 6.3: Step rendering
|
|
49
|
+
*/
|
|
50
|
+
export const InitScreen = ({ flags }) => {
|
|
51
|
+
const { exit } = useApp();
|
|
52
|
+
const [step, setStep] = useState({ type: 'welcome' });
|
|
53
|
+
const [setupData, setSetupData] = useState({});
|
|
54
|
+
const [availableStacks, setAvailableStacks] = useState([]);
|
|
55
|
+
const [steeringFiles, setSteeringFiles] = useState([]);
|
|
56
|
+
const [directoryExists, setDirectoryExists] = useState(false);
|
|
57
|
+
const [gitInitialized, setGitInitialized] = useState(false);
|
|
58
|
+
const [gitCommitted, setGitCommitted] = useState(false);
|
|
59
|
+
const [conflictResolution, setConflictResolution] = useState(null);
|
|
60
|
+
// Extract init-specific flags
|
|
61
|
+
const initFlags = {
|
|
62
|
+
repo: flags.repo,
|
|
63
|
+
version: undefined, // Version flag conflicts with CLI --version
|
|
64
|
+
stack: flags.stack,
|
|
65
|
+
'skip-guided': flags['skip-guided'],
|
|
66
|
+
'no-steering': flags['no-steering'],
|
|
67
|
+
'no-cache': flags['no-cache'],
|
|
68
|
+
agent: flags.agent
|
|
69
|
+
};
|
|
70
|
+
// Services (created once)
|
|
71
|
+
const [services] = useState(() => {
|
|
72
|
+
const cacheService = createCacheService();
|
|
73
|
+
const githubService = createGitHubService({
|
|
74
|
+
defaultRepo: initFlags.repo ?? DEFAULT_REPO,
|
|
75
|
+
defaultVersion: initFlags.version ?? DEFAULT_VERSION,
|
|
76
|
+
cacheService
|
|
77
|
+
});
|
|
78
|
+
const templateService = createTemplateService();
|
|
79
|
+
const configService = createConfigService();
|
|
80
|
+
const commitService = createCommitService();
|
|
81
|
+
return { cacheService, githubService, templateService, configService, commitService };
|
|
82
|
+
});
|
|
83
|
+
// Check for existing directory
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
const checkExisting = async () => {
|
|
86
|
+
const isInitialized = await services.configService.isInitialized(process.cwd());
|
|
87
|
+
setDirectoryExists(isInitialized);
|
|
88
|
+
};
|
|
89
|
+
checkExisting();
|
|
90
|
+
}, [services.configService]);
|
|
91
|
+
// Handle step transitions
|
|
92
|
+
const handleNext = useCallback(() => {
|
|
93
|
+
switch (step.type) {
|
|
94
|
+
case 'welcome':
|
|
95
|
+
setStep({
|
|
96
|
+
type: 'fetching',
|
|
97
|
+
progress: { phase: 'connecting' }
|
|
98
|
+
});
|
|
99
|
+
break;
|
|
100
|
+
case 'fetching':
|
|
101
|
+
setStep({ type: 'extracting' });
|
|
102
|
+
break;
|
|
103
|
+
case 'extracting':
|
|
104
|
+
setStep({
|
|
105
|
+
type: 'guided-setup',
|
|
106
|
+
data: setupData
|
|
107
|
+
});
|
|
108
|
+
break;
|
|
109
|
+
case 'guided-setup':
|
|
110
|
+
setStep({ type: 'applying-templates' });
|
|
111
|
+
break;
|
|
112
|
+
case 'applying-templates':
|
|
113
|
+
if (initFlags['no-steering']) {
|
|
114
|
+
// Skip to complete
|
|
115
|
+
setStep({
|
|
116
|
+
type: 'complete',
|
|
117
|
+
summary: createSummary()
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
setStep({ type: 'steering-prompt' });
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case 'steering-prompt':
|
|
125
|
+
setStep({
|
|
126
|
+
type: 'complete',
|
|
127
|
+
summary: createSummary()
|
|
128
|
+
});
|
|
129
|
+
break;
|
|
130
|
+
case 'complete':
|
|
131
|
+
exit();
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}, [step.type, setupData, initFlags, exit]);
|
|
135
|
+
const handleError = useCallback((error) => {
|
|
136
|
+
setStep({ type: 'error', error });
|
|
137
|
+
}, []);
|
|
138
|
+
const handleSetupComplete = useCallback((data) => {
|
|
139
|
+
setSetupData(data);
|
|
140
|
+
}, []);
|
|
141
|
+
const handleConflictResolution = useCallback((resolution) => {
|
|
142
|
+
if (resolution !== 'abort') {
|
|
143
|
+
setConflictResolution(resolution);
|
|
144
|
+
}
|
|
145
|
+
}, []);
|
|
146
|
+
// Create summary for complete step
|
|
147
|
+
const createSummary = useCallback(() => {
|
|
148
|
+
return {
|
|
149
|
+
createdDirs: [
|
|
150
|
+
'.claude',
|
|
151
|
+
'.red64',
|
|
152
|
+
'.red64/steering',
|
|
153
|
+
'.red64/specs',
|
|
154
|
+
'.red64/settings'
|
|
155
|
+
],
|
|
156
|
+
appliedStack: setupData.stack ?? 'generic',
|
|
157
|
+
configPath: '.red64/config.json',
|
|
158
|
+
steeringFiles,
|
|
159
|
+
gitInitialized,
|
|
160
|
+
gitCommitted
|
|
161
|
+
};
|
|
162
|
+
}, [setupData.stack, steeringFiles, gitInitialized, gitCommitted]);
|
|
163
|
+
// Use refs to avoid callback dependency issues
|
|
164
|
+
const stepRef = useRef(step);
|
|
165
|
+
stepRef.current = step;
|
|
166
|
+
const setupDataRef = useRef(setupData);
|
|
167
|
+
setupDataRef.current = setupData;
|
|
168
|
+
// Track if fetch has been attempted to prevent re-runs
|
|
169
|
+
const fetchAttemptedRef = useRef(false);
|
|
170
|
+
const extractAttemptedRef = useRef(false);
|
|
171
|
+
const templateAttemptedRef = useRef(false);
|
|
172
|
+
// Fetch framework files when in fetching state
|
|
173
|
+
useEffect(() => {
|
|
174
|
+
if (step.type !== 'fetching')
|
|
175
|
+
return;
|
|
176
|
+
if (fetchAttemptedRef.current)
|
|
177
|
+
return;
|
|
178
|
+
fetchAttemptedRef.current = true;
|
|
179
|
+
const fetchFramework = async () => {
|
|
180
|
+
// Skip fetch mode - use bundled framework templates
|
|
181
|
+
if (SKIP_FETCH_MODE) {
|
|
182
|
+
const frameworkPath = getBundledFrameworkPath();
|
|
183
|
+
const stacks = await services.templateService.listStacks(frameworkPath);
|
|
184
|
+
setAvailableStacks(stacks.length > 0 ? stacks : ['generic', 'react', 'node', 'python']);
|
|
185
|
+
setStep({ type: 'extracting' });
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const result = await services.githubService.fetchTarball({
|
|
190
|
+
repo: initFlags.repo,
|
|
191
|
+
version: initFlags.version,
|
|
192
|
+
noCache: initFlags['no-cache'],
|
|
193
|
+
onProgress: (progress) => {
|
|
194
|
+
setStep({ type: 'fetching', progress });
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
// List available stacks
|
|
198
|
+
const stacks = await services.templateService.listStacks(result.tarballPath);
|
|
199
|
+
setAvailableStacks(stacks);
|
|
200
|
+
// Transition to next step
|
|
201
|
+
setStep({ type: 'extracting' });
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (error instanceof GitHubFetchError) {
|
|
205
|
+
setStep({
|
|
206
|
+
type: 'error',
|
|
207
|
+
error: {
|
|
208
|
+
code: 'NETWORK_ERROR',
|
|
209
|
+
message: error.message,
|
|
210
|
+
recoverable: true,
|
|
211
|
+
suggestion: 'Check your network connection or try using cached files.'
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
setStep({
|
|
217
|
+
type: 'error',
|
|
218
|
+
error: {
|
|
219
|
+
code: 'NETWORK_ERROR',
|
|
220
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
221
|
+
recoverable: false
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
fetchFramework();
|
|
228
|
+
}, [step.type, services.githubService, services.templateService, initFlags]);
|
|
229
|
+
// Extract/install framework when in extracting state
|
|
230
|
+
useEffect(() => {
|
|
231
|
+
if (step.type !== 'extracting')
|
|
232
|
+
return;
|
|
233
|
+
if (extractAttemptedRef.current)
|
|
234
|
+
return;
|
|
235
|
+
extractAttemptedRef.current = true;
|
|
236
|
+
const installFramework = async () => {
|
|
237
|
+
try {
|
|
238
|
+
const cwd = process.cwd();
|
|
239
|
+
// If overwrite mode, remove existing directories first
|
|
240
|
+
if (conflictResolution === 'overwrite') {
|
|
241
|
+
const { rm } = await import('node:fs/promises');
|
|
242
|
+
try {
|
|
243
|
+
await rm(`${cwd}/.red64`, { recursive: true, force: true });
|
|
244
|
+
await rm(`${cwd}/.claude`, { recursive: true, force: true });
|
|
245
|
+
await rm(`${cwd}/CLAUDE.md`, { force: true });
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// Ignore errors if files don't exist
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Use bundled framework path in SKIP_FETCH_MODE
|
|
252
|
+
const frameworkPath = SKIP_FETCH_MODE
|
|
253
|
+
? getBundledFrameworkPath()
|
|
254
|
+
: ''; // TODO: Use extracted tarball location when implemented
|
|
255
|
+
await services.templateService.installFramework({
|
|
256
|
+
sourceDir: frameworkPath,
|
|
257
|
+
targetDir: cwd,
|
|
258
|
+
variables: {},
|
|
259
|
+
agent: initFlags.agent ?? 'claude'
|
|
260
|
+
});
|
|
261
|
+
setStep({
|
|
262
|
+
type: 'guided-setup',
|
|
263
|
+
data: setupDataRef.current
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
setStep({
|
|
268
|
+
type: 'error',
|
|
269
|
+
error: {
|
|
270
|
+
code: 'EXTRACTION_ERROR',
|
|
271
|
+
message: error instanceof Error ? error.message : 'Failed to install framework',
|
|
272
|
+
recoverable: false
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
installFramework();
|
|
278
|
+
}, [step.type, services.templateService, conflictResolution]);
|
|
279
|
+
// Apply templates when in applying-templates state
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
if (step.type !== 'applying-templates')
|
|
282
|
+
return;
|
|
283
|
+
if (templateAttemptedRef.current)
|
|
284
|
+
return;
|
|
285
|
+
templateAttemptedRef.current = true;
|
|
286
|
+
const applyTemplates = async () => {
|
|
287
|
+
try {
|
|
288
|
+
const currentSetupData = setupDataRef.current;
|
|
289
|
+
// Use bundled framework path in SKIP_FETCH_MODE, otherwise use extracted tarball
|
|
290
|
+
const sourceDir = SKIP_FETCH_MODE
|
|
291
|
+
? getBundledFrameworkPath()
|
|
292
|
+
: ''; // TODO: Use extracted tarball location when implemented
|
|
293
|
+
const files = await services.templateService.applyStackTemplates({
|
|
294
|
+
sourceDir,
|
|
295
|
+
targetDir: process.cwd(),
|
|
296
|
+
stack: currentSetupData.stack ?? 'generic',
|
|
297
|
+
variables: {
|
|
298
|
+
projectName: currentSetupData.projectName ?? 'my-project',
|
|
299
|
+
description: currentSetupData.description ?? ''
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
setSteeringFiles(files);
|
|
303
|
+
// Save configuration
|
|
304
|
+
await services.configService.save(process.cwd(), {
|
|
305
|
+
version: initFlags.version ?? DEFAULT_VERSION,
|
|
306
|
+
repo: initFlags.repo ?? DEFAULT_REPO,
|
|
307
|
+
stack: currentSetupData.stack ?? 'generic',
|
|
308
|
+
projectType: currentSetupData.projectType ?? 'other',
|
|
309
|
+
projectName: currentSetupData.projectName ?? 'my-project',
|
|
310
|
+
description: currentSetupData.description ?? '',
|
|
311
|
+
initializedAt: new Date().toISOString(),
|
|
312
|
+
customValues: currentSetupData.customValues ?? {},
|
|
313
|
+
agent: initFlags.agent ?? 'claude'
|
|
314
|
+
});
|
|
315
|
+
// Transition to git setup
|
|
316
|
+
setStep({ type: 'git-setup' });
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
setStep({
|
|
320
|
+
type: 'error',
|
|
321
|
+
error: {
|
|
322
|
+
code: 'EXTRACTION_ERROR',
|
|
323
|
+
message: error instanceof Error ? error.message : 'Failed to apply templates',
|
|
324
|
+
recoverable: false
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
applyTemplates();
|
|
330
|
+
}, [step.type, services, initFlags]);
|
|
331
|
+
// Git setup ref
|
|
332
|
+
const gitSetupAttemptedRef = useRef(false);
|
|
333
|
+
// Setup git when in git-setup state
|
|
334
|
+
useEffect(() => {
|
|
335
|
+
if (step.type !== 'git-setup')
|
|
336
|
+
return;
|
|
337
|
+
if (gitSetupAttemptedRef.current)
|
|
338
|
+
return;
|
|
339
|
+
gitSetupAttemptedRef.current = true;
|
|
340
|
+
const setupGit = async () => {
|
|
341
|
+
const cwd = process.cwd();
|
|
342
|
+
let initialized = false;
|
|
343
|
+
let committed = false;
|
|
344
|
+
try {
|
|
345
|
+
// Check if already a git repo
|
|
346
|
+
const isRepo = await isGitRepo(cwd);
|
|
347
|
+
if (!isRepo) {
|
|
348
|
+
// Initialize git repository
|
|
349
|
+
const initSuccess = await gitInit(cwd);
|
|
350
|
+
if (initSuccess) {
|
|
351
|
+
initialized = true;
|
|
352
|
+
setGitInitialized(true);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
initialized = true;
|
|
357
|
+
setGitInitialized(true);
|
|
358
|
+
}
|
|
359
|
+
// Stage and commit framework files
|
|
360
|
+
if (initialized) {
|
|
361
|
+
const result = await services.commitService.stageAndCommit(cwd, 'chore: initialize red64 framework\n\nAdded .claude/, .red64/, and CLAUDE.md for spec-driven development.');
|
|
362
|
+
if (result.success) {
|
|
363
|
+
committed = true;
|
|
364
|
+
setGitCommitted(true);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
// Git errors are non-fatal, continue to next step
|
|
370
|
+
}
|
|
371
|
+
// Transition to next step
|
|
372
|
+
if (initFlags['no-steering']) {
|
|
373
|
+
setStep({
|
|
374
|
+
type: 'complete',
|
|
375
|
+
summary: {
|
|
376
|
+
createdDirs: ['.claude', '.red64', '.red64/steering', '.red64/specs', '.red64/settings'],
|
|
377
|
+
appliedStack: setupDataRef.current.stack ?? 'generic',
|
|
378
|
+
configPath: '.red64/config.json',
|
|
379
|
+
steeringFiles,
|
|
380
|
+
gitInitialized: initialized,
|
|
381
|
+
gitCommitted: committed
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
setStep({ type: 'steering-prompt' });
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
setupGit();
|
|
390
|
+
}, [step.type, services.commitService, initFlags, steeringFiles]);
|
|
391
|
+
// Render current step
|
|
392
|
+
const renderStep = () => {
|
|
393
|
+
switch (step.type) {
|
|
394
|
+
case 'welcome':
|
|
395
|
+
return (_jsx(WelcomeStep, { directoryExists: directoryExists, onNext: handleNext, onError: handleError, onConflictResolution: handleConflictResolution }));
|
|
396
|
+
case 'checking-existing':
|
|
397
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Spinner, { label: "Checking for existing configuration..." }) }));
|
|
398
|
+
case 'fetching':
|
|
399
|
+
return (_jsx(FetchStep, { progress: step.progress, repo: initFlags.repo ?? DEFAULT_REPO, version: initFlags.version ?? DEFAULT_VERSION, onNext: handleNext, onError: handleError }));
|
|
400
|
+
case 'extracting':
|
|
401
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Spinner, { label: "Creating directory structure..." }) }));
|
|
402
|
+
case 'guided-setup':
|
|
403
|
+
return (_jsx(SetupStep, { availableStacks: availableStacks, defaultStack: initFlags.stack, skipGuided: initFlags['skip-guided'], onNext: handleNext, onError: handleError, onComplete: handleSetupComplete }));
|
|
404
|
+
case 'applying-templates':
|
|
405
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Spinner, { label: "Applying stack templates..." }) }));
|
|
406
|
+
case 'git-setup':
|
|
407
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Spinner, { label: "Setting up git repository..." }) }));
|
|
408
|
+
case 'steering-prompt':
|
|
409
|
+
return (_jsx(SteeringStep, { steeringFiles: steeringFiles, noSteering: initFlags['no-steering'], onNext: handleNext, onError: handleError }));
|
|
410
|
+
case 'complete':
|
|
411
|
+
return _jsx(CompleteStep, { summary: step.summary });
|
|
412
|
+
case 'error':
|
|
413
|
+
return (_jsx(ErrorStep, { error: step.error, onRetry: () => setStep({ type: 'fetching', progress: { phase: 'connecting' } }), onAbort: () => exit() }));
|
|
414
|
+
default:
|
|
415
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Text, { color: "red", children: "Unknown step state" }) }));
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
return (_jsx(Box, { flexDirection: "column", children: renderStep() }));
|
|
419
|
+
};
|
|
420
|
+
//# sourceMappingURL=InitScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitScreen.js","sourceRoot":"","sources":["../../../src/components/screens/InitScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List screen component
|
|
3
|
+
* Task 5: List Screen Implementation
|
|
4
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { ScreenProps } from './ScreenProps.js';
|
|
8
|
+
/**
|
|
9
|
+
* ListScreen Component
|
|
10
|
+
* Displays all active flows in a table
|
|
11
|
+
* Requirements: 3.1-3.5 - List command implementation
|
|
12
|
+
*/
|
|
13
|
+
export declare const ListScreen: React.FC<ScreenProps>;
|
|
14
|
+
//# sourceMappingURL=ListScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListScreen.d.ts","sourceRoot":"","sources":["../../../src/components/screens/ListScreen.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqBpD;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAkF5C,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* List screen component
|
|
4
|
+
* Task 5: List Screen Implementation
|
|
5
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
|
|
6
|
+
*/
|
|
7
|
+
import { useState, useEffect } from 'react';
|
|
8
|
+
import { Box, Text } from 'ink';
|
|
9
|
+
import { createStateStore } from '../../services/StateStore.js';
|
|
10
|
+
import { Spinner, FlowTable } from '../ui/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Get base directory from environment or default
|
|
13
|
+
*/
|
|
14
|
+
function getBaseDir() {
|
|
15
|
+
return process.cwd();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* ListScreen Component
|
|
19
|
+
* Displays all active flows in a table
|
|
20
|
+
* Requirements: 3.1-3.5 - List command implementation
|
|
21
|
+
*/
|
|
22
|
+
export const ListScreen = () => {
|
|
23
|
+
const [state, setState] = useState({ step: 'loading' });
|
|
24
|
+
const [stateStore] = useState(() => createStateStore(getBaseDir()));
|
|
25
|
+
// Load all flows on mount
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const loadFlows = async () => {
|
|
28
|
+
try {
|
|
29
|
+
// Requirements 3.1, 3.2 - Scan and load all flow states
|
|
30
|
+
const flows = await stateStore.list();
|
|
31
|
+
setState({ step: 'loaded', flows });
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
setState({
|
|
35
|
+
step: 'error',
|
|
36
|
+
error: error instanceof Error ? error.message : 'Failed to load flows'
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
loadFlows();
|
|
41
|
+
}, [stateStore]);
|
|
42
|
+
// Render based on state
|
|
43
|
+
switch (state.step) {
|
|
44
|
+
case 'loading':
|
|
45
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: "list" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Spinner, { label: "Loading active flows..." }) })] }));
|
|
46
|
+
case 'loaded':
|
|
47
|
+
// Requirements 3.5 - Empty state message
|
|
48
|
+
if (state.flows.length === 0) {
|
|
49
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: "list" }) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { children: "No active flows found." }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Start a new flow with: " }), _jsx(Text, { color: "yellow", children: 'red64 start <feature> "description"' })] })] })] }));
|
|
50
|
+
}
|
|
51
|
+
// Requirements 3.3, 3.4 - Display table with flows
|
|
52
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: "list" }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Active flows (", state.flows.length, "):"] }) }), _jsx(Box, { marginTop: 1, children: _jsx(FlowTable, { flows: state.flows }) })] }));
|
|
53
|
+
case 'error':
|
|
54
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: "list" }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", state.error] }) })] }));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=ListScreen.js.map
|