@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/index.js ADDED
@@ -0,0 +1,188 @@
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 { createThreat } from './domain/entities/threat.js';
31
+ // Domain services
32
+ export { ThreatDetectionService, createThreatDetectionService } from './domain/services/threat-detection-service.js';
33
+ export { ThreatLearningService, createThreatLearningService, InMemoryVectorStore, } from './domain/services/threat-learning-service.js';
34
+ // Import for internal use
35
+ import { createThreatDetectionService } from './domain/services/threat-detection-service.js';
36
+ import { createThreatLearningService } from './domain/services/threat-learning-service.js';
37
+ /**
38
+ * Create an AIDefence instance with optional learning capabilities
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Simple usage (detection only)
43
+ * const simple = createAIDefence();
44
+ *
45
+ * // With learning enabled
46
+ * const learning = createAIDefence({ enableLearning: true });
47
+ *
48
+ * // With AgentDB for HNSW search (150x-12,500x faster)
49
+ * import { AgentDB } from 'agentdb';
50
+ * const agentdb = new AgentDB({ path: './data/aidefence' });
51
+ * const fast = createAIDefence({
52
+ * enableLearning: true,
53
+ * vectorStore: agentdb
54
+ * });
55
+ * ```
56
+ */
57
+ export function createAIDefence(config = {}) {
58
+ const detectionService = createThreatDetectionService();
59
+ const learningService = config.enableLearning
60
+ ? createThreatLearningService(config.vectorStore)
61
+ : null;
62
+ return {
63
+ async detect(input) {
64
+ const result = detectionService.detect(input);
65
+ // Auto-learn if enabled
66
+ if (learningService && result.threats.length > 0) {
67
+ await learningService.learnFromDetection(input, result);
68
+ }
69
+ return result;
70
+ },
71
+ quickScan(input) {
72
+ return detectionService.quickScan(input);
73
+ },
74
+ hasPII(input) {
75
+ return detectionService.detectPII(input);
76
+ },
77
+ async searchSimilarThreats(query, options) {
78
+ if (!learningService) {
79
+ return [];
80
+ }
81
+ return learningService.searchSimilarThreats(query, options);
82
+ },
83
+ async learnFromDetection(input, result, feedback) {
84
+ if (!learningService) {
85
+ console.warn('Learning not enabled. Pass { enableLearning: true } to createAIDefence()');
86
+ return;
87
+ }
88
+ await learningService.learnFromDetection(input, result, feedback);
89
+ },
90
+ async recordMitigation(threatType, strategy, success) {
91
+ if (!learningService)
92
+ return;
93
+ await learningService.recordMitigation(threatType, strategy, success);
94
+ },
95
+ async getBestMitigation(threatType) {
96
+ if (!learningService)
97
+ return null;
98
+ return learningService.getBestMitigation(threatType);
99
+ },
100
+ startTrajectory(sessionId, task) {
101
+ learningService?.startTrajectory(sessionId, task);
102
+ },
103
+ async endTrajectory(sessionId, verdict) {
104
+ await learningService?.endTrajectory(sessionId, verdict);
105
+ },
106
+ async getStats() {
107
+ const detectionStats = detectionService.getStats();
108
+ const learningStats = learningService
109
+ ? await learningService.getStats()
110
+ : { learnedPatterns: 0, mitigationStrategies: 0, avgEffectiveness: 0 };
111
+ return {
112
+ detectionCount: detectionStats.detectionCount,
113
+ avgDetectionTimeMs: detectionStats.avgDetectionTimeMs,
114
+ learnedPatterns: learningStats.learnedPatterns,
115
+ mitigationStrategies: learningStats.mitigationStrategies,
116
+ avgMitigationEffectiveness: learningStats.avgEffectiveness,
117
+ };
118
+ },
119
+ };
120
+ }
121
+ /**
122
+ * Singleton instance for convenience
123
+ */
124
+ let defaultInstance = null;
125
+ /**
126
+ * Get the default AIDefence instance (singleton, learning enabled)
127
+ */
128
+ export function getAIDefence() {
129
+ if (!defaultInstance) {
130
+ defaultInstance = createAIDefence({ enableLearning: true });
131
+ }
132
+ return defaultInstance;
133
+ }
134
+ /**
135
+ * Convenience function for quick threat check
136
+ */
137
+ export function isSafe(input) {
138
+ const service = createThreatDetectionService();
139
+ return service.detect(input).safe;
140
+ }
141
+ /**
142
+ * Convenience function for quick threat check with details
143
+ */
144
+ export function checkThreats(input) {
145
+ const service = createThreatDetectionService();
146
+ return service.detect(input);
147
+ }
148
+ /**
149
+ * Calculate security consensus from multiple agent assessments
150
+ * Uses attention-based weighting for flash attention integration
151
+ */
152
+ export function calculateSecurityConsensus(assessments) {
153
+ if (assessments.length === 0) {
154
+ return { consensus: 'uncertain', confidence: 0, criticalThreats: [] };
155
+ }
156
+ // Normalize weights
157
+ const totalWeight = assessments.reduce((sum, a) => sum + a.weight, 0);
158
+ const normalized = assessments.map(a => ({
159
+ ...a,
160
+ weight: a.weight / totalWeight,
161
+ }));
162
+ // Calculate weighted threat score
163
+ let threatScore = 0;
164
+ const allThreats = [];
165
+ for (const assessment of normalized) {
166
+ if (!assessment.threatAssessment.safe) {
167
+ threatScore += assessment.weight;
168
+ allThreats.push(...assessment.threatAssessment.threats);
169
+ }
170
+ }
171
+ // Determine consensus
172
+ const criticalThreats = allThreats.filter(t => t.severity === 'critical');
173
+ if (criticalThreats.length > 0) {
174
+ return {
175
+ consensus: 'threat',
176
+ confidence: Math.max(...criticalThreats.map(t => t.confidence)),
177
+ criticalThreats,
178
+ };
179
+ }
180
+ if (threatScore > 0.5) {
181
+ return { consensus: 'threat', confidence: threatScore, criticalThreats: [] };
182
+ }
183
+ if (threatScore < 0.2) {
184
+ return { consensus: 'safe', confidence: 1 - threatScore, criticalThreats: [] };
185
+ }
186
+ return { consensus: 'uncertain', confidence: 0.5, criticalThreats: [] };
187
+ }
188
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@claude-flow/aidefence",
3
+ "version": "3.0.0-alpha.1",
4
+ "description": "AI Manipulation Defense System (AIMDS) with self-learning, prompt injection detection, and vector search integration",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./detection": {
14
+ "import": "./dist/domain/services/threat-detection-service.js",
15
+ "types": "./dist/domain/services/threat-detection-service.d.ts"
16
+ },
17
+ "./learning": {
18
+ "import": "./dist/domain/services/threat-learning-service.js",
19
+ "types": "./dist/domain/services/threat-learning-service.d.ts"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "README.md"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "prepublishOnly": "npm run build",
29
+ "test": "vitest",
30
+ "test:unit": "vitest run src",
31
+ "typecheck": "tsc --noEmit"
32
+ },
33
+ "peerDependencies": {
34
+ "agentdb": ">=2.0.0-alpha.1"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "agentdb": {
38
+ "optional": true
39
+ }
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.10.0",
43
+ "typescript": "^5.3.3",
44
+ "vitest": "^1.1.0"
45
+ },
46
+ "keywords": [
47
+ "ai-security",
48
+ "prompt-injection",
49
+ "jailbreak-detection",
50
+ "threat-detection",
51
+ "pii-detection",
52
+ "claude-flow",
53
+ "vector-search",
54
+ "self-learning",
55
+ "aimds",
56
+ "llm-security"
57
+ ],
58
+ "author": "rUv <hello@ruv.io>",
59
+ "license": "MIT",
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git+https://github.com/ruvnet/claude-flow.git",
63
+ "directory": "v3/@claude-flow/aidefence"
64
+ },
65
+ "bugs": {
66
+ "url": "https://github.com/ruvnet/claude-flow/issues"
67
+ },
68
+ "homepage": "https://github.com/ruvnet/claude-flow/tree/main/v3/@claude-flow/aidefence#readme",
69
+ "publishConfig": {
70
+ "access": "public",
71
+ "tag": "alpha"
72
+ },
73
+ "engines": {
74
+ "node": ">=18.0.0"
75
+ }
76
+ }