UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 1.35 kB
import{AI_GATEWAY_MODELS_CATALOG_URL,vercelGatewayFetch}from"#internal/gateway.js";import{findCatalogModelByProviderModelId,findCatalogModelBySlug,modelCatalogLimitsFromProvider,modelCatalogResponseSchema}from"#internal/model-catalog.js";function createRuntimeModelCatalog(e=vercelGatewayFetch){let t=null,loadCatalog=async()=>(t===null&&(t=e(AI_GATEWAY_MODELS_CATALOG_URL).then(async e=>{if(!e.ok)throw Error(`AI Gateway model catalog request failed with HTTP ${e.status} ${e.statusText}.`);return parseCatalogResponse(await e.json())}).catch(e=>{throw t=null,e})),await t);return{async getByGatewayId(e){let t=await loadCatalog(),n=findCatalogModelBySlug(t.models,e);if(n===void 0)return null;for(let e of n.providers){let t=modelCatalogLimitsFromProvider(e);if(t!==null)return{...t,resolvedModelId:n.slug}}return null},async getByProviderModelId(e,t){let n=await loadCatalog(),r=findCatalogModelByProviderModelId({models:n.models,provider:e,providerAliases:n.providerAliases,providerModelId:t});if(r===null)return null;let i=modelCatalogLimitsFromProvider(r.provider);return i===null?null:{...i,resolvedModelId:r.model.slug}}}}function parseCatalogResponse(e){let t=modelCatalogResponseSchema.safeParse(e);if(!t.success)throw Error(`AI Gateway model catalog response did not match the expected schema.`);return t.data}export{createRuntimeModelCatalog};