fix: custom model (#3156)

This commit is contained in:
Aiden Cline
2025-10-13 19:58:19 -05:00
committed by GitHub
parent 4d68ee5d2c
commit 682d30bd12
2 changed files with 14 additions and 10 deletions

View File

@@ -210,6 +210,8 @@ export namespace Provider {
{ providerID: string; modelID: string; info: ModelsDev.Model; language: LanguageModel; npm?: string } { providerID: string; modelID: string; info: ModelsDev.Model; language: LanguageModel; npm?: string }
>() >()
const sdk = new Map<number, SDK>() const sdk = new Map<number, SDK>()
// Maps `${provider}/${key}` to the providers actual model ID for custom aliases.
const realIdByKey = new Map<string, string>()
log.info("init") log.info("init")
@@ -253,7 +255,7 @@ export namespace Provider {
for (const [modelID, model] of Object.entries(provider.models ?? {})) { for (const [modelID, model] of Object.entries(provider.models ?? {})) {
const existing = parsed.models[modelID] const existing = parsed.models[modelID]
const parsedModel: ModelsDev.Model = { const parsedModel: ModelsDev.Model = {
id: model.id ?? modelID, id: modelID,
name: model.name ?? existing?.name ?? modelID, name: model.name ?? existing?.name ?? modelID,
release_date: model.release_date ?? existing?.release_date, release_date: model.release_date ?? existing?.release_date,
attachment: model.attachment ?? existing?.attachment ?? false, attachment: model.attachment ?? existing?.attachment ?? false,
@@ -290,6 +292,9 @@ export namespace Provider {
}, },
provider: model.provider ?? existing?.provider, provider: model.provider ?? existing?.provider,
} }
if (model.id && model.id !== modelID) {
realIdByKey.set(`${providerID}/${modelID}`, model.id)
}
parsed.models[modelID] = parsedModel parsed.models[modelID] = parsedModel
} }
database[providerID] = parsed database[providerID] = parsed
@@ -366,6 +371,7 @@ export namespace Provider {
models, models,
providers, providers,
sdk, sdk,
realIdByKey,
} }
}) })
@@ -436,9 +442,11 @@ export namespace Provider {
const sdk = await getSDK(provider.info, info) const sdk = await getSDK(provider.info, info)
try { try {
const keyReal = `${providerID}/${modelID}`
const realID = s.realIdByKey.get(keyReal) ?? info.id
const language = provider.getModel const language = provider.getModel
? await provider.getModel(sdk, modelID, provider.options) ? await provider.getModel(sdk, realID, provider.options)
: sdk.languageModel(modelID) : sdk.languageModel(realID)
log.info("found", { providerID, modelID }) log.info("found", { providerID, modelID })
s.models.set(key, { s.models.set(key, {
providerID, providerID,

View File

@@ -1305,7 +1305,7 @@ export namespace SessionPrompt {
[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true [[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
[[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true [[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
${input.command} ${input.command}
` `,
], ],
}, },
bash: { bash: {
@@ -1320,15 +1320,11 @@ export namespace SessionPrompt {
}, },
// Fallback: any shell that doesn't match those above // Fallback: any shell that doesn't match those above
"": { "": {
args: [ args: ["-c", "-l", `${input.command}`],
"-c",
"-l",
`${input.command}`,
],
}, },
} }
const matchingInvocation = invocations[shellName] ?? invocations[""]; const matchingInvocation = invocations[shellName] ?? invocations[""]
const args = matchingInvocation?.args const args = matchingInvocation?.args
const proc = spawn(shell, args, { const proc = spawn(shell, args, {