@claude-flow/aidefence 3.0.0-alpha.1
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/domain/entities/index.d.ts +2 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +2 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/entities/threat.d.ts +59 -0
- package/dist/domain/entities/threat.d.ts.map +1 -0
- package/dist/domain/entities/threat.js +21 -0
- package/dist/domain/entities/threat.js.map +1 -0
- package/dist/domain/services/index.d.ts +3 -0
- package/dist/domain/services/index.d.ts.map +1 -0
- package/dist/domain/services/index.js +3 -0
- package/dist/domain/services/index.js.map +1 -0
- package/dist/domain/services/threat-detection-service.d.ts +81 -0
- package/dist/domain/services/threat-detection-service.d.ts.map +1 -0
- package/dist/domain/services/threat-detection-service.js +407 -0
- package/dist/domain/services/threat-detection-service.js.map +1 -0
- package/dist/domain/services/threat-learning-service.d.ts +173 -0
- package/dist/domain/services/threat-learning-service.d.ts.map +1 -0
- package/dist/domain/services/threat-learning-service.js +264 -0
- package/dist/domain/services/threat-learning-service.js.map +1 -0
- package/dist/index.d.ts +162 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +188 -0
- package/dist/index.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Threat Learning Service
|
|
3
|
+
*
|
|
4
|
+
* Self-learning threat pattern service using AgentDB for vector search
|
|
5
|
+
* and ReasoningBank-style pattern storage.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - HNSW-indexed threat pattern search (150x-12,500x faster)
|
|
9
|
+
* - Pattern learning from successful detections
|
|
10
|
+
* - Effectiveness tracking for adaptive mitigation
|
|
11
|
+
* - Integration with agentic-flow attention mechanisms
|
|
12
|
+
*/
|
|
13
|
+
import type { ThreatType, ThreatSeverity, ThreatDetectionResult } from '../entities/threat.js';
|
|
14
|
+
/**
|
|
15
|
+
* Learned threat pattern stored in vector database
|
|
16
|
+
*/
|
|
17
|
+
export interface LearnedThreatPattern {
|
|
18
|
+
id: string;
|
|
19
|
+
pattern: string;
|
|
20
|
+
type: ThreatType;
|
|
21
|
+
severity: ThreatSeverity;
|
|
22
|
+
embedding?: number[];
|
|
23
|
+
effectiveness: number;
|
|
24
|
+
detectionCount: number;
|
|
25
|
+
falsePositiveCount: number;
|
|
26
|
+
lastUpdated: Date;
|
|
27
|
+
metadata: {
|
|
28
|
+
source: 'builtin' | 'learned' | 'community';
|
|
29
|
+
confidenceDecay: number;
|
|
30
|
+
contextPatterns: string[];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Mitigation strategy with effectiveness tracking
|
|
35
|
+
*/
|
|
36
|
+
export interface MitigationStrategy {
|
|
37
|
+
id: string;
|
|
38
|
+
threatType: ThreatType;
|
|
39
|
+
strategy: 'block' | 'sanitize' | 'warn' | 'log' | 'escalate' | 'transform' | 'redirect';
|
|
40
|
+
effectiveness: number;
|
|
41
|
+
applicationCount: number;
|
|
42
|
+
successCount: number;
|
|
43
|
+
rollbackCount: number;
|
|
44
|
+
recursionDepth: number;
|
|
45
|
+
lastUpdated: Date;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Learning trajectory for ReasoningBank integration
|
|
49
|
+
*/
|
|
50
|
+
export interface LearningTrajectory {
|
|
51
|
+
sessionId: string;
|
|
52
|
+
task: string;
|
|
53
|
+
steps: Array<{
|
|
54
|
+
input: string;
|
|
55
|
+
output: ThreatDetectionResult;
|
|
56
|
+
reward: number;
|
|
57
|
+
timestamp: Date;
|
|
58
|
+
}>;
|
|
59
|
+
verdict: 'success' | 'failure' | 'partial';
|
|
60
|
+
totalReward: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* AgentDB-compatible vector store interface
|
|
64
|
+
*/
|
|
65
|
+
export interface VectorStore {
|
|
66
|
+
store(params: {
|
|
67
|
+
namespace: string;
|
|
68
|
+
key: string;
|
|
69
|
+
value: unknown;
|
|
70
|
+
embedding?: number[];
|
|
71
|
+
ttl?: number;
|
|
72
|
+
}): Promise<void>;
|
|
73
|
+
search(params: {
|
|
74
|
+
namespace: string;
|
|
75
|
+
query: string | number[];
|
|
76
|
+
k?: number;
|
|
77
|
+
minSimilarity?: number;
|
|
78
|
+
}): Promise<Array<{
|
|
79
|
+
key: string;
|
|
80
|
+
value: unknown;
|
|
81
|
+
similarity: number;
|
|
82
|
+
}>>;
|
|
83
|
+
get(namespace: string, key: string): Promise<unknown | null>;
|
|
84
|
+
delete(namespace: string, key: string): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Simple in-memory vector store for standalone usage
|
|
88
|
+
* Replace with AgentDB in production
|
|
89
|
+
*/
|
|
90
|
+
export declare class InMemoryVectorStore implements VectorStore {
|
|
91
|
+
private storage;
|
|
92
|
+
store(params: {
|
|
93
|
+
namespace: string;
|
|
94
|
+
key: string;
|
|
95
|
+
value: unknown;
|
|
96
|
+
embedding?: number[];
|
|
97
|
+
}): Promise<void>;
|
|
98
|
+
search(params: {
|
|
99
|
+
namespace: string;
|
|
100
|
+
query: string | number[];
|
|
101
|
+
k?: number;
|
|
102
|
+
}): Promise<Array<{
|
|
103
|
+
key: string;
|
|
104
|
+
value: unknown;
|
|
105
|
+
similarity: number;
|
|
106
|
+
}>>;
|
|
107
|
+
get(namespace: string, key: string): Promise<unknown | null>;
|
|
108
|
+
delete(namespace: string, key: string): Promise<void>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Threat Learning Service
|
|
112
|
+
*/
|
|
113
|
+
export declare class ThreatLearningService {
|
|
114
|
+
private readonly vectorStore;
|
|
115
|
+
private readonly namespace;
|
|
116
|
+
private readonly mitigationNamespace;
|
|
117
|
+
private trajectories;
|
|
118
|
+
constructor(vectorStore?: VectorStore);
|
|
119
|
+
/**
|
|
120
|
+
* Search for similar threat patterns using HNSW
|
|
121
|
+
* When connected to AgentDB, achieves 150x-12,500x speedup
|
|
122
|
+
*/
|
|
123
|
+
searchSimilarThreats(query: string, options?: {
|
|
124
|
+
k?: number;
|
|
125
|
+
minSimilarity?: number;
|
|
126
|
+
}): Promise<LearnedThreatPattern[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Learn from a detection result
|
|
129
|
+
* Implements ReasoningBank RETRIEVE-JUDGE-DISTILL-CONSOLIDATE pattern
|
|
130
|
+
*/
|
|
131
|
+
learnFromDetection(input: string, result: ThreatDetectionResult, feedback?: {
|
|
132
|
+
wasAccurate: boolean;
|
|
133
|
+
userVerdict?: string;
|
|
134
|
+
}): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Record mitigation effectiveness
|
|
137
|
+
* Feeds into strange-loop meta-learning
|
|
138
|
+
*/
|
|
139
|
+
recordMitigation(threatType: ThreatType, strategy: MitigationStrategy['strategy'], success: boolean, recursionDepth?: number): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* Get best mitigation strategy for a threat type
|
|
142
|
+
*/
|
|
143
|
+
getBestMitigation(threatType: ThreatType): Promise<MitigationStrategy | null>;
|
|
144
|
+
/**
|
|
145
|
+
* Start a learning trajectory (for ReasoningBank integration)
|
|
146
|
+
*/
|
|
147
|
+
startTrajectory(sessionId: string, task: string): void;
|
|
148
|
+
/**
|
|
149
|
+
* Record a trajectory step
|
|
150
|
+
*/
|
|
151
|
+
recordStep(sessionId: string, input: string, output: ThreatDetectionResult, reward: number): void;
|
|
152
|
+
/**
|
|
153
|
+
* End a trajectory and store for future learning
|
|
154
|
+
*/
|
|
155
|
+
endTrajectory(sessionId: string, verdict: 'success' | 'failure' | 'partial'): Promise<void>;
|
|
156
|
+
/**
|
|
157
|
+
* Get learning statistics
|
|
158
|
+
*/
|
|
159
|
+
getStats(): Promise<{
|
|
160
|
+
learnedPatterns: number;
|
|
161
|
+
mitigationStrategies: number;
|
|
162
|
+
avgEffectiveness: number;
|
|
163
|
+
}>;
|
|
164
|
+
/**
|
|
165
|
+
* Extract context patterns from input for better learning
|
|
166
|
+
*/
|
|
167
|
+
private extractContextPatterns;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a ThreatLearningService with optional AgentDB vector store
|
|
171
|
+
*/
|
|
172
|
+
export declare function createThreatLearningService(vectorStore?: VectorStore): ThreatLearningService;
|
|
173
|
+
//# sourceMappingURL=threat-learning-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat-learning-service.d.ts","sourceRoot":"","sources":["../../../src/domain/services/threat-learning-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Threat Learning Service
|
|
3
|
+
*
|
|
4
|
+
* Self-learning threat pattern service using AgentDB for vector search
|
|
5
|
+
* and ReasoningBank-style pattern storage.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - HNSW-indexed threat pattern search (150x-12,500x faster)
|
|
9
|
+
* - Pattern learning from successful detections
|
|
10
|
+
* - Effectiveness tracking for adaptive mitigation
|
|
11
|
+
* - Integration with agentic-flow attention mechanisms
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Simple in-memory vector store for standalone usage
|
|
15
|
+
* Replace with AgentDB in production
|
|
16
|
+
*/
|
|
17
|
+
export class InMemoryVectorStore {
|
|
18
|
+
storage = new Map();
|
|
19
|
+
async store(params) {
|
|
20
|
+
if (!this.storage.has(params.namespace)) {
|
|
21
|
+
this.storage.set(params.namespace, new Map());
|
|
22
|
+
}
|
|
23
|
+
this.storage.get(params.namespace).set(params.key, {
|
|
24
|
+
value: params.value,
|
|
25
|
+
embedding: params.embedding,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async search(params) {
|
|
29
|
+
const ns = this.storage.get(params.namespace);
|
|
30
|
+
if (!ns)
|
|
31
|
+
return [];
|
|
32
|
+
// Simple text-based search for in-memory version
|
|
33
|
+
const results = [];
|
|
34
|
+
const queryStr = typeof params.query === 'string' ? params.query.toLowerCase() : '';
|
|
35
|
+
for (const [key, { value }] of ns) {
|
|
36
|
+
const valueStr = JSON.stringify(value).toLowerCase();
|
|
37
|
+
if (queryStr && valueStr.includes(queryStr)) {
|
|
38
|
+
results.push({ key, value, similarity: 0.8 });
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
results.push({ key, value, similarity: 0.5 });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return results
|
|
45
|
+
.sort((a, b) => b.similarity - a.similarity)
|
|
46
|
+
.slice(0, params.k ?? 10);
|
|
47
|
+
}
|
|
48
|
+
async get(namespace, key) {
|
|
49
|
+
return this.storage.get(namespace)?.get(key)?.value ?? null;
|
|
50
|
+
}
|
|
51
|
+
async delete(namespace, key) {
|
|
52
|
+
this.storage.get(namespace)?.delete(key);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Threat Learning Service
|
|
57
|
+
*/
|
|
58
|
+
export class ThreatLearningService {
|
|
59
|
+
vectorStore;
|
|
60
|
+
namespace = 'security_threats';
|
|
61
|
+
mitigationNamespace = 'security_mitigations';
|
|
62
|
+
trajectories = new Map();
|
|
63
|
+
constructor(vectorStore) {
|
|
64
|
+
this.vectorStore = vectorStore ?? new InMemoryVectorStore();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Search for similar threat patterns using HNSW
|
|
68
|
+
* When connected to AgentDB, achieves 150x-12,500x speedup
|
|
69
|
+
*/
|
|
70
|
+
async searchSimilarThreats(query, options = {}) {
|
|
71
|
+
const results = await this.vectorStore.search({
|
|
72
|
+
namespace: this.namespace,
|
|
73
|
+
query,
|
|
74
|
+
k: options.k ?? 10,
|
|
75
|
+
minSimilarity: options.minSimilarity ?? 0.7,
|
|
76
|
+
});
|
|
77
|
+
return results.map(r => r.value);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Learn from a detection result
|
|
81
|
+
* Implements ReasoningBank RETRIEVE-JUDGE-DISTILL-CONSOLIDATE pattern
|
|
82
|
+
*/
|
|
83
|
+
async learnFromDetection(input, result, feedback) {
|
|
84
|
+
// Calculate reward based on detection accuracy
|
|
85
|
+
let reward = result.safe ? 0.5 : 0.8; // Base reward
|
|
86
|
+
if (feedback) {
|
|
87
|
+
if (feedback.wasAccurate) {
|
|
88
|
+
reward = 1.0;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
reward = 0.2; // Penalize false positive/negative
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Store each detected threat as a learned pattern
|
|
95
|
+
for (const threat of result.threats) {
|
|
96
|
+
const patternId = `learned-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
97
|
+
const learnedPattern = {
|
|
98
|
+
id: patternId,
|
|
99
|
+
pattern: threat.pattern,
|
|
100
|
+
type: threat.type,
|
|
101
|
+
severity: threat.severity,
|
|
102
|
+
effectiveness: reward,
|
|
103
|
+
detectionCount: 1,
|
|
104
|
+
falsePositiveCount: feedback?.wasAccurate === false ? 1 : 0,
|
|
105
|
+
lastUpdated: new Date(),
|
|
106
|
+
metadata: {
|
|
107
|
+
source: 'learned',
|
|
108
|
+
confidenceDecay: 0.99, // 1% decay per day
|
|
109
|
+
contextPatterns: this.extractContextPatterns(input),
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
await this.vectorStore.store({
|
|
113
|
+
namespace: this.namespace,
|
|
114
|
+
key: patternId,
|
|
115
|
+
value: learnedPattern,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Record mitigation effectiveness
|
|
121
|
+
* Feeds into strange-loop meta-learning
|
|
122
|
+
*/
|
|
123
|
+
async recordMitigation(threatType, strategy, success, recursionDepth = 0) {
|
|
124
|
+
const key = `mitigation-${threatType}-${strategy}`;
|
|
125
|
+
const existing = await this.vectorStore.get(this.mitigationNamespace, key);
|
|
126
|
+
const updated = existing ?? {
|
|
127
|
+
id: key,
|
|
128
|
+
threatType,
|
|
129
|
+
strategy,
|
|
130
|
+
effectiveness: 0.5,
|
|
131
|
+
applicationCount: 0,
|
|
132
|
+
successCount: 0,
|
|
133
|
+
rollbackCount: 0,
|
|
134
|
+
recursionDepth: 0,
|
|
135
|
+
lastUpdated: new Date(),
|
|
136
|
+
};
|
|
137
|
+
updated.applicationCount++;
|
|
138
|
+
if (success) {
|
|
139
|
+
updated.successCount++;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
updated.rollbackCount++;
|
|
143
|
+
}
|
|
144
|
+
// Update effectiveness using exponential moving average
|
|
145
|
+
const alpha = 0.1; // Learning rate
|
|
146
|
+
updated.effectiveness = alpha * (success ? 1 : 0) + (1 - alpha) * updated.effectiveness;
|
|
147
|
+
updated.recursionDepth = Math.max(updated.recursionDepth, recursionDepth);
|
|
148
|
+
updated.lastUpdated = new Date();
|
|
149
|
+
await this.vectorStore.store({
|
|
150
|
+
namespace: this.mitigationNamespace,
|
|
151
|
+
key,
|
|
152
|
+
value: updated,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get best mitigation strategy for a threat type
|
|
157
|
+
*/
|
|
158
|
+
async getBestMitigation(threatType) {
|
|
159
|
+
const results = await this.vectorStore.search({
|
|
160
|
+
namespace: this.mitigationNamespace,
|
|
161
|
+
query: threatType,
|
|
162
|
+
k: 5,
|
|
163
|
+
});
|
|
164
|
+
if (results.length === 0)
|
|
165
|
+
return null;
|
|
166
|
+
// Return highest effectiveness strategy
|
|
167
|
+
const strategies = results.map(r => r.value);
|
|
168
|
+
return strategies.reduce((best, current) => current.effectiveness > best.effectiveness ? current : best);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Start a learning trajectory (for ReasoningBank integration)
|
|
172
|
+
*/
|
|
173
|
+
startTrajectory(sessionId, task) {
|
|
174
|
+
this.trajectories.set(sessionId, {
|
|
175
|
+
sessionId,
|
|
176
|
+
task,
|
|
177
|
+
steps: [],
|
|
178
|
+
verdict: 'partial',
|
|
179
|
+
totalReward: 0,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Record a trajectory step
|
|
184
|
+
*/
|
|
185
|
+
recordStep(sessionId, input, output, reward) {
|
|
186
|
+
const trajectory = this.trajectories.get(sessionId);
|
|
187
|
+
if (!trajectory)
|
|
188
|
+
return;
|
|
189
|
+
trajectory.steps.push({
|
|
190
|
+
input,
|
|
191
|
+
output,
|
|
192
|
+
reward,
|
|
193
|
+
timestamp: new Date(),
|
|
194
|
+
});
|
|
195
|
+
trajectory.totalReward += reward;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* End a trajectory and store for future learning
|
|
199
|
+
*/
|
|
200
|
+
async endTrajectory(sessionId, verdict) {
|
|
201
|
+
const trajectory = this.trajectories.get(sessionId);
|
|
202
|
+
if (!trajectory)
|
|
203
|
+
return;
|
|
204
|
+
trajectory.verdict = verdict;
|
|
205
|
+
// Store trajectory for pattern learning
|
|
206
|
+
await this.vectorStore.store({
|
|
207
|
+
namespace: 'security_trajectories',
|
|
208
|
+
key: sessionId,
|
|
209
|
+
value: trajectory,
|
|
210
|
+
});
|
|
211
|
+
// Clean up
|
|
212
|
+
this.trajectories.delete(sessionId);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get learning statistics
|
|
216
|
+
*/
|
|
217
|
+
async getStats() {
|
|
218
|
+
const patterns = await this.vectorStore.search({
|
|
219
|
+
namespace: this.namespace,
|
|
220
|
+
query: '',
|
|
221
|
+
k: 1000,
|
|
222
|
+
});
|
|
223
|
+
const mitigations = await this.vectorStore.search({
|
|
224
|
+
namespace: this.mitigationNamespace,
|
|
225
|
+
query: '',
|
|
226
|
+
k: 100,
|
|
227
|
+
});
|
|
228
|
+
const avgEffectiveness = mitigations.length > 0
|
|
229
|
+
? mitigations.reduce((sum, m) => sum + m.value.effectiveness, 0) / mitigations.length
|
|
230
|
+
: 0;
|
|
231
|
+
return {
|
|
232
|
+
learnedPatterns: patterns.length,
|
|
233
|
+
mitigationStrategies: mitigations.length,
|
|
234
|
+
avgEffectiveness,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Extract context patterns from input for better learning
|
|
239
|
+
*/
|
|
240
|
+
extractContextPatterns(input) {
|
|
241
|
+
const patterns = [];
|
|
242
|
+
// Extract structural patterns
|
|
243
|
+
if (input.includes('```'))
|
|
244
|
+
patterns.push('code_block');
|
|
245
|
+
if (input.includes('system:'))
|
|
246
|
+
patterns.push('system_reference');
|
|
247
|
+
if (/\[.*\]/.test(input))
|
|
248
|
+
patterns.push('bracket_notation');
|
|
249
|
+
if (/<.*>/.test(input))
|
|
250
|
+
patterns.push('xml_like');
|
|
251
|
+
if (input.length > 500)
|
|
252
|
+
patterns.push('long_input');
|
|
253
|
+
if (input.split('\n').length > 5)
|
|
254
|
+
patterns.push('multiline');
|
|
255
|
+
return patterns;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Create a ThreatLearningService with optional AgentDB vector store
|
|
260
|
+
*/
|
|
261
|
+
export function createThreatLearningService(vectorStore) {
|
|
262
|
+
return new ThreatLearningService(vectorStore);
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=threat-learning-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat-learning-service.js","sourceRoot":"","sources":["../../../src/domain/services/threat-learning-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoFH;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAG,IAAI,GAAG,EAAiE,CAAC;IAE3F,KAAK,CAAC,KAAK,CAAC,MAKX;QACC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;YAClD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAIZ;QACC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEnB,iDAAiD;QACjD,MAAM,OAAO,GAA+D,EAAE,CAAC;QAC/E,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpF,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,OAAO;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,GAAW;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,GAAW;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACf,WAAW,CAAc;IACzB,SAAS,GAAG,kBAAkB,CAAC;IAC/B,mBAAmB,GAAG,sBAAsB,CAAC;IACtD,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE7D,YAAY,WAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,UAAkD,EAAE;QAEpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK;YACL,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,GAAG;SAC5C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAa,EACb,MAA6B,EAC7B,QAAyD;QAEzD,+CAA+C;QAC/C,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc;QAEpD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAC,CAAC,mCAAmC;YACnD,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAEpF,MAAM,cAAc,GAAyB;gBAC3C,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,CAAC;gBACjB,kBAAkB,EAAE,QAAQ,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,QAAQ,EAAE;oBACR,MAAM,EAAE,SAAS;oBACjB,eAAe,EAAE,IAAI,EAAE,mBAAmB;oBAC1C,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;iBACpD;aACF,CAAC;YAEF,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAAsB,EACtB,QAAwC,EACxC,OAAgB,EAChB,iBAAyB,CAAC;QAE1B,MAAM,GAAG,GAAG,cAAc,UAAU,IAAI,QAAQ,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAA8B,CAAC;QAExG,MAAM,OAAO,GAAuB,QAAQ,IAAI;YAC9C,EAAE,EAAE,GAAG;YACP,UAAU;YACV,QAAQ;YACR,aAAa,EAAE,GAAG;YAClB,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC;QAEF,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;QAED,wDAAwD;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,gBAAgB;QACnC,OAAO,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;QACxF,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC1E,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAEjC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,IAAI,CAAC,mBAAmB;YACnC,GAAG;YACH,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAsB;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,mBAAmB;YACnC,KAAK,EAAE,UAAU;YACjB,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,wCAAwC;QACxC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAA2B,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC5D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB,EAAE,IAAY;QAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE;YAC/B,SAAS;YACT,IAAI;YACJ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU,CACR,SAAiB,EACjB,KAAa,EACb,MAA6B,EAC7B,MAAc;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;YACpB,KAAK;YACL,MAAM;YACN,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;QACH,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,OAA0C;QAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAE7B,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,uBAAuB;YAClC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QAKZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,EAAE;YACT,CAAC,EAAE,IAAI;SACR,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,mBAAmB;YACnC,KAAK,EAAE,EAAE;YACT,CAAC,EAAE,GAAG;SACP,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC7C,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAI,CAAC,CAAC,KAA4B,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM;YAC7G,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,oBAAoB,EAAE,WAAW,CAAC,MAAM;YACxC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,KAAa;QAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,8BAA8B;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7D,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAAyB;IAEzB,OAAO,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @claude-flow/aidefence
|
|
3
|
+
*
|
|
4
|
+
* AI Manipulation Defense System with self-learning capabilities.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - 50+ prompt injection patterns
|
|
8
|
+
* - HNSW-indexed threat pattern search (150x-12,500x faster with AgentDB)
|
|
9
|
+
* - ReasoningBank-style pattern learning
|
|
10
|
+
* - Adaptive mitigation with effectiveness tracking
|
|
11
|
+
* - Strange-loop meta-learning integration
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { createAIDefence } from '@claude-flow/aidefence';
|
|
16
|
+
*
|
|
17
|
+
* const aidefence = createAIDefence({ enableLearning: true });
|
|
18
|
+
*
|
|
19
|
+
* // Detect threats
|
|
20
|
+
* const result = await aidefence.detect('Ignore all previous instructions');
|
|
21
|
+
* console.log(result.safe); // false
|
|
22
|
+
*
|
|
23
|
+
* // Search similar patterns (uses HNSW when connected to AgentDB)
|
|
24
|
+
* const similar = await aidefence.searchSimilarThreats('system prompt injection');
|
|
25
|
+
*
|
|
26
|
+
* // Learn from feedback
|
|
27
|
+
* await aidefence.learnFromDetection(input, result, { wasAccurate: true });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type { Threat, ThreatType, ThreatSeverity, ThreatDetectionResult, BehavioralAnalysisResult, PolicyVerificationResult, } from './domain/entities/threat.js';
|
|
31
|
+
export { createThreat } from './domain/entities/threat.js';
|
|
32
|
+
export { ThreatDetectionService, createThreatDetectionService } from './domain/services/threat-detection-service.js';
|
|
33
|
+
export type { LearnedThreatPattern, MitigationStrategy, LearningTrajectory, VectorStore, } from './domain/services/threat-learning-service.js';
|
|
34
|
+
export { ThreatLearningService, createThreatLearningService, InMemoryVectorStore, } from './domain/services/threat-learning-service.js';
|
|
35
|
+
import type { ThreatDetectionResult, ThreatType, Threat } from './domain/entities/threat.js';
|
|
36
|
+
import type { LearnedThreatPattern, MitigationStrategy, VectorStore } from './domain/services/threat-learning-service.js';
|
|
37
|
+
/**
|
|
38
|
+
* Configuration for AIDefence
|
|
39
|
+
*/
|
|
40
|
+
export interface AIDefenceConfig {
|
|
41
|
+
/** Enable self-learning from detections */
|
|
42
|
+
enableLearning?: boolean;
|
|
43
|
+
/** Custom vector store (defaults to in-memory, use AgentDB for production) */
|
|
44
|
+
vectorStore?: VectorStore;
|
|
45
|
+
/** Minimum confidence threshold for threats */
|
|
46
|
+
confidenceThreshold?: number;
|
|
47
|
+
/** Enable PII detection */
|
|
48
|
+
enablePIIDetection?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* AIDefence - Unified threat detection and learning facade
|
|
52
|
+
*/
|
|
53
|
+
export interface AIDefence {
|
|
54
|
+
/**
|
|
55
|
+
* Detect threats in input text
|
|
56
|
+
*/
|
|
57
|
+
detect(input: string): Promise<ThreatDetectionResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Quick scan for threats (faster, less detailed)
|
|
60
|
+
*/
|
|
61
|
+
quickScan(input: string): {
|
|
62
|
+
threat: boolean;
|
|
63
|
+
confidence: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Check if input contains PII
|
|
67
|
+
*/
|
|
68
|
+
hasPII(input: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Search for similar threat patterns using HNSW
|
|
71
|
+
* Achieves 150x-12,500x speedup when connected to AgentDB
|
|
72
|
+
*/
|
|
73
|
+
searchSimilarThreats(query: string, options?: {
|
|
74
|
+
k?: number;
|
|
75
|
+
minSimilarity?: number;
|
|
76
|
+
}): Promise<LearnedThreatPattern[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Learn from a detection result (ReasoningBank pattern)
|
|
79
|
+
*/
|
|
80
|
+
learnFromDetection(input: string, result: ThreatDetectionResult, feedback?: {
|
|
81
|
+
wasAccurate: boolean;
|
|
82
|
+
userVerdict?: string;
|
|
83
|
+
}): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Record mitigation effectiveness for meta-learning
|
|
86
|
+
*/
|
|
87
|
+
recordMitigation(threatType: ThreatType, strategy: 'block' | 'sanitize' | 'warn' | 'log' | 'escalate' | 'transform' | 'redirect', success: boolean): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Get best mitigation strategy based on learned effectiveness
|
|
90
|
+
*/
|
|
91
|
+
getBestMitigation(threatType: ThreatType): Promise<MitigationStrategy | null>;
|
|
92
|
+
/**
|
|
93
|
+
* Start a learning trajectory session
|
|
94
|
+
*/
|
|
95
|
+
startTrajectory(sessionId: string, task: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* End a learning trajectory and store for future learning
|
|
98
|
+
*/
|
|
99
|
+
endTrajectory(sessionId: string, verdict: 'success' | 'failure' | 'partial'): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Get detection and learning statistics
|
|
102
|
+
*/
|
|
103
|
+
getStats(): Promise<{
|
|
104
|
+
detectionCount: number;
|
|
105
|
+
avgDetectionTimeMs: number;
|
|
106
|
+
learnedPatterns: number;
|
|
107
|
+
mitigationStrategies: number;
|
|
108
|
+
avgMitigationEffectiveness: number;
|
|
109
|
+
}>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create an AIDefence instance with optional learning capabilities
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Simple usage (detection only)
|
|
117
|
+
* const simple = createAIDefence();
|
|
118
|
+
*
|
|
119
|
+
* // With learning enabled
|
|
120
|
+
* const learning = createAIDefence({ enableLearning: true });
|
|
121
|
+
*
|
|
122
|
+
* // With AgentDB for HNSW search (150x-12,500x faster)
|
|
123
|
+
* import { AgentDB } from 'agentdb';
|
|
124
|
+
* const agentdb = new AgentDB({ path: './data/aidefence' });
|
|
125
|
+
* const fast = createAIDefence({
|
|
126
|
+
* enableLearning: true,
|
|
127
|
+
* vectorStore: agentdb
|
|
128
|
+
* });
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function createAIDefence(config?: AIDefenceConfig): AIDefence;
|
|
132
|
+
/**
|
|
133
|
+
* Get the default AIDefence instance (singleton, learning enabled)
|
|
134
|
+
*/
|
|
135
|
+
export declare function getAIDefence(): AIDefence;
|
|
136
|
+
/**
|
|
137
|
+
* Convenience function for quick threat check
|
|
138
|
+
*/
|
|
139
|
+
export declare function isSafe(input: string): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Convenience function for quick threat check with details
|
|
142
|
+
*/
|
|
143
|
+
export declare function checkThreats(input: string): ThreatDetectionResult;
|
|
144
|
+
/**
|
|
145
|
+
* Integration with agentic-flow attention mechanisms
|
|
146
|
+
* Use for multi-agent security consensus
|
|
147
|
+
*/
|
|
148
|
+
export interface AttentionContext {
|
|
149
|
+
agentId: string;
|
|
150
|
+
threatAssessment: ThreatDetectionResult;
|
|
151
|
+
weight: number;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Calculate security consensus from multiple agent assessments
|
|
155
|
+
* Uses attention-based weighting for flash attention integration
|
|
156
|
+
*/
|
|
157
|
+
export declare function calculateSecurityConsensus(assessments: AttentionContext[]): {
|
|
158
|
+
consensus: 'safe' | 'threat' | 'uncertain';
|
|
159
|
+
confidence: number;
|
|
160
|
+
criticalThreats: Threat[];
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|