@soulcraft/brainy 0.40.0 → 0.43.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 (152) hide show
  1. package/README.md +605 -194
  2. package/dist/augmentations/conduitAugmentations.js +1158 -0
  3. package/dist/augmentations/conduitAugmentations.js.map +1 -0
  4. package/dist/augmentations/memoryAugmentations.d.ts +2 -0
  5. package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
  6. package/dist/augmentations/memoryAugmentations.js +270 -0
  7. package/dist/augmentations/memoryAugmentations.js.map +1 -0
  8. package/dist/augmentations/serverSearchAugmentations.js +531 -0
  9. package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
  10. package/dist/browserFramework.d.ts +15 -0
  11. package/dist/demo.d.ts +106 -0
  12. package/dist/examples/basicUsage.js +118 -0
  13. package/dist/examples/basicUsage.js.map +1 -0
  14. package/dist/hnsw/distributedSearch.js +452 -0
  15. package/dist/hnsw/distributedSearch.js.map +1 -0
  16. package/dist/hnsw/hnswIndex.js +602 -0
  17. package/dist/hnsw/hnswIndex.js.map +1 -0
  18. package/dist/hnsw/hnswIndexOptimized.js +471 -0
  19. package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
  20. package/dist/hnsw/optimizedHNSWIndex.js +313 -0
  21. package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
  22. package/dist/hnsw/partitionedHNSWIndex.js +304 -0
  23. package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
  24. package/dist/hnsw/scaledHNSWSystem.js +559 -0
  25. package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
  26. package/dist/index.d.ts +5 -3
  27. package/dist/index.js +81 -0
  28. package/dist/mcp/brainyMCPAdapter.js +142 -0
  29. package/dist/mcp/brainyMCPAdapter.js.map +1 -0
  30. package/dist/mcp/brainyMCPService.js +248 -0
  31. package/dist/mcp/brainyMCPService.js.map +1 -0
  32. package/dist/mcp/index.js +17 -0
  33. package/dist/mcp/index.js.map +1 -0
  34. package/dist/mcp/mcpAugmentationToolset.js +180 -0
  35. package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
  36. package/dist/storage/adapters/baseStorageAdapter.js +349 -0
  37. package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
  38. package/dist/storage/adapters/batchS3Operations.js +287 -0
  39. package/dist/storage/adapters/batchS3Operations.js.map +1 -0
  40. package/dist/storage/adapters/fileSystemStorage.js +846 -0
  41. package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
  42. package/dist/storage/adapters/memoryStorage.js +532 -0
  43. package/dist/storage/adapters/memoryStorage.js.map +1 -0
  44. package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
  45. package/dist/storage/adapters/opfsStorage.js +1118 -0
  46. package/dist/storage/adapters/opfsStorage.js.map +1 -0
  47. package/dist/storage/adapters/optimizedS3Search.d.ts +79 -0
  48. package/dist/storage/adapters/optimizedS3Search.d.ts.map +1 -0
  49. package/dist/storage/adapters/optimizedS3Search.js +248 -0
  50. package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
  51. package/dist/storage/adapters/s3CompatibleStorage.d.ts +21 -0
  52. package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
  53. package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
  54. package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
  55. package/dist/storage/baseStorage.d.ts +1 -0
  56. package/dist/storage/baseStorage.d.ts.map +1 -1
  57. package/dist/storage/baseStorage.js +603 -0
  58. package/dist/storage/baseStorage.js.map +1 -0
  59. package/dist/storage/cacheManager.js +1306 -0
  60. package/dist/storage/cacheManager.js.map +1 -0
  61. package/dist/storage/enhancedCacheManager.js +520 -0
  62. package/dist/storage/enhancedCacheManager.js.map +1 -0
  63. package/dist/storage/readOnlyOptimizations.js +425 -0
  64. package/dist/storage/readOnlyOptimizations.js.map +1 -0
  65. package/dist/storage/storageFactory.d.ts +0 -1
  66. package/dist/storage/storageFactory.d.ts.map +1 -1
  67. package/dist/storage/storageFactory.js +227 -0
  68. package/dist/storage/storageFactory.js.map +1 -0
  69. package/dist/types/augmentations.js +16 -0
  70. package/dist/types/augmentations.js.map +1 -0
  71. package/dist/types/brainyDataInterface.js +8 -0
  72. package/dist/types/brainyDataInterface.js.map +1 -0
  73. package/dist/types/distributedTypes.js +6 -0
  74. package/dist/types/distributedTypes.js.map +1 -0
  75. package/dist/types/fileSystemTypes.js +8 -0
  76. package/dist/types/fileSystemTypes.js.map +1 -0
  77. package/dist/types/graphTypes.js +247 -0
  78. package/dist/types/graphTypes.js.map +1 -0
  79. package/dist/types/mcpTypes.js +22 -0
  80. package/dist/types/mcpTypes.js.map +1 -0
  81. package/dist/types/paginationTypes.js +5 -0
  82. package/dist/types/paginationTypes.js.map +1 -0
  83. package/dist/types/pipelineTypes.js +7 -0
  84. package/dist/types/pipelineTypes.js.map +1 -0
  85. package/dist/types/tensorflowTypes.js +6 -0
  86. package/dist/types/tensorflowTypes.js.map +1 -0
  87. package/dist/unified.js +52 -128048
  88. package/dist/utils/autoConfiguration.js +341 -0
  89. package/dist/utils/autoConfiguration.js.map +1 -0
  90. package/dist/utils/cacheAutoConfig.js +261 -0
  91. package/dist/utils/cacheAutoConfig.js.map +1 -0
  92. package/dist/utils/crypto.js +45 -0
  93. package/dist/utils/crypto.js.map +1 -0
  94. package/dist/utils/distance.js +239 -0
  95. package/dist/utils/distance.js.map +1 -0
  96. package/dist/utils/embedding.d.ts.map +1 -1
  97. package/dist/utils/embedding.js +702 -0
  98. package/dist/utils/embedding.js.map +1 -0
  99. package/dist/utils/environment.js +75 -0
  100. package/dist/utils/environment.js.map +1 -0
  101. package/dist/utils/fieldNameTracking.js +90 -0
  102. package/dist/utils/fieldNameTracking.js.map +1 -0
  103. package/dist/utils/index.d.ts +1 -0
  104. package/dist/utils/index.d.ts.map +1 -1
  105. package/dist/utils/index.js +8 -0
  106. package/dist/utils/index.js.map +1 -0
  107. package/dist/utils/jsonProcessing.js +179 -0
  108. package/dist/utils/jsonProcessing.js.map +1 -0
  109. package/dist/utils/logger.d.ts +45 -92
  110. package/dist/utils/logger.d.ts.map +1 -1
  111. package/dist/utils/logger.js +129 -0
  112. package/dist/utils/logger.js.map +1 -0
  113. package/dist/utils/operationUtils.js +126 -0
  114. package/dist/utils/operationUtils.js.map +1 -0
  115. package/dist/utils/robustModelLoader.d.ts +14 -0
  116. package/dist/utils/robustModelLoader.d.ts.map +1 -1
  117. package/dist/utils/robustModelLoader.js +537 -0
  118. package/dist/utils/robustModelLoader.js.map +1 -0
  119. package/dist/utils/searchCache.js +248 -0
  120. package/dist/utils/searchCache.js.map +1 -0
  121. package/dist/utils/statistics.js +25 -0
  122. package/dist/utils/statistics.js.map +1 -0
  123. package/dist/utils/statisticsCollector.js +224 -0
  124. package/dist/utils/statisticsCollector.js.map +1 -0
  125. package/dist/utils/textEncoding.js +309 -0
  126. package/dist/utils/textEncoding.js.map +1 -0
  127. package/dist/utils/typeUtils.js +40 -0
  128. package/dist/utils/typeUtils.js.map +1 -0
  129. package/dist/utils/version.d.ts +15 -3
  130. package/dist/utils/version.d.ts.map +1 -1
  131. package/dist/utils/version.js +24 -0
  132. package/dist/utils/version.js.map +1 -0
  133. package/dist/utils/workerUtils.js +458 -0
  134. package/dist/utils/workerUtils.js.map +1 -0
  135. package/package.json +23 -15
  136. package/dist/brainy.js +0 -90220
  137. package/dist/brainy.min.js +0 -12511
  138. package/dist/patched-platform-node.d.ts +0 -17
  139. package/dist/statistics/statisticsManager.d.ts +0 -121
  140. package/dist/storage/fileSystemStorage.d.ts +0 -73
  141. package/dist/storage/fileSystemStorage.d.ts.map +0 -1
  142. package/dist/storage/opfsStorage.d.ts +0 -236
  143. package/dist/storage/opfsStorage.d.ts.map +0 -1
  144. package/dist/storage/s3CompatibleStorage.d.ts +0 -157
  145. package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
  146. package/dist/testing/prettyReporter.d.ts +0 -23
  147. package/dist/testing/prettySummaryReporter.d.ts +0 -22
  148. package/dist/unified.min.js +0 -16153
  149. package/dist/utils/environmentDetection.d.ts +0 -47
  150. package/dist/utils/environmentDetection.d.ts.map +0 -1
  151. package/dist/utils/tensorflowUtils.d.ts +0 -17
  152. package/dist/utils/tensorflowUtils.d.ts.map +0 -1
@@ -0,0 +1,341 @@
1
+ /**
2
+ * Automatic Configuration System for Brainy Vector Database
3
+ * Detects environment, resources, and data patterns to provide optimal settings
4
+ */
5
+ import { isBrowser, isNode, isThreadingAvailable } from './environment.js';
6
+ /**
7
+ * Automatic configuration system that detects environment and optimizes settings
8
+ */
9
+ export class AutoConfiguration {
10
+ constructor() {
11
+ this.cachedConfig = null;
12
+ this.datasetStats = { estimatedSize: 0 };
13
+ }
14
+ static getInstance() {
15
+ if (!AutoConfiguration.instance) {
16
+ AutoConfiguration.instance = new AutoConfiguration();
17
+ }
18
+ return AutoConfiguration.instance;
19
+ }
20
+ /**
21
+ * Detect environment and generate optimal configuration
22
+ */
23
+ async detectAndConfigure(hints) {
24
+ if (this.cachedConfig && !hints) {
25
+ return this.cachedConfig;
26
+ }
27
+ const environment = this.detectEnvironment();
28
+ const resources = await this.detectResources();
29
+ const storage = await this.detectStorageCapabilities(hints?.s3Available);
30
+ const config = {
31
+ environment,
32
+ ...resources,
33
+ ...storage,
34
+ recommendedConfig: this.generateRecommendedConfig(environment, resources, hints),
35
+ optimizationFlags: this.generateOptimizationFlags(environment, resources)
36
+ };
37
+ this.cachedConfig = config;
38
+ return config;
39
+ }
40
+ /**
41
+ * Update configuration based on runtime dataset analysis
42
+ */
43
+ async adaptToDataset(analysis) {
44
+ this.datasetStats = analysis;
45
+ // Regenerate configuration with dataset insights
46
+ const currentConfig = await this.detectAndConfigure();
47
+ const adaptedConfig = this.adaptConfigurationToData(currentConfig, analysis);
48
+ this.cachedConfig = adaptedConfig;
49
+ return adaptedConfig;
50
+ }
51
+ /**
52
+ * Learn from performance metrics and adjust configuration
53
+ */
54
+ async learnFromPerformance(metrics) {
55
+ const adjustments = {};
56
+ // Learn from search performance
57
+ if (metrics.averageSearchTime > 200) {
58
+ // Too slow - optimize for speed
59
+ adjustments.enableDistributedSearch = true;
60
+ adjustments.maxNodesPerPartition = Math.max(10000, (this.cachedConfig?.recommendedConfig.maxNodesPerPartition || 50000) * 0.8);
61
+ }
62
+ else if (metrics.averageSearchTime < 50) {
63
+ // Very fast - can optimize for quality
64
+ adjustments.maxNodesPerPartition = Math.min(100000, (this.cachedConfig?.recommendedConfig.maxNodesPerPartition || 50000) * 1.2);
65
+ }
66
+ // Learn from memory usage
67
+ if (metrics.memoryUsage > (this.cachedConfig?.recommendedConfig.maxMemoryUsage || 0) * 0.9) {
68
+ // High memory usage - enable compression
69
+ adjustments.enableCompression = true;
70
+ }
71
+ // Learn from cache performance
72
+ if (metrics.cacheHitRate < 0.7) {
73
+ // Poor cache performance - enable predictive caching
74
+ adjustments.enablePredictiveCaching = true;
75
+ }
76
+ // Update cached config with learned adjustments
77
+ if (this.cachedConfig) {
78
+ this.cachedConfig.recommendedConfig = {
79
+ ...this.cachedConfig.recommendedConfig,
80
+ ...adjustments
81
+ };
82
+ }
83
+ return adjustments;
84
+ }
85
+ /**
86
+ * Get minimal configuration for quick setup
87
+ */
88
+ async getQuickSetupConfig(scenario) {
89
+ const environment = this.detectEnvironment();
90
+ const resources = await this.detectResources();
91
+ switch (scenario) {
92
+ case 'small':
93
+ return {
94
+ expectedDatasetSize: 10000,
95
+ maxMemoryUsage: Math.min(resources.availableMemory * 0.3, 1024 * 1024 * 1024), // 1GB max
96
+ targetSearchLatency: 100,
97
+ s3Required: false
98
+ };
99
+ case 'medium':
100
+ return {
101
+ expectedDatasetSize: 100000,
102
+ maxMemoryUsage: Math.min(resources.availableMemory * 0.5, 4 * 1024 * 1024 * 1024), // 4GB max
103
+ targetSearchLatency: 150,
104
+ s3Required: environment === 'serverless'
105
+ };
106
+ case 'large':
107
+ return {
108
+ expectedDatasetSize: 1000000,
109
+ maxMemoryUsage: Math.min(resources.availableMemory * 0.7, 8 * 1024 * 1024 * 1024), // 8GB max
110
+ targetSearchLatency: 200,
111
+ s3Required: true
112
+ };
113
+ case 'enterprise':
114
+ return {
115
+ expectedDatasetSize: 10000000,
116
+ maxMemoryUsage: Math.min(resources.availableMemory * 0.8, 32 * 1024 * 1024 * 1024), // 32GB max
117
+ targetSearchLatency: 300,
118
+ s3Required: true
119
+ };
120
+ }
121
+ }
122
+ /**
123
+ * Detect the current runtime environment
124
+ */
125
+ detectEnvironment() {
126
+ if (isBrowser()) {
127
+ return 'browser';
128
+ }
129
+ if (isNode()) {
130
+ // Check for serverless environment indicators
131
+ if (process.env.AWS_LAMBDA_FUNCTION_NAME ||
132
+ process.env.VERCEL ||
133
+ process.env.NETLIFY ||
134
+ process.env.CLOUDFLARE_WORKERS) {
135
+ return 'serverless';
136
+ }
137
+ return 'nodejs';
138
+ }
139
+ return 'unknown';
140
+ }
141
+ /**
142
+ * Detect available system resources
143
+ */
144
+ async detectResources() {
145
+ let availableMemory = 2 * 1024 * 1024 * 1024; // Default 2GB
146
+ let cpuCores = 4; // Default 4 cores
147
+ // Browser memory detection
148
+ if (isBrowser()) {
149
+ // @ts-ignore - navigator.deviceMemory is experimental
150
+ if (navigator.deviceMemory) {
151
+ // @ts-ignore
152
+ availableMemory = navigator.deviceMemory * 1024 * 1024 * 1024 * 0.3; // Use 30% of device memory
153
+ }
154
+ else {
155
+ availableMemory = 512 * 1024 * 1024; // Conservative 512MB for browsers
156
+ }
157
+ cpuCores = navigator.hardwareConcurrency || 4;
158
+ }
159
+ // Node.js memory detection
160
+ if (isNode()) {
161
+ try {
162
+ const os = await import('os');
163
+ availableMemory = os.totalmem() * 0.7; // Use 70% of total memory
164
+ cpuCores = os.cpus().length;
165
+ }
166
+ catch (error) {
167
+ // Fallback to defaults
168
+ }
169
+ }
170
+ return {
171
+ availableMemory,
172
+ cpuCores,
173
+ threadingAvailable: isThreadingAvailable()
174
+ };
175
+ }
176
+ /**
177
+ * Detect available storage capabilities
178
+ */
179
+ async detectStorageCapabilities(s3Hint) {
180
+ let persistentStorageAvailable = false;
181
+ let s3StorageDetected = s3Hint || false;
182
+ if (isBrowser()) {
183
+ // Check for OPFS support
184
+ persistentStorageAvailable = 'navigator' in globalThis &&
185
+ 'storage' in navigator &&
186
+ 'getDirectory' in navigator.storage;
187
+ }
188
+ if (isNode()) {
189
+ persistentStorageAvailable = true; // Always available in Node.js
190
+ // Check for AWS SDK or S3 environment variables
191
+ s3StorageDetected = s3Hint ||
192
+ !!(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY) ||
193
+ !!(process.env.S3_BUCKET_NAME);
194
+ }
195
+ return {
196
+ persistentStorageAvailable,
197
+ s3StorageDetected
198
+ };
199
+ }
200
+ /**
201
+ * Generate recommended configuration based on detected environment and resources
202
+ */
203
+ generateRecommendedConfig(environment, resources, hints) {
204
+ const datasetSize = hints?.expectedDataSize || this.estimateDatasetSize();
205
+ const memoryBudget = hints?.memoryBudget || Math.floor(resources.availableMemory * 0.6);
206
+ // Base configuration
207
+ let config = {
208
+ expectedDatasetSize: datasetSize,
209
+ maxMemoryUsage: memoryBudget,
210
+ targetSearchLatency: 150,
211
+ enablePartitioning: datasetSize > 25000,
212
+ enableCompression: environment === 'browser' || memoryBudget < 2 * 1024 * 1024 * 1024,
213
+ enableDistributedSearch: resources.cpuCores > 2 && datasetSize > 50000,
214
+ enablePredictiveCaching: true,
215
+ partitionStrategy: 'semantic',
216
+ maxNodesPerPartition: 50000,
217
+ semanticClusters: 8
218
+ };
219
+ // Environment-specific adjustments
220
+ switch (environment) {
221
+ case 'browser':
222
+ config = {
223
+ ...config,
224
+ maxMemoryUsage: Math.min(memoryBudget, 1024 * 1024 * 1024), // Cap at 1GB
225
+ targetSearchLatency: 200, // More lenient for browsers
226
+ enableCompression: true, // Always enable for browsers
227
+ maxNodesPerPartition: 25000, // Smaller partitions
228
+ semanticClusters: 4 // Fewer clusters to save memory
229
+ };
230
+ break;
231
+ case 'serverless':
232
+ config = {
233
+ ...config,
234
+ targetSearchLatency: 500, // Account for cold starts
235
+ enablePredictiveCaching: false, // Avoid background processes
236
+ maxNodesPerPartition: 30000 // Moderate partition size
237
+ };
238
+ break;
239
+ case 'nodejs':
240
+ config = {
241
+ ...config,
242
+ targetSearchLatency: 100, // Aggressive for Node.js
243
+ maxNodesPerPartition: Math.min(100000, Math.floor(datasetSize / 10)), // Larger partitions
244
+ semanticClusters: Math.min(16, Math.max(4, Math.floor(datasetSize / 50000))) // Scale clusters with data
245
+ };
246
+ break;
247
+ }
248
+ // Dataset size adjustments
249
+ if (datasetSize > 1000000) {
250
+ config.semanticClusters = Math.min(32, Math.floor(datasetSize / 100000));
251
+ config.maxNodesPerPartition = 100000;
252
+ }
253
+ else if (datasetSize < 10000) {
254
+ config.enablePartitioning = false;
255
+ config.enableDistributedSearch = false;
256
+ config.partitionStrategy = 'semantic'; // Keep semantic but disable partitioning
257
+ }
258
+ return config;
259
+ }
260
+ /**
261
+ * Generate optimization flags based on environment and resources
262
+ */
263
+ generateOptimizationFlags(environment, resources) {
264
+ return {
265
+ useMemoryMapping: environment === 'nodejs' && resources.availableMemory > 4 * 1024 * 1024 * 1024,
266
+ aggressiveCaching: resources.availableMemory > 2 * 1024 * 1024 * 1024,
267
+ backgroundOptimization: environment !== 'serverless' && resources.cpuCores > 2,
268
+ compressionLevel: resources.availableMemory < 1024 * 1024 * 1024 ? 'aggressive' :
269
+ resources.availableMemory < 4 * 1024 * 1024 * 1024 ? 'light' : 'none'
270
+ };
271
+ }
272
+ /**
273
+ * Adapt configuration based on actual dataset analysis
274
+ */
275
+ adaptConfigurationToData(baseConfig, analysis) {
276
+ const updatedConfig = { ...baseConfig };
277
+ // Adjust based on actual dataset size
278
+ if (analysis.estimatedSize !== baseConfig.recommendedConfig.expectedDatasetSize) {
279
+ const sizeRatio = analysis.estimatedSize / baseConfig.recommendedConfig.expectedDatasetSize;
280
+ updatedConfig.recommendedConfig.expectedDatasetSize = analysis.estimatedSize;
281
+ // Scale partition size with dataset
282
+ if (sizeRatio > 2) {
283
+ updatedConfig.recommendedConfig.maxNodesPerPartition = Math.min(100000, Math.floor(updatedConfig.recommendedConfig.maxNodesPerPartition * 1.5));
284
+ updatedConfig.recommendedConfig.semanticClusters = Math.min(32, Math.floor(updatedConfig.recommendedConfig.semanticClusters * 1.5));
285
+ }
286
+ }
287
+ // Adjust based on vector dimension
288
+ if (analysis.vectorDimension) {
289
+ if (analysis.vectorDimension > 1024) {
290
+ // High-dimensional vectors - optimize for compression
291
+ updatedConfig.recommendedConfig.enableCompression = true;
292
+ updatedConfig.optimizationFlags.compressionLevel = 'aggressive';
293
+ }
294
+ }
295
+ // Adjust based on access patterns
296
+ if (analysis.accessPatterns === 'read-heavy') {
297
+ updatedConfig.recommendedConfig.enablePredictiveCaching = true;
298
+ updatedConfig.optimizationFlags.aggressiveCaching = true;
299
+ }
300
+ else if (analysis.accessPatterns === 'write-heavy') {
301
+ updatedConfig.recommendedConfig.enablePredictiveCaching = false;
302
+ updatedConfig.optimizationFlags.backgroundOptimization = false;
303
+ }
304
+ return updatedConfig;
305
+ }
306
+ /**
307
+ * Estimate dataset size if not provided
308
+ */
309
+ estimateDatasetSize() {
310
+ // Start with conservative estimate
311
+ const environment = this.detectEnvironment();
312
+ switch (environment) {
313
+ case 'browser': return 10000;
314
+ case 'serverless': return 50000;
315
+ case 'nodejs': return 100000;
316
+ default: return 25000;
317
+ }
318
+ }
319
+ /**
320
+ * Reset cached configuration (for testing or manual refresh)
321
+ */
322
+ resetCache() {
323
+ this.cachedConfig = null;
324
+ this.datasetStats = { estimatedSize: 0 };
325
+ }
326
+ }
327
+ /**
328
+ * Convenience function for quick auto-configuration
329
+ */
330
+ export async function autoConfigureBrainy(hints) {
331
+ const autoConfig = AutoConfiguration.getInstance();
332
+ return autoConfig.detectAndConfigure(hints);
333
+ }
334
+ /**
335
+ * Get quick setup configuration for common scenarios
336
+ */
337
+ export async function getQuickSetup(scenario) {
338
+ const autoConfig = AutoConfiguration.getInstance();
339
+ return autoConfig.getQuickSetupConfig(scenario);
340
+ }
341
+ //# sourceMappingURL=autoConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoConfiguration.js","sourceRoot":"","sources":["../../src/utils/autoConfiguration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Intelligent cache auto-configuration system
3
+ * Adapts cache settings based on environment, usage patterns, and storage type
4
+ */
5
+ export class CacheAutoConfigurator {
6
+ constructor() {
7
+ this.stats = {
8
+ totalQueries: 0,
9
+ repeatQueries: 0,
10
+ avgQueryTime: 50,
11
+ memoryPressure: 0,
12
+ storageType: 'memory',
13
+ isDistributed: false,
14
+ changeFrequency: 0,
15
+ readWriteRatio: 10,
16
+ };
17
+ this.configHistory = [];
18
+ this.lastOptimization = 0;
19
+ }
20
+ /**
21
+ * Auto-detect optimal cache configuration based on current conditions
22
+ */
23
+ autoDetectOptimalConfig(storageConfig, currentStats) {
24
+ // Update stats with current information
25
+ if (currentStats) {
26
+ this.stats = { ...this.stats, ...currentStats };
27
+ }
28
+ // Detect environment characteristics
29
+ this.detectEnvironment(storageConfig);
30
+ // Generate optimal configuration
31
+ const result = this.generateOptimalConfig();
32
+ // Store for learning
33
+ this.configHistory.push(result);
34
+ this.lastOptimization = Date.now();
35
+ return result;
36
+ }
37
+ /**
38
+ * Dynamically adjust configuration based on runtime performance
39
+ */
40
+ adaptConfiguration(currentConfig, performanceMetrics) {
41
+ const reasoning = [];
42
+ let needsUpdate = false;
43
+ // Check if we should update (don't over-optimize)
44
+ if (Date.now() - this.lastOptimization < 60000) {
45
+ return null; // Wait at least 1 minute between optimizations
46
+ }
47
+ // Analyze performance patterns
48
+ const adaptations = {};
49
+ // Low hit rate → adjust cache size or TTL
50
+ if (performanceMetrics.hitRate < 0.3) {
51
+ if (performanceMetrics.externalChangesDetected > 5) {
52
+ // Too many external changes → shorter TTL
53
+ adaptations.maxAge = Math.max(60000, currentConfig.maxAge * 0.7);
54
+ reasoning.push('Reduced cache TTL due to frequent external changes');
55
+ needsUpdate = true;
56
+ }
57
+ else {
58
+ // Expand cache size for better hit rate
59
+ adaptations.maxSize = Math.min(500, (currentConfig.maxSize || 100) * 1.5);
60
+ reasoning.push('Increased cache size due to low hit rate');
61
+ needsUpdate = true;
62
+ }
63
+ }
64
+ // High hit rate but slow responses → might need cache warming
65
+ if (performanceMetrics.hitRate > 0.8 && performanceMetrics.avgResponseTime > 100) {
66
+ reasoning.push('High hit rate but slow responses - consider cache warming');
67
+ }
68
+ // Memory pressure → reduce cache size
69
+ if (performanceMetrics.memoryUsage > 100 * 1024 * 1024) { // 100MB
70
+ adaptations.maxSize = Math.max(20, (currentConfig.maxSize || 100) * 0.7);
71
+ reasoning.push('Reduced cache size due to memory pressure');
72
+ needsUpdate = true;
73
+ }
74
+ // Recent external changes → adaptive TTL
75
+ if (performanceMetrics.timeSinceLastChange < 30000) { // 30 seconds
76
+ adaptations.maxAge = Math.max(30000, currentConfig.maxAge * 0.8);
77
+ reasoning.push('Shortened TTL due to recent external changes');
78
+ needsUpdate = true;
79
+ }
80
+ if (!needsUpdate) {
81
+ return null;
82
+ }
83
+ const newCacheConfig = {
84
+ ...currentConfig,
85
+ ...adaptations
86
+ };
87
+ const newRealtimeConfig = this.calculateRealtimeConfig();
88
+ return {
89
+ cacheConfig: newCacheConfig,
90
+ realtimeConfig: newRealtimeConfig,
91
+ reasoning
92
+ };
93
+ }
94
+ /**
95
+ * Get recommended configuration for specific use case
96
+ */
97
+ getRecommendedConfig(useCase) {
98
+ const configs = {
99
+ 'high-consistency': {
100
+ cache: { maxAge: 120000, maxSize: 50 },
101
+ realtime: { interval: 15000, enabled: true },
102
+ reasoning: ['Optimized for data consistency and real-time updates']
103
+ },
104
+ 'balanced': {
105
+ cache: { maxAge: 300000, maxSize: 100 },
106
+ realtime: { interval: 30000, enabled: true },
107
+ reasoning: ['Balanced performance and consistency']
108
+ },
109
+ 'performance-first': {
110
+ cache: { maxAge: 600000, maxSize: 200 },
111
+ realtime: { interval: 60000, enabled: true },
112
+ reasoning: ['Optimized for maximum cache performance']
113
+ }
114
+ };
115
+ const config = configs[useCase];
116
+ return {
117
+ cacheConfig: {
118
+ enabled: true,
119
+ ...config.cache
120
+ },
121
+ realtimeConfig: {
122
+ updateIndex: true,
123
+ updateStatistics: true,
124
+ ...config.realtime
125
+ },
126
+ reasoning: config.reasoning
127
+ };
128
+ }
129
+ /**
130
+ * Learn from usage patterns and improve recommendations
131
+ */
132
+ learnFromUsage(usageData) {
133
+ // Update internal stats for better future recommendations
134
+ this.stats.totalQueries += usageData.totalQueries;
135
+ this.stats.repeatQueries += usageData.cacheHits;
136
+ this.stats.avgQueryTime = (this.stats.avgQueryTime + usageData.responseTime) / 2;
137
+ this.stats.changeFrequency = usageData.dataChanges / (usageData.timeWindow / 60000);
138
+ // Calculate read/write ratio
139
+ const writes = usageData.dataChanges;
140
+ const reads = usageData.totalQueries;
141
+ this.stats.readWriteRatio = reads > 0 ? reads / Math.max(writes, 1) : 10;
142
+ }
143
+ detectEnvironment(storageConfig) {
144
+ // Detect storage type
145
+ if (storageConfig?.s3Storage || storageConfig?.customS3Storage) {
146
+ this.stats.storageType = 's3';
147
+ this.stats.isDistributed = true;
148
+ }
149
+ else if (storageConfig?.forceFileSystemStorage) {
150
+ this.stats.storageType = 'filesystem';
151
+ }
152
+ else if (storageConfig?.forceMemoryStorage) {
153
+ this.stats.storageType = 'memory';
154
+ }
155
+ else {
156
+ // Auto-detect browser vs Node.js
157
+ this.stats.storageType = typeof window !== 'undefined' ? 'opfs' : 'filesystem';
158
+ }
159
+ // Detect distributed mode indicators
160
+ this.stats.isDistributed = this.stats.isDistributed ||
161
+ Boolean(storageConfig?.s3Storage || storageConfig?.customS3Storage);
162
+ }
163
+ generateOptimalConfig() {
164
+ const reasoning = [];
165
+ // Base configuration
166
+ let cacheConfig = {
167
+ enabled: true,
168
+ maxSize: 100,
169
+ maxAge: 300000, // 5 minutes
170
+ hitCountWeight: 0.3
171
+ };
172
+ let realtimeConfig = {
173
+ enabled: false,
174
+ interval: 60000,
175
+ updateIndex: true,
176
+ updateStatistics: true
177
+ };
178
+ // Adjust for storage type
179
+ if (this.stats.storageType === 's3' || this.stats.isDistributed) {
180
+ cacheConfig.maxAge = 180000; // 3 minutes for distributed
181
+ realtimeConfig.enabled = true;
182
+ realtimeConfig.interval = 30000; // 30 seconds
183
+ reasoning.push('Distributed storage detected - enabled real-time updates');
184
+ reasoning.push('Reduced cache TTL for distributed consistency');
185
+ }
186
+ // Adjust for read/write patterns
187
+ if (this.stats.readWriteRatio > 20) {
188
+ // Read-heavy workload
189
+ cacheConfig.maxSize = Math.min(300, (cacheConfig.maxSize || 100) * 2);
190
+ cacheConfig.maxAge = Math.min(900000, (cacheConfig.maxAge || 300000) * 1.5); // Up to 15 minutes
191
+ reasoning.push('Read-heavy workload detected - increased cache size and TTL');
192
+ }
193
+ else if (this.stats.readWriteRatio < 5) {
194
+ // Write-heavy workload
195
+ cacheConfig.maxSize = Math.max(50, (cacheConfig.maxSize || 100) * 0.7);
196
+ cacheConfig.maxAge = Math.max(60000, (cacheConfig.maxAge || 300000) * 0.6);
197
+ reasoning.push('Write-heavy workload detected - reduced cache size and TTL');
198
+ }
199
+ // Adjust for change frequency
200
+ if (this.stats.changeFrequency > 10) { // More than 10 changes per minute
201
+ realtimeConfig.interval = Math.max(10000, realtimeConfig.interval * 0.5);
202
+ cacheConfig.maxAge = Math.max(30000, (cacheConfig.maxAge || 300000) * 0.5);
203
+ reasoning.push('High change frequency detected - increased update frequency');
204
+ }
205
+ // Memory constraints
206
+ if (this.detectMemoryConstraints()) {
207
+ cacheConfig.maxSize = Math.max(20, (cacheConfig.maxSize || 100) * 0.6);
208
+ reasoning.push('Memory constraints detected - reduced cache size');
209
+ }
210
+ // Performance optimization
211
+ if (this.stats.avgQueryTime > 200) {
212
+ cacheConfig.maxSize = Math.min(500, (cacheConfig.maxSize || 100) * 1.5);
213
+ reasoning.push('Slow queries detected - increased cache size');
214
+ }
215
+ return {
216
+ cacheConfig,
217
+ realtimeConfig,
218
+ reasoning
219
+ };
220
+ }
221
+ calculateRealtimeConfig() {
222
+ return {
223
+ enabled: this.stats.isDistributed || this.stats.changeFrequency > 1,
224
+ interval: this.stats.isDistributed ? 30000 : 60000,
225
+ updateIndex: true,
226
+ updateStatistics: true
227
+ };
228
+ }
229
+ detectMemoryConstraints() {
230
+ // Simple heuristic for memory constraints
231
+ try {
232
+ if (typeof performance !== 'undefined' && 'memory' in performance) {
233
+ const memInfo = performance.memory;
234
+ return memInfo.usedJSHeapSize > memInfo.jsHeapSizeLimit * 0.8;
235
+ }
236
+ }
237
+ catch (e) {
238
+ // Ignore errors
239
+ }
240
+ // Default assumption for constrained environments
241
+ return false;
242
+ }
243
+ /**
244
+ * Get human-readable explanation of current configuration
245
+ */
246
+ getConfigExplanation(config) {
247
+ const lines = [
248
+ '🤖 Brainy Auto-Configuration:',
249
+ '',
250
+ `📊 Cache: ${config.cacheConfig.maxSize} queries, ${config.cacheConfig.maxAge / 1000}s TTL`,
251
+ `🔄 Updates: ${config.realtimeConfig.enabled ? `Every ${(config.realtimeConfig.interval || 30000) / 1000}s` : 'Disabled'}`,
252
+ '',
253
+ '🎯 Optimizations applied:'
254
+ ];
255
+ config.reasoning.forEach(reason => {
256
+ lines.push(` • ${reason}`);
257
+ });
258
+ return lines.join('\n');
259
+ }
260
+ }
261
+ //# sourceMappingURL=cacheAutoConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheAutoConfig.js","sourceRoot":"","sources":["../../src/utils/cacheAutoConfig.ts"],"names":[],"mappings":"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"}