mirror of
https://github.com/sst/opencode.git
synced 2025-12-23 10:11:41 +00:00
fix: custom models with same ids
This commit is contained in:
parent
34ec6cc978
commit
09ddffe1b6
2 changed files with 15 additions and 5 deletions
|
|
@ -43,6 +43,11 @@ export namespace ModelsDev {
|
|||
})
|
||||
export type Model = z.infer<typeof Model>
|
||||
|
||||
export const ProviderModel = Model.extend({
|
||||
providerModelId: z.string().optional(),
|
||||
})
|
||||
export type ProviderModel = z.infer<typeof ProviderModel>
|
||||
|
||||
export const Provider = z
|
||||
.object({
|
||||
api: z.string().optional(),
|
||||
|
|
@ -50,7 +55,7 @@ export namespace ModelsDev {
|
|||
env: z.array(z.string()),
|
||||
id: z.string(),
|
||||
npm: z.string().optional(),
|
||||
models: z.record(z.string(), Model),
|
||||
models: z.record(z.string(), ProviderModel),
|
||||
})
|
||||
.meta({
|
||||
ref: "Provider",
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ export namespace Provider {
|
|||
} = {}
|
||||
const models = new Map<
|
||||
string,
|
||||
{ providerID: string; modelID: string; info: ModelsDev.Model; language: LanguageModel; npm?: string }
|
||||
{ providerID: string; modelID: string; info: ModelsDev.ProviderModel; language: LanguageModel; npm?: string }
|
||||
>()
|
||||
const sdk = new Map<number, SDK>()
|
||||
|
||||
|
|
@ -248,8 +248,10 @@ export namespace Provider {
|
|||
|
||||
for (const [modelID, model] of Object.entries(provider.models ?? {})) {
|
||||
const existing = parsed.models[modelID]
|
||||
const parsedModel: ModelsDev.Model = {
|
||||
id: model.id ?? modelID,
|
||||
// "modelID" stays user-facing; "providerModelId" keeps the provider's canonical identifier.
|
||||
const parsedModel: ModelsDev.ProviderModel = {
|
||||
providerModelId: model.id,
|
||||
id: modelID,
|
||||
name: model.name ?? existing?.name ?? modelID,
|
||||
release_date: model.release_date ?? existing?.release_date,
|
||||
attachment: model.attachment ?? existing?.attachment ?? false,
|
||||
|
|
@ -432,7 +434,10 @@ export namespace Provider {
|
|||
const sdk = await getSDK(provider.info, info)
|
||||
|
||||
try {
|
||||
const language = provider.getModel ? await provider.getModel(sdk, modelID) : sdk.languageModel(modelID)
|
||||
const resolvedModelId = info.providerModelId ?? modelID
|
||||
const language = provider.getModel
|
||||
? await provider.getModel(sdk, resolvedModelId)
|
||||
: sdk.languageModel(resolvedModelId)
|
||||
log.info("found", { providerID, modelID })
|
||||
s.models.set(key, {
|
||||
providerID,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue