agentdb 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +38 -0
- package/LICENSE-APACHE +190 -0
- package/LICENSE-MIT +21 -0
- package/README.md +953 -0
- package/bin/agentdb.js +485 -0
- package/bin/plugin-cli-wrapper.mjs +21 -0
- package/dist/cache/query-cache.d.ts +105 -0
- package/dist/cache/query-cache.d.ts.map +1 -0
- package/dist/cache/query-cache.js +224 -0
- package/dist/cache/query-cache.js.map +1 -0
- package/dist/cache/query-cache.mjs +219 -0
- package/dist/cli/cache/query-cache.d.ts +104 -0
- package/dist/cli/cache/query-cache.js +244 -0
- package/dist/cli/cli/db-commands.d.ts +48 -0
- package/dist/cli/cli/db-commands.js +613 -0
- package/dist/cli/commands.d.ts +7 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +113 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/commands.mjs +104 -0
- package/dist/cli/core/backend-interface.d.ts +70 -0
- package/dist/cli/core/backend-interface.js +15 -0
- package/dist/cli/core/native-backend.d.ts +140 -0
- package/dist/cli/core/native-backend.js +432 -0
- package/dist/cli/core/vector-db.d.ts +126 -0
- package/dist/cli/core/vector-db.js +338 -0
- package/dist/cli/core/wasm-backend.d.ts +95 -0
- package/dist/cli/core/wasm-backend.js +418 -0
- package/dist/cli/db-commands.d.ts +49 -0
- package/dist/cli/db-commands.d.ts.map +1 -0
- package/dist/cli/db-commands.js +533 -0
- package/dist/cli/db-commands.js.map +1 -0
- package/dist/cli/db-commands.mjs +522 -0
- package/dist/cli/generator.d.ts +11 -0
- package/dist/cli/generator.d.ts.map +1 -0
- package/dist/cli/generator.js +567 -0
- package/dist/cli/generator.js.map +1 -0
- package/dist/cli/generator.mjs +527 -0
- package/dist/cli/help.d.ts +18 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +676 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/help.mjs +667 -0
- package/dist/cli/index/hnsw.d.ts +164 -0
- package/dist/cli/index/hnsw.js +558 -0
- package/dist/cli/plugin-cli.d.ts +7 -0
- package/dist/cli/plugin-cli.d.ts.map +1 -0
- package/dist/cli/plugin-cli.js +295 -0
- package/dist/cli/plugin-cli.js.map +1 -0
- package/dist/cli/plugin-cli.mjs +289 -0
- package/dist/cli/quantization/product-quantization.d.ts +108 -0
- package/dist/cli/quantization/product-quantization.js +350 -0
- package/dist/cli/query/query-builder.d.ts +322 -0
- package/dist/cli/query/query-builder.js +600 -0
- package/dist/cli/templates.d.ts +14 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +182 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/cli/templates.mjs +176 -0
- package/dist/cli/types/index.d.ts +116 -0
- package/dist/cli/types/index.js +5 -0
- package/dist/cli/types.d.ts +91 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +6 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/types.mjs +4 -0
- package/dist/cli/wizard/index.d.ts +6 -0
- package/dist/cli/wizard/index.d.ts.map +1 -0
- package/dist/cli/wizard/index.js +138 -0
- package/dist/cli/wizard/index.js.map +1 -0
- package/dist/cli/wizard/index.mjs +131 -0
- package/dist/cli/wizard/prompts.d.ts +11 -0
- package/dist/cli/wizard/prompts.d.ts.map +1 -0
- package/dist/cli/wizard/prompts.js +482 -0
- package/dist/cli/wizard/prompts.js.map +1 -0
- package/dist/cli/wizard/prompts.mjs +470 -0
- package/dist/cli/wizard/validator.d.ts +13 -0
- package/dist/cli/wizard/validator.d.ts.map +1 -0
- package/dist/cli/wizard/validator.js +234 -0
- package/dist/cli/wizard/validator.js.map +1 -0
- package/dist/cli/wizard/validator.mjs +224 -0
- package/dist/core/backend-interface.d.ts +71 -0
- package/dist/core/backend-interface.d.ts.map +1 -0
- package/dist/core/backend-interface.js +16 -0
- package/dist/core/backend-interface.js.map +1 -0
- package/dist/core/backend-interface.mjs +12 -0
- package/dist/core/native-backend.d.ts +141 -0
- package/dist/core/native-backend.d.ts.map +1 -0
- package/dist/core/native-backend.js +457 -0
- package/dist/core/native-backend.js.map +1 -0
- package/dist/core/native-backend.mjs +449 -0
- package/dist/core/vector-db.d.ts +127 -0
- package/dist/core/vector-db.d.ts.map +1 -0
- package/dist/core/vector-db.js +266 -0
- package/dist/core/vector-db.js.map +1 -0
- package/dist/core/vector-db.mjs +261 -0
- package/dist/core/wasm-backend.d.ts +96 -0
- package/dist/core/wasm-backend.d.ts.map +1 -0
- package/dist/core/wasm-backend.js +393 -0
- package/dist/core/wasm-backend.js.map +1 -0
- package/dist/core/wasm-backend.mjs +385 -0
- package/dist/index/hnsw-optimized.d.ts +75 -0
- package/dist/index/hnsw-optimized.d.ts.map +1 -0
- package/dist/index/hnsw-optimized.js +412 -0
- package/dist/index/hnsw-optimized.js.map +1 -0
- package/dist/index/hnsw-optimized.mjs +407 -0
- package/dist/index/hnsw.d.ts +165 -0
- package/dist/index/hnsw.d.ts.map +1 -0
- package/dist/index/hnsw.js +521 -0
- package/dist/index/hnsw.js.map +1 -0
- package/dist/index/hnsw.mjs +516 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +63 -0
- package/dist/mcp-server.d.ts +27 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +789 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-server.mjs +784 -0
- package/dist/plugins/base-plugin.d.ts +114 -0
- package/dist/plugins/base-plugin.d.ts.map +1 -0
- package/dist/plugins/base-plugin.js +313 -0
- package/dist/plugins/base-plugin.js.map +1 -0
- package/dist/plugins/base-plugin.mjs +275 -0
- package/dist/plugins/implementations/active-learning.d.ts +135 -0
- package/dist/plugins/implementations/active-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/active-learning.js +372 -0
- package/dist/plugins/implementations/active-learning.js.map +1 -0
- package/dist/plugins/implementations/active-learning.mjs +367 -0
- package/dist/plugins/implementations/actor-critic.d.ts +64 -0
- package/dist/plugins/implementations/actor-critic.d.ts.map +1 -0
- package/dist/plugins/implementations/actor-critic.js +363 -0
- package/dist/plugins/implementations/actor-critic.js.map +1 -0
- package/dist/plugins/implementations/actor-critic.mjs +358 -0
- package/dist/plugins/implementations/adversarial-training.d.ts +133 -0
- package/dist/plugins/implementations/adversarial-training.d.ts.map +1 -0
- package/dist/plugins/implementations/adversarial-training.js +409 -0
- package/dist/plugins/implementations/adversarial-training.js.map +1 -0
- package/dist/plugins/implementations/adversarial-training.mjs +404 -0
- package/dist/plugins/implementations/curriculum-learning.d.ts +132 -0
- package/dist/plugins/implementations/curriculum-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/curriculum-learning.js +354 -0
- package/dist/plugins/implementations/curriculum-learning.js.map +1 -0
- package/dist/plugins/implementations/curriculum-learning.mjs +349 -0
- package/dist/plugins/implementations/decision-transformer.d.ts +77 -0
- package/dist/plugins/implementations/decision-transformer.d.ts.map +1 -0
- package/dist/plugins/implementations/decision-transformer.js +422 -0
- package/dist/plugins/implementations/decision-transformer.js.map +1 -0
- package/dist/plugins/implementations/decision-transformer.mjs +417 -0
- package/dist/plugins/implementations/federated-learning.d.ts +126 -0
- package/dist/plugins/implementations/federated-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/federated-learning.js +436 -0
- package/dist/plugins/implementations/federated-learning.js.map +1 -0
- package/dist/plugins/implementations/federated-learning.mjs +431 -0
- package/dist/plugins/implementations/index.d.ts +30 -0
- package/dist/plugins/implementations/index.d.ts.map +1 -0
- package/dist/plugins/implementations/index.js +45 -0
- package/dist/plugins/implementations/index.js.map +1 -0
- package/dist/plugins/implementations/index.mjs +31 -0
- package/dist/plugins/implementations/multi-task-learning.d.ts +115 -0
- package/dist/plugins/implementations/multi-task-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/multi-task-learning.js +369 -0
- package/dist/plugins/implementations/multi-task-learning.js.map +1 -0
- package/dist/plugins/implementations/multi-task-learning.mjs +364 -0
- package/dist/plugins/implementations/neural-architecture-search.d.ts +148 -0
- package/dist/plugins/implementations/neural-architecture-search.d.ts.map +1 -0
- package/dist/plugins/implementations/neural-architecture-search.js +379 -0
- package/dist/plugins/implementations/neural-architecture-search.js.map +1 -0
- package/dist/plugins/implementations/neural-architecture-search.mjs +374 -0
- package/dist/plugins/implementations/q-learning.d.ts +98 -0
- package/dist/plugins/implementations/q-learning.d.ts.map +1 -0
- package/dist/plugins/implementations/q-learning.js +435 -0
- package/dist/plugins/implementations/q-learning.js.map +1 -0
- package/dist/plugins/implementations/q-learning.mjs +430 -0
- package/dist/plugins/implementations/sarsa.d.ts +103 -0
- package/dist/plugins/implementations/sarsa.d.ts.map +1 -0
- package/dist/plugins/implementations/sarsa.js +347 -0
- package/dist/plugins/implementations/sarsa.js.map +1 -0
- package/dist/plugins/implementations/sarsa.mjs +342 -0
- package/dist/plugins/index.d.ts +107 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +179 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/index.mjs +168 -0
- package/dist/plugins/interface.d.ts +439 -0
- package/dist/plugins/interface.d.ts.map +1 -0
- package/dist/plugins/interface.js +12 -0
- package/dist/plugins/interface.js.map +1 -0
- package/dist/plugins/interface.mjs +10 -0
- package/dist/plugins/learning-plugin.interface.d.ts +257 -0
- package/dist/plugins/learning-plugin.interface.d.ts.map +1 -0
- package/dist/plugins/learning-plugin.interface.js +7 -0
- package/dist/plugins/learning-plugin.interface.js.map +1 -0
- package/dist/plugins/learning-plugin.interface.mjs +5 -0
- package/dist/plugins/plugin-exports.d.ts +71 -0
- package/dist/plugins/plugin-exports.d.ts.map +1 -0
- package/dist/plugins/plugin-exports.js +78 -0
- package/dist/plugins/plugin-exports.js.map +1 -0
- package/dist/plugins/plugin-exports.mjs +69 -0
- package/dist/plugins/registry.d.ts +206 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +365 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/registry.mjs +356 -0
- package/dist/plugins/validator.d.ts +63 -0
- package/dist/plugins/validator.d.ts.map +1 -0
- package/dist/plugins/validator.js +464 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/plugins/validator.mjs +458 -0
- package/dist/quantization/binary-quantization.d.ts +104 -0
- package/dist/quantization/binary-quantization.d.ts.map +1 -0
- package/dist/quantization/binary-quantization.js +246 -0
- package/dist/quantization/binary-quantization.js.map +1 -0
- package/dist/quantization/binary-quantization.mjs +240 -0
- package/dist/quantization/optimized-pq.d.ts +138 -0
- package/dist/quantization/optimized-pq.d.ts.map +1 -0
- package/dist/quantization/optimized-pq.js +320 -0
- package/dist/quantization/optimized-pq.js.map +1 -0
- package/dist/quantization/optimized-pq.mjs +313 -0
- package/dist/quantization/product-quantization.d.ts +109 -0
- package/dist/quantization/product-quantization.d.ts.map +1 -0
- package/dist/quantization/product-quantization.js +287 -0
- package/dist/quantization/product-quantization.js.map +1 -0
- package/dist/quantization/product-quantization.mjs +282 -0
- package/dist/quantization/scalar-quantization.d.ts +100 -0
- package/dist/quantization/scalar-quantization.d.ts.map +1 -0
- package/dist/quantization/scalar-quantization.js +324 -0
- package/dist/quantization/scalar-quantization.js.map +1 -0
- package/dist/quantization/scalar-quantization.mjs +319 -0
- package/dist/query/index.d.ts +6 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +9 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/index.mjs +4 -0
- package/dist/query/query-builder.d.ts +323 -0
- package/dist/query/query-builder.d.ts.map +1 -0
- package/dist/query/query-builder.js +524 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/query-builder.mjs +519 -0
- package/dist/reasoning/context-synthesizer.d.ts +57 -0
- package/dist/reasoning/context-synthesizer.d.ts.map +1 -0
- package/dist/reasoning/context-synthesizer.js +224 -0
- package/dist/reasoning/context-synthesizer.js.map +1 -0
- package/dist/reasoning/context-synthesizer.mjs +219 -0
- package/dist/reasoning/experience-curator.d.ts +66 -0
- package/dist/reasoning/experience-curator.d.ts.map +1 -0
- package/dist/reasoning/experience-curator.js +288 -0
- package/dist/reasoning/experience-curator.js.map +1 -0
- package/dist/reasoning/experience-curator.mjs +283 -0
- package/dist/reasoning/memory-optimizer.d.ts +69 -0
- package/dist/reasoning/memory-optimizer.d.ts.map +1 -0
- package/dist/reasoning/memory-optimizer.js +331 -0
- package/dist/reasoning/memory-optimizer.js.map +1 -0
- package/dist/reasoning/memory-optimizer.mjs +326 -0
- package/dist/reasoning/pattern-matcher.d.ts +59 -0
- package/dist/reasoning/pattern-matcher.d.ts.map +1 -0
- package/dist/reasoning/pattern-matcher.js +229 -0
- package/dist/reasoning/pattern-matcher.js.map +1 -0
- package/dist/reasoning/pattern-matcher.mjs +224 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +118 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +1 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.js +477 -0
- package/dist/reasoningbank/adapter/agentdb-adapter.js.map +1 -0
- package/dist/reasoningbank/adapter/types.d.ts +113 -0
- package/dist/reasoningbank/adapter/types.d.ts.map +1 -0
- package/dist/reasoningbank/adapter/types.js +9 -0
- package/dist/reasoningbank/adapter/types.js.map +1 -0
- package/dist/reasoningbank/cli/commands.d.ts +16 -0
- package/dist/reasoningbank/cli/commands.d.ts.map +1 -0
- package/dist/reasoningbank/cli/commands.js +272 -0
- package/dist/reasoningbank/cli/commands.js.map +1 -0
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts +319 -0
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +1 -0
- package/dist/reasoningbank/mcp/agentdb-tools.js +301 -0
- package/dist/reasoningbank/mcp/agentdb-tools.js.map +1 -0
- package/dist/reasoningbank/migration/migrate.d.ts +25 -0
- package/dist/reasoningbank/migration/migrate.d.ts.map +1 -0
- package/dist/reasoningbank/migration/migrate.js +178 -0
- package/dist/reasoningbank/migration/migrate.js.map +1 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +37 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.js +114 -0
- package/dist/reasoningbank/reasoning/context-synthesizer.js.map +1 -0
- package/dist/reasoningbank/reasoning/experience-curator.d.ts +39 -0
- package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/experience-curator.js +98 -0
- package/dist/reasoningbank/reasoning/experience-curator.js.map +1 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +44 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.js +184 -0
- package/dist/reasoningbank/reasoning/memory-optimizer.js.map +1 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +40 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +1 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.js +87 -0
- package/dist/reasoningbank/reasoning/pattern-matcher.js.map +1 -0
- package/dist/reasoningbank/sync/quic-sync.d.ts +77 -0
- package/dist/reasoningbank/sync/quic-sync.d.ts.map +1 -0
- package/dist/reasoningbank/sync/quic-sync.js +165 -0
- package/dist/reasoningbank/sync/quic-sync.js.map +1 -0
- package/dist/sync/conflict.d.ts +78 -0
- package/dist/sync/conflict.d.ts.map +1 -0
- package/dist/sync/conflict.js +202 -0
- package/dist/sync/conflict.js.map +1 -0
- package/dist/sync/conflict.mjs +196 -0
- package/dist/sync/coordinator.d.ts +111 -0
- package/dist/sync/coordinator.d.ts.map +1 -0
- package/dist/sync/coordinator.js +256 -0
- package/dist/sync/coordinator.js.map +1 -0
- package/dist/sync/coordinator.mjs +250 -0
- package/dist/sync/delta.d.ts +81 -0
- package/dist/sync/delta.d.ts.map +1 -0
- package/dist/sync/delta.js +245 -0
- package/dist/sync/delta.js.map +1 -0
- package/dist/sync/delta.mjs +238 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +22 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/index.mjs +9 -0
- package/dist/sync/quic-sync.d.ts +81 -0
- package/dist/sync/quic-sync.d.ts.map +1 -0
- package/dist/sync/quic-sync.js +329 -0
- package/dist/sync/quic-sync.js.map +1 -0
- package/dist/sync/quic-sync.mjs +323 -0
- package/dist/sync/types.d.ts +168 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +8 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/sync/types.mjs +6 -0
- package/dist/types/index.d.ts +117 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +4 -0
- package/dist/wasm-loader.d.ts +32 -0
- package/dist/wasm-loader.d.ts.map +1 -0
- package/dist/wasm-loader.js +75 -0
- package/dist/wasm-loader.js.map +1 -0
- package/dist/wasm-loader.mjs +64 -0
- package/examples/adaptive-learning.ts +284 -0
- package/examples/browser/README.md +732 -0
- package/examples/browser/adaptive-recommendations/index.html +427 -0
- package/examples/browser/collaborative-filtering/index.html +310 -0
- package/examples/browser/continual-learning/index.html +736 -0
- package/examples/browser/experience-replay/index.html +616 -0
- package/examples/browser/index.html +369 -0
- package/examples/browser/meta-learning/index.html +789 -0
- package/examples/browser/neuro-symbolic/index.html +692 -0
- package/examples/browser/pattern-learning/index.html +620 -0
- package/examples/browser/quantum-inspired/index.html +728 -0
- package/examples/browser/rag/index.html +624 -0
- package/examples/browser/swarm-intelligence/index.html +811 -0
- package/examples/browser-basic.html +170 -0
- package/examples/hnsw-example.ts +148 -0
- package/examples/node-basic.js +70 -0
- package/examples/quic-sync-example.ts +310 -0
- package/examples/quick-start.js +68 -0
- package/examples/wasm-example.ts +222 -0
- package/package.json +118 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI commands implementation
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.listPlugins = listPlugins;
|
|
10
|
+
exports.listTemplates = listTemplates;
|
|
11
|
+
exports.getPluginInfo = getPluginInfo;
|
|
12
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
const templates_js_1 = require("./templates.js");
|
|
16
|
+
async function listPlugins(verbose = false) {
|
|
17
|
+
const pluginsDir = path_1.default.join(process.cwd(), 'plugins');
|
|
18
|
+
try {
|
|
19
|
+
const plugins = await promises_1.default.readdir(pluginsDir);
|
|
20
|
+
console.log(chalk_1.default.cyan.bold('\nAvailable Plugins:\n'));
|
|
21
|
+
for (const pluginName of plugins) {
|
|
22
|
+
const pluginPath = path_1.default.join(pluginsDir, pluginName);
|
|
23
|
+
const stats = await promises_1.default.stat(pluginPath);
|
|
24
|
+
if (!stats.isDirectory())
|
|
25
|
+
continue;
|
|
26
|
+
try {
|
|
27
|
+
const configPath = path_1.default.join(pluginPath, 'plugin.yaml');
|
|
28
|
+
const config = await promises_1.default.readFile(configPath, 'utf-8');
|
|
29
|
+
console.log(chalk_1.default.yellow(` • ${pluginName}`));
|
|
30
|
+
if (verbose) {
|
|
31
|
+
// Parse YAML and show details
|
|
32
|
+
const lines = config.split('\n');
|
|
33
|
+
const description = lines.find(l => l.startsWith('description:'));
|
|
34
|
+
const version = lines.find(l => l.startsWith('version:'));
|
|
35
|
+
const algorithm = lines.find(l => l.startsWith('base_algorithm:'));
|
|
36
|
+
if (description)
|
|
37
|
+
console.log(chalk_1.default.gray(` ${description.split(':')[1].trim()}`));
|
|
38
|
+
if (version)
|
|
39
|
+
console.log(chalk_1.default.gray(` Version: ${version.split(':')[1].trim()}`));
|
|
40
|
+
if (algorithm)
|
|
41
|
+
console.log(chalk_1.default.gray(` Algorithm: ${algorithm.split(':')[1].trim()}`));
|
|
42
|
+
console.log();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.log(chalk_1.default.red(` (Invalid plugin configuration)`));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.log(chalk_1.default.yellow('\nNo plugins found. Create one with:'));
|
|
52
|
+
console.log(chalk_1.default.cyan(' npx agentdb create-plugin\n'));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function listTemplates(detailed = false) {
|
|
56
|
+
const templates = await (0, templates_js_1.getAvailableTemplates)();
|
|
57
|
+
console.log(chalk_1.default.cyan.bold('\nAvailable Templates:\n'));
|
|
58
|
+
for (const template of templates) {
|
|
59
|
+
console.log(chalk_1.default.yellow(` • ${template.name}`));
|
|
60
|
+
if (detailed) {
|
|
61
|
+
console.log(chalk_1.default.gray(` ${template.description}`));
|
|
62
|
+
console.log(chalk_1.default.gray(` Algorithm: ${template.algorithm}`));
|
|
63
|
+
console.log(chalk_1.default.gray(` Use Case: ${template.useCase}`));
|
|
64
|
+
console.log(chalk_1.default.gray(` Configuration:`));
|
|
65
|
+
console.log(chalk_1.default.gray(` - Learning Rate: ${template.config.algorithm.learning_rate || 'varies'}`));
|
|
66
|
+
console.log(chalk_1.default.gray(` - Batch Size: ${template.config.training.batch_size || 'N/A'}`));
|
|
67
|
+
console.log(chalk_1.default.gray(` - Min Experiences: ${template.config.training.min_experiences}`));
|
|
68
|
+
console.log();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
console.log(chalk_1.default.gray('\nCreate a plugin from template:'));
|
|
72
|
+
console.log(chalk_1.default.cyan(' npx agentdb create-plugin --template <name>\n'));
|
|
73
|
+
}
|
|
74
|
+
async function getPluginInfo(name, asJson = false) {
|
|
75
|
+
const pluginPath = path_1.default.join(process.cwd(), 'plugins', name);
|
|
76
|
+
try {
|
|
77
|
+
const configPath = path_1.default.join(pluginPath, 'plugin.yaml');
|
|
78
|
+
const config = await promises_1.default.readFile(configPath, 'utf-8');
|
|
79
|
+
if (asJson) {
|
|
80
|
+
// Output as JSON
|
|
81
|
+
const lines = config.split('\n');
|
|
82
|
+
const jsonInfo = {
|
|
83
|
+
name: name,
|
|
84
|
+
description: lines.find(l => l.startsWith('description:'))?.split(':')[1]?.trim() || '',
|
|
85
|
+
version: lines.find(l => l.startsWith('version:'))?.split(':')[1]?.trim() || '',
|
|
86
|
+
baseAlgorithm: lines.find(l => l.startsWith('base_algorithm:'))?.split(':')[1]?.trim() || '',
|
|
87
|
+
author: lines.find(l => l.startsWith('author:'))?.split(':')[1]?.trim() || '',
|
|
88
|
+
status: 'ready'
|
|
89
|
+
};
|
|
90
|
+
console.log(JSON.stringify(jsonInfo, null, 2));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log(chalk_1.default.cyan.bold(`\n Plugin: ${name}\n`));
|
|
94
|
+
console.log(chalk_1.default.gray('────────────────────────────────────────'));
|
|
95
|
+
console.log(config);
|
|
96
|
+
console.log(chalk_1.default.gray('────────────────────────────────────────\n'));
|
|
97
|
+
const readmePath = path_1.default.join(pluginPath, 'README.md');
|
|
98
|
+
try {
|
|
99
|
+
const readme = await promises_1.default.readFile(readmePath, 'utf-8');
|
|
100
|
+
console.log(chalk_1.default.white('\nDocumentation:\n'));
|
|
101
|
+
console.log(readme);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// No README
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error(chalk_1.default.red(`\nPlugin "${name}" not found.\n`));
|
|
109
|
+
console.log(chalk_1.default.gray('List available plugins:'));
|
|
110
|
+
console.log(chalk_1.default.cyan(' npx agentdb list-plugins\n'));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI commands implementation
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'fs/promises';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { getAvailableTemplates } from './templates.mjs';
|
|
8
|
+
export async function listPlugins(verbose = false) {
|
|
9
|
+
const pluginsDir = path.join(process.cwd(), 'plugins');
|
|
10
|
+
try {
|
|
11
|
+
const plugins = await fs.readdir(pluginsDir);
|
|
12
|
+
console.log(chalk.cyan.bold('\nAvailable Plugins:\n'));
|
|
13
|
+
for (const pluginName of plugins) {
|
|
14
|
+
const pluginPath = path.join(pluginsDir, pluginName);
|
|
15
|
+
const stats = await fs.stat(pluginPath);
|
|
16
|
+
if (!stats.isDirectory())
|
|
17
|
+
continue;
|
|
18
|
+
try {
|
|
19
|
+
const configPath = path.join(pluginPath, 'plugin.yaml');
|
|
20
|
+
const config = await fs.readFile(configPath, 'utf-8');
|
|
21
|
+
console.log(chalk.yellow(` • ${pluginName}`));
|
|
22
|
+
if (verbose) {
|
|
23
|
+
// Parse YAML and show details
|
|
24
|
+
const lines = config.split('\n');
|
|
25
|
+
const description = lines.find(l => l.startsWith('description:'));
|
|
26
|
+
const version = lines.find(l => l.startsWith('version:'));
|
|
27
|
+
const algorithm = lines.find(l => l.startsWith('base_algorithm:'));
|
|
28
|
+
if (description)
|
|
29
|
+
console.log(chalk.gray(` ${description.split(':')[1].trim()}`));
|
|
30
|
+
if (version)
|
|
31
|
+
console.log(chalk.gray(` Version: ${version.split(':')[1].trim()}`));
|
|
32
|
+
if (algorithm)
|
|
33
|
+
console.log(chalk.gray(` Algorithm: ${algorithm.split(':')[1].trim()}`));
|
|
34
|
+
console.log();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.log(chalk.red(` (Invalid plugin configuration)`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.log(chalk.yellow('\nNo plugins found. Create one with:'));
|
|
44
|
+
console.log(chalk.cyan(' npx agentdb create-plugin\n'));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function listTemplates(detailed = false) {
|
|
48
|
+
const templates = await getAvailableTemplates();
|
|
49
|
+
console.log(chalk.cyan.bold('\nAvailable Templates:\n'));
|
|
50
|
+
for (const template of templates) {
|
|
51
|
+
console.log(chalk.yellow(` • ${template.name}`));
|
|
52
|
+
if (detailed) {
|
|
53
|
+
console.log(chalk.gray(` ${template.description}`));
|
|
54
|
+
console.log(chalk.gray(` Algorithm: ${template.algorithm}`));
|
|
55
|
+
console.log(chalk.gray(` Use Case: ${template.useCase}`));
|
|
56
|
+
console.log(chalk.gray(` Configuration:`));
|
|
57
|
+
console.log(chalk.gray(` - Learning Rate: ${template.config.algorithm.learning_rate || 'varies'}`));
|
|
58
|
+
console.log(chalk.gray(` - Batch Size: ${template.config.training.batch_size || 'N/A'}`));
|
|
59
|
+
console.log(chalk.gray(` - Min Experiences: ${template.config.training.min_experiences}`));
|
|
60
|
+
console.log();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
console.log(chalk.gray('\nCreate a plugin from template:'));
|
|
64
|
+
console.log(chalk.cyan(' npx agentdb create-plugin --template <name>\n'));
|
|
65
|
+
}
|
|
66
|
+
export async function getPluginInfo(name, asJson = false) {
|
|
67
|
+
const pluginPath = path.join(process.cwd(), 'plugins', name);
|
|
68
|
+
try {
|
|
69
|
+
const configPath = path.join(pluginPath, 'plugin.yaml');
|
|
70
|
+
const config = await fs.readFile(configPath, 'utf-8');
|
|
71
|
+
if (asJson) {
|
|
72
|
+
// Output as JSON
|
|
73
|
+
const lines = config.split('\n');
|
|
74
|
+
const jsonInfo = {
|
|
75
|
+
name: name,
|
|
76
|
+
description: lines.find(l => l.startsWith('description:'))?.split(':')[1]?.trim() || '',
|
|
77
|
+
version: lines.find(l => l.startsWith('version:'))?.split(':')[1]?.trim() || '',
|
|
78
|
+
baseAlgorithm: lines.find(l => l.startsWith('base_algorithm:'))?.split(':')[1]?.trim() || '',
|
|
79
|
+
author: lines.find(l => l.startsWith('author:'))?.split(':')[1]?.trim() || '',
|
|
80
|
+
status: 'ready'
|
|
81
|
+
};
|
|
82
|
+
console.log(JSON.stringify(jsonInfo, null, 2));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
console.log(chalk.cyan.bold(`\n Plugin: ${name}\n`));
|
|
86
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
87
|
+
console.log(config);
|
|
88
|
+
console.log(chalk.gray('────────────────────────────────────────\n'));
|
|
89
|
+
const readmePath = path.join(pluginPath, 'README.md');
|
|
90
|
+
try {
|
|
91
|
+
const readme = await fs.readFile(readmePath, 'utf-8');
|
|
92
|
+
console.log(chalk.white('\nDocumentation:\n'));
|
|
93
|
+
console.log(readme);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// No README
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.error(chalk.red(`\nPlugin "${name}" not found.\n`));
|
|
101
|
+
console.log(chalk.gray('List available plugins:'));
|
|
102
|
+
console.log(chalk.cyan(' npx agentdb list-plugins\n'));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend interface for vector database implementations
|
|
3
|
+
* Supports both native (better-sqlite3) and WASM (sql.js) backends
|
|
4
|
+
*/
|
|
5
|
+
import { Vector, SearchResult, SimilarityMetric, DatabaseConfig } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Abstract interface for vector database backends
|
|
8
|
+
*/
|
|
9
|
+
export interface VectorBackend {
|
|
10
|
+
/**
|
|
11
|
+
* Initialize the database with given configuration
|
|
12
|
+
*/
|
|
13
|
+
initialize(config: DatabaseConfig): void;
|
|
14
|
+
/**
|
|
15
|
+
* Insert a single vector
|
|
16
|
+
* @returns The ID of the inserted vector
|
|
17
|
+
*/
|
|
18
|
+
insert(vector: Vector): string;
|
|
19
|
+
/**
|
|
20
|
+
* Insert multiple vectors in a transaction
|
|
21
|
+
* @returns Array of IDs of inserted vectors
|
|
22
|
+
*/
|
|
23
|
+
insertBatch(vectors: Vector[]): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Search for k-nearest neighbors
|
|
26
|
+
*/
|
|
27
|
+
search(queryEmbedding: number[], k: number, metric: SimilarityMetric, threshold: number): SearchResult[];
|
|
28
|
+
/**
|
|
29
|
+
* Get vector by ID
|
|
30
|
+
*/
|
|
31
|
+
get(id: string): Vector | null;
|
|
32
|
+
/**
|
|
33
|
+
* Delete vector by ID
|
|
34
|
+
* @returns true if deleted, false if not found
|
|
35
|
+
*/
|
|
36
|
+
delete(id: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Get database statistics
|
|
39
|
+
*/
|
|
40
|
+
stats(): {
|
|
41
|
+
count: number;
|
|
42
|
+
size: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Close database connection and cleanup resources
|
|
46
|
+
*/
|
|
47
|
+
close(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Export database to binary format (for WASM persistence)
|
|
50
|
+
*/
|
|
51
|
+
export?(): Uint8Array;
|
|
52
|
+
/**
|
|
53
|
+
* Import database from binary format (for WASM persistence)
|
|
54
|
+
*/
|
|
55
|
+
import?(data: Uint8Array): void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Backend type enum
|
|
59
|
+
*/
|
|
60
|
+
export declare enum BackendType {
|
|
61
|
+
NATIVE = "native",
|
|
62
|
+
WASM = "wasm"
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extended database configuration with backend selection
|
|
66
|
+
*/
|
|
67
|
+
export interface ExtendedDatabaseConfig extends DatabaseConfig {
|
|
68
|
+
backend?: BackendType;
|
|
69
|
+
wasmBinary?: Uint8Array;
|
|
70
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Backend interface for vector database implementations
|
|
4
|
+
* Supports both native (better-sqlite3) and WASM (sql.js) backends
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BackendType = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Backend type enum
|
|
10
|
+
*/
|
|
11
|
+
var BackendType;
|
|
12
|
+
(function (BackendType) {
|
|
13
|
+
BackendType["NATIVE"] = "native";
|
|
14
|
+
BackendType["WASM"] = "wasm";
|
|
15
|
+
})(BackendType || (exports.BackendType = BackendType = {}));
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native backend implementation using better-sqlite3
|
|
3
|
+
* High-performance backend for Node.js environments
|
|
4
|
+
*/
|
|
5
|
+
import Database from 'better-sqlite3';
|
|
6
|
+
import { Vector, SearchResult, SimilarityMetric, DatabaseConfig } from '../types';
|
|
7
|
+
import { VectorBackend } from './backend-interface';
|
|
8
|
+
import { HNSWConfig } from '../index/hnsw';
|
|
9
|
+
/**
|
|
10
|
+
* Extended database configuration with HNSW index support
|
|
11
|
+
*/
|
|
12
|
+
export interface NativeBackendConfig extends DatabaseConfig {
|
|
13
|
+
hnsw?: Partial<HNSWConfig>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Native backend using better-sqlite3
|
|
17
|
+
* Optimized for Node.js with native SQLite bindings
|
|
18
|
+
* Features HNSW index for high-performance approximate nearest neighbor search
|
|
19
|
+
*/
|
|
20
|
+
export declare class NativeBackend implements VectorBackend {
|
|
21
|
+
private db;
|
|
22
|
+
private insertStmt;
|
|
23
|
+
private initialized;
|
|
24
|
+
private hnswIndex;
|
|
25
|
+
private hnswConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the native backend
|
|
28
|
+
*/
|
|
29
|
+
initialize(config?: NativeBackendConfig): void;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize database schema
|
|
32
|
+
*/
|
|
33
|
+
private initializeSchema;
|
|
34
|
+
/**
|
|
35
|
+
* Register custom SQL functions for similarity calculations
|
|
36
|
+
*/
|
|
37
|
+
private registerCustomFunctions;
|
|
38
|
+
/**
|
|
39
|
+
* Prepare frequently used statements
|
|
40
|
+
*/
|
|
41
|
+
private prepareStatements;
|
|
42
|
+
/**
|
|
43
|
+
* Calculate L2 norm of a vector
|
|
44
|
+
*/
|
|
45
|
+
private calculateNorm;
|
|
46
|
+
/**
|
|
47
|
+
* Serialize embedding to binary format
|
|
48
|
+
*/
|
|
49
|
+
private serializeEmbedding;
|
|
50
|
+
/**
|
|
51
|
+
* Deserialize embedding from binary format
|
|
52
|
+
*/
|
|
53
|
+
private deserializeEmbedding;
|
|
54
|
+
/**
|
|
55
|
+
* Generate unique ID
|
|
56
|
+
*/
|
|
57
|
+
private generateId;
|
|
58
|
+
/**
|
|
59
|
+
* Insert a single vector
|
|
60
|
+
*/
|
|
61
|
+
insert(vector: Vector): string;
|
|
62
|
+
/**
|
|
63
|
+
* Insert multiple vectors in a transaction with optimized batch processing
|
|
64
|
+
* Performance improvements:
|
|
65
|
+
* - Single transaction for all inserts
|
|
66
|
+
* - Reused prepared statement
|
|
67
|
+
* - No wrapper function overhead
|
|
68
|
+
* - Chunked processing for large batches
|
|
69
|
+
* - Automatic HNSW index building after batch insert
|
|
70
|
+
*/
|
|
71
|
+
insertBatch(vectors: Vector[]): string[];
|
|
72
|
+
/**
|
|
73
|
+
* Check if HNSW index should be used
|
|
74
|
+
*/
|
|
75
|
+
private shouldUseHNSW;
|
|
76
|
+
/**
|
|
77
|
+
* Search for k-nearest neighbors
|
|
78
|
+
* Automatically uses HNSW index when available and beneficial
|
|
79
|
+
*/
|
|
80
|
+
search(queryEmbedding: number[], k?: number, metric?: SimilarityMetric, threshold?: number): SearchResult[];
|
|
81
|
+
/**
|
|
82
|
+
* Search using HNSW index (fast approximate search)
|
|
83
|
+
*/
|
|
84
|
+
private searchWithHNSW;
|
|
85
|
+
/**
|
|
86
|
+
* Brute-force search (accurate but slower)
|
|
87
|
+
*/
|
|
88
|
+
private bruteForceSearch;
|
|
89
|
+
/**
|
|
90
|
+
* Get vector by ID
|
|
91
|
+
*/
|
|
92
|
+
get(id: string): Vector | null;
|
|
93
|
+
/**
|
|
94
|
+
* Delete vector by ID
|
|
95
|
+
*/
|
|
96
|
+
delete(id: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Get database statistics
|
|
99
|
+
*/
|
|
100
|
+
stats(): {
|
|
101
|
+
count: number;
|
|
102
|
+
size: number;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Close database connection
|
|
106
|
+
*/
|
|
107
|
+
close(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get raw database instance (for advanced usage)
|
|
110
|
+
*/
|
|
111
|
+
getDatabase(): Database.Database | null;
|
|
112
|
+
/**
|
|
113
|
+
* Check if backend is initialized
|
|
114
|
+
*/
|
|
115
|
+
isInitialized(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Build HNSW index manually
|
|
118
|
+
* Useful for pre-building index on existing data
|
|
119
|
+
*/
|
|
120
|
+
buildHNSWIndex(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Get HNSW index statistics
|
|
123
|
+
*/
|
|
124
|
+
getHNSWStats(): {
|
|
125
|
+
enabled: boolean;
|
|
126
|
+
ready: boolean;
|
|
127
|
+
nodeCount: number;
|
|
128
|
+
edgeCount: number;
|
|
129
|
+
maxLevel: number;
|
|
130
|
+
avgDegree: number;
|
|
131
|
+
} | null;
|
|
132
|
+
/**
|
|
133
|
+
* Clear HNSW index
|
|
134
|
+
*/
|
|
135
|
+
clearHNSWIndex(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Update HNSW configuration and rebuild if needed
|
|
138
|
+
*/
|
|
139
|
+
updateHNSWConfig(config: Partial<HNSWConfig>, rebuild?: boolean): void;
|
|
140
|
+
}
|