@soulcraft/brainy 3.0.0 → 3.1.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 (270) hide show
  1. package/CHANGELOG.md +53 -3
  2. package/README.md +427 -111
  3. package/bin/brainy.js +340 -62
  4. package/dist/api/ConfigAPI.d.ts +67 -0
  5. package/dist/api/ConfigAPI.js +166 -0
  6. package/dist/api/DataAPI.d.ts +123 -0
  7. package/dist/api/DataAPI.js +391 -0
  8. package/dist/api/SecurityAPI.d.ts +50 -0
  9. package/dist/api/SecurityAPI.js +139 -0
  10. package/dist/api/UniversalImportAPI.d.ts +134 -0
  11. package/dist/api/UniversalImportAPI.js +615 -0
  12. package/dist/augmentationManager.js +12 -7
  13. package/dist/augmentationPipeline.d.ts +0 -61
  14. package/dist/augmentationPipeline.js +0 -87
  15. package/dist/augmentationRegistry.d.ts +1 -1
  16. package/dist/augmentationRegistry.js +1 -1
  17. package/dist/augmentations/apiServerAugmentation.d.ts +27 -1
  18. package/dist/augmentations/apiServerAugmentation.js +290 -9
  19. package/dist/augmentations/auditLogAugmentation.d.ts +109 -0
  20. package/dist/augmentations/auditLogAugmentation.js +358 -0
  21. package/dist/augmentations/batchProcessingAugmentation.d.ts +3 -2
  22. package/dist/augmentations/batchProcessingAugmentation.js +123 -22
  23. package/dist/augmentations/brainyAugmentation.d.ts +142 -8
  24. package/dist/augmentations/brainyAugmentation.js +179 -2
  25. package/dist/augmentations/cacheAugmentation.d.ts +8 -5
  26. package/dist/augmentations/cacheAugmentation.js +116 -17
  27. package/dist/augmentations/conduitAugmentations.d.ts +2 -2
  28. package/dist/augmentations/conduitAugmentations.js +2 -2
  29. package/dist/augmentations/configResolver.d.ts +122 -0
  30. package/dist/augmentations/configResolver.js +440 -0
  31. package/dist/augmentations/connectionPoolAugmentation.d.ts +3 -1
  32. package/dist/augmentations/connectionPoolAugmentation.js +37 -12
  33. package/dist/augmentations/defaultAugmentations.d.ts +14 -10
  34. package/dist/augmentations/defaultAugmentations.js +16 -11
  35. package/dist/augmentations/discovery/catalogDiscovery.d.ts +142 -0
  36. package/dist/augmentations/discovery/catalogDiscovery.js +249 -0
  37. package/dist/augmentations/discovery/localDiscovery.d.ts +84 -0
  38. package/dist/augmentations/discovery/localDiscovery.js +246 -0
  39. package/dist/augmentations/discovery/runtimeLoader.d.ts +97 -0
  40. package/dist/augmentations/discovery/runtimeLoader.js +337 -0
  41. package/dist/augmentations/discovery.d.ts +152 -0
  42. package/dist/augmentations/discovery.js +441 -0
  43. package/dist/augmentations/display/cache.d.ts +130 -0
  44. package/dist/augmentations/display/cache.js +319 -0
  45. package/dist/augmentations/display/fieldPatterns.d.ts +52 -0
  46. package/dist/augmentations/display/fieldPatterns.js +393 -0
  47. package/dist/augmentations/display/iconMappings.d.ts +57 -0
  48. package/dist/augmentations/display/iconMappings.js +68 -0
  49. package/dist/augmentations/display/intelligentComputation.d.ts +109 -0
  50. package/dist/augmentations/display/intelligentComputation.js +462 -0
  51. package/dist/augmentations/display/types.d.ts +203 -0
  52. package/dist/augmentations/display/types.js +7 -0
  53. package/dist/augmentations/entityRegistryAugmentation.d.ts +3 -1
  54. package/dist/augmentations/entityRegistryAugmentation.js +5 -1
  55. package/dist/augmentations/indexAugmentation.d.ts +5 -3
  56. package/dist/augmentations/indexAugmentation.js +5 -2
  57. package/dist/augmentations/intelligentVerbScoringAugmentation.d.ts +24 -7
  58. package/dist/augmentations/intelligentVerbScoringAugmentation.js +111 -27
  59. package/dist/augmentations/manifest.d.ts +176 -0
  60. package/dist/augmentations/manifest.js +8 -0
  61. package/dist/augmentations/marketplace/AugmentationMarketplace.d.ts +168 -0
  62. package/dist/augmentations/marketplace/AugmentationMarketplace.js +329 -0
  63. package/dist/augmentations/marketplace/cli.d.ts +47 -0
  64. package/dist/augmentations/marketplace/cli.js +265 -0
  65. package/dist/augmentations/metricsAugmentation.d.ts +3 -3
  66. package/dist/augmentations/metricsAugmentation.js +2 -2
  67. package/dist/augmentations/monitoringAugmentation.d.ts +3 -3
  68. package/dist/augmentations/monitoringAugmentation.js +2 -2
  69. package/dist/augmentations/neuralImport.d.ts +1 -1
  70. package/dist/augmentations/neuralImport.js +4 -4
  71. package/dist/augmentations/rateLimitAugmentation.d.ts +82 -0
  72. package/dist/augmentations/rateLimitAugmentation.js +321 -0
  73. package/dist/augmentations/requestDeduplicatorAugmentation.d.ts +2 -2
  74. package/dist/augmentations/requestDeduplicatorAugmentation.js +1 -1
  75. package/dist/augmentations/storageAugmentation.d.ts +1 -1
  76. package/dist/augmentations/storageAugmentation.js +2 -2
  77. package/dist/augmentations/storageAugmentations.d.ts +37 -8
  78. package/dist/augmentations/storageAugmentations.js +204 -15
  79. package/dist/augmentations/synapseAugmentation.d.ts +1 -1
  80. package/dist/augmentations/synapseAugmentation.js +35 -16
  81. package/dist/augmentations/typeMatching/brainyTypes.d.ts +83 -0
  82. package/dist/augmentations/typeMatching/brainyTypes.js +425 -0
  83. package/dist/augmentations/typeMatching/intelligentTypeMatcher.d.ts +39 -59
  84. package/dist/augmentations/typeMatching/intelligentTypeMatcher.js +103 -389
  85. package/dist/augmentations/universalDisplayAugmentation.d.ts +191 -0
  86. package/dist/augmentations/universalDisplayAugmentation.js +371 -0
  87. package/dist/brainy-unified.d.ts +106 -0
  88. package/dist/brainy-unified.js +327 -0
  89. package/dist/brainy.d.ts +277 -0
  90. package/dist/brainy.js +1241 -0
  91. package/dist/brainyData.d.ts +56 -111
  92. package/dist/brainyData.js +912 -756
  93. package/dist/brainyDataV3.d.ts +186 -0
  94. package/dist/brainyDataV3.js +337 -0
  95. package/dist/config/distributedPresets-new.d.ts +118 -0
  96. package/dist/config/distributedPresets-new.js +318 -0
  97. package/dist/config/distributedPresets.d.ts +118 -0
  98. package/dist/config/distributedPresets.js +318 -0
  99. package/dist/config/extensibleConfig.d.ts +99 -0
  100. package/dist/config/extensibleConfig.js +268 -0
  101. package/dist/config/index.d.ts +17 -0
  102. package/dist/config/index.js +35 -0
  103. package/dist/config/modelAutoConfig.d.ts +32 -0
  104. package/dist/config/modelAutoConfig.js +139 -0
  105. package/dist/config/modelPrecisionManager.d.ts +42 -0
  106. package/dist/config/modelPrecisionManager.js +98 -0
  107. package/dist/config/sharedConfigManager.d.ts +67 -0
  108. package/dist/config/sharedConfigManager.js +215 -0
  109. package/dist/config/storageAutoConfig.d.ts +41 -0
  110. package/dist/config/storageAutoConfig.js +328 -0
  111. package/dist/config/zeroConfig.d.ts +68 -0
  112. package/dist/config/zeroConfig.js +301 -0
  113. package/dist/cortex/backupRestore.d.ts +2 -2
  114. package/dist/cortex/backupRestore.js +85 -27
  115. package/dist/cortex/healthCheck.d.ts +2 -2
  116. package/dist/cortex/neuralImport.d.ts +2 -2
  117. package/dist/cortex/neuralImport.js +18 -13
  118. package/dist/cortex/performanceMonitor.d.ts +2 -2
  119. package/dist/critical/model-guardian.d.ts +4 -0
  120. package/dist/critical/model-guardian.js +31 -11
  121. package/dist/demo.d.ts +4 -4
  122. package/dist/demo.js +7 -7
  123. package/dist/distributed/cacheSync.d.ts +112 -0
  124. package/dist/distributed/cacheSync.js +265 -0
  125. package/dist/distributed/coordinator.d.ts +193 -0
  126. package/dist/distributed/coordinator.js +548 -0
  127. package/dist/distributed/httpTransport.d.ts +120 -0
  128. package/dist/distributed/httpTransport.js +446 -0
  129. package/dist/distributed/index.d.ts +8 -0
  130. package/dist/distributed/index.js +5 -0
  131. package/dist/distributed/networkTransport.d.ts +132 -0
  132. package/dist/distributed/networkTransport.js +633 -0
  133. package/dist/distributed/queryPlanner.d.ts +104 -0
  134. package/dist/distributed/queryPlanner.js +327 -0
  135. package/dist/distributed/readWriteSeparation.d.ts +134 -0
  136. package/dist/distributed/readWriteSeparation.js +350 -0
  137. package/dist/distributed/shardManager.d.ts +114 -0
  138. package/dist/distributed/shardManager.js +357 -0
  139. package/dist/distributed/shardMigration.d.ts +110 -0
  140. package/dist/distributed/shardMigration.js +289 -0
  141. package/dist/distributed/storageDiscovery.d.ts +160 -0
  142. package/dist/distributed/storageDiscovery.js +551 -0
  143. package/dist/embeddings/CachedEmbeddings.d.ts +40 -0
  144. package/dist/embeddings/CachedEmbeddings.js +146 -0
  145. package/dist/embeddings/EmbeddingManager.d.ts +102 -0
  146. package/dist/embeddings/EmbeddingManager.js +291 -0
  147. package/dist/embeddings/SingletonModelManager.d.ts +95 -0
  148. package/dist/embeddings/SingletonModelManager.js +220 -0
  149. package/dist/embeddings/index.d.ts +12 -0
  150. package/dist/embeddings/index.js +16 -0
  151. package/dist/embeddings/lightweight-embedder.d.ts +0 -1
  152. package/dist/embeddings/lightweight-embedder.js +4 -12
  153. package/dist/embeddings/model-manager.d.ts +11 -0
  154. package/dist/embeddings/model-manager.js +43 -7
  155. package/dist/embeddings/universal-memory-manager.d.ts +1 -1
  156. package/dist/embeddings/universal-memory-manager.js +27 -67
  157. package/dist/embeddings/worker-embedding.js +4 -8
  158. package/dist/errors/brainyError.d.ts +5 -1
  159. package/dist/errors/brainyError.js +12 -0
  160. package/dist/examples/basicUsage.js +7 -4
  161. package/dist/graph/graphAdjacencyIndex.d.ts +96 -0
  162. package/dist/graph/graphAdjacencyIndex.js +288 -0
  163. package/dist/graph/pathfinding.js +4 -2
  164. package/dist/hnsw/scaledHNSWSystem.js +11 -2
  165. package/dist/importManager.js +8 -5
  166. package/dist/index.d.ts +17 -22
  167. package/dist/index.js +37 -23
  168. package/dist/mcp/brainyMCPAdapter.d.ts +4 -4
  169. package/dist/mcp/brainyMCPAdapter.js +5 -5
  170. package/dist/mcp/brainyMCPService.d.ts +3 -3
  171. package/dist/mcp/brainyMCPService.js +3 -11
  172. package/dist/mcp/mcpAugmentationToolset.js +20 -30
  173. package/dist/neural/embeddedPatterns.d.ts +1 -1
  174. package/dist/neural/embeddedPatterns.js +2 -2
  175. package/dist/neural/entityExtractor.d.ts +65 -0
  176. package/dist/neural/entityExtractor.js +316 -0
  177. package/dist/neural/improvedNeuralAPI.d.ts +357 -0
  178. package/dist/neural/improvedNeuralAPI.js +2628 -0
  179. package/dist/neural/naturalLanguageProcessor.d.ts +155 -10
  180. package/dist/neural/naturalLanguageProcessor.js +941 -66
  181. package/dist/neural/naturalLanguageProcessorStatic.d.ts +2 -2
  182. package/dist/neural/naturalLanguageProcessorStatic.js +3 -3
  183. package/dist/neural/neuralAPI.js +8 -2
  184. package/dist/neural/patternLibrary.d.ts +57 -3
  185. package/dist/neural/patternLibrary.js +348 -13
  186. package/dist/neural/staticPatternMatcher.d.ts +2 -2
  187. package/dist/neural/staticPatternMatcher.js +2 -2
  188. package/dist/neural/types.d.ts +287 -0
  189. package/dist/neural/types.js +24 -0
  190. package/dist/shared/default-augmentations.d.ts +3 -3
  191. package/dist/shared/default-augmentations.js +5 -5
  192. package/dist/storage/adapters/baseStorageAdapter.d.ts +42 -0
  193. package/dist/storage/adapters/fileSystemStorage.d.ts +26 -2
  194. package/dist/storage/adapters/fileSystemStorage.js +218 -15
  195. package/dist/storage/adapters/memoryStorage.d.ts +4 -4
  196. package/dist/storage/adapters/memoryStorage.js +17 -12
  197. package/dist/storage/adapters/opfsStorage.d.ts +2 -2
  198. package/dist/storage/adapters/opfsStorage.js +2 -2
  199. package/dist/storage/adapters/s3CompatibleStorage.d.ts +2 -2
  200. package/dist/storage/adapters/s3CompatibleStorage.js +2 -2
  201. package/dist/storage/backwardCompatibility.d.ts +10 -78
  202. package/dist/storage/backwardCompatibility.js +17 -132
  203. package/dist/storage/baseStorage.d.ts +18 -2
  204. package/dist/storage/baseStorage.js +74 -3
  205. package/dist/storage/cacheManager.js +2 -2
  206. package/dist/storage/readOnlyOptimizations.js +8 -3
  207. package/dist/streaming/pipeline.d.ts +154 -0
  208. package/dist/streaming/pipeline.js +551 -0
  209. package/dist/triple/TripleIntelligence.d.ts +25 -110
  210. package/dist/triple/TripleIntelligence.js +4 -574
  211. package/dist/triple/TripleIntelligenceSystem.d.ts +159 -0
  212. package/dist/triple/TripleIntelligenceSystem.js +519 -0
  213. package/dist/types/apiTypes.d.ts +278 -0
  214. package/dist/types/apiTypes.js +33 -0
  215. package/dist/types/brainy.types.d.ts +308 -0
  216. package/dist/types/brainy.types.js +8 -0
  217. package/dist/types/brainyDataInterface.d.ts +5 -8
  218. package/dist/types/brainyDataInterface.js +2 -2
  219. package/dist/types/graphTypes.js +2 -2
  220. package/dist/universal/crypto.d.ts +11 -1
  221. package/dist/universal/crypto.js +24 -93
  222. package/dist/universal/events.d.ts +3 -2
  223. package/dist/universal/events.js +6 -75
  224. package/dist/universal/fs.d.ts +2 -3
  225. package/dist/universal/fs.js +5 -211
  226. package/dist/universal/path.d.ts +3 -2
  227. package/dist/universal/path.js +22 -78
  228. package/dist/universal/uuid.d.ts +1 -1
  229. package/dist/universal/uuid.js +1 -1
  230. package/dist/utils/brainyTypes.d.ts +217 -0
  231. package/dist/utils/brainyTypes.js +261 -0
  232. package/dist/utils/cacheAutoConfig.d.ts +3 -3
  233. package/dist/utils/embedding.d.ts +9 -4
  234. package/dist/utils/embedding.js +89 -26
  235. package/dist/utils/enhancedLogger.d.ts +104 -0
  236. package/dist/utils/enhancedLogger.js +232 -0
  237. package/dist/utils/hybridModelManager.d.ts +19 -28
  238. package/dist/utils/hybridModelManager.js +36 -200
  239. package/dist/utils/index.d.ts +1 -1
  240. package/dist/utils/index.js +1 -1
  241. package/dist/utils/intelligentTypeMapper.d.ts +60 -0
  242. package/dist/utils/intelligentTypeMapper.js +349 -0
  243. package/dist/utils/metadataIndex.d.ts +118 -1
  244. package/dist/utils/metadataIndex.js +539 -16
  245. package/dist/utils/nodeVersionCheck.d.ts +24 -0
  246. package/dist/utils/nodeVersionCheck.js +65 -0
  247. package/dist/utils/paramValidation.d.ts +39 -0
  248. package/dist/utils/paramValidation.js +192 -0
  249. package/dist/utils/rateLimiter.d.ts +160 -0
  250. package/dist/utils/rateLimiter.js +271 -0
  251. package/dist/utils/statistics.d.ts +4 -4
  252. package/dist/utils/statistics.js +3 -3
  253. package/dist/utils/structuredLogger.d.ts +146 -0
  254. package/dist/utils/structuredLogger.js +394 -0
  255. package/dist/utils/textEncoding.js +2 -1
  256. package/dist/utils/typeValidation.d.ts +59 -0
  257. package/dist/utils/typeValidation.js +374 -0
  258. package/dist/utils/version.js +19 -3
  259. package/package.json +15 -17
  260. package/scripts/download-models.cjs +94 -20
  261. package/dist/augmentations/walAugmentation.d.ts +0 -109
  262. package/dist/augmentations/walAugmentation.js +0 -516
  263. package/dist/browserFramework.d.ts +0 -15
  264. package/dist/browserFramework.js +0 -31
  265. package/dist/browserFramework.minimal.d.ts +0 -14
  266. package/dist/browserFramework.minimal.js +0 -31
  267. package/dist/chat/BrainyChat.d.ts +0 -121
  268. package/dist/chat/BrainyChat.js +0 -396
  269. package/dist/chat/ChatCLI.d.ts +0 -61
  270. package/dist/chat/ChatCLI.js +0 -351
@@ -433,7 +433,7 @@ export class FileSystemStorage extends BaseStorage {
433
433
  /**
434
434
  * Save noun metadata to storage
435
435
  */
436
- async saveNounMetadata(id, metadata) {
436
+ async saveNounMetadata_internal(id, metadata) {
437
437
  await this.ensureInitialized();
438
438
  const filePath = path.join(this.nounMetadataDir, `${id}.json`);
439
439
  await fs.promises.writeFile(filePath, JSON.stringify(metadata, null, 2));
@@ -458,7 +458,7 @@ export class FileSystemStorage extends BaseStorage {
458
458
  /**
459
459
  * Save verb metadata to storage
460
460
  */
461
- async saveVerbMetadata(id, metadata) {
461
+ async saveVerbMetadata_internal(id, metadata) {
462
462
  await this.ensureInitialized();
463
463
  const filePath = path.join(this.verbMetadataDir, `${id}.json`);
464
464
  await fs.promises.writeFile(filePath, JSON.stringify(metadata, null, 2));
@@ -770,28 +770,178 @@ export class FileSystemStorage extends BaseStorage {
770
770
  * Get verbs by source
771
771
  */
772
772
  async getVerbsBySource_internal(sourceId) {
773
- // This method is deprecated and would require loading metadata for each edge
774
- // For now, return empty array since this is not efficiently implementable with new storage pattern
775
- console.warn('getVerbsBySource_internal is deprecated and not efficiently supported in new storage pattern');
776
- return [];
773
+ console.log(`[DEBUG] getVerbsBySource_internal called for sourceId: ${sourceId}`);
774
+ // Use the working pagination method with source filter
775
+ const result = await this.getVerbsWithPagination({
776
+ limit: 10000,
777
+ filter: { sourceId: [sourceId] }
778
+ });
779
+ console.log(`[DEBUG] Found ${result.items.length} verbs for source ${sourceId}`);
780
+ return result.items;
777
781
  }
778
782
  /**
779
783
  * Get verbs by target
780
784
  */
781
785
  async getVerbsByTarget_internal(targetId) {
782
- // This method is deprecated and would require loading metadata for each edge
783
- // For now, return empty array since this is not efficiently implementable with new storage pattern
784
- console.warn('getVerbsByTarget_internal is deprecated and not efficiently supported in new storage pattern');
785
- return [];
786
+ console.log(`[DEBUG] getVerbsByTarget_internal called for targetId: ${targetId}`);
787
+ // Use the working pagination method with target filter
788
+ const result = await this.getVerbsWithPagination({
789
+ limit: 10000,
790
+ filter: { targetId: [targetId] }
791
+ });
792
+ console.log(`[DEBUG] Found ${result.items.length} verbs for target ${targetId}`);
793
+ return result.items;
786
794
  }
787
795
  /**
788
796
  * Get verbs by type
789
797
  */
790
798
  async getVerbsByType_internal(type) {
791
- // This method is deprecated and would require loading metadata for each edge
792
- // For now, return empty array since this is not efficiently implementable with new storage pattern
793
- console.warn('getVerbsByType_internal is deprecated and not efficiently supported in new storage pattern');
794
- return [];
799
+ console.log(`[DEBUG] getVerbsByType_internal called for type: ${type}`);
800
+ // Use the working pagination method with type filter
801
+ const result = await this.getVerbsWithPagination({
802
+ limit: 10000,
803
+ filter: { verbType: [type] }
804
+ });
805
+ console.log(`[DEBUG] Found ${result.items.length} verbs for type ${type}`);
806
+ return result.items;
807
+ }
808
+ /**
809
+ * Get verbs with pagination
810
+ * This method reads verb files from the filesystem and returns them with pagination
811
+ */
812
+ async getVerbsWithPagination(options = {}) {
813
+ await this.ensureInitialized();
814
+ const limit = options.limit || 100;
815
+ const startIndex = options.cursor ? parseInt(options.cursor, 10) : 0;
816
+ try {
817
+ // List all verb files in the verbs directory
818
+ // Note: For very large directories (millions of files), this could be memory-intensive
819
+ // Future optimization: Use fs.opendir() for streaming directory reads
820
+ const files = await fs.promises.readdir(this.verbsDir);
821
+ const verbFiles = files.filter((f) => f.endsWith('.json'));
822
+ // Sort files for consistent ordering
823
+ verbFiles.sort();
824
+ // Calculate pagination
825
+ const totalCount = verbFiles.length;
826
+ const endIndex = Math.min(startIndex + limit, totalCount);
827
+ const hasMore = endIndex < totalCount;
828
+ // Safety check for large datasets
829
+ if (totalCount > 100000) {
830
+ console.warn(`Large verb dataset detected (${totalCount} verbs). Consider using a database for better performance.`);
831
+ }
832
+ // Load the requested page of verbs
833
+ const verbs = [];
834
+ for (let i = startIndex; i < endIndex; i++) {
835
+ const file = verbFiles[i];
836
+ const id = file.replace('.json', '');
837
+ try {
838
+ // Read the verb data (HNSWVerb stored as edge)
839
+ const filePath = path.join(this.verbsDir, file);
840
+ const data = await fs.promises.readFile(filePath, 'utf-8');
841
+ const edge = JSON.parse(data);
842
+ // Get metadata which contains the actual verb information
843
+ const metadata = await this.getVerbMetadata(id);
844
+ // If no metadata exists, try to reconstruct basic metadata from filename
845
+ if (!metadata) {
846
+ console.warn(`Verb ${id} has no metadata, trying to create minimal verb`);
847
+ // Create minimal GraphVerb without full metadata
848
+ const minimalVerb = {
849
+ id: edge.id,
850
+ vector: edge.vector,
851
+ connections: edge.connections || new Map(),
852
+ sourceId: 'unknown',
853
+ targetId: 'unknown',
854
+ source: 'unknown',
855
+ target: 'unknown',
856
+ type: 'relationship',
857
+ verb: 'relatedTo'
858
+ };
859
+ verbs.push(minimalVerb);
860
+ continue;
861
+ }
862
+ // Convert connections Map to proper format if needed
863
+ let connections = edge.connections;
864
+ if (connections && typeof connections === 'object' && !(connections instanceof Map)) {
865
+ const connectionsMap = new Map();
866
+ for (const [level, nodeIds] of Object.entries(connections)) {
867
+ connectionsMap.set(Number(level), new Set(nodeIds));
868
+ }
869
+ connections = connectionsMap;
870
+ }
871
+ // Properly reconstruct GraphVerb from HNSWVerb + metadata
872
+ const verb = {
873
+ id: edge.id,
874
+ vector: edge.vector, // Include the vector field!
875
+ connections: connections,
876
+ sourceId: metadata.sourceId || metadata.source,
877
+ targetId: metadata.targetId || metadata.target,
878
+ source: metadata.source || metadata.sourceId,
879
+ target: metadata.target || metadata.targetId,
880
+ verb: metadata.verb || metadata.type,
881
+ type: metadata.type || metadata.verb,
882
+ weight: metadata.weight,
883
+ metadata: metadata.metadata || metadata,
884
+ data: metadata.data,
885
+ createdAt: metadata.createdAt,
886
+ updatedAt: metadata.updatedAt,
887
+ createdBy: metadata.createdBy,
888
+ embedding: metadata.embedding || edge.vector
889
+ };
890
+ // Apply filters if provided
891
+ if (options.filter) {
892
+ const filter = options.filter;
893
+ // Check verbType filter
894
+ if (filter.verbType) {
895
+ const types = Array.isArray(filter.verbType) ? filter.verbType : [filter.verbType];
896
+ const verbType = verb.type || verb.verb;
897
+ if (verbType && !types.includes(verbType))
898
+ continue;
899
+ }
900
+ // Check sourceId filter
901
+ if (filter.sourceId) {
902
+ const sources = Array.isArray(filter.sourceId) ? filter.sourceId : [filter.sourceId];
903
+ const sourceId = verb.sourceId || verb.source;
904
+ if (!sourceId || !sources.includes(sourceId))
905
+ continue;
906
+ }
907
+ // Check targetId filter
908
+ if (filter.targetId) {
909
+ const targets = Array.isArray(filter.targetId) ? filter.targetId : [filter.targetId];
910
+ const targetId = verb.targetId || verb.target;
911
+ if (!targetId || !targets.includes(targetId))
912
+ continue;
913
+ }
914
+ // Check service filter
915
+ if (filter.service && metadata?.service) {
916
+ const services = Array.isArray(filter.service) ? filter.service : [filter.service];
917
+ if (!services.includes(metadata.service))
918
+ continue;
919
+ }
920
+ }
921
+ verbs.push(verb);
922
+ }
923
+ catch (error) {
924
+ console.warn(`Failed to read verb ${id}:`, error);
925
+ }
926
+ }
927
+ return {
928
+ items: verbs,
929
+ totalCount,
930
+ hasMore,
931
+ nextCursor: hasMore ? String(endIndex) : undefined
932
+ };
933
+ }
934
+ catch (error) {
935
+ if (error.code === 'ENOENT') {
936
+ // Verbs directory doesn't exist yet
937
+ return {
938
+ items: [],
939
+ totalCount: 0,
940
+ hasMore: false
941
+ };
942
+ }
943
+ throw error;
944
+ }
795
945
  }
796
946
  /**
797
947
  * Delete a verb from storage
@@ -1030,7 +1180,60 @@ export class FileSystemStorage extends BaseStorage {
1030
1180
  }
1031
1181
  }
1032
1182
  // Merge statistics from both locations
1033
- return StorageCompatibilityLayer.mergeStatistics(newStats, oldStats);
1183
+ return this.mergeStatistics(newStats, oldStats);
1184
+ }
1185
+ /**
1186
+ * Merge statistics from multiple sources
1187
+ */
1188
+ mergeStatistics(storageStats, localStats) {
1189
+ // Handle null cases
1190
+ if (!storageStats && !localStats) {
1191
+ return {
1192
+ nounCount: {},
1193
+ verbCount: {},
1194
+ metadataCount: {},
1195
+ hnswIndexSize: 0,
1196
+ totalNodes: 0,
1197
+ totalEdges: 0,
1198
+ lastUpdated: new Date().toISOString()
1199
+ };
1200
+ }
1201
+ if (!storageStats)
1202
+ return localStats;
1203
+ if (!localStats)
1204
+ return storageStats;
1205
+ // Merge noun counts by taking the maximum of each type
1206
+ const mergedNounCount = {
1207
+ ...storageStats.nounCount
1208
+ };
1209
+ for (const [type, count] of Object.entries(localStats.nounCount)) {
1210
+ mergedNounCount[type] = Math.max(mergedNounCount[type] || 0, count);
1211
+ }
1212
+ // Merge verb counts by taking the maximum of each type
1213
+ const mergedVerbCount = {
1214
+ ...storageStats.verbCount
1215
+ };
1216
+ for (const [type, count] of Object.entries(localStats.verbCount)) {
1217
+ mergedVerbCount[type] = Math.max(mergedVerbCount[type] || 0, count);
1218
+ }
1219
+ // Merge metadata counts by taking the maximum of each type
1220
+ const mergedMetadataCount = {
1221
+ ...storageStats.metadataCount
1222
+ };
1223
+ for (const [type, count] of Object.entries(localStats.metadataCount)) {
1224
+ mergedMetadataCount[type] = Math.max(mergedMetadataCount[type] || 0, count);
1225
+ }
1226
+ return {
1227
+ nounCount: mergedNounCount,
1228
+ verbCount: mergedVerbCount,
1229
+ metadataCount: mergedMetadataCount,
1230
+ hnswIndexSize: Math.max(storageStats.hnswIndexSize || 0, localStats.hnswIndexSize || 0),
1231
+ totalNodes: Math.max(storageStats.totalNodes || 0, localStats.totalNodes || 0),
1232
+ totalEdges: Math.max(storageStats.totalEdges || 0, localStats.totalEdges || 0),
1233
+ totalMetadata: Math.max(storageStats.totalMetadata || 0, localStats.totalMetadata || 0),
1234
+ operations: storageStats.operations || localStats.operations,
1235
+ lastUpdated: new Date().toISOString()
1236
+ };
1034
1237
  }
1035
1238
  }
1036
1239
  //# sourceMappingURL=fileSystemStorage.js.map
@@ -131,17 +131,17 @@ export declare class MemoryStorage extends BaseStorage {
131
131
  */
132
132
  getMetadataBatch(ids: string[]): Promise<Map<string, any>>;
133
133
  /**
134
- * Save noun metadata to storage
134
+ * Save noun metadata to storage (internal implementation)
135
135
  */
136
- saveNounMetadata(id: string, metadata: any): Promise<void>;
136
+ protected saveNounMetadata_internal(id: string, metadata: any): Promise<void>;
137
137
  /**
138
138
  * Get noun metadata from storage
139
139
  */
140
140
  getNounMetadata(id: string): Promise<any | null>;
141
141
  /**
142
- * Save verb metadata to storage
142
+ * Save verb metadata to storage (internal implementation)
143
143
  */
144
- saveVerbMetadata(id: string, metadata: any): Promise<void>;
144
+ protected saveVerbMetadata_internal(id: string, metadata: any): Promise<void>;
145
145
  /**
146
146
  * Get verb metadata from storage
147
147
  */
@@ -35,7 +35,8 @@ export class MemoryStorage extends BaseStorage {
35
35
  id: noun.id,
36
36
  vector: [...noun.vector],
37
37
  connections: new Map(),
38
- level: noun.level || 0
38
+ level: noun.level || 0,
39
+ metadata: noun.metadata
39
40
  };
40
41
  // Copy connections
41
42
  for (const [level, connections] of noun.connections.entries()) {
@@ -59,7 +60,8 @@ export class MemoryStorage extends BaseStorage {
59
60
  id: noun.id,
60
61
  vector: [...noun.vector],
61
62
  connections: new Map(),
62
- level: noun.level || 0
63
+ level: noun.level || 0,
64
+ metadata: noun.metadata
63
65
  };
64
66
  // Copy connections
65
67
  for (const [level, connections] of noun.connections.entries()) {
@@ -89,12 +91,14 @@ export class MemoryStorage extends BaseStorage {
89
91
  const matchingIds = [];
90
92
  // Iterate through all nouns to find matches
91
93
  for (const [nounId, noun] of this.nouns.entries()) {
92
- // Get the metadata to check filters
93
- const metadata = await this.getMetadata(nounId);
94
- if (!metadata)
95
- continue;
94
+ // Check the noun's embedded metadata field
95
+ const nounMetadata = noun.metadata || {};
96
+ // Also check separate metadata store for backward compatibility
97
+ const separateMetadata = await this.getMetadata(nounId);
98
+ // Merge both metadata sources (noun.metadata takes precedence)
99
+ const metadata = { ...separateMetadata, ...nounMetadata };
96
100
  // Filter by noun type if specified
97
- if (nounTypes && !nounTypes.includes(metadata.noun)) {
101
+ if (nounTypes && metadata.noun && !nounTypes.includes(metadata.noun)) {
98
102
  continue;
99
103
  }
100
104
  // Filter by service if specified
@@ -133,7 +137,8 @@ export class MemoryStorage extends BaseStorage {
133
137
  id: noun.id,
134
138
  vector: [...noun.vector],
135
139
  connections: new Map(),
136
- level: noun.level || 0
140
+ level: noun.level || 0,
141
+ metadata: noun.metadata
137
142
  };
138
143
  // Copy connections
139
144
  for (const [level, connections] of noun.connections.entries()) {
@@ -424,9 +429,9 @@ export class MemoryStorage extends BaseStorage {
424
429
  return results;
425
430
  }
426
431
  /**
427
- * Save noun metadata to storage
432
+ * Save noun metadata to storage (internal implementation)
428
433
  */
429
- async saveNounMetadata(id, metadata) {
434
+ async saveNounMetadata_internal(id, metadata) {
430
435
  this.nounMetadata.set(id, JSON.parse(JSON.stringify(metadata)));
431
436
  }
432
437
  /**
@@ -440,9 +445,9 @@ export class MemoryStorage extends BaseStorage {
440
445
  return JSON.parse(JSON.stringify(metadata));
441
446
  }
442
447
  /**
443
- * Save verb metadata to storage
448
+ * Save verb metadata to storage (internal implementation)
444
449
  */
445
- async saveVerbMetadata(id, metadata) {
450
+ async saveVerbMetadata_internal(id, metadata) {
446
451
  this.verbMetadata.set(id, JSON.parse(JSON.stringify(metadata)));
447
452
  }
448
453
  /**
@@ -144,7 +144,7 @@ export declare class OPFSStorage extends BaseStorage {
144
144
  /**
145
145
  * Save verb metadata to storage
146
146
  */
147
- saveVerbMetadata(id: string, metadata: any): Promise<void>;
147
+ protected saveVerbMetadata_internal(id: string, metadata: any): Promise<void>;
148
148
  /**
149
149
  * Get verb metadata from storage
150
150
  */
@@ -152,7 +152,7 @@ export declare class OPFSStorage extends BaseStorage {
152
152
  /**
153
153
  * Save noun metadata to storage
154
154
  */
155
- saveNounMetadata(id: string, metadata: any): Promise<void>;
155
+ protected saveNounMetadata_internal(id: string, metadata: any): Promise<void>;
156
156
  /**
157
157
  * Get noun metadata from storage
158
158
  */
@@ -540,7 +540,7 @@ export class OPFSStorage extends BaseStorage {
540
540
  /**
541
541
  * Save verb metadata to storage
542
542
  */
543
- async saveVerbMetadata(id, metadata) {
543
+ async saveVerbMetadata_internal(id, metadata) {
544
544
  await this.ensureInitialized();
545
545
  const fileName = `${id}.json`;
546
546
  const fileHandle = await this.verbMetadataDir.getFileHandle(fileName, { create: true });
@@ -570,7 +570,7 @@ export class OPFSStorage extends BaseStorage {
570
570
  /**
571
571
  * Save noun metadata to storage
572
572
  */
573
- async saveNounMetadata(id, metadata) {
573
+ async saveNounMetadata_internal(id, metadata) {
574
574
  await this.ensureInitialized();
575
575
  const fileName = `${id}.json`;
576
576
  const fileHandle = await this.nounMetadataDir.getFileHandle(fileName, { create: true });
@@ -328,7 +328,7 @@ export declare class S3CompatibleStorage extends BaseStorage {
328
328
  /**
329
329
  * Save verb metadata to storage
330
330
  */
331
- saveVerbMetadata(id: string, metadata: any): Promise<void>;
331
+ protected saveVerbMetadata_internal(id: string, metadata: any): Promise<void>;
332
332
  /**
333
333
  * Get verb metadata from storage
334
334
  */
@@ -336,7 +336,7 @@ export declare class S3CompatibleStorage extends BaseStorage {
336
336
  /**
337
337
  * Save noun metadata to storage
338
338
  */
339
- saveNounMetadata(id: string, metadata: any): Promise<void>;
339
+ protected saveNounMetadata_internal(id: string, metadata: any): Promise<void>;
340
340
  /**
341
341
  * Get multiple metadata objects in batches (CRITICAL: Prevents socket exhaustion)
342
342
  * This is the solution to the metadata reading socket exhaustion during initialization
@@ -1450,7 +1450,7 @@ export class S3CompatibleStorage extends BaseStorage {
1450
1450
  /**
1451
1451
  * Save verb metadata to storage
1452
1452
  */
1453
- async saveVerbMetadata(id, metadata) {
1453
+ async saveVerbMetadata_internal(id, metadata) {
1454
1454
  await this.ensureInitialized();
1455
1455
  try {
1456
1456
  // Import the PutObjectCommand only when needed
@@ -1523,7 +1523,7 @@ export class S3CompatibleStorage extends BaseStorage {
1523
1523
  /**
1524
1524
  * Save noun metadata to storage
1525
1525
  */
1526
- async saveNounMetadata(id, metadata) {
1526
+ async saveNounMetadata_internal(id, metadata) {
1527
1527
  await this.ensureInitialized();
1528
1528
  try {
1529
1529
  // Import the PutObjectCommand only when needed
@@ -1,84 +1,16 @@
1
1
  /**
2
- * Backward Compatibility Layer for Storage Migration
3
- *
4
- * Handles the transition from 'index' to '_system' directory
5
- * Ensures services running different versions can coexist
6
- */
7
- import { StatisticsData } from '../coreTypes.js';
8
- export interface MigrationMetadata {
9
- schemaVersion: number;
10
- migrationStarted?: string;
11
- migrationCompleted?: string;
12
- lastUpdatedBy?: string;
13
- }
14
- /**
15
- * Backward compatibility strategy for directory migration
2
+ * Storage backward compatibility layer for legacy data migrations
16
3
  */
17
4
  export declare class StorageCompatibilityLayer {
18
- private migrationMetadata;
19
- /**
20
- * Determines the read strategy based on what's available
21
- * @returns Priority-ordered list of directories to try
22
- */
23
- static getReadPriority(): string[];
24
- /**
25
- * Determines write strategy based on migration state
26
- * @param migrationComplete Whether migration is complete
27
- * @returns List of directories to write to
28
- */
29
- static getWriteTargets(migrationComplete?: boolean): string[];
30
- /**
31
- * Check if we should perform migration based on service coordination
32
- * @param existingStats Statistics from storage
33
- * @returns Whether to initiate migration
34
- */
35
- static shouldMigrate(existingStats: StatisticsData | null): boolean;
36
- /**
37
- * Creates migration metadata
38
- */
39
- static createMigrationMetadata(): MigrationMetadata;
40
- /**
41
- * Merge statistics from multiple locations (deduplication)
42
- */
43
- static mergeStatistics(primary: StatisticsData | null, fallback: StatisticsData | null): StatisticsData | null;
44
- /**
45
- * Determines if dual-write is needed based on environment
46
- * @param storageType The type of storage being used
47
- * @returns Whether to write to both old and new locations
48
- */
49
- static needsDualWrite(storageType: string): boolean;
50
- /**
51
- * Grace period for migration (30 days default)
52
- * After this period, services can stop reading from old location
53
- */
54
- static getMigrationGracePeriodMs(): number;
55
- /**
56
- * Check if migration grace period has expired
57
- */
58
- static isGracePeriodExpired(migrationStarted: string): boolean;
59
- /**
60
- * Log migration events for monitoring
61
- */
62
5
  static logMigrationEvent(event: string, details?: any): void;
6
+ static migrateIfNeeded(storagePath: string): Promise<void>;
63
7
  }
64
- /**
65
- * Storage paths helper for migration
66
- */
67
- export declare class StoragePaths {
68
- /**
69
- * Get the statistics file path for a given directory
70
- */
71
- static getStatisticsPath(baseDir: string, filename?: string): string;
72
- /**
73
- * Get distributed config path
74
- */
75
- static getDistributedConfigPath(baseDir: string): string;
76
- /**
77
- * Check if a path is using the old structure
78
- */
79
- static isLegacyPath(path: string): boolean;
80
- /**
81
- * Convert legacy path to new structure
82
- */
83
- static modernizePath(path: string): string;
8
+ export interface StoragePaths {
9
+ nouns: string;
10
+ verbs: string;
11
+ metadata: string;
12
+ index: string;
13
+ system: string;
14
+ statistics: string;
84
15
  }
16
+ export declare function getDefaultStoragePaths(basePath: string): StoragePaths;