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,453 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecurityAgent = void 0;
|
|
4
|
+
class SecurityAgent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = "SecurityAgent";
|
|
7
|
+
this.description = "Security analysis, vulnerability scanning, and secure coding practices";
|
|
8
|
+
this.personality = "vigilant";
|
|
9
|
+
this.llmProvider = "github";
|
|
10
|
+
this.expertise = ["security", "compliance", "vulnerability-assessment"];
|
|
11
|
+
}
|
|
12
|
+
async run(input) {
|
|
13
|
+
return this.execute(input);
|
|
14
|
+
}
|
|
15
|
+
async execute(input) {
|
|
16
|
+
const { code, component, context } = input;
|
|
17
|
+
try {
|
|
18
|
+
// Perform security analysis
|
|
19
|
+
const vulnerabilities = await this.scanVulnerabilities(code, component);
|
|
20
|
+
const securityChecks = await this.performSecurityChecks(code, component);
|
|
21
|
+
const recommendations = await this.generateSecurityRecommendations(vulnerabilities, component);
|
|
22
|
+
return {
|
|
23
|
+
vulnerabilities,
|
|
24
|
+
securityChecks,
|
|
25
|
+
recommendations,
|
|
26
|
+
score: this.calculateSecurityScore(vulnerabilities, securityChecks),
|
|
27
|
+
complianceStatus: this.checkCompliance(component, securityChecks),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error(`Security analysis failed: ${error.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async scanVulnerabilities(code, component) {
|
|
35
|
+
const vulnerabilities = [];
|
|
36
|
+
// XSS Detection
|
|
37
|
+
const xssVulns = this.detectXSS(code);
|
|
38
|
+
vulnerabilities.push(...xssVulns);
|
|
39
|
+
// CSRF Detection
|
|
40
|
+
const csrfVulns = this.detectCSRF(code, component);
|
|
41
|
+
vulnerabilities.push(...csrfVulns);
|
|
42
|
+
// Injection Vulnerabilities
|
|
43
|
+
const injectionVulns = this.detectInjection(code);
|
|
44
|
+
vulnerabilities.push(...injectionVulns);
|
|
45
|
+
// Authentication Issues
|
|
46
|
+
const authVulns = this.detectAuthenticationIssues(code, component);
|
|
47
|
+
vulnerabilities.push(...authVulns);
|
|
48
|
+
// Data Exposure
|
|
49
|
+
const dataVulns = this.detectDataExposure(code);
|
|
50
|
+
vulnerabilities.push(...dataVulns);
|
|
51
|
+
return vulnerabilities;
|
|
52
|
+
}
|
|
53
|
+
detectXSS(code) {
|
|
54
|
+
const vulnerabilities = [];
|
|
55
|
+
// Dangerous innerHTML usage
|
|
56
|
+
if (code.includes("dangerouslySetInnerHTML") &&
|
|
57
|
+
!code.includes("DOMPurify")) {
|
|
58
|
+
vulnerabilities.push({
|
|
59
|
+
type: "XSS",
|
|
60
|
+
severity: "high",
|
|
61
|
+
description: "Potential XSS vulnerability: dangerouslySetInnerHTML without sanitization",
|
|
62
|
+
location: "dangerouslySetInnerHTML usage",
|
|
63
|
+
fix: "Use DOMPurify or avoid dangerouslySetInnerHTML",
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// Direct HTML injection
|
|
67
|
+
const htmlInjectionPattern = /innerHTML\s*=\s*[^;]+(?:props|state|input)/;
|
|
68
|
+
if (htmlInjectionPattern.test(code)) {
|
|
69
|
+
vulnerabilities.push({
|
|
70
|
+
type: "XSS",
|
|
71
|
+
severity: "high",
|
|
72
|
+
description: "Direct HTML injection detected",
|
|
73
|
+
location: "innerHTML assignment",
|
|
74
|
+
fix: "Sanitize input or use textContent instead",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Unsafe eval usage
|
|
78
|
+
if (code.includes("eval(") || code.includes("Function(")) {
|
|
79
|
+
vulnerabilities.push({
|
|
80
|
+
type: "XSS",
|
|
81
|
+
severity: "critical",
|
|
82
|
+
description: "Unsafe eval() or Function() usage detected",
|
|
83
|
+
location: "eval/Function call",
|
|
84
|
+
fix: "Replace with safer alternatives",
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return vulnerabilities;
|
|
88
|
+
}
|
|
89
|
+
detectCSRF(code, component) {
|
|
90
|
+
const vulnerabilities = [];
|
|
91
|
+
// Check for forms without CSRF protection
|
|
92
|
+
if (code.includes("<form") || code.includes("form onSubmit")) {
|
|
93
|
+
if (!code.includes("csrf") &&
|
|
94
|
+
!code.includes("token") &&
|
|
95
|
+
!code.includes("_token")) {
|
|
96
|
+
vulnerabilities.push({
|
|
97
|
+
type: "CSRF",
|
|
98
|
+
severity: "medium",
|
|
99
|
+
description: "Form submission without CSRF protection",
|
|
100
|
+
location: "form element",
|
|
101
|
+
fix: "Add CSRF token to form submissions",
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Check for state-changing operations
|
|
106
|
+
const stateChangingMethods = ["POST", "PUT", "DELETE", "PATCH"];
|
|
107
|
+
for (const method of stateChangingMethods) {
|
|
108
|
+
if (code.includes(`method: '${method}'`) ||
|
|
109
|
+
code.includes(`method: "${method}"`)) {
|
|
110
|
+
if (!code.includes("csrf") && !code.includes("token")) {
|
|
111
|
+
vulnerabilities.push({
|
|
112
|
+
type: "CSRF",
|
|
113
|
+
severity: "medium",
|
|
114
|
+
description: `${method} request without CSRF protection`,
|
|
115
|
+
location: `${method} request`,
|
|
116
|
+
fix: "Include CSRF token in request headers",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return vulnerabilities;
|
|
122
|
+
}
|
|
123
|
+
detectInjection(code) {
|
|
124
|
+
const vulnerabilities = [];
|
|
125
|
+
// SQL Injection (for server-side code)
|
|
126
|
+
const sqlInjectionPattern = /(?:SELECT|INSERT|UPDATE|DELETE).*(?:\$\{|`\$\{|\+.*\$)/i;
|
|
127
|
+
if (sqlInjectionPattern.test(code)) {
|
|
128
|
+
vulnerabilities.push({
|
|
129
|
+
type: "SQL_INJECTION",
|
|
130
|
+
severity: "critical",
|
|
131
|
+
description: "Potential SQL injection vulnerability",
|
|
132
|
+
location: "SQL query construction",
|
|
133
|
+
fix: "Use parameterized queries or ORM",
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// Command Injection
|
|
137
|
+
const commandInjectionPattern = /(?:exec|spawn|system).*(?:\$\{|`\$\{|\+.*\$)/;
|
|
138
|
+
if (commandInjectionPattern.test(code)) {
|
|
139
|
+
vulnerabilities.push({
|
|
140
|
+
type: "COMMAND_INJECTION",
|
|
141
|
+
severity: "critical",
|
|
142
|
+
description: "Potential command injection vulnerability",
|
|
143
|
+
location: "system command execution",
|
|
144
|
+
fix: "Validate and sanitize all inputs to system commands",
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// Path Traversal
|
|
148
|
+
if (code.includes("..") &&
|
|
149
|
+
(code.includes("readFile") || code.includes("writeFile"))) {
|
|
150
|
+
vulnerabilities.push({
|
|
151
|
+
type: "PATH_TRAVERSAL",
|
|
152
|
+
severity: "high",
|
|
153
|
+
description: "Potential path traversal vulnerability",
|
|
154
|
+
location: "file system access",
|
|
155
|
+
fix: "Validate file paths and use path.resolve()",
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return vulnerabilities;
|
|
159
|
+
}
|
|
160
|
+
detectAuthenticationIssues(code, component) {
|
|
161
|
+
const vulnerabilities = [];
|
|
162
|
+
// Hardcoded credentials
|
|
163
|
+
const credentialPatterns = [
|
|
164
|
+
/password\s*[:=]\s*['"][^'"]+['"]/i,
|
|
165
|
+
/secret\s*[:=]\s*['"][^'"]+['"]/i,
|
|
166
|
+
/api_?key\s*[:=]\s*['"][^'"]+['"]/i,
|
|
167
|
+
/token\s*[:=]\s*['"][^'"]+['"]/i,
|
|
168
|
+
];
|
|
169
|
+
for (const pattern of credentialPatterns) {
|
|
170
|
+
if (pattern.test(code)) {
|
|
171
|
+
vulnerabilities.push({
|
|
172
|
+
type: "HARDCODED_CREDENTIALS",
|
|
173
|
+
severity: "critical",
|
|
174
|
+
description: "Hardcoded credentials detected",
|
|
175
|
+
location: "credential assignment",
|
|
176
|
+
fix: "Move credentials to environment variables",
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Weak password requirements
|
|
181
|
+
if (code.includes("password") &&
|
|
182
|
+
!code.includes("strength") &&
|
|
183
|
+
!code.includes("validation")) {
|
|
184
|
+
vulnerabilities.push({
|
|
185
|
+
type: "WEAK_PASSWORD_POLICY",
|
|
186
|
+
severity: "medium",
|
|
187
|
+
description: "Password input without strength validation",
|
|
188
|
+
location: "password field",
|
|
189
|
+
fix: "Implement password strength requirements",
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
// Session management issues
|
|
193
|
+
if (code.includes("localStorage") &&
|
|
194
|
+
(code.includes("token") || code.includes("session"))) {
|
|
195
|
+
vulnerabilities.push({
|
|
196
|
+
type: "INSECURE_STORAGE",
|
|
197
|
+
severity: "medium",
|
|
198
|
+
description: "Sensitive data stored in localStorage",
|
|
199
|
+
location: "localStorage usage",
|
|
200
|
+
fix: "Use secure, httpOnly cookies or sessionStorage for sensitive data",
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return vulnerabilities;
|
|
204
|
+
}
|
|
205
|
+
detectDataExposure(code) {
|
|
206
|
+
const vulnerabilities = [];
|
|
207
|
+
// Console.log with sensitive data
|
|
208
|
+
if (code.includes("console.log") &&
|
|
209
|
+
(code.includes("password") ||
|
|
210
|
+
code.includes("token") ||
|
|
211
|
+
code.includes("secret"))) {
|
|
212
|
+
vulnerabilities.push({
|
|
213
|
+
type: "DATA_EXPOSURE",
|
|
214
|
+
severity: "medium",
|
|
215
|
+
description: "Sensitive data logged to console",
|
|
216
|
+
location: "console.log statement",
|
|
217
|
+
fix: "Remove or mask sensitive data in logs",
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
// Error messages exposing internal info
|
|
221
|
+
if (code.includes("throw new Error") &&
|
|
222
|
+
(code.includes("database") || code.includes("internal"))) {
|
|
223
|
+
vulnerabilities.push({
|
|
224
|
+
type: "INFORMATION_DISCLOSURE",
|
|
225
|
+
severity: "low",
|
|
226
|
+
description: "Error messages may expose internal information",
|
|
227
|
+
location: "error handling",
|
|
228
|
+
fix: "Use generic error messages for users",
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// Unmasked sensitive inputs
|
|
232
|
+
if (code.includes('type="text"') &&
|
|
233
|
+
(code.includes("password") ||
|
|
234
|
+
code.includes("ssn") ||
|
|
235
|
+
code.includes("credit"))) {
|
|
236
|
+
vulnerabilities.push({
|
|
237
|
+
type: "DATA_EXPOSURE",
|
|
238
|
+
severity: "medium",
|
|
239
|
+
description: "Sensitive input field not properly masked",
|
|
240
|
+
location: "input field",
|
|
241
|
+
fix: "Use appropriate input types (password, etc.)",
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
return vulnerabilities;
|
|
245
|
+
}
|
|
246
|
+
async performSecurityChecks(code, component) {
|
|
247
|
+
return {
|
|
248
|
+
inputValidation: this.checkInputValidation(code),
|
|
249
|
+
outputEncoding: this.checkOutputEncoding(code),
|
|
250
|
+
accessControl: this.checkAccessControl(code, component),
|
|
251
|
+
dataProtection: this.checkDataProtection(code),
|
|
252
|
+
communicationSecurity: this.checkCommunicationSecurity(code),
|
|
253
|
+
errorHandling: this.checkErrorHandling(code),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
checkInputValidation(code) {
|
|
257
|
+
const checks = {
|
|
258
|
+
hasValidation: false,
|
|
259
|
+
validationLibrary: null,
|
|
260
|
+
sanitization: false,
|
|
261
|
+
typeChecking: false,
|
|
262
|
+
};
|
|
263
|
+
// Check for validation libraries
|
|
264
|
+
if (code.includes("zod") || code.includes("yup") || code.includes("joi")) {
|
|
265
|
+
checks.hasValidation = true;
|
|
266
|
+
if (code.includes("zod"))
|
|
267
|
+
checks.validationLibrary = "zod";
|
|
268
|
+
else if (code.includes("yup"))
|
|
269
|
+
checks.validationLibrary = "yup";
|
|
270
|
+
else if (code.includes("joi"))
|
|
271
|
+
checks.validationLibrary = "joi";
|
|
272
|
+
}
|
|
273
|
+
// Check for sanitization
|
|
274
|
+
if (code.includes("DOMPurify") || code.includes("sanitize")) {
|
|
275
|
+
checks.sanitization = true;
|
|
276
|
+
}
|
|
277
|
+
// Check for TypeScript
|
|
278
|
+
if (code.includes("interface ") || code.includes("type ")) {
|
|
279
|
+
checks.typeChecking = true;
|
|
280
|
+
}
|
|
281
|
+
return checks;
|
|
282
|
+
}
|
|
283
|
+
checkOutputEncoding(code) {
|
|
284
|
+
return {
|
|
285
|
+
hasEncoding: code.includes("encodeURIComponent") || code.includes("escape"),
|
|
286
|
+
htmlEscaping: code.includes("escape") || code.includes("htmlEntities"),
|
|
287
|
+
jsonSerialization: code.includes("JSON.stringify"),
|
|
288
|
+
contentTypeHeaders: code.includes("Content-Type"),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
checkAccessControl(code, component) {
|
|
292
|
+
return {
|
|
293
|
+
hasAuthentication: code.includes("auth") || code.includes("login"),
|
|
294
|
+
hasAuthorization: code.includes("permission") || code.includes("role"),
|
|
295
|
+
routeProtection: code.includes("protected") || code.includes("guard"),
|
|
296
|
+
roleBasedAccess: code.includes("role") && code.includes("check"),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
checkDataProtection(code) {
|
|
300
|
+
return {
|
|
301
|
+
encryption: code.includes("encrypt") || code.includes("crypto"),
|
|
302
|
+
hashing: code.includes("hash") || code.includes("bcrypt"),
|
|
303
|
+
secureTransmission: code.includes("https") || code.includes("ssl"),
|
|
304
|
+
dataMinimization: !code.includes(".*"), // Simplified check
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
checkCommunicationSecurity(code) {
|
|
308
|
+
return {
|
|
309
|
+
httpsOnly: !code.includes("http://"),
|
|
310
|
+
secureHeaders: code.includes("helmet") || code.includes("security-headers"),
|
|
311
|
+
corsConfiguration: code.includes("cors"),
|
|
312
|
+
certificateValidation: code.includes("cert") || code.includes("ssl"),
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
checkErrorHandling(code) {
|
|
316
|
+
return {
|
|
317
|
+
hasErrorBoundaries: code.includes("ErrorBoundary") || code.includes("componentDidCatch"),
|
|
318
|
+
sanitizedErrors: !code.includes("console.error") || code.includes("sanitize"),
|
|
319
|
+
logSecurity: code.includes("winston") || code.includes("pino"),
|
|
320
|
+
gracefulDegradation: code.includes("fallback") || code.includes("catch"),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
async generateSecurityRecommendations(vulnerabilities, component) {
|
|
324
|
+
const recommendations = [];
|
|
325
|
+
// High-severity recommendations
|
|
326
|
+
const criticalVulns = vulnerabilities.filter((v) => v.severity === "critical");
|
|
327
|
+
if (criticalVulns.length > 0) {
|
|
328
|
+
recommendations.push("🚨 CRITICAL: Address critical security vulnerabilities immediately");
|
|
329
|
+
criticalVulns.forEach((vuln) => {
|
|
330
|
+
recommendations.push(` - ${vuln.description}: ${vuln.fix}`);
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
// Authentication recommendations
|
|
334
|
+
if (component.name.includes("Login") || component.name.includes("Auth")) {
|
|
335
|
+
recommendations.push("Implement multi-factor authentication");
|
|
336
|
+
recommendations.push("Use secure session management");
|
|
337
|
+
recommendations.push("Implement account lockout mechanisms");
|
|
338
|
+
}
|
|
339
|
+
// Form security recommendations
|
|
340
|
+
if (component.type === "form" || component.name.includes("Form")) {
|
|
341
|
+
recommendations.push("Add CSRF protection to all forms");
|
|
342
|
+
recommendations.push("Implement input validation and sanitization");
|
|
343
|
+
recommendations.push("Use HTTPS for all form submissions");
|
|
344
|
+
}
|
|
345
|
+
// API security recommendations
|
|
346
|
+
if (component.context?.includes("api") ||
|
|
347
|
+
component.dependencies?.includes("fetch")) {
|
|
348
|
+
recommendations.push("Implement API rate limiting");
|
|
349
|
+
recommendations.push("Use proper authentication headers");
|
|
350
|
+
recommendations.push("Validate all API responses");
|
|
351
|
+
}
|
|
352
|
+
// General security recommendations
|
|
353
|
+
recommendations.push("Regular security audits and dependency updates");
|
|
354
|
+
recommendations.push("Implement Content Security Policy (CSP)");
|
|
355
|
+
recommendations.push("Use security headers (HSTS, X-Frame-Options, etc.)");
|
|
356
|
+
return recommendations;
|
|
357
|
+
}
|
|
358
|
+
calculateSecurityScore(vulnerabilities, securityChecks) {
|
|
359
|
+
let score = 100;
|
|
360
|
+
// Deduct points for vulnerabilities
|
|
361
|
+
vulnerabilities.forEach((vuln) => {
|
|
362
|
+
switch (vuln.severity) {
|
|
363
|
+
case "critical":
|
|
364
|
+
score -= 25;
|
|
365
|
+
break;
|
|
366
|
+
case "high":
|
|
367
|
+
score -= 15;
|
|
368
|
+
break;
|
|
369
|
+
case "medium":
|
|
370
|
+
score -= 10;
|
|
371
|
+
break;
|
|
372
|
+
case "low":
|
|
373
|
+
score -= 5;
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
// Add points for security measures
|
|
378
|
+
if (securityChecks.inputValidation.hasValidation)
|
|
379
|
+
score += 5;
|
|
380
|
+
if (securityChecks.outputEncoding.hasEncoding)
|
|
381
|
+
score += 3;
|
|
382
|
+
if (securityChecks.accessControl.hasAuthentication)
|
|
383
|
+
score += 5;
|
|
384
|
+
if (securityChecks.dataProtection.encryption)
|
|
385
|
+
score += 5;
|
|
386
|
+
if (securityChecks.communicationSecurity.httpsOnly)
|
|
387
|
+
score += 3;
|
|
388
|
+
if (securityChecks.errorHandling.hasErrorBoundaries)
|
|
389
|
+
score += 2;
|
|
390
|
+
return Math.max(0, Math.min(100, score));
|
|
391
|
+
}
|
|
392
|
+
checkCompliance(component, securityChecks) {
|
|
393
|
+
return {
|
|
394
|
+
owasp: this.checkOWASPCompliance(securityChecks),
|
|
395
|
+
gdpr: this.checkGDPRCompliance(component, securityChecks),
|
|
396
|
+
pci: this.checkPCICompliance(component, securityChecks),
|
|
397
|
+
hipaa: this.checkHIPAACompliance(component, securityChecks),
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
checkOWASPCompliance(securityChecks) {
|
|
401
|
+
const checks = [];
|
|
402
|
+
if (securityChecks.inputValidation.hasValidation)
|
|
403
|
+
checks.push("Input Validation");
|
|
404
|
+
if (securityChecks.outputEncoding.hasEncoding)
|
|
405
|
+
checks.push("Output Encoding");
|
|
406
|
+
if (securityChecks.accessControl.hasAuthentication)
|
|
407
|
+
checks.push("Authentication");
|
|
408
|
+
if (securityChecks.dataProtection.encryption)
|
|
409
|
+
checks.push("Data Protection");
|
|
410
|
+
if (securityChecks.communicationSecurity.httpsOnly)
|
|
411
|
+
checks.push("Secure Communication");
|
|
412
|
+
return {
|
|
413
|
+
compliant: checks.length >= 4,
|
|
414
|
+
checks,
|
|
415
|
+
missing: 5 - checks.length,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
checkGDPRCompliance(component, securityChecks) {
|
|
419
|
+
const hasDataProcessing = component.context?.includes("user") ||
|
|
420
|
+
component.context?.includes("personal");
|
|
421
|
+
return {
|
|
422
|
+
applicable: hasDataProcessing,
|
|
423
|
+
dataMinimization: securityChecks.dataProtection.dataMinimization,
|
|
424
|
+
encryptionAtRest: securityChecks.dataProtection.encryption,
|
|
425
|
+
encryptionInTransit: securityChecks.communicationSecurity.httpsOnly,
|
|
426
|
+
needsConsentMechanism: hasDataProcessing,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
checkPCICompliance(component, securityChecks) {
|
|
430
|
+
const hasPaymentData = component.context?.includes("payment") ||
|
|
431
|
+
component.context?.includes("card");
|
|
432
|
+
return {
|
|
433
|
+
applicable: hasPaymentData,
|
|
434
|
+
dataEncryption: securityChecks.dataProtection.encryption,
|
|
435
|
+
secureTransmission: securityChecks.communicationSecurity.httpsOnly,
|
|
436
|
+
accessControl: securityChecks.accessControl.hasAuthorization,
|
|
437
|
+
needsTokenization: hasPaymentData,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
checkHIPAACompliance(component, securityChecks) {
|
|
441
|
+
const hasHealthData = component.context?.includes("health") ||
|
|
442
|
+
component.context?.includes("medical");
|
|
443
|
+
return {
|
|
444
|
+
applicable: hasHealthData,
|
|
445
|
+
dataEncryption: securityChecks.dataProtection.encryption,
|
|
446
|
+
accessControl: securityChecks.accessControl.roleBasedAccess,
|
|
447
|
+
auditLogging: securityChecks.errorHandling.logSecurity,
|
|
448
|
+
needsBAA: hasHealthData,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
exports.SecurityAgent = SecurityAgent;
|
|
453
|
+
//# sourceMappingURL=SecurityAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/SecurityAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export interface ProjectIntelligence {
|
|
2
|
+
codebaseAwareness: CodebaseMap;
|
|
3
|
+
architecturalPatterns: ArchitecturalPattern[];
|
|
4
|
+
domainKnowledge: DomainKnowledge;
|
|
5
|
+
historicalDecisions: DecisionRecord[];
|
|
6
|
+
}
|
|
7
|
+
export interface CodebaseMap {
|
|
8
|
+
files: FileMetadata[];
|
|
9
|
+
dependencies: DependencyGraph;
|
|
10
|
+
componentHierarchy: ComponentHierarchy;
|
|
11
|
+
apiEndpoints: APIEndpoint[];
|
|
12
|
+
}
|
|
13
|
+
export interface ArchitecturalPattern {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
pattern: string;
|
|
17
|
+
frequency: number;
|
|
18
|
+
confidence: number;
|
|
19
|
+
examples: string[];
|
|
20
|
+
context: string;
|
|
21
|
+
}
|
|
22
|
+
export interface DomainKnowledge {
|
|
23
|
+
businessTerms: BusinessTerm[];
|
|
24
|
+
userPersonas: UserPersona[];
|
|
25
|
+
workflows: BusinessWorkflow[];
|
|
26
|
+
rules: BusinessRule[];
|
|
27
|
+
}
|
|
28
|
+
export interface DecisionRecord {
|
|
29
|
+
id: string;
|
|
30
|
+
decision: string;
|
|
31
|
+
reasoning: string;
|
|
32
|
+
alternatives: string[];
|
|
33
|
+
timestamp: Date;
|
|
34
|
+
context: Record<string, any>;
|
|
35
|
+
outcome?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface FileMetadata {
|
|
38
|
+
path: string;
|
|
39
|
+
type: "component" | "page" | "api" | "utility" | "test" | "config";
|
|
40
|
+
language: string;
|
|
41
|
+
complexity: number;
|
|
42
|
+
dependencies: string[];
|
|
43
|
+
exports: string[];
|
|
44
|
+
patterns: string[];
|
|
45
|
+
lastModified: Date;
|
|
46
|
+
}
|
|
47
|
+
export declare class ProjectIntelligenceEngine {
|
|
48
|
+
private projectPath;
|
|
49
|
+
private intelligence;
|
|
50
|
+
constructor(projectPath?: string);
|
|
51
|
+
analyzeProject(): Promise<ProjectIntelligence>;
|
|
52
|
+
private analyzeCodebase;
|
|
53
|
+
private analyzeFile;
|
|
54
|
+
private detectFileType;
|
|
55
|
+
private detectLanguage;
|
|
56
|
+
private calculateComplexity;
|
|
57
|
+
private extractDependencies;
|
|
58
|
+
private extractExports;
|
|
59
|
+
private detectPatterns;
|
|
60
|
+
private analyzeAPIRoutes;
|
|
61
|
+
private extractHTTPMethods;
|
|
62
|
+
private convertFilePathToRoute;
|
|
63
|
+
private extractMiddleware;
|
|
64
|
+
private extractParameters;
|
|
65
|
+
private extractPatterns;
|
|
66
|
+
private findPatternExamples;
|
|
67
|
+
private determinePatternContext;
|
|
68
|
+
private extractDomainKnowledge;
|
|
69
|
+
private extractFromPRD;
|
|
70
|
+
private extractFromTypes;
|
|
71
|
+
private extractFromBrand;
|
|
72
|
+
private loadHistoricalDecisions;
|
|
73
|
+
recordDecision(decision: Omit<DecisionRecord, "id" | "timestamp">): Promise<void>;
|
|
74
|
+
private saveHistoricalDecisions;
|
|
75
|
+
private saveIntelligenceCache;
|
|
76
|
+
getRecommendations(): Promise<string[]>;
|
|
77
|
+
}
|
|
78
|
+
interface APIEndpoint {
|
|
79
|
+
path: string;
|
|
80
|
+
methods: string[];
|
|
81
|
+
file: string;
|
|
82
|
+
middleware: string[];
|
|
83
|
+
parameters: string[];
|
|
84
|
+
}
|
|
85
|
+
interface ComponentHierarchy {
|
|
86
|
+
[componentName: string]: {
|
|
87
|
+
children: string[];
|
|
88
|
+
parent?: string;
|
|
89
|
+
props: string[];
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
interface DependencyGraph {
|
|
93
|
+
[fileName: string]: string[];
|
|
94
|
+
}
|
|
95
|
+
interface BusinessTerm {
|
|
96
|
+
term: string;
|
|
97
|
+
definition: string;
|
|
98
|
+
context: string;
|
|
99
|
+
aliases: string[];
|
|
100
|
+
}
|
|
101
|
+
interface UserPersona {
|
|
102
|
+
name: string;
|
|
103
|
+
description: string;
|
|
104
|
+
needs: string[];
|
|
105
|
+
behaviors: string[];
|
|
106
|
+
}
|
|
107
|
+
interface BusinessWorkflow {
|
|
108
|
+
id: string;
|
|
109
|
+
name: string;
|
|
110
|
+
steps: WorkflowStep[];
|
|
111
|
+
actors: string[];
|
|
112
|
+
}
|
|
113
|
+
interface WorkflowStep {
|
|
114
|
+
id: string;
|
|
115
|
+
action: string;
|
|
116
|
+
actor: string;
|
|
117
|
+
condition?: string;
|
|
118
|
+
}
|
|
119
|
+
interface BusinessRule {
|
|
120
|
+
id: string;
|
|
121
|
+
rule: string;
|
|
122
|
+
description: string;
|
|
123
|
+
scope: string;
|
|
124
|
+
priority: "low" | "medium" | "high";
|
|
125
|
+
}
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=ProjectIntelligence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectIntelligence.d.ts","sourceRoot":"","sources":["../../../src/agents/intelligence/ProjectIntelligence.ts"],"names":[],"mappings":"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"}
|