conductor-oss/conductor · error · IllegalArgumentException

Unsupported agent framework: '${framework}'. Supported frame

Error message

Unsupported agent framework: '${framework}'. Supported frameworks: ${normalizers.keySet()}

What it means

Thrown by NormalizerRegistry.normalize() when the 'framework' parameter does not match any registered AgentConfigNormalizer's frameworkId(). The registry is populated by Spring from all normalizer beans. Supported frameworks are: openai, google_adk, langchain, langgraph, vercel_ai, claude_agent_sdk, skill.

Source

Thrown at agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/normalizer/NormalizerRegistry.java:51

    public NormalizerRegistry(List<AgentConfigNormalizer> allNormalizers) {
        for (AgentConfigNormalizer n : allNormalizers) {
            normalizers.put(n.frameworkId(), n);
        }
    }

    /**
     * Normalize a framework-specific raw config into the canonical AgentConfig.
     *
     * @param framework the framework identifier (e.g. "openai", "google_adk")
     * @param rawConfig the raw agent config as deserialized JSON
     * @return the normalized AgentConfig
     * @throws IllegalArgumentException if the framework is not supported
     */
    public AgentConfig normalize(String framework, Map<String, Object> rawConfig) {
        AgentConfigNormalizer normalizer = normalizers.get(framework);
        if (normalizer == null) {
            throw new IllegalArgumentException(
                    "Unsupported agent framework: '"
                            + framework
                            + "'. Supported frameworks: "
                            + normalizers.keySet());
        }
        return normalizer.normalize(rawConfig);
    }

    /** Check whether a given framework is supported. */
    public boolean supports(String framework) {
        return normalizers.containsKey(framework);
    }
}

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Use one of the exact framework IDs: 'openai', 'google_adk', 'langchain', 'langgraph', 'vercel_ai', 'claude_agent_sdk', or 'skill'.
  2. Check the error message — it prints the full set of supported framework IDs (normalizers.keySet()).
  3. If you need a custom framework, implement AgentConfigNormalizer and register it as a Spring @Component.

Example fix

// before
registry.normalize("anthropic", rawConfig);
// after
registry.normalize("claude_agent_sdk", rawConfig);
Defensive patterns

Strategy: type-guard

Validate before calling

// Use the registry's own supports() method before calling normalize()
if (!registry.supports(framework)) {
    throw new IllegalArgumentException(
        "Unsupported framework '" + framework + "'. Supported: "
        + "openai, google_adk, langchain, langgraph, vercel_ai, claude_agent_sdk, skill");
}
AgentConfig normalized = registry.normalize(framework, rawConfig);

Type guard

static boolean isSupportedFramework(NormalizerRegistry registry, String framework) {
    return framework != null && registry.supports(framework);
}

static final Set<String> KNOWN_FRAMEWORKS = Set.of(
    "openai", "google_adk", "langchain", "langgraph",
    "vercel_ai", "claude_agent_sdk", "skill");

Try / catch

try {
    AgentConfig config = registry.normalize(framework, rawConfig);
} catch (IllegalArgumentException e) {
    if (e.getMessage().contains("Unsupported agent framework")) {
        // pick the correct framework ID from the error's supported list
    }
    throw e;
}

Prevention

When it happens

Trigger: Calling NormalizerRegistry.normalize(framework, rawConfig) with a framework string that is null, misspelled, or not one of the seven registered normalizer IDs. For example framework='open_ai' (with underscore) instead of 'openai', or framework='anthropic' instead of 'claude_agent_sdk'.

Common situations: Using the wrong framework identifier string (underscores vs camelCase, wrong casing), referencing a framework by its vendor name instead of its registered ID, or trying to use a framework whose normalizer is not on the classpath (e.g., a custom normalizer bean wasn't registered with Spring).

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/db928454871e4238. Report an issue: GitHub.