{"record":{"id":"3708f5edd7ec238d","repo":"chatboxai/chatbox","slug":"invalid-rerank-model-format-modelstring","errorCode":null,"errorMessage":"Invalid rerank model format: ${modelString}","messagePattern":"Invalid rerank model format: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/main/session-attachment-rag/model-providers.ts","lineNumber":76,"sourceCode":"\nexport function getDefaultSessionAttachmentRerankModelString(): string | undefined {\n  const rerankModel = getDefaultRerankModelString(getSettings())\n  log.debug(`[MODEL] Default session attachment rerank model: ${rerankModel ?? 'none'}`)\n  return rerankModel\n}\n\nexport async function getSessionAttachmentRerankProvider(modelString?: string | null) {\n  if (!modelString) {\n    return null\n  }\n\n  return cache(\n    `session-attachment-rag:rerank:${modelString}`,\n    async () => {\n      try {\n        const parsed = parseKnowledgeBaseModelString(modelString)\n        if (!parsed) {\n          throw new Error(`Invalid rerank model format: ${modelString}`)\n        }\n\n        const { providerId, modelId } = parsed\n        const settings = getSettings()\n        const { providerSetting, formattedApiHost } = getProviderSettings(\n          {\n            ...settings,\n            provider: providerId,\n            modelId,\n          },\n          settings\n        )\n\n        let apiHost = formattedApiHost\n        let token = providerSetting.apiKey\n        if (providerId === 'chatbox-ai') {\n          apiHost = getChatboxAPIOrigin()\n          token = store.get('settings.licenseKey')","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/chatboxai/chatbox/blob/81571269addb6bafb589a920b2883f1e1e084fd1/src/main/session-attachment-rag/model-providers.ts#L58-L94","documentation":"Thrown by getSessionAttachmentRerankProvider when parseKnowledgeBaseModelString(modelString) returns null, meaning the rerank model string does not match the expected 'providerId:modelId' shape (or whatever grammar the parser enforces). Only reached when modelString is truthy, since a null/empty input short-circuits to return null (no reranking).","triggerScenarios":"User-configured rerank model string is malformed: missing colon, empty provider or model id, extra segments, or contains characters the parser rejects. The error is wrapped in the cache closure's try/catch, logged, reported to Sentry, and rethrown.","commonSituations":"Manual entry of a rerank model id with a typo; settings imported from an older format; copy-paste included whitespace or quotes; a UI field stored the display name instead of the canonical provider:model string.","solutions":["Re-enter the rerank model in settings as 'providerId:modelId' exactly as documented by parseKnowledgeBaseModelString.","Trim and validate the string before saving it in settings.","Leave the rerank model unset (null) to disable reranking rather than supplying a broken value.","Unit-test the offending string against parseKnowledgeBaseModelString to see which grammar rule it violates."],"exampleFix":"// before\nconst parsed = parseKnowledgeBaseModelString(modelString)\nif (!parsed) throw new Error(`Invalid rerank model format: ${modelString}`)\n\n// settings-save-time validation\nconst parsed = parseKnowledgeBaseModelString(input)\nif (!parsed) { showFieldError('rerank model must be provider:model'); return }","handlingStrategy":"validation","validationCode":"const parsed = parseKnowledgeBaseModelString(modelString)\nif (modelString && !parsed) { settings.rerankModel = null; warn('rerank model format invalid') }","typeGuard":"function isInvalidRerankFormat(e: unknown): e is Error { return e instanceof Error && e.message.startsWith('Invalid rerank model format:') }","tryCatchPattern":"try { return await getSessionAttachmentRerankProvider(modelString) } catch (e) { if (isInvalidRerankFormat(e)) { return null /* disable reranking */ } throw e }","preventionTips":["Validate the rerank string with parseKnowledgeBaseModelString at settings-save time.","Leave rerank unset rather than supplying a broken value.","Trim whitespace before storing."],"tags":["session-attachment-rag","rerank","configuration","validation","typescript"],"backgroundTag":null,"analyzedSha":"81571269addb6bafb589a920b2883f1e1e084fd1","analyzedAt":"2026-08-12T21:51:44.981Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}