@soulcraft/brainy 3.50.2 → 4.0.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 (57) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/README.md +358 -658
  3. package/dist/api/ConfigAPI.js +56 -19
  4. package/dist/api/DataAPI.js +24 -18
  5. package/dist/augmentations/storageAugmentations.d.ts +24 -0
  6. package/dist/augmentations/storageAugmentations.js +22 -0
  7. package/dist/brainy.js +32 -9
  8. package/dist/cli/commands/core.d.ts +20 -10
  9. package/dist/cli/commands/core.js +384 -82
  10. package/dist/cli/commands/import.d.ts +41 -0
  11. package/dist/cli/commands/import.js +456 -0
  12. package/dist/cli/commands/insights.d.ts +34 -0
  13. package/dist/cli/commands/insights.js +300 -0
  14. package/dist/cli/commands/neural.d.ts +6 -12
  15. package/dist/cli/commands/neural.js +113 -10
  16. package/dist/cli/commands/nlp.d.ts +28 -0
  17. package/dist/cli/commands/nlp.js +246 -0
  18. package/dist/cli/commands/storage.d.ts +64 -0
  19. package/dist/cli/commands/storage.js +730 -0
  20. package/dist/cli/index.js +210 -24
  21. package/dist/coreTypes.d.ts +206 -34
  22. package/dist/distributed/configManager.js +8 -6
  23. package/dist/distributed/shardMigration.js +2 -0
  24. package/dist/distributed/storageDiscovery.js +6 -4
  25. package/dist/embeddings/EmbeddingManager.d.ts +2 -2
  26. package/dist/embeddings/EmbeddingManager.js +5 -1
  27. package/dist/graph/lsm/LSMTree.js +32 -20
  28. package/dist/hnsw/typeAwareHNSWIndex.js +6 -2
  29. package/dist/storage/adapters/azureBlobStorage.d.ts +545 -0
  30. package/dist/storage/adapters/azureBlobStorage.js +1809 -0
  31. package/dist/storage/adapters/baseStorageAdapter.d.ts +16 -13
  32. package/dist/storage/adapters/fileSystemStorage.d.ts +21 -9
  33. package/dist/storage/adapters/fileSystemStorage.js +204 -127
  34. package/dist/storage/adapters/gcsStorage.d.ts +119 -9
  35. package/dist/storage/adapters/gcsStorage.js +317 -62
  36. package/dist/storage/adapters/memoryStorage.d.ts +30 -18
  37. package/dist/storage/adapters/memoryStorage.js +99 -94
  38. package/dist/storage/adapters/opfsStorage.d.ts +48 -10
  39. package/dist/storage/adapters/opfsStorage.js +201 -80
  40. package/dist/storage/adapters/r2Storage.d.ts +12 -5
  41. package/dist/storage/adapters/r2Storage.js +63 -15
  42. package/dist/storage/adapters/s3CompatibleStorage.d.ts +164 -17
  43. package/dist/storage/adapters/s3CompatibleStorage.js +472 -80
  44. package/dist/storage/adapters/typeAwareStorageAdapter.d.ts +38 -6
  45. package/dist/storage/adapters/typeAwareStorageAdapter.js +218 -39
  46. package/dist/storage/baseStorage.d.ts +41 -38
  47. package/dist/storage/baseStorage.js +110 -134
  48. package/dist/storage/storageFactory.d.ts +29 -2
  49. package/dist/storage/storageFactory.js +30 -1
  50. package/dist/utils/entityIdMapper.js +5 -2
  51. package/dist/utils/fieldTypeInference.js +8 -1
  52. package/dist/utils/metadataFilter.d.ts +3 -2
  53. package/dist/utils/metadataFilter.js +1 -0
  54. package/dist/utils/metadataIndex.js +2 -0
  55. package/dist/utils/metadataIndexChunking.js +9 -4
  56. package/dist/utils/periodicCleanup.js +1 -0
  57. package/package.json +3 -1
@@ -2,26 +2,29 @@
2
2
  * Base Storage Adapter
3
3
  * Provides common functionality for all storage adapters, including statistics tracking
4
4
  */
5
- import { StatisticsData, StorageAdapter, HNSWNoun, GraphVerb } from '../../coreTypes.js';
5
+ import { StatisticsData, StorageAdapter, HNSWNoun, HNSWVerb, HNSWNounWithMetadata, HNSWVerbWithMetadata, NounMetadata, VerbMetadata } from '../../coreTypes.js';
6
6
  /**
7
7
  * Base class for storage adapters that implements statistics tracking
8
8
  */
9
9
  export declare abstract class BaseStorageAdapter implements StorageAdapter {
10
10
  abstract init(): Promise<void>;
11
11
  abstract saveNoun(noun: HNSWNoun): Promise<void>;
12
- abstract getNoun(id: string): Promise<HNSWNoun | null>;
13
- abstract getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
12
+ abstract saveNounMetadata(id: string, metadata: NounMetadata): Promise<void>;
13
+ abstract deleteNounMetadata(id: string): Promise<void>;
14
+ abstract getNoun(id: string): Promise<HNSWNounWithMetadata | null>;
15
+ abstract getNounsByNounType(nounType: string): Promise<HNSWNounWithMetadata[]>;
14
16
  abstract deleteNoun(id: string): Promise<void>;
15
- abstract saveVerb(verb: GraphVerb): Promise<void>;
16
- abstract getVerb(id: string): Promise<GraphVerb | null>;
17
- abstract getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
18
- abstract getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
19
- abstract getVerbsByType(type: string): Promise<GraphVerb[]>;
17
+ abstract saveVerb(verb: HNSWVerb): Promise<void>;
18
+ abstract saveVerbMetadata(id: string, metadata: VerbMetadata): Promise<void>;
19
+ abstract deleteVerbMetadata(id: string): Promise<void>;
20
+ abstract getVerb(id: string): Promise<HNSWVerbWithMetadata | null>;
21
+ abstract getVerbsBySource(sourceId: string): Promise<HNSWVerbWithMetadata[]>;
22
+ abstract getVerbsByTarget(targetId: string): Promise<HNSWVerbWithMetadata[]>;
23
+ abstract getVerbsByType(type: string): Promise<HNSWVerbWithMetadata[]>;
20
24
  abstract deleteVerb(id: string): Promise<void>;
21
25
  abstract saveMetadata(id: string, metadata: any): Promise<void>;
22
26
  abstract getMetadata(id: string): Promise<any | null>;
23
27
  abstract getNounMetadata(id: string): Promise<any | null>;
24
- abstract saveVerbMetadata(id: string, metadata: any): Promise<void>;
25
28
  abstract getVerbMetadata(id: string): Promise<any | null>;
26
29
  abstract getNounVector(id: string): Promise<number[] | null>;
27
30
  abstract saveHNSWData(nounId: string, hnswData: {
@@ -64,7 +67,7 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
64
67
  metadata?: Record<string, any>;
65
68
  };
66
69
  }): Promise<{
67
- items: HNSWNoun[];
70
+ items: HNSWNounWithMetadata[];
68
71
  totalCount?: number;
69
72
  hasMore: boolean;
70
73
  nextCursor?: string;
@@ -88,7 +91,7 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
88
91
  metadata?: Record<string, any>;
89
92
  };
90
93
  }): Promise<{
91
- items: GraphVerb[];
94
+ items: HNSWVerbWithMetadata[];
92
95
  totalCount?: number;
93
96
  hasMore: boolean;
94
97
  nextCursor?: string;
@@ -108,7 +111,7 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
108
111
  metadata?: Record<string, any>;
109
112
  };
110
113
  }): Promise<{
111
- items: HNSWNoun[];
114
+ items: HNSWNounWithMetadata[];
112
115
  totalCount?: number;
113
116
  hasMore: boolean;
114
117
  nextCursor?: string;
@@ -130,7 +133,7 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
130
133
  metadata?: Record<string, any>;
131
134
  };
132
135
  }): Promise<{
133
- items: GraphVerb[];
136
+ items: HNSWVerbWithMetadata[];
134
137
  totalCount?: number;
135
138
  hasMore: boolean;
136
139
  nextCursor?: string;
@@ -2,7 +2,7 @@
2
2
  * File System Storage Adapter
3
3
  * File system storage adapter for Node.js environments
4
4
  */
5
- import { GraphVerb, HNSWNoun, HNSWVerb, StatisticsData } from '../../coreTypes.js';
5
+ import { HNSWNoun, HNSWVerb, HNSWNounWithMetadata, HNSWVerbWithMetadata, StatisticsData } from '../../coreTypes.js';
6
6
  import { BaseStorage } from '../baseStorage.js';
7
7
  type HNSWNode = HNSWNoun;
8
8
  type Edge = HNSWVerb;
@@ -28,11 +28,17 @@ export declare class FileSystemStorage extends BaseStorage {
28
28
  private activeLocks;
29
29
  private lockTimers;
30
30
  private allTimers;
31
+ private compressionEnabled;
32
+ private compressionLevel;
31
33
  /**
32
34
  * Initialize the storage adapter
33
35
  * @param rootDirectory The root directory for storage
36
+ * @param options Optional configuration
34
37
  */
35
- constructor(rootDirectory: string);
38
+ constructor(rootDirectory: string, options?: {
39
+ compression?: boolean;
40
+ compressionLevel?: number;
41
+ });
36
42
  /**
37
43
  * Initialize the storage adapter
38
44
  */
@@ -103,22 +109,26 @@ export declare class FileSystemStorage extends BaseStorage {
103
109
  /**
104
110
  * Primitive operation: Write object to path
105
111
  * All metadata operations use this internally via base class routing
112
+ * v4.0.0: Supports gzip compression for 60-80% disk savings
106
113
  */
107
114
  protected writeObjectToPath(pathStr: string, data: any): Promise<void>;
108
115
  /**
109
116
  * Primitive operation: Read object from path
110
117
  * All metadata operations use this internally via base class routing
111
118
  * Enhanced error handling for corrupted metadata files (Bug #3 mitigation)
119
+ * v4.0.0: Supports reading both compressed (.gz) and uncompressed files for backward compatibility
112
120
  */
113
121
  protected readObjectFromPath(pathStr: string): Promise<any | null>;
114
122
  /**
115
123
  * Primitive operation: Delete object from path
116
124
  * All metadata operations use this internally via base class routing
125
+ * v4.0.0: Deletes both compressed and uncompressed versions (for cleanup)
117
126
  */
118
127
  protected deleteObjectFromPath(pathStr: string): Promise<void>;
119
128
  /**
120
129
  * Primitive operation: List objects under path prefix
121
130
  * All metadata operations use this internally via base class routing
131
+ * v4.0.0: Handles both .json and .json.gz files, normalizes paths
122
132
  */
123
133
  protected listObjectsUnderPath(prefix: string): Promise<string[]>;
124
134
  /**
@@ -135,7 +145,7 @@ export declare class FileSystemStorage extends BaseStorage {
135
145
  cursor?: string;
136
146
  filter?: any;
137
147
  }): Promise<{
138
- items: HNSWNoun[];
148
+ items: HNSWNounWithMetadata[];
139
149
  totalCount: number;
140
150
  hasMore: boolean;
141
151
  nextCursor?: string;
@@ -167,7 +177,8 @@ export declare class FileSystemStorage extends BaseStorage {
167
177
  protected saveNoun_internal(noun: HNSWNoun): Promise<void>;
168
178
  /**
169
179
  * Get a noun from storage (internal implementation)
170
- * Combines vector data from getNode() with metadata from getNounMetadata()
180
+ * v4.0.0: Returns ONLY vector data (no metadata field)
181
+ * Base class combines with metadata via getNoun() -> HNSWNounWithMetadata
171
182
  */
172
183
  protected getNoun_internal(id: string): Promise<HNSWNoun | null>;
173
184
  /**
@@ -184,21 +195,22 @@ export declare class FileSystemStorage extends BaseStorage {
184
195
  protected saveVerb_internal(verb: HNSWVerb): Promise<void>;
185
196
  /**
186
197
  * Get a verb from storage (internal implementation)
187
- * Combines vector data from getEdge() with metadata from getVerbMetadata()
198
+ * v4.0.0: Returns ONLY vector + core relational fields (no metadata field)
199
+ * Base class combines with metadata via getVerb() -> HNSWVerbWithMetadata
188
200
  */
189
201
  protected getVerb_internal(id: string): Promise<HNSWVerb | null>;
190
202
  /**
191
203
  * Get verbs by source
192
204
  */
193
- protected getVerbsBySource_internal(sourceId: string): Promise<GraphVerb[]>;
205
+ protected getVerbsBySource_internal(sourceId: string): Promise<HNSWVerbWithMetadata[]>;
194
206
  /**
195
207
  * Get verbs by target
196
208
  */
197
- protected getVerbsByTarget_internal(targetId: string): Promise<GraphVerb[]>;
209
+ protected getVerbsByTarget_internal(targetId: string): Promise<HNSWVerbWithMetadata[]>;
198
210
  /**
199
211
  * Get verbs by type
200
212
  */
201
- protected getVerbsByType_internal(type: string): Promise<GraphVerb[]>;
213
+ protected getVerbsByType_internal(type: string): Promise<HNSWVerbWithMetadata[]>;
202
214
  /**
203
215
  * Get verbs with pagination
204
216
  * This method reads verb files from the filesystem and returns them with pagination
@@ -214,7 +226,7 @@ export declare class FileSystemStorage extends BaseStorage {
214
226
  metadata?: Record<string, any>;
215
227
  };
216
228
  }): Promise<{
217
- items: GraphVerb[];
229
+ items: HNSWVerbWithMetadata[];
218
230
  totalCount?: number;
219
231
  hasMore: boolean;
220
232
  nextCursor?: string;