ruvnet/ruflo · error · PluginError
PLUGIN_ERROR
PLUGIN_ERROR
Error message
Plugin ${plugin.id} depends on ${depId} which is not loaded What it means
PluginManager.loadPlugin() iterated the plugin's declared dependencies and one of them is not present in the loaded-plugins map — it was never registered/loaded, or load order is wrong. Dependency-resolution guard: the plugin cannot start because a prerequisite is missing (an unload/reload cycle can also trigger it).
Source
Thrown at v3/src/infrastructure/plugins/PluginManager.ts:80
if (this.plugins.has(plugin.id)) {
await this.unloadPlugin(plugin.id);
}
// Validate configuration if schema provided
if (plugin.configSchema && config) {
this.validateConfig(plugin.configSchema, config);
}
// Check version compatibility
if (plugin.minCoreVersion || plugin.maxCoreVersion) {
this.checkVersionCompatibility(plugin);
}
// Check dependencies
if (plugin.dependencies) {
for (const depId of plugin.dependencies) {
if (!this.plugins.has(depId)) {
throw new PluginError(
`Plugin ${plugin.id} depends on ${depId} which is not loaded`,
{ pluginId: plugin.id, dependency: depId }
);
}
}
}
// Initialize plugin
await plugin.initialize(config);
// Register plugin
this.plugins.set(plugin.id, plugin);
// Register extension points
const extensionPoints = plugin.getExtensionPoints();
for (const ep of extensionPoints) {
this.registerExtensionPoint(plugin.id, ep, plugin.priority);
}View on GitHub (pinned to fa13ee4ad6)
Solutions
- Load the missing dependency plugin before this plugin, or declare the dependency so the manager orders loading correctly.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/src/infrastructure/plugins/PluginManager.ts:80 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/c2f0297ec94c808f.
Report an issue: GitHub.