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.4.0',
// ...
});

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

Implementation of​

IPluginLoader.validateManifest