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,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Registry for discovering, loading, and managing learning plugins
|
|
3
|
+
*
|
|
4
|
+
* This module provides centralized plugin management including:
|
|
5
|
+
* - Plugin discovery and registration
|
|
6
|
+
* - Version management
|
|
7
|
+
* - Dependency resolution
|
|
8
|
+
* - Plugin lifecycle management
|
|
9
|
+
*
|
|
10
|
+
* @module plugins/registry
|
|
11
|
+
*/
|
|
12
|
+
import { LearningPlugin, PluginMetadata, PluginConfig } from './interface';
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when plugin operations fail
|
|
15
|
+
*/
|
|
16
|
+
export declare class PluginError extends Error {
|
|
17
|
+
readonly code: string;
|
|
18
|
+
readonly details?: any | undefined;
|
|
19
|
+
constructor(message: string, code: string, details?: any | undefined);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Plugin load options
|
|
23
|
+
*/
|
|
24
|
+
export interface PluginLoadOptions {
|
|
25
|
+
/** Custom configuration to override defaults */
|
|
26
|
+
config?: Partial<PluginConfig>;
|
|
27
|
+
/** Whether to validate configuration */
|
|
28
|
+
validate?: boolean;
|
|
29
|
+
/** Whether to initialize immediately */
|
|
30
|
+
initialize?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Plugin search criteria
|
|
34
|
+
*/
|
|
35
|
+
export interface PluginSearchCriteria {
|
|
36
|
+
/** Plugin name pattern (supports wildcards) */
|
|
37
|
+
name?: string;
|
|
38
|
+
/** Base algorithm type */
|
|
39
|
+
baseAlgorithm?: string;
|
|
40
|
+
/** Plugin tags */
|
|
41
|
+
tags?: string[];
|
|
42
|
+
/** Minimum version */
|
|
43
|
+
minVersion?: string;
|
|
44
|
+
/** Maximum version */
|
|
45
|
+
maxVersion?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Plugin Registry
|
|
49
|
+
*
|
|
50
|
+
* Singleton registry for managing learning plugins.
|
|
51
|
+
* Provides plugin discovery, loading, and lifecycle management.
|
|
52
|
+
*/
|
|
53
|
+
export declare class PluginRegistry {
|
|
54
|
+
private static instance;
|
|
55
|
+
/** Registered plugins map (name -> metadata) */
|
|
56
|
+
private plugins;
|
|
57
|
+
/** Active plugin instances (name -> instance) */
|
|
58
|
+
private activePlugins;
|
|
59
|
+
/** Plugin aliases (alias -> plugin name) */
|
|
60
|
+
private aliases;
|
|
61
|
+
/**
|
|
62
|
+
* Private constructor (singleton pattern)
|
|
63
|
+
*/
|
|
64
|
+
private constructor();
|
|
65
|
+
/**
|
|
66
|
+
* Get the singleton registry instance
|
|
67
|
+
*
|
|
68
|
+
* @returns Registry instance
|
|
69
|
+
*/
|
|
70
|
+
static getInstance(): PluginRegistry;
|
|
71
|
+
/**
|
|
72
|
+
* Reset the registry (primarily for testing)
|
|
73
|
+
*/
|
|
74
|
+
static reset(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Register a plugin with the registry
|
|
77
|
+
*
|
|
78
|
+
* @param metadata - Plugin metadata
|
|
79
|
+
* @throws {PluginError} If registration fails
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* registry.register({
|
|
84
|
+
* name: 'q-learning',
|
|
85
|
+
* version: '1.0.0',
|
|
86
|
+
* description: 'Q-Learning algorithm',
|
|
87
|
+
* baseAlgorithm: 'q_learning',
|
|
88
|
+
* factory: (config) => new QLearningPlugin(config)
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
register(metadata: PluginMetadata): void;
|
|
93
|
+
/**
|
|
94
|
+
* Unregister a plugin
|
|
95
|
+
*
|
|
96
|
+
* @param name - Plugin name
|
|
97
|
+
* @returns Whether plugin was unregistered
|
|
98
|
+
*/
|
|
99
|
+
unregister(name: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Register an alias for a plugin
|
|
102
|
+
*
|
|
103
|
+
* @param alias - Alias name
|
|
104
|
+
* @param pluginName - Target plugin name
|
|
105
|
+
* @throws {PluginError} If plugin doesn't exist
|
|
106
|
+
*/
|
|
107
|
+
registerAlias(alias: string, pluginName: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Check if a plugin is registered
|
|
110
|
+
*
|
|
111
|
+
* @param name - Plugin name or alias
|
|
112
|
+
* @returns Whether plugin exists
|
|
113
|
+
*/
|
|
114
|
+
has(name: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get plugin metadata
|
|
117
|
+
*
|
|
118
|
+
* @param name - Plugin name or alias
|
|
119
|
+
* @returns Plugin metadata or undefined
|
|
120
|
+
*/
|
|
121
|
+
get(name: string): PluginMetadata | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* List all registered plugins
|
|
124
|
+
*
|
|
125
|
+
* @param criteria - Optional search criteria
|
|
126
|
+
* @returns Array of plugin metadata
|
|
127
|
+
*/
|
|
128
|
+
list(criteria?: PluginSearchCriteria): PluginMetadata[];
|
|
129
|
+
/**
|
|
130
|
+
* Load a plugin instance
|
|
131
|
+
*
|
|
132
|
+
* @param name - Plugin name or alias
|
|
133
|
+
* @param options - Load options
|
|
134
|
+
* @returns Plugin instance
|
|
135
|
+
* @throws {PluginError} If loading fails
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const plugin = await registry.load('q-learning', {
|
|
140
|
+
* config: { training: { batchSize: 64 } },
|
|
141
|
+
* initialize: true
|
|
142
|
+
* });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
load(name: string, options?: PluginLoadOptions): Promise<LearningPlugin>;
|
|
146
|
+
/**
|
|
147
|
+
* Unload a plugin instance
|
|
148
|
+
*
|
|
149
|
+
* @param name - Plugin name or alias
|
|
150
|
+
* @returns Whether plugin was unloaded
|
|
151
|
+
*/
|
|
152
|
+
unload(name: string): Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* Get active plugin instance
|
|
155
|
+
*
|
|
156
|
+
* @param name - Plugin name or alias
|
|
157
|
+
* @returns Active plugin instance or undefined
|
|
158
|
+
*/
|
|
159
|
+
getActive(name: string): LearningPlugin | undefined;
|
|
160
|
+
/**
|
|
161
|
+
* List all active plugin instances
|
|
162
|
+
*
|
|
163
|
+
* @returns Array of active plugins
|
|
164
|
+
*/
|
|
165
|
+
listActive(): Array<{
|
|
166
|
+
name: string;
|
|
167
|
+
plugin: LearningPlugin;
|
|
168
|
+
}>;
|
|
169
|
+
/**
|
|
170
|
+
* Unload all active plugins
|
|
171
|
+
*/
|
|
172
|
+
unloadAll(): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* Merge plugin configurations
|
|
175
|
+
*
|
|
176
|
+
* @param base - Base configuration
|
|
177
|
+
* @param override - Override configuration
|
|
178
|
+
* @returns Merged configuration
|
|
179
|
+
*/
|
|
180
|
+
private mergeConfig;
|
|
181
|
+
/**
|
|
182
|
+
* Compare semantic versions
|
|
183
|
+
*
|
|
184
|
+
* @param v1 - First version
|
|
185
|
+
* @param v2 - Second version
|
|
186
|
+
* @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2
|
|
187
|
+
*/
|
|
188
|
+
private compareVersions;
|
|
189
|
+
/**
|
|
190
|
+
* Clear all registrations (for testing)
|
|
191
|
+
*/
|
|
192
|
+
clear(): void;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get the global plugin registry instance
|
|
196
|
+
*/
|
|
197
|
+
export declare function getRegistry(): PluginRegistry;
|
|
198
|
+
/**
|
|
199
|
+
* Convenience function to register a plugin
|
|
200
|
+
*/
|
|
201
|
+
export declare function registerPlugin(metadata: PluginMetadata): void;
|
|
202
|
+
/**
|
|
203
|
+
* Convenience function to load a plugin
|
|
204
|
+
*/
|
|
205
|
+
export declare function loadPlugin(name: string, options?: PluginLoadOptions): Promise<LearningPlugin>;
|
|
206
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Registry for discovering, loading, and managing learning plugins
|
|
4
|
+
*
|
|
5
|
+
* This module provides centralized plugin management including:
|
|
6
|
+
* - Plugin discovery and registration
|
|
7
|
+
* - Version management
|
|
8
|
+
* - Dependency resolution
|
|
9
|
+
* - Plugin lifecycle management
|
|
10
|
+
*
|
|
11
|
+
* @module plugins/registry
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.PluginRegistry = exports.PluginError = void 0;
|
|
15
|
+
exports.getRegistry = getRegistry;
|
|
16
|
+
exports.registerPlugin = registerPlugin;
|
|
17
|
+
exports.loadPlugin = loadPlugin;
|
|
18
|
+
const validator_1 = require("./validator");
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when plugin operations fail
|
|
21
|
+
*/
|
|
22
|
+
class PluginError extends Error {
|
|
23
|
+
constructor(message, code, details) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.code = code;
|
|
26
|
+
this.details = details;
|
|
27
|
+
this.name = 'PluginError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.PluginError = PluginError;
|
|
31
|
+
/**
|
|
32
|
+
* Plugin Registry
|
|
33
|
+
*
|
|
34
|
+
* Singleton registry for managing learning plugins.
|
|
35
|
+
* Provides plugin discovery, loading, and lifecycle management.
|
|
36
|
+
*/
|
|
37
|
+
class PluginRegistry {
|
|
38
|
+
/**
|
|
39
|
+
* Private constructor (singleton pattern)
|
|
40
|
+
*/
|
|
41
|
+
constructor() {
|
|
42
|
+
/** Registered plugins map (name -> metadata) */
|
|
43
|
+
this.plugins = new Map();
|
|
44
|
+
/** Active plugin instances (name -> instance) */
|
|
45
|
+
this.activePlugins = new Map();
|
|
46
|
+
/** Plugin aliases (alias -> plugin name) */
|
|
47
|
+
this.aliases = new Map();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the singleton registry instance
|
|
51
|
+
*
|
|
52
|
+
* @returns Registry instance
|
|
53
|
+
*/
|
|
54
|
+
static getInstance() {
|
|
55
|
+
if (!PluginRegistry.instance) {
|
|
56
|
+
PluginRegistry.instance = new PluginRegistry();
|
|
57
|
+
}
|
|
58
|
+
return PluginRegistry.instance;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Reset the registry (primarily for testing)
|
|
62
|
+
*/
|
|
63
|
+
static reset() {
|
|
64
|
+
PluginRegistry.instance = null;
|
|
65
|
+
}
|
|
66
|
+
// ============ Plugin Registration ============
|
|
67
|
+
/**
|
|
68
|
+
* Register a plugin with the registry
|
|
69
|
+
*
|
|
70
|
+
* @param metadata - Plugin metadata
|
|
71
|
+
* @throws {PluginError} If registration fails
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* registry.register({
|
|
76
|
+
* name: 'q-learning',
|
|
77
|
+
* version: '1.0.0',
|
|
78
|
+
* description: 'Q-Learning algorithm',
|
|
79
|
+
* baseAlgorithm: 'q_learning',
|
|
80
|
+
* factory: (config) => new QLearningPlugin(config)
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
register(metadata) {
|
|
85
|
+
// Validate metadata
|
|
86
|
+
if (!metadata.name || !metadata.version || !metadata.factory) {
|
|
87
|
+
throw new PluginError('Invalid plugin metadata: name, version, and factory are required', 'INVALID_METADATA', metadata);
|
|
88
|
+
}
|
|
89
|
+
// Check for duplicate
|
|
90
|
+
if (this.plugins.has(metadata.name)) {
|
|
91
|
+
const existing = this.plugins.get(metadata.name);
|
|
92
|
+
if (existing.version === metadata.version) {
|
|
93
|
+
throw new PluginError(`Plugin ${metadata.name}@${metadata.version} is already registered`, 'DUPLICATE_PLUGIN', { existing, new: metadata });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Register plugin
|
|
97
|
+
this.plugins.set(metadata.name, metadata);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Unregister a plugin
|
|
101
|
+
*
|
|
102
|
+
* @param name - Plugin name
|
|
103
|
+
* @returns Whether plugin was unregistered
|
|
104
|
+
*/
|
|
105
|
+
unregister(name) {
|
|
106
|
+
// Remove active instance if exists
|
|
107
|
+
if (this.activePlugins.has(name)) {
|
|
108
|
+
this.activePlugins.delete(name);
|
|
109
|
+
}
|
|
110
|
+
// Remove aliases
|
|
111
|
+
for (const [alias, pluginName] of this.aliases.entries()) {
|
|
112
|
+
if (pluginName === name) {
|
|
113
|
+
this.aliases.delete(alias);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Remove registration
|
|
117
|
+
return this.plugins.delete(name);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Register an alias for a plugin
|
|
121
|
+
*
|
|
122
|
+
* @param alias - Alias name
|
|
123
|
+
* @param pluginName - Target plugin name
|
|
124
|
+
* @throws {PluginError} If plugin doesn't exist
|
|
125
|
+
*/
|
|
126
|
+
registerAlias(alias, pluginName) {
|
|
127
|
+
if (!this.plugins.has(pluginName)) {
|
|
128
|
+
throw new PluginError(`Cannot create alias: plugin ${pluginName} not found`, 'PLUGIN_NOT_FOUND', { alias, pluginName });
|
|
129
|
+
}
|
|
130
|
+
this.aliases.set(alias, pluginName);
|
|
131
|
+
}
|
|
132
|
+
// ============ Plugin Discovery ============
|
|
133
|
+
/**
|
|
134
|
+
* Check if a plugin is registered
|
|
135
|
+
*
|
|
136
|
+
* @param name - Plugin name or alias
|
|
137
|
+
* @returns Whether plugin exists
|
|
138
|
+
*/
|
|
139
|
+
has(name) {
|
|
140
|
+
const actualName = this.aliases.get(name) || name;
|
|
141
|
+
return this.plugins.has(actualName);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get plugin metadata
|
|
145
|
+
*
|
|
146
|
+
* @param name - Plugin name or alias
|
|
147
|
+
* @returns Plugin metadata or undefined
|
|
148
|
+
*/
|
|
149
|
+
get(name) {
|
|
150
|
+
const actualName = this.aliases.get(name) || name;
|
|
151
|
+
return this.plugins.get(actualName);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* List all registered plugins
|
|
155
|
+
*
|
|
156
|
+
* @param criteria - Optional search criteria
|
|
157
|
+
* @returns Array of plugin metadata
|
|
158
|
+
*/
|
|
159
|
+
list(criteria) {
|
|
160
|
+
let plugins = Array.from(this.plugins.values());
|
|
161
|
+
if (!criteria) {
|
|
162
|
+
return plugins;
|
|
163
|
+
}
|
|
164
|
+
// Filter by name pattern
|
|
165
|
+
if (criteria.name) {
|
|
166
|
+
const pattern = new RegExp(criteria.name.replace('*', '.*'), 'i');
|
|
167
|
+
plugins = plugins.filter(p => pattern.test(p.name));
|
|
168
|
+
}
|
|
169
|
+
// Filter by base algorithm
|
|
170
|
+
if (criteria.baseAlgorithm) {
|
|
171
|
+
plugins = plugins.filter(p => p.baseAlgorithm === criteria.baseAlgorithm);
|
|
172
|
+
}
|
|
173
|
+
// Filter by tags
|
|
174
|
+
if (criteria.tags && criteria.tags.length > 0) {
|
|
175
|
+
plugins = plugins.filter(p => p.tags && criteria.tags.some(tag => p.tags.includes(tag)));
|
|
176
|
+
}
|
|
177
|
+
// Filter by version range
|
|
178
|
+
if (criteria.minVersion) {
|
|
179
|
+
plugins = plugins.filter(p => this.compareVersions(p.version, criteria.minVersion) >= 0);
|
|
180
|
+
}
|
|
181
|
+
if (criteria.maxVersion) {
|
|
182
|
+
plugins = plugins.filter(p => this.compareVersions(p.version, criteria.maxVersion) <= 0);
|
|
183
|
+
}
|
|
184
|
+
return plugins;
|
|
185
|
+
}
|
|
186
|
+
// ============ Plugin Loading ============
|
|
187
|
+
/**
|
|
188
|
+
* Load a plugin instance
|
|
189
|
+
*
|
|
190
|
+
* @param name - Plugin name or alias
|
|
191
|
+
* @param options - Load options
|
|
192
|
+
* @returns Plugin instance
|
|
193
|
+
* @throws {PluginError} If loading fails
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const plugin = await registry.load('q-learning', {
|
|
198
|
+
* config: { training: { batchSize: 64 } },
|
|
199
|
+
* initialize: true
|
|
200
|
+
* });
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
async load(name, options = {}) {
|
|
204
|
+
const { config, validate = true, initialize = true } = options;
|
|
205
|
+
// Resolve alias
|
|
206
|
+
const actualName = this.aliases.get(name) || name;
|
|
207
|
+
// Get metadata
|
|
208
|
+
const metadata = this.plugins.get(actualName);
|
|
209
|
+
if (!metadata) {
|
|
210
|
+
throw new PluginError(`Plugin not found: ${name}`, 'PLUGIN_NOT_FOUND', { name, availablePlugins: Array.from(this.plugins.keys()) });
|
|
211
|
+
}
|
|
212
|
+
// Check if already loaded
|
|
213
|
+
if (this.activePlugins.has(actualName)) {
|
|
214
|
+
return this.activePlugins.get(actualName);
|
|
215
|
+
}
|
|
216
|
+
// Merge configurations
|
|
217
|
+
const finalConfig = this.mergeConfig(metadata.defaultConfig, config);
|
|
218
|
+
// Validate configuration
|
|
219
|
+
if (validate && finalConfig) {
|
|
220
|
+
const validation = (0, validator_1.validatePluginConfig)(finalConfig);
|
|
221
|
+
if (!validation.valid) {
|
|
222
|
+
throw new PluginError('Invalid plugin configuration', 'INVALID_CONFIG', { errors: validation.errors, config: finalConfig });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
// Create plugin instance
|
|
227
|
+
const plugin = await metadata.factory(finalConfig);
|
|
228
|
+
// Initialize if requested
|
|
229
|
+
if (initialize && finalConfig) {
|
|
230
|
+
await plugin.initialize(finalConfig);
|
|
231
|
+
}
|
|
232
|
+
// Cache active instance
|
|
233
|
+
this.activePlugins.set(actualName, plugin);
|
|
234
|
+
return plugin;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
throw new PluginError(`Failed to load plugin ${actualName}`, 'LOAD_FAILED', { name: actualName, error });
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Unload a plugin instance
|
|
242
|
+
*
|
|
243
|
+
* @param name - Plugin name or alias
|
|
244
|
+
* @returns Whether plugin was unloaded
|
|
245
|
+
*/
|
|
246
|
+
async unload(name) {
|
|
247
|
+
const actualName = this.aliases.get(name) || name;
|
|
248
|
+
const plugin = this.activePlugins.get(actualName);
|
|
249
|
+
if (!plugin) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
try {
|
|
253
|
+
await plugin.destroy();
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
console.error(`Error destroying plugin ${actualName}:`, error);
|
|
257
|
+
}
|
|
258
|
+
return this.activePlugins.delete(actualName);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Get active plugin instance
|
|
262
|
+
*
|
|
263
|
+
* @param name - Plugin name or alias
|
|
264
|
+
* @returns Active plugin instance or undefined
|
|
265
|
+
*/
|
|
266
|
+
getActive(name) {
|
|
267
|
+
const actualName = this.aliases.get(name) || name;
|
|
268
|
+
return this.activePlugins.get(actualName);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* List all active plugin instances
|
|
272
|
+
*
|
|
273
|
+
* @returns Array of active plugins
|
|
274
|
+
*/
|
|
275
|
+
listActive() {
|
|
276
|
+
return Array.from(this.activePlugins.entries()).map(([name, plugin]) => ({
|
|
277
|
+
name,
|
|
278
|
+
plugin
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Unload all active plugins
|
|
283
|
+
*/
|
|
284
|
+
async unloadAll() {
|
|
285
|
+
const promises = Array.from(this.activePlugins.keys()).map(name => this.unload(name));
|
|
286
|
+
await Promise.all(promises);
|
|
287
|
+
}
|
|
288
|
+
// ============ Utility Methods ============
|
|
289
|
+
/**
|
|
290
|
+
* Merge plugin configurations
|
|
291
|
+
*
|
|
292
|
+
* @param base - Base configuration
|
|
293
|
+
* @param override - Override configuration
|
|
294
|
+
* @returns Merged configuration
|
|
295
|
+
*/
|
|
296
|
+
mergeConfig(base, override) {
|
|
297
|
+
if (!base && !override)
|
|
298
|
+
return undefined;
|
|
299
|
+
if (!base)
|
|
300
|
+
return override;
|
|
301
|
+
if (!override)
|
|
302
|
+
return base;
|
|
303
|
+
return {
|
|
304
|
+
...base,
|
|
305
|
+
...override,
|
|
306
|
+
algorithm: base.algorithm || override.algorithm ? { ...base.algorithm, ...override.algorithm } : undefined,
|
|
307
|
+
state: base.state || override.state ? { ...base.state, ...override.state } : undefined,
|
|
308
|
+
action: base.action || override.action ? { ...base.action, ...override.action } : undefined,
|
|
309
|
+
reward: base.reward || override.reward ? { ...base.reward, ...override.reward } : undefined,
|
|
310
|
+
storage: base.storage || override.storage ? { ...base.storage, ...override.storage } : undefined,
|
|
311
|
+
training: base.training || override.training ? { ...base.training, ...override.training } : undefined,
|
|
312
|
+
monitoring: base.monitoring || override.monitoring ? { ...base.monitoring, ...override.monitoring } : undefined,
|
|
313
|
+
extensions: override.extensions || base.extensions
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Compare semantic versions
|
|
318
|
+
*
|
|
319
|
+
* @param v1 - First version
|
|
320
|
+
* @param v2 - Second version
|
|
321
|
+
* @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2
|
|
322
|
+
*/
|
|
323
|
+
compareVersions(v1, v2) {
|
|
324
|
+
const parts1 = v1.split('.').map(Number);
|
|
325
|
+
const parts2 = v2.split('.').map(Number);
|
|
326
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
327
|
+
const p1 = parts1[i] || 0;
|
|
328
|
+
const p2 = parts2[i] || 0;
|
|
329
|
+
if (p1 < p2)
|
|
330
|
+
return -1;
|
|
331
|
+
if (p1 > p2)
|
|
332
|
+
return 1;
|
|
333
|
+
}
|
|
334
|
+
return 0;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Clear all registrations (for testing)
|
|
338
|
+
*/
|
|
339
|
+
clear() {
|
|
340
|
+
this.plugins.clear();
|
|
341
|
+
this.activePlugins.clear();
|
|
342
|
+
this.aliases.clear();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
exports.PluginRegistry = PluginRegistry;
|
|
346
|
+
PluginRegistry.instance = null;
|
|
347
|
+
/**
|
|
348
|
+
* Get the global plugin registry instance
|
|
349
|
+
*/
|
|
350
|
+
function getRegistry() {
|
|
351
|
+
return PluginRegistry.getInstance();
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Convenience function to register a plugin
|
|
355
|
+
*/
|
|
356
|
+
function registerPlugin(metadata) {
|
|
357
|
+
getRegistry().register(metadata);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Convenience function to load a plugin
|
|
361
|
+
*/
|
|
362
|
+
async function loadPlugin(name, options) {
|
|
363
|
+
return getRegistry().load(name, options);
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
|