Files
openclaw/extensions/openai/replay-policy.ts
2026-06-04 21:33:54 -04:00

34 lines
992 B
TypeScript

// Openai plugin module implements replay policy behavior.
import type {
ProviderReplayPolicy,
ProviderReplayPolicyContext,
} from "openclaw/plugin-sdk/plugin-entry";
const RESPONSES_FAMILY_APIS = new Set([
"openai-responses",
"openai-chatgpt-responses",
"azure-openai-responses",
]);
/**
* Returns the provider-owned replay policy for OpenAI-family transports.
*/
export function buildOpenAIReplayPolicy(ctx: ProviderReplayPolicyContext): ProviderReplayPolicy {
const isResponsesFamily = RESPONSES_FAMILY_APIS.has(ctx.modelApi ?? "");
return {
sanitizeMode: "images-only",
applyAssistantFirstOrderingFix: false,
validateGeminiTurns: false,
validateAnthropicTurns: false,
...(isResponsesFamily ? { allowSyntheticToolResults: true } : {}),
...(ctx.modelApi === "openai-completions"
? {
sanitizeToolCallIds: true,
toolCallIdMode: "strict" as const,
}
: {
sanitizeToolCallIds: false,
}),
};
}