earendil-works/pi · error · ModelsError
provider
provider
Error message
Unknown provider: ${providerId} What it means
Error "Unknown provider: ${providerId}" thrown in earendil-works/pi.
Source
Thrown at packages/ai/src/models.ts:569
const providerId = typeof providerOrModel === "string" ? providerOrModel : providerOrModel.provider;
const provider = this.providers.get(providerId);
if (!provider) return undefined;
const result = await resolveProviderAuth(provider, this.credentials, this.authContext, { ...overrides, signal });
if (!result || typeof providerOrModel === "string" || !providerOrModel.headers) return result;
return {
...result,
auth: {
...result.auth,
headers: mergeHeaders(result.auth.headers, providerOrModel.headers),
},
};
}
async login(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential> {
const signal = operationSignal(interaction.signal);
signal.throwIfAborted();
const provider = this.providers.get(providerId);
if (!provider) throw new ModelsError("provider", `Unknown provider: ${providerId}`);
const method = type === "oauth" ? provider.auth.oauth : provider.auth.apiKey;
if (!method?.login) {
throw new ModelsError("auth", `${provider.name} does not support ${type} login`);
}
const loginOperation: Promise<Credential> = method.login({ ...interaction, signal });
const credential = await raceWithAbortSignal(loginOperation, signal);
let mutationStarted = false;
let markMutationStarted: (() => void) | undefined;
const started = new Promise<void>((resolve) => {
markMutationStarted = resolve;
});
const mutation = this.credentials.modify(
providerId,
async () => {
mutationStarted = true;
markMutationStarted?.();
return credential;
},View on GitHub (pinned to 4af9d21d3b)
Solutions
- Use a known provider id; list the registered providers to see valid values.
When it happens
Trigger: Thrown at packages/ai/src/models.ts:569 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/25660af2955c7da8.
Report an issue: GitHub.