{"record":{"id":"d279c51bc73a4155","repo":"deepseek-ai/deepseek-harness","slug":"llm-pi-ai-catalog-provider-s-cannot-address-a","errorCode":null,"errorMessage":"llm-pi-ai: catalog provider \"%s\" cannot address a credential record; its sign-in is not offered","messagePattern":"llm-pi-ai: catalog provider \"(.+?)\" cannot address a credential record; its sign-in is not offered","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/login.ts","lineNumber":133,"sourceCode":" * into before a route for it is worth adding, so the flow exists from the\n * moment the plugin mounts rather than appearing once a profile does.\n * @param ctx - the plugin context carrying `ctx.authorization`.\n * @param auth - the injectables every collection here is built with.\n */\nexport function registerPiAiFlows(ctx: Context, auth: PiAiAuthInjection): void {\n  for (const providerId of catalogProviderIds()) {\n    const provider = catalogProvider(providerId)\n    const [first, ...rest] = loginMethods(provider)\n    /* v8 ignore next 3 -- every id here names an installed provider and every\n       installed provider ships a login, so nothing is skipped today; the guard\n       is what keeps that from becoming a crash if either stops being true. */\n    if (provider === undefined || first === undefined) continue\n    /* v8 ignore next 7 -- every installed catalog id today is a lowercase\n       hyphenated identifier; the guard keeps a future upstream id outside the\n       record grammar (dotted or uppercase, as vendor ids elsewhere already\n       are) from throwing in `recordKeyFor` and failing the whole mount. */\n    if (!isCredentialKeySegment(providerId)) {\n      ctx.logger.warn(\n        'llm-pi-ai: catalog provider \"%s\" cannot address a credential record; its sign-in is not offered',\n        providerId)\n      continue\n    }\n    ctx.authorization.registerFlow({\n      key: recordKeyFor(providerId),\n      label: provider.name,\n      methods: [first, ...rest],\n      async run(session) {\n        // A collection of its own, holding only the provider being signed\n        // into: login is not serving requests, and the credential it produces\n        // lands in the shared store either way.\n        const models = createModels(auth)\n        models.setProvider(provider)\n        // Total over the two ids declared above, and the seam only ever hands\n        // back one a flow declared.\n        const type: AuthType = session.method === 'oauth' ? 'oauth' : 'api_key'\n        // pi-ai persists what the login returns through that same store, which","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/login.ts#L115-L151","documentation":"Error \"llm-pi-ai: catalog provider \"%s\" cannot address a credential record; its sign-in is not offered\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/login.ts:133 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure a credential record for the named provider or use a provider that supports sign-in."],"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"}