alibaba/nacos · error · IllegalArgumentException

Agent draft must contain either callInterfaces or basedOnVer

Error message

Agent draft must contain either callInterfaces or basedOnVersion

What it means

Error "Agent draft must contain either callInterfaces or basedOnVersion" thrown in alibaba/nacos.

Source

Thrown at ai/src/main/java/com/alibaba/nacos/ai/service/agent/AgentPersistenceService.java:796

            && !namespaceId.equals(draft.getNamespaceId())) {
            throw new IllegalArgumentException("Agent draft namespaceId does not match request");
        }
        if (draft.getAgentName() != null && !agentName.equals(draft.getAgentName())) {
            throw new IllegalArgumentException("Agent draft agentName does not match request");
        }
        if (draft.getStatus() != null
            && !AiConstants.Agent.VERSION_STATUS_DRAFT.equals(draft.getStatus())) {
            throw new IllegalArgumentException("Agent draft status must be draft");
        }
        if (draft.getContentDigest() != null || draft.getCreateTime() != null
            || draft.getUpdateTime() != null) {
            throw new IllegalArgumentException(
                "Agent draft must not contain read-only projection fields");
        }
        boolean directContent = draft.getCallInterfaces() != null;
        boolean copiedContent = StringUtils.isNotBlank(basedOnVersion);
        if (directContent == copiedContent) {
            throw new IllegalArgumentException(
                "Agent draft must contain either callInterfaces or basedOnVersion");
        }
        if (copiedContent) {
            AgentValidationUtils.validateVersion(basedOnVersion);
            if (draft.getVersion().equals(basedOnVersion)) {
                throw new IllegalArgumentException(
                    "Agent draft Version must differ from basedOnVersion");
            }
        }
    }
    
    private AgentVersionDetail normalizeSubsequentDraft(String namespaceId, String agentName,
        AgentVersionDetail source, List<AgentCallInterface> callInterfaces,
        AgentVersionStorageDescriptor descriptor) {
        AgentVersionDetail result = new AgentVersionDetail();
        result.setNamespaceId(namespaceId);
        result.setAgentName(agentName);
        result.setVersion(source.getVersion());

View on GitHub (pinned to 9b989acdf1)

Solutions

  1. Review the input and runtime state for agent draft content, correct the reported problem, and retry.

When it happens

Trigger: Thrown at ai/src/main/java/com/alibaba/nacos/ai/service/agent/AgentPersistenceService.java:796 when the library encounters an invalid state.

Common situations: Creating a draft with neither callInterfaces nor basedOnVersion set.


AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14). Data as JSON: /api/errors/15a0408da83ac4c6. Report an issue: GitHub.