@defikitdotnet/x-ai-combat
Version:
XCombatAI - Social Media Engagement Template for the Agent Framework
57 lines • 1.59 kB
JavaScript
import { log, warn, error } from '../utils/logger';
/**
* Plugin Manager
*
* Registers and manages plugins for the application
*/
export class PluginManager {
constructor() {
this.plugins = new Map();
}
/**
* Register a plugin
*/
registerPlugin(plugin) {
if (this.plugins.has(plugin.name)) {
warn(`Plugin ${plugin.name} is already registered. Skipping.`);
return;
}
this.plugins.set(plugin.name, plugin);
log(`Plugin ${plugin.name} v${plugin.version} registered`);
}
/**
* Get a plugin by name
*/
getPlugin(name) {
return this.plugins.get(name) || null;
}
/**
* Initialize all registered plugins
*/
async initializeAll() {
log("Initializing all plugins...");
for (const plugin of this.plugins.values()) {
try {
const result = plugin.initialize();
// If initialize returns a promise, await it
if (result instanceof Promise) {
await result;
}
log(`Plugin ${plugin.name} initialized`);
}
catch (err) {
error(`Error initializing plugin ${plugin.name}:`, err);
}
}
log("All plugins initialized");
}
/**
* Get all registered plugins
*/
getAllPlugins() {
return Array.from(this.plugins.values());
}
}
// Create singleton instance
export const pluginManager = new PluginManager();
//# sourceMappingURL=plugin-manager.js.map