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:
Saoud Rizwan
2026-06-23 21:08:21 -07:00
committed by GitHub
parent ebee61a5b7
commit 8e5a3993a7
2 changed files with 12 additions and 13 deletions
@@ -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,
})
+3 -8
View File
@@ -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)
}