MCPcopy Index your code
hub / github.com/anomalyco/opencode / fromCatalogModel

Function fromCatalogModel

packages/core/src/session/runner/model.ts:131–170  ·  view source on GitHub ↗
(
  model: ModelV2.Info,
  credential?: Credential.Value,
)

Source from the content-addressed store, hash-verified

129 model.api.type === "aisdk" ? `${model.api.type}:${model.api.package}` : model.api.type
130
131export const fromCatalogModel = (
132 model: ModelV2.Info,
133 credential?: Credential.Value,
134): Effect.Effect<Model, UnsupportedApiError> => {
135 const resolved =
136 credential?.type !== "key" || credential.metadata === undefined
137 ? model
138 : produce(model, (draft) => {
139 Object.assign(draft.request.body, credential.metadata)
140 })
141 const key = apiKey(resolved, credential)
142 if (resolved.api.type === "aisdk" && resolved.api.package === "@ai-sdk/openai") {
143 return Effect.succeed(
144 withDefaults(resolved, OpenAIResponses.route)
145 .with({ auth: key === undefined ? Auth.none : Auth.bearer(key) })
146 .model({ id: resolved.api.id }),
147 )
148 }
149 if (resolved.api.type === "aisdk" && resolved.api.package === "@ai-sdk/anthropic") {
150 return Effect.succeed(
151 withDefaults(resolved, AnthropicMessages.route)
152 .with({ auth: key === undefined ? Auth.none : Auth.header("x-api-key", key) })
153 .model({ id: resolved.api.id }),
154 )
155 }
156 if (resolved.api.type === "aisdk" && resolved.api.package === "@ai-sdk/openai-compatible" && resolved.api.url) {
157 return Effect.succeed(
158 withDefaults(resolved, OpenAICompatibleChat.route)
159 .with({ auth: key === undefined ? Auth.none : Auth.bearer(key) })
160 .model({ id: resolved.api.id }),
161 )
162 }
163 return Effect.fail(
164 new UnsupportedApiError({
165 providerID: resolved.providerID,
166 modelID: resolved.id,
167 api: apiName(resolved),
168 }),
169 )
170}
171
172export const resolve = (session: SessionSchema.Info, model: ModelV2.Info, credential?: Credential.Value) =>
173 withVariant(model, session.model?.variant).pipe(Effect.flatMap((model) => fromCatalogModel(model, credential)))

Callers 1

resolveFunction · 0.85

Calls 5

apiKeyFunction · 0.85
withDefaultsFunction · 0.85
apiNameFunction · 0.85
modelMethod · 0.80
withMethod · 0.80

Tested by

no test coverage detected