diff --git a/src/commands/cleanup-utils.test.ts b/src/commands/cleanup-utils.test.ts index 89d9051cbee4..665f304a4769 100644 --- a/src/commands/cleanup-utils.test.ts +++ b/src/commands/cleanup-utils.test.ts @@ -4,7 +4,6 @@ import os from "node:os"; import path from "node:path"; import { describe, expect, it, test, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; -import { applyAgentDefaultPrimaryModel } from "../plugins/provider-model-primary.js"; import type { RuntimeEnv } from "../runtime.js"; import { withEnvAsync } from "../test-utils/env.js"; import { @@ -70,38 +69,6 @@ describe("buildCleanupPlan", () => { }); }); -describe("applyAgentDefaultPrimaryModel", () => { - it("does not mutate when already set", () => { - const cfg = { agents: { defaults: { model: { primary: "a/b" } } } } as OpenClawConfig; - const result = applyAgentDefaultPrimaryModel({ cfg, model: "a/b" }); - expect(result.changed).toBe(false); - expect(result.next).toBe(cfg); - }); - - it("normalizes legacy models", () => { - const cfg = { agents: { defaults: { model: { primary: "legacy" } } } } as OpenClawConfig; - const result = applyAgentDefaultPrimaryModel({ - cfg, - model: "a/b", - legacyModels: new Set(["legacy"]), - }); - expect(result.changed).toBe(false); - expect(result.next).toBe(cfg); - }); - - it("normalizes retired Google Gemini primary models before writing config", () => { - const cfg = { agents: { defaults: {} } } as OpenClawConfig; - const result = applyAgentDefaultPrimaryModel({ - cfg, - model: "google/gemini-3-pro-preview", - }); - expect(result.changed).toBe(true); - expect(result.next.agents?.defaults?.model).toEqual({ - primary: "google/gemini-3.1-pro-preview", - }); - }); -}); - describe("cleanup path removals", () => { function createRuntimeMock() { return { diff --git a/src/plugins/provider-model-primary.ts b/src/plugins/provider-model-primary.ts index bffbf059feab..f2a0aae0c592 100644 --- a/src/plugins/provider-model-primary.ts +++ b/src/plugins/provider-model-primary.ts @@ -3,54 +3,8 @@ import { normalizeAgentModelMapForConfig, normalizeAgentModelRefForConfig, } from "../config/model-input.js"; -import type { AgentModelListConfig } from "../config/types.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; -function resolvePrimaryModel(model?: AgentModelListConfig | string): string | undefined { - if (typeof model === "string") { - return model; - } - if (model && typeof model === "object" && typeof model.primary === "string") { - return model.primary; - } - return undefined; -} - -/** Applies an agent default primary model and reports whether config changed. */ -export function applyAgentDefaultPrimaryModel(params: { - cfg: OpenClawConfig; - model: string; - legacyModels?: Set; -}): { next: OpenClawConfig; changed: boolean } { - const model = normalizeAgentModelRefForConfig(params.model); - const current = resolvePrimaryModel(params.cfg.agents?.defaults?.model)?.trim(); - const normalizedCurrent = current && params.legacyModels?.has(current) ? model : current; - if (normalizedCurrent === model) { - return { next: params.cfg, changed: false }; - } - - return { - next: { - ...params.cfg, - agents: { - ...params.cfg.agents, - defaults: { - ...params.cfg.agents?.defaults, - model: - params.cfg.agents?.defaults?.model && - typeof params.cfg.agents.defaults.model === "object" - ? { - ...params.cfg.agents.defaults.model, - primary: model, - } - : { primary: model }, - }, - }, - }, - changed: true, - }; -} - /** Applies a primary model to agent defaults while preserving model fallback metadata. */ export function applyPrimaryModel(cfg: OpenClawConfig, model: string): OpenClawConfig { const normalizedModel = normalizeAgentModelRefForConfig(model);