Skip to main content

Class: PluginManager

Defined in: src/plugins/core/plugin-manager.ts:105

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:156

Creates a new PluginManager.

Parameters​

logger​

ILogger

Logger instance

loader​

PluginLoader

Plugin loader

contextFactory​

PluginContextFactory

Context factory

eventBus​

PluginEventBus

Event bus

sandbox​

IsolatedVmSandbox

Sandbox manager

resourceGovernor​

ResourceGovernor

Resource governor

Returns​

PluginManager

Methods​

getAllPlugins()​

getAllPlugins(): readonly IChivePlugin[]

Defined in: src/plugins/core/plugin-manager.ts:404

Gets all loaded plugins.

Returns​

readonly IChivePlugin[]

Array of all loaded plugin instances

Implementation of​

IPluginManager.getAllPlugins


getPlugin()​

getPlugin(pluginId): undefined | IChivePlugin

Defined in: src/plugins/core/plugin-manager.ts:393

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​

IPluginManager.getPlugin


getPluginCount()​

getPluginCount(): number

Defined in: src/plugins/core/plugin-manager.ts:541

Gets the number of loaded plugins.

Returns​

number

Number of loaded plugins


getPluginInfo()​

getPluginInfo(): readonly object[]

Defined in: src/plugins/core/plugin-manager.ts:552

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:416

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​

IPluginManager.getPluginState


loadBuiltinPlugin()​

loadBuiltinPlugin(plugin, config): Promise<void>

Defined in: src/plugins/core/plugin-manager.ts:291

Loads a builtin plugin directly (without manifest file).

Parameters​

plugin​

IChivePlugin

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:186

Loads and initializes a plugin from its manifest.

Parameters​

manifest​

IPluginManifest

Plugin manifest

Returns​

Promise<void>

Throws​

If loading or initialization fails

Example​

await manager.loadPlugin(manifest);
console.log('Plugin loaded:', manifest.id);

Implementation of​

IPluginManager.loadPlugin


loadPluginsFromDirectory()​

loadPluginsFromDirectory(path): Promise<void>

Defined in: src/plugins/core/plugin-manager.ts:451

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:428

Reloads a plugin (unload then load).

Parameters​

pluginId​

string

ID of the plugin to reload

Returns​

Promise<void>

Throws​

If reload fails

Implementation of​

IPluginManager.reloadPlugin


setPluginConfig()​

setPluginConfig(pluginId, config): void

Defined in: src/plugins/core/plugin-manager.ts:530

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:492

Shuts down all loaded plugins.

Returns​

Promise<void>

Implementation of​

IPluginManager.shutdownAll


unloadPlugin()​

unloadPlugin(pluginId): Promise<void>

Defined in: src/plugins/core/plugin-manager.ts:358

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

Implementation of​

IPluginManager.unloadPlugin