agentic-qe 2.1.2 → 2.2.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.
Files changed (190) hide show
  1. package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -4
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +14 -11
  3. package/.claude/skills/skills-manifest.json +2 -2
  4. package/CHANGELOG.md +138 -0
  5. package/README.md +92 -214
  6. package/dist/agents/BaseAgent.d.ts +5 -1
  7. package/dist/agents/BaseAgent.d.ts.map +1 -1
  8. package/dist/agents/BaseAgent.js +32 -17
  9. package/dist/agents/BaseAgent.js.map +1 -1
  10. package/dist/agents/index.d.ts.map +1 -1
  11. package/dist/agents/index.js +5 -1
  12. package/dist/agents/index.js.map +1 -1
  13. package/dist/cli/commands/improve/index.d.ts +8 -1
  14. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  15. package/dist/cli/commands/improve/index.js +18 -16
  16. package/dist/cli/commands/improve/index.js.map +1 -1
  17. package/dist/cli/commands/learn/index.d.ts +10 -2
  18. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  19. package/dist/cli/commands/learn/index.js +99 -63
  20. package/dist/cli/commands/learn/index.js.map +1 -1
  21. package/dist/cli/commands/patterns/index.d.ts +8 -1
  22. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  23. package/dist/cli/commands/patterns/index.js +79 -45
  24. package/dist/cli/commands/patterns/index.js.map +1 -1
  25. package/dist/cli/commands/routing/index.d.ts +5 -0
  26. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  27. package/dist/cli/commands/routing/index.js +11 -10
  28. package/dist/cli/commands/routing/index.js.map +1 -1
  29. package/dist/cli/init/agents.d.ts +1 -1
  30. package/dist/cli/init/agents.js +2 -2
  31. package/dist/cli/init/database-init.d.ts +7 -0
  32. package/dist/cli/init/database-init.d.ts.map +1 -1
  33. package/dist/cli/init/database-init.js +29 -48
  34. package/dist/cli/init/database-init.js.map +1 -1
  35. package/dist/core/di/AgentDependencies.d.ts +127 -0
  36. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  37. package/dist/core/di/AgentDependencies.js +251 -0
  38. package/dist/core/di/AgentDependencies.js.map +1 -0
  39. package/dist/core/di/DIContainer.d.ts +149 -0
  40. package/dist/core/di/DIContainer.d.ts.map +1 -0
  41. package/dist/core/di/DIContainer.js +333 -0
  42. package/dist/core/di/DIContainer.js.map +1 -0
  43. package/dist/core/di/index.d.ts +11 -0
  44. package/dist/core/di/index.d.ts.map +1 -0
  45. package/dist/core/di/index.js +22 -0
  46. package/dist/core/di/index.js.map +1 -0
  47. package/dist/core/index.d.ts +1 -0
  48. package/dist/core/index.d.ts.map +1 -1
  49. package/dist/core/index.js +11 -1
  50. package/dist/core/index.js.map +1 -1
  51. package/dist/core/memory/HNSWVectorMemory.d.ts +261 -0
  52. package/dist/core/memory/HNSWVectorMemory.d.ts.map +1 -0
  53. package/dist/core/memory/HNSWVectorMemory.js +647 -0
  54. package/dist/core/memory/HNSWVectorMemory.js.map +1 -0
  55. package/dist/core/memory/SwarmMemoryManager.d.ts +7 -0
  56. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  57. package/dist/core/memory/SwarmMemoryManager.js +9 -0
  58. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  59. package/dist/core/memory/index.d.ts +2 -0
  60. package/dist/core/memory/index.d.ts.map +1 -1
  61. package/dist/core/memory/index.js +11 -1
  62. package/dist/core/memory/index.js.map +1 -1
  63. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  64. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  65. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  66. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  67. package/dist/learning/ExplainableLearning.d.ts +191 -0
  68. package/dist/learning/ExplainableLearning.d.ts.map +1 -0
  69. package/dist/learning/ExplainableLearning.js +441 -0
  70. package/dist/learning/ExplainableLearning.js.map +1 -0
  71. package/dist/learning/GossipPatternSharingProtocol.d.ts +228 -0
  72. package/dist/learning/GossipPatternSharingProtocol.d.ts.map +1 -0
  73. package/dist/learning/GossipPatternSharingProtocol.js +590 -0
  74. package/dist/learning/GossipPatternSharingProtocol.js.map +1 -0
  75. package/dist/learning/LearningEngine.d.ts +104 -4
  76. package/dist/learning/LearningEngine.d.ts.map +1 -1
  77. package/dist/learning/LearningEngine.js +350 -16
  78. package/dist/learning/LearningEngine.js.map +1 -1
  79. package/dist/learning/PerformanceOptimizer.d.ts +268 -0
  80. package/dist/learning/PerformanceOptimizer.d.ts.map +1 -0
  81. package/dist/learning/PerformanceOptimizer.js +552 -0
  82. package/dist/learning/PerformanceOptimizer.js.map +1 -0
  83. package/dist/learning/PrivacyManager.d.ts +197 -0
  84. package/dist/learning/PrivacyManager.d.ts.map +1 -0
  85. package/dist/learning/PrivacyManager.js +551 -0
  86. package/dist/learning/PrivacyManager.js.map +1 -0
  87. package/dist/learning/QLearning.d.ts +38 -125
  88. package/dist/learning/QLearning.d.ts.map +1 -1
  89. package/dist/learning/QLearning.js +46 -267
  90. package/dist/learning/QLearning.js.map +1 -1
  91. package/dist/learning/QLearningLegacy.d.ts +154 -0
  92. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  93. package/dist/learning/QLearningLegacy.js +337 -0
  94. package/dist/learning/QLearningLegacy.js.map +1 -0
  95. package/dist/learning/TransferLearningManager.d.ts +212 -0
  96. package/dist/learning/TransferLearningManager.d.ts.map +1 -0
  97. package/dist/learning/TransferLearningManager.js +497 -0
  98. package/dist/learning/TransferLearningManager.js.map +1 -0
  99. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  100. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  101. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  102. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  103. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  104. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  105. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  106. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  107. package/dist/learning/algorithms/MAMLMetaLearner.d.ts +218 -0
  108. package/dist/learning/algorithms/MAMLMetaLearner.d.ts.map +1 -0
  109. package/dist/learning/algorithms/MAMLMetaLearner.js +532 -0
  110. package/dist/learning/algorithms/MAMLMetaLearner.js.map +1 -0
  111. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  112. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  113. package/dist/learning/algorithms/PPOLearner.js +490 -0
  114. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  115. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  116. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  117. package/dist/learning/algorithms/QLearning.js +116 -0
  118. package/dist/learning/algorithms/QLearning.js.map +1 -0
  119. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  120. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  121. package/dist/learning/algorithms/SARSALearner.js +252 -0
  122. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  123. package/dist/learning/algorithms/index.d.ts +32 -0
  124. package/dist/learning/algorithms/index.d.ts.map +1 -0
  125. package/dist/learning/algorithms/index.js +50 -0
  126. package/dist/learning/algorithms/index.js.map +1 -0
  127. package/dist/learning/index.d.ts +11 -0
  128. package/dist/learning/index.d.ts.map +1 -1
  129. package/dist/learning/index.js +31 -1
  130. package/dist/learning/index.js.map +1 -1
  131. package/dist/learning/types.d.ts +2 -0
  132. package/dist/learning/types.d.ts.map +1 -1
  133. package/dist/mcp/server-instructions.d.ts +1 -1
  134. package/dist/mcp/server-instructions.js +1 -1
  135. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  136. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  137. package/dist/memory/DistributedPatternLibrary.js +370 -0
  138. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  139. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  140. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  141. package/dist/memory/PatternQualityScorer.js +327 -0
  142. package/dist/memory/PatternQualityScorer.js.map +1 -0
  143. package/dist/memory/PatternReplicationService.d.ts +187 -0
  144. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  145. package/dist/memory/PatternReplicationService.js +392 -0
  146. package/dist/memory/PatternReplicationService.js.map +1 -0
  147. package/dist/providers/ClaudeProvider.d.ts +98 -0
  148. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  149. package/dist/providers/ClaudeProvider.js +418 -0
  150. package/dist/providers/ClaudeProvider.js.map +1 -0
  151. package/dist/providers/HybridRouter.d.ts +217 -0
  152. package/dist/providers/HybridRouter.d.ts.map +1 -0
  153. package/dist/providers/HybridRouter.js +679 -0
  154. package/dist/providers/HybridRouter.js.map +1 -0
  155. package/dist/providers/ILLMProvider.d.ts +287 -0
  156. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  157. package/dist/providers/ILLMProvider.js +33 -0
  158. package/dist/providers/ILLMProvider.js.map +1 -0
  159. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  160. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  161. package/dist/providers/LLMProviderFactory.js +426 -0
  162. package/dist/providers/LLMProviderFactory.js.map +1 -0
  163. package/dist/providers/RuvllmProvider.d.ts +107 -0
  164. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  165. package/dist/providers/RuvllmProvider.js +417 -0
  166. package/dist/providers/RuvllmProvider.js.map +1 -0
  167. package/dist/providers/index.d.ts +32 -0
  168. package/dist/providers/index.d.ts.map +1 -0
  169. package/dist/providers/index.js +75 -0
  170. package/dist/providers/index.js.map +1 -0
  171. package/dist/telemetry/LearningTelemetry.d.ts +190 -0
  172. package/dist/telemetry/LearningTelemetry.d.ts.map +1 -0
  173. package/dist/telemetry/LearningTelemetry.js +403 -0
  174. package/dist/telemetry/LearningTelemetry.js.map +1 -0
  175. package/dist/telemetry/index.d.ts +1 -0
  176. package/dist/telemetry/index.d.ts.map +1 -1
  177. package/dist/telemetry/index.js +20 -2
  178. package/dist/telemetry/index.js.map +1 -1
  179. package/dist/telemetry/instrumentation/agent.d.ts +1 -1
  180. package/dist/telemetry/instrumentation/agent.js +1 -1
  181. package/dist/telemetry/instrumentation/index.d.ts +1 -1
  182. package/dist/telemetry/instrumentation/index.js +1 -1
  183. package/dist/utils/math.d.ts +11 -0
  184. package/dist/utils/math.d.ts.map +1 -0
  185. package/dist/utils/math.js +16 -0
  186. package/dist/utils/math.js.map +1 -0
  187. package/docs/reference/agents.md +1 -1
  188. package/docs/reference/skills.md +3 -3
  189. package/docs/reference/usage.md +4 -4
  190. package/package.json +1 -1
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ /**
3
+ * PrivacyManager - Privacy Controls for Learning Data
4
+ *
5
+ * Implements privacy levels and data protection for the learning system:
6
+ * - PUBLIC: Full sharing, all data visible
7
+ * - TEAM: Share within team namespace only
8
+ * - PRIVATE: No sharing, local learning only
9
+ * - PARANOID: No persistence, in-memory only, auto-wipe
10
+ *
11
+ * Features:
12
+ * - Code snippet sanitization
13
+ * - Agent ID anonymization for cross-team sharing
14
+ * - Data retention policies
15
+ * - Encryption for sensitive patterns
16
+ * - Integration with ExperienceSharingProtocol
17
+ *
18
+ * @module learning/PrivacyManager
19
+ * @version 1.0.0
20
+ */
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.PrivacyManager = exports.PrivacyLevel = void 0;
26
+ const crypto_1 = __importDefault(require("crypto"));
27
+ const Logger_1 = require("../utils/Logger");
28
+ /**
29
+ * Privacy levels for learning data
30
+ */
31
+ var PrivacyLevel;
32
+ (function (PrivacyLevel) {
33
+ /** Full sharing, all data visible */
34
+ PrivacyLevel["PUBLIC"] = "PUBLIC";
35
+ /** Share within team namespace only */
36
+ PrivacyLevel["TEAM"] = "TEAM";
37
+ /** No sharing, local learning only */
38
+ PrivacyLevel["PRIVATE"] = "PRIVATE";
39
+ /** No persistence, in-memory only, auto-wipe */
40
+ PrivacyLevel["PARANOID"] = "PARANOID";
41
+ })(PrivacyLevel || (exports.PrivacyLevel = PrivacyLevel = {}));
42
+ /**
43
+ * Default privacy configurations for each level
44
+ */
45
+ const DEFAULT_PRIVACY_CONFIGS = {
46
+ [PrivacyLevel.PUBLIC]: {
47
+ retentionPeriod: 365 * 24 * 60 * 60 * 1000, // 1 year
48
+ sanitizeCode: false,
49
+ anonymizeAgentIds: false,
50
+ redactionPatterns: []
51
+ },
52
+ [PrivacyLevel.TEAM]: {
53
+ retentionPeriod: 90 * 24 * 60 * 60 * 1000, // 90 days
54
+ sanitizeCode: true,
55
+ anonymizeAgentIds: true,
56
+ redactionPatterns: [
57
+ 'password\\s*=\\s*["\'].*?["\']',
58
+ 'api[_-]?key\\s*=\\s*["\'].*?["\']',
59
+ 'secret\\s*=\\s*["\'].*?["\']',
60
+ 'token\\s*=\\s*["\'].*?["\']'
61
+ ]
62
+ },
63
+ [PrivacyLevel.PRIVATE]: {
64
+ retentionPeriod: 30 * 24 * 60 * 60 * 1000, // 30 days
65
+ sanitizeCode: true,
66
+ anonymizeAgentIds: true,
67
+ redactionPatterns: [
68
+ 'password\\s*=\\s*["\'].*?["\']',
69
+ 'api[_-]?key\\s*=\\s*["\'].*?["\']',
70
+ 'secret\\s*=\\s*["\'].*?["\']',
71
+ 'token\\s*=\\s*["\'].*?["\']',
72
+ '\\b\\d{3}-\\d{2}-\\d{4}\\b', // SSN
73
+ '\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b', // Email
74
+ '\\b(?:\\d[ -]?){13,16}\\b' // Credit card
75
+ ]
76
+ },
77
+ [PrivacyLevel.PARANOID]: {
78
+ retentionPeriod: 0, // No persistence
79
+ sanitizeCode: true,
80
+ anonymizeAgentIds: true,
81
+ maxExperienceAge: 60 * 60 * 1000, // 1 hour max age in memory
82
+ redactionPatterns: [
83
+ // All patterns from PRIVATE plus more aggressive ones
84
+ 'password\\s*=\\s*["\'].*?["\']',
85
+ 'api[_-]?key\\s*=\\s*["\'].*?["\']',
86
+ 'secret\\s*=\\s*["\'].*?["\']',
87
+ 'token\\s*=\\s*["\'].*?["\']',
88
+ '\\b\\d{3}-\\d{2}-\\d{4}\\b',
89
+ '\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b',
90
+ '\\b(?:\\d[ -]?){13,16}\\b',
91
+ '\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b', // IP addresses
92
+ '\\b[a-f0-9]{32}\\b', // MD5 hashes
93
+ '\\b[a-f0-9]{40}\\b', // SHA1 hashes
94
+ '\\b[a-f0-9]{64}\\b' // SHA256 hashes
95
+ ]
96
+ }
97
+ };
98
+ /**
99
+ * PrivacyManager - Manages privacy controls for learning data
100
+ */
101
+ class PrivacyManager {
102
+ constructor(config) {
103
+ this.encryptionAlgorithm = 'aes-256-cbc';
104
+ this.logger = Logger_1.Logger.getInstance();
105
+ // Merge with defaults for the privacy level
106
+ const defaults = DEFAULT_PRIVACY_CONFIGS[config.level];
107
+ this.config = {
108
+ level: config.level,
109
+ teamNamespace: config.teamNamespace ?? '',
110
+ encryptionKey: config.encryptionKey ?? this.generateEncryptionKey(),
111
+ retentionPeriod: config.retentionPeriod ?? defaults.retentionPeriod ?? 0,
112
+ sanitizeCode: config.sanitizeCode ?? defaults.sanitizeCode ?? false,
113
+ anonymizeAgentIds: config.anonymizeAgentIds ?? defaults.anonymizeAgentIds ?? false,
114
+ maxExperienceAge: config.maxExperienceAge ?? defaults.maxExperienceAge ?? 0,
115
+ redactionPatterns: config.redactionPatterns ?? defaults.redactionPatterns ?? []
116
+ };
117
+ this.anonymizationMap = new Map();
118
+ // Initialize encryption key
119
+ if (this.config.encryptionKey) {
120
+ this.encryptionKey = this.deriveKey(this.config.encryptionKey);
121
+ }
122
+ // Validate configuration
123
+ this.validateConfig();
124
+ // Start cleanup timer for PARANOID mode
125
+ if (this.config.level === PrivacyLevel.PARANOID && this.config.maxExperienceAge > 0) {
126
+ this.startCleanupTimer();
127
+ }
128
+ this.logger.info(`PrivacyManager initialized with level: ${this.config.level}`);
129
+ }
130
+ /**
131
+ * Validate privacy configuration
132
+ */
133
+ validateConfig() {
134
+ if (this.config.level === PrivacyLevel.TEAM && !this.config.teamNamespace) {
135
+ throw new Error('teamNamespace is required for TEAM privacy level');
136
+ }
137
+ if ((this.config.level === PrivacyLevel.PRIVATE || this.config.level === PrivacyLevel.PARANOID) &&
138
+ !this.config.encryptionKey) {
139
+ this.logger.warn('No encryption key provided for PRIVATE/PARANOID mode, using auto-generated key');
140
+ }
141
+ }
142
+ /**
143
+ * Generate a random encryption key
144
+ */
145
+ generateEncryptionKey() {
146
+ return crypto_1.default.randomBytes(32).toString('hex');
147
+ }
148
+ /**
149
+ * Derive encryption key from password
150
+ */
151
+ deriveKey(password) {
152
+ return crypto_1.default.pbkdf2Sync(password, 'agentic-qe-salt', 100000, 32, 'sha256');
153
+ }
154
+ /**
155
+ * Get current privacy level
156
+ */
157
+ getPrivacyLevel() {
158
+ return this.config.level;
159
+ }
160
+ /**
161
+ * Check if experience sharing is allowed
162
+ */
163
+ canShareExperiences() {
164
+ return this.config.level === PrivacyLevel.PUBLIC ||
165
+ this.config.level === PrivacyLevel.TEAM;
166
+ }
167
+ /**
168
+ * Check if persistence is allowed
169
+ */
170
+ canPersist() {
171
+ return this.config.level !== PrivacyLevel.PARANOID;
172
+ }
173
+ /**
174
+ * Check if an experience can be shared with a specific agent
175
+ */
176
+ canShareWith(targetAgentId, targetTeamNamespace) {
177
+ switch (this.config.level) {
178
+ case PrivacyLevel.PUBLIC:
179
+ return true;
180
+ case PrivacyLevel.TEAM:
181
+ return targetTeamNamespace === this.config.teamNamespace;
182
+ case PrivacyLevel.PRIVATE:
183
+ case PrivacyLevel.PARANOID:
184
+ return false;
185
+ default:
186
+ return false;
187
+ }
188
+ }
189
+ /**
190
+ * Sanitize an experience based on privacy settings
191
+ */
192
+ sanitizeExperience(experience) {
193
+ const redactions = [];
194
+ let sanitized = { ...experience };
195
+ let anonymized = false;
196
+ let encrypted = false;
197
+ // Anonymize agent ID if configured
198
+ if (this.config.anonymizeAgentIds) {
199
+ sanitized.agentId = this.anonymizeAgentId(experience.agentId);
200
+ anonymized = true;
201
+ redactions.push('agent_id');
202
+ }
203
+ // Sanitize code snippets in context features
204
+ if (this.config.sanitizeCode && sanitized.state.contextFeatures) {
205
+ const { sanitized: sanitizedContext, redacted } = this.sanitizeObject(sanitized.state.contextFeatures);
206
+ sanitized.state.contextFeatures = sanitizedContext;
207
+ redactions.push(...redacted);
208
+ }
209
+ // Encrypt sensitive action data for PRIVATE/PARANOID
210
+ if ((this.config.level === PrivacyLevel.PRIVATE || this.config.level === PrivacyLevel.PARANOID) &&
211
+ this.encryptionKey) {
212
+ sanitized.action = this.encryptActionData(sanitized.action);
213
+ encrypted = true;
214
+ redactions.push('action_encrypted');
215
+ }
216
+ return {
217
+ original: experience,
218
+ sanitized,
219
+ redactions,
220
+ anonymized,
221
+ encrypted
222
+ };
223
+ }
224
+ /**
225
+ * Sanitize a shared experience before sharing
226
+ */
227
+ sanitizeSharedExperience(sharedExperience) {
228
+ const { sanitized } = this.sanitizeExperience(sharedExperience.experience);
229
+ return {
230
+ ...sharedExperience,
231
+ experience: sanitized,
232
+ sourceAgentId: this.config.anonymizeAgentIds
233
+ ? this.anonymizeAgentId(sharedExperience.sourceAgentId)
234
+ : sharedExperience.sourceAgentId
235
+ };
236
+ }
237
+ /**
238
+ * Sanitize a learned pattern
239
+ */
240
+ sanitizePattern(pattern) {
241
+ const sanitized = { ...pattern };
242
+ // Sanitize pattern string (may contain code)
243
+ if (this.config.sanitizeCode) {
244
+ const { sanitized: sanitizedPattern } = this.sanitizeString(pattern.pattern);
245
+ sanitized.pattern = sanitizedPattern;
246
+ }
247
+ // Sanitize contexts (may contain sensitive task types)
248
+ if (this.config.sanitizeCode && sanitized.contexts) {
249
+ sanitized.contexts = sanitized.contexts.map(ctx => {
250
+ const { sanitized: sanitizedCtx } = this.sanitizeString(ctx);
251
+ return sanitizedCtx;
252
+ });
253
+ }
254
+ return sanitized;
255
+ }
256
+ /**
257
+ * Anonymize an agent ID
258
+ */
259
+ anonymizeAgentId(agentId) {
260
+ if (!this.anonymizationMap.has(agentId)) {
261
+ const hash = crypto_1.default.createHash('sha256').update(agentId).digest('hex').substring(0, 16);
262
+ const anonymousId = `agent-${hash}`;
263
+ this.anonymizationMap.set(agentId, anonymousId);
264
+ }
265
+ return this.anonymizationMap.get(agentId);
266
+ }
267
+ /**
268
+ * De-anonymize an agent ID (if mapping exists)
269
+ */
270
+ deAnonymizeAgentId(anonymousId) {
271
+ for (const [original, anonymous] of this.anonymizationMap.entries()) {
272
+ if (anonymous === anonymousId) {
273
+ return original;
274
+ }
275
+ }
276
+ return undefined;
277
+ }
278
+ /**
279
+ * Sanitize a string by applying redaction patterns
280
+ */
281
+ sanitizeString(input) {
282
+ let sanitized = input;
283
+ const redacted = [];
284
+ for (const pattern of this.config.redactionPatterns) {
285
+ const regex = new RegExp(pattern, 'gi');
286
+ const matches = sanitized.match(regex);
287
+ if (matches) {
288
+ sanitized = sanitized.replace(regex, '[REDACTED]');
289
+ redacted.push(`pattern_${pattern.substring(0, 20)}`);
290
+ }
291
+ }
292
+ return { sanitized, redacted };
293
+ }
294
+ /**
295
+ * Sanitize an object recursively
296
+ */
297
+ sanitizeObject(obj) {
298
+ const redacted = [];
299
+ if (typeof obj === 'string') {
300
+ const result = this.sanitizeString(obj);
301
+ redacted.push(...result.redacted);
302
+ return { sanitized: result.sanitized, redacted };
303
+ }
304
+ if (Array.isArray(obj)) {
305
+ const sanitized = obj.map(item => {
306
+ const result = this.sanitizeObject(item);
307
+ redacted.push(...result.redacted);
308
+ return result.sanitized;
309
+ });
310
+ return { sanitized, redacted };
311
+ }
312
+ if (typeof obj === 'object' && obj !== null) {
313
+ const sanitized = {};
314
+ for (const [key, value] of Object.entries(obj)) {
315
+ const result = this.sanitizeObject(value);
316
+ sanitized[key] = result.sanitized;
317
+ redacted.push(...result.redacted);
318
+ }
319
+ return { sanitized, redacted };
320
+ }
321
+ return { sanitized: obj, redacted };
322
+ }
323
+ /**
324
+ * Encrypt action data
325
+ */
326
+ encryptActionData(action) {
327
+ if (!this.encryptionKey) {
328
+ return action;
329
+ }
330
+ try {
331
+ const iv = crypto_1.default.randomBytes(16);
332
+ const cipher = crypto_1.default.createCipheriv(this.encryptionAlgorithm, this.encryptionKey, iv);
333
+ const encrypted = Buffer.concat([
334
+ cipher.update(JSON.stringify(action), 'utf8'),
335
+ cipher.final()
336
+ ]);
337
+ return {
338
+ encrypted: true,
339
+ iv: iv.toString('hex'),
340
+ data: encrypted.toString('hex')
341
+ };
342
+ }
343
+ catch (error) {
344
+ this.logger.warn('Failed to encrypt action data:', error);
345
+ return action;
346
+ }
347
+ }
348
+ /**
349
+ * Decrypt action data
350
+ */
351
+ decryptActionData(encryptedAction) {
352
+ if (!encryptedAction.encrypted || !this.encryptionKey) {
353
+ return encryptedAction;
354
+ }
355
+ try {
356
+ const iv = Buffer.from(encryptedAction.iv, 'hex');
357
+ const encryptedData = Buffer.from(encryptedAction.data, 'hex');
358
+ const decipher = crypto_1.default.createDecipheriv(this.encryptionAlgorithm, this.encryptionKey, iv);
359
+ const decrypted = Buffer.concat([
360
+ decipher.update(encryptedData),
361
+ decipher.final()
362
+ ]);
363
+ return JSON.parse(decrypted.toString('utf8'));
364
+ }
365
+ catch (error) {
366
+ this.logger.warn('Failed to decrypt action data:', error);
367
+ return encryptedAction;
368
+ }
369
+ }
370
+ /**
371
+ * Encrypt a pattern for storage
372
+ */
373
+ encryptPattern(pattern) {
374
+ if (!this.encryptionKey ||
375
+ (this.config.level !== PrivacyLevel.PRIVATE && this.config.level !== PrivacyLevel.PARANOID)) {
376
+ return pattern;
377
+ }
378
+ try {
379
+ const iv = crypto_1.default.randomBytes(16);
380
+ const cipher = crypto_1.default.createCipheriv(this.encryptionAlgorithm, this.encryptionKey, iv);
381
+ const encrypted = Buffer.concat([
382
+ cipher.update(pattern, 'utf8'),
383
+ cipher.final()
384
+ ]);
385
+ return `encrypted:${iv.toString('hex')}:${encrypted.toString('hex')}`;
386
+ }
387
+ catch (error) {
388
+ this.logger.warn('Failed to encrypt pattern:', error);
389
+ return pattern;
390
+ }
391
+ }
392
+ /**
393
+ * Decrypt a pattern from storage
394
+ */
395
+ decryptPattern(encryptedPattern) {
396
+ if (!encryptedPattern.startsWith('encrypted:') || !this.encryptionKey) {
397
+ return encryptedPattern;
398
+ }
399
+ try {
400
+ const parts = encryptedPattern.split(':');
401
+ if (parts.length !== 3) {
402
+ return encryptedPattern;
403
+ }
404
+ const iv = Buffer.from(parts[1], 'hex');
405
+ const encryptedData = Buffer.from(parts[2], 'hex');
406
+ const decipher = crypto_1.default.createDecipheriv(this.encryptionAlgorithm, this.encryptionKey, iv);
407
+ const decrypted = Buffer.concat([
408
+ decipher.update(encryptedData),
409
+ decipher.final()
410
+ ]);
411
+ return decrypted.toString('utf8');
412
+ }
413
+ catch (error) {
414
+ this.logger.warn('Failed to decrypt pattern:', error);
415
+ return encryptedPattern;
416
+ }
417
+ }
418
+ /**
419
+ * Apply data retention policy
420
+ */
421
+ applyRetentionPolicy(timestamp) {
422
+ const experienceTime = timestamp instanceof Date ? timestamp.getTime() : timestamp;
423
+ const now = Date.now();
424
+ const age = now - experienceTime;
425
+ // PARANOID mode: check max experience age
426
+ if (this.config.level === PrivacyLevel.PARANOID) {
427
+ if (this.config.maxExperienceAge > 0 && age > this.config.maxExperienceAge) {
428
+ return {
429
+ shouldRetain: false,
430
+ reason: `Experience exceeds max age for PARANOID mode (${this.config.maxExperienceAge}ms)`
431
+ };
432
+ }
433
+ return {
434
+ shouldRetain: true,
435
+ reason: 'In-memory only, auto-wipe on cleanup',
436
+ expiresAt: new Date(experienceTime + this.config.maxExperienceAge)
437
+ };
438
+ }
439
+ // No retention period means keep forever
440
+ if (this.config.retentionPeriod === 0) {
441
+ return {
442
+ shouldRetain: true,
443
+ reason: 'No retention period configured, keep forever'
444
+ };
445
+ }
446
+ // Check if within retention period
447
+ if (age <= this.config.retentionPeriod) {
448
+ return {
449
+ shouldRetain: true,
450
+ reason: 'Within retention period',
451
+ expiresAt: new Date(experienceTime + this.config.retentionPeriod)
452
+ };
453
+ }
454
+ return {
455
+ shouldRetain: false,
456
+ reason: `Experience older than retention period (${this.config.retentionPeriod}ms)`
457
+ };
458
+ }
459
+ /**
460
+ * Start cleanup timer for PARANOID mode
461
+ */
462
+ startCleanupTimer() {
463
+ if (this.cleanupTimer) {
464
+ clearInterval(this.cleanupTimer);
465
+ }
466
+ // Run cleanup every 5 minutes
467
+ const cleanupInterval = 5 * 60 * 1000;
468
+ this.cleanupTimer = setInterval(() => {
469
+ this.logger.debug('Running PARANOID mode cleanup');
470
+ // Cleanup is handled by LearningEngine based on retention policy
471
+ }, cleanupInterval);
472
+ this.logger.info(`Started PARANOID mode cleanup timer (interval: ${cleanupInterval}ms)`);
473
+ }
474
+ /**
475
+ * Stop cleanup timer
476
+ */
477
+ stopCleanupTimer() {
478
+ if (this.cleanupTimer) {
479
+ clearInterval(this.cleanupTimer);
480
+ this.cleanupTimer = undefined;
481
+ this.logger.info('Stopped PARANOID mode cleanup timer');
482
+ }
483
+ }
484
+ /**
485
+ * Clear all anonymization mappings
486
+ */
487
+ clearAnonymizationMappings() {
488
+ this.anonymizationMap.clear();
489
+ this.logger.info('Cleared all anonymization mappings');
490
+ }
491
+ /**
492
+ * Get privacy configuration
493
+ */
494
+ getConfig() {
495
+ return { ...this.config };
496
+ }
497
+ /**
498
+ * Update privacy configuration
499
+ */
500
+ updateConfig(config) {
501
+ const oldLevel = this.config.level;
502
+ this.config = {
503
+ ...this.config,
504
+ ...config
505
+ };
506
+ // Update encryption key if changed
507
+ if (config.encryptionKey && config.encryptionKey !== this.config.encryptionKey) {
508
+ this.encryptionKey = this.deriveKey(config.encryptionKey);
509
+ }
510
+ // Handle privacy level changes
511
+ if (config.level && config.level !== oldLevel) {
512
+ this.logger.info(`Privacy level changed from ${oldLevel} to ${config.level}`);
513
+ // Start/stop cleanup timer as needed
514
+ if (config.level === PrivacyLevel.PARANOID && !this.cleanupTimer) {
515
+ this.startCleanupTimer();
516
+ }
517
+ else if (config.level !== PrivacyLevel.PARANOID && this.cleanupTimer) {
518
+ this.stopCleanupTimer();
519
+ }
520
+ }
521
+ this.validateConfig();
522
+ }
523
+ /**
524
+ * Dispose of resources
525
+ */
526
+ dispose() {
527
+ this.stopCleanupTimer();
528
+ this.clearAnonymizationMappings();
529
+ // Clear encryption key from memory
530
+ if (this.encryptionKey) {
531
+ this.encryptionKey.fill(0);
532
+ this.encryptionKey = undefined;
533
+ }
534
+ this.logger.info('PrivacyManager disposed');
535
+ }
536
+ /**
537
+ * Export privacy statistics
538
+ */
539
+ getStats() {
540
+ return {
541
+ privacyLevel: this.config.level,
542
+ canShare: this.canShareExperiences(),
543
+ canPersist: this.canPersist(),
544
+ retentionPeriod: this.config.retentionPeriod,
545
+ anonymizedAgents: this.anonymizationMap.size,
546
+ redactionPatterns: this.config.redactionPatterns.length
547
+ };
548
+ }
549
+ }
550
+ exports.PrivacyManager = PrivacyManager;
551
+ //# sourceMappingURL=PrivacyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrivacyManager.js","sourceRoot":"","sources":["../../src/learning/PrivacyManager.ts"],"names":[],"mappings":"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"}