MCPcopy Create free account
hub / github.com/Zoo-Code-Org/Zoo-Code / getModelEndpoints

Function getModelEndpoints

src/api/providers/fetchers/modelEndpointCache.ts:36–101  ·  view source on GitHub ↗
({
	router,
	modelId,
	endpoint,
}: {
	router: RouterName
	modelId?: string
	endpoint?: string
})

Source from the content-addressed store, hash-verified

34}
35
36export const getModelEndpoints = async ({
37 router,
38 modelId,
39 endpoint,
40}: {
41 router: RouterName
42 modelId?: string
43 endpoint?: string
44}): Promise<ModelRecord> => {
45 // OpenRouter is the only provider that supports model endpoints, but you
46 // can see how we'd extend this to other providers in the future.
47 if (router !== "openrouter" || !modelId || !endpoint) {
48 return {}
49 }
50
51 const key = getCacheKey(router, modelId)
52 let modelProviders = memoryCache.get<ModelRecord>(key)
53
54 if (modelProviders) {
55 // console.log(`[getModelProviders] NodeCache hit for ${key} -> ${Object.keys(modelProviders).length}`)
56 return modelProviders
57 }
58
59 modelProviders = await getOpenRouterModelEndpoints(modelId)
60
61 // Copy model-level capabilities from the parent model to each endpoint
62 // These are capabilities that don't vary by provider (tools, reasoning, etc.)
63 if (Object.keys(modelProviders).length > 0) {
64 const parentModels = await getModels({ provider: "openrouter" })
65 const parentModel = parentModels[modelId]
66
67 if (parentModel) {
68 // Copy model-level capabilities to all endpoints
69 // Clone arrays to avoid shared mutable references
70 for (const endpointKey of Object.keys(modelProviders)) {
71 modelProviders[endpointKey].supportsReasoningEffort = parentModel.supportsReasoningEffort
72 modelProviders[endpointKey].supportedParameters = parentModel.supportedParameters
73 ? [...parentModel.supportedParameters]
74 : undefined
75 }
76 }
77 }
78
79 if (Object.keys(modelProviders).length > 0) {
80 // console.log(`[getModelProviders] API fetch for ${key} -> ${Object.keys(modelProviders).length}`)
81 memoryCache.set(key, modelProviders)
82
83 try {
84 await writeModelEndpoints(key, modelProviders)
85 // console.log(`[getModelProviders] wrote ${key} endpoints to file cache`)
86 } catch (error) {
87 console.error(`[getModelProviders] error writing ${key} endpoints to file cache`, error)
88 }
89
90 return modelProviders
91 }
92
93 try {

Callers 3

loadDynamicModelsMethod · 0.90
fetchModelMethod · 0.90

Calls 9

getModelsFunction · 0.90
writeModelEndpointsFunction · 0.85
readModelEndpointsFunction · 0.85
getCacheKeyFunction · 0.70
getMethod · 0.65
keysMethod · 0.65
setMethod · 0.65
errorMethod · 0.65

Tested by

no test coverage detected