UNPKG

@tanstack/ai

Version:

Type-safe TypeScript AI SDK for streaming chat, tool calling, agents, structured outputs, and multimodal generation.

41 lines (40 loc) • 1.54 kB
import { ByokMissingError } from "./errors.js"; import { resolveProviderId } from "./providers.js"; import { envKey } from "./get-key.js"; import { isKeyedAdapter } from "./keyed.js"; //#region src/byok/env-keys.ts function missingKeyMessage(provider) { if (typeof provider === "string") return `Missing ${provider} API key.`; const names = provider.env ?? []; const hint = names.length > 0 ? ` Set ${names.join(" or ")}.` : ""; return `Missing ${provider.label} API key.${hint}`; } /** * The `ctx.keys` of an agent: `keys`, else `fallback` (the keys of a parent * agent), else each provider's `env` names. Not in `@tanstack/ai/byok`, so * the client entry has no env access. */ function providerKeys(keys = {}, fallback) { const get = async (provider) => { return (typeof keys === "function" ? await keys(provider) : keys[resolveProviderId(provider)]) || (fallback ? await fallback.get(provider) : envKey(provider)) || null; }; const require = async (provider) => { const key = await get(provider); if (!key) { const error = new ByokMissingError(resolveProviderId(provider)); error.message = missingKeyMessage(provider); throw error; } return key; }; return { get, require, adapter: async (adapter) => isKeyedAdapter(adapter) ? adapter.create(await require(adapter.provider)) : adapter }; } /** The `ctx.keys` of an agent with no keys set: each provider's `env` names. */ var envProviderKeys = providerKeys(); //#endregion export { envProviderKeys, providerKeys }; //# sourceMappingURL=env-keys.js.map