{"record":{"id":"9850ead56fc9cae5","repo":"deepseek-ai/deepseek-harness","slug":"llm-pi-ai-provider-provider-detail","errorCode":null,"errorMessage":"llm-pi-ai: provider \"${provider}\" ${detail}","messagePattern":"llm-pi-ai: provider \"(.+?)\" (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/catalog.ts","lineNumber":605,"sourceCode":"  /** Endpoint override; absent defers to the catalog model, then the catalog provider. */\n  baseURL?: string\n  /** Configured catalog; absent means the whole installed catalog for this route. */\n  models?: readonly PiAiModelProfile[]\n  /** Installed-catalog customizations by model id; only meaningful while `models` is absent. */\n  modelOverrides?: Readonly<Record<string, PiAiModelOverride>>\n  /** Route-level wire-compatibility switches, landing on each model whose protocol declares them; entries override per field. */\n  compat?: PiAiCompatProfile\n  /** Context capacity for a model neither the entry nor the catalog sizes. */\n  defaultContextWindow: number\n  /** Output capability for a model neither the entry nor the catalog sizes. */\n  defaultMaxTokens: number\n  /** Modalities for a model neither the entry nor the catalog declares. */\n  defaultInput: Model<Api>['input']\n}\n\n/** Report a route the deployment cannot serve, naming the settings key at fault. */\nfunction invalid(provider: string, detail: string): never {\n  throw new Error(`llm-pi-ai: provider \"${provider}\" ${detail}`)\n}\n\n/**\n * The one wire protocol a catalog route's shipped models agree on. This is what\n * lets a deployment add a model the installed catalog has not caught up with —\n * a provider's newest release — without restating the protocol its siblings\n * already use. A route whose shipped models disagree (an OpenAI-style catalog\n * spanning Responses and Chat Completions) has no such answer, so a model it\n * does not describe must name its protocol at the route.\n */\nfunction sharedCatalogApi(defaults: ReadonlyMap<string, Model<Api>>): string | undefined {\n  const apis = new Set<string>()\n  for (const model of defaults.values()) apis.add(model.api)\n  return apis.size === 1 ? [...apis][0] : undefined\n}\n\n/** The reasoning fields one materialized model carries. */\ninterface ModelReasoning {","sourceCodeStart":587,"sourceCodeEnd":623,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/catalog.ts#L587-L623","documentation":"Error \"llm-pi-ai: provider \"${provider}\" ${detail}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/catalog.ts:605 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the provider configuration per the detail included in the message."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}