ai-phase-builder 1.0.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 +190 -0
- package/dist/cli/commands/config.d.ts +8 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +29 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/handover.d.ts +7 -0
- package/dist/cli/commands/handover.d.ts.map +1 -0
- package/dist/cli/commands/handover.js +188 -0
- package/dist/cli/commands/handover.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +249 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +7 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +193 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/refine.d.ts +6 -0
- package/dist/cli/commands/refine.d.ts.map +1 -0
- package/dist/cli/commands/refine.js +272 -0
- package/dist/cli/commands/refine.js.map +1 -0
- package/dist/cli/commands/rollback.d.ts +6 -0
- package/dist/cli/commands/rollback.d.ts.map +1 -0
- package/dist/cli/commands/rollback.js +182 -0
- package/dist/cli/commands/rollback.js.map +1 -0
- package/dist/cli/commands/run.d.ts +8 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +277 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +168 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +6 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +194 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +88 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config-manager.d.ts +39 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +213 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/git-integration.d.ts +49 -0
- package/dist/core/git-integration.d.ts.map +1 -0
- package/dist/core/git-integration.js +223 -0
- package/dist/core/git-integration.js.map +1 -0
- package/dist/core/prompt-builder.d.ts +45 -0
- package/dist/core/prompt-builder.d.ts.map +1 -0
- package/dist/core/prompt-builder.js +342 -0
- package/dist/core/prompt-builder.js.map +1 -0
- package/dist/core/state-manager.d.ts +65 -0
- package/dist/core/state-manager.d.ts.map +1 -0
- package/dist/core/state-manager.js +200 -0
- package/dist/core/state-manager.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import boxen from 'boxen';
|
|
7
|
+
import { loadGlobalConfig, loadProjectConfig, saveProjectConfig, getProjectPhasesDir, runSetupWizard, } from '../../core/config-manager.js';
|
|
8
|
+
import { createInitialState, saveProjectState } from '../../core/state-manager.js';
|
|
9
|
+
import { initGitRepo, getBaseCommit } from '../../core/git-integration.js';
|
|
10
|
+
import { refineCommand } from './refine.js';
|
|
11
|
+
export async function initCommand(options) {
|
|
12
|
+
// Check for global config first
|
|
13
|
+
let globalConfig = await loadGlobalConfig();
|
|
14
|
+
if (!globalConfig || !globalConfig.setup_complete) {
|
|
15
|
+
globalConfig = await runSetupWizard();
|
|
16
|
+
}
|
|
17
|
+
// Check if already initialized
|
|
18
|
+
const existingConfig = await loadProjectConfig();
|
|
19
|
+
if (existingConfig) {
|
|
20
|
+
const { overwrite } = await inquirer.prompt([
|
|
21
|
+
{
|
|
22
|
+
type: 'confirm',
|
|
23
|
+
name: 'overwrite',
|
|
24
|
+
message: 'This project is already initialized. Reinitialize?',
|
|
25
|
+
default: false,
|
|
26
|
+
},
|
|
27
|
+
]);
|
|
28
|
+
if (!overwrite) {
|
|
29
|
+
console.log(chalk.dim('Initialization cancelled.'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
console.log(boxen(chalk.bold.cyan('š Initialize AI Phase Builder'), {
|
|
34
|
+
padding: 1,
|
|
35
|
+
margin: { top: 1, bottom: 1, left: 0, right: 0 },
|
|
36
|
+
borderStyle: 'round',
|
|
37
|
+
borderColor: 'cyan',
|
|
38
|
+
}));
|
|
39
|
+
// Gather project info
|
|
40
|
+
const projectName = path.basename(process.cwd());
|
|
41
|
+
const answers = await inquirer.prompt([
|
|
42
|
+
{
|
|
43
|
+
type: 'input',
|
|
44
|
+
name: 'name',
|
|
45
|
+
message: 'Project name:',
|
|
46
|
+
default: projectName,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: 'list',
|
|
50
|
+
name: 'ui_library',
|
|
51
|
+
message: 'UI library:',
|
|
52
|
+
choices: ['shadcn', 'radix', 'chakra', 'none'],
|
|
53
|
+
default: options.ui || globalConfig.defaults.ui_library,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'list',
|
|
57
|
+
name: 'design_system',
|
|
58
|
+
message: 'Design principles:',
|
|
59
|
+
choices: ['vercel', 'apple', 'material', 'custom'],
|
|
60
|
+
default: options.design || globalConfig.defaults.design_system,
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
const spinner = ora('Setting up project structure...').start();
|
|
64
|
+
try {
|
|
65
|
+
// Create directory structure
|
|
66
|
+
const phasesDir = getProjectPhasesDir();
|
|
67
|
+
await fs.ensureDir(phasesDir);
|
|
68
|
+
await fs.ensureDir(path.join(phasesDir, 'phases'));
|
|
69
|
+
await fs.ensureDir(path.join(phasesDir, 'logs'));
|
|
70
|
+
await fs.ensureDir(path.join(phasesDir, 'templates'));
|
|
71
|
+
// Create project config
|
|
72
|
+
const projectConfig = {
|
|
73
|
+
project_name: answers.name,
|
|
74
|
+
created_at: new Date().toISOString(),
|
|
75
|
+
ui_library: answers.ui_library,
|
|
76
|
+
design_system: answers.design_system,
|
|
77
|
+
total_phases: 0,
|
|
78
|
+
current_phase: 0,
|
|
79
|
+
current_attempt: 0,
|
|
80
|
+
status: 'planning',
|
|
81
|
+
};
|
|
82
|
+
await saveProjectConfig(projectConfig);
|
|
83
|
+
// Create initial templates
|
|
84
|
+
await createTemplates(phasesDir, answers.ui_library, answers.design_system);
|
|
85
|
+
// Initialize git if needed
|
|
86
|
+
await initGitRepo();
|
|
87
|
+
// Create initial state
|
|
88
|
+
const baseCommit = await getBaseCommit();
|
|
89
|
+
const state = await createInitialState(answers.name, options.fromIdea || '');
|
|
90
|
+
state.git_base_commit = baseCommit;
|
|
91
|
+
await saveProjectState(state);
|
|
92
|
+
// Create context.md
|
|
93
|
+
await createContextFile(phasesDir, answers);
|
|
94
|
+
spinner.succeed('Project structure created!');
|
|
95
|
+
// Show summary
|
|
96
|
+
console.log(chalk.green('\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā'));
|
|
97
|
+
console.log(chalk.green.bold(' ā
Project Initialized!'));
|
|
98
|
+
console.log(chalk.green('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n'));
|
|
99
|
+
console.log(chalk.dim('Created structure:'));
|
|
100
|
+
console.log(chalk.white(' .ai-phases/'));
|
|
101
|
+
console.log(chalk.dim(' āāā config.json ') + chalk.cyan('# Project settings'));
|
|
102
|
+
console.log(chalk.dim(' āāā state.json ') + chalk.cyan('# Phase tracking'));
|
|
103
|
+
console.log(chalk.dim(' āāā context.md ') + chalk.cyan('# Persistent context'));
|
|
104
|
+
console.log(chalk.dim(' āāā phases/ ') + chalk.cyan('# Phase directories'));
|
|
105
|
+
console.log(chalk.dim(' āāā logs/ ') + chalk.cyan('# Decision logs'));
|
|
106
|
+
console.log(chalk.dim(' āāā templates/ ') + chalk.cyan('# Prompt templates'));
|
|
107
|
+
console.log();
|
|
108
|
+
// If --from-idea was provided, run refine
|
|
109
|
+
if (options.fromIdea) {
|
|
110
|
+
console.log(chalk.cyan('\nStarting idea refinement...\n'));
|
|
111
|
+
await refineCommand(options.fromIdea, {});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.log(chalk.white('Next steps:\n'));
|
|
115
|
+
console.log(chalk.cyan(' ai-phases refine "your project idea"'));
|
|
116
|
+
console.log(chalk.dim(' or'));
|
|
117
|
+
console.log(chalk.cyan(' ai-phases plan --interactive\n'));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
spinner.fail('Failed to initialize project');
|
|
122
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function createTemplates(phasesDir, uiLibrary, designSystem) {
|
|
127
|
+
// Handover template
|
|
128
|
+
const handoverTemplate = `# Handover - Phase [N]: [Name]
|
|
129
|
+
|
|
130
|
+
## Completed Work
|
|
131
|
+
- [What was implemented]
|
|
132
|
+
|
|
133
|
+
## Files Modified
|
|
134
|
+
| File | Description |
|
|
135
|
+
|------|-------------|
|
|
136
|
+
| \`path/to/file\` | What this file does |
|
|
137
|
+
|
|
138
|
+
## Key Decisions
|
|
139
|
+
- **Decision**: [What was decided]
|
|
140
|
+
- **Rationale**: [Why]
|
|
141
|
+
- **Trade-offs**: [What we gave up]
|
|
142
|
+
|
|
143
|
+
## Known Issues
|
|
144
|
+
- [ ] [Issue description]
|
|
145
|
+
|
|
146
|
+
## Context for Next Phase
|
|
147
|
+
- [Important information for the next developer]
|
|
148
|
+
|
|
149
|
+
## Warnings / Gotchas
|
|
150
|
+
- ā ļø [Something to watch out for]
|
|
151
|
+
|
|
152
|
+
## Validation Status
|
|
153
|
+
- [ ] [Criterion 1]
|
|
154
|
+
- [ ] [Criterion 2]
|
|
155
|
+
`;
|
|
156
|
+
const failureTemplate = `# Failure Report - Phase [N], Attempt [M]
|
|
157
|
+
|
|
158
|
+
## Date
|
|
159
|
+
[ISO timestamp]
|
|
160
|
+
|
|
161
|
+
## What Was Attempted
|
|
162
|
+
[Describe what the phase tried to accomplish]
|
|
163
|
+
|
|
164
|
+
## What Went Wrong
|
|
165
|
+
[Describe the error or failure]
|
|
166
|
+
|
|
167
|
+
## Error Details
|
|
168
|
+
\`\`\`
|
|
169
|
+
[Error messages, stack traces, etc.]
|
|
170
|
+
\`\`\`
|
|
171
|
+
|
|
172
|
+
## Root Cause Analysis
|
|
173
|
+
[Why did this happen?]
|
|
174
|
+
|
|
175
|
+
## Suggested Fix for Next Attempt
|
|
176
|
+
[What should be done differently]
|
|
177
|
+
|
|
178
|
+
## Files That May Need Attention
|
|
179
|
+
- \`path/to/file\` - [Why]
|
|
180
|
+
`;
|
|
181
|
+
const phasePromptTemplate = `# Phase [N]: [Name]
|
|
182
|
+
|
|
183
|
+
## Model
|
|
184
|
+
[Model to use: Claude Opus / Gemini Flash]
|
|
185
|
+
|
|
186
|
+
## Context
|
|
187
|
+
[Phase description and goals]
|
|
188
|
+
|
|
189
|
+
## Previous Phase Handover
|
|
190
|
+
[If applicable, summary from previous phase]
|
|
191
|
+
|
|
192
|
+
## Documentation Lookup (Context7)
|
|
193
|
+
Before coding, use @context7 to look up:
|
|
194
|
+
- [Library/framework topic]
|
|
195
|
+
|
|
196
|
+
## Tasks
|
|
197
|
+
1. [Task 1]
|
|
198
|
+
2. [Task 2]
|
|
199
|
+
|
|
200
|
+
## Validation Criteria
|
|
201
|
+
- [ ] [How to verify completion]
|
|
202
|
+
|
|
203
|
+
## Design Constraints
|
|
204
|
+
- UI Library: ${uiLibrary}
|
|
205
|
+
- Design System: ${designSystem}
|
|
206
|
+
|
|
207
|
+
## Rules
|
|
208
|
+
- Only modify files relevant to this phase
|
|
209
|
+
- Don't refactor unrelated code
|
|
210
|
+
- Test each change before moving on
|
|
211
|
+
`;
|
|
212
|
+
await fs.writeFile(path.join(phasesDir, 'templates', 'handover.md'), handoverTemplate);
|
|
213
|
+
await fs.writeFile(path.join(phasesDir, 'templates', 'failure-report.md'), failureTemplate);
|
|
214
|
+
await fs.writeFile(path.join(phasesDir, 'templates', 'phase-prompt.md'), phasePromptTemplate);
|
|
215
|
+
}
|
|
216
|
+
async function createContextFile(phasesDir, config) {
|
|
217
|
+
const contextContent = `# Project Context - ${config.name}
|
|
218
|
+
|
|
219
|
+
This file contains persistent context that carries across all phases.
|
|
220
|
+
It's automatically included in prompts and handovers.
|
|
221
|
+
|
|
222
|
+
## Project Overview
|
|
223
|
+
[To be filled after refinement]
|
|
224
|
+
|
|
225
|
+
## Technical Stack
|
|
226
|
+
- **UI Library**: ${config.ui_library}
|
|
227
|
+
- **Design System**: ${config.design_system}
|
|
228
|
+
|
|
229
|
+
## Design Tokens
|
|
230
|
+
[To be extracted from design system]
|
|
231
|
+
|
|
232
|
+
## Architecture Decisions
|
|
233
|
+
[Record important decisions here]
|
|
234
|
+
|
|
235
|
+
## Component Library
|
|
236
|
+
[Available components will be listed here]
|
|
237
|
+
|
|
238
|
+
## API Contracts
|
|
239
|
+
[External APIs and their schemas]
|
|
240
|
+
|
|
241
|
+
## Known Constraints
|
|
242
|
+
[Technical or business constraints]
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
*This file is managed by AI Phase Builder*
|
|
246
|
+
`;
|
|
247
|
+
await fs.writeFile(path.join(phasesDir, 'context.md'), contextContent);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDrE"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import { getProjectPhasesDir, loadProjectConfig } from '../../core/config-manager.js';
|
|
6
|
+
import { loadProjectState, saveProjectState, createPhaseState, } from '../../core/state-manager.js';
|
|
7
|
+
export async function planCommand(options) {
|
|
8
|
+
const projectConfig = await loadProjectConfig();
|
|
9
|
+
if (!projectConfig) {
|
|
10
|
+
console.log(chalk.yellow('Project not initialized. Run: ai-phases init'));
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const state = await loadProjectState();
|
|
14
|
+
if (!state) {
|
|
15
|
+
console.log(chalk.yellow('Project state not found. Run: ai-phases init'));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
if (options.interactive) {
|
|
19
|
+
await interactivePlanning(state);
|
|
20
|
+
}
|
|
21
|
+
else if (options.fromReadme) {
|
|
22
|
+
await planFromReadme(state);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Open plan.md for editing
|
|
26
|
+
const planPath = path.join(getProjectPhasesDir(), 'plan.md');
|
|
27
|
+
if (await fs.pathExists(planPath)) {
|
|
28
|
+
console.log(chalk.white('\nExisting plan found at:'));
|
|
29
|
+
console.log(chalk.cyan(` ${planPath}\n`));
|
|
30
|
+
const { action } = await inquirer.prompt([
|
|
31
|
+
{
|
|
32
|
+
type: 'list',
|
|
33
|
+
name: 'action',
|
|
34
|
+
message: 'What would you like to do?',
|
|
35
|
+
choices: [
|
|
36
|
+
{ name: 'Edit existing plan', value: 'edit' },
|
|
37
|
+
{ name: 'Create new plan (interactive)', value: 'interactive' },
|
|
38
|
+
{ name: 'View current plan', value: 'view' },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
]);
|
|
42
|
+
if (action === 'interactive') {
|
|
43
|
+
await interactivePlanning(state);
|
|
44
|
+
}
|
|
45
|
+
else if (action === 'view') {
|
|
46
|
+
const content = await fs.readFile(planPath, 'utf-8');
|
|
47
|
+
console.log(chalk.dim('\n' + 'ā'.repeat(60) + '\n'));
|
|
48
|
+
console.log(content);
|
|
49
|
+
console.log(chalk.dim('\n' + 'ā'.repeat(60) + '\n'));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log(chalk.cyan('\nEdit the plan file and then run:'));
|
|
53
|
+
console.log(chalk.white(' ai-phases plan --from-file\n'));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(chalk.white('\nNo plan exists yet. Starting interactive planning...\n'));
|
|
58
|
+
await interactivePlanning(state);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function interactivePlanning(state) {
|
|
63
|
+
console.log(chalk.cyan('\nš Interactive Phase Planning\n'));
|
|
64
|
+
const phases = [];
|
|
65
|
+
let addMore = true;
|
|
66
|
+
let phaseNumber = 1;
|
|
67
|
+
while (addMore) {
|
|
68
|
+
console.log(chalk.yellow(`\nāāā Phase ${phaseNumber} āāā\n`));
|
|
69
|
+
const phaseAnswers = await inquirer.prompt([
|
|
70
|
+
{
|
|
71
|
+
type: 'input',
|
|
72
|
+
name: 'name',
|
|
73
|
+
message: 'Phase name:',
|
|
74
|
+
default: phaseNumber === 1 ? 'Project Setup' : `Phase ${phaseNumber}`,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'input',
|
|
78
|
+
name: 'description',
|
|
79
|
+
message: 'Description:',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'editor',
|
|
83
|
+
name: 'tasks',
|
|
84
|
+
message: 'Tasks (one per line):',
|
|
85
|
+
default: '- Task 1\n- Task 2\n- Task 3',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'editor',
|
|
89
|
+
name: 'validation',
|
|
90
|
+
message: 'Validation criteria (one per line):',
|
|
91
|
+
default: '- App compiles without errors\n- Basic functionality works',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'input',
|
|
95
|
+
name: 'context7',
|
|
96
|
+
message: 'Context7 docs to look up (comma-separated):',
|
|
97
|
+
default: '',
|
|
98
|
+
},
|
|
99
|
+
]);
|
|
100
|
+
// Parse tasks
|
|
101
|
+
const tasks = phaseAnswers.tasks
|
|
102
|
+
.split('\n')
|
|
103
|
+
.filter((line) => line.trim())
|
|
104
|
+
.map((line, index) => ({
|
|
105
|
+
id: `task-${phaseNumber}-${index + 1}`,
|
|
106
|
+
description: line.replace(/^-\s*/, '').trim(),
|
|
107
|
+
status: 'pending',
|
|
108
|
+
}));
|
|
109
|
+
// Parse validation criteria
|
|
110
|
+
const validation = phaseAnswers.validation
|
|
111
|
+
.split('\n')
|
|
112
|
+
.filter((line) => line.trim())
|
|
113
|
+
.map((line) => line.replace(/^-\s*/, '').trim());
|
|
114
|
+
// Parse Context7 queries
|
|
115
|
+
const context7 = phaseAnswers.context7
|
|
116
|
+
.split(',')
|
|
117
|
+
.map((q) => q.trim())
|
|
118
|
+
.filter(Boolean);
|
|
119
|
+
phases.push(createPhaseState(phaseNumber, phaseAnswers.name, phaseAnswers.description, tasks, validation, context7, 3));
|
|
120
|
+
const { continueAdding } = await inquirer.prompt([
|
|
121
|
+
{
|
|
122
|
+
type: 'confirm',
|
|
123
|
+
name: 'continueAdding',
|
|
124
|
+
message: 'Add another phase?',
|
|
125
|
+
default: phaseNumber < 5,
|
|
126
|
+
},
|
|
127
|
+
]);
|
|
128
|
+
addMore = continueAdding;
|
|
129
|
+
phaseNumber++;
|
|
130
|
+
}
|
|
131
|
+
// Save phases
|
|
132
|
+
state.phases = phases;
|
|
133
|
+
state.total_phases = phases.length;
|
|
134
|
+
state.current_phase = 1;
|
|
135
|
+
state.status = 'in_progress';
|
|
136
|
+
await saveProjectState(state);
|
|
137
|
+
// Generate plan.md
|
|
138
|
+
const planContent = generatePlanMarkdown(phases);
|
|
139
|
+
const planPath = path.join(getProjectPhasesDir(), 'plan.md');
|
|
140
|
+
await fs.writeFile(planPath, planContent);
|
|
141
|
+
// Create phase directories
|
|
142
|
+
for (const phase of phases) {
|
|
143
|
+
const phaseDir = path.join(getProjectPhasesDir(), 'phases', `phase-${phase.phase_number}`);
|
|
144
|
+
await fs.ensureDir(phaseDir);
|
|
145
|
+
await fs.writeJson(path.join(phaseDir, 'state.json'), phase, { spaces: 2 });
|
|
146
|
+
}
|
|
147
|
+
console.log(chalk.green('\nā Plan created with ' + phases.length + ' phases'));
|
|
148
|
+
console.log(chalk.dim('Saved to: ') + chalk.white(planPath));
|
|
149
|
+
console.log(chalk.cyan('\nRun: ai-phases run --phase 1\n'));
|
|
150
|
+
}
|
|
151
|
+
async function planFromReadme(state) {
|
|
152
|
+
const readmePath = path.join(process.cwd(), 'README.md');
|
|
153
|
+
if (!(await fs.pathExists(readmePath))) {
|
|
154
|
+
console.log(chalk.yellow('No README.md found in project root.'));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const readmeContent = await fs.readFile(readmePath, 'utf-8');
|
|
158
|
+
console.log(chalk.cyan('\nš Inferring phases from README...\n'));
|
|
159
|
+
console.log(chalk.dim('README content will be used as context for phase generation.'));
|
|
160
|
+
console.log(chalk.yellow('\nUse the refine command for AI-powered phase generation:'));
|
|
161
|
+
console.log(chalk.cyan(' ai-phases refine "' + readmeContent.substring(0, 100).replace(/\n/g, ' ') + '..."\n'));
|
|
162
|
+
}
|
|
163
|
+
function generatePlanMarkdown(phases) {
|
|
164
|
+
let content = '# Phase Plan\n\n';
|
|
165
|
+
content += `Generated: ${new Date().toISOString()}\n\n`;
|
|
166
|
+
content += `Total Phases: ${phases.length}\n\n`;
|
|
167
|
+
content += '---\n\n';
|
|
168
|
+
for (const phase of phases) {
|
|
169
|
+
content += `## Phase ${phase.phase_number}: ${phase.name}\n\n`;
|
|
170
|
+
content += `**Description**: ${phase.description}\n\n`;
|
|
171
|
+
content += `**Model**: ${phase.model === 'planning' ? 'Claude Opus' : 'Gemini Flash'}\n\n`;
|
|
172
|
+
content += '### Tasks\n';
|
|
173
|
+
phase.tasks.forEach((task, i) => {
|
|
174
|
+
content += `${i + 1}. ${task.description}\n`;
|
|
175
|
+
});
|
|
176
|
+
content += '\n';
|
|
177
|
+
content += '### Validation Criteria\n';
|
|
178
|
+
phase.validation_criteria.forEach(criterion => {
|
|
179
|
+
content += `- [ ] ${criterion}\n`;
|
|
180
|
+
});
|
|
181
|
+
content += '\n';
|
|
182
|
+
if (phase.context7_queries && phase.context7_queries.length > 0) {
|
|
183
|
+
content += '### Context7 Queries\n';
|
|
184
|
+
phase.context7_queries.forEach(query => {
|
|
185
|
+
content += `- ${query}\n`;
|
|
186
|
+
});
|
|
187
|
+
content += '\n';
|
|
188
|
+
}
|
|
189
|
+
content += '---\n\n';
|
|
190
|
+
}
|
|
191
|
+
return content;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAOrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,aAAa,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,SAAS,CAAC,CAAC;QAE7D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC;YAE3C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACvC;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,4BAA4B;oBACrC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC7C,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,aAAa,EAAE;wBAC/D,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC7C;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;gBAC7B,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACrF,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAU;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,WAAW,QAAQ,CAAC,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,WAAW,EAAE;aACtE;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,cAAc;aACxB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,8BAA8B;aACxC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,qCAAqC;gBAC9C,OAAO,EAAE,4DAA4D;aACtE;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,6CAA6C;gBACtD,OAAO,EAAE,EAAE;aACZ;SACF,CAAC,CAAC;QAEH,cAAc;QACd,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK;aAC7B,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,EAAE,QAAQ,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE;YACtC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAC7C,MAAM,EAAE,SAAkB;SAC3B,CAAC,CAAC,CAAC;QAEN,4BAA4B;QAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU;aACvC,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,yBAAyB;QACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ;aACnC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAC1B,WAAW,EACX,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,WAAW,EACxB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,CAAC,CACF,CAAC,CAAC;QAEH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC/C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,WAAW,GAAG,CAAC;aACzB;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,cAAc,CAAC;QACzB,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,cAAc;IACd,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;IAC7B,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9B,mBAAmB;IACnB,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3F,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAU;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAoB;IAChD,IAAI,OAAO,GAAG,kBAAkB,CAAC;IACjC,OAAO,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IACxD,OAAO,IAAI,iBAAiB,MAAM,CAAC,MAAM,MAAM,CAAC;IAChD,OAAO,IAAI,SAAS,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,IAAI,YAAY,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC;QAC/D,OAAO,IAAI,oBAAoB,KAAK,CAAC,WAAW,MAAM,CAAC;QACvD,OAAO,IAAI,cAAc,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC;QAE3F,OAAO,IAAI,aAAa,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB,OAAO,IAAI,2BAA2B,CAAC;QACvC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5C,OAAO,IAAI,SAAS,SAAS,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,wBAAwB,CAAC;YACpC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,SAAS,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/refine.ts"],"names":[],"mappings":"AAyBA,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+MvF"}
|