mirror of https://github.com/openclaw/openclaw.git
fix(agents): include azure-openai in Responses API store override
The `OPENAI_RESPONSES_PROVIDERS` set only contained `openai` and `azure-openai-responses`, so users who configure the `azure-openai` provider with `api: "openai-responses"` never had pi-ai's upstream `store: false` overridden to `true`. This caused all Azure OpenAI multi-turn cron jobs and embedded agent runs to fail with HTTP 400 "store is set to false" after the 2026.3.8 store-stripping changes. Add `azure-openai` to the provider set and a regression test. Fixes #42800
This commit is contained in:
parent
a2e30824e6
commit
19b3c46ebb
|
|
@ -92,6 +92,7 @@ Docs: https://docs.openclaw.ai
|
|||
- Security/system.run: fail closed for approval-backed interpreter/runtime commands when OpenClaw cannot bind exactly one concrete local file operand, while extending best-effort direct-file binding to additional runtime forms. Thanks @tdjackey for reporting.
|
||||
- Gateway/session reset auth: split conversation `/new` and `/reset` handling away from the admin-only `sessions.reset` control-plane RPC so write-scoped gateway callers can no longer reach the privileged reset path through `agent`. Thanks @tdjackey for reporting.
|
||||
- Telegram/final preview delivery followup: keep ambiguous missing-`message_id` finals only when a preview was already visible, while first-preview/no-id cases still fall back so Telegram users do not lose the final reply. (#41932) thanks @hougangdev.
|
||||
- Agents/Azure OpenAI Responses: include the `azure-openai` provider in the Responses API store override so Azure OpenAI multi-turn cron jobs and embedded agent runs no longer fail with HTTP 400 "store is set to false". Fixes #42800. Thanks @njwoodard.
|
||||
|
||||
## 2026.3.8
|
||||
|
||||
|
|
|
|||
|
|
@ -1449,6 +1449,20 @@ describe("applyExtraParamsToAgent", () => {
|
|||
expect(payload.store).toBe(true);
|
||||
});
|
||||
|
||||
it("forces store=true for azure-openai provider with openai-responses API (#42800)", () => {
|
||||
const payload = runResponsesPayloadMutationCase({
|
||||
applyProvider: "azure-openai",
|
||||
applyModelId: "gpt-5-mini",
|
||||
model: {
|
||||
api: "openai-responses",
|
||||
provider: "azure-openai",
|
||||
id: "gpt-5-mini",
|
||||
baseUrl: "https://myresource.openai.azure.com/openai/v1",
|
||||
} as unknown as Model<"openai-responses">,
|
||||
});
|
||||
expect(payload.store).toBe(true);
|
||||
});
|
||||
|
||||
it("injects configured OpenAI service_tier into Responses payloads", () => {
|
||||
const payload = runResponsesPayloadMutationCase({
|
||||
applyProvider: "openai",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { log } from "./logger.js";
|
|||
type OpenAIServiceTier = "auto" | "default" | "flex" | "priority";
|
||||
|
||||
const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
|
||||
const OPENAI_RESPONSES_PROVIDERS = new Set(["openai", "azure-openai-responses"]);
|
||||
const OPENAI_RESPONSES_PROVIDERS = new Set(["openai", "azure-openai", "azure-openai-responses"]);
|
||||
|
||||
function isDirectOpenAIBaseUrl(baseUrl: unknown): boolean {
|
||||
if (typeof baseUrl !== "string" || !baseUrl.trim()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue