Skip to main content

Class: PluginLoader

Defined in: src/plugins/core/plugin-loader.ts:153

Plugin loader implementation.

Remarks

Scans directories for plugin manifests, validates them with AJV, and loads plugin code from entry points.

Example

const loader = container.resolve(PluginLoader);

// Scan directory for plugins
const manifests = await loader.scanDirectory('/path/to/plugins');

// Validate a manifest
const result = loader.validateManifest(rawManifest);
if (result.ok) {
console.log('Valid manifest:', result.value.id);
}

// Load plugin code
const plugin = await loader.loadPluginCode(manifest);

Implements

Constructors

new PluginLoader()

new PluginLoader(logger): PluginLoader

Defined in: src/plugins/core/plugin-loader.ts:174

Creates a new PluginLoader.

Parameters

logger

ILogger

Logger instance

Returns

PluginLoader

Methods

loadPluginCode()

loadPluginCode(manifest): Promise<IChivePlugin>

Defined in: src/plugins/core/plugin-loader.ts:401

Loads plugin code from manifest entry point.

Parameters

manifest

IPluginManifest

Plugin manifest

Returns

Promise<IChivePlugin>

Plugin instance

Throws

If code loading fails

Remarks

For builtin plugins, use direct imports instead of this method. This method is intended for third-party plugins loaded from filesystem.

Example

const plugin = await loader.loadPluginCode(manifest);
console.log('Loaded:', plugin.id);

Implementation of

IPluginLoader.loadPluginCode


scanDirectory()

scanDirectory(path): Promise<readonly IPluginManifest[]>

Defined in: src/plugins/core/plugin-loader.ts:254

Scans a directory for plugin manifests.

Parameters

path

string

Directory path to scan

Returns

Promise<readonly IPluginManifest[]>

Array of valid plugin manifests found

Remarks

Scans each subdirectory for a plugin.json file, validates it, and returns all valid manifests.

Example

const manifests = await loader.scanDirectory('/opt/chive/plugins');
console.log(`Found ${manifests.length} plugins`);

Implementation of

IPluginLoader.scanDirectory


validateManifest()

validateManifest(manifest): Promise<ManifestValidationResult>

Defined in: src/plugins/core/plugin-loader.ts:355

Validates a plugin manifest against the schema.

Parameters

manifest

unknown

Raw manifest data to validate

Returns

Promise<ManifestValidationResult>

Result with validated manifest or validation error

Example

const result = await loader.validateManifest({
id: 'pub.chive.plugin.github',
name: 'GitHub Integration',
version: '0.1.0',
// ...
});

if (result.ok) {
console.log('Valid:', result.value.id);
} else {
console.error('Errors:', result.error.validationErrors);
}

Implementation of

IPluginLoader.validateManifest