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,316 +0,0 @@
1
- /**
2
- * HNSWLibBackend - Vector backend adapter for hnswlib-node
3
- *
4
- * Wraps existing HNSWIndex controller to implement VectorBackend interface.
5
- * Handles string ID to numeric label mapping required by hnswlib.
6
- *
7
- * Features:
8
- * - String ID support (maps to hnswlib numeric labels)
9
- * - Metadata storage alongside vectors
10
- * - Persistent save/load with mappings
11
- * - Backward compatible with existing HNSWIndex usage
12
- *
13
- * Note: hnswlib-node doesn't support true deletion - removed IDs are
14
- * tracked but vectors remain until rebuild.
15
- */
16
- import hnswlibNode from 'hnswlib-node';
17
- import * as fs from 'fs/promises';
18
- import * as fsSync from 'fs';
19
- import * as path from 'path';
20
- const { HierarchicalNSW } = hnswlibNode;
21
- export class HNSWLibBackend {
22
- name = 'hnswlib';
23
- index = null;
24
- config;
25
- // String ID <-> Numeric Label mappings (hnswlib requires numeric labels)
26
- idToLabel = new Map();
27
- labelToId = new Map();
28
- metadata = new Map();
29
- nextLabel = 0;
30
- // Tracking for deletions (hnswlib doesn't support true deletion)
31
- deletedIds = new Set();
32
- constructor(config) {
33
- this.config = {
34
- maxElements: 100000,
35
- M: 16,
36
- efConstruction: 200,
37
- efSearch: 100,
38
- ...config,
39
- };
40
- }
41
- /**
42
- * Initialize the HNSW index
43
- * Must be called after construction
44
- */
45
- async initialize() {
46
- // Map metric names to hnswlib format
47
- const metricMap = {
48
- cosine: 'cosine',
49
- l2: 'l2',
50
- ip: 'ip',
51
- };
52
- const metric = metricMap[this.config.metric] || 'cosine';
53
- // Create new HNSW index
54
- this.index = new HierarchicalNSW(metric, this.config.dimension);
55
- this.index.initIndex(this.config.maxElements, this.config.M, this.config.efConstruction);
56
- this.index.setEf(this.config.efSearch);
57
- console.log(`[HNSWLibBackend] Initialized with dimension=${this.config.dimension}, ` +
58
- `metric=${metric}, M=${this.config.M}, efConstruction=${this.config.efConstruction}`);
59
- }
60
- /**
61
- * Insert a single vector with optional metadata
62
- */
63
- insert(id, embedding, metadata) {
64
- if (!this.index) {
65
- throw new Error('Backend not initialized. Call initialize() first.');
66
- }
67
- // Check if ID already exists
68
- if (this.idToLabel.has(id)) {
69
- throw new Error(`Vector with ID '${id}' already exists`);
70
- }
71
- // Allocate numeric label
72
- const label = this.nextLabel++;
73
- // Add to index (hnswlib requires number[] not Float32Array)
74
- this.index.addPoint(Array.from(embedding), label);
75
- // Store mappings
76
- this.idToLabel.set(id, label);
77
- this.labelToId.set(label, id);
78
- // Store metadata if provided
79
- if (metadata) {
80
- this.metadata.set(id, metadata);
81
- }
82
- // Remove from deleted set if re-inserting
83
- this.deletedIds.delete(id);
84
- }
85
- /**
86
- * Insert multiple vectors in batch
87
- */
88
- insertBatch(items) {
89
- for (const item of items) {
90
- this.insert(item.id, item.embedding, item.metadata);
91
- }
92
- }
93
- /**
94
- * Search for k-nearest neighbors
95
- */
96
- search(query, k, options) {
97
- if (!this.index) {
98
- throw new Error('Backend not initialized. Call initialize() first.');
99
- }
100
- // Update efSearch if specified
101
- if (options?.efSearch) {
102
- this.index.setEf(options.efSearch);
103
- }
104
- // Perform HNSW search
105
- const result = this.index.searchKnn(Array.from(query), k);
106
- const results = [];
107
- for (let i = 0; i < result.neighbors.length; i++) {
108
- const label = result.neighbors[i];
109
- const distance = result.distances[i];
110
- // Map label back to ID
111
- const id = this.labelToId.get(label);
112
- if (!id) {
113
- console.warn(`[HNSWLibBackend] Label ${label} not found in mapping`);
114
- continue;
115
- }
116
- // Skip deleted IDs
117
- if (this.deletedIds.has(id)) {
118
- continue;
119
- }
120
- // Convert distance to similarity
121
- const similarity = this.distanceToSimilarity(distance);
122
- // Apply threshold if specified
123
- if (options?.threshold !== undefined && similarity < options.threshold) {
124
- continue;
125
- }
126
- results.push({
127
- id,
128
- distance,
129
- similarity,
130
- metadata: this.metadata.get(id),
131
- });
132
- }
133
- // Apply metadata filters if specified (post-filtering)
134
- if (options?.filter) {
135
- return this.applyFilters(results, options.filter);
136
- }
137
- return results;
138
- }
139
- /**
140
- * Remove a vector by ID
141
- * Note: hnswlib doesn't support true deletion - we mark as deleted
142
- */
143
- remove(id) {
144
- const label = this.idToLabel.get(id);
145
- if (label === undefined) {
146
- return false; // Not found
147
- }
148
- // Mark as deleted (can't actually remove from hnswlib)
149
- this.deletedIds.add(id);
150
- this.metadata.delete(id);
151
- // Note: We keep idToLabel/labelToId mappings for consistency
152
- // A full rebuild would be needed to reclaim space
153
- return true;
154
- }
155
- /**
156
- * Get backend statistics
157
- */
158
- getStats() {
159
- const activeCount = this.idToLabel.size - this.deletedIds.size;
160
- return {
161
- count: activeCount,
162
- dimension: this.config.dimension,
163
- metric: this.config.metric,
164
- backend: 'hnswlib',
165
- memoryUsage: 0, // hnswlib doesn't expose memory usage
166
- };
167
- }
168
- /**
169
- * Save index to disk with mappings
170
- */
171
- async save(savePath) {
172
- if (!this.index) {
173
- throw new Error('No index to save');
174
- }
175
- try {
176
- // Create directory if needed
177
- const indexDir = path.dirname(savePath);
178
- if (!fsSync.existsSync(indexDir)) {
179
- await fs.mkdir(indexDir, { recursive: true });
180
- }
181
- // Save HNSW index
182
- this.index.writeIndex(savePath);
183
- // Save mappings and metadata
184
- const mappingsPath = savePath + '.mappings.json';
185
- const mappings = {
186
- idToLabel: Object.fromEntries(this.idToLabel.entries()),
187
- labelToId: Object.fromEntries(Array.from(this.labelToId.entries()).map(([k, v]) => [k.toString(), v])),
188
- metadata: Object.fromEntries(this.metadata.entries()),
189
- nextLabel: this.nextLabel,
190
- config: this.config,
191
- };
192
- await fs.writeFile(mappingsPath, JSON.stringify(mappings, null, 2));
193
- console.log(`[HNSWLibBackend] Index saved to ${savePath}`);
194
- console.log(`[HNSWLibBackend] Mappings saved to ${mappingsPath}`);
195
- }
196
- catch (error) {
197
- console.error('[HNSWLibBackend] Failed to save index:', error);
198
- throw error;
199
- }
200
- }
201
- /**
202
- * Load index from disk with mappings
203
- */
204
- async load(loadPath) {
205
- if (!fsSync.existsSync(loadPath)) {
206
- throw new Error(`Index file not found: ${loadPath}`);
207
- }
208
- try {
209
- console.log(`[HNSWLibBackend] Loading index from ${loadPath}...`);
210
- // Initialize index first
211
- const metricMap = {
212
- cosine: 'cosine',
213
- l2: 'l2',
214
- ip: 'ip',
215
- };
216
- const metric = metricMap[this.config.metric] || 'cosine';
217
- this.index = new HierarchicalNSW(metric, this.config.dimension);
218
- // Load HNSW index
219
- this.index.readIndex(loadPath);
220
- this.index.setEf(this.config.efSearch);
221
- // Load mappings and metadata
222
- const mappingsPath = loadPath + '.mappings.json';
223
- if (fsSync.existsSync(mappingsPath)) {
224
- const mappingsData = JSON.parse(await fs.readFile(mappingsPath, 'utf-8'));
225
- // Restore mappings
226
- this.idToLabel = new Map(Object.entries(mappingsData.idToLabel));
227
- this.labelToId = new Map(Object.entries(mappingsData.labelToId).map(([k, v]) => [Number(k), v]));
228
- this.metadata = new Map(Object.entries(mappingsData.metadata || {}));
229
- this.nextLabel = mappingsData.nextLabel;
230
- // Update config if saved
231
- if (mappingsData.config) {
232
- this.config = { ...this.config, ...mappingsData.config };
233
- }
234
- console.log(`[HNSWLibBackend] ✅ Index loaded successfully (${this.idToLabel.size} vectors)`);
235
- }
236
- else {
237
- console.warn('[HNSWLibBackend] No mappings file found - index loaded without ID mappings');
238
- }
239
- }
240
- catch (error) {
241
- console.error('[HNSWLibBackend] Failed to load index:', error);
242
- this.index = null;
243
- throw error;
244
- }
245
- }
246
- /**
247
- * Close and cleanup resources
248
- */
249
- close() {
250
- this.index = null;
251
- this.idToLabel.clear();
252
- this.labelToId.clear();
253
- this.metadata.clear();
254
- this.deletedIds.clear();
255
- this.nextLabel = 0;
256
- }
257
- /**
258
- * Convert distance to similarity based on metric
259
- * Maps to [0, 1] range where 1 = most similar
260
- */
261
- distanceToSimilarity(distance) {
262
- switch (this.config.metric) {
263
- case 'cosine':
264
- // Cosine distance is 1 - similarity, so invert
265
- return 1 - distance;
266
- case 'l2':
267
- // Euclidean distance: use exponential decay
268
- return Math.exp(-distance);
269
- case 'ip':
270
- // Inner product: negate distance (higher IP = more similar)
271
- return -distance;
272
- default:
273
- return 1 - distance;
274
- }
275
- }
276
- /**
277
- * Apply metadata filters (post-filtering)
278
- */
279
- applyFilters(results, filters) {
280
- return results.filter((result) => {
281
- if (!result.metadata)
282
- return false;
283
- // Check if all filter conditions match
284
- return Object.entries(filters).every(([key, value]) => {
285
- return result.metadata[key] === value;
286
- });
287
- });
288
- }
289
- /**
290
- * Check if needs rebuilding (for backward compat with HNSWIndex)
291
- * @param updateThreshold - Percentage of deletes to trigger rebuild (default: 0.1)
292
- */
293
- needsRebuild(updateThreshold = 0.1) {
294
- if (this.idToLabel.size === 0)
295
- return false;
296
- const deletePercentage = this.deletedIds.size / this.idToLabel.size;
297
- return deletePercentage > updateThreshold;
298
- }
299
- /**
300
- * Update efSearch parameter
301
- */
302
- setEfSearch(ef) {
303
- if (this.index) {
304
- this.index.setEf(ef);
305
- this.config.efSearch = ef;
306
- console.log(`[HNSWLibBackend] efSearch updated to ${ef}`);
307
- }
308
- }
309
- /**
310
- * Check if backend is ready
311
- */
312
- isReady() {
313
- return this.index !== null;
314
- }
315
- }
316
- //# sourceMappingURL=HNSWLibBackend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HNSWLibBackend.js","sourceRoot":"","sources":["../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * HNSWLib Backend Exports
3
- *
4
- * Export HNSWLibBackend adapter for hnswlib-node integration
5
- */
6
- export { HNSWLibBackend } from './HNSWLibBackend.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/hnswlib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * HNSWLib Backend Exports
3
- *
4
- * Export HNSWLibBackend adapter for hnswlib-node integration
5
- */
6
- export { HNSWLibBackend } from './HNSWLibBackend.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/hnswlib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * AgentDB Backends - Unified Vector Storage Interface
3
- *
4
- * Provides automatic backend selection between RuVector and HNSWLib
5
- * with graceful fallback and clear error messages.
6
- */
7
- export type { VectorBackend, VectorConfig, SearchResult, SearchOptions, VectorStats } from './VectorBackend.js';
8
- export { RuVectorBackend } from './ruvector/RuVectorBackend.js';
9
- export { RuVectorLearning } from './ruvector/RuVectorLearning.js';
10
- export { HNSWLibBackend } from './hnswlib/HNSWLibBackend.js';
11
- export { createBackend, detectBackends, getRecommendedBackend, isBackendAvailable, getInstallCommand } from './factory.js';
12
- export type { BackendType, BackendDetection } from './factory.js';
13
- export type { LearningConfig, EnhancementOptions } from './ruvector/RuVectorLearning.js';
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * AgentDB Backends - Unified Vector Storage Interface
3
- *
4
- * Provides automatic backend selection between RuVector and HNSWLib
5
- * with graceful fallback and clear error messages.
6
- */
7
- // Backend implementations
8
- export { RuVectorBackend } from './ruvector/RuVectorBackend.js';
9
- export { RuVectorLearning } from './ruvector/RuVectorLearning.js';
10
- export { HNSWLibBackend } from './hnswlib/HNSWLibBackend.js';
11
- // Factory and detection
12
- export { createBackend, detectBackends, getRecommendedBackend, isBackendAvailable, getInstallCommand } from './factory.js';
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,wBAAwB;AACxB,OAAO,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC"}
@@ -1,75 +0,0 @@
1
- /**
2
- * RuVectorBackend - High-Performance Vector Storage
3
- *
4
- * Implements VectorBackend using @ruvector/core with optional GNN support.
5
- * Provides <100µs search latency with native SIMD optimizations.
6
- *
7
- * Features:
8
- * - Automatic fallback when @ruvector packages not installed
9
- * - Separate metadata storage for rich queries
10
- * - Distance-to-similarity conversion for all metrics
11
- * - Batch operations for optimal throughput
12
- * - Persistent storage with separate metadata files
13
- */
14
- import type { VectorBackend, VectorConfig, SearchResult, SearchOptions, VectorStats } from '../VectorBackend.js';
15
- export declare class RuVectorBackend implements VectorBackend {
16
- readonly name: "ruvector";
17
- private db;
18
- private config;
19
- private metadata;
20
- private initialized;
21
- constructor(config: VectorConfig);
22
- /**
23
- * Initialize RuVector database with optional dependency handling
24
- */
25
- initialize(): Promise<void>;
26
- /**
27
- * Insert single vector with optional metadata
28
- */
29
- insert(id: string, embedding: Float32Array, metadata?: Record<string, any>): void;
30
- /**
31
- * Batch insert for optimal performance
32
- */
33
- insertBatch(items: Array<{
34
- id: string;
35
- embedding: Float32Array;
36
- metadata?: Record<string, any>;
37
- }>): void;
38
- /**
39
- * Search for k-nearest neighbors with optional filtering
40
- */
41
- search(query: Float32Array, k: number, options?: SearchOptions): SearchResult[];
42
- /**
43
- * Remove vector by ID
44
- */
45
- remove(id: string): boolean;
46
- /**
47
- * Get database statistics
48
- */
49
- getStats(): VectorStats;
50
- /**
51
- * Save index and metadata to disk
52
- */
53
- save(path: string): Promise<void>;
54
- /**
55
- * Load index and metadata from disk
56
- */
57
- load(path: string): Promise<void>;
58
- /**
59
- * Close and cleanup resources
60
- */
61
- close(): void;
62
- /**
63
- * Convert distance to similarity score based on metric
64
- *
65
- * Cosine: distance is already in [0, 2], where 0 = identical
66
- * L2: exponential decay for unbounded distances
67
- * IP: negative inner product, so negate for similarity
68
- */
69
- private distanceToSimilarity;
70
- /**
71
- * Ensure database is initialized before operations
72
- */
73
- private ensureInitialized;
74
- }
75
- //# sourceMappingURL=RuVectorBackend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RuVectorBackend.d.ts","sourceRoot":"","sources":["../../../src/backends/ruvector/RuVectorBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEjH,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,YAAY;IAIhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAWjF;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAQxG;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE;IAoC/E;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAY3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAYvB;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -1,198 +0,0 @@
1
- /**
2
- * RuVectorBackend - High-Performance Vector Storage
3
- *
4
- * Implements VectorBackend using @ruvector/core with optional GNN support.
5
- * Provides <100µs search latency with native SIMD optimizations.
6
- *
7
- * Features:
8
- * - Automatic fallback when @ruvector packages not installed
9
- * - Separate metadata storage for rich queries
10
- * - Distance-to-similarity conversion for all metrics
11
- * - Batch operations for optimal throughput
12
- * - Persistent storage with separate metadata files
13
- */
14
- export class RuVectorBackend {
15
- name = 'ruvector';
16
- db; // VectorDB from @ruvector/core
17
- config;
18
- metadata = new Map();
19
- initialized = false;
20
- constructor(config) {
21
- this.config = config;
22
- }
23
- /**
24
- * Initialize RuVector database with optional dependency handling
25
- */
26
- async initialize() {
27
- if (this.initialized)
28
- return;
29
- try {
30
- // Try main ruvector package first (includes core, gnn, graph)
31
- let VectorDB;
32
- try {
33
- const ruvector = await import('ruvector');
34
- VectorDB = ruvector.VectorDB || ruvector.default?.VectorDB;
35
- }
36
- catch {
37
- // Fallback to @ruvector/core for backward compatibility
38
- const core = await import('@ruvector/core');
39
- VectorDB = core.VectorDB || core.default;
40
- }
41
- this.db = new VectorDB(this.config.dimension, {
42
- metric: this.config.metric,
43
- maxElements: this.config.maxElements || 100000,
44
- efConstruction: this.config.efConstruction || 200,
45
- M: this.config.M || 16
46
- });
47
- this.initialized = true;
48
- }
49
- catch (error) {
50
- throw new Error(`RuVector initialization failed. Please install: npm install ruvector\n` +
51
- `Or legacy packages: npm install @ruvector/core\n` +
52
- `Error: ${error.message}`);
53
- }
54
- }
55
- /**
56
- * Insert single vector with optional metadata
57
- */
58
- insert(id, embedding, metadata) {
59
- this.ensureInitialized();
60
- // RuVector expects regular arrays
61
- this.db.insert(id, Array.from(embedding));
62
- if (metadata) {
63
- this.metadata.set(id, metadata);
64
- }
65
- }
66
- /**
67
- * Batch insert for optimal performance
68
- */
69
- insertBatch(items) {
70
- this.ensureInitialized();
71
- for (const item of items) {
72
- this.insert(item.id, item.embedding, item.metadata);
73
- }
74
- }
75
- /**
76
- * Search for k-nearest neighbors with optional filtering
77
- */
78
- search(query, k, options) {
79
- this.ensureInitialized();
80
- // Apply efSearch parameter if provided
81
- if (options?.efSearch) {
82
- this.db.setEfSearch(options.efSearch);
83
- }
84
- // Perform vector search
85
- const results = this.db.search(Array.from(query), k);
86
- // Convert results and apply filtering
87
- return results
88
- .map((r) => ({
89
- id: r.id,
90
- distance: r.distance,
91
- similarity: this.distanceToSimilarity(r.distance),
92
- metadata: this.metadata.get(r.id)
93
- }))
94
- .filter((r) => {
95
- // Apply similarity threshold
96
- if (options?.threshold && r.similarity < options.threshold) {
97
- return false;
98
- }
99
- // Apply metadata filters
100
- if (options?.filter && r.metadata) {
101
- return Object.entries(options.filter).every(([key, value]) => r.metadata[key] === value);
102
- }
103
- return true;
104
- });
105
- }
106
- /**
107
- * Remove vector by ID
108
- */
109
- remove(id) {
110
- this.ensureInitialized();
111
- this.metadata.delete(id);
112
- try {
113
- return this.db.remove(id);
114
- }
115
- catch {
116
- return false;
117
- }
118
- }
119
- /**
120
- * Get database statistics
121
- */
122
- getStats() {
123
- this.ensureInitialized();
124
- return {
125
- count: this.db.count(),
126
- dimension: this.config.dimension,
127
- metric: this.config.metric,
128
- backend: 'ruvector',
129
- memoryUsage: this.db.memoryUsage?.() || 0
130
- };
131
- }
132
- /**
133
- * Save index and metadata to disk
134
- */
135
- async save(path) {
136
- this.ensureInitialized();
137
- // Save vector index
138
- this.db.save(path);
139
- // Save metadata separately as JSON
140
- const metadataPath = path + '.meta.json';
141
- const fs = await import('fs/promises');
142
- await fs.writeFile(metadataPath, JSON.stringify(Object.fromEntries(this.metadata), null, 2));
143
- }
144
- /**
145
- * Load index and metadata from disk
146
- */
147
- async load(path) {
148
- this.ensureInitialized();
149
- // Load vector index
150
- this.db.load(path);
151
- // Load metadata
152
- const metadataPath = path + '.meta.json';
153
- try {
154
- const fs = await import('fs/promises');
155
- const data = await fs.readFile(metadataPath, 'utf-8');
156
- this.metadata = new Map(Object.entries(JSON.parse(data)));
157
- }
158
- catch {
159
- // No metadata file - this is okay for backward compatibility
160
- console.debug(`[RuVectorBackend] No metadata file found at ${metadataPath}`);
161
- }
162
- }
163
- /**
164
- * Close and cleanup resources
165
- */
166
- close() {
167
- // RuVector cleanup if needed
168
- this.metadata.clear();
169
- }
170
- /**
171
- * Convert distance to similarity score based on metric
172
- *
173
- * Cosine: distance is already in [0, 2], where 0 = identical
174
- * L2: exponential decay for unbounded distances
175
- * IP: negative inner product, so negate for similarity
176
- */
177
- distanceToSimilarity(distance) {
178
- switch (this.config.metric) {
179
- case 'cosine':
180
- return 1 - distance; // cosine distance is 1 - similarity
181
- case 'l2':
182
- return Math.exp(-distance); // exponential decay
183
- case 'ip':
184
- return -distance; // inner product: higher is better
185
- default:
186
- return 1 - distance;
187
- }
188
- }
189
- /**
190
- * Ensure database is initialized before operations
191
- */
192
- ensureInitialized() {
193
- if (!this.initialized) {
194
- throw new Error('RuVectorBackend not initialized. Call initialize() first.');
195
- }
196
- }
197
- }
198
- //# sourceMappingURL=RuVectorBackend.js.map