INNER CODE UNIT · TypeScript
isAvailable
harvard-edge/cs249r_book · interviews/staffml/worker/src/index.ts:240
function isAvailable(adapter: Adapter, env: Env): boolean {
if (adapter.name === "cf-workers-ai") return Boolean(env.AI);
return Boolean(adapter.apiKeyEnv && env[adapter.apiKeyEnv]);
}
function orderedAdapters(env: Env): Adapter[] {
const priority = (env.PROVIDER_PRIORITY ?? "groq,openai,anthropic,gemini,openrouter,cf-workers-ai")
.split(",")
.map((s) => s.trim())
.filter(Boolean);
const byName = new Map(ADAPTERS.map((a) => [a.name, a]));
const ordered: Adapter[] = [];
for (const name of priority) {
const a = byName.get(name);
if (a && isAvailable(a, env)) ordered.push(a);
}
// Always append cf-workers-ai as the floor if not already in the list
const floor = byName.get("cf-workers-ai");