























@@ -44,4 +44,56 @@ describe("google provider policy public artifact", () => {
4444api: "openai-completions",
4545});
4646});
47+48+it("normalizes retired Google model ids even for explicit OpenAI-compatible endpoints", () => {
49+expect(
50+normalizeConfig({
51+provider: "google",
52+providerConfig: {
53+baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
54+api: "openai-completions",
55+models: [
56+{
57+id: "google/gemini-3-pro-preview",
58+name: "Gemini 3 Pro",
59+reasoning: true,
60+input: ["text", "image"],
61+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
62+contextWindow: 1_048_576,
63+maxTokens: 65_536,
64+},
65+],
66+},
67+}),
68+).toMatchObject({
69+baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
70+api: "openai-completions",
71+models: [{ id: "google/gemini-3.1-pro-preview" }],
72+});
73+});
74+75+it("normalizes retired Gemini CLI config model ids before emission", () => {
76+expect(
77+normalizeConfig({
78+provider: "google-gemini-cli",
79+providerConfig: {
80+baseUrl: "openclaw://google-gemini-cli",
81+models: [
82+{
83+id: "google/gemini-3-pro-preview",
84+name: "Gemini CLI 3 Pro",
85+reasoning: true,
86+input: ["text", "image"],
87+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
88+contextWindow: 1_048_576,
89+maxTokens: 65_536,
90+},
91+],
92+},
93+}),
94+).toMatchObject({
95+baseUrl: "openclaw://google-gemini-cli",
96+models: [{ id: "google/gemini-3.1-pro-preview" }],
97+});
98+});
4799});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。