mirror of
https://github.com/cline/cline.git
synced 2026-09-17 17:45:33 +08:00
fix(vscode): keep model metadata out of provider settings (#11772)
* fix(vscode): keep model metadata out of provider settings * fix(vscode): prune stale provider model metadata * docs(vscode): explain provider metadata pruning
This commit is contained in:
@@ -232,15 +232,17 @@ describe("createProviderConfigStore", () => {
|
||||
expect(mocks.getSavedProviderSettings("openrouter")).toMatchObject({
|
||||
provider: "openrouter",
|
||||
model: "provider/model-b",
|
||||
contextWindow: 64_000,
|
||||
maxTokens: 4_096,
|
||||
})
|
||||
expect(mocks.getSavedProviderSettings("openrouter")).not.toHaveProperty("contextWindow")
|
||||
expect(mocks.getSavedProviderSettings("openrouter")).not.toHaveProperty("maxTokens")
|
||||
})
|
||||
|
||||
it("updates providers.json model with setLastUsed false when planActSeparateModelsSetting=false", async () => {
|
||||
const { createProviderConfigStore } = await import("./store")
|
||||
mocks.setApiConfiguration({ planActSeparateModelsSetting: false })
|
||||
mocks.setProviderSettings({ openrouter: { provider: "openrouter", apiKey: "existing-key" } })
|
||||
mocks.setProviderSettings({
|
||||
openrouter: { provider: "openrouter", apiKey: "existing-key", contextWindow: 64_000, maxTokens: 4_096 },
|
||||
})
|
||||
const store = createProviderConfigStore()
|
||||
const providerId = parseProviderId("openrouter")
|
||||
const selection = { providerId, modelId: "provider/model-a", modelInfo: modelInfoA }
|
||||
@@ -252,6 +254,8 @@ describe("createProviderConfigStore", () => {
|
||||
apiKey: "existing-key",
|
||||
model: "provider/model-a",
|
||||
})
|
||||
expect(mocks.getSavedProviderSettings("openrouter")).not.toHaveProperty("contextWindow")
|
||||
expect(mocks.getSavedProviderSettings("openrouter")).not.toHaveProperty("maxTokens")
|
||||
expect(mocks.getSaveProviderSettingsMock()).toHaveBeenCalledWith(expect.objectContaining({ model: "provider/model-a" }), {
|
||||
setLastUsed: false,
|
||||
})
|
||||
@@ -268,9 +272,9 @@ describe("createProviderConfigStore", () => {
|
||||
expect(mocks.getSavedProviderSettings("claude-code")).toMatchObject({
|
||||
provider: "claude-code",
|
||||
model: "haiku",
|
||||
contextWindow: 128_000,
|
||||
maxTokens: 8_192,
|
||||
})
|
||||
expect(mocks.getSavedProviderSettings("claude-code")).not.toHaveProperty("contextWindow")
|
||||
expect(mocks.getSavedProviderSettings("claude-code")).not.toHaveProperty("maxTokens")
|
||||
expect(mocks.getSaveProviderSettingsMock()).toHaveBeenCalledWith(expect.objectContaining({ model: "haiku" }), {
|
||||
setLastUsed: false,
|
||||
})
|
||||
|
||||
@@ -399,14 +399,9 @@ function writeSelectionToState(providerId: ProviderId, mode: Mode, selection: Mo
|
||||
|
||||
function writeSelectionToProviderSettings(providerId: ProviderId, selection: ModelSelection): void {
|
||||
const next: ProviderSettingsRecord = { ...getProviderSettings(providerId), model: selection.modelId }
|
||||
|
||||
if (selection.modelInfo.contextWindow !== undefined && selection.modelInfo.contextWindow > 0) {
|
||||
next.contextWindow = selection.modelInfo.contextWindow
|
||||
}
|
||||
|
||||
if (selection.modelInfo.maxTokens !== undefined && selection.modelInfo.maxTokens > 0) {
|
||||
next.maxTokens = selection.modelInfo.maxTokens
|
||||
}
|
||||
// Prune model metadata that earlier builds may have written to providers.json.
|
||||
delete next.contextWindow
|
||||
delete next.maxTokens
|
||||
|
||||
saveProviderSettings(providerId, next)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user