fix(providers): strip store param for non-Responses APIs when supportsStore=false

shouldStripResponsesStore only stripped store for openai-responses
API models, but upstream pi-ai sends store:false for all API types.
Providers like Cerebras that use openai-completions reject the unknown
store parameter with HTTP 400.

Remove the OPENAI_RESPONSES_APIS guard so store is stripped for any
model that declares compat.supportsStore=false regardless of API type.

Fixes #51058
This commit is contained in:
Matt Van Horn 2026-03-20 08:31:31 -07:00
parent 50ce9ac1c6
commit 11f6265c86
No known key found for this signature in database
2 changed files with 24 additions and 4 deletions

View File

@ -2143,6 +2143,27 @@ describe("applyExtraParamsToAgent", () => {
expect(payload.context_management).toEqual([{ type: "compaction", compact_threshold: 12_345 }]);
});
it("strips store from payload for openai-completions providers with supportsStore=false (#51058)", () => {
const payload = runResponsesPayloadMutationCase({
applyProvider: "cerebras",
applyModelId: "llama3.1-8b",
model: {
api: "openai-completions",
provider: "cerebras",
id: "llama3.1-8b",
name: "llama3.1-8b",
baseUrl: "https://api.cerebras.ai/v1",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 128_000,
maxTokens: 8_192,
compat: { supportsStore: false },
} as unknown as Model<"openai-completions">,
});
expect(payload).not.toHaveProperty("store");
});
it("auto-injects OpenAI Responses context_management compaction for direct OpenAI models", () => {
const payload = runResponsesPayloadMutationCase({
applyProvider: "openai",

View File

@ -148,10 +148,9 @@ function shouldStripResponsesStore(
if (forceStore) {
return false;
}
if (typeof model.api !== "string") {
return false;
}
return OPENAI_RESPONSES_APIS.has(model.api) && model.compat?.supportsStore === false;
// Strip store for ANY API type when the model declares supportsStore=false.
// Providers like Cerebras reject unknown parameters including `store` (#51058).
return model.compat?.supportsStore === false;
}
function shouldStripResponsesPromptCache(model: { api?: unknown; baseUrl?: unknown }): boolean {