@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.
Files changed (205) hide show
  1. package/README.md +605 -194
  2. package/dist/augmentationFactory.d.ts.map +1 -0
  3. package/dist/augmentationFactory.js +342 -0
  4. package/dist/augmentationFactory.js.map +1 -0
  5. package/dist/augmentationPipeline.d.ts.map +1 -0
  6. package/dist/augmentationPipeline.js +472 -0
  7. package/dist/augmentationPipeline.js.map +1 -0
  8. package/dist/augmentationRegistry.d.ts.map +1 -0
  9. package/dist/augmentationRegistry.js +105 -0
  10. package/dist/augmentationRegistry.js.map +1 -0
  11. package/dist/augmentationRegistryLoader.d.ts.map +1 -0
  12. package/dist/augmentationRegistryLoader.js +213 -0
  13. package/dist/augmentationRegistryLoader.js.map +1 -0
  14. package/dist/augmentations/conduitAugmentations.js +1158 -0
  15. package/dist/augmentations/conduitAugmentations.js.map +1 -0
  16. package/dist/augmentations/memoryAugmentations.d.ts +2 -0
  17. package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
  18. package/dist/augmentations/memoryAugmentations.js +270 -0
  19. package/dist/augmentations/memoryAugmentations.js.map +1 -0
  20. package/dist/augmentations/serverSearchAugmentations.js +531 -0
  21. package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
  22. package/dist/brainyData.d.ts.map +1 -0
  23. package/dist/brainyData.js +3999 -0
  24. package/dist/brainyData.js.map +1 -0
  25. package/dist/browserFramework.d.ts +15 -0
  26. package/dist/browserFramework.d.ts.map +1 -0
  27. package/dist/browserFramework.js +31 -0
  28. package/dist/browserFramework.js.map +1 -0
  29. package/dist/coreTypes.d.ts.map +1 -0
  30. package/dist/coreTypes.js +5 -0
  31. package/dist/coreTypes.js.map +1 -0
  32. package/dist/demo.d.ts +106 -0
  33. package/dist/demo.d.ts.map +1 -0
  34. package/dist/demo.js +201 -0
  35. package/dist/demo.js.map +1 -0
  36. package/dist/distributed/configManager.d.ts.map +1 -0
  37. package/dist/distributed/configManager.js +322 -0
  38. package/dist/distributed/configManager.js.map +1 -0
  39. package/dist/distributed/domainDetector.d.ts.map +1 -0
  40. package/dist/distributed/domainDetector.js +307 -0
  41. package/dist/distributed/domainDetector.js.map +1 -0
  42. package/dist/distributed/hashPartitioner.d.ts.map +1 -0
  43. package/dist/distributed/hashPartitioner.js +146 -0
  44. package/dist/distributed/hashPartitioner.js.map +1 -0
  45. package/dist/distributed/healthMonitor.d.ts.map +1 -0
  46. package/dist/distributed/healthMonitor.js +244 -0
  47. package/dist/distributed/healthMonitor.js.map +1 -0
  48. package/dist/distributed/index.d.ts.map +1 -0
  49. package/dist/distributed/index.js +9 -0
  50. package/dist/distributed/index.js.map +1 -0
  51. package/dist/distributed/operationalModes.d.ts.map +1 -0
  52. package/dist/distributed/operationalModes.js +201 -0
  53. package/dist/distributed/operationalModes.js.map +1 -0
  54. package/dist/errors/brainyError.d.ts.map +1 -0
  55. package/dist/errors/brainyError.js +113 -0
  56. package/dist/errors/brainyError.js.map +1 -0
  57. package/dist/examples/basicUsage.js +118 -0
  58. package/dist/examples/basicUsage.js.map +1 -0
  59. package/dist/hnsw/distributedSearch.js +452 -0
  60. package/dist/hnsw/distributedSearch.js.map +1 -0
  61. package/dist/hnsw/hnswIndex.js +602 -0
  62. package/dist/hnsw/hnswIndex.js.map +1 -0
  63. package/dist/hnsw/hnswIndexOptimized.js +471 -0
  64. package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
  65. package/dist/hnsw/optimizedHNSWIndex.js +313 -0
  66. package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
  67. package/dist/hnsw/partitionedHNSWIndex.js +304 -0
  68. package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
  69. package/dist/hnsw/scaledHNSWSystem.js +559 -0
  70. package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
  71. package/dist/index.d.ts +3 -2
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +81 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/mcp/brainyMCPAdapter.js +142 -0
  76. package/dist/mcp/brainyMCPAdapter.js.map +1 -0
  77. package/dist/mcp/brainyMCPService.js +248 -0
  78. package/dist/mcp/brainyMCPService.js.map +1 -0
  79. package/dist/mcp/index.js +17 -0
  80. package/dist/mcp/index.js.map +1 -0
  81. package/dist/mcp/mcpAugmentationToolset.js +180 -0
  82. package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
  83. package/dist/pipeline.d.ts.map +1 -0
  84. package/dist/pipeline.js +590 -0
  85. package/dist/pipeline.js.map +1 -0
  86. package/dist/sequentialPipeline.d.ts.map +1 -0
  87. package/dist/sequentialPipeline.js +417 -0
  88. package/dist/sequentialPipeline.js.map +1 -0
  89. package/dist/setup.d.ts.map +1 -0
  90. package/dist/setup.js +46 -0
  91. package/dist/setup.js.map +1 -0
  92. package/dist/storage/adapters/baseStorageAdapter.js +349 -0
  93. package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
  94. package/dist/storage/adapters/batchS3Operations.js +287 -0
  95. package/dist/storage/adapters/batchS3Operations.js.map +1 -0
  96. package/dist/storage/adapters/fileSystemStorage.js +846 -0
  97. package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
  98. package/dist/storage/adapters/memoryStorage.js +532 -0
  99. package/dist/storage/adapters/memoryStorage.js.map +1 -0
  100. package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
  101. package/dist/storage/adapters/opfsStorage.js +1118 -0
  102. package/dist/storage/adapters/opfsStorage.js.map +1 -0
  103. package/dist/storage/adapters/optimizedS3Search.js +248 -0
  104. package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
  105. package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
  106. package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
  107. package/dist/storage/baseStorage.js +603 -0
  108. package/dist/storage/baseStorage.js.map +1 -0
  109. package/dist/storage/cacheManager.js +1306 -0
  110. package/dist/storage/cacheManager.js.map +1 -0
  111. package/dist/storage/enhancedCacheManager.js +520 -0
  112. package/dist/storage/enhancedCacheManager.js.map +1 -0
  113. package/dist/storage/readOnlyOptimizations.js +425 -0
  114. package/dist/storage/readOnlyOptimizations.js.map +1 -0
  115. package/dist/storage/storageFactory.d.ts +0 -1
  116. package/dist/storage/storageFactory.d.ts.map +1 -1
  117. package/dist/storage/storageFactory.js +227 -0
  118. package/dist/storage/storageFactory.js.map +1 -0
  119. package/dist/types/augmentations.js +16 -0
  120. package/dist/types/augmentations.js.map +1 -0
  121. package/dist/types/brainyDataInterface.js +8 -0
  122. package/dist/types/brainyDataInterface.js.map +1 -0
  123. package/dist/types/distributedTypes.js +6 -0
  124. package/dist/types/distributedTypes.js.map +1 -0
  125. package/dist/types/fileSystemTypes.js +8 -0
  126. package/dist/types/fileSystemTypes.js.map +1 -0
  127. package/dist/types/graphTypes.js +247 -0
  128. package/dist/types/graphTypes.js.map +1 -0
  129. package/dist/types/mcpTypes.js +22 -0
  130. package/dist/types/mcpTypes.js.map +1 -0
  131. package/dist/types/paginationTypes.js +5 -0
  132. package/dist/types/paginationTypes.js.map +1 -0
  133. package/dist/types/pipelineTypes.js +7 -0
  134. package/dist/types/pipelineTypes.js.map +1 -0
  135. package/dist/types/tensorflowTypes.js +6 -0
  136. package/dist/types/tensorflowTypes.js.map +1 -0
  137. package/dist/unified.d.ts.map +1 -0
  138. package/dist/unified.js +52 -128251
  139. package/dist/unified.js.map +1 -0
  140. package/dist/utils/autoConfiguration.js +341 -0
  141. package/dist/utils/autoConfiguration.js.map +1 -0
  142. package/dist/utils/cacheAutoConfig.js +261 -0
  143. package/dist/utils/cacheAutoConfig.js.map +1 -0
  144. package/dist/utils/crypto.js +45 -0
  145. package/dist/utils/crypto.js.map +1 -0
  146. package/dist/utils/distance.js +239 -0
  147. package/dist/utils/distance.js.map +1 -0
  148. package/dist/utils/embedding.d.ts.map +1 -1
  149. package/dist/utils/embedding.js +702 -0
  150. package/dist/utils/embedding.js.map +1 -0
  151. package/dist/utils/environment.js +75 -0
  152. package/dist/utils/environment.js.map +1 -0
  153. package/dist/utils/fieldNameTracking.js +90 -0
  154. package/dist/utils/fieldNameTracking.js.map +1 -0
  155. package/dist/utils/index.d.ts +1 -0
  156. package/dist/utils/index.d.ts.map +1 -1
  157. package/dist/utils/index.js +8 -0
  158. package/dist/utils/index.js.map +1 -0
  159. package/dist/utils/jsonProcessing.js +179 -0
  160. package/dist/utils/jsonProcessing.js.map +1 -0
  161. package/dist/utils/logger.js +129 -0
  162. package/dist/utils/logger.js.map +1 -0
  163. package/dist/utils/operationUtils.js +126 -0
  164. package/dist/utils/operationUtils.js.map +1 -0
  165. package/dist/utils/robustModelLoader.d.ts +14 -0
  166. package/dist/utils/robustModelLoader.d.ts.map +1 -1
  167. package/dist/utils/robustModelLoader.js +537 -0
  168. package/dist/utils/robustModelLoader.js.map +1 -0
  169. package/dist/utils/searchCache.js +248 -0
  170. package/dist/utils/searchCache.js.map +1 -0
  171. package/dist/utils/statistics.js +25 -0
  172. package/dist/utils/statistics.js.map +1 -0
  173. package/dist/utils/statisticsCollector.js +224 -0
  174. package/dist/utils/statisticsCollector.js.map +1 -0
  175. package/dist/utils/textEncoding.js +309 -0
  176. package/dist/utils/textEncoding.js.map +1 -0
  177. package/dist/utils/typeUtils.js +40 -0
  178. package/dist/utils/typeUtils.js.map +1 -0
  179. package/dist/utils/version.d.ts +15 -3
  180. package/dist/utils/version.d.ts.map +1 -1
  181. package/dist/utils/version.js +24 -0
  182. package/dist/utils/version.js.map +1 -0
  183. package/dist/utils/workerUtils.js +458 -0
  184. package/dist/utils/workerUtils.js.map +1 -0
  185. package/dist/worker.d.ts.map +1 -0
  186. package/dist/worker.js +54 -0
  187. package/dist/worker.js.map +1 -0
  188. package/package.json +30 -29
  189. package/dist/brainy.js +0 -90220
  190. package/dist/brainy.min.js +0 -12511
  191. package/dist/patched-platform-node.d.ts +0 -17
  192. package/dist/statistics/statisticsManager.d.ts +0 -121
  193. package/dist/storage/fileSystemStorage.d.ts +0 -73
  194. package/dist/storage/fileSystemStorage.d.ts.map +0 -1
  195. package/dist/storage/opfsStorage.d.ts +0 -236
  196. package/dist/storage/opfsStorage.d.ts.map +0 -1
  197. package/dist/storage/s3CompatibleStorage.d.ts +0 -157
  198. package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
  199. package/dist/testing/prettyReporter.d.ts +0 -23
  200. package/dist/testing/prettySummaryReporter.d.ts +0 -22
  201. package/dist/unified.min.js +0 -16153
  202. package/dist/utils/environmentDetection.d.ts +0 -47
  203. package/dist/utils/environmentDetection.d.ts.map +0 -1
  204. package/dist/utils/tensorflowUtils.d.ts +0 -17
  205. 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":"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"}
@@ -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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"}