mycontext-cli 1.0.95 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +268 -295
  2. package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +1 -1
  3. package/dist/agents/implementations/ClaudeAgentWorkflow.js +38 -3
  4. package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +1 -1
  5. package/dist/agents/implementations/WorkflowAgent.d.ts +8 -0
  6. package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
  7. package/dist/agents/implementations/WorkflowAgent.js +105 -11
  8. package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
  9. package/dist/agents/interfaces/SubAgent.d.ts +5 -0
  10. package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
  11. package/dist/commands/build-app.d.ts +5 -0
  12. package/dist/commands/build-app.d.ts.map +1 -1
  13. package/dist/commands/build-app.js +127 -4
  14. package/dist/commands/build-app.js.map +1 -1
  15. package/dist/commands/compile-prd.d.ts.map +1 -1
  16. package/dist/commands/compile-prd.js +18 -54
  17. package/dist/commands/compile-prd.js.map +1 -1
  18. package/dist/commands/enhance.d.ts +21 -0
  19. package/dist/commands/enhance.d.ts.map +1 -1
  20. package/dist/commands/enhance.js +155 -12
  21. package/dist/commands/enhance.js.map +1 -1
  22. package/dist/commands/generate-components.d.ts +43 -0
  23. package/dist/commands/generate-components.d.ts.map +1 -1
  24. package/dist/commands/generate-components.js +270 -0
  25. package/dist/commands/generate-components.js.map +1 -1
  26. package/dist/constants/fileNames.d.ts +68 -0
  27. package/dist/constants/fileNames.d.ts.map +1 -0
  28. package/dist/constants/fileNames.js +102 -0
  29. package/dist/constants/fileNames.js.map +1 -0
  30. package/dist/interfaces/AIClient.d.ts +198 -0
  31. package/dist/interfaces/AIClient.d.ts.map +1 -0
  32. package/dist/interfaces/AIClient.js +40 -0
  33. package/dist/interfaces/AIClient.js.map +1 -0
  34. package/dist/package.json +4 -3
  35. package/dist/types/index.d.ts +423 -0
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/utils/agentDefinitions.d.ts +60 -0
  38. package/dist/utils/agentDefinitions.d.ts.map +1 -0
  39. package/dist/utils/agentDefinitions.js +344 -0
  40. package/dist/utils/agentDefinitions.js.map +1 -0
  41. package/dist/utils/aiClientFactory.d.ts +93 -0
  42. package/dist/utils/aiClientFactory.d.ts.map +1 -0
  43. package/dist/utils/aiClientFactory.js +290 -0
  44. package/dist/utils/aiClientFactory.js.map +1 -0
  45. package/dist/utils/aiClientRouter.d.ts +121 -0
  46. package/dist/utils/aiClientRouter.d.ts.map +1 -0
  47. package/dist/utils/aiClientRouter.js +401 -0
  48. package/dist/utils/aiClientRouter.js.map +1 -0
  49. package/dist/utils/buildValidator.d.ts +72 -0
  50. package/dist/utils/buildValidator.d.ts.map +1 -0
  51. package/dist/utils/buildValidator.js +338 -0
  52. package/dist/utils/buildValidator.js.map +1 -0
  53. package/dist/utils/claudeAgentClient.d.ts +79 -11
  54. package/dist/utils/claudeAgentClient.d.ts.map +1 -1
  55. package/dist/utils/claudeAgentClient.js +306 -1
  56. package/dist/utils/claudeAgentClient.js.map +1 -1
  57. package/dist/utils/claudeClient.d.ts +7 -3
  58. package/dist/utils/claudeClient.d.ts.map +1 -1
  59. package/dist/utils/claudeClient.js +28 -5
  60. package/dist/utils/claudeClient.js.map +1 -1
  61. package/dist/utils/completeArchitectureEngine.d.ts +67 -0
  62. package/dist/utils/completeArchitectureEngine.d.ts.map +1 -0
  63. package/dist/utils/completeArchitectureEngine.js +329 -0
  64. package/dist/utils/completeArchitectureEngine.js.map +1 -0
  65. package/dist/utils/contextLoader.d.ts +1 -12
  66. package/dist/utils/contextLoader.d.ts.map +1 -1
  67. package/dist/utils/contextLoader.js +29 -150
  68. package/dist/utils/contextLoader.js.map +1 -1
  69. package/dist/utils/contextManager.d.ts +2 -12
  70. package/dist/utils/contextManager.d.ts.map +1 -1
  71. package/dist/utils/contextManager.js +11 -6
  72. package/dist/utils/contextManager.js.map +1 -1
  73. package/dist/utils/mcpTools.d.ts +164 -0
  74. package/dist/utils/mcpTools.d.ts.map +1 -0
  75. package/dist/utils/mcpTools.js +385 -0
  76. package/dist/utils/mcpTools.js.map +1 -0
  77. package/dist/utils/progressTracker.d.ts +121 -0
  78. package/dist/utils/progressTracker.d.ts.map +1 -0
  79. package/dist/utils/progressTracker.js +334 -0
  80. package/dist/utils/progressTracker.js.map +1 -0
  81. package/dist/utils/routeGenerator.d.ts +56 -0
  82. package/dist/utils/routeGenerator.d.ts.map +1 -0
  83. package/dist/utils/routeGenerator.js +231 -0
  84. package/dist/utils/routeGenerator.js.map +1 -0
  85. package/dist/utils/serverActionGenerator.d.ts +56 -0
  86. package/dist/utils/serverActionGenerator.d.ts.map +1 -0
  87. package/dist/utils/serverActionGenerator.js +258 -0
  88. package/dist/utils/serverActionGenerator.js.map +1 -0
  89. package/dist/utils/streamingHandler.d.ts +98 -0
  90. package/dist/utils/streamingHandler.d.ts.map +1 -0
  91. package/dist/utils/streamingHandler.js +259 -0
  92. package/dist/utils/streamingHandler.js.map +1 -0
  93. package/dist/utils/validationGates.d.ts +58 -0
  94. package/dist/utils/validationGates.d.ts.map +1 -0
  95. package/dist/utils/validationGates.js +390 -0
  96. package/dist/utils/validationGates.js.map +1 -0
  97. package/package.json +4 -3
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Progress Tracking System
3
+ *
4
+ * Manages granular progress tracking for build-app workflow.
5
+ * Generates JSON files that can be consumed by VS Code extension,
6
+ * web dashboard, or other external tools.
7
+ */
8
+ export type PhaseStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'validation_required';
9
+ export type StepStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped';
10
+ export interface StepProgress {
11
+ status: StepStatus;
12
+ timestamp?: string;
13
+ duration?: number;
14
+ error?: string;
15
+ metadata?: Record<string, any>;
16
+ }
17
+ export interface PhaseProgress {
18
+ status: PhaseStatus;
19
+ steps: number;
20
+ completedSteps: number;
21
+ duration: number;
22
+ startTime?: string;
23
+ endTime?: string;
24
+ userValidations?: Record<string, boolean>;
25
+ errors?: Array<{
26
+ step: string;
27
+ error: string;
28
+ timestamp: string;
29
+ }>;
30
+ }
31
+ export interface MasterProgress {
32
+ version: string;
33
+ startTime: string;
34
+ endTime: string | null;
35
+ status: PhaseStatus;
36
+ currentPhase: string;
37
+ currentStep: number;
38
+ totalSteps: number;
39
+ percentComplete: number;
40
+ phases: Record<string, PhaseProgress>;
41
+ errors: Array<{
42
+ phase: string;
43
+ step: number;
44
+ error: string;
45
+ timestamp: string;
46
+ }>;
47
+ retries: {
48
+ total: number;
49
+ byPhase: Record<string, number>;
50
+ };
51
+ userInteractions: number;
52
+ buildChecks: {
53
+ typescript: {
54
+ passed: number;
55
+ failed: number;
56
+ };
57
+ eslint: {
58
+ passed: number;
59
+ failed: number;
60
+ };
61
+ build: {
62
+ passed: number;
63
+ failed: number;
64
+ };
65
+ tests: {
66
+ passed: number;
67
+ failed: number;
68
+ };
69
+ };
70
+ }
71
+ export interface ComponentProgress {
72
+ component: string;
73
+ group: string;
74
+ status: StepStatus;
75
+ steps: Record<string, StepProgress>;
76
+ retries: number;
77
+ duration: number;
78
+ metadata?: {
79
+ linesOfCode?: number;
80
+ dependencies?: string[];
81
+ props?: string[];
82
+ exports?: string[];
83
+ };
84
+ }
85
+ export declare class ProgressTracker {
86
+ private projectPath;
87
+ private progressDir;
88
+ private masterProgress;
89
+ private phaseStartTimes;
90
+ private stepStartTimes;
91
+ constructor(projectPath: string);
92
+ private initializeMasterProgress;
93
+ private createPhaseProgress;
94
+ initialize(): Promise<void>;
95
+ startPhase(phaseName: string): Promise<void>;
96
+ completePhase(phaseName: string): Promise<void>;
97
+ failPhase(phaseName: string, error: string): Promise<void>;
98
+ requestValidation(phaseName: string, validationType: string): Promise<void>;
99
+ approveValidation(phaseName: string, validationType: string): Promise<void>;
100
+ incrementStep(phaseName: string): Promise<void>;
101
+ recordBuildCheck(type: 'typescript' | 'eslint' | 'build' | 'tests', passed: boolean): Promise<void>;
102
+ recordRetry(phaseName: string): Promise<void>;
103
+ setComponentCount(count: number): Promise<void>;
104
+ private calculateTotalSteps;
105
+ startComponentGeneration(componentName: string, group: string): Promise<void>;
106
+ updateComponentStep(componentName: string, stepName: string, status: StepStatus, metadata?: Record<string, any>): Promise<void>;
107
+ completeComponentGeneration(componentName: string, metadata?: ComponentProgress['metadata']): Promise<void>;
108
+ failComponentGeneration(componentName: string, error: string, retries: number): Promise<void>;
109
+ complete(): Promise<void>;
110
+ displaySummary(): void;
111
+ private saveMasterProgress;
112
+ private savePhaseProgress;
113
+ private saveComponentProgress;
114
+ private loadComponentProgress;
115
+ private getPhaseNumber;
116
+ private formatPhaseName;
117
+ private formatStepName;
118
+ getMasterProgress(): MasterProgress;
119
+ loadProgress(): Promise<MasterProgress | null>;
120
+ }
121
+ //# sourceMappingURL=progressTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressTracker.d.ts","sourceRoot":"","sources":["../../src/utils/progressTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,334 @@
1
+ "use strict";
2
+ /**
3
+ * Progress Tracking System
4
+ *
5
+ * Manages granular progress tracking for build-app workflow.
6
+ * Generates JSON files that can be consumed by VS Code extension,
7
+ * web dashboard, or other external tools.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.ProgressTracker = void 0;
47
+ const fs = __importStar(require("fs-extra"));
48
+ const path_1 = __importDefault(require("path"));
49
+ const chalk_1 = __importDefault(require("chalk"));
50
+ class ProgressTracker {
51
+ constructor(projectPath) {
52
+ this.phaseStartTimes = new Map();
53
+ this.stepStartTimes = new Map();
54
+ this.projectPath = projectPath;
55
+ this.progressDir = path_1.default.join(projectPath, '.mycontext', 'progress');
56
+ this.masterProgress = this.initializeMasterProgress();
57
+ }
58
+ initializeMasterProgress() {
59
+ return {
60
+ version: '2.0.0',
61
+ startTime: new Date().toISOString(),
62
+ endTime: null,
63
+ status: 'pending',
64
+ currentPhase: 'preflight',
65
+ currentStep: 0,
66
+ totalSteps: 230,
67
+ percentComplete: 0,
68
+ phases: {
69
+ preflight: this.createPhaseProgress(10),
70
+ initialization: this.createPhaseProgress(15),
71
+ context_generation: this.createPhaseProgress(25),
72
+ types: this.createPhaseProgress(10),
73
+ branding: this.createPhaseProgress(10),
74
+ build_strategy: this.createPhaseProgress(10),
75
+ component_list: this.createPhaseProgress(10),
76
+ component_generation: this.createPhaseProgress(0), // Dynamic based on component count
77
+ server_actions: this.createPhaseProgress(30),
78
+ routes: this.createPhaseProgress(20),
79
+ integration: this.createPhaseProgress(20),
80
+ post_generation: this.createPhaseProgress(10),
81
+ },
82
+ errors: [],
83
+ retries: {
84
+ total: 0,
85
+ byPhase: {},
86
+ },
87
+ userInteractions: 0,
88
+ buildChecks: {
89
+ typescript: { passed: 0, failed: 0 },
90
+ eslint: { passed: 0, failed: 0 },
91
+ build: { passed: 0, failed: 0 },
92
+ tests: { passed: 0, failed: 0 },
93
+ },
94
+ };
95
+ }
96
+ createPhaseProgress(steps) {
97
+ return {
98
+ status: 'pending',
99
+ steps,
100
+ completedSteps: 0,
101
+ duration: 0,
102
+ };
103
+ }
104
+ async initialize() {
105
+ await fs.ensureDir(this.progressDir);
106
+ await fs.ensureDir(path_1.default.join(this.progressDir, '07-components'));
107
+ await this.saveMasterProgress();
108
+ }
109
+ async startPhase(phaseName) {
110
+ this.masterProgress.currentPhase = phaseName;
111
+ this.masterProgress.phases[phaseName].status = 'in_progress';
112
+ this.masterProgress.phases[phaseName].startTime = new Date().toISOString();
113
+ this.phaseStartTimes.set(phaseName, Date.now());
114
+ console.log(chalk_1.default.blue(`\n📋 Phase Started: ${this.formatPhaseName(phaseName)}`));
115
+ await this.saveMasterProgress();
116
+ }
117
+ async completePhase(phaseName) {
118
+ const startTime = this.phaseStartTimes.get(phaseName);
119
+ const duration = startTime ? Date.now() - startTime : 0;
120
+ this.masterProgress.phases[phaseName].status = 'completed';
121
+ this.masterProgress.phases[phaseName].endTime = new Date().toISOString();
122
+ this.masterProgress.phases[phaseName].duration = duration;
123
+ this.masterProgress.phases[phaseName].completedSteps = this.masterProgress.phases[phaseName].steps;
124
+ console.log(chalk_1.default.green(`✅ Phase Completed: ${this.formatPhaseName(phaseName)} (${Math.round(duration / 1000)}s)`));
125
+ await this.saveMasterProgress();
126
+ }
127
+ async failPhase(phaseName, error) {
128
+ this.masterProgress.phases[phaseName].status = 'failed';
129
+ this.masterProgress.errors.push({
130
+ phase: phaseName,
131
+ step: this.masterProgress.currentStep,
132
+ error,
133
+ timestamp: new Date().toISOString(),
134
+ });
135
+ console.log(chalk_1.default.red(`❌ Phase Failed: ${this.formatPhaseName(phaseName)}`));
136
+ await this.saveMasterProgress();
137
+ }
138
+ async requestValidation(phaseName, validationType) {
139
+ this.masterProgress.phases[phaseName].status = 'validation_required';
140
+ this.masterProgress.status = 'validation_required';
141
+ this.masterProgress.userInteractions++;
142
+ console.log(chalk_1.default.yellow(`\n⏸️ Validation Required: ${validationType}`));
143
+ await this.saveMasterProgress();
144
+ }
145
+ async approveValidation(phaseName, validationType) {
146
+ if (!this.masterProgress.phases[phaseName].userValidations) {
147
+ this.masterProgress.phases[phaseName].userValidations = {};
148
+ }
149
+ this.masterProgress.phases[phaseName].userValidations[validationType] = true;
150
+ this.masterProgress.phases[phaseName].status = 'in_progress';
151
+ this.masterProgress.status = 'in_progress';
152
+ console.log(chalk_1.default.green(`✅ Validation Approved: ${validationType}`));
153
+ await this.saveMasterProgress();
154
+ }
155
+ async incrementStep(phaseName) {
156
+ this.masterProgress.currentStep++;
157
+ this.masterProgress.phases[phaseName].completedSteps++;
158
+ this.masterProgress.percentComplete = (this.masterProgress.currentStep / this.masterProgress.totalSteps) * 100;
159
+ await this.saveMasterProgress();
160
+ }
161
+ async recordBuildCheck(type, passed) {
162
+ if (passed) {
163
+ this.masterProgress.buildChecks[type].passed++;
164
+ }
165
+ else {
166
+ this.masterProgress.buildChecks[type].failed++;
167
+ }
168
+ await this.saveMasterProgress();
169
+ }
170
+ async recordRetry(phaseName) {
171
+ this.masterProgress.retries.total++;
172
+ if (!this.masterProgress.retries.byPhase[phaseName]) {
173
+ this.masterProgress.retries.byPhase[phaseName] = 0;
174
+ }
175
+ this.masterProgress.retries.byPhase[phaseName]++;
176
+ await this.saveMasterProgress();
177
+ }
178
+ async setComponentCount(count) {
179
+ // Each component has 12 steps (see BUILD_APP_PROCESS.md)
180
+ const componentSteps = count * 12;
181
+ this.masterProgress.phases.component_generation.steps = componentSteps;
182
+ this.masterProgress.totalSteps = this.calculateTotalSteps();
183
+ await this.saveMasterProgress();
184
+ }
185
+ calculateTotalSteps() {
186
+ return Object.values(this.masterProgress.phases).reduce((sum, phase) => sum + phase.steps, 0);
187
+ }
188
+ async startComponentGeneration(componentName, group) {
189
+ const componentProgress = {
190
+ component: componentName,
191
+ group,
192
+ status: 'in_progress',
193
+ steps: {
194
+ spec_loaded: { status: 'pending' },
195
+ code_generated: { status: 'pending' },
196
+ file_written: { status: 'pending' },
197
+ lint_passed: { status: 'pending' },
198
+ type_check_passed: { status: 'pending' },
199
+ build_passed: { status: 'pending' },
200
+ tests_generated: { status: 'pending' },
201
+ tests_passed: { status: 'pending' },
202
+ docs_generated: { status: 'pending' },
203
+ registered: { status: 'pending' },
204
+ preview_updated: { status: 'pending' },
205
+ },
206
+ retries: 0,
207
+ duration: 0,
208
+ };
209
+ await this.saveComponentProgress(componentName, componentProgress);
210
+ console.log(chalk_1.default.blue(`\n🔨 Generating: ${componentName}`));
211
+ }
212
+ async updateComponentStep(componentName, stepName, status, metadata) {
213
+ const componentProgress = await this.loadComponentProgress(componentName);
214
+ if (!componentProgress)
215
+ return;
216
+ componentProgress.steps[stepName] = {
217
+ status,
218
+ timestamp: new Date().toISOString(),
219
+ metadata,
220
+ };
221
+ await this.saveComponentProgress(componentName, componentProgress);
222
+ const icon = status === 'completed' ? '✅' : status === 'failed' ? '❌' : '⏳';
223
+ console.log(chalk_1.default.gray(` ${icon} ${this.formatStepName(stepName)}`));
224
+ }
225
+ async completeComponentGeneration(componentName, metadata) {
226
+ const componentProgress = await this.loadComponentProgress(componentName);
227
+ if (!componentProgress)
228
+ return;
229
+ componentProgress.status = 'completed';
230
+ componentProgress.metadata = metadata;
231
+ await this.saveComponentProgress(componentName, componentProgress);
232
+ console.log(chalk_1.default.green(`✅ Completed: ${componentName}`));
233
+ }
234
+ async failComponentGeneration(componentName, error, retries) {
235
+ const componentProgress = await this.loadComponentProgress(componentName);
236
+ if (!componentProgress)
237
+ return;
238
+ componentProgress.status = 'failed';
239
+ componentProgress.retries = retries;
240
+ await this.saveComponentProgress(componentName, componentProgress);
241
+ console.log(chalk_1.default.red(`❌ Failed: ${componentName} (${retries} retries)`));
242
+ }
243
+ async complete() {
244
+ this.masterProgress.status = 'completed';
245
+ this.masterProgress.endTime = new Date().toISOString();
246
+ this.masterProgress.percentComplete = 100;
247
+ await this.saveMasterProgress();
248
+ console.log(chalk_1.default.green.bold('\n🎉 Workflow Complete!\n'));
249
+ this.displaySummary();
250
+ }
251
+ displaySummary() {
252
+ const duration = Date.now() - new Date(this.masterProgress.startTime).getTime();
253
+ const minutes = Math.floor(duration / 60000);
254
+ const seconds = Math.floor((duration % 60000) / 1000);
255
+ console.log(chalk_1.default.blue('📊 Workflow Summary:'));
256
+ console.log(chalk_1.default.gray(` Duration: ${minutes}m ${seconds}s`));
257
+ console.log(chalk_1.default.gray(` Total Steps: ${this.masterProgress.currentStep}/${this.masterProgress.totalSteps}`));
258
+ console.log(chalk_1.default.gray(` User Interactions: ${this.masterProgress.userInteractions}`));
259
+ console.log(chalk_1.default.gray(` Total Retries: ${this.masterProgress.retries.total}`));
260
+ console.log();
261
+ console.log(chalk_1.default.blue('✅ Build Checks:'));
262
+ console.log(chalk_1.default.gray(` TypeScript: ${this.masterProgress.buildChecks.typescript.passed} passed, ${this.masterProgress.buildChecks.typescript.failed} failed`));
263
+ console.log(chalk_1.default.gray(` ESLint: ${this.masterProgress.buildChecks.eslint.passed} passed, ${this.masterProgress.buildChecks.eslint.failed} failed`));
264
+ console.log(chalk_1.default.gray(` Build: ${this.masterProgress.buildChecks.build.passed} passed, ${this.masterProgress.buildChecks.build.failed} failed`));
265
+ console.log(chalk_1.default.gray(` Tests: ${this.masterProgress.buildChecks.tests.passed} passed, ${this.masterProgress.buildChecks.tests.failed} failed`));
266
+ console.log();
267
+ }
268
+ async saveMasterProgress() {
269
+ const masterFile = path_1.default.join(this.progressDir, 'master.json');
270
+ await fs.writeJson(masterFile, this.masterProgress, { spaces: 2 });
271
+ }
272
+ async savePhaseProgress(phaseName) {
273
+ const phaseFile = path_1.default.join(this.progressDir, `${this.getPhaseNumber(phaseName)}-${phaseName}.json`);
274
+ await fs.writeJson(phaseFile, this.masterProgress.phases[phaseName], { spaces: 2 });
275
+ }
276
+ async saveComponentProgress(componentName, progress) {
277
+ const fileName = componentName.toLowerCase().replace(/[^a-z0-9]/g, '-');
278
+ const componentFile = path_1.default.join(this.progressDir, '07-components', `${fileName}.json`);
279
+ await fs.writeJson(componentFile, progress, { spaces: 2 });
280
+ }
281
+ async loadComponentProgress(componentName) {
282
+ const fileName = componentName.toLowerCase().replace(/[^a-z0-9]/g, '-');
283
+ const componentFile = path_1.default.join(this.progressDir, '07-components', `${fileName}.json`);
284
+ try {
285
+ return await fs.readJson(componentFile);
286
+ }
287
+ catch {
288
+ return null;
289
+ }
290
+ }
291
+ getPhaseNumber(phaseName) {
292
+ const phaseNumbers = {
293
+ preflight: '00',
294
+ initialization: '01',
295
+ context_generation: '02',
296
+ types: '03',
297
+ branding: '04',
298
+ build_strategy: '05',
299
+ component_list: '06',
300
+ component_generation: '07',
301
+ server_actions: '08',
302
+ routes: '09',
303
+ integration: '10',
304
+ post_generation: '11',
305
+ };
306
+ return phaseNumbers[phaseName] || '99';
307
+ }
308
+ formatPhaseName(phaseName) {
309
+ return phaseName
310
+ .split('_')
311
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
312
+ .join(' ');
313
+ }
314
+ formatStepName(stepName) {
315
+ return stepName
316
+ .split('_')
317
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
318
+ .join(' ');
319
+ }
320
+ getMasterProgress() {
321
+ return this.masterProgress;
322
+ }
323
+ async loadProgress() {
324
+ const masterFile = path_1.default.join(this.progressDir, 'master.json');
325
+ try {
326
+ return await fs.readJson(masterFile);
327
+ }
328
+ catch {
329
+ return null;
330
+ }
331
+ }
332
+ }
333
+ exports.ProgressTracker = ProgressTracker;
334
+ //# sourceMappingURL=progressTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressTracker.js","sourceRoot":"","sources":["../../src/utils/progressTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { RouteDefinition, EnhancedComponent, ServerActionDefinition } from "../types";
2
+ /**
3
+ * Route Generator
4
+ * Generates Next.js App Router routes based on component hierarchy
5
+ */
6
+ export declare class RouteGenerator {
7
+ /**
8
+ * Generate routes for a component
9
+ */
10
+ generateRoutes(component: EnhancedComponent, level: number, parentPath?: string): Promise<RouteDefinition[]>;
11
+ /**
12
+ * Generate root route
13
+ */
14
+ private generateRootRoute;
15
+ /**
16
+ * Generate feature route
17
+ */
18
+ private generateFeatureRoute;
19
+ /**
20
+ * Generate form routes (create, edit)
21
+ */
22
+ private generateFormRoutes;
23
+ /**
24
+ * Generate dynamic route
25
+ */
26
+ private generateDynamicRoute;
27
+ /**
28
+ * Generate route metadata from component and actions
29
+ */
30
+ generateRouteMetadata(component: EnhancedComponent, actions: ServerActionDefinition[]): RouteDefinition["metadata"];
31
+ /**
32
+ * Determine if component needs a dynamic route
33
+ */
34
+ private needsDynamicRoute;
35
+ /**
36
+ * Collect all component names from hierarchy
37
+ */
38
+ private collectComponentNames;
39
+ /**
40
+ * Extract base name from component name (e.g., "ProductForm" -> "Product")
41
+ */
42
+ private extractBaseName;
43
+ /**
44
+ * Helper: Convert to kebab-case
45
+ */
46
+ private toKebabCase;
47
+ /**
48
+ * Generate layout file content for route
49
+ */
50
+ generateLayoutContent(component: EnhancedComponent, childRoutes: RouteDefinition[]): string;
51
+ /**
52
+ * Generate page file content for route
53
+ */
54
+ generatePageContent(component: EnhancedComponent, route: RouteDefinition): string;
55
+ }
56
+ //# sourceMappingURL=routeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/routeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAW,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC;IA0B7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,sBAAsB,EAAE,GAChC,eAAe,CAAC,UAAU,CAAC;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM;IAmBT;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,eAAe,GACrB,MAAM;CAmBV"}