chatboxai/chatbox · error · Error
Knowledge base name is required
Error message
Knowledge base name is required
What it means
Thrown by getProviderSettings() when `setting.provider` is falsy (empty string, null, undefined). This is a precondition check: a session must have a provider id before its settings can be resolved. It fires before any registry lookup, so it indicates an uninitialised or corrupted session settings object rather than a missing provider registration.
Source
Thrown at src/main/knowledge-base/ipc-handlers.ts:103
documentParser,
providerMode,
}: {
name: string
embeddingModel: string
rerankModel: string
visionModel?: string
documentParser?: { type: string; mineru?: { apiToken: string } }
providerMode?: 'chatbox-ai' | 'custom'
}
) => {
try {
log.info(
`ipcMain: kb:create, name=${name}, embeddingModel=${embeddingModel}, rerankModel=${rerankModel}, visionModel=${visionModel}, documentParser=${documentParser?.type || 'default'}, providerMode=${providerMode || 'not specified'}`
)
// Validate required fields
if (!name || !name.trim()) {
throw new Error('Knowledge base name is required')
}
if (!embeddingModel || !embeddingModel.trim()) {
throw new Error('Embedding model is required')
}
const db = getDatabase()
const documentParserJson = documentParser ? JSON.stringify(documentParser) : null
const rs = await db.execute({
sql: 'INSERT INTO knowledge_base (name, embedding_model, rerank_model, vision_model, document_parser, provider_mode) VALUES (?, ?, ?, ?, ?, ?)',
args: [
name.trim(),
embeddingModel,
rerankModel || null,
visionModel || null,
documentParserJson,
providerMode || null,
],
})View on GitHub (pinned to 81571269ad)
Solutions
- Ensure every SessionSettings instance is created with a non-empty `provider` — set a sensible default (e.g. the first builtin provider id from getBuiltinProviderIds()).
- Validate the settings file after schema migrations and backfill a default `provider` for legacy sessions.
- Guard UI entry points that call getProviderSettings/getModel so they no-op when no provider is selected.
- If migrating settings, run a repair step that writes `provider` from `globalSettings.defaultModelProvider` when missing.
Example fix
// before
const { providerSetting } = getProviderSettings(session, globals) // throws if session.provider is ''
// after
if (!session.provider) session.provider = globals.defaultModelProvider || getBuiltinProviderIds()[0]
const { providerSetting } = getProviderSettings(session, globals) Defensive patterns
Strategy: validation
Validate before calling
function ensureProvider(session: SessionSettings, globals: Settings): string {
if (!session.provider) session.provider = (globals as any).defaultModelProvider || getBuiltinProviderIds()[0]
return session.provider
} Type guard
function hasProvider(s: { provider?: string }): s is { provider: string } {
return typeof s.provider === 'string' && s.provider.length > 0
} Try / catch
if (!hasProvider(session)) throw new UserFacingError('Select a provider before starting a chat')
const { providerSetting } = getProviderSettings(session, globals) Prevention
- Always create SessionSettings with a non-empty provider (use the global default).
- Run a settings-repair pass on load that backfills missing provider ids.
- Block UI actions that call getModel/getProviderSettings until a provider is chosen.
When it happens
Trigger: A SessionSettings object constructed without setting `provider`; deserialised session whose `provider` field was renamed/removed across a schema migration; UI calls getModel-related code paths before the user has selected a provider; default session template lacks a provider default; programmatic call passes a partial settings object.
Common situations: First-run with no default provider configured; settings file from an older app version missing the `provider` key after an upgrade; a new chat session was created but the model picker was never interacted with; downstream code reads `settings.provider` off a draft/clone that lost the field.
Related errors
- Failed to create knowledge base
- Embedding model is required
- Invalid knowledge base ID
- Invalid rerank model format: ${modelString}
- Custom provider "${providerId}" conflicts with a builtin pro
AI-assisted analysis of chatboxai/chatbox@81571269ad (2026-08-12).
Data as JSON: /api/errors/5147639edc8ced41.
Report an issue: GitHub.