


















@@ -282,6 +282,46 @@ describe("onboard auth provider config merges", () => {
282282expect(next.agents?.defaults?.model).toEqual({ primary: "custom/model-z" });
283283});
284284285+it("does not let default-model presets replace an existing default model", () => {
286+const next = applyProviderConfigWithDefaultModelPreset(
287+{
288+agents: {
289+defaults: {
290+models: {
291+"claude-max-proxy/claude-opus-4-7": {},
292+"claude-max-proxy/claude-sonnet-4-6": {},
293+},
294+model: {
295+primary: "claude-max-proxy/claude-opus-4-7",
296+fallbacks: ["claude-max-proxy/claude-sonnet-4-6"],
297+},
298+},
299+},
300+},
301+{
302+providerId: "moonshot",
303+api: "openai-completions",
304+baseUrl: "https://api.moonshot.cn/v1",
305+defaultModel: makeModel("kimi-k2.6"),
306+aliases: [{ modelRef: "moonshot/kimi-k2.6", alias: "Kimi" }],
307+primaryModelRef: "moonshot/kimi-k2.6",
308+},
309+);
310+311+expect(next.agents?.defaults?.model).toEqual({
312+primary: "claude-max-proxy/claude-opus-4-7",
313+fallbacks: ["claude-max-proxy/claude-sonnet-4-6"],
314+});
315+expect(next.agents?.defaults?.models).toEqual({
316+"claude-max-proxy/claude-opus-4-7": {},
317+"claude-max-proxy/claude-sonnet-4-6": {},
318+"moonshot/kimi-k2.6": { alias: "Kimi" },
319+});
320+expect(next.models?.providers?.moonshot?.models?.map((model) => model.id)).toEqual([
321+"kimi-k2.6",
322+]);
323+});
324+285325it("applies catalog presets with alias and merged catalog models", () => {
286326const next = applyProviderConfigWithModelCatalogPreset(
287327{
@@ -314,4 +354,36 @@ describe("onboard auth provider config merges", () => {
314354});
315355expect(next.agents?.defaults?.model).toEqual({ primary: "custom/model-b" });
316356});
357+358+it("does not let catalog presets replace an existing default model", () => {
359+const next = applyProviderConfigWithModelCatalogPreset(
360+{
361+agents: {
362+defaults: {
363+models: {
364+"custom-existing/model-a": {},
365+},
366+model: {
367+primary: "custom-existing/model-a",
368+},
369+},
370+},
371+},
372+{
373+providerId: "custom",
374+api: "openai-completions",
375+baseUrl: "https://example.com/v1",
376+catalogModels: [makeModel("model-b")],
377+aliases: [{ modelRef: "custom/model-b", alias: "Catalog Alias" }],
378+primaryModelRef: "custom/model-b",
379+},
380+);
381+382+expect(next.agents?.defaults?.model).toEqual({ primary: "custom-existing/model-a" });
383+expect(next.agents?.defaults?.models).toEqual({
384+"custom-existing/model-a": {},
385+"custom/model-b": { alias: "Catalog Alias" },
386+});
387+expect(next.models?.providers?.custom?.models?.map((model) => model.id)).toEqual(["model-b"]);
388+});
317389});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。