@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,472 @@
1
+ /**
2
+ * Augmentation Event Pipeline
3
+ *
4
+ * This module provides a pipeline for managing and executing multiple augmentations
5
+ * of each type. It allows registering multiple augmentations and executing them
6
+ * in sequence or in parallel.
7
+ */
8
+ import { AugmentationType } from './types/augmentations.js';
9
+ import { isThreadingAvailable } from './utils/environment.js';
10
+ import { executeInThread } from './utils/workerUtils.js';
11
+ /**
12
+ * Execution mode for the pipeline
13
+ */
14
+ export var ExecutionMode;
15
+ (function (ExecutionMode) {
16
+ ExecutionMode["SEQUENTIAL"] = "sequential";
17
+ ExecutionMode["PARALLEL"] = "parallel";
18
+ ExecutionMode["FIRST_SUCCESS"] = "firstSuccess";
19
+ ExecutionMode["FIRST_RESULT"] = "firstResult";
20
+ ExecutionMode["THREADED"] = "threaded"; // Execute in separate threads when available
21
+ })(ExecutionMode || (ExecutionMode = {}));
22
+ /**
23
+ * Default pipeline options
24
+ */
25
+ const DEFAULT_PIPELINE_OPTIONS = {
26
+ mode: ExecutionMode.SEQUENTIAL,
27
+ timeout: 30000,
28
+ stopOnError: false,
29
+ forceThreading: false,
30
+ disableThreading: false
31
+ };
32
+ /**
33
+ * AugmentationPipeline class
34
+ *
35
+ * Manages multiple augmentations of each type and provides methods to execute them.
36
+ */
37
+ export class AugmentationPipeline {
38
+ constructor() {
39
+ this.registry = {
40
+ sense: [],
41
+ conduit: [],
42
+ cognition: [],
43
+ memory: [],
44
+ perception: [],
45
+ dialog: [],
46
+ activation: [],
47
+ webSocket: []
48
+ };
49
+ }
50
+ /**
51
+ * Register an augmentation with the pipeline
52
+ *
53
+ * @param augmentation The augmentation to register
54
+ * @returns The pipeline instance for chaining
55
+ */
56
+ register(augmentation) {
57
+ let registered = false;
58
+ // Check for specific augmentation types
59
+ if (this.isAugmentationType(augmentation, 'processRawData', 'listenToFeed')) {
60
+ this.registry.sense.push(augmentation);
61
+ registered = true;
62
+ }
63
+ else if (this.isAugmentationType(augmentation, 'establishConnection', 'readData', 'writeData', 'monitorStream')) {
64
+ this.registry.conduit.push(augmentation);
65
+ registered = true;
66
+ }
67
+ else if (this.isAugmentationType(augmentation, 'reason', 'infer', 'executeLogic')) {
68
+ this.registry.cognition.push(augmentation);
69
+ registered = true;
70
+ }
71
+ else if (this.isAugmentationType(augmentation, 'storeData', 'retrieveData', 'updateData', 'deleteData', 'listDataKeys')) {
72
+ this.registry.memory.push(augmentation);
73
+ registered = true;
74
+ }
75
+ else if (this.isAugmentationType(augmentation, 'interpret', 'organize', 'generateVisualization')) {
76
+ this.registry.perception.push(augmentation);
77
+ registered = true;
78
+ }
79
+ else if (this.isAugmentationType(augmentation, 'processUserInput', 'generateResponse', 'manageContext')) {
80
+ this.registry.dialog.push(augmentation);
81
+ registered = true;
82
+ }
83
+ else if (this.isAugmentationType(augmentation, 'triggerAction', 'generateOutput', 'interactExternal')) {
84
+ this.registry.activation.push(augmentation);
85
+ registered = true;
86
+ }
87
+ // Check if the augmentation supports WebSocket
88
+ if (this.isAugmentationType(augmentation, 'connectWebSocket', 'sendWebSocketMessage', 'onWebSocketMessage', 'closeWebSocket')) {
89
+ this.registry.webSocket.push(augmentation);
90
+ registered = true;
91
+ }
92
+ // If the augmentation wasn't registered as any known type, throw an error
93
+ if (!registered) {
94
+ throw new Error(`Unknown augmentation type: ${augmentation.name}`);
95
+ }
96
+ return this;
97
+ }
98
+ /**
99
+ * Unregister an augmentation from the pipeline
100
+ *
101
+ * @param augmentationName The name of the augmentation to unregister
102
+ * @returns The pipeline instance for chaining
103
+ */
104
+ unregister(augmentationName) {
105
+ let found = false;
106
+ // Remove from all registries
107
+ for (const type in this.registry) {
108
+ const typedRegistry = this.registry[type];
109
+ const index = typedRegistry.findIndex((aug) => aug.name === augmentationName);
110
+ if (index !== -1) {
111
+ typedRegistry.splice(index, 1);
112
+ found = true;
113
+ }
114
+ }
115
+ return this;
116
+ }
117
+ /**
118
+ * Initialize all registered augmentations
119
+ *
120
+ * @returns A promise that resolves when all augmentations are initialized
121
+ */
122
+ async initialize() {
123
+ const allAugmentations = this.getAllAugmentations();
124
+ await Promise.all(allAugmentations.map((augmentation) => augmentation.initialize().catch((error) => {
125
+ console.error(`Failed to initialize augmentation ${augmentation.name}:`, error);
126
+ })));
127
+ }
128
+ /**
129
+ * Shut down all registered augmentations
130
+ *
131
+ * @returns A promise that resolves when all augmentations are shut down
132
+ */
133
+ async shutDown() {
134
+ const allAugmentations = this.getAllAugmentations();
135
+ await Promise.all(allAugmentations.map((augmentation) => augmentation.shutDown().catch((error) => {
136
+ console.error(`Failed to shut down augmentation ${augmentation.name}:`, error);
137
+ })));
138
+ }
139
+ /**
140
+ * Execute a sense pipeline
141
+ *
142
+ * @param method The method to execute on each sense augmentation
143
+ * @param args The arguments to pass to the method
144
+ * @param options The pipeline execution options
145
+ * @returns A promise that resolves with the results from all augmentations
146
+ */
147
+ async executeSensePipeline(method, args, options = {}) {
148
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
149
+ return this.executeTypedPipeline(this.registry.sense, method, args, opts);
150
+ }
151
+ /**
152
+ * Execute a conduit pipeline
153
+ *
154
+ * @param method The method to execute on each conduit augmentation
155
+ * @param args The arguments to pass to the method
156
+ * @param options The pipeline execution options
157
+ * @returns A promise that resolves with the results from all augmentations
158
+ */
159
+ async executeConduitPipeline(method, args, options = {}) {
160
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
161
+ return this.executeTypedPipeline(this.registry.conduit, method, args, opts);
162
+ }
163
+ /**
164
+ * Execute a cognition pipeline
165
+ *
166
+ * @param method The method to execute on each cognition augmentation
167
+ * @param args The arguments to pass to the method
168
+ * @param options The pipeline execution options
169
+ * @returns A promise that resolves with the results from all augmentations
170
+ */
171
+ async executeCognitionPipeline(method, args, options = {}) {
172
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
173
+ return this.executeTypedPipeline(this.registry.cognition, method, args, opts);
174
+ }
175
+ /**
176
+ * Execute a memory pipeline
177
+ *
178
+ * @param method The method to execute on each memory augmentation
179
+ * @param args The arguments to pass to the method
180
+ * @param options The pipeline execution options
181
+ * @returns A promise that resolves with the results from all augmentations
182
+ */
183
+ async executeMemoryPipeline(method, args, options = {}) {
184
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
185
+ return this.executeTypedPipeline(this.registry.memory, method, args, opts);
186
+ }
187
+ /**
188
+ * Execute a perception pipeline
189
+ *
190
+ * @param method The method to execute on each perception augmentation
191
+ * @param args The arguments to pass to the method
192
+ * @param options The pipeline execution options
193
+ * @returns A promise that resolves with the results from all augmentations
194
+ */
195
+ async executePerceptionPipeline(method, args, options = {}) {
196
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
197
+ return this.executeTypedPipeline(this.registry.perception, method, args, opts);
198
+ }
199
+ /**
200
+ * Execute a dialog pipeline
201
+ *
202
+ * @param method The method to execute on each dialog augmentation
203
+ * @param args The arguments to pass to the method
204
+ * @param options The pipeline execution options
205
+ * @returns A promise that resolves with the results from all augmentations
206
+ */
207
+ async executeDialogPipeline(method, args, options = {}) {
208
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
209
+ return this.executeTypedPipeline(this.registry.dialog, method, args, opts);
210
+ }
211
+ /**
212
+ * Execute an activation pipeline
213
+ *
214
+ * @param method The method to execute on each activation augmentation
215
+ * @param args The arguments to pass to the method
216
+ * @param options The pipeline execution options
217
+ * @returns A promise that resolves with the results from all augmentations
218
+ */
219
+ async executeActivationPipeline(method, args, options = {}) {
220
+ const opts = { ...DEFAULT_PIPELINE_OPTIONS, ...options };
221
+ return this.executeTypedPipeline(this.registry.activation, method, args, opts);
222
+ }
223
+ /**
224
+ * Get all registered augmentations
225
+ *
226
+ * @returns An array of all registered augmentations
227
+ */
228
+ getAllAugmentations() {
229
+ // Create a Set to avoid duplicates (an augmentation might be in multiple registries)
230
+ const allAugmentations = new Set([
231
+ ...this.registry.sense,
232
+ ...this.registry.conduit,
233
+ ...this.registry.cognition,
234
+ ...this.registry.memory,
235
+ ...this.registry.perception,
236
+ ...this.registry.dialog,
237
+ ...this.registry.activation,
238
+ ...this.registry.webSocket
239
+ ]);
240
+ // Convert back to array
241
+ return Array.from(allAugmentations);
242
+ }
243
+ /**
244
+ * Get all augmentations of a specific type
245
+ *
246
+ * @param type The type of augmentation to get
247
+ * @returns An array of all augmentations of the specified type
248
+ */
249
+ getAugmentationsByType(type) {
250
+ switch (type) {
251
+ case AugmentationType.SENSE:
252
+ return [...this.registry.sense];
253
+ case AugmentationType.CONDUIT:
254
+ return [...this.registry.conduit];
255
+ case AugmentationType.COGNITION:
256
+ return [...this.registry.cognition];
257
+ case AugmentationType.MEMORY:
258
+ return [...this.registry.memory];
259
+ case AugmentationType.PERCEPTION:
260
+ return [...this.registry.perception];
261
+ case AugmentationType.DIALOG:
262
+ return [...this.registry.dialog];
263
+ case AugmentationType.ACTIVATION:
264
+ return [...this.registry.activation];
265
+ case AugmentationType.WEBSOCKET:
266
+ return [...this.registry.webSocket];
267
+ default:
268
+ return [];
269
+ }
270
+ }
271
+ /**
272
+ * Get all available augmentation types
273
+ *
274
+ * @returns An array of all augmentation types that have at least one registered augmentation
275
+ */
276
+ getAvailableAugmentationTypes() {
277
+ const availableTypes = [];
278
+ if (this.registry.sense.length > 0)
279
+ availableTypes.push(AugmentationType.SENSE);
280
+ if (this.registry.conduit.length > 0)
281
+ availableTypes.push(AugmentationType.CONDUIT);
282
+ if (this.registry.cognition.length > 0)
283
+ availableTypes.push(AugmentationType.COGNITION);
284
+ if (this.registry.memory.length > 0)
285
+ availableTypes.push(AugmentationType.MEMORY);
286
+ if (this.registry.perception.length > 0)
287
+ availableTypes.push(AugmentationType.PERCEPTION);
288
+ if (this.registry.dialog.length > 0)
289
+ availableTypes.push(AugmentationType.DIALOG);
290
+ if (this.registry.activation.length > 0)
291
+ availableTypes.push(AugmentationType.ACTIVATION);
292
+ if (this.registry.webSocket.length > 0)
293
+ availableTypes.push(AugmentationType.WEBSOCKET);
294
+ return availableTypes;
295
+ }
296
+ /**
297
+ * Get all WebSocket-supporting augmentations
298
+ *
299
+ * @returns An array of all augmentations that support WebSocket connections
300
+ */
301
+ getWebSocketAugmentations() {
302
+ return [...this.registry.webSocket];
303
+ }
304
+ /**
305
+ * Check if an augmentation is of a specific type
306
+ *
307
+ * @param augmentation The augmentation to check
308
+ * @param methods The methods that should be present on the augmentation
309
+ * @returns True if the augmentation is of the specified type
310
+ */
311
+ isAugmentationType(augmentation, ...methods) {
312
+ // First check that the augmentation has all the required base methods
313
+ const baseMethodsExist = ['initialize', 'shutDown', 'getStatus'].every((method) => typeof augmentation[method] === 'function');
314
+ if (!baseMethodsExist) {
315
+ return false;
316
+ }
317
+ // Then check that it has all the specific methods for this type
318
+ return methods.every((method) => typeof augmentation[method] === 'function');
319
+ }
320
+ /**
321
+ * Determines if threading should be used based on options and environment
322
+ *
323
+ * @param options The pipeline options
324
+ * @returns True if threading should be used, false otherwise
325
+ */
326
+ shouldUseThreading(options) {
327
+ // If threading is explicitly disabled, don't use it
328
+ if (options.disableThreading) {
329
+ return false;
330
+ }
331
+ // If threading is explicitly forced, use it if available
332
+ if (options.forceThreading) {
333
+ return isThreadingAvailable();
334
+ }
335
+ // If in THREADED mode, use threading if available
336
+ if (options.mode === ExecutionMode.THREADED) {
337
+ return isThreadingAvailable();
338
+ }
339
+ // Otherwise, don't use threading
340
+ return false;
341
+ }
342
+ /**
343
+ * Execute a pipeline for a specific augmentation type
344
+ *
345
+ * @param augmentations The augmentations to execute
346
+ * @param method The method to execute on each augmentation
347
+ * @param args The arguments to pass to the method
348
+ * @param options The pipeline execution options
349
+ * @returns A promise that resolves with the results from all augmentations
350
+ */
351
+ async executeTypedPipeline(augmentations, method, args, options) {
352
+ // Filter out disabled augmentations
353
+ const enabledAugmentations = augmentations.filter((aug) => aug.enabled !== false);
354
+ if (enabledAugmentations.length === 0) {
355
+ return [];
356
+ }
357
+ // Create a function to execute the method on an augmentation
358
+ const executeMethod = async (augmentation) => {
359
+ try {
360
+ // Create a timeout promise if a timeout is specified
361
+ const timeoutPromise = options.timeout
362
+ ? new Promise((_, reject) => {
363
+ setTimeout(() => {
364
+ reject(new Error(`Timeout executing ${String(method)} on ${augmentation.name}`));
365
+ }, options.timeout);
366
+ })
367
+ : null;
368
+ // Check if threading should be used
369
+ const useThreading = this.shouldUseThreading(options);
370
+ // Execute the method on the augmentation, using threading if appropriate
371
+ let methodPromise;
372
+ if (useThreading) {
373
+ // Execute in a separate thread
374
+ try {
375
+ // Create a function that can be serialized and executed in a worker
376
+ const workerFn = (...workerArgs) => {
377
+ // This function will be stringified and executed in the worker
378
+ // It needs to be self-contained
379
+ const augFn = augmentation[method];
380
+ return augFn.apply(augmentation, workerArgs);
381
+ };
382
+ methodPromise = executeInThread(workerFn.toString(), args);
383
+ }
384
+ catch (threadError) {
385
+ console.warn(`Failed to execute in thread, falling back to main thread: ${threadError}`);
386
+ // Fall back to executing in the main thread
387
+ methodPromise = Promise.resolve(augmentation[method](...args));
388
+ }
389
+ }
390
+ else {
391
+ // Execute in the main thread
392
+ methodPromise = Promise.resolve(augmentation[method](...args));
393
+ }
394
+ // Race the method promise against the timeout promise if a timeout is specified
395
+ const result = timeoutPromise
396
+ ? await Promise.race([methodPromise, timeoutPromise])
397
+ : await methodPromise;
398
+ return result;
399
+ }
400
+ catch (error) {
401
+ console.error(`Error executing ${String(method)} on ${augmentation.name}:`, error);
402
+ return {
403
+ success: false,
404
+ data: null,
405
+ error: error instanceof Error ? error.message : String(error)
406
+ };
407
+ }
408
+ };
409
+ // Execute the pipeline based on the specified mode
410
+ switch (options.mode) {
411
+ case ExecutionMode.PARALLEL:
412
+ // Execute all augmentations in parallel
413
+ return enabledAugmentations.map(executeMethod);
414
+ case ExecutionMode.THREADED:
415
+ // Execute all augmentations in parallel with threading enabled
416
+ // Force threading for this mode
417
+ const threadedOptions = { ...options, forceThreading: true };
418
+ // Create a new executeMethod function that uses the threaded options
419
+ const executeMethodThreaded = async (augmentation) => {
420
+ // Save the original options
421
+ const originalOptions = options;
422
+ // Set the options to the threaded options
423
+ options = threadedOptions;
424
+ // Execute the method
425
+ const result = await executeMethod(augmentation);
426
+ // Restore the original options
427
+ options = originalOptions;
428
+ return result;
429
+ };
430
+ return enabledAugmentations.map(executeMethodThreaded);
431
+ case ExecutionMode.FIRST_SUCCESS:
432
+ // Execute augmentations sequentially until one succeeds
433
+ for (const augmentation of enabledAugmentations) {
434
+ const resultPromise = executeMethod(augmentation);
435
+ const result = await resultPromise;
436
+ if (result.success) {
437
+ return [resultPromise];
438
+ }
439
+ }
440
+ return [];
441
+ case ExecutionMode.FIRST_RESULT:
442
+ // Execute augmentations sequentially until one returns a result
443
+ for (const augmentation of enabledAugmentations) {
444
+ const resultPromise = executeMethod(augmentation);
445
+ const result = await resultPromise;
446
+ if (result.success && result.data) {
447
+ return [resultPromise];
448
+ }
449
+ }
450
+ return [];
451
+ case ExecutionMode.SEQUENTIAL:
452
+ default:
453
+ // Execute augmentations sequentially
454
+ const results = [];
455
+ for (const augmentation of enabledAugmentations) {
456
+ const resultPromise = executeMethod(augmentation);
457
+ results.push(resultPromise);
458
+ // Check if we need to stop on error
459
+ if (options.stopOnError) {
460
+ const result = await resultPromise;
461
+ if (!result.success) {
462
+ break;
463
+ }
464
+ }
465
+ }
466
+ return results;
467
+ }
468
+ }
469
+ }
470
+ // Create and export a default instance of the pipeline
471
+ export const augmentationPipeline = new AugmentationPipeline();
472
+ //# sourceMappingURL=augmentationPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentationPipeline.js","sourceRoot":"","sources":["../src/augmentationPipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentationRegistry.d.ts","sourceRoot":"","sources":["../src/augmentationRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAM1E;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAAa,EAAO,CAAA;AAEzD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAUhF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,gBAAgB,CAAC,EAAE,SAAS,GAC3B,SAAS,CAgBX;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAS9E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAyB9E"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Augmentation Registry
3
+ *
4
+ * This module provides a registry for augmentations that are loaded at build time.
5
+ * It replaces the dynamic loading mechanism in pluginLoader.ts.
6
+ */
7
+ import { AugmentationType } from './types/augmentations.js';
8
+ // Forward declaration of the pipeline instance to avoid circular dependency
9
+ // The actual pipeline will be provided when initializeAugmentationPipeline is called
10
+ let defaultPipeline = null;
11
+ /**
12
+ * Sets the default pipeline instance
13
+ * This function should be called from pipeline.ts after the pipeline is created
14
+ */
15
+ export function setDefaultPipeline(pipeline) {
16
+ defaultPipeline = pipeline;
17
+ }
18
+ /**
19
+ * Registry of all available augmentations
20
+ */
21
+ export const availableAugmentations = [];
22
+ /**
23
+ * Registers an augmentation with the registry
24
+ *
25
+ * @param augmentation The augmentation to register
26
+ * @returns The augmentation that was registered
27
+ */
28
+ export function registerAugmentation(augmentation) {
29
+ // Set enabled to true by default if not specified
30
+ if (augmentation.enabled === undefined) {
31
+ augmentation.enabled = true;
32
+ }
33
+ // Add to the registry
34
+ availableAugmentations.push(augmentation);
35
+ return augmentation;
36
+ }
37
+ /**
38
+ * Initializes the augmentation pipeline with all registered augmentations
39
+ *
40
+ * @param pipeline Optional custom pipeline to use instead of the default
41
+ * @returns The pipeline that was initialized
42
+ * @throws Error if no pipeline is provided and the default pipeline hasn't been set
43
+ */
44
+ export function initializeAugmentationPipeline(pipelineInstance) {
45
+ // Use the provided pipeline or fall back to the default
46
+ const pipeline = pipelineInstance || defaultPipeline;
47
+ if (!pipeline) {
48
+ throw new Error('No pipeline provided and default pipeline not set. Call setDefaultPipeline first.');
49
+ }
50
+ // Register all augmentations with the pipeline
51
+ for (const augmentation of availableAugmentations) {
52
+ if (augmentation.enabled) {
53
+ pipeline.register(augmentation);
54
+ }
55
+ }
56
+ return pipeline;
57
+ }
58
+ /**
59
+ * Enables or disables an augmentation by name
60
+ *
61
+ * @param name The name of the augmentation to enable/disable
62
+ * @param enabled Whether to enable or disable the augmentation
63
+ * @returns True if the augmentation was found and updated, false otherwise
64
+ */
65
+ export function setAugmentationEnabled(name, enabled) {
66
+ const augmentation = availableAugmentations.find(aug => aug.name === name);
67
+ if (augmentation) {
68
+ augmentation.enabled = enabled;
69
+ return true;
70
+ }
71
+ return false;
72
+ }
73
+ /**
74
+ * Gets all augmentations of a specific type
75
+ *
76
+ * @param type The type of augmentation to get
77
+ * @returns An array of all augmentations of the specified type
78
+ */
79
+ export function getAugmentationsByType(type) {
80
+ return availableAugmentations.filter(aug => {
81
+ // Check if the augmentation is of the specified type
82
+ // This is a simplified check and may need to be updated based on how types are determined
83
+ switch (type) {
84
+ case AugmentationType.SENSE:
85
+ return 'processRawData' in aug && 'listenToFeed' in aug;
86
+ case AugmentationType.CONDUIT:
87
+ return 'establishConnection' in aug && 'readData' in aug && 'writeData' in aug;
88
+ case AugmentationType.COGNITION:
89
+ return 'reason' in aug && 'infer' in aug && 'executeLogic' in aug;
90
+ case AugmentationType.MEMORY:
91
+ return 'storeData' in aug && 'retrieveData' in aug && 'updateData' in aug;
92
+ case AugmentationType.PERCEPTION:
93
+ return 'interpret' in aug && 'organize' in aug && 'generateVisualization' in aug;
94
+ case AugmentationType.DIALOG:
95
+ return 'processUserInput' in aug && 'generateResponse' in aug && 'manageContext' in aug;
96
+ case AugmentationType.ACTIVATION:
97
+ return 'triggerAction' in aug && 'generateOutput' in aug && 'interactExternal' in aug;
98
+ case AugmentationType.WEBSOCKET:
99
+ return 'connectWebSocket' in aug && 'sendWebSocketMessage' in aug && 'onWebSocketMessage' in aug;
100
+ default:
101
+ return false;
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=augmentationRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentationRegistry.js","sourceRoot":"","sources":["../src/augmentationRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentationRegistryLoader.d.ts","sourceRoot":"","sources":["../src/augmentationRegistryLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAUD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,aAAa,EAAE,aAAa,EAAE,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,sBAAsB,CAAC,CA6DjC;AA0DD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE;IACxD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,iCAAiC,CAAC;CAC7C;;;;EAOA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE;IAC9D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,iCAAiC,CAAC;CAC7C;;;;EAOA"}