diff --git a/packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx b/packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx index d5e811892a3..cf7f642782a 100644 --- a/packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx +++ b/packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx @@ -108,6 +108,7 @@ const ProvidersTab: Component = () => { placement="bottom-start" allowClear clearLabel={language.t("settings.providers.notSet")} + includeAutoSmall /> diff --git a/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx b/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx index 14db78e09d9..45a57ddf385 100644 --- a/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx +++ b/packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx @@ -15,7 +15,7 @@ import { useProvider, EnrichedModel } from "../../context/provider" import { useSession } from "../../context/session" import { useLanguage } from "../../context/language" import type { ModelSelection } from "../../types/messages" -import { KILO_GATEWAY_ID, providerSortKey, isFree, buildTriggerLabel } from "./model-selector-utils" +import { KILO_GATEWAY_ID, isSmall, providerSortKey, isFree, buildTriggerLabel } from "./model-selector-utils" interface ModelGroup { providerName: string @@ -37,6 +37,8 @@ export interface ModelSelectorBaseProps { allowClear?: boolean /** Label shown for the clear option */ clearLabel?: string + /** Include the kilo-auto/small model in the list — defaults to false */ + includeAutoSmall?: boolean } export const ModelSelectorBase: Component = (props) => { @@ -52,10 +54,14 @@ export const ModelSelectorBase: Component = (props) => { let searchRef: HTMLInputElement | undefined let listRef: HTMLDivElement | undefined - // Only show models from Kilo Gateway or connected providers + // Only show models from Kilo Gateway or connected providers. + // kilo-auto/small is excluded unless includeAutoSmall is explicitly true. const visibleModels = createMemo(() => { const c = connected() - return models().filter((m) => m.providerID === KILO_GATEWAY_ID || c.includes(m.providerID)) + return models().filter((m) => { + if (!props.includeAutoSmall && isSmall(m)) return false + return m.providerID === KILO_GATEWAY_ID || c.includes(m.providerID) + }) }) const hasProviders = () => visibleModels().length > 0 diff --git a/packages/kilo-vscode/webview-ui/src/components/shared/model-selector-utils.ts b/packages/kilo-vscode/webview-ui/src/components/shared/model-selector-utils.ts index c32309e2375..0da86e58d88 100644 --- a/packages/kilo-vscode/webview-ui/src/components/shared/model-selector-utils.ts +++ b/packages/kilo-vscode/webview-ui/src/components/shared/model-selector-utils.ts @@ -2,6 +2,11 @@ import type { ModelSelection } from "../../types/messages" import type { EnrichedModel } from "../../context/provider" export const KILO_GATEWAY_ID = "kilo" +export const KILO_AUTO_SMALL_IDS = new Set(["kilo-auto/small", "auto-small"]) + +export function isSmall(model: Pick): boolean { + return model.providerID === KILO_GATEWAY_ID && KILO_AUTO_SMALL_IDS.has(model.id) +} export const PROVIDER_ORDER = [KILO_GATEWAY_ID, "anthropic", "openai", "google"]