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

  1. 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.