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.
- package/README.md +264 -71
- package/dist/agents/implementations/CodeGenSubAgent.d.ts +48 -0
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -0
- package/dist/agents/implementations/CodeGenSubAgent.js +1356 -0
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -0
- package/dist/agents/implementations/DocsSubAgent.d.ts +35 -0
- package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DocsSubAgent.js +351 -0
- package/dist/agents/implementations/DocsSubAgent.js.map +1 -0
- package/dist/agents/implementations/EnhancementAgent.d.ts +119 -0
- package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -0
- package/dist/agents/implementations/EnhancementAgent.js +598 -0
- package/dist/agents/implementations/EnhancementAgent.js.map +1 -0
- package/dist/agents/implementations/QASubAgent.d.ts +31 -0
- package/dist/agents/implementations/QASubAgent.d.ts.map +1 -0
- package/dist/agents/implementations/QASubAgent.js +190 -0
- package/dist/agents/implementations/QASubAgent.js.map +1 -0
- package/dist/agents/interfaces/SubAgent.d.ts +287 -0
- package/dist/agents/interfaces/SubAgent.d.ts.map +1 -0
- package/dist/agents/interfaces/SubAgent.js +7 -0
- package/dist/agents/interfaces/SubAgent.js.map +1 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts +59 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.js +305 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -0
- package/dist/agents/personalities/definitions.d.ts +32 -0
- package/dist/agents/personalities/definitions.d.ts.map +1 -0
- package/dist/agents/personalities/definitions.js +359 -0
- package/dist/agents/personalities/definitions.js.map +1 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +1 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +25 -91
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts +120 -0
- package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts.map +1 -0
- package/dist/cli/src/agents/implementations/EnhancementAgent.js +606 -0
- package/dist/cli/src/agents/implementations/EnhancementAgent.js.map +1 -0
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts +130 -0
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +1 -1
- package/dist/cli/src/agents/personalities/definitions.d.ts +1 -1
- package/dist/cli/src/agents/personalities/definitions.d.ts.map +1 -1
- package/dist/cli/src/agents/personalities/definitions.js +31 -2
- package/dist/cli/src/agents/personalities/definitions.js.map +1 -1
- package/dist/cli/src/cli.js +12 -0
- package/dist/cli/src/cli.js.map +1 -1
- package/dist/cli/src/commands/enhance.d.ts +28 -0
- package/dist/cli/src/commands/enhance.d.ts.map +1 -0
- package/dist/cli/src/commands/enhance.js +246 -0
- package/dist/cli/src/commands/enhance.js.map +1 -0
- package/dist/cli/src/commands/generate-components.d.ts +0 -1
- package/dist/cli/src/commands/generate-components.d.ts.map +1 -1
- package/dist/cli/src/commands/generate-components.js +2 -2
- package/dist/cli/src/commands/generate-components.js.map +1 -1
- package/dist/cli/src/commands/generate.d.ts.map +1 -1
- package/dist/cli/src/commands/generate.js +8 -22
- package/dist/cli/src/commands/generate.js.map +1 -1
- package/dist/cli/src/commands/list.d.ts.map +1 -1
- package/dist/cli/src/commands/list.js +2 -1
- package/dist/cli/src/commands/list.js.map +1 -1
- package/dist/cli/src/commands/model.d.ts +25 -0
- package/dist/cli/src/commands/model.d.ts.map +1 -0
- package/dist/cli/src/commands/model.js +317 -0
- package/dist/cli/src/commands/model.js.map +1 -0
- package/dist/cli/src/commands/setup.d.ts +35 -0
- package/dist/cli/src/commands/setup.d.ts.map +1 -0
- package/dist/cli/src/commands/setup.js +412 -0
- package/dist/cli/src/commands/setup.js.map +1 -0
- package/dist/cli/src/config/dependencies.json +180 -0
- package/dist/cli/src/utils/componentValidator.d.ts +60 -0
- package/dist/cli/src/utils/componentValidator.d.ts.map +1 -0
- package/dist/cli/src/utils/componentValidator.js +191 -0
- package/dist/cli/src/utils/componentValidator.js.map +1 -0
- package/dist/cli/src/utils/designTokenExtractor.d.ts +94 -0
- package/dist/cli/src/utils/designTokenExtractor.d.ts.map +1 -0
- package/dist/cli/src/utils/designTokenExtractor.js +231 -0
- package/dist/cli/src/utils/designTokenExtractor.js.map +1 -0
- package/dist/cli/src/utils/ollamaClient.d.ts +37 -0
- package/dist/cli/src/utils/ollamaClient.d.ts.map +1 -0
- package/dist/cli/src/utils/ollamaClient.js +213 -0
- package/dist/cli/src/utils/ollamaClient.js.map +1 -0
- package/dist/cli/src/utils/spinner.d.ts +2 -0
- package/dist/cli/src/utils/spinner.d.ts.map +1 -1
- package/dist/cli/src/utils/spinner.js +7 -0
- package/dist/cli/src/utils/spinner.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +299 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +23 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +212 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/enhance.d.ts +25 -0
- package/dist/commands/enhance.d.ts.map +1 -0
- package/dist/commands/enhance.js +242 -0
- package/dist/commands/enhance.js.map +1 -0
- package/dist/commands/generate-components.d.ts +27 -0
- package/dist/commands/generate-components.d.ts.map +1 -0
- package/dist/commands/generate-components.js +680 -0
- package/dist/commands/generate-components.js.map +1 -0
- package/dist/commands/generate.d.ts +23 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +222 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +91 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +17 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +210 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/model.d.ts +25 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +317 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/preview.d.ts +23 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +1200 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/setup.d.ts +35 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +412 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +21 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +287 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/validate.d.ts +22 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +259 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/types/index.d.ts +154 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/apiKeyManager.d.ts +137 -0
- package/dist/utils/apiKeyManager.d.ts.map +1 -0
- package/dist/utils/apiKeyManager.js +471 -0
- package/dist/utils/apiKeyManager.js.map +1 -0
- package/dist/utils/componentValidator.d.ts +60 -0
- package/dist/utils/componentValidator.d.ts.map +1 -0
- package/dist/utils/componentValidator.js +191 -0
- package/dist/utils/componentValidator.js.map +1 -0
- package/dist/utils/designTokenExtractor.d.ts +94 -0
- package/dist/utils/designTokenExtractor.d.ts.map +1 -0
- package/dist/utils/designTokenExtractor.js +231 -0
- package/dist/utils/designTokenExtractor.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +105 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +332 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +58 -0
- package/dist/utils/fileSystem.d.ts.map +1 -0
- package/dist/utils/fileSystem.js +230 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/dist/utils/githubModels.d.ts +53 -0
- package/dist/utils/githubModels.d.ts.map +1 -0
- package/dist/utils/githubModels.js +239 -0
- package/dist/utils/githubModels.js.map +1 -0
- package/dist/utils/ollamaClient.d.ts +37 -0
- package/dist/utils/ollamaClient.d.ts.map +1 -0
- package/dist/utils/ollamaClient.js +213 -0
- package/dist/utils/ollamaClient.js.map +1 -0
- package/dist/utils/spinner.d.ts +30 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +119 -0
- package/dist/utils/spinner.js.map +1 -0
- 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
|