@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
package/dist/demo.js ADDED
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Demo-specific entry point for browser environments
3
+ * This excludes all Node.js-specific functionality to avoid import issues
4
+ */
5
+ // Import only browser-compatible modules
6
+ import { MemoryStorage } from './storage/adapters/memoryStorage.js';
7
+ import { UniversalSentenceEncoder } from './utils/embedding.js';
8
+ import { cosineDistance } from './utils/distance.js';
9
+ /**
10
+ * Simplified BrainyData class for demo purposes
11
+ * Only includes browser-compatible functionality
12
+ */
13
+ export class DemoBrainyData {
14
+ constructor() {
15
+ this.embedder = null;
16
+ this.initialized = false;
17
+ this.vectors = new Map();
18
+ this.metadata = new Map();
19
+ this.verbs = new Map();
20
+ // Always use memory storage for demo simplicity
21
+ this.storage = new MemoryStorage();
22
+ }
23
+ /**
24
+ * Initialize the database
25
+ */
26
+ async init() {
27
+ if (this.initialized)
28
+ return;
29
+ try {
30
+ await this.storage.init();
31
+ // Initialize the embedder
32
+ this.embedder = new UniversalSentenceEncoder({ verbose: false });
33
+ await this.embedder.init();
34
+ this.initialized = true;
35
+ console.log('✅ Demo BrainyData initialized successfully');
36
+ }
37
+ catch (error) {
38
+ console.error('Failed to initialize demo BrainyData:', error);
39
+ throw error;
40
+ }
41
+ }
42
+ /**
43
+ * Add a document to the database
44
+ */
45
+ async add(text, metadata = {}) {
46
+ if (!this.initialized || !this.embedder) {
47
+ throw new Error('Database not initialized');
48
+ }
49
+ const id = this.generateId();
50
+ try {
51
+ // Generate embedding
52
+ const vector = await this.embedder.embed(text);
53
+ // Store data
54
+ this.vectors.set(id, vector);
55
+ this.metadata.set(id, { text, ...metadata, timestamp: Date.now() });
56
+ return id;
57
+ }
58
+ catch (error) {
59
+ console.error('Failed to add document:', error);
60
+ throw error;
61
+ }
62
+ }
63
+ /**
64
+ * Search for similar documents
65
+ */
66
+ async searchText(query, limit = 10) {
67
+ if (!this.initialized || !this.embedder) {
68
+ throw new Error('Database not initialized');
69
+ }
70
+ try {
71
+ // Generate query embedding
72
+ const queryVector = await this.embedder.embed(query);
73
+ // Calculate similarities
74
+ const results = [];
75
+ for (const [id, vector] of this.vectors.entries()) {
76
+ const score = 1 - cosineDistance(queryVector, vector); // Convert distance to similarity
77
+ const metadata = this.metadata.get(id);
78
+ results.push({
79
+ id,
80
+ score,
81
+ metadata,
82
+ text: metadata?.text
83
+ });
84
+ }
85
+ // Sort by score (highest first) and limit
86
+ return results
87
+ .sort((a, b) => b.score - a.score)
88
+ .slice(0, limit);
89
+ }
90
+ catch (error) {
91
+ console.error('Search failed:', error);
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Add a relationship between two documents
97
+ */
98
+ async addVerb(sourceId, targetId, verb, metadata = {}) {
99
+ const verbId = this.generateId();
100
+ const verbData = {
101
+ id: verbId,
102
+ source: sourceId,
103
+ target: targetId,
104
+ verb,
105
+ metadata,
106
+ timestamp: Date.now()
107
+ };
108
+ if (!this.verbs.has(sourceId)) {
109
+ this.verbs.set(sourceId, []);
110
+ }
111
+ this.verbs.get(sourceId).push(verbData);
112
+ return verbId;
113
+ }
114
+ /**
115
+ * Get relationships from a source document
116
+ */
117
+ async getVerbsBySource(sourceId) {
118
+ return this.verbs.get(sourceId) || [];
119
+ }
120
+ /**
121
+ * Get a document by ID
122
+ */
123
+ async get(id) {
124
+ const metadata = this.metadata.get(id);
125
+ const vector = this.vectors.get(id);
126
+ if (!metadata || !vector)
127
+ return null;
128
+ return {
129
+ id,
130
+ vector,
131
+ ...metadata
132
+ };
133
+ }
134
+ /**
135
+ * Delete a document
136
+ */
137
+ async delete(id) {
138
+ const deleted = this.vectors.delete(id) && this.metadata.delete(id);
139
+ this.verbs.delete(id);
140
+ return deleted;
141
+ }
142
+ /**
143
+ * Update document metadata
144
+ */
145
+ async updateMetadata(id, newMetadata) {
146
+ const metadata = this.metadata.get(id);
147
+ if (!metadata)
148
+ return false;
149
+ this.metadata.set(id, { ...metadata, ...newMetadata });
150
+ return true;
151
+ }
152
+ /**
153
+ * Get the number of documents
154
+ */
155
+ size() {
156
+ return this.vectors.size;
157
+ }
158
+ /**
159
+ * Generate a random ID
160
+ */
161
+ generateId() {
162
+ return 'id-' + Math.random().toString(36).substr(2, 9) + '-' + Date.now();
163
+ }
164
+ /**
165
+ * Get storage info
166
+ */
167
+ getStorage() {
168
+ return this.storage;
169
+ }
170
+ }
171
+ // Export noun and verb types for compatibility
172
+ export const NounType = {
173
+ Person: 'Person',
174
+ Organization: 'Organization',
175
+ Location: 'Location',
176
+ Thing: 'Thing',
177
+ Concept: 'Concept',
178
+ Event: 'Event',
179
+ Document: 'Document',
180
+ Media: 'Media',
181
+ File: 'File',
182
+ Message: 'Message',
183
+ Content: 'Content'
184
+ };
185
+ export const VerbType = {
186
+ RelatedTo: 'related_to',
187
+ Contains: 'contains',
188
+ PartOf: 'part_of',
189
+ LocatedAt: 'located_at',
190
+ References: 'references',
191
+ Owns: 'owns',
192
+ CreatedBy: 'created_by',
193
+ BelongsTo: 'belongs_to',
194
+ Likes: 'likes',
195
+ Follows: 'follows'
196
+ };
197
+ // Export the main class as BrainyData for compatibility
198
+ export { DemoBrainyData as BrainyData };
199
+ // Default export
200
+ export default DemoBrainyData;
201
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.d.ts","sourceRoot":"","sources":["../../src/distributed/configManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAC,CAAgB;IACzC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,cAAc,CAAC,CAAgC;gBAGrD,OAAO,EAAE,cAAc,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAwB1D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBzC;;OAEG;YACW,kBAAkB;IAkChC;;;OAGG;YACW,aAAa;IAwB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,UAAU;IAWxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;YACW,eAAe;IAmD7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;YACW,UAAU;IAYxB;;OAEG;IACH,SAAS,IAAI,YAAY,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,IAAI,YAAY;IAOvB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAIjE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,EAAE;IAWtD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAe/B"}
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Distributed Configuration Manager
3
+ * Manages shared configuration in S3 for distributed Brainy instances
4
+ */
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ export class DistributedConfigManager {
7
+ constructor(storage, distributedConfig, brainyMode) {
8
+ this.config = null;
9
+ this.lastConfigVersion = 0;
10
+ this.storage = storage;
11
+ this.instanceId = distributedConfig?.instanceId || `instance-${uuidv4()}`;
12
+ this.configPath = distributedConfig?.configPath || '_brainy/config.json';
13
+ this.heartbeatInterval = distributedConfig?.heartbeatInterval || 30000;
14
+ this.configCheckInterval = distributedConfig?.configCheckInterval || 10000;
15
+ this.instanceTimeout = distributedConfig?.instanceTimeout || 60000;
16
+ // Set role from distributed config if provided
17
+ if (distributedConfig?.role) {
18
+ this.role = distributedConfig.role;
19
+ }
20
+ // Infer role from Brainy's read/write mode if not explicitly set
21
+ else if (brainyMode) {
22
+ if (brainyMode.writeOnly) {
23
+ this.role = 'writer';
24
+ }
25
+ else if (brainyMode.readOnly) {
26
+ this.role = 'reader';
27
+ }
28
+ // If neither readOnly nor writeOnly, role must be explicitly set
29
+ }
30
+ }
31
+ /**
32
+ * Initialize the distributed configuration
33
+ */
34
+ async initialize() {
35
+ // Load or create configuration
36
+ this.config = await this.loadOrCreateConfig();
37
+ // Determine role if not explicitly set
38
+ if (!this.role) {
39
+ this.role = await this.determineRole();
40
+ }
41
+ // Register this instance
42
+ await this.registerInstance();
43
+ // Start heartbeat and config watching
44
+ this.startHeartbeat();
45
+ this.startConfigWatch();
46
+ return this.config;
47
+ }
48
+ /**
49
+ * Load existing config or create new one
50
+ */
51
+ async loadOrCreateConfig() {
52
+ try {
53
+ // Use metadata storage with a special ID for config
54
+ const configData = await this.storage.getMetadata('_distributed_config');
55
+ if (configData) {
56
+ this.lastConfigVersion = configData.version;
57
+ return configData;
58
+ }
59
+ }
60
+ catch (error) {
61
+ // Config doesn't exist yet
62
+ }
63
+ // Create default config
64
+ const newConfig = {
65
+ version: 1,
66
+ updated: new Date().toISOString(),
67
+ settings: {
68
+ partitionStrategy: 'hash',
69
+ partitionCount: 100,
70
+ embeddingModel: 'text-embedding-ada-002',
71
+ dimensions: 1536,
72
+ distanceMetric: 'cosine',
73
+ hnswParams: {
74
+ M: 16,
75
+ efConstruction: 200
76
+ }
77
+ },
78
+ instances: {}
79
+ };
80
+ await this.saveConfig(newConfig);
81
+ return newConfig;
82
+ }
83
+ /**
84
+ * Determine role based on configuration
85
+ * IMPORTANT: Role must be explicitly set - no automatic assignment based on order
86
+ */
87
+ async determineRole() {
88
+ // Check environment variable first
89
+ if (process.env.BRAINY_ROLE) {
90
+ const role = process.env.BRAINY_ROLE.toLowerCase();
91
+ if (role === 'writer' || role === 'reader' || role === 'hybrid') {
92
+ return role;
93
+ }
94
+ throw new Error(`Invalid BRAINY_ROLE: ${process.env.BRAINY_ROLE}. Must be 'writer', 'reader', or 'hybrid'`);
95
+ }
96
+ // Check if explicitly passed in distributed config
97
+ if (this.role) {
98
+ return this.role;
99
+ }
100
+ // DO NOT auto-assign roles based on deployment order or existing instances
101
+ // This is dangerous and can lead to data corruption or loss
102
+ throw new Error('Distributed mode requires explicit role configuration. ' +
103
+ 'Set BRAINY_ROLE environment variable or pass role in distributed config. ' +
104
+ 'Valid roles: "writer", "reader", "hybrid"');
105
+ }
106
+ /**
107
+ * Check if an instance is still alive
108
+ */
109
+ isInstanceAlive(instance) {
110
+ const lastSeen = new Date(instance.lastHeartbeat).getTime();
111
+ const now = Date.now();
112
+ return (now - lastSeen) < this.instanceTimeout;
113
+ }
114
+ /**
115
+ * Register this instance in the shared config
116
+ */
117
+ async registerInstance() {
118
+ if (!this.config)
119
+ return;
120
+ // Role must be set by this point
121
+ if (!this.role) {
122
+ throw new Error('Cannot register instance without a role');
123
+ }
124
+ const instanceInfo = {
125
+ role: this.role,
126
+ status: 'active',
127
+ lastHeartbeat: new Date().toISOString(),
128
+ metrics: {
129
+ memoryUsage: process.memoryUsage().heapUsed
130
+ }
131
+ };
132
+ // Add endpoint if available
133
+ if (process.env.SERVICE_ENDPOINT) {
134
+ instanceInfo.endpoint = process.env.SERVICE_ENDPOINT;
135
+ }
136
+ this.config.instances[this.instanceId] = instanceInfo;
137
+ await this.saveConfig(this.config);
138
+ }
139
+ /**
140
+ * Save configuration with version increment
141
+ */
142
+ async saveConfig(config) {
143
+ config.version++;
144
+ config.updated = new Date().toISOString();
145
+ this.lastConfigVersion = config.version;
146
+ // Use metadata storage with a special ID for config
147
+ await this.storage.saveMetadata('_distributed_config', config);
148
+ this.config = config;
149
+ }
150
+ /**
151
+ * Start heartbeat to keep instance alive in config
152
+ */
153
+ startHeartbeat() {
154
+ this.heartbeatTimer = setInterval(async () => {
155
+ await this.updateHeartbeat();
156
+ }, this.heartbeatInterval);
157
+ }
158
+ /**
159
+ * Update heartbeat and clean stale instances
160
+ */
161
+ async updateHeartbeat() {
162
+ if (!this.config)
163
+ return;
164
+ // Reload config to get latest state
165
+ try {
166
+ const latestConfig = await this.loadConfig();
167
+ if (latestConfig) {
168
+ this.config = latestConfig;
169
+ }
170
+ }
171
+ catch (error) {
172
+ console.error('Failed to reload config:', error);
173
+ }
174
+ // Update our heartbeat
175
+ if (this.config.instances[this.instanceId]) {
176
+ this.config.instances[this.instanceId].lastHeartbeat = new Date().toISOString();
177
+ this.config.instances[this.instanceId].status = 'active';
178
+ // Update metrics if available
179
+ this.config.instances[this.instanceId].metrics = {
180
+ memoryUsage: process.memoryUsage().heapUsed
181
+ };
182
+ }
183
+ else {
184
+ // Re-register if we were removed
185
+ await this.registerInstance();
186
+ return;
187
+ }
188
+ // Clean up stale instances
189
+ const now = Date.now();
190
+ let hasChanges = false;
191
+ for (const [id, instance] of Object.entries(this.config.instances)) {
192
+ if (id === this.instanceId)
193
+ continue;
194
+ const lastSeen = new Date(instance.lastHeartbeat).getTime();
195
+ if (now - lastSeen > this.instanceTimeout) {
196
+ delete this.config.instances[id];
197
+ hasChanges = true;
198
+ }
199
+ }
200
+ // Save if there were changes
201
+ if (hasChanges) {
202
+ await this.saveConfig(this.config);
203
+ }
204
+ else {
205
+ // Just update our heartbeat without version increment
206
+ await this.storage.saveMetadata('_distributed_config', this.config);
207
+ }
208
+ }
209
+ /**
210
+ * Start watching for config changes
211
+ */
212
+ startConfigWatch() {
213
+ this.configWatchTimer = setInterval(async () => {
214
+ await this.checkForConfigUpdates();
215
+ }, this.configCheckInterval);
216
+ }
217
+ /**
218
+ * Check for configuration updates
219
+ */
220
+ async checkForConfigUpdates() {
221
+ try {
222
+ const latestConfig = await this.loadConfig();
223
+ if (!latestConfig)
224
+ return;
225
+ if (latestConfig.version > this.lastConfigVersion) {
226
+ this.config = latestConfig;
227
+ this.lastConfigVersion = latestConfig.version;
228
+ // Notify listeners of config update
229
+ if (this.onConfigUpdate) {
230
+ this.onConfigUpdate(latestConfig);
231
+ }
232
+ }
233
+ }
234
+ catch (error) {
235
+ console.error('Failed to check config updates:', error);
236
+ }
237
+ }
238
+ /**
239
+ * Load configuration from storage
240
+ */
241
+ async loadConfig() {
242
+ try {
243
+ const configData = await this.storage.getMetadata('_distributed_config');
244
+ if (configData) {
245
+ return configData;
246
+ }
247
+ }
248
+ catch (error) {
249
+ console.error('Failed to load config:', error);
250
+ }
251
+ return null;
252
+ }
253
+ /**
254
+ * Get current configuration
255
+ */
256
+ getConfig() {
257
+ return this.config;
258
+ }
259
+ /**
260
+ * Get instance role
261
+ */
262
+ getRole() {
263
+ if (!this.role) {
264
+ throw new Error('Role not initialized');
265
+ }
266
+ return this.role;
267
+ }
268
+ /**
269
+ * Get instance ID
270
+ */
271
+ getInstanceId() {
272
+ return this.instanceId;
273
+ }
274
+ /**
275
+ * Set config update callback
276
+ */
277
+ setOnConfigUpdate(callback) {
278
+ this.onConfigUpdate = callback;
279
+ }
280
+ /**
281
+ * Get all active instances of a specific role
282
+ */
283
+ getInstancesByRole(role) {
284
+ if (!this.config)
285
+ return [];
286
+ return Object.entries(this.config.instances)
287
+ .filter(([_, instance]) => instance.role === role &&
288
+ this.isInstanceAlive(instance))
289
+ .map(([_, instance]) => instance);
290
+ }
291
+ /**
292
+ * Update instance metrics
293
+ */
294
+ async updateMetrics(metrics) {
295
+ if (!this.config || !this.config.instances[this.instanceId])
296
+ return;
297
+ this.config.instances[this.instanceId].metrics = {
298
+ ...this.config.instances[this.instanceId].metrics,
299
+ ...metrics
300
+ };
301
+ // Don't increment version for metric updates
302
+ await this.storage.saveMetadata('_distributed_config', this.config);
303
+ }
304
+ /**
305
+ * Cleanup resources
306
+ */
307
+ async cleanup() {
308
+ // Stop timers
309
+ if (this.heartbeatTimer) {
310
+ clearInterval(this.heartbeatTimer);
311
+ }
312
+ if (this.configWatchTimer) {
313
+ clearInterval(this.configWatchTimer);
314
+ }
315
+ // Mark instance as inactive
316
+ if (this.config && this.config.instances[this.instanceId]) {
317
+ this.config.instances[this.instanceId].status = 'inactive';
318
+ await this.saveConfig(this.config);
319
+ }
320
+ }
321
+ }
322
+ //# sourceMappingURL=configManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/distributed/configManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainDetector.d.ts","sourceRoot":"","sources":["../../src/distributed/domainDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAiDrB;IAED,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,WAAW,CAAiC;IAEpD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAqDvC;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM9C;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;CASjC"}