diff --git a/src/agents/model-compat.test.ts b/src/agents/model-compat.test.ts index ce6d12d4b..6311a1229 100644 --- a/src/agents/model-compat.test.ts +++ b/src/agents/model-compat.test.ts @@ -24,6 +24,15 @@ describe("normalizeModelCompat", () => { expect(normalized.compat?.supportsDeveloperRole).toBe(false); }); + it("forces supportsStore off for ovhcloud models", () => { + const model = baseModel(); + model.provider = "ovhcloud"; + model.baseUrl = "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1"; + delete (model as { compat?: unknown }).compat; + const normalized = normalizeModelCompat(model); + expect(normalized.compat?.supportsStore).toBe(false); + }); + it("leaves non-zai models untouched", () => { const model = { ...baseModel(), diff --git a/src/agents/model-compat.ts b/src/agents/model-compat.ts index 741819073..8ec5f9ffa 100644 --- a/src/agents/model-compat.ts +++ b/src/agents/model-compat.ts @@ -5,16 +5,27 @@ function isOpenAiCompletionsModel(model: Model): model is Model<"openai-com } export function normalizeModelCompat(model: Model): Model { + if (!isOpenAiCompletionsModel(model)) return model; + const baseUrl = model.baseUrl ?? ""; const isZai = model.provider === "zai" || baseUrl.includes("api.z.ai"); - if (!isZai || !isOpenAiCompletionsModel(model)) return model; + const isOvhcloud = model.provider === "ovhcloud" || baseUrl.includes("ovh.net"); + if (!isZai && !isOvhcloud) return model; const openaiModel = model as Model<"openai-completions">; const compat = openaiModel.compat ?? undefined; - if (compat?.supportsDeveloperRole === false) return model; - openaiModel.compat = compat - ? { ...compat, supportsDeveloperRole: false } - : { supportsDeveloperRole: false }; + if (isZai) { + if (compat?.supportsDeveloperRole === false) return model; + openaiModel.compat = compat + ? { ...compat, supportsDeveloperRole: false } + : { supportsDeveloperRole: false }; + } + + if (isOvhcloud) { + if (compat?.supportsStore === false) return model; + openaiModel.compat = compat ? { ...compat, supportsStore: false } : { supportsStore: false }; + } + return openaiModel; }