mycontext-cli 0.2.0 → 0.2.2
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 +17 -16
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +8 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/config/dependencies.json +180 -0
- package/package.json +9 -8
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +0 -44
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +0 -1
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +0 -1374
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +0 -1
- package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts +0 -35
- package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts.map +0 -1
- package/dist/cli/src/agents/implementations/DocsSubAgent.js +0 -351
- package/dist/cli/src/agents/implementations/DocsSubAgent.js.map +0 -1
- package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts +0 -120
- package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts.map +0 -1
- package/dist/cli/src/agents/implementations/EnhancementAgent.js +0 -606
- package/dist/cli/src/agents/implementations/EnhancementAgent.js.map +0 -1
- package/dist/cli/src/agents/implementations/QASubAgent.d.ts +0 -31
- package/dist/cli/src/agents/implementations/QASubAgent.d.ts.map +0 -1
- package/dist/cli/src/agents/implementations/QASubAgent.js +0 -190
- package/dist/cli/src/agents/implementations/QASubAgent.js.map +0 -1
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts +0 -287
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +0 -1
- package/dist/cli/src/agents/interfaces/SubAgent.js +0 -7
- package/dist/cli/src/agents/interfaces/SubAgent.js.map +0 -1
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts +0 -59
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts.map +0 -1
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js +0 -305
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js.map +0 -1
- package/dist/cli/src/agents/personalities/definitions.d.ts +0 -34
- package/dist/cli/src/agents/personalities/definitions.d.ts.map +0 -1
- package/dist/cli/src/agents/personalities/definitions.js +0 -389
- package/dist/cli/src/agents/personalities/definitions.js.map +0 -1
- package/dist/cli/src/cli.d.ts +0 -3
- package/dist/cli/src/cli.d.ts.map +0 -1
- package/dist/cli/src/cli.js +0 -298
- package/dist/cli/src/cli.js.map +0 -1
- package/dist/cli/src/commands/auth.d.ts +0 -23
- package/dist/cli/src/commands/auth.d.ts.map +0 -1
- package/dist/cli/src/commands/auth.js +0 -212
- package/dist/cli/src/commands/auth.js.map +0 -1
- package/dist/cli/src/commands/enhance.d.ts +0 -28
- package/dist/cli/src/commands/enhance.d.ts.map +0 -1
- package/dist/cli/src/commands/enhance.js +0 -246
- package/dist/cli/src/commands/enhance.js.map +0 -1
- package/dist/cli/src/commands/generate-components.d.ts +0 -27
- package/dist/cli/src/commands/generate-components.d.ts.map +0 -1
- package/dist/cli/src/commands/generate-components.js +0 -680
- package/dist/cli/src/commands/generate-components.js.map +0 -1
- package/dist/cli/src/commands/generate.d.ts +0 -108
- package/dist/cli/src/commands/generate.d.ts.map +0 -1
- package/dist/cli/src/commands/generate.js +0 -1970
- package/dist/cli/src/commands/generate.js.map +0 -1
- package/dist/cli/src/commands/init.d.ts +0 -13
- package/dist/cli/src/commands/init.d.ts.map +0 -1
- package/dist/cli/src/commands/init.js +0 -91
- package/dist/cli/src/commands/init.js.map +0 -1
- package/dist/cli/src/commands/list.d.ts +0 -17
- package/dist/cli/src/commands/list.d.ts.map +0 -1
- package/dist/cli/src/commands/list.js +0 -210
- package/dist/cli/src/commands/list.js.map +0 -1
- package/dist/cli/src/commands/model.d.ts +0 -25
- package/dist/cli/src/commands/model.d.ts.map +0 -1
- package/dist/cli/src/commands/model.js +0 -317
- package/dist/cli/src/commands/model.js.map +0 -1
- package/dist/cli/src/commands/preview.d.ts +0 -23
- package/dist/cli/src/commands/preview.d.ts.map +0 -1
- package/dist/cli/src/commands/preview.js +0 -1200
- package/dist/cli/src/commands/preview.js.map +0 -1
- package/dist/cli/src/commands/setup.d.ts +0 -35
- package/dist/cli/src/commands/setup.d.ts.map +0 -1
- package/dist/cli/src/commands/setup.js +0 -412
- package/dist/cli/src/commands/setup.js.map +0 -1
- package/dist/cli/src/commands/status.d.ts +0 -21
- package/dist/cli/src/commands/status.d.ts.map +0 -1
- package/dist/cli/src/commands/status.js +0 -287
- package/dist/cli/src/commands/status.js.map +0 -1
- package/dist/cli/src/commands/validate.d.ts +0 -22
- package/dist/cli/src/commands/validate.d.ts.map +0 -1
- package/dist/cli/src/commands/validate.js +0 -259
- package/dist/cli/src/commands/validate.js.map +0 -1
- package/dist/cli/src/types/index.d.ts +0 -152
- package/dist/cli/src/types/index.d.ts.map +0 -1
- package/dist/cli/src/types/index.js +0 -3
- package/dist/cli/src/types/index.js.map +0 -1
- package/dist/cli/src/utils/apiKeyManager.d.ts +0 -137
- package/dist/cli/src/utils/apiKeyManager.d.ts.map +0 -1
- package/dist/cli/src/utils/apiKeyManager.js +0 -471
- package/dist/cli/src/utils/apiKeyManager.js.map +0 -1
- package/dist/cli/src/utils/componentValidator.d.ts +0 -60
- package/dist/cli/src/utils/componentValidator.d.ts.map +0 -1
- package/dist/cli/src/utils/componentValidator.js +0 -191
- package/dist/cli/src/utils/componentValidator.js.map +0 -1
- package/dist/cli/src/utils/designTokenExtractor.d.ts +0 -94
- package/dist/cli/src/utils/designTokenExtractor.d.ts.map +0 -1
- package/dist/cli/src/utils/designTokenExtractor.js +0 -231
- package/dist/cli/src/utils/designTokenExtractor.js.map +0 -1
- package/dist/cli/src/utils/errorHandler.d.ts +0 -105
- package/dist/cli/src/utils/errorHandler.d.ts.map +0 -1
- package/dist/cli/src/utils/errorHandler.js +0 -332
- package/dist/cli/src/utils/errorHandler.js.map +0 -1
- package/dist/cli/src/utils/fileSystem.d.ts +0 -58
- package/dist/cli/src/utils/fileSystem.d.ts.map +0 -1
- package/dist/cli/src/utils/fileSystem.js +0 -230
- package/dist/cli/src/utils/fileSystem.js.map +0 -1
- package/dist/cli/src/utils/githubModels.d.ts +0 -53
- package/dist/cli/src/utils/githubModels.d.ts.map +0 -1
- package/dist/cli/src/utils/githubModels.js +0 -239
- package/dist/cli/src/utils/githubModels.js.map +0 -1
- package/dist/cli/src/utils/ollamaClient.d.ts +0 -37
- package/dist/cli/src/utils/ollamaClient.d.ts.map +0 -1
- package/dist/cli/src/utils/ollamaClient.js +0 -213
- package/dist/cli/src/utils/ollamaClient.js.map +0 -1
- package/dist/cli/src/utils/spinner.d.ts +0 -30
- package/dist/cli/src/utils/spinner.d.ts.map +0 -1
- package/dist/cli/src/utils/spinner.js +0 -119
- package/dist/cli/src/utils/spinner.js.map +0 -1
- package/dist/cli/src/utils/xaiClient.d.ts +0 -59
- package/dist/cli/src/utils/xaiClient.d.ts.map +0 -1
- package/dist/cli/src/utils/xaiClient.js +0 -244
- package/dist/cli/src/utils/xaiClient.js.map +0 -1
- package/dist/lib/analytics/usage-tracker.d.ts +0 -125
- package/dist/lib/analytics/usage-tracker.d.ts.map +0 -1
- package/dist/lib/analytics/usage-tracker.js +0 -429
- package/dist/lib/analytics/usage-tracker.js.map +0 -1
- package/dist/utils/githubModels.d.ts +0 -53
- package/dist/utils/githubModels.d.ts.map +0 -1
- package/dist/utils/githubModels.js +0 -239
- package/dist/utils/githubModels.js.map +0 -1
|
@@ -1,471 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Secure API Key Management System for MyContext CLI
|
|
4
|
-
*
|
|
5
|
-
* Handles storage, validation, and secure access to API keys for multiple AI providers.
|
|
6
|
-
* Supports environment variables, encrypted local storage, and secure key rotation.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.listAPIKeys = exports.removeAPIKey = exports.validateAPIKey = exports.setAPIKey = exports.getAPIKey = exports.apiKeyManager = exports.APIKeyManager = void 0;
|
|
43
|
-
const fs = __importStar(require("fs-extra"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const os = __importStar(require("os"));
|
|
46
|
-
const crypto = __importStar(require("crypto"));
|
|
47
|
-
const errorHandler_1 = require("./errorHandler");
|
|
48
|
-
class APIKeyManager {
|
|
49
|
-
constructor() {
|
|
50
|
-
this.keys = new Map();
|
|
51
|
-
this.providers = new Map();
|
|
52
|
-
this.configPath = path.join(os.homedir(), ".mycontext", "api-keys.json");
|
|
53
|
-
this.encryptionKey = this.getEncryptionKey();
|
|
54
|
-
this.initializeProviders();
|
|
55
|
-
}
|
|
56
|
-
static getInstance() {
|
|
57
|
-
if (!APIKeyManager.instance) {
|
|
58
|
-
APIKeyManager.instance = new APIKeyManager();
|
|
59
|
-
}
|
|
60
|
-
return APIKeyManager.instance;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Initialize supported AI providers
|
|
64
|
-
*/
|
|
65
|
-
initializeProviders() {
|
|
66
|
-
const providers = [
|
|
67
|
-
{
|
|
68
|
-
name: "xai",
|
|
69
|
-
envVar: "XAI_API_KEY",
|
|
70
|
-
validationUrl: "https://api.x.ai/v1/models",
|
|
71
|
-
requiredPermissions: ["chat:completions"],
|
|
72
|
-
rateLimits: { requests: 100, window: 3600 },
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: "openai",
|
|
76
|
-
envVar: "OPENAI_API_KEY",
|
|
77
|
-
validationUrl: "https://api.openai.com/v1/models",
|
|
78
|
-
requiredPermissions: ["chat:completions"],
|
|
79
|
-
rateLimits: { requests: 3000, window: 3600 },
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: "anthropic",
|
|
83
|
-
envVar: "ANTHROPIC_API_KEY",
|
|
84
|
-
validationUrl: "https://api.anthropic.com/v1/models",
|
|
85
|
-
requiredPermissions: ["messages"],
|
|
86
|
-
rateLimits: { requests: 100, window: 3600 },
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: "google",
|
|
90
|
-
envVar: "GOOGLE_API_KEY",
|
|
91
|
-
validationUrl: "https://generativelanguage.googleapis.com/v1beta/models",
|
|
92
|
-
requiredPermissions: ["generateContent"],
|
|
93
|
-
rateLimits: { requests: 1000, window: 3600 },
|
|
94
|
-
},
|
|
95
|
-
];
|
|
96
|
-
providers.forEach((provider) => {
|
|
97
|
-
this.providers.set(provider.name, provider);
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Get or generate encryption key for secure storage
|
|
102
|
-
*/
|
|
103
|
-
getEncryptionKey() {
|
|
104
|
-
const keyPath = path.join(os.homedir(), ".mycontext", ".encryption-key");
|
|
105
|
-
try {
|
|
106
|
-
if (fs.existsSync(keyPath)) {
|
|
107
|
-
return fs.readFileSync(keyPath, "utf-8");
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
console.warn("Could not read existing encryption key:", error);
|
|
112
|
-
}
|
|
113
|
-
// Generate new encryption key
|
|
114
|
-
const newKey = crypto.randomBytes(32).toString("hex");
|
|
115
|
-
try {
|
|
116
|
-
fs.ensureDirSync(path.dirname(keyPath));
|
|
117
|
-
fs.writeFileSync(keyPath, newKey, { mode: 0o600 }); // Read/write for owner only
|
|
118
|
-
return newKey;
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
console.warn("Could not save encryption key, using fallback:", error);
|
|
122
|
-
// Fallback to environment-based key
|
|
123
|
-
return (process.env.MYCONTEXT_ENCRYPTION_KEY ||
|
|
124
|
-
crypto.randomBytes(32).toString("hex"));
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Encrypt sensitive data
|
|
129
|
-
*/
|
|
130
|
-
encrypt(data) {
|
|
131
|
-
const iv = crypto.randomBytes(16);
|
|
132
|
-
// Use PBKDF2 to derive a key from the encryption key
|
|
133
|
-
const key = crypto.pbkdf2Sync(this.encryptionKey, iv, 100000, 32, "sha256");
|
|
134
|
-
const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
|
|
135
|
-
let encrypted = cipher.update(data, "utf8", "hex");
|
|
136
|
-
encrypted += cipher.final("hex");
|
|
137
|
-
return iv.toString("hex") + ":" + encrypted;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Decrypt sensitive data
|
|
141
|
-
*/
|
|
142
|
-
decrypt(encryptedData) {
|
|
143
|
-
try {
|
|
144
|
-
const [ivHex, encrypted] = encryptedData.split(":");
|
|
145
|
-
const iv = Buffer.from(ivHex, "hex");
|
|
146
|
-
// Use PBKDF2 to derive the same key from the encryption key
|
|
147
|
-
const key = crypto.pbkdf2Sync(this.encryptionKey, iv, 100000, 32, "sha256");
|
|
148
|
-
const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
|
|
149
|
-
let decrypted = decipher.update(encrypted, "hex", "utf8");
|
|
150
|
-
decrypted += decipher.final("utf8");
|
|
151
|
-
return decrypted;
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
throw new Error("Failed to decrypt API key data");
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Load API keys from secure storage
|
|
159
|
-
*/
|
|
160
|
-
async loadKeys() {
|
|
161
|
-
try {
|
|
162
|
-
if (!fs.existsSync(this.configPath)) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const encryptedData = await fs.readFile(this.configPath, "utf-8");
|
|
166
|
-
const decryptedData = this.decrypt(encryptedData);
|
|
167
|
-
const keysData = JSON.parse(decryptedData);
|
|
168
|
-
this.keys.clear();
|
|
169
|
-
Object.entries(keysData).forEach(([provider, config]) => {
|
|
170
|
-
this.keys.set(provider, config);
|
|
171
|
-
});
|
|
172
|
-
console.log(`📁 Loaded ${this.keys.size} API keys from secure storage`);
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
console.warn("Failed to load API keys from storage:", error);
|
|
176
|
-
// Continue with environment variables only
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Save API keys to secure storage
|
|
181
|
-
*/
|
|
182
|
-
async saveKeys() {
|
|
183
|
-
try {
|
|
184
|
-
const keysData = {};
|
|
185
|
-
this.keys.forEach((config, provider) => {
|
|
186
|
-
keysData[provider] = config;
|
|
187
|
-
});
|
|
188
|
-
const jsonData = JSON.stringify(keysData, null, 2);
|
|
189
|
-
const encryptedData = this.encrypt(jsonData);
|
|
190
|
-
await fs.ensureDir(path.dirname(this.configPath));
|
|
191
|
-
await fs.writeFile(this.configPath, encryptedData, { mode: 0o600 });
|
|
192
|
-
console.log(`💾 Saved ${this.keys.size} API keys to secure storage`);
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
throw (0, errorHandler_1.createError)(error, { operation: "save_api_keys" }, errorHandler_1.ErrorType.FILE_SYSTEM_ERROR);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Get API key for a provider
|
|
200
|
-
*/
|
|
201
|
-
async getKey(provider) {
|
|
202
|
-
// Check environment variables first
|
|
203
|
-
const envKey = this.getKeyFromEnvironment(provider);
|
|
204
|
-
if (envKey) {
|
|
205
|
-
return envKey;
|
|
206
|
-
}
|
|
207
|
-
// Check stored keys
|
|
208
|
-
const storedKey = this.keys.get(provider);
|
|
209
|
-
if (storedKey?.key) {
|
|
210
|
-
// Update last used timestamp
|
|
211
|
-
storedKey.lastUsed = new Date().toISOString();
|
|
212
|
-
await this.saveKeys();
|
|
213
|
-
return storedKey.key;
|
|
214
|
-
}
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get API key from environment variables
|
|
219
|
-
*/
|
|
220
|
-
getKeyFromEnvironment(provider) {
|
|
221
|
-
const providerConfig = this.providers.get(provider);
|
|
222
|
-
if (!providerConfig) {
|
|
223
|
-
return null;
|
|
224
|
-
}
|
|
225
|
-
return process.env[providerConfig.envVar] || null;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Set API key for a provider
|
|
229
|
-
*/
|
|
230
|
-
async setKey(provider, key, options = {}) {
|
|
231
|
-
// Validate the key format
|
|
232
|
-
if (!this.validateKeyFormat(provider, key)) {
|
|
233
|
-
throw (0, errorHandler_1.createError)(new Error(`Invalid API key format for ${provider}`), { operation: "set_api_key", provider }, errorHandler_1.ErrorType.VALIDATION_ERROR);
|
|
234
|
-
}
|
|
235
|
-
const config = {
|
|
236
|
-
provider,
|
|
237
|
-
key,
|
|
238
|
-
createdAt: new Date().toISOString(),
|
|
239
|
-
isValid: true,
|
|
240
|
-
...options,
|
|
241
|
-
};
|
|
242
|
-
this.keys.set(provider, config);
|
|
243
|
-
await this.saveKeys();
|
|
244
|
-
console.log(`✅ API key set for ${provider}`);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Validate API key format
|
|
248
|
-
*/
|
|
249
|
-
validateKeyFormat(provider, key) {
|
|
250
|
-
if (!key || typeof key !== "string" || key.length < 10) {
|
|
251
|
-
return false;
|
|
252
|
-
}
|
|
253
|
-
// Provider-specific validation
|
|
254
|
-
switch (provider) {
|
|
255
|
-
case "xai":
|
|
256
|
-
return key.startsWith("xai_") && key.length >= 50;
|
|
257
|
-
case "openai":
|
|
258
|
-
return key.startsWith("sk-") && key.length >= 50;
|
|
259
|
-
case "anthropic":
|
|
260
|
-
return key.startsWith("sk-ant-") && key.length >= 50;
|
|
261
|
-
case "google":
|
|
262
|
-
return key.length >= 30; // Google API keys vary in format
|
|
263
|
-
default:
|
|
264
|
-
return key.length >= 20; // Generic minimum
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Validate API key with provider
|
|
269
|
-
*/
|
|
270
|
-
async validateKey(provider, key) {
|
|
271
|
-
const apiKey = key || (await this.getKey(provider));
|
|
272
|
-
if (!apiKey) {
|
|
273
|
-
return {
|
|
274
|
-
isValid: false,
|
|
275
|
-
provider,
|
|
276
|
-
error: "No API key found",
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
const providerConfig = this.providers.get(provider);
|
|
280
|
-
if (!providerConfig) {
|
|
281
|
-
return {
|
|
282
|
-
isValid: false,
|
|
283
|
-
provider,
|
|
284
|
-
error: "Unknown provider",
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
// Basic format validation
|
|
288
|
-
if (!this.validateKeyFormat(provider, apiKey)) {
|
|
289
|
-
return {
|
|
290
|
-
isValid: false,
|
|
291
|
-
provider,
|
|
292
|
-
error: "Invalid key format",
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
// Online validation if URL is provided
|
|
296
|
-
if (providerConfig.validationUrl) {
|
|
297
|
-
try {
|
|
298
|
-
const isValid = await this.validateWithProvider(provider, apiKey, providerConfig.validationUrl);
|
|
299
|
-
return {
|
|
300
|
-
isValid,
|
|
301
|
-
provider,
|
|
302
|
-
permissions: providerConfig.requiredPermissions,
|
|
303
|
-
rateLimit: providerConfig.rateLimits,
|
|
304
|
-
error: isValid ? undefined : "Key validation failed",
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
catch (error) {
|
|
308
|
-
return {
|
|
309
|
-
isValid: false,
|
|
310
|
-
provider,
|
|
311
|
-
error: `Validation error: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
// Offline validation only
|
|
316
|
-
return {
|
|
317
|
-
isValid: true,
|
|
318
|
-
provider,
|
|
319
|
-
permissions: providerConfig.requiredPermissions,
|
|
320
|
-
rateLimit: providerConfig.rateLimits,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Validate API key with provider's API
|
|
325
|
-
*/
|
|
326
|
-
async validateWithProvider(provider, key, validationUrl) {
|
|
327
|
-
try {
|
|
328
|
-
const response = await fetch(validationUrl, {
|
|
329
|
-
method: "GET",
|
|
330
|
-
headers: {
|
|
331
|
-
Authorization: `Bearer ${key}`,
|
|
332
|
-
"User-Agent": "MyContext-CLI/1.0.0",
|
|
333
|
-
},
|
|
334
|
-
signal: AbortSignal.timeout(10000), // 10 second timeout
|
|
335
|
-
});
|
|
336
|
-
return response.ok;
|
|
337
|
-
}
|
|
338
|
-
catch (error) {
|
|
339
|
-
console.warn(`Failed to validate ${provider} API key:`, error);
|
|
340
|
-
return false;
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Remove API key for a provider
|
|
345
|
-
*/
|
|
346
|
-
async removeKey(provider) {
|
|
347
|
-
if (this.keys.has(provider)) {
|
|
348
|
-
this.keys.delete(provider);
|
|
349
|
-
await this.saveKeys();
|
|
350
|
-
console.log(`🗑️ API key removed for ${provider}`);
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
console.log(`ℹ️ No stored API key found for ${provider}`);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* List all configured API keys
|
|
358
|
-
*/
|
|
359
|
-
listKeys() {
|
|
360
|
-
const result = [];
|
|
361
|
-
this.providers.forEach((config, provider) => {
|
|
362
|
-
const envKey = this.getKeyFromEnvironment(provider);
|
|
363
|
-
const storedKey = this.keys.get(provider);
|
|
364
|
-
let source = "none";
|
|
365
|
-
let hasKey = false;
|
|
366
|
-
if (envKey) {
|
|
367
|
-
source = "environment";
|
|
368
|
-
hasKey = true;
|
|
369
|
-
}
|
|
370
|
-
else if (storedKey?.key) {
|
|
371
|
-
source = "storage";
|
|
372
|
-
hasKey = true;
|
|
373
|
-
}
|
|
374
|
-
result.push({ provider, hasKey, source });
|
|
375
|
-
});
|
|
376
|
-
return result;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Get provider configuration
|
|
380
|
-
*/
|
|
381
|
-
getProviderConfig(provider) {
|
|
382
|
-
return this.providers.get(provider);
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* List all supported providers
|
|
386
|
-
*/
|
|
387
|
-
getSupportedProviders() {
|
|
388
|
-
return Array.from(this.providers.keys());
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Clear all stored API keys
|
|
392
|
-
*/
|
|
393
|
-
async clearAllKeys() {
|
|
394
|
-
this.keys.clear();
|
|
395
|
-
await this.saveKeys();
|
|
396
|
-
console.log("🗑️ All stored API keys cleared");
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Export API keys (for backup purposes)
|
|
400
|
-
*/
|
|
401
|
-
async exportKeys(password) {
|
|
402
|
-
const keysData = {};
|
|
403
|
-
this.keys.forEach((config, provider) => {
|
|
404
|
-
keysData[provider] = config;
|
|
405
|
-
});
|
|
406
|
-
const jsonData = JSON.stringify(keysData, null, 2);
|
|
407
|
-
const encryptedData = this.encrypt(jsonData);
|
|
408
|
-
// Additional encryption with user password
|
|
409
|
-
const salt = crypto.randomBytes(16);
|
|
410
|
-
const key = crypto.pbkdf2Sync(password, salt, 100000, 32, "sha256");
|
|
411
|
-
const iv = crypto.randomBytes(16);
|
|
412
|
-
const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
|
|
413
|
-
let encrypted = cipher.update(encryptedData, "utf8", "hex");
|
|
414
|
-
encrypted += cipher.final("hex");
|
|
415
|
-
encrypted =
|
|
416
|
-
salt.toString("hex") + ":" + iv.toString("hex") + ":" + encrypted;
|
|
417
|
-
return JSON.stringify({
|
|
418
|
-
version: "1.0",
|
|
419
|
-
salt: salt.toString("hex"),
|
|
420
|
-
data: encrypted,
|
|
421
|
-
timestamp: new Date().toISOString(),
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Import API keys from backup
|
|
426
|
-
*/
|
|
427
|
-
async importKeys(backupData, password) {
|
|
428
|
-
try {
|
|
429
|
-
const backup = JSON.parse(backupData);
|
|
430
|
-
if (backup.version !== "1.0") {
|
|
431
|
-
throw new Error("Unsupported backup version");
|
|
432
|
-
}
|
|
433
|
-
// Decrypt with user password
|
|
434
|
-
const [saltHex, ivHex, encrypted] = backup.data.split(":");
|
|
435
|
-
const salt = Buffer.from(saltHex, "hex");
|
|
436
|
-
const iv = Buffer.from(ivHex, "hex");
|
|
437
|
-
const key = crypto.pbkdf2Sync(password, salt, 100000, 32, "sha256");
|
|
438
|
-
const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
|
|
439
|
-
let decrypted = decipher.update(encrypted, "hex", "utf8");
|
|
440
|
-
decrypted += decipher.final("utf8");
|
|
441
|
-
// Decrypt with internal key
|
|
442
|
-
const keysData = JSON.parse(this.decrypt(decrypted));
|
|
443
|
-
// Validate and import keys
|
|
444
|
-
for (const [provider, config] of Object.entries(keysData)) {
|
|
445
|
-
if (this.validateKeyFormat(provider, config.key)) {
|
|
446
|
-
this.keys.set(provider, config);
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
await this.saveKeys();
|
|
450
|
-
console.log(`📥 Imported ${Object.keys(keysData).length} API keys from backup`);
|
|
451
|
-
}
|
|
452
|
-
catch (error) {
|
|
453
|
-
throw (0, errorHandler_1.createError)(error, { operation: "import_api_keys" }, errorHandler_1.ErrorType.VALIDATION_ERROR);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
exports.APIKeyManager = APIKeyManager;
|
|
458
|
-
// Export singleton instance
|
|
459
|
-
exports.apiKeyManager = APIKeyManager.getInstance();
|
|
460
|
-
// Utility functions
|
|
461
|
-
const getAPIKey = (provider) => exports.apiKeyManager.getKey(provider);
|
|
462
|
-
exports.getAPIKey = getAPIKey;
|
|
463
|
-
const setAPIKey = (provider, key, options) => exports.apiKeyManager.setKey(provider, key, options);
|
|
464
|
-
exports.setAPIKey = setAPIKey;
|
|
465
|
-
const validateAPIKey = (provider, key) => exports.apiKeyManager.validateKey(provider, key);
|
|
466
|
-
exports.validateAPIKey = validateAPIKey;
|
|
467
|
-
const removeAPIKey = (provider) => exports.apiKeyManager.removeKey(provider);
|
|
468
|
-
exports.removeAPIKey = removeAPIKey;
|
|
469
|
-
const listAPIKeys = () => exports.apiKeyManager.listKeys();
|
|
470
|
-
exports.listAPIKeys = listAPIKeys;
|
|
471
|
-
//# sourceMappingURL=apiKeyManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiKeyManager.js","sourceRoot":"","sources":["../../../../src/utils/apiKeyManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"componentValidator.d.ts","sourceRoot":"","sources":["../../../../src/utils/componentValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B7D;;OAEG;IACG,mBAAmB,CACvB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE;QACX,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;QAClC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAChC,GACA,OAAO,CAAC,mBAAmB,CAAC;IA+C/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAWvB"}
|