fix: prevent duplicate AI models in selector and fix TypeScript errors
Some checks failed
Release Binaries / release (push) Has been cancelled
Some checks failed
Release Binaries / release (push) Has been cancelled
Changes: 1. Enhanced removeDuplicateProviders() to filter out duplicate providers from SDK when the same provider exists in extras (qwen-oauth, zai, ollama-cloud, antigravity) 2. Added logic to remove any Qwen-related SDK providers when qwen-oauth is authenticated 3. Fixed missing setActiveParentSession import in instance-shell2.tsx These changes ensure: - No duplicate models appear in the model selector - Qwen OAuth models don't duplicate with any SDK Qwen providers - TypeScript compilation passes successfully
This commit is contained in:
@@ -331,20 +331,32 @@ async function fetchExtraProviders(): Promise<Provider[]> {
|
||||
}
|
||||
|
||||
function removeDuplicateProviders(base: Provider[], extras: Provider[]): Provider[] {
|
||||
// Collect all extra provider IDs and model IDs to prevent duplicates
|
||||
const extraProviderIds = new Set(extras.map((provider) => provider.id))
|
||||
const extraModelIds = new Set(extras.flatMap((provider) => provider.models.map((model) => model.id)))
|
||||
if (!extras.some((provider) => provider.id === "opencode-zen")) {
|
||||
return base
|
||||
}
|
||||
|
||||
return base.filter((provider) => {
|
||||
if (provider.id === "opencode-zen") return false
|
||||
if (provider.id === "opencode" && provider.models.every((model) => extraModelIds.has(model.id))) {
|
||||
// Remove base providers that have the same ID as an extra provider
|
||||
// This prevents qwen-oauth, zai, ollama-cloud, antigravity duplicates
|
||||
if (extraProviderIds.has(provider.id)) {
|
||||
return false
|
||||
}
|
||||
// Special case: remove opencode if opencode-zen is present and covers all models
|
||||
if (provider.id === "opencode" && extraProviderIds.has("opencode-zen") &&
|
||||
provider.models.every((model) => extraModelIds.has(model.id))) {
|
||||
return false
|
||||
}
|
||||
// Remove any qwen-related SDK providers when qwen-oauth is present
|
||||
if (extraProviderIds.has("qwen-oauth") &&
|
||||
(provider.id.toLowerCase().includes("qwen") ||
|
||||
provider.models.some((m) => m.id.toLowerCase().includes("qwen")))) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
interface SessionForkResponse {
|
||||
id: string
|
||||
title?: string
|
||||
|
||||
Reference in New Issue
Block a user