@soulcraft/brainy 0.41.0 → 0.44.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.
- package/README.md +605 -194
- package/dist/augmentationFactory.d.ts.map +1 -0
- package/dist/augmentationFactory.js +342 -0
- package/dist/augmentationFactory.js.map +1 -0
- package/dist/augmentationPipeline.d.ts.map +1 -0
- package/dist/augmentationPipeline.js +472 -0
- package/dist/augmentationPipeline.js.map +1 -0
- package/dist/augmentationRegistry.d.ts.map +1 -0
- package/dist/augmentationRegistry.js +105 -0
- package/dist/augmentationRegistry.js.map +1 -0
- package/dist/augmentationRegistryLoader.d.ts.map +1 -0
- package/dist/augmentationRegistryLoader.js +213 -0
- package/dist/augmentationRegistryLoader.js.map +1 -0
- package/dist/augmentations/conduitAugmentations.js +1158 -0
- package/dist/augmentations/conduitAugmentations.js.map +1 -0
- package/dist/augmentations/memoryAugmentations.d.ts +2 -0
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/augmentations/memoryAugmentations.js +270 -0
- package/dist/augmentations/memoryAugmentations.js.map +1 -0
- package/dist/augmentations/serverSearchAugmentations.js +531 -0
- package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
- package/dist/brainyData.d.ts.map +1 -0
- package/dist/brainyData.js +3999 -0
- package/dist/brainyData.js.map +1 -0
- package/dist/browserFramework.d.ts +15 -0
- package/dist/browserFramework.d.ts.map +1 -0
- package/dist/browserFramework.js +31 -0
- package/dist/browserFramework.js.map +1 -0
- package/dist/coreTypes.d.ts.map +1 -0
- package/dist/coreTypes.js +5 -0
- package/dist/coreTypes.js.map +1 -0
- package/dist/demo.d.ts +106 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +201 -0
- package/dist/demo.js.map +1 -0
- package/dist/distributed/configManager.d.ts.map +1 -0
- package/dist/distributed/configManager.js +322 -0
- package/dist/distributed/configManager.js.map +1 -0
- package/dist/distributed/domainDetector.d.ts.map +1 -0
- package/dist/distributed/domainDetector.js +307 -0
- package/dist/distributed/domainDetector.js.map +1 -0
- package/dist/distributed/hashPartitioner.d.ts.map +1 -0
- package/dist/distributed/hashPartitioner.js +146 -0
- package/dist/distributed/hashPartitioner.js.map +1 -0
- package/dist/distributed/healthMonitor.d.ts.map +1 -0
- package/dist/distributed/healthMonitor.js +244 -0
- package/dist/distributed/healthMonitor.js.map +1 -0
- package/dist/distributed/index.d.ts.map +1 -0
- package/dist/distributed/index.js +9 -0
- package/dist/distributed/index.js.map +1 -0
- package/dist/distributed/operationalModes.d.ts.map +1 -0
- package/dist/distributed/operationalModes.js +201 -0
- package/dist/distributed/operationalModes.js.map +1 -0
- package/dist/errors/brainyError.d.ts.map +1 -0
- package/dist/errors/brainyError.js +113 -0
- package/dist/errors/brainyError.js.map +1 -0
- package/dist/examples/basicUsage.js +118 -0
- package/dist/examples/basicUsage.js.map +1 -0
- package/dist/hnsw/distributedSearch.js +452 -0
- package/dist/hnsw/distributedSearch.js.map +1 -0
- package/dist/hnsw/hnswIndex.js +602 -0
- package/dist/hnsw/hnswIndex.js.map +1 -0
- package/dist/hnsw/hnswIndexOptimized.js +471 -0
- package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
- package/dist/hnsw/optimizedHNSWIndex.js +313 -0
- package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
- package/dist/hnsw/partitionedHNSWIndex.js +304 -0
- package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
- package/dist/hnsw/scaledHNSWSystem.js +559 -0
- package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/brainyMCPAdapter.js +142 -0
- package/dist/mcp/brainyMCPAdapter.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +248 -0
- package/dist/mcp/brainyMCPService.js.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpAugmentationToolset.js +180 -0
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +590 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/sequentialPipeline.d.ts.map +1 -0
- package/dist/sequentialPipeline.js +417 -0
- package/dist/sequentialPipeline.js.map +1 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +46 -0
- package/dist/setup.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.js +349 -0
- package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
- package/dist/storage/adapters/batchS3Operations.js +287 -0
- package/dist/storage/adapters/batchS3Operations.js.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.js +846 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
- package/dist/storage/adapters/memoryStorage.js +532 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -0
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.js +1118 -0
- package/dist/storage/adapters/opfsStorage.js.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.js +248 -0
- package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
- package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
- package/dist/storage/baseStorage.js +603 -0
- package/dist/storage/baseStorage.js.map +1 -0
- package/dist/storage/cacheManager.js +1306 -0
- package/dist/storage/cacheManager.js.map +1 -0
- package/dist/storage/enhancedCacheManager.js +520 -0
- package/dist/storage/enhancedCacheManager.js.map +1 -0
- package/dist/storage/readOnlyOptimizations.js +425 -0
- package/dist/storage/readOnlyOptimizations.js.map +1 -0
- package/dist/storage/storageFactory.d.ts +0 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/storage/storageFactory.js +227 -0
- package/dist/storage/storageFactory.js.map +1 -0
- package/dist/types/augmentations.js +16 -0
- package/dist/types/augmentations.js.map +1 -0
- package/dist/types/brainyDataInterface.js +8 -0
- package/dist/types/brainyDataInterface.js.map +1 -0
- package/dist/types/distributedTypes.js +6 -0
- package/dist/types/distributedTypes.js.map +1 -0
- package/dist/types/fileSystemTypes.js +8 -0
- package/dist/types/fileSystemTypes.js.map +1 -0
- package/dist/types/graphTypes.js +247 -0
- package/dist/types/graphTypes.js.map +1 -0
- package/dist/types/mcpTypes.js +22 -0
- package/dist/types/mcpTypes.js.map +1 -0
- package/dist/types/paginationTypes.js +5 -0
- package/dist/types/paginationTypes.js.map +1 -0
- package/dist/types/pipelineTypes.js +7 -0
- package/dist/types/pipelineTypes.js.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/unified.d.ts.map +1 -0
- package/dist/unified.js +52 -128251
- package/dist/unified.js.map +1 -0
- package/dist/utils/autoConfiguration.js +341 -0
- package/dist/utils/autoConfiguration.js.map +1 -0
- package/dist/utils/cacheAutoConfig.js +261 -0
- package/dist/utils/cacheAutoConfig.js.map +1 -0
- package/dist/utils/crypto.js +45 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/distance.js +239 -0
- package/dist/utils/distance.js.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/embedding.js +702 -0
- package/dist/utils/embedding.js.map +1 -0
- package/dist/utils/environment.js +75 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/fieldNameTracking.js +90 -0
- package/dist/utils/fieldNameTracking.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonProcessing.js +179 -0
- package/dist/utils/jsonProcessing.js.map +1 -0
- package/dist/utils/logger.js +129 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operationUtils.js +126 -0
- package/dist/utils/operationUtils.js.map +1 -0
- package/dist/utils/robustModelLoader.d.ts +14 -0
- package/dist/utils/robustModelLoader.d.ts.map +1 -1
- package/dist/utils/robustModelLoader.js +537 -0
- package/dist/utils/robustModelLoader.js.map +1 -0
- package/dist/utils/searchCache.js +248 -0
- package/dist/utils/searchCache.js.map +1 -0
- package/dist/utils/statistics.js +25 -0
- package/dist/utils/statistics.js.map +1 -0
- package/dist/utils/statisticsCollector.js +224 -0
- package/dist/utils/statisticsCollector.js.map +1 -0
- package/dist/utils/textEncoding.js +309 -0
- package/dist/utils/textEncoding.js.map +1 -0
- package/dist/utils/typeUtils.js +40 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/version.d.ts +15 -3
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +24 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/workerUtils.js +458 -0
- package/dist/utils/workerUtils.js.map +1 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +54 -0
- package/dist/worker.js.map +1 -0
- package/package.json +30 -29
- package/dist/brainy.js +0 -90220
- package/dist/brainy.min.js +0 -12511
- package/dist/patched-platform-node.d.ts +0 -17
- package/dist/statistics/statisticsManager.d.ts +0 -121
- package/dist/storage/fileSystemStorage.d.ts +0 -73
- package/dist/storage/fileSystemStorage.d.ts.map +0 -1
- package/dist/storage/opfsStorage.d.ts +0 -236
- package/dist/storage/opfsStorage.d.ts.map +0 -1
- package/dist/storage/s3CompatibleStorage.d.ts +0 -157
- package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
- package/dist/testing/prettyReporter.d.ts +0 -23
- package/dist/testing/prettySummaryReporter.d.ts +0 -22
- package/dist/unified.min.js +0 -16153
- package/dist/utils/environmentDetection.d.ts +0 -47
- package/dist/utils/environmentDetection.d.ts.map +0 -1
- package/dist/utils/tensorflowUtils.d.ts +0 -17
- package/dist/utils/tensorflowUtils.d.ts.map +0 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitor
|
|
3
|
+
* Monitors and reports instance health in distributed deployments
|
|
4
|
+
*/
|
|
5
|
+
export class HealthMonitor {
|
|
6
|
+
constructor(configManager) {
|
|
7
|
+
this.requestCount = 0;
|
|
8
|
+
this.errorCount = 0;
|
|
9
|
+
this.totalLatency = 0;
|
|
10
|
+
this.cacheHits = 0;
|
|
11
|
+
this.cacheMisses = 0;
|
|
12
|
+
this.vectorCount = 0;
|
|
13
|
+
this.checkInterval = 30000; // 30 seconds
|
|
14
|
+
this.metricsWindow = []; // Sliding window for RPS calculation
|
|
15
|
+
this.latencyWindow = []; // Sliding window for latency
|
|
16
|
+
this.windowSize = 60000; // 1 minute window
|
|
17
|
+
this.configManager = configManager;
|
|
18
|
+
this.startTime = Date.now();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Start health monitoring
|
|
22
|
+
*/
|
|
23
|
+
start() {
|
|
24
|
+
// Initial health update
|
|
25
|
+
this.updateHealth();
|
|
26
|
+
// Schedule periodic health checks
|
|
27
|
+
this.healthCheckTimer = setInterval(() => {
|
|
28
|
+
this.updateHealth();
|
|
29
|
+
}, this.checkInterval);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Stop health monitoring
|
|
33
|
+
*/
|
|
34
|
+
stop() {
|
|
35
|
+
if (this.healthCheckTimer) {
|
|
36
|
+
clearInterval(this.healthCheckTimer);
|
|
37
|
+
this.healthCheckTimer = undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Update health status and metrics
|
|
42
|
+
*/
|
|
43
|
+
async updateHealth() {
|
|
44
|
+
const metrics = this.collectMetrics();
|
|
45
|
+
// Update config with latest metrics
|
|
46
|
+
await this.configManager.updateMetrics({
|
|
47
|
+
vectorCount: metrics.vectorCount,
|
|
48
|
+
cacheHitRate: metrics.cacheHitRate,
|
|
49
|
+
memoryUsage: metrics.memoryUsage,
|
|
50
|
+
cpuUsage: metrics.cpuUsage
|
|
51
|
+
});
|
|
52
|
+
// Clean sliding windows
|
|
53
|
+
this.cleanWindows();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Collect current metrics
|
|
57
|
+
*/
|
|
58
|
+
collectMetrics() {
|
|
59
|
+
const memUsage = process.memoryUsage();
|
|
60
|
+
return {
|
|
61
|
+
vectorCount: this.vectorCount,
|
|
62
|
+
cacheHitRate: this.calculateCacheHitRate(),
|
|
63
|
+
memoryUsage: memUsage.heapUsed,
|
|
64
|
+
cpuUsage: this.getCPUUsage(),
|
|
65
|
+
requestsPerSecond: this.calculateRPS(),
|
|
66
|
+
averageLatency: this.calculateAverageLatency(),
|
|
67
|
+
errorRate: this.calculateErrorRate()
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Calculate cache hit rate
|
|
72
|
+
*/
|
|
73
|
+
calculateCacheHitRate() {
|
|
74
|
+
const total = this.cacheHits + this.cacheMisses;
|
|
75
|
+
if (total === 0)
|
|
76
|
+
return 0;
|
|
77
|
+
return this.cacheHits / total;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Calculate requests per second
|
|
81
|
+
*/
|
|
82
|
+
calculateRPS() {
|
|
83
|
+
const now = Date.now();
|
|
84
|
+
const recentRequests = this.metricsWindow.filter(timestamp => now - timestamp < this.windowSize);
|
|
85
|
+
return recentRequests.length / (this.windowSize / 1000);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Calculate average latency
|
|
89
|
+
*/
|
|
90
|
+
calculateAverageLatency() {
|
|
91
|
+
if (this.latencyWindow.length === 0)
|
|
92
|
+
return 0;
|
|
93
|
+
const sum = this.latencyWindow.reduce((a, b) => a + b, 0);
|
|
94
|
+
return sum / this.latencyWindow.length;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Calculate error rate
|
|
98
|
+
*/
|
|
99
|
+
calculateErrorRate() {
|
|
100
|
+
if (this.requestCount === 0)
|
|
101
|
+
return 0;
|
|
102
|
+
return this.errorCount / this.requestCount;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get CPU usage (simplified)
|
|
106
|
+
*/
|
|
107
|
+
getCPUUsage() {
|
|
108
|
+
// Simplified CPU usage based on process time
|
|
109
|
+
const usage = process.cpuUsage();
|
|
110
|
+
const total = usage.user + usage.system;
|
|
111
|
+
const seconds = (Date.now() - this.startTime) / 1000;
|
|
112
|
+
return Math.min(100, (total / 1000000 / seconds) * 100);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Clean old entries from sliding windows
|
|
116
|
+
*/
|
|
117
|
+
cleanWindows() {
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
const cutoff = now - this.windowSize;
|
|
120
|
+
this.metricsWindow = this.metricsWindow.filter(t => t > cutoff);
|
|
121
|
+
// Keep only recent latency measurements
|
|
122
|
+
if (this.latencyWindow.length > 100) {
|
|
123
|
+
this.latencyWindow = this.latencyWindow.slice(-100);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Record a request
|
|
128
|
+
* @param latency - Request latency in milliseconds
|
|
129
|
+
* @param error - Whether the request resulted in an error
|
|
130
|
+
*/
|
|
131
|
+
recordRequest(latency, error = false) {
|
|
132
|
+
this.requestCount++;
|
|
133
|
+
this.metricsWindow.push(Date.now());
|
|
134
|
+
this.latencyWindow.push(latency);
|
|
135
|
+
if (error) {
|
|
136
|
+
this.errorCount++;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Record cache access
|
|
141
|
+
* @param hit - Whether it was a cache hit
|
|
142
|
+
*/
|
|
143
|
+
recordCacheAccess(hit) {
|
|
144
|
+
if (hit) {
|
|
145
|
+
this.cacheHits++;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.cacheMisses++;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Update vector count
|
|
153
|
+
* @param count - New vector count
|
|
154
|
+
*/
|
|
155
|
+
updateVectorCount(count) {
|
|
156
|
+
this.vectorCount = count;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get current health status
|
|
160
|
+
* @returns Health status object
|
|
161
|
+
*/
|
|
162
|
+
getHealthStatus() {
|
|
163
|
+
const metrics = this.collectMetrics();
|
|
164
|
+
const uptime = Date.now() - this.startTime;
|
|
165
|
+
const warnings = [];
|
|
166
|
+
const errors = [];
|
|
167
|
+
// Check for warnings
|
|
168
|
+
if (metrics.memoryUsage > 1024 * 1024 * 1024) { // > 1GB
|
|
169
|
+
warnings.push('High memory usage detected');
|
|
170
|
+
}
|
|
171
|
+
if (metrics.cacheHitRate < 0.5) {
|
|
172
|
+
warnings.push('Low cache hit rate');
|
|
173
|
+
}
|
|
174
|
+
if (metrics.errorRate && metrics.errorRate > 0.05) {
|
|
175
|
+
warnings.push('High error rate detected');
|
|
176
|
+
}
|
|
177
|
+
if (metrics.averageLatency && metrics.averageLatency > 1000) {
|
|
178
|
+
warnings.push('High latency detected');
|
|
179
|
+
}
|
|
180
|
+
// Check for errors
|
|
181
|
+
if (metrics.memoryUsage > 2 * 1024 * 1024 * 1024) { // > 2GB
|
|
182
|
+
errors.push('Critical memory usage');
|
|
183
|
+
}
|
|
184
|
+
if (metrics.errorRate && metrics.errorRate > 0.2) {
|
|
185
|
+
errors.push('Critical error rate');
|
|
186
|
+
}
|
|
187
|
+
// Determine overall status
|
|
188
|
+
let status = 'healthy';
|
|
189
|
+
if (errors.length > 0) {
|
|
190
|
+
status = 'unhealthy';
|
|
191
|
+
}
|
|
192
|
+
else if (warnings.length > 0) {
|
|
193
|
+
status = 'degraded';
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
status,
|
|
197
|
+
instanceId: this.configManager.getInstanceId(),
|
|
198
|
+
role: this.configManager.getRole(),
|
|
199
|
+
uptime,
|
|
200
|
+
lastCheck: new Date().toISOString(),
|
|
201
|
+
metrics,
|
|
202
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
203
|
+
errors: errors.length > 0 ? errors : undefined
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get health check endpoint data
|
|
208
|
+
* @returns JSON-serializable health data
|
|
209
|
+
*/
|
|
210
|
+
getHealthEndpointData() {
|
|
211
|
+
const status = this.getHealthStatus();
|
|
212
|
+
return {
|
|
213
|
+
status: status.status,
|
|
214
|
+
instanceId: status.instanceId,
|
|
215
|
+
role: status.role,
|
|
216
|
+
uptime: Math.floor(status.uptime / 1000), // Convert to seconds
|
|
217
|
+
lastCheck: status.lastCheck,
|
|
218
|
+
metrics: {
|
|
219
|
+
vectorCount: status.metrics.vectorCount,
|
|
220
|
+
cacheHitRate: Math.round(status.metrics.cacheHitRate * 100) / 100,
|
|
221
|
+
memoryUsageMB: Math.round(status.metrics.memoryUsage / 1024 / 1024),
|
|
222
|
+
cpuUsagePercent: Math.round(status.metrics.cpuUsage || 0),
|
|
223
|
+
requestsPerSecond: Math.round(status.metrics.requestsPerSecond || 0),
|
|
224
|
+
averageLatencyMs: Math.round(status.metrics.averageLatency || 0),
|
|
225
|
+
errorRate: Math.round((status.metrics.errorRate || 0) * 100) / 100
|
|
226
|
+
},
|
|
227
|
+
warnings: status.warnings,
|
|
228
|
+
errors: status.errors
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Reset metrics (useful for testing)
|
|
233
|
+
*/
|
|
234
|
+
resetMetrics() {
|
|
235
|
+
this.requestCount = 0;
|
|
236
|
+
this.errorCount = 0;
|
|
237
|
+
this.totalLatency = 0;
|
|
238
|
+
this.cacheHits = 0;
|
|
239
|
+
this.cacheMisses = 0;
|
|
240
|
+
this.metricsWindow = [];
|
|
241
|
+
this.latencyWindow = [];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=healthMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthMonitor.js","sourceRoot":"","sources":["../../src/distributed/healthMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/distributed/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,YAAY,EACV,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,aAAa,EACd,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distributed module exports
|
|
3
|
+
*/
|
|
4
|
+
export { DistributedConfigManager } from './configManager.js';
|
|
5
|
+
export { HashPartitioner, AffinityPartitioner } from './hashPartitioner.js';
|
|
6
|
+
export { BaseOperationalMode, ReaderMode, WriterMode, HybridMode, OperationalModeFactory } from './operationalModes.js';
|
|
7
|
+
export { DomainDetector } from './domainDetector.js';
|
|
8
|
+
export { HealthMonitor } from './healthMonitor.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/distributed/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationalModes.d.ts","sourceRoot":"","sources":["../../src/distributed/operationalModes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACb,MAAM,8BAA8B,CAAA;AAErC;;GAEG;AACH,8BAAsB,mBAAoB,YAAW,eAAe;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IAErC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI;CAmBhE;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,mBAAmB;IACjD,OAAO,UAAO;IACd,QAAQ,UAAQ;IAChB,SAAS,UAAQ;IAEjB,aAAa,EAAE,aAAa,CAQ3B;IAED;;OAEG;IACH,cAAc;;;;;;;;;CAWf;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,mBAAmB;IACjD,OAAO,UAAQ;IACf,QAAQ,UAAO;IACf,SAAS,UAAO;IAEhB,aAAa,EAAE,aAAa,CAQ3B;IAED;;OAEG;IACH,cAAc;;;;;;;;CAUf;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,mBAAmB;IACjD,OAAO,UAAO;IACd,QAAQ,UAAO;IACf,SAAS,UAAO;IAEhB,aAAa,EAAE,aAAa,CAQ3B;IAED,OAAO,CAAC,cAAc,CAAc;IAEpC;;OAEG;IACH,cAAc;;;;;;;;IAWd;;;;OAIG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAwBnE;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB;IAc1D;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAC3B,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,GACrC,mBAAmB;CAWvB"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational Modes for Distributed Brainy
|
|
3
|
+
* Defines different modes with optimized caching strategies
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base operational mode
|
|
7
|
+
*/
|
|
8
|
+
export class BaseOperationalMode {
|
|
9
|
+
/**
|
|
10
|
+
* Validate operation is allowed in this mode
|
|
11
|
+
*/
|
|
12
|
+
validateOperation(operation) {
|
|
13
|
+
switch (operation) {
|
|
14
|
+
case 'read':
|
|
15
|
+
if (!this.canRead) {
|
|
16
|
+
throw new Error('Read operations are not allowed in write-only mode');
|
|
17
|
+
}
|
|
18
|
+
break;
|
|
19
|
+
case 'write':
|
|
20
|
+
if (!this.canWrite) {
|
|
21
|
+
throw new Error('Write operations are not allowed in read-only mode');
|
|
22
|
+
}
|
|
23
|
+
break;
|
|
24
|
+
case 'delete':
|
|
25
|
+
if (!this.canDelete) {
|
|
26
|
+
throw new Error('Delete operations are not allowed in this mode');
|
|
27
|
+
}
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read-only mode optimized for query performance
|
|
34
|
+
*/
|
|
35
|
+
export class ReaderMode extends BaseOperationalMode {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(...arguments);
|
|
38
|
+
this.canRead = true;
|
|
39
|
+
this.canWrite = false;
|
|
40
|
+
this.canDelete = false;
|
|
41
|
+
this.cacheStrategy = {
|
|
42
|
+
hotCacheRatio: 0.8, // 80% of memory for read cache
|
|
43
|
+
prefetchAggressive: true, // Aggressively prefetch related vectors
|
|
44
|
+
ttl: 3600000, // 1 hour cache TTL
|
|
45
|
+
compressionEnabled: true, // Trade CPU for more cache capacity
|
|
46
|
+
writeBufferSize: 0, // No write buffer needed
|
|
47
|
+
batchWrites: false, // No writes
|
|
48
|
+
adaptive: true // Adapt to query patterns
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get optimized cache configuration for readers
|
|
53
|
+
*/
|
|
54
|
+
getCacheConfig() {
|
|
55
|
+
return {
|
|
56
|
+
hotCacheMaxSize: 1000000, // Large hot cache
|
|
57
|
+
hotCacheEvictionThreshold: 0.9, // Keep cache full
|
|
58
|
+
warmCacheTTL: 3600000, // 1 hour warm cache
|
|
59
|
+
batchSize: 100, // Large batch reads
|
|
60
|
+
autoTune: true, // Auto-tune for read patterns
|
|
61
|
+
autoTuneInterval: 60000, // Tune every minute
|
|
62
|
+
readOnly: true // Enable read-only optimizations
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Write-only mode optimized for ingestion
|
|
68
|
+
*/
|
|
69
|
+
export class WriterMode extends BaseOperationalMode {
|
|
70
|
+
constructor() {
|
|
71
|
+
super(...arguments);
|
|
72
|
+
this.canRead = false;
|
|
73
|
+
this.canWrite = true;
|
|
74
|
+
this.canDelete = true;
|
|
75
|
+
this.cacheStrategy = {
|
|
76
|
+
hotCacheRatio: 0.2, // Only 20% for cache, rest for write buffer
|
|
77
|
+
prefetchAggressive: false, // No prefetching needed
|
|
78
|
+
ttl: 60000, // Short TTL (1 minute)
|
|
79
|
+
compressionEnabled: false, // Speed over memory efficiency
|
|
80
|
+
writeBufferSize: 10000, // Large write buffer for batching
|
|
81
|
+
batchWrites: true, // Enable write batching
|
|
82
|
+
adaptive: false // Fixed strategy for consistent writes
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get optimized cache configuration for writers
|
|
87
|
+
*/
|
|
88
|
+
getCacheConfig() {
|
|
89
|
+
return {
|
|
90
|
+
hotCacheMaxSize: 100000, // Small hot cache
|
|
91
|
+
hotCacheEvictionThreshold: 0.5, // Aggressive eviction
|
|
92
|
+
warmCacheTTL: 60000, // 1 minute warm cache
|
|
93
|
+
batchSize: 1000, // Large batch writes
|
|
94
|
+
autoTune: false, // Fixed configuration
|
|
95
|
+
writeOnly: true // Enable write-only optimizations
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Hybrid mode that can both read and write
|
|
101
|
+
*/
|
|
102
|
+
export class HybridMode extends BaseOperationalMode {
|
|
103
|
+
constructor() {
|
|
104
|
+
super(...arguments);
|
|
105
|
+
this.canRead = true;
|
|
106
|
+
this.canWrite = true;
|
|
107
|
+
this.canDelete = true;
|
|
108
|
+
this.cacheStrategy = {
|
|
109
|
+
hotCacheRatio: 0.5, // Balanced cache/buffer allocation
|
|
110
|
+
prefetchAggressive: false, // Moderate prefetching
|
|
111
|
+
ttl: 600000, // 10 minute TTL
|
|
112
|
+
compressionEnabled: true, // Compress when beneficial
|
|
113
|
+
writeBufferSize: 5000, // Moderate write buffer
|
|
114
|
+
batchWrites: true, // Batch writes when possible
|
|
115
|
+
adaptive: true // Adapt to workload mix
|
|
116
|
+
};
|
|
117
|
+
this.readWriteRatio = 0.5; // Track read/write ratio
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get balanced cache configuration
|
|
121
|
+
*/
|
|
122
|
+
getCacheConfig() {
|
|
123
|
+
return {
|
|
124
|
+
hotCacheMaxSize: 500000, // Medium cache size
|
|
125
|
+
hotCacheEvictionThreshold: 0.7, // Balanced eviction
|
|
126
|
+
warmCacheTTL: 600000, // 10 minute warm cache
|
|
127
|
+
batchSize: 500, // Medium batch size
|
|
128
|
+
autoTune: true, // Auto-tune based on workload
|
|
129
|
+
autoTuneInterval: 300000 // Tune every 5 minutes
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Update cache strategy based on workload
|
|
134
|
+
* @param readCount - Number of recent reads
|
|
135
|
+
* @param writeCount - Number of recent writes
|
|
136
|
+
*/
|
|
137
|
+
updateWorkloadBalance(readCount, writeCount) {
|
|
138
|
+
const total = readCount + writeCount;
|
|
139
|
+
if (total === 0)
|
|
140
|
+
return;
|
|
141
|
+
this.readWriteRatio = readCount / total;
|
|
142
|
+
// Adjust cache strategy based on workload
|
|
143
|
+
if (this.readWriteRatio > 0.8) {
|
|
144
|
+
// Read-heavy workload
|
|
145
|
+
this.cacheStrategy.hotCacheRatio = 0.7;
|
|
146
|
+
this.cacheStrategy.prefetchAggressive = true;
|
|
147
|
+
this.cacheStrategy.writeBufferSize = 2000;
|
|
148
|
+
}
|
|
149
|
+
else if (this.readWriteRatio < 0.2) {
|
|
150
|
+
// Write-heavy workload
|
|
151
|
+
this.cacheStrategy.hotCacheRatio = 0.3;
|
|
152
|
+
this.cacheStrategy.prefetchAggressive = false;
|
|
153
|
+
this.cacheStrategy.writeBufferSize = 8000;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Balanced workload
|
|
157
|
+
this.cacheStrategy.hotCacheRatio = 0.5;
|
|
158
|
+
this.cacheStrategy.prefetchAggressive = false;
|
|
159
|
+
this.cacheStrategy.writeBufferSize = 5000;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Factory for creating operational modes
|
|
165
|
+
*/
|
|
166
|
+
export class OperationalModeFactory {
|
|
167
|
+
/**
|
|
168
|
+
* Create operational mode based on role
|
|
169
|
+
* @param role - The instance role
|
|
170
|
+
* @returns The appropriate operational mode
|
|
171
|
+
*/
|
|
172
|
+
static createMode(role) {
|
|
173
|
+
switch (role) {
|
|
174
|
+
case 'reader':
|
|
175
|
+
return new ReaderMode();
|
|
176
|
+
case 'writer':
|
|
177
|
+
return new WriterMode();
|
|
178
|
+
case 'hybrid':
|
|
179
|
+
return new HybridMode();
|
|
180
|
+
default:
|
|
181
|
+
// Default to reader for safety
|
|
182
|
+
return new ReaderMode();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Create mode with custom cache strategy
|
|
187
|
+
* @param role - The instance role
|
|
188
|
+
* @param customStrategy - Custom cache strategy overrides
|
|
189
|
+
* @returns The operational mode with custom strategy
|
|
190
|
+
*/
|
|
191
|
+
static createModeWithStrategy(role, customStrategy) {
|
|
192
|
+
const mode = this.createMode(role);
|
|
193
|
+
// Apply custom strategy overrides
|
|
194
|
+
mode.cacheStrategy = {
|
|
195
|
+
...mode.cacheStrategy,
|
|
196
|
+
...customStrategy
|
|
197
|
+
};
|
|
198
|
+
return mode;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=operationalModes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationalModes.js","sourceRoot":"","sources":["../../src/distributed/operationalModes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,MAAM,OAAgB,mBAAmB;IAMvC;;OAEG;IACH,iBAAiB,CAAC,SAAsC;QACtD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;gBACvE,CAAC;gBACD,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;gBACvE,CAAC;gBACD,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;gBACnE,CAAC;gBACD,MAAK;QACT,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,mBAAmB;IAAnD;;QACE,YAAO,GAAG,IAAI,CAAA;QACd,aAAQ,GAAG,KAAK,CAAA;QAChB,cAAS,GAAG,KAAK,CAAA;QAEjB,kBAAa,GAAkB;YAC7B,aAAa,EAAE,GAAG,EAAY,+BAA+B;YAC7D,kBAAkB,EAAE,IAAI,EAAO,wCAAwC;YACvE,GAAG,EAAE,OAAO,EAAkB,mBAAmB;YACjD,kBAAkB,EAAE,IAAI,EAAO,oCAAoC;YACnE,eAAe,EAAE,CAAC,EAAY,yBAAyB;YACvD,WAAW,EAAE,KAAK,EAAY,YAAY;YAC1C,QAAQ,EAAE,IAAI,CAAgB,0BAA0B;SACzD,CAAA;IAgBH,CAAC;IAdC;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,eAAe,EAAE,OAAO,EAAO,kBAAkB;YACjD,yBAAyB,EAAE,GAAG,EAAE,kBAAkB;YAClD,YAAY,EAAE,OAAO,EAAU,oBAAoB;YACnD,SAAS,EAAE,GAAG,EAAiB,oBAAoB;YACnD,QAAQ,EAAE,IAAI,EAAiB,8BAA8B;YAC7D,gBAAgB,EAAE,KAAK,EAAQ,oBAAoB;YACnD,QAAQ,EAAE,IAAI,CAAiB,iCAAiC;SACjE,CAAA;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,mBAAmB;IAAnD;;QACE,YAAO,GAAG,KAAK,CAAA;QACf,aAAQ,GAAG,IAAI,CAAA;QACf,cAAS,GAAG,IAAI,CAAA;QAEhB,kBAAa,GAAkB;YAC7B,aAAa,EAAE,GAAG,EAAY,4CAA4C;YAC1E,kBAAkB,EAAE,KAAK,EAAM,wBAAwB;YACvD,GAAG,EAAE,KAAK,EAAoB,uBAAuB;YACrD,kBAAkB,EAAE,KAAK,EAAM,+BAA+B;YAC9D,eAAe,EAAE,KAAK,EAAQ,kCAAkC;YAChE,WAAW,EAAE,IAAI,EAAa,wBAAwB;YACtD,QAAQ,EAAE,KAAK,CAAe,uCAAuC;SACtE,CAAA;IAeH,CAAC;IAbC;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,eAAe,EAAE,MAAM,EAAS,kBAAkB;YAClD,yBAAyB,EAAE,GAAG,EAAE,sBAAsB;YACtD,YAAY,EAAE,KAAK,EAAY,sBAAsB;YACrD,SAAS,EAAE,IAAI,EAAgB,qBAAqB;YACpD,QAAQ,EAAE,KAAK,EAAgB,sBAAsB;YACrD,SAAS,EAAE,IAAI,CAAgB,kCAAkC;SAClE,CAAA;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,mBAAmB;IAAnD;;QACE,YAAO,GAAG,IAAI,CAAA;QACd,aAAQ,GAAG,IAAI,CAAA;QACf,cAAS,GAAG,IAAI,CAAA;QAEhB,kBAAa,GAAkB;YAC7B,aAAa,EAAE,GAAG,EAAY,mCAAmC;YACjE,kBAAkB,EAAE,KAAK,EAAM,uBAAuB;YACtD,GAAG,EAAE,MAAM,EAAmB,gBAAgB;YAC9C,kBAAkB,EAAE,IAAI,EAAO,2BAA2B;YAC1D,eAAe,EAAE,IAAI,EAAS,wBAAwB;YACtD,WAAW,EAAE,IAAI,EAAa,6BAA6B;YAC3D,QAAQ,EAAE,IAAI,CAAgB,wBAAwB;SACvD,CAAA;QAEO,mBAAc,GAAW,GAAG,CAAA,CAAC,yBAAyB;IA6ChE,CAAC;IA3CC;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,eAAe,EAAE,MAAM,EAAS,oBAAoB;YACpD,yBAAyB,EAAE,GAAG,EAAE,oBAAoB;YACpD,YAAY,EAAE,MAAM,EAAW,uBAAuB;YACtD,SAAS,EAAE,GAAG,EAAiB,oBAAoB;YACnD,QAAQ,EAAE,IAAI,EAAiB,8BAA8B;YAC7D,gBAAgB,EAAE,MAAM,CAAO,uBAAuB;SACvD,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,SAAiB,EAAE,UAAkB;QACzD,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;QACpC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAM;QAEvB,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,KAAK,CAAA;QAEvC,0CAA0C;QAC1C,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;YAC9B,sBAAsB;YACtB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAA;YACtC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAA;YAC5C,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3C,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;YACrC,uBAAuB;YACvB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAA;YACtC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,KAAK,CAAA;YAC7C,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAA;YACtC,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,KAAK,CAAA;YAC7C,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3C,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAkB;QAClC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,KAAK,QAAQ;gBACX,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,KAAK,QAAQ;gBACX,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB;gBACE,+BAA+B;gBAC/B,OAAO,IAAI,UAAU,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAC3B,IAAkB,EAClB,cAAsC;QAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAElC,kCAAkC;QAClC,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,cAAc;SAClB,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brainyError.d.ts","sourceRoot":"","sources":["../../src/errors/brainyError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEjG;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAClC,SAAgB,IAAI,EAAE,eAAe,CAAA;IACrC,SAAgB,SAAS,EAAE,OAAO,CAAA;IAClC,SAAgB,aAAa,CAAC,EAAE,KAAK,CAAA;IACrC,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAA;gBAG/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,EACrB,SAAS,GAAE,OAAe,EAC1B,aAAa,CAAC,EAAE,KAAK,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM;IAgBvB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,WAAW;IASxF;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,WAAW;IASnE;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,WAAW;IASnE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAQ9C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,WAAW;IAW5F;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAqCzC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW;CAkClE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for Brainy operations
|
|
3
|
+
* Provides better error classification and handling
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Custom error class for Brainy operations
|
|
7
|
+
* Provides error type classification and retry information
|
|
8
|
+
*/
|
|
9
|
+
export class BrainyError extends Error {
|
|
10
|
+
constructor(message, type, retryable = false, originalError, attemptNumber, maxRetries) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'BrainyError';
|
|
13
|
+
this.type = type;
|
|
14
|
+
this.retryable = retryable;
|
|
15
|
+
this.originalError = originalError;
|
|
16
|
+
this.attemptNumber = attemptNumber;
|
|
17
|
+
this.maxRetries = maxRetries;
|
|
18
|
+
// Maintain proper stack trace for where our error was thrown (only available on V8)
|
|
19
|
+
if (Error.captureStackTrace) {
|
|
20
|
+
Error.captureStackTrace(this, BrainyError);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a timeout error
|
|
25
|
+
*/
|
|
26
|
+
static timeout(operation, timeoutMs, originalError) {
|
|
27
|
+
return new BrainyError(`Operation '${operation}' timed out after ${timeoutMs}ms`, 'TIMEOUT', true, originalError);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a network error
|
|
31
|
+
*/
|
|
32
|
+
static network(message, originalError) {
|
|
33
|
+
return new BrainyError(`Network error: ${message}`, 'NETWORK', true, originalError);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a storage error
|
|
37
|
+
*/
|
|
38
|
+
static storage(message, originalError) {
|
|
39
|
+
return new BrainyError(`Storage error: ${message}`, 'STORAGE', true, originalError);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a not found error
|
|
43
|
+
*/
|
|
44
|
+
static notFound(resource) {
|
|
45
|
+
return new BrainyError(`Resource not found: ${resource}`, 'NOT_FOUND', false);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a retry exhausted error
|
|
49
|
+
*/
|
|
50
|
+
static retryExhausted(operation, maxRetries, lastError) {
|
|
51
|
+
return new BrainyError(`Operation '${operation}' failed after ${maxRetries} retry attempts`, 'RETRY_EXHAUSTED', false, lastError, maxRetries, maxRetries);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if an error is retryable
|
|
55
|
+
*/
|
|
56
|
+
static isRetryable(error) {
|
|
57
|
+
if (error instanceof BrainyError) {
|
|
58
|
+
return error.retryable;
|
|
59
|
+
}
|
|
60
|
+
// Check for common retryable error patterns
|
|
61
|
+
const message = error.message.toLowerCase();
|
|
62
|
+
const name = error.name.toLowerCase();
|
|
63
|
+
// Network-related errors that are typically retryable
|
|
64
|
+
if (message.includes('timeout') ||
|
|
65
|
+
message.includes('network') ||
|
|
66
|
+
message.includes('connection') ||
|
|
67
|
+
message.includes('econnreset') ||
|
|
68
|
+
message.includes('enotfound') ||
|
|
69
|
+
message.includes('etimedout') ||
|
|
70
|
+
name.includes('timeout')) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
// AWS SDK specific retryable errors
|
|
74
|
+
if (message.includes('throttling') ||
|
|
75
|
+
message.includes('rate limit') ||
|
|
76
|
+
message.includes('service unavailable') ||
|
|
77
|
+
message.includes('internal server error') ||
|
|
78
|
+
message.includes('bad gateway') ||
|
|
79
|
+
message.includes('gateway timeout')) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Convert a generic error to a BrainyError with appropriate classification
|
|
86
|
+
*/
|
|
87
|
+
static fromError(error, operation) {
|
|
88
|
+
if (error instanceof BrainyError) {
|
|
89
|
+
return error;
|
|
90
|
+
}
|
|
91
|
+
const message = error.message.toLowerCase();
|
|
92
|
+
const name = error.name.toLowerCase();
|
|
93
|
+
// Classify the error based on common patterns
|
|
94
|
+
if (message.includes('timeout') || name.includes('timeout')) {
|
|
95
|
+
return BrainyError.timeout(operation || 'unknown', 0, error);
|
|
96
|
+
}
|
|
97
|
+
if (message.includes('network') ||
|
|
98
|
+
message.includes('connection') ||
|
|
99
|
+
message.includes('econnreset') ||
|
|
100
|
+
message.includes('enotfound') ||
|
|
101
|
+
message.includes('etimedout')) {
|
|
102
|
+
return BrainyError.network(error.message, error);
|
|
103
|
+
}
|
|
104
|
+
if (message.includes('nosuchkey') ||
|
|
105
|
+
message.includes('not found') ||
|
|
106
|
+
message.includes('does not exist')) {
|
|
107
|
+
return BrainyError.notFound(operation || 'resource');
|
|
108
|
+
}
|
|
109
|
+
// Default to storage error for unclassified errors
|
|
110
|
+
return BrainyError.storage(error.message, error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=brainyError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brainyError.js","sourceRoot":"","sources":["../../src/errors/brainyError.ts"],"names":[],"mappings":"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"}
|