agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1

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 (314) 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/package.json +3 -3
  7. package/src/cli/agentdb-cli.ts +78 -0
  8. package/dist/agentdb-advanced.js +0 -2110
  9. package/dist/agentdb-advanced.min.js +0 -1
  10. package/dist/backends/GraphBackend.d.ts +0 -196
  11. package/dist/backends/GraphBackend.d.ts.map +0 -1
  12. package/dist/backends/GraphBackend.js +0 -33
  13. package/dist/backends/GraphBackend.js.map +0 -1
  14. package/dist/backends/LearningBackend.d.ts +0 -148
  15. package/dist/backends/LearningBackend.d.ts.map +0 -1
  16. package/dist/backends/LearningBackend.js +0 -27
  17. package/dist/backends/LearningBackend.js.map +0 -1
  18. package/dist/backends/VectorBackend.d.ts +0 -119
  19. package/dist/backends/VectorBackend.d.ts.map +0 -1
  20. package/dist/backends/VectorBackend.js +0 -14
  21. package/dist/backends/VectorBackend.js.map +0 -1
  22. package/dist/backends/detector.d.ts +0 -81
  23. package/dist/backends/detector.d.ts.map +0 -1
  24. package/dist/backends/detector.js +0 -192
  25. package/dist/backends/detector.js.map +0 -1
  26. package/dist/backends/factory.d.ts +0 -50
  27. package/dist/backends/factory.d.ts.map +0 -1
  28. package/dist/backends/factory.js +0 -161
  29. package/dist/backends/factory.js.map +0 -1
  30. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  31. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  32. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  33. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  34. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  35. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  36. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  37. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  38. package/dist/backends/hnswlib/index.d.ts +0 -7
  39. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  40. package/dist/backends/hnswlib/index.js +0 -7
  41. package/dist/backends/hnswlib/index.js.map +0 -1
  42. package/dist/backends/index.d.ts +0 -14
  43. package/dist/backends/index.d.ts.map +0 -1
  44. package/dist/backends/index.js +0 -13
  45. package/dist/backends/index.js.map +0 -1
  46. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  47. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  48. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  49. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  50. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  51. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  52. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  53. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  54. package/dist/backends/ruvector/index.d.ts +0 -9
  55. package/dist/backends/ruvector/index.d.ts.map +0 -1
  56. package/dist/backends/ruvector/index.js +0 -8
  57. package/dist/backends/ruvector/index.js.map +0 -1
  58. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  59. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  60. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  61. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  62. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  63. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  64. package/dist/browser/AdvancedFeatures.js +0 -430
  65. package/dist/browser/AdvancedFeatures.js.map +0 -1
  66. package/dist/browser/HNSWIndex.d.ts +0 -117
  67. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  68. package/dist/browser/HNSWIndex.js +0 -402
  69. package/dist/browser/HNSWIndex.js.map +0 -1
  70. package/dist/browser/ProductQuantization.d.ts +0 -107
  71. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  72. package/dist/browser/ProductQuantization.js +0 -337
  73. package/dist/browser/ProductQuantization.js.map +0 -1
  74. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  75. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  76. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  77. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  78. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  79. package/dist/browser/browser/HNSWIndex.js +0 -402
  80. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  81. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  82. package/dist/browser/browser/ProductQuantization.js +0 -348
  83. package/dist/browser/browser/index.d.ts +0 -223
  84. package/dist/browser/browser/index.d.ts.map +0 -1
  85. package/dist/browser/browser/index.js +0 -233
  86. package/dist/browser/index.d.ts +0 -223
  87. package/dist/browser/index.d.ts.map +0 -1
  88. package/dist/browser/index.js +0 -225
  89. package/dist/browser/index.js.map +0 -1
  90. package/dist/cli/agentdb-cli.d.ts +0 -154
  91. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  92. package/dist/cli/agentdb-cli.js +0 -2273
  93. package/dist/cli/agentdb-cli.js.map +0 -1
  94. package/dist/cli/agentdb.db +0 -0
  95. package/dist/cli/commands/init.d.ts +0 -12
  96. package/dist/cli/commands/init.d.ts.map +0 -1
  97. package/dist/cli/commands/init.js +0 -115
  98. package/dist/cli/commands/init.js.map +0 -1
  99. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  100. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  101. package/dist/cli/commands/install-embeddings.js +0 -68
  102. package/dist/cli/commands/install-embeddings.js.map +0 -1
  103. package/dist/cli/commands/migrate.d.ts +0 -15
  104. package/dist/cli/commands/migrate.d.ts.map +0 -1
  105. package/dist/cli/commands/migrate.js +0 -425
  106. package/dist/cli/commands/migrate.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -10
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -129
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  112. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  113. package/dist/controllers/CausalMemoryGraph.js +0 -323
  114. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  115. package/dist/controllers/CausalRecall.d.ts +0 -139
  116. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  117. package/dist/controllers/CausalRecall.js +0 -356
  118. package/dist/controllers/CausalRecall.js.map +0 -1
  119. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  120. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  121. package/dist/controllers/ContextSynthesizer.js +0 -208
  122. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  123. package/dist/controllers/EmbeddingService.d.ts +0 -37
  124. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  125. package/dist/controllers/EmbeddingService.js +0 -136
  126. package/dist/controllers/EmbeddingService.js.map +0 -1
  127. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  128. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  129. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  130. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  131. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  132. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  133. package/dist/controllers/ExplainableRecall.js +0 -485
  134. package/dist/controllers/ExplainableRecall.js.map +0 -1
  135. package/dist/controllers/HNSWIndex.d.ts +0 -128
  136. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  137. package/dist/controllers/HNSWIndex.js +0 -361
  138. package/dist/controllers/HNSWIndex.js.map +0 -1
  139. package/dist/controllers/LearningSystem.d.ts +0 -195
  140. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  141. package/dist/controllers/LearningSystem.js +0 -929
  142. package/dist/controllers/LearningSystem.js.map +0 -1
  143. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  144. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  145. package/dist/controllers/MMRDiversityRanker.js +0 -130
  146. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  147. package/dist/controllers/MetadataFilter.d.ts +0 -70
  148. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  149. package/dist/controllers/MetadataFilter.js +0 -243
  150. package/dist/controllers/MetadataFilter.js.map +0 -1
  151. package/dist/controllers/NightlyLearner.d.ts +0 -114
  152. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  153. package/dist/controllers/NightlyLearner.js +0 -394
  154. package/dist/controllers/NightlyLearner.js.map +0 -1
  155. package/dist/controllers/QUICClient.d.ts +0 -109
  156. package/dist/controllers/QUICClient.d.ts.map +0 -1
  157. package/dist/controllers/QUICClient.js +0 -299
  158. package/dist/controllers/QUICClient.js.map +0 -1
  159. package/dist/controllers/QUICServer.d.ts +0 -121
  160. package/dist/controllers/QUICServer.d.ts.map +0 -1
  161. package/dist/controllers/QUICServer.js +0 -383
  162. package/dist/controllers/QUICServer.js.map +0 -1
  163. package/dist/controllers/ReasoningBank.d.ts +0 -196
  164. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  165. package/dist/controllers/ReasoningBank.js +0 -494
  166. package/dist/controllers/ReasoningBank.js.map +0 -1
  167. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  168. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  169. package/dist/controllers/ReflexionMemory.js +0 -521
  170. package/dist/controllers/ReflexionMemory.js.map +0 -1
  171. package/dist/controllers/SkillLibrary.d.ts +0 -149
  172. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  173. package/dist/controllers/SkillLibrary.js +0 -547
  174. package/dist/controllers/SkillLibrary.js.map +0 -1
  175. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  176. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  177. package/dist/controllers/SyncCoordinator.js +0 -441
  178. package/dist/controllers/SyncCoordinator.js.map +0 -1
  179. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  180. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  181. package/dist/controllers/WASMVectorSearch.js +0 -234
  182. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  183. package/dist/controllers/frontier-index.d.ts +0 -14
  184. package/dist/controllers/frontier-index.d.ts.map +0 -1
  185. package/dist/controllers/frontier-index.js +0 -10
  186. package/dist/controllers/frontier-index.js.map +0 -1
  187. package/dist/controllers/index.d.ts +0 -30
  188. package/dist/controllers/index.d.ts.map +0 -1
  189. package/dist/controllers/index.js +0 -18
  190. package/dist/controllers/index.js.map +0 -1
  191. package/dist/db-fallback.d.ts +0 -26
  192. package/dist/db-fallback.d.ts.map +0 -1
  193. package/dist/db-fallback.js +0 -264
  194. package/dist/db-fallback.js.map +0 -1
  195. package/dist/db-test.d.ts +0 -13
  196. package/dist/db-test.d.ts.map +0 -1
  197. package/dist/db-test.js +0 -55
  198. package/dist/db-test.js.map +0 -1
  199. package/dist/db-unified.d.ts +0 -76
  200. package/dist/db-unified.d.ts.map +0 -1
  201. package/dist/db-unified.js +0 -278
  202. package/dist/db-unified.js.map +0 -1
  203. package/dist/examples/quic-sync-example.d.ts +0 -9
  204. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  205. package/dist/examples/quic-sync-example.js +0 -169
  206. package/dist/examples/quic-sync-example.js.map +0 -1
  207. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  208. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  209. package/dist/examples/wasm-vector-usage.js +0 -190
  210. package/dist/examples/wasm-vector-usage.js.map +0 -1
  211. package/dist/index.d.ts +0 -28
  212. package/dist/index.d.ts.map +0 -1
  213. package/dist/index.js +0 -35
  214. package/dist/index.js.map +0 -1
  215. package/dist/malp/core/ccc.d.ts +0 -99
  216. package/dist/malp/core/ccc.d.ts.map +0 -1
  217. package/dist/malp/core/ccc.js +0 -181
  218. package/dist/malp/core/ccc.js.map +0 -1
  219. package/dist/malp/core/index.d.ts +0 -9
  220. package/dist/malp/core/index.d.ts.map +0 -1
  221. package/dist/malp/core/index.js +0 -9
  222. package/dist/malp/core/index.js.map +0 -1
  223. package/dist/malp/core/linalg.d.ts +0 -101
  224. package/dist/malp/core/linalg.d.ts.map +0 -1
  225. package/dist/malp/core/linalg.js +0 -278
  226. package/dist/malp/core/linalg.js.map +0 -1
  227. package/dist/malp/core/optimizer.d.ts +0 -68
  228. package/dist/malp/core/optimizer.d.ts.map +0 -1
  229. package/dist/malp/core/optimizer.js +0 -160
  230. package/dist/malp/core/optimizer.js.map +0 -1
  231. package/dist/malp/index.d.ts +0 -33
  232. package/dist/malp/index.d.ts.map +0 -1
  233. package/dist/malp/index.js +0 -37
  234. package/dist/malp/index.js.map +0 -1
  235. package/dist/malp/metrics/agreement.d.ts +0 -106
  236. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  237. package/dist/malp/metrics/agreement.js +0 -199
  238. package/dist/malp/metrics/agreement.js.map +0 -1
  239. package/dist/malp/metrics/comparison.d.ts +0 -93
  240. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  241. package/dist/malp/metrics/comparison.js +0 -256
  242. package/dist/malp/metrics/comparison.js.map +0 -1
  243. package/dist/malp/metrics/index.d.ts +0 -8
  244. package/dist/malp/metrics/index.d.ts.map +0 -1
  245. package/dist/malp/metrics/index.js +0 -8
  246. package/dist/malp/metrics/index.js.map +0 -1
  247. package/dist/malp/metrics/performance.d.ts +0 -61
  248. package/dist/malp/metrics/performance.d.ts.map +0 -1
  249. package/dist/malp/metrics/performance.js +0 -190
  250. package/dist/malp/metrics/performance.js.map +0 -1
  251. package/dist/malp/models/index.d.ts +0 -7
  252. package/dist/malp/models/index.d.ts.map +0 -1
  253. package/dist/malp/models/index.js +0 -7
  254. package/dist/malp/models/index.js.map +0 -1
  255. package/dist/malp/models/malp.d.ts +0 -116
  256. package/dist/malp/models/malp.d.ts.map +0 -1
  257. package/dist/malp/models/malp.js +0 -206
  258. package/dist/malp/models/malp.js.map +0 -1
  259. package/dist/malp/models/regressor.d.ts +0 -80
  260. package/dist/malp/models/regressor.d.ts.map +0 -1
  261. package/dist/malp/models/regressor.js +0 -229
  262. package/dist/malp/models/regressor.js.map +0 -1
  263. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  264. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  265. package/dist/malp/reasoningbank_validator.js +0 -246
  266. package/dist/malp/reasoningbank_validator.js.map +0 -1
  267. package/dist/malp/wasm_bindings.d.ts +0 -344
  268. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  269. package/dist/malp/wasm_bindings.js +0 -9
  270. package/dist/malp/wasm_bindings.js.map +0 -1
  271. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  272. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  273. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  274. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  275. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  276. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  277. package/dist/mcp/learning-tools-handlers.js +0 -105
  278. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  279. package/dist/optimizations/BatchOperations.d.ts +0 -109
  280. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  281. package/dist/optimizations/BatchOperations.js +0 -407
  282. package/dist/optimizations/BatchOperations.js.map +0 -1
  283. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  284. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  285. package/dist/optimizations/QueryOptimizer.js +0 -228
  286. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  287. package/dist/optimizations/ToolCache.d.ts +0 -137
  288. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  289. package/dist/optimizations/ToolCache.js +0 -281
  290. package/dist/optimizations/ToolCache.js.map +0 -1
  291. package/dist/optimizations/index.d.ts +0 -10
  292. package/dist/optimizations/index.d.ts.map +0 -1
  293. package/dist/optimizations/index.js +0 -8
  294. package/dist/optimizations/index.js.map +0 -1
  295. package/dist/security/input-validation.d.ts +0 -109
  296. package/dist/security/input-validation.d.ts.map +0 -1
  297. package/dist/security/input-validation.js +0 -398
  298. package/dist/security/input-validation.js.map +0 -1
  299. package/dist/security/limits.d.ts +0 -150
  300. package/dist/security/limits.d.ts.map +0 -1
  301. package/dist/security/limits.js +0 -288
  302. package/dist/security/limits.js.map +0 -1
  303. package/dist/security/path-security.d.ts +0 -100
  304. package/dist/security/path-security.d.ts.map +0 -1
  305. package/dist/security/path-security.js +0 -337
  306. package/dist/security/path-security.js.map +0 -1
  307. package/dist/security/validation.d.ts +0 -95
  308. package/dist/security/validation.d.ts.map +0 -1
  309. package/dist/security/validation.js +0 -315
  310. package/dist/security/validation.js.map +0 -1
  311. package/dist/types/quic.d.ts +0 -518
  312. package/dist/types/quic.d.ts.map +0 -1
  313. package/dist/types/quic.js +0 -272
  314. 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"}