agentdb 3.0.0-alpha.11 → 3.0.0-alpha.13
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/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -0
- package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
- package/dist/src/backends/graph/GraphDatabaseAdapter.js +125 -0
- package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
- package/dist/src/cli/agentdb-cli.js +0 -0
- package/dist/src/controllers/ReflexionMemory.d.ts +50 -0
- package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
- package/dist/src/controllers/ReflexionMemory.js +258 -0
- package/dist/src/controllers/ReflexionMemory.js.map +1 -1
- package/dist/src/controllers/index.d.ts +2 -0
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +2 -0
- package/dist/src/controllers/index.js.map +1 -1
- package/dist/src/controllers/prerequisites.d.ts +76 -0
- package/dist/src/controllers/prerequisites.d.ts.map +1 -0
- package/dist/src/controllers/prerequisites.js +235 -0
- package/dist/src/controllers/prerequisites.js.map +1 -0
- package/dist/src/db-fallback.d.ts.map +1 -1
- package/dist/src/db-fallback.js +55 -45
- package/dist/src/db-fallback.js.map +1 -1
- package/package.json +1 -1
- package/dist/schemas/frontier-schema.sql +0 -378
- package/dist/schemas/schema.sql +0 -382
- package/dist/src/backends/index.cjs +0 -6
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
- package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
- package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
- package/dist/src/consensus/RaftConsensus.d.ts +0 -220
- package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
- package/dist/src/consensus/RaftConsensus.js +0 -762
- package/dist/src/consensus/RaftConsensus.js.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
- package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.js +0 -519
- package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
- package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.js +0 -479
- package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
- package/dist/src/controllers/QUICConnection.d.ts +0 -122
- package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnection.js +0 -329
- package/dist/src/controllers/QUICConnection.js.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
- package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.js +0 -256
- package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
- package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
- package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
- package/dist/src/controllers/QUICStreamManager.js +0 -267
- package/dist/src/controllers/QUICStreamManager.js.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
- package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
- package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
- package/dist/src/controllers/index.cjs +0 -6
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
- package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
- package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
- package/dist/src/coordination/index.d.ts +0 -10
- package/dist/src/coordination/index.d.ts.map +0 -1
- package/dist/src/coordination/index.js +0 -10
- package/dist/src/coordination/index.js.map +0 -1
- package/dist/src/index.cjs +0 -6
- package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
- package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
- package/dist/src/optimizations/RVFOptimizer.js +0 -541
- package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
- package/dist/src/security/AttestationLog.d.ts +0 -70
- package/dist/src/security/AttestationLog.d.ts.map +0 -1
- package/dist/src/security/AttestationLog.js +0 -174
- package/dist/src/security/AttestationLog.js.map +0 -1
- package/dist/src/security/MutationGuard.d.ts +0 -83
- package/dist/src/security/MutationGuard.d.ts.map +0 -1
- package/dist/src/security/MutationGuard.js +0 -364
- package/dist/src/security/MutationGuard.js.map +0 -1
- package/dist/src/security/index.cjs +0 -6
- package/dist/src/security/index.d.ts +0 -15
- package/dist/src/security/index.d.ts.map +0 -1
- package/dist/src/security/index.js +0 -18
- package/dist/src/security/index.js.map +0 -1
- package/dist/src/services/GNNService.d.ts +0 -173
- package/dist/src/services/GNNService.d.ts.map +0 -1
- package/dist/src/services/GNNService.js +0 -639
- package/dist/src/services/GNNService.js.map +0 -1
- package/dist/src/services/GraphTransformerService.d.ts +0 -80
- package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
- package/dist/src/services/GraphTransformerService.js +0 -369
- package/dist/src/services/GraphTransformerService.js.map +0 -1
- package/dist/src/services/SemanticRouter.d.ts +0 -83
- package/dist/src/services/SemanticRouter.d.ts.map +0 -1
- package/dist/src/services/SemanticRouter.js +0 -160
- package/dist/src/services/SemanticRouter.js.map +0 -1
- package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
- package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
- package/dist/src/services/SonaTrajectoryService.js +0 -539
- package/dist/src/services/SonaTrajectoryService.js.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
- package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
- package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
- package/dist/src/utils/vector-math.d.ts +0 -29
- package/dist/src/utils/vector-math.d.ts.map +0 -1
- package/dist/src/utils/vector-math.js +0 -66
- package/dist/src/utils/vector-math.js.map +0 -1
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming Embedding Service - Incremental Embedding Generation
|
|
3
|
-
*
|
|
4
|
-
* ADR-065 Phase P1-3: Streaming Architecture
|
|
5
|
-
*
|
|
6
|
-
* Extends EnhancedEmbeddingService with streaming capabilities:
|
|
7
|
-
* - Incremental embedding generation (chunk-by-chunk)
|
|
8
|
-
* - Real-time progress callbacks
|
|
9
|
-
* - Memory-efficient processing for large texts
|
|
10
|
-
* - Parallel chunk processing with backpressure
|
|
11
|
-
*/
|
|
12
|
-
import { EnhancedEmbeddingService } from './EnhancedEmbeddingService.js';
|
|
13
|
-
/**
|
|
14
|
-
* Streaming Embedding Service with incremental generation
|
|
15
|
-
*/
|
|
16
|
-
export class StreamingEmbeddingService extends EnhancedEmbeddingService {
|
|
17
|
-
streamingConfig;
|
|
18
|
-
activeStreams = new Map();
|
|
19
|
-
constructor(config = {}) {
|
|
20
|
-
super({ model: 'all-MiniLM-L6-v2', dimension: 384, provider: 'transformers', ...config });
|
|
21
|
-
this.streamingConfig = {
|
|
22
|
-
...config,
|
|
23
|
-
model: config.model || 'Xenova/all-MiniLM-L6-v2',
|
|
24
|
-
dimension: config.dimension || 384,
|
|
25
|
-
provider: config.provider || 'transformers',
|
|
26
|
-
enableWASM: config.enableWASM ?? true,
|
|
27
|
-
enableBatchProcessing: config.enableBatchProcessing ?? true,
|
|
28
|
-
batchSize: config.batchSize || 100,
|
|
29
|
-
chunkSize: config.chunkSize || 512,
|
|
30
|
-
maxConcurrentChunks: config.maxConcurrentChunks || 4,
|
|
31
|
-
enableProgressCallbacks: config.enableProgressCallbacks ?? true,
|
|
32
|
-
apiKey: config.apiKey || ''
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Stream embedding generation for large text
|
|
37
|
-
* Yields partial embeddings as they're computed
|
|
38
|
-
*/
|
|
39
|
-
async *streamEmbed(text, onProgress) {
|
|
40
|
-
const streamId = this.generateStreamId();
|
|
41
|
-
const controller = new AbortController();
|
|
42
|
-
this.activeStreams.set(streamId, controller);
|
|
43
|
-
try {
|
|
44
|
-
const chunks = this.splitIntoChunks(text);
|
|
45
|
-
const startTime = Date.now();
|
|
46
|
-
let processedChunks = 0;
|
|
47
|
-
// Process chunks in parallel batches
|
|
48
|
-
const maxConcurrent = this.streamingConfig.maxConcurrentChunks;
|
|
49
|
-
for (let i = 0; i < chunks.length; i += maxConcurrent) {
|
|
50
|
-
if (controller.signal.aborted) {
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
const batchChunks = chunks.slice(i, i + maxConcurrent);
|
|
54
|
-
const embeddings = await this.processBatchChunks(batchChunks);
|
|
55
|
-
for (const embedding of embeddings) {
|
|
56
|
-
processedChunks++;
|
|
57
|
-
// Report progress
|
|
58
|
-
if (onProgress && this.streamingConfig.enableProgressCallbacks) {
|
|
59
|
-
const elapsed = Date.now() - startTime;
|
|
60
|
-
const avgTimePerChunk = elapsed / processedChunks;
|
|
61
|
-
const remaining = chunks.length - processedChunks;
|
|
62
|
-
onProgress({
|
|
63
|
-
processedChunks,
|
|
64
|
-
totalChunks: chunks.length,
|
|
65
|
-
progress: (processedChunks / chunks.length) * 100,
|
|
66
|
-
currentChunk: batchChunks[embeddings.indexOf(embedding)]?.substring(0, 50) || '',
|
|
67
|
-
estimatedTimeMs: avgTimePerChunk * remaining,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
yield embedding;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
finally {
|
|
75
|
-
this.activeStreams.delete(streamId);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Stream batch embeddings with memory-efficient processing
|
|
80
|
-
*/
|
|
81
|
-
async *streamEmbedBatch(texts, onProgress) {
|
|
82
|
-
const streamId = this.generateStreamId();
|
|
83
|
-
const controller = new AbortController();
|
|
84
|
-
this.activeStreams.set(streamId, controller);
|
|
85
|
-
try {
|
|
86
|
-
const batchSize = this.streamingConfig.batchSize;
|
|
87
|
-
let processedBatches = 0;
|
|
88
|
-
const totalBatches = Math.ceil(texts.length / batchSize);
|
|
89
|
-
const startTime = Date.now();
|
|
90
|
-
for (let i = 0; i < texts.length; i += batchSize) {
|
|
91
|
-
if (controller.signal.aborted) {
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
const batch = texts.slice(i, i + batchSize);
|
|
95
|
-
const embeddings = await super.embedBatch(batch);
|
|
96
|
-
processedBatches++;
|
|
97
|
-
// Report progress
|
|
98
|
-
if (onProgress && this.streamingConfig.enableProgressCallbacks) {
|
|
99
|
-
const elapsed = Date.now() - startTime;
|
|
100
|
-
const avgTimePerBatch = elapsed / processedBatches;
|
|
101
|
-
const remaining = totalBatches - processedBatches;
|
|
102
|
-
onProgress({
|
|
103
|
-
processedChunks: i + batch.length,
|
|
104
|
-
totalChunks: texts.length,
|
|
105
|
-
progress: ((i + batch.length) / texts.length) * 100,
|
|
106
|
-
currentChunk: `Batch ${processedBatches}/${totalBatches}`,
|
|
107
|
-
estimatedTimeMs: avgTimePerBatch * remaining,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
yield embeddings;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
finally {
|
|
114
|
-
this.activeStreams.delete(streamId);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Incremental similarity calculation
|
|
119
|
-
* Streams similarity scores as embeddings are computed
|
|
120
|
-
*/
|
|
121
|
-
async *streamSimilarity(queryText, corpusTexts, onProgress) {
|
|
122
|
-
const queryEmbedding = await this.embed(queryText);
|
|
123
|
-
let processed = 0;
|
|
124
|
-
const startTime = Date.now();
|
|
125
|
-
// Stream similarity scores as embeddings are computed
|
|
126
|
-
for await (const embeddings of this.streamEmbedBatch(corpusTexts, onProgress)) {
|
|
127
|
-
for (let i = 0; i < embeddings.length; i++) {
|
|
128
|
-
const corpusEmbedding = embeddings[i];
|
|
129
|
-
const similarity = this.calculateSimilarity(queryEmbedding, corpusEmbedding);
|
|
130
|
-
const index = processed + i;
|
|
131
|
-
yield {
|
|
132
|
-
text: corpusTexts[index],
|
|
133
|
-
similarity,
|
|
134
|
-
index,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
processed += embeddings.length;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Find most similar texts with streaming results
|
|
142
|
-
* Returns results in real-time as they're computed
|
|
143
|
-
*/
|
|
144
|
-
async *streamFindMostSimilar(query, corpus, k = 5, onProgress) {
|
|
145
|
-
const results = [];
|
|
146
|
-
let minSimilarity = -Infinity;
|
|
147
|
-
// Stream similarity calculations
|
|
148
|
-
for await (const result of this.streamSimilarity(query, corpus, onProgress)) {
|
|
149
|
-
// Maintain top-k results
|
|
150
|
-
if (results.length < k) {
|
|
151
|
-
results.push(result);
|
|
152
|
-
results.sort((a, b) => b.similarity - a.similarity);
|
|
153
|
-
minSimilarity = results[results.length - 1].similarity;
|
|
154
|
-
}
|
|
155
|
-
else if (result.similarity > minSimilarity) {
|
|
156
|
-
results.push(result);
|
|
157
|
-
results.sort((a, b) => b.similarity - a.similarity);
|
|
158
|
-
results.pop();
|
|
159
|
-
minSimilarity = results[results.length - 1].similarity;
|
|
160
|
-
}
|
|
161
|
-
// Yield current top result if it's new
|
|
162
|
-
if (results[0] === result || result.similarity > minSimilarity) {
|
|
163
|
-
yield result;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Cancel active stream
|
|
169
|
-
*/
|
|
170
|
-
cancelStream(streamId) {
|
|
171
|
-
const controller = this.activeStreams.get(streamId);
|
|
172
|
-
if (controller) {
|
|
173
|
-
controller.abort();
|
|
174
|
-
this.activeStreams.delete(streamId);
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Cancel all active streams
|
|
181
|
-
*/
|
|
182
|
-
cancelAllStreams() {
|
|
183
|
-
const count = this.activeStreams.size;
|
|
184
|
-
for (const controller of this.activeStreams.values()) {
|
|
185
|
-
controller.abort();
|
|
186
|
-
}
|
|
187
|
-
this.activeStreams.clear();
|
|
188
|
-
return count;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get streaming statistics
|
|
192
|
-
*/
|
|
193
|
-
getStreamingStats() {
|
|
194
|
-
return {
|
|
195
|
-
activeStreams: this.activeStreams.size,
|
|
196
|
-
chunkSize: this.streamingConfig.chunkSize,
|
|
197
|
-
maxConcurrentChunks: this.streamingConfig.maxConcurrentChunks,
|
|
198
|
-
progressCallbacksEnabled: this.streamingConfig.enableProgressCallbacks,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
// -- Private Helpers ------------------------------------------------------
|
|
202
|
-
splitIntoChunks(text) {
|
|
203
|
-
const chunks = [];
|
|
204
|
-
// Split on sentence boundaries when possible
|
|
205
|
-
const sentences = text.match(/[^.!?]+[.!?]+/g) || [text];
|
|
206
|
-
let currentChunk = '';
|
|
207
|
-
for (const sentence of sentences) {
|
|
208
|
-
const chunkSize = this.streamingConfig.chunkSize;
|
|
209
|
-
if (currentChunk.length + sentence.length > chunkSize) {
|
|
210
|
-
if (currentChunk) {
|
|
211
|
-
chunks.push(currentChunk.trim());
|
|
212
|
-
}
|
|
213
|
-
currentChunk = sentence;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
currentChunk += ' ' + sentence;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
if (currentChunk) {
|
|
220
|
-
chunks.push(currentChunk.trim());
|
|
221
|
-
}
|
|
222
|
-
return chunks;
|
|
223
|
-
}
|
|
224
|
-
async processBatchChunks(chunks) {
|
|
225
|
-
return await super.embedBatch(chunks);
|
|
226
|
-
}
|
|
227
|
-
calculateSimilarity(a, b) {
|
|
228
|
-
// Cosine similarity
|
|
229
|
-
let dotProduct = 0;
|
|
230
|
-
let normA = 0;
|
|
231
|
-
let normB = 0;
|
|
232
|
-
for (let i = 0; i < a.length; i++) {
|
|
233
|
-
dotProduct += a[i] * b[i];
|
|
234
|
-
normA += a[i] * a[i];
|
|
235
|
-
normB += b[i] * b[i];
|
|
236
|
-
}
|
|
237
|
-
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
238
|
-
}
|
|
239
|
-
generateStreamId() {
|
|
240
|
-
return `stream_${Date.now()}_${Math.random().toString(36).substring(7)}`;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=StreamingEmbeddingService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StreamingEmbeddingService.js","sourceRoot":"","sources":["../../../src/controllers/StreamingEmbeddingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,348 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MultiDatabaseCoordinator - Cross-Instance Synchronization and Coordination
|
|
3
|
-
*
|
|
4
|
-
* Orchestrates multiple AgentDB instances for distributed vector database operations.
|
|
5
|
-
* Provides:
|
|
6
|
-
* - Instance registration and lifecycle management
|
|
7
|
-
* - Cross-instance synchronization with conflict resolution
|
|
8
|
-
* - Health monitoring and automatic failover
|
|
9
|
-
* - Distributed operations (broadcast insert/delete)
|
|
10
|
-
* - Configurable replication strategies
|
|
11
|
-
*
|
|
12
|
-
* @module coordination/MultiDatabaseCoordinator
|
|
13
|
-
*/
|
|
14
|
-
import type { VectorBackend, VectorStats } from '../backends/VectorBackend.js';
|
|
15
|
-
/**
|
|
16
|
-
* Status of a database instance
|
|
17
|
-
*/
|
|
18
|
-
export type InstanceStatus = 'online' | 'offline' | 'syncing';
|
|
19
|
-
/**
|
|
20
|
-
* Conflict resolution strategies for synchronization
|
|
21
|
-
*/
|
|
22
|
-
export type ConflictResolutionStrategy = 'last-write-wins' | 'merge' | 'manual';
|
|
23
|
-
/**
|
|
24
|
-
* Represents a remote database instance
|
|
25
|
-
*/
|
|
26
|
-
export interface DatabaseInstance {
|
|
27
|
-
/** Unique identifier for this instance */
|
|
28
|
-
id: string;
|
|
29
|
-
/** URL or connection string for the instance */
|
|
30
|
-
url: string;
|
|
31
|
-
/** Current status of the instance */
|
|
32
|
-
status: InstanceStatus;
|
|
33
|
-
/** Timestamp of last successful sync */
|
|
34
|
-
lastSyncAt: number;
|
|
35
|
-
/** Number of vectors in this instance */
|
|
36
|
-
vectorCount: number;
|
|
37
|
-
/** Version string for compatibility checking */
|
|
38
|
-
version: string;
|
|
39
|
-
/** Optional metadata about the instance */
|
|
40
|
-
metadata?: Record<string, unknown>;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Options for synchronization operations
|
|
44
|
-
*/
|
|
45
|
-
export interface SyncOptions {
|
|
46
|
-
/** Conflict resolution strategy */
|
|
47
|
-
conflictResolution?: ConflictResolutionStrategy;
|
|
48
|
-
/** Maximum number of items per batch */
|
|
49
|
-
batchSize?: number;
|
|
50
|
-
/** Timeout in milliseconds for sync operation */
|
|
51
|
-
timeoutMs?: number;
|
|
52
|
-
/** Whether to force full sync (ignore lastSyncAt) */
|
|
53
|
-
forceFullSync?: boolean;
|
|
54
|
-
/** Filter to sync only specific namespaces */
|
|
55
|
-
namespaceFilter?: string[];
|
|
56
|
-
/** Progress callback */
|
|
57
|
-
onProgress?: (progress: SyncProgress) => void;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Progress information during synchronization
|
|
61
|
-
*/
|
|
62
|
-
export interface SyncProgress {
|
|
63
|
-
/** Current phase of synchronization */
|
|
64
|
-
phase: 'preparing' | 'fetching' | 'comparing' | 'resolving' | 'applying' | 'completed' | 'error';
|
|
65
|
-
/** Items processed so far */
|
|
66
|
-
current: number;
|
|
67
|
-
/** Total items to process */
|
|
68
|
-
total: number;
|
|
69
|
-
/** Optional message */
|
|
70
|
-
message?: string;
|
|
71
|
-
/** Error message if phase is 'error' */
|
|
72
|
-
error?: string;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Result of a synchronization operation
|
|
76
|
-
*/
|
|
77
|
-
export interface SyncResult {
|
|
78
|
-
/** Whether sync completed successfully */
|
|
79
|
-
success: boolean;
|
|
80
|
-
/** Instance ID that was synced */
|
|
81
|
-
instanceId: string;
|
|
82
|
-
/** Number of items synced */
|
|
83
|
-
itemsSynced: number;
|
|
84
|
-
/** Number of conflicts detected */
|
|
85
|
-
conflictsDetected: number;
|
|
86
|
-
/** Number of conflicts resolved */
|
|
87
|
-
conflictsResolved: number;
|
|
88
|
-
/** Duration in milliseconds */
|
|
89
|
-
durationMs: number;
|
|
90
|
-
/** Bytes transferred */
|
|
91
|
-
bytesTransferred: number;
|
|
92
|
-
/** Error message if failed */
|
|
93
|
-
error?: string;
|
|
94
|
-
/** Detailed conflict information (for manual resolution) */
|
|
95
|
-
unresolvedConflicts?: ConflictInfo[];
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Information about a sync conflict
|
|
99
|
-
*/
|
|
100
|
-
export interface ConflictInfo {
|
|
101
|
-
/** Vector ID with conflict */
|
|
102
|
-
vectorId: string;
|
|
103
|
-
/** Local vector data */
|
|
104
|
-
local: VectorData;
|
|
105
|
-
/** Remote vector data */
|
|
106
|
-
remote: VectorData;
|
|
107
|
-
/** Suggested resolution */
|
|
108
|
-
suggestion: 'keep-local' | 'keep-remote' | 'merge';
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Vector data for conflict resolution
|
|
112
|
-
*/
|
|
113
|
-
export interface VectorData {
|
|
114
|
-
/** Vector embedding */
|
|
115
|
-
embedding: Float32Array;
|
|
116
|
-
/** Associated metadata */
|
|
117
|
-
metadata?: Record<string, unknown>;
|
|
118
|
-
/** Last modified timestamp */
|
|
119
|
-
timestamp: number;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Configuration for MultiDatabaseCoordinator
|
|
123
|
-
*/
|
|
124
|
-
export interface MultiDatabaseCoordinatorConfig {
|
|
125
|
-
/** Replication factor (how many instances should have each vector) */
|
|
126
|
-
replicationFactor?: number;
|
|
127
|
-
/** Interval between automatic syncs (0 to disable) */
|
|
128
|
-
syncIntervalMs?: number;
|
|
129
|
-
/** Default conflict resolution strategy */
|
|
130
|
-
conflictResolution?: ConflictResolutionStrategy;
|
|
131
|
-
/** Health check interval in milliseconds */
|
|
132
|
-
healthCheckIntervalMs?: number;
|
|
133
|
-
/** Timeout for health checks */
|
|
134
|
-
healthCheckTimeoutMs?: number;
|
|
135
|
-
/** Whether to enable automatic failover */
|
|
136
|
-
autoFailover?: boolean;
|
|
137
|
-
/** Maximum retries for failed operations */
|
|
138
|
-
maxRetries?: number;
|
|
139
|
-
/** Retry delay in milliseconds */
|
|
140
|
-
retryDelayMs?: number;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Callback for instance status changes
|
|
144
|
-
*/
|
|
145
|
-
export type StatusChangeCallback = (instanceId: string, oldStatus: InstanceStatus, newStatus: InstanceStatus) => void;
|
|
146
|
-
/**
|
|
147
|
-
* Result of an operation executed on all instances
|
|
148
|
-
*/
|
|
149
|
-
export interface DistributedOperationResult<T> {
|
|
150
|
-
/** Results keyed by instance ID */
|
|
151
|
-
results: Map<string, T>;
|
|
152
|
-
/** Errors keyed by instance ID */
|
|
153
|
-
errors: Map<string, Error>;
|
|
154
|
-
/** Number of successful operations */
|
|
155
|
-
successCount: number;
|
|
156
|
-
/** Number of failed operations */
|
|
157
|
-
failureCount: number;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* MultiDatabaseCoordinator - Manages multiple AgentDB instances
|
|
161
|
-
*
|
|
162
|
-
* Provides coordination, synchronization, and health monitoring for
|
|
163
|
-
* distributed vector database deployments.
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ```typescript
|
|
167
|
-
* const coordinator = new MultiDatabaseCoordinator(primaryDb, {
|
|
168
|
-
* replicationFactor: 2,
|
|
169
|
-
* syncIntervalMs: 30000,
|
|
170
|
-
* conflictResolution: 'last-write-wins'
|
|
171
|
-
* });
|
|
172
|
-
*
|
|
173
|
-
* // Register secondary instances
|
|
174
|
-
* coordinator.registerInstance({
|
|
175
|
-
* id: 'secondary-1',
|
|
176
|
-
* url: 'http://db1.example.com:8080',
|
|
177
|
-
* status: 'online',
|
|
178
|
-
* lastSyncAt: 0,
|
|
179
|
-
* vectorCount: 0,
|
|
180
|
-
* version: '2.0.0'
|
|
181
|
-
* });
|
|
182
|
-
*
|
|
183
|
-
* // Start health monitoring
|
|
184
|
-
* coordinator.startHealthCheck(5000);
|
|
185
|
-
*
|
|
186
|
-
* // Sync all instances
|
|
187
|
-
* const results = await coordinator.syncAll();
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
export declare class MultiDatabaseCoordinator {
|
|
191
|
-
private primaryDb;
|
|
192
|
-
private instances;
|
|
193
|
-
private config;
|
|
194
|
-
private healthCheckInterval;
|
|
195
|
-
private syncInterval;
|
|
196
|
-
private statusChangeCallbacks;
|
|
197
|
-
private isSyncing;
|
|
198
|
-
private vectorTimestamps;
|
|
199
|
-
/**
|
|
200
|
-
* Create a new MultiDatabaseCoordinator
|
|
201
|
-
*
|
|
202
|
-
* @param primaryDb - Primary vector database backend
|
|
203
|
-
* @param config - Configuration options
|
|
204
|
-
*/
|
|
205
|
-
constructor(primaryDb: VectorBackend, config?: MultiDatabaseCoordinatorConfig);
|
|
206
|
-
/**
|
|
207
|
-
* Register a new database instance
|
|
208
|
-
*
|
|
209
|
-
* @param instance - Instance configuration
|
|
210
|
-
* @throws Error if instance with same ID already exists
|
|
211
|
-
*/
|
|
212
|
-
registerInstance(instance: DatabaseInstance): void;
|
|
213
|
-
/**
|
|
214
|
-
* Unregister a database instance
|
|
215
|
-
*
|
|
216
|
-
* @param id - Instance ID to unregister
|
|
217
|
-
* @throws Error if instance is currently syncing
|
|
218
|
-
*/
|
|
219
|
-
unregisterInstance(id: string): void;
|
|
220
|
-
/**
|
|
221
|
-
* Get all registered instances
|
|
222
|
-
*
|
|
223
|
-
* @returns Array of database instances
|
|
224
|
-
*/
|
|
225
|
-
getInstances(): DatabaseInstance[];
|
|
226
|
-
/**
|
|
227
|
-
* Get a specific instance by ID
|
|
228
|
-
*
|
|
229
|
-
* @param id - Instance ID
|
|
230
|
-
* @returns Instance or null if not found
|
|
231
|
-
*/
|
|
232
|
-
getInstanceStatus(id: string): DatabaseInstance | null;
|
|
233
|
-
/**
|
|
234
|
-
* Get only online instances
|
|
235
|
-
*
|
|
236
|
-
* @returns Array of online instances
|
|
237
|
-
*/
|
|
238
|
-
getOnlineInstances(): DatabaseInstance[];
|
|
239
|
-
/**
|
|
240
|
-
* Update instance status
|
|
241
|
-
*
|
|
242
|
-
* @param id - Instance ID
|
|
243
|
-
* @param status - New status
|
|
244
|
-
*/
|
|
245
|
-
private updateInstanceStatus;
|
|
246
|
-
/**
|
|
247
|
-
* Synchronize data TO a remote instance
|
|
248
|
-
*
|
|
249
|
-
* @param targetId - Target instance ID
|
|
250
|
-
* @param options - Sync options
|
|
251
|
-
* @returns Sync result
|
|
252
|
-
*/
|
|
253
|
-
syncToInstance(targetId: string, options?: SyncOptions): Promise<SyncResult>;
|
|
254
|
-
/**
|
|
255
|
-
* Synchronize data FROM a remote instance
|
|
256
|
-
*
|
|
257
|
-
* @param sourceId - Source instance ID
|
|
258
|
-
* @param options - Sync options
|
|
259
|
-
* @returns Sync result
|
|
260
|
-
*/
|
|
261
|
-
syncFromInstance(sourceId: string, options?: SyncOptions): Promise<SyncResult>;
|
|
262
|
-
/**
|
|
263
|
-
* Synchronize all registered instances
|
|
264
|
-
*
|
|
265
|
-
* @param options - Sync options
|
|
266
|
-
* @returns Map of instance ID to sync result
|
|
267
|
-
*/
|
|
268
|
-
syncAll(options?: SyncOptions): Promise<Map<string, SyncResult>>;
|
|
269
|
-
/**
|
|
270
|
-
* Start periodic health checks
|
|
271
|
-
*
|
|
272
|
-
* @param intervalMs - Check interval in milliseconds (overrides config)
|
|
273
|
-
*/
|
|
274
|
-
startHealthCheck(intervalMs?: number): void;
|
|
275
|
-
/**
|
|
276
|
-
* Stop periodic health checks
|
|
277
|
-
*/
|
|
278
|
-
stopHealthCheck(): void;
|
|
279
|
-
/**
|
|
280
|
-
* Perform health check on all instances
|
|
281
|
-
*/
|
|
282
|
-
private performHealthCheck;
|
|
283
|
-
/**
|
|
284
|
-
* Check if a specific instance is healthy
|
|
285
|
-
*/
|
|
286
|
-
private checkInstanceHealth;
|
|
287
|
-
/**
|
|
288
|
-
* Register a callback for instance status changes
|
|
289
|
-
*
|
|
290
|
-
* @param callback - Callback function
|
|
291
|
-
* @returns Unsubscribe function
|
|
292
|
-
*/
|
|
293
|
-
onInstanceStatusChange(callback: StatusChangeCallback): () => void;
|
|
294
|
-
/**
|
|
295
|
-
* Broadcast an insert operation to all online instances
|
|
296
|
-
*
|
|
297
|
-
* @param id - Vector ID
|
|
298
|
-
* @param vector - Vector embedding
|
|
299
|
-
* @param metadata - Optional metadata
|
|
300
|
-
*/
|
|
301
|
-
broadcastInsert(id: string, vector: Float32Array, metadata?: Record<string, unknown>): Promise<void>;
|
|
302
|
-
/**
|
|
303
|
-
* Broadcast a delete operation to all online instances
|
|
304
|
-
*
|
|
305
|
-
* @param id - Vector ID to delete
|
|
306
|
-
*/
|
|
307
|
-
broadcastDelete(id: string): Promise<void>;
|
|
308
|
-
/**
|
|
309
|
-
* Execute an operation on all instances (including primary)
|
|
310
|
-
*
|
|
311
|
-
* @param operation - Operation to execute
|
|
312
|
-
* @returns Map of instance ID to result
|
|
313
|
-
*/
|
|
314
|
-
executeOnAll<T>(operation: (db: VectorBackend, instanceId: string) => Promise<T>): Promise<DistributedOperationResult<T>>;
|
|
315
|
-
/**
|
|
316
|
-
* Get current configuration
|
|
317
|
-
*/
|
|
318
|
-
getConfig(): Readonly<Required<MultiDatabaseCoordinatorConfig>>;
|
|
319
|
-
/**
|
|
320
|
-
* Update configuration
|
|
321
|
-
*
|
|
322
|
-
* @param updates - Partial configuration updates
|
|
323
|
-
*/
|
|
324
|
-
updateConfig(updates: Partial<MultiDatabaseCoordinatorConfig>): void;
|
|
325
|
-
/**
|
|
326
|
-
* Get coordinator statistics
|
|
327
|
-
*/
|
|
328
|
-
getStats(): {
|
|
329
|
-
primaryStats: VectorStats;
|
|
330
|
-
instanceCount: number;
|
|
331
|
-
onlineCount: number;
|
|
332
|
-
offlineCount: number;
|
|
333
|
-
syncingCount: number;
|
|
334
|
-
totalVectors: number;
|
|
335
|
-
};
|
|
336
|
-
/**
|
|
337
|
-
* Stop all background tasks and cleanup
|
|
338
|
-
*/
|
|
339
|
-
close(): void;
|
|
340
|
-
private startAutoSync;
|
|
341
|
-
private stopAutoSync;
|
|
342
|
-
private mergeOptions;
|
|
343
|
-
private getLocalVectorIds;
|
|
344
|
-
private createBatches;
|
|
345
|
-
private selectReplicationTargets;
|
|
346
|
-
private delay;
|
|
347
|
-
}
|
|
348
|
-
//# sourceMappingURL=MultiDatabaseCoordinator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiDatabaseCoordinator.d.ts","sourceRoot":"","sources":["../../../src/coordination/MultiDatabaseCoordinator.ts"],"names":[],"mappings":"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"}
|