UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

83 lines (82 loc) • 3.3 kB
import { a as normalizeFastMode } from "../../string-coerce-1VuiLaaR.mjs"; import { a as asOptionalRecord } from "../../record-coerce-TIsquoVR.mjs"; import "../../llm-CJ3KKVO3.mjs"; import "../../string-coerce-runtime-BbIJhy7G.mjs"; import { i as streamSimple } from "../../stream-B2a9zNQj.mjs"; import { n as buildProviderStreamFamilyHooks } from "../../provider-stream-BeFr0nEc.mjs"; import "../../provider-stream-family-ClRPt3YW.mjs"; import { t as resolveOpenAIModelServiceTiers } from "../../service-tier-policy-BDjYtXTR.mjs"; import "../../token-sharing-CmBELw8t.mjs"; import { t as createOpenAINativeWebSearchWrapper } from "../../native-web-search-C7A1Da7K.mjs"; //#region extensions/openai/responses-stream.runtime.ts const { wrapStreamFn } = buildProviderStreamFamilyHooks("openai-responses-defaults"); const SIWC_SERVICE_TIERS = [ "default", "priority", "ultrafast", "slow" ]; function wrapOpenAIResponsesStream(ctx) { let streamContext = ctx; const serviceTiers = ctx.model ? resolveOpenAIModelServiceTiers({ modelId: ctx.model.id, api: ctx.model.api, baseUrl: ctx.model.baseUrl }) : void 0; if (serviceTiers) streamContext = { ...ctx, extraParams: { ...ctx.extraParams, fastMode: () => { if (!serviceTiers.includes("priority")) return false; const raw = ctx.extraParams?.fastMode ?? ctx.extraParams?.fast_mode; const requested = normalizeFastMode(typeof raw === "function" ? raw() : raw); return requested === "ultrafast" ? true : requested; } } }; if (ctx.auth?.mode === "oauth" && ctx.auth.authFlow === "chatgpt-token-sharing") { const underlying = streamContext.streamFn ?? streamSimple; streamContext = { ...streamContext, extraParams: { ...streamContext.extraParams, transport: "sse", responsesServerCompaction: false }, streamFn: (model, context, options) => { const headers = new Headers(options?.headers); headers.set("x-openai-chatpass-test", "codex-direct"); const sharingOptions = { ...options, headers: Object.fromEntries(headers.entries()), transport: "sse", replayResponsesItemIds: false, onPayload: async (payload, payloadModel) => { const transformed = await options?.onPayload?.(payload, payloadModel); const request = asOptionalRecord(transformed ?? payload); if (!request) throw new Error("ChatGPT token sharing requires a Responses request object."); if (request.service_tier != null && !SIWC_SERVICE_TIERS.some((tier) => tier === request.service_tier)) throw new Error(`Sign in with ChatGPT does not support this service tier. Remove serviceTier/service_tier from the model params or select one of: ${SIWC_SERVICE_TIERS.join(", ")}.`); request.store = false; for (const field of [ "context_management", "metadata", "max_output_tokens", "temperature", "top_p", "prompt_cache_retention" ]) delete request[field]; return request; } }; return underlying(model, context, sharingOptions); } }; } return createOpenAINativeWebSearchWrapper(wrapStreamFn?.(streamContext) ?? streamContext.streamFn, { config: ctx.config, nativeWebSearchAllowedByToolPolicy: ctx.nativeWebSearchAllowedByToolPolicy }); } //#endregion export { wrapOpenAIResponsesStream };