CherryHQ/cherry-studio · critical · Error
Cherry Assistant package definition is unavailable
Error message
Cherry Assistant package definition is unavailable
What it means
Thrown by loadBuiltinAssistantDefaults when loadBuiltinAgentDefinition('assistant', language) returns undefined. That helper returns undefined in three cases: the builtin template directory cannot be resolved, the assistant's agent.json does not exist at feature.agents.builtin/<template>/agent.json, or reading/parsing agent.json threw (invalid JSON or a malformed skills array). Because the Cherry Assistant is a required built-in, its definition being unavailable is treated as a fatal startup/packaging defect.
Source
Thrown at src/main/ai/agents/builtin/builtinAgentDefinition.ts:91
name: resolveLocalizedField(agentConfig.name, language),
instructions: resolveLocalizedField(agentConfig.instructions, language),
configuration: agentConfig.configuration,
skills: agentConfig.skills
}
} catch (error) {
logger.error('Failed to load builtin agent definition', {
builtinRole,
agentJsonPath,
error: error instanceof Error ? error.message : String(error)
})
return undefined
}
}
export function loadBuiltinAssistantDefaults(language?: string): BuiltinAssistantDefaults {
const definition = loadBuiltinAgentDefinition('assistant', language)
if (!definition) {
throw new Error('Cherry Assistant package definition is unavailable')
}
const { data: configuration, invalidKeys } = sanitizeAgentConfiguration(definition.configuration)
if (!configuration || invalidKeys.length > 0) {
throw new Error(`Cherry Assistant package configuration is invalid: ${invalidKeys.join(', ') || '<root>'}`)
}
return {
name: definition.name?.trim() || 'Cherry Assistant',
configuration: { ...configuration, builtin_role: 'assistant' }
}
}
View on GitHub (pinned to 726446b54c)
Solutions
- Confirm the assistant template dir exists and contains agent.json: check application.getPath('feature.agents.builtin') and the 'assistant' template name.
- Rebuild/reinstall the app so packaging includes the builtin agent templates.
- Validate agent.json parses as JSON (e.g. `node -e "JSON.parse(require('fs').readFileSync(path,'utf8'))"`).
- Check the logs for the preceding 'Builtin agent definition not found' / 'Failed to load builtin agent definition' line, which names the exact path and parse error.
Example fix
// before: agent.json missing from packaged resources feature.agents.builtin/assistant/ (no agent.json) // after: ship the template feature.agents.builtin/assistant/agent.json // valid JSON with name/instructions/configuration
Defensive patterns
Strategy: try-catch
Validate before calling
import fs from 'node:fs'
import path from 'node:path'
function assistantDefinitionAvailable(): boolean {
const dir = getBuiltinAgentTemplateDirectory('assistant')
if (!dir) return false
const p = path.join(dir, 'agent.json')
if (!fs.existsSync(p)) return false
try { JSON.parse(fs.readFileSync(p, 'utf-8')); return true } catch { return false }
}
if (!assistantDefinitionAvailable()) {
// surface 'builtin assistant resources missing — reinstall' to the user
} Type guard
function isBuiltinDefinition(d: unknown): d is { configuration: Record<string, unknown> } {
return typeof d === 'object' && d !== null && 'configuration' in d
} Try / catch
try {
const defaults = loadBuiltinAssistantDefaults(language)
} catch (e) {
if (e instanceof Error && /package definition is unavailable/.test(e.message)) {
// fatal startup defect: rebuild/reinstall so builtin templates ship
logger.error('Builtin assistant resources missing', { error: e })
} else throw e
} Prevention
- Ensure packaging/ASAR includes the builtin agent templates.
- Validate agent.json presence and JSON validity in CI.
- Keep feature.agents.builtin path resolution correct across platforms.
When it happens
Trigger: loadBuiltinAssistantDefaults() is called at startup/provisioning time and the assistant agent.json is missing, unreadable, or contains invalid JSON under application.getPath('feature.agents.builtin').
Common situations: Development environment without built assets present; broken packaging/ASAR that omitted the builtin agent template; a custom build path where feature.agents.builtin points at the wrong place; the agent.json file got deleted or truncated on disk; a filesystem/permission error reading the file.
Related errors
- Cherry Assistant package configuration is invalid: ${invalid
- Heartbeat workspace must be user-owned: ${workspace.workspac
- Telegram bot token is required
- Private key must be a non-empty string
- Provider extension "${providerId}" not registered
AI-assisted analysis of CherryHQ/cherry-studio@726446b54c (2026-08-12).
Data as JSON: /api/errors/6572fb39e3bf105b.
Report an issue: GitHub.