mycontext-cli 1.0.81 → 1.0.82
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 +123 -0
- package/dist/agents/implementations/BuildStrategyAgent.d.ts +99 -0
- package/dist/agents/implementations/BuildStrategyAgent.d.ts.map +1 -0
- package/dist/agents/implementations/BuildStrategyAgent.js +554 -0
- package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/build-strategy.d.ts +3 -0
- package/dist/commands/build-strategy.d.ts.map +1 -0
- package/dist/commands/build-strategy.js +358 -0
- package/dist/commands/build-strategy.js.map +1 -0
- package/dist/config/build-strategies.json +496 -0
- package/dist/utils/buildStrategyManager.d.ts +95 -0
- package/dist/utils/buildStrategyManager.d.ts.map +1 -0
- package/dist/utils/buildStrategyManager.js +613 -0
- package/dist/utils/buildStrategyManager.js.map +1 -0
- package/dist/utils/contextLoader.d.ts +3 -0
- package/dist/utils/contextLoader.d.ts.map +1 -1
- package/dist/utils/contextLoader.js +49 -0
- package/dist/utils/contextLoader.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BuildStrategyManager = void 0;
|
|
40
|
+
const fs = __importStar(require("fs-extra"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const contextLoader_1 = require("./contextLoader");
|
|
44
|
+
const hybridAIClient_1 = require("./hybridAIClient");
|
|
45
|
+
/**
|
|
46
|
+
* BuildStrategyManager - LLM-Powered Strategy Generation
|
|
47
|
+
*
|
|
48
|
+
* This manager uses AI to generate 100% accurate, project-specific build strategies
|
|
49
|
+
* by analyzing your project context and providing intelligent recommendations.
|
|
50
|
+
*/
|
|
51
|
+
class BuildStrategyManager {
|
|
52
|
+
constructor() {
|
|
53
|
+
this.contextLoader = new contextLoader_1.ContextLoader(process.cwd());
|
|
54
|
+
this.aiClient = new hybridAIClient_1.HybridAIClient();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Load project context from .mycontext files
|
|
58
|
+
*/
|
|
59
|
+
async loadProjectContext() {
|
|
60
|
+
try {
|
|
61
|
+
const context = await this.contextLoader.loadProjectContext({
|
|
62
|
+
verbose: false,
|
|
63
|
+
});
|
|
64
|
+
// Extract components from component list
|
|
65
|
+
const components = [];
|
|
66
|
+
if (context.componentList && Array.isArray(context.componentList)) {
|
|
67
|
+
context.componentList.forEach((comp) => {
|
|
68
|
+
if (typeof comp === "string") {
|
|
69
|
+
components.push(comp);
|
|
70
|
+
}
|
|
71
|
+
else if (comp.name) {
|
|
72
|
+
components.push(comp.name);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Extract user roles from PRD and user flows
|
|
77
|
+
const userRoles = [];
|
|
78
|
+
const prdText = context.prd || "";
|
|
79
|
+
const userFlowsText = context.userFlows || "";
|
|
80
|
+
const rolePatterns = [
|
|
81
|
+
/(?:user|users?)\s+(?:role|type|persona)s?[:\s]+([^.\n]+)/gi,
|
|
82
|
+
/(?:admin|administrator)s?/gi,
|
|
83
|
+
/(?:customer|client)s?/gi,
|
|
84
|
+
/(?:guest|visitor)s?/gi,
|
|
85
|
+
/(?:moderator|manager)s?/gi,
|
|
86
|
+
];
|
|
87
|
+
rolePatterns.forEach((pattern) => {
|
|
88
|
+
const matches = [
|
|
89
|
+
...prdText.matchAll(pattern),
|
|
90
|
+
...userFlowsText.matchAll(pattern),
|
|
91
|
+
];
|
|
92
|
+
matches.forEach((match) => {
|
|
93
|
+
if (match[1]) {
|
|
94
|
+
const role = match[1].trim().toLowerCase();
|
|
95
|
+
if (!userRoles.includes(role)) {
|
|
96
|
+
userRoles.push(role);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (match[0]) {
|
|
100
|
+
const role = match[0].trim().toLowerCase();
|
|
101
|
+
if (!userRoles.includes(role)) {
|
|
102
|
+
userRoles.push(role);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
// Default roles if none found
|
|
108
|
+
if (userRoles.length === 0) {
|
|
109
|
+
userRoles.push("user", "admin");
|
|
110
|
+
}
|
|
111
|
+
// Extract tech stack
|
|
112
|
+
const techStack = [];
|
|
113
|
+
const techPatterns = [
|
|
114
|
+
/next\.?js/gi,
|
|
115
|
+
/react/gi,
|
|
116
|
+
/typescript/gi,
|
|
117
|
+
/tailwind/gi,
|
|
118
|
+
/node\.?js/gi,
|
|
119
|
+
/prisma/gi,
|
|
120
|
+
/supabase/gi,
|
|
121
|
+
/firebase/gi,
|
|
122
|
+
/mongodb/gi,
|
|
123
|
+
/postgresql/gi,
|
|
124
|
+
/mysql/gi,
|
|
125
|
+
];
|
|
126
|
+
const allText = `${context.prd} ${context.types} ${context.technicalSpecs}`;
|
|
127
|
+
techPatterns.forEach((pattern) => {
|
|
128
|
+
const matches = allText.match(pattern);
|
|
129
|
+
if (matches) {
|
|
130
|
+
matches.forEach((match) => {
|
|
131
|
+
const tech = match.toLowerCase();
|
|
132
|
+
if (!techStack.includes(tech)) {
|
|
133
|
+
techStack.push(tech);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Default tech stack if none found
|
|
139
|
+
if (techStack.length === 0) {
|
|
140
|
+
techStack.push("next.js", "typescript", "tailwind css");
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
projectName: path_1.default.basename(process.cwd()),
|
|
144
|
+
description: context.prd
|
|
145
|
+
? context.prd.substring(0, 200) + "..."
|
|
146
|
+
: "MyContext Project",
|
|
147
|
+
components,
|
|
148
|
+
userRoles,
|
|
149
|
+
techStack,
|
|
150
|
+
prd: context.prd || "",
|
|
151
|
+
types: context.types || "",
|
|
152
|
+
brand: context.brand || "",
|
|
153
|
+
componentList: context.componentList || null,
|
|
154
|
+
features: context.features || "",
|
|
155
|
+
userFlows: context.userFlows || "",
|
|
156
|
+
edgeCases: context.edgeCases || "",
|
|
157
|
+
technicalSpecs: context.technicalSpecs || "",
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
// Fallback to default context if loading fails
|
|
162
|
+
return {
|
|
163
|
+
projectName: path_1.default.basename(process.cwd()),
|
|
164
|
+
description: "MyContext Project",
|
|
165
|
+
components: ["Button", "Form", "Dashboard", "Navigation"],
|
|
166
|
+
userRoles: ["User", "Admin"],
|
|
167
|
+
techStack: ["Next.js", "TypeScript", "Tailwind CSS"],
|
|
168
|
+
prd: "",
|
|
169
|
+
types: "",
|
|
170
|
+
brand: "",
|
|
171
|
+
componentList: null,
|
|
172
|
+
features: "",
|
|
173
|
+
userFlows: "",
|
|
174
|
+
edgeCases: "",
|
|
175
|
+
technicalSpecs: "",
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Save strategy data to JSON file
|
|
181
|
+
*/
|
|
182
|
+
async saveStrategyData(type, data) {
|
|
183
|
+
const timestamp = new Date().toISOString().split("T")[0];
|
|
184
|
+
const filename = `build-strategy-${type}-${timestamp}.json`;
|
|
185
|
+
const filepath = path_1.default.join(process.cwd(), ".mycontext", filename);
|
|
186
|
+
await fs.ensureDir(path_1.default.dirname(filepath));
|
|
187
|
+
await fs.writeJson(filepath, {
|
|
188
|
+
type,
|
|
189
|
+
generatedAt: new Date().toISOString(),
|
|
190
|
+
projectPath: process.cwd(),
|
|
191
|
+
data,
|
|
192
|
+
}, { spaces: 2 });
|
|
193
|
+
return filepath;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Load strategy data from JSON file
|
|
197
|
+
*/
|
|
198
|
+
async loadStrategyData(type, date) {
|
|
199
|
+
const filename = date
|
|
200
|
+
? `build-strategy-${type}-${date}.json`
|
|
201
|
+
: await this.findLatestStrategyFile(type);
|
|
202
|
+
if (!filename) {
|
|
203
|
+
throw new Error(`No ${type} strategy data found`);
|
|
204
|
+
}
|
|
205
|
+
const filepath = path_1.default.join(process.cwd(), ".mycontext", filename);
|
|
206
|
+
const data = await fs.readJson(filepath);
|
|
207
|
+
return data.data;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Find the latest strategy file of a given type
|
|
211
|
+
*/
|
|
212
|
+
async findLatestStrategyFile(type) {
|
|
213
|
+
const mycontextDir = path_1.default.join(process.cwd(), ".mycontext");
|
|
214
|
+
if (!(await fs.pathExists(mycontextDir))) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
const files = await fs.readdir(mycontextDir);
|
|
218
|
+
const strategyFiles = files
|
|
219
|
+
.filter((file) => file.startsWith(`build-strategy-${type}-`) && file.endsWith(".json"))
|
|
220
|
+
.sort()
|
|
221
|
+
.reverse();
|
|
222
|
+
return strategyFiles[0] || null;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* List all available strategy files
|
|
226
|
+
*/
|
|
227
|
+
async listStrategyFiles() {
|
|
228
|
+
const mycontextDir = path_1.default.join(process.cwd(), ".mycontext");
|
|
229
|
+
if (!(await fs.pathExists(mycontextDir))) {
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
const files = await fs.readdir(mycontextDir);
|
|
233
|
+
const strategyFiles = files
|
|
234
|
+
.filter((file) => file.startsWith("build-strategy-") && file.endsWith(".json"))
|
|
235
|
+
.map((file) => {
|
|
236
|
+
const match = file.match(/build-strategy-(\w+)-(\d{4}-\d{2}-\d{2})\.json/);
|
|
237
|
+
if (match) {
|
|
238
|
+
return {
|
|
239
|
+
type: match[1],
|
|
240
|
+
date: match[2],
|
|
241
|
+
filepath: path_1.default.join(mycontextDir, file),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
return null;
|
|
245
|
+
})
|
|
246
|
+
.filter(Boolean)
|
|
247
|
+
.sort((a, b) => b.date.localeCompare(a.date));
|
|
248
|
+
return strategyFiles;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get AI-powered strategy recommendations
|
|
252
|
+
*/
|
|
253
|
+
async recommendStrategies(userPreferences) {
|
|
254
|
+
const context = await this.loadProjectContext();
|
|
255
|
+
const prompt = `You are an expert software development strategist. Based on this project context, recommend the best build strategies.
|
|
256
|
+
|
|
257
|
+
PROJECT CONTEXT:
|
|
258
|
+
- Name: ${context.projectName}
|
|
259
|
+
- Description: ${context.description}
|
|
260
|
+
- Components: ${context.components.length} found (${context.components.join(", ")})
|
|
261
|
+
- User Roles: ${context.userRoles.join(", ")}
|
|
262
|
+
- Tech Stack: ${context.techStack.join(", ")}
|
|
263
|
+
|
|
264
|
+
USER PREFERENCES:
|
|
265
|
+
${userPreferences ? JSON.stringify(userPreferences, null, 2) : "Not specified"}
|
|
266
|
+
|
|
267
|
+
PROJECT DOCUMENTATION:
|
|
268
|
+
PRD: ${context.prd?.substring(0, 500) || "Not available"}
|
|
269
|
+
Features: ${context.features?.substring(0, 300) || "Not available"}
|
|
270
|
+
User Flows: ${context.userFlows?.substring(0, 300) || "Not available"}
|
|
271
|
+
|
|
272
|
+
Available strategies:
|
|
273
|
+
1. Foundation First - Build core infrastructure first (auth, DB, architecture)
|
|
274
|
+
2. Vertical Slice - Build complete user journeys end-to-end
|
|
275
|
+
3. Horizontal Slice - Build feature by feature across the app
|
|
276
|
+
4. Iterative Scaffolding - Small chunks everywhere, refine later
|
|
277
|
+
5. Hybrid Approach - Combines multiple strategies based on project needs
|
|
278
|
+
|
|
279
|
+
Generate recommendations as JSON:
|
|
280
|
+
{
|
|
281
|
+
"recommended": [
|
|
282
|
+
{
|
|
283
|
+
"id": "strategy-id",
|
|
284
|
+
"name": "Strategy Name",
|
|
285
|
+
"description": "Brief description",
|
|
286
|
+
"icon": "🎯",
|
|
287
|
+
"complexity": "low/medium/high",
|
|
288
|
+
"timeToFirstDemo": "1-2 weeks",
|
|
289
|
+
"bestFor": ["array of use cases"],
|
|
290
|
+
"pros": ["array of advantages"],
|
|
291
|
+
"cons": ["array of disadvantages"]
|
|
292
|
+
}
|
|
293
|
+
],
|
|
294
|
+
"reasoning": "Detailed explanation of recommendations",
|
|
295
|
+
"alternatives": [
|
|
296
|
+
{
|
|
297
|
+
"id": "alternative-id",
|
|
298
|
+
"name": "Alternative Name",
|
|
299
|
+
"description": "Brief description",
|
|
300
|
+
"icon": "🔄",
|
|
301
|
+
"whyNotPrimary": "Why this wasn't the top choice"
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
}`;
|
|
305
|
+
try {
|
|
306
|
+
const response = await this.aiClient.generateText(prompt, {
|
|
307
|
+
temperature: 0.2,
|
|
308
|
+
maxTokens: 2500,
|
|
309
|
+
});
|
|
310
|
+
const result = JSON.parse(response.text || "{}");
|
|
311
|
+
// Save to JSON file
|
|
312
|
+
const filepath = await this.saveStrategyData("recommendations", result);
|
|
313
|
+
console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
// Fallback to default recommendations
|
|
318
|
+
const fallback = {
|
|
319
|
+
recommended: [
|
|
320
|
+
{
|
|
321
|
+
id: "vertical-slice",
|
|
322
|
+
name: "Vertical Slice",
|
|
323
|
+
description: "Build complete user journeys end-to-end",
|
|
324
|
+
icon: "🎯",
|
|
325
|
+
complexity: "medium",
|
|
326
|
+
timeToFirstDemo: "2-3 weeks",
|
|
327
|
+
bestFor: ["user-focused apps", "quick demos"],
|
|
328
|
+
pros: ["Fast user value", "End-to-end testing"],
|
|
329
|
+
cons: ["May duplicate work"],
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
reasoning: "Vertical slice approach recommended for balanced development",
|
|
333
|
+
alternatives: [],
|
|
334
|
+
};
|
|
335
|
+
// Save fallback data too
|
|
336
|
+
try {
|
|
337
|
+
const filepath = await this.saveStrategyData("recommendations", fallback);
|
|
338
|
+
console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
|
|
339
|
+
}
|
|
340
|
+
catch (saveError) {
|
|
341
|
+
// Silent fail for fallback save
|
|
342
|
+
}
|
|
343
|
+
return fallback;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Generate AI-powered build plan
|
|
348
|
+
*/
|
|
349
|
+
async generateBuildPlan(strategyId) {
|
|
350
|
+
const context = await this.loadProjectContext();
|
|
351
|
+
const strategy = strategyId || "vertical-slice";
|
|
352
|
+
const prompt = `You are an expert project planner. Create a detailed build plan for this project using the ${strategy} strategy.
|
|
353
|
+
|
|
354
|
+
PROJECT CONTEXT:
|
|
355
|
+
- Name: ${context.projectName}
|
|
356
|
+
- Description: ${context.description}
|
|
357
|
+
- Components: ${context.components.join(", ")}
|
|
358
|
+
- User Roles: ${context.userRoles.join(", ")}
|
|
359
|
+
- Tech Stack: ${context.techStack.join(", ")}
|
|
360
|
+
|
|
361
|
+
STRATEGY: ${strategy}
|
|
362
|
+
|
|
363
|
+
Generate a detailed build plan as JSON:
|
|
364
|
+
{
|
|
365
|
+
"strategy": {
|
|
366
|
+
"id": "${strategy}",
|
|
367
|
+
"name": "Strategy Name",
|
|
368
|
+
"description": "Strategy description",
|
|
369
|
+
"icon": "🎯",
|
|
370
|
+
"complexity": "medium",
|
|
371
|
+
"timeToFirstDemo": "2-3 weeks",
|
|
372
|
+
"bestFor": ["use cases"],
|
|
373
|
+
"pros": ["advantages"],
|
|
374
|
+
"cons": ["disadvantages"]
|
|
375
|
+
},
|
|
376
|
+
"plan": [
|
|
377
|
+
{
|
|
378
|
+
"phase": 1,
|
|
379
|
+
"name": "Phase Name",
|
|
380
|
+
"duration": "1-2 weeks",
|
|
381
|
+
"estimatedEffort": "1-2 weeks",
|
|
382
|
+
"tasks": ["task1", "task2"],
|
|
383
|
+
"deliverables": ["deliverable1"],
|
|
384
|
+
"successCriteria": "Success criteria"
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
"totalDuration": "4-6 weeks",
|
|
388
|
+
"milestones": ["Phase 1: Foundation", "Phase 2: Core Features", "Phase 3: Polish"]
|
|
389
|
+
}`;
|
|
390
|
+
try {
|
|
391
|
+
const response = await this.aiClient.generateText(prompt, {
|
|
392
|
+
temperature: 0.2,
|
|
393
|
+
maxTokens: 3000,
|
|
394
|
+
});
|
|
395
|
+
const result = JSON.parse(response.text || "{}");
|
|
396
|
+
// Save to JSON file
|
|
397
|
+
const filepath = await this.saveStrategyData("plan", result);
|
|
398
|
+
console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
|
|
399
|
+
return result;
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
// Fallback plan
|
|
403
|
+
const fallback = {
|
|
404
|
+
strategy: {
|
|
405
|
+
id: strategy,
|
|
406
|
+
name: "Build Strategy",
|
|
407
|
+
description: "Detailed build plan",
|
|
408
|
+
icon: "🎯",
|
|
409
|
+
complexity: "medium",
|
|
410
|
+
timeToFirstDemo: "2-3 weeks",
|
|
411
|
+
bestFor: ["general projects"],
|
|
412
|
+
pros: ["Structured approach"],
|
|
413
|
+
cons: ["May need adjustment"],
|
|
414
|
+
},
|
|
415
|
+
plan: [
|
|
416
|
+
{
|
|
417
|
+
phase: 1,
|
|
418
|
+
name: "Foundation Setup",
|
|
419
|
+
duration: "1-2 weeks",
|
|
420
|
+
estimatedEffort: "1-2 weeks",
|
|
421
|
+
tasks: ["Project setup", "Authentication", "Core components"],
|
|
422
|
+
deliverables: ["Working foundation", "Basic auth", "Core UI"],
|
|
423
|
+
successCriteria: "Foundation is solid and ready for features",
|
|
424
|
+
},
|
|
425
|
+
],
|
|
426
|
+
totalDuration: "4-6 weeks",
|
|
427
|
+
milestones: [
|
|
428
|
+
"Phase 1: Foundation",
|
|
429
|
+
"Phase 2: Features",
|
|
430
|
+
"Phase 3: Polish",
|
|
431
|
+
],
|
|
432
|
+
};
|
|
433
|
+
// Save fallback data too
|
|
434
|
+
try {
|
|
435
|
+
const filepath = await this.saveStrategyData("plan", fallback);
|
|
436
|
+
console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
|
|
437
|
+
}
|
|
438
|
+
catch (saveError) {
|
|
439
|
+
// Silent fail for fallback save
|
|
440
|
+
}
|
|
441
|
+
return fallback;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Generate AI-powered task list
|
|
446
|
+
*/
|
|
447
|
+
async generateTaskList(strategyId, phaseNumber) {
|
|
448
|
+
const context = await this.loadProjectContext();
|
|
449
|
+
const strategy = strategyId || "vertical-slice";
|
|
450
|
+
const phase = phaseNumber || 1;
|
|
451
|
+
const prompt = `You are an expert task planner. Generate detailed tasks for Phase ${phase} of the ${strategy} strategy.
|
|
452
|
+
|
|
453
|
+
PROJECT CONTEXT:
|
|
454
|
+
- Name: ${context.projectName}
|
|
455
|
+
- Description: ${context.description}
|
|
456
|
+
- Components: ${context.components.join(", ")}
|
|
457
|
+
- User Roles: ${context.userRoles.join(", ")}
|
|
458
|
+
- Tech Stack: ${context.techStack.join(", ")}
|
|
459
|
+
|
|
460
|
+
STRATEGY: ${strategy}
|
|
461
|
+
PHASE: ${phase}
|
|
462
|
+
|
|
463
|
+
Generate detailed tasks as JSON:
|
|
464
|
+
{
|
|
465
|
+
"phase": {
|
|
466
|
+
"phase": ${phase},
|
|
467
|
+
"name": "Phase Name",
|
|
468
|
+
"duration": "1-2 weeks",
|
|
469
|
+
"tasks": ["task1", "task2", "task3"],
|
|
470
|
+
"deliverables": ["deliverable1", "deliverable2"],
|
|
471
|
+
"successCriteria": "Clear success criteria"
|
|
472
|
+
},
|
|
473
|
+
"tasks": [
|
|
474
|
+
{
|
|
475
|
+
"id": "task-1",
|
|
476
|
+
"title": "Task Title",
|
|
477
|
+
"description": "Detailed task description",
|
|
478
|
+
"priority": "high/medium/low",
|
|
479
|
+
"estimatedTime": "1-2 days",
|
|
480
|
+
"dependencies": ["dependency1"],
|
|
481
|
+
"deliverables": ["deliverable1", "deliverable2"]
|
|
482
|
+
}
|
|
483
|
+
]
|
|
484
|
+
}`;
|
|
485
|
+
try {
|
|
486
|
+
const response = await this.aiClient.generateText(prompt, {
|
|
487
|
+
temperature: 0.2,
|
|
488
|
+
maxTokens: 2000,
|
|
489
|
+
});
|
|
490
|
+
const result = JSON.parse(response.text || "{}");
|
|
491
|
+
// Save to JSON file
|
|
492
|
+
const filepath = await this.saveStrategyData("tasks", result);
|
|
493
|
+
console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
|
|
494
|
+
return result;
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
// Fallback task list
|
|
498
|
+
const fallback = {
|
|
499
|
+
phase: {
|
|
500
|
+
phase,
|
|
501
|
+
name: "Phase Name",
|
|
502
|
+
duration: "1-2 weeks",
|
|
503
|
+
tasks: ["Task 1", "Task 2", "Task 3"],
|
|
504
|
+
deliverables: ["Deliverable 1", "Deliverable 2"],
|
|
505
|
+
successCriteria: "Phase completed successfully",
|
|
506
|
+
},
|
|
507
|
+
tasks: [
|
|
508
|
+
{
|
|
509
|
+
id: "task-1",
|
|
510
|
+
title: "Project Setup",
|
|
511
|
+
description: "Set up the core project structure with Next.js, TypeScript, and Tailwind CSS",
|
|
512
|
+
priority: "high",
|
|
513
|
+
estimatedTime: "1-2 days",
|
|
514
|
+
dependencies: [],
|
|
515
|
+
deliverables: [
|
|
516
|
+
"Working Next.js app",
|
|
517
|
+
"TypeScript config",
|
|
518
|
+
"Tailwind setup",
|
|
519
|
+
],
|
|
520
|
+
},
|
|
521
|
+
],
|
|
522
|
+
};
|
|
523
|
+
// Save fallback data too
|
|
524
|
+
try {
|
|
525
|
+
const filepath = await this.saveStrategyData("tasks", fallback);
|
|
526
|
+
console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
|
|
527
|
+
}
|
|
528
|
+
catch (saveError) {
|
|
529
|
+
// Silent fail for fallback save
|
|
530
|
+
}
|
|
531
|
+
return fallback;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Compare strategies using AI
|
|
536
|
+
*/
|
|
537
|
+
async compareStrategies() {
|
|
538
|
+
const context = await this.loadProjectContext();
|
|
539
|
+
const prompt = `You are an expert development strategist. Compare all build strategies for this project.
|
|
540
|
+
|
|
541
|
+
PROJECT CONTEXT:
|
|
542
|
+
- Name: ${context.projectName}
|
|
543
|
+
- Description: ${context.description}
|
|
544
|
+
- Components: ${context.components.join(", ")}
|
|
545
|
+
- User Roles: ${context.userRoles.join(", ")}
|
|
546
|
+
- Tech Stack: ${context.techStack.join(", ")}
|
|
547
|
+
|
|
548
|
+
Compare these strategies: foundation-first, vertical-slice, horizontal-slice, iterative-scaffolding, hybrid
|
|
549
|
+
|
|
550
|
+
Generate comparison as JSON:
|
|
551
|
+
{
|
|
552
|
+
"strategies": [
|
|
553
|
+
{
|
|
554
|
+
"id": "foundation-first",
|
|
555
|
+
"name": "Foundation First",
|
|
556
|
+
"description": "Build core infrastructure first",
|
|
557
|
+
"icon": "🏗️",
|
|
558
|
+
"complexity": "medium",
|
|
559
|
+
"timeToFirstDemo": "3-4 weeks",
|
|
560
|
+
"bestFor": ["complex projects", "team development"],
|
|
561
|
+
"pros": ["solid foundation", "scalable"],
|
|
562
|
+
"cons": ["slow initial progress"],
|
|
563
|
+
"score": 8.5
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
"recommendation": "vertical-slice",
|
|
567
|
+
"reasoning": "Best fit for this project based on analysis"
|
|
568
|
+
}`;
|
|
569
|
+
try {
|
|
570
|
+
const response = await this.aiClient.generateText(prompt, {
|
|
571
|
+
temperature: 0.2,
|
|
572
|
+
maxTokens: 2500,
|
|
573
|
+
});
|
|
574
|
+
const result = JSON.parse(response.text || "{}");
|
|
575
|
+
// Save to JSON file
|
|
576
|
+
const filepath = await this.saveStrategyData("comparison", result);
|
|
577
|
+
console.log(chalk_1.default.gray(`💾 Saved to: ${filepath}`));
|
|
578
|
+
return result;
|
|
579
|
+
}
|
|
580
|
+
catch (error) {
|
|
581
|
+
// Fallback comparison
|
|
582
|
+
const fallback = {
|
|
583
|
+
strategies: [
|
|
584
|
+
{
|
|
585
|
+
id: "vertical-slice",
|
|
586
|
+
name: "Vertical Slice",
|
|
587
|
+
description: "Build complete user journeys end-to-end",
|
|
588
|
+
icon: "🎯",
|
|
589
|
+
complexity: "medium",
|
|
590
|
+
timeToFirstDemo: "2-3 weeks",
|
|
591
|
+
bestFor: ["user-focused apps", "quick demos"],
|
|
592
|
+
pros: ["Fast user value", "End-to-end testing"],
|
|
593
|
+
cons: ["May duplicate work"],
|
|
594
|
+
score: 8.5,
|
|
595
|
+
},
|
|
596
|
+
],
|
|
597
|
+
recommendation: "vertical-slice",
|
|
598
|
+
reasoning: "Vertical slice approach recommended for balanced development",
|
|
599
|
+
};
|
|
600
|
+
// Save fallback data too
|
|
601
|
+
try {
|
|
602
|
+
const filepath = await this.saveStrategyData("comparison", fallback);
|
|
603
|
+
console.log(chalk_1.default.gray(`💾 Saved fallback to: ${filepath}`));
|
|
604
|
+
}
|
|
605
|
+
catch (saveError) {
|
|
606
|
+
// Silent fail for fallback save
|
|
607
|
+
}
|
|
608
|
+
return fallback;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
exports.BuildStrategyManager = BuildStrategyManager;
|
|
613
|
+
//# sourceMappingURL=buildStrategyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildStrategyManager.js","sourceRoot":"","sources":["../../src/utils/buildStrategyManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextLoader.d.ts","sourceRoot":"","sources":["../../src/utils/contextLoader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"contextLoader.d.ts","sourceRoot":"","sources":["../../src/utils/contextLoader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAI/C;;OAEG;IACG,kBAAkB,CACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC;IA2C1B;;OAEG;YACW,iBAAiB;IAwL/B;;OAEG;IACG,yBAAyB,CAC7B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;CAanD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|