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,196 @@
1
+ /**
2
+ * SQLiteVector QUIC Sync - Conflict Resolution
3
+ *
4
+ * Strategies for resolving synchronization conflicts
5
+ */
6
+ import { VersionVector } from './delta.mjs';
7
+ /**
8
+ * Conflict resolver
9
+ */
10
+ export class ConflictResolver {
11
+ constructor(strategy = 'last-write-wins') {
12
+ this.strategy = strategy;
13
+ }
14
+ /**
15
+ * Resolve conflict between local and remote changes
16
+ */
17
+ resolve(local, remote) {
18
+ // Check if it's actually a conflict
19
+ if (!this.isConflict(local, remote)) {
20
+ // Use version vector to determine ordering
21
+ const comparison = VersionVector.compare(local.versionVector, remote.versionVector);
22
+ return {
23
+ winner: comparison >= 0 ? local : remote
24
+ };
25
+ }
26
+ // Detect conflict
27
+ const conflict = {
28
+ id: `conflict-${local.vectorId}-${Date.now()}`,
29
+ shardId: local.shardId,
30
+ vectorId: local.vectorId,
31
+ localChange: local,
32
+ remoteChange: remote,
33
+ detectedAt: Date.now() * 1000 // microseconds
34
+ };
35
+ // Apply strategy
36
+ let winner;
37
+ switch (this.strategy) {
38
+ case 'last-write-wins':
39
+ winner = this.lastWriteWins(local, remote);
40
+ break;
41
+ case 'first-write-wins':
42
+ winner = this.firstWriteWins(local, remote);
43
+ break;
44
+ case 'merge':
45
+ winner = this.merge(local, remote);
46
+ break;
47
+ case 'manual':
48
+ // Return conflict for manual resolution
49
+ return { winner: local, conflict };
50
+ default:
51
+ winner = this.lastWriteWins(local, remote);
52
+ }
53
+ return { winner, conflict };
54
+ }
55
+ /**
56
+ * Check if two changes conflict
57
+ */
58
+ isConflict(local, remote) {
59
+ // Same vector ID with concurrent version vectors = conflict
60
+ if (local.vectorId !== remote.vectorId) {
61
+ return false;
62
+ }
63
+ const comparison = VersionVector.compare(local.versionVector, remote.versionVector);
64
+ // Concurrent changes = conflict
65
+ return comparison === 0;
66
+ }
67
+ /**
68
+ * Last-write-wins strategy
69
+ */
70
+ lastWriteWins(local, remote) {
71
+ return local.timestamp >= remote.timestamp ? local : remote;
72
+ }
73
+ /**
74
+ * First-write-wins strategy
75
+ */
76
+ firstWriteWins(local, remote) {
77
+ return local.timestamp <= remote.timestamp ? local : remote;
78
+ }
79
+ /**
80
+ * Merge strategy (for metadata and vectors)
81
+ */
82
+ merge(local, remote) {
83
+ // For deletes, prefer the delete operation
84
+ if (local.operation === 'delete' || remote.operation === 'delete') {
85
+ return local.operation === 'delete' ? local : remote;
86
+ }
87
+ // Merge metadata
88
+ const mergedMetadata = {
89
+ ...remote.metadata,
90
+ ...local.metadata // Local takes precedence
91
+ };
92
+ // For vectors, use element-wise average
93
+ let mergedVector;
94
+ if (local.vector && remote.vector) {
95
+ const len = Math.min(local.vector.length, remote.vector.length);
96
+ mergedVector = new Float32Array(len);
97
+ for (let i = 0; i < len; i++) {
98
+ mergedVector[i] = (local.vector[i] + remote.vector[i]) / 2;
99
+ }
100
+ }
101
+ else {
102
+ mergedVector = local.vector || remote.vector;
103
+ }
104
+ // Merge version vectors
105
+ const mergedVV = VersionVector.merge(local.versionVector, remote.versionVector);
106
+ return {
107
+ ...local,
108
+ metadata: mergedMetadata,
109
+ vector: mergedVector,
110
+ versionVector: mergedVV,
111
+ timestamp: Math.max(local.timestamp, remote.timestamp)
112
+ };
113
+ }
114
+ /**
115
+ * Batch resolve multiple conflicts
116
+ */
117
+ resolveAll(localChanges, remoteChanges) {
118
+ const resolved = [];
119
+ const conflicts = [];
120
+ // Build maps for efficient lookup
121
+ const localMap = new Map(localChanges.map(c => [c.vectorId, c]));
122
+ const remoteMap = new Map(remoteChanges.map(c => [c.vectorId, c]));
123
+ // Get all vector IDs
124
+ const allVectorIds = new Set([
125
+ ...localMap.keys(),
126
+ ...remoteMap.keys()
127
+ ]);
128
+ for (const vectorId of allVectorIds) {
129
+ const local = localMap.get(vectorId);
130
+ const remote = remoteMap.get(vectorId);
131
+ if (local && remote) {
132
+ // Potential conflict
133
+ const result = this.resolve(local, remote);
134
+ resolved.push(result.winner);
135
+ if (result.conflict) {
136
+ conflicts.push(result.conflict);
137
+ }
138
+ }
139
+ else {
140
+ // No conflict - add the change that exists
141
+ resolved.push((local || remote));
142
+ }
143
+ }
144
+ return { resolved, conflicts };
145
+ }
146
+ /**
147
+ * Change conflict resolution strategy
148
+ */
149
+ setStrategy(strategy) {
150
+ this.strategy = strategy;
151
+ }
152
+ }
153
+ /**
154
+ * Conflict tracker for manual resolution
155
+ */
156
+ export class ConflictTracker {
157
+ constructor() {
158
+ this.conflicts = new Map();
159
+ }
160
+ /**
161
+ * Add conflict for manual resolution
162
+ */
163
+ addConflict(conflict) {
164
+ this.conflicts.set(conflict.id, conflict);
165
+ }
166
+ /**
167
+ * Get all unresolved conflicts
168
+ */
169
+ getUnresolved() {
170
+ return Array.from(this.conflicts.values());
171
+ }
172
+ /**
173
+ * Get conflicts for specific shard
174
+ */
175
+ getForShard(shardId) {
176
+ return Array.from(this.conflicts.values()).filter(c => c.shardId === shardId);
177
+ }
178
+ /**
179
+ * Resolve conflict manually
180
+ */
181
+ resolveConflict(conflictId, winner) {
182
+ this.conflicts.delete(conflictId);
183
+ }
184
+ /**
185
+ * Clear all conflicts
186
+ */
187
+ clear() {
188
+ this.conflicts.clear();
189
+ }
190
+ /**
191
+ * Get conflict count
192
+ */
193
+ count() {
194
+ return this.conflicts.size;
195
+ }
196
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * SQLiteVector QUIC Sync - Multi-Shard Coordinator
3
+ *
4
+ * Orchestrates synchronization across multiple shards and peers
5
+ */
6
+ import { VectorQuicSync } from './quic-sync';
7
+ import type { SyncResult, SyncConfig, ShardState, CoordinatorStats } from './types';
8
+ /**
9
+ * Peer connection info
10
+ */
11
+ export interface PeerInfo {
12
+ /** Peer node ID */
13
+ nodeId: string;
14
+ /** Peer QUIC address */
15
+ address: string;
16
+ /** Shards available on peer */
17
+ shards: string[];
18
+ /** Last contact timestamp */
19
+ lastContact: number;
20
+ /** Connection status */
21
+ status: 'online' | 'offline' | 'unknown';
22
+ }
23
+ /**
24
+ * Multi-shard synchronization coordinator
25
+ */
26
+ export declare class ShardCoordinator {
27
+ private sync;
28
+ private peers;
29
+ private syncTasks;
30
+ private activeSyncs;
31
+ private stats;
32
+ private maxConcurrentSyncs;
33
+ constructor(sync: VectorQuicSync, maxConcurrentSyncs?: number);
34
+ /**
35
+ * Register peer for synchronization
36
+ */
37
+ registerPeer(peer: PeerInfo): void;
38
+ /**
39
+ * Unregister peer
40
+ */
41
+ unregisterPeer(nodeId: string): void;
42
+ /**
43
+ * Get registered peers
44
+ */
45
+ getPeers(): PeerInfo[];
46
+ /**
47
+ * Schedule shard sync with peer
48
+ */
49
+ scheduleSyncTask(shardId: string, peerAddress: string, priority?: number): void;
50
+ /**
51
+ * Execute scheduled sync tasks
52
+ */
53
+ executeTasks(): Promise<SyncResult[]>;
54
+ /**
55
+ * Execute single sync task
56
+ */
57
+ private executeTask;
58
+ /**
59
+ * Sync all shards with all peers
60
+ */
61
+ syncAll(): Promise<SyncResult[]>;
62
+ /**
63
+ * Sync specific shard with all peers that have it
64
+ */
65
+ syncShard(shardId: string): Promise<SyncResult[]>;
66
+ /**
67
+ * Sync all shards with specific peer
68
+ */
69
+ syncWithPeer(peerAddress: string): Promise<SyncResult[]>;
70
+ /**
71
+ * Get state of all managed shards
72
+ */
73
+ getAllShardStates(): Promise<ShardState[]>;
74
+ /**
75
+ * Start automatic sync for all shards
76
+ */
77
+ startAutoSyncAll(intervalMs: number): void;
78
+ /**
79
+ * Stop all automatic syncs
80
+ */
81
+ stopAutoSyncAll(): void;
82
+ /**
83
+ * Get coordinator statistics
84
+ */
85
+ getStats(): CoordinatorStats;
86
+ /**
87
+ * Update statistics after sync
88
+ */
89
+ private updateStats;
90
+ /**
91
+ * Get pending sync tasks count
92
+ */
93
+ getPendingTasksCount(): number;
94
+ /**
95
+ * Get active syncs count
96
+ */
97
+ getActiveSyncsCount(): number;
98
+ /**
99
+ * Clear all pending tasks
100
+ */
101
+ clearPendingTasks(): void;
102
+ /**
103
+ * Health check for all peers
104
+ */
105
+ healthCheck(): Promise<Map<string, boolean>>;
106
+ }
107
+ /**
108
+ * Create coordinator with convenience wrapper
109
+ */
110
+ export declare function createShardCoordinator(db: any, nodeId: string, config?: Partial<SyncConfig>, maxConcurrentSyncs?: number): Promise<ShardCoordinator>;
111
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/sync/coordinator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;CAC1C;AAaD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,kBAAkB,CAAS;gBAGjC,IAAI,EAAE,cAAc,EACpB,kBAAkB,GAAE,MAAU;IAgBhC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKlC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQpC;;OAEG;IACH,QAAQ,IAAI,QAAQ,EAAE;IAItB;;OAEG;IACH,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAU,GACnB,IAAI;IAaP;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAoC3C;;OAEG;YACW,WAAW;IAkBzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAYtC;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAYvD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAoBhD;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ1C;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAI5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAsBnD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAK3B"}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ /**
3
+ * SQLiteVector QUIC Sync - Multi-Shard Coordinator
4
+ *
5
+ * Orchestrates synchronization across multiple shards and peers
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ShardCoordinator = void 0;
9
+ exports.createShardCoordinator = createShardCoordinator;
10
+ const quic_sync_1 = require("./quic-sync");
11
+ /**
12
+ * Multi-shard synchronization coordinator
13
+ */
14
+ class ShardCoordinator {
15
+ constructor(sync, maxConcurrentSyncs = 5) {
16
+ this.peers = new Map();
17
+ this.syncTasks = [];
18
+ this.activeSyncs = new Set();
19
+ this.sync = sync;
20
+ this.maxConcurrentSyncs = maxConcurrentSyncs;
21
+ this.stats = {
22
+ totalShards: 0,
23
+ activeSyncs: 0,
24
+ totalSyncs: 0,
25
+ totalConflicts: 0,
26
+ avgSyncDurationMs: 0,
27
+ bytesSent: 0,
28
+ bytesReceived: 0
29
+ };
30
+ }
31
+ /**
32
+ * Register peer for synchronization
33
+ */
34
+ registerPeer(peer) {
35
+ this.peers.set(peer.nodeId, peer);
36
+ this.stats.totalShards += peer.shards.length;
37
+ }
38
+ /**
39
+ * Unregister peer
40
+ */
41
+ unregisterPeer(nodeId) {
42
+ const peer = this.peers.get(nodeId);
43
+ if (peer) {
44
+ this.stats.totalShards -= peer.shards.length;
45
+ this.peers.delete(nodeId);
46
+ }
47
+ }
48
+ /**
49
+ * Get registered peers
50
+ */
51
+ getPeers() {
52
+ return Array.from(this.peers.values());
53
+ }
54
+ /**
55
+ * Schedule shard sync with peer
56
+ */
57
+ scheduleSyncTask(shardId, peerAddress, priority = 0) {
58
+ const task = {
59
+ shardId,
60
+ peerAddress,
61
+ priority,
62
+ scheduledAt: Date.now(),
63
+ retries: 0
64
+ };
65
+ this.syncTasks.push(task);
66
+ this.syncTasks.sort((a, b) => b.priority - a.priority);
67
+ }
68
+ /**
69
+ * Execute scheduled sync tasks
70
+ */
71
+ async executeTasks() {
72
+ const results = [];
73
+ while (this.syncTasks.length > 0 && this.activeSyncs.size < this.maxConcurrentSyncs) {
74
+ const task = this.syncTasks.shift();
75
+ const taskKey = `${task.shardId}:${task.peerAddress}`;
76
+ // Skip if already syncing
77
+ if (this.activeSyncs.has(taskKey)) {
78
+ continue;
79
+ }
80
+ // Execute sync
81
+ this.activeSyncs.add(taskKey);
82
+ this.stats.activeSyncs = this.activeSyncs.size;
83
+ const result = await this.executeTask(task);
84
+ results.push(result);
85
+ this.activeSyncs.delete(taskKey);
86
+ this.stats.activeSyncs = this.activeSyncs.size;
87
+ // Update stats
88
+ this.updateStats(result);
89
+ // Retry on failure
90
+ if (!result.success && task.retries < 3) {
91
+ task.retries++;
92
+ task.priority -= 1;
93
+ this.syncTasks.push(task);
94
+ }
95
+ }
96
+ return results;
97
+ }
98
+ /**
99
+ * Execute single sync task
100
+ */
101
+ async executeTask(task) {
102
+ try {
103
+ const result = await this.sync.sync(task.shardId, task.peerAddress);
104
+ return result;
105
+ }
106
+ catch (error) {
107
+ return {
108
+ shardId: task.shardId,
109
+ changesApplied: 0,
110
+ conflictsDetected: 0,
111
+ conflictsResolved: 0,
112
+ conflictsUnresolved: [],
113
+ durationMs: 0,
114
+ success: false,
115
+ error: error instanceof Error ? error.message : String(error)
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Sync all shards with all peers
121
+ */
122
+ async syncAll() {
123
+ const results = [];
124
+ for (const peer of this.peers.values()) {
125
+ for (const shardId of peer.shards) {
126
+ this.scheduleSyncTask(shardId, peer.address, 1);
127
+ }
128
+ }
129
+ return this.executeTasks();
130
+ }
131
+ /**
132
+ * Sync specific shard with all peers that have it
133
+ */
134
+ async syncShard(shardId) {
135
+ const results = [];
136
+ for (const peer of this.peers.values()) {
137
+ if (peer.shards.includes(shardId)) {
138
+ this.scheduleSyncTask(shardId, peer.address, 5);
139
+ }
140
+ }
141
+ return this.executeTasks();
142
+ }
143
+ /**
144
+ * Sync all shards with specific peer
145
+ */
146
+ async syncWithPeer(peerAddress) {
147
+ const peer = Array.from(this.peers.values()).find(p => p.address === peerAddress);
148
+ if (!peer) {
149
+ throw new Error(`Peer not found: ${peerAddress}`);
150
+ }
151
+ for (const shardId of peer.shards) {
152
+ this.scheduleSyncTask(shardId, peer.address, 2);
153
+ }
154
+ return this.executeTasks();
155
+ }
156
+ /**
157
+ * Get state of all managed shards
158
+ */
159
+ async getAllShardStates() {
160
+ const states = [];
161
+ const shardIds = new Set();
162
+ // Collect all unique shard IDs
163
+ for (const peer of this.peers.values()) {
164
+ for (const shardId of peer.shards) {
165
+ shardIds.add(shardId);
166
+ }
167
+ }
168
+ // Get state for each shard
169
+ for (const shardId of shardIds) {
170
+ const state = await this.sync.getShardState(shardId);
171
+ states.push(state);
172
+ }
173
+ return states;
174
+ }
175
+ /**
176
+ * Start automatic sync for all shards
177
+ */
178
+ startAutoSyncAll(intervalMs) {
179
+ for (const peer of this.peers.values()) {
180
+ for (const shardId of peer.shards) {
181
+ this.sync.startAutoSync(shardId, peer.address);
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Stop all automatic syncs
187
+ */
188
+ stopAutoSyncAll() {
189
+ this.sync.stopAllAutoSyncs();
190
+ }
191
+ /**
192
+ * Get coordinator statistics
193
+ */
194
+ getStats() {
195
+ return { ...this.stats };
196
+ }
197
+ /**
198
+ * Update statistics after sync
199
+ */
200
+ updateStats(result) {
201
+ this.stats.totalSyncs++;
202
+ this.stats.totalConflicts += result.conflictsDetected;
203
+ // Update moving average for sync duration
204
+ const alpha = 0.3; // Smoothing factor
205
+ this.stats.avgSyncDurationMs =
206
+ this.stats.avgSyncDurationMs * (1 - alpha) + result.durationMs * alpha;
207
+ }
208
+ /**
209
+ * Get pending sync tasks count
210
+ */
211
+ getPendingTasksCount() {
212
+ return this.syncTasks.length;
213
+ }
214
+ /**
215
+ * Get active syncs count
216
+ */
217
+ getActiveSyncsCount() {
218
+ return this.activeSyncs.size;
219
+ }
220
+ /**
221
+ * Clear all pending tasks
222
+ */
223
+ clearPendingTasks() {
224
+ this.syncTasks = [];
225
+ }
226
+ /**
227
+ * Health check for all peers
228
+ */
229
+ async healthCheck() {
230
+ const health = new Map();
231
+ for (const peer of this.peers.values()) {
232
+ try {
233
+ // Attempt sync with minimal data to check connectivity
234
+ const result = await this.sync.sync(peer.shards[0] || 'health-check', peer.address);
235
+ health.set(peer.nodeId, result.success);
236
+ peer.status = result.success ? 'online' : 'offline';
237
+ peer.lastContact = Date.now();
238
+ }
239
+ catch {
240
+ health.set(peer.nodeId, false);
241
+ peer.status = 'offline';
242
+ }
243
+ }
244
+ return health;
245
+ }
246
+ }
247
+ exports.ShardCoordinator = ShardCoordinator;
248
+ /**
249
+ * Create coordinator with convenience wrapper
250
+ */
251
+ async function createShardCoordinator(db, nodeId, config, maxConcurrentSyncs) {
252
+ const sync = new quic_sync_1.VectorQuicSync(db, nodeId, config);
253
+ await sync.initialize();
254
+ return new ShardCoordinator(sync, maxConcurrentSyncs);
255
+ }
256
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/sync/coordinator.ts"],"names":[],"mappings":"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"}