jlcodes99/cockpit-tools · error
PROVIDER_NAME_REQUIRED
PROVIDER_NAME_REQUIRED
Error message
PROVIDER_NAME_REQUIRED
What it means
createCodexModelProvider rejects provider creation when the sanitized name is empty, throwing the stable code PROVIDER_NAME_REQUIRED. sanitizeName trims/normalizes input.name, so blank or whitespace-only names fail this guard.
Source
Thrown at src/services/codexModelProviderService.ts:585
modelContextWindows?: Record<string, number>;
supportsVision?: boolean;
modelCapabilities?: Record<string, { supportsVision?: boolean }>;
visionRoutingModel?: string;
boundInstanceId?: string;
website?: string;
apiKeyUrl?: string;
wireApi?: CodexProviderWireApi;
supportsWebsockets?: boolean;
enableModePreference?: CodexProviderEnableModePreference;
integrationType?: 'sub2api' | 'new_api';
boundOauthAccountId?: string | null;
initialApiKey?: string;
initialApiKeyName?: string;
}): Promise<CodexModelProvider> {
const name = sanitizeName(input.name);
const baseUrl = normalizeBaseUrlForStore(input.baseUrl);
const normalizedBaseUrl = normalizeCodexModelProviderBaseUrl(baseUrl);
if (!name) throw new Error('PROVIDER_NAME_REQUIRED');
if (!normalizedBaseUrl) throw new Error('PROVIDER_BASE_URL_INVALID');
const providers = await ensureProvidersLoaded();
if (providers.some((item) => normalizeCodexModelProviderBaseUrl(item.baseUrl) === normalizedBaseUrl)) {
throw new Error('PROVIDER_BASE_URL_EXISTS');
}
const now = Date.now();
const wireApi = normalizeWireApi(input.wireApi);
const provider: CodexModelProvider = {
id: createProviderId(),
name,
baseUrl,
sourceTag: sanitizeName(input.sourceTag ?? '') || undefined,
integrationType: normalizeIntegrationType(input.integrationType),
modelCatalog:
normalizeModelCatalog(input.modelCatalog) ??
presetModelCatalogForBaseUrl(baseUrl),
modelContextWindows: normalizeModelContextWindows(
input.modelContextWindows,View on GitHub (pinned to 1ed8b77992)
Solutions
- Enter a non-empty provider name in the form before saving
- Check that sanitizeName isn't stripping legitimate characters from the name
- Add required-field validation on the name input in handleSaveProvider before calling create
- Catch PROVIDER_NAME_REQUIRED and highlight the name field with an inline error
Example fix
// before
await createCodexModelProvider({ name: formData.name.trim(), ... });
// after
if (!formData.name.trim()) { setNameError('Provider name is required'); return; }
await createCodexModelProvider({ name: formData.name, ... }); Defensive patterns
Strategy: validation
Validate before calling
const name = input.name.trim();
if (!name) throw new Error('PROVIDER_NAME_REQUIRED');
await createCodexModelProvider({ ...input, name }); Type guard
function hasName(input: { name?: string }): input is { name: string } {
return typeof input.name === 'string' && input.name.trim().length > 0;
} Try / catch
try {
await createCodexModelProvider(input);
} catch (e) {
if (e instanceof Error && e.message === 'PROVIDER_NAME_REQUIRED') {
setNameFieldError('Provider name is required');
} else throw e;
} Prevention
- Mark the name input as required in the form and validate before submit
- Trim input on change to avoid whitespace-only names
- Show inline field errors by mapping PROVIDER_* codes to fields
- Add unit tests for sanitizeName edge cases (empty, spaces, stripped chars)
When it happens
Trigger: handleSaveProvider calls createCodexModelProvider with input.name empty, whitespace-only, or reduced to empty by sanitizeName.
Common situations: Submitting the provider form without filling the name field, name consisting only of spaces, UI state reset clearing the input before save.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- PROVIDER_BASE_URL_INVALID
- codex.localAccess.noEligibleAccountsSelected
- 未找到有效 Token {:?}
- 不支持的 JSON 格式 {:?}
- invalidJsonMessage
AI-assisted analysis of jlcodes99/cockpit-tools@1ed8b77992 (2026-09-05).
Data as JSON: /api/errors/07662be1bfd0a90d.
Report an issue: GitHub.