@theihtisham/agent-shadow-brain 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +443 -602
- package/dist/brain/adversarial-defense.d.ts +57 -0
- package/dist/brain/adversarial-defense.d.ts.map +1 -0
- package/dist/brain/adversarial-defense.js +303 -0
- package/dist/brain/adversarial-defense.js.map +1 -0
- package/dist/brain/cognitive-load.d.ts +27 -0
- package/dist/brain/cognitive-load.d.ts.map +1 -0
- package/dist/brain/cognitive-load.js +304 -0
- package/dist/brain/cognitive-load.js.map +1 -0
- package/dist/brain/cross-agent-protocol.d.ts +48 -0
- package/dist/brain/cross-agent-protocol.d.ts.map +1 -0
- package/dist/brain/cross-agent-protocol.js +306 -0
- package/dist/brain/cross-agent-protocol.js.map +1 -0
- package/dist/brain/influence-map.d.ts +31 -0
- package/dist/brain/influence-map.d.ts.map +1 -0
- package/dist/brain/influence-map.js +375 -0
- package/dist/brain/influence-map.js.map +1 -0
- package/dist/brain/knowledge-graph.d.ts +56 -0
- package/dist/brain/knowledge-graph.d.ts.map +1 -0
- package/dist/brain/knowledge-graph.js +427 -0
- package/dist/brain/knowledge-graph.js.map +1 -0
- package/dist/brain/learning-engine.d.ts +11 -0
- package/dist/brain/learning-engine.d.ts.map +1 -1
- package/dist/brain/learning-engine.js +44 -1
- package/dist/brain/learning-engine.js.map +1 -1
- package/dist/brain/neural-mesh.d.ts +9 -1
- package/dist/brain/neural-mesh.d.ts.map +1 -1
- package/dist/brain/neural-mesh.js +75 -16
- package/dist/brain/neural-mesh.js.map +1 -1
- package/dist/brain/orchestrator.d.ts +24 -2
- package/dist/brain/orchestrator.d.ts.map +1 -1
- package/dist/brain/orchestrator.js +208 -4
- package/dist/brain/orchestrator.js.map +1 -1
- package/dist/brain/pattern-memory.d.ts +8 -3
- package/dist/brain/pattern-memory.d.ts.map +1 -1
- package/dist/brain/pattern-memory.js +71 -3
- package/dist/brain/pattern-memory.js.map +1 -1
- package/dist/brain/predictive-engine.d.ts +45 -0
- package/dist/brain/predictive-engine.d.ts.map +1 -0
- package/dist/brain/predictive-engine.js +238 -0
- package/dist/brain/predictive-engine.js.map +1 -0
- package/dist/brain/security-audit.d.ts +20 -0
- package/dist/brain/security-audit.d.ts.map +1 -0
- package/dist/brain/security-audit.js +340 -0
- package/dist/brain/security-audit.js.map +1 -0
- package/dist/brain/self-evolution.d.ts +53 -0
- package/dist/brain/self-evolution.d.ts.map +1 -0
- package/dist/brain/self-evolution.js +278 -0
- package/dist/brain/self-evolution.js.map +1 -0
- package/dist/brain/sssp-router.d.ts +58 -0
- package/dist/brain/sssp-router.d.ts.map +1 -0
- package/dist/brain/sssp-router.js +295 -0
- package/dist/brain/sssp-router.js.map +1 -0
- package/dist/brain/swarm-intelligence.d.ts +48 -0
- package/dist/brain/swarm-intelligence.d.ts.map +1 -0
- package/dist/brain/swarm-intelligence.js +215 -0
- package/dist/brain/swarm-intelligence.js.map +1 -0
- package/dist/brain/turbo-memory.d.ts +56 -0
- package/dist/brain/turbo-memory.d.ts.map +1 -0
- package/dist/brain/turbo-memory.js +388 -0
- package/dist/brain/turbo-memory.js.map +1 -0
- package/dist/cli.js +339 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +272 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/dashboard.d.ts.map +1 -1
- package/dist/ui/dashboard.js +20 -3
- package/dist/ui/dashboard.js.map +1 -1
- package/package.json +16 -7
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
// src/brain/security-audit.ts — Deep security audit
|
|
2
|
+
// v3.1.0 — OWASP Top 10 pattern detection via regex-based static analysis
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
const IGNORE_DIRS = new Set([
|
|
6
|
+
'node_modules', '.git', 'dist', 'build', 'out', 'coverage', '.next', '.nuxt', '.cache',
|
|
7
|
+
]);
|
|
8
|
+
const CODE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.py', '.rs', '.go', '.java']);
|
|
9
|
+
const SECURITY_RULES = [
|
|
10
|
+
// 1. CSRF — missing CSRF token in form submissions
|
|
11
|
+
{
|
|
12
|
+
name: 'csrf-missing',
|
|
13
|
+
category: 'CSRF',
|
|
14
|
+
owasp: 'A01:2021-Broken Access Control',
|
|
15
|
+
severity: 'high',
|
|
16
|
+
patterns: [
|
|
17
|
+
/<form[^>]*method\s*=\s*["']POST["'][^>]*>/gi,
|
|
18
|
+
],
|
|
19
|
+
description: 'POST form without CSRF token protection',
|
|
20
|
+
recommendation: 'Add a CSRF token field to all POST forms. Use a CSRF middleware (e.g., csurf for Express) or include a hidden _csrf token field.',
|
|
21
|
+
falsePositiveFilters: [
|
|
22
|
+
/csrf/i,
|
|
23
|
+
/_token/i,
|
|
24
|
+
/authenticity_token/i,
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
// 2. CORS — overly permissive Access-Control-Allow-Origin
|
|
28
|
+
{
|
|
29
|
+
name: 'cors-wildcard',
|
|
30
|
+
category: 'CORS',
|
|
31
|
+
owasp: 'A05:2021-Security Misconfiguration',
|
|
32
|
+
severity: 'high',
|
|
33
|
+
patterns: [
|
|
34
|
+
/Access-Control-Allow-Origin\s*[:=]\s*["']\*["']/gi,
|
|
35
|
+
/cors\s*\(\s*\{\s*origin\s*:\s*["']\*["']/gi,
|
|
36
|
+
/cors\s*\(\s*\{\s*origin\s*:\s*true/gi,
|
|
37
|
+
],
|
|
38
|
+
description: 'CORS configured to allow all origins (*)',
|
|
39
|
+
recommendation: 'Restrict CORS to specific trusted origins. Never use wildcard (*) in production.',
|
|
40
|
+
},
|
|
41
|
+
// 3. Cookie security — missing flags
|
|
42
|
+
{
|
|
43
|
+
name: 'cookie-insecure',
|
|
44
|
+
category: 'Cookie Security',
|
|
45
|
+
owasp: 'A07:2021-Identification and Authentication Failures',
|
|
46
|
+
severity: 'medium',
|
|
47
|
+
patterns: [
|
|
48
|
+
/cookie\s*\(\s*["'][^"']+["']\s*,\s*["'][^"']+["']\s*\)/gi,
|
|
49
|
+
/res\.cookie\s*\(/gi,
|
|
50
|
+
/document\.cookie\s*=/gi,
|
|
51
|
+
/Set-Cookie\s*:/gi,
|
|
52
|
+
],
|
|
53
|
+
description: 'Cookie set without httpOnly, secure, or sameSite flags',
|
|
54
|
+
recommendation: 'Always set httpOnly, secure, and sameSite flags on cookies. Example: res.cookie("name", "value", { httpOnly: true, secure: true, sameSite: "strict" })',
|
|
55
|
+
falsePositiveFilters: [
|
|
56
|
+
/httpOnly/i,
|
|
57
|
+
/secure\s*:\s*true/i,
|
|
58
|
+
/sameSite/i,
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
// 4. CSP — missing Content-Security-Policy
|
|
62
|
+
{
|
|
63
|
+
name: 'csp-missing',
|
|
64
|
+
category: 'CSP',
|
|
65
|
+
owasp: 'A05:2021-Security Misconfiguration',
|
|
66
|
+
severity: 'medium',
|
|
67
|
+
patterns: [
|
|
68
|
+
/Content-Security-Policy\s*:/gi,
|
|
69
|
+
/helmet\s*\(/gi,
|
|
70
|
+
/csp\s*\(\s*\{/gi,
|
|
71
|
+
],
|
|
72
|
+
description: 'Content-Security-Policy header check',
|
|
73
|
+
recommendation: 'Set a Content-Security-Policy header to prevent XSS attacks. Use helmet.js for Express apps.',
|
|
74
|
+
// This rule is inverted: we flag if CSP headers are NOT found (handled in analysis)
|
|
75
|
+
},
|
|
76
|
+
// 5. Open redirect
|
|
77
|
+
{
|
|
78
|
+
name: 'open-redirect',
|
|
79
|
+
category: 'Open Redirect',
|
|
80
|
+
owasp: 'A01:2021-Broken Access Control',
|
|
81
|
+
severity: 'medium',
|
|
82
|
+
patterns: [
|
|
83
|
+
/(?:res|response|ctx)\.redirect\s*\(\s*(?:req|request|ctx)\.(?:query|params|body)\./gi,
|
|
84
|
+
/(?:res|response|ctx)\.redirect\s*\(\s*(?:req|request)\.(?:query|params)\s*[.[\]]/gi,
|
|
85
|
+
/redirect\s*\(\s*req\.query\./gi,
|
|
86
|
+
/window\.location\s*=\s*[^;]*?(?:req|request|ctx)\.(?:query|params)/gi,
|
|
87
|
+
],
|
|
88
|
+
description: 'Potential open redirect via user-controlled input',
|
|
89
|
+
recommendation: 'Validate redirect URLs against an allowlist. Never redirect to user-supplied URLs without verification.',
|
|
90
|
+
},
|
|
91
|
+
// 6. Path traversal
|
|
92
|
+
{
|
|
93
|
+
name: 'path-traversal',
|
|
94
|
+
category: 'Path Traversal',
|
|
95
|
+
owasp: 'A01:2021-Broken Access Control',
|
|
96
|
+
severity: 'critical',
|
|
97
|
+
patterns: [
|
|
98
|
+
/(?:fs|filesystem|file)\.(?:readFile|readFileSync|writeFile|writeFileSync|unlink|unlinkSync|access|accessSync|stat|statSync)\s*\(\s*(?:req|request|ctx)\.(?:params|query|body)\./gi,
|
|
99
|
+
/(?:fs|filesystem)\.\w+\s*\(\s*path\.join\s*\(\s*[^,]+,\s*(?:req|request|ctx)\./gi,
|
|
100
|
+
/\.readFile\s*\(\s*req\.params\./gi,
|
|
101
|
+
/createReadStream\s*\(\s*(?:req|request|ctx)\./gi,
|
|
102
|
+
],
|
|
103
|
+
description: 'Potential path traversal via unsanitized file operations',
|
|
104
|
+
recommendation: 'Sanitize and validate all file paths. Use path.resolve() and verify the resolved path is within the intended directory.',
|
|
105
|
+
},
|
|
106
|
+
// 7. SSRF — Server-Side Request Forgery
|
|
107
|
+
{
|
|
108
|
+
name: 'ssrf',
|
|
109
|
+
category: 'SSRF',
|
|
110
|
+
owasp: 'A10:2021-Server-Side Request Forgery',
|
|
111
|
+
severity: 'critical',
|
|
112
|
+
patterns: [
|
|
113
|
+
/(?:fetch|axios|http\.get|https\.get|request)\s*\(\s*(?:req|request|ctx)\.(?:query|params|body)\.\w+/gi,
|
|
114
|
+
/(?:fetch|axios)\s*\(\s*userInput/gi,
|
|
115
|
+
/http\.get\s*\(\s*(?:userInput|url|uri)/gi,
|
|
116
|
+
],
|
|
117
|
+
description: 'Potential SSRF via user-controlled URL in server-side request',
|
|
118
|
+
recommendation: 'Validate URLs against an allowlist of permitted domains. Never pass user input directly to fetch/http requests.',
|
|
119
|
+
},
|
|
120
|
+
// 8. XXE — XML External Entity
|
|
121
|
+
{
|
|
122
|
+
name: 'xxe',
|
|
123
|
+
category: 'XXE',
|
|
124
|
+
owasp: 'A05:2021-Security Misconfiguration',
|
|
125
|
+
severity: 'critical',
|
|
126
|
+
patterns: [
|
|
127
|
+
/enableExternalEntities\s*[:=]\s*true/gi,
|
|
128
|
+
/XMLReader|SAXParser|DocumentBuilder|xml\.parse|parseXml|parseString/gi,
|
|
129
|
+
],
|
|
130
|
+
description: 'Potential XXE via XML parsing without safe configuration',
|
|
131
|
+
recommendation: 'Disable external entity processing. Set disallowDoctypeDecl=true for Java parsers or use safe XML libraries.',
|
|
132
|
+
falsePositiveFilters: [
|
|
133
|
+
/disallowDoctypeDecl\s*[:=]\s*true/i,
|
|
134
|
+
/externalEntities\s*[:=]\s*false/i,
|
|
135
|
+
/noent\s*[:=]\s*false/i,
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
// Bonus: eval and Function constructor
|
|
139
|
+
{
|
|
140
|
+
name: 'eval-usage',
|
|
141
|
+
category: 'Code Injection',
|
|
142
|
+
owasp: 'A03:2021-Injection',
|
|
143
|
+
severity: 'critical',
|
|
144
|
+
patterns: [
|
|
145
|
+
/(?<![.\w])eval\s*\(/g,
|
|
146
|
+
/new\s+Function\s*\(/g,
|
|
147
|
+
],
|
|
148
|
+
description: 'Use of eval() or Function constructor — potential code injection',
|
|
149
|
+
recommendation: 'Never use eval() or new Function(). Use JSON.parse() for data parsing or refactoring for dynamic behavior.',
|
|
150
|
+
},
|
|
151
|
+
// Bonus: SQL injection patterns
|
|
152
|
+
{
|
|
153
|
+
name: 'sql-injection',
|
|
154
|
+
category: 'SQL Injection',
|
|
155
|
+
owasp: 'A03:2021-Injection',
|
|
156
|
+
severity: 'critical',
|
|
157
|
+
patterns: [
|
|
158
|
+
/(?:query|execute|run|raw)\s*\(\s*["'`][^"'`]*(?:\$\{|`\$\{|\+).*["'`]/gi,
|
|
159
|
+
/(?:query|execute)\s*\(\s*["']SELECT.*\+\s*(?:req|request|ctx|params|user)/gi,
|
|
160
|
+
/string\s*\+\s*["']\s*(?:SELECT|INSERT|UPDATE|DELETE|DROP)/gi,
|
|
161
|
+
],
|
|
162
|
+
description: 'Potential SQL injection via string concatenation',
|
|
163
|
+
recommendation: 'Use parameterized queries or an ORM. Never concatenate user input into SQL strings.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
export class SecurityAuditor {
|
|
167
|
+
constructor(projectDir) {
|
|
168
|
+
this.projectDir = projectDir;
|
|
169
|
+
}
|
|
170
|
+
async analyzeProject(maxFiles = 300) {
|
|
171
|
+
const files = this.collectFiles(this.projectDir, maxFiles);
|
|
172
|
+
const insights = [];
|
|
173
|
+
const allIssues = [];
|
|
174
|
+
for (const filePath of files) {
|
|
175
|
+
const issues = this.analyzeFile(filePath);
|
|
176
|
+
allIssues.push(...issues);
|
|
177
|
+
}
|
|
178
|
+
// Sort by severity (critical first)
|
|
179
|
+
const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
|
|
180
|
+
allIssues.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
|
|
181
|
+
// Generate individual insights
|
|
182
|
+
for (const issue of allIssues) {
|
|
183
|
+
insights.push(this.issueToInsight(issue));
|
|
184
|
+
}
|
|
185
|
+
// Summary insight if many issues found
|
|
186
|
+
const criticalCount = allIssues.filter(i => i.severity === 'critical').length;
|
|
187
|
+
const highCount = allIssues.filter(i => i.severity === 'high').length;
|
|
188
|
+
if (criticalCount + highCount > 0) {
|
|
189
|
+
const categoryCounts = new Map();
|
|
190
|
+
for (const issue of allIssues) {
|
|
191
|
+
categoryCounts.set(issue.category, (categoryCounts.get(issue.category) || 0) + 1);
|
|
192
|
+
}
|
|
193
|
+
const topCategories = [...categoryCounts.entries()]
|
|
194
|
+
.sort((a, b) => b[1] - a[1])
|
|
195
|
+
.slice(0, 5)
|
|
196
|
+
.map(([cat, count]) => ` - ${cat}: ${count} issues`)
|
|
197
|
+
.join('\n');
|
|
198
|
+
insights.push({
|
|
199
|
+
type: 'security',
|
|
200
|
+
priority: criticalCount > 0 ? 'critical' : 'high',
|
|
201
|
+
title: `[security] ${criticalCount + highCount} security issues detected (${criticalCount} critical, ${highCount} high)`,
|
|
202
|
+
content: `Security audit found ${allIssues.length} total issues across the project.\n` +
|
|
203
|
+
` Critical: ${criticalCount}, High: ${highCount}, ` +
|
|
204
|
+
`Medium: ${allIssues.filter(i => i.severity === 'medium').length}, ` +
|
|
205
|
+
`Low: ${allIssues.filter(i => i.severity === 'low').length}\n` +
|
|
206
|
+
` Top categories:\n${topCategories}\n` +
|
|
207
|
+
` Review and fix critical/high issues before deploying to production.`,
|
|
208
|
+
files: [...new Set(allIssues.filter(i => i.severity === 'critical' || i.severity === 'high').map(i => i.file))].slice(0, 20),
|
|
209
|
+
timestamp: new Date(),
|
|
210
|
+
confidence: 0.7,
|
|
211
|
+
metadata: {
|
|
212
|
+
totalIssues: allIssues.length,
|
|
213
|
+
criticalCount,
|
|
214
|
+
highCount,
|
|
215
|
+
categories: Object.fromEntries(categoryCounts),
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return insights;
|
|
220
|
+
}
|
|
221
|
+
analyzeFile(filePath) {
|
|
222
|
+
let content;
|
|
223
|
+
try {
|
|
224
|
+
content = fs.readFileSync(filePath, 'utf-8');
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return [];
|
|
228
|
+
}
|
|
229
|
+
const relPath = path.relative(this.projectDir, filePath);
|
|
230
|
+
const issues = [];
|
|
231
|
+
for (const rule of SECURITY_RULES) {
|
|
232
|
+
for (const pattern of rule.patterns) {
|
|
233
|
+
pattern.lastIndex = 0;
|
|
234
|
+
let match;
|
|
235
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
236
|
+
const line = content.substring(0, match.index).split('\n').length;
|
|
237
|
+
const lineContent = content.split('\n')[line - 1]?.trim() || match[0];
|
|
238
|
+
// Check false positive filters
|
|
239
|
+
if (rule.falsePositiveFilters) {
|
|
240
|
+
// For cookie rule: check the surrounding context (rest of the line or next few lines)
|
|
241
|
+
const contextStart = Math.max(0, match.index - 50);
|
|
242
|
+
const contextEnd = Math.min(content.length, match.index + 200);
|
|
243
|
+
const context = content.substring(contextStart, contextEnd);
|
|
244
|
+
// Special handling for cookie rule: only flag if security flags are NOT present
|
|
245
|
+
if (rule.name === 'cookie-insecure') {
|
|
246
|
+
const hasSecurityFlags = rule.falsePositiveFilters.some(filter => filter.test(context));
|
|
247
|
+
if (hasSecurityFlags)
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
// For XXE: skip if safety measures are present
|
|
251
|
+
if (rule.name === 'xxe' && rule.falsePositiveFilters.length > 0) {
|
|
252
|
+
const contextBlock = content.substring(Math.max(0, match.index - 500), Math.min(content.length, match.index + 500));
|
|
253
|
+
const hasSafety = rule.falsePositiveFilters.some(filter => filter.test(contextBlock));
|
|
254
|
+
if (hasSafety)
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
// For CSRF: check if form has token
|
|
258
|
+
if (rule.name === 'csrf-missing') {
|
|
259
|
+
// Find the closing </form> tag
|
|
260
|
+
const formEnd = content.indexOf('</form>', match.index);
|
|
261
|
+
const formBlock = formEnd !== -1
|
|
262
|
+
? content.substring(match.index, formEnd)
|
|
263
|
+
: content.substring(match.index, Math.min(content.length, match.index + 2000));
|
|
264
|
+
const hasToken = rule.falsePositiveFilters.some(filter => filter.test(formBlock));
|
|
265
|
+
if (hasToken)
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
issues.push({
|
|
270
|
+
category: rule.category,
|
|
271
|
+
severity: rule.severity,
|
|
272
|
+
file: relPath,
|
|
273
|
+
line,
|
|
274
|
+
match: lineContent,
|
|
275
|
+
description: rule.description,
|
|
276
|
+
recommendation: rule.recommendation,
|
|
277
|
+
owaspCategory: rule.owasp,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return issues;
|
|
283
|
+
}
|
|
284
|
+
issueToInsight(issue) {
|
|
285
|
+
return {
|
|
286
|
+
type: 'security',
|
|
287
|
+
priority: issue.severity,
|
|
288
|
+
title: `[security] [${issue.category}] ${issue.description} (${issue.file}:${issue.line})`,
|
|
289
|
+
content: `Security issue in ${issue.file}:${issue.line}\n` +
|
|
290
|
+
` Category: ${issue.category}\n` +
|
|
291
|
+
` OWASP: ${issue.owaspCategory}\n` +
|
|
292
|
+
` Severity: ${issue.severity}\n` +
|
|
293
|
+
` Match: ${issue.match.substring(0, 100)}\n` +
|
|
294
|
+
` ${issue.description}\n` +
|
|
295
|
+
` Recommendation: ${issue.recommendation}`,
|
|
296
|
+
files: [issue.file],
|
|
297
|
+
timestamp: new Date(),
|
|
298
|
+
confidence: 0.7,
|
|
299
|
+
metadata: {
|
|
300
|
+
category: issue.category,
|
|
301
|
+
severity: issue.severity,
|
|
302
|
+
line: issue.line,
|
|
303
|
+
owasp: issue.owaspCategory,
|
|
304
|
+
ruleName: issue.category.toLowerCase().replace(/\s+/g, '-'),
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
collectFiles(dir, maxFiles) {
|
|
309
|
+
const results = [];
|
|
310
|
+
const walk = (currentDir, depth) => {
|
|
311
|
+
if (results.length >= maxFiles || depth > 10)
|
|
312
|
+
return;
|
|
313
|
+
let entries;
|
|
314
|
+
try {
|
|
315
|
+
entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
for (const entry of entries) {
|
|
321
|
+
if (results.length >= maxFiles)
|
|
322
|
+
return;
|
|
323
|
+
if (entry.name.startsWith('.'))
|
|
324
|
+
continue;
|
|
325
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
326
|
+
if (entry.isDirectory()) {
|
|
327
|
+
if (IGNORE_DIRS.has(entry.name))
|
|
328
|
+
continue;
|
|
329
|
+
walk(fullPath, depth + 1);
|
|
330
|
+
}
|
|
331
|
+
else if (entry.isFile() && CODE_EXTENSIONS.has(path.extname(entry.name))) {
|
|
332
|
+
results.push(fullPath);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
walk(dir, 0);
|
|
337
|
+
return results;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=security-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-audit.js","sourceRoot":"","sources":["../../src/brain/security-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { GeneticRule, EvolutionSnapshot, SelfEvolutionConfig, BrainInsight } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Self-Evolution Engine — rules that write themselves.
|
|
4
|
+
*
|
|
5
|
+
* Genetic Representation:
|
|
6
|
+
* Each rule = chromosome of floats encoding severity weight,
|
|
7
|
+
* confidence threshold, file pattern hash, category encoding, etc.
|
|
8
|
+
*
|
|
9
|
+
* Fitness: accuracy × coverage × (1 / falsePositiveRate)
|
|
10
|
+
* Selection: Tournament (k=5)
|
|
11
|
+
* Crossover: Single-point at random position
|
|
12
|
+
* Mutation: Gaussian noise σ = 0.1 × mutationRate
|
|
13
|
+
*
|
|
14
|
+
* Meta-Learning: Tracks which (rule, project_type, language) combos work best.
|
|
15
|
+
* Bayesian updating of weights per strategy.
|
|
16
|
+
*/
|
|
17
|
+
export declare class SelfEvolution {
|
|
18
|
+
private config;
|
|
19
|
+
private population;
|
|
20
|
+
private generation;
|
|
21
|
+
private metaLogs;
|
|
22
|
+
private eliteArchive;
|
|
23
|
+
private fitnessHistory;
|
|
24
|
+
constructor(config?: Partial<SelfEvolutionConfig>);
|
|
25
|
+
/** Run one evolution generation */
|
|
26
|
+
evolve(insights?: BrainInsight[]): Promise<EvolutionSnapshot>;
|
|
27
|
+
/** Evaluate rule fitness based on insight history */
|
|
28
|
+
evaluateFitness(rule: GeneticRule, insights: BrainInsight[]): number;
|
|
29
|
+
/** Tournament selection (k=5) */
|
|
30
|
+
private tournamentSelect;
|
|
31
|
+
/** Single-point crossover */
|
|
32
|
+
crossover(a: GeneticRule, b: GeneticRule): [GeneticRule, GeneticRule];
|
|
33
|
+
/** Gaussian mutation */
|
|
34
|
+
mutate(rule: GeneticRule): GeneticRule;
|
|
35
|
+
private initializePopulation;
|
|
36
|
+
/** Update meta-learning log with strategy outcome */
|
|
37
|
+
updateMetaLearning(strategy: string, outcome: boolean, category?: string): void;
|
|
38
|
+
/** Get best evolved rules for a category */
|
|
39
|
+
getBestRules(category: string, topN?: number): GeneticRule[];
|
|
40
|
+
/** Get current generation info */
|
|
41
|
+
getGeneration(): number;
|
|
42
|
+
getPopulationSize(): number;
|
|
43
|
+
getFitnessHistory(): Array<{
|
|
44
|
+
gen: number;
|
|
45
|
+
best: number;
|
|
46
|
+
avg: number;
|
|
47
|
+
}>;
|
|
48
|
+
/** Get a snapshot of the current evolution state */
|
|
49
|
+
getSnapshot(): EvolutionSnapshot;
|
|
50
|
+
private saveToDisk;
|
|
51
|
+
private loadFromDisk;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=self-evolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-evolution.d.ts","sourceRoot":"","sources":["../../src/brain/self-evolution.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAmB,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAajH;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAyD;gBAEnE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAOjD,mCAAmC;IAC7B,MAAM,CAAC,QAAQ,GAAE,YAAY,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+DvE,qDAAqD;IACrD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM;IAuCpE,iCAAiC;IACjC,OAAO,CAAC,gBAAgB;IAWxB,6BAA6B;IAC7B,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC;IAYrE,wBAAwB;IACxB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAsBtC,OAAO,CAAC,oBAAoB;IAkB5B,qDAAqD;IACrD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAkB,GAAG,IAAI;IAqB1F,4CAA4C;IAC5C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,WAAW,EAAE;IAkBhE,kCAAkC;IAClC,aAAa,IAAI,MAAM;IACvB,iBAAiB,IAAI,MAAM;IAC3B,iBAAiB,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtE,oDAAoD;IACpD,WAAW,IAAI,iBAAiB;YAelB,UAAU;IAwBxB,OAAO,CAAC,YAAY;CAqBrB"}
|