agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.2

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 (317) hide show
  1. package/dist/agentdb.min.js +4 -4
  2. package/dist/simulation/cli.js +0 -0
  3. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  4. package/dist/src/cli/agentdb-cli.js +78 -0
  5. package/dist/src/cli/agentdb-cli.js.map +1 -1
  6. package/dist/src/cli/commands/init.js +3 -3
  7. package/dist/src/cli/commands/init.js.map +1 -1
  8. package/package.json +3 -3
  9. package/src/cli/agentdb-cli.ts +78 -0
  10. package/src/cli/commands/init.ts +3 -3
  11. package/dist/agentdb-advanced.js +0 -2110
  12. package/dist/agentdb-advanced.min.js +0 -1
  13. package/dist/backends/GraphBackend.d.ts +0 -196
  14. package/dist/backends/GraphBackend.d.ts.map +0 -1
  15. package/dist/backends/GraphBackend.js +0 -33
  16. package/dist/backends/GraphBackend.js.map +0 -1
  17. package/dist/backends/LearningBackend.d.ts +0 -148
  18. package/dist/backends/LearningBackend.d.ts.map +0 -1
  19. package/dist/backends/LearningBackend.js +0 -27
  20. package/dist/backends/LearningBackend.js.map +0 -1
  21. package/dist/backends/VectorBackend.d.ts +0 -119
  22. package/dist/backends/VectorBackend.d.ts.map +0 -1
  23. package/dist/backends/VectorBackend.js +0 -14
  24. package/dist/backends/VectorBackend.js.map +0 -1
  25. package/dist/backends/detector.d.ts +0 -81
  26. package/dist/backends/detector.d.ts.map +0 -1
  27. package/dist/backends/detector.js +0 -192
  28. package/dist/backends/detector.js.map +0 -1
  29. package/dist/backends/factory.d.ts +0 -50
  30. package/dist/backends/factory.d.ts.map +0 -1
  31. package/dist/backends/factory.js +0 -161
  32. package/dist/backends/factory.js.map +0 -1
  33. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  34. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  35. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  36. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  37. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  38. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  39. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  40. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  41. package/dist/backends/hnswlib/index.d.ts +0 -7
  42. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  43. package/dist/backends/hnswlib/index.js +0 -7
  44. package/dist/backends/hnswlib/index.js.map +0 -1
  45. package/dist/backends/index.d.ts +0 -14
  46. package/dist/backends/index.d.ts.map +0 -1
  47. package/dist/backends/index.js +0 -13
  48. package/dist/backends/index.js.map +0 -1
  49. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  50. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  51. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  52. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  53. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  54. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  55. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  56. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  57. package/dist/backends/ruvector/index.d.ts +0 -9
  58. package/dist/backends/ruvector/index.d.ts.map +0 -1
  59. package/dist/backends/ruvector/index.js +0 -8
  60. package/dist/backends/ruvector/index.js.map +0 -1
  61. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  62. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  63. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  64. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  65. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  66. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  67. package/dist/browser/AdvancedFeatures.js +0 -430
  68. package/dist/browser/AdvancedFeatures.js.map +0 -1
  69. package/dist/browser/HNSWIndex.d.ts +0 -117
  70. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  71. package/dist/browser/HNSWIndex.js +0 -402
  72. package/dist/browser/HNSWIndex.js.map +0 -1
  73. package/dist/browser/ProductQuantization.d.ts +0 -107
  74. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  75. package/dist/browser/ProductQuantization.js +0 -337
  76. package/dist/browser/ProductQuantization.js.map +0 -1
  77. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  78. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  79. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  80. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  81. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  82. package/dist/browser/browser/HNSWIndex.js +0 -402
  83. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  84. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  85. package/dist/browser/browser/ProductQuantization.js +0 -348
  86. package/dist/browser/browser/index.d.ts +0 -223
  87. package/dist/browser/browser/index.d.ts.map +0 -1
  88. package/dist/browser/browser/index.js +0 -233
  89. package/dist/browser/index.d.ts +0 -223
  90. package/dist/browser/index.d.ts.map +0 -1
  91. package/dist/browser/index.js +0 -225
  92. package/dist/browser/index.js.map +0 -1
  93. package/dist/cli/agentdb-cli.d.ts +0 -154
  94. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  95. package/dist/cli/agentdb-cli.js +0 -2273
  96. package/dist/cli/agentdb-cli.js.map +0 -1
  97. package/dist/cli/agentdb.db +0 -0
  98. package/dist/cli/commands/init.d.ts +0 -12
  99. package/dist/cli/commands/init.d.ts.map +0 -1
  100. package/dist/cli/commands/init.js +0 -115
  101. package/dist/cli/commands/init.js.map +0 -1
  102. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  103. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  104. package/dist/cli/commands/install-embeddings.js +0 -68
  105. package/dist/cli/commands/install-embeddings.js.map +0 -1
  106. package/dist/cli/commands/migrate.d.ts +0 -15
  107. package/dist/cli/commands/migrate.d.ts.map +0 -1
  108. package/dist/cli/commands/migrate.js +0 -425
  109. package/dist/cli/commands/migrate.js.map +0 -1
  110. package/dist/cli/commands/status.d.ts +0 -10
  111. package/dist/cli/commands/status.d.ts.map +0 -1
  112. package/dist/cli/commands/status.js +0 -129
  113. package/dist/cli/commands/status.js.map +0 -1
  114. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  115. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  116. package/dist/controllers/CausalMemoryGraph.js +0 -323
  117. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  118. package/dist/controllers/CausalRecall.d.ts +0 -139
  119. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  120. package/dist/controllers/CausalRecall.js +0 -356
  121. package/dist/controllers/CausalRecall.js.map +0 -1
  122. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  123. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  124. package/dist/controllers/ContextSynthesizer.js +0 -208
  125. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  126. package/dist/controllers/EmbeddingService.d.ts +0 -37
  127. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  128. package/dist/controllers/EmbeddingService.js +0 -136
  129. package/dist/controllers/EmbeddingService.js.map +0 -1
  130. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  131. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  132. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  133. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  134. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  135. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  136. package/dist/controllers/ExplainableRecall.js +0 -485
  137. package/dist/controllers/ExplainableRecall.js.map +0 -1
  138. package/dist/controllers/HNSWIndex.d.ts +0 -128
  139. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  140. package/dist/controllers/HNSWIndex.js +0 -361
  141. package/dist/controllers/HNSWIndex.js.map +0 -1
  142. package/dist/controllers/LearningSystem.d.ts +0 -195
  143. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  144. package/dist/controllers/LearningSystem.js +0 -929
  145. package/dist/controllers/LearningSystem.js.map +0 -1
  146. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  147. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  148. package/dist/controllers/MMRDiversityRanker.js +0 -130
  149. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  150. package/dist/controllers/MetadataFilter.d.ts +0 -70
  151. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  152. package/dist/controllers/MetadataFilter.js +0 -243
  153. package/dist/controllers/MetadataFilter.js.map +0 -1
  154. package/dist/controllers/NightlyLearner.d.ts +0 -114
  155. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  156. package/dist/controllers/NightlyLearner.js +0 -394
  157. package/dist/controllers/NightlyLearner.js.map +0 -1
  158. package/dist/controllers/QUICClient.d.ts +0 -109
  159. package/dist/controllers/QUICClient.d.ts.map +0 -1
  160. package/dist/controllers/QUICClient.js +0 -299
  161. package/dist/controllers/QUICClient.js.map +0 -1
  162. package/dist/controllers/QUICServer.d.ts +0 -121
  163. package/dist/controllers/QUICServer.d.ts.map +0 -1
  164. package/dist/controllers/QUICServer.js +0 -383
  165. package/dist/controllers/QUICServer.js.map +0 -1
  166. package/dist/controllers/ReasoningBank.d.ts +0 -196
  167. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  168. package/dist/controllers/ReasoningBank.js +0 -494
  169. package/dist/controllers/ReasoningBank.js.map +0 -1
  170. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  171. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  172. package/dist/controllers/ReflexionMemory.js +0 -521
  173. package/dist/controllers/ReflexionMemory.js.map +0 -1
  174. package/dist/controllers/SkillLibrary.d.ts +0 -149
  175. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  176. package/dist/controllers/SkillLibrary.js +0 -547
  177. package/dist/controllers/SkillLibrary.js.map +0 -1
  178. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  179. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  180. package/dist/controllers/SyncCoordinator.js +0 -441
  181. package/dist/controllers/SyncCoordinator.js.map +0 -1
  182. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  183. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  184. package/dist/controllers/WASMVectorSearch.js +0 -234
  185. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  186. package/dist/controllers/frontier-index.d.ts +0 -14
  187. package/dist/controllers/frontier-index.d.ts.map +0 -1
  188. package/dist/controllers/frontier-index.js +0 -10
  189. package/dist/controllers/frontier-index.js.map +0 -1
  190. package/dist/controllers/index.d.ts +0 -30
  191. package/dist/controllers/index.d.ts.map +0 -1
  192. package/dist/controllers/index.js +0 -18
  193. package/dist/controllers/index.js.map +0 -1
  194. package/dist/db-fallback.d.ts +0 -26
  195. package/dist/db-fallback.d.ts.map +0 -1
  196. package/dist/db-fallback.js +0 -264
  197. package/dist/db-fallback.js.map +0 -1
  198. package/dist/db-test.d.ts +0 -13
  199. package/dist/db-test.d.ts.map +0 -1
  200. package/dist/db-test.js +0 -55
  201. package/dist/db-test.js.map +0 -1
  202. package/dist/db-unified.d.ts +0 -76
  203. package/dist/db-unified.d.ts.map +0 -1
  204. package/dist/db-unified.js +0 -278
  205. package/dist/db-unified.js.map +0 -1
  206. package/dist/examples/quic-sync-example.d.ts +0 -9
  207. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  208. package/dist/examples/quic-sync-example.js +0 -169
  209. package/dist/examples/quic-sync-example.js.map +0 -1
  210. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  211. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  212. package/dist/examples/wasm-vector-usage.js +0 -190
  213. package/dist/examples/wasm-vector-usage.js.map +0 -1
  214. package/dist/index.d.ts +0 -28
  215. package/dist/index.d.ts.map +0 -1
  216. package/dist/index.js +0 -35
  217. package/dist/index.js.map +0 -1
  218. package/dist/malp/core/ccc.d.ts +0 -99
  219. package/dist/malp/core/ccc.d.ts.map +0 -1
  220. package/dist/malp/core/ccc.js +0 -181
  221. package/dist/malp/core/ccc.js.map +0 -1
  222. package/dist/malp/core/index.d.ts +0 -9
  223. package/dist/malp/core/index.d.ts.map +0 -1
  224. package/dist/malp/core/index.js +0 -9
  225. package/dist/malp/core/index.js.map +0 -1
  226. package/dist/malp/core/linalg.d.ts +0 -101
  227. package/dist/malp/core/linalg.d.ts.map +0 -1
  228. package/dist/malp/core/linalg.js +0 -278
  229. package/dist/malp/core/linalg.js.map +0 -1
  230. package/dist/malp/core/optimizer.d.ts +0 -68
  231. package/dist/malp/core/optimizer.d.ts.map +0 -1
  232. package/dist/malp/core/optimizer.js +0 -160
  233. package/dist/malp/core/optimizer.js.map +0 -1
  234. package/dist/malp/index.d.ts +0 -33
  235. package/dist/malp/index.d.ts.map +0 -1
  236. package/dist/malp/index.js +0 -37
  237. package/dist/malp/index.js.map +0 -1
  238. package/dist/malp/metrics/agreement.d.ts +0 -106
  239. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  240. package/dist/malp/metrics/agreement.js +0 -199
  241. package/dist/malp/metrics/agreement.js.map +0 -1
  242. package/dist/malp/metrics/comparison.d.ts +0 -93
  243. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  244. package/dist/malp/metrics/comparison.js +0 -256
  245. package/dist/malp/metrics/comparison.js.map +0 -1
  246. package/dist/malp/metrics/index.d.ts +0 -8
  247. package/dist/malp/metrics/index.d.ts.map +0 -1
  248. package/dist/malp/metrics/index.js +0 -8
  249. package/dist/malp/metrics/index.js.map +0 -1
  250. package/dist/malp/metrics/performance.d.ts +0 -61
  251. package/dist/malp/metrics/performance.d.ts.map +0 -1
  252. package/dist/malp/metrics/performance.js +0 -190
  253. package/dist/malp/metrics/performance.js.map +0 -1
  254. package/dist/malp/models/index.d.ts +0 -7
  255. package/dist/malp/models/index.d.ts.map +0 -1
  256. package/dist/malp/models/index.js +0 -7
  257. package/dist/malp/models/index.js.map +0 -1
  258. package/dist/malp/models/malp.d.ts +0 -116
  259. package/dist/malp/models/malp.d.ts.map +0 -1
  260. package/dist/malp/models/malp.js +0 -206
  261. package/dist/malp/models/malp.js.map +0 -1
  262. package/dist/malp/models/regressor.d.ts +0 -80
  263. package/dist/malp/models/regressor.d.ts.map +0 -1
  264. package/dist/malp/models/regressor.js +0 -229
  265. package/dist/malp/models/regressor.js.map +0 -1
  266. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  267. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  268. package/dist/malp/reasoningbank_validator.js +0 -246
  269. package/dist/malp/reasoningbank_validator.js.map +0 -1
  270. package/dist/malp/wasm_bindings.d.ts +0 -344
  271. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  272. package/dist/malp/wasm_bindings.js +0 -9
  273. package/dist/malp/wasm_bindings.js.map +0 -1
  274. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  275. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  276. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  277. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  278. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  279. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  280. package/dist/mcp/learning-tools-handlers.js +0 -105
  281. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  282. package/dist/optimizations/BatchOperations.d.ts +0 -109
  283. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  284. package/dist/optimizations/BatchOperations.js +0 -407
  285. package/dist/optimizations/BatchOperations.js.map +0 -1
  286. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  287. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  288. package/dist/optimizations/QueryOptimizer.js +0 -228
  289. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  290. package/dist/optimizations/ToolCache.d.ts +0 -137
  291. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  292. package/dist/optimizations/ToolCache.js +0 -281
  293. package/dist/optimizations/ToolCache.js.map +0 -1
  294. package/dist/optimizations/index.d.ts +0 -10
  295. package/dist/optimizations/index.d.ts.map +0 -1
  296. package/dist/optimizations/index.js +0 -8
  297. package/dist/optimizations/index.js.map +0 -1
  298. package/dist/security/input-validation.d.ts +0 -109
  299. package/dist/security/input-validation.d.ts.map +0 -1
  300. package/dist/security/input-validation.js +0 -398
  301. package/dist/security/input-validation.js.map +0 -1
  302. package/dist/security/limits.d.ts +0 -150
  303. package/dist/security/limits.d.ts.map +0 -1
  304. package/dist/security/limits.js +0 -288
  305. package/dist/security/limits.js.map +0 -1
  306. package/dist/security/path-security.d.ts +0 -100
  307. package/dist/security/path-security.d.ts.map +0 -1
  308. package/dist/security/path-security.js +0 -337
  309. package/dist/security/path-security.js.map +0 -1
  310. package/dist/security/validation.d.ts +0 -95
  311. package/dist/security/validation.d.ts.map +0 -1
  312. package/dist/security/validation.js +0 -315
  313. package/dist/security/validation.js.map +0 -1
  314. package/dist/types/quic.d.ts +0 -518
  315. package/dist/types/quic.d.ts.map +0 -1
  316. package/dist/types/quic.js +0 -272
  317. package/dist/types/quic.js.map +0 -1
@@ -1,117 +0,0 @@
1
- /**
2
- * HNSW (Hierarchical Navigable Small World) Index for Browser
3
- *
4
- * JavaScript implementation of HNSW algorithm for fast approximate nearest neighbor search.
5
- * Achieves O(log n) search complexity vs O(n) for linear scan.
6
- *
7
- * Features:
8
- * - Multi-layer graph structure
9
- * - Probabilistic layer assignment
10
- * - Greedy search algorithm
11
- * - Dynamic insertion
12
- * - Configurable M (connections per node)
13
- * - Configurable efConstruction and efSearch
14
- *
15
- * Performance:
16
- * - 10-20x faster than linear scan (vs 150x for native HNSW)
17
- * - Memory: ~16 bytes per edge + vector storage
18
- * - Suitable for datasets up to 100K vectors in browser
19
- */
20
- export interface HNSWConfig {
21
- dimension: number;
22
- M: number;
23
- efConstruction: number;
24
- efSearch: number;
25
- ml: number;
26
- maxLayers: number;
27
- distanceFunction?: 'cosine' | 'euclidean' | 'manhattan';
28
- }
29
- export interface HNSWNode {
30
- id: number;
31
- vector: Float32Array;
32
- level: number;
33
- connections: Map<number, number[]>;
34
- }
35
- export interface SearchResult {
36
- id: number;
37
- distance: number;
38
- vector: Float32Array;
39
- }
40
- export declare class HNSWIndex {
41
- private config;
42
- private nodes;
43
- private entryPoint;
44
- private currentId;
45
- private ml;
46
- constructor(config?: Partial<HNSWConfig>);
47
- /**
48
- * Add vector to index
49
- */
50
- add(vector: Float32Array, id?: number): number;
51
- /**
52
- * Search for k nearest neighbors
53
- */
54
- search(query: Float32Array, k: number, ef?: number): SearchResult[];
55
- /**
56
- * Search at specific layer
57
- */
58
- private searchLayer;
59
- /**
60
- * Select best neighbors using heuristic
61
- */
62
- private selectNeighbors;
63
- /**
64
- * Connect two nodes at layer
65
- */
66
- private connect;
67
- /**
68
- * Random level assignment
69
- */
70
- private randomLevel;
71
- /**
72
- * Distance function
73
- */
74
- private distance;
75
- private cosineSimilarity;
76
- private euclideanDistance;
77
- private manhattanDistance;
78
- /**
79
- * Get index statistics
80
- */
81
- getStats(): {
82
- numNodes: number;
83
- numLayers: number;
84
- avgConnections: number;
85
- entryPointLevel: number;
86
- memoryBytes: number;
87
- };
88
- /**
89
- * Export index for persistence
90
- */
91
- export(): string;
92
- /**
93
- * Import index from JSON
94
- */
95
- import(json: string): void;
96
- /**
97
- * Clear index
98
- */
99
- clear(): void;
100
- /**
101
- * Get number of nodes
102
- */
103
- size(): number;
104
- }
105
- /**
106
- * Helper function to create HNSW index with default settings
107
- */
108
- export declare function createHNSW(dimension: number): HNSWIndex;
109
- /**
110
- * Helper function to create fast HNSW (lower quality, faster build)
111
- */
112
- export declare function createFastHNSW(dimension: number): HNSWIndex;
113
- /**
114
- * Helper function to create accurate HNSW (higher quality, slower build)
115
- */
116
- export declare function createAccurateHNSW(dimension: number): HNSWIndex;
117
- //# sourceMappingURL=HNSWIndex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HNSWIndex.d.ts","sourceRoot":"","sources":["../../src/browser/HNSWIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;CACzD;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB;AA0DD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,EAAE,CAAS;gBAEP,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAc5C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAsE9C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA0BnE;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,QAAQ,IAAI;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB;IAqCD;;OAEG;IACH,MAAM,IAAI,MAAM;IAgBhB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAOvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAO3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAO/D"}
@@ -1,402 +0,0 @@
1
- /**
2
- * HNSW (Hierarchical Navigable Small World) Index for Browser
3
- *
4
- * JavaScript implementation of HNSW algorithm for fast approximate nearest neighbor search.
5
- * Achieves O(log n) search complexity vs O(n) for linear scan.
6
- *
7
- * Features:
8
- * - Multi-layer graph structure
9
- * - Probabilistic layer assignment
10
- * - Greedy search algorithm
11
- * - Dynamic insertion
12
- * - Configurable M (connections per node)
13
- * - Configurable efConstruction and efSearch
14
- *
15
- * Performance:
16
- * - 10-20x faster than linear scan (vs 150x for native HNSW)
17
- * - Memory: ~16 bytes per edge + vector storage
18
- * - Suitable for datasets up to 100K vectors in browser
19
- */
20
- class MinHeap {
21
- items = [];
22
- push(item, priority) {
23
- this.items.push({ item, priority });
24
- this.bubbleUp(this.items.length - 1);
25
- }
26
- pop() {
27
- if (this.items.length === 0)
28
- return undefined;
29
- const result = this.items[0].item;
30
- const last = this.items.pop();
31
- if (this.items.length > 0) {
32
- this.items[0] = last;
33
- this.bubbleDown(0);
34
- }
35
- return result;
36
- }
37
- peek() {
38
- return this.items[0]?.item;
39
- }
40
- size() {
41
- return this.items.length;
42
- }
43
- bubbleUp(index) {
44
- while (index > 0) {
45
- const parentIndex = Math.floor((index - 1) / 2);
46
- if (this.items[index].priority >= this.items[parentIndex].priority)
47
- break;
48
- [this.items[index], this.items[parentIndex]] = [this.items[parentIndex], this.items[index]];
49
- index = parentIndex;
50
- }
51
- }
52
- bubbleDown(index) {
53
- while (true) {
54
- const leftChild = 2 * index + 1;
55
- const rightChild = 2 * index + 2;
56
- let smallest = index;
57
- if (leftChild < this.items.length && this.items[leftChild].priority < this.items[smallest].priority) {
58
- smallest = leftChild;
59
- }
60
- if (rightChild < this.items.length && this.items[rightChild].priority < this.items[smallest].priority) {
61
- smallest = rightChild;
62
- }
63
- if (smallest === index)
64
- break;
65
- [this.items[index], this.items[smallest]] = [this.items[smallest], this.items[index]];
66
- index = smallest;
67
- }
68
- }
69
- }
70
- export class HNSWIndex {
71
- config;
72
- nodes = new Map();
73
- entryPoint = null;
74
- currentId = 0;
75
- ml;
76
- constructor(config = {}) {
77
- this.config = {
78
- dimension: config.dimension || 384,
79
- M: config.M || 16,
80
- efConstruction: config.efConstruction || 200,
81
- efSearch: config.efSearch || 50,
82
- ml: config.ml || 1 / Math.log(2),
83
- maxLayers: config.maxLayers || 16,
84
- distanceFunction: config.distanceFunction || 'cosine'
85
- };
86
- this.ml = this.config.ml;
87
- }
88
- /**
89
- * Add vector to index
90
- */
91
- add(vector, id) {
92
- const nodeId = id !== undefined ? id : this.currentId++;
93
- const level = this.randomLevel();
94
- const node = {
95
- id: nodeId,
96
- vector,
97
- level,
98
- connections: new Map()
99
- };
100
- // Initialize connections for each layer
101
- for (let l = 0; l <= level; l++) {
102
- node.connections.set(l, []);
103
- }
104
- if (this.entryPoint === null) {
105
- // First node
106
- this.entryPoint = nodeId;
107
- this.nodes.set(nodeId, node);
108
- return nodeId;
109
- }
110
- // Find nearest neighbors at each layer
111
- const ep = this.entryPoint;
112
- let nearest = ep;
113
- // Search from top layer to target layer + 1
114
- for (let lc = this.nodes.get(ep).level; lc > level; lc--) {
115
- nearest = this.searchLayer(vector, nearest, 1, lc)[0];
116
- }
117
- // Insert node at layers 0 to level
118
- for (let lc = Math.min(level, this.nodes.get(ep).level); lc >= 0; lc--) {
119
- const candidates = this.searchLayer(vector, nearest, this.config.efConstruction, lc);
120
- // Select M neighbors
121
- const M = lc === 0 ? this.config.M * 2 : this.config.M;
122
- const neighbors = this.selectNeighbors(vector, candidates, M);
123
- // Add bidirectional connections
124
- for (const neighbor of neighbors) {
125
- this.connect(nodeId, neighbor, lc);
126
- this.connect(neighbor, nodeId, lc);
127
- // Prune connections if necessary
128
- const neighborNode = this.nodes.get(neighbor);
129
- const neighborConnections = neighborNode.connections.get(lc);
130
- if (neighborConnections.length > M) {
131
- const newNeighbors = this.selectNeighbors(neighborNode.vector, neighborConnections, M);
132
- neighborNode.connections.set(lc, newNeighbors);
133
- }
134
- }
135
- nearest = candidates[0];
136
- }
137
- // Update entry point if necessary
138
- if (level > this.nodes.get(this.entryPoint).level) {
139
- this.entryPoint = nodeId;
140
- }
141
- this.nodes.set(nodeId, node);
142
- return nodeId;
143
- }
144
- /**
145
- * Search for k nearest neighbors
146
- */
147
- search(query, k, ef) {
148
- if (this.entryPoint === null)
149
- return [];
150
- ef = ef || Math.max(this.config.efSearch, k);
151
- let ep = this.entryPoint;
152
- let nearest = ep;
153
- // Search from top to layer 1
154
- for (let lc = this.nodes.get(ep).level; lc > 0; lc--) {
155
- nearest = this.searchLayer(query, nearest, 1, lc)[0];
156
- }
157
- // Search at layer 0
158
- const candidates = this.searchLayer(query, nearest, ef, 0);
159
- // Convert to SearchResult and return top k
160
- return candidates
161
- .slice(0, k)
162
- .map(id => ({
163
- id,
164
- distance: this.distance(query, this.nodes.get(id).vector),
165
- vector: this.nodes.get(id).vector
166
- }));
167
- }
168
- /**
169
- * Search at specific layer
170
- */
171
- searchLayer(query, ep, ef, layer) {
172
- const visited = new Set();
173
- const candidates = new MinHeap();
174
- const w = new MinHeap();
175
- const dist = this.distance(query, this.nodes.get(ep).vector);
176
- candidates.push(ep, dist);
177
- w.push(ep, -dist); // Max heap (negate for min heap)
178
- visited.add(ep);
179
- while (candidates.size() > 0) {
180
- const c = candidates.pop();
181
- const fDist = -w.peek(); // Furthest point distance
182
- const cDist = this.distance(query, this.nodes.get(c).vector);
183
- if (cDist > fDist)
184
- break;
185
- const neighbors = this.nodes.get(c).connections.get(layer) || [];
186
- for (const e of neighbors) {
187
- if (visited.has(e))
188
- continue;
189
- visited.add(e);
190
- const eDist = this.distance(query, this.nodes.get(e).vector);
191
- const fDist = -w.peek();
192
- if (eDist < fDist || w.size() < ef) {
193
- candidates.push(e, eDist);
194
- w.push(e, -eDist);
195
- if (w.size() > ef) {
196
- w.pop();
197
- }
198
- }
199
- }
200
- }
201
- // Return ef nearest neighbors
202
- const result = [];
203
- while (w.size() > 0) {
204
- result.unshift(w.pop());
205
- }
206
- return result;
207
- }
208
- /**
209
- * Select best neighbors using heuristic
210
- */
211
- selectNeighbors(base, candidates, M) {
212
- if (candidates.length <= M)
213
- return candidates;
214
- // Sort by distance
215
- const sorted = candidates
216
- .map(id => ({
217
- id,
218
- distance: this.distance(base, this.nodes.get(id).vector)
219
- }))
220
- .sort((a, b) => a.distance - b.distance);
221
- return sorted.slice(0, M).map(x => x.id);
222
- }
223
- /**
224
- * Connect two nodes at layer
225
- */
226
- connect(from, to, layer) {
227
- const node = this.nodes.get(from);
228
- const connections = node.connections.get(layer);
229
- if (!connections.includes(to)) {
230
- connections.push(to);
231
- }
232
- }
233
- /**
234
- * Random level assignment
235
- */
236
- randomLevel() {
237
- let level = 0;
238
- while (Math.random() < this.ml && level < this.config.maxLayers - 1) {
239
- level++;
240
- }
241
- return level;
242
- }
243
- /**
244
- * Distance function
245
- */
246
- distance(a, b) {
247
- switch (this.config.distanceFunction) {
248
- case 'cosine':
249
- return 1 - this.cosineSimilarity(a, b);
250
- case 'euclidean':
251
- return this.euclideanDistance(a, b);
252
- case 'manhattan':
253
- return this.manhattanDistance(a, b);
254
- default:
255
- return 1 - this.cosineSimilarity(a, b);
256
- }
257
- }
258
- cosineSimilarity(a, b) {
259
- let dotProduct = 0;
260
- let normA = 0;
261
- let normB = 0;
262
- for (let i = 0; i < a.length; i++) {
263
- dotProduct += a[i] * b[i];
264
- normA += a[i] * a[i];
265
- normB += b[i] * b[i];
266
- }
267
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
268
- }
269
- euclideanDistance(a, b) {
270
- let sum = 0;
271
- for (let i = 0; i < a.length; i++) {
272
- const diff = a[i] - b[i];
273
- sum += diff * diff;
274
- }
275
- return Math.sqrt(sum);
276
- }
277
- manhattanDistance(a, b) {
278
- let sum = 0;
279
- for (let i = 0; i < a.length; i++) {
280
- sum += Math.abs(a[i] - b[i]);
281
- }
282
- return sum;
283
- }
284
- /**
285
- * Get index statistics
286
- */
287
- getStats() {
288
- if (this.nodes.size === 0) {
289
- return {
290
- numNodes: 0,
291
- numLayers: 0,
292
- avgConnections: 0,
293
- entryPointLevel: 0,
294
- memoryBytes: 0
295
- };
296
- }
297
- const maxLevel = Math.max(...Array.from(this.nodes.values()).map(n => n.level));
298
- let totalConnections = 0;
299
- for (const node of this.nodes.values()) {
300
- for (const connections of node.connections.values()) {
301
- totalConnections += connections.length;
302
- }
303
- }
304
- const avgConnections = totalConnections / this.nodes.size;
305
- // Estimate memory: vector + connections + metadata
306
- const vectorBytes = this.config.dimension * 4; // Float32Array
307
- const connectionBytes = avgConnections * 4; // number array
308
- const metadataBytes = 100; // rough estimate for node object
309
- const memoryBytes = this.nodes.size * (vectorBytes + connectionBytes + metadataBytes);
310
- return {
311
- numNodes: this.nodes.size,
312
- numLayers: maxLevel + 1,
313
- avgConnections,
314
- entryPointLevel: this.entryPoint ? this.nodes.get(this.entryPoint).level : 0,
315
- memoryBytes
316
- };
317
- }
318
- /**
319
- * Export index for persistence
320
- */
321
- export() {
322
- const data = {
323
- config: this.config,
324
- entryPoint: this.entryPoint,
325
- currentId: this.currentId,
326
- nodes: Array.from(this.nodes.entries()).map(([id, node]) => ({
327
- id,
328
- vector: Array.from(node.vector),
329
- level: node.level,
330
- connections: Array.from(node.connections.entries())
331
- }))
332
- };
333
- return JSON.stringify(data);
334
- }
335
- /**
336
- * Import index from JSON
337
- */
338
- import(json) {
339
- const data = JSON.parse(json);
340
- this.config = data.config;
341
- this.entryPoint = data.entryPoint;
342
- this.currentId = data.currentId;
343
- this.nodes.clear();
344
- for (const nodeData of data.nodes) {
345
- const node = {
346
- id: nodeData.id,
347
- vector: new Float32Array(nodeData.vector),
348
- level: nodeData.level,
349
- connections: new Map(nodeData.connections)
350
- };
351
- this.nodes.set(nodeData.id, node);
352
- }
353
- }
354
- /**
355
- * Clear index
356
- */
357
- clear() {
358
- this.nodes.clear();
359
- this.entryPoint = null;
360
- this.currentId = 0;
361
- }
362
- /**
363
- * Get number of nodes
364
- */
365
- size() {
366
- return this.nodes.size;
367
- }
368
- }
369
- /**
370
- * Helper function to create HNSW index with default settings
371
- */
372
- export function createHNSW(dimension) {
373
- return new HNSWIndex({
374
- dimension,
375
- M: 16,
376
- efConstruction: 200,
377
- efSearch: 50
378
- });
379
- }
380
- /**
381
- * Helper function to create fast HNSW (lower quality, faster build)
382
- */
383
- export function createFastHNSW(dimension) {
384
- return new HNSWIndex({
385
- dimension,
386
- M: 8,
387
- efConstruction: 100,
388
- efSearch: 30
389
- });
390
- }
391
- /**
392
- * Helper function to create accurate HNSW (higher quality, slower build)
393
- */
394
- export function createAccurateHNSW(dimension) {
395
- return new HNSWIndex({
396
- dimension,
397
- M: 32,
398
- efConstruction: 400,
399
- efSearch: 100
400
- });
401
- }
402
- //# sourceMappingURL=HNSWIndex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HNSWIndex.js","sourceRoot":"","sources":["../../src/browser/HNSWIndex.ts"],"names":[],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- /**
2
- * Product Quantization for Browser
3
- *
4
- * Compresses high-dimensional vectors using product quantization.
5
- * Achieves 4-32x memory reduction with minimal accuracy loss.
6
- *
7
- * Features:
8
- * - PQ8: 8 subvectors, 256 centroids each (4x compression)
9
- * - PQ16: 16 subvectors, 256 centroids each (8x compression)
10
- * - Asymmetric distance computation (ADC)
11
- * - K-means clustering for codebook training
12
- *
13
- * Performance:
14
- * - Memory: Float32 (4 bytes) → uint8 (1 byte) per subvector
15
- * - Speed: ~1.5x slower search vs uncompressed
16
- * - Accuracy: 95-99% recall@10
17
- */
18
- export interface PQConfig {
19
- dimension: number;
20
- numSubvectors: number;
21
- numCentroids: number;
22
- maxIterations?: number;
23
- convergenceThreshold?: number;
24
- }
25
- export interface PQCodebook {
26
- subvectorDim: number;
27
- numSubvectors: number;
28
- numCentroids: number;
29
- centroids: Float32Array[];
30
- }
31
- export interface CompressedVector {
32
- codes: Uint8Array;
33
- norm: number;
34
- }
35
- export declare class ProductQuantization {
36
- private config;
37
- private codebook;
38
- private trained;
39
- constructor(config: PQConfig);
40
- /**
41
- * Train codebook using k-means on training vectors
42
- */
43
- train(vectors: Float32Array[]): Promise<void>;
44
- /**
45
- * K-means clustering for centroids
46
- */
47
- private kMeans;
48
- /**
49
- * K-means++ initialization for better centroid selection
50
- */
51
- private kMeansPlusPlus;
52
- /**
53
- * Compress a vector using trained codebook
54
- */
55
- compress(vector: Float32Array): CompressedVector;
56
- /**
57
- * Decompress a vector (approximate reconstruction)
58
- */
59
- decompress(compressed: CompressedVector): Float32Array;
60
- /**
61
- * Asymmetric Distance Computation (ADC)
62
- * Computes distance from query vector to compressed vector
63
- */
64
- asymmetricDistance(query: Float32Array, compressed: CompressedVector): number;
65
- /**
66
- * Batch compression for multiple vectors
67
- */
68
- batchCompress(vectors: Float32Array[]): CompressedVector[];
69
- /**
70
- * Get memory savings
71
- */
72
- getCompressionRatio(): number;
73
- /**
74
- * Export codebook for persistence
75
- */
76
- exportCodebook(): string;
77
- /**
78
- * Import codebook
79
- */
80
- importCodebook(json: string): void;
81
- /**
82
- * Utility: Squared Euclidean distance
83
- */
84
- private squaredDistance;
85
- /**
86
- * Get statistics
87
- */
88
- getStats(): {
89
- trained: boolean;
90
- compressionRatio: number;
91
- memoryPerVector: number;
92
- codebookSize: number;
93
- };
94
- }
95
- /**
96
- * Helper function to create PQ8 (8 subvectors, 4x compression)
97
- */
98
- export declare function createPQ8(dimension: number): ProductQuantization;
99
- /**
100
- * Helper function to create PQ16 (16 subvectors, 8x compression)
101
- */
102
- export declare function createPQ16(dimension: number): ProductQuantization;
103
- /**
104
- * Helper function to create PQ32 (32 subvectors, 16x compression)
105
- */
106
- export declare function createPQ32(dimension: number): ProductQuantization;
107
- //# sourceMappingURL=ProductQuantization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductQuantization.d.ts","sourceRoot":"","sources":["../../src/browser/ProductQuantization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,QAAQ;IAe5B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCnD;;OAEG;YACW,MAAM;IA0DpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB;IAwChD;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,YAAY;IAsBtD;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,GAAG,MAAM;IAsB7E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE;IAI1D;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAQ7B;;OAEG;IACH,cAAc,IAAI,MAAM;IAgBxB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYlC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB;CAcF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOjE"}