@soulcraft/brainy 0.43.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/augmentationFactory.d.ts.map +1 -0
  2. package/dist/augmentationFactory.js +342 -0
  3. package/dist/augmentationFactory.js.map +1 -0
  4. package/dist/augmentationPipeline.d.ts.map +1 -0
  5. package/dist/augmentationPipeline.js +472 -0
  6. package/dist/augmentationPipeline.js.map +1 -0
  7. package/dist/augmentationRegistry.d.ts.map +1 -0
  8. package/dist/augmentationRegistry.js +105 -0
  9. package/dist/augmentationRegistry.js.map +1 -0
  10. package/dist/augmentationRegistryLoader.d.ts.map +1 -0
  11. package/dist/augmentationRegistryLoader.js +213 -0
  12. package/dist/augmentationRegistryLoader.js.map +1 -0
  13. package/dist/brainyData.d.ts.map +1 -0
  14. package/dist/brainyData.js +3999 -0
  15. package/dist/brainyData.js.map +1 -0
  16. package/dist/browserFramework.d.ts.map +1 -0
  17. package/dist/browserFramework.js +31 -0
  18. package/dist/browserFramework.js.map +1 -0
  19. package/dist/coreTypes.d.ts.map +1 -0
  20. package/dist/coreTypes.js +5 -0
  21. package/dist/coreTypes.js.map +1 -0
  22. package/dist/demo.d.ts.map +1 -0
  23. package/dist/demo.js +201 -0
  24. package/dist/demo.js.map +1 -0
  25. package/dist/distributed/configManager.d.ts.map +1 -0
  26. package/dist/distributed/configManager.js +322 -0
  27. package/dist/distributed/configManager.js.map +1 -0
  28. package/dist/distributed/domainDetector.d.ts.map +1 -0
  29. package/dist/distributed/domainDetector.js +307 -0
  30. package/dist/distributed/domainDetector.js.map +1 -0
  31. package/dist/distributed/hashPartitioner.d.ts.map +1 -0
  32. package/dist/distributed/hashPartitioner.js +146 -0
  33. package/dist/distributed/hashPartitioner.js.map +1 -0
  34. package/dist/distributed/healthMonitor.d.ts.map +1 -0
  35. package/dist/distributed/healthMonitor.js +244 -0
  36. package/dist/distributed/healthMonitor.js.map +1 -0
  37. package/dist/distributed/index.d.ts.map +1 -0
  38. package/dist/distributed/index.js +9 -0
  39. package/dist/distributed/index.js.map +1 -0
  40. package/dist/distributed/operationalModes.d.ts.map +1 -0
  41. package/dist/distributed/operationalModes.js +201 -0
  42. package/dist/distributed/operationalModes.js.map +1 -0
  43. package/dist/errors/brainyError.d.ts.map +1 -0
  44. package/dist/errors/brainyError.js +113 -0
  45. package/dist/errors/brainyError.js.map +1 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/pipeline.d.ts.map +1 -0
  49. package/dist/pipeline.js +590 -0
  50. package/dist/pipeline.js.map +1 -0
  51. package/dist/sequentialPipeline.d.ts.map +1 -0
  52. package/dist/sequentialPipeline.js +417 -0
  53. package/dist/sequentialPipeline.js.map +1 -0
  54. package/dist/setup.d.ts.map +1 -0
  55. package/dist/setup.js +46 -0
  56. package/dist/setup.js.map +1 -0
  57. package/dist/unified.d.ts.map +1 -0
  58. package/dist/unified.js.map +1 -0
  59. package/dist/utils/robustModelLoader.js +60 -25
  60. package/dist/utils/robustModelLoader.js.map +1 -1
  61. package/dist/worker.d.ts.map +1 -0
  62. package/dist/worker.js +54 -0
  63. package/dist/worker.js.map +1 -0
  64. package/package.json +8 -12
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Distributed Configuration Manager
3
+ * Manages shared configuration in S3 for distributed Brainy instances
4
+ */
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ export class DistributedConfigManager {
7
+ constructor(storage, distributedConfig, brainyMode) {
8
+ this.config = null;
9
+ this.lastConfigVersion = 0;
10
+ this.storage = storage;
11
+ this.instanceId = distributedConfig?.instanceId || `instance-${uuidv4()}`;
12
+ this.configPath = distributedConfig?.configPath || '_brainy/config.json';
13
+ this.heartbeatInterval = distributedConfig?.heartbeatInterval || 30000;
14
+ this.configCheckInterval = distributedConfig?.configCheckInterval || 10000;
15
+ this.instanceTimeout = distributedConfig?.instanceTimeout || 60000;
16
+ // Set role from distributed config if provided
17
+ if (distributedConfig?.role) {
18
+ this.role = distributedConfig.role;
19
+ }
20
+ // Infer role from Brainy's read/write mode if not explicitly set
21
+ else if (brainyMode) {
22
+ if (brainyMode.writeOnly) {
23
+ this.role = 'writer';
24
+ }
25
+ else if (brainyMode.readOnly) {
26
+ this.role = 'reader';
27
+ }
28
+ // If neither readOnly nor writeOnly, role must be explicitly set
29
+ }
30
+ }
31
+ /**
32
+ * Initialize the distributed configuration
33
+ */
34
+ async initialize() {
35
+ // Load or create configuration
36
+ this.config = await this.loadOrCreateConfig();
37
+ // Determine role if not explicitly set
38
+ if (!this.role) {
39
+ this.role = await this.determineRole();
40
+ }
41
+ // Register this instance
42
+ await this.registerInstance();
43
+ // Start heartbeat and config watching
44
+ this.startHeartbeat();
45
+ this.startConfigWatch();
46
+ return this.config;
47
+ }
48
+ /**
49
+ * Load existing config or create new one
50
+ */
51
+ async loadOrCreateConfig() {
52
+ try {
53
+ // Use metadata storage with a special ID for config
54
+ const configData = await this.storage.getMetadata('_distributed_config');
55
+ if (configData) {
56
+ this.lastConfigVersion = configData.version;
57
+ return configData;
58
+ }
59
+ }
60
+ catch (error) {
61
+ // Config doesn't exist yet
62
+ }
63
+ // Create default config
64
+ const newConfig = {
65
+ version: 1,
66
+ updated: new Date().toISOString(),
67
+ settings: {
68
+ partitionStrategy: 'hash',
69
+ partitionCount: 100,
70
+ embeddingModel: 'text-embedding-ada-002',
71
+ dimensions: 1536,
72
+ distanceMetric: 'cosine',
73
+ hnswParams: {
74
+ M: 16,
75
+ efConstruction: 200
76
+ }
77
+ },
78
+ instances: {}
79
+ };
80
+ await this.saveConfig(newConfig);
81
+ return newConfig;
82
+ }
83
+ /**
84
+ * Determine role based on configuration
85
+ * IMPORTANT: Role must be explicitly set - no automatic assignment based on order
86
+ */
87
+ async determineRole() {
88
+ // Check environment variable first
89
+ if (process.env.BRAINY_ROLE) {
90
+ const role = process.env.BRAINY_ROLE.toLowerCase();
91
+ if (role === 'writer' || role === 'reader' || role === 'hybrid') {
92
+ return role;
93
+ }
94
+ throw new Error(`Invalid BRAINY_ROLE: ${process.env.BRAINY_ROLE}. Must be 'writer', 'reader', or 'hybrid'`);
95
+ }
96
+ // Check if explicitly passed in distributed config
97
+ if (this.role) {
98
+ return this.role;
99
+ }
100
+ // DO NOT auto-assign roles based on deployment order or existing instances
101
+ // This is dangerous and can lead to data corruption or loss
102
+ throw new Error('Distributed mode requires explicit role configuration. ' +
103
+ 'Set BRAINY_ROLE environment variable or pass role in distributed config. ' +
104
+ 'Valid roles: "writer", "reader", "hybrid"');
105
+ }
106
+ /**
107
+ * Check if an instance is still alive
108
+ */
109
+ isInstanceAlive(instance) {
110
+ const lastSeen = new Date(instance.lastHeartbeat).getTime();
111
+ const now = Date.now();
112
+ return (now - lastSeen) < this.instanceTimeout;
113
+ }
114
+ /**
115
+ * Register this instance in the shared config
116
+ */
117
+ async registerInstance() {
118
+ if (!this.config)
119
+ return;
120
+ // Role must be set by this point
121
+ if (!this.role) {
122
+ throw new Error('Cannot register instance without a role');
123
+ }
124
+ const instanceInfo = {
125
+ role: this.role,
126
+ status: 'active',
127
+ lastHeartbeat: new Date().toISOString(),
128
+ metrics: {
129
+ memoryUsage: process.memoryUsage().heapUsed
130
+ }
131
+ };
132
+ // Add endpoint if available
133
+ if (process.env.SERVICE_ENDPOINT) {
134
+ instanceInfo.endpoint = process.env.SERVICE_ENDPOINT;
135
+ }
136
+ this.config.instances[this.instanceId] = instanceInfo;
137
+ await this.saveConfig(this.config);
138
+ }
139
+ /**
140
+ * Save configuration with version increment
141
+ */
142
+ async saveConfig(config) {
143
+ config.version++;
144
+ config.updated = new Date().toISOString();
145
+ this.lastConfigVersion = config.version;
146
+ // Use metadata storage with a special ID for config
147
+ await this.storage.saveMetadata('_distributed_config', config);
148
+ this.config = config;
149
+ }
150
+ /**
151
+ * Start heartbeat to keep instance alive in config
152
+ */
153
+ startHeartbeat() {
154
+ this.heartbeatTimer = setInterval(async () => {
155
+ await this.updateHeartbeat();
156
+ }, this.heartbeatInterval);
157
+ }
158
+ /**
159
+ * Update heartbeat and clean stale instances
160
+ */
161
+ async updateHeartbeat() {
162
+ if (!this.config)
163
+ return;
164
+ // Reload config to get latest state
165
+ try {
166
+ const latestConfig = await this.loadConfig();
167
+ if (latestConfig) {
168
+ this.config = latestConfig;
169
+ }
170
+ }
171
+ catch (error) {
172
+ console.error('Failed to reload config:', error);
173
+ }
174
+ // Update our heartbeat
175
+ if (this.config.instances[this.instanceId]) {
176
+ this.config.instances[this.instanceId].lastHeartbeat = new Date().toISOString();
177
+ this.config.instances[this.instanceId].status = 'active';
178
+ // Update metrics if available
179
+ this.config.instances[this.instanceId].metrics = {
180
+ memoryUsage: process.memoryUsage().heapUsed
181
+ };
182
+ }
183
+ else {
184
+ // Re-register if we were removed
185
+ await this.registerInstance();
186
+ return;
187
+ }
188
+ // Clean up stale instances
189
+ const now = Date.now();
190
+ let hasChanges = false;
191
+ for (const [id, instance] of Object.entries(this.config.instances)) {
192
+ if (id === this.instanceId)
193
+ continue;
194
+ const lastSeen = new Date(instance.lastHeartbeat).getTime();
195
+ if (now - lastSeen > this.instanceTimeout) {
196
+ delete this.config.instances[id];
197
+ hasChanges = true;
198
+ }
199
+ }
200
+ // Save if there were changes
201
+ if (hasChanges) {
202
+ await this.saveConfig(this.config);
203
+ }
204
+ else {
205
+ // Just update our heartbeat without version increment
206
+ await this.storage.saveMetadata('_distributed_config', this.config);
207
+ }
208
+ }
209
+ /**
210
+ * Start watching for config changes
211
+ */
212
+ startConfigWatch() {
213
+ this.configWatchTimer = setInterval(async () => {
214
+ await this.checkForConfigUpdates();
215
+ }, this.configCheckInterval);
216
+ }
217
+ /**
218
+ * Check for configuration updates
219
+ */
220
+ async checkForConfigUpdates() {
221
+ try {
222
+ const latestConfig = await this.loadConfig();
223
+ if (!latestConfig)
224
+ return;
225
+ if (latestConfig.version > this.lastConfigVersion) {
226
+ this.config = latestConfig;
227
+ this.lastConfigVersion = latestConfig.version;
228
+ // Notify listeners of config update
229
+ if (this.onConfigUpdate) {
230
+ this.onConfigUpdate(latestConfig);
231
+ }
232
+ }
233
+ }
234
+ catch (error) {
235
+ console.error('Failed to check config updates:', error);
236
+ }
237
+ }
238
+ /**
239
+ * Load configuration from storage
240
+ */
241
+ async loadConfig() {
242
+ try {
243
+ const configData = await this.storage.getMetadata('_distributed_config');
244
+ if (configData) {
245
+ return configData;
246
+ }
247
+ }
248
+ catch (error) {
249
+ console.error('Failed to load config:', error);
250
+ }
251
+ return null;
252
+ }
253
+ /**
254
+ * Get current configuration
255
+ */
256
+ getConfig() {
257
+ return this.config;
258
+ }
259
+ /**
260
+ * Get instance role
261
+ */
262
+ getRole() {
263
+ if (!this.role) {
264
+ throw new Error('Role not initialized');
265
+ }
266
+ return this.role;
267
+ }
268
+ /**
269
+ * Get instance ID
270
+ */
271
+ getInstanceId() {
272
+ return this.instanceId;
273
+ }
274
+ /**
275
+ * Set config update callback
276
+ */
277
+ setOnConfigUpdate(callback) {
278
+ this.onConfigUpdate = callback;
279
+ }
280
+ /**
281
+ * Get all active instances of a specific role
282
+ */
283
+ getInstancesByRole(role) {
284
+ if (!this.config)
285
+ return [];
286
+ return Object.entries(this.config.instances)
287
+ .filter(([_, instance]) => instance.role === role &&
288
+ this.isInstanceAlive(instance))
289
+ .map(([_, instance]) => instance);
290
+ }
291
+ /**
292
+ * Update instance metrics
293
+ */
294
+ async updateMetrics(metrics) {
295
+ if (!this.config || !this.config.instances[this.instanceId])
296
+ return;
297
+ this.config.instances[this.instanceId].metrics = {
298
+ ...this.config.instances[this.instanceId].metrics,
299
+ ...metrics
300
+ };
301
+ // Don't increment version for metric updates
302
+ await this.storage.saveMetadata('_distributed_config', this.config);
303
+ }
304
+ /**
305
+ * Cleanup resources
306
+ */
307
+ async cleanup() {
308
+ // Stop timers
309
+ if (this.heartbeatTimer) {
310
+ clearInterval(this.heartbeatTimer);
311
+ }
312
+ if (this.configWatchTimer) {
313
+ clearInterval(this.configWatchTimer);
314
+ }
315
+ // Mark instance as inactive
316
+ if (this.config && this.config.instances[this.instanceId]) {
317
+ this.config.instances[this.instanceId].status = 'inactive';
318
+ await this.saveConfig(this.config);
319
+ }
320
+ }
321
+ }
322
+ //# sourceMappingURL=configManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/distributed/configManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainDetector.d.ts","sourceRoot":"","sources":["../../src/distributed/domainDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAiDrB;IAED,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,WAAW,CAAiC;IAEpD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAqDvC;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM9C;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;CASjC"}
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Domain Detector
3
+ * Automatically detects and manages data domains for logical separation
4
+ */
5
+ export class DomainDetector {
6
+ constructor() {
7
+ this.domainPatterns = [
8
+ {
9
+ domain: 'medical',
10
+ patterns: {
11
+ fields: ['symptoms', 'diagnosis', 'treatment', 'medication', 'patient'],
12
+ keywords: ['medical', 'health', 'disease', 'symptom', 'treatment', 'doctor', 'patient']
13
+ },
14
+ priority: 1
15
+ },
16
+ {
17
+ domain: 'legal',
18
+ patterns: {
19
+ fields: ['contract', 'clause', 'litigation', 'statute', 'jurisdiction'],
20
+ keywords: ['legal', 'law', 'contract', 'court', 'attorney', 'litigation', 'statute']
21
+ },
22
+ priority: 1
23
+ },
24
+ {
25
+ domain: 'product',
26
+ patterns: {
27
+ fields: ['price', 'sku', 'inventory', 'category', 'brand'],
28
+ keywords: ['product', 'price', 'sale', 'inventory', 'catalog', 'item', 'sku']
29
+ },
30
+ priority: 1
31
+ },
32
+ {
33
+ domain: 'customer',
34
+ patterns: {
35
+ fields: ['customerId', 'email', 'phone', 'address', 'orders'],
36
+ keywords: ['customer', 'client', 'user', 'account', 'profile', 'contact']
37
+ },
38
+ priority: 1
39
+ },
40
+ {
41
+ domain: 'financial',
42
+ patterns: {
43
+ fields: ['amount', 'currency', 'transaction', 'balance', 'account'],
44
+ keywords: ['financial', 'money', 'payment', 'transaction', 'bank', 'credit', 'debit']
45
+ },
46
+ priority: 1
47
+ },
48
+ {
49
+ domain: 'technical',
50
+ patterns: {
51
+ fields: ['code', 'function', 'error', 'stack', 'api'],
52
+ keywords: ['code', 'software', 'api', 'error', 'debug', 'function', 'class', 'method']
53
+ },
54
+ priority: 2
55
+ }
56
+ ];
57
+ this.customPatterns = [];
58
+ this.domainStats = new Map();
59
+ }
60
+ /**
61
+ * Detect domain from data object
62
+ * @param data - The data object to analyze
63
+ * @returns The detected domain and metadata
64
+ */
65
+ detectDomain(data) {
66
+ if (!data || typeof data !== 'object') {
67
+ return { domain: 'general' };
68
+ }
69
+ // Check for explicit domain field
70
+ if (data.domain && typeof data.domain === 'string') {
71
+ this.updateStats(data.domain);
72
+ return {
73
+ domain: data.domain,
74
+ domainMetadata: this.extractDomainMetadata(data, data.domain)
75
+ };
76
+ }
77
+ // Score each domain pattern
78
+ const scores = new Map();
79
+ // Check custom patterns first (higher priority)
80
+ for (const pattern of this.customPatterns) {
81
+ const score = this.scorePattern(data, pattern);
82
+ if (score > 0) {
83
+ scores.set(pattern.domain, score * (pattern.priority || 1));
84
+ }
85
+ }
86
+ // Check default patterns
87
+ for (const pattern of this.domainPatterns) {
88
+ const score = this.scorePattern(data, pattern);
89
+ if (score > 0) {
90
+ const currentScore = scores.get(pattern.domain) || 0;
91
+ scores.set(pattern.domain, currentScore + score * (pattern.priority || 1));
92
+ }
93
+ }
94
+ // Find highest scoring domain
95
+ let bestDomain = 'general';
96
+ let bestScore = 0;
97
+ for (const [domain, score] of scores.entries()) {
98
+ if (score > bestScore) {
99
+ bestDomain = domain;
100
+ bestScore = score;
101
+ }
102
+ }
103
+ this.updateStats(bestDomain);
104
+ return {
105
+ domain: bestDomain,
106
+ domainMetadata: this.extractDomainMetadata(data, bestDomain)
107
+ };
108
+ }
109
+ /**
110
+ * Score a data object against a domain pattern
111
+ */
112
+ scorePattern(data, pattern) {
113
+ let score = 0;
114
+ // Check field matches
115
+ if (pattern.patterns.fields) {
116
+ const dataKeys = Object.keys(data);
117
+ for (const field of pattern.patterns.fields) {
118
+ if (dataKeys.some(key => key.toLowerCase().includes(field.toLowerCase()))) {
119
+ score += 2; // Field match is strong signal
120
+ }
121
+ }
122
+ }
123
+ // Check keyword matches in values
124
+ if (pattern.patterns.keywords) {
125
+ const dataStr = JSON.stringify(data).toLowerCase();
126
+ for (const keyword of pattern.patterns.keywords) {
127
+ if (dataStr.includes(keyword.toLowerCase())) {
128
+ score += 1;
129
+ }
130
+ }
131
+ }
132
+ // Check regex patterns
133
+ if (pattern.patterns.regex) {
134
+ const dataStr = JSON.stringify(data);
135
+ if (pattern.patterns.regex.test(dataStr)) {
136
+ score += 3; // Regex match is very specific
137
+ }
138
+ }
139
+ return score;
140
+ }
141
+ /**
142
+ * Extract domain-specific metadata
143
+ */
144
+ extractDomainMetadata(data, domain) {
145
+ const metadata = {};
146
+ switch (domain) {
147
+ case 'medical':
148
+ if (data.patientId)
149
+ metadata.patientId = data.patientId;
150
+ if (data.condition)
151
+ metadata.condition = data.condition;
152
+ if (data.severity)
153
+ metadata.severity = data.severity;
154
+ break;
155
+ case 'legal':
156
+ if (data.caseId)
157
+ metadata.caseId = data.caseId;
158
+ if (data.jurisdiction)
159
+ metadata.jurisdiction = data.jurisdiction;
160
+ if (data.documentType)
161
+ metadata.documentType = data.documentType;
162
+ break;
163
+ case 'product':
164
+ if (data.sku)
165
+ metadata.sku = data.sku;
166
+ if (data.category)
167
+ metadata.category = data.category;
168
+ if (data.brand)
169
+ metadata.brand = data.brand;
170
+ if (data.price)
171
+ metadata.priceRange = this.getPriceRange(data.price);
172
+ break;
173
+ case 'customer':
174
+ if (data.customerId)
175
+ metadata.customerId = data.customerId;
176
+ if (data.segment)
177
+ metadata.segment = data.segment;
178
+ if (data.lifetime_value)
179
+ metadata.valueCategory = this.getValueCategory(data.lifetime_value);
180
+ break;
181
+ case 'financial':
182
+ if (data.accountId)
183
+ metadata.accountId = data.accountId;
184
+ if (data.transactionType)
185
+ metadata.transactionType = data.transactionType;
186
+ if (data.amount)
187
+ metadata.amountRange = this.getAmountRange(data.amount);
188
+ break;
189
+ case 'technical':
190
+ if (data.service)
191
+ metadata.service = data.service;
192
+ if (data.environment)
193
+ metadata.environment = data.environment;
194
+ if (data.severity)
195
+ metadata.severity = data.severity;
196
+ break;
197
+ }
198
+ // Add detection confidence
199
+ metadata.detectionConfidence = this.calculateConfidence(data, domain);
200
+ return metadata;
201
+ }
202
+ /**
203
+ * Calculate detection confidence
204
+ */
205
+ calculateConfidence(data, domain) {
206
+ // If domain was explicitly specified
207
+ if (data.domain === domain)
208
+ return 'high';
209
+ // Check how many patterns matched
210
+ const pattern = [...this.customPatterns, ...this.domainPatterns]
211
+ .find(p => p.domain === domain);
212
+ if (!pattern)
213
+ return 'low';
214
+ const score = this.scorePattern(data, pattern);
215
+ if (score >= 5)
216
+ return 'high';
217
+ if (score >= 2)
218
+ return 'medium';
219
+ return 'low';
220
+ }
221
+ /**
222
+ * Categorize price ranges
223
+ */
224
+ getPriceRange(price) {
225
+ if (price < 10)
226
+ return 'low';
227
+ if (price < 100)
228
+ return 'medium';
229
+ if (price < 1000)
230
+ return 'high';
231
+ return 'premium';
232
+ }
233
+ /**
234
+ * Categorize customer value
235
+ */
236
+ getValueCategory(value) {
237
+ if (value < 100)
238
+ return 'low';
239
+ if (value < 1000)
240
+ return 'medium';
241
+ if (value < 10000)
242
+ return 'high';
243
+ return 'vip';
244
+ }
245
+ /**
246
+ * Categorize amount ranges
247
+ */
248
+ getAmountRange(amount) {
249
+ if (amount < 100)
250
+ return 'micro';
251
+ if (amount < 1000)
252
+ return 'small';
253
+ if (amount < 10000)
254
+ return 'medium';
255
+ if (amount < 100000)
256
+ return 'large';
257
+ return 'enterprise';
258
+ }
259
+ /**
260
+ * Add custom domain pattern
261
+ * @param pattern - Custom domain pattern to add
262
+ */
263
+ addCustomPattern(pattern) {
264
+ // Remove existing pattern for same domain if exists
265
+ this.customPatterns = this.customPatterns.filter(p => p.domain !== pattern.domain);
266
+ this.customPatterns.push(pattern);
267
+ }
268
+ /**
269
+ * Remove custom domain pattern
270
+ * @param domain - Domain to remove pattern for
271
+ */
272
+ removeCustomPattern(domain) {
273
+ this.customPatterns = this.customPatterns.filter(p => p.domain !== domain);
274
+ }
275
+ /**
276
+ * Update domain statistics
277
+ */
278
+ updateStats(domain) {
279
+ const count = this.domainStats.get(domain) || 0;
280
+ this.domainStats.set(domain, count + 1);
281
+ }
282
+ /**
283
+ * Get domain statistics
284
+ * @returns Map of domain to count
285
+ */
286
+ getDomainStats() {
287
+ return new Map(this.domainStats);
288
+ }
289
+ /**
290
+ * Clear domain statistics
291
+ */
292
+ clearStats() {
293
+ this.domainStats.clear();
294
+ }
295
+ /**
296
+ * Get all configured domains
297
+ * @returns Array of domain names
298
+ */
299
+ getConfiguredDomains() {
300
+ const domains = new Set();
301
+ for (const pattern of [...this.domainPatterns, ...this.customPatterns]) {
302
+ domains.add(pattern.domain);
303
+ }
304
+ return Array.from(domains).sort();
305
+ }
306
+ }
307
+ //# sourceMappingURL=domainDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainDetector.js","sourceRoot":"","sources":["../../src/distributed/domainDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashPartitioner.d.ts","sourceRoot":"","sources":["../../src/distributed/hashPartitioner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,eAAe,CAAsB;gBAEjC,MAAM,EAAE,YAAY;IAIhC;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMtC;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAKjE;;;OAGG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAQ5B;;;;OAIG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAQhD;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAKlB;;;;;OAKG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAalE;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,UAAU,CAAQ;gBAEd,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;IAMpD;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA2BpC;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IASpD;;;OAGG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAKlC;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAG9C"}