mycontext-cli 0.1.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 +440 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +43 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +1 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +1440 -0
- package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +1 -0
- package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts +35 -0
- package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts.map +1 -0
- package/dist/cli/src/agents/implementations/DocsSubAgent.js +351 -0
- package/dist/cli/src/agents/implementations/DocsSubAgent.js.map +1 -0
- package/dist/cli/src/agents/implementations/QASubAgent.d.ts +31 -0
- package/dist/cli/src/agents/implementations/QASubAgent.d.ts.map +1 -0
- package/dist/cli/src/agents/implementations/QASubAgent.js +190 -0
- package/dist/cli/src/agents/implementations/QASubAgent.js.map +1 -0
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts +157 -0
- package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +1 -0
- package/dist/cli/src/agents/interfaces/SubAgent.js +7 -0
- package/dist/cli/src/agents/interfaces/SubAgent.js.map +1 -0
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts +59 -0
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -0
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js +305 -0
- package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js.map +1 -0
- package/dist/cli/src/agents/personalities/definitions.d.ts +34 -0
- package/dist/cli/src/agents/personalities/definitions.d.ts.map +1 -0
- package/dist/cli/src/agents/personalities/definitions.js +360 -0
- package/dist/cli/src/agents/personalities/definitions.js.map +1 -0
- package/dist/cli/src/cli.d.ts +3 -0
- package/dist/cli/src/cli.d.ts.map +1 -0
- package/dist/cli/src/cli.js +286 -0
- package/dist/cli/src/cli.js.map +1 -0
- package/dist/cli/src/commands/auth.d.ts +23 -0
- package/dist/cli/src/commands/auth.d.ts.map +1 -0
- package/dist/cli/src/commands/auth.js +212 -0
- package/dist/cli/src/commands/auth.js.map +1 -0
- package/dist/cli/src/commands/generate-components.d.ts +28 -0
- package/dist/cli/src/commands/generate-components.d.ts.map +1 -0
- package/dist/cli/src/commands/generate-components.js +680 -0
- package/dist/cli/src/commands/generate-components.js.map +1 -0
- package/dist/cli/src/commands/generate.d.ts +108 -0
- package/dist/cli/src/commands/generate.d.ts.map +1 -0
- package/dist/cli/src/commands/generate.js +1984 -0
- package/dist/cli/src/commands/generate.js.map +1 -0
- package/dist/cli/src/commands/init.d.ts +13 -0
- package/dist/cli/src/commands/init.d.ts.map +1 -0
- package/dist/cli/src/commands/init.js +91 -0
- package/dist/cli/src/commands/init.js.map +1 -0
- package/dist/cli/src/commands/list.d.ts +17 -0
- package/dist/cli/src/commands/list.d.ts.map +1 -0
- package/dist/cli/src/commands/list.js +209 -0
- package/dist/cli/src/commands/list.js.map +1 -0
- package/dist/cli/src/commands/preview.d.ts +23 -0
- package/dist/cli/src/commands/preview.d.ts.map +1 -0
- package/dist/cli/src/commands/preview.js +1200 -0
- package/dist/cli/src/commands/preview.js.map +1 -0
- package/dist/cli/src/commands/status.d.ts +21 -0
- package/dist/cli/src/commands/status.d.ts.map +1 -0
- package/dist/cli/src/commands/status.js +287 -0
- package/dist/cli/src/commands/status.js.map +1 -0
- package/dist/cli/src/commands/validate.d.ts +22 -0
- package/dist/cli/src/commands/validate.d.ts.map +1 -0
- package/dist/cli/src/commands/validate.js +259 -0
- package/dist/cli/src/commands/validate.js.map +1 -0
- package/dist/cli/src/types/index.d.ts +152 -0
- package/dist/cli/src/types/index.d.ts.map +1 -0
- package/dist/cli/src/types/index.js +3 -0
- package/dist/cli/src/types/index.js.map +1 -0
- package/dist/cli/src/utils/apiKeyManager.d.ts +137 -0
- package/dist/cli/src/utils/apiKeyManager.d.ts.map +1 -0
- package/dist/cli/src/utils/apiKeyManager.js +471 -0
- package/dist/cli/src/utils/apiKeyManager.js.map +1 -0
- package/dist/cli/src/utils/errorHandler.d.ts +105 -0
- package/dist/cli/src/utils/errorHandler.d.ts.map +1 -0
- package/dist/cli/src/utils/errorHandler.js +332 -0
- package/dist/cli/src/utils/errorHandler.js.map +1 -0
- package/dist/cli/src/utils/fileSystem.d.ts +58 -0
- package/dist/cli/src/utils/fileSystem.d.ts.map +1 -0
- package/dist/cli/src/utils/fileSystem.js +230 -0
- package/dist/cli/src/utils/fileSystem.js.map +1 -0
- package/dist/cli/src/utils/githubModels.d.ts +53 -0
- package/dist/cli/src/utils/githubModels.d.ts.map +1 -0
- package/dist/cli/src/utils/githubModels.js +239 -0
- package/dist/cli/src/utils/githubModels.js.map +1 -0
- package/dist/cli/src/utils/spinner.d.ts +28 -0
- package/dist/cli/src/utils/spinner.d.ts.map +1 -0
- package/dist/cli/src/utils/spinner.js +112 -0
- package/dist/cli/src/utils/spinner.js.map +1 -0
- package/dist/cli/src/utils/xaiClient.d.ts +59 -0
- package/dist/cli/src/utils/xaiClient.d.ts.map +1 -0
- package/dist/cli/src/utils/xaiClient.js +244 -0
- package/dist/cli/src/utils/xaiClient.js.map +1 -0
- package/dist/lib/analytics/usage-tracker.d.ts +125 -0
- package/dist/lib/analytics/usage-tracker.d.ts.map +1 -0
- package/dist/lib/analytics/usage-tracker.js +429 -0
- package/dist/lib/analytics/usage-tracker.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive Error Handling System for MyContext CLI
|
|
4
|
+
*
|
|
5
|
+
* Provides structured error handling, logging, and recovery mechanisms
|
|
6
|
+
* for AI providers, API calls, and CLI operations.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createError = exports.createFileSystemError = exports.createNetworkError = exports.createAIProviderError = exports.errorHandler = exports.ErrorHandler = exports.MyContextError = exports.ErrorSeverity = exports.ErrorType = void 0;
|
|
10
|
+
var ErrorType;
|
|
11
|
+
(function (ErrorType) {
|
|
12
|
+
ErrorType["API_ERROR"] = "API_ERROR";
|
|
13
|
+
ErrorType["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
14
|
+
ErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
|
|
15
|
+
ErrorType["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
16
|
+
ErrorType["FILE_SYSTEM_ERROR"] = "FILE_SYSTEM_ERROR";
|
|
17
|
+
ErrorType["CONFIGURATION_ERROR"] = "CONFIGURATION_ERROR";
|
|
18
|
+
ErrorType["AI_PROVIDER_ERROR"] = "AI_PROVIDER_ERROR";
|
|
19
|
+
ErrorType["RATE_LIMIT_ERROR"] = "RATE_LIMIT_ERROR";
|
|
20
|
+
ErrorType["TIMEOUT_ERROR"] = "TIMEOUT_ERROR";
|
|
21
|
+
ErrorType["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
22
|
+
})(ErrorType || (exports.ErrorType = ErrorType = {}));
|
|
23
|
+
var ErrorSeverity;
|
|
24
|
+
(function (ErrorSeverity) {
|
|
25
|
+
ErrorSeverity["LOW"] = "LOW";
|
|
26
|
+
ErrorSeverity["MEDIUM"] = "MEDIUM";
|
|
27
|
+
ErrorSeverity["HIGH"] = "HIGH";
|
|
28
|
+
ErrorSeverity["CRITICAL"] = "CRITICAL";
|
|
29
|
+
})(ErrorSeverity || (exports.ErrorSeverity = ErrorSeverity = {}));
|
|
30
|
+
class MyContextError extends Error {
|
|
31
|
+
constructor(structuredError) {
|
|
32
|
+
super(structuredError.message);
|
|
33
|
+
this.name = "MyContextError";
|
|
34
|
+
this.type = structuredError.type;
|
|
35
|
+
this.severity = structuredError.severity;
|
|
36
|
+
this.code = structuredError.code;
|
|
37
|
+
this.details = structuredError.details;
|
|
38
|
+
this.timestamp = structuredError.timestamp;
|
|
39
|
+
this.source = structuredError.source;
|
|
40
|
+
this.retryable = structuredError.retryable;
|
|
41
|
+
this.retryAfter = structuredError.retryAfter;
|
|
42
|
+
this.suggestions = structuredError.suggestions;
|
|
43
|
+
}
|
|
44
|
+
toJSON() {
|
|
45
|
+
return {
|
|
46
|
+
type: this.type,
|
|
47
|
+
severity: this.severity,
|
|
48
|
+
message: this.message,
|
|
49
|
+
code: this.code,
|
|
50
|
+
details: this.details,
|
|
51
|
+
timestamp: this.timestamp,
|
|
52
|
+
source: this.source,
|
|
53
|
+
retryable: this.retryable,
|
|
54
|
+
retryAfter: this.retryAfter,
|
|
55
|
+
suggestions: this.suggestions,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.MyContextError = MyContextError;
|
|
60
|
+
class ErrorHandler {
|
|
61
|
+
constructor() {
|
|
62
|
+
this.errorLog = [];
|
|
63
|
+
this.maxLogSize = 100;
|
|
64
|
+
}
|
|
65
|
+
static getInstance() {
|
|
66
|
+
if (!ErrorHandler.instance) {
|
|
67
|
+
ErrorHandler.instance = new ErrorHandler();
|
|
68
|
+
}
|
|
69
|
+
return ErrorHandler.instance;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create a structured error from various input types
|
|
73
|
+
*/
|
|
74
|
+
createError(error, context = {}, defaultType = ErrorType.UNKNOWN_ERROR) {
|
|
75
|
+
const timestamp = new Date().toISOString();
|
|
76
|
+
// Handle different error types
|
|
77
|
+
if (error instanceof MyContextError) {
|
|
78
|
+
return error;
|
|
79
|
+
}
|
|
80
|
+
if (error instanceof Error) {
|
|
81
|
+
return this.handleStandardError(error, context, timestamp);
|
|
82
|
+
}
|
|
83
|
+
if (typeof error === "string") {
|
|
84
|
+
return new MyContextError({
|
|
85
|
+
type: defaultType,
|
|
86
|
+
severity: ErrorSeverity.MEDIUM,
|
|
87
|
+
message: error,
|
|
88
|
+
timestamp,
|
|
89
|
+
source: context.operation,
|
|
90
|
+
retryable: false,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// Handle fetch errors and API responses
|
|
94
|
+
if (typeof error === "object" && error !== null) {
|
|
95
|
+
return this.handleObjectError(error, context, timestamp);
|
|
96
|
+
}
|
|
97
|
+
return new MyContextError({
|
|
98
|
+
type: ErrorType.UNKNOWN_ERROR,
|
|
99
|
+
severity: ErrorSeverity.MEDIUM,
|
|
100
|
+
message: "An unknown error occurred",
|
|
101
|
+
timestamp,
|
|
102
|
+
source: context.operation,
|
|
103
|
+
details: { originalError: error },
|
|
104
|
+
retryable: false,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Handle AI provider specific errors
|
|
109
|
+
*/
|
|
110
|
+
handleAIProviderError(error, provider, operation, requestData) {
|
|
111
|
+
const context = {
|
|
112
|
+
operation,
|
|
113
|
+
provider,
|
|
114
|
+
metadata: requestData,
|
|
115
|
+
};
|
|
116
|
+
const structuredError = this.createError(error, context, ErrorType.AI_PROVIDER_ERROR);
|
|
117
|
+
// Add provider-specific error handling
|
|
118
|
+
if (typeof error === "object" && error !== null && "status" in error) {
|
|
119
|
+
const status = error.status;
|
|
120
|
+
switch (status) {
|
|
121
|
+
case 401:
|
|
122
|
+
return new MyContextError({
|
|
123
|
+
...structuredError,
|
|
124
|
+
type: ErrorType.AUTHENTICATION_ERROR,
|
|
125
|
+
suggestions: [
|
|
126
|
+
"Check your API key configuration",
|
|
127
|
+
"Verify API key permissions",
|
|
128
|
+
"Contact support if the issue persists",
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
case 429:
|
|
132
|
+
return new MyContextError({
|
|
133
|
+
...structuredError,
|
|
134
|
+
type: ErrorType.RATE_LIMIT_ERROR,
|
|
135
|
+
retryable: true,
|
|
136
|
+
retryAfter: 60, // Default retry after 60 seconds
|
|
137
|
+
suggestions: [
|
|
138
|
+
"Wait before retrying",
|
|
139
|
+
"Consider upgrading your API plan",
|
|
140
|
+
"Implement exponential backoff",
|
|
141
|
+
],
|
|
142
|
+
});
|
|
143
|
+
case 500:
|
|
144
|
+
case 502:
|
|
145
|
+
case 503:
|
|
146
|
+
case 504:
|
|
147
|
+
return new MyContextError({
|
|
148
|
+
...structuredError,
|
|
149
|
+
retryable: true,
|
|
150
|
+
retryAfter: 30,
|
|
151
|
+
suggestions: [
|
|
152
|
+
"Retry the request after a short delay",
|
|
153
|
+
"Check provider status page",
|
|
154
|
+
"Try a different AI provider if available",
|
|
155
|
+
],
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
this.logError(structuredError);
|
|
160
|
+
return structuredError;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Handle network and connectivity errors
|
|
164
|
+
*/
|
|
165
|
+
handleNetworkError(error, context = {}) {
|
|
166
|
+
const baseError = this.createError(error, context, ErrorType.NETWORK_ERROR);
|
|
167
|
+
const networkError = new MyContextError({
|
|
168
|
+
...baseError.toJSON(),
|
|
169
|
+
retryable: true,
|
|
170
|
+
retryAfter: 10,
|
|
171
|
+
suggestions: [
|
|
172
|
+
"Check your internet connection",
|
|
173
|
+
"Verify firewall settings",
|
|
174
|
+
"Try again in a few moments",
|
|
175
|
+
],
|
|
176
|
+
});
|
|
177
|
+
this.logError(networkError);
|
|
178
|
+
return networkError;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handle file system errors
|
|
182
|
+
*/
|
|
183
|
+
handleFileSystemError(error, filePath) {
|
|
184
|
+
const context = {
|
|
185
|
+
operation: "file_system",
|
|
186
|
+
metadata: { filePath },
|
|
187
|
+
};
|
|
188
|
+
const baseError = this.createError(error, context, ErrorType.FILE_SYSTEM_ERROR);
|
|
189
|
+
const fileSystemError = new MyContextError({
|
|
190
|
+
...baseError.toJSON(),
|
|
191
|
+
suggestions: [
|
|
192
|
+
"Check file permissions",
|
|
193
|
+
"Verify the file path exists",
|
|
194
|
+
"Ensure sufficient disk space",
|
|
195
|
+
"Check if the file is in use by another process",
|
|
196
|
+
],
|
|
197
|
+
});
|
|
198
|
+
this.logError(fileSystemError);
|
|
199
|
+
return fileSystemError;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Log error for debugging and monitoring
|
|
203
|
+
*/
|
|
204
|
+
logError(error) {
|
|
205
|
+
const errorData = error instanceof MyContextError ? error.toJSON() : error;
|
|
206
|
+
this.errorLog.push(errorData);
|
|
207
|
+
// Maintain log size
|
|
208
|
+
if (this.errorLog.length > this.maxLogSize) {
|
|
209
|
+
this.errorLog = this.errorLog.slice(-this.maxLogSize);
|
|
210
|
+
}
|
|
211
|
+
// Console logging based on severity
|
|
212
|
+
switch (errorData.severity) {
|
|
213
|
+
case ErrorSeverity.CRITICAL:
|
|
214
|
+
console.error("🔴 CRITICAL ERROR:", errorData);
|
|
215
|
+
break;
|
|
216
|
+
case ErrorSeverity.HIGH:
|
|
217
|
+
console.error("🟠 HIGH SEVERITY ERROR:", errorData);
|
|
218
|
+
break;
|
|
219
|
+
case ErrorSeverity.MEDIUM:
|
|
220
|
+
console.warn("🟡 MEDIUM SEVERITY ERROR:", errorData);
|
|
221
|
+
break;
|
|
222
|
+
case ErrorSeverity.LOW:
|
|
223
|
+
console.log("🟢 LOW SEVERITY ERROR:", errorData);
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get recent errors for debugging
|
|
229
|
+
*/
|
|
230
|
+
getRecentErrors(count = 10) {
|
|
231
|
+
return this.errorLog.slice(-count);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Clear error log
|
|
235
|
+
*/
|
|
236
|
+
clearErrors() {
|
|
237
|
+
this.errorLog = [];
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Handle standard JavaScript errors
|
|
241
|
+
*/
|
|
242
|
+
handleStandardError(error, context, timestamp) {
|
|
243
|
+
let type = ErrorType.UNKNOWN_ERROR;
|
|
244
|
+
let severity = ErrorSeverity.MEDIUM;
|
|
245
|
+
let retryable = false;
|
|
246
|
+
const suggestions = [];
|
|
247
|
+
// Categorize by error message patterns
|
|
248
|
+
const message = error.message.toLowerCase();
|
|
249
|
+
if (message.includes("network") || message.includes("fetch")) {
|
|
250
|
+
type = ErrorType.NETWORK_ERROR;
|
|
251
|
+
retryable = true;
|
|
252
|
+
suggestions.push("Check your internet connection");
|
|
253
|
+
}
|
|
254
|
+
else if (message.includes("timeout")) {
|
|
255
|
+
type = ErrorType.TIMEOUT_ERROR;
|
|
256
|
+
retryable = true;
|
|
257
|
+
suggestions.push("Try again with a longer timeout");
|
|
258
|
+
}
|
|
259
|
+
else if (message.includes("permission") || message.includes("access")) {
|
|
260
|
+
type = ErrorType.FILE_SYSTEM_ERROR;
|
|
261
|
+
suggestions.push("Check file permissions and access rights");
|
|
262
|
+
}
|
|
263
|
+
else if (message.includes("config") || message.includes("setting")) {
|
|
264
|
+
type = ErrorType.CONFIGURATION_ERROR;
|
|
265
|
+
suggestions.push("Check your configuration settings");
|
|
266
|
+
}
|
|
267
|
+
else if (message.includes("validation") || message.includes("invalid")) {
|
|
268
|
+
type = ErrorType.VALIDATION_ERROR;
|
|
269
|
+
suggestions.push("Verify your input data");
|
|
270
|
+
}
|
|
271
|
+
return new MyContextError({
|
|
272
|
+
type,
|
|
273
|
+
severity,
|
|
274
|
+
message: error.message,
|
|
275
|
+
timestamp,
|
|
276
|
+
source: context.operation,
|
|
277
|
+
details: {
|
|
278
|
+
stack: error.stack,
|
|
279
|
+
name: error.name,
|
|
280
|
+
},
|
|
281
|
+
retryable,
|
|
282
|
+
suggestions,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Handle object-type errors (API responses, etc.)
|
|
287
|
+
*/
|
|
288
|
+
handleObjectError(error, context, timestamp) {
|
|
289
|
+
const message = String(error.message || error.error || "Unknown error");
|
|
290
|
+
const code = error.code || error.status;
|
|
291
|
+
let type = ErrorType.API_ERROR;
|
|
292
|
+
let severity = ErrorSeverity.MEDIUM;
|
|
293
|
+
let retryable = false;
|
|
294
|
+
if (typeof code === "number") {
|
|
295
|
+
if (code >= 500) {
|
|
296
|
+
severity = ErrorSeverity.HIGH;
|
|
297
|
+
retryable = true;
|
|
298
|
+
}
|
|
299
|
+
else if (code === 429) {
|
|
300
|
+
type = ErrorType.RATE_LIMIT_ERROR;
|
|
301
|
+
retryable = true;
|
|
302
|
+
}
|
|
303
|
+
else if (code === 401 || code === 403) {
|
|
304
|
+
type = ErrorType.AUTHENTICATION_ERROR;
|
|
305
|
+
severity = ErrorSeverity.HIGH;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return new MyContextError({
|
|
309
|
+
type,
|
|
310
|
+
severity,
|
|
311
|
+
message,
|
|
312
|
+
code: typeof code === "string" || typeof code === "number" ? code : undefined,
|
|
313
|
+
timestamp,
|
|
314
|
+
source: context.operation,
|
|
315
|
+
details: error,
|
|
316
|
+
retryable,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
exports.ErrorHandler = ErrorHandler;
|
|
321
|
+
// Export singleton instance
|
|
322
|
+
exports.errorHandler = ErrorHandler.getInstance();
|
|
323
|
+
// Utility functions for common error scenarios
|
|
324
|
+
const createAIProviderError = (error, provider, operation) => exports.errorHandler.handleAIProviderError(error, provider, operation);
|
|
325
|
+
exports.createAIProviderError = createAIProviderError;
|
|
326
|
+
const createNetworkError = (error, context) => exports.errorHandler.handleNetworkError(error, context);
|
|
327
|
+
exports.createNetworkError = createNetworkError;
|
|
328
|
+
const createFileSystemError = (error, filePath) => exports.errorHandler.handleFileSystemError(error, filePath);
|
|
329
|
+
exports.createFileSystemError = createFileSystemError;
|
|
330
|
+
const createError = (error, context, type) => exports.errorHandler.createError(error, context, type);
|
|
331
|
+
exports.createError = createError;
|
|
332
|
+
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../../src/utils/errorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ProjectConfig } from "../types";
|
|
2
|
+
export declare class FileSystemManager {
|
|
3
|
+
private readonly mycontextDir;
|
|
4
|
+
private readonly contextDir;
|
|
5
|
+
/**
|
|
6
|
+
* Initialize a new project directory structure
|
|
7
|
+
*/
|
|
8
|
+
initializeProject(projectName: string, description: string, workingDir: string): Promise<ProjectConfig>;
|
|
9
|
+
/**
|
|
10
|
+
* Read a file from the filesystem
|
|
11
|
+
*/
|
|
12
|
+
readFile(filePath: string): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Write a file to the filesystem
|
|
15
|
+
*/
|
|
16
|
+
writeFile(filePath: string, content: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a file or directory exists
|
|
19
|
+
*/
|
|
20
|
+
exists(filePath: string): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Ensure a directory exists (create if it doesn't)
|
|
23
|
+
*/
|
|
24
|
+
ensureDir(dirPath: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a directory is a MyContext project
|
|
27
|
+
*/
|
|
28
|
+
isMyContextProject(dir: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Get project configuration
|
|
31
|
+
*/
|
|
32
|
+
getProjectConfig(projectPath: string): Promise<ProjectConfig | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Update project configuration
|
|
35
|
+
*/
|
|
36
|
+
updateProjectConfig(projectPath: string, updates: Partial<ProjectConfig>): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* List context files
|
|
39
|
+
*/
|
|
40
|
+
listContextFiles(projectPath: string): Promise<string[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a PRD template
|
|
43
|
+
*/
|
|
44
|
+
private createPRDTemplate;
|
|
45
|
+
/**
|
|
46
|
+
* Create atomic file operations
|
|
47
|
+
*/
|
|
48
|
+
atomicWrite(filePath: string, content: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Backup a file
|
|
51
|
+
*/
|
|
52
|
+
backupFile(filePath: string): Promise<string>;
|
|
53
|
+
/**
|
|
54
|
+
* Restore a file from backup
|
|
55
|
+
*/
|
|
56
|
+
restoreFile(backupPath: string, targetPath: string): Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=fileSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.d.ts","sourceRoot":"","sources":["../../../../src/utils/fileSystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAgB,MAAM,UAAU,CAAC;AAEvD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAoCzB;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvD;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAa1E;;OAEG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa9D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnE;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnD;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzE"}
|
|
@@ -0,0 +1,230 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.FileSystemManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs-extra"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const uuid_1 = require("uuid");
|
|
40
|
+
class FileSystemManager {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.mycontextDir = ".mycontext";
|
|
43
|
+
this.contextDir = "context";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Initialize a new project directory structure
|
|
47
|
+
*/
|
|
48
|
+
async initializeProject(projectName, description, workingDir) {
|
|
49
|
+
const projectId = (0, uuid_1.v4)();
|
|
50
|
+
const timestamp = new Date().toISOString();
|
|
51
|
+
const config = {
|
|
52
|
+
id: projectId,
|
|
53
|
+
name: projectName,
|
|
54
|
+
description,
|
|
55
|
+
createdAt: timestamp,
|
|
56
|
+
updatedAt: timestamp,
|
|
57
|
+
contextPath: path.join(this.contextDir, projectId),
|
|
58
|
+
version: "0.1.0",
|
|
59
|
+
status: "initialized",
|
|
60
|
+
};
|
|
61
|
+
// Create directory structure
|
|
62
|
+
const projectPath = path.join(workingDir, projectName);
|
|
63
|
+
const contextPath = path.join(projectPath, this.contextDir);
|
|
64
|
+
const mycontextPath = path.join(projectPath, this.mycontextDir);
|
|
65
|
+
await fs.ensureDir(projectPath);
|
|
66
|
+
await fs.ensureDir(contextPath);
|
|
67
|
+
await fs.ensureDir(mycontextPath);
|
|
68
|
+
// Write config file
|
|
69
|
+
await fs.writeJson(path.join(mycontextPath, "config.json"), config, {
|
|
70
|
+
spaces: 2,
|
|
71
|
+
});
|
|
72
|
+
// Create initial PRD template
|
|
73
|
+
const prdTemplate = this.createPRDTemplate(projectName, description);
|
|
74
|
+
await fs.writeFile(path.join(contextPath, "prd.md"), prdTemplate);
|
|
75
|
+
return config;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Read a file from the filesystem
|
|
79
|
+
*/
|
|
80
|
+
async readFile(filePath) {
|
|
81
|
+
return await fs.readFile(filePath, "utf-8");
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Write a file to the filesystem
|
|
85
|
+
*/
|
|
86
|
+
async writeFile(filePath, content) {
|
|
87
|
+
// Ensure directory exists
|
|
88
|
+
const dir = path.dirname(filePath);
|
|
89
|
+
await fs.ensureDir(dir);
|
|
90
|
+
await fs.writeFile(filePath, content, "utf-8");
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if a file or directory exists
|
|
94
|
+
*/
|
|
95
|
+
async exists(filePath) {
|
|
96
|
+
return await fs.pathExists(filePath);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Ensure a directory exists (create if it doesn't)
|
|
100
|
+
*/
|
|
101
|
+
async ensureDir(dirPath) {
|
|
102
|
+
await fs.ensureDir(dirPath);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if a directory is a MyContext project
|
|
106
|
+
*/
|
|
107
|
+
async isMyContextProject(dir) {
|
|
108
|
+
try {
|
|
109
|
+
const configPath = path.join(dir, this.mycontextDir, "config.json");
|
|
110
|
+
await fs.access(configPath);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get project configuration
|
|
119
|
+
*/
|
|
120
|
+
async getProjectConfig(projectPath) {
|
|
121
|
+
try {
|
|
122
|
+
const configPath = path.join(projectPath, this.mycontextDir, "config.json");
|
|
123
|
+
return await fs.readJson(configPath);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Update project configuration
|
|
131
|
+
*/
|
|
132
|
+
async updateProjectConfig(projectPath, updates) {
|
|
133
|
+
const configPath = path.join(projectPath, this.mycontextDir, "config.json");
|
|
134
|
+
const config = await this.getProjectConfig(projectPath);
|
|
135
|
+
if (!config) {
|
|
136
|
+
throw new Error("Project configuration not found");
|
|
137
|
+
}
|
|
138
|
+
const updatedConfig = {
|
|
139
|
+
...config,
|
|
140
|
+
...updates,
|
|
141
|
+
updatedAt: new Date().toISOString(),
|
|
142
|
+
};
|
|
143
|
+
await fs.writeJson(configPath, updatedConfig, { spaces: 2 });
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* List context files
|
|
147
|
+
*/
|
|
148
|
+
async listContextFiles(projectPath) {
|
|
149
|
+
try {
|
|
150
|
+
const contextPath = path.join(projectPath, this.contextDir);
|
|
151
|
+
const files = await fs.readdir(contextPath);
|
|
152
|
+
return files.filter((file) => file.endsWith(".md") || file.endsWith(".ts") || file.endsWith(".json"));
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a PRD template
|
|
160
|
+
*/
|
|
161
|
+
createPRDTemplate(projectName, description) {
|
|
162
|
+
return `# Product Requirements Document
|
|
163
|
+
|
|
164
|
+
## Project Overview
|
|
165
|
+
**Project Name:** ${projectName}
|
|
166
|
+
**Description:** ${description}
|
|
167
|
+
|
|
168
|
+
## Core Features
|
|
169
|
+
- [Feature 1]: Brief description
|
|
170
|
+
- [Feature 2]: Brief description
|
|
171
|
+
- [Feature 3]: Brief description
|
|
172
|
+
|
|
173
|
+
## User Stories
|
|
174
|
+
- As a user, I want to [action] so that [benefit]
|
|
175
|
+
- As an admin, I need to [action] so that [benefit]
|
|
176
|
+
|
|
177
|
+
## Technical Requirements
|
|
178
|
+
- Technology Stack: [List technologies]
|
|
179
|
+
- Database: [Database choice]
|
|
180
|
+
- Authentication: [Auth method]
|
|
181
|
+
|
|
182
|
+
## Acceptance Criteria
|
|
183
|
+
- [ ] Feature 1 works correctly
|
|
184
|
+
- [ ] Feature 2 is responsive
|
|
185
|
+
- [ ] Feature 3 is accessible
|
|
186
|
+
|
|
187
|
+
## Notes
|
|
188
|
+
- Add more details as needed
|
|
189
|
+
- Update this document as requirements evolve
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create atomic file operations
|
|
194
|
+
*/
|
|
195
|
+
async atomicWrite(filePath, content) {
|
|
196
|
+
const tempPath = `${filePath}.tmp`;
|
|
197
|
+
try {
|
|
198
|
+
// Write to temporary file first
|
|
199
|
+
await this.writeFile(tempPath, content);
|
|
200
|
+
// Atomic move
|
|
201
|
+
await fs.move(tempPath, filePath, { overwrite: true });
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
// Clean up temp file if it exists
|
|
205
|
+
try {
|
|
206
|
+
await fs.remove(tempPath);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// Ignore cleanup errors
|
|
210
|
+
}
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Backup a file
|
|
216
|
+
*/
|
|
217
|
+
async backupFile(filePath) {
|
|
218
|
+
const backupPath = `${filePath}.backup.${Date.now()}`;
|
|
219
|
+
await fs.copy(filePath, backupPath);
|
|
220
|
+
return backupPath;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Restore a file from backup
|
|
224
|
+
*/
|
|
225
|
+
async restoreFile(backupPath, targetPath) {
|
|
226
|
+
await fs.copy(backupPath, targetPath);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.FileSystemManager = FileSystemManager;
|
|
230
|
+
//# sourceMappingURL=fileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../../../src/utils/fileSystem.ts"],"names":[],"mappings":"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"}
|