Class: PluginManager
Defined in: src/plugins/core/plugin-manager.ts:87
Plugin manager implementation.
Remarks
Manages plugin lifecycle:
- Loading from manifests or directly
- Dependency resolution and ordering
- Initialization with context injection
- Shutdown with proper cleanup
- Reload support
Example
const manager = container.resolve(PluginManager);
// Load plugins from directory
await manager.loadPluginsFromDirectory('/opt/chive/plugins');
// Load a specific plugin
await manager.loadPlugin(manifest);
// Get loaded plugins
const plugins = manager.getAllPlugins();
// Shutdown all
await manager.shutdownAll();
Implements
Constructors
new PluginManager()
new PluginManager(
logger,loader,contextFactory,eventBus,sandbox,resourceGovernor):PluginManager
Defined in: src/plugins/core/plugin-manager.ts:138
Creates a new PluginManager.
Parameters
logger
Logger instance
loader
Plugin loader
contextFactory
Context factory
eventBus
Event bus
sandbox
Sandbox manager
resourceGovernor
Resource governor
Returns
Methods
getAllPlugins()
getAllPlugins(): readonly
IChivePlugin[]
Defined in: src/plugins/core/plugin-manager.ts:358
Gets all loaded plugins.
Returns
readonly IChivePlugin[]
Array of all loaded plugin instances
Implementation of
getPlugin()
getPlugin(
pluginId):undefined|IChivePlugin
Defined in: src/plugins/core/plugin-manager.ts:347
Gets a loaded plugin by ID.
Parameters
pluginId
string
ID of the plugin to get
Returns
undefined | IChivePlugin
Plugin instance or undefined if not loaded
Implementation of
getPluginCount()
getPluginCount():
number
Defined in: src/plugins/core/plugin-manager.ts:495
Gets the number of loaded plugins.
Returns
number
Number of loaded plugins
getPluginInfo()
getPluginInfo(): readonly
object[]
Defined in: src/plugins/core/plugin-manager.ts:506
Gets plugin info for all loaded plugins.
Returns
readonly object[]
Array of plugin info
getPluginState()
getPluginState(
pluginId):undefined|PluginState
Defined in: src/plugins/core/plugin-manager.ts:370
Gets the current state of a plugin.
Parameters
pluginId
string
ID of the plugin
Returns
undefined | PluginState
Plugin state or undefined if not loaded
Implementation of
loadBuiltinPlugin()
loadBuiltinPlugin(
plugin,config):Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:245
Loads a builtin plugin directly (without manifest file).
Parameters
plugin
Plugin instance
config
Record<string, unknown> = {}
Plugin configuration
Returns
Promise<void>
Remarks
Used for loading builtin plugins that are bundled with Chive.
Example
const githubPlugin = new GitHubIntegrationPlugin();
await manager.loadBuiltinPlugin(githubPlugin, { apiToken: 'xxx' });
loadPlugin()
loadPlugin(
manifest):Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:168
Loads and initializes a plugin from its manifest.
Parameters
manifest
Plugin manifest
Returns
Promise<void>
Throws
If loading or initialization fails
Example
await manager.loadPlugin(manifest);
console.log('Plugin loaded:', manifest.id);
Implementation of
loadPluginsFromDirectory()
loadPluginsFromDirectory(
path):Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:405
Loads all plugins from a directory.
Parameters
path
string
Path to plugin directory
Returns
Promise<void>
Implementation of
IPluginManager.loadPluginsFromDirectory
reloadPlugin()
reloadPlugin(
pluginId):Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:382
Reloads a plugin (unload then load).
Parameters
pluginId
string
ID of the plugin to reload
Returns
Promise<void>
Throws
If reload fails
Implementation of
setPluginConfig()
setPluginConfig(
pluginId,config):void
Defined in: src/plugins/core/plugin-manager.ts:484
Sets configuration for a plugin.
Parameters
pluginId
string
Plugin ID
config
Record<string, unknown>
Configuration to set
Returns
void
Remarks
Set configuration before loading the plugin.
shutdownAll()
shutdownAll():
Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:446
Shuts down all loaded plugins.
Returns
Promise<void>
Implementation of
unloadPlugin()
unloadPlugin(
pluginId):Promise<void>
Defined in: src/plugins/core/plugin-manager.ts:312
Unloads a plugin, calling its shutdown method.
Parameters
pluginId
string
ID of the plugin to unload
Returns
Promise<void>
Throws
If plugin not found or shutdown fails