mycontext-cli 2.0.24 → 2.0.26

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 (109) hide show
  1. package/README.md +169 -37
  2. package/dist/cli.js +92 -80
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/build-app.d.ts +6 -1
  5. package/dist/commands/build-app.d.ts.map +1 -1
  6. package/dist/commands/build-app.js +97 -9
  7. package/dist/commands/build-app.js.map +1 -1
  8. package/dist/commands/compile-prd.d.ts.map +1 -1
  9. package/dist/commands/compile-prd.js +7 -0
  10. package/dist/commands/compile-prd.js.map +1 -1
  11. package/dist/commands/export-progress.d.ts +34 -0
  12. package/dist/commands/export-progress.d.ts.map +1 -0
  13. package/dist/commands/export-progress.js +552 -0
  14. package/dist/commands/export-progress.js.map +1 -0
  15. package/dist/commands/generate-context-files.d.ts.map +1 -1
  16. package/dist/commands/generate-context-files.js +10 -2
  17. package/dist/commands/generate-context-files.js.map +1 -1
  18. package/dist/commands/generate.d.ts +8 -1
  19. package/dist/commands/generate.d.ts.map +1 -1
  20. package/dist/commands/generate.js +212 -0
  21. package/dist/commands/generate.js.map +1 -1
  22. package/dist/commands/help.d.ts +17 -0
  23. package/dist/commands/help.d.ts.map +1 -0
  24. package/dist/commands/help.js +329 -0
  25. package/dist/commands/help.js.map +1 -0
  26. package/dist/commands/import-project-plan.d.ts +27 -0
  27. package/dist/commands/import-project-plan.d.ts.map +1 -0
  28. package/dist/commands/import-project-plan.js +411 -0
  29. package/dist/commands/import-project-plan.js.map +1 -0
  30. package/dist/commands/pm-integration.d.ts +18 -0
  31. package/dist/commands/pm-integration.d.ts.map +1 -0
  32. package/dist/commands/pm-integration.js +385 -0
  33. package/dist/commands/pm-integration.js.map +1 -0
  34. package/dist/commands/setup-complete.d.ts +16 -0
  35. package/dist/commands/setup-complete.d.ts.map +1 -0
  36. package/dist/commands/setup-complete.js +468 -0
  37. package/dist/commands/setup-complete.js.map +1 -0
  38. package/dist/commands/setup-shadcn.d.ts +20 -0
  39. package/dist/commands/setup-shadcn.d.ts.map +1 -0
  40. package/dist/commands/setup-shadcn.js +241 -0
  41. package/dist/commands/setup-shadcn.js.map +1 -0
  42. package/dist/commands/suggest.d.ts +15 -0
  43. package/dist/commands/suggest.d.ts.map +1 -0
  44. package/dist/commands/suggest.js +288 -0
  45. package/dist/commands/suggest.js.map +1 -0
  46. package/dist/commands/update.d.ts +0 -4
  47. package/dist/commands/update.d.ts.map +1 -1
  48. package/dist/commands/update.js +7 -197
  49. package/dist/commands/update.js.map +1 -1
  50. package/dist/commands/workflow.d.ts +16 -0
  51. package/dist/commands/workflow.d.ts.map +1 -0
  52. package/dist/commands/workflow.js +464 -0
  53. package/dist/commands/workflow.js.map +1 -0
  54. package/dist/package.json +3 -1
  55. package/dist/services/PMIntegrationService.d.ts +46 -0
  56. package/dist/services/PMIntegrationService.d.ts.map +1 -0
  57. package/dist/services/PMIntegrationService.js +363 -0
  58. package/dist/services/PMIntegrationService.js.map +1 -0
  59. package/dist/services/WebhookServer.d.ts +37 -0
  60. package/dist/services/WebhookServer.d.ts.map +1 -0
  61. package/dist/services/WebhookServer.js +231 -0
  62. package/dist/services/WebhookServer.js.map +1 -0
  63. package/dist/types/index.d.ts +1 -0
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/dist/types/index.js +2 -0
  66. package/dist/types/index.js.map +1 -1
  67. package/dist/types/pm-integration.d.ts +241 -0
  68. package/dist/types/pm-integration.d.ts.map +1 -0
  69. package/dist/types/pm-integration.js +24 -0
  70. package/dist/types/pm-integration.js.map +1 -0
  71. package/dist/utils/NextJSProjectValidator.d.ts.map +1 -1
  72. package/dist/utils/NextJSProjectValidator.js +14 -7
  73. package/dist/utils/NextJSProjectValidator.js.map +1 -1
  74. package/dist/utils/ProjectStateAnalyzer.d.ts +46 -0
  75. package/dist/utils/ProjectStateAnalyzer.d.ts.map +1 -0
  76. package/dist/utils/ProjectStateAnalyzer.js +311 -0
  77. package/dist/utils/ProjectStateAnalyzer.js.map +1 -0
  78. package/dist/utils/ProjectStructureValidator.d.ts +12 -0
  79. package/dist/utils/ProjectStructureValidator.d.ts.map +1 -1
  80. package/dist/utils/ProjectStructureValidator.js +111 -14
  81. package/dist/utils/ProjectStructureValidator.js.map +1 -1
  82. package/dist/utils/claudeAgentClient.d.ts +8 -0
  83. package/dist/utils/claudeAgentClient.d.ts.map +1 -1
  84. package/dist/utils/claudeAgentClient.js +101 -25
  85. package/dist/utils/claudeAgentClient.js.map +1 -1
  86. package/dist/utils/envExampleGenerator.d.ts.map +1 -1
  87. package/dist/utils/envExampleGenerator.js +12 -1
  88. package/dist/utils/envExampleGenerator.js.map +1 -1
  89. package/dist/utils/errorHandler.d.ts +31 -74
  90. package/dist/utils/errorHandler.d.ts.map +1 -1
  91. package/dist/utils/errorHandler.js +190 -276
  92. package/dist/utils/errorHandler.js.map +1 -1
  93. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  94. package/dist/utils/hybridAIClient.js +48 -14
  95. package/dist/utils/hybridAIClient.js.map +1 -1
  96. package/dist/utils/mcpTools.d.ts +9 -9
  97. package/dist/utils/nextStepsSuggester.d.ts +52 -0
  98. package/dist/utils/nextStepsSuggester.d.ts.map +1 -0
  99. package/dist/utils/nextStepsSuggester.js +438 -0
  100. package/dist/utils/nextStepsSuggester.js.map +1 -0
  101. package/dist/utils/progress.d.ts +31 -1
  102. package/dist/utils/progress.d.ts.map +1 -1
  103. package/dist/utils/progress.js +110 -2
  104. package/dist/utils/progress.js.map +1 -1
  105. package/dist/utils/workflowEngine.d.ts +96 -0
  106. package/dist/utils/workflowEngine.d.ts.map +1 -0
  107. package/dist/utils/workflowEngine.js +793 -0
  108. package/dist/utils/workflowEngine.js.map +1 -0
  109. package/package.json +3 -1
@@ -0,0 +1,552 @@
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.ExportProgressCommand = void 0;
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ class ExportProgressCommand {
44
+ register(program) {
45
+ program
46
+ .command("export-progress")
47
+ .description("Export project progress for mycontext PM synchronization")
48
+ .option("-o, --output <file>", "Output file path", "progress-export.json")
49
+ .option("-f, --format <type>", "Output format: json|summary", "json")
50
+ .option("-w, --webhook <url>", "Webhook URL to send progress to mycontext PM")
51
+ .option("-p, --project-id <id>", "Project ID for mycontext PM sync")
52
+ .option("--verbose", "Detailed output", false)
53
+ .option("--include-tasks", "Include detailed task information", true)
54
+ .option("--include-components", "Include generated components list", true)
55
+ .option("--include-metrics", "Include project metrics", true)
56
+ .action(async (options) => {
57
+ await this.exportProgress(options);
58
+ });
59
+ }
60
+ async exportProgress(options) {
61
+ const { output, format, webhook, projectId, verbose, includeTasks = true, includeComponents = true, includeMetrics = true, } = options;
62
+ console.log(chalk_1.default.blue.bold("📊 Exporting Project Progress\n"));
63
+ try {
64
+ // Load project context
65
+ const projectContext = await this.loadProjectContext();
66
+ // Load current tasks
67
+ const tasks = await this.loadTasks();
68
+ // Analyze generated components
69
+ const components = await this.analyzeComponents();
70
+ // Calculate metrics
71
+ const metrics = this.calculateMetrics(tasks, components);
72
+ // Create mycontext PM output
73
+ const pmOutput = {
74
+ projectId: projectId || projectContext?.projectId || this.generateProjectId(),
75
+ timestamp: new Date().toISOString(),
76
+ status: "success",
77
+ progress: {
78
+ completedTasks: tasks.filter((t) => t.status === "completed").length,
79
+ totalTasks: tasks.length,
80
+ completionPercentage: tasks.length > 0
81
+ ? (tasks.filter((t) => t.status === "completed").length /
82
+ tasks.length) *
83
+ 100
84
+ : 0,
85
+ currentPhase: this.determineCurrentPhase(tasks),
86
+ nextMilestone: this.determineNextMilestone(tasks),
87
+ blockers: this.identifyBlockers(tasks),
88
+ },
89
+ generated: {
90
+ components: components.componentFiles,
91
+ pages: components.pageFiles,
92
+ apiEndpoints: components.apiFiles,
93
+ tests: components.testFiles,
94
+ },
95
+ errors: [],
96
+ suggestions: this.generateSuggestions(tasks, metrics),
97
+ nextSteps: this.generateNextSteps(tasks, metrics),
98
+ };
99
+ // Output based on format
100
+ if (format === "summary") {
101
+ this.displaySummary(pmOutput, tasks, components, metrics);
102
+ }
103
+ else {
104
+ // Save JSON output
105
+ const outputPath = path_1.default.resolve(output || "progress-export.json");
106
+ fs_1.default.writeFileSync(outputPath, JSON.stringify(pmOutput, null, 2));
107
+ console.log(chalk_1.default.green(`✅ Progress exported to: ${outputPath}`));
108
+ if (verbose) {
109
+ this.displayDetailedProgress(pmOutput);
110
+ }
111
+ }
112
+ // Send to webhook if specified
113
+ if (webhook) {
114
+ await this.sendToWebhook(webhook, pmOutput);
115
+ }
116
+ // Display key insights
117
+ this.displayInsights(pmOutput);
118
+ }
119
+ catch (error) {
120
+ console.error(chalk_1.default.red("❌ Export failed:"), error instanceof Error ? error.message : "Unknown error");
121
+ if (verbose) {
122
+ console.error(chalk_1.default.red("Full error:"), error);
123
+ }
124
+ throw error;
125
+ }
126
+ }
127
+ async loadProjectContext() {
128
+ const contextPaths = [
129
+ path_1.default.join(process.cwd(), ".mycontext", "project-context.json"),
130
+ path_1.default.join(process.cwd(), ".mycontext", "context.json"),
131
+ ];
132
+ for (const contextPath of contextPaths) {
133
+ if (fs_1.default.existsSync(contextPath)) {
134
+ try {
135
+ const context = JSON.parse(fs_1.default.readFileSync(contextPath, "utf8"));
136
+ return context;
137
+ }
138
+ catch (error) {
139
+ console.warn(chalk_1.default.yellow(`Warning: Could not parse ${contextPath}`));
140
+ }
141
+ }
142
+ }
143
+ console.log(chalk_1.default.yellow("⚠️ No project context found, using defaults"));
144
+ return null;
145
+ }
146
+ async loadTasks() {
147
+ const todosPath = path_1.default.join(process.cwd(), ".mycontext", "todos.json");
148
+ if (fs_1.default.existsSync(todosPath)) {
149
+ try {
150
+ const todos = JSON.parse(fs_1.default.readFileSync(todosPath, "utf8"));
151
+ return Array.isArray(todos) ? todos : [];
152
+ }
153
+ catch (error) {
154
+ console.warn(chalk_1.default.yellow("Warning: Could not parse todos.json"));
155
+ }
156
+ }
157
+ console.log(chalk_1.default.yellow("⚠️ No tasks found"));
158
+ return [];
159
+ }
160
+ async analyzeComponents() {
161
+ const result = {
162
+ componentFiles: [],
163
+ pageFiles: [],
164
+ apiFiles: [],
165
+ testFiles: [],
166
+ totalFiles: 0,
167
+ };
168
+ try {
169
+ // Analyze components directory
170
+ const componentsDir = path_1.default.join(process.cwd(), "components");
171
+ if (fs_1.default.existsSync(componentsDir)) {
172
+ const componentFiles = await this.findFiles(componentsDir, [
173
+ "**/*.{tsx,ts,jsx,js}",
174
+ ]);
175
+ result.componentFiles = componentFiles.map((f) => path_1.default.relative(process.cwd(), f));
176
+ }
177
+ // Analyze pages/app directory
178
+ const pagesDir = path_1.default.join(process.cwd(), "app");
179
+ const pagesDirAlt = path_1.default.join(process.cwd(), "pages");
180
+ const pageDir = fs_1.default.existsSync(pagesDir)
181
+ ? pagesDir
182
+ : fs_1.default.existsSync(pagesDirAlt)
183
+ ? pagesDirAlt
184
+ : null;
185
+ if (pageDir) {
186
+ const pageFiles = await this.findFiles(pageDir, [
187
+ "**/*.{tsx,ts,jsx,js}",
188
+ ]);
189
+ result.pageFiles = pageFiles.map((f) => path_1.default.relative(process.cwd(), f));
190
+ }
191
+ // Analyze API routes
192
+ const apiDir = path_1.default.join(process.cwd(), "app", "api");
193
+ if (fs_1.default.existsSync(apiDir)) {
194
+ const apiFiles = await this.findFiles(apiDir, ["**/*.{ts,js}"]);
195
+ result.apiFiles = apiFiles.map((f) => path_1.default.relative(process.cwd(), f));
196
+ }
197
+ // Analyze test files
198
+ const testFiles = await this.findFiles(process.cwd(), [
199
+ "**/*.{test,spec}.{tsx,ts,jsx,js}",
200
+ ]);
201
+ result.testFiles = testFiles.map((f) => path_1.default.relative(process.cwd(), f));
202
+ result.totalFiles =
203
+ result.componentFiles.length +
204
+ result.pageFiles.length +
205
+ result.apiFiles.length +
206
+ result.testFiles.length;
207
+ }
208
+ catch (error) {
209
+ console.warn(chalk_1.default.yellow("Warning: Could not analyze components:"), error);
210
+ }
211
+ return result;
212
+ }
213
+ async findFiles(dir, patterns) {
214
+ // Simple file finder - in production, this would use glob properly
215
+ const results = [];
216
+ const walk = (currentDir) => {
217
+ const items = fs_1.default.readdirSync(currentDir);
218
+ for (const item of items) {
219
+ const fullPath = path_1.default.join(currentDir, item);
220
+ const stat = fs_1.default.statSync(fullPath);
221
+ if (stat.isDirectory() &&
222
+ !item.startsWith(".") &&
223
+ item !== "node_modules") {
224
+ walk(fullPath);
225
+ }
226
+ else if (stat.isFile()) {
227
+ // Simple pattern matching
228
+ for (const pattern of patterns) {
229
+ if (this.matchesPattern(fullPath, pattern)) {
230
+ results.push(fullPath);
231
+ break;
232
+ }
233
+ }
234
+ }
235
+ }
236
+ };
237
+ walk(dir);
238
+ return results;
239
+ }
240
+ matchesPattern(filePath, pattern) {
241
+ // Very basic pattern matching - in production, use proper glob library
242
+ const fileName = path_1.default.basename(filePath);
243
+ const ext = path_1.default.extname(fileName);
244
+ if (pattern.includes("{")) {
245
+ // Handle {tsx,ts,jsx,js} patterns
246
+ const extPattern = pattern.match(/\{([^}]+)\}/)?.[1];
247
+ if (extPattern) {
248
+ const exts = extPattern.split(",");
249
+ return exts.some((e) => fileName.endsWith(`.${e.trim()}`));
250
+ }
251
+ }
252
+ if (pattern.includes(".test") || pattern.includes(".spec")) {
253
+ return fileName.includes(".test") || fileName.includes(".spec");
254
+ }
255
+ return pattern.includes(ext.substring(1));
256
+ }
257
+ calculateMetrics(tasks, components) {
258
+ const completedTasks = tasks.filter((t) => t.status === "completed");
259
+ const inProgressTasks = tasks.filter((t) => t.status === "in_progress");
260
+ const blockedTasks = tasks.filter((t) => t.status === "blocked");
261
+ const estimatedHours = tasks.reduce((sum, t) => sum + (t.estimatedHours || 0), 0);
262
+ const actualHours = completedTasks.reduce((sum, t) => sum + (t.actualHours || 0), 0);
263
+ return {
264
+ totalTasks: tasks.length,
265
+ completedTasks: completedTasks.length,
266
+ inProgressTasks: inProgressTasks.length,
267
+ blockedTasks: blockedTasks.length,
268
+ completionPercentage: tasks.length > 0 ? (completedTasks.length / tasks.length) * 100 : 0,
269
+ estimatedHours,
270
+ actualHours,
271
+ velocity: actualHours > 0 ? completedTasks.length / actualHours : 0,
272
+ componentsGenerated: components.totalFiles,
273
+ testCoverage: components.testFiles.length > 0
274
+ ? (components.testFiles.length /
275
+ (components.componentFiles.length +
276
+ components.pageFiles.length)) *
277
+ 100
278
+ : 0,
279
+ };
280
+ }
281
+ determineCurrentPhase(tasks) {
282
+ // Simple phase detection based on task completion patterns
283
+ const completedCount = tasks.filter((t) => t.status === "completed").length;
284
+ const totalCount = tasks.length;
285
+ if (completedCount === 0)
286
+ return "Planning";
287
+ if (completedCount < totalCount * 0.3)
288
+ return "Setup";
289
+ if (completedCount < totalCount * 0.7)
290
+ return "Development";
291
+ if (completedCount < totalCount)
292
+ return "Testing";
293
+ return "Completed";
294
+ }
295
+ determineNextMilestone(tasks) {
296
+ const pendingTasks = tasks.filter((t) => t.status !== "completed");
297
+ if (pendingTasks.length === 0)
298
+ return "Project Complete";
299
+ // Find next high-priority task
300
+ const nextTask = pendingTasks
301
+ .filter((t) => t.priority === "critical" || t.priority === "high")
302
+ .sort((a, b) => {
303
+ const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
304
+ const aPriority = priorityOrder[a.priority] ?? 2;
305
+ const bPriority = priorityOrder[b.priority] ?? 2;
306
+ return aPriority - bPriority;
307
+ })[0];
308
+ return nextTask ? nextTask.title : "Continue development";
309
+ }
310
+ identifyBlockers(tasks) {
311
+ return tasks.filter((t) => t.status === "blocked").map((t) => t.title);
312
+ }
313
+ generateSuggestions(tasks, metrics) {
314
+ const suggestions = [];
315
+ if (metrics.blockedTasks > 0) {
316
+ suggestions.push("Resolve blocked tasks to maintain momentum");
317
+ }
318
+ if (metrics.completionPercentage < 50 && tasks.length > 10) {
319
+ suggestions.push("Consider breaking large tasks into smaller, manageable units");
320
+ }
321
+ if (metrics.testCoverage < 50) {
322
+ suggestions.push("Increase test coverage for better code quality");
323
+ }
324
+ if (metrics.velocity > 0 && metrics.velocity < 0.5) {
325
+ suggestions.push("Consider optimizing development workflow for better velocity");
326
+ }
327
+ return suggestions;
328
+ }
329
+ generateNextSteps(tasks, metrics) {
330
+ const nextSteps = [];
331
+ if (metrics.blockedTasks > 0) {
332
+ nextSteps.push("Address blocked tasks and dependencies");
333
+ }
334
+ const pendingHighPriority = tasks.filter((t) => (t.status === "pending" || t.status === "todo") &&
335
+ (t.priority === "critical" || t.priority === "high"));
336
+ if (pendingHighPriority.length > 0) {
337
+ nextSteps.push(`Focus on ${pendingHighPriority.length} high-priority tasks`);
338
+ }
339
+ if (metrics.testCoverage < 70) {
340
+ nextSteps.push("Add unit tests for generated components");
341
+ }
342
+ if (metrics.completionPercentage < 100) {
343
+ nextSteps.push("Continue development on remaining tasks");
344
+ }
345
+ return nextSteps;
346
+ }
347
+ displaySummary(pmOutput, tasks, components, metrics) {
348
+ console.log(chalk_1.default.blue.bold("📊 Project Progress Summary"));
349
+ console.log(chalk_1.default.gray("─".repeat(50)));
350
+ console.log(chalk_1.default.cyan("🎯 Progress:"));
351
+ console.log(` Completion: ${chalk_1.default.white(pmOutput.progress.completionPercentage.toFixed(1))}%`);
352
+ console.log(` Tasks: ${chalk_1.default.white(pmOutput.progress.completedTasks)}/${pmOutput.progress.totalTasks} completed`);
353
+ console.log(` Current Phase: ${chalk_1.default.white(pmOutput.progress.currentPhase)}`);
354
+ if (pmOutput.progress.nextMilestone) {
355
+ console.log(` Next Milestone: ${chalk_1.default.white(pmOutput.progress.nextMilestone)}`);
356
+ }
357
+ console.log(chalk_1.default.cyan("\n📁 Generated Files:"));
358
+ console.log(` Components: ${chalk_1.default.white(components.componentFiles.length)}`);
359
+ console.log(` Pages: ${chalk_1.default.white(components.pageFiles.length)}`);
360
+ console.log(` API Endpoints: ${chalk_1.default.white(components.apiFiles.length)}`);
361
+ console.log(` Tests: ${chalk_1.default.white(components.testFiles.length)}`);
362
+ console.log(chalk_1.default.cyan("\n📈 Metrics:"));
363
+ console.log(` Estimated Hours: ${chalk_1.default.white(metrics.estimatedHours)}`);
364
+ console.log(` Actual Hours: ${chalk_1.default.white(metrics.actualHours)}`);
365
+ if (metrics.velocity > 0) {
366
+ console.log(` Velocity: ${chalk_1.default.white(metrics.velocity.toFixed(2))} tasks/hour`);
367
+ }
368
+ if (pmOutput.progress.blockers && pmOutput.progress.blockers.length > 0) {
369
+ console.log(chalk_1.default.cyan("\n🚫 Blockers:"));
370
+ pmOutput.progress.blockers.forEach((blocker) => {
371
+ console.log(` • ${chalk_1.default.red(blocker)}`);
372
+ });
373
+ }
374
+ if (pmOutput.suggestions && pmOutput.suggestions.length > 0) {
375
+ console.log(chalk_1.default.cyan("\n💡 Suggestions:"));
376
+ pmOutput.suggestions.forEach((suggestion) => {
377
+ console.log(` • ${chalk_1.default.yellow(suggestion)}`);
378
+ });
379
+ }
380
+ }
381
+ displayDetailedProgress(pmOutput) {
382
+ console.log(chalk_1.default.blue.bold("\n📋 Detailed Progress Export"));
383
+ console.log(chalk_1.default.gray("─".repeat(50)));
384
+ console.log(JSON.stringify(pmOutput, null, 2));
385
+ }
386
+ async sendToWebhook(webhookUrl, pmOutput) {
387
+ try {
388
+ console.log(chalk_1.default.gray(`📤 Sending progress to webhook...`));
389
+ // Use PM Integration Service for robust webhook communication
390
+ const { PMIntegrationService } = await Promise.resolve().then(() => __importStar(require("../services/PMIntegrationService")));
391
+ const integrationService = new PMIntegrationService({
392
+ webhookUrl: webhookUrl,
393
+ retryAttempts: 3,
394
+ timeout: 30000,
395
+ });
396
+ await integrationService.exportProgress(pmOutput, webhookUrl);
397
+ console.log(chalk_1.default.green(`✅ Progress sent to mycontext PM webhook`));
398
+ console.log(chalk_1.default.gray(` Webhook: ${webhookUrl}`));
399
+ console.log(chalk_1.default.gray(` Project: ${pmOutput.projectId}`));
400
+ }
401
+ catch (error) {
402
+ console.warn(chalk_1.default.yellow(`Warning: Could not send to webhook: ${error}`));
403
+ throw error;
404
+ }
405
+ }
406
+ displayInsights(pmOutput) {
407
+ console.log(chalk_1.default.blue.bold("\n🎯 mycontext PM Integration Ready"));
408
+ console.log(chalk_1.default.cyan("🔄 Sync Commands:"));
409
+ console.log(` ${chalk_1.default.gray("mycontext export-progress --webhook <pm-url>")}`);
410
+ console.log(` ${chalk_1.default.gray("mycontext sync-with-pm --project-id " + pmOutput.projectId)}`);
411
+ if (pmOutput.nextSteps && pmOutput.nextSteps.length > 0) {
412
+ console.log(chalk_1.default.cyan("\n📋 Recommended Next Steps:"));
413
+ pmOutput.nextSteps.forEach((step, index) => {
414
+ console.log(` ${index + 1}. ${chalk_1.default.white(step)}`);
415
+ });
416
+ }
417
+ }
418
+ generateProjectId() {
419
+ // Generate a project ID based on current directory and timestamp
420
+ const dirName = path_1.default.basename(process.cwd());
421
+ const timestamp = Date.now();
422
+ return `${dirName}-${timestamp}`;
423
+ }
424
+ static getHelpText() {
425
+ return `
426
+ ${chalk_1.default.blue.bold("📊 MyContext Export Progress Command")}
427
+
428
+ ${chalk_1.default.yellow("Description:")}
429
+ Export project progress and status for mycontext PM synchronization and monitoring
430
+
431
+ ${chalk_1.default.yellow("Usage:")}
432
+ mycontext export-progress [options]
433
+
434
+ ${chalk_1.default.yellow("Options:")}
435
+ -o, --output <file> Output file path (default: progress-export.json)
436
+ -f, --format <type> Output format: json|summary (default: json)
437
+ -w, --webhook <url> Webhook URL to send progress to mycontext PM
438
+ -p, --project-id <id> Project ID for mycontext PM sync
439
+ --verbose Detailed output
440
+ --include-tasks Include detailed task information (default: true)
441
+ --include-components Include generated components list (default: true)
442
+ --include-metrics Include project metrics (default: true)
443
+
444
+ ${chalk_1.default.yellow("Output Formats:")}
445
+
446
+ ${chalk_1.default.cyan("JSON Format:")} Complete structured data for mycontext PM consumption
447
+ \`\`\`json
448
+ {
449
+ "projectId": "my-project-1234567890",
450
+ "timestamp": "2024-01-15T10:30:00Z",
451
+ "status": "success",
452
+ "progress": {
453
+ "completedTasks": 8,
454
+ "totalTasks": 12,
455
+ "completionPercentage": 66.7,
456
+ "currentPhase": "Development",
457
+ "nextMilestone": "API Integration",
458
+ "blockers": ["Database setup pending"]
459
+ },
460
+ "generated": {
461
+ "components": ["Button.tsx", "Input.tsx", "Card.tsx"],
462
+ "pages": ["Home.tsx", "Dashboard.tsx"],
463
+ "apiEndpoints": ["users.ts", "posts.ts"],
464
+ "tests": ["Button.test.tsx", "Input.test.tsx"]
465
+ },
466
+ "suggestions": [
467
+ "Consider adding error boundaries",
468
+ "Increase test coverage"
469
+ ],
470
+ "nextSteps": [
471
+ "Complete API integration",
472
+ "Add user authentication"
473
+ ]
474
+ }
475
+ \`\`\`
476
+
477
+ ${chalk_1.default.cyan("Summary Format:")} Human-readable progress report
478
+ \`\`\`
479
+ 📊 Project Progress Summary
480
+ ──────────────────────────────────────────────────
481
+ 🎯 Progress:
482
+ Completion: 66.7%
483
+ Tasks: 8/12 completed
484
+ Current Phase: Development
485
+ Next Milestone: API Integration
486
+
487
+ 📁 Generated Files:
488
+ Components: 15
489
+ Pages: 3
490
+ API Endpoints: 5
491
+ Tests: 8
492
+
493
+ 📈 Metrics:
494
+ Estimated Hours: 120
495
+ Actual Hours: 85
496
+ Velocity: 0.094 tasks/hour
497
+ \`\`\`
498
+
499
+ ${chalk_1.default.yellow("Examples:")}
500
+ ${chalk_1.default.gray("# Export progress to file")}
501
+ ${chalk_1.default.cyan("mycontext export-progress -o ./progress.json")}
502
+
503
+ ${chalk_1.default.gray("# Export summary to console")}
504
+ ${chalk_1.default.cyan("mycontext export-progress --format summary")}
505
+
506
+ ${chalk_1.default.gray("# Send progress to mycontext PM webhook")}
507
+ ${chalk_1.default.cyan("mycontext export-progress --webhook https://mycontext-pm.example.com/webhook")}
508
+
509
+ ${chalk_1.default.gray("# Export with custom project ID")}
510
+ ${chalk_1.default.cyan("mycontext export-progress --project-id my-project-001")}
511
+
512
+ ${chalk_1.default.yellow("mycontext PM Integration:")}
513
+ This command enables seamless integration between MyContext development workflow
514
+ and mycontext PM monitoring. The exported progress data includes:
515
+
516
+ • Task completion status and metrics
517
+ • Generated components and files
518
+ • Project velocity and estimates
519
+ • Blockers and suggestions
520
+ • Next steps and milestones
521
+
522
+ mycontext PM can use this data to:
523
+ • Monitor development progress in real-time
524
+ • Provide contextual suggestions and tips
525
+ • Identify blockers and propose solutions
526
+ • Generate status reports and updates
527
+ • Adjust timelines and resource allocation
528
+
529
+ ${chalk_1.default.yellow("Webhook Integration:")}
530
+ When using webhooks, the progress data is automatically sent to your mycontext PM
531
+ system for real-time synchronization. This enables:
532
+
533
+ • Live dashboard updates
534
+ • Automated status reporting
535
+ • Proactive issue detection
536
+ • Intelligent resource suggestions
537
+
538
+ ${chalk_1.default.yellow("Automation:")}
539
+ Combine with cron jobs or CI/CD for automatic progress reporting:
540
+
541
+ \`\`\`bash
542
+ # Daily progress report
543
+ 0 18 * * 1-5 mycontext export-progress --webhook https://pm-ai.example.com/daily
544
+
545
+ # CI/CD integration
546
+ mycontext export-progress --webhook https://pm-ai.example.com/ci
547
+ \`\`\`
548
+ `;
549
+ }
550
+ }
551
+ exports.ExportProgressCommand = ExportProgressCommand;
552
+ //# sourceMappingURL=export-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-progress.js","sourceRoot":"","sources":["../../src/commands/export-progress.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-context-files.d.ts","sourceRoot":"","sources":["../../src/commands/generate-context-files.ts"],"names":[],"mappings":"AASA,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAkB;;IAO3B,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YAuE5C,kBAAkB;YAkBlB,oBAAoB;YA6BpB,qBAAqB;YA6BrB,qBAAqB;YA6BrB,0BAA0B;IAgCxC,OAAO,CAAC,mBAAmB;IA4G3B,OAAO,CAAC,oBAAoB;IAyH5B,OAAO,CAAC,oBAAoB;IAsH5B,OAAO,CAAC,yBAAyB;IA6HjC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,2BAA2B;IAWnC;;OAEG;YACW,uBAAuB;IA0ErC;;OAEG;IACH,OAAO,CAAC,aAAa;CA2CtB"}
1
+ {"version":3,"file":"generate-context-files.d.ts","sourceRoot":"","sources":["../../src/commands/generate-context-files.ts"],"names":[],"mappings":"AAWA,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAkB;;IAO3B,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmF5C,kBAAkB;YAkBlB,oBAAoB;YA6BpB,qBAAqB;YA6BrB,qBAAqB;YA6BrB,0BAA0B;IAgCxC,OAAO,CAAC,mBAAmB;IA4G3B,OAAO,CAAC,oBAAoB;IAyH5B,OAAO,CAAC,oBAAoB;IAsH5B,OAAO,CAAC,yBAAyB;IA6HjC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,2BAA2B;IAWnC;;OAEG;YACW,uBAAuB;IA0ErC;;OAEG;IACH,OAAO,CAAC,aAAa;CA2CtB"}
@@ -43,6 +43,8 @@ const path_1 = __importDefault(require("path"));
43
43
  const hybridAIClient_1 = require("../utils/hybridAIClient");
44
44
  const spinner_1 = require("../utils/spinner");
45
45
  const logger_1 = require("../utils/logger");
46
+ const errorHandler_1 = require("../utils/errorHandler");
47
+ const nextStepsSuggester_1 = require("../utils/nextStepsSuggester");
46
48
  class GenerateContextFilesCommand {
47
49
  constructor() {
48
50
  this.aiClient = new hybridAIClient_1.HybridAIClient();
@@ -78,8 +80,8 @@ class GenerateContextFilesCommand {
78
80
  const successCount = results.filter((result) => result.status === "fulfilled").length;
79
81
  const failureCount = results.filter((result) => result.status === "rejected").length;
80
82
  if (successCount === 0) {
81
- logger_1.logger.error("All context file generation failed");
82
- logger_1.logger.info("💡 Configure API keys and try again");
83
+ const error = errorHandler_1.ErrorHandler.createError(errorHandler_1.ErrorType.AI_PROVIDER_ERROR, "All context file generation failed - no AI providers available", undefined, { successCount, failureCount });
84
+ errorHandler_1.ErrorHandler.handleErrorGracefully(error);
83
85
  throw new Error("All context file generation failed - configure API keys and retry");
84
86
  }
85
87
  else if (failureCount > 0) {
@@ -90,6 +92,12 @@ class GenerateContextFilesCommand {
90
92
  logger_1.logger.success("✅ Context files generated successfully!");
91
93
  }
92
94
  this.spinner.succeed("User-centric context documentation generated successfully!");
95
+ // Show next steps
96
+ const workflowContext = await nextStepsSuggester_1.NextStepsSuggester.getWorkflowContext();
97
+ workflowContext.lastCommand = "generate-context-files";
98
+ workflowContext.hasContextFiles = true;
99
+ const nextSteps = nextStepsSuggester_1.NextStepsSuggester.getNextSteps(workflowContext);
100
+ nextStepsSuggester_1.NextStepsSuggester.displayNextSteps(nextSteps);
93
101
  }
94
102
  catch (error) {
95
103
  this.spinner.fail("Context file generation failed");