ruvnet/ruflo · error

Plugin ${name} requires core version >= ${resolvedPlugin.met

Error message

Plugin ${name} requires core version >= ${resolvedPlugin.metadata.minCoreVersion}, but current version is ${this.config.coreVersion}

What it means

Thrown by EnhancedPluginRegistry.register() during core-version compatibility checking. If plugin.metadata.minCoreVersion is set, the registry builds the constraint '>=' + minCoreVersion and tests it against config.coreVersion (the version the registry was constructed with) using satisfiesVersion. A miss means the plugin requires a newer core than this registry claims to be, and registration aborts before dependencies are parsed.

Source

Thrown at v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts:303

    }

    const name = resolvedPlugin.metadata.name;
    const version = resolvedPlugin.metadata.version;

    // Check for duplicates
    if (this.plugins.has(name)) {
      throw new Error(`Plugin ${name} already registered`);
    }

    // Check max plugins
    if (this.config.maxPlugins && this.plugins.size >= this.config.maxPlugins) {
      throw new Error(`Maximum plugin limit (${this.config.maxPlugins}) reached`);
    }

    // Check core version compatibility
    if (resolvedPlugin.metadata.minCoreVersion) {
      if (!satisfiesVersion(`>=${resolvedPlugin.metadata.minCoreVersion}`, this.config.coreVersion)) {
        throw new Error(
          `Plugin ${name} requires core version >= ${resolvedPlugin.metadata.minCoreVersion}, ` +
          `but current version is ${this.config.coreVersion}`
        );
      }
    }
    if (resolvedPlugin.metadata.maxCoreVersion) {
      if (!satisfiesVersion(`<=${resolvedPlugin.metadata.maxCoreVersion}`, this.config.coreVersion)) {
        throw new Error(
          `Plugin ${name} requires core version <= ${resolvedPlugin.metadata.maxCoreVersion}, ` +
          `but current version is ${this.config.coreVersion}`
        );
      }
    }

    // Parse dependencies
    const dependencies = this.parseDependencies(resolvedPlugin.metadata.dependencies);

    // Add to dependency graph

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Upgrade the host/core so config.coreVersion satisfies the plugin's minCoreVersion
  2. If the plugin actually runs fine on your core, lower or remove its metadata.minCoreVersion and rebuild
  3. Set config.coreVersion to the real core package version (import from package.json) instead of a hardcoded stale string
  4. Pin a compatible older release of the plugin whose minCoreVersion your core satisfies

Example fix

// before
const registry = new EnhancedPluginRegistry({ coreVersion: '3.0.0' });
await registry.register(plugin); // plugin.metadata.minCoreVersion = '3.2.0' -> throws

// after
import { version as CORE_VERSION } from '@claude-flow/core/package.json';
const registry = new EnhancedPluginRegistry({ coreVersion: CORE_VERSION }); // '3.4.1'
await registry.register(plugin);
Defensive patterns

Strategy: validation

Validate before calling

const minCore = plugin.metadata.minCoreVersion;
if (minCore && !satisfiesSemver(coreVersion, `>=${minCore}`)) {
  throw new Error(
    `skip ${plugin.metadata.name}: needs core >= ${minCore}, host is ${coreVersion}`
  );
}
await registry.register(plugin);

Prevention

When it happens

Trigger: Registering a plugin declaring minCoreVersion '3.2.0' against a registry constructed with coreVersion '3.0.0' or '2.x'; coreVersion omitted/defaulted to an older value in the registry config; plugin built against newer SDK APIs (hence the min bound) loaded into an older host; version strings that satisfiesVersion fails to compare as expected.

Common situations: Upgrading a third-party plugin package without upgrading the host application; copy-pasting registry config with a stale coreVersion instead of the actual package version; local dev running an older branch while the plugin comes from a newer branch.

Related errors


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/81c875c5f56c8dcf. Report an issue: GitHub.