mycontext-cli 2.0.27 → 2.0.28
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 +35 -369
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +67 -14
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +80 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.js +1406 -0
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts +67 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js +564 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js.map +1 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts +10 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.js +172 -12
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
- package/dist/agents/implementations/RoleBasedGenerator.d.ts +52 -0
- package/dist/agents/implementations/RoleBasedGenerator.d.ts.map +1 -0
- package/dist/agents/implementations/RoleBasedGenerator.js +370 -0
- package/dist/agents/implementations/RoleBasedGenerator.js.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +48 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -0
- package/dist/clients/ClaudeSDKClient.js +158 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -0
- package/dist/clients/MyContextAIClient.d.ts +73 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -0
- package/dist/clients/MyContextAIClient.js +280 -0
- package/dist/clients/MyContextAIClient.js.map +1 -0
- package/dist/clients/ProviderChain.d.ts +87 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -0
- package/dist/clients/ProviderChain.js +246 -0
- package/dist/clients/ProviderChain.js.map +1 -0
- package/dist/clients/XAIClient.d.ts +48 -0
- package/dist/clients/XAIClient.d.ts.map +1 -0
- package/dist/clients/XAIClient.js +152 -0
- package/dist/clients/XAIClient.js.map +1 -0
- package/dist/commands/assemble-features.d.ts +40 -0
- package/dist/commands/assemble-features.d.ts.map +1 -0
- package/dist/commands/assemble-features.js +383 -0
- package/dist/commands/assemble-features.js.map +1 -0
- package/dist/commands/clone-starter.d.ts +32 -0
- package/dist/commands/clone-starter.d.ts.map +1 -0
- package/dist/commands/clone-starter.js +218 -0
- package/dist/commands/clone-starter.js.map +1 -0
- package/dist/commands/design-analyze.d.ts +46 -0
- package/dist/commands/design-analyze.d.ts.map +1 -0
- package/dist/commands/design-analyze.js +232 -0
- package/dist/commands/design-analyze.js.map +1 -0
- package/dist/commands/generate-components.d.ts +1 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +42 -9
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +34 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/setup-complete.d.ts.map +1 -1
- package/dist/commands/setup-complete.js +38 -2
- package/dist/commands/setup-complete.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +86 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config/intent-dictionary.json +3700 -0
- package/dist/package.json +3 -1
- package/dist/services/IntentEnricher.d.ts +61 -0
- package/dist/services/IntentEnricher.d.ts.map +1 -0
- package/dist/services/IntentEnricher.js +318 -0
- package/dist/services/IntentEnricher.js.map +1 -0
- package/dist/services/IntentValidator.d.ts +114 -0
- package/dist/services/IntentValidator.d.ts.map +1 -0
- package/dist/services/IntentValidator.js +680 -0
- package/dist/services/IntentValidator.js.map +1 -0
- package/dist/types/design-pipeline.d.ts +300 -0
- package/dist/types/design-pipeline.d.ts.map +1 -0
- package/dist/types/design-pipeline.js +9 -0
- package/dist/types/design-pipeline.js.map +1 -0
- package/dist/types/feature-bundle.d.ts +239 -0
- package/dist/types/feature-bundle.d.ts.map +1 -0
- package/dist/types/feature-bundle.js +9 -0
- package/dist/types/feature-bundle.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/intent-dictionary.d.ts +525 -0
- package/dist/types/intent-dictionary.d.ts.map +1 -0
- package/dist/types/intent-dictionary.js +11 -0
- package/dist/types/intent-dictionary.js.map +1 -0
- package/dist/types/role-permissions.d.ts +167 -0
- package/dist/types/role-permissions.d.ts.map +1 -0
- package/dist/types/role-permissions.js +9 -0
- package/dist/types/role-permissions.js.map +1 -0
- package/dist/utils/contextEnricher.d.ts +41 -0
- package/dist/utils/contextEnricher.d.ts.map +1 -0
- package/dist/utils/contextEnricher.js +327 -0
- package/dist/utils/contextEnricher.js.map +1 -0
- package/dist/utils/designFallbacks.d.ts +48 -0
- package/dist/utils/designFallbacks.d.ts.map +1 -0
- package/dist/utils/designFallbacks.js +885 -0
- package/dist/utils/designFallbacks.js.map +1 -0
- package/dist/utils/designManifestManager.d.ts +89 -0
- package/dist/utils/designManifestManager.d.ts.map +1 -0
- package/dist/utils/designManifestManager.js +533 -0
- package/dist/utils/designManifestManager.js.map +1 -0
- package/dist/utils/designPipelineStateManager.d.ts +63 -0
- package/dist/utils/designPipelineStateManager.d.ts.map +1 -0
- package/dist/utils/designPipelineStateManager.js +174 -0
- package/dist/utils/designPipelineStateManager.js.map +1 -0
- package/dist/utils/envExampleGenerator.d.ts.map +1 -1
- package/dist/utils/envExampleGenerator.js +35 -171
- package/dist/utils/envExampleGenerator.js.map +1 -1
- package/dist/utils/featureBundleManager.d.ts +90 -0
- package/dist/utils/featureBundleManager.d.ts.map +1 -0
- package/dist/utils/featureBundleManager.js +340 -0
- package/dist/utils/featureBundleManager.js.map +1 -0
- package/dist/utils/githubCloner.d.ts +93 -0
- package/dist/utils/githubCloner.d.ts.map +1 -0
- package/dist/utils/githubCloner.js +305 -0
- package/dist/utils/githubCloner.js.map +1 -0
- package/dist/utils/rolePermissionMapper.d.ts +89 -0
- package/dist/utils/rolePermissionMapper.d.ts.map +1 -0
- package/dist/utils/rolePermissionMapper.js +337 -0
- package/dist/utils/rolePermissionMapper.js.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts +76 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.js +344 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Feature Bundle Manager
|
|
4
|
+
*
|
|
5
|
+
* Manages feature bundles including loading, saving, validation,
|
|
6
|
+
* and operations for the Feature Assembly system.
|
|
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.FeatureBundleManager = void 0;
|
|
43
|
+
const fs = __importStar(require("fs/promises"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
class FeatureBundleManager {
|
|
46
|
+
constructor(projectPath) {
|
|
47
|
+
this.projectPath = projectPath;
|
|
48
|
+
this.bundlesDir = path.join(projectPath, ".mycontext", "feature-bundles");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Save a feature bundle to disk
|
|
52
|
+
*/
|
|
53
|
+
async saveBundle(bundle, role) {
|
|
54
|
+
const roleDir = role ? path.join(this.bundlesDir, role) : this.bundlesDir;
|
|
55
|
+
await fs.mkdir(roleDir, { recursive: true });
|
|
56
|
+
const bundleFile = path.join(roleDir, `${bundle.name}.json`);
|
|
57
|
+
await fs.writeFile(bundleFile, JSON.stringify(bundle, null, 2));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load a feature bundle from disk
|
|
61
|
+
*/
|
|
62
|
+
async loadBundle(bundleName, role) {
|
|
63
|
+
const roleDir = role ? path.join(this.bundlesDir, role) : this.bundlesDir;
|
|
64
|
+
const bundleFile = path.join(roleDir, `${bundleName}.json`);
|
|
65
|
+
try {
|
|
66
|
+
const content = await fs.readFile(bundleFile, "utf-8");
|
|
67
|
+
return JSON.parse(content);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Load all feature bundles for a role
|
|
75
|
+
*/
|
|
76
|
+
async loadBundlesForRole(role) {
|
|
77
|
+
const roleDir = path.join(this.bundlesDir, role);
|
|
78
|
+
try {
|
|
79
|
+
const files = await fs.readdir(roleDir);
|
|
80
|
+
const bundles = [];
|
|
81
|
+
for (const file of files) {
|
|
82
|
+
if (file.endsWith(".json") && file !== "summary.json") {
|
|
83
|
+
const bundleName = file.replace(".json", "");
|
|
84
|
+
const bundle = await this.loadBundle(bundleName, role);
|
|
85
|
+
if (bundle) {
|
|
86
|
+
bundles.push(bundle);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return bundles;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Load all feature bundles across all roles
|
|
98
|
+
*/
|
|
99
|
+
async loadAllBundles() {
|
|
100
|
+
const roleBundles = new Map();
|
|
101
|
+
const roles = ["admin", "user", "guest"];
|
|
102
|
+
for (const role of roles) {
|
|
103
|
+
const bundles = await this.loadBundlesForRole(role);
|
|
104
|
+
if (bundles.length > 0) {
|
|
105
|
+
roleBundles.set(role, bundles);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return roleBundles;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Delete a feature bundle
|
|
112
|
+
*/
|
|
113
|
+
async deleteBundle(bundleName, role) {
|
|
114
|
+
const roleDir = role ? path.join(this.bundlesDir, role) : this.bundlesDir;
|
|
115
|
+
const bundleFile = path.join(roleDir, `${bundleName}.json`);
|
|
116
|
+
try {
|
|
117
|
+
await fs.unlink(bundleFile);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// File doesn't exist, ignore
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate a feature bundle
|
|
125
|
+
*/
|
|
126
|
+
validateBundle(bundle) {
|
|
127
|
+
const errors = [];
|
|
128
|
+
// Required fields
|
|
129
|
+
if (!bundle.name)
|
|
130
|
+
errors.push("Bundle name is required");
|
|
131
|
+
if (!bundle.description)
|
|
132
|
+
errors.push("Bundle description is required");
|
|
133
|
+
if (!bundle.role)
|
|
134
|
+
errors.push("Bundle role is required");
|
|
135
|
+
if (!Array.isArray(bundle.components))
|
|
136
|
+
errors.push("Components must be an array");
|
|
137
|
+
if (!Array.isArray(bundle.actions))
|
|
138
|
+
errors.push("Actions must be an array");
|
|
139
|
+
if (!Array.isArray(bundle.hooks))
|
|
140
|
+
errors.push("Hooks must be an array");
|
|
141
|
+
if (!Array.isArray(bundle.routes))
|
|
142
|
+
errors.push("Routes must be an array");
|
|
143
|
+
if (!bundle.database)
|
|
144
|
+
errors.push("Database configuration is required");
|
|
145
|
+
if (!Array.isArray(bundle.permissions))
|
|
146
|
+
errors.push("Permissions must be an array");
|
|
147
|
+
if (!bundle.metadata)
|
|
148
|
+
errors.push("Metadata is required");
|
|
149
|
+
// Validate role
|
|
150
|
+
const validRoles = ["admin", "user", "guest"];
|
|
151
|
+
if (!validRoles.includes(bundle.role)) {
|
|
152
|
+
errors.push(`Invalid role: ${bundle.role}. Must be one of: ${validRoles.join(", ")}`);
|
|
153
|
+
}
|
|
154
|
+
// Validate actions
|
|
155
|
+
bundle.actions.forEach((action, index) => {
|
|
156
|
+
if (!action.name)
|
|
157
|
+
errors.push(`Action ${index}: name is required`);
|
|
158
|
+
if (!action.description)
|
|
159
|
+
errors.push(`Action ${index}: description is required`);
|
|
160
|
+
if (!action.file)
|
|
161
|
+
errors.push(`Action ${index}: file is required`);
|
|
162
|
+
if (!action.function)
|
|
163
|
+
errors.push(`Action ${index}: function is required`);
|
|
164
|
+
if (!action.returnType)
|
|
165
|
+
errors.push(`Action ${index}: returnType is required`);
|
|
166
|
+
if (!Array.isArray(action.permissions))
|
|
167
|
+
errors.push(`Action ${index}: permissions must be an array`);
|
|
168
|
+
});
|
|
169
|
+
// Validate hooks
|
|
170
|
+
bundle.hooks.forEach((hook, index) => {
|
|
171
|
+
if (!hook.name)
|
|
172
|
+
errors.push(`Hook ${index}: name is required`);
|
|
173
|
+
if (!hook.description)
|
|
174
|
+
errors.push(`Hook ${index}: description is required`);
|
|
175
|
+
if (!hook.file)
|
|
176
|
+
errors.push(`Hook ${index}: file is required`);
|
|
177
|
+
if (!hook.function)
|
|
178
|
+
errors.push(`Hook ${index}: function is required`);
|
|
179
|
+
if (!hook.returnType)
|
|
180
|
+
errors.push(`Hook ${index}: returnType is required`);
|
|
181
|
+
if (!Array.isArray(hook.dependencies))
|
|
182
|
+
errors.push(`Hook ${index}: dependencies must be an array`);
|
|
183
|
+
});
|
|
184
|
+
// Validate routes
|
|
185
|
+
bundle.routes.forEach((route, index) => {
|
|
186
|
+
if (!route.path)
|
|
187
|
+
errors.push(`Route ${index}: path is required`);
|
|
188
|
+
if (!route.method)
|
|
189
|
+
errors.push(`Route ${index}: method is required`);
|
|
190
|
+
if (!route.description)
|
|
191
|
+
errors.push(`Route ${index}: description is required`);
|
|
192
|
+
if (!route.file)
|
|
193
|
+
errors.push(`Route ${index}: file is required`);
|
|
194
|
+
if (!route.function)
|
|
195
|
+
errors.push(`Route ${index}: function is required`);
|
|
196
|
+
if (!route.responseType)
|
|
197
|
+
errors.push(`Route ${index}: responseType is required`);
|
|
198
|
+
if (!Array.isArray(route.permissions))
|
|
199
|
+
errors.push(`Route ${index}: permissions must be an array`);
|
|
200
|
+
});
|
|
201
|
+
// Validate permissions
|
|
202
|
+
bundle.permissions.forEach((permission, index) => {
|
|
203
|
+
if (!permission.id)
|
|
204
|
+
errors.push(`Permission ${index}: id is required`);
|
|
205
|
+
if (!permission.resource)
|
|
206
|
+
errors.push(`Permission ${index}: resource is required`);
|
|
207
|
+
if (!permission.action)
|
|
208
|
+
errors.push(`Permission ${index}: action is required`);
|
|
209
|
+
});
|
|
210
|
+
return {
|
|
211
|
+
valid: errors.length === 0,
|
|
212
|
+
errors,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get bundle summary for a role
|
|
217
|
+
*/
|
|
218
|
+
async getBundleSummary(role) {
|
|
219
|
+
const summaryFile = path.join(this.bundlesDir, role, "summary.json");
|
|
220
|
+
try {
|
|
221
|
+
const content = await fs.readFile(summaryFile, "utf-8");
|
|
222
|
+
return JSON.parse(content);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Update bundle summary for a role
|
|
230
|
+
*/
|
|
231
|
+
async updateBundleSummary(role, bundles) {
|
|
232
|
+
const roleDir = path.join(this.bundlesDir, role);
|
|
233
|
+
await fs.mkdir(roleDir, { recursive: true });
|
|
234
|
+
const summary = {
|
|
235
|
+
role,
|
|
236
|
+
bundles: bundles.map((bundle) => ({
|
|
237
|
+
name: bundle.name,
|
|
238
|
+
description: bundle.description,
|
|
239
|
+
components: bundle.components.length,
|
|
240
|
+
actions: bundle.actions.length,
|
|
241
|
+
hooks: bundle.hooks.length,
|
|
242
|
+
routes: bundle.routes.length,
|
|
243
|
+
})),
|
|
244
|
+
metadata: {
|
|
245
|
+
totalBundles: bundles.length,
|
|
246
|
+
totalComponents: bundles.reduce((sum, bundle) => sum + bundle.components.length, 0),
|
|
247
|
+
totalActions: bundles.reduce((sum, bundle) => sum + bundle.actions.length, 0),
|
|
248
|
+
totalHooks: bundles.reduce((sum, bundle) => sum + bundle.hooks.length, 0),
|
|
249
|
+
totalRoutes: bundles.reduce((sum, bundle) => sum + bundle.routes.length, 0),
|
|
250
|
+
lastUpdated: new Date().toISOString(),
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
const summaryFile = path.join(roleDir, "summary.json");
|
|
254
|
+
await fs.writeFile(summaryFile, JSON.stringify(summary, null, 2));
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Search bundles by name or description
|
|
258
|
+
*/
|
|
259
|
+
async searchBundles(query, role) {
|
|
260
|
+
const bundles = role
|
|
261
|
+
? await this.loadBundlesForRole(role)
|
|
262
|
+
: Array.from((await this.loadAllBundles()).values()).flat();
|
|
263
|
+
const lowerQuery = query.toLowerCase();
|
|
264
|
+
return bundles.filter((bundle) => bundle.name.toLowerCase().includes(lowerQuery) ||
|
|
265
|
+
bundle.description.toLowerCase().includes(lowerQuery));
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get bundles by category
|
|
269
|
+
*/
|
|
270
|
+
async getBundlesByCategory(category, role) {
|
|
271
|
+
const bundles = role
|
|
272
|
+
? await this.loadBundlesForRole(role)
|
|
273
|
+
: Array.from((await this.loadAllBundles()).values()).flat();
|
|
274
|
+
return bundles.filter((bundle) => bundle.metadata.dependencies.includes(category) ||
|
|
275
|
+
bundle.name.toLowerCase().includes(category));
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Export bundles to a file
|
|
279
|
+
*/
|
|
280
|
+
async exportBundles(outputPath, role) {
|
|
281
|
+
const bundles = role
|
|
282
|
+
? await this.loadBundlesForRole(role)
|
|
283
|
+
: Array.from((await this.loadAllBundles()).values()).flat();
|
|
284
|
+
const exportData = {
|
|
285
|
+
exportedAt: new Date().toISOString(),
|
|
286
|
+
role: role || "all",
|
|
287
|
+
bundles,
|
|
288
|
+
};
|
|
289
|
+
await fs.writeFile(outputPath, JSON.stringify(exportData, null, 2));
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Import bundles from a file
|
|
293
|
+
*/
|
|
294
|
+
async importBundles(inputPath, role) {
|
|
295
|
+
const content = await fs.readFile(inputPath, "utf-8");
|
|
296
|
+
const importData = JSON.parse(content);
|
|
297
|
+
const bundles = importData.bundles || [];
|
|
298
|
+
const targetRole = role || importData.role || "admin";
|
|
299
|
+
// Validate and save each bundle
|
|
300
|
+
const validBundles = [];
|
|
301
|
+
for (const bundle of bundles) {
|
|
302
|
+
const validation = this.validateBundle(bundle);
|
|
303
|
+
if (validation.valid) {
|
|
304
|
+
bundle.role = targetRole;
|
|
305
|
+
await this.saveBundle(bundle, targetRole);
|
|
306
|
+
validBundles.push(bundle);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
console.warn(`Skipping invalid bundle ${bundle.name}: ${validation.errors.join(", ")}`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return validBundles;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Clean up old or invalid bundles
|
|
316
|
+
*/
|
|
317
|
+
async cleanupBundles() {
|
|
318
|
+
const errors = [];
|
|
319
|
+
let cleaned = 0;
|
|
320
|
+
try {
|
|
321
|
+
const allBundles = await this.loadAllBundles();
|
|
322
|
+
for (const [role, bundles] of allBundles) {
|
|
323
|
+
for (const bundle of bundles) {
|
|
324
|
+
const validation = this.validateBundle(bundle);
|
|
325
|
+
if (!validation.valid) {
|
|
326
|
+
await this.deleteBundle(bundle.name, role);
|
|
327
|
+
cleaned++;
|
|
328
|
+
errors.push(`Deleted invalid bundle ${bundle.name} for role ${role}: ${validation.errors.join(", ")}`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
errors.push(`Cleanup failed: ${error}`);
|
|
335
|
+
}
|
|
336
|
+
return { cleaned, errors };
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
exports.FeatureBundleManager = FeatureBundleManager;
|
|
340
|
+
//# sourceMappingURL=featureBundleManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureBundleManager.js","sourceRoot":"","sources":["../../src/utils/featureBundleManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Cloner Utility
|
|
3
|
+
*
|
|
4
|
+
* Handles cloning GitHub repositories for admin starter templates
|
|
5
|
+
* and other project templates.
|
|
6
|
+
*/
|
|
7
|
+
export interface CloneOptions {
|
|
8
|
+
url: string;
|
|
9
|
+
outputPath: string;
|
|
10
|
+
branch?: string;
|
|
11
|
+
depth?: number;
|
|
12
|
+
removeGit?: boolean;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CloneResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
outputPath: string;
|
|
18
|
+
error?: string;
|
|
19
|
+
metadata?: {
|
|
20
|
+
repository: string;
|
|
21
|
+
branch: string;
|
|
22
|
+
commitHash: string;
|
|
23
|
+
clonedAt: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare class GitHubCloner {
|
|
27
|
+
/**
|
|
28
|
+
* Clone a GitHub repository
|
|
29
|
+
*/
|
|
30
|
+
static clone(options: CloneOptions): Promise<CloneResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Clone admin starter repository
|
|
33
|
+
*/
|
|
34
|
+
static cloneAdminStarter(outputPath: string, options?: Partial<CloneOptions>): Promise<CloneResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Clone a specific template repository
|
|
37
|
+
*/
|
|
38
|
+
static cloneTemplate(templateName: string, outputPath: string, options?: Partial<CloneOptions>): Promise<CloneResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a repository exists and is accessible
|
|
41
|
+
*/
|
|
42
|
+
static checkRepository(url: string): Promise<{
|
|
43
|
+
exists: boolean;
|
|
44
|
+
error?: string;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Get available branches for a repository
|
|
48
|
+
*/
|
|
49
|
+
static getBranches(url: string): Promise<{
|
|
50
|
+
branches: string[];
|
|
51
|
+
error?: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Get the latest commit hash for a repository
|
|
55
|
+
*/
|
|
56
|
+
static getLatestCommit(url: string, branch?: string): Promise<{
|
|
57
|
+
commitHash: string;
|
|
58
|
+
error?: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Get commit hash for a cloned repository
|
|
62
|
+
*/
|
|
63
|
+
private static getCommitHash;
|
|
64
|
+
/**
|
|
65
|
+
* Extract repository name from URL
|
|
66
|
+
*/
|
|
67
|
+
private static extractRepositoryName;
|
|
68
|
+
/**
|
|
69
|
+
* Clone with retry logic
|
|
70
|
+
*/
|
|
71
|
+
static cloneWithRetry(options: CloneOptions, maxRetries?: number): Promise<CloneResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Clone and setup project
|
|
74
|
+
*/
|
|
75
|
+
static cloneAndSetup(options: CloneOptions & {
|
|
76
|
+
installDependencies?: boolean;
|
|
77
|
+
runSetup?: boolean;
|
|
78
|
+
setupCommands?: string[];
|
|
79
|
+
}): Promise<CloneResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Install dependencies in cloned repository
|
|
82
|
+
*/
|
|
83
|
+
private static installDependencies;
|
|
84
|
+
/**
|
|
85
|
+
* Run setup commands in cloned repository
|
|
86
|
+
*/
|
|
87
|
+
private static runSetupCommands;
|
|
88
|
+
/**
|
|
89
|
+
* Clean up cloned repository
|
|
90
|
+
*/
|
|
91
|
+
static cleanup(outputPath: string): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=githubCloner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"githubCloner.d.ts","sourceRoot":"","sources":["../../src/utils/githubCloner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,YAAY;IACvB;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAgE/D;;OAEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAClC,OAAO,CAAC,WAAW,CAAC;IAavB;;OAEG;WACU,aAAa,CACxB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAClC,OAAO,CAAC,WAAW,CAAC;IAevB;;OAEG;WACU,eAAe,CAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAa/C;;OAEG;WACU,WAAW,CACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBlD;;OAEG;WACU,eAAe,CAC1B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAe,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAelD;;OAEG;mBACkB,aAAa;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC;;OAEG;WACU,cAAc,CACzB,OAAO,EAAE,YAAY,EACrB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,WAAW,CAAC;IA+BvB;;OAEG;WACU,aAAa,CACxB,OAAO,EAAE,YAAY,GAAG;QACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GACA,OAAO,CAAC,WAAW,CAAC;IAmCvB;;OAEG;mBACkB,mBAAmB;IAaxC;;OAEG;mBACkB,gBAAgB;IAarC;;OAEG;WACU,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOxD"}
|