moeru-ai/airi · warning · Error
Artistry provider is disabled.
Error message
Artistry provider is disabled.
What it means
Thrown by generateHeadless when the resolved artistry provider name equals 'none'. Resolution order is params.provider, then the configured artistryProvider, then DEFAULT_ARTISTRY_PROVIDER; if the effective value is 'none', generation is intentionally bypassed and this error surfaces the deliberate disablement.
Source
Thrown at apps/stage-tamagotchi/src/main/services/airi/widgets/artistry-bridge.ts:150
const fingerprint = JSON.stringify({
p: params.prompt,
m: params.model,
pr: params.provider,
o: params.options,
ih: imageHash,
gh: globalsHash, // Include globals hash (Issue #39)
})
if (pendingHeadlessRequests.has(fingerprint)) {
log.log(`[Headless] Deduplicating identical request: ${params.prompt.slice(0, 30)}...`)
return pendingHeadlessRequests.get(fingerprint)!
}
const executionPromise = (async () => {
const requestedProvider = (params.provider || artistryConfig.get()?.artistryProvider || DEFAULT_ARTISTRY_PROVIDER).trim().toLowerCase()
if (requestedProvider === 'none') {
log.log('[Headless] Provider is \'none\'. Bypassing generation.')
throw new Error('Artistry provider is disabled.')
}
const provider = artistryProviders.get(requestedProvider)
if (!provider) {
log.error(`[Headless] Provider '${requestedProvider}' not found in registry.`)
throw new Error(`Provider '${requestedProvider}' not found.`)
}
// Initialize the provider
if (provider.initialize && activeGlobals) {
log.log(`[Headless] Initializing provider ${requestedProvider} with globals...`)
await provider.initialize(activeGlobals)
}
log.log(`[Headless] Globals keys: ${Object.keys(activeGlobals || {}).join(', ')}`)
if (activeGlobals?.image)
log.log(`[Headless] Source image length: ${activeGlobals.image.length}`)
View on GitHub (pinned to 27111382b4)
Solutions
- Set artistryProvider to a valid provider name (comfyui, replicate, nanobanana) in the artistry config.
- Before calling generateHeadless, check the resolved provider and skip/handle the 'none' case gracefully in the caller.
- If 'none' is a legitimate 'feature off' state, treat this error as a signal to fall back to a placeholder or no-op rather than surfacing it to the user.
Example fix
// before
const result = await generateHeadless({ prompt, provider: resolvedProvider })
// after
if (resolvedProvider === 'none') {
return { imageUrl: undefined, error: 'Artistry is disabled' }
}
const result = await generateHeadless({ prompt, provider: resolvedProvider }) Defensive patterns
Strategy: validation
Validate before calling
const provider = (params.provider || artistryConfig.get()?.artistryProvider || DEFAULT_ARTISTRY_PROVIDER).trim().toLowerCase()
if (provider === 'none') {
return { imageUrl: undefined, error: 'Artistry is disabled' }
}
return await generateHeadless(params) Try / catch
try {
return await generateHeadless(params)
} catch (e) {
if (/provider is disabled/i.test(errorMessageFrom(e) ?? '')) {
return { imageUrl: undefined, error: 'Artistry disabled' }
}
throw e
} Prevention
- Treat provider === 'none' as a feature-off state in the UI and hide/disable generation affordances.
- Resolve the effective provider once and branch before calling generateHeadless.
- Document 'none' as a valid config value that disables generation.
When it happens
Trigger: The artistry config sets artistryProvider to 'none' (disabling image generation), or a caller explicitly passes provider: 'none', and then code still attempts generateHeadless expecting an image.
Common situations: A user turned off the artistry provider in settings but a widget/feature still calls generateHeadless; the config default resolved to 'none' after a config reset; a feature was not updated to handle the disabled-provider case.
Related errors
- Provider '${requestedProvider}' not found.
- Nano Banana API Key not configured
- Image generation timed out after 5 minutes.
- Generation failed
- Nano Banana API Error
AI-assisted analysis of moeru-ai/airi@27111382b4 (2026-08-12).
Data as JSON: /api/errors/f0691e8f09fae953.
Report an issue: GitHub.