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,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree Service
|
|
3
|
+
* Task 1.2: Build worktree service for git worktree operations
|
|
4
|
+
* Requirements: 1.3, 1.4
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
7
|
+
import { join, dirname, basename } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Execute git command and return result
|
|
10
|
+
*/
|
|
11
|
+
function execGit(args, cwd) {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
const process = spawn('git', args, {
|
|
14
|
+
cwd,
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
16
|
+
});
|
|
17
|
+
let stdout = '';
|
|
18
|
+
let stderr = '';
|
|
19
|
+
process.stdout?.on('data', (data) => {
|
|
20
|
+
stdout += data.toString();
|
|
21
|
+
});
|
|
22
|
+
process.stderr?.on('data', (data) => {
|
|
23
|
+
stderr += data.toString();
|
|
24
|
+
});
|
|
25
|
+
process.on('close', (code) => {
|
|
26
|
+
resolve({ stdout, stderr, exitCode: code ?? 0 });
|
|
27
|
+
});
|
|
28
|
+
process.on('error', (error) => {
|
|
29
|
+
resolve({
|
|
30
|
+
stdout,
|
|
31
|
+
stderr: stderr || `Git error: ${error.message}`,
|
|
32
|
+
exitCode: -1
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse porcelain output from git worktree list
|
|
39
|
+
*/
|
|
40
|
+
function parseWorktreeList(output) {
|
|
41
|
+
const worktrees = [];
|
|
42
|
+
const lines = output.trim().split('\n');
|
|
43
|
+
let currentPath = '';
|
|
44
|
+
let currentBranch = '';
|
|
45
|
+
for (const line of lines) {
|
|
46
|
+
if (line.startsWith('worktree ')) {
|
|
47
|
+
// If we have a previous worktree, push it
|
|
48
|
+
if (currentPath) {
|
|
49
|
+
worktrees.push({
|
|
50
|
+
path: currentPath,
|
|
51
|
+
branch: currentBranch,
|
|
52
|
+
exists: true
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
currentPath = line.substring(9); // Remove 'worktree '
|
|
56
|
+
currentBranch = '';
|
|
57
|
+
}
|
|
58
|
+
else if (line.startsWith('branch refs/heads/')) {
|
|
59
|
+
currentBranch = line.substring(18); // Remove 'branch refs/heads/'
|
|
60
|
+
}
|
|
61
|
+
else if (line === 'detached') {
|
|
62
|
+
currentBranch = '';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Push last worktree
|
|
66
|
+
if (currentPath) {
|
|
67
|
+
worktrees.push({
|
|
68
|
+
path: currentPath,
|
|
69
|
+
branch: currentBranch,
|
|
70
|
+
exists: true
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return worktrees;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Sanitize feature name for use in git branch names and paths
|
|
77
|
+
* - Replace spaces with hyphens
|
|
78
|
+
* - Remove invalid characters
|
|
79
|
+
* - Convert to lowercase
|
|
80
|
+
*/
|
|
81
|
+
export function sanitizeFeatureName(feature) {
|
|
82
|
+
return feature
|
|
83
|
+
.toLowerCase()
|
|
84
|
+
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
85
|
+
.replace(/[^a-z0-9\-_]/g, '') // Remove invalid characters
|
|
86
|
+
.replace(/-+/g, '-') // Collapse multiple hyphens
|
|
87
|
+
.replace(/^-|-$/g, ''); // Trim leading/trailing hyphens
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the worktrees root directory (sibling to repo)
|
|
91
|
+
* Following GitLens/VSCode convention: ../repo-name.worktrees/
|
|
92
|
+
*/
|
|
93
|
+
export function getWorktreesRoot(repoPath) {
|
|
94
|
+
const repoName = basename(repoPath);
|
|
95
|
+
const parentDir = dirname(repoPath);
|
|
96
|
+
return join(parentDir, `${repoName}.worktrees`);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get worktree path for a feature
|
|
100
|
+
* Places worktrees outside the repo: ../repo-name.worktrees/feature-name
|
|
101
|
+
*/
|
|
102
|
+
function getWorktreePath(repoPath, feature) {
|
|
103
|
+
return join(getWorktreesRoot(repoPath), sanitizeFeatureName(feature));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get branch name for a feature
|
|
107
|
+
*/
|
|
108
|
+
function getBranchName(feature) {
|
|
109
|
+
return `feature/${sanitizeFeatureName(feature)}`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create worktree service
|
|
113
|
+
* Requirements: 1.3, 1.4 - Factory function for git worktree operations
|
|
114
|
+
*/
|
|
115
|
+
export function createWorktreeService() {
|
|
116
|
+
return {
|
|
117
|
+
/**
|
|
118
|
+
* Check if a worktree exists for a given feature
|
|
119
|
+
* Requirements: 1.3 - Check for existing worktree
|
|
120
|
+
*/
|
|
121
|
+
async check(repoPath, feature) {
|
|
122
|
+
const result = await execGit(['worktree', 'list', '--porcelain'], repoPath);
|
|
123
|
+
if (result.exitCode !== 0) {
|
|
124
|
+
return {
|
|
125
|
+
path: '',
|
|
126
|
+
branch: '',
|
|
127
|
+
exists: false
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const worktrees = parseWorktreeList(result.stdout);
|
|
131
|
+
const expectedPath = getWorktreePath(repoPath, feature);
|
|
132
|
+
const expectedBranch = getBranchName(feature);
|
|
133
|
+
const found = worktrees.find((wt) => wt.path === expectedPath || wt.branch === expectedBranch);
|
|
134
|
+
if (found) {
|
|
135
|
+
return {
|
|
136
|
+
path: found.path,
|
|
137
|
+
branch: found.branch,
|
|
138
|
+
exists: true
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
path: '',
|
|
143
|
+
branch: '',
|
|
144
|
+
exists: false
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
/**
|
|
148
|
+
* Create a new worktree for a feature
|
|
149
|
+
* Requirements: 1.4 - Create worktree at ../repo.worktrees/<feature> with branch feature/<feature>
|
|
150
|
+
*/
|
|
151
|
+
async create(repoPath, feature) {
|
|
152
|
+
const worktreePath = getWorktreePath(repoPath, feature);
|
|
153
|
+
const branchName = getBranchName(feature);
|
|
154
|
+
const result = await execGit(['worktree', 'add', '-b', branchName, worktreePath], repoPath);
|
|
155
|
+
if (result.exitCode !== 0) {
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
path: undefined,
|
|
159
|
+
error: result.stderr || 'Failed to create worktree'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
success: true,
|
|
164
|
+
path: worktreePath,
|
|
165
|
+
error: undefined
|
|
166
|
+
};
|
|
167
|
+
},
|
|
168
|
+
/**
|
|
169
|
+
* Remove a worktree
|
|
170
|
+
* Requirements: 1.4 - Worktree cleanup
|
|
171
|
+
*/
|
|
172
|
+
async remove(repoPath, feature, force) {
|
|
173
|
+
const worktreePath = getWorktreePath(repoPath, feature);
|
|
174
|
+
const args = force
|
|
175
|
+
? ['worktree', 'remove', '--force', worktreePath]
|
|
176
|
+
: ['worktree', 'remove', worktreePath];
|
|
177
|
+
const result = await execGit(args, repoPath);
|
|
178
|
+
if (result.exitCode !== 0) {
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
path: undefined,
|
|
182
|
+
error: result.stderr || 'Failed to remove worktree'
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
success: true,
|
|
187
|
+
path: worktreePath,
|
|
188
|
+
error: undefined
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
/**
|
|
192
|
+
* List all worktrees
|
|
193
|
+
* Requirements: 1.3 - Parse git worktree list output
|
|
194
|
+
*/
|
|
195
|
+
async list(repoPath) {
|
|
196
|
+
const result = await execGit(['worktree', 'list', '--porcelain'], repoPath);
|
|
197
|
+
if (result.exitCode !== 0 || !result.stdout.trim()) {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
return parseWorktreeList(result.stdout);
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=WorktreeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorktreeService.js","sourceRoot":"","sources":["../../src/services/WorktreeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Services index
|
|
3
|
+
*/
|
|
4
|
+
export { createFlowMachine, transition, type FlowMachineService } from './FlowStateMachine.js';
|
|
5
|
+
export { createStateStore, type StateStoreService } from './StateStore.js';
|
|
6
|
+
export { createAgentInvoker, type AgentInvokerService } from './AgentInvoker.js';
|
|
7
|
+
export { createPhaseExecutor, type PhaseExecutorService, type PhaseExecutionResult } from './PhaseExecutor.js';
|
|
8
|
+
export { createFeatureValidator, type FeatureValidatorService, type ValidationResult } from './FeatureValidator.js';
|
|
9
|
+
export { createWorktreeService, sanitizeFeatureName, type WorktreeServiceInterface, type WorktreeInfo, type WorktreeResult } from './WorktreeService.js';
|
|
10
|
+
export { createExtendedFlowMachine, extendedTransition, type ExtendedFlowMachineService } from './ExtendedFlowStateMachine.js';
|
|
11
|
+
export { createCommitService, type CommitServiceInterface, type CommitResult } from './CommitService.js';
|
|
12
|
+
export { createTaskParser, type TaskParserService, type Task } from './TaskParser.js';
|
|
13
|
+
export { createTaskRunner, type TaskRunnerService, type TaskExecutionOptions, type TaskExecutionResult, type CheckpointDecision } from './TaskRunner.js';
|
|
14
|
+
export { createPRCreatorService, type PRCreatorServiceInterface, type PRCreateOptions, type PRCreateResult, type PRMergeOptions, type PRMergeResult } from './PRCreatorService.js';
|
|
15
|
+
export { createGitStatusChecker, type GitStatusCheckerService, type GitStatus } from './GitStatusChecker.js';
|
|
16
|
+
export { createPRStatusFetcher, type PRStatusFetcherService, type PRStatus, type PRCloseResult } from './PRStatusFetcher.js';
|
|
17
|
+
export { createBranchService, type BranchServiceInterface, type BranchDeleteResult } from './BranchService.js';
|
|
18
|
+
export { createCacheService, type CacheService, type CacheEntry, type CacheServiceConfig } from './CacheService.js';
|
|
19
|
+
export { createTemplateService, type TemplateService, type StructureResult, type StackTemplateOptions, type ExtractOptions } from './TemplateService.js';
|
|
20
|
+
export { createConfigService, type ConfigService, type InitConfig, type ProjectType } from './ConfigService.js';
|
|
21
|
+
export { createGitHubService, GitHubFetchError, type GitHubService, type GitHubServiceConfig, type FetchOptions, type FetchProgress, type FetchResult, type GitHubErrorCode } from './GitHubService.js';
|
|
22
|
+
export { createSpecInitService, type SpecInitService, type SpecInitResult } from './SpecInitService.js';
|
|
23
|
+
export { createClaudeErrorDetector, type ClaudeErrorDetectorService, type ClaudeError, type ClaudeErrorCode } from './ClaudeErrorDetector.js';
|
|
24
|
+
export { createClaudeHealthCheck, type ClaudeHealthCheckService, type HealthCheckResult, type HealthCheckOptions } from './ClaudeHealthCheck.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Services index
|
|
3
|
+
*/
|
|
4
|
+
export { createFlowMachine, transition } from './FlowStateMachine.js';
|
|
5
|
+
export { createStateStore } from './StateStore.js';
|
|
6
|
+
export { createAgentInvoker } from './AgentInvoker.js';
|
|
7
|
+
export { createPhaseExecutor } from './PhaseExecutor.js';
|
|
8
|
+
export { createFeatureValidator } from './FeatureValidator.js';
|
|
9
|
+
export { createWorktreeService, sanitizeFeatureName } from './WorktreeService.js';
|
|
10
|
+
export { createExtendedFlowMachine, extendedTransition } from './ExtendedFlowStateMachine.js';
|
|
11
|
+
export { createCommitService } from './CommitService.js';
|
|
12
|
+
export { createTaskParser } from './TaskParser.js';
|
|
13
|
+
export { createTaskRunner } from './TaskRunner.js';
|
|
14
|
+
export { createPRCreatorService } from './PRCreatorService.js';
|
|
15
|
+
export { createGitStatusChecker } from './GitStatusChecker.js';
|
|
16
|
+
export { createPRStatusFetcher } from './PRStatusFetcher.js';
|
|
17
|
+
export { createBranchService } from './BranchService.js';
|
|
18
|
+
export { createCacheService } from './CacheService.js';
|
|
19
|
+
export { createTemplateService } from './TemplateService.js';
|
|
20
|
+
export { createConfigService } from './ConfigService.js';
|
|
21
|
+
export { createGitHubService, GitHubFetchError } from './GitHubService.js';
|
|
22
|
+
export { createSpecInitService } from './SpecInitService.js';
|
|
23
|
+
export { createClaudeErrorDetector } from './ClaudeErrorDetector.js';
|
|
24
|
+
export { createClaudeHealthCheck } from './ClaudeHealthCheck.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EAGvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAKjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EAGvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EAItB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EAIpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAOjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EAIxB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended Flow Types
|
|
3
|
+
* Task 2.1: Define extended flow phase types and events
|
|
4
|
+
* Requirements: 2.1, 2.5
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Workflow mode - greenfield for new projects, brownfield for existing
|
|
8
|
+
* Requirements: 2.5 - Support both greenfield and brownfield phase sequences
|
|
9
|
+
*/
|
|
10
|
+
export type WorkflowMode = 'greenfield' | 'brownfield';
|
|
11
|
+
/**
|
|
12
|
+
* Extended FlowPhase discriminated union
|
|
13
|
+
* Requirements: 2.1 - Define workflow phases including brownfield-specific phases
|
|
14
|
+
*/
|
|
15
|
+
export type ExtendedFlowPhase = {
|
|
16
|
+
type: 'idle';
|
|
17
|
+
} | {
|
|
18
|
+
type: 'initializing';
|
|
19
|
+
feature: string;
|
|
20
|
+
description: string;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'requirements-generating';
|
|
23
|
+
feature: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'requirements-approval';
|
|
26
|
+
feature: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'gap-analysis';
|
|
29
|
+
feature: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'gap-review';
|
|
32
|
+
feature: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'design-generating';
|
|
35
|
+
feature: string;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'design-approval';
|
|
38
|
+
feature: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'design-validation';
|
|
41
|
+
feature: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'design-validation-review';
|
|
44
|
+
feature: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'tasks-generating';
|
|
47
|
+
feature: string;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'tasks-approval';
|
|
50
|
+
feature: string;
|
|
51
|
+
} | {
|
|
52
|
+
type: 'implementing';
|
|
53
|
+
feature: string;
|
|
54
|
+
currentTask: number;
|
|
55
|
+
totalTasks: number;
|
|
56
|
+
} | {
|
|
57
|
+
type: 'paused';
|
|
58
|
+
feature: string;
|
|
59
|
+
pausedAt: number;
|
|
60
|
+
totalTasks: number;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'validation';
|
|
63
|
+
feature: string;
|
|
64
|
+
} | {
|
|
65
|
+
type: 'pr';
|
|
66
|
+
feature: string;
|
|
67
|
+
} | {
|
|
68
|
+
type: 'merge-decision';
|
|
69
|
+
feature: string;
|
|
70
|
+
prUrl: string;
|
|
71
|
+
} | {
|
|
72
|
+
type: 'complete';
|
|
73
|
+
feature: string;
|
|
74
|
+
} | {
|
|
75
|
+
type: 'aborted';
|
|
76
|
+
feature: string;
|
|
77
|
+
reason: string;
|
|
78
|
+
} | {
|
|
79
|
+
type: 'error';
|
|
80
|
+
feature: string;
|
|
81
|
+
error: string;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Extended FlowEvent discriminated union
|
|
85
|
+
* Requirements: 2.1 - Define events including task/PR events
|
|
86
|
+
*/
|
|
87
|
+
export type ExtendedFlowEvent = {
|
|
88
|
+
type: 'START';
|
|
89
|
+
feature: string;
|
|
90
|
+
description: string;
|
|
91
|
+
mode: WorkflowMode;
|
|
92
|
+
} | {
|
|
93
|
+
type: 'RESUME';
|
|
94
|
+
feature: string;
|
|
95
|
+
} | {
|
|
96
|
+
type: 'PHASE_COMPLETE';
|
|
97
|
+
} | {
|
|
98
|
+
type: 'PHASE_COMPLETE_WITH_DATA';
|
|
99
|
+
data: Record<string, unknown>;
|
|
100
|
+
} | {
|
|
101
|
+
type: 'APPROVE';
|
|
102
|
+
} | {
|
|
103
|
+
type: 'REJECT';
|
|
104
|
+
} | {
|
|
105
|
+
type: 'PAUSE';
|
|
106
|
+
} | {
|
|
107
|
+
type: 'ABORT';
|
|
108
|
+
reason: string;
|
|
109
|
+
} | {
|
|
110
|
+
type: 'ERROR';
|
|
111
|
+
error: string;
|
|
112
|
+
} | {
|
|
113
|
+
type: 'TASK_COMPLETE';
|
|
114
|
+
taskIndex: number;
|
|
115
|
+
} | {
|
|
116
|
+
type: 'PR_CREATED';
|
|
117
|
+
prUrl: string;
|
|
118
|
+
} | {
|
|
119
|
+
type: 'MERGE';
|
|
120
|
+
} | {
|
|
121
|
+
type: 'SKIP_MERGE';
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Greenfield phase sequence constant
|
|
125
|
+
* Requirements: 2.5 - Define valid phase order for greenfield mode
|
|
126
|
+
*/
|
|
127
|
+
export declare const GREENFIELD_PHASES: readonly ExtendedFlowPhase['type'][];
|
|
128
|
+
/**
|
|
129
|
+
* Brownfield phase sequence constant
|
|
130
|
+
* Requirements: 2.5 - Define valid phase order for brownfield mode
|
|
131
|
+
*/
|
|
132
|
+
export declare const BROWNFIELD_PHASES: readonly ExtendedFlowPhase['type'][];
|
|
133
|
+
/**
|
|
134
|
+
* Check if a phase type is an approval phase
|
|
135
|
+
*/
|
|
136
|
+
export declare function isApprovalPhase(phaseType: ExtendedFlowPhase['type']): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Check if a phase type is a generating phase
|
|
139
|
+
*/
|
|
140
|
+
export declare function isGeneratingPhase(phaseType: ExtendedFlowPhase['type']): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Check if a phase type is a terminal phase
|
|
143
|
+
*/
|
|
144
|
+
export declare function isTerminalPhase(phaseType: ExtendedFlowPhase['type']): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Get the phase sequence for a workflow mode
|
|
147
|
+
*/
|
|
148
|
+
export declare function getPhaseSequence(mode: WorkflowMode): readonly ExtendedFlowPhase['type'][];
|
|
149
|
+
/**
|
|
150
|
+
* Extended FlowState interface with workflow mode and PR info
|
|
151
|
+
*/
|
|
152
|
+
export interface ExtendedFlowState {
|
|
153
|
+
readonly feature: string;
|
|
154
|
+
readonly phase: ExtendedFlowPhase;
|
|
155
|
+
readonly createdAt: string;
|
|
156
|
+
readonly updatedAt: string;
|
|
157
|
+
readonly history: readonly ExtendedFlowPhase[];
|
|
158
|
+
readonly metadata: {
|
|
159
|
+
readonly description: string;
|
|
160
|
+
readonly mode: WorkflowMode;
|
|
161
|
+
readonly tier?: string;
|
|
162
|
+
readonly worktreePath?: string;
|
|
163
|
+
readonly prUrl?: string;
|
|
164
|
+
readonly prNumber?: number;
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=extended-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extended-flow.d.ts","sourceRoot":"","sources":["../../src/types/extended-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended Flow Types
|
|
3
|
+
* Task 2.1: Define extended flow phase types and events
|
|
4
|
+
* Requirements: 2.1, 2.5
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Greenfield phase sequence constant
|
|
8
|
+
* Requirements: 2.5 - Define valid phase order for greenfield mode
|
|
9
|
+
*/
|
|
10
|
+
export const GREENFIELD_PHASES = [
|
|
11
|
+
'initializing',
|
|
12
|
+
'requirements-generating',
|
|
13
|
+
'requirements-approval',
|
|
14
|
+
'design-generating',
|
|
15
|
+
'design-approval',
|
|
16
|
+
'tasks-generating',
|
|
17
|
+
'tasks-approval',
|
|
18
|
+
'implementing',
|
|
19
|
+
'validation',
|
|
20
|
+
'pr',
|
|
21
|
+
'merge-decision',
|
|
22
|
+
'complete'
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Brownfield phase sequence constant
|
|
26
|
+
* Requirements: 2.5 - Define valid phase order for brownfield mode
|
|
27
|
+
*/
|
|
28
|
+
export const BROWNFIELD_PHASES = [
|
|
29
|
+
'initializing',
|
|
30
|
+
'requirements-generating',
|
|
31
|
+
'requirements-approval',
|
|
32
|
+
'gap-analysis',
|
|
33
|
+
'gap-review',
|
|
34
|
+
'design-generating',
|
|
35
|
+
'design-approval',
|
|
36
|
+
'design-validation',
|
|
37
|
+
'design-validation-review',
|
|
38
|
+
'tasks-generating',
|
|
39
|
+
'tasks-approval',
|
|
40
|
+
'implementing',
|
|
41
|
+
'validation',
|
|
42
|
+
'pr',
|
|
43
|
+
'merge-decision',
|
|
44
|
+
'complete'
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Approval phases - require user input to proceed
|
|
48
|
+
*/
|
|
49
|
+
const APPROVAL_PHASES = new Set([
|
|
50
|
+
'requirements-approval',
|
|
51
|
+
'design-approval',
|
|
52
|
+
'tasks-approval',
|
|
53
|
+
'gap-review',
|
|
54
|
+
'design-validation-review',
|
|
55
|
+
'merge-decision'
|
|
56
|
+
]);
|
|
57
|
+
/**
|
|
58
|
+
* Generating/executing phases - agent or automation is working
|
|
59
|
+
*/
|
|
60
|
+
const GENERATING_PHASES = new Set([
|
|
61
|
+
'initializing',
|
|
62
|
+
'requirements-generating',
|
|
63
|
+
'design-generating',
|
|
64
|
+
'tasks-generating',
|
|
65
|
+
'gap-analysis',
|
|
66
|
+
'design-validation',
|
|
67
|
+
'implementing',
|
|
68
|
+
'validation',
|
|
69
|
+
'pr'
|
|
70
|
+
]);
|
|
71
|
+
/**
|
|
72
|
+
* Terminal phases - flow has ended
|
|
73
|
+
*/
|
|
74
|
+
const TERMINAL_PHASES = new Set([
|
|
75
|
+
'complete',
|
|
76
|
+
'aborted',
|
|
77
|
+
'error'
|
|
78
|
+
]);
|
|
79
|
+
/**
|
|
80
|
+
* Check if a phase type is an approval phase
|
|
81
|
+
*/
|
|
82
|
+
export function isApprovalPhase(phaseType) {
|
|
83
|
+
return APPROVAL_PHASES.has(phaseType);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a phase type is a generating phase
|
|
87
|
+
*/
|
|
88
|
+
export function isGeneratingPhase(phaseType) {
|
|
89
|
+
return GENERATING_PHASES.has(phaseType);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if a phase type is a terminal phase
|
|
93
|
+
*/
|
|
94
|
+
export function isTerminalPhase(phaseType) {
|
|
95
|
+
return TERMINAL_PHASES.has(phaseType);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the phase sequence for a workflow mode
|
|
99
|
+
*/
|
|
100
|
+
export function getPhaseSequence(mode) {
|
|
101
|
+
return mode === 'brownfield' ? BROWNFIELD_PHASES : GREENFIELD_PHASES;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=extended-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extended-flow.js","sourceRoot":"","sources":["../../src/types/extended-flow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8DH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyC;IACrE,cAAc;IACd,yBAAyB;IACzB,uBAAuB;IACvB,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,IAAI;IACJ,gBAAgB;IAChB,UAAU;CACF,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyC;IACrE,cAAc;IACd,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,0BAA0B;IAC1B,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,IAAI;IACJ,gBAAgB;IAChB,UAAU;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,eAAe,GAA2C,IAAI,GAAG,CAAC;IACtE,uBAAuB;IACvB,iBAAiB;IACjB,gBAAgB;IAChB,YAAY;IACZ,0BAA0B;IAC1B,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,iBAAiB,GAA2C,IAAI,GAAG,CAAC;IACxE,cAAc;IACd,yBAAyB;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,IAAI;CACL,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,eAAe,GAA2C,IAAI,GAAG,CAAC;IACtE,UAAU;IACV,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoC;IAClE,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoC;IACpE,OAAO,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoC;IAClE,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB;IAElB,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACvE,CAAC"}
|