{"record":{"id":"41c219b6cce3136a","repo":"deepseek-ai/deepseek-harness","slug":"no-adapter","errorCode":"NO_ADAPTER","errorMessage":"pi-ai adapter does not own provider \"${provider}\"","messagePattern":"pi-ai adapter does not own provider \"(.+?)\"","errorType":"exception","errorClass":"LlmError","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/adapter.ts","lineNumber":242,"sourceCode":"   * The snapshot for the current profiles. Resolution memoizes its result, so\n   * an unchanged configuration is recognized by identity; a changed one gets a\n   * brand-new collection, leaving any snapshot an operation already captured\n   * untouched for as long as that operation holds it.\n   */\n  private current(): PiAiSnapshot {\n    const profiles = this.config.profiles()\n    if (this.snapshot?.profiles === profiles) return this.snapshot\n    const models: MutableModels = createModels(this.config.auth)\n    for (const profile of profiles.values()) models.setProvider(profile.piProvider)\n    this.snapshot = { profiles, models }\n    return this.snapshot\n  }\n\n  /** The profile for one route within one snapshot, or the not-owned failure. */\n  private profileOf(snapshot: PiAiSnapshot, provider: string): ResolvedPiAiProviderProfile {\n    const profile = snapshot.profiles.get(provider)\n    if (profile === undefined) {\n      throw new LlmError(`pi-ai adapter does not own provider \"${provider}\"`, 'NO_ADAPTER')\n    }\n    return profile\n  }\n\n  /** The configured descriptor for one exact route/model pair within one snapshot. */\n  private modelOf(snapshot: PiAiSnapshot, provider: string, model: string): Model<Api> {\n    this.profileOf(snapshot, provider)\n    const resolved = snapshot.models.getModel(provider, model)\n    if (resolved === undefined) {\n      throw new LlmError(`pi-ai provider \"${provider}\" has no configured model \"${model}\"`, 'UNKNOWN_MODEL')\n    }\n    return resolved\n  }\n\n  override providerInfo(provider: string): LlmProviderInfo {\n    // The configured name, not the route key: `displayName` exists so a\n    // deployment can label a route, and a label only the configuration surface\n    // reads would leave every selector showing the raw key.","sourceCodeStart":224,"sourceCodeEnd":260,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/adapter.ts#L224-L260","documentation":"Error \"pi-ai adapter does not own provider \"${provider}\"\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/adapter.ts:242 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Route the request through the adapter that owns the provider, or configure the provider under llm-pi-ai."],"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"}