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
package/bin/agentdb.js
ADDED
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AgentDB CLI
|
|
5
|
+
*
|
|
6
|
+
* Command-line interface for agentdb operations
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { version } = require('../package.json');
|
|
10
|
+
|
|
11
|
+
const COMMANDS = {
|
|
12
|
+
help: showHelp,
|
|
13
|
+
version: showVersion,
|
|
14
|
+
mcp: startMcpServer,
|
|
15
|
+
init: initDatabase,
|
|
16
|
+
benchmark: runBenchmark,
|
|
17
|
+
repl: startRepl,
|
|
18
|
+
'create-plugin': createPlugin,
|
|
19
|
+
'list-plugins': listPlugins,
|
|
20
|
+
'list-templates': listTemplates,
|
|
21
|
+
'plugin-info': pluginInfo,
|
|
22
|
+
'use-plugin': usePlugin,
|
|
23
|
+
import: importCommand,
|
|
24
|
+
export: exportCommand,
|
|
25
|
+
query: queryCommand,
|
|
26
|
+
stats: statsCommand,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
function showHelp() {
|
|
30
|
+
// Try to load the comprehensive help system
|
|
31
|
+
try {
|
|
32
|
+
const helpPath = require.resolve('../dist/cli/help.js');
|
|
33
|
+
const { showComprehensiveHelp } = require(helpPath);
|
|
34
|
+
showComprehensiveHelp();
|
|
35
|
+
return;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
// Fallback to basic help if compiled version not available
|
|
38
|
+
console.log(`
|
|
39
|
+
█▀█ █▀▀ █▀▀ █▄░█ ▀█▀ █▀▄ █▄▄
|
|
40
|
+
█▀█ █▄█ ██▄ █░▀█ ░█░ █▄▀ █▄█
|
|
41
|
+
|
|
42
|
+
Agent Memory & Vector Database v${version}
|
|
43
|
+
|
|
44
|
+
USAGE:
|
|
45
|
+
npx agentdb [command] [options]
|
|
46
|
+
|
|
47
|
+
COMMANDS:
|
|
48
|
+
help Show comprehensive help with subsections
|
|
49
|
+
version Show version information
|
|
50
|
+
mcp Start MCP server for Claude Code integration
|
|
51
|
+
init <path> Initialize new vector database
|
|
52
|
+
benchmark Run performance benchmarks
|
|
53
|
+
repl Start interactive REPL (experimental)
|
|
54
|
+
|
|
55
|
+
LEARNING PLUGIN COMMANDS:
|
|
56
|
+
create-plugin Create new learning plugin with wizard
|
|
57
|
+
list-plugins List all available plugins
|
|
58
|
+
list-templates List available plugin templates
|
|
59
|
+
plugin-info Get information about a plugin
|
|
60
|
+
use-plugin Load and use a plugin
|
|
61
|
+
test-plugin Test a plugin
|
|
62
|
+
validate-plugin Validate plugin configuration
|
|
63
|
+
|
|
64
|
+
DATABASE COMMANDS:
|
|
65
|
+
import Import vectors from file
|
|
66
|
+
export Export vectors to file
|
|
67
|
+
query Query vector database
|
|
68
|
+
stats Show database statistics
|
|
69
|
+
|
|
70
|
+
ADVANCED COMMANDS:
|
|
71
|
+
optimize Optimize database performance
|
|
72
|
+
train Train a learning plugin
|
|
73
|
+
deploy Deploy plugin to production
|
|
74
|
+
|
|
75
|
+
QUICK START:
|
|
76
|
+
# Create a learning plugin in 2 minutes
|
|
77
|
+
npx agentdb create-plugin
|
|
78
|
+
|
|
79
|
+
# Initialize database
|
|
80
|
+
npx agentdb init ./agents.db
|
|
81
|
+
|
|
82
|
+
# Run benchmarks
|
|
83
|
+
npx agentdb benchmark
|
|
84
|
+
|
|
85
|
+
# View comprehensive help
|
|
86
|
+
npx agentdb help
|
|
87
|
+
|
|
88
|
+
EXAMPLES:
|
|
89
|
+
npx agentdb create-plugin -t q-learning -n my-q
|
|
90
|
+
npx agentdb list-templates --detailed
|
|
91
|
+
npx agentdb plugin-info my-plugin
|
|
92
|
+
npx agentdb test-plugin my-plugin --coverage
|
|
93
|
+
|
|
94
|
+
DOCUMENTATION:
|
|
95
|
+
GitHub: https://github.com/ruvnet/agentic-flow/tree/main/packages/agentdb
|
|
96
|
+
Issues: https://github.com/ruvnet/agentic-flow/issues
|
|
97
|
+
Author: @ruvnet (https://github.com/ruvnet)
|
|
98
|
+
Website: https://ruv.io
|
|
99
|
+
Quick Start: docs/PLUGIN_QUICKSTART.md
|
|
100
|
+
API Reference: docs/PLUGIN_API.md
|
|
101
|
+
|
|
102
|
+
TIP: Run 'npx agentdb help' for comprehensive help with subsections.
|
|
103
|
+
Run 'npx agentdb <command> --help' for command-specific help.
|
|
104
|
+
|
|
105
|
+
LICENSE:
|
|
106
|
+
MIT OR Apache-2.0
|
|
107
|
+
`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function showVersion() {
|
|
112
|
+
console.log(`agentdb v${version}`);
|
|
113
|
+
console.log(`Node: ${process.version}`);
|
|
114
|
+
console.log(`Platform: ${process.platform} ${process.arch}`);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function startMcpServer() {
|
|
118
|
+
console.error('🚀 Starting AgentDB MCP Server...');
|
|
119
|
+
console.error('');
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
// Check if MCP implementation exists
|
|
123
|
+
const mcpPath = require.resolve('../dist/mcp-server.js');
|
|
124
|
+
|
|
125
|
+
// Import and start the MCP server
|
|
126
|
+
const { AgentDBMCPServer } = require(mcpPath);
|
|
127
|
+
const server = new AgentDBMCPServer();
|
|
128
|
+
await server.start();
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.error('❌ Failed to start MCP server');
|
|
131
|
+
console.error('');
|
|
132
|
+
console.error('Error:', error.message);
|
|
133
|
+
console.error('');
|
|
134
|
+
console.error('Make sure to build the project first:');
|
|
135
|
+
console.error(' npm run build');
|
|
136
|
+
console.error('');
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function initDatabase(path) {
|
|
142
|
+
if (!path) {
|
|
143
|
+
console.error('❌ Error: Database path required');
|
|
144
|
+
console.error('');
|
|
145
|
+
console.error('Usage: agentdb init <path>');
|
|
146
|
+
console.error('Example: agentdb init ./agents.db');
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
console.log(`📦 Initializing agent memory database: ${path}`);
|
|
151
|
+
console.log('');
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
const { SqliteVectorDB, Presets } = require('../dist/index.js');
|
|
155
|
+
|
|
156
|
+
// Create a small test database
|
|
157
|
+
const config = Presets.smallDataset(1536, path);
|
|
158
|
+
const db = SqliteVectorDB.new(config);
|
|
159
|
+
|
|
160
|
+
console.log('✅ Database initialized successfully!');
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log('Configuration:');
|
|
163
|
+
console.log(` Path: ${path}`);
|
|
164
|
+
console.log(` Dimension: 1536`);
|
|
165
|
+
console.log(` Mode: persistent`);
|
|
166
|
+
console.log('');
|
|
167
|
+
console.log('Next steps:');
|
|
168
|
+
console.log(' 1. Import the library: const { SqliteVectorDB } = require("agentdb")');
|
|
169
|
+
console.log(' 2. Insert vectors: await db.insert({ data: [...], metadata: {...} })');
|
|
170
|
+
console.log(' 3. Search: await db.search(queryVector, 5)');
|
|
171
|
+
console.log('');
|
|
172
|
+
|
|
173
|
+
db.close();
|
|
174
|
+
} catch (error) {
|
|
175
|
+
console.error('❌ Failed to initialize database:', error.message);
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function runBenchmark() {
|
|
181
|
+
console.log('📊 Running AgentDB Performance Benchmarks...');
|
|
182
|
+
console.log('');
|
|
183
|
+
console.log('This will test:');
|
|
184
|
+
console.log(' - Native & WASM backend performance');
|
|
185
|
+
console.log(' - Insert operations (single & batch)');
|
|
186
|
+
console.log(' - Search operations (various metrics)');
|
|
187
|
+
console.log(' - Memory usage');
|
|
188
|
+
console.log(' - Backend comparison');
|
|
189
|
+
console.log('');
|
|
190
|
+
|
|
191
|
+
try {
|
|
192
|
+
// Try to run compiled benchmark first
|
|
193
|
+
const benchmarkPath = require.resolve('../dist/benchmarks/comprehensive-performance.bench.js');
|
|
194
|
+
const { PerformanceBenchmark } = require(benchmarkPath);
|
|
195
|
+
|
|
196
|
+
const benchmark = new PerformanceBenchmark();
|
|
197
|
+
benchmark.runAll()
|
|
198
|
+
.then(() => {
|
|
199
|
+
console.log('\n✅ All benchmarks completed successfully');
|
|
200
|
+
process.exit(0);
|
|
201
|
+
})
|
|
202
|
+
.catch((error) => {
|
|
203
|
+
console.error('\n❌ Benchmark failed:', error);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
});
|
|
206
|
+
} catch (error) {
|
|
207
|
+
// If compiled version doesn't exist, try TypeScript version with ts-node
|
|
208
|
+
try {
|
|
209
|
+
console.error('⚠️ Compiled benchmarks not found, trying TypeScript version...');
|
|
210
|
+
console.error('');
|
|
211
|
+
|
|
212
|
+
const { spawn } = require('child_process');
|
|
213
|
+
const benchmarkProcess = spawn('npx', ['ts-node', 'benchmarks/comprehensive-performance.bench.ts'], {
|
|
214
|
+
stdio: 'inherit',
|
|
215
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
benchmarkProcess.on('close', (code) => {
|
|
219
|
+
process.exit(code);
|
|
220
|
+
});
|
|
221
|
+
} catch (tsError) {
|
|
222
|
+
console.error('❌ Benchmarks not available');
|
|
223
|
+
console.error('');
|
|
224
|
+
console.error('To run benchmarks:');
|
|
225
|
+
console.error(' 1. Build the project: npm run build');
|
|
226
|
+
console.error(' 2. Run benchmarks: npx agentdb benchmark');
|
|
227
|
+
console.error('');
|
|
228
|
+
console.error('Or run directly:');
|
|
229
|
+
console.error(' npm run bench');
|
|
230
|
+
console.error(' npm run bench:comprehensive');
|
|
231
|
+
console.error('');
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function startRepl() {
|
|
238
|
+
console.log('🔧 Interactive REPL (experimental)');
|
|
239
|
+
console.log('');
|
|
240
|
+
console.error('❌ REPL not implemented yet');
|
|
241
|
+
console.error('');
|
|
242
|
+
console.error('For now, use Node.js REPL:');
|
|
243
|
+
console.error(' node');
|
|
244
|
+
console.error(' > const { SqliteVectorDB, Presets } = require("agentdb")');
|
|
245
|
+
console.error(' > const db = await SqliteVectorDB.new(Presets.inMemory(1536))');
|
|
246
|
+
console.error('');
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Learning Plugin CLI commands
|
|
251
|
+
function createPlugin(...args) {
|
|
252
|
+
try {
|
|
253
|
+
const wrapperPath = require('path').join(__dirname, 'plugin-cli-wrapper.mjs');
|
|
254
|
+
// Use the .mjs wrapper to load the ES module
|
|
255
|
+
// Prepend 'create-plugin' command since plugin-cli expects it
|
|
256
|
+
const { spawn } = require('child_process');
|
|
257
|
+
const child = spawn('node', [wrapperPath, 'create-plugin', ...args], {
|
|
258
|
+
stdio: 'inherit',
|
|
259
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
child.on('close', (code) => {
|
|
263
|
+
process.exit(code);
|
|
264
|
+
});
|
|
265
|
+
} catch (error) {
|
|
266
|
+
console.error('❌ Plugin CLI not available');
|
|
267
|
+
console.error('');
|
|
268
|
+
console.error('Error:', error.message);
|
|
269
|
+
console.error('');
|
|
270
|
+
console.error('Make sure to build the project first:');
|
|
271
|
+
console.error(' npm run build');
|
|
272
|
+
console.error('');
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function listPlugins(...args) {
|
|
278
|
+
// Call plugin CLI wrapper with list-plugins command
|
|
279
|
+
const wrapperPath = require('path').join(__dirname, 'plugin-cli-wrapper.mjs');
|
|
280
|
+
const { spawn } = require('child_process');
|
|
281
|
+
const child = spawn('node', [wrapperPath, 'list-plugins', ...args], {
|
|
282
|
+
stdio: 'inherit',
|
|
283
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
284
|
+
});
|
|
285
|
+
child.on('close', (code) => process.exit(code));
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function listTemplates(...args) {
|
|
289
|
+
const wrapperPath = require('path').join(__dirname, 'plugin-cli-wrapper.mjs');
|
|
290
|
+
const { spawn} = require('child_process');
|
|
291
|
+
const child = spawn('node', [wrapperPath, 'list-templates', ...args], {
|
|
292
|
+
stdio: 'inherit',
|
|
293
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
294
|
+
});
|
|
295
|
+
child.on('close', (code) => process.exit(code));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function pluginInfo(...args) {
|
|
299
|
+
const wrapperPath = require('path').join(__dirname, 'plugin-cli-wrapper.mjs');
|
|
300
|
+
const { spawn } = require('child_process');
|
|
301
|
+
const child = spawn('node', [wrapperPath, 'plugin-info', ...args], {
|
|
302
|
+
stdio: 'inherit',
|
|
303
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
304
|
+
});
|
|
305
|
+
child.on('close', (code) => process.exit(code));
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function usePlugin(...args) {
|
|
309
|
+
const wrapperPath = require('path').join(__dirname, 'plugin-cli-wrapper.mjs');
|
|
310
|
+
const { spawn } = require('child_process');
|
|
311
|
+
const child = spawn('node', [wrapperPath, 'use-plugin', ...args], {
|
|
312
|
+
stdio: 'inherit',
|
|
313
|
+
cwd: require('path').resolve(__dirname, '..')
|
|
314
|
+
});
|
|
315
|
+
child.on('close', (code) => process.exit(code));
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Database commands
|
|
319
|
+
function importCommand(...args) {
|
|
320
|
+
const [database, file, ...flags] = args;
|
|
321
|
+
|
|
322
|
+
if (!database || !file) {
|
|
323
|
+
console.error('❌ Usage: agentdb import <database> <file> [options]');
|
|
324
|
+
console.error('');
|
|
325
|
+
console.error('Options:');
|
|
326
|
+
console.error(' -f, --format <format> File format (json|csv), default: json');
|
|
327
|
+
console.error(' -b, --batch-size <size> Batch size for imports, default: 1000');
|
|
328
|
+
console.error(' -v, --verbose Verbose output');
|
|
329
|
+
console.error('');
|
|
330
|
+
console.error('Examples:');
|
|
331
|
+
console.error(' agentdb import ./db.sqlite vectors.json');
|
|
332
|
+
console.error(' agentdb import ./db.sqlite data.csv -f csv -v');
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
try {
|
|
337
|
+
const { importVectors } = require('../dist/cli/db-commands.js');
|
|
338
|
+
const options = parseFlags(flags);
|
|
339
|
+
importVectors(database, file, options).catch(err => {
|
|
340
|
+
console.error('❌ Import failed:', err.message);
|
|
341
|
+
process.exit(1);
|
|
342
|
+
});
|
|
343
|
+
} catch (error) {
|
|
344
|
+
console.error('❌ Database commands not available. Please run: npm run build');
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function exportCommand(...args) {
|
|
350
|
+
const [database, file, ...flags] = args;
|
|
351
|
+
|
|
352
|
+
if (!database || !file) {
|
|
353
|
+
console.error('❌ Usage: agentdb export <database> <file> [options]');
|
|
354
|
+
console.error('');
|
|
355
|
+
console.error('Options:');
|
|
356
|
+
console.error(' -f, --format <format> File format (json|csv), default: json');
|
|
357
|
+
console.error(' -l, --limit <number> Limit number of vectors');
|
|
358
|
+
console.error(' -v, --verbose Verbose output');
|
|
359
|
+
console.error('');
|
|
360
|
+
console.error('Examples:');
|
|
361
|
+
console.error(' agentdb export ./db.sqlite vectors.json');
|
|
362
|
+
console.error(' agentdb export ./db.sqlite data.csv -f csv -l 1000');
|
|
363
|
+
process.exit(1);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
try {
|
|
367
|
+
const { exportVectors } = require('../dist/cli/db-commands.js');
|
|
368
|
+
const options = parseFlags(flags);
|
|
369
|
+
exportVectors(database, file, options).catch(err => {
|
|
370
|
+
console.error('❌ Export failed:', err.message);
|
|
371
|
+
process.exit(1);
|
|
372
|
+
});
|
|
373
|
+
} catch (error) {
|
|
374
|
+
console.error('❌ Database commands not available. Please run: npm run build');
|
|
375
|
+
process.exit(1);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function queryCommand(...args) {
|
|
380
|
+
const [database, embedding, ...flags] = args;
|
|
381
|
+
|
|
382
|
+
if (!database || !embedding) {
|
|
383
|
+
console.error('❌ Usage: agentdb query <database> <embedding> [options]');
|
|
384
|
+
console.error('');
|
|
385
|
+
console.error('Options:');
|
|
386
|
+
console.error(' -k, --top-k <number> Number of results, default: 5');
|
|
387
|
+
console.error(' -m, --metric <metric> Similarity metric (cosine|euclidean|dot), default: cosine');
|
|
388
|
+
console.error(' -t, --threshold <number> Minimum similarity threshold, default: 0.0');
|
|
389
|
+
console.error(' -f, --format <format> Output format (table|json), default: table');
|
|
390
|
+
console.error(' -v, --verbose Verbose output');
|
|
391
|
+
console.error('');
|
|
392
|
+
console.error('Examples:');
|
|
393
|
+
console.error(' agentdb query ./db.sqlite "[0.1,0.2,0.3]"');
|
|
394
|
+
console.error(' agentdb query ./db.sqlite "0.1 0.2 0.3" -k 10 -m euclidean');
|
|
395
|
+
process.exit(1);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
try {
|
|
399
|
+
const { queryVectors } = require('../dist/cli/db-commands.js');
|
|
400
|
+
const options = parseFlags(flags);
|
|
401
|
+
queryVectors(database, embedding, options).catch(err => {
|
|
402
|
+
console.error('❌ Query failed:', err.message);
|
|
403
|
+
process.exit(1);
|
|
404
|
+
});
|
|
405
|
+
} catch (error) {
|
|
406
|
+
console.error('❌ Database commands not available. Please run: npm run build');
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
function statsCommand(...args) {
|
|
412
|
+
const [database, ...flags] = args;
|
|
413
|
+
|
|
414
|
+
if (!database) {
|
|
415
|
+
console.error('❌ Usage: agentdb stats <database> [options]');
|
|
416
|
+
console.error('');
|
|
417
|
+
console.error('Options:');
|
|
418
|
+
console.error(' -d, --detailed Show detailed statistics');
|
|
419
|
+
console.error(' -f, --format <format> Output format (table|json), default: table');
|
|
420
|
+
console.error('');
|
|
421
|
+
console.error('Examples:');
|
|
422
|
+
console.error(' agentdb stats ./db.sqlite');
|
|
423
|
+
console.error(' agentdb stats ./db.sqlite -d -f json');
|
|
424
|
+
process.exit(1);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
try {
|
|
428
|
+
const { showStats } = require('../dist/cli/db-commands.js');
|
|
429
|
+
const options = parseFlags(flags);
|
|
430
|
+
showStats(database, options).catch(err => {
|
|
431
|
+
console.error('❌ Stats command failed:', err.message);
|
|
432
|
+
process.exit(1);
|
|
433
|
+
});
|
|
434
|
+
} catch (error) {
|
|
435
|
+
console.error('❌ Database commands not available. Please run: npm run build');
|
|
436
|
+
process.exit(1);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// Parse command line flags into options object
|
|
441
|
+
function parseFlags(flags) {
|
|
442
|
+
const options = {};
|
|
443
|
+
for (let i = 0; i < flags.length; i++) {
|
|
444
|
+
const flag = flags[i];
|
|
445
|
+
|
|
446
|
+
if (flag === '-f' || flag === '--format') {
|
|
447
|
+
options.format = flags[++i];
|
|
448
|
+
} else if (flag === '-b' || flag === '--batch-size') {
|
|
449
|
+
options.batchSize = parseInt(flags[++i], 10);
|
|
450
|
+
} else if (flag === '-k' || flag === '--top-k') {
|
|
451
|
+
options.k = parseInt(flags[++i], 10);
|
|
452
|
+
} else if (flag === '-m' || flag === '--metric') {
|
|
453
|
+
options.metric = flags[++i];
|
|
454
|
+
} else if (flag === '-t' || flag === '--threshold') {
|
|
455
|
+
options.threshold = parseFloat(flags[++i]);
|
|
456
|
+
} else if (flag === '-l' || flag === '--limit') {
|
|
457
|
+
options.limit = parseInt(flags[++i], 10);
|
|
458
|
+
} else if (flag === '-d' || flag === '--detailed') {
|
|
459
|
+
options.detailed = true;
|
|
460
|
+
} else if (flag === '-v' || flag === '--verbose') {
|
|
461
|
+
options.verbose = true;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return options;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Parse command line arguments
|
|
468
|
+
const [,, command = 'help', ...args] = process.argv;
|
|
469
|
+
|
|
470
|
+
const handler = COMMANDS[command];
|
|
471
|
+
if (handler) {
|
|
472
|
+
// Handle async commands
|
|
473
|
+
const result = handler(...args);
|
|
474
|
+
if (result instanceof Promise) {
|
|
475
|
+
result.catch(error => {
|
|
476
|
+
console.error('Error:', error);
|
|
477
|
+
process.exit(1);
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
} else {
|
|
481
|
+
console.error(`❌ Unknown command: ${command}`);
|
|
482
|
+
console.error('');
|
|
483
|
+
console.error('Run "agentdb help" for usage information');
|
|
484
|
+
process.exit(1);
|
|
485
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Wrapper to load the ES module plugin CLI
|
|
4
|
+
* This file uses .mjs extension to signal ES module to Node.js
|
|
5
|
+
*/
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
import { dirname, join } from 'path';
|
|
8
|
+
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = dirname(__filename);
|
|
11
|
+
|
|
12
|
+
// Import the plugin CLI ES module (.mjs version)
|
|
13
|
+
const cliPath = join(__dirname, '../dist/cli/plugin-cli.mjs');
|
|
14
|
+
import(pathToFileURL(cliPath).href).catch(err => {
|
|
15
|
+
console.error('Failed to load plugin CLI:', err);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
function pathToFileURL(path) {
|
|
20
|
+
return new URL(`file://${path.startsWith('/') ? '' : '/'}${path}`);
|
|
21
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Cache with LRU eviction for ultra-fast repeated queries
|
|
3
|
+
*
|
|
4
|
+
* Provides 50-100x speedup for repeated vector searches by caching results.
|
|
5
|
+
* Uses LRU (Least Recently Used) eviction strategy with TTL (Time To Live).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const cache = new QueryCache({ maxSize: 1000, ttl: 300000 }); // 5 min TTL
|
|
10
|
+
*
|
|
11
|
+
* // First query: miss, executes full search
|
|
12
|
+
* const results1 = cache.get(key) ?? performSearch();
|
|
13
|
+
* cache.set(key, results1);
|
|
14
|
+
*
|
|
15
|
+
* // Second query: hit, returns cached results (sub-millisecond)
|
|
16
|
+
* const results2 = cache.get(key); // 50-100x faster
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface QueryCacheConfig {
|
|
20
|
+
/** Maximum number of cached queries (default: 1000) */
|
|
21
|
+
maxSize: number;
|
|
22
|
+
/** Time-to-live in milliseconds (default: 300000 = 5 minutes) */
|
|
23
|
+
ttl: number;
|
|
24
|
+
/** Enable cache statistics tracking (default: true) */
|
|
25
|
+
enableStats: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface CacheEntry<T> {
|
|
28
|
+
results: T;
|
|
29
|
+
expiry: number;
|
|
30
|
+
lastAccessed: number;
|
|
31
|
+
accessCount: number;
|
|
32
|
+
}
|
|
33
|
+
export interface CacheStats {
|
|
34
|
+
hits: number;
|
|
35
|
+
misses: number;
|
|
36
|
+
hitRate: number;
|
|
37
|
+
size: number;
|
|
38
|
+
evictions: number;
|
|
39
|
+
avgAccessTime: number;
|
|
40
|
+
}
|
|
41
|
+
export declare class QueryCache<T = any> {
|
|
42
|
+
private cache;
|
|
43
|
+
private config;
|
|
44
|
+
private stats;
|
|
45
|
+
constructor(config?: Partial<QueryCacheConfig>);
|
|
46
|
+
/**
|
|
47
|
+
* Generate cache key from query parameters
|
|
48
|
+
*/
|
|
49
|
+
static generateKey(embedding: number[], k: number, metric?: string, threshold?: number): string;
|
|
50
|
+
/**
|
|
51
|
+
* Get cached results if available and not expired
|
|
52
|
+
*/
|
|
53
|
+
get(key: string): T | null;
|
|
54
|
+
/**
|
|
55
|
+
* Store results in cache with LRU eviction
|
|
56
|
+
*/
|
|
57
|
+
set(key: string, results: T): void;
|
|
58
|
+
/**
|
|
59
|
+
* Evict least recently used entry
|
|
60
|
+
*/
|
|
61
|
+
private evictLRU;
|
|
62
|
+
/**
|
|
63
|
+
* Clear all cached entries
|
|
64
|
+
*/
|
|
65
|
+
clear(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Clear expired entries
|
|
68
|
+
*/
|
|
69
|
+
clearExpired(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get cache statistics
|
|
72
|
+
*/
|
|
73
|
+
getStats(): CacheStats;
|
|
74
|
+
/**
|
|
75
|
+
* Reset statistics
|
|
76
|
+
*/
|
|
77
|
+
resetStats(): void;
|
|
78
|
+
private recordHit;
|
|
79
|
+
private recordMiss;
|
|
80
|
+
/**
|
|
81
|
+
* Get current cache size
|
|
82
|
+
*/
|
|
83
|
+
get size(): number;
|
|
84
|
+
/**
|
|
85
|
+
* Check if cache has key
|
|
86
|
+
*/
|
|
87
|
+
has(key: string): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Delete specific entry
|
|
90
|
+
*/
|
|
91
|
+
delete(key: string): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Get all cache keys
|
|
94
|
+
*/
|
|
95
|
+
keys(): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Get cache configuration
|
|
98
|
+
*/
|
|
99
|
+
getConfig(): Required<QueryCacheConfig>;
|
|
100
|
+
/**
|
|
101
|
+
* Update cache configuration
|
|
102
|
+
*/
|
|
103
|
+
updateConfig(config: Partial<QueryCacheConfig>): void;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=query-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG;IAC7B,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAA6B;IAG3C,OAAO,CAAC,KAAK,CAMX;gBAEU,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAQlD;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,SAAS,EAAE,MAAM,EAAE,EACnB,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM;IAMT;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAyB1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAelC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAmBhB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,IAAI,IAAI;IAapB;;OAEG;IACH,QAAQ,IAAI,UAAU;IActB;;OAEG;IACH,UAAU,IAAI,IAAI;IAUlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAazB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAIvC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAetD"}
|