agentdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/LICENSE +38 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +953 -0
  5. package/bin/agentdb.js +485 -0
  6. package/bin/plugin-cli-wrapper.mjs +21 -0
  7. package/dist/cache/query-cache.d.ts +105 -0
  8. package/dist/cache/query-cache.d.ts.map +1 -0
  9. package/dist/cache/query-cache.js +224 -0
  10. package/dist/cache/query-cache.js.map +1 -0
  11. package/dist/cache/query-cache.mjs +219 -0
  12. package/dist/cli/cache/query-cache.d.ts +104 -0
  13. package/dist/cli/cache/query-cache.js +244 -0
  14. package/dist/cli/cli/db-commands.d.ts +48 -0
  15. package/dist/cli/cli/db-commands.js +613 -0
  16. package/dist/cli/commands.d.ts +7 -0
  17. package/dist/cli/commands.d.ts.map +1 -0
  18. package/dist/cli/commands.js +113 -0
  19. package/dist/cli/commands.js.map +1 -0
  20. package/dist/cli/commands.mjs +104 -0
  21. package/dist/cli/core/backend-interface.d.ts +70 -0
  22. package/dist/cli/core/backend-interface.js +15 -0
  23. package/dist/cli/core/native-backend.d.ts +140 -0
  24. package/dist/cli/core/native-backend.js +432 -0
  25. package/dist/cli/core/vector-db.d.ts +126 -0
  26. package/dist/cli/core/vector-db.js +338 -0
  27. package/dist/cli/core/wasm-backend.d.ts +95 -0
  28. package/dist/cli/core/wasm-backend.js +418 -0
  29. package/dist/cli/db-commands.d.ts +49 -0
  30. package/dist/cli/db-commands.d.ts.map +1 -0
  31. package/dist/cli/db-commands.js +533 -0
  32. package/dist/cli/db-commands.js.map +1 -0
  33. package/dist/cli/db-commands.mjs +522 -0
  34. package/dist/cli/generator.d.ts +11 -0
  35. package/dist/cli/generator.d.ts.map +1 -0
  36. package/dist/cli/generator.js +567 -0
  37. package/dist/cli/generator.js.map +1 -0
  38. package/dist/cli/generator.mjs +527 -0
  39. package/dist/cli/help.d.ts +18 -0
  40. package/dist/cli/help.d.ts.map +1 -0
  41. package/dist/cli/help.js +676 -0
  42. package/dist/cli/help.js.map +1 -0
  43. package/dist/cli/help.mjs +667 -0
  44. package/dist/cli/index/hnsw.d.ts +164 -0
  45. package/dist/cli/index/hnsw.js +558 -0
  46. package/dist/cli/plugin-cli.d.ts +7 -0
  47. package/dist/cli/plugin-cli.d.ts.map +1 -0
  48. package/dist/cli/plugin-cli.js +295 -0
  49. package/dist/cli/plugin-cli.js.map +1 -0
  50. package/dist/cli/plugin-cli.mjs +289 -0
  51. package/dist/cli/quantization/product-quantization.d.ts +108 -0
  52. package/dist/cli/quantization/product-quantization.js +350 -0
  53. package/dist/cli/query/query-builder.d.ts +322 -0
  54. package/dist/cli/query/query-builder.js +600 -0
  55. package/dist/cli/templates.d.ts +14 -0
  56. package/dist/cli/templates.d.ts.map +1 -0
  57. package/dist/cli/templates.js +182 -0
  58. package/dist/cli/templates.js.map +1 -0
  59. package/dist/cli/templates.mjs +176 -0
  60. package/dist/cli/types/index.d.ts +116 -0
  61. package/dist/cli/types/index.js +5 -0
  62. package/dist/cli/types.d.ts +91 -0
  63. package/dist/cli/types.d.ts.map +1 -0
  64. package/dist/cli/types.js +6 -0
  65. package/dist/cli/types.js.map +1 -0
  66. package/dist/cli/types.mjs +4 -0
  67. package/dist/cli/wizard/index.d.ts +6 -0
  68. package/dist/cli/wizard/index.d.ts.map +1 -0
  69. package/dist/cli/wizard/index.js +138 -0
  70. package/dist/cli/wizard/index.js.map +1 -0
  71. package/dist/cli/wizard/index.mjs +131 -0
  72. package/dist/cli/wizard/prompts.d.ts +11 -0
  73. package/dist/cli/wizard/prompts.d.ts.map +1 -0
  74. package/dist/cli/wizard/prompts.js +482 -0
  75. package/dist/cli/wizard/prompts.js.map +1 -0
  76. package/dist/cli/wizard/prompts.mjs +470 -0
  77. package/dist/cli/wizard/validator.d.ts +13 -0
  78. package/dist/cli/wizard/validator.d.ts.map +1 -0
  79. package/dist/cli/wizard/validator.js +234 -0
  80. package/dist/cli/wizard/validator.js.map +1 -0
  81. package/dist/cli/wizard/validator.mjs +224 -0
  82. package/dist/core/backend-interface.d.ts +71 -0
  83. package/dist/core/backend-interface.d.ts.map +1 -0
  84. package/dist/core/backend-interface.js +16 -0
  85. package/dist/core/backend-interface.js.map +1 -0
  86. package/dist/core/backend-interface.mjs +12 -0
  87. package/dist/core/native-backend.d.ts +141 -0
  88. package/dist/core/native-backend.d.ts.map +1 -0
  89. package/dist/core/native-backend.js +457 -0
  90. package/dist/core/native-backend.js.map +1 -0
  91. package/dist/core/native-backend.mjs +449 -0
  92. package/dist/core/vector-db.d.ts +127 -0
  93. package/dist/core/vector-db.d.ts.map +1 -0
  94. package/dist/core/vector-db.js +266 -0
  95. package/dist/core/vector-db.js.map +1 -0
  96. package/dist/core/vector-db.mjs +261 -0
  97. package/dist/core/wasm-backend.d.ts +96 -0
  98. package/dist/core/wasm-backend.d.ts.map +1 -0
  99. package/dist/core/wasm-backend.js +393 -0
  100. package/dist/core/wasm-backend.js.map +1 -0
  101. package/dist/core/wasm-backend.mjs +385 -0
  102. package/dist/index/hnsw-optimized.d.ts +75 -0
  103. package/dist/index/hnsw-optimized.d.ts.map +1 -0
  104. package/dist/index/hnsw-optimized.js +412 -0
  105. package/dist/index/hnsw-optimized.js.map +1 -0
  106. package/dist/index/hnsw-optimized.mjs +407 -0
  107. package/dist/index/hnsw.d.ts +165 -0
  108. package/dist/index/hnsw.d.ts.map +1 -0
  109. package/dist/index/hnsw.js +521 -0
  110. package/dist/index/hnsw.js.map +1 -0
  111. package/dist/index/hnsw.mjs +516 -0
  112. package/dist/index.d.ts +57 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +82 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/index.mjs +63 -0
  117. package/dist/mcp-server.d.ts +27 -0
  118. package/dist/mcp-server.d.ts.map +1 -0
  119. package/dist/mcp-server.js +789 -0
  120. package/dist/mcp-server.js.map +1 -0
  121. package/dist/mcp-server.mjs +784 -0
  122. package/dist/plugins/base-plugin.d.ts +114 -0
  123. package/dist/plugins/base-plugin.d.ts.map +1 -0
  124. package/dist/plugins/base-plugin.js +313 -0
  125. package/dist/plugins/base-plugin.js.map +1 -0
  126. package/dist/plugins/base-plugin.mjs +275 -0
  127. package/dist/plugins/implementations/active-learning.d.ts +135 -0
  128. package/dist/plugins/implementations/active-learning.d.ts.map +1 -0
  129. package/dist/plugins/implementations/active-learning.js +372 -0
  130. package/dist/plugins/implementations/active-learning.js.map +1 -0
  131. package/dist/plugins/implementations/active-learning.mjs +367 -0
  132. package/dist/plugins/implementations/actor-critic.d.ts +64 -0
  133. package/dist/plugins/implementations/actor-critic.d.ts.map +1 -0
  134. package/dist/plugins/implementations/actor-critic.js +363 -0
  135. package/dist/plugins/implementations/actor-critic.js.map +1 -0
  136. package/dist/plugins/implementations/actor-critic.mjs +358 -0
  137. package/dist/plugins/implementations/adversarial-training.d.ts +133 -0
  138. package/dist/plugins/implementations/adversarial-training.d.ts.map +1 -0
  139. package/dist/plugins/implementations/adversarial-training.js +409 -0
  140. package/dist/plugins/implementations/adversarial-training.js.map +1 -0
  141. package/dist/plugins/implementations/adversarial-training.mjs +404 -0
  142. package/dist/plugins/implementations/curriculum-learning.d.ts +132 -0
  143. package/dist/plugins/implementations/curriculum-learning.d.ts.map +1 -0
  144. package/dist/plugins/implementations/curriculum-learning.js +354 -0
  145. package/dist/plugins/implementations/curriculum-learning.js.map +1 -0
  146. package/dist/plugins/implementations/curriculum-learning.mjs +349 -0
  147. package/dist/plugins/implementations/decision-transformer.d.ts +77 -0
  148. package/dist/plugins/implementations/decision-transformer.d.ts.map +1 -0
  149. package/dist/plugins/implementations/decision-transformer.js +422 -0
  150. package/dist/plugins/implementations/decision-transformer.js.map +1 -0
  151. package/dist/plugins/implementations/decision-transformer.mjs +417 -0
  152. package/dist/plugins/implementations/federated-learning.d.ts +126 -0
  153. package/dist/plugins/implementations/federated-learning.d.ts.map +1 -0
  154. package/dist/plugins/implementations/federated-learning.js +436 -0
  155. package/dist/plugins/implementations/federated-learning.js.map +1 -0
  156. package/dist/plugins/implementations/federated-learning.mjs +431 -0
  157. package/dist/plugins/implementations/index.d.ts +30 -0
  158. package/dist/plugins/implementations/index.d.ts.map +1 -0
  159. package/dist/plugins/implementations/index.js +45 -0
  160. package/dist/plugins/implementations/index.js.map +1 -0
  161. package/dist/plugins/implementations/index.mjs +31 -0
  162. package/dist/plugins/implementations/multi-task-learning.d.ts +115 -0
  163. package/dist/plugins/implementations/multi-task-learning.d.ts.map +1 -0
  164. package/dist/plugins/implementations/multi-task-learning.js +369 -0
  165. package/dist/plugins/implementations/multi-task-learning.js.map +1 -0
  166. package/dist/plugins/implementations/multi-task-learning.mjs +364 -0
  167. package/dist/plugins/implementations/neural-architecture-search.d.ts +148 -0
  168. package/dist/plugins/implementations/neural-architecture-search.d.ts.map +1 -0
  169. package/dist/plugins/implementations/neural-architecture-search.js +379 -0
  170. package/dist/plugins/implementations/neural-architecture-search.js.map +1 -0
  171. package/dist/plugins/implementations/neural-architecture-search.mjs +374 -0
  172. package/dist/plugins/implementations/q-learning.d.ts +98 -0
  173. package/dist/plugins/implementations/q-learning.d.ts.map +1 -0
  174. package/dist/plugins/implementations/q-learning.js +435 -0
  175. package/dist/plugins/implementations/q-learning.js.map +1 -0
  176. package/dist/plugins/implementations/q-learning.mjs +430 -0
  177. package/dist/plugins/implementations/sarsa.d.ts +103 -0
  178. package/dist/plugins/implementations/sarsa.d.ts.map +1 -0
  179. package/dist/plugins/implementations/sarsa.js +347 -0
  180. package/dist/plugins/implementations/sarsa.js.map +1 -0
  181. package/dist/plugins/implementations/sarsa.mjs +342 -0
  182. package/dist/plugins/index.d.ts +107 -0
  183. package/dist/plugins/index.d.ts.map +1 -0
  184. package/dist/plugins/index.js +179 -0
  185. package/dist/plugins/index.js.map +1 -0
  186. package/dist/plugins/index.mjs +168 -0
  187. package/dist/plugins/interface.d.ts +439 -0
  188. package/dist/plugins/interface.d.ts.map +1 -0
  189. package/dist/plugins/interface.js +12 -0
  190. package/dist/plugins/interface.js.map +1 -0
  191. package/dist/plugins/interface.mjs +10 -0
  192. package/dist/plugins/learning-plugin.interface.d.ts +257 -0
  193. package/dist/plugins/learning-plugin.interface.d.ts.map +1 -0
  194. package/dist/plugins/learning-plugin.interface.js +7 -0
  195. package/dist/plugins/learning-plugin.interface.js.map +1 -0
  196. package/dist/plugins/learning-plugin.interface.mjs +5 -0
  197. package/dist/plugins/plugin-exports.d.ts +71 -0
  198. package/dist/plugins/plugin-exports.d.ts.map +1 -0
  199. package/dist/plugins/plugin-exports.js +78 -0
  200. package/dist/plugins/plugin-exports.js.map +1 -0
  201. package/dist/plugins/plugin-exports.mjs +69 -0
  202. package/dist/plugins/registry.d.ts +206 -0
  203. package/dist/plugins/registry.d.ts.map +1 -0
  204. package/dist/plugins/registry.js +365 -0
  205. package/dist/plugins/registry.js.map +1 -0
  206. package/dist/plugins/registry.mjs +356 -0
  207. package/dist/plugins/validator.d.ts +63 -0
  208. package/dist/plugins/validator.d.ts.map +1 -0
  209. package/dist/plugins/validator.js +464 -0
  210. package/dist/plugins/validator.js.map +1 -0
  211. package/dist/plugins/validator.mjs +458 -0
  212. package/dist/quantization/binary-quantization.d.ts +104 -0
  213. package/dist/quantization/binary-quantization.d.ts.map +1 -0
  214. package/dist/quantization/binary-quantization.js +246 -0
  215. package/dist/quantization/binary-quantization.js.map +1 -0
  216. package/dist/quantization/binary-quantization.mjs +240 -0
  217. package/dist/quantization/optimized-pq.d.ts +138 -0
  218. package/dist/quantization/optimized-pq.d.ts.map +1 -0
  219. package/dist/quantization/optimized-pq.js +320 -0
  220. package/dist/quantization/optimized-pq.js.map +1 -0
  221. package/dist/quantization/optimized-pq.mjs +313 -0
  222. package/dist/quantization/product-quantization.d.ts +109 -0
  223. package/dist/quantization/product-quantization.d.ts.map +1 -0
  224. package/dist/quantization/product-quantization.js +287 -0
  225. package/dist/quantization/product-quantization.js.map +1 -0
  226. package/dist/quantization/product-quantization.mjs +282 -0
  227. package/dist/quantization/scalar-quantization.d.ts +100 -0
  228. package/dist/quantization/scalar-quantization.d.ts.map +1 -0
  229. package/dist/quantization/scalar-quantization.js +324 -0
  230. package/dist/quantization/scalar-quantization.js.map +1 -0
  231. package/dist/quantization/scalar-quantization.mjs +319 -0
  232. package/dist/query/index.d.ts +6 -0
  233. package/dist/query/index.d.ts.map +1 -0
  234. package/dist/query/index.js +9 -0
  235. package/dist/query/index.js.map +1 -0
  236. package/dist/query/index.mjs +4 -0
  237. package/dist/query/query-builder.d.ts +323 -0
  238. package/dist/query/query-builder.d.ts.map +1 -0
  239. package/dist/query/query-builder.js +524 -0
  240. package/dist/query/query-builder.js.map +1 -0
  241. package/dist/query/query-builder.mjs +519 -0
  242. package/dist/reasoning/context-synthesizer.d.ts +57 -0
  243. package/dist/reasoning/context-synthesizer.d.ts.map +1 -0
  244. package/dist/reasoning/context-synthesizer.js +224 -0
  245. package/dist/reasoning/context-synthesizer.js.map +1 -0
  246. package/dist/reasoning/context-synthesizer.mjs +219 -0
  247. package/dist/reasoning/experience-curator.d.ts +66 -0
  248. package/dist/reasoning/experience-curator.d.ts.map +1 -0
  249. package/dist/reasoning/experience-curator.js +288 -0
  250. package/dist/reasoning/experience-curator.js.map +1 -0
  251. package/dist/reasoning/experience-curator.mjs +283 -0
  252. package/dist/reasoning/memory-optimizer.d.ts +69 -0
  253. package/dist/reasoning/memory-optimizer.d.ts.map +1 -0
  254. package/dist/reasoning/memory-optimizer.js +331 -0
  255. package/dist/reasoning/memory-optimizer.js.map +1 -0
  256. package/dist/reasoning/memory-optimizer.mjs +326 -0
  257. package/dist/reasoning/pattern-matcher.d.ts +59 -0
  258. package/dist/reasoning/pattern-matcher.d.ts.map +1 -0
  259. package/dist/reasoning/pattern-matcher.js +229 -0
  260. package/dist/reasoning/pattern-matcher.js.map +1 -0
  261. package/dist/reasoning/pattern-matcher.mjs +224 -0
  262. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +118 -0
  263. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +1 -0
  264. package/dist/reasoningbank/adapter/agentdb-adapter.js +477 -0
  265. package/dist/reasoningbank/adapter/agentdb-adapter.js.map +1 -0
  266. package/dist/reasoningbank/adapter/types.d.ts +113 -0
  267. package/dist/reasoningbank/adapter/types.d.ts.map +1 -0
  268. package/dist/reasoningbank/adapter/types.js +9 -0
  269. package/dist/reasoningbank/adapter/types.js.map +1 -0
  270. package/dist/reasoningbank/cli/commands.d.ts +16 -0
  271. package/dist/reasoningbank/cli/commands.d.ts.map +1 -0
  272. package/dist/reasoningbank/cli/commands.js +272 -0
  273. package/dist/reasoningbank/cli/commands.js.map +1 -0
  274. package/dist/reasoningbank/mcp/agentdb-tools.d.ts +319 -0
  275. package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +1 -0
  276. package/dist/reasoningbank/mcp/agentdb-tools.js +301 -0
  277. package/dist/reasoningbank/mcp/agentdb-tools.js.map +1 -0
  278. package/dist/reasoningbank/migration/migrate.d.ts +25 -0
  279. package/dist/reasoningbank/migration/migrate.d.ts.map +1 -0
  280. package/dist/reasoningbank/migration/migrate.js +178 -0
  281. package/dist/reasoningbank/migration/migrate.js.map +1 -0
  282. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +37 -0
  283. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +1 -0
  284. package/dist/reasoningbank/reasoning/context-synthesizer.js +114 -0
  285. package/dist/reasoningbank/reasoning/context-synthesizer.js.map +1 -0
  286. package/dist/reasoningbank/reasoning/experience-curator.d.ts +39 -0
  287. package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +1 -0
  288. package/dist/reasoningbank/reasoning/experience-curator.js +98 -0
  289. package/dist/reasoningbank/reasoning/experience-curator.js.map +1 -0
  290. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +44 -0
  291. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +1 -0
  292. package/dist/reasoningbank/reasoning/memory-optimizer.js +184 -0
  293. package/dist/reasoningbank/reasoning/memory-optimizer.js.map +1 -0
  294. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +40 -0
  295. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +1 -0
  296. package/dist/reasoningbank/reasoning/pattern-matcher.js +87 -0
  297. package/dist/reasoningbank/reasoning/pattern-matcher.js.map +1 -0
  298. package/dist/reasoningbank/sync/quic-sync.d.ts +77 -0
  299. package/dist/reasoningbank/sync/quic-sync.d.ts.map +1 -0
  300. package/dist/reasoningbank/sync/quic-sync.js +165 -0
  301. package/dist/reasoningbank/sync/quic-sync.js.map +1 -0
  302. package/dist/sync/conflict.d.ts +78 -0
  303. package/dist/sync/conflict.d.ts.map +1 -0
  304. package/dist/sync/conflict.js +202 -0
  305. package/dist/sync/conflict.js.map +1 -0
  306. package/dist/sync/conflict.mjs +196 -0
  307. package/dist/sync/coordinator.d.ts +111 -0
  308. package/dist/sync/coordinator.d.ts.map +1 -0
  309. package/dist/sync/coordinator.js +256 -0
  310. package/dist/sync/coordinator.js.map +1 -0
  311. package/dist/sync/coordinator.mjs +250 -0
  312. package/dist/sync/delta.d.ts +81 -0
  313. package/dist/sync/delta.d.ts.map +1 -0
  314. package/dist/sync/delta.js +245 -0
  315. package/dist/sync/delta.js.map +1 -0
  316. package/dist/sync/delta.mjs +238 -0
  317. package/dist/sync/index.d.ts +11 -0
  318. package/dist/sync/index.d.ts.map +1 -0
  319. package/dist/sync/index.js +22 -0
  320. package/dist/sync/index.js.map +1 -0
  321. package/dist/sync/index.mjs +9 -0
  322. package/dist/sync/quic-sync.d.ts +81 -0
  323. package/dist/sync/quic-sync.d.ts.map +1 -0
  324. package/dist/sync/quic-sync.js +329 -0
  325. package/dist/sync/quic-sync.js.map +1 -0
  326. package/dist/sync/quic-sync.mjs +323 -0
  327. package/dist/sync/types.d.ts +168 -0
  328. package/dist/sync/types.d.ts.map +1 -0
  329. package/dist/sync/types.js +8 -0
  330. package/dist/sync/types.js.map +1 -0
  331. package/dist/sync/types.mjs +6 -0
  332. package/dist/types/index.d.ts +117 -0
  333. package/dist/types/index.d.ts.map +1 -0
  334. package/dist/types/index.js +6 -0
  335. package/dist/types/index.js.map +1 -0
  336. package/dist/types/index.mjs +4 -0
  337. package/dist/wasm-loader.d.ts +32 -0
  338. package/dist/wasm-loader.d.ts.map +1 -0
  339. package/dist/wasm-loader.js +75 -0
  340. package/dist/wasm-loader.js.map +1 -0
  341. package/dist/wasm-loader.mjs +64 -0
  342. package/examples/adaptive-learning.ts +284 -0
  343. package/examples/browser/README.md +732 -0
  344. package/examples/browser/adaptive-recommendations/index.html +427 -0
  345. package/examples/browser/collaborative-filtering/index.html +310 -0
  346. package/examples/browser/continual-learning/index.html +736 -0
  347. package/examples/browser/experience-replay/index.html +616 -0
  348. package/examples/browser/index.html +369 -0
  349. package/examples/browser/meta-learning/index.html +789 -0
  350. package/examples/browser/neuro-symbolic/index.html +692 -0
  351. package/examples/browser/pattern-learning/index.html +620 -0
  352. package/examples/browser/quantum-inspired/index.html +728 -0
  353. package/examples/browser/rag/index.html +624 -0
  354. package/examples/browser/swarm-intelligence/index.html +811 -0
  355. package/examples/browser-basic.html +170 -0
  356. package/examples/hnsw-example.ts +148 -0
  357. package/examples/node-basic.js +70 -0
  358. package/examples/quic-sync-example.ts +310 -0
  359. package/examples/quick-start.js +68 -0
  360. package/examples/wasm-example.ts +222 -0
  361. package/package.json +118 -0
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ /**
3
+ * VectorQueryBuilder - Fluent API for building complex vector search queries
4
+ * Provides type-safe filtering, sorting, and pagination with SQL injection protection
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.VectorQueryBuilder = void 0;
8
+ /**
9
+ * VectorQueryBuilder - Fluent API for complex vector queries
10
+ *
11
+ * @template T - Type of metadata object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const results = await db.query()
16
+ * .similarTo(queryVector)
17
+ * .where('metadata.category', '=', 'tech')
18
+ * .whereBetween('metadata.year', 2020, 2024)
19
+ * .orderBySimilarity('asc')
20
+ * .limit(10)
21
+ * .execute();
22
+ * ```
23
+ */
24
+ class VectorQueryBuilder {
25
+ constructor(db) {
26
+ this.k = 10;
27
+ this.filters = [];
28
+ this.orders = [];
29
+ this.offsetValue = 0;
30
+ this.metric = 'cosine';
31
+ this.threshold = 0.0;
32
+ this.db = db;
33
+ }
34
+ /**
35
+ * Search for vectors similar to the given vector
36
+ *
37
+ * @param vector - Query vector
38
+ * @param k - Number of results to retrieve (default: 10)
39
+ * @returns this for chaining
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * db.query().similarTo([0.1, 0.2, 0.3], 5)
44
+ * ```
45
+ */
46
+ similarTo(vector, k) {
47
+ this.queryVector = vector;
48
+ if (k !== undefined) {
49
+ this.k = k;
50
+ }
51
+ return this;
52
+ }
53
+ /**
54
+ * Search for vectors similar to a vector already in the database
55
+ *
56
+ * @param id - ID of the reference vector
57
+ * @param k - Number of results to retrieve (default: 10)
58
+ * @returns this for chaining
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * db.query().similarToId('vector-123', 5)
63
+ * ```
64
+ */
65
+ similarToId(id, k) {
66
+ this.queryId = id;
67
+ if (k !== undefined) {
68
+ this.k = k;
69
+ }
70
+ return this;
71
+ }
72
+ /**
73
+ * Add a filter condition
74
+ *
75
+ * @param field - Field name (use 'metadata.field' for metadata)
76
+ * @param op - Comparison operator
77
+ * @param value - Value to compare against
78
+ * @returns this for chaining
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * db.query()
83
+ * .similarTo(vector)
84
+ * .where('metadata.category', '=', 'tech')
85
+ * .where('metadata.year', '>', 2020)
86
+ * ```
87
+ */
88
+ where(field, op, value) {
89
+ const isMetadata = field.startsWith('metadata.');
90
+ this.filters.push({
91
+ field: isMetadata ? field.substring(9) : field, // Remove 'metadata.' prefix
92
+ operator: op,
93
+ value,
94
+ isMetadata
95
+ });
96
+ return this;
97
+ }
98
+ /**
99
+ * Filter where field is IN a set of values
100
+ *
101
+ * @param field - Field name
102
+ * @param values - Array of values
103
+ * @returns this for chaining
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * db.query()
108
+ * .similarTo(vector)
109
+ * .whereIn('metadata.tags', ['typescript', 'javascript'])
110
+ * ```
111
+ */
112
+ whereIn(field, values) {
113
+ return this.where(field, 'IN', values);
114
+ }
115
+ /**
116
+ * Filter where field is between min and max (inclusive)
117
+ *
118
+ * @param field - Field name
119
+ * @param min - Minimum value
120
+ * @param max - Maximum value
121
+ * @returns this for chaining
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * db.query()
126
+ * .similarTo(vector)
127
+ * .whereBetween('metadata.year', 2020, 2024)
128
+ * ```
129
+ */
130
+ whereBetween(field, min, max) {
131
+ this.where(field, '>=', min);
132
+ this.where(field, '<=', max);
133
+ return this;
134
+ }
135
+ /**
136
+ * Filter metadata field (alias for where with 'metadata.' prefix)
137
+ *
138
+ * @param path - Metadata field path
139
+ * @param op - Comparison operator
140
+ * @param value - Value to compare against
141
+ * @returns this for chaining
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * db.query()
146
+ * .similarTo(vector)
147
+ * .whereMetadata('author.verified', '=', true)
148
+ * ```
149
+ */
150
+ whereMetadata(path, op, value) {
151
+ return this.where(`metadata.${path}`, op, value);
152
+ }
153
+ /**
154
+ * Set similarity metric
155
+ *
156
+ * @param metric - Similarity metric ('cosine', 'euclidean', 'dot')
157
+ * @returns this for chaining
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * db.query().similarTo(vector).useSimilarityMetric('euclidean')
162
+ * ```
163
+ */
164
+ useSimilarityMetric(metric) {
165
+ this.metric = metric;
166
+ return this;
167
+ }
168
+ /**
169
+ * Set minimum similarity threshold
170
+ *
171
+ * @param threshold - Minimum score threshold
172
+ * @returns this for chaining
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * db.query().similarTo(vector).withThreshold(0.7)
177
+ * ```
178
+ */
179
+ withThreshold(threshold) {
180
+ this.threshold = threshold;
181
+ return this;
182
+ }
183
+ /**
184
+ * Order results by a field
185
+ *
186
+ * @param field - Field name
187
+ * @param direction - Sort direction ('asc' or 'desc')
188
+ * @returns this for chaining
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * db.query()
193
+ * .similarTo(vector)
194
+ * .orderBy('metadata.timestamp', 'desc')
195
+ * ```
196
+ */
197
+ orderBy(field, direction = 'asc') {
198
+ this.orders.push({
199
+ field,
200
+ direction,
201
+ bySimilarity: false
202
+ });
203
+ return this;
204
+ }
205
+ /**
206
+ * Order results by similarity score
207
+ *
208
+ * @param direction - Sort direction ('asc' or 'desc', default: 'desc')
209
+ * @returns this for chaining
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * db.query()
214
+ * .similarTo(vector)
215
+ * .orderBySimilarity('asc') // Least similar first
216
+ * ```
217
+ */
218
+ orderBySimilarity(direction = 'desc') {
219
+ this.orders.push({
220
+ field: 'score',
221
+ direction,
222
+ bySimilarity: true
223
+ });
224
+ return this;
225
+ }
226
+ /**
227
+ * Limit number of results
228
+ *
229
+ * @param n - Maximum number of results
230
+ * @returns this for chaining
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * db.query().similarTo(vector).limit(10)
235
+ * ```
236
+ */
237
+ limit(n) {
238
+ if (n < 0) {
239
+ throw new Error('Limit must be non-negative');
240
+ }
241
+ this.limitValue = n;
242
+ return this;
243
+ }
244
+ /**
245
+ * Skip first n results
246
+ *
247
+ * @param n - Number of results to skip
248
+ * @returns this for chaining
249
+ *
250
+ * @example
251
+ * ```typescript
252
+ * db.query().similarTo(vector).offset(20).limit(10) // Get results 21-30
253
+ * ```
254
+ */
255
+ offset(n) {
256
+ if (n < 0) {
257
+ throw new Error('Offset must be non-negative');
258
+ }
259
+ this.offsetValue = n;
260
+ return this;
261
+ }
262
+ /**
263
+ * Alias for offset
264
+ */
265
+ skip(n) {
266
+ return this.offset(n);
267
+ }
268
+ /**
269
+ * Alias for limit
270
+ */
271
+ take(n) {
272
+ return this.limit(n);
273
+ }
274
+ /**
275
+ * Execute raw SQL query (advanced usage)
276
+ *
277
+ * @param sql - Raw SQL query
278
+ * @param params - Query parameters
279
+ * @returns this for chaining
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * db.query()
284
+ * .raw('SELECT * FROM vectors WHERE metadata->>"$.category" = ?', ['tech'])
285
+ * .execute()
286
+ * ```
287
+ */
288
+ raw(sql, params) {
289
+ this.rawSQL = sql;
290
+ this.rawParams = params;
291
+ return this;
292
+ }
293
+ /**
294
+ * Type-safe metadata wrapper
295
+ *
296
+ * @returns QueryBuilder with typed metadata
297
+ *
298
+ * @example
299
+ * ```typescript
300
+ * interface BlogPost {
301
+ * title: string;
302
+ * author: string;
303
+ * }
304
+ *
305
+ * const posts = await db.query()
306
+ * .withMetadata<BlogPost>()
307
+ * .similarTo(vector)
308
+ * .execute();
309
+ *
310
+ * // posts[0].metadata.title is typed as string
311
+ * ```
312
+ */
313
+ withMetadata() {
314
+ return this;
315
+ }
316
+ /**
317
+ * Execute the query and return all results
318
+ *
319
+ * @returns Promise resolving to array of search results
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * const results = await db.query()
324
+ * .similarTo(vector)
325
+ * .where('metadata.category', '=', 'tech')
326
+ * .limit(10)
327
+ * .execute();
328
+ * ```
329
+ */
330
+ async execute() {
331
+ // If raw SQL is provided, use it (advanced usage)
332
+ if (this.rawSQL) {
333
+ return this.executeRaw();
334
+ }
335
+ // Get query vector
336
+ let vector = this.queryVector;
337
+ if (this.queryId) {
338
+ const refVector = this.db.get(this.queryId);
339
+ if (!refVector) {
340
+ throw new Error(`Vector with ID ${this.queryId} not found`);
341
+ }
342
+ vector = refVector.embedding;
343
+ }
344
+ if (!vector) {
345
+ throw new Error('Must specify query vector using similarTo() or similarToId()');
346
+ }
347
+ // Perform initial vector search
348
+ let results = this.db.search(vector, this.k, this.metric, this.threshold);
349
+ // Apply filters
350
+ results = this.applyFilters(results);
351
+ // Apply sorting
352
+ results = this.applySorting(results);
353
+ // Apply pagination
354
+ results = this.applyPagination(results);
355
+ return results;
356
+ }
357
+ /**
358
+ * Execute query and return first result
359
+ *
360
+ * @returns Promise resolving to first result or null
361
+ *
362
+ * @example
363
+ * ```typescript
364
+ * const best = await db.query()
365
+ * .similarTo(vector)
366
+ * .first();
367
+ * ```
368
+ */
369
+ async first() {
370
+ const results = await this.limit(1).execute();
371
+ return results.length > 0 ? results[0] : null;
372
+ }
373
+ /**
374
+ * Count results without retrieving them
375
+ *
376
+ * @returns Promise resolving to count
377
+ *
378
+ * @example
379
+ * ```typescript
380
+ * const count = await db.query()
381
+ * .similarTo(vector)
382
+ * .where('metadata.category', '=', 'tech')
383
+ * .count();
384
+ * ```
385
+ */
386
+ async count() {
387
+ const results = await this.execute();
388
+ return results.length;
389
+ }
390
+ /**
391
+ * Apply filters to results
392
+ */
393
+ applyFilters(results) {
394
+ if (this.filters.length === 0) {
395
+ return results;
396
+ }
397
+ return results.filter(result => {
398
+ return this.filters.every(filter => {
399
+ const value = filter.isMetadata
400
+ ? this.getNestedValue(result.metadata, filter.field)
401
+ : result[filter.field];
402
+ return this.matchesCondition(value, filter.operator, filter.value);
403
+ });
404
+ });
405
+ }
406
+ /**
407
+ * Get nested object value by path
408
+ */
409
+ getNestedValue(obj, path) {
410
+ if (!obj)
411
+ return undefined;
412
+ const parts = path.split('.');
413
+ let current = obj;
414
+ for (const part of parts) {
415
+ if (current === undefined || current === null) {
416
+ return undefined;
417
+ }
418
+ current = current[part];
419
+ }
420
+ return current;
421
+ }
422
+ /**
423
+ * Check if value matches condition
424
+ */
425
+ matchesCondition(value, operator, target) {
426
+ if (value === undefined || value === null) {
427
+ return operator === '!=' && target !== undefined && target !== null;
428
+ }
429
+ switch (operator) {
430
+ case '=':
431
+ return value === target;
432
+ case '!=':
433
+ return value !== target;
434
+ case '>':
435
+ return value > target;
436
+ case '>=':
437
+ return value >= target;
438
+ case '<':
439
+ return value < target;
440
+ case '<=':
441
+ return value <= target;
442
+ case 'LIKE':
443
+ if (typeof value !== 'string' || typeof target !== 'string') {
444
+ return false;
445
+ }
446
+ const pattern = target.replace(/%/g, '.*').replace(/_/g, '.');
447
+ return new RegExp(`^${pattern}$`, 'i').test(value);
448
+ case 'IN':
449
+ if (!Array.isArray(target)) {
450
+ throw new Error('IN operator requires array value');
451
+ }
452
+ return target.includes(value);
453
+ default:
454
+ return false;
455
+ }
456
+ }
457
+ /**
458
+ * Apply sorting to results
459
+ */
460
+ applySorting(results) {
461
+ if (this.orders.length === 0) {
462
+ return results;
463
+ }
464
+ return [...results].sort((a, b) => {
465
+ for (const order of this.orders) {
466
+ let aVal;
467
+ let bVal;
468
+ if (order.bySimilarity) {
469
+ aVal = a.score;
470
+ bVal = b.score;
471
+ }
472
+ else if (order.field.startsWith('metadata.')) {
473
+ const field = order.field.substring(9);
474
+ aVal = this.getNestedValue(a.metadata, field);
475
+ bVal = this.getNestedValue(b.metadata, field);
476
+ }
477
+ else {
478
+ aVal = a[order.field];
479
+ bVal = b[order.field];
480
+ }
481
+ // Handle null/undefined
482
+ if (aVal === undefined || aVal === null) {
483
+ return order.direction === 'asc' ? 1 : -1;
484
+ }
485
+ if (bVal === undefined || bVal === null) {
486
+ return order.direction === 'asc' ? -1 : 1;
487
+ }
488
+ // Compare values
489
+ let comparison = 0;
490
+ if (aVal < bVal)
491
+ comparison = -1;
492
+ else if (aVal > bVal)
493
+ comparison = 1;
494
+ if (comparison !== 0) {
495
+ return order.direction === 'asc' ? comparison : -comparison;
496
+ }
497
+ }
498
+ return 0;
499
+ });
500
+ }
501
+ /**
502
+ * Apply pagination to results
503
+ */
504
+ applyPagination(results) {
505
+ let paginated = results;
506
+ if (this.offsetValue > 0) {
507
+ paginated = paginated.slice(this.offsetValue);
508
+ }
509
+ if (this.limitValue !== undefined) {
510
+ paginated = paginated.slice(0, this.limitValue);
511
+ }
512
+ return paginated;
513
+ }
514
+ /**
515
+ * Execute raw SQL query (advanced)
516
+ */
517
+ async executeRaw() {
518
+ // This would require direct database access
519
+ // For now, throw an error - can be implemented later with backend support
520
+ throw new Error('Raw SQL queries not yet implemented. Use standard query methods.');
521
+ }
522
+ }
523
+ exports.VectorQueryBuilder = VectorQueryBuilder;
524
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"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"}