erosolar-cli 2.1.257 → 2.1.260
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/dist/capabilities/orchestrationCapability.js +1 -1
- package/dist/capabilities/orchestrationCapability.js.map +1 -1
- package/dist/contracts/tools.schema.json +2 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +13 -3
- package/dist/core/agent.js.map +1 -1
- package/dist/core/completeAttackOrchestrator.d.ts +1 -0
- package/dist/core/completeAttackOrchestrator.d.ts.map +1 -1
- package/dist/core/completeAttackOrchestrator.js +14 -0
- package/dist/core/completeAttackOrchestrator.js.map +1 -1
- package/dist/core/deepBugAnalyzer.d.ts +25 -0
- package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
- package/dist/core/deepBugAnalyzer.js +44 -0
- package/dist/core/deepBugAnalyzer.js.map +1 -0
- package/dist/core/errors/errorTypes.d.ts +56 -29
- package/dist/core/errors/errorTypes.d.ts.map +1 -1
- package/dist/core/errors/errorTypes.js +231 -49
- package/dist/core/errors/errorTypes.js.map +1 -1
- package/dist/core/hypothesisEngine.d.ts +27 -0
- package/dist/core/hypothesisEngine.d.ts.map +1 -0
- package/dist/core/hypothesisEngine.js +58 -0
- package/dist/core/hypothesisEngine.js.map +1 -0
- package/dist/core/intelligentTargetResearcher.d.ts +4 -0
- package/dist/core/intelligentTargetResearcher.d.ts.map +1 -1
- package/dist/core/intelligentTargetResearcher.js +72 -6
- package/dist/core/intelligentTargetResearcher.js.map +1 -1
- package/dist/core/productTestHarness.d.ts +46 -0
- package/dist/core/productTestHarness.d.ts.map +1 -0
- package/dist/core/productTestHarness.js +127 -0
- package/dist/core/productTestHarness.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +2 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +14 -0
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/tools/frontendTestingTools.d.ts +9 -0
- package/dist/tools/frontendTestingTools.d.ts.map +1 -0
- package/dist/tools/frontendTestingTools.js +291 -0
- package/dist/tools/frontendTestingTools.js.map +1 -0
- package/dist/tools/grepTools.d.ts +3 -0
- package/dist/tools/grepTools.d.ts.map +1 -0
- package/dist/tools/grepTools.js +119 -0
- package/dist/tools/grepTools.js.map +1 -0
- package/dist/tools/offensiveTransparencyTools.d.ts.map +1 -1
- package/dist/tools/offensiveTransparencyTools.js +44 -15
- package/dist/tools/offensiveTransparencyTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +5 -1
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +3 -5
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +20 -47
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Comprehensive Error Classification System
|
|
3
|
+
*
|
|
4
|
+
* Provides structured error handling with:
|
|
5
|
+
* - Error categorization (dangerous, blocked, invalid, etc.)
|
|
6
|
+
* - Severity levels (critical, error, warning, info)
|
|
7
|
+
* - Auto-fixing suggestions
|
|
8
|
+
* - Recovery strategies
|
|
3
9
|
*/
|
|
4
10
|
export var ErrorSeverity;
|
|
5
11
|
(function (ErrorSeverity) {
|
|
@@ -10,6 +16,8 @@ export var ErrorSeverity;
|
|
|
10
16
|
})(ErrorSeverity || (ErrorSeverity = {}));
|
|
11
17
|
export var ErrorCategory;
|
|
12
18
|
(function (ErrorCategory) {
|
|
19
|
+
ErrorCategory["DANGEROUS"] = "dangerous";
|
|
20
|
+
ErrorCategory["BLOCKED"] = "blocked";
|
|
13
21
|
ErrorCategory["INVALID"] = "invalid";
|
|
14
22
|
ErrorCategory["PERMISSION"] = "permission";
|
|
15
23
|
ErrorCategory["RESOURCE"] = "resource";
|
|
@@ -21,7 +29,7 @@ export var ErrorCategory;
|
|
|
21
29
|
ErrorCategory["UNKNOWN"] = "unknown";
|
|
22
30
|
})(ErrorCategory || (ErrorCategory = {}));
|
|
23
31
|
/**
|
|
24
|
-
* Base class for structured errors
|
|
32
|
+
* Base class for all structured errors
|
|
25
33
|
*/
|
|
26
34
|
export class StructuredError extends Error {
|
|
27
35
|
severity;
|
|
@@ -36,34 +44,71 @@ export class StructuredError extends Error {
|
|
|
36
44
|
this.name = this.constructor.name;
|
|
37
45
|
this.severity = details.severity;
|
|
38
46
|
this.category = details.category;
|
|
39
|
-
this.suggestions = [...details.suggestions];
|
|
47
|
+
this.suggestions = [...details.suggestions]; // Copy to mutable array
|
|
40
48
|
this.originalInput = details.originalInput;
|
|
41
49
|
this.metadata = details.metadata;
|
|
42
50
|
this.timestamp = details.timestamp;
|
|
43
51
|
this.recoverable = details.recoverable;
|
|
52
|
+
// Maintain proper stack trace
|
|
44
53
|
Error.captureStackTrace(this, this.constructor);
|
|
45
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Format error for display with suggestions
|
|
57
|
+
*/
|
|
46
58
|
toDisplayString() {
|
|
47
|
-
|
|
59
|
+
const parts = [
|
|
60
|
+
`[${this.severity.toUpperCase()}] ${this.message}`,
|
|
61
|
+
];
|
|
62
|
+
if (this.originalInput) {
|
|
63
|
+
parts.push(` Input: ${this.originalInput}`);
|
|
64
|
+
}
|
|
65
|
+
if (this.suggestions.length > 0) {
|
|
66
|
+
parts.push('\nSuggestions:');
|
|
67
|
+
for (const suggestion of this.suggestions) {
|
|
68
|
+
parts.push(` • ${suggestion.action}`);
|
|
69
|
+
if (suggestion.example) {
|
|
70
|
+
parts.push(` Example: ${suggestion.example}`);
|
|
71
|
+
}
|
|
72
|
+
if (suggestion.autoFixable) {
|
|
73
|
+
parts.push(` [Auto-fixable]`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return parts.join('\n');
|
|
48
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Convert to JSON for logging/telemetry
|
|
81
|
+
*/
|
|
49
82
|
toJSON() {
|
|
50
83
|
return {
|
|
51
84
|
name: this.name,
|
|
52
85
|
severity: this.severity,
|
|
53
86
|
category: this.category,
|
|
54
87
|
message: this.message,
|
|
88
|
+
originalInput: this.originalInput,
|
|
89
|
+
suggestions: this.suggestions.map(s => ({
|
|
90
|
+
action: s.action,
|
|
91
|
+
example: s.example,
|
|
92
|
+
autoFixable: s.autoFixable,
|
|
93
|
+
})),
|
|
55
94
|
metadata: this.metadata,
|
|
56
95
|
timestamp: this.timestamp,
|
|
96
|
+
recoverable: this.recoverable,
|
|
97
|
+
stack: this.stack,
|
|
57
98
|
};
|
|
58
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Try to auto-fix the error if possible
|
|
102
|
+
*/
|
|
59
103
|
tryAutoFix() {
|
|
60
104
|
for (const suggestion of this.suggestions) {
|
|
61
105
|
if (suggestion.autoFixable && suggestion.autoFix) {
|
|
62
106
|
try {
|
|
63
|
-
|
|
107
|
+
const result = suggestion.autoFix();
|
|
108
|
+
return { fixed: true, result };
|
|
64
109
|
}
|
|
65
110
|
catch {
|
|
66
|
-
|
|
111
|
+
// Continue to next suggestion
|
|
67
112
|
}
|
|
68
113
|
}
|
|
69
114
|
}
|
|
@@ -71,39 +116,128 @@ export class StructuredError extends Error {
|
|
|
71
116
|
}
|
|
72
117
|
}
|
|
73
118
|
/**
|
|
74
|
-
*
|
|
119
|
+
* Dangerous operation error - operation could harm the system
|
|
120
|
+
*/
|
|
121
|
+
export class DangerousOperationError extends StructuredError {
|
|
122
|
+
constructor(operation, reason, safeAlternative) {
|
|
123
|
+
const suggestions = [];
|
|
124
|
+
if (safeAlternative) {
|
|
125
|
+
suggestions.push({
|
|
126
|
+
action: `Use safer alternative: ${safeAlternative}`,
|
|
127
|
+
example: safeAlternative,
|
|
128
|
+
autoFixable: true,
|
|
129
|
+
autoFix: () => safeAlternative,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
suggestions.push({
|
|
134
|
+
action: 'Review operation for safety before retrying',
|
|
135
|
+
autoFixable: false,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
super({
|
|
139
|
+
severity: ErrorSeverity.CRITICAL,
|
|
140
|
+
category: ErrorCategory.DANGEROUS,
|
|
141
|
+
message: `Dangerous operation blocked: ${operation}. Reason: ${reason}`,
|
|
142
|
+
originalInput: operation,
|
|
143
|
+
suggestions,
|
|
144
|
+
recoverable: safeAlternative !== undefined,
|
|
145
|
+
timestamp: new Date().toISOString(),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Blocked operation error - explicitly forbidden by policy
|
|
151
|
+
*/
|
|
152
|
+
export class BlockedOperationError extends StructuredError {
|
|
153
|
+
constructor(operation, policy, allowedAlternatives) {
|
|
154
|
+
const suggestions = [];
|
|
155
|
+
if (allowedAlternatives && allowedAlternatives.length > 0) {
|
|
156
|
+
for (const alt of allowedAlternatives) {
|
|
157
|
+
suggestions.push({
|
|
158
|
+
action: `Try allowed alternative: ${alt}`,
|
|
159
|
+
example: alt,
|
|
160
|
+
autoFixable: true,
|
|
161
|
+
autoFix: () => alt,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
suggestions.push({
|
|
167
|
+
action: 'This operation is not permitted by policy',
|
|
168
|
+
autoFixable: false,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
super({
|
|
172
|
+
severity: ErrorSeverity.ERROR,
|
|
173
|
+
category: ErrorCategory.BLOCKED,
|
|
174
|
+
message: `Operation blocked by policy "${policy}": ${operation}`,
|
|
175
|
+
originalInput: operation,
|
|
176
|
+
suggestions,
|
|
177
|
+
recoverable: allowedAlternatives !== undefined && allowedAlternatives.length > 0,
|
|
178
|
+
timestamp: new Date().toISOString(),
|
|
179
|
+
metadata: { policy, allowedAlternatives },
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Context overflow error - token/character limits exceeded
|
|
75
185
|
*/
|
|
76
186
|
export class ContextOverflowError extends StructuredError {
|
|
77
|
-
constructor(actual, limit, unit,
|
|
187
|
+
constructor(actual, limit, unit = 'tokens', truncatable = true) {
|
|
188
|
+
const percentage = limit > 0 ? Math.round((actual / limit) * 100) : 0;
|
|
189
|
+
const suggestions = [];
|
|
190
|
+
if (truncatable) {
|
|
191
|
+
suggestions.push({
|
|
192
|
+
action: `Auto-truncate to ${limit} ${unit}`,
|
|
193
|
+
example: `Content will be reduced from ${actual} to ${limit} ${unit}`,
|
|
194
|
+
autoFixable: true,
|
|
195
|
+
autoFix: () => ({ truncate: true, limit }),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
suggestions.push({
|
|
199
|
+
action: `Reduce scope to use less than ${limit} ${unit}`,
|
|
200
|
+
autoFixable: false,
|
|
201
|
+
});
|
|
78
202
|
super({
|
|
79
203
|
severity: ErrorSeverity.CRITICAL,
|
|
80
204
|
category: ErrorCategory.CONTEXT_OVERFLOW,
|
|
81
|
-
message: `Context overflow: ${actual} ${unit} exceeds limit of ${limit} ${unit}`,
|
|
82
|
-
suggestions
|
|
83
|
-
recoverable:
|
|
205
|
+
message: `Context overflow: ${actual} ${unit} exceeds limit of ${limit} ${unit} (${percentage}%)`,
|
|
206
|
+
suggestions,
|
|
207
|
+
recoverable: truncatable,
|
|
84
208
|
timestamp: new Date().toISOString(),
|
|
85
|
-
metadata: { actual, limit, unit },
|
|
209
|
+
metadata: { actual, limit, unit, percentage },
|
|
86
210
|
});
|
|
87
211
|
}
|
|
88
212
|
}
|
|
89
213
|
/**
|
|
90
|
-
* Resource
|
|
214
|
+
* Resource error - limits exceeded
|
|
91
215
|
*/
|
|
92
216
|
export class ResourceLimitError extends StructuredError {
|
|
93
|
-
constructor(resource, actual, limit,
|
|
217
|
+
constructor(resource, actual, limit, reducible = true) {
|
|
218
|
+
const suggestions = [];
|
|
219
|
+
if (reducible) {
|
|
220
|
+
const safeValue = Math.floor(limit * 0.8); // 80% of limit
|
|
221
|
+
suggestions.push({
|
|
222
|
+
action: `Reduce ${resource} to ${safeValue} (80% of limit)`,
|
|
223
|
+
example: `Set ${resource}=${safeValue}`,
|
|
224
|
+
autoFixable: true,
|
|
225
|
+
autoFix: () => safeValue,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
94
228
|
super({
|
|
95
229
|
severity: ErrorSeverity.ERROR,
|
|
96
230
|
category: ErrorCategory.RESOURCE,
|
|
97
231
|
message: `Resource limit exceeded: ${resource} is ${actual}, maximum is ${limit}`,
|
|
98
|
-
suggestions
|
|
99
|
-
recoverable:
|
|
232
|
+
suggestions,
|
|
233
|
+
recoverable: reducible,
|
|
100
234
|
timestamp: new Date().toISOString(),
|
|
101
235
|
metadata: { resource, actual, limit },
|
|
102
236
|
});
|
|
103
237
|
}
|
|
104
238
|
}
|
|
105
239
|
/**
|
|
106
|
-
* Validation error
|
|
240
|
+
* Validation error - input/schema validation failed
|
|
107
241
|
*/
|
|
108
242
|
export class ValidationError extends StructuredError {
|
|
109
243
|
constructor(field, code, message) {
|
|
@@ -111,53 +245,101 @@ export class ValidationError extends StructuredError {
|
|
|
111
245
|
severity: ErrorSeverity.ERROR,
|
|
112
246
|
category: ErrorCategory.VALIDATION,
|
|
113
247
|
message: `Validation failed for ${field}: ${code}. ${message}`,
|
|
114
|
-
|
|
248
|
+
originalInput: code,
|
|
249
|
+
suggestions: [
|
|
250
|
+
{
|
|
251
|
+
action: `Fix the field "${field}" to satisfy validation`,
|
|
252
|
+
example: `${field}: <provide valid value>`,
|
|
253
|
+
autoFixable: false,
|
|
254
|
+
},
|
|
255
|
+
],
|
|
115
256
|
recoverable: false,
|
|
116
257
|
timestamp: new Date().toISOString(),
|
|
117
258
|
metadata: { field, code },
|
|
118
259
|
});
|
|
119
260
|
}
|
|
120
261
|
}
|
|
121
|
-
// Legacy compatibility - these are no-ops now
|
|
122
|
-
export class DangerousOperationError extends StructuredError {
|
|
123
|
-
constructor(operation, reason, _safeAlternative) {
|
|
124
|
-
super({
|
|
125
|
-
severity: ErrorSeverity.WARNING,
|
|
126
|
-
category: ErrorCategory.UNKNOWN,
|
|
127
|
-
message: `${operation}: ${reason}`,
|
|
128
|
-
suggestions: [],
|
|
129
|
-
recoverable: true,
|
|
130
|
-
timestamp: new Date().toISOString(),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export class BlockedOperationError extends StructuredError {
|
|
135
|
-
constructor(operation, policy, _allowedAlternatives) {
|
|
136
|
-
super({
|
|
137
|
-
severity: ErrorSeverity.WARNING,
|
|
138
|
-
category: ErrorCategory.UNKNOWN,
|
|
139
|
-
message: `${operation}: ${policy}`,
|
|
140
|
-
suggestions: [],
|
|
141
|
-
recoverable: true,
|
|
142
|
-
timestamp: new Date().toISOString(),
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
262
|
/**
|
|
147
|
-
*
|
|
263
|
+
* Format any error as a structured error
|
|
148
264
|
*/
|
|
149
265
|
export function toStructuredError(error) {
|
|
150
|
-
|
|
266
|
+
// Already structured
|
|
267
|
+
if (error instanceof StructuredError) {
|
|
151
268
|
return error;
|
|
269
|
+
}
|
|
270
|
+
// Convert standard errors
|
|
152
271
|
const message = error instanceof Error ? error.message : String(error);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
272
|
+
// Detect error category from message
|
|
273
|
+
const category = detectErrorCategory(message);
|
|
274
|
+
const severity = detectErrorSeverity(category);
|
|
275
|
+
class GenericStructuredError extends StructuredError {
|
|
276
|
+
}
|
|
277
|
+
return new GenericStructuredError({
|
|
278
|
+
severity,
|
|
279
|
+
category,
|
|
157
280
|
message,
|
|
158
281
|
suggestions: [],
|
|
159
282
|
recoverable: false,
|
|
160
283
|
timestamp: new Date().toISOString(),
|
|
161
284
|
});
|
|
162
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Detect error category from error message
|
|
288
|
+
*/
|
|
289
|
+
function detectErrorCategory(message) {
|
|
290
|
+
const lower = message.toLowerCase();
|
|
291
|
+
if (lower.includes('dangerous') || lower.includes('unsafe') || lower.includes('harmful')) {
|
|
292
|
+
return ErrorCategory.DANGEROUS;
|
|
293
|
+
}
|
|
294
|
+
if (lower.includes('blocked') || lower.includes('forbidden') || lower.includes('not allowed')) {
|
|
295
|
+
return ErrorCategory.BLOCKED;
|
|
296
|
+
}
|
|
297
|
+
if (lower.includes('invalid') || lower.includes('malformed')) {
|
|
298
|
+
return ErrorCategory.INVALID;
|
|
299
|
+
}
|
|
300
|
+
if (lower.includes('permission') || lower.includes('unauthorized') || lower.includes('access denied')) {
|
|
301
|
+
return ErrorCategory.PERMISSION;
|
|
302
|
+
}
|
|
303
|
+
if (lower.includes('limit') || lower.includes('exceeded') || lower.includes('too large')) {
|
|
304
|
+
return ErrorCategory.RESOURCE;
|
|
305
|
+
}
|
|
306
|
+
if (lower.includes('timeout') || lower.includes('timed out')) {
|
|
307
|
+
return ErrorCategory.TIMEOUT;
|
|
308
|
+
}
|
|
309
|
+
if (lower.includes('network') || lower.includes('connection')) {
|
|
310
|
+
return ErrorCategory.NETWORK;
|
|
311
|
+
}
|
|
312
|
+
if (lower.includes('validation') || lower.includes('schema')) {
|
|
313
|
+
return ErrorCategory.VALIDATION;
|
|
314
|
+
}
|
|
315
|
+
if (lower.includes('context') || lower.includes('token') || lower.includes('overflow')) {
|
|
316
|
+
return ErrorCategory.CONTEXT_OVERFLOW;
|
|
317
|
+
}
|
|
318
|
+
if (lower.includes('not found') || lower.includes('does not exist')) {
|
|
319
|
+
return ErrorCategory.NOT_FOUND;
|
|
320
|
+
}
|
|
321
|
+
return ErrorCategory.UNKNOWN;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Determine severity from category
|
|
325
|
+
*/
|
|
326
|
+
function detectErrorSeverity(category) {
|
|
327
|
+
switch (category) {
|
|
328
|
+
case ErrorCategory.DANGEROUS:
|
|
329
|
+
case ErrorCategory.CONTEXT_OVERFLOW:
|
|
330
|
+
return ErrorSeverity.CRITICAL;
|
|
331
|
+
case ErrorCategory.BLOCKED:
|
|
332
|
+
case ErrorCategory.PERMISSION:
|
|
333
|
+
case ErrorCategory.VALIDATION:
|
|
334
|
+
case ErrorCategory.INVALID:
|
|
335
|
+
case ErrorCategory.RESOURCE:
|
|
336
|
+
return ErrorSeverity.ERROR;
|
|
337
|
+
case ErrorCategory.TIMEOUT:
|
|
338
|
+
case ErrorCategory.NETWORK:
|
|
339
|
+
case ErrorCategory.NOT_FOUND:
|
|
340
|
+
return ErrorSeverity.WARNING;
|
|
341
|
+
default:
|
|
342
|
+
return ErrorSeverity.ERROR;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
163
345
|
//# sourceMappingURL=errorTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../../src/core/errors/errorTypes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../../src/core/errors/errorTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,0CAAyB,CAAA;IACzB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,0CAAyB,CAAA;IACzB,sDAAqC,CAAA;IACrC,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;AACrB,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AA4BD;;GAEG;AACH,MAAM,OAAgB,eAAgB,SAAQ,KAAK;IACjC,QAAQ,CAAgB;IACxB,QAAQ,CAAgB;IACxB,WAAW,CAAoB;IAC/B,aAAa,CAAU;IACvB,QAAQ,CAA2B;IACnC,SAAS,CAAS;IAClB,WAAW,CAAU;IAErC,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,wBAAwB;QACrE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEvC,8BAA8B;QAC9B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;KAEC;IACD,eAAe;QACb,MAAM,KAAK,GAAa;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;SACnD,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;KAEC;IACD,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;KAEC;IACD,UAAU;QACR,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;oBACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IAC1D,YACE,SAAiB,EACjB,MAAc,EACd,eAAwB;QAExB,MAAM,WAAW,GAAsB,EAAE,CAAC;QAE1C,IAAI,eAAe,EAAE,CAAC;YACpB,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,0BAA0B,eAAe,EAAE;gBACnD,OAAO,EAAE,eAAe;gBACxB,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe;aAC/B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,6CAA6C;gBACrD,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC;YACJ,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,QAAQ,EAAE,aAAa,CAAC,SAAS;YACjC,OAAO,EAAE,gCAAgC,SAAS,aAAa,MAAM,EAAE;YACvE,aAAa,EAAE,SAAS;YACxB,WAAW;YACX,WAAW,EAAE,eAAe,KAAK,SAAS;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,YACE,SAAiB,EACjB,MAAc,EACd,mBAA8B;QAE9B,MAAM,WAAW,GAAsB,EAAE,CAAC;QAE1C,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;gBACtC,WAAW,CAAC,IAAI,CAAC;oBACf,MAAM,EAAE,4BAA4B,GAAG,EAAE;oBACzC,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,2CAA2C;gBACnD,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC;YACJ,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,QAAQ,EAAE,aAAa,CAAC,OAAO;YAC/B,OAAO,EAAE,gCAAgC,MAAM,MAAM,SAAS,EAAE;YAChE,aAAa,EAAE,SAAS;YACxB,WAAW;YACX,WAAW,EAAE,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAChF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IACvD,YACE,MAAc,EACd,KAAa,EACb,OAAqC,QAAQ,EAC7C,cAAuB,IAAI;QAE3B,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,WAAW,GAAsB,EAAE,CAAC;QAE1C,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,oBAAoB,KAAK,IAAI,IAAI,EAAE;gBAC3C,OAAO,EAAE,gCAAgC,MAAM,OAAO,KAAK,IAAI,IAAI,EAAE;gBACrE,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,iCAAiC,KAAK,IAAI,IAAI,EAAE;YACxD,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,KAAK,CAAC;YACJ,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,QAAQ,EAAE,aAAa,CAAC,gBAAgB;YACxC,OAAO,EAAE,qBAAqB,MAAM,IAAI,IAAI,qBAAqB,KAAK,IAAI,IAAI,KAAK,UAAU,IAAI;YACjG,WAAW;YACX,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD,YACE,QAAgB,EAChB,MAAc,EACd,KAAa,EACb,YAAqB,IAAI;QAEzB,MAAM,WAAW,GAAsB,EAAE,CAAC;QAE1C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe;YAC1D,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,UAAU,QAAQ,OAAO,SAAS,iBAAiB;gBAC3D,OAAO,EAAE,OAAO,QAAQ,IAAI,SAAS,EAAE;gBACvC,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC;YACJ,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,OAAO,EAAE,4BAA4B,QAAQ,OAAO,MAAM,gBAAgB,KAAK,EAAE;YACjF,WAAW;YACX,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAClD,YAAY,KAAa,EAAE,IAAY,EAAE,OAAe;QACtD,KAAK,CAAC;YACJ,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,QAAQ,EAAE,aAAa,CAAC,UAAU;YAClC,OAAO,EAAE,yBAAyB,KAAK,KAAK,IAAI,KAAK,OAAO,EAAE;YAC9D,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE;gBACX;oBACE,MAAM,EAAE,kBAAkB,KAAK,yBAAyB;oBACxD,OAAO,EAAE,GAAG,KAAK,yBAAyB;oBAC1C,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,qBAAqB;IACrB,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvE,qCAAqC;IACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,sBAAuB,SAAQ,eAAe;KAAG;IAEvD,OAAO,IAAI,sBAAsB,CAAC;QAChC,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzF,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9F,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACtG,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzF,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,OAAO,aAAa,CAAC,gBAAgB,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpE,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAuB;IAClD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,SAAS,CAAC;QAC7B,KAAK,aAAa,CAAC,gBAAgB;YACjC,OAAO,aAAa,CAAC,QAAQ,CAAC;QAEhC,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,UAAU,CAAC;QAC9B,KAAK,aAAa,CAAC,UAAU,CAAC;QAC9B,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,QAAQ;YACzB,OAAO,aAAa,CAAC,KAAK,CAAC;QAE7B,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,aAAa,CAAC,OAAO,CAAC;QAE/B;YACE,OAAO,aAAa,CAAC,KAAK,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type Evidence = {
|
|
2
|
+
type: 'observation' | 'data' | 'test_result' | 'user_feedback';
|
|
3
|
+
content: string;
|
|
4
|
+
weight: number;
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
};
|
|
7
|
+
export interface Hypothesis {
|
|
8
|
+
id: string;
|
|
9
|
+
description: string;
|
|
10
|
+
confidence: number;
|
|
11
|
+
evidence: Evidence[];
|
|
12
|
+
status: 'pending' | 'testing' | 'validated' | 'rejected';
|
|
13
|
+
}
|
|
14
|
+
export declare class BugHypothesisAnalyzer {
|
|
15
|
+
scoreEvidence(evidence: Evidence[]): number;
|
|
16
|
+
}
|
|
17
|
+
export declare class HypothesisEngine {
|
|
18
|
+
private readonly maxHypotheses;
|
|
19
|
+
private readonly analyzer;
|
|
20
|
+
private hypotheses;
|
|
21
|
+
constructor(maxHypotheses?: number);
|
|
22
|
+
generateHypothesis(description: string, evidence?: Evidence[]): Hypothesis;
|
|
23
|
+
addEvidence(id: string, evidence: Evidence): void;
|
|
24
|
+
getHypothesis(id: string): Hypothesis | undefined;
|
|
25
|
+
getBestHypothesis(): Hypothesis | undefined;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=hypothesisEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hypothesisEngine.d.ts","sourceRoot":"","sources":["../../src/core/hypothesisEngine.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,eAAe,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;CAC1D;AAED,qBAAa,qBAAqB;IAChC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM;CAM5C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,UAAU,CAAsC;gBAE5C,aAAa,SAAK;IAK9B,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,EAAO,GAAG,UAAU;IAoB9E,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQjD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,iBAAiB,IAAI,UAAU,GAAG,SAAS;CAS5C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
export class BugHypothesisAnalyzer {
|
|
3
|
+
scoreEvidence(evidence) {
|
|
4
|
+
if (!evidence.length)
|
|
5
|
+
return 0.3;
|
|
6
|
+
const totalWeight = evidence.reduce((sum, item) => sum + item.weight, 0);
|
|
7
|
+
const normalized = Math.max(0, Math.min(1, 0.5 + totalWeight / (evidence.length * 2)));
|
|
8
|
+
return normalized;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class HypothesisEngine {
|
|
12
|
+
maxHypotheses;
|
|
13
|
+
analyzer;
|
|
14
|
+
hypotheses = new Map();
|
|
15
|
+
constructor(maxHypotheses = 10) {
|
|
16
|
+
this.maxHypotheses = Math.max(1, maxHypotheses);
|
|
17
|
+
this.analyzer = new BugHypothesisAnalyzer();
|
|
18
|
+
}
|
|
19
|
+
generateHypothesis(description, evidence = []) {
|
|
20
|
+
// Keep memory bounded
|
|
21
|
+
if (this.hypotheses.size >= this.maxHypotheses) {
|
|
22
|
+
const oldest = [...this.hypotheses.keys()][0];
|
|
23
|
+
if (oldest)
|
|
24
|
+
this.hypotheses.delete(oldest);
|
|
25
|
+
}
|
|
26
|
+
const confidence = this.analyzer.scoreEvidence(evidence);
|
|
27
|
+
const hypothesis = {
|
|
28
|
+
id: randomUUID(),
|
|
29
|
+
description,
|
|
30
|
+
confidence,
|
|
31
|
+
evidence: [...evidence],
|
|
32
|
+
status: 'pending',
|
|
33
|
+
};
|
|
34
|
+
this.hypotheses.set(hypothesis.id, hypothesis);
|
|
35
|
+
return hypothesis;
|
|
36
|
+
}
|
|
37
|
+
addEvidence(id, evidence) {
|
|
38
|
+
const hyp = this.hypotheses.get(id);
|
|
39
|
+
if (!hyp)
|
|
40
|
+
return;
|
|
41
|
+
hyp.evidence.push(evidence);
|
|
42
|
+
hyp.confidence = this.analyzer.scoreEvidence(hyp.evidence);
|
|
43
|
+
hyp.status = 'pending';
|
|
44
|
+
}
|
|
45
|
+
getHypothesis(id) {
|
|
46
|
+
return this.hypotheses.get(id);
|
|
47
|
+
}
|
|
48
|
+
getBestHypothesis() {
|
|
49
|
+
let best;
|
|
50
|
+
for (const hyp of this.hypotheses.values()) {
|
|
51
|
+
if (!best || hyp.confidence > best.confidence) {
|
|
52
|
+
best = hyp;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return best;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=hypothesisEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hypothesisEngine.js","sourceRoot":"","sources":["../../src/core/hypothesisEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiBzC,MAAM,OAAO,qBAAqB;IAChC,aAAa,CAAC,QAAoB;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,WAAW,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IACV,aAAa,CAAS;IACtB,QAAQ,CAAwB;IACzC,UAAU,GAA4B,IAAI,GAAG,EAAE,CAAC;IAExD,YAAY,aAAa,GAAG,EAAE;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAED,kBAAkB,CAAC,WAAmB,EAAE,WAAuB,EAAE;QAC/D,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,MAAM;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAe;YAC7B,EAAE,EAAE,UAAU,EAAE;YAChB,WAAW;YACX,UAAU;YACV,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;YACvB,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,QAAkB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3D,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,IAAI,IAA4B,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9C,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -72,6 +72,10 @@ export declare class IntelligentTargetResearcher {
|
|
|
72
72
|
* AI will use its knowledge of the organization
|
|
73
73
|
*/
|
|
74
74
|
private estimateEmployees;
|
|
75
|
+
/**
|
|
76
|
+
* Estimate confidence based on how well-known the org is
|
|
77
|
+
*/
|
|
78
|
+
private estimateConfidence;
|
|
75
79
|
/**
|
|
76
80
|
* Research geographic locations
|
|
77
81
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligentTargetResearcher.d.ts","sourceRoot":"","sources":["../../src/core/intelligentTargetResearcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvH,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,oBAAoB,EAAE,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,2BAA2B;IACtC;;;OAGG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8C1D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;;;;OAOG;YACW,eAAe;IA2B7B;;OAEG;YACW,eAAe;IAU7B;;OAEG;YACW,eAAe;IAU7B;;;OAGG;YACW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"intelligentTargetResearcher.d.ts","sourceRoot":"","sources":["../../src/core/intelligentTargetResearcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvH,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,oBAAoB,EAAE,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,2BAA2B;IACtC;;;OAGG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8C1D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;;;;OAOG;YACW,eAAe;IA2B7B;;OAEG;YACW,eAAe;IAU7B;;OAEG;YACW,eAAe;IAU7B;;;OAGG;YACW,iBAAiB;IAkD/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;YACW,mBAAmB;IAYjC;;OAEG;YACW,sBAAsB;IAUpC;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;YACW,kBAAkB;IAQhC;;OAEG;YACW,YAAY;IAS1B;;OAEG;YACW,uBAAuB;IAUrC;;OAEG;YACW,UAAU;IAIxB;;OAEG;YACW,YAAY;IAI1B;;OAEG;YACW,WAAW;IAIzB;;OAEG;YACW,cAAc;IAI5B;;OAEG;YACW,iBAAiB;IAI/B;;OAEG;YACW,uBAAuB;IAIrC;;OAEG;IACH,6BAA6B,CAAC,OAAO,EAAE,aAAa,GAAG;QACrD,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,mBAAmB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;QAC7D,qBAAqB,EAAE,MAAM,EAAE,CAAC;KACjC;CAiDF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA8CjE"}
|
|
@@ -47,7 +47,7 @@ export class IntelligentTargetResearcher {
|
|
|
47
47
|
knownVulnerabilities: await this.getKnownVulnerabilities(targetName)
|
|
48
48
|
},
|
|
49
49
|
researchedAt: new Date().toISOString(),
|
|
50
|
-
confidence:
|
|
50
|
+
confidence: this.estimateConfidence(targetName)
|
|
51
51
|
};
|
|
52
52
|
console.log(`[TargetResearcher] Profile complete for ${targetName}`);
|
|
53
53
|
console.log(` Type: ${profile.type}`);
|
|
@@ -146,9 +146,65 @@ export class IntelligentTargetResearcher {
|
|
|
146
146
|
* AI will use its knowledge of the organization
|
|
147
147
|
*/
|
|
148
148
|
async estimateEmployees(name) {
|
|
149
|
-
|
|
150
|
-
//
|
|
151
|
-
|
|
149
|
+
const normalized = name.toLowerCase();
|
|
150
|
+
// Known large organizations (approximate, rounded)
|
|
151
|
+
const knownHeadcounts = {
|
|
152
|
+
apple: 165000,
|
|
153
|
+
'apple inc': 165000,
|
|
154
|
+
alphabet: 180000,
|
|
155
|
+
google: 180000,
|
|
156
|
+
microsoft: 220000,
|
|
157
|
+
meta: 86000,
|
|
158
|
+
facebook: 86000,
|
|
159
|
+
amazon: 1500000,
|
|
160
|
+
'amazon.com': 1500000,
|
|
161
|
+
tesla: 140000,
|
|
162
|
+
ibm: 310000,
|
|
163
|
+
oracle: 140000,
|
|
164
|
+
intel: 130000,
|
|
165
|
+
tsmc: 73000,
|
|
166
|
+
samsung: 260000,
|
|
167
|
+
};
|
|
168
|
+
for (const [key, value] of Object.entries(knownHeadcounts)) {
|
|
169
|
+
if (normalized.includes(key)) {
|
|
170
|
+
return value;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const orgType = this.classifyOrganization(name);
|
|
174
|
+
// Heuristic ranges by sector
|
|
175
|
+
switch (orgType) {
|
|
176
|
+
case 'defense':
|
|
177
|
+
case 'government':
|
|
178
|
+
return 150000;
|
|
179
|
+
case 'finance':
|
|
180
|
+
return 45000;
|
|
181
|
+
case 'telecom':
|
|
182
|
+
return 70000;
|
|
183
|
+
case 'infrastructure':
|
|
184
|
+
return 20000;
|
|
185
|
+
case 'healthcare':
|
|
186
|
+
return 35000;
|
|
187
|
+
case 'energy':
|
|
188
|
+
return 40000;
|
|
189
|
+
case 'tech':
|
|
190
|
+
default:
|
|
191
|
+
return 20000;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Estimate confidence based on how well-known the org is
|
|
196
|
+
*/
|
|
197
|
+
estimateConfidence(name) {
|
|
198
|
+
const normalized = name.toLowerCase();
|
|
199
|
+
const known = [
|
|
200
|
+
'apple', 'google', 'alphabet', 'microsoft', 'meta', 'facebook',
|
|
201
|
+
'amazon', 'tesla', 'ibm', 'oracle', 'intel', 'samsung', 'tsmc',
|
|
202
|
+
];
|
|
203
|
+
if (known.some(key => normalized.includes(key))) {
|
|
204
|
+
return 0.92;
|
|
205
|
+
}
|
|
206
|
+
// Default confidence slightly conservative
|
|
207
|
+
return 0.75;
|
|
152
208
|
}
|
|
153
209
|
/**
|
|
154
210
|
* Research geographic locations
|
|
@@ -292,14 +348,20 @@ export class IntelligentTargetResearcher {
|
|
|
292
348
|
if (profile.attackSurface.cloudInfrastructure.length > 0) {
|
|
293
349
|
recommendations.recommendedVectors.push('cloud');
|
|
294
350
|
}
|
|
295
|
-
// Estimate difficulty based on organization type
|
|
351
|
+
// Estimate difficulty based on organization type and scale
|
|
352
|
+
const headcount = profile.scope.employees;
|
|
296
353
|
if (profile.type === 'defense' || profile.type === 'government') {
|
|
297
354
|
recommendations.estimatedDifficulty = 'very-high';
|
|
298
355
|
recommendations.specialConsiderations.push('Classified systems require special authorization');
|
|
299
356
|
recommendations.specialConsiderations.push('Advanced defensive capabilities expected');
|
|
300
357
|
recommendations.specialConsiderations.push('Legal implications significant');
|
|
301
358
|
}
|
|
302
|
-
else if (
|
|
359
|
+
else if (headcount >= 100000) {
|
|
360
|
+
recommendations.estimatedDifficulty = 'very-high';
|
|
361
|
+
recommendations.specialConsiderations.push('Large, well-funded security program expected');
|
|
362
|
+
recommendations.specialConsiderations.push('Multiple defense layers and monitoring in place');
|
|
363
|
+
}
|
|
364
|
+
else if (profile.type === 'finance' || headcount >= 50000) {
|
|
303
365
|
recommendations.estimatedDifficulty = 'high';
|
|
304
366
|
recommendations.specialConsiderations.push('Regulatory compliance (PCI-DSS, SOX)');
|
|
305
367
|
recommendations.specialConsiderations.push('Advanced fraud detection systems');
|
|
@@ -310,6 +372,10 @@ export class IntelligentTargetResearcher {
|
|
|
310
372
|
recommendations.specialConsiderations.push('SCADA/ICS security');
|
|
311
373
|
recommendations.specialConsiderations.push('Physical and cyber security integration');
|
|
312
374
|
}
|
|
375
|
+
else if (headcount <= 2000) {
|
|
376
|
+
recommendations.estimatedDifficulty = 'low';
|
|
377
|
+
recommendations.specialConsiderations.push('Smaller orgs may have lighter defenses');
|
|
378
|
+
}
|
|
313
379
|
return recommendations;
|
|
314
380
|
}
|
|
315
381
|
}
|