mycontext-cli 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +264 -71
  2. package/dist/agents/implementations/CodeGenSubAgent.d.ts +48 -0
  3. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -0
  4. package/dist/agents/implementations/CodeGenSubAgent.js +1356 -0
  5. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -0
  6. package/dist/agents/implementations/DocsSubAgent.d.ts +35 -0
  7. package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -0
  8. package/dist/agents/implementations/DocsSubAgent.js +351 -0
  9. package/dist/agents/implementations/DocsSubAgent.js.map +1 -0
  10. package/dist/agents/implementations/EnhancementAgent.d.ts +119 -0
  11. package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -0
  12. package/dist/agents/implementations/EnhancementAgent.js +598 -0
  13. package/dist/agents/implementations/EnhancementAgent.js.map +1 -0
  14. package/dist/agents/implementations/QASubAgent.d.ts +31 -0
  15. package/dist/agents/implementations/QASubAgent.d.ts.map +1 -0
  16. package/dist/agents/implementations/QASubAgent.js +190 -0
  17. package/dist/agents/implementations/QASubAgent.js.map +1 -0
  18. package/dist/agents/interfaces/SubAgent.d.ts +287 -0
  19. package/dist/agents/interfaces/SubAgent.d.ts.map +1 -0
  20. package/dist/agents/interfaces/SubAgent.js +7 -0
  21. package/dist/agents/interfaces/SubAgent.js.map +1 -0
  22. package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts +59 -0
  23. package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -0
  24. package/dist/agents/orchestrator/SubAgentOrchestrator.js +305 -0
  25. package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -0
  26. package/dist/agents/personalities/definitions.d.ts +32 -0
  27. package/dist/agents/personalities/definitions.d.ts.map +1 -0
  28. package/dist/agents/personalities/definitions.js +359 -0
  29. package/dist/agents/personalities/definitions.js.map +1 -0
  30. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +1 -0
  31. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  32. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +25 -91
  33. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +1 -1
  34. package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts +120 -0
  35. package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts.map +1 -0
  36. package/dist/cli/src/agents/implementations/EnhancementAgent.js +606 -0
  37. package/dist/cli/src/agents/implementations/EnhancementAgent.js.map +1 -0
  38. package/dist/cli/src/agents/interfaces/SubAgent.d.ts +130 -0
  39. package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +1 -1
  40. package/dist/cli/src/agents/personalities/definitions.d.ts +1 -1
  41. package/dist/cli/src/agents/personalities/definitions.d.ts.map +1 -1
  42. package/dist/cli/src/agents/personalities/definitions.js +31 -2
  43. package/dist/cli/src/agents/personalities/definitions.js.map +1 -1
  44. package/dist/cli/src/cli.js +12 -0
  45. package/dist/cli/src/cli.js.map +1 -1
  46. package/dist/cli/src/commands/enhance.d.ts +28 -0
  47. package/dist/cli/src/commands/enhance.d.ts.map +1 -0
  48. package/dist/cli/src/commands/enhance.js +246 -0
  49. package/dist/cli/src/commands/enhance.js.map +1 -0
  50. package/dist/cli/src/commands/generate-components.d.ts +0 -1
  51. package/dist/cli/src/commands/generate-components.d.ts.map +1 -1
  52. package/dist/cli/src/commands/generate-components.js +2 -2
  53. package/dist/cli/src/commands/generate-components.js.map +1 -1
  54. package/dist/cli/src/commands/generate.d.ts.map +1 -1
  55. package/dist/cli/src/commands/generate.js +8 -22
  56. package/dist/cli/src/commands/generate.js.map +1 -1
  57. package/dist/cli/src/commands/list.d.ts.map +1 -1
  58. package/dist/cli/src/commands/list.js +2 -1
  59. package/dist/cli/src/commands/list.js.map +1 -1
  60. package/dist/cli/src/commands/model.d.ts +25 -0
  61. package/dist/cli/src/commands/model.d.ts.map +1 -0
  62. package/dist/cli/src/commands/model.js +317 -0
  63. package/dist/cli/src/commands/model.js.map +1 -0
  64. package/dist/cli/src/commands/setup.d.ts +35 -0
  65. package/dist/cli/src/commands/setup.d.ts.map +1 -0
  66. package/dist/cli/src/commands/setup.js +412 -0
  67. package/dist/cli/src/commands/setup.js.map +1 -0
  68. package/dist/cli/src/config/dependencies.json +180 -0
  69. package/dist/cli/src/utils/componentValidator.d.ts +60 -0
  70. package/dist/cli/src/utils/componentValidator.d.ts.map +1 -0
  71. package/dist/cli/src/utils/componentValidator.js +191 -0
  72. package/dist/cli/src/utils/componentValidator.js.map +1 -0
  73. package/dist/cli/src/utils/designTokenExtractor.d.ts +94 -0
  74. package/dist/cli/src/utils/designTokenExtractor.d.ts.map +1 -0
  75. package/dist/cli/src/utils/designTokenExtractor.js +231 -0
  76. package/dist/cli/src/utils/designTokenExtractor.js.map +1 -0
  77. package/dist/cli/src/utils/ollamaClient.d.ts +37 -0
  78. package/dist/cli/src/utils/ollamaClient.d.ts.map +1 -0
  79. package/dist/cli/src/utils/ollamaClient.js +213 -0
  80. package/dist/cli/src/utils/ollamaClient.js.map +1 -0
  81. package/dist/cli/src/utils/spinner.d.ts +2 -0
  82. package/dist/cli/src/utils/spinner.d.ts.map +1 -1
  83. package/dist/cli/src/utils/spinner.js +7 -0
  84. package/dist/cli/src/utils/spinner.js.map +1 -1
  85. package/dist/cli.d.ts +3 -0
  86. package/dist/cli.d.ts.map +1 -0
  87. package/dist/cli.js +299 -0
  88. package/dist/cli.js.map +1 -0
  89. package/dist/commands/auth.d.ts +23 -0
  90. package/dist/commands/auth.d.ts.map +1 -0
  91. package/dist/commands/auth.js +212 -0
  92. package/dist/commands/auth.js.map +1 -0
  93. package/dist/commands/enhance.d.ts +25 -0
  94. package/dist/commands/enhance.d.ts.map +1 -0
  95. package/dist/commands/enhance.js +242 -0
  96. package/dist/commands/enhance.js.map +1 -0
  97. package/dist/commands/generate-components.d.ts +27 -0
  98. package/dist/commands/generate-components.d.ts.map +1 -0
  99. package/dist/commands/generate-components.js +680 -0
  100. package/dist/commands/generate-components.js.map +1 -0
  101. package/dist/commands/generate.d.ts +23 -0
  102. package/dist/commands/generate.d.ts.map +1 -0
  103. package/dist/commands/generate.js +222 -0
  104. package/dist/commands/generate.js.map +1 -0
  105. package/dist/commands/init.d.ts +13 -0
  106. package/dist/commands/init.d.ts.map +1 -0
  107. package/dist/commands/init.js +91 -0
  108. package/dist/commands/init.js.map +1 -0
  109. package/dist/commands/list.d.ts +17 -0
  110. package/dist/commands/list.d.ts.map +1 -0
  111. package/dist/commands/list.js +210 -0
  112. package/dist/commands/list.js.map +1 -0
  113. package/dist/commands/model.d.ts +25 -0
  114. package/dist/commands/model.d.ts.map +1 -0
  115. package/dist/commands/model.js +317 -0
  116. package/dist/commands/model.js.map +1 -0
  117. package/dist/commands/preview.d.ts +23 -0
  118. package/dist/commands/preview.d.ts.map +1 -0
  119. package/dist/commands/preview.js +1200 -0
  120. package/dist/commands/preview.js.map +1 -0
  121. package/dist/commands/setup.d.ts +35 -0
  122. package/dist/commands/setup.d.ts.map +1 -0
  123. package/dist/commands/setup.js +412 -0
  124. package/dist/commands/setup.js.map +1 -0
  125. package/dist/commands/status.d.ts +21 -0
  126. package/dist/commands/status.d.ts.map +1 -0
  127. package/dist/commands/status.js +287 -0
  128. package/dist/commands/status.js.map +1 -0
  129. package/dist/commands/validate.d.ts +22 -0
  130. package/dist/commands/validate.d.ts.map +1 -0
  131. package/dist/commands/validate.js +259 -0
  132. package/dist/commands/validate.js.map +1 -0
  133. package/dist/types/index.d.ts +154 -0
  134. package/dist/types/index.d.ts.map +1 -0
  135. package/dist/types/index.js +3 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/utils/apiKeyManager.d.ts +137 -0
  138. package/dist/utils/apiKeyManager.d.ts.map +1 -0
  139. package/dist/utils/apiKeyManager.js +471 -0
  140. package/dist/utils/apiKeyManager.js.map +1 -0
  141. package/dist/utils/componentValidator.d.ts +60 -0
  142. package/dist/utils/componentValidator.d.ts.map +1 -0
  143. package/dist/utils/componentValidator.js +191 -0
  144. package/dist/utils/componentValidator.js.map +1 -0
  145. package/dist/utils/designTokenExtractor.d.ts +94 -0
  146. package/dist/utils/designTokenExtractor.d.ts.map +1 -0
  147. package/dist/utils/designTokenExtractor.js +231 -0
  148. package/dist/utils/designTokenExtractor.js.map +1 -0
  149. package/dist/utils/errorHandler.d.ts +105 -0
  150. package/dist/utils/errorHandler.d.ts.map +1 -0
  151. package/dist/utils/errorHandler.js +332 -0
  152. package/dist/utils/errorHandler.js.map +1 -0
  153. package/dist/utils/fileSystem.d.ts +58 -0
  154. package/dist/utils/fileSystem.d.ts.map +1 -0
  155. package/dist/utils/fileSystem.js +230 -0
  156. package/dist/utils/fileSystem.js.map +1 -0
  157. package/dist/utils/githubModels.d.ts +53 -0
  158. package/dist/utils/githubModels.d.ts.map +1 -0
  159. package/dist/utils/githubModels.js +239 -0
  160. package/dist/utils/githubModels.js.map +1 -0
  161. package/dist/utils/ollamaClient.d.ts +37 -0
  162. package/dist/utils/ollamaClient.d.ts.map +1 -0
  163. package/dist/utils/ollamaClient.js +213 -0
  164. package/dist/utils/ollamaClient.js.map +1 -0
  165. package/dist/utils/spinner.d.ts +30 -0
  166. package/dist/utils/spinner.d.ts.map +1 -0
  167. package/dist/utils/spinner.js +119 -0
  168. package/dist/utils/spinner.js.map +1 -0
  169. package/package.json +11 -9
@@ -0,0 +1,412 @@
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.SetupCommand = void 0;
40
+ exports.registerSetupCommand = registerSetupCommand;
41
+ const spinner_1 = require("../utils/spinner");
42
+ const child_process_1 = require("child_process");
43
+ const fs = __importStar(require("fs-extra"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const inquirer = __importStar(require("inquirer"));
48
+ class SetupCommand {
49
+ constructor() {
50
+ this.setupConfigPath = path.join(os.homedir(), ".mycontext", "setup.json");
51
+ this.loadDependenciesConfig();
52
+ }
53
+ loadDependenciesConfig() {
54
+ const configPath = path.join(__dirname, "../config/dependencies.json");
55
+ this.dependenciesConfig = fs.readJsonSync(configPath);
56
+ }
57
+ async execute(options) {
58
+ console.log(chalk_1.default.blue("🚀 MyContext CLI Setup\n"));
59
+ // Check if already set up
60
+ if ((await this.isAlreadySetup()) && !options.force) {
61
+ console.log(chalk_1.default.green("✅ MyContext is already set up and working!"));
62
+ console.log(chalk_1.default.gray("Use --force to run setup again\n"));
63
+ await this.showCurrentStatus();
64
+ return;
65
+ }
66
+ // Show welcome and get user consent
67
+ if (!options.skipPrompts) {
68
+ const proceed = await this.getSetupConsent();
69
+ if (!proceed) {
70
+ console.log(chalk_1.default.yellow("Setup cancelled. You can run setup later with: mycontext setup"));
71
+ return;
72
+ }
73
+ }
74
+ // Run setup process
75
+ const spinner = new spinner_1.EnhancedSpinner("Starting setup...");
76
+ try {
77
+ await this.runSetupSteps(spinner, options);
78
+ await this.saveSetupConfig();
79
+ spinner.success({ text: "Setup completed successfully!" });
80
+ this.showSuccessMessage();
81
+ }
82
+ catch (error) {
83
+ spinner.error({ text: "Setup failed" });
84
+ console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
85
+ await this.showFailureAlternatives();
86
+ throw error;
87
+ }
88
+ }
89
+ async getSetupConsent() {
90
+ const { prompts } = this.dependenciesConfig.setup;
91
+ console.log(chalk_1.default.cyan(prompts.welcome));
92
+ console.log("");
93
+ // Show benefits
94
+ prompts.benefits.forEach((benefit) => {
95
+ console.log(chalk_1.default.green(benefit));
96
+ });
97
+ console.log("");
98
+ console.log(chalk_1.default.yellow(`📦 ${prompts.storage_notice}`));
99
+ console.log(chalk_1.default.gray(`💡 ${prompts.alternatives}`));
100
+ console.log("");
101
+ const answers = await inquirer.default.prompt([
102
+ {
103
+ type: "confirm",
104
+ name: "proceed",
105
+ message: prompts.continue_prompt,
106
+ default: true,
107
+ },
108
+ ]);
109
+ return answers.proceed;
110
+ }
111
+ async runSetupSteps(spinner, options) {
112
+ const steps = this.dependenciesConfig.setup.steps;
113
+ for (const step of steps) {
114
+ spinner.updateText(step.description);
115
+ try {
116
+ await this.executeStep(step);
117
+ console.log(chalk_1.default.green(` ✅ ${step.name}`));
118
+ }
119
+ catch (error) {
120
+ console.log(chalk_1.default.red(` ❌ ${step.name}: ${error instanceof Error ? error.message : String(error)}`));
121
+ // Handle conditional steps
122
+ if (step.conditional) {
123
+ continue;
124
+ }
125
+ throw error;
126
+ }
127
+ }
128
+ }
129
+ async executeStep(step) {
130
+ switch (step.id) {
131
+ case "check_ollama":
132
+ await this.checkOllamaInstallation();
133
+ break;
134
+ case "install_ollama":
135
+ await this.installOllama();
136
+ break;
137
+ case "start_ollama":
138
+ await this.startOllamaService();
139
+ break;
140
+ case "check_model":
141
+ await this.checkModel();
142
+ break;
143
+ case "download_model":
144
+ await this.downloadModel();
145
+ break;
146
+ case "create_specialized_model":
147
+ await this.createSpecializedModel();
148
+ break;
149
+ case "test_generation":
150
+ await this.testGeneration();
151
+ break;
152
+ case "save_config":
153
+ await this.saveConfiguration();
154
+ break;
155
+ default:
156
+ throw new Error(`Unknown setup step: ${step.id}`);
157
+ }
158
+ }
159
+ async checkOllamaInstallation() {
160
+ try {
161
+ const result = (0, child_process_1.execSync)("ollama --version", { encoding: "utf8" });
162
+ console.log(chalk_1.default.gray(` Found Ollama: ${result.trim()}`));
163
+ }
164
+ catch (error) {
165
+ throw new Error("Ollama not found. Will install.");
166
+ }
167
+ }
168
+ async installOllama() {
169
+ 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
+ console.log(chalk_1.default.yellow(" Installing Ollama..."));
175
+ try {
176
+ if (installation.method === "script") {
177
+ (0, child_process_1.execSync)(installation.command, { stdio: "inherit" });
178
+ }
179
+ else {
180
+ throw new Error(`Manual installation required. Please visit: ${installation.url}`);
181
+ }
182
+ // Verify installation
183
+ (0, child_process_1.execSync)(installation.verify, { encoding: "utf8" });
184
+ console.log(chalk_1.default.green(" Ollama installed successfully"));
185
+ }
186
+ catch (error) {
187
+ throw new Error(`Failed to install Ollama: ${error instanceof Error ? error.message : String(error)}`);
188
+ }
189
+ }
190
+ async startOllamaService() {
191
+ try {
192
+ // Try to ping Ollama service
193
+ const healthCheck = this.dependenciesConfig.health_checks.ollama_service;
194
+ (0, child_process_1.execSync)(healthCheck.command, { timeout: healthCheck.timeout });
195
+ console.log(chalk_1.default.gray(" Ollama service is running"));
196
+ }
197
+ catch (error) {
198
+ // Try to start the service
199
+ try {
200
+ console.log(chalk_1.default.yellow(" Starting Ollama service..."));
201
+ if (os.platform() === "darwin") {
202
+ (0, child_process_1.execSync)("brew services start ollama", { stdio: "inherit" });
203
+ }
204
+ else if (os.platform() === "linux") {
205
+ (0, child_process_1.execSync)("sudo systemctl start ollama", { stdio: "inherit" });
206
+ }
207
+ // Wait and check again
208
+ await new Promise((resolve) => setTimeout(resolve, 3000));
209
+ (0, child_process_1.execSync)("ollama --version", { timeout: 10000 });
210
+ console.log(chalk_1.default.green(" Ollama service started"));
211
+ }
212
+ catch (startError) {
213
+ throw new Error("Failed to start Ollama service. Please start manually.");
214
+ }
215
+ }
216
+ }
217
+ async checkModel() {
218
+ try {
219
+ const result = (0, child_process_1.execSync)("ollama list", { encoding: "utf8" });
220
+ if (result.includes("deepseek-coder:6.7b")) {
221
+ console.log(chalk_1.default.gray(" Found base model: deepseek-coder:6.7b"));
222
+ }
223
+ else {
224
+ throw new Error("Base model not found");
225
+ }
226
+ if (result.includes("mycontext-react")) {
227
+ console.log(chalk_1.default.gray(" Found specialized model: mycontext-react"));
228
+ }
229
+ else {
230
+ throw new Error("Specialized model not found");
231
+ }
232
+ }
233
+ 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
+ }
238
+ throw error;
239
+ }
240
+ }
241
+ async downloadModel() {
242
+ console.log(chalk_1.default.yellow(" Downloading base model (this may take a few minutes)..."));
243
+ try {
244
+ (0, child_process_1.execSync)("ollama pull deepseek-coder:6.7b", {
245
+ stdio: ["inherit", "pipe", "pipe"],
246
+ timeout: 300000, // 5 minutes
247
+ });
248
+ console.log(chalk_1.default.green(" Base model downloaded successfully"));
249
+ }
250
+ catch (error) {
251
+ throw new Error("Failed to download base model. Check internet connection and disk space.");
252
+ }
253
+ }
254
+ async createSpecializedModel() {
255
+ const modelfilePath = path.join(os.tmpdir(), "Modelfile.mycontext");
256
+ const modelfileContent = `FROM deepseek-coder:6.7b
257
+
258
+ PARAMETER temperature 0.1
259
+ PARAMETER top_p 0.9
260
+ PARAMETER repeat_penalty 1.1
261
+
262
+ SYSTEM "You are MyContext React Component Generator for Next.js 15 with Shadcn UI.
263
+
264
+ AVAILABLE SHADCN UI COMPONENTS (import from @/components/ui/):
265
+ - import { Button } from '@/components/ui/button'
266
+ - import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
267
+ - import { Input } from '@/components/ui/input'
268
+ - import { Label } from '@/components/ui/label'
269
+ - import { Switch } from '@/components/ui/switch'
270
+ - import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
271
+
272
+ RULES:
273
+ - Always start with 'use client'
274
+ - Import React and cn from @/lib/utils
275
+ - Use design tokens: bg-card, text-foreground, bg-primary, etc
276
+ - Include className prop with cn()
277
+ - Export both named and default"`;
278
+ try {
279
+ await fs.writeFile(modelfilePath, modelfileContent);
280
+ console.log(chalk_1.default.yellow(" Creating specialized MyContext model..."));
281
+ (0, child_process_1.execSync)(`ollama create mycontext-react -f "${modelfilePath}"`, {
282
+ stdio: "inherit",
283
+ });
284
+ // Cleanup
285
+ await fs.remove(modelfilePath);
286
+ console.log(chalk_1.default.green(" Specialized model created: mycontext-react"));
287
+ }
288
+ catch (error) {
289
+ throw new Error(`Failed to create specialized model: ${error instanceof Error ? error.message : String(error)}`);
290
+ }
291
+ }
292
+ async testGeneration() {
293
+ try {
294
+ console.log(chalk_1.default.yellow(" Testing component generation..."));
295
+ const testPrompt = "Create a simple button component";
296
+ const result = (0, child_process_1.execSync)(`ollama run mycontext-react "${testPrompt}"`, {
297
+ encoding: "utf8",
298
+ timeout: 30000,
299
+ });
300
+ // Basic validation
301
+ if (result.includes("import React") && result.includes("export")) {
302
+ console.log(chalk_1.default.green(" Component generation test passed"));
303
+ }
304
+ else {
305
+ throw new Error("Generated component failed validation");
306
+ }
307
+ }
308
+ catch (error) {
309
+ throw new Error(`Generation test failed: ${error instanceof Error ? error.message : String(error)}`);
310
+ }
311
+ }
312
+ async saveConfiguration() {
313
+ const config = {
314
+ setupDate: new Date().toISOString(),
315
+ ollamaVersion: (0, child_process_1.execSync)("ollama --version", { encoding: "utf8" }).trim(),
316
+ modelName: "mycontext-react",
317
+ status: "configured",
318
+ };
319
+ await fs.ensureDir(path.dirname(this.setupConfigPath));
320
+ await fs.writeJson(this.setupConfigPath, config, { spaces: 2 });
321
+ console.log(chalk_1.default.gray(" Configuration saved"));
322
+ }
323
+ async isAlreadySetup() {
324
+ try {
325
+ const config = await fs.readJson(this.setupConfigPath);
326
+ return config.status === "configured";
327
+ }
328
+ catch {
329
+ return false;
330
+ }
331
+ }
332
+ async showCurrentStatus() {
333
+ try {
334
+ console.log(chalk_1.default.cyan("📊 Current Status:"));
335
+ // Check Ollama
336
+ const ollamaVersion = (0, child_process_1.execSync)("ollama --version", {
337
+ encoding: "utf8",
338
+ }).trim();
339
+ console.log(chalk_1.default.green(` ✅ Ollama: ${ollamaVersion}`));
340
+ // Check models
341
+ const models = (0, child_process_1.execSync)("ollama list", { encoding: "utf8" });
342
+ const hasSpecialized = models.includes("mycontext-react");
343
+ console.log(chalk_1.default[hasSpecialized ? "green" : "yellow"](` ${hasSpecialized ? "✅" : "⚠️"} MyContext Model: ${hasSpecialized ? "Ready" : "Missing"}`));
344
+ // Test generation
345
+ try {
346
+ (0, child_process_1.execSync)('ollama run mycontext-react "test"', { timeout: 10000 });
347
+ console.log(chalk_1.default.green(" ✅ Component Generation: Working"));
348
+ }
349
+ catch {
350
+ console.log(chalk_1.default.yellow(" ⚠️ Component Generation: Issues detected"));
351
+ }
352
+ }
353
+ catch (error) {
354
+ console.log(chalk_1.default.red(" ❌ Setup incomplete or broken"));
355
+ }
356
+ }
357
+ showSuccessMessage() {
358
+ const { success_message } = this.dependenciesConfig.setup;
359
+ console.log("");
360
+ console.log(chalk_1.default.green(success_message));
361
+ console.log("");
362
+ console.log(chalk_1.default.cyan("🎯 Next Steps:"));
363
+ console.log(chalk_1.default.white(' mycontext generate-component "user profile card"'));
364
+ console.log(chalk_1.default.white(" mycontext generate-components auth"));
365
+ console.log(chalk_1.default.white(" mycontext model status"));
366
+ }
367
+ async saveSetupConfig() {
368
+ const configDir = path.join(os.homedir(), ".mycontext");
369
+ const configPath = path.join(configDir, "setup.json");
370
+ await fs.ensureDir(configDir);
371
+ const config = {
372
+ installedAt: new Date().toISOString(),
373
+ ollamaVersion: await this.getOllamaVersion(),
374
+ modelVersion: "deepseek-coder:6.7b",
375
+ status: "completed",
376
+ };
377
+ await fs.writeJson(configPath, config, { spaces: 2 });
378
+ }
379
+ async getOllamaVersion() {
380
+ try {
381
+ const { execSync } = await Promise.resolve().then(() => __importStar(require("child_process")));
382
+ const version = execSync("ollama --version", { encoding: "utf8" }).trim();
383
+ return version;
384
+ }
385
+ catch {
386
+ return "unknown";
387
+ }
388
+ }
389
+ async showFailureAlternatives() {
390
+ const { failure_alternatives } = this.dependenciesConfig.setup;
391
+ console.log("");
392
+ console.log(chalk_1.default.yellow("🔄 Alternative Options:"));
393
+ failure_alternatives.forEach((alt) => {
394
+ console.log(chalk_1.default.gray(` • ${alt}`));
395
+ });
396
+ }
397
+ }
398
+ exports.SetupCommand = SetupCommand;
399
+ function registerSetupCommand(program) {
400
+ program
401
+ .command("setup")
402
+ .description("Set up MyContext local AI environment")
403
+ .option("--local", "Force local setup mode")
404
+ .option("--cloud", "Use cloud/API mode")
405
+ .option("--force", "Force setup even if already configured")
406
+ .option("--skip-prompts", "Skip interactive prompts")
407
+ .action(async (options) => {
408
+ const setupCommand = new SetupCommand();
409
+ await setupCommand.execute(options);
410
+ });
411
+ }
412
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ {
2
+ "dependencies": {
3
+ "ollama": {
4
+ "name": "Ollama",
5
+ "description": "Local AI runtime for running language models",
6
+ "required": true,
7
+ "type": "runtime",
8
+ "size": "~100MB",
9
+ "purpose": "Powers MyContext's local AI component generation",
10
+ "installation": {
11
+ "darwin": {
12
+ "method": "script",
13
+ "command": "curl -fsSL https://ollama.ai/install.sh | sh",
14
+ "verify": "ollama --version",
15
+ "path": "/usr/local/bin/ollama"
16
+ },
17
+ "linux": {
18
+ "method": "script",
19
+ "command": "curl -fsSL https://ollama.ai/install.sh | sh",
20
+ "verify": "ollama --version",
21
+ "path": "/usr/local/bin/ollama"
22
+ },
23
+ "win32": {
24
+ "method": "download",
25
+ "url": "https://ollama.ai/download/windows",
26
+ "verify": "ollama.exe --version",
27
+ "path": "C:\\Program Files\\Ollama\\ollama.exe"
28
+ }
29
+ }
30
+ },
31
+ "mycontext-react-model": {
32
+ "name": "MyContext React Model",
33
+ "description": "Specialized AI model for React/Shadcn component generation",
34
+ "required": true,
35
+ "type": "model",
36
+ "size": "~3.8GB",
37
+ "purpose": "Generates high-quality React components with perfect Shadcn patterns",
38
+ "installation": {
39
+ "all": {
40
+ "method": "ollama",
41
+ "command": "ollama pull deepseek-coder:6.7b",
42
+ "verify": "ollama list | grep deepseek-coder",
43
+ "modelfile": "mycontext-react"
44
+ }
45
+ }
46
+ }
47
+ },
48
+ "setup": {
49
+ "prompts": {
50
+ "welcome": "🚀 MyContext CLI Setup\n\nTo generate components locally (zero API costs), we need to set up your AI environment.\n\nThis is a one-time setup that will:",
51
+ "benefits": [
52
+ "✅ Enable unlimited component generation (no API costs)",
53
+ "⚡ Provide instant generation (no network latency)",
54
+ "🔒 Keep your code 100% private (local processing)",
55
+ "🎯 Use specialized React/Shadcn AI model"
56
+ ],
57
+ "consent": "Would you like to set up local AI generation?",
58
+ "alternatives": "Alternative: Use API mode (requires API keys, costs apply)",
59
+ "storage_notice": "Total download size: ~4GB (one-time)",
60
+ "continue_prompt": "Continue with local setup?"
61
+ },
62
+ "steps": [
63
+ {
64
+ "id": "check_ollama",
65
+ "name": "Check Ollama Installation",
66
+ "description": "Checking if Ollama is already installed...",
67
+ "required": true
68
+ },
69
+ {
70
+ "id": "install_ollama",
71
+ "name": "Install Ollama",
72
+ "description": "Installing Ollama AI runtime...",
73
+ "conditional": "ollama_not_found"
74
+ },
75
+ {
76
+ "id": "start_ollama",
77
+ "name": "Start Ollama Service",
78
+ "description": "Starting Ollama service...",
79
+ "required": true
80
+ },
81
+ {
82
+ "id": "check_model",
83
+ "name": "Check MyContext Model",
84
+ "description": "Checking for specialized React model...",
85
+ "required": true
86
+ },
87
+ {
88
+ "id": "download_model",
89
+ "name": "Download MyContext Model",
90
+ "description": "Downloading specialized React model (~3.8GB)...",
91
+ "conditional": "model_not_found",
92
+ "progress": true
93
+ },
94
+ {
95
+ "id": "create_specialized_model",
96
+ "name": "Create Specialized Model",
97
+ "description": "Creating MyContext React model...",
98
+ "required": true
99
+ },
100
+ {
101
+ "id": "test_generation",
102
+ "name": "Test Component Generation",
103
+ "description": "Testing component generation...",
104
+ "required": true
105
+ },
106
+ {
107
+ "id": "save_config",
108
+ "name": "Save Configuration",
109
+ "description": "Saving setup configuration...",
110
+ "required": true
111
+ }
112
+ ],
113
+ "success_message": "🎉 MyContext local AI setup complete!\n\nYou can now generate unlimited components:\n mycontext generate-component \"user profile card\"\n\nNo API keys required, zero costs, instant generation!",
114
+ "failure_alternatives": [
115
+ "Continue with API mode (requires setup: mycontext auth setup)",
116
+ "Retry local setup later (mycontext setup --local)",
117
+ "Use cloud mode (mycontext setup --cloud)"
118
+ ]
119
+ },
120
+ "health_checks": {
121
+ "ollama_service": {
122
+ "command": "curl -s http://localhost:11434/api/tags",
123
+ "timeout": 5000,
124
+ "success_indicator": "models"
125
+ },
126
+ "model_availability": {
127
+ "command": "ollama list",
128
+ "success_indicator": "mycontext-react"
129
+ },
130
+ "generation_test": {
131
+ "command": "ollama run mycontext-react \"test\"",
132
+ "timeout": 30000,
133
+ "success_indicator": "import React"
134
+ }
135
+ },
136
+ "troubleshooting": {
137
+ "common_issues": [
138
+ {
139
+ "issue": "Ollama service not starting",
140
+ "solutions": [
141
+ "Check if port 11434 is available: netstat -an | grep 11434",
142
+ "Restart Ollama: sudo systemctl restart ollama (Linux) or brew services restart ollama (Mac)",
143
+ "Check logs: ollama logs"
144
+ ]
145
+ },
146
+ {
147
+ "issue": "Model download fails",
148
+ "solutions": [
149
+ "Check internet connection",
150
+ "Check disk space (need 4GB+ free)",
151
+ "Retry download: ollama pull deepseek-coder:6.7b",
152
+ "Use alternative mirror: OLLAMA_HOST=mirror.ollama.ai ollama pull deepseek-coder:6.7b"
153
+ ]
154
+ },
155
+ {
156
+ "issue": "Generation quality poor",
157
+ "solutions": [
158
+ "Update to latest model: mycontext model update",
159
+ "Check model version: ollama list",
160
+ "Reset model: mycontext model reset --clean"
161
+ ]
162
+ }
163
+ ]
164
+ },
165
+ "configuration": {
166
+ "default_settings": {
167
+ "model_name": "mycontext-react",
168
+ "base_url": "http://localhost:11434",
169
+ "temperature": 0.1,
170
+ "max_tokens": 4000,
171
+ "timeout": 30000
172
+ },
173
+ "environment_variables": {
174
+ "OLLAMA_HOST": "Override Ollama service URL",
175
+ "OLLAMA_MODELS": "Custom model directory path",
176
+ "MYCONTEXT_MODEL": "Override default model name",
177
+ "MYCONTEXT_LOCAL_ONLY": "Force local-only mode (no API fallback)"
178
+ }
179
+ }
180
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Component Validator
3
+ *
4
+ * Validates React components for syntax, structure, and best practices.
5
+ * Used by the EnhancementAgent to ensure quality and compliance.
6
+ */
7
+ export interface ComponentValidation {
8
+ isValid: boolean;
9
+ errors: ValidationError[];
10
+ warnings: ValidationWarning[];
11
+ score: number;
12
+ suggestions: string[];
13
+ }
14
+ export interface ValidationError {
15
+ type: "syntax" | "structure" | "react" | "typescript" | "accessibility";
16
+ message: string;
17
+ line?: number;
18
+ severity: "error" | "warning";
19
+ }
20
+ export interface ValidationWarning {
21
+ type: "performance" | "accessibility" | "best-practice";
22
+ message: string;
23
+ line?: number;
24
+ suggestion: string;
25
+ }
26
+ export declare class ComponentValidator {
27
+ /**
28
+ * Validate component syntax
29
+ */
30
+ validateSyntax(componentCode: string): Promise<boolean>;
31
+ /**
32
+ * Validate enhancement against constraints
33
+ */
34
+ validateEnhancement(componentCode: string, constraints: {
35
+ maxDependencies: number;
36
+ targetFramework: "react" | "next";
37
+ uiLibrary: "shadcn" | "custom";
38
+ }): Promise<ComponentValidation>;
39
+ /**
40
+ * Extract dependencies from component code
41
+ */
42
+ private extractDependencies;
43
+ /**
44
+ * Extract shadcn/ui components
45
+ */
46
+ private extractShadcnComponents;
47
+ /**
48
+ * Check accessibility issues
49
+ */
50
+ private checkAccessibility;
51
+ /**
52
+ * Check performance issues
53
+ */
54
+ private checkPerformance;
55
+ /**
56
+ * Calculate validation score
57
+ */
58
+ private calculateScore;
59
+ }
60
+ //# sourceMappingURL=componentValidator.d.ts.map