mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-10-29 18:52:45 +08:00
fix: strip Kilo Gateway sub-provider prefix from model trigger label
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
providerSortKey,
|
||||
isFree,
|
||||
buildTriggerLabel,
|
||||
stripSubProviderPrefix,
|
||||
KILO_GATEWAY_ID,
|
||||
PROVIDER_ORDER,
|
||||
} from "../../webview-ui/src/components/shared/model-selector-utils"
|
||||
@@ -57,17 +58,39 @@ describe("isFree", () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe("buildTriggerLabel", () => {
|
||||
it("returns resolved model name when available", () => {
|
||||
expect(buildTriggerLabel("GPT-4o", undefined, null, false, "", true, labels)).toBe("GPT-4o")
|
||||
describe("stripSubProviderPrefix", () => {
|
||||
it("strips prefix before ': '", () => {
|
||||
expect(stripSubProviderPrefix("Anthropic: Claude Sonnet")).toBe("Claude Sonnet")
|
||||
expect(stripSubProviderPrefix("OpenAI: GPT-4o")).toBe("GPT-4o")
|
||||
})
|
||||
|
||||
it("strips provider prefix from resolved name when providerName matches", () => {
|
||||
expect(buildTriggerLabel("Anthropic: Claude Sonnet", "Anthropic", null, false, "", true, labels)).toBe(
|
||||
it("leaves names without ': ' unchanged", () => {
|
||||
expect(stripSubProviderPrefix("GPT-4o")).toBe("GPT-4o")
|
||||
expect(stripSubProviderPrefix("claude-3-5-sonnet")).toBe("claude-3-5-sonnet")
|
||||
})
|
||||
})
|
||||
|
||||
describe("buildTriggerLabel", () => {
|
||||
it("returns resolved model name for non-kilo provider unchanged", () => {
|
||||
expect(buildTriggerLabel("GPT-4o", "openai", null, false, "", true, labels)).toBe("GPT-4o")
|
||||
})
|
||||
|
||||
it("strips sub-provider prefix from resolved name for kilo gateway models", () => {
|
||||
expect(buildTriggerLabel("Anthropic: Claude Sonnet", KILO_GATEWAY_ID, null, false, "", true, labels)).toBe(
|
||||
"Claude Sonnet",
|
||||
)
|
||||
})
|
||||
|
||||
it("does not strip prefix for non-kilo provider even if name contains ': '", () => {
|
||||
expect(buildTriggerLabel("Anthropic: Claude Sonnet", "anthropic", null, false, "", true, labels)).toBe(
|
||||
"Anthropic: Claude Sonnet",
|
||||
)
|
||||
})
|
||||
|
||||
it("returns resolved name as-is when providerID is undefined", () => {
|
||||
expect(buildTriggerLabel("GPT-4o", undefined, null, false, "", true, labels)).toBe("GPT-4o")
|
||||
})
|
||||
|
||||
it("returns modelID for kilo gateway raw selection", () => {
|
||||
const raw = { providerID: "kilo", modelID: "kilo/auto" }
|
||||
expect(buildTriggerLabel(undefined, undefined, raw, false, "", true, labels)).toBe("kilo/auto")
|
||||
|
||||
@@ -172,7 +172,7 @@ export const ModelSelectorBase: Component<ModelSelectorBaseProps> = (props) => {
|
||||
const triggerLabel = () =>
|
||||
buildTriggerLabel(
|
||||
selectedModel()?.name,
|
||||
selectedModel()?.providerName,
|
||||
selectedModel()?.providerID,
|
||||
props.value,
|
||||
props.allowClear ?? false,
|
||||
props.clearLabel ?? "",
|
||||
|
||||
@@ -14,21 +14,22 @@ export function isFree(model: Pick<EnrichedModel, "inputPrice">): boolean {
|
||||
return model.inputPrice === 0
|
||||
}
|
||||
|
||||
export function stripProviderPrefix(name: string, providerName: string): string {
|
||||
const prefix = `${providerName}: `
|
||||
return name.startsWith(prefix) ? name.slice(prefix.length) : name
|
||||
export function stripSubProviderPrefix(name: string): string {
|
||||
const colon = name.indexOf(": ")
|
||||
return colon >= 0 ? name.slice(colon + 2) : name
|
||||
}
|
||||
|
||||
export function buildTriggerLabel(
|
||||
resolvedName: string | undefined,
|
||||
providerName: string | undefined,
|
||||
providerID: string | undefined,
|
||||
raw: ModelSelection | null,
|
||||
allowClear: boolean,
|
||||
clearLabel: string,
|
||||
hasProviders: boolean,
|
||||
labels: { select: string; noProviders: string; notSet: string },
|
||||
): string {
|
||||
if (resolvedName) return providerName ? stripProviderPrefix(resolvedName, providerName) : resolvedName
|
||||
if (resolvedName)
|
||||
return providerID === KILO_GATEWAY_ID ? stripSubProviderPrefix(resolvedName) : resolvedName
|
||||
if (raw?.providerID && raw?.modelID) {
|
||||
return raw.providerID === KILO_GATEWAY_ID ? raw.modelID : `${raw.providerID} / ${raw.modelID}`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user