@defikitdotnet/x-ai-combat
Version:
XCombatAI - Social Media Engagement Template for the Agent Framework
61 lines • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginManager = exports.PluginManager = void 0;
const logger_1 = require("../utils/logger");
/**
* Plugin Manager
*
* Registers and manages plugins for the application
*/
class PluginManager {
constructor() {
this.plugins = new Map();
}
/**
* Register a plugin
*/
registerPlugin(plugin) {
if (this.plugins.has(plugin.name)) {
(0, logger_1.warn)(`Plugin ${plugin.name} is already registered. Skipping.`);
return;
}
this.plugins.set(plugin.name, plugin);
(0, logger_1.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() {
(0, logger_1.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;
}
(0, logger_1.log)(`Plugin ${plugin.name} initialized`);
}
catch (err) {
(0, logger_1.error)(`Error initializing plugin ${plugin.name}:`, err);
}
}
(0, logger_1.log)("All plugins initialized");
}
/**
* Get all registered plugins
*/
getAllPlugins() {
return Array.from(this.plugins.values());
}
}
exports.PluginManager = PluginManager;
// Create singleton instance
exports.pluginManager = new PluginManager();
//# sourceMappingURL=plugin-manager.js.map