alibaba/nacos · warning · Error

providerName is required when providerUrl is set

Error message

providerName is required when providerUrl is set

What it means

Thrown by serializeProvider() in agent-console-model when the provider URL is filled in but the provider name is left blank. A provider is optional, but if any part is supplied the name becomes mandatory because the server requires a non-empty provider name to persist the entry.

Source

Thrown at console-ui/src/pages/AI/agent-console-model.js:338

    return JSON.stringify([
      buildStructuredCallInterface(agentName, version, editorFromValues(values)),
    ]);
  }
  const parsed = parseJson(required(values.callInterfaces, 'callInterfaces'), 'callInterfaces');
  if (!Array.isArray(parsed) || parsed.length === 0) {
    throw new Error('callInterfaces must be a non-empty JSON array');
  }
  return JSON.stringify(parsed);
}

function serializeProvider(values) {
  const name = String(values.providerName || '').trim();
  const url = String(values.providerUrl || '').trim();
  if (!name && !url) {
    return undefined;
  }
  if (!name) {
    throw new Error('providerName is required when providerUrl is set');
  }
  return JSON.stringify(url ? { name, url } : { name });
}

function serializeTags(value) {
  const tags = String(value || '')
    .split(',')
    .map(item => item.trim())
    .filter(Boolean);
  return tags.length > 0 ? JSON.stringify(tags) : undefined;
}

export function buildDraftCreateData(namespaceId, values, initial, contentMode, protocolEditors) {
  const result = {
    namespaceId,
    agentName: required(values.agentName, 'agentName'),
    version: required(values.version, 'version'),
    author: String(values.author || '').trim() || undefined,

View on GitHub (pinned to 9b989acdf1)

Solutions

  1. Fill in providerName whenever providerUrl is set.
  2. Clear providerUrl if you only have a name and no URL (name alone is valid).
  3. Leave both blank to omit the provider entirely.

Example fix

// before
{ providerName: '', providerUrl: 'https://acme.io' }

// after
{ providerName: 'Acme', providerUrl: 'https://acme.io' }
Defensive patterns

Strategy: validation

Validate before calling

function providerIsValid(values) {
  const name = String(values.providerName || '').trim();
  const url = String(values.providerUrl || '').trim();
  return !url || !!name;
}

Try / catch

try {
  serializeProvider(values);
} catch (e) {
  Message.error(e.message); // 'providerName is required when providerUrl is set'
  return;
}

Prevention

When it happens

Trigger: Entering a value in the providerUrl field while leaving providerName empty on the initial agent draft form.

Common situations: User knows the provider's website but not its display name, or pastes a URL expecting the name to be auto-derived.

Related errors


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