@soulcraft/brainy 0.28.0 → 0.30.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.
@@ -0,0 +1,236 @@
1
+ /**
2
+ * OPFS (Origin Private File System) Storage Adapter
3
+ * Provides persistent storage for the vector database using the Origin Private File System API
4
+ */
5
+ import { GraphVerb, HNSWNoun, StorageAdapter } from '../coreTypes.js';
6
+ import '../types/fileSystemTypes.js';
7
+ declare global {
8
+ interface FileSystemDirectoryHandle {
9
+ entries(): AsyncIterableIterator<[string, FileSystemHandle]>;
10
+ }
11
+ }
12
+ type HNSWNode = HNSWNoun;
13
+ type Edge = GraphVerb;
14
+ export declare class OPFSStorage implements StorageAdapter {
15
+ private rootDir;
16
+ private nounsDir;
17
+ private verbsDir;
18
+ private metadataDir;
19
+ private isInitialized;
20
+ private isAvailable;
21
+ private isPersistentRequested;
22
+ private isPersistentGranted;
23
+ constructor();
24
+ /**
25
+ * Initialize the storage adapter
26
+ */
27
+ init(): Promise<void>;
28
+ /**
29
+ * Check if OPFS is available in the current environment
30
+ */
31
+ isOPFSAvailable(): boolean;
32
+ /**
33
+ * Request persistent storage permission from the user
34
+ * @returns Promise that resolves to true if permission was granted, false otherwise
35
+ */
36
+ requestPersistentStorage(): Promise<boolean>;
37
+ /**
38
+ * Check if persistent storage is granted
39
+ * @returns Promise that resolves to true if persistent storage is granted, false otherwise
40
+ */
41
+ isPersistent(): Promise<boolean>;
42
+ /**
43
+ * Save a noun to storage
44
+ */
45
+ saveNoun(noun: HNSWNoun): Promise<void>;
46
+ /**
47
+ * Get a noun from storage
48
+ */
49
+ getNoun(id: string): Promise<HNSWNoun | null>;
50
+ /**
51
+ * Get nouns by noun type
52
+ * @param nounType The noun type to filter by
53
+ * @returns Promise that resolves to an array of nouns of the specified noun type
54
+ */
55
+ getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
56
+ /**
57
+ * Get all nouns from storage
58
+ */
59
+ getAllNouns(): Promise<HNSWNoun[]>;
60
+ /**
61
+ * Delete a noun from storage
62
+ */
63
+ deleteNoun(id: string): Promise<void>;
64
+ /**
65
+ * Save a verb to storage
66
+ */
67
+ saveVerb(verb: GraphVerb): Promise<void>;
68
+ /**
69
+ * Get a verb from storage
70
+ */
71
+ getVerb(id: string): Promise<GraphVerb | null>;
72
+ /**
73
+ * Get all edges from storage
74
+ */
75
+ getAllEdges(): Promise<Edge[]>;
76
+ /**
77
+ * Get all verbs from storage (alias for getAllEdges)
78
+ */
79
+ getAllVerbs(): Promise<GraphVerb[]>;
80
+ /**
81
+ * Delete an edge from storage
82
+ */
83
+ deleteEdge(id: string): Promise<void>;
84
+ /**
85
+ * Delete a verb from storage (alias for deleteEdge)
86
+ */
87
+ deleteVerb(id: string): Promise<void>;
88
+ /**
89
+ * Get edges by source node ID
90
+ */
91
+ getEdgesBySource(sourceId: string): Promise<Edge[]>;
92
+ /**
93
+ * Get verbs by source node ID (alias for getEdgesBySource)
94
+ */
95
+ getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
96
+ /**
97
+ * Get edges by target node ID
98
+ */
99
+ getEdgesByTarget(targetId: string): Promise<Edge[]>;
100
+ /**
101
+ * Get verbs by target node ID (alias for getEdgesByTarget)
102
+ */
103
+ getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
104
+ /**
105
+ * Get edges by type
106
+ */
107
+ getEdgesByType(type: string): Promise<Edge[]>;
108
+ /**
109
+ * Get verbs by type (alias for getEdgesByType)
110
+ */
111
+ getVerbsByType(type: string): Promise<GraphVerb[]>;
112
+ /**
113
+ * Save metadata for a node
114
+ */
115
+ saveMetadata(id: string, metadata: any): Promise<void>;
116
+ /**
117
+ * Get metadata for a node
118
+ */
119
+ getMetadata(id: string): Promise<any | null>;
120
+ /**
121
+ * Clear all data from storage
122
+ */
123
+ clear(): Promise<void>;
124
+ /**
125
+ * Ensure the storage adapter is initialized
126
+ */
127
+ private ensureInitialized;
128
+ /**
129
+ * Convert a Map to a plain object for serialization
130
+ */
131
+ private mapToObject;
132
+ /**
133
+ * Get the directory for a node - now all nouns use the same directory
134
+ */
135
+ private getNodeDirectory;
136
+ /**
137
+ * Get information about storage usage and capacity
138
+ */
139
+ getStorageStatus(): Promise<{
140
+ type: string;
141
+ used: number;
142
+ quota: number | null;
143
+ details?: Record<string, any>;
144
+ }>;
145
+ }
146
+ /**
147
+ * In-memory storage adapter for environments where OPFS is not available
148
+ */
149
+ export declare class MemoryStorage implements StorageAdapter {
150
+ private nouns;
151
+ private verbs;
152
+ private metadata;
153
+ constructor();
154
+ saveNoun(noun: HNSWNoun): Promise<void>;
155
+ getNoun(id: string): Promise<HNSWNoun | null>;
156
+ getAllNouns(): Promise<HNSWNoun[]>;
157
+ getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
158
+ deleteNoun(id: string): Promise<void>;
159
+ saveVerb(verb: GraphVerb): Promise<void>;
160
+ getVerb(id: string): Promise<GraphVerb | null>;
161
+ getAllVerbs(): Promise<GraphVerb[]>;
162
+ getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
163
+ getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
164
+ getVerbsByType(type: string): Promise<GraphVerb[]>;
165
+ deleteVerb(id: string): Promise<void>;
166
+ init(): Promise<void>;
167
+ /**
168
+ * Get the noun type for a node from its metadata
169
+ */
170
+ private getNounType;
171
+ saveNode(node: HNSWNode): Promise<void>;
172
+ getNode(id: string): Promise<HNSWNode | null>;
173
+ /**
174
+ * Get nodes by noun type
175
+ * @param nounType The noun type to filter by
176
+ * @returns Promise that resolves to an array of nodes of the specified noun type
177
+ */
178
+ getNodesByNounType(nounType: string): Promise<HNSWNode[]>;
179
+ getAllNodes(): Promise<HNSWNode[]>;
180
+ deleteNode(id: string): Promise<void>;
181
+ saveMetadata(id: string, metadata: any): Promise<void>;
182
+ getMetadata(id: string): Promise<any | null>;
183
+ saveEdge(edge: Edge): Promise<void>;
184
+ getEdge(id: string): Promise<Edge | null>;
185
+ getAllEdges(): Promise<Edge[]>;
186
+ getEdgesBySource(sourceId: string): Promise<Edge[]>;
187
+ getEdgesByTarget(targetId: string): Promise<Edge[]>;
188
+ getEdgesByType(type: string): Promise<Edge[]>;
189
+ deleteEdge(id: string): Promise<void>;
190
+ clear(): Promise<void>;
191
+ /**
192
+ * Get information about storage usage and capacity
193
+ */
194
+ getStorageStatus(): Promise<{
195
+ type: string;
196
+ used: number;
197
+ quota: number | null;
198
+ details?: Record<string, any>;
199
+ }>;
200
+ }
201
+ /**
202
+ * Factory function to create the appropriate storage adapter based on the environment
203
+ * @param options Configuration options for storage
204
+ * @returns Promise that resolves to a StorageAdapter instance
205
+ */
206
+ export declare function createStorage(options?: {
207
+ requestPersistentStorage?: boolean;
208
+ r2Storage?: {
209
+ bucketName?: string;
210
+ accountId?: string;
211
+ accessKeyId?: string;
212
+ secretAccessKey?: string;
213
+ };
214
+ s3Storage?: {
215
+ bucketName?: string;
216
+ accessKeyId?: string;
217
+ secretAccessKey?: string;
218
+ region?: string;
219
+ };
220
+ gcsStorage?: {
221
+ bucketName?: string;
222
+ accessKeyId?: string;
223
+ secretAccessKey?: string;
224
+ endpoint?: string;
225
+ };
226
+ customS3Storage?: {
227
+ bucketName?: string;
228
+ accessKeyId?: string;
229
+ secretAccessKey?: string;
230
+ endpoint?: string;
231
+ region?: string;
232
+ };
233
+ forceFileSystemStorage?: boolean;
234
+ forceMemoryStorage?: boolean;
235
+ }): Promise<StorageAdapter>;
236
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfsStorage.d.ts","sourceRoot":"","sources":["../../src/storage/opfsStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { GraphVerb, HNSWNoun, StorageAdapter } from '../coreTypes.js';
2
+ type HNSWNode = HNSWNoun;
3
+ type Edge = GraphVerb;
4
+ export { S3CompatibleStorage as R2Storage };
5
+ /**
6
+ * S3-compatible storage adapter for server environments
7
+ * Uses the AWS S3 client to interact with S3-compatible storage services
8
+ * including Amazon S3, Cloudflare R2, and Google Cloud Storage
9
+ *
10
+ * To use this adapter with Cloudflare R2, you need to provide:
11
+ * - bucketName: Your bucket name
12
+ * - accountId: Your Cloudflare account ID
13
+ * - accessKeyId: R2 access key ID
14
+ * - secretAccessKey: R2 secret access key
15
+ * - serviceType: 'r2'
16
+ *
17
+ * To use this adapter with Amazon S3, you need to provide:
18
+ * - bucketName: Your S3 bucket name
19
+ * - accessKeyId: AWS access key ID
20
+ * - secretAccessKey: AWS secret access key
21
+ * - region: AWS region (e.g., 'us-east-1')
22
+ * - serviceType: 's3'
23
+ *
24
+ * To use this adapter with Google Cloud Storage, you need to provide:
25
+ * - bucketName: Your GCS bucket name
26
+ * - accessKeyId: HMAC access key
27
+ * - secretAccessKey: HMAC secret
28
+ * - endpoint: GCS endpoint (e.g., 'https://storage.googleapis.com')
29
+ * - serviceType: 'gcs'
30
+ *
31
+ * For other S3-compatible services, provide:
32
+ * - bucketName: Your bucket name
33
+ * - accessKeyId: Access key ID
34
+ * - secretAccessKey: Secret access key
35
+ * - endpoint: Service endpoint URL
36
+ * - region: Region (if required)
37
+ * - serviceType: 'custom'
38
+ */
39
+ export declare class S3CompatibleStorage implements StorageAdapter {
40
+ private bucketName;
41
+ private accessKeyId;
42
+ private secretAccessKey;
43
+ private endpoint?;
44
+ private region?;
45
+ private accountId?;
46
+ private serviceType;
47
+ private s3Client;
48
+ private isInitialized;
49
+ saveNoun(noun: HNSWNoun): Promise<void>;
50
+ getNoun(id: string): Promise<HNSWNoun | null>;
51
+ getAllNouns(): Promise<HNSWNoun[]>;
52
+ getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
53
+ deleteNoun(id: string): Promise<void>;
54
+ saveVerb(verb: GraphVerb): Promise<void>;
55
+ getVerb(id: string): Promise<GraphVerb | null>;
56
+ getAllVerbs(): Promise<GraphVerb[]>;
57
+ getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
58
+ getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
59
+ getVerbsByType(type: string): Promise<GraphVerb[]>;
60
+ deleteVerb(id: string): Promise<void>;
61
+ constructor(options: {
62
+ bucketName: string;
63
+ accessKeyId: string;
64
+ secretAccessKey: string;
65
+ serviceType: 'r2' | 's3' | 'gcs' | 'custom';
66
+ accountId?: string;
67
+ region?: string;
68
+ endpoint?: string;
69
+ });
70
+ /**
71
+ * Initialize the storage adapter
72
+ */
73
+ init(): Promise<void>;
74
+ /**
75
+ * Save a node to storage
76
+ */
77
+ saveNode(node: HNSWNode): Promise<void>;
78
+ /**
79
+ * Get a node from storage
80
+ */
81
+ getNode(id: string): Promise<HNSWNode | null>;
82
+ /**
83
+ * Get nodes by noun type
84
+ * @param nounType The noun type to filter by
85
+ * @returns Promise that resolves to an array of nodes of the specified noun type
86
+ */
87
+ getNodesByNounType(nounType: string): Promise<HNSWNode[]>;
88
+ /**
89
+ * Get all nodes from storage
90
+ */
91
+ getAllNodes(): Promise<HNSWNode[]>;
92
+ /**
93
+ * Delete a node from storage
94
+ */
95
+ deleteNode(id: string): Promise<void>;
96
+ /**
97
+ * Save an edge to storage
98
+ */
99
+ saveEdge(edge: Edge): Promise<void>;
100
+ /**
101
+ * Get an edge from storage
102
+ */
103
+ getEdge(id: string): Promise<Edge | null>;
104
+ /**
105
+ * Get all edges from storage
106
+ */
107
+ getAllEdges(): Promise<Edge[]>;
108
+ /**
109
+ * Get edges by source node ID
110
+ */
111
+ getEdgesBySource(sourceId: string): Promise<Edge[]>;
112
+ /**
113
+ * Get edges by target node ID
114
+ */
115
+ getEdgesByTarget(targetId: string): Promise<Edge[]>;
116
+ /**
117
+ * Get edges by type
118
+ */
119
+ getEdgesByType(type: string): Promise<Edge[]>;
120
+ /**
121
+ * Delete an edge from storage
122
+ */
123
+ deleteEdge(id: string): Promise<void>;
124
+ /**
125
+ * Save metadata to storage
126
+ */
127
+ saveMetadata(id: string, metadata: any): Promise<void>;
128
+ /**
129
+ * Get metadata from storage
130
+ */
131
+ getMetadata(id: string): Promise<any | null>;
132
+ /**
133
+ * Clear all data from storage
134
+ */
135
+ clear(): Promise<void>;
136
+ /**
137
+ * Get information about storage usage and capacity
138
+ */
139
+ getStorageStatus(): Promise<{
140
+ type: string;
141
+ used: number;
142
+ quota: number | null;
143
+ details?: Record<string, any>;
144
+ }>;
145
+ /**
146
+ * Ensure the storage adapter is initialized
147
+ */
148
+ private ensureInitialized;
149
+ /**
150
+ * Get the appropriate prefix for a node - now all nouns use the same prefix
151
+ */
152
+ private getNodePrefix;
153
+ /**
154
+ * Convert a Map to a plain object for serialization
155
+ */
156
+ private mapToObject;
157
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../src/storage/s3CompatibleStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Types for pagination and filtering in data retrieval operations
3
+ */
4
+ /**
5
+ * Pagination options for data retrieval
6
+ */
7
+ export interface PaginationOptions {
8
+ /**
9
+ * The number of items to skip (for offset-based pagination)
10
+ */
11
+ offset?: number;
12
+ /**
13
+ * The maximum number of items to return
14
+ */
15
+ limit?: number;
16
+ /**
17
+ * Token for cursor-based pagination (for continuing from a previous page)
18
+ */
19
+ cursor?: string;
20
+ }
21
+ /**
22
+ * Filter options for noun retrieval
23
+ */
24
+ export interface NounFilterOptions {
25
+ /**
26
+ * Filter by noun type
27
+ */
28
+ nounType?: string | string[];
29
+ /**
30
+ * Filter by service
31
+ */
32
+ service?: string | string[];
33
+ /**
34
+ * Filter by metadata fields (key-value pairs)
35
+ */
36
+ metadata?: Record<string, any>;
37
+ /**
38
+ * Filter by creation date range
39
+ */
40
+ createdAt?: {
41
+ from?: Date | number;
42
+ to?: Date | number;
43
+ };
44
+ /**
45
+ * Filter by update date range
46
+ */
47
+ updatedAt?: {
48
+ from?: Date | number;
49
+ to?: Date | number;
50
+ };
51
+ }
52
+ /**
53
+ * Filter options for verb retrieval
54
+ */
55
+ export interface VerbFilterOptions {
56
+ /**
57
+ * Filter by verb type
58
+ */
59
+ verbType?: string | string[];
60
+ /**
61
+ * Filter by source noun ID
62
+ */
63
+ sourceId?: string | string[];
64
+ /**
65
+ * Filter by target noun ID
66
+ */
67
+ targetId?: string | string[];
68
+ /**
69
+ * Filter by service
70
+ */
71
+ service?: string | string[];
72
+ /**
73
+ * Filter by metadata fields (key-value pairs)
74
+ */
75
+ metadata?: Record<string, any>;
76
+ /**
77
+ * Filter by creation date range
78
+ */
79
+ createdAt?: {
80
+ from?: Date | number;
81
+ to?: Date | number;
82
+ };
83
+ /**
84
+ * Filter by update date range
85
+ */
86
+ updatedAt?: {
87
+ from?: Date | number;
88
+ to?: Date | number;
89
+ };
90
+ }
91
+ /**
92
+ * Result of a paginated query
93
+ */
94
+ export interface PaginatedResult<T> {
95
+ /**
96
+ * The items for the current page
97
+ */
98
+ items: T[];
99
+ /**
100
+ * The total number of items matching the query (may be estimated)
101
+ */
102
+ totalCount?: number;
103
+ /**
104
+ * Whether there are more items available
105
+ */
106
+ hasMore: boolean;
107
+ /**
108
+ * Cursor for fetching the next page (for cursor-based pagination)
109
+ */
110
+ nextCursor?: string;
111
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginationTypes.d.ts","sourceRoot":"","sources":["../../src/types/paginationTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IAEX;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}