mycontext-cli 0.4.8 → 0.4.10
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 +113 -97
- package/dist/agents/communication/AgentCommunicationManager.d.ts +27 -0
- package/dist/agents/communication/AgentCommunicationManager.d.ts.map +1 -0
- package/dist/agents/communication/AgentCommunicationManager.js +293 -0
- package/dist/agents/communication/AgentCommunicationManager.js.map +1 -0
- package/dist/agents/evolution/CodeEvolutionEngine.d.ts +92 -0
- package/dist/agents/evolution/CodeEvolutionEngine.d.ts.map +1 -0
- package/dist/agents/evolution/CodeEvolutionEngine.js +639 -0
- package/dist/agents/evolution/CodeEvolutionEngine.js.map +1 -0
- package/dist/agents/implementations/ArchitectAgent.d.ts +39 -0
- package/dist/agents/implementations/ArchitectAgent.d.ts.map +1 -0
- package/dist/agents/implementations/ArchitectAgent.js +345 -0
- package/dist/agents/implementations/ArchitectAgent.js.map +1 -0
- package/dist/agents/implementations/CodeGenSubAgent.d.ts +12 -0
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +296 -43
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.d.ts +50 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/PromptConstructorAgent.js +481 -0
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -0
- package/dist/agents/implementations/SecurityAgent.d.ts +31 -0
- package/dist/agents/implementations/SecurityAgent.d.ts.map +1 -0
- package/dist/agents/implementations/SecurityAgent.js +453 -0
- package/dist/agents/implementations/SecurityAgent.js.map +1 -0
- package/dist/agents/intelligence/ProjectIntelligence.d.ts +127 -0
- package/dist/agents/intelligence/ProjectIntelligence.d.ts.map +1 -0
- package/dist/agents/intelligence/ProjectIntelligence.js +456 -0
- package/dist/agents/intelligence/ProjectIntelligence.js.map +1 -0
- package/dist/agents/interfaces/AgentCommunication.d.ts +65 -0
- package/dist/agents/interfaces/AgentCommunication.d.ts.map +1 -0
- package/dist/agents/interfaces/AgentCommunication.js +13 -0
- package/dist/agents/interfaces/AgentCommunication.js.map +1 -0
- package/dist/agents/learning/CrossProjectLearning.d.ts +99 -0
- package/dist/agents/learning/CrossProjectLearning.d.ts.map +1 -0
- package/dist/agents/learning/CrossProjectLearning.js +517 -0
- package/dist/agents/learning/CrossProjectLearning.js.map +1 -0
- package/dist/cli.js +47 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent-flow.d.ts +21 -0
- package/dist/commands/agent-flow.d.ts.map +1 -0
- package/dist/commands/agent-flow.js +225 -0
- package/dist/commands/agent-flow.js.map +1 -0
- package/dist/commands/generate-components.d.ts +0 -13
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +23 -385
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts +4 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +173 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/predict.d.ts +36 -0
- package/dist/commands/predict.d.ts.map +1 -0
- package/dist/commands/predict.js +539 -0
- package/dist/commands/predict.js.map +1 -0
- package/dist/utils/clean.d.ts +6 -0
- package/dist/utils/clean.d.ts.map +1 -0
- package/dist/utils/clean.js +220 -0
- package/dist/utils/clean.js.map +1 -0
- package/dist/utils/githubModelsClient.d.ts.map +1 -1
- package/dist/utils/githubModelsClient.js +11 -12
- package/dist/utils/githubModelsClient.js.map +1 -1
- package/dist/utils/hybridAIClient.d.ts +1 -0
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +23 -9
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/ollamaClient.d.ts.map +1 -1
- package/dist/utils/ollamaClient.js +6 -4
- package/dist/utils/ollamaClient.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CodeEvolutionEngineImpl = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const ProjectIntelligence_1 = require("../intelligence/ProjectIntelligence");
|
|
10
|
+
const ArchitectAgent_1 = require("../implementations/ArchitectAgent");
|
|
11
|
+
const SecurityAgent_1 = require("../implementations/SecurityAgent");
|
|
12
|
+
class CodeEvolutionEngineImpl {
|
|
13
|
+
constructor(projectPath = process.cwd()) {
|
|
14
|
+
this.refactoringSuggestions = [];
|
|
15
|
+
this.performanceOptimizations = [];
|
|
16
|
+
this.securityHardening = [];
|
|
17
|
+
this.accessibilityEnhancements = [];
|
|
18
|
+
this.intelligence = new ProjectIntelligence_1.ProjectIntelligenceEngine(projectPath);
|
|
19
|
+
this.architectAgent = new ArchitectAgent_1.ArchitectAgent();
|
|
20
|
+
this.securityAgent = new SecurityAgent_1.SecurityAgent();
|
|
21
|
+
}
|
|
22
|
+
async analyzeAndEvolve() {
|
|
23
|
+
console.log("🧬 Analyzing code for evolution opportunities...");
|
|
24
|
+
// Get project intelligence
|
|
25
|
+
const projectState = await this.intelligence.analyzeProject();
|
|
26
|
+
// Generate refactoring suggestions
|
|
27
|
+
await this.generateRefactoringSuggestions(projectState);
|
|
28
|
+
// Generate performance optimizations
|
|
29
|
+
await this.generatePerformanceOptimizations(projectState);
|
|
30
|
+
// Generate security hardening suggestions
|
|
31
|
+
await this.generateSecurityHardening(projectState);
|
|
32
|
+
// Generate accessibility enhancements
|
|
33
|
+
await this.generateAccessibilityEnhancements(projectState);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
async generateRefactoringSuggestions(projectState) {
|
|
37
|
+
const files = projectState.codebaseAwareness.files;
|
|
38
|
+
for (const file of files) {
|
|
39
|
+
if (file.type === "component" || file.type === "utility") {
|
|
40
|
+
const suggestions = await this.analyzeFileForRefactoring(file);
|
|
41
|
+
this.refactoringSuggestions.push(...suggestions);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async analyzeFileForRefactoring(file) {
|
|
46
|
+
const suggestions = [];
|
|
47
|
+
const filePath = path_1.default.join(process.cwd(), file.path);
|
|
48
|
+
let content = "";
|
|
49
|
+
try {
|
|
50
|
+
content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return suggestions;
|
|
54
|
+
}
|
|
55
|
+
// Check for high complexity components
|
|
56
|
+
if (file.complexity > 15) {
|
|
57
|
+
suggestions.push({
|
|
58
|
+
id: `refactor-${file.path}-complexity`,
|
|
59
|
+
file: file.path,
|
|
60
|
+
type: "extract-component",
|
|
61
|
+
priority: file.complexity > 25 ? "high" : "medium",
|
|
62
|
+
description: `Component has high complexity (${file.complexity}). Consider breaking into smaller components.`,
|
|
63
|
+
before: this.extractHighComplexitySection(content),
|
|
64
|
+
after: this.suggestComponentExtraction(content),
|
|
65
|
+
benefits: [
|
|
66
|
+
"Improved maintainability",
|
|
67
|
+
"Better testability",
|
|
68
|
+
"Enhanced reusability",
|
|
69
|
+
"Reduced cognitive load",
|
|
70
|
+
],
|
|
71
|
+
confidence: 0.8,
|
|
72
|
+
estimatedEffort: file.complexity > 25 ? "4-6 hours" : "2-4 hours",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Check for long parameter lists
|
|
76
|
+
const longParameterFunctions = this.findLongParameterFunctions(content);
|
|
77
|
+
for (const func of longParameterFunctions) {
|
|
78
|
+
suggestions.push({
|
|
79
|
+
id: `refactor-${file.path}-parameters-${func.name}`,
|
|
80
|
+
file: file.path,
|
|
81
|
+
type: "simplify-logic",
|
|
82
|
+
priority: "medium",
|
|
83
|
+
description: `Function ${func.name} has too many parameters (${func.paramCount}). Consider using object destructuring.`,
|
|
84
|
+
before: func.original,
|
|
85
|
+
after: func.refactored,
|
|
86
|
+
benefits: [
|
|
87
|
+
"Improved readability",
|
|
88
|
+
"Easier parameter management",
|
|
89
|
+
"Better IDE support",
|
|
90
|
+
],
|
|
91
|
+
confidence: 0.9,
|
|
92
|
+
estimatedEffort: "1-2 hours",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// Check for duplicate code
|
|
96
|
+
const duplicates = this.findDuplicateCode(content);
|
|
97
|
+
for (const duplicate of duplicates) {
|
|
98
|
+
suggestions.push({
|
|
99
|
+
id: `refactor-${file.path}-duplicate-${duplicate.id}`,
|
|
100
|
+
file: file.path,
|
|
101
|
+
type: "extract-component",
|
|
102
|
+
priority: "medium",
|
|
103
|
+
description: `Duplicate code detected. Consider extracting into reusable utility.`,
|
|
104
|
+
before: duplicate.code,
|
|
105
|
+
after: duplicate.extracted,
|
|
106
|
+
benefits: [
|
|
107
|
+
"DRY principle compliance",
|
|
108
|
+
"Centralized logic",
|
|
109
|
+
"Easier maintenance",
|
|
110
|
+
],
|
|
111
|
+
confidence: 0.7,
|
|
112
|
+
estimatedEffort: "2-3 hours",
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// Check for poor naming
|
|
116
|
+
const poorNames = this.findPoorNaming(content);
|
|
117
|
+
for (const name of poorNames) {
|
|
118
|
+
suggestions.push({
|
|
119
|
+
id: `refactor-${file.path}-naming-${name.original}`,
|
|
120
|
+
file: file.path,
|
|
121
|
+
type: "improve-naming",
|
|
122
|
+
priority: "low",
|
|
123
|
+
description: `Variable/function name '${name.original}' could be more descriptive.`,
|
|
124
|
+
before: name.context,
|
|
125
|
+
after: name.improved,
|
|
126
|
+
benefits: [
|
|
127
|
+
"Better code readability",
|
|
128
|
+
"Self-documenting code",
|
|
129
|
+
"Improved maintainability",
|
|
130
|
+
],
|
|
131
|
+
confidence: 0.6,
|
|
132
|
+
estimatedEffort: "30 minutes",
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return suggestions;
|
|
136
|
+
}
|
|
137
|
+
async generatePerformanceOptimizations(projectState) {
|
|
138
|
+
const files = projectState.codebaseAwareness.files;
|
|
139
|
+
for (const file of files) {
|
|
140
|
+
if (file.type === "component") {
|
|
141
|
+
const optimizations = await this.analyzeFileForPerformance(file);
|
|
142
|
+
this.performanceOptimizations.push(...optimizations);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async analyzeFileForPerformance(file) {
|
|
147
|
+
const optimizations = [];
|
|
148
|
+
const filePath = path_1.default.join(process.cwd(), file.path);
|
|
149
|
+
let content = "";
|
|
150
|
+
try {
|
|
151
|
+
content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return optimizations;
|
|
155
|
+
}
|
|
156
|
+
// Check for missing React.memo
|
|
157
|
+
if (this.isDisplayComponent(content) &&
|
|
158
|
+
!content.includes("React.memo") &&
|
|
159
|
+
!content.includes("memo(")) {
|
|
160
|
+
optimizations.push({
|
|
161
|
+
id: `perf-${file.path}-memo`,
|
|
162
|
+
file: file.path,
|
|
163
|
+
type: "memoization",
|
|
164
|
+
impact: "medium",
|
|
165
|
+
description: "Component could benefit from React.memo to prevent unnecessary re-renders",
|
|
166
|
+
implementation: this.generateMemoImplementation(content),
|
|
167
|
+
metrics: {
|
|
168
|
+
beforeScore: 60,
|
|
169
|
+
afterScore: 85,
|
|
170
|
+
improvement: "25% reduction in unnecessary renders",
|
|
171
|
+
},
|
|
172
|
+
confidence: 0.8,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// Check for heavy computations without useMemo
|
|
176
|
+
const heavyComputations = this.findHeavyComputations(content);
|
|
177
|
+
for (const computation of heavyComputations) {
|
|
178
|
+
optimizations.push({
|
|
179
|
+
id: `perf-${file.path}-usememo-${computation.id}`,
|
|
180
|
+
file: file.path,
|
|
181
|
+
type: "memoization",
|
|
182
|
+
impact: "high",
|
|
183
|
+
description: `Heavy computation "${computation.name}" should be memoized`,
|
|
184
|
+
implementation: this.generateUseMemoImplementation(computation),
|
|
185
|
+
metrics: {
|
|
186
|
+
beforeScore: 40,
|
|
187
|
+
afterScore: 80,
|
|
188
|
+
improvement: "50% reduction in computation time",
|
|
189
|
+
},
|
|
190
|
+
confidence: 0.9,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// Check for large lists without virtualization
|
|
194
|
+
if (this.hasLargeList(content)) {
|
|
195
|
+
optimizations.push({
|
|
196
|
+
id: `perf-${file.path}-virtualization`,
|
|
197
|
+
file: file.path,
|
|
198
|
+
type: "virtualization",
|
|
199
|
+
impact: "high",
|
|
200
|
+
description: "Large list detected. Consider implementing virtualization",
|
|
201
|
+
implementation: this.generateVirtualizationImplementation(),
|
|
202
|
+
metrics: {
|
|
203
|
+
beforeScore: 30,
|
|
204
|
+
afterScore: 90,
|
|
205
|
+
improvement: "70% improvement in list rendering performance",
|
|
206
|
+
},
|
|
207
|
+
confidence: 0.85,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
// Check for non-optimized images
|
|
211
|
+
const imageOptimizations = this.findImageOptimizations(content);
|
|
212
|
+
for (const imgOpt of imageOptimizations) {
|
|
213
|
+
optimizations.push({
|
|
214
|
+
id: `perf-${file.path}-image-${imgOpt.id}`,
|
|
215
|
+
file: file.path,
|
|
216
|
+
type: "image-optimization",
|
|
217
|
+
impact: "medium",
|
|
218
|
+
description: `Image "${imgOpt.src}" could be optimized`,
|
|
219
|
+
implementation: imgOpt.optimized,
|
|
220
|
+
metrics: {
|
|
221
|
+
beforeScore: 50,
|
|
222
|
+
afterScore: 80,
|
|
223
|
+
improvement: "40% faster image loading",
|
|
224
|
+
},
|
|
225
|
+
confidence: 0.9,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return optimizations;
|
|
229
|
+
}
|
|
230
|
+
async generateSecurityHardening(projectState) {
|
|
231
|
+
const files = projectState.codebaseAwareness.files;
|
|
232
|
+
for (const file of files) {
|
|
233
|
+
const hardening = await this.analyzeFileForSecurity(file);
|
|
234
|
+
this.securityHardening.push(...hardening);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async analyzeFileForSecurity(file) {
|
|
238
|
+
const hardening = [];
|
|
239
|
+
const filePath = path_1.default.join(process.cwd(), file.path);
|
|
240
|
+
let content = "";
|
|
241
|
+
try {
|
|
242
|
+
content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return hardening;
|
|
246
|
+
}
|
|
247
|
+
// Use SecurityAgent for comprehensive analysis
|
|
248
|
+
try {
|
|
249
|
+
const securityAnalysis = await this.securityAgent.execute({
|
|
250
|
+
code: content,
|
|
251
|
+
component: { name: file.path, type: file.type },
|
|
252
|
+
context: {},
|
|
253
|
+
});
|
|
254
|
+
// Convert vulnerabilities to hardening suggestions
|
|
255
|
+
for (const vuln of securityAnalysis.vulnerabilities) {
|
|
256
|
+
hardening.push({
|
|
257
|
+
id: `security-${file.path}-${vuln.type}`,
|
|
258
|
+
file: file.path,
|
|
259
|
+
vulnerability: vuln.description,
|
|
260
|
+
severity: vuln.severity,
|
|
261
|
+
fix: vuln.fix,
|
|
262
|
+
automated: this.canAutomate(vuln.type),
|
|
263
|
+
compliance: this.getComplianceStandards(vuln.type),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
console.warn(`Security analysis failed for ${file.path}:`, error);
|
|
269
|
+
}
|
|
270
|
+
return hardening;
|
|
271
|
+
}
|
|
272
|
+
async generateAccessibilityEnhancements(projectState) {
|
|
273
|
+
const files = projectState.codebaseAwareness.files.filter((f) => f.type === "component");
|
|
274
|
+
for (const file of files) {
|
|
275
|
+
const enhancements = await this.analyzeFileForAccessibility(file);
|
|
276
|
+
this.accessibilityEnhancements.push(...enhancements);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
async analyzeFileForAccessibility(file) {
|
|
280
|
+
const enhancements = [];
|
|
281
|
+
const filePath = path_1.default.join(process.cwd(), file.path);
|
|
282
|
+
let content = "";
|
|
283
|
+
try {
|
|
284
|
+
content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return enhancements;
|
|
288
|
+
}
|
|
289
|
+
// Check for missing alt attributes
|
|
290
|
+
const missingAlt = content.match(/<img[^>]*(?!alt=)[^>]*>/g);
|
|
291
|
+
if (missingAlt) {
|
|
292
|
+
enhancements.push({
|
|
293
|
+
id: `a11y-${file.path}-alt`,
|
|
294
|
+
file: file.path,
|
|
295
|
+
issue: "Images missing alt attributes",
|
|
296
|
+
wcagLevel: "A",
|
|
297
|
+
fix: "Add descriptive alt attributes to all images",
|
|
298
|
+
automated: true,
|
|
299
|
+
userImpact: "Screen reader users cannot understand image content",
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
// Check for missing aria-labels on interactive elements
|
|
303
|
+
const unlabeledButtons = content.match(/<button[^>]*(?!aria-label)[^>]*>[^<]*<\/button>/g);
|
|
304
|
+
if (unlabeledButtons) {
|
|
305
|
+
enhancements.push({
|
|
306
|
+
id: `a11y-${file.path}-aria-label`,
|
|
307
|
+
file: file.path,
|
|
308
|
+
issue: "Interactive elements missing aria-labels",
|
|
309
|
+
wcagLevel: "AA",
|
|
310
|
+
fix: "Add aria-label or aria-labelledby to interactive elements",
|
|
311
|
+
automated: false,
|
|
312
|
+
userImpact: "Screen reader users cannot understand element purpose",
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
// Check for missing focus management
|
|
316
|
+
if (content.includes("Modal") || content.includes("Dialog")) {
|
|
317
|
+
if (!content.includes("focus") && !content.includes("tabIndex")) {
|
|
318
|
+
enhancements.push({
|
|
319
|
+
id: `a11y-${file.path}-focus`,
|
|
320
|
+
file: file.path,
|
|
321
|
+
issue: "Modal/Dialog missing focus management",
|
|
322
|
+
wcagLevel: "AA",
|
|
323
|
+
fix: "Implement focus trap and return focus after closing",
|
|
324
|
+
automated: false,
|
|
325
|
+
userImpact: "Keyboard users may lose focus context",
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Check for color contrast (basic check)
|
|
330
|
+
if (content.includes("color:") && !content.includes("contrast")) {
|
|
331
|
+
enhancements.push({
|
|
332
|
+
id: `a11y-${file.path}-contrast`,
|
|
333
|
+
file: file.path,
|
|
334
|
+
issue: "Potential color contrast issues",
|
|
335
|
+
wcagLevel: "AA",
|
|
336
|
+
fix: "Ensure color contrast ratios meet WCAG standards (4.5:1 for normal text)",
|
|
337
|
+
automated: false,
|
|
338
|
+
userImpact: "Users with visual impairments may have difficulty reading content",
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
return enhancements;
|
|
342
|
+
}
|
|
343
|
+
// Helper methods for refactoring analysis
|
|
344
|
+
extractHighComplexitySection(content) {
|
|
345
|
+
// Find the most complex function/component section
|
|
346
|
+
const lines = content.split("\n");
|
|
347
|
+
const complexSectionStart = Math.max(0, Math.floor(lines.length * 0.3));
|
|
348
|
+
const complexSectionEnd = Math.min(lines.length, Math.floor(lines.length * 0.7));
|
|
349
|
+
return lines.slice(complexSectionStart, complexSectionEnd).join("\n");
|
|
350
|
+
}
|
|
351
|
+
suggestComponentExtraction(content) {
|
|
352
|
+
return `// Extract complex logic into separate components
|
|
353
|
+
// Before: Large monolithic component
|
|
354
|
+
// After: Composed components with clear responsibilities
|
|
355
|
+
|
|
356
|
+
const ExtractedComponent = ({ data }) => {
|
|
357
|
+
return (
|
|
358
|
+
<div>
|
|
359
|
+
{/* Specific functionality here */}
|
|
360
|
+
</div>
|
|
361
|
+
);
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
const MainComponent = () => {
|
|
365
|
+
return (
|
|
366
|
+
<div>
|
|
367
|
+
<ExtractedComponent data={data} />
|
|
368
|
+
{/* Other components */}
|
|
369
|
+
</div>
|
|
370
|
+
);
|
|
371
|
+
};`;
|
|
372
|
+
}
|
|
373
|
+
findLongParameterFunctions(content) {
|
|
374
|
+
const functionRegex = /function\s+(\w+)\s*\([^)]{50,}\)/g;
|
|
375
|
+
const arrowFunctionRegex = /const\s+(\w+)\s*=\s*\([^)]{50,}\)\s*=>/g;
|
|
376
|
+
const functions = [];
|
|
377
|
+
let match;
|
|
378
|
+
while ((match = functionRegex.exec(content)) !== null) {
|
|
379
|
+
const paramCount = (match[0].match(/,/g) || []).length + 1;
|
|
380
|
+
if (paramCount > 5) {
|
|
381
|
+
functions.push({
|
|
382
|
+
name: match[1],
|
|
383
|
+
paramCount,
|
|
384
|
+
original: match[0],
|
|
385
|
+
refactored: this.generateObjectParameterVersion(match[0]),
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return functions;
|
|
390
|
+
}
|
|
391
|
+
generateObjectParameterVersion(original) {
|
|
392
|
+
return (original.replace(/\([^)]+\)/, "({ ...params })") +
|
|
393
|
+
`
|
|
394
|
+
// Destructure parameters from object:
|
|
395
|
+
// const { param1, param2, param3 } = params;`);
|
|
396
|
+
}
|
|
397
|
+
findDuplicateCode(content) {
|
|
398
|
+
// Simplified duplicate detection
|
|
399
|
+
const lines = content.split("\n");
|
|
400
|
+
const duplicates = [];
|
|
401
|
+
for (let i = 0; i < lines.length - 5; i++) {
|
|
402
|
+
const block = lines.slice(i, i + 5).join("\n");
|
|
403
|
+
const restOfFile = lines.slice(i + 5).join("\n");
|
|
404
|
+
if (restOfFile.includes(block) && block.trim().length > 50) {
|
|
405
|
+
duplicates.push({
|
|
406
|
+
id: i,
|
|
407
|
+
code: block,
|
|
408
|
+
extracted: `// Extract to utility function:
|
|
409
|
+
const extractedFunction = () => {
|
|
410
|
+
${block}
|
|
411
|
+
};`,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return duplicates.slice(0, 3); // Limit results
|
|
416
|
+
}
|
|
417
|
+
findPoorNaming(content) {
|
|
418
|
+
const poorNames = [];
|
|
419
|
+
const shortVarRegex = /(?:const|let|var)\s+([a-z]{1,2})\s*=/g;
|
|
420
|
+
let match;
|
|
421
|
+
while ((match = shortVarRegex.exec(content)) !== null) {
|
|
422
|
+
if (!["id", "x", "y", "i", "j"].includes(match[1])) {
|
|
423
|
+
poorNames.push({
|
|
424
|
+
original: match[1],
|
|
425
|
+
context: match[0],
|
|
426
|
+
improved: match[0].replace(match[1], this.suggestBetterName(match[1])),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return poorNames.slice(0, 5);
|
|
431
|
+
}
|
|
432
|
+
suggestBetterName(shortName) {
|
|
433
|
+
const suggestions = {
|
|
434
|
+
e: "event",
|
|
435
|
+
el: "element",
|
|
436
|
+
btn: "button",
|
|
437
|
+
img: "image",
|
|
438
|
+
str: "string",
|
|
439
|
+
num: "number",
|
|
440
|
+
obj: "object",
|
|
441
|
+
arr: "array",
|
|
442
|
+
fn: "function",
|
|
443
|
+
};
|
|
444
|
+
return suggestions[shortName] || `${shortName}Data`;
|
|
445
|
+
}
|
|
446
|
+
// Helper methods for performance analysis
|
|
447
|
+
isDisplayComponent(content) {
|
|
448
|
+
return (content.includes("return (") &&
|
|
449
|
+
!content.includes("useState") &&
|
|
450
|
+
!content.includes("useEffect"));
|
|
451
|
+
}
|
|
452
|
+
generateMemoImplementation(content) {
|
|
453
|
+
const componentName = this.extractComponentName(content);
|
|
454
|
+
return `import React, { memo } from 'react';
|
|
455
|
+
|
|
456
|
+
const ${componentName} = memo(({ props }) => {
|
|
457
|
+
// Component implementation
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
export default ${componentName};`;
|
|
461
|
+
}
|
|
462
|
+
findHeavyComputations(content) {
|
|
463
|
+
const computations = [];
|
|
464
|
+
// Look for expensive operations
|
|
465
|
+
const expensivePatterns = [
|
|
466
|
+
/(\w+)\.map\([^)]+\)\.filter\([^)]+\)\.sort\([^)]+\)/g,
|
|
467
|
+
/(\w+)\.reduce\([^)]+\)/g,
|
|
468
|
+
/JSON\.parse\([^)]+\)/g,
|
|
469
|
+
/new Date\([^)]*\)\.get\w+\(\)/g,
|
|
470
|
+
];
|
|
471
|
+
expensivePatterns.forEach((pattern, index) => {
|
|
472
|
+
let match;
|
|
473
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
474
|
+
computations.push({
|
|
475
|
+
id: index,
|
|
476
|
+
name: match[0],
|
|
477
|
+
original: match[0],
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
return computations;
|
|
482
|
+
}
|
|
483
|
+
generateUseMemoImplementation(computation) {
|
|
484
|
+
return `import React, { useMemo } from 'react';
|
|
485
|
+
|
|
486
|
+
const memoizedValue = useMemo(() => {
|
|
487
|
+
return ${computation.original};
|
|
488
|
+
}, [dependency1, dependency2]);`;
|
|
489
|
+
}
|
|
490
|
+
hasLargeList(content) {
|
|
491
|
+
return (content.includes(".map(") &&
|
|
492
|
+
(content.includes("data.length > 100") ||
|
|
493
|
+
content.includes("items.length > 50") ||
|
|
494
|
+
content.includes("list.length")));
|
|
495
|
+
}
|
|
496
|
+
generateVirtualizationImplementation() {
|
|
497
|
+
return `import { FixedSizeList as List } from 'react-window';
|
|
498
|
+
|
|
499
|
+
const VirtualizedList = ({ items }) => (
|
|
500
|
+
<List
|
|
501
|
+
height={400}
|
|
502
|
+
itemCount={items.length}
|
|
503
|
+
itemSize={50}
|
|
504
|
+
itemData={items}
|
|
505
|
+
>
|
|
506
|
+
{({ index, style, data }) => (
|
|
507
|
+
<div style={style}>
|
|
508
|
+
{/* Render item at index */}
|
|
509
|
+
</div>
|
|
510
|
+
)}
|
|
511
|
+
</List>
|
|
512
|
+
);`;
|
|
513
|
+
}
|
|
514
|
+
findImageOptimizations(content) {
|
|
515
|
+
const optimizations = [];
|
|
516
|
+
const imgRegex = /<img[^>]+src=["']([^"']+)["'][^>]*>/g;
|
|
517
|
+
let match;
|
|
518
|
+
while ((match = imgRegex.exec(content)) !== null) {
|
|
519
|
+
if (!match[1].includes("next/image") &&
|
|
520
|
+
!match[0].includes('loading="lazy"')) {
|
|
521
|
+
optimizations.push({
|
|
522
|
+
id: optimizations.length,
|
|
523
|
+
src: match[1],
|
|
524
|
+
optimized: `import Image from 'next/image';
|
|
525
|
+
|
|
526
|
+
<Image
|
|
527
|
+
src="${match[1]}"
|
|
528
|
+
alt="Description"
|
|
529
|
+
width={500}
|
|
530
|
+
height={300}
|
|
531
|
+
priority={false}
|
|
532
|
+
loading="lazy"
|
|
533
|
+
/>`,
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return optimizations;
|
|
538
|
+
}
|
|
539
|
+
// Helper methods for security analysis
|
|
540
|
+
canAutomate(vulnType) {
|
|
541
|
+
const automatable = ["XSS", "HARDCODED_CREDENTIALS", "DATA_EXPOSURE"];
|
|
542
|
+
return automatable.includes(vulnType);
|
|
543
|
+
}
|
|
544
|
+
getComplianceStandards(vulnType) {
|
|
545
|
+
const standards = {
|
|
546
|
+
XSS: ["OWASP", "PCI-DSS"],
|
|
547
|
+
SQL_INJECTION: ["OWASP", "PCI-DSS", "HIPAA"],
|
|
548
|
+
HARDCODED_CREDENTIALS: ["OWASP", "PCI-DSS", "GDPR"],
|
|
549
|
+
CSRF: ["OWASP", "PCI-DSS"],
|
|
550
|
+
};
|
|
551
|
+
return standards[vulnType] || ["OWASP"];
|
|
552
|
+
}
|
|
553
|
+
// Utility methods
|
|
554
|
+
extractComponentName(content) {
|
|
555
|
+
const nameMatch = content.match(/(?:function|const)\s+(\w+)/);
|
|
556
|
+
return nameMatch ? nameMatch[1] : "Component";
|
|
557
|
+
}
|
|
558
|
+
// Public methods for applying improvements
|
|
559
|
+
async applyRefactoring(suggestionId) {
|
|
560
|
+
const suggestion = this.refactoringSuggestions.find((s) => s.id === suggestionId);
|
|
561
|
+
if (!suggestion)
|
|
562
|
+
return false;
|
|
563
|
+
try {
|
|
564
|
+
const filePath = path_1.default.join(process.cwd(), suggestion.file);
|
|
565
|
+
let content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
566
|
+
// Apply the refactoring
|
|
567
|
+
content = content.replace(suggestion.before, suggestion.after);
|
|
568
|
+
await fs_extra_1.default.writeFile(filePath, content);
|
|
569
|
+
console.log(`✅ Applied refactoring: ${suggestion.description}`);
|
|
570
|
+
return true;
|
|
571
|
+
}
|
|
572
|
+
catch (error) {
|
|
573
|
+
console.error(`❌ Failed to apply refactoring: ${error}`);
|
|
574
|
+
return false;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
async applyPerformanceOptimization(optimizationId) {
|
|
578
|
+
const optimization = this.performanceOptimizations.find((o) => o.id === optimizationId);
|
|
579
|
+
if (!optimization)
|
|
580
|
+
return false;
|
|
581
|
+
try {
|
|
582
|
+
const filePath = path_1.default.join(process.cwd(), optimization.file);
|
|
583
|
+
let content = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
584
|
+
// Apply the optimization (implementation would be more sophisticated)
|
|
585
|
+
console.log(`✅ Applied optimization: ${optimization.description}`);
|
|
586
|
+
console.log(`📈 Expected improvement: ${optimization.metrics.improvement}`);
|
|
587
|
+
return true;
|
|
588
|
+
}
|
|
589
|
+
catch (error) {
|
|
590
|
+
console.error(`❌ Failed to apply optimization: ${error}`);
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
async generateReport() {
|
|
595
|
+
const report = `
|
|
596
|
+
# Code Evolution Report
|
|
597
|
+
|
|
598
|
+
## Summary
|
|
599
|
+
- **Refactoring Suggestions**: ${this.refactoringSuggestions.length}
|
|
600
|
+
- **Performance Optimizations**: ${this.performanceOptimizations.length}
|
|
601
|
+
- **Security Hardening**: ${this.securityHardening.length}
|
|
602
|
+
- **Accessibility Enhancements**: ${this.accessibilityEnhancements.length}
|
|
603
|
+
|
|
604
|
+
## High Priority Items
|
|
605
|
+
${this.getHighPriorityItems()}
|
|
606
|
+
|
|
607
|
+
## Quick Wins
|
|
608
|
+
${this.getQuickWins()}
|
|
609
|
+
|
|
610
|
+
## Generated: ${new Date().toISOString()}
|
|
611
|
+
`;
|
|
612
|
+
const reportPath = path_1.default.join(process.cwd(), ".mycontext", "evolution-report.md");
|
|
613
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(reportPath));
|
|
614
|
+
await fs_extra_1.default.writeFile(reportPath, report);
|
|
615
|
+
return reportPath;
|
|
616
|
+
}
|
|
617
|
+
getHighPriorityItems() {
|
|
618
|
+
const highPriority = [
|
|
619
|
+
...this.refactoringSuggestions.filter((s) => s.priority === "high" || s.priority === "critical"),
|
|
620
|
+
...this.securityHardening.filter((s) => s.severity === "high" || s.severity === "critical"),
|
|
621
|
+
];
|
|
622
|
+
return highPriority
|
|
623
|
+
.slice(0, 5)
|
|
624
|
+
.map((item, idx) => `${idx + 1}. ${"description" in item ? item.description : item.vulnerability} (${item.file})`)
|
|
625
|
+
.join("\n");
|
|
626
|
+
}
|
|
627
|
+
getQuickWins() {
|
|
628
|
+
const quickWins = [
|
|
629
|
+
...this.refactoringSuggestions.filter((s) => s.estimatedEffort.includes("30 minutes")),
|
|
630
|
+
...this.accessibilityEnhancements.filter((a) => a.automated),
|
|
631
|
+
];
|
|
632
|
+
return quickWins
|
|
633
|
+
.slice(0, 3)
|
|
634
|
+
.map((item, idx) => `${idx + 1}. ${"description" in item ? item.description : item.issue} (${item.file})`)
|
|
635
|
+
.join("\n");
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
exports.CodeEvolutionEngineImpl = CodeEvolutionEngineImpl;
|
|
639
|
+
//# sourceMappingURL=CodeEvolutionEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeEvolutionEngine.js","sourceRoot":"","sources":["../../../src/agents/evolution/CodeEvolutionEngine.ts"],"names":[],"mappings":"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"}
|