agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentdb.min.js +4 -4
- package/dist/simulation/cli.js +0 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +78 -0
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/agentdb-cli.ts +78 -0
- package/dist/agentdb-advanced.js +0 -2110
- package/dist/agentdb-advanced.min.js +0 -1
- package/dist/backends/GraphBackend.d.ts +0 -196
- package/dist/backends/GraphBackend.d.ts.map +0 -1
- package/dist/backends/GraphBackend.js +0 -33
- package/dist/backends/GraphBackend.js.map +0 -1
- package/dist/backends/LearningBackend.d.ts +0 -148
- package/dist/backends/LearningBackend.d.ts.map +0 -1
- package/dist/backends/LearningBackend.js +0 -27
- package/dist/backends/LearningBackend.js.map +0 -1
- package/dist/backends/VectorBackend.d.ts +0 -119
- package/dist/backends/VectorBackend.d.ts.map +0 -1
- package/dist/backends/VectorBackend.js +0 -14
- package/dist/backends/VectorBackend.js.map +0 -1
- package/dist/backends/detector.d.ts +0 -81
- package/dist/backends/detector.d.ts.map +0 -1
- package/dist/backends/detector.js +0 -192
- package/dist/backends/detector.js.map +0 -1
- package/dist/backends/factory.d.ts +0 -50
- package/dist/backends/factory.d.ts.map +0 -1
- package/dist/backends/factory.js +0 -161
- package/dist/backends/factory.js.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
- package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
- package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
- package/dist/backends/hnswlib/index.d.ts +0 -7
- package/dist/backends/hnswlib/index.d.ts.map +0 -1
- package/dist/backends/hnswlib/index.js +0 -7
- package/dist/backends/hnswlib/index.js.map +0 -1
- package/dist/backends/index.d.ts +0 -14
- package/dist/backends/index.d.ts.map +0 -1
- package/dist/backends/index.js +0 -13
- package/dist/backends/index.js.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
- package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.js +0 -198
- package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
- package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.js +0 -177
- package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
- package/dist/backends/ruvector/index.d.ts +0 -9
- package/dist/backends/ruvector/index.d.ts.map +0 -1
- package/dist/backends/ruvector/index.js +0 -8
- package/dist/backends/ruvector/index.js.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
- package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
- package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
- package/dist/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/AdvancedFeatures.js +0 -430
- package/dist/browser/AdvancedFeatures.js.map +0 -1
- package/dist/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/HNSWIndex.js +0 -402
- package/dist/browser/HNSWIndex.js.map +0 -1
- package/dist/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/ProductQuantization.js +0 -337
- package/dist/browser/ProductQuantization.js.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.js +0 -427
- package/dist/browser/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/browser/HNSWIndex.js +0 -402
- package/dist/browser/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/browser/ProductQuantization.js +0 -348
- package/dist/browser/browser/index.d.ts +0 -223
- package/dist/browser/browser/index.d.ts.map +0 -1
- package/dist/browser/browser/index.js +0 -233
- package/dist/browser/index.d.ts +0 -223
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -225
- package/dist/browser/index.js.map +0 -1
- package/dist/cli/agentdb-cli.d.ts +0 -154
- package/dist/cli/agentdb-cli.d.ts.map +0 -1
- package/dist/cli/agentdb-cli.js +0 -2273
- package/dist/cli/agentdb-cli.js.map +0 -1
- package/dist/cli/agentdb.db +0 -0
- package/dist/cli/commands/init.d.ts +0 -12
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -115
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/install-embeddings.d.ts +0 -10
- package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
- package/dist/cli/commands/install-embeddings.js +0 -68
- package/dist/cli/commands/install-embeddings.js.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -15
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/migrate.js +0 -425
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -10
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -129
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
- package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
- package/dist/controllers/CausalMemoryGraph.js +0 -323
- package/dist/controllers/CausalMemoryGraph.js.map +0 -1
- package/dist/controllers/CausalRecall.d.ts +0 -139
- package/dist/controllers/CausalRecall.d.ts.map +0 -1
- package/dist/controllers/CausalRecall.js +0 -356
- package/dist/controllers/CausalRecall.js.map +0 -1
- package/dist/controllers/ContextSynthesizer.d.ts +0 -65
- package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
- package/dist/controllers/ContextSynthesizer.js +0 -208
- package/dist/controllers/ContextSynthesizer.js.map +0 -1
- package/dist/controllers/EmbeddingService.d.ts +0 -37
- package/dist/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EmbeddingService.js +0 -136
- package/dist/controllers/EmbeddingService.js.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
- package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.js +0 -119
- package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
- package/dist/controllers/ExplainableRecall.d.ts +0 -163
- package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
- package/dist/controllers/ExplainableRecall.js +0 -485
- package/dist/controllers/ExplainableRecall.js.map +0 -1
- package/dist/controllers/HNSWIndex.d.ts +0 -128
- package/dist/controllers/HNSWIndex.d.ts.map +0 -1
- package/dist/controllers/HNSWIndex.js +0 -361
- package/dist/controllers/HNSWIndex.js.map +0 -1
- package/dist/controllers/LearningSystem.d.ts +0 -195
- package/dist/controllers/LearningSystem.d.ts.map +0 -1
- package/dist/controllers/LearningSystem.js +0 -929
- package/dist/controllers/LearningSystem.js.map +0 -1
- package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
- package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
- package/dist/controllers/MMRDiversityRanker.js +0 -130
- package/dist/controllers/MMRDiversityRanker.js.map +0 -1
- package/dist/controllers/MetadataFilter.d.ts +0 -70
- package/dist/controllers/MetadataFilter.d.ts.map +0 -1
- package/dist/controllers/MetadataFilter.js +0 -243
- package/dist/controllers/MetadataFilter.js.map +0 -1
- package/dist/controllers/NightlyLearner.d.ts +0 -114
- package/dist/controllers/NightlyLearner.d.ts.map +0 -1
- package/dist/controllers/NightlyLearner.js +0 -394
- package/dist/controllers/NightlyLearner.js.map +0 -1
- package/dist/controllers/QUICClient.d.ts +0 -109
- package/dist/controllers/QUICClient.d.ts.map +0 -1
- package/dist/controllers/QUICClient.js +0 -299
- package/dist/controllers/QUICClient.js.map +0 -1
- package/dist/controllers/QUICServer.d.ts +0 -121
- package/dist/controllers/QUICServer.d.ts.map +0 -1
- package/dist/controllers/QUICServer.js +0 -383
- package/dist/controllers/QUICServer.js.map +0 -1
- package/dist/controllers/ReasoningBank.d.ts +0 -196
- package/dist/controllers/ReasoningBank.d.ts.map +0 -1
- package/dist/controllers/ReasoningBank.js +0 -494
- package/dist/controllers/ReasoningBank.js.map +0 -1
- package/dist/controllers/ReflexionMemory.d.ts +0 -125
- package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
- package/dist/controllers/ReflexionMemory.js +0 -521
- package/dist/controllers/ReflexionMemory.js.map +0 -1
- package/dist/controllers/SkillLibrary.d.ts +0 -149
- package/dist/controllers/SkillLibrary.d.ts.map +0 -1
- package/dist/controllers/SkillLibrary.js +0 -547
- package/dist/controllers/SkillLibrary.js.map +0 -1
- package/dist/controllers/SyncCoordinator.d.ts +0 -120
- package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
- package/dist/controllers/SyncCoordinator.js +0 -441
- package/dist/controllers/SyncCoordinator.js.map +0 -1
- package/dist/controllers/WASMVectorSearch.d.ts +0 -89
- package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
- package/dist/controllers/WASMVectorSearch.js +0 -234
- package/dist/controllers/WASMVectorSearch.js.map +0 -1
- package/dist/controllers/frontier-index.d.ts +0 -14
- package/dist/controllers/frontier-index.d.ts.map +0 -1
- package/dist/controllers/frontier-index.js +0 -10
- package/dist/controllers/frontier-index.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -30
- package/dist/controllers/index.d.ts.map +0 -1
- package/dist/controllers/index.js +0 -18
- package/dist/controllers/index.js.map +0 -1
- package/dist/db-fallback.d.ts +0 -26
- package/dist/db-fallback.d.ts.map +0 -1
- package/dist/db-fallback.js +0 -264
- package/dist/db-fallback.js.map +0 -1
- package/dist/db-test.d.ts +0 -13
- package/dist/db-test.d.ts.map +0 -1
- package/dist/db-test.js +0 -55
- package/dist/db-test.js.map +0 -1
- package/dist/db-unified.d.ts +0 -76
- package/dist/db-unified.d.ts.map +0 -1
- package/dist/db-unified.js +0 -278
- package/dist/db-unified.js.map +0 -1
- package/dist/examples/quic-sync-example.d.ts +0 -9
- package/dist/examples/quic-sync-example.d.ts.map +0 -1
- package/dist/examples/quic-sync-example.js +0 -169
- package/dist/examples/quic-sync-example.js.map +0 -1
- package/dist/examples/wasm-vector-usage.d.ts +0 -12
- package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
- package/dist/examples/wasm-vector-usage.js +0 -190
- package/dist/examples/wasm-vector-usage.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -35
- package/dist/index.js.map +0 -1
- package/dist/malp/core/ccc.d.ts +0 -99
- package/dist/malp/core/ccc.d.ts.map +0 -1
- package/dist/malp/core/ccc.js +0 -181
- package/dist/malp/core/ccc.js.map +0 -1
- package/dist/malp/core/index.d.ts +0 -9
- package/dist/malp/core/index.d.ts.map +0 -1
- package/dist/malp/core/index.js +0 -9
- package/dist/malp/core/index.js.map +0 -1
- package/dist/malp/core/linalg.d.ts +0 -101
- package/dist/malp/core/linalg.d.ts.map +0 -1
- package/dist/malp/core/linalg.js +0 -278
- package/dist/malp/core/linalg.js.map +0 -1
- package/dist/malp/core/optimizer.d.ts +0 -68
- package/dist/malp/core/optimizer.d.ts.map +0 -1
- package/dist/malp/core/optimizer.js +0 -160
- package/dist/malp/core/optimizer.js.map +0 -1
- package/dist/malp/index.d.ts +0 -33
- package/dist/malp/index.d.ts.map +0 -1
- package/dist/malp/index.js +0 -37
- package/dist/malp/index.js.map +0 -1
- package/dist/malp/metrics/agreement.d.ts +0 -106
- package/dist/malp/metrics/agreement.d.ts.map +0 -1
- package/dist/malp/metrics/agreement.js +0 -199
- package/dist/malp/metrics/agreement.js.map +0 -1
- package/dist/malp/metrics/comparison.d.ts +0 -93
- package/dist/malp/metrics/comparison.d.ts.map +0 -1
- package/dist/malp/metrics/comparison.js +0 -256
- package/dist/malp/metrics/comparison.js.map +0 -1
- package/dist/malp/metrics/index.d.ts +0 -8
- package/dist/malp/metrics/index.d.ts.map +0 -1
- package/dist/malp/metrics/index.js +0 -8
- package/dist/malp/metrics/index.js.map +0 -1
- package/dist/malp/metrics/performance.d.ts +0 -61
- package/dist/malp/metrics/performance.d.ts.map +0 -1
- package/dist/malp/metrics/performance.js +0 -190
- package/dist/malp/metrics/performance.js.map +0 -1
- package/dist/malp/models/index.d.ts +0 -7
- package/dist/malp/models/index.d.ts.map +0 -1
- package/dist/malp/models/index.js +0 -7
- package/dist/malp/models/index.js.map +0 -1
- package/dist/malp/models/malp.d.ts +0 -116
- package/dist/malp/models/malp.d.ts.map +0 -1
- package/dist/malp/models/malp.js +0 -206
- package/dist/malp/models/malp.js.map +0 -1
- package/dist/malp/models/regressor.d.ts +0 -80
- package/dist/malp/models/regressor.d.ts.map +0 -1
- package/dist/malp/models/regressor.js +0 -229
- package/dist/malp/models/regressor.js.map +0 -1
- package/dist/malp/reasoningbank_validator.d.ts +0 -187
- package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
- package/dist/malp/reasoningbank_validator.js +0 -246
- package/dist/malp/reasoningbank_validator.js.map +0 -1
- package/dist/malp/wasm_bindings.d.ts +0 -344
- package/dist/malp/wasm_bindings.d.ts.map +0 -1
- package/dist/malp/wasm_bindings.js +0 -9
- package/dist/malp/wasm_bindings.js.map +0 -1
- package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
- package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
- package/dist/mcp/agentdb-mcp-server.js +0 -2116
- package/dist/mcp/agentdb-mcp-server.js.map +0 -1
- package/dist/mcp/learning-tools-handlers.d.ts +0 -16
- package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
- package/dist/mcp/learning-tools-handlers.js +0 -105
- package/dist/mcp/learning-tools-handlers.js.map +0 -1
- package/dist/optimizations/BatchOperations.d.ts +0 -109
- package/dist/optimizations/BatchOperations.d.ts.map +0 -1
- package/dist/optimizations/BatchOperations.js +0 -407
- package/dist/optimizations/BatchOperations.js.map +0 -1
- package/dist/optimizations/QueryOptimizer.d.ts +0 -83
- package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
- package/dist/optimizations/QueryOptimizer.js +0 -228
- package/dist/optimizations/QueryOptimizer.js.map +0 -1
- package/dist/optimizations/ToolCache.d.ts +0 -137
- package/dist/optimizations/ToolCache.d.ts.map +0 -1
- package/dist/optimizations/ToolCache.js +0 -281
- package/dist/optimizations/ToolCache.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -10
- package/dist/optimizations/index.d.ts.map +0 -1
- package/dist/optimizations/index.js +0 -8
- package/dist/optimizations/index.js.map +0 -1
- package/dist/security/input-validation.d.ts +0 -109
- package/dist/security/input-validation.d.ts.map +0 -1
- package/dist/security/input-validation.js +0 -398
- package/dist/security/input-validation.js.map +0 -1
- package/dist/security/limits.d.ts +0 -150
- package/dist/security/limits.d.ts.map +0 -1
- package/dist/security/limits.js +0 -288
- package/dist/security/limits.js.map +0 -1
- package/dist/security/path-security.d.ts +0 -100
- package/dist/security/path-security.d.ts.map +0 -1
- package/dist/security/path-security.js +0 -337
- package/dist/security/path-security.js.map +0 -1
- package/dist/security/validation.d.ts +0 -95
- package/dist/security/validation.d.ts.map +0 -1
- package/dist/security/validation.js +0 -315
- package/dist/security/validation.js.map +0 -1
- package/dist/types/quic.d.ts +0 -518
- package/dist/types/quic.d.ts.map +0 -1
- package/dist/types/quic.js +0 -272
- package/dist/types/quic.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VectorBackend - Unified interface for vector database backends
|
|
3
|
-
*
|
|
4
|
-
* Provides abstraction over different vector search implementations
|
|
5
|
-
* (RuVector, hnswlib-node) for AgentDB v2.
|
|
6
|
-
*
|
|
7
|
-
* Design:
|
|
8
|
-
* - String-based IDs for all operations (backends handle label mapping internally)
|
|
9
|
-
* - Consistent SearchResult format across backends
|
|
10
|
-
* - Save/load with metadata persistence
|
|
11
|
-
* - Backend-specific optimizations hidden behind interface
|
|
12
|
-
*/
|
|
13
|
-
export interface VectorConfig {
|
|
14
|
-
/** Vector dimension (e.g., 384, 768, 1536) */
|
|
15
|
-
dimension: number;
|
|
16
|
-
/** Distance metric: 'cosine', 'l2' (Euclidean), 'ip' (inner product) */
|
|
17
|
-
metric: 'cosine' | 'l2' | 'ip';
|
|
18
|
-
/** Maximum number of elements (default: 100000) */
|
|
19
|
-
maxElements?: number;
|
|
20
|
-
/** HNSW M parameter - connections per layer (default: 16) */
|
|
21
|
-
M?: number;
|
|
22
|
-
/** HNSW efConstruction - build quality (default: 200) */
|
|
23
|
-
efConstruction?: number;
|
|
24
|
-
/** HNSW efSearch - search quality (default: 100) */
|
|
25
|
-
efSearch?: number;
|
|
26
|
-
}
|
|
27
|
-
export interface SearchResult {
|
|
28
|
-
/** String ID of the vector */
|
|
29
|
-
id: string;
|
|
30
|
-
/** Raw distance value from backend */
|
|
31
|
-
distance: number;
|
|
32
|
-
/** Normalized similarity (0-1, higher is more similar) */
|
|
33
|
-
similarity: number;
|
|
34
|
-
/** Optional metadata attached to vector */
|
|
35
|
-
metadata?: Record<string, any>;
|
|
36
|
-
}
|
|
37
|
-
export interface SearchOptions {
|
|
38
|
-
/** Minimum similarity threshold (0-1) */
|
|
39
|
-
threshold?: number;
|
|
40
|
-
/** Override efSearch for this query */
|
|
41
|
-
efSearch?: number;
|
|
42
|
-
/** Metadata filters (post-filtering) */
|
|
43
|
-
filter?: Record<string, any>;
|
|
44
|
-
}
|
|
45
|
-
export interface VectorStats {
|
|
46
|
-
/** Number of vectors in index */
|
|
47
|
-
count: number;
|
|
48
|
-
/** Vector dimension */
|
|
49
|
-
dimension: number;
|
|
50
|
-
/** Distance metric */
|
|
51
|
-
metric: string;
|
|
52
|
-
/** Backend name */
|
|
53
|
-
backend: 'ruvector' | 'hnswlib';
|
|
54
|
-
/** Memory usage in bytes (0 if not available) */
|
|
55
|
-
memoryUsage: number;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* VectorBackend - Interface for vector search implementations
|
|
59
|
-
*
|
|
60
|
-
* All backends must:
|
|
61
|
-
* 1. Accept string IDs and handle label mapping internally
|
|
62
|
-
* 2. Normalize distances to similarities (0-1 range)
|
|
63
|
-
* 3. Support save/load with metadata persistence
|
|
64
|
-
* 4. Provide stats for monitoring
|
|
65
|
-
*/
|
|
66
|
-
export interface VectorBackend {
|
|
67
|
-
/** Backend name for detection and logging */
|
|
68
|
-
readonly name: 'ruvector' | 'hnswlib';
|
|
69
|
-
/**
|
|
70
|
-
* Insert a single vector with optional metadata
|
|
71
|
-
* @param id - Unique string identifier
|
|
72
|
-
* @param embedding - Vector as Float32Array
|
|
73
|
-
* @param metadata - Optional metadata to store with vector
|
|
74
|
-
*/
|
|
75
|
-
insert(id: string, embedding: Float32Array, metadata?: Record<string, any>): void;
|
|
76
|
-
/**
|
|
77
|
-
* Insert multiple vectors in batch (more efficient)
|
|
78
|
-
* @param items - Array of {id, embedding, metadata?}
|
|
79
|
-
*/
|
|
80
|
-
insertBatch(items: Array<{
|
|
81
|
-
id: string;
|
|
82
|
-
embedding: Float32Array;
|
|
83
|
-
metadata?: Record<string, any>;
|
|
84
|
-
}>): void;
|
|
85
|
-
/**
|
|
86
|
-
* Search for k-nearest neighbors
|
|
87
|
-
* @param query - Query vector
|
|
88
|
-
* @param k - Number of results
|
|
89
|
-
* @param options - Search options (threshold, efSearch, filters)
|
|
90
|
-
* @returns Sorted results (most similar first)
|
|
91
|
-
*/
|
|
92
|
-
search(query: Float32Array, k: number, options?: SearchOptions): SearchResult[];
|
|
93
|
-
/**
|
|
94
|
-
* Remove a vector by ID
|
|
95
|
-
* @param id - Vector ID to remove
|
|
96
|
-
* @returns true if removed, false if not found
|
|
97
|
-
*/
|
|
98
|
-
remove(id: string): boolean;
|
|
99
|
-
/**
|
|
100
|
-
* Get backend statistics
|
|
101
|
-
* @returns Stats object with count, dimension, backend name, etc.
|
|
102
|
-
*/
|
|
103
|
-
getStats(): VectorStats;
|
|
104
|
-
/**
|
|
105
|
-
* Save index to disk
|
|
106
|
-
* @param path - File path (backend adds extensions as needed)
|
|
107
|
-
*/
|
|
108
|
-
save(path: string): Promise<void>;
|
|
109
|
-
/**
|
|
110
|
-
* Load index from disk
|
|
111
|
-
* @param path - File path (backend looks for associated files)
|
|
112
|
-
*/
|
|
113
|
-
load(path: string): Promise<void>;
|
|
114
|
-
/**
|
|
115
|
-
* Close and cleanup resources
|
|
116
|
-
*/
|
|
117
|
-
close(): void;
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=VectorBackend.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VectorBackend.d.ts","sourceRoot":"","sources":["../../src/backends/VectorBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAE/B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IAEX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IAEjB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IAEnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IAEf,mBAAmB;IACnB,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAEhC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAElF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,YAAY,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,CAAC,GAAG,IAAI,CAAC;IAEV;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE,CAAC;IAEhF;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,QAAQ,IAAI,WAAW,CAAC;IAExB;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VectorBackend - Unified interface for vector database backends
|
|
3
|
-
*
|
|
4
|
-
* Provides abstraction over different vector search implementations
|
|
5
|
-
* (RuVector, hnswlib-node) for AgentDB v2.
|
|
6
|
-
*
|
|
7
|
-
* Design:
|
|
8
|
-
* - String-based IDs for all operations (backends handle label mapping internally)
|
|
9
|
-
* - Consistent SearchResult format across backends
|
|
10
|
-
* - Save/load with metadata persistence
|
|
11
|
-
* - Backend-specific optimizations hidden behind interface
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=VectorBackend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VectorBackend.js","sourceRoot":"","sources":["../../src/backends/VectorBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backend Detection - Auto-detect available vector backends
|
|
3
|
-
*
|
|
4
|
-
* Detection priority:
|
|
5
|
-
* 1. RuVector (@ruvector/core) - preferred for performance
|
|
6
|
-
* 2. HNSWLib (hnswlib-node) - stable fallback
|
|
7
|
-
*
|
|
8
|
-
* Additional features detected:
|
|
9
|
-
* - @ruvector/gnn - GNN learning capabilities
|
|
10
|
-
* - @ruvector/graph-node - Graph database capabilities
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Backend type identifier
|
|
14
|
-
*/
|
|
15
|
-
export type BackendType = 'ruvector' | 'hnswlib' | 'auto';
|
|
16
|
-
/**
|
|
17
|
-
* Platform information
|
|
18
|
-
*/
|
|
19
|
-
export interface PlatformInfo {
|
|
20
|
-
/** Operating system */
|
|
21
|
-
platform: NodeJS.Platform;
|
|
22
|
-
/** CPU architecture */
|
|
23
|
-
arch: string;
|
|
24
|
-
/** Combined platform identifier (e.g., 'linux-x64', 'darwin-arm64') */
|
|
25
|
-
combined: string;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Backend detection result
|
|
29
|
-
*/
|
|
30
|
-
export interface DetectionResult {
|
|
31
|
-
/** Detected backend type */
|
|
32
|
-
backend: 'ruvector' | 'hnswlib';
|
|
33
|
-
/** Available feature flags */
|
|
34
|
-
features: {
|
|
35
|
-
/** GNN learning available */
|
|
36
|
-
gnn: boolean;
|
|
37
|
-
/** Graph database available */
|
|
38
|
-
graph: boolean;
|
|
39
|
-
/** Compression available */
|
|
40
|
-
compression: boolean;
|
|
41
|
-
};
|
|
42
|
-
/** Platform information */
|
|
43
|
-
platform: PlatformInfo;
|
|
44
|
-
/** Whether native bindings are available (vs WASM fallback) */
|
|
45
|
-
native: boolean;
|
|
46
|
-
/** Version information */
|
|
47
|
-
versions?: {
|
|
48
|
-
core?: string;
|
|
49
|
-
gnn?: string;
|
|
50
|
-
graph?: string;
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Detect available vector backend and features
|
|
55
|
-
*
|
|
56
|
-
* @returns Detection result with backend type and available features
|
|
57
|
-
*/
|
|
58
|
-
export declare function detectBackend(): Promise<DetectionResult>;
|
|
59
|
-
/**
|
|
60
|
-
* Validate requested backend is available
|
|
61
|
-
*
|
|
62
|
-
* @param requested - Requested backend type
|
|
63
|
-
* @param detected - Detected backend from auto-detection
|
|
64
|
-
* @throws Error if requested backend is not available
|
|
65
|
-
*/
|
|
66
|
-
export declare function validateBackend(requested: BackendType, detected: DetectionResult): void;
|
|
67
|
-
/**
|
|
68
|
-
* Get recommended backend for a given use case
|
|
69
|
-
*
|
|
70
|
-
* @param useCase - Use case identifier
|
|
71
|
-
* @returns Recommended backend type
|
|
72
|
-
*/
|
|
73
|
-
export declare function getRecommendedBackend(useCase: string): BackendType;
|
|
74
|
-
/**
|
|
75
|
-
* Format detection result for display
|
|
76
|
-
*
|
|
77
|
-
* @param result - Detection result
|
|
78
|
-
* @returns Formatted string for console output
|
|
79
|
-
*/
|
|
80
|
-
export declare function formatDetectionResult(result: DetectionResult): string;
|
|
81
|
-
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/backends/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAE1B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAEhC,8BAA8B;IAC9B,QAAQ,EAAE;QACR,6BAA6B;QAC7B,GAAG,EAAE,OAAO,CAAC;QAEb,+BAA+B;QAC/B,KAAK,EAAE,OAAO,CAAC;QAEf,4BAA4B;QAC5B,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAEF,2BAA2B;IAC3B,QAAQ,EAAE,YAAY,CAAC;IAEvB,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;IAEhB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAaD;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAoC9D;AA6ED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,eAAe,GACxB,IAAI,CAoBN;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAelE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA4BrE"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backend Detection - Auto-detect available vector backends
|
|
3
|
-
*
|
|
4
|
-
* Detection priority:
|
|
5
|
-
* 1. RuVector (@ruvector/core) - preferred for performance
|
|
6
|
-
* 2. HNSWLib (hnswlib-node) - stable fallback
|
|
7
|
-
*
|
|
8
|
-
* Additional features detected:
|
|
9
|
-
* - @ruvector/gnn - GNN learning capabilities
|
|
10
|
-
* - @ruvector/graph-node - Graph database capabilities
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Detect available vector backend and features
|
|
14
|
-
*
|
|
15
|
-
* @returns Detection result with backend type and available features
|
|
16
|
-
*/
|
|
17
|
-
export async function detectBackend() {
|
|
18
|
-
// Get platform information
|
|
19
|
-
const platform = getPlatformInfo();
|
|
20
|
-
// Check for RuVector (preferred)
|
|
21
|
-
const ruvectorAvailable = await checkRuVector();
|
|
22
|
-
if (ruvectorAvailable.available) {
|
|
23
|
-
return {
|
|
24
|
-
backend: 'ruvector',
|
|
25
|
-
features: {
|
|
26
|
-
gnn: ruvectorAvailable.gnn,
|
|
27
|
-
graph: ruvectorAvailable.graph,
|
|
28
|
-
compression: true, // RuVector always supports compression
|
|
29
|
-
},
|
|
30
|
-
platform,
|
|
31
|
-
native: ruvectorAvailable.native,
|
|
32
|
-
versions: {
|
|
33
|
-
core: ruvectorAvailable.version,
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
// Fallback to HNSWLib
|
|
38
|
-
const hnswlibNative = await checkHnswlib();
|
|
39
|
-
return {
|
|
40
|
-
backend: 'hnswlib',
|
|
41
|
-
features: {
|
|
42
|
-
gnn: false,
|
|
43
|
-
graph: false,
|
|
44
|
-
compression: false,
|
|
45
|
-
},
|
|
46
|
-
platform,
|
|
47
|
-
native: hnswlibNative,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check RuVector availability and features
|
|
52
|
-
*/
|
|
53
|
-
async function checkRuVector() {
|
|
54
|
-
try {
|
|
55
|
-
// Try to import @ruvector/core
|
|
56
|
-
const core = await import('@ruvector/core');
|
|
57
|
-
// Check if native bindings are available
|
|
58
|
-
const native = core.isNative?.() ?? false;
|
|
59
|
-
// Get version (if available)
|
|
60
|
-
const version = core.version ?? 'unknown';
|
|
61
|
-
// Check for GNN support
|
|
62
|
-
let gnn = false;
|
|
63
|
-
try {
|
|
64
|
-
await import('@ruvector/gnn');
|
|
65
|
-
gnn = true;
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
// GNN not available
|
|
69
|
-
}
|
|
70
|
-
// Check for Graph support
|
|
71
|
-
let graph = false;
|
|
72
|
-
try {
|
|
73
|
-
await import('@ruvector/graph-node');
|
|
74
|
-
graph = true;
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
// Graph not available
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
available: true,
|
|
81
|
-
native,
|
|
82
|
-
gnn,
|
|
83
|
-
graph,
|
|
84
|
-
version,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
// RuVector not available
|
|
89
|
-
return {
|
|
90
|
-
available: false,
|
|
91
|
-
native: false,
|
|
92
|
-
gnn: false,
|
|
93
|
-
graph: false,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Check HNSWLib availability
|
|
99
|
-
*/
|
|
100
|
-
async function checkHnswlib() {
|
|
101
|
-
try {
|
|
102
|
-
// Try to import hnswlib-node
|
|
103
|
-
await import('hnswlib-node');
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
console.warn('[AgentDB] HNSWLib not available:', error);
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Get platform information
|
|
113
|
-
*/
|
|
114
|
-
function getPlatformInfo() {
|
|
115
|
-
return {
|
|
116
|
-
platform: process.platform,
|
|
117
|
-
arch: process.arch,
|
|
118
|
-
combined: `${process.platform}-${process.arch}`,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Validate requested backend is available
|
|
123
|
-
*
|
|
124
|
-
* @param requested - Requested backend type
|
|
125
|
-
* @param detected - Detected backend from auto-detection
|
|
126
|
-
* @throws Error if requested backend is not available
|
|
127
|
-
*/
|
|
128
|
-
export function validateBackend(requested, detected) {
|
|
129
|
-
if (requested === 'auto') {
|
|
130
|
-
// Auto-detection always succeeds
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
if (requested === 'ruvector' && detected.backend !== 'ruvector') {
|
|
134
|
-
throw new Error('RuVector backend requested but not available.\n' +
|
|
135
|
-
'Install with: npm install @ruvector/core\n' +
|
|
136
|
-
'See: https://github.com/ruvnet/ruvector');
|
|
137
|
-
}
|
|
138
|
-
if (requested === 'hnswlib' && detected.backend !== 'hnswlib') {
|
|
139
|
-
throw new Error('HNSWLib backend requested but not available.\n' +
|
|
140
|
-
'Install with: npm install hnswlib-node');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get recommended backend for a given use case
|
|
145
|
-
*
|
|
146
|
-
* @param useCase - Use case identifier
|
|
147
|
-
* @returns Recommended backend type
|
|
148
|
-
*/
|
|
149
|
-
export function getRecommendedBackend(useCase) {
|
|
150
|
-
const useCaseLower = useCase.toLowerCase();
|
|
151
|
-
// RuVector recommended for advanced features
|
|
152
|
-
if (useCaseLower.includes('learning') ||
|
|
153
|
-
useCaseLower.includes('gnn') ||
|
|
154
|
-
useCaseLower.includes('graph') ||
|
|
155
|
-
useCaseLower.includes('compression')) {
|
|
156
|
-
return 'ruvector';
|
|
157
|
-
}
|
|
158
|
-
// Auto-detection for general use
|
|
159
|
-
return 'auto';
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Format detection result for display
|
|
163
|
-
*
|
|
164
|
-
* @param result - Detection result
|
|
165
|
-
* @returns Formatted string for console output
|
|
166
|
-
*/
|
|
167
|
-
export function formatDetectionResult(result) {
|
|
168
|
-
const lines = [];
|
|
169
|
-
lines.push('📊 Backend Detection Results:');
|
|
170
|
-
lines.push('');
|
|
171
|
-
lines.push(` Backend: ${result.backend}`);
|
|
172
|
-
lines.push(` Platform: ${result.platform.combined}`);
|
|
173
|
-
lines.push(` Native: ${result.native ? '✅' : '❌ (using WASM)'}`);
|
|
174
|
-
lines.push(` GNN: ${result.features.gnn ? '✅' : '❌'}`);
|
|
175
|
-
lines.push(` Graph: ${result.features.graph ? '✅' : '❌'}`);
|
|
176
|
-
lines.push(` Compression: ${result.features.compression ? '✅' : '❌'}`);
|
|
177
|
-
if (result.versions?.core) {
|
|
178
|
-
lines.push(` Version: ${result.versions.core}`);
|
|
179
|
-
}
|
|
180
|
-
lines.push('');
|
|
181
|
-
// Add recommendations
|
|
182
|
-
if (result.backend === 'hnswlib') {
|
|
183
|
-
lines.push('💡 Tip: Install @ruvector/core for 150x faster performance');
|
|
184
|
-
lines.push(' npm install @ruvector/core');
|
|
185
|
-
}
|
|
186
|
-
else if (!result.features.gnn) {
|
|
187
|
-
lines.push('💡 Tip: Install @ruvector/gnn for adaptive learning');
|
|
188
|
-
lines.push(' npm install @ruvector/gnn');
|
|
189
|
-
}
|
|
190
|
-
return lines.join('\n');
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/backends/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backend Factory - Automatic Backend Detection and Selection
|
|
3
|
-
*
|
|
4
|
-
* Detects available vector backends and creates appropriate instances.
|
|
5
|
-
* Priority: RuVector (native/WASM) > HNSWLib (Node.js)
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Automatic detection of @ruvector packages
|
|
9
|
-
* - Native vs WASM detection for RuVector
|
|
10
|
-
* - GNN and Graph capabilities detection
|
|
11
|
-
* - Graceful fallback to HNSWLib
|
|
12
|
-
* - Clear error messages for missing dependencies
|
|
13
|
-
*/
|
|
14
|
-
import type { VectorBackend, VectorConfig } from './VectorBackend.js';
|
|
15
|
-
export type BackendType = 'auto' | 'ruvector' | 'hnswlib';
|
|
16
|
-
export interface BackendDetection {
|
|
17
|
-
available: 'ruvector' | 'hnswlib' | 'none';
|
|
18
|
-
ruvector: {
|
|
19
|
-
core: boolean;
|
|
20
|
-
gnn: boolean;
|
|
21
|
-
graph: boolean;
|
|
22
|
-
native: boolean;
|
|
23
|
-
};
|
|
24
|
-
hnswlib: boolean;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Detect available vector backends
|
|
28
|
-
*/
|
|
29
|
-
export declare function detectBackends(): Promise<BackendDetection>;
|
|
30
|
-
/**
|
|
31
|
-
* Create vector backend with automatic detection
|
|
32
|
-
*
|
|
33
|
-
* @param type - Backend type: 'auto', 'ruvector', or 'hnswlib'
|
|
34
|
-
* @param config - Vector configuration
|
|
35
|
-
* @returns Initialized VectorBackend instance
|
|
36
|
-
*/
|
|
37
|
-
export declare function createBackend(type: BackendType, config: VectorConfig): Promise<VectorBackend>;
|
|
38
|
-
/**
|
|
39
|
-
* Get recommended backend type based on environment
|
|
40
|
-
*/
|
|
41
|
-
export declare function getRecommendedBackend(): Promise<BackendType>;
|
|
42
|
-
/**
|
|
43
|
-
* Check if a specific backend is available
|
|
44
|
-
*/
|
|
45
|
-
export declare function isBackendAvailable(backend: 'ruvector' | 'hnswlib'): Promise<boolean>;
|
|
46
|
-
/**
|
|
47
|
-
* Get installation instructions for a backend
|
|
48
|
-
*/
|
|
49
|
-
export declare function getInstallCommand(backend: 'ruvector' | 'hnswlib'): string;
|
|
50
|
-
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAItE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3C,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6DhE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC,CAgDxB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAIzE"}
|
package/dist/backends/factory.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backend Factory - Automatic Backend Detection and Selection
|
|
3
|
-
*
|
|
4
|
-
* Detects available vector backends and creates appropriate instances.
|
|
5
|
-
* Priority: RuVector (native/WASM) > HNSWLib (Node.js)
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Automatic detection of @ruvector packages
|
|
9
|
-
* - Native vs WASM detection for RuVector
|
|
10
|
-
* - GNN and Graph capabilities detection
|
|
11
|
-
* - Graceful fallback to HNSWLib
|
|
12
|
-
* - Clear error messages for missing dependencies
|
|
13
|
-
*/
|
|
14
|
-
import { RuVectorBackend } from './ruvector/RuVectorBackend.js';
|
|
15
|
-
import { HNSWLibBackend } from './hnswlib/HNSWLibBackend.js';
|
|
16
|
-
/**
|
|
17
|
-
* Detect available vector backends
|
|
18
|
-
*/
|
|
19
|
-
export async function detectBackends() {
|
|
20
|
-
const result = {
|
|
21
|
-
available: 'none',
|
|
22
|
-
ruvector: {
|
|
23
|
-
core: false,
|
|
24
|
-
gnn: false,
|
|
25
|
-
graph: false,
|
|
26
|
-
native: false
|
|
27
|
-
},
|
|
28
|
-
hnswlib: false
|
|
29
|
-
};
|
|
30
|
-
// Check RuVector packages (main package or scoped packages)
|
|
31
|
-
try {
|
|
32
|
-
// Try main ruvector package first
|
|
33
|
-
const ruvector = await import('ruvector');
|
|
34
|
-
result.ruvector.core = true;
|
|
35
|
-
result.ruvector.gnn = true; // Main package includes GNN
|
|
36
|
-
result.ruvector.graph = true; // Main package includes Graph
|
|
37
|
-
result.ruvector.native = ruvector.isNative?.() ?? false;
|
|
38
|
-
result.available = 'ruvector';
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
// Try scoped packages as fallback
|
|
42
|
-
try {
|
|
43
|
-
const core = await import('@ruvector/core');
|
|
44
|
-
result.ruvector.core = true;
|
|
45
|
-
result.ruvector.native = core.isNative?.() ?? false;
|
|
46
|
-
result.available = 'ruvector';
|
|
47
|
-
// Check optional packages
|
|
48
|
-
try {
|
|
49
|
-
await import('@ruvector/gnn');
|
|
50
|
-
result.ruvector.gnn = true;
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// GNN not installed - this is optional
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
await import('@ruvector/graph-node');
|
|
57
|
-
result.ruvector.graph = true;
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// Graph not installed - this is optional
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// RuVector not installed - will try fallback
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Check HNSWLib
|
|
68
|
-
try {
|
|
69
|
-
await import('hnswlib-node');
|
|
70
|
-
result.hnswlib = true;
|
|
71
|
-
if (result.available === 'none') {
|
|
72
|
-
result.available = 'hnswlib';
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// HNSWLib not installed
|
|
77
|
-
}
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Create vector backend with automatic detection
|
|
82
|
-
*
|
|
83
|
-
* @param type - Backend type: 'auto', 'ruvector', or 'hnswlib'
|
|
84
|
-
* @param config - Vector configuration
|
|
85
|
-
* @returns Initialized VectorBackend instance
|
|
86
|
-
*/
|
|
87
|
-
export async function createBackend(type, config) {
|
|
88
|
-
const detection = await detectBackends();
|
|
89
|
-
let backend;
|
|
90
|
-
// Handle explicit backend selection
|
|
91
|
-
if (type === 'ruvector') {
|
|
92
|
-
if (!detection.ruvector.core) {
|
|
93
|
-
throw new Error('RuVector not available.\n' +
|
|
94
|
-
'Install with: npm install @ruvector/core\n' +
|
|
95
|
-
'Optional GNN support: npm install @ruvector/gnn\n' +
|
|
96
|
-
'Optional Graph support: npm install @ruvector/graph-node');
|
|
97
|
-
}
|
|
98
|
-
backend = new RuVectorBackend(config);
|
|
99
|
-
}
|
|
100
|
-
else if (type === 'hnswlib') {
|
|
101
|
-
if (!detection.hnswlib) {
|
|
102
|
-
throw new Error('HNSWLib not available.\n' +
|
|
103
|
-
'Install with: npm install hnswlib-node');
|
|
104
|
-
}
|
|
105
|
-
backend = new HNSWLibBackend(config);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
// Auto-detect best available backend
|
|
109
|
-
if (detection.ruvector.core) {
|
|
110
|
-
backend = new RuVectorBackend(config);
|
|
111
|
-
console.log(`[AgentDB] Using RuVector backend (${detection.ruvector.native ? 'native' : 'WASM'})`);
|
|
112
|
-
}
|
|
113
|
-
else if (detection.hnswlib) {
|
|
114
|
-
backend = new HNSWLibBackend(config);
|
|
115
|
-
console.log('[AgentDB] Using HNSWLib backend (fallback)');
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
throw new Error('No vector backend available.\n' +
|
|
119
|
-
'Install one of:\n' +
|
|
120
|
-
' - npm install @ruvector/core (recommended)\n' +
|
|
121
|
-
' - npm install hnswlib-node (fallback)');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// Initialize the backend
|
|
125
|
-
await backend.initialize();
|
|
126
|
-
return backend;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Get recommended backend type based on environment
|
|
130
|
-
*/
|
|
131
|
-
export async function getRecommendedBackend() {
|
|
132
|
-
const detection = await detectBackends();
|
|
133
|
-
if (detection.ruvector.core) {
|
|
134
|
-
return 'ruvector';
|
|
135
|
-
}
|
|
136
|
-
else if (detection.hnswlib) {
|
|
137
|
-
return 'hnswlib';
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
return 'auto'; // Will throw error in createBackend
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Check if a specific backend is available
|
|
145
|
-
*/
|
|
146
|
-
export async function isBackendAvailable(backend) {
|
|
147
|
-
const detection = await detectBackends();
|
|
148
|
-
if (backend === 'ruvector') {
|
|
149
|
-
return detection.ruvector.core;
|
|
150
|
-
}
|
|
151
|
-
return detection.hnswlib;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Get installation instructions for a backend
|
|
155
|
-
*/
|
|
156
|
-
export function getInstallCommand(backend) {
|
|
157
|
-
return backend === 'ruvector'
|
|
158
|
-
? 'npm install ruvector'
|
|
159
|
-
: 'npm install hnswlib-node';
|
|
160
|
-
}
|
|
161
|
-
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backends/factory.ts"],"names":[],"mappings":"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"}
|