@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,417 @@
1
+ /**
2
+ * Sequential Augmentation Pipeline
3
+ *
4
+ * This module provides a pipeline for executing augmentations in a specific sequence:
5
+ * ISense -> IMemory -> ICognition -> IConduit -> IActivation -> IPerception
6
+ *
7
+ * It supports high-performance streaming data from WebSockets without blocking.
8
+ * Optimized for Node.js 23.11+ using native WebStreams API.
9
+ */
10
+ import { AugmentationType } from './types/augmentations.js';
11
+ import { BrainyData } from './brainyData.js';
12
+ import { augmentationPipeline } from './augmentationPipeline.js';
13
+ // Use the browser's built-in WebStreams API or Node.js native WebStreams API
14
+ // This approach ensures compatibility with both environments
15
+ let TransformStream, ReadableStream, WritableStream;
16
+ // Function to initialize the stream classes
17
+ const initializeStreamClasses = () => {
18
+ // Try to use the browser's built-in WebStreams API first
19
+ if (typeof globalThis.TransformStream !== 'undefined' &&
20
+ typeof globalThis.ReadableStream !== 'undefined' &&
21
+ typeof globalThis.WritableStream !== 'undefined') {
22
+ TransformStream = globalThis.TransformStream;
23
+ ReadableStream = globalThis.ReadableStream;
24
+ WritableStream = globalThis.WritableStream;
25
+ return Promise.resolve();
26
+ }
27
+ else {
28
+ // In Node.js environment, try to import from node:stream/web
29
+ // This will be executed in Node.js but not in browsers
30
+ return import('node:stream/web')
31
+ .then(streamWebModule => {
32
+ TransformStream = streamWebModule.TransformStream;
33
+ ReadableStream = streamWebModule.ReadableStream;
34
+ WritableStream = streamWebModule.WritableStream;
35
+ })
36
+ .catch(error => {
37
+ console.error('Failed to import WebStreams API:', error);
38
+ // Provide fallback implementations or throw a more helpful error
39
+ throw new Error('WebStreams API is not available in this environment. Please use a modern browser or Node.js 18+.');
40
+ });
41
+ }
42
+ };
43
+ // Initialize immediately but don't block module execution
44
+ const streamClassesPromise = initializeStreamClasses();
45
+ /**
46
+ * Default pipeline options
47
+ */
48
+ const DEFAULT_SEQUENTIAL_PIPELINE_OPTIONS = {
49
+ timeout: 30000,
50
+ stopOnError: false
51
+ };
52
+ /**
53
+ * SequentialPipeline class
54
+ *
55
+ * Executes augmentations in a specific sequence:
56
+ * ISense -> IMemory -> ICognition -> IConduit -> IActivation -> IPerception
57
+ */
58
+ export class SequentialPipeline {
59
+ /**
60
+ * Create a new sequential pipeline
61
+ *
62
+ * @param options Options for the pipeline
63
+ */
64
+ constructor(options = {}) {
65
+ this.brainyData = options.brainyData || new BrainyData();
66
+ }
67
+ /**
68
+ * Ensure stream classes are initialized
69
+ * @private
70
+ */
71
+ async ensureStreamClassesInitialized() {
72
+ await streamClassesPromise;
73
+ }
74
+ /**
75
+ * Initialize the pipeline
76
+ *
77
+ * @returns A promise that resolves when initialization is complete
78
+ */
79
+ async initialize() {
80
+ // Initialize stream classes and BrainyData in parallel
81
+ await Promise.all([
82
+ this.ensureStreamClassesInitialized(),
83
+ this.brainyData.init()
84
+ ]);
85
+ }
86
+ /**
87
+ * Process data through the sequential pipeline
88
+ *
89
+ * @param rawData The raw data to process
90
+ * @param dataType The type of data (e.g., 'text', 'image', 'audio')
91
+ * @param options Options for pipeline execution
92
+ * @returns A promise that resolves with the pipeline result
93
+ */
94
+ async processData(rawData, dataType, options = {}) {
95
+ const opts = { ...DEFAULT_SEQUENTIAL_PIPELINE_OPTIONS, ...options };
96
+ const result = {
97
+ success: true,
98
+ data: null,
99
+ stageResults: {}
100
+ };
101
+ try {
102
+ // Step 1: Process raw data with ISense augmentations
103
+ const senseResults = await augmentationPipeline.executeSensePipeline('processRawData', [rawData, dataType], { timeout: opts.timeout, stopOnError: opts.stopOnError });
104
+ // Get the first successful result
105
+ let senseResult = null;
106
+ for (const resultPromise of senseResults) {
107
+ const res = await resultPromise;
108
+ if (res.success) {
109
+ senseResult = res;
110
+ break;
111
+ }
112
+ }
113
+ if (!senseResult || !senseResult.success) {
114
+ return {
115
+ success: false,
116
+ data: null,
117
+ error: 'Failed to process raw data with ISense augmentations',
118
+ stageResults: { sense: senseResult || { success: false, data: null, error: 'No sense augmentations available' } }
119
+ };
120
+ }
121
+ result.stageResults.sense = senseResult;
122
+ // Step 2: Store data in BrainyData using IMemory augmentations
123
+ const memoryAugmentations = augmentationPipeline.getAugmentationsByType(AugmentationType.MEMORY);
124
+ if (memoryAugmentations.length === 0) {
125
+ return {
126
+ success: false,
127
+ data: null,
128
+ error: 'No memory augmentations available',
129
+ stageResults: result.stageResults
130
+ };
131
+ }
132
+ // Use the first available memory augmentation
133
+ const memoryAugmentation = memoryAugmentations[0];
134
+ // Generate a key for the data
135
+ const dataKey = `data_${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
136
+ // Store the data
137
+ const memoryResult = await memoryAugmentation.storeData(dataKey, {
138
+ rawData,
139
+ dataType,
140
+ nouns: senseResult.data.nouns,
141
+ verbs: senseResult.data.verbs,
142
+ timestamp: Date.now()
143
+ });
144
+ if (!memoryResult.success) {
145
+ return {
146
+ success: false,
147
+ data: null,
148
+ error: `Failed to store data: ${memoryResult.error}`,
149
+ stageResults: { ...result.stageResults, memory: memoryResult }
150
+ };
151
+ }
152
+ result.stageResults.memory = memoryResult;
153
+ // Step 3: Trigger ICognition augmentations to analyze the data
154
+ const cognitionResults = await augmentationPipeline.executeCognitionPipeline('reason', [`Analyze data with key ${dataKey}`, { dataKey }], { timeout: opts.timeout, stopOnError: opts.stopOnError });
155
+ // Get the first successful result
156
+ let cognitionResult = null;
157
+ for (const resultPromise of cognitionResults) {
158
+ const res = await resultPromise;
159
+ if (res.success) {
160
+ cognitionResult = res;
161
+ break;
162
+ }
163
+ }
164
+ if (cognitionResult) {
165
+ result.stageResults.cognition = cognitionResult;
166
+ }
167
+ // Step 4: Send notifications to IConduit augmentations
168
+ const conduitResults = await augmentationPipeline.executeConduitPipeline('writeData', [{ dataKey, nouns: senseResult.data.nouns, verbs: senseResult.data.verbs }], { timeout: opts.timeout, stopOnError: opts.stopOnError });
169
+ // Get the first successful result
170
+ let conduitResult = null;
171
+ for (const resultPromise of conduitResults) {
172
+ const res = await resultPromise;
173
+ if (res.success) {
174
+ conduitResult = res;
175
+ break;
176
+ }
177
+ }
178
+ if (conduitResult) {
179
+ result.stageResults.conduit = conduitResult;
180
+ }
181
+ // Step 5: Send notifications to IActivation augmentations
182
+ const activationResults = await augmentationPipeline.executeActivationPipeline('triggerAction', ['dataProcessed', { dataKey }], { timeout: opts.timeout, stopOnError: opts.stopOnError });
183
+ // Get the first successful result
184
+ let activationResult = null;
185
+ for (const resultPromise of activationResults) {
186
+ const res = await resultPromise;
187
+ if (res.success) {
188
+ activationResult = res;
189
+ break;
190
+ }
191
+ }
192
+ if (activationResult) {
193
+ result.stageResults.activation = activationResult;
194
+ }
195
+ // Step 6: Send notifications to IPerception augmentations
196
+ const perceptionResults = await augmentationPipeline.executePerceptionPipeline('interpret', [senseResult.data.nouns, senseResult.data.verbs, { dataKey }], { timeout: opts.timeout, stopOnError: opts.stopOnError });
197
+ // Get the first successful result
198
+ let perceptionResult = null;
199
+ for (const resultPromise of perceptionResults) {
200
+ const res = await resultPromise;
201
+ if (res.success) {
202
+ perceptionResult = res;
203
+ break;
204
+ }
205
+ }
206
+ if (perceptionResult) {
207
+ result.stageResults.perception = perceptionResult;
208
+ result.data = perceptionResult.data;
209
+ }
210
+ else {
211
+ // If no perception result, use the cognition result as the final data
212
+ result.data = cognitionResult ? cognitionResult.data : { dataKey };
213
+ }
214
+ return result;
215
+ }
216
+ catch (error) {
217
+ return {
218
+ success: false,
219
+ data: null,
220
+ error: `Pipeline execution failed: ${error}`,
221
+ stageResults: result.stageResults
222
+ };
223
+ }
224
+ }
225
+ /**
226
+ * Process WebSocket data through the sequential pipeline
227
+ *
228
+ * @param connection The WebSocket connection
229
+ * @param dataType The type of data (e.g., 'text', 'image', 'audio')
230
+ * @param options Options for pipeline execution
231
+ * @returns A function to handle incoming WebSocket messages
232
+ */
233
+ async createWebSocketHandler(connection, dataType, options = {}) {
234
+ // Ensure stream classes are initialized
235
+ await this.ensureStreamClassesInitialized();
236
+ // Create a transform stream for processing data
237
+ const transformStream = new TransformStream({
238
+ transform: async (chunk, controller) => {
239
+ try {
240
+ const data = typeof chunk === 'string' ? chunk : JSON.stringify(chunk);
241
+ const result = await this.processData(data, dataType, options);
242
+ if (result.success) {
243
+ controller.enqueue(result);
244
+ }
245
+ else {
246
+ console.warn('Pipeline processing failed:', result.error);
247
+ }
248
+ }
249
+ catch (error) {
250
+ console.error('Error in transform stream:', error);
251
+ }
252
+ }
253
+ });
254
+ // Create a writable stream that will be the sink for our data
255
+ const writableStream = new WritableStream({
256
+ write: async (result) => {
257
+ // Handle the processed result if needed
258
+ if (connection.send && typeof connection.send === 'function') {
259
+ try {
260
+ // Only send back results if the connection supports it
261
+ await connection.send(JSON.stringify(result));
262
+ }
263
+ catch (error) {
264
+ console.error('Error sending result back to WebSocket:', error);
265
+ }
266
+ }
267
+ }
268
+ });
269
+ // Connect the transform stream to the writable stream
270
+ transformStream.readable.pipeTo(writableStream).catch((error) => {
271
+ console.error('Error in pipeline stream:', error);
272
+ });
273
+ // Return a function that writes to the transform stream
274
+ return (data) => {
275
+ try {
276
+ // Write to the transform stream's writable side
277
+ const writer = transformStream.writable.getWriter();
278
+ writer.write(data).catch((error) => {
279
+ console.error('Error writing to stream:', error);
280
+ }).finally(() => {
281
+ writer.releaseLock();
282
+ });
283
+ }
284
+ catch (error) {
285
+ console.error('Error getting writer for transform stream:', error);
286
+ }
287
+ };
288
+ }
289
+ /**
290
+ * Set up a WebSocket connection to process data through the pipeline
291
+ *
292
+ * @param url The WebSocket URL to connect to
293
+ * @param dataType The type of data (e.g., 'text', 'image', 'audio')
294
+ * @param options Options for pipeline execution
295
+ * @returns A promise that resolves with the WebSocket connection and associated streams
296
+ */
297
+ async setupWebSocketPipeline(url, dataType, options = {}) {
298
+ // Ensure stream classes are initialized
299
+ await this.ensureStreamClassesInitialized();
300
+ // Get WebSocket-supporting augmentations
301
+ const webSocketAugmentations = augmentationPipeline.getWebSocketAugmentations();
302
+ if (webSocketAugmentations.length === 0) {
303
+ throw new Error('No WebSocket-supporting augmentations available');
304
+ }
305
+ // Use the first available WebSocket augmentation
306
+ const webSocketAugmentation = webSocketAugmentations[0];
307
+ // Connect to the WebSocket
308
+ const connection = await webSocketAugmentation.connectWebSocket(url);
309
+ // Create a readable stream from the WebSocket messages
310
+ const readableStream = new ReadableStream({
311
+ start: (controller) => {
312
+ // Define a message handler that writes to the stream
313
+ const messageHandler = (event) => {
314
+ try {
315
+ const data = typeof event.data === 'string'
316
+ ? event.data
317
+ : event.data instanceof Blob
318
+ ? new Promise(resolve => {
319
+ const reader = new FileReader();
320
+ reader.onload = () => resolve(reader.result);
321
+ reader.readAsText(event.data);
322
+ })
323
+ : JSON.stringify(event.data);
324
+ // Handle both string data and promises
325
+ if (data instanceof Promise) {
326
+ data.then(resolvedData => {
327
+ controller.enqueue(resolvedData);
328
+ }).catch((error) => {
329
+ console.error('Error processing blob data:', error);
330
+ });
331
+ }
332
+ else {
333
+ controller.enqueue(data);
334
+ }
335
+ }
336
+ catch (error) {
337
+ console.error('Error processing WebSocket message:', error);
338
+ }
339
+ };
340
+ // Create a wrapper function that adapts the event-based handler to the data-based callback
341
+ const messageHandlerWrapper = (data) => {
342
+ messageHandler({ data });
343
+ };
344
+ // Store both handlers for later cleanup
345
+ connection._streamMessageHandler = messageHandler;
346
+ connection._messageHandlerWrapper = messageHandlerWrapper;
347
+ webSocketAugmentation.onWebSocketMessage(connection.connectionId, messageHandlerWrapper).catch((error) => {
348
+ console.error('Error registering WebSocket message handler:', error);
349
+ controller.error(error);
350
+ });
351
+ },
352
+ cancel: () => {
353
+ // Clean up the message handler when the stream is cancelled
354
+ if (connection._messageHandlerWrapper) {
355
+ webSocketAugmentation.offWebSocketMessage(connection.connectionId, connection._messageHandlerWrapper).catch((error) => {
356
+ console.error('Error removing WebSocket message handler:', error);
357
+ });
358
+ delete connection._streamMessageHandler;
359
+ delete connection._messageHandlerWrapper;
360
+ }
361
+ }
362
+ });
363
+ // Create a handler for processing the data
364
+ const handlerPromise = this.createWebSocketHandler(connection, dataType, options);
365
+ // Create a writable stream that sends data to the WebSocket
366
+ const writableStream = new WritableStream({
367
+ write: async (chunk) => {
368
+ if (connection.send && typeof connection.send === 'function') {
369
+ try {
370
+ const data = typeof chunk === 'string' ? chunk : JSON.stringify(chunk);
371
+ await connection.send(data);
372
+ }
373
+ catch (error) {
374
+ console.error('Error sending data to WebSocket:', error);
375
+ throw error;
376
+ }
377
+ }
378
+ else {
379
+ throw new Error('WebSocket connection does not support sending data');
380
+ }
381
+ },
382
+ close: () => {
383
+ // Close the WebSocket connection when the stream is closed
384
+ if (connection.close && typeof connection.close === 'function') {
385
+ connection.close().catch((error) => {
386
+ console.error('Error closing WebSocket connection:', error);
387
+ });
388
+ }
389
+ }
390
+ });
391
+ // Pipe the readable stream through our processing pipeline
392
+ readableStream
393
+ .pipeThrough(new TransformStream({
394
+ transform: async (chunk, controller) => {
395
+ // Process each chunk through our handler
396
+ const handler = await handlerPromise;
397
+ handler(chunk);
398
+ // Pass through the original data
399
+ controller.enqueue(chunk);
400
+ }
401
+ }))
402
+ .pipeTo(new WritableStream({
403
+ write: () => { },
404
+ abort: (error) => {
405
+ console.error('Error in WebSocket pipeline:', error);
406
+ }
407
+ }));
408
+ // Attach the streams to the connection object for convenience
409
+ const enhancedConnection = connection;
410
+ enhancedConnection.readableStream = readableStream;
411
+ enhancedConnection.writableStream = writableStream;
412
+ return enhancedConnection;
413
+ }
414
+ }
415
+ // Create and export a default instance of the sequential pipeline
416
+ export const sequentialPipeline = new SequentialPipeline();
417
+ //# sourceMappingURL=sequentialPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequentialPipeline.js","sourceRoot":"","sources":["../src/sequentialPipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
package/dist/setup.js ADDED
@@ -0,0 +1,46 @@
1
+ /**
2
+ * CRITICAL: This file is imported for its side effects to patch the environment
3
+ * for TensorFlow.js before any other library code runs.
4
+ *
5
+ * It ensures that by the time TensorFlow.js is imported by any other
6
+ * module, the necessary compatibility fixes for the current Node.js
7
+ * environment are already in place.
8
+ *
9
+ * This file MUST be imported as the first import in unified.ts to prevent
10
+ * race conditions with TensorFlow.js initialization. Failure to do so will
11
+ * result in errors like "TextEncoder is not a constructor" when the package
12
+ * is used in Node.js environments.
13
+ *
14
+ * The package.json file marks this file as having side effects to prevent
15
+ * tree-shaking by bundlers, ensuring the patch is always applied.
16
+ */
17
+ // Get the appropriate global object for the current environment
18
+ const globalObj = (() => {
19
+ if (typeof globalThis !== 'undefined')
20
+ return globalThis;
21
+ if (typeof global !== 'undefined')
22
+ return global;
23
+ if (typeof self !== 'undefined')
24
+ return self;
25
+ return null; // No global object available
26
+ })();
27
+ // Define TextEncoder and TextDecoder globally to make sure they're available
28
+ // Now works across all environments: Node.js, serverless, and other server environments
29
+ if (globalObj) {
30
+ if (!globalObj.TextEncoder) {
31
+ globalObj.TextEncoder = TextEncoder;
32
+ }
33
+ if (!globalObj.TextDecoder) {
34
+ globalObj.TextDecoder = TextDecoder;
35
+ }
36
+ // Create a special global constructor that TensorFlow can use safely
37
+ ;
38
+ globalObj.__TextEncoder__ = TextEncoder;
39
+ globalObj.__TextDecoder__ = TextDecoder;
40
+ }
41
+ // Also import normally for ES modules environments
42
+ import { applyTensorFlowPatch } from './utils/textEncoding.js';
43
+ // Apply the TensorFlow.js platform patch
44
+ applyTensorFlowPatch();
45
+ console.log('Applied TensorFlow.js patch via ES modules in setup.ts');
46
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,gEAAgE;AAChE,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;IACtB,IAAI,OAAO,UAAU,KAAK,WAAW;QAAE,OAAO,UAAU,CAAA;IACxD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,IAAI,OAAO,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAC5C,OAAO,IAAI,CAAA,CAAC,6BAA6B;AAC3C,CAAC,CAAC,EAAE,CAAA;AAEJ,6EAA6E;AAC7E,wFAAwF;AACxF,IAAI,SAAS,EAAE,CAAC;IACd,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;IACrC,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;IACrC,CAAC;IAED,qEAAqE;IACrE,CAAC;IAAC,SAAiB,CAAC,eAAe,GAAG,WAAW,CAChD;IAAC,SAAiB,CAAC,eAAe,GAAG,WAAW,CAAA;AACnD,CAAC;AAED,mDAAmD;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE9D,yCAAyC;AACzC,oBAAoB,EAAE,CAAA;AACtB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA"}