Skip to main content

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

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

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

IPluginManager.getPlugin


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

IPluginManager.getPluginState


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

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

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

IPluginManager.reloadPlugin


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

IPluginManager.shutdownAll


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

Implementation of

IPluginManager.unloadPlugin