mycontext-cli 0.2.2 → 0.2.3

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 (54) hide show
  1. package/dist/agents/implementations/CodeGenSubAgent.d.ts +0 -7
  2. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  3. package/dist/agents/implementations/CodeGenSubAgent.js +0 -7
  4. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
  5. package/dist/agents/implementations/DocsSubAgent.d.ts +8 -6
  6. package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -1
  7. package/dist/agents/implementations/DocsSubAgent.js +74 -25
  8. package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
  9. package/dist/agents/implementations/EnhancementAgent.d.ts +2 -0
  10. package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -1
  11. package/dist/agents/implementations/EnhancementAgent.js +13 -4
  12. package/dist/agents/implementations/EnhancementAgent.js.map +1 -1
  13. package/dist/agents/implementations/QASubAgent.d.ts +9 -0
  14. package/dist/agents/implementations/QASubAgent.d.ts.map +1 -1
  15. package/dist/agents/implementations/QASubAgent.js +103 -22
  16. package/dist/agents/implementations/QASubAgent.js.map +1 -1
  17. package/dist/cli.js +11 -3
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/auth.d.ts.map +1 -1
  20. package/dist/commands/auth.js +3 -2
  21. package/dist/commands/auth.js.map +1 -1
  22. package/dist/commands/enhance.d.ts +40 -0
  23. package/dist/commands/enhance.d.ts.map +1 -1
  24. package/dist/commands/enhance.js +192 -1
  25. package/dist/commands/enhance.js.map +1 -1
  26. package/dist/commands/generate-components.d.ts +1 -0
  27. package/dist/commands/generate-components.d.ts.map +1 -1
  28. package/dist/commands/generate-components.js +61 -22
  29. package/dist/commands/generate-components.js.map +1 -1
  30. package/dist/commands/list.js +1 -1
  31. package/dist/commands/list.js.map +1 -1
  32. package/dist/commands/refine.d.ts +94 -0
  33. package/dist/commands/refine.d.ts.map +1 -0
  34. package/dist/commands/refine.js +492 -0
  35. package/dist/commands/refine.js.map +1 -0
  36. package/dist/commands/setup.d.ts.map +1 -1
  37. package/dist/commands/setup.js +45 -16
  38. package/dist/commands/setup.js.map +1 -1
  39. package/dist/config/ai-providers.json +56 -0
  40. package/dist/config/dependencies.json +6 -3
  41. package/dist/utils/huggingFaceClient.d.ts +44 -0
  42. package/dist/utils/huggingFaceClient.d.ts.map +1 -0
  43. package/dist/utils/huggingFaceClient.js +169 -0
  44. package/dist/utils/huggingFaceClient.js.map +1 -0
  45. package/dist/utils/hybridAIClient.d.ts +74 -0
  46. package/dist/utils/hybridAIClient.d.ts.map +1 -0
  47. package/dist/utils/hybridAIClient.js +257 -0
  48. package/dist/utils/hybridAIClient.js.map +1 -0
  49. package/dist/utils/ollamaClient.d.ts +5 -12
  50. package/dist/utils/ollamaClient.d.ts.map +1 -1
  51. package/dist/utils/ollamaClient.js +118 -107
  52. package/dist/utils/ollamaClient.js.map +1 -1
  53. package/package.json +3 -1
  54. package/dist/cli/src/config/dependencies.json +0 -180
@@ -0,0 +1,492 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.refine = exports.RefineCommand = void 0;
8
+ const commander_1 = require("commander");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const spinner_1 = require("../utils/spinner");
13
+ const EnhancementAgent_1 = require("../agents/implementations/EnhancementAgent");
14
+ class RefineCommand {
15
+ constructor() {
16
+ this.enhancementAgent = new EnhancementAgent_1.EnhancementAgent();
17
+ }
18
+ async execute(componentPath, options) {
19
+ const spinner = new spinner_1.EnhancedSpinner("Initializing refinement...");
20
+ try {
21
+ spinner.start();
22
+ // Validate component path
23
+ if (!componentPath) {
24
+ throw new Error("Component path is required");
25
+ }
26
+ // Check if component file exists
27
+ const fullPath = path_1.default.resolve(componentPath);
28
+ if (!(await fs_extra_1.default.pathExists(fullPath))) {
29
+ throw new Error(`Component file not found: ${componentPath}`);
30
+ }
31
+ // Check if it's a React component
32
+ if (!fullPath.endsWith(".tsx") && !fullPath.endsWith(".jsx")) {
33
+ throw new Error("Target must be a React component file (.tsx/.jsx)");
34
+ }
35
+ spinner.updateText("Reading component file...");
36
+ const componentCode = await fs_extra_1.default.readFile(fullPath, "utf-8");
37
+ const componentName = path_1.default.basename(fullPath, path_1.default.extname(fullPath));
38
+ // Get refinement prompt
39
+ const prompt = await this.getRefinementPrompt(options);
40
+ spinner.updateText("Refining component...");
41
+ // Run refinement with fallback
42
+ let result;
43
+ try {
44
+ result = await this.enhancementAgent.run({
45
+ currentComponent: componentCode,
46
+ userPrompt: prompt,
47
+ designContext: this.extractDesignContext(componentCode),
48
+ constraints: {
49
+ maxDependencies: 5,
50
+ targetFramework: "react",
51
+ uiLibrary: "shadcn",
52
+ },
53
+ });
54
+ }
55
+ catch (error) {
56
+ if (error.message.includes("timed out")) {
57
+ console.log(chalk_1.default.yellow("⚠️ AI generation timed out, using fallback enhancement..."));
58
+ // Fallback: Simple component improvements without AI
59
+ result = {
60
+ enhancedComponent: this.generateFallbackEnhancement(componentCode, prompt),
61
+ originalComponent: componentCode,
62
+ designTokens: { colors: {}, spacing: {}, typography: {} },
63
+ changes: { added: [], modified: [], removed: [] },
64
+ };
65
+ }
66
+ else {
67
+ throw error;
68
+ }
69
+ }
70
+ // Handle rollback if requested
71
+ if (options.rollback) {
72
+ return await this.handleRollback(fullPath, componentName, spinner);
73
+ }
74
+ // Preserve history if requested
75
+ if (options.preserveHistory) {
76
+ await this.preserveComponentHistory(fullPath, componentCode);
77
+ }
78
+ // Generate output based on format
79
+ const output = this.generateRefinementOutput(result, componentName, options);
80
+ // Apply changes if requested
81
+ if (options.outputFormat === "apply") {
82
+ await this.applyRefinement(fullPath, result.enhancedComponent, spinner);
83
+ }
84
+ spinner.succeed("Refinement completed successfully!");
85
+ // Return structured output for VS Code extension
86
+ if (options.interactive || options.outputFormat !== "structured") {
87
+ return output;
88
+ }
89
+ // Display results for CLI
90
+ this.displayRefinementResults(output, componentName);
91
+ }
92
+ catch (error) {
93
+ spinner.fail("Refinement failed");
94
+ console.error(chalk_1.default.red("❌ Error:"), error);
95
+ if (options.interactive) {
96
+ return {
97
+ success: false,
98
+ error: error instanceof Error ? error.message : "Unknown error",
99
+ componentName: path_1.default.basename(componentPath, path_1.default.extname(componentPath)),
100
+ };
101
+ }
102
+ process.exit(1);
103
+ }
104
+ }
105
+ /**
106
+ * Get refinement prompt from options or user input
107
+ */
108
+ async getRefinementPrompt(options) {
109
+ if (options.prompt) {
110
+ return options.prompt;
111
+ }
112
+ // Interactive prompt
113
+ const readline = require("readline");
114
+ const rl = readline.createInterface({
115
+ input: process.stdin,
116
+ output: process.stdout,
117
+ });
118
+ return new Promise((resolve) => {
119
+ rl.question(chalk_1.default.blue("Enter refinement prompt: "), (answer) => {
120
+ rl.close();
121
+ resolve(answer.trim() || "Refine this component with modern design patterns");
122
+ });
123
+ });
124
+ }
125
+ /**
126
+ * Generate fallback enhancement when AI times out
127
+ */
128
+ generateFallbackEnhancement(componentCode, prompt) {
129
+ // Simple fallback improvements without AI
130
+ let enhanced = componentCode;
131
+ // Add basic accessibility improvements
132
+ if (enhanced.includes("<button") && !enhanced.includes("aria-label")) {
133
+ enhanced = enhanced.replace(/<button([^>]*)>/g, '<button$1 aria-label="Button">');
134
+ }
135
+ // Add hover effects if not present
136
+ if (enhanced.includes("className=") && !enhanced.includes("hover:")) {
137
+ enhanced = enhanced.replace(/className="([^"]*)"/g, 'className="$1 hover:opacity-80 transition-opacity"');
138
+ }
139
+ // Add focus styles
140
+ if (enhanced.includes("className=") && !enhanced.includes("focus:")) {
141
+ enhanced = enhanced.replace(/className="([^"]*)"/g, 'className="$1 focus:outline-none focus:ring-2 focus:ring-blue-500"');
142
+ }
143
+ return enhanced;
144
+ }
145
+ /**
146
+ * Extract design context from component code
147
+ */
148
+ extractDesignContext(componentCode) {
149
+ // Simple extraction of design context from component
150
+ const colors = componentCode.match(/(?:bg-|text-|border-)([a-z]+-\d+|primary|secondary|accent)/g) || [];
151
+ const spacing = componentCode.match(/(?:p-|m-|gap-)(\d+|xs|sm|md|lg|xl)/g) || [];
152
+ const typography = componentCode.match(/(?:text-)(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)/g) || [];
153
+ return {
154
+ colors: [...new Set(colors)],
155
+ spacing: [...new Set(spacing)],
156
+ typography: [...new Set(typography)],
157
+ interactions: this.extractInteractions(componentCode),
158
+ };
159
+ }
160
+ /**
161
+ * Extract interaction patterns from component
162
+ */
163
+ extractInteractions(componentCode) {
164
+ const interactions = [];
165
+ if (componentCode.includes("onClick"))
166
+ interactions.push("click");
167
+ if (componentCode.includes("onChange"))
168
+ interactions.push("change");
169
+ if (componentCode.includes("onSubmit"))
170
+ interactions.push("submit");
171
+ if (componentCode.includes("onFocus"))
172
+ interactions.push("focus");
173
+ if (componentCode.includes("onBlur"))
174
+ interactions.push("blur");
175
+ if (componentCode.includes("useState"))
176
+ interactions.push("state");
177
+ if (componentCode.includes("useEffect"))
178
+ interactions.push("effects");
179
+ return interactions;
180
+ }
181
+ /**
182
+ * Generate refinement output based on format
183
+ */
184
+ generateRefinementOutput(result, componentName, options) {
185
+ const baseOutput = {
186
+ success: true,
187
+ componentName,
188
+ enhancedCode: result.enhancedComponent,
189
+ originalCode: result.originalComponent || "",
190
+ changes: {
191
+ totalChanges: result.changes.totalChanges,
192
+ addedLines: result.changes.addedLines,
193
+ removedLines: result.changes.removedLines,
194
+ modifiedLines: result.changes.modifiedLines,
195
+ },
196
+ validation: {
197
+ score: result.validation.score,
198
+ isValid: result.validation.isValid,
199
+ errors: result.validation.errors,
200
+ warnings: result.validation.warnings,
201
+ },
202
+ suggestions: result.suggestions,
203
+ metadata: {
204
+ executionTime: Date.now(),
205
+ model: "mycontext-refinement",
206
+ temperature: options.temperature,
207
+ maxTokens: options.maxTokens,
208
+ prompt: options.prompt,
209
+ },
210
+ };
211
+ // Output based on format
212
+ switch (options.outputFormat) {
213
+ case "diff":
214
+ return this.generateDiffOutput(baseOutput);
215
+ case "preview":
216
+ return this.generatePreviewOutput(baseOutput);
217
+ case "apply":
218
+ return this.generateApplyOutput(baseOutput);
219
+ case "structured":
220
+ default:
221
+ return baseOutput;
222
+ }
223
+ }
224
+ /**
225
+ * Generate diff output for side-by-side comparison
226
+ */
227
+ generateDiffOutput(baseOutput) {
228
+ return {
229
+ ...baseOutput,
230
+ diff: {
231
+ unified: this.generateUnifiedDiff(baseOutput.originalCode, baseOutput.enhancedCode),
232
+ sideBySide: this.generateSideBySideDiff(baseOutput.originalCode, baseOutput.enhancedCode),
233
+ },
234
+ };
235
+ }
236
+ /**
237
+ * Generate preview output for component rendering
238
+ */
239
+ generatePreviewOutput(baseOutput) {
240
+ return {
241
+ ...baseOutput,
242
+ preview: {
243
+ canRender: this.canRenderComponent(baseOutput.enhancedCode),
244
+ dependencies: this.extractDependencies(baseOutput.enhancedCode),
245
+ props: this.extractComponentProps(baseOutput.enhancedCode),
246
+ warnings: this.extractRenderWarnings(baseOutput.enhancedCode),
247
+ },
248
+ };
249
+ }
250
+ /**
251
+ * Generate apply output for immediate application
252
+ */
253
+ generateApplyOutput(baseOutput) {
254
+ return {
255
+ ...baseOutput,
256
+ apply: {
257
+ ready: true,
258
+ filePath: baseOutput.metadata?.filePath,
259
+ backupPath: baseOutput.metadata?.backupPath,
260
+ changes: baseOutput.changes,
261
+ },
262
+ };
263
+ }
264
+ /**
265
+ * Generate unified diff format
266
+ */
267
+ generateUnifiedDiff(original, enhanced) {
268
+ const originalLines = original.split("\n");
269
+ const enhancedLines = enhanced.split("\n");
270
+ let diff = "";
271
+ let i = 0, j = 0;
272
+ while (i < originalLines.length || j < enhancedLines.length) {
273
+ if (i < originalLines.length &&
274
+ j < enhancedLines.length &&
275
+ originalLines[i] === enhancedLines[j]) {
276
+ diff += ` ${originalLines[i]}\n`;
277
+ i++;
278
+ j++;
279
+ }
280
+ else if (i < originalLines.length) {
281
+ diff += `-${originalLines[i]}\n`;
282
+ i++;
283
+ }
284
+ else if (j < enhancedLines.length) {
285
+ diff += `+${enhancedLines[j]}\n`;
286
+ j++;
287
+ }
288
+ }
289
+ return diff;
290
+ }
291
+ /**
292
+ * Generate side-by-side diff format
293
+ */
294
+ generateSideBySideDiff(original, enhanced) {
295
+ const originalLines = original.split("\n");
296
+ const enhancedLines = enhanced.split("\n");
297
+ const maxLines = Math.max(originalLines.length, enhancedLines.length);
298
+ const sideBySide = [];
299
+ for (let i = 0; i < maxLines; i++) {
300
+ const originalLine = originalLines[i] || "";
301
+ const enhancedLine = enhancedLines[i] || "";
302
+ const isModified = originalLine !== enhancedLine;
303
+ sideBySide.push({
304
+ lineNumber: i + 1,
305
+ original: originalLine,
306
+ enhanced: enhancedLine,
307
+ modified: isModified,
308
+ type: isModified ? "modified" : "unchanged",
309
+ });
310
+ }
311
+ return sideBySide;
312
+ }
313
+ /**
314
+ * Check if component can be rendered
315
+ */
316
+ canRenderComponent(code) {
317
+ const hasExport = /export\s+(default\s+)?function|export\s+(default\s+)?const|export\s+class/.test(code);
318
+ const hasReturn = /return\s*\(/.test(code);
319
+ const hasJSX = /<[A-Z][a-zA-Z]*/.test(code);
320
+ return hasExport && hasReturn && hasJSX;
321
+ }
322
+ /**
323
+ * Extract component dependencies
324
+ */
325
+ extractDependencies(code) {
326
+ const imports = code.match(/import\s+.*?\s+from\s+['"]([^'"]+)['"]/g) || [];
327
+ return imports
328
+ .map((imp) => {
329
+ const match = imp.match(/from\s+['"]([^'"]+)['"]/);
330
+ return match ? match[1] : "";
331
+ })
332
+ .filter(Boolean);
333
+ }
334
+ /**
335
+ * Extract component props interface
336
+ */
337
+ extractComponentProps(code) {
338
+ const propsMatch = code.match(/interface\s+(\w+)Props\s*\{([^}]+)\}/);
339
+ if (!propsMatch)
340
+ return null;
341
+ const propsText = propsMatch[2];
342
+ const props = propsText
343
+ .split("\n")
344
+ .map((line) => line.trim())
345
+ .filter((line) => line && !line.startsWith("/") && !line.startsWith("*"))
346
+ .map((line) => {
347
+ const propMatch = line.match(/(\w+)\??:\s*(.+?)(?:;|$)/);
348
+ if (propMatch) {
349
+ return {
350
+ name: propMatch[1],
351
+ type: propMatch[2].trim(),
352
+ required: !line.includes("?"),
353
+ };
354
+ }
355
+ return null;
356
+ })
357
+ .filter(Boolean);
358
+ return props;
359
+ }
360
+ /**
361
+ * Extract render warnings
362
+ */
363
+ extractRenderWarnings(code) {
364
+ const warnings = [];
365
+ if (!code.includes("useState") && code.includes("setState")) {
366
+ warnings.push("Component uses setState but no useState hook found");
367
+ }
368
+ if (code.includes("useEffect") && !code.includes("dependencies")) {
369
+ warnings.push("useEffect missing dependency array");
370
+ }
371
+ if (code.includes("onClick") && !code.includes("aria-label")) {
372
+ warnings.push("Interactive element missing accessibility label");
373
+ }
374
+ return warnings;
375
+ }
376
+ /**
377
+ * Preserve component history for rollback
378
+ */
379
+ async preserveComponentHistory(filePath, originalCode) {
380
+ const historyDir = path_1.default.join(path_1.default.dirname(filePath), ".mycontext-history");
381
+ await fs_extra_1.default.ensureDir(historyDir);
382
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
383
+ const historyFile = path_1.default.join(historyDir, `${path_1.default.basename(filePath)}.${timestamp}.backup`);
384
+ await fs_extra_1.default.writeFile(historyFile, originalCode);
385
+ }
386
+ /**
387
+ * Handle rollback to previous version
388
+ */
389
+ async handleRollback(filePath, componentName, spinner) {
390
+ spinner.updateText("Rolling back to previous version...");
391
+ const historyDir = path_1.default.join(path_1.default.dirname(filePath), ".mycontext-history");
392
+ if (!(await fs_extra_1.default.pathExists(historyDir))) {
393
+ throw new Error("No history found for rollback");
394
+ }
395
+ const historyFiles = await fs_extra_1.default.readdir(historyDir);
396
+ const backupFiles = historyFiles
397
+ .filter((file) => file.startsWith(`${path_1.default.basename(filePath)}.`) &&
398
+ file.endsWith(".backup"))
399
+ .sort()
400
+ .reverse();
401
+ if (backupFiles.length === 0) {
402
+ throw new Error("No backup files found for rollback");
403
+ }
404
+ const latestBackup = backupFiles[0];
405
+ const backupPath = path_1.default.join(historyDir, latestBackup);
406
+ const backupCode = await fs_extra_1.default.readFile(backupPath, "utf-8");
407
+ // Restore the backup
408
+ await fs_extra_1.default.writeFile(filePath, backupCode);
409
+ spinner.succeed("Rollback completed successfully!");
410
+ return {
411
+ success: true,
412
+ componentName,
413
+ action: "rollback",
414
+ restoredFrom: latestBackup,
415
+ restoredCode: backupCode,
416
+ };
417
+ }
418
+ /**
419
+ * Apply refinement changes to file
420
+ */
421
+ async applyRefinement(filePath, enhancedCode, spinner) {
422
+ spinner.updateText("Applying refinement changes...");
423
+ // Create backup before applying
424
+ const backupPath = `${filePath}.backup.${Date.now()}`;
425
+ const originalCode = await fs_extra_1.default.readFile(filePath, "utf-8");
426
+ await fs_extra_1.default.writeFile(backupPath, originalCode);
427
+ // Apply the enhanced code
428
+ await fs_extra_1.default.writeFile(filePath, enhancedCode);
429
+ spinner.updateText("Refinement applied successfully!");
430
+ }
431
+ /**
432
+ * Display refinement results for CLI
433
+ */
434
+ displayRefinementResults(output, componentName) {
435
+ console.log(chalk_1.default.green(`\n✅ Refined ${componentName}`));
436
+ console.log(chalk_1.default.gray(`Quality Score: ${output.validation.score}/100`));
437
+ if (output.changes.totalChanges > 0) {
438
+ console.log(chalk_1.default.gray(`Changes: ${output.changes.totalChanges} lines modified`));
439
+ }
440
+ if (output.suggestions?.accessibility?.length > 0) {
441
+ console.log(chalk_1.default.yellow("\n🔍 Accessibility Suggestions:"));
442
+ output.suggestions.accessibility.forEach((suggestion) => {
443
+ console.log(chalk_1.default.gray(` • ${suggestion}`));
444
+ });
445
+ }
446
+ if (output.suggestions?.performance?.length > 0) {
447
+ console.log(chalk_1.default.blue("\n⚡ Performance Suggestions:"));
448
+ output.suggestions.performance.forEach((suggestion) => {
449
+ console.log(chalk_1.default.gray(` • ${suggestion}`));
450
+ });
451
+ }
452
+ }
453
+ }
454
+ exports.RefineCommand = RefineCommand;
455
+ // CLI command setup
456
+ const refineCommand = new RefineCommand();
457
+ exports.refine = new commander_1.Command("refine")
458
+ .description("Refine React components with AI-powered improvements")
459
+ .argument("<component>", "Component file (.tsx/.jsx) to refine")
460
+ .option("-p, --prompt <text>", "Refinement prompt")
461
+ .option("--temperature <number>", "Generation temperature (0-1)", "0.7")
462
+ .option("--max-tokens <number>", "Maximum tokens", "4000")
463
+ .option("--yes", "Skip prompts (non-interactive mode)")
464
+ // Refinement-specific options
465
+ .option("--interactive", "VS Code extension mode with structured output")
466
+ .option("--output-format <format>", "Output format: structured, diff, preview, apply", "structured")
467
+ .option("--show-changes", "Show detailed changes in output")
468
+ .option("--preserve-history", "Keep refinement history for rollback")
469
+ .option("--rollback", "Rollback to previous version")
470
+ .action(async (component, options) => {
471
+ try {
472
+ const result = await refineCommand.execute(component, {
473
+ ...options,
474
+ temperature: parseFloat(options.temperature),
475
+ maxTokens: parseInt(options.maxTokens),
476
+ outputFormat: options.outputFormat || "structured",
477
+ interactive: options.interactive || false,
478
+ showChanges: options.showChanges || false,
479
+ preserveHistory: options.preserveHistory || false,
480
+ rollback: options.rollback || false,
481
+ });
482
+ // For interactive mode, output JSON
483
+ if (options.interactive || options.outputFormat !== "default") {
484
+ console.log(JSON.stringify(result, null, 2));
485
+ }
486
+ }
487
+ catch (error) {
488
+ console.error(chalk_1.default.red("❌ Refinement failed:"), error);
489
+ process.exit(1);
490
+ }
491
+ });
492
+ //# sourceMappingURL=refine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.js","sourceRoot":"","sources":["../../src/commands/refine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS1C,UAAU,YAAa,SAAQ,cAAc;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,eAAe,CAAS;;IAOhC,OAAO,CAAC,sBAAsB;IAKxB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YA+CrC,eAAe;YA4Bf,aAAa;YA+Bb,WAAW;YAuCX,uBAAuB;YASvB,aAAa;YAgCb,kBAAkB;YA+BlB,UAAU;YA0BV,aAAa;YAqBb,sBAAsB;YAyDtB,cAAc;YAyBd,iBAAiB;YAcjB,cAAc;YASd,iBAAiB;IAiC/B,OAAO,CAAC,kBAAkB;YAcZ,eAAe;YAgBf,gBAAgB;YAUhB,uBAAuB;CAStC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY3D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS1C,UAAU,YAAa,SAAQ,cAAc;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,eAAe,CAAS;;IAOhC,OAAO,CAAC,sBAAsB;IAKxB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YA+CrC,eAAe;YA4Bf,aAAa;YA0Eb,WAAW;YAuCX,uBAAuB;YASvB,aAAa;YAmCb,kBAAkB;YA+BlB,UAAU;YAyBV,aAAa;YAqBb,sBAAsB;YAyDtB,cAAc;YAyBd,iBAAiB;YAcjB,cAAc;YASd,iBAAiB;IAiC/B,OAAO,CAAC,kBAAkB;YAcZ,eAAe;YAgBf,gBAAgB;YAUhB,uBAAuB;CAStC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY3D"}
@@ -117,7 +117,30 @@ class SetupCommand {
117
117
  console.log(chalk_1.default.green(` ✅ ${step.name}`));
118
118
  }
119
119
  catch (error) {
120
- console.log(chalk_1.default.red(` ❌ ${step.name}: ${error instanceof Error ? error.message : String(error)}`));
120
+ const errorMessage = error instanceof Error ? error.message : String(error);
121
+ // Handle conditional steps based on error type
122
+ if (step.conditional === "ollama_not_found" &&
123
+ errorMessage.includes("Ollama not found")) {
124
+ console.log(chalk_1.default.yellow(` ⚠️ ${step.name}: Skipping (Ollama already installed)`));
125
+ continue;
126
+ }
127
+ if (step.conditional === "model_check" &&
128
+ (errorMessage.includes("Need to download base model") ||
129
+ errorMessage.includes("Need to create specialized model"))) {
130
+ console.log(chalk_1.default.yellow(` ⚠️ ${step.name}: Will handle missing models`));
131
+ continue;
132
+ }
133
+ if (step.conditional === "specialized_model_not_found" &&
134
+ errorMessage.includes("Need to create specialized model")) {
135
+ console.log(chalk_1.default.yellow(` ⚠️ ${step.name}: Will create specialized model`));
136
+ continue;
137
+ }
138
+ if (step.conditional === "test_optional" &&
139
+ errorMessage.includes("Generation test failed")) {
140
+ console.log(chalk_1.default.yellow(` ⚠️ ${step.name}: Test failed, but setup can continue`));
141
+ continue;
142
+ }
143
+ console.log(chalk_1.default.red(` ❌ ${step.name}: ${errorMessage}`));
121
144
  // Handle conditional steps
122
145
  if (step.conditional) {
123
146
  continue;
@@ -167,20 +190,27 @@ class SetupCommand {
167
190
  }
168
191
  async installOllama() {
169
192
  const platform = os.platform();
170
- const installation = this.dependenciesConfig.dependencies.ollama.installation[platform];
171
- if (!installation) {
172
- throw new Error(`Ollama installation not supported on ${platform}`);
173
- }
174
193
  console.log(chalk_1.default.yellow(" Installing Ollama..."));
175
194
  try {
176
- if (installation.method === "script") {
177
- (0, child_process_1.execSync)(installation.command, { stdio: "inherit" });
195
+ if (platform === "darwin") {
196
+ // On macOS, use Homebrew
197
+ console.log(chalk_1.default.gray(" Using Homebrew to install Ollama..."));
198
+ (0, child_process_1.execSync)("brew install ollama", { stdio: "inherit" });
199
+ }
200
+ else if (platform === "linux") {
201
+ // On Linux, use the install script
202
+ (0, child_process_1.execSync)("curl -fsSL https://ollama.ai/install.sh | sh", {
203
+ stdio: "inherit",
204
+ });
205
+ }
206
+ else if (platform === "win32") {
207
+ throw new Error("Manual installation required. Please visit: https://ollama.ai/download/windows");
178
208
  }
179
209
  else {
180
- throw new Error(`Manual installation required. Please visit: ${installation.url}`);
210
+ throw new Error(`Ollama installation not supported on ${platform}`);
181
211
  }
182
212
  // Verify installation
183
- (0, child_process_1.execSync)(installation.verify, { encoding: "utf8" });
213
+ (0, child_process_1.execSync)("ollama --version", { encoding: "utf8" });
184
214
  console.log(chalk_1.default.green(" Ollama installed successfully"));
185
215
  }
186
216
  catch (error) {
@@ -221,20 +251,19 @@ class SetupCommand {
221
251
  console.log(chalk_1.default.gray(" Found base model: deepseek-coder:6.7b"));
222
252
  }
223
253
  else {
224
- throw new Error("Base model not found");
254
+ console.log(chalk_1.default.yellow(" Base model not found, will download..."));
255
+ throw new Error("Need to download base model");
225
256
  }
226
257
  if (result.includes("mycontext-react")) {
227
258
  console.log(chalk_1.default.gray(" Found specialized model: mycontext-react"));
228
259
  }
229
260
  else {
230
- throw new Error("Specialized model not found");
261
+ console.log(chalk_1.default.yellow(" Specialized model not found, will create..."));
262
+ throw new Error("Need to create specialized model");
231
263
  }
232
264
  }
233
265
  catch (error) {
234
- if (error instanceof Error &&
235
- error.message.includes("Base model not found")) {
236
- throw new Error("Need to download base model");
237
- }
266
+ // Re-throw the error to be handled by the conditional logic
238
267
  throw error;
239
268
  }
240
269
  }
@@ -303,7 +332,7 @@ RULES:
303
332
  const testPrompt = "Create a simple button component";
304
333
  const result = (0, child_process_1.execSync)(`ollama run mycontext-react "${testPrompt}"`, {
305
334
  encoding: "utf8",
306
- timeout: 30000,
335
+ timeout: 120000, // Increase timeout to 2 minutes for first run
307
336
  });
308
337
  // Basic validation
309
338
  if (result.includes("import React") && result.includes("export")) {