mycontext-cli 2.0.26 → 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 +36 -355
- 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,564 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Feature Assembly Agent
|
|
4
|
+
*
|
|
5
|
+
* Combines generated components into complete working features
|
|
6
|
+
* with actions, hooks, routes, and role-based permissions.
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.FeatureAssemblyAgent = void 0;
|
|
46
|
+
const hybridAIClient_1 = require("../../utils/hybridAIClient");
|
|
47
|
+
const fs = __importStar(require("fs/promises"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
class FeatureAssemblyAgent {
|
|
51
|
+
constructor(projectPath) {
|
|
52
|
+
this.name = "FeatureAssemblyAgent";
|
|
53
|
+
this.description = "Combines generated components into complete working features";
|
|
54
|
+
this.personality = "systematic and thorough";
|
|
55
|
+
this.llmProvider = "hybrid";
|
|
56
|
+
this.expertise = [
|
|
57
|
+
"feature-assembly",
|
|
58
|
+
"role-based-access",
|
|
59
|
+
"component-integration",
|
|
60
|
+
];
|
|
61
|
+
this.projectPath = projectPath;
|
|
62
|
+
this.aiClient = new hybridAIClient_1.HybridAIClient();
|
|
63
|
+
}
|
|
64
|
+
async run(context) {
|
|
65
|
+
const startTime = Date.now();
|
|
66
|
+
console.log(chalk_1.default.cyan("🔧 Feature Assembly Agent starting..."));
|
|
67
|
+
try {
|
|
68
|
+
// Step 1: Analyze components and group into features
|
|
69
|
+
console.log(chalk_1.default.gray(" 📋 Analyzing components and grouping into features..."));
|
|
70
|
+
const featureGroups = await this.analyzeAndGroupComponents(context.components, context.contextFiles);
|
|
71
|
+
// Step 2: Generate feature bundles for each group
|
|
72
|
+
console.log(chalk_1.default.gray(" 🎯 Generating feature bundles..."));
|
|
73
|
+
const features = [];
|
|
74
|
+
const errors = [];
|
|
75
|
+
const warnings = [];
|
|
76
|
+
for (const group of featureGroups) {
|
|
77
|
+
try {
|
|
78
|
+
const feature = await this.generateFeatureBundle(group, context);
|
|
79
|
+
features.push(feature);
|
|
80
|
+
console.log(chalk_1.default.green(` ✓ Generated feature: ${feature.name}`));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const errorMsg = `Failed to generate feature ${group.name}: ${error}`;
|
|
84
|
+
errors.push(errorMsg);
|
|
85
|
+
console.log(chalk_1.default.red(` ✗ ${errorMsg}`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Step 3: Apply role-based permissions
|
|
89
|
+
console.log(chalk_1.default.gray(" 🔐 Applying role-based permissions..."));
|
|
90
|
+
const roleBasedFeatures = await this.applyRoleBasedPermissions(features, context.targetRole);
|
|
91
|
+
// Step 4: Generate supporting files (actions, hooks, routes)
|
|
92
|
+
console.log(chalk_1.default.gray(" 📁 Generating supporting files..."));
|
|
93
|
+
await this.generateSupportingFiles(roleBasedFeatures, context);
|
|
94
|
+
// Step 5: Save feature bundles
|
|
95
|
+
console.log(chalk_1.default.gray(" 💾 Saving feature bundles..."));
|
|
96
|
+
await this.saveFeatureBundles(roleBasedFeatures, context.outputPath);
|
|
97
|
+
const processingTime = Date.now() - startTime;
|
|
98
|
+
const result = {
|
|
99
|
+
success: errors.length === 0,
|
|
100
|
+
features: roleBasedFeatures,
|
|
101
|
+
errors,
|
|
102
|
+
warnings,
|
|
103
|
+
metadata: {
|
|
104
|
+
totalFeatures: roleBasedFeatures.length,
|
|
105
|
+
totalComponents: roleBasedFeatures.reduce((sum, f) => sum + f.components.length, 0),
|
|
106
|
+
totalActions: roleBasedFeatures.reduce((sum, f) => sum + f.actions.length, 0),
|
|
107
|
+
totalHooks: roleBasedFeatures.reduce((sum, f) => sum + f.hooks.length, 0),
|
|
108
|
+
totalRoutes: roleBasedFeatures.reduce((sum, f) => sum + f.routes.length, 0),
|
|
109
|
+
processingTime,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
console.log(chalk_1.default.green(`✅ Feature Assembly completed in ${processingTime}ms`));
|
|
113
|
+
console.log(chalk_1.default.blue(` Generated ${result.metadata.totalFeatures} features`));
|
|
114
|
+
console.log(chalk_1.default.blue(` Generated ${result.metadata.totalComponents} components`));
|
|
115
|
+
console.log(chalk_1.default.blue(` Generated ${result.metadata.totalActions} actions`));
|
|
116
|
+
console.log(chalk_1.default.blue(` Generated ${result.metadata.totalHooks} hooks`));
|
|
117
|
+
console.log(chalk_1.default.blue(` Generated ${result.metadata.totalRoutes} routes`));
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.log(chalk_1.default.red(`❌ Feature Assembly failed: ${error}`));
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
features: [],
|
|
125
|
+
errors: [error instanceof Error ? error.message : String(error)],
|
|
126
|
+
warnings: [],
|
|
127
|
+
metadata: {
|
|
128
|
+
totalFeatures: 0,
|
|
129
|
+
totalComponents: 0,
|
|
130
|
+
totalActions: 0,
|
|
131
|
+
totalHooks: 0,
|
|
132
|
+
totalRoutes: 0,
|
|
133
|
+
processingTime: Date.now() - startTime,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async analyzeAndGroupComponents(components, contextFiles) {
|
|
139
|
+
const prompt = `
|
|
140
|
+
Analyze the following components and group them into logical features based on functionality and purpose.
|
|
141
|
+
|
|
142
|
+
Components:
|
|
143
|
+
${components.map((c) => `- ${c}`).join("\n")}
|
|
144
|
+
|
|
145
|
+
Context Files:
|
|
146
|
+
${JSON.stringify(contextFiles, null, 2)}
|
|
147
|
+
|
|
148
|
+
Group the components into features that work together to provide complete functionality. Each feature should have:
|
|
149
|
+
- A clear purpose and scope
|
|
150
|
+
- Related components that work together
|
|
151
|
+
- A logical name and description
|
|
152
|
+
|
|
153
|
+
Return a JSON array of component groups with this structure:
|
|
154
|
+
[
|
|
155
|
+
{
|
|
156
|
+
"name": "feature-name",
|
|
157
|
+
"description": "What this feature does",
|
|
158
|
+
"components": ["component1", "component2"],
|
|
159
|
+
"category": "authentication|user-management|content|settings|analytics|communication",
|
|
160
|
+
"priority": "high|medium|low"
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
`;
|
|
164
|
+
try {
|
|
165
|
+
const response = await this.aiClient.generateText(prompt);
|
|
166
|
+
const groups = JSON.parse(response.text);
|
|
167
|
+
return groups;
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
// Fallback to rule-based grouping
|
|
171
|
+
return this.fallbackComponentGrouping(components);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
fallbackComponentGrouping(components) {
|
|
175
|
+
const groups = [];
|
|
176
|
+
const componentMap = new Map();
|
|
177
|
+
// Rule-based grouping patterns
|
|
178
|
+
const patterns = {
|
|
179
|
+
authentication: ["login", "signup", "auth", "password", "session"],
|
|
180
|
+
"user-management": ["user", "profile", "account", "member"],
|
|
181
|
+
content: ["post", "article", "blog", "content", "page"],
|
|
182
|
+
settings: ["setting", "config", "preference", "option"],
|
|
183
|
+
analytics: ["analytics", "stats", "metric", "dashboard", "chart"],
|
|
184
|
+
communication: ["message", "chat", "notification", "email", "comment"],
|
|
185
|
+
};
|
|
186
|
+
// Group components by patterns
|
|
187
|
+
for (const component of components) {
|
|
188
|
+
const lowerComponent = component.toLowerCase();
|
|
189
|
+
let assigned = false;
|
|
190
|
+
for (const [category, keywords] of Object.entries(patterns)) {
|
|
191
|
+
if (keywords.some((keyword) => lowerComponent.includes(keyword))) {
|
|
192
|
+
if (!componentMap.has(category)) {
|
|
193
|
+
componentMap.set(category, []);
|
|
194
|
+
}
|
|
195
|
+
componentMap.get(category).push(component);
|
|
196
|
+
assigned = true;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (!assigned) {
|
|
201
|
+
if (!componentMap.has("general")) {
|
|
202
|
+
componentMap.set("general", []);
|
|
203
|
+
}
|
|
204
|
+
componentMap.get("general").push(component);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Convert to ComponentGroup format
|
|
208
|
+
for (const [category, comps] of componentMap) {
|
|
209
|
+
groups.push({
|
|
210
|
+
name: category,
|
|
211
|
+
description: `Components related to ${category}`,
|
|
212
|
+
components: comps,
|
|
213
|
+
category: category,
|
|
214
|
+
priority: "medium",
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return groups;
|
|
218
|
+
}
|
|
219
|
+
async generateFeatureBundle(group, context) {
|
|
220
|
+
const prompt = `
|
|
221
|
+
Generate a complete feature bundle for the following component group:
|
|
222
|
+
|
|
223
|
+
Feature: ${group.name}
|
|
224
|
+
Description: ${group.description}
|
|
225
|
+
Components: ${group.components.join(", ")}
|
|
226
|
+
Category: ${group.category}
|
|
227
|
+
Target Role: ${context.targetRole}
|
|
228
|
+
|
|
229
|
+
Context Files:
|
|
230
|
+
${JSON.stringify(context.contextFiles, null, 2)}
|
|
231
|
+
|
|
232
|
+
Design Manifest:
|
|
233
|
+
${JSON.stringify(context.designManifest, null, 2)}
|
|
234
|
+
|
|
235
|
+
Generate a complete feature bundle with:
|
|
236
|
+
1. Server actions for CRUD operations
|
|
237
|
+
2. Custom hooks for data management
|
|
238
|
+
3. API routes for backend operations
|
|
239
|
+
4. Database schema and queries
|
|
240
|
+
5. Role-based permissions
|
|
241
|
+
6. TypeScript types
|
|
242
|
+
|
|
243
|
+
Return a JSON object matching the FeatureBundle interface:
|
|
244
|
+
{
|
|
245
|
+
"name": "feature-name",
|
|
246
|
+
"description": "Feature description",
|
|
247
|
+
"role": "admin|user|guest",
|
|
248
|
+
"components": ["component1", "component2"],
|
|
249
|
+
"types": ["Type1", "Type2"],
|
|
250
|
+
"actions": [...],
|
|
251
|
+
"hooks": [...],
|
|
252
|
+
"routes": [...],
|
|
253
|
+
"database": {...},
|
|
254
|
+
"permissions": [...],
|
|
255
|
+
"metadata": {...}
|
|
256
|
+
}
|
|
257
|
+
`;
|
|
258
|
+
try {
|
|
259
|
+
const response = await this.aiClient.generateText(prompt);
|
|
260
|
+
const bundle = JSON.parse(response.text);
|
|
261
|
+
// Add metadata
|
|
262
|
+
bundle.metadata = {
|
|
263
|
+
createdAt: new Date().toISOString(),
|
|
264
|
+
updatedAt: new Date().toISOString(),
|
|
265
|
+
version: "1.0.0",
|
|
266
|
+
dependencies: this.extractDependencies(bundle),
|
|
267
|
+
};
|
|
268
|
+
return bundle;
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
// Fallback to template-based generation
|
|
272
|
+
return this.generateFeatureBundleFromTemplate(group, context);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
generateFeatureBundleFromTemplate(group, context) {
|
|
276
|
+
// Find matching template
|
|
277
|
+
const template = context.featureTemplates.find((t) => t.category === group.category);
|
|
278
|
+
if (!template) {
|
|
279
|
+
// Generate basic template
|
|
280
|
+
return this.generateBasicFeatureBundle(group, context);
|
|
281
|
+
}
|
|
282
|
+
// Convert template to feature bundle
|
|
283
|
+
return {
|
|
284
|
+
name: group.name,
|
|
285
|
+
description: group.description,
|
|
286
|
+
role: context.targetRole,
|
|
287
|
+
components: group.components,
|
|
288
|
+
types: template.components.map((c) => c.name),
|
|
289
|
+
actions: template.actions.map((a) => ({
|
|
290
|
+
name: a.name,
|
|
291
|
+
description: a.description,
|
|
292
|
+
file: `actions/${a.name}.ts`,
|
|
293
|
+
function: a.name,
|
|
294
|
+
parameters: a.parameters,
|
|
295
|
+
returnType: a.returnType,
|
|
296
|
+
permissions: a.permissions,
|
|
297
|
+
validation: undefined,
|
|
298
|
+
})),
|
|
299
|
+
hooks: template.hooks.map((h) => ({
|
|
300
|
+
name: h.name,
|
|
301
|
+
description: h.description,
|
|
302
|
+
file: `hooks/${h.name}.ts`,
|
|
303
|
+
function: h.name,
|
|
304
|
+
parameters: h.parameters,
|
|
305
|
+
returnType: h.returnType,
|
|
306
|
+
dependencies: h.dependencies,
|
|
307
|
+
})),
|
|
308
|
+
routes: template.routes.map((r) => ({
|
|
309
|
+
path: r.path,
|
|
310
|
+
method: r.method,
|
|
311
|
+
description: r.description,
|
|
312
|
+
file: `app/api${r.path}/route.ts`,
|
|
313
|
+
function: r.path.replace(/\//g, "_").replace(/\[.*?\]/g, "id"),
|
|
314
|
+
parameters: r.parameters,
|
|
315
|
+
responseType: r.responseType,
|
|
316
|
+
permissions: r.permissions,
|
|
317
|
+
middleware: undefined,
|
|
318
|
+
})),
|
|
319
|
+
database: {
|
|
320
|
+
schema: JSON.stringify(template.database, null, 2),
|
|
321
|
+
queries: template.database.tables.map((t) => `SELECT * FROM ${t.name}`),
|
|
322
|
+
mutations: template.database.tables.map((t) => `INSERT INTO ${t.name}`),
|
|
323
|
+
},
|
|
324
|
+
permissions: template.permissions.map((p) => ({
|
|
325
|
+
id: `${group.name}-${p.role}-${p.resource}`,
|
|
326
|
+
resource: p.resource,
|
|
327
|
+
action: p.actions[0],
|
|
328
|
+
conditions: p.conditions,
|
|
329
|
+
description: `Permission for ${p.role} on ${p.resource}`,
|
|
330
|
+
})),
|
|
331
|
+
metadata: {
|
|
332
|
+
createdAt: new Date().toISOString(),
|
|
333
|
+
updatedAt: new Date().toISOString(),
|
|
334
|
+
version: "1.0.0",
|
|
335
|
+
dependencies: template.dependencies,
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
generateBasicFeatureBundle(group, context) {
|
|
340
|
+
return {
|
|
341
|
+
name: group.name,
|
|
342
|
+
description: group.description,
|
|
343
|
+
role: context.targetRole,
|
|
344
|
+
components: group.components,
|
|
345
|
+
types: [`${group.name}Data`, `${group.name}Form`],
|
|
346
|
+
actions: [
|
|
347
|
+
{
|
|
348
|
+
name: `get${group.name}`,
|
|
349
|
+
description: `Get ${group.name} data`,
|
|
350
|
+
file: `actions/${group.name}.ts`,
|
|
351
|
+
function: `get${group.name}`,
|
|
352
|
+
parameters: [],
|
|
353
|
+
returnType: "Promise<any[]>",
|
|
354
|
+
permissions: [`${group.name}:read`],
|
|
355
|
+
},
|
|
356
|
+
],
|
|
357
|
+
hooks: [
|
|
358
|
+
{
|
|
359
|
+
name: `use${group.name}`,
|
|
360
|
+
description: `Hook for ${group.name} data`,
|
|
361
|
+
file: `hooks/${group.name}.ts`,
|
|
362
|
+
function: `use${group.name}`,
|
|
363
|
+
parameters: [],
|
|
364
|
+
returnType: "any",
|
|
365
|
+
dependencies: [],
|
|
366
|
+
},
|
|
367
|
+
],
|
|
368
|
+
routes: [
|
|
369
|
+
{
|
|
370
|
+
path: `/api/${group.name}`,
|
|
371
|
+
method: "GET",
|
|
372
|
+
description: `Get ${group.name} data`,
|
|
373
|
+
file: `app/api/${group.name}/route.ts`,
|
|
374
|
+
function: "GET",
|
|
375
|
+
parameters: [],
|
|
376
|
+
responseType: "any[]",
|
|
377
|
+
permissions: [`${group.name}:read`],
|
|
378
|
+
},
|
|
379
|
+
],
|
|
380
|
+
database: {
|
|
381
|
+
schema: `CREATE TABLE ${group.name} (id TEXT PRIMARY KEY, data JSONB);`,
|
|
382
|
+
queries: [`SELECT * FROM ${group.name}`],
|
|
383
|
+
mutations: [`INSERT INTO ${group.name} (id, data) VALUES (?, ?)`],
|
|
384
|
+
},
|
|
385
|
+
permissions: [
|
|
386
|
+
{
|
|
387
|
+
id: `${group.name}-${context.targetRole}-read`,
|
|
388
|
+
resource: group.name,
|
|
389
|
+
action: "read",
|
|
390
|
+
description: `Read access to ${group.name}`,
|
|
391
|
+
},
|
|
392
|
+
],
|
|
393
|
+
metadata: {
|
|
394
|
+
createdAt: new Date().toISOString(),
|
|
395
|
+
updatedAt: new Date().toISOString(),
|
|
396
|
+
version: "1.0.0",
|
|
397
|
+
dependencies: [],
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
async applyRoleBasedPermissions(features, targetRole) {
|
|
402
|
+
// Apply role-based filtering and permissions
|
|
403
|
+
return features.map((feature) => ({
|
|
404
|
+
...feature,
|
|
405
|
+
role: targetRole,
|
|
406
|
+
permissions: feature.permissions.filter((p) => this.hasPermissionForRole(p, targetRole)),
|
|
407
|
+
}));
|
|
408
|
+
}
|
|
409
|
+
hasPermissionForRole(permission, role) {
|
|
410
|
+
// Role hierarchy: admin > moderator > editor > user > guest
|
|
411
|
+
const roleLevels = {
|
|
412
|
+
admin: 5,
|
|
413
|
+
moderator: 4,
|
|
414
|
+
editor: 3,
|
|
415
|
+
user: 2,
|
|
416
|
+
guest: 1,
|
|
417
|
+
};
|
|
418
|
+
const permissionLevels = {
|
|
419
|
+
manage: 5,
|
|
420
|
+
create: 4,
|
|
421
|
+
update: 3,
|
|
422
|
+
delete: 3,
|
|
423
|
+
approve: 4,
|
|
424
|
+
reject: 4,
|
|
425
|
+
export: 2,
|
|
426
|
+
import: 3,
|
|
427
|
+
read: 1,
|
|
428
|
+
};
|
|
429
|
+
const roleLevel = roleLevels[role] || 1;
|
|
430
|
+
const permissionLevel = permissionLevels[permission.action] || 1;
|
|
431
|
+
return roleLevel >= permissionLevel;
|
|
432
|
+
}
|
|
433
|
+
async generateSupportingFiles(features, context) {
|
|
434
|
+
for (const feature of features) {
|
|
435
|
+
// Generate actions
|
|
436
|
+
await this.generateActions(feature, context);
|
|
437
|
+
// Generate hooks
|
|
438
|
+
await this.generateHooks(feature, context);
|
|
439
|
+
// Generate routes
|
|
440
|
+
await this.generateRoutes(feature, context);
|
|
441
|
+
// Generate types
|
|
442
|
+
await this.generateTypes(feature, context);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
async generateActions(feature, context) {
|
|
446
|
+
const actionsDir = path.join(context.outputPath, "actions");
|
|
447
|
+
await fs.mkdir(actionsDir, { recursive: true });
|
|
448
|
+
for (const action of feature.actions) {
|
|
449
|
+
const actionCode = this.generateActionCode(action, feature);
|
|
450
|
+
const actionFile = path.join(actionsDir, `${action.name}.ts`);
|
|
451
|
+
await fs.writeFile(actionFile, actionCode);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
generateActionCode(action, feature) {
|
|
455
|
+
return `/**
|
|
456
|
+
* ${action.description}
|
|
457
|
+
*/
|
|
458
|
+
|
|
459
|
+
export async function ${action.function}(${action.parameters
|
|
460
|
+
.map((p) => `${p.name}: ${p.type}`)
|
|
461
|
+
.join(", ")}): Promise<${action.returnType}> {
|
|
462
|
+
// TODO: Implement ${action.name}
|
|
463
|
+
throw new Error('Not implemented');
|
|
464
|
+
}
|
|
465
|
+
`;
|
|
466
|
+
}
|
|
467
|
+
async generateHooks(feature, context) {
|
|
468
|
+
const hooksDir = path.join(context.outputPath, "hooks");
|
|
469
|
+
await fs.mkdir(hooksDir, { recursive: true });
|
|
470
|
+
for (const hook of feature.hooks) {
|
|
471
|
+
const hookCode = this.generateHookCode(hook, feature);
|
|
472
|
+
const hookFile = path.join(hooksDir, `${hook.name}.ts`);
|
|
473
|
+
await fs.writeFile(hookFile, hookCode);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
generateHookCode(hook, feature) {
|
|
477
|
+
return `/**
|
|
478
|
+
* ${hook.description}
|
|
479
|
+
*/
|
|
480
|
+
|
|
481
|
+
export function ${hook.function}(${hook.parameters
|
|
482
|
+
.map((p) => `${p.name}: ${p.type}`)
|
|
483
|
+
.join(", ")}): ${hook.returnType} {
|
|
484
|
+
// TODO: Implement ${hook.name}
|
|
485
|
+
throw new Error('Not implemented');
|
|
486
|
+
}
|
|
487
|
+
`;
|
|
488
|
+
}
|
|
489
|
+
async generateRoutes(feature, context) {
|
|
490
|
+
for (const route of feature.routes) {
|
|
491
|
+
const routeDir = path.dirname(path.join(context.outputPath, route.file));
|
|
492
|
+
await fs.mkdir(routeDir, { recursive: true });
|
|
493
|
+
const routeCode = this.generateRouteCode(route, feature);
|
|
494
|
+
const routeFile = path.join(context.outputPath, route.file);
|
|
495
|
+
await fs.writeFile(routeFile, routeCode);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
generateRouteCode(route, feature) {
|
|
499
|
+
return `/**
|
|
500
|
+
* ${route.description}
|
|
501
|
+
*/
|
|
502
|
+
|
|
503
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
504
|
+
|
|
505
|
+
export async function ${route.method}(request: NextRequest) {
|
|
506
|
+
// TODO: Implement ${route.path} ${route.method}
|
|
507
|
+
return NextResponse.json({ error: 'Not implemented' }, { status: 501 });
|
|
508
|
+
}
|
|
509
|
+
`;
|
|
510
|
+
}
|
|
511
|
+
async generateTypes(feature, context) {
|
|
512
|
+
const typesDir = path.join(context.outputPath, "types");
|
|
513
|
+
await fs.mkdir(typesDir, { recursive: true });
|
|
514
|
+
const typesCode = this.generateTypesCode(feature);
|
|
515
|
+
const typesFile = path.join(typesDir, `${feature.name}.ts`);
|
|
516
|
+
await fs.writeFile(typesFile, typesCode);
|
|
517
|
+
}
|
|
518
|
+
generateTypesCode(feature) {
|
|
519
|
+
return `/**
|
|
520
|
+
* Types for ${feature.name} feature
|
|
521
|
+
*/
|
|
522
|
+
|
|
523
|
+
export interface ${feature.name}Data {
|
|
524
|
+
id: string;
|
|
525
|
+
// TODO: Add specific fields
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
export interface ${feature.name}Form {
|
|
529
|
+
// TODO: Add form fields
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export interface ${feature.name}CreateData {
|
|
533
|
+
// TODO: Add creation fields
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
export interface ${feature.name}UpdateData {
|
|
537
|
+
// TODO: Add update fields
|
|
538
|
+
}
|
|
539
|
+
`;
|
|
540
|
+
}
|
|
541
|
+
async saveFeatureBundles(features, outputPath) {
|
|
542
|
+
const bundlesDir = path.join(outputPath, ".mycontext", "feature-bundles");
|
|
543
|
+
await fs.mkdir(bundlesDir, { recursive: true });
|
|
544
|
+
for (const feature of features) {
|
|
545
|
+
const bundleFile = path.join(bundlesDir, `${feature.name}.json`);
|
|
546
|
+
await fs.writeFile(bundleFile, JSON.stringify(feature, null, 2));
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
extractDependencies(bundle) {
|
|
550
|
+
const deps = new Set();
|
|
551
|
+
// Extract from actions
|
|
552
|
+
bundle.actions.forEach((action) => {
|
|
553
|
+
if (action.validation?.schema)
|
|
554
|
+
deps.add("zod");
|
|
555
|
+
});
|
|
556
|
+
// Extract from hooks
|
|
557
|
+
bundle.hooks.forEach((hook) => {
|
|
558
|
+
hook.dependencies.forEach((dep) => deps.add(dep));
|
|
559
|
+
});
|
|
560
|
+
return Array.from(deps);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
exports.FeatureAssemblyAgent = FeatureAssemblyAgent;
|
|
564
|
+
//# sourceMappingURL=FeatureAssemblyAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureAssemblyAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/FeatureAssemblyAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ export declare class PromptConstructorAgent implements SubAgent<PromptConstructi
|
|
|
34
34
|
llmProvider: string;
|
|
35
35
|
expertise: string[];
|
|
36
36
|
run(context: PromptConstructionContext): Promise<ConstructedPrompt>;
|
|
37
|
+
private loadDesignContext;
|
|
37
38
|
private analyzeContextFiles;
|
|
38
39
|
private enhancePromptWithAI;
|
|
39
40
|
private extractDomain;
|
|
@@ -59,5 +60,14 @@ export declare class PromptConstructorAgent implements SubAgent<PromptConstructi
|
|
|
59
60
|
private extractUserInterfacePatterns;
|
|
60
61
|
private extractUserAccessibilityNeeds;
|
|
61
62
|
private extractUserPerformanceExpectations;
|
|
63
|
+
private formatDesignSystemForPrompt;
|
|
64
|
+
/**
|
|
65
|
+
* Filter enriched intents to find those relevant to the current component
|
|
66
|
+
*/
|
|
67
|
+
private filterRelevantIntents;
|
|
68
|
+
/**
|
|
69
|
+
* Format an enriched intent as requirement strings
|
|
70
|
+
*/
|
|
71
|
+
private formatIntentAsRequirements;
|
|
62
72
|
}
|
|
63
73
|
//# sourceMappingURL=PromptConstructorAgent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptConstructorAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/PromptConstructorAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"PromptConstructorAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/PromptConstructorAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAMlD,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,sBACX,YAAW,QAAQ,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;IAEjE,IAAI,SAA4B;IAChC,WAAW,SACkG;IAC7G,WAAW,SAAgD;IAC3D,WAAW,EAAE,MAAM,CAAY;IAC/B,SAAS,WAKP;IAEI,GAAG,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAoC3D,iBAAiB;YAsBjB,mBAAmB;YAsFnB,mBAAmB;IAoGjC,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,iBAAiB;YA8BX,4BAA4B;YAgE5B,eAAe;IA0L7B,OAAO,CAAC,0BAA0B;IA6FlC,OAAO,CAAC,2BAA2B;IA6BnC,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,+BAA+B;IA6BvC,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,yBAAyB;IA2BjC,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,4BAA4B;IAiBpC,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,kCAAkC;IAe1C,OAAO,CAAC,2BAA2B;IA+EnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAyEnC"}
|