@soulcraft/brainy 0.58.0 → 0.59.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 (154) hide show
  1. package/bin/brainy.js +539 -387
  2. package/dist/augmentations/conduitAugmentations.js +1 -1
  3. package/dist/augmentations/conduitAugmentations.js.map +1 -1
  4. package/dist/augmentations/cortexSense.js +3 -3
  5. package/dist/augmentations/cortexSense.js.map +1 -1
  6. package/dist/brainyData.js +2 -1
  7. package/dist/brainyData.js.map +1 -1
  8. package/dist/browserFramework.minimal.d.ts +14 -0
  9. package/dist/browserFramework.minimal.js +31 -0
  10. package/dist/browserFramework.minimal.js.map +1 -0
  11. package/dist/cortex/backupRestore.js +2 -2
  12. package/dist/cortex/backupRestore.js.map +1 -1
  13. package/dist/cortex/cortex.d.ts +17 -2
  14. package/dist/cortex/cortex.js +262 -103
  15. package/dist/cortex/cortex.js.map +1 -1
  16. package/dist/cortex/neuralImport.js +2 -2
  17. package/dist/cortex/neuralImport.js.map +1 -1
  18. package/dist/cortex/serviceIntegration.js +2 -2
  19. package/dist/cortex/serviceIntegration.js.map +1 -1
  20. package/dist/distributed/configManager.js +1 -1
  21. package/dist/distributed/configManager.js.map +1 -1
  22. package/dist/index.d.ts +0 -1
  23. package/dist/index.js +2 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/mcp/brainyMCPAdapter.js +1 -1
  26. package/dist/mcp/brainyMCPAdapter.js.map +1 -1
  27. package/dist/mcp/brainyMCPBroadcast.d.ts +82 -0
  28. package/dist/mcp/brainyMCPBroadcast.js +303 -0
  29. package/dist/mcp/brainyMCPBroadcast.js.map +1 -0
  30. package/dist/mcp/brainyMCPClient.d.ts +92 -0
  31. package/dist/mcp/brainyMCPClient.js +254 -0
  32. package/dist/mcp/brainyMCPClient.js.map +1 -0
  33. package/dist/mcp/brainyMCPService.js +1 -1
  34. package/dist/mcp/brainyMCPService.js.map +1 -1
  35. package/dist/mcp/mcpAugmentationToolset.js +1 -1
  36. package/dist/mcp/mcpAugmentationToolset.js.map +1 -1
  37. package/dist/universal/crypto.d.ts +64 -0
  38. package/dist/universal/crypto.js +215 -0
  39. package/dist/universal/crypto.js.map +1 -0
  40. package/dist/universal/events.d.ts +31 -0
  41. package/dist/universal/events.js +156 -0
  42. package/dist/universal/events.js.map +1 -0
  43. package/dist/universal/fs.d.ts +102 -0
  44. package/dist/universal/fs.js +304 -0
  45. package/dist/universal/fs.js.map +1 -0
  46. package/dist/universal/index.d.ts +16 -0
  47. package/dist/universal/index.js +23 -0
  48. package/dist/universal/index.js.map +1 -0
  49. package/dist/universal/path.d.ts +51 -0
  50. package/dist/universal/path.js +161 -0
  51. package/dist/universal/path.js.map +1 -0
  52. package/dist/universal/uuid.d.ts +10 -0
  53. package/dist/universal/uuid.js +21 -0
  54. package/dist/universal/uuid.js.map +1 -0
  55. package/package.json +55 -2
  56. package/dist/augmentationFactory.d.ts.map +0 -1
  57. package/dist/augmentationPipeline.d.ts.map +0 -1
  58. package/dist/augmentationRegistry.d.ts.map +0 -1
  59. package/dist/augmentationRegistryLoader.d.ts.map +0 -1
  60. package/dist/augmentations/conduitAugmentations.d.ts.map +0 -1
  61. package/dist/augmentations/memoryAugmentations.d.ts.map +0 -1
  62. package/dist/augmentations/serverSearchAugmentations.d.ts.map +0 -1
  63. package/dist/brainyData.d.ts.map +0 -1
  64. package/dist/browserFramework.d.ts.map +0 -1
  65. package/dist/coreTypes.d.ts.map +0 -1
  66. package/dist/cortex/cli.d.ts +0 -8
  67. package/dist/cortex/cli.js +0 -207
  68. package/dist/cortex/cli.js.map +0 -1
  69. package/dist/cortex/commands/index.d.ts +0 -79
  70. package/dist/cortex/commands/index.js +0 -614
  71. package/dist/cortex/commands/index.js.map +0 -1
  72. package/dist/cortex/config.d.ts +0 -112
  73. package/dist/cortex/config.js +0 -312
  74. package/dist/cortex/config.js.map +0 -1
  75. package/dist/cortex/licensingSystem.d.ts +0 -126
  76. package/dist/cortex/licensingSystem.js +0 -474
  77. package/dist/cortex/licensingSystem.js.map +0 -1
  78. package/dist/cortex/webhookManager.d.ts +0 -39
  79. package/dist/cortex/webhookManager.js +0 -326
  80. package/dist/cortex/webhookManager.js.map +0 -1
  81. package/dist/demo.d.ts.map +0 -1
  82. package/dist/distributed/configManager.d.ts.map +0 -1
  83. package/dist/distributed/domainDetector.d.ts.map +0 -1
  84. package/dist/distributed/hashPartitioner.d.ts.map +0 -1
  85. package/dist/distributed/healthMonitor.d.ts.map +0 -1
  86. package/dist/distributed/index.d.ts.map +0 -1
  87. package/dist/distributed/operationalModes.d.ts.map +0 -1
  88. package/dist/errors/brainyError.d.ts.map +0 -1
  89. package/dist/examples/basicUsage.d.ts.map +0 -1
  90. package/dist/hnsw/distributedSearch.d.ts.map +0 -1
  91. package/dist/hnsw/hnswIndex.d.ts.map +0 -1
  92. package/dist/hnsw/hnswIndexOptimized.d.ts.map +0 -1
  93. package/dist/hnsw/optimizedHNSWIndex.d.ts.map +0 -1
  94. package/dist/hnsw/partitionedHNSWIndex.d.ts.map +0 -1
  95. package/dist/hnsw/scaledHNSWSystem.d.ts.map +0 -1
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/mcp/brainyMCPAdapter.d.ts.map +0 -1
  98. package/dist/mcp/brainyMCPService.d.ts.map +0 -1
  99. package/dist/mcp/index.d.ts.map +0 -1
  100. package/dist/mcp/mcpAugmentationToolset.d.ts.map +0 -1
  101. package/dist/pipeline.d.ts.map +0 -1
  102. package/dist/sequentialPipeline.d.ts.map +0 -1
  103. package/dist/setup.d.ts.map +0 -1
  104. package/dist/storage/adapters/baseStorageAdapter.d.ts.map +0 -1
  105. package/dist/storage/adapters/batchS3Operations.d.ts.map +0 -1
  106. package/dist/storage/adapters/fileSystemStorage.d.ts.map +0 -1
  107. package/dist/storage/adapters/memoryStorage.d.ts.map +0 -1
  108. package/dist/storage/adapters/opfsStorage.d.ts.map +0 -1
  109. package/dist/storage/adapters/optimizedS3Search.d.ts.map +0 -1
  110. package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +0 -1
  111. package/dist/storage/baseStorage.d.ts.map +0 -1
  112. package/dist/storage/cacheManager.d.ts.map +0 -1
  113. package/dist/storage/enhancedCacheManager.d.ts.map +0 -1
  114. package/dist/storage/readOnlyOptimizations.d.ts.map +0 -1
  115. package/dist/storage/storageFactory.d.ts.map +0 -1
  116. package/dist/types/augmentations.d.ts.map +0 -1
  117. package/dist/types/brainyDataInterface.d.ts.map +0 -1
  118. package/dist/types/distributedTypes.d.ts.map +0 -1
  119. package/dist/types/fileSystemTypes.d.ts.map +0 -1
  120. package/dist/types/graphTypes.d.ts.map +0 -1
  121. package/dist/types/mcpTypes.d.ts.map +0 -1
  122. package/dist/types/paginationTypes.d.ts.map +0 -1
  123. package/dist/types/pipelineTypes.d.ts.map +0 -1
  124. package/dist/types/tensorflowTypes.d.ts +0 -26
  125. package/dist/types/tensorflowTypes.d.ts.map +0 -1
  126. package/dist/types/tensorflowTypes.js +0 -6
  127. package/dist/types/tensorflowTypes.js.map +0 -1
  128. package/dist/unified.d.ts.map +0 -1
  129. package/dist/utils/autoConfiguration.d.ts.map +0 -1
  130. package/dist/utils/cacheAutoConfig.d.ts.map +0 -1
  131. package/dist/utils/crypto.d.ts.map +0 -1
  132. package/dist/utils/distance.d.ts.map +0 -1
  133. package/dist/utils/embedding.d.ts.map +0 -1
  134. package/dist/utils/environment.d.ts.map +0 -1
  135. package/dist/utils/fieldNameTracking.d.ts.map +0 -1
  136. package/dist/utils/index.d.ts.map +0 -1
  137. package/dist/utils/jsonProcessing.d.ts.map +0 -1
  138. package/dist/utils/logger.d.ts.map +0 -1
  139. package/dist/utils/operationUtils.d.ts.map +0 -1
  140. package/dist/utils/robustModelLoader.d.ts +0 -112
  141. package/dist/utils/robustModelLoader.d.ts.map +0 -1
  142. package/dist/utils/robustModelLoader.js +0 -624
  143. package/dist/utils/robustModelLoader.js.map +0 -1
  144. package/dist/utils/searchCache.d.ts.map +0 -1
  145. package/dist/utils/statistics.d.ts.map +0 -1
  146. package/dist/utils/statisticsCollector.d.ts.map +0 -1
  147. package/dist/utils/textEncoding.d.ts.map +0 -1
  148. package/dist/utils/typeUtils.d.ts.map +0 -1
  149. package/dist/utils/version.d.ts.map +0 -1
  150. package/dist/utils/workerUtils.d.ts.map +0 -1
  151. package/dist/webhooks/webhookSystem.d.ts +0 -114
  152. package/dist/webhooks/webhookSystem.js +0 -321
  153. package/dist/webhooks/webhookSystem.js.map +0 -1
  154. package/dist/worker.d.ts.map +0 -1
@@ -1,624 +0,0 @@
1
- /**
2
- * Robust Model Loader - Enhanced model loading with retry mechanisms and fallbacks
3
- *
4
- * This module provides a more reliable way to load TensorFlow models with:
5
- * - Exponential backoff retry mechanisms
6
- * - Timeout handling
7
- * - Multiple fallback strategies
8
- * - Better error handling and logging
9
- * - Optional local model bundling support
10
- */
11
- export class RobustModelLoader {
12
- constructor(options = {}) {
13
- this.loadAttempts = new Map();
14
- // Check for environment variables
15
- const envModelsPath = process.env.BRAINY_MODELS_PATH || process.env.MODELS_PATH;
16
- // Auto-detect if we need to use an auto-extracted models directory
17
- const autoDetectedPath = this.autoDetectModelsPath();
18
- this.options = {
19
- maxRetries: options.maxRetries ?? 3,
20
- initialRetryDelay: options.initialRetryDelay ?? 1000,
21
- maxRetryDelay: options.maxRetryDelay ?? 30000,
22
- timeout: options.timeout ?? 60000, // 60 seconds
23
- useExponentialBackoff: options.useExponentialBackoff ?? true,
24
- fallbackUrls: options.fallbackUrls ?? [],
25
- verbose: options.verbose ?? false,
26
- preferLocalModel: options.preferLocalModel ?? true,
27
- customModelsPath: options.customModelsPath ?? envModelsPath ?? autoDetectedPath
28
- };
29
- }
30
- /**
31
- * Auto-detect extracted models directory
32
- */
33
- autoDetectModelsPath() {
34
- try {
35
- // Check if we're in Node.js environment
36
- const isNode = typeof process !== 'undefined' &&
37
- process.versions != null &&
38
- process.versions.node != null;
39
- if (!isNode) {
40
- return undefined;
41
- }
42
- // Try to detect extracted models directory
43
- const possiblePaths = [
44
- // Standard extraction location
45
- './models',
46
- '../models',
47
- '/app/models',
48
- // Project root relative paths
49
- process.cwd() + '/models',
50
- // Docker/container standard paths
51
- '/usr/src/app/models',
52
- '/home/app/models'
53
- ];
54
- // Use require to access fs and path synchronously (only in Node.js)
55
- let fs, path;
56
- try {
57
- fs = require('fs');
58
- path = require('path');
59
- }
60
- catch (error) {
61
- // If require fails, we're probably in a browser environment
62
- return undefined;
63
- }
64
- for (const modelPath of possiblePaths) {
65
- try {
66
- // Check for marker file that indicates successful extraction
67
- const markerFile = path.join(modelPath, '.brainy-models-extracted');
68
- if (fs.existsSync(markerFile)) {
69
- console.log(`🎯 Auto-detected extracted models at: ${modelPath}`);
70
- return modelPath;
71
- }
72
- // Fallback: check for universal-sentence-encoder directory
73
- const useDir = path.join(modelPath, 'universal-sentence-encoder');
74
- const modelJson = path.join(useDir, 'model.json');
75
- if (fs.existsSync(modelJson)) {
76
- console.log(`🎯 Auto-detected models directory at: ${modelPath}`);
77
- return modelPath;
78
- }
79
- }
80
- catch (error) {
81
- continue;
82
- }
83
- }
84
- return undefined;
85
- }
86
- catch (error) {
87
- return undefined;
88
- }
89
- }
90
- /**
91
- * Load model with all available fallback strategies
92
- */
93
- async loadModelWithFallbacks() {
94
- const startTime = Date.now();
95
- this.log('Starting model loading with all fallback strategies');
96
- // Try local bundled model first (from @soulcraft/brainy-models if available)
97
- const localModel = await this.tryLoadLocalBundledModel();
98
- if (localModel) {
99
- const loadTime = Date.now() - startTime;
100
- this.log(`✅ Model loaded successfully from local bundle in ${loadTime}ms`);
101
- return localModel;
102
- }
103
- // Fallback to loading from URLs
104
- console.warn('⚠️ Local model not found. Falling back to remote model loading.');
105
- console.warn(' For best performance and reliability:');
106
- console.warn(' 1. Install @soulcraft/brainy-models: npm install @soulcraft/brainy-models');
107
- console.warn(' 2. Or set BRAINY_MODELS_PATH environment variable for Docker deployments');
108
- console.warn(' 3. Or use customModelsPath option in RobustModelLoader');
109
- const fallbackUrls = getUniversalSentenceEncoderFallbacks();
110
- for (const url of fallbackUrls) {
111
- try {
112
- this.log(`Attempting to load model from: ${url}`);
113
- const model = await this.withTimeout(this.loadFromUrl(url), this.options.timeout);
114
- const loadTime = Date.now() - startTime;
115
- // Verify it's the correct model by checking if it can embed text
116
- try {
117
- const testEmbedding = await model.embed('test');
118
- if (!testEmbedding || (Array.isArray(testEmbedding) && testEmbedding.length !== 512)) {
119
- throw new Error(`Model verification failed: incorrect embedding dimensions (expected 512, got ${Array.isArray(testEmbedding) ? testEmbedding.length : 'invalid'})`);
120
- }
121
- }
122
- catch (verifyError) {
123
- console.warn(`⚠️ Model verification failed for ${url}: ${verifyError}`);
124
- continue;
125
- }
126
- console.warn(`✅ Successfully loaded Universal Sentence Encoder from remote URL: ${url}`);
127
- console.warn(` Load time: ${loadTime}ms`);
128
- return model;
129
- }
130
- catch (error) {
131
- this.log(`Failed to load from ${url}: ${error}`);
132
- }
133
- }
134
- throw new Error('Failed to load model from all available sources');
135
- }
136
- /**
137
- * Load a model with robust retry and fallback mechanisms
138
- */
139
- async loadModel(primaryLoadFunction, modelIdentifier = 'default') {
140
- const startTime = Date.now();
141
- this.log(`Starting robust model loading for: ${modelIdentifier}`);
142
- // Try local bundled model first if preferred
143
- if (this.options.preferLocalModel) {
144
- try {
145
- const localModel = await this.tryLoadLocalBundledModel();
146
- if (localModel) {
147
- this.log(`Successfully loaded local bundled model in ${Date.now() - startTime}ms`);
148
- return localModel;
149
- }
150
- }
151
- catch (error) {
152
- this.log(`Local bundled model not available: ${error}`);
153
- }
154
- }
155
- // Try primary load function with retries
156
- try {
157
- const model = await this.loadWithRetries(primaryLoadFunction, `primary-${modelIdentifier}`);
158
- this.log(`Successfully loaded model via primary method in ${Date.now() - startTime}ms`);
159
- return model;
160
- }
161
- catch (primaryError) {
162
- this.log(`Primary model loading failed: ${primaryError}`);
163
- // Try fallback URLs if available
164
- for (let i = 0; i < this.options.fallbackUrls.length; i++) {
165
- const fallbackUrl = this.options.fallbackUrls[i];
166
- this.log(`Trying fallback URL ${i + 1}/${this.options.fallbackUrls.length}: ${fallbackUrl}`);
167
- try {
168
- const fallbackModel = await this.loadWithRetries(() => this.loadFromUrl(fallbackUrl), `fallback-${i}-${modelIdentifier}`);
169
- this.log(`Successfully loaded model via fallback ${i + 1} in ${Date.now() - startTime}ms`);
170
- return fallbackModel;
171
- }
172
- catch (fallbackError) {
173
- this.log(`Fallback ${i + 1} failed: ${fallbackError}`);
174
- }
175
- }
176
- // All attempts failed
177
- const totalTime = Date.now() - startTime;
178
- const errorMessage = `All model loading attempts failed after ${totalTime}ms. Primary error: ${primaryError}`;
179
- this.log(errorMessage);
180
- throw new Error(errorMessage);
181
- }
182
- }
183
- /**
184
- * Load a model with retry logic and exponential backoff
185
- */
186
- async loadWithRetries(loadFunction, identifier) {
187
- let lastError;
188
- const currentAttempts = this.loadAttempts.get(identifier) || 0;
189
- for (let attempt = currentAttempts; attempt <= this.options.maxRetries; attempt++) {
190
- this.loadAttempts.set(identifier, attempt);
191
- try {
192
- this.log(`Attempt ${attempt + 1}/${this.options.maxRetries + 1} for ${identifier}`);
193
- // Apply timeout to the load function
194
- const model = await this.withTimeout(loadFunction(), this.options.timeout);
195
- // Success - clear attempt counter
196
- this.loadAttempts.delete(identifier);
197
- return model;
198
- }
199
- catch (error) {
200
- lastError = error;
201
- this.log(`Attempt ${attempt + 1} failed: ${lastError.message}`);
202
- // Don't retry on the last attempt
203
- if (attempt === this.options.maxRetries) {
204
- break;
205
- }
206
- // Calculate delay for next attempt
207
- const delay = this.calculateRetryDelay(attempt);
208
- this.log(`Retrying in ${delay}ms...`);
209
- // Wait before next attempt
210
- await this.sleep(delay);
211
- }
212
- }
213
- // All retries exhausted
214
- this.loadAttempts.delete(identifier);
215
- throw lastError;
216
- }
217
- /**
218
- * Try to load a locally bundled model
219
- */
220
- async tryLoadLocalBundledModel() {
221
- try {
222
- // First, try direct file loading from @soulcraft/brainy-models if available
223
- try {
224
- console.log('Checking for @soulcraft/brainy-models package...');
225
- const brainyModelsPath = this.findBrainyModelsPath();
226
- if (brainyModelsPath) {
227
- console.log('✅ Found @soulcraft/brainy-models package installed');
228
- console.log(' Loading model files directly with tf.loadGraphModel...');
229
- const directModel = await this.tryLoadFromCustomPath(brainyModelsPath);
230
- if (directModel) {
231
- console.log('✅ Successfully loaded model from @soulcraft/brainy-models');
232
- console.log(' Using bundled model for maximum performance and reliability');
233
- return directModel;
234
- }
235
- }
236
- }
237
- catch (error) {
238
- console.log(`@soulcraft/brainy-models direct loading failed: ${error}`);
239
- }
240
- // Second, try custom models directory if specified (for Docker deployments)
241
- if (this.options.customModelsPath) {
242
- console.log(`Checking custom models directory: ${this.options.customModelsPath}`);
243
- const customModel = await this.tryLoadFromCustomPath(this.options.customModelsPath);
244
- if (customModel) {
245
- console.log('✅ Successfully loaded model from custom directory');
246
- console.log(' Using custom model path for Docker/production deployment');
247
- return customModel;
248
- }
249
- }
250
- // Third, try to use @tensorflow-models/universal-sentence-encoder as fallback
251
- // This package includes the tokenizer but may fail with local files
252
- try {
253
- console.log('Checking for @tensorflow-models/universal-sentence-encoder package...');
254
- const usePackageName = '@tensorflow-models/universal-sentence-encoder';
255
- const use = await import(usePackageName).catch(() => null);
256
- if (use && use.load) {
257
- console.log('✅ Found @tensorflow-models/universal-sentence-encoder package');
258
- // Check if we have local model files from @soulcraft/brainy-models
259
- let modelUrl = undefined;
260
- let vocabUrl = undefined;
261
- try {
262
- // Try to find local model files
263
- const pathModule = 'path';
264
- const fsModule = 'fs';
265
- const path = await import(/* @vite-ignore */ pathModule);
266
- const fs = await import(/* @vite-ignore */ fsModule);
267
- // Check for brainy-models package
268
- try {
269
- const brainyModelsPath = require.resolve('@soulcraft/brainy-models/package.json');
270
- const brainyModelsDir = path.dirname(brainyModelsPath);
271
- const modelDir = path.join(brainyModelsDir, 'models', 'universal-sentence-encoder');
272
- const modelJsonPath = path.join(modelDir, 'model.json');
273
- if (fs.existsSync(modelJsonPath)) {
274
- // Use file:// URL for local model
275
- modelUrl = `file://${modelJsonPath}`;
276
- console.log(`📁 Using local model files from: ${modelDir}`);
277
- // Check for vocab file
278
- const vocabPath = path.join(brainyModelsDir, 'models', 'vocab.json');
279
- if (fs.existsSync(vocabPath)) {
280
- vocabUrl = `file://${vocabPath}`;
281
- console.log(`📁 Using local vocab file from: ${vocabPath}`);
282
- }
283
- }
284
- }
285
- catch (e) {
286
- // brainy-models not found, will use remote models
287
- }
288
- }
289
- catch (e) {
290
- // Not in Node.js environment or files not found
291
- }
292
- try {
293
- // Load the USE model with tokenizer
294
- console.log('Loading Universal Sentence Encoder with tokenizer...');
295
- const model = await use.load({ modelUrl, vocabUrl });
296
- console.log('✅ Universal Sentence Encoder loaded successfully with tokenizer');
297
- // The loaded model already has the correct interface
298
- return model;
299
- }
300
- catch (loadError) {
301
- console.error('Failed to load USE with tokenizer:', loadError);
302
- // Fall through to try other methods
303
- }
304
- }
305
- }
306
- catch (importError) {
307
- this.log(`@tensorflow-models/universal-sentence-encoder not available: ${importError}`);
308
- }
309
- // Check if we're in Node.js environment
310
- const isNode = typeof process !== 'undefined' &&
311
- process.versions != null &&
312
- process.versions.node != null;
313
- if (isNode) {
314
- try {
315
- // Try to load from bundled model directory
316
- // Use dynamic import with a non-literal string to prevent Rollup from bundling these
317
- const pathModule = 'path';
318
- const fsModule = 'fs';
319
- const urlModule = 'url';
320
- const path = await import(/* @vite-ignore */ pathModule);
321
- const fs = await import(/* @vite-ignore */ fsModule);
322
- const { fileURLToPath } = await import(/* @vite-ignore */ urlModule);
323
- const __filename = fileURLToPath(import.meta.url);
324
- const __dirname = path.dirname(__filename);
325
- // Look for bundled model in multiple possible locations
326
- const possiblePaths = [
327
- // Direct @soulcraft/brainy-models paths
328
- path.join(process.cwd(), 'node_modules', '@soulcraft', 'brainy-models', 'models', 'universal-sentence-encoder'),
329
- path.join(process.cwd(), 'node_modules', '@soulcraft', 'brainy-models', 'universal-sentence-encoder'),
330
- path.join(__dirname, '..', '..', 'node_modules', '@soulcraft', 'brainy-models', 'models', 'universal-sentence-encoder'),
331
- path.join(__dirname, '..', '..', 'node_modules', '@soulcraft', 'brainy-models', 'universal-sentence-encoder'),
332
- // Alternative paths
333
- path.join(__dirname, '..', '..', 'models', 'bundled', 'universal-sentence-encoder'),
334
- path.join(__dirname, '..', '..', 'brainy-models-package', 'models', 'universal-sentence-encoder'),
335
- path.join(process.cwd(), 'brainy-models-package', 'models', 'universal-sentence-encoder'),
336
- // Check parent directories (for monorepo structures)
337
- path.join(process.cwd(), '..', 'node_modules', '@soulcraft', 'brainy-models', 'models', 'universal-sentence-encoder'),
338
- path.join(process.cwd(), '..', '..', 'node_modules', '@soulcraft', 'brainy-models', 'models', 'universal-sentence-encoder')
339
- ];
340
- for (const modelPath of possiblePaths) {
341
- const modelJsonPath = path.join(modelPath, 'model.json');
342
- if (fs.existsSync(modelJsonPath)) {
343
- this.log(`Found bundled model at: ${modelJsonPath}`);
344
- // Load TensorFlow.js if not already loaded
345
- const tf = await import('@tensorflow/tfjs');
346
- // Read the model.json to check the format
347
- const modelJsonContent = JSON.parse(fs.readFileSync(modelJsonPath, 'utf8'));
348
- // Ensure the format field exists for TensorFlow.js compatibility
349
- if (!modelJsonContent.format) {
350
- modelJsonContent.format = 'tfjs-graph-model';
351
- try {
352
- fs.writeFileSync(modelJsonPath, JSON.stringify(modelJsonContent, null, 2));
353
- this.log(`✅ Added missing "format" field to model.json for TensorFlow.js compatibility`);
354
- }
355
- catch (writeError) {
356
- this.log(`⚠️ Could not write format field to model.json: ${writeError}`);
357
- }
358
- }
359
- const modelFormat = modelJsonContent.format || 'tfjs-graph-model';
360
- let model;
361
- if (modelFormat === 'tfjs-graph-model') {
362
- // Use loadGraphModel for graph models
363
- model = await tf.loadGraphModel(`file://${modelJsonPath}`);
364
- }
365
- else {
366
- // Use loadLayersModel for layers models (default)
367
- model = await tf.loadLayersModel(`file://${modelJsonPath}`);
368
- }
369
- // Return a wrapper that matches the Universal Sentence Encoder interface
370
- return this.createModelWrapper(model);
371
- }
372
- }
373
- }
374
- catch (nodeImportError) {
375
- this.log(`Could not load Node.js modules in browser: ${nodeImportError}`);
376
- }
377
- }
378
- return null;
379
- }
380
- catch (error) {
381
- this.log(`Error checking for bundled model: ${error}`);
382
- return null;
383
- }
384
- }
385
- /**
386
- * Find the @soulcraft/brainy-models package path if installed
387
- */
388
- findBrainyModelsPath() {
389
- try {
390
- // Check if we're in Node.js environment
391
- const isNode = typeof process !== 'undefined' &&
392
- process.versions != null &&
393
- process.versions.node != null;
394
- if (!isNode) {
395
- return null;
396
- }
397
- // Try to resolve @soulcraft/brainy-models package
398
- try {
399
- const brainyModelsPackagePath = require.resolve('@soulcraft/brainy-models/package.json');
400
- const path = require('path');
401
- const brainyModelsDir = path.dirname(brainyModelsPackagePath);
402
- const modelsPath = path.join(brainyModelsDir, 'models');
403
- // Check if models directory exists
404
- const fs = require('fs');
405
- if (fs.existsSync(modelsPath)) {
406
- return modelsPath;
407
- }
408
- }
409
- catch (e) {
410
- // Package not found
411
- }
412
- return null;
413
- }
414
- catch (error) {
415
- return null;
416
- }
417
- }
418
- /**
419
- * Try to load model from a custom directory path
420
- */
421
- async tryLoadFromCustomPath(customPath) {
422
- try {
423
- // Check if we're in Node.js environment
424
- const isNode = typeof process !== 'undefined' &&
425
- process.versions != null &&
426
- process.versions.node != null;
427
- if (!isNode) {
428
- console.log('Custom model path only supported in Node.js environment');
429
- return null;
430
- }
431
- // Dynamic imports to avoid bundling issues
432
- const pathModule = 'path';
433
- const fsModule = 'fs';
434
- const path = await import(/* @vite-ignore */ pathModule);
435
- const fs = await import(/* @vite-ignore */ fsModule);
436
- // Look for models in standard subdirectories
437
- const possibleModelPaths = [
438
- // Direct path to universal-sentence-encoder
439
- path.join(customPath, 'universal-sentence-encoder'),
440
- // Mirroring @soulcraft/brainy-models structure
441
- path.join(customPath, 'models', 'universal-sentence-encoder'),
442
- // TensorFlow hub model structure
443
- path.join(customPath, 'tfhub', 'universal-sentence-encoder'),
444
- // Simple models directory
445
- path.join(customPath, 'use'),
446
- // Check if customPath itself contains model.json
447
- customPath
448
- ];
449
- for (const modelPath of possibleModelPaths) {
450
- const modelJsonPath = path.join(modelPath, 'model.json');
451
- if (fs.existsSync(modelJsonPath)) {
452
- console.log(`Found model at custom path: ${modelJsonPath}`);
453
- // Load TensorFlow.js if not already loaded
454
- const tf = await import('@tensorflow/tfjs');
455
- // Read and validate the model.json
456
- const modelJsonContent = JSON.parse(fs.readFileSync(modelJsonPath, 'utf8'));
457
- // Ensure the format field exists for TensorFlow.js compatibility
458
- if (!modelJsonContent.format) {
459
- modelJsonContent.format = 'tfjs-graph-model';
460
- try {
461
- fs.writeFileSync(modelJsonPath, JSON.stringify(modelJsonContent, null, 2));
462
- console.log(`✅ Added missing "format" field to model.json for TensorFlow.js compatibility`);
463
- }
464
- catch (writeError) {
465
- console.log(`⚠️ Could not write format field to model.json: ${writeError}`);
466
- }
467
- }
468
- const modelFormat = modelJsonContent.format || 'tfjs-graph-model';
469
- let model;
470
- if (modelFormat === 'tfjs-graph-model') {
471
- // Use loadGraphModel with proper Node.js file path (not file:// URL)
472
- model = await tf.loadGraphModel(modelJsonPath);
473
- }
474
- else {
475
- // Use loadLayersModel with proper Node.js file path (not file:// URL)
476
- model = await tf.loadLayersModel(modelJsonPath);
477
- }
478
- // Return a wrapper that matches the Universal Sentence Encoder interface
479
- return this.createModelWrapper(model);
480
- }
481
- }
482
- console.log(`No model found in custom path: ${customPath}`);
483
- return null;
484
- }
485
- catch (error) {
486
- console.log(`Error loading from custom path ${customPath}: ${error}`);
487
- return null;
488
- }
489
- }
490
- /**
491
- * Load model from a specific URL
492
- */
493
- async loadFromUrl(url) {
494
- try {
495
- this.log(`Loading model from URL: ${url}`);
496
- // Import TensorFlow.js
497
- const tf = await import('@tensorflow/tfjs');
498
- // Load the model as a graph model
499
- const model = await tf.loadGraphModel(url);
500
- this.log(`✅ Successfully loaded model from: ${url}`);
501
- // Return a wrapper that matches the Universal Sentence Encoder interface
502
- return this.createModelWrapper(model);
503
- }
504
- catch (error) {
505
- throw new Error(`Failed to load model from ${url}: ${error}`);
506
- }
507
- }
508
- /**
509
- * Create a model wrapper that matches the Universal Sentence Encoder interface
510
- */
511
- createModelWrapper(tfModel) {
512
- return {
513
- init: async () => {
514
- // Model is already loaded
515
- },
516
- embed: async (sentences) => {
517
- const tf = await import('@tensorflow/tfjs');
518
- const input = Array.isArray(sentences) ? sentences : [sentences];
519
- // Universal Sentence Encoder expects tokenized input
520
- // For the tfhub model, we need to handle text preprocessing
521
- // The model expects a tensor of strings
522
- const inputTensor = tf.tensor(input);
523
- try {
524
- // Run the model prediction
525
- const embeddings = await tfModel.predict(inputTensor);
526
- // Convert to array and clean up
527
- const result = await embeddings.array();
528
- embeddings.dispose();
529
- inputTensor.dispose();
530
- // Return first embedding if single input, otherwise return all
531
- return Array.isArray(sentences) ? result : (result[0] || []);
532
- }
533
- catch (error) {
534
- inputTensor.dispose();
535
- throw new Error(`Failed to generate embeddings: ${error}`);
536
- }
537
- },
538
- dispose: async () => {
539
- if (tfModel && tfModel.dispose) {
540
- tfModel.dispose();
541
- }
542
- }
543
- };
544
- }
545
- /**
546
- * Apply timeout to a promise
547
- */
548
- async withTimeout(promise, timeoutMs) {
549
- const timeoutPromise = new Promise((_, reject) => {
550
- setTimeout(() => {
551
- reject(new Error(`Operation timed out after ${timeoutMs}ms`));
552
- }, timeoutMs);
553
- });
554
- return Promise.race([promise, timeoutPromise]);
555
- }
556
- /**
557
- * Calculate retry delay with exponential backoff
558
- */
559
- calculateRetryDelay(attempt) {
560
- if (!this.options.useExponentialBackoff) {
561
- return this.options.initialRetryDelay;
562
- }
563
- // Exponential backoff: delay = initialDelay * (2 ^ attempt) + jitter
564
- const exponentialDelay = this.options.initialRetryDelay * Math.pow(2, attempt);
565
- // Add jitter (random factor) to prevent thundering herd
566
- const jitter = Math.random() * 1000;
567
- // Cap at maximum delay
568
- const delay = Math.min(exponentialDelay + jitter, this.options.maxRetryDelay);
569
- return Math.floor(delay);
570
- }
571
- /**
572
- * Sleep for specified milliseconds
573
- */
574
- sleep(ms) {
575
- return new Promise(resolve => setTimeout(resolve, ms));
576
- }
577
- /**
578
- * Log message if verbose mode is enabled
579
- */
580
- log(message) {
581
- if (this.options.verbose) {
582
- console.log(`[RobustModelLoader] ${message}`);
583
- }
584
- }
585
- /**
586
- * Get loading statistics
587
- */
588
- getLoadingStats() {
589
- const stats = {};
590
- for (const [identifier, attempts] of this.loadAttempts.entries()) {
591
- stats[identifier] = attempts;
592
- }
593
- return stats;
594
- }
595
- /**
596
- * Reset loading statistics
597
- */
598
- resetStats() {
599
- this.loadAttempts.clear();
600
- }
601
- }
602
- /**
603
- * Create a robust model loader with sensible defaults
604
- */
605
- export function createRobustModelLoader(options) {
606
- return new RobustModelLoader(options);
607
- }
608
- /**
609
- * Utility function to create fallback URLs for Universal Sentence Encoder
610
- */
611
- export function getUniversalSentenceEncoderFallbacks() {
612
- return [
613
- // TensorFlow Hub model URL (correct path)
614
- 'https://tfhub.dev/tensorflow/tfjs-model/universal-sentence-encoder/1/default/1/model.json?tfjs-format=file',
615
- // Alternative TensorFlow Hub URL
616
- 'https://www.kaggle.com/models/tensorflow/universal-sentence-encoder/tfJs/default/1/model.json?tfjs-format=file',
617
- // Google Storage URL (updated path)
618
- 'https://storage.googleapis.com/tfjs-models/savedmodel/universal_sentence_encoder/model.json',
619
- // Alternative Google Storage URL
620
- 'https://storage.googleapis.com/tfhub-tfjs-modules/tensorflow/universal-sentence-encoder/1/default/1/model.json',
621
- // Add more fallback URLs as they become available
622
- ];
623
- }
624
- //# sourceMappingURL=robustModelLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"robustModelLoader.js","sourceRoot":"","sources":["../../src/utils/robustModelLoader.ts"],"names":[],"mappings":"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"}