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.
- package/LICENSE +38 -0
- package/LICENSE-APACHE +190 -0
- package/LICENSE-MIT +21 -0
- package/README.md +953 -0
- package/bin/agentdb.js +485 -0
- package/bin/plugin-cli-wrapper.mjs +21 -0
- package/dist/cache/query-cache.d.ts +105 -0
- package/dist/cache/query-cache.d.ts.map +1 -0
- package/dist/cache/query-cache.js +224 -0
- package/dist/cache/query-cache.js.map +1 -0
- package/dist/cache/query-cache.mjs +219 -0
- package/dist/cli/cache/query-cache.d.ts +104 -0
- package/dist/cli/cache/query-cache.js +244 -0
- package/dist/cli/cli/db-commands.d.ts +48 -0
- package/dist/cli/cli/db-commands.js +613 -0
- package/dist/cli/commands.d.ts +7 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +113 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/commands.mjs +104 -0
- package/dist/cli/core/backend-interface.d.ts +70 -0
- package/dist/cli/core/backend-interface.js +15 -0
- package/dist/cli/core/native-backend.d.ts +140 -0
- package/dist/cli/core/native-backend.js +432 -0
- package/dist/cli/core/vector-db.d.ts +126 -0
- package/dist/cli/core/vector-db.js +338 -0
- package/dist/cli/core/wasm-backend.d.ts +95 -0
- package/dist/cli/core/wasm-backend.js +418 -0
- package/dist/cli/db-commands.d.ts +49 -0
- package/dist/cli/db-commands.d.ts.map +1 -0
- package/dist/cli/db-commands.js +533 -0
- package/dist/cli/db-commands.js.map +1 -0
- package/dist/cli/db-commands.mjs +522 -0
- package/dist/cli/generator.d.ts +11 -0
- package/dist/cli/generator.d.ts.map +1 -0
- package/dist/cli/generator.js +567 -0
- package/dist/cli/generator.js.map +1 -0
- package/dist/cli/generator.mjs +527 -0
- package/dist/cli/help.d.ts +18 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +676 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/help.mjs +667 -0
- package/dist/cli/index/hnsw.d.ts +164 -0
- package/dist/cli/index/hnsw.js +558 -0
- package/dist/cli/plugin-cli.d.ts +7 -0
- package/dist/cli/plugin-cli.d.ts.map +1 -0
- package/dist/cli/plugin-cli.js +295 -0
- package/dist/cli/plugin-cli.js.map +1 -0
- package/dist/cli/plugin-cli.mjs +289 -0
- package/dist/cli/quantization/product-quantization.d.ts +108 -0
- package/dist/cli/quantization/product-quantization.js +350 -0
- package/dist/cli/query/query-builder.d.ts +322 -0
- package/dist/cli/query/query-builder.js +600 -0
- package/dist/cli/templates.d.ts +14 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +182 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/cli/templates.mjs +176 -0
- package/dist/cli/types/index.d.ts +116 -0
- package/dist/cli/types/index.js +5 -0
- package/dist/cli/types.d.ts +91 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +6 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/types.mjs +4 -0
- package/dist/cli/wizard/index.d.ts +6 -0
- package/dist/cli/wizard/index.d.ts.map +1 -0
- package/dist/cli/wizard/index.js +138 -0
- package/dist/cli/wizard/index.js.map +1 -0
- package/dist/cli/wizard/index.mjs +131 -0
- package/dist/cli/wizard/prompts.d.ts +11 -0
- package/dist/cli/wizard/prompts.d.ts.map +1 -0
- package/dist/cli/wizard/prompts.js +482 -0
- package/dist/cli/wizard/prompts.js.map +1 -0
- package/dist/cli/wizard/prompts.mjs +470 -0
- package/dist/cli/wizard/validator.d.ts +13 -0
- package/dist/cli/wizard/validator.d.ts.map +1 -0
- package/dist/cli/wizard/validator.js +234 -0
- package/dist/cli/wizard/validator.js.map +1 -0
- package/dist/cli/wizard/validator.mjs +224 -0
- package/dist/core/backend-interface.d.ts +71 -0
- package/dist/core/backend-interface.d.ts.map +1 -0
- package/dist/core/backend-interface.js +16 -0
- package/dist/core/backend-interface.js.map +1 -0
- package/dist/core/backend-interface.mjs +12 -0
- package/dist/core/native-backend.d.ts +141 -0
- package/dist/core/native-backend.d.ts.map +1 -0
- package/dist/core/native-backend.js +457 -0
- package/dist/core/native-backend.js.map +1 -0
- package/dist/core/native-backend.mjs +449 -0
- package/dist/core/vector-db.d.ts +127 -0
- package/dist/core/vector-db.d.ts.map +1 -0
- package/dist/core/vector-db.js +266 -0
- package/dist/core/vector-db.js.map +1 -0
- package/dist/core/vector-db.mjs +261 -0
- package/dist/core/wasm-backend.d.ts +96 -0
- package/dist/core/wasm-backend.d.ts.map +1 -0
- package/dist/core/wasm-backend.js +393 -0
- package/dist/core/wasm-backend.js.map +1 -0
- package/dist/core/wasm-backend.mjs +385 -0
- package/dist/index/hnsw-optimized.d.ts +75 -0
- package/dist/index/hnsw-optimized.d.ts.map +1 -0
- package/dist/index/hnsw-optimized.js +412 -0
- package/dist/index/hnsw-optimized.js.map +1 -0
- package/dist/index/hnsw-optimized.mjs +407 -0
- package/dist/index/hnsw.d.ts +165 -0
- package/dist/index/hnsw.d.ts.map +1 -0
- package/dist/index/hnsw.js +521 -0
- package/dist/index/hnsw.js.map +1 -0
- package/dist/index/hnsw.mjs +516 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +63 -0
- package/dist/mcp-server.d.ts +27 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +789 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-server.mjs +784 -0
- package/dist/plugins/base-plugin.d.ts +114 -0
- package/dist/plugins/base-plugin.d.ts.map +1 -0
- package/dist/plugins/base-plugin.js +313 -0
- package/dist/plugins/base-plugin.js.map +1 -0
- package/dist/plugins/base-plugin.mjs +275 -0
- package/dist/plugins/implementations/active-learning.d.ts +135 -0
- package/dist/plugins/implementations/active-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/active-learning.js +372 -0
- package/dist/plugins/implementations/active-learning.js.map +1 -0
- package/dist/plugins/implementations/active-learning.mjs +367 -0
- package/dist/plugins/implementations/actor-critic.d.ts +64 -0
- package/dist/plugins/implementations/actor-critic.d.ts.map +1 -0
- package/dist/plugins/implementations/actor-critic.js +363 -0
- package/dist/plugins/implementations/actor-critic.js.map +1 -0
- package/dist/plugins/implementations/actor-critic.mjs +358 -0
- package/dist/plugins/implementations/adversarial-training.d.ts +133 -0
- package/dist/plugins/implementations/adversarial-training.d.ts.map +1 -0
- package/dist/plugins/implementations/adversarial-training.js +409 -0
- package/dist/plugins/implementations/adversarial-training.js.map +1 -0
- package/dist/plugins/implementations/adversarial-training.mjs +404 -0
- package/dist/plugins/implementations/curriculum-learning.d.ts +132 -0
- package/dist/plugins/implementations/curriculum-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/curriculum-learning.js +354 -0
- package/dist/plugins/implementations/curriculum-learning.js.map +1 -0
- package/dist/plugins/implementations/curriculum-learning.mjs +349 -0
- package/dist/plugins/implementations/decision-transformer.d.ts +77 -0
- package/dist/plugins/implementations/decision-transformer.d.ts.map +1 -0
- package/dist/plugins/implementations/decision-transformer.js +422 -0
- package/dist/plugins/implementations/decision-transformer.js.map +1 -0
- package/dist/plugins/implementations/decision-transformer.mjs +417 -0
- package/dist/plugins/implementations/federated-learning.d.ts +126 -0
- package/dist/plugins/implementations/federated-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/federated-learning.js +436 -0
- package/dist/plugins/implementations/federated-learning.js.map +1 -0
- package/dist/plugins/implementations/federated-learning.mjs +431 -0
- package/dist/plugins/implementations/index.d.ts +30 -0
- package/dist/plugins/implementations/index.d.ts.map +1 -0
- package/dist/plugins/implementations/index.js +45 -0
- package/dist/plugins/implementations/index.js.map +1 -0
- package/dist/plugins/implementations/index.mjs +31 -0
- package/dist/plugins/implementations/multi-task-learning.d.ts +115 -0
- package/dist/plugins/implementations/multi-task-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/multi-task-learning.js +369 -0
- package/dist/plugins/implementations/multi-task-learning.js.map +1 -0
- package/dist/plugins/implementations/multi-task-learning.mjs +364 -0
- package/dist/plugins/implementations/neural-architecture-search.d.ts +148 -0
- package/dist/plugins/implementations/neural-architecture-search.d.ts.map +1 -0
- package/dist/plugins/implementations/neural-architecture-search.js +379 -0
- package/dist/plugins/implementations/neural-architecture-search.js.map +1 -0
- package/dist/plugins/implementations/neural-architecture-search.mjs +374 -0
- package/dist/plugins/implementations/q-learning.d.ts +98 -0
- package/dist/plugins/implementations/q-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/q-learning.js +435 -0
- package/dist/plugins/implementations/q-learning.js.map +1 -0
- package/dist/plugins/implementations/q-learning.mjs +430 -0
- package/dist/plugins/implementations/sarsa.d.ts +103 -0
- package/dist/plugins/implementations/sarsa.d.ts.map +1 -0
- package/dist/plugins/implementations/sarsa.js +347 -0
- package/dist/plugins/implementations/sarsa.js.map +1 -0
- package/dist/plugins/implementations/sarsa.mjs +342 -0
- package/dist/plugins/index.d.ts +107 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +179 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/index.mjs +168 -0
- package/dist/plugins/interface.d.ts +439 -0
- package/dist/plugins/interface.d.ts.map +1 -0
- package/dist/plugins/interface.js +12 -0
- package/dist/plugins/interface.js.map +1 -0
- package/dist/plugins/interface.mjs +10 -0
- package/dist/plugins/learning-plugin.interface.d.ts +257 -0
- package/dist/plugins/learning-plugin.interface.d.ts.map +1 -0
- package/dist/plugins/learning-plugin.interface.js +7 -0
- package/dist/plugins/learning-plugin.interface.js.map +1 -0
- package/dist/plugins/learning-plugin.interface.mjs +5 -0
- package/dist/plugins/plugin-exports.d.ts +71 -0
- package/dist/plugins/plugin-exports.d.ts.map +1 -0
- package/dist/plugins/plugin-exports.js +78 -0
- package/dist/plugins/plugin-exports.js.map +1 -0
- package/dist/plugins/plugin-exports.mjs +69 -0
- package/dist/plugins/registry.d.ts +206 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +365 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/registry.mjs +356 -0
- package/dist/plugins/validator.d.ts +63 -0
- package/dist/plugins/validator.d.ts.map +1 -0
- package/dist/plugins/validator.js +464 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/plugins/validator.mjs +458 -0
- package/dist/quantization/binary-quantization.d.ts +104 -0
- package/dist/quantization/binary-quantization.d.ts.map +1 -0
- package/dist/quantization/binary-quantization.js +246 -0
- package/dist/quantization/binary-quantization.js.map +1 -0
- package/dist/quantization/binary-quantization.mjs +240 -0
- package/dist/quantization/optimized-pq.d.ts +138 -0
- package/dist/quantization/optimized-pq.d.ts.map +1 -0
- package/dist/quantization/optimized-pq.js +320 -0
- package/dist/quantization/optimized-pq.js.map +1 -0
- package/dist/quantization/optimized-pq.mjs +313 -0
- package/dist/quantization/product-quantization.d.ts +109 -0
- package/dist/quantization/product-quantization.d.ts.map +1 -0
- package/dist/quantization/product-quantization.js +287 -0
- package/dist/quantization/product-quantization.js.map +1 -0
- package/dist/quantization/product-quantization.mjs +282 -0
- package/dist/quantization/scalar-quantization.d.ts +100 -0
- package/dist/quantization/scalar-quantization.d.ts.map +1 -0
- package/dist/quantization/scalar-quantization.js +324 -0
- package/dist/quantization/scalar-quantization.js.map +1 -0
- package/dist/quantization/scalar-quantization.mjs +319 -0
- package/dist/query/index.d.ts +6 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +9 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/index.mjs +4 -0
- package/dist/query/query-builder.d.ts +323 -0
- package/dist/query/query-builder.d.ts.map +1 -0
- package/dist/query/query-builder.js +524 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/query-builder.mjs +519 -0
- package/dist/reasoning/context-synthesizer.d.ts +57 -0
- package/dist/reasoning/context-synthesizer.d.ts.map +1 -0
- package/dist/reasoning/context-synthesizer.js +224 -0
- package/dist/reasoning/context-synthesizer.js.map +1 -0
- package/dist/reasoning/context-synthesizer.mjs +219 -0
- package/dist/reasoning/experience-curator.d.ts +66 -0
- package/dist/reasoning/experience-curator.d.ts.map +1 -0
- package/dist/reasoning/experience-curator.js +288 -0
- package/dist/reasoning/experience-curator.js.map +1 -0
- package/dist/reasoning/experience-curator.mjs +283 -0
- package/dist/reasoning/memory-optimizer.d.ts +69 -0
- package/dist/reasoning/memory-optimizer.d.ts.map +1 -0
- package/dist/reasoning/memory-optimizer.js +331 -0
- package/dist/reasoning/memory-optimizer.js.map +1 -0
- package/dist/reasoning/memory-optimizer.mjs +326 -0
- package/dist/reasoning/pattern-matcher.d.ts +59 -0
- package/dist/reasoning/pattern-matcher.d.ts.map +1 -0
- package/dist/reasoning/pattern-matcher.js +229 -0
- package/dist/reasoning/pattern-matcher.js.map +1 -0
- package/dist/reasoning/pattern-matcher.mjs +224 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +118 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +1 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.js +477 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.js.map +1 -0
- package/dist/reasoningbank/adapter/types.d.ts +113 -0
- package/dist/reasoningbank/adapter/types.d.ts.map +1 -0
- package/dist/reasoningbank/adapter/types.js +9 -0
- package/dist/reasoningbank/adapter/types.js.map +1 -0
- package/dist/reasoningbank/cli/commands.d.ts +16 -0
- package/dist/reasoningbank/cli/commands.d.ts.map +1 -0
- package/dist/reasoningbank/cli/commands.js +272 -0
- package/dist/reasoningbank/cli/commands.js.map +1 -0
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts +319 -0
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +1 -0
- package/dist/reasoningbank/mcp/agentdb-tools.js +301 -0
- package/dist/reasoningbank/mcp/agentdb-tools.js.map +1 -0
- package/dist/reasoningbank/migration/migrate.d.ts +25 -0
- package/dist/reasoningbank/migration/migrate.d.ts.map +1 -0
- package/dist/reasoningbank/migration/migrate.js +178 -0
- package/dist/reasoningbank/migration/migrate.js.map +1 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +37 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.js +114 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.js.map +1 -0
- package/dist/reasoningbank/reasoning/experience-curator.d.ts +39 -0
- package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/experience-curator.js +98 -0
- package/dist/reasoningbank/reasoning/experience-curator.js.map +1 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +44 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.js +184 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.js.map +1 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +40 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.js +87 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.js.map +1 -0
- package/dist/reasoningbank/sync/quic-sync.d.ts +77 -0
- package/dist/reasoningbank/sync/quic-sync.d.ts.map +1 -0
- package/dist/reasoningbank/sync/quic-sync.js +165 -0
- package/dist/reasoningbank/sync/quic-sync.js.map +1 -0
- package/dist/sync/conflict.d.ts +78 -0
- package/dist/sync/conflict.d.ts.map +1 -0
- package/dist/sync/conflict.js +202 -0
- package/dist/sync/conflict.js.map +1 -0
- package/dist/sync/conflict.mjs +196 -0
- package/dist/sync/coordinator.d.ts +111 -0
- package/dist/sync/coordinator.d.ts.map +1 -0
- package/dist/sync/coordinator.js +256 -0
- package/dist/sync/coordinator.js.map +1 -0
- package/dist/sync/coordinator.mjs +250 -0
- package/dist/sync/delta.d.ts +81 -0
- package/dist/sync/delta.d.ts.map +1 -0
- package/dist/sync/delta.js +245 -0
- package/dist/sync/delta.js.map +1 -0
- package/dist/sync/delta.mjs +238 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +22 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/index.mjs +9 -0
- package/dist/sync/quic-sync.d.ts +81 -0
- package/dist/sync/quic-sync.d.ts.map +1 -0
- package/dist/sync/quic-sync.js +329 -0
- package/dist/sync/quic-sync.js.map +1 -0
- package/dist/sync/quic-sync.mjs +323 -0
- package/dist/sync/types.d.ts +168 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +8 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/sync/types.mjs +6 -0
- package/dist/types/index.d.ts +117 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +4 -0
- package/dist/wasm-loader.d.ts +32 -0
- package/dist/wasm-loader.d.ts.map +1 -0
- package/dist/wasm-loader.js +75 -0
- package/dist/wasm-loader.js.map +1 -0
- package/dist/wasm-loader.mjs +64 -0
- package/examples/adaptive-learning.ts +284 -0
- package/examples/browser/README.md +732 -0
- package/examples/browser/adaptive-recommendations/index.html +427 -0
- package/examples/browser/collaborative-filtering/index.html +310 -0
- package/examples/browser/continual-learning/index.html +736 -0
- package/examples/browser/experience-replay/index.html +616 -0
- package/examples/browser/index.html +369 -0
- package/examples/browser/meta-learning/index.html +789 -0
- package/examples/browser/neuro-symbolic/index.html +692 -0
- package/examples/browser/pattern-learning/index.html +620 -0
- package/examples/browser/quantum-inspired/index.html +728 -0
- package/examples/browser/rag/index.html +624 -0
- package/examples/browser/swarm-intelligence/index.html +811 -0
- package/examples/browser-basic.html +170 -0
- package/examples/hnsw-example.ts +148 -0
- package/examples/node-basic.js +70 -0
- package/examples/quic-sync-example.ts +310 -0
- package/examples/quick-start.js +68 -0
- package/examples/wasm-example.ts +222 -0
- package/package.json +118 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLiteVector QUIC Sync - Delta Computation
|
|
3
|
+
*
|
|
4
|
+
* Efficient delta computation from SQLite changelog for sync
|
|
5
|
+
*/
|
|
6
|
+
import { createHash } from 'crypto';
|
|
7
|
+
import { pack, unpack } from 'msgpackr';
|
|
8
|
+
/**
|
|
9
|
+
* Delta encoder for vector changes
|
|
10
|
+
*/
|
|
11
|
+
export class DeltaEncoder {
|
|
12
|
+
/**
|
|
13
|
+
* Encode changes into compressed delta package
|
|
14
|
+
*/
|
|
15
|
+
static encode(shardId, changes, compression = 'msgpack') {
|
|
16
|
+
if (changes.length === 0) {
|
|
17
|
+
throw new Error('Cannot encode empty changes');
|
|
18
|
+
}
|
|
19
|
+
const fromChangeId = Math.min(...changes.map(c => c.id));
|
|
20
|
+
const toChangeId = Math.max(...changes.map(c => c.id));
|
|
21
|
+
// Serialize changes based on compression
|
|
22
|
+
let processedChanges = changes;
|
|
23
|
+
if (compression === 'msgpack') {
|
|
24
|
+
// MessagePack handles compression automatically
|
|
25
|
+
processedChanges = changes.map(c => ({
|
|
26
|
+
...c,
|
|
27
|
+
// Convert Map to Object for serialization
|
|
28
|
+
versionVector: Object.fromEntries(c.versionVector),
|
|
29
|
+
// Convert Float32Array to regular array for msgpack
|
|
30
|
+
vector: c.vector ? Array.from(c.vector) : undefined
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
// Calculate checksum
|
|
34
|
+
const checksum = this.calculateChecksum(changes);
|
|
35
|
+
return {
|
|
36
|
+
shardId,
|
|
37
|
+
fromChangeId,
|
|
38
|
+
toChangeId,
|
|
39
|
+
changes: processedChanges,
|
|
40
|
+
checksum,
|
|
41
|
+
compression
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Decode delta package back to changes
|
|
46
|
+
*/
|
|
47
|
+
static decode(delta) {
|
|
48
|
+
// Verify checksum
|
|
49
|
+
const calculatedChecksum = this.calculateChecksum(delta.changes);
|
|
50
|
+
if (calculatedChecksum !== delta.checksum) {
|
|
51
|
+
throw new Error('Delta checksum mismatch - data corruption detected');
|
|
52
|
+
}
|
|
53
|
+
// Deserialize based on compression
|
|
54
|
+
if (delta.compression === 'msgpack') {
|
|
55
|
+
return delta.changes.map(c => ({
|
|
56
|
+
...c,
|
|
57
|
+
// Convert Object back to Map
|
|
58
|
+
versionVector: new Map(Object.entries(c.versionVector)),
|
|
59
|
+
// Convert array back to Float32Array
|
|
60
|
+
vector: c.vector ? new Float32Array(c.vector) : undefined
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
return delta.changes;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Serialize delta to bytes for QUIC transmission
|
|
67
|
+
*/
|
|
68
|
+
static serialize(delta) {
|
|
69
|
+
const packed = pack(delta);
|
|
70
|
+
return packed;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Deserialize bytes back to delta
|
|
74
|
+
*/
|
|
75
|
+
static deserialize(bytes) {
|
|
76
|
+
const delta = unpack(bytes);
|
|
77
|
+
// Reconstruct Maps and typed arrays
|
|
78
|
+
delta.changes = delta.changes.map(c => ({
|
|
79
|
+
...c,
|
|
80
|
+
versionVector: new Map(Object.entries(c.versionVector || {})),
|
|
81
|
+
vector: c.vector ? new Float32Array(c.vector) : undefined
|
|
82
|
+
}));
|
|
83
|
+
return delta;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate checksum for changes
|
|
87
|
+
*/
|
|
88
|
+
static calculateChecksum(changes) {
|
|
89
|
+
const hash = createHash('sha256');
|
|
90
|
+
// Sort by ID for deterministic hash
|
|
91
|
+
const sorted = [...changes].sort((a, b) => a.id - b.id);
|
|
92
|
+
for (const change of sorted) {
|
|
93
|
+
hash.update(change.id.toString());
|
|
94
|
+
hash.update(change.operation);
|
|
95
|
+
hash.update(change.vectorId);
|
|
96
|
+
hash.update(change.timestamp.toString());
|
|
97
|
+
}
|
|
98
|
+
return hash.digest('hex');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Split large change sets into batches
|
|
102
|
+
*/
|
|
103
|
+
static batch(changes, batchSize) {
|
|
104
|
+
const batches = [];
|
|
105
|
+
for (let i = 0; i < changes.length; i += batchSize) {
|
|
106
|
+
batches.push(changes.slice(i, i + batchSize));
|
|
107
|
+
}
|
|
108
|
+
return batches;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Optimize delta by removing redundant operations
|
|
112
|
+
*/
|
|
113
|
+
static optimize(changes) {
|
|
114
|
+
const latestByVector = new Map();
|
|
115
|
+
// Keep only latest change per vector
|
|
116
|
+
for (const change of changes) {
|
|
117
|
+
const existing = latestByVector.get(change.vectorId);
|
|
118
|
+
if (!existing || change.timestamp > existing.timestamp) {
|
|
119
|
+
latestByVector.set(change.vectorId, change);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return Array.from(latestByVector.values()).sort((a, b) => a.id - b.id);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* SQLite changelog reader
|
|
127
|
+
*/
|
|
128
|
+
export class ChangelogReader {
|
|
129
|
+
constructor(db) {
|
|
130
|
+
this.db = db;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Read changes from SQLite changelog
|
|
134
|
+
*/
|
|
135
|
+
async readChanges(shardId, fromChangeId, toChangeId) {
|
|
136
|
+
const changes = [];
|
|
137
|
+
// Query changelog table
|
|
138
|
+
const query = toChangeId
|
|
139
|
+
? `SELECT * FROM vector_changelog
|
|
140
|
+
WHERE shard_id = ? AND change_id > ? AND change_id <= ?
|
|
141
|
+
ORDER BY change_id ASC`
|
|
142
|
+
: `SELECT * FROM vector_changelog
|
|
143
|
+
WHERE shard_id = ? AND change_id > ?
|
|
144
|
+
ORDER BY change_id ASC`;
|
|
145
|
+
const params = toChangeId
|
|
146
|
+
? [shardId, fromChangeId, toChangeId]
|
|
147
|
+
: [shardId, fromChangeId];
|
|
148
|
+
const rows = this.db.prepare(query).all(...params);
|
|
149
|
+
for (const row of rows) {
|
|
150
|
+
changes.push({
|
|
151
|
+
id: row.change_id,
|
|
152
|
+
operation: row.operation,
|
|
153
|
+
shardId: row.shard_id,
|
|
154
|
+
vectorId: row.vector_id,
|
|
155
|
+
vector: row.vector_data ? new Float32Array(JSON.parse(row.vector_data)) : undefined,
|
|
156
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
|
|
157
|
+
timestamp: row.timestamp,
|
|
158
|
+
sourceNode: row.source_node,
|
|
159
|
+
versionVector: new Map(JSON.parse(row.version_vector || '{}'))
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return changes;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get latest change ID for shard
|
|
166
|
+
*/
|
|
167
|
+
async getLatestChangeId(shardId) {
|
|
168
|
+
const row = this.db.prepare(`SELECT MAX(change_id) as max_id FROM vector_changelog WHERE shard_id = ?`).get(shardId);
|
|
169
|
+
return row?.max_id || 0;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get version vector for shard
|
|
173
|
+
*/
|
|
174
|
+
async getVersionVector(shardId) {
|
|
175
|
+
const row = this.db.prepare(`SELECT version_vector FROM shard_metadata WHERE shard_id = ?`).get(shardId);
|
|
176
|
+
if (!row) {
|
|
177
|
+
return new Map();
|
|
178
|
+
}
|
|
179
|
+
return new Map(Object.entries(JSON.parse(row.version_vector)));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Update version vector after sync
|
|
183
|
+
*/
|
|
184
|
+
async updateVersionVector(shardId, versionVector) {
|
|
185
|
+
const vvJson = JSON.stringify(Object.fromEntries(versionVector));
|
|
186
|
+
this.db.prepare(`INSERT OR REPLACE INTO shard_metadata (shard_id, version_vector, updated_at)
|
|
187
|
+
VALUES (?, ?, ?)`).run(shardId, vvJson, Date.now());
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Version vector utilities for causal ordering
|
|
192
|
+
*/
|
|
193
|
+
export class VersionVector {
|
|
194
|
+
/**
|
|
195
|
+
* Compare two version vectors
|
|
196
|
+
* Returns: -1 (a < b), 0 (concurrent), 1 (a > b)
|
|
197
|
+
*/
|
|
198
|
+
static compare(a, b) {
|
|
199
|
+
let aGreater = false;
|
|
200
|
+
let bGreater = false;
|
|
201
|
+
// Get all node IDs
|
|
202
|
+
const allNodes = new Set([...a.keys(), ...b.keys()]);
|
|
203
|
+
for (const nodeId of allNodes) {
|
|
204
|
+
const aVersion = a.get(nodeId) || 0;
|
|
205
|
+
const bVersion = b.get(nodeId) || 0;
|
|
206
|
+
if (aVersion > bVersion) {
|
|
207
|
+
aGreater = true;
|
|
208
|
+
}
|
|
209
|
+
else if (bVersion > aVersion) {
|
|
210
|
+
bGreater = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (aGreater && !bGreater)
|
|
214
|
+
return 1;
|
|
215
|
+
if (bGreater && !aGreater)
|
|
216
|
+
return -1;
|
|
217
|
+
return 0; // Concurrent
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Merge two version vectors (element-wise max)
|
|
221
|
+
*/
|
|
222
|
+
static merge(a, b) {
|
|
223
|
+
const merged = new Map(a);
|
|
224
|
+
for (const [nodeId, version] of b) {
|
|
225
|
+
const currentVersion = merged.get(nodeId) || 0;
|
|
226
|
+
merged.set(nodeId, Math.max(currentVersion, version));
|
|
227
|
+
}
|
|
228
|
+
return merged;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Increment version for node
|
|
232
|
+
*/
|
|
233
|
+
static increment(vv, nodeId) {
|
|
234
|
+
const updated = new Map(vv);
|
|
235
|
+
updated.set(nodeId, (updated.get(nodeId) || 0) + 1);
|
|
236
|
+
return updated;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLiteVector QUIC Sync - Main Export
|
|
3
|
+
*
|
|
4
|
+
* Real-time vector database synchronization using QUIC
|
|
5
|
+
*/
|
|
6
|
+
export { VectorQuicSync, createVectorSync } from './quic-sync';
|
|
7
|
+
export { ShardCoordinator, createShardCoordinator, type PeerInfo } from './coordinator';
|
|
8
|
+
export { DeltaEncoder, ChangelogReader, VersionVector } from './delta';
|
|
9
|
+
export { ConflictResolver, ConflictTracker } from './conflict';
|
|
10
|
+
export type { VectorChange, VectorDelta, ChangeOperation, ConflictStrategy, SyncConflict, SyncResult, SyncSession, SyncConfig, ShardState, CoordinatorStats } from './types';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,gBAAgB,EACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SQLiteVector QUIC Sync - Main Export
|
|
4
|
+
*
|
|
5
|
+
* Real-time vector database synchronization using QUIC
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ConflictTracker = exports.ConflictResolver = exports.VersionVector = exports.ChangelogReader = exports.DeltaEncoder = exports.createShardCoordinator = exports.ShardCoordinator = exports.createVectorSync = exports.VectorQuicSync = void 0;
|
|
9
|
+
var quic_sync_1 = require("./quic-sync");
|
|
10
|
+
Object.defineProperty(exports, "VectorQuicSync", { enumerable: true, get: function () { return quic_sync_1.VectorQuicSync; } });
|
|
11
|
+
Object.defineProperty(exports, "createVectorSync", { enumerable: true, get: function () { return quic_sync_1.createVectorSync; } });
|
|
12
|
+
var coordinator_1 = require("./coordinator");
|
|
13
|
+
Object.defineProperty(exports, "ShardCoordinator", { enumerable: true, get: function () { return coordinator_1.ShardCoordinator; } });
|
|
14
|
+
Object.defineProperty(exports, "createShardCoordinator", { enumerable: true, get: function () { return coordinator_1.createShardCoordinator; } });
|
|
15
|
+
var delta_1 = require("./delta");
|
|
16
|
+
Object.defineProperty(exports, "DeltaEncoder", { enumerable: true, get: function () { return delta_1.DeltaEncoder; } });
|
|
17
|
+
Object.defineProperty(exports, "ChangelogReader", { enumerable: true, get: function () { return delta_1.ChangelogReader; } });
|
|
18
|
+
Object.defineProperty(exports, "VersionVector", { enumerable: true, get: function () { return delta_1.VersionVector; } });
|
|
19
|
+
var conflict_1 = require("./conflict");
|
|
20
|
+
Object.defineProperty(exports, "ConflictResolver", { enumerable: true, get: function () { return conflict_1.ConflictResolver; } });
|
|
21
|
+
Object.defineProperty(exports, "ConflictTracker", { enumerable: true, get: function () { return conflict_1.ConflictTracker; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yCAGqB;AAFnB,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAGlB,6CAIuB;AAHrB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AAIxB,iCAIiB;AAHf,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AAGf,uCAGoB;AAFlB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLiteVector QUIC Sync - Main Export
|
|
3
|
+
*
|
|
4
|
+
* Real-time vector database synchronization using QUIC
|
|
5
|
+
*/
|
|
6
|
+
export { VectorQuicSync, createVectorSync } from './quic-sync.mjs';
|
|
7
|
+
export { ShardCoordinator, createShardCoordinator } from './coordinator.mjs';
|
|
8
|
+
export { DeltaEncoder, ChangelogReader, VersionVector } from './delta.mjs';
|
|
9
|
+
export { ConflictResolver, ConflictTracker } from './conflict.mjs';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLiteVector QUIC Sync - Main Synchronization Layer
|
|
3
|
+
*
|
|
4
|
+
* Real-time shard synchronization using QUIC transport from agentic-flow
|
|
5
|
+
*/
|
|
6
|
+
import type { SyncResult, SyncSession, SyncConfig, ShardState } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* QUIC-based vector database synchronization
|
|
9
|
+
*/
|
|
10
|
+
export declare class VectorQuicSync {
|
|
11
|
+
private transport;
|
|
12
|
+
private changelogReader;
|
|
13
|
+
private conflictResolver;
|
|
14
|
+
private conflictTracker;
|
|
15
|
+
private config;
|
|
16
|
+
private nodeId;
|
|
17
|
+
private session;
|
|
18
|
+
private syncTimers;
|
|
19
|
+
constructor(db: any, nodeId: string, config?: Partial<SyncConfig>);
|
|
20
|
+
/**
|
|
21
|
+
* Initialize QUIC transport and sync session
|
|
22
|
+
*/
|
|
23
|
+
initialize(quicConfig?: any): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Synchronize shard with remote peer
|
|
26
|
+
*/
|
|
27
|
+
sync(shardId: string, peerAddress: string, force?: boolean): Promise<SyncResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Request remote changes from peer
|
|
30
|
+
*/
|
|
31
|
+
private requestRemoteChanges;
|
|
32
|
+
/**
|
|
33
|
+
* Send local changes to peer
|
|
34
|
+
*/
|
|
35
|
+
private sendLocalChanges;
|
|
36
|
+
/**
|
|
37
|
+
* Apply changes to local database
|
|
38
|
+
*/
|
|
39
|
+
private applyChanges;
|
|
40
|
+
/**
|
|
41
|
+
* Start automatic periodic sync
|
|
42
|
+
*/
|
|
43
|
+
startAutoSync(shardId: string, peerAddress: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Stop automatic sync for shard
|
|
46
|
+
*/
|
|
47
|
+
stopAutoSync(shardId: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Stop all automatic syncs
|
|
50
|
+
*/
|
|
51
|
+
stopAllAutoSyncs(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get current session
|
|
54
|
+
*/
|
|
55
|
+
getSession(): SyncSession | null;
|
|
56
|
+
/**
|
|
57
|
+
* Get shard state
|
|
58
|
+
*/
|
|
59
|
+
getShardState(shardId: string): Promise<ShardState>;
|
|
60
|
+
/**
|
|
61
|
+
* Get unresolved conflicts
|
|
62
|
+
*/
|
|
63
|
+
getUnresolvedConflicts(shardId?: string): any[];
|
|
64
|
+
/**
|
|
65
|
+
* Save session to persistent storage
|
|
66
|
+
*/
|
|
67
|
+
private saveSession;
|
|
68
|
+
/**
|
|
69
|
+
* Restore session from persistent storage
|
|
70
|
+
*/
|
|
71
|
+
private restoreSession;
|
|
72
|
+
/**
|
|
73
|
+
* Close sync and cleanup resources
|
|
74
|
+
*/
|
|
75
|
+
close(): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create VectorQuicSync instance with convenience wrapper
|
|
79
|
+
*/
|
|
80
|
+
export declare function createVectorSync(db: any, nodeId: string, config?: Partial<SyncConfig>, quicConfig?: any): Promise<VectorQuicSync>;
|
|
81
|
+
//# sourceMappingURL=quic-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic-sync.d.ts","sourceRoot":"","sources":["../../src/sync/quic-sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkDH,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA0C;gBAG1D,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAoBlC;;OAEG;IACG,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjD;;OAEG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,UAAU,CAAC;IA2FtB;;OAEG;YACW,oBAAoB;IA2BlC;;OAEG;YACW,gBAAgB;IA+B9B;;OAEG;YACW,YAAY;IA8B1B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAgBzD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQnC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAIhC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAezD;;OAEG;IACH,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAM/C;;OAEG;YACW,WAAW;IAmBzB;;OAEG;YACW,cAAc;IAK5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,UAAU,CAAC,EAAE,GAAG,GACf,OAAO,CAAC,cAAc,CAAC,CAIzB"}
|