
























@@ -1,6 +1,9 @@
11import { describe, expect, it } from "vitest";
22import type { SessionEntry } from "../config/sessions.js";
3-import { applyModelOverrideToSessionEntry } from "./model-overrides.js";
3+import {
4+applyModelOverrideToSessionEntry,
5+repairProviderWrappedModelOverride,
6+} from "./model-overrides.js";
4758function applyOpenAiSelection(entry: SessionEntry) {
69return applyModelOverrideToSessionEntry({
@@ -173,3 +176,57 @@ describe("applyModelOverrideToSessionEntry", () => {
173176expect(withFlagEntry.liveModelSwitchPending).toBe(true);
174177});
175178});
179+180+describe("repairProviderWrappedModelOverride", () => {
181+it("restores a provider-wrapped override from aligned runtime model fields", () => {
182+const before = Date.now() - 5_000;
183+const entry: SessionEntry = {
184+sessionId: "sess-openrouter-repair-runtime",
185+updatedAt: before,
186+providerOverride: "anthropic",
187+modelOverride: "claude-haiku-4.5",
188+modelOverrideSource: "user",
189+modelProvider: "openrouter",
190+model: "anthropic/claude-haiku-4.5",
191+contextTokens: 200_000,
192+};
193+194+const result = repairProviderWrappedModelOverride({
195+ entry,
196+defaultProvider: "openai",
197+defaultModel: "gpt-5.4",
198+});
199+200+expect(result.updated).toBe(true);
201+expect(entry.providerOverride).toBe("openrouter");
202+expect(entry.modelOverride).toBe("anthropic/claude-haiku-4.5");
203+expect(entry.modelOverrideSource).toBe("user");
204+expect(entry.modelProvider).toBeUndefined();
205+expect(entry.model).toBeUndefined();
206+expect(entry.contextTokens).toBeUndefined();
207+expect((entry.updatedAt ?? 0) > before).toBe(true);
208+});
209+210+it("clears a provider-wrapped override that matches the configured default", () => {
211+const before = Date.now() - 5_000;
212+const entry: SessionEntry = {
213+sessionId: "sess-openrouter-repair-default",
214+updatedAt: before,
215+providerOverride: "anthropic",
216+modelOverride: "claude-haiku-4.5",
217+modelOverrideSource: "user",
218+};
219+220+const result = repairProviderWrappedModelOverride({
221+ entry,
222+defaultProvider: "openrouter",
223+defaultModel: "anthropic/claude-haiku-4.5",
224+});
225+226+expect(result.updated).toBe(true);
227+expect(entry.providerOverride).toBeUndefined();
228+expect(entry.modelOverride).toBeUndefined();
229+expect(entry.modelOverrideSource).toBeUndefined();
230+expect((entry.updatedAt ?? 0) > before).toBe(true);
231+});
232+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。