UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

44 lines (43 loc) • 2 kB
import { c as isRecord } from "./record-coerce-TIsquoVR.mjs"; import "./string-coerce-runtime-B1b8UNzb.mjs"; import { d as createPayloadPatchStreamWrapper } from "./provider-stream-shared-BlLuPG7g.mjs"; import { t as resolveNativeWebSearch } from "./native-web-search-policy-DF3LKnkU.mjs"; //#region extensions/openai/native-web-search.ts const OPENAI_WEB_SEARCH_TOOL = { type: "web_search" }; function isNativeWebSearchTool(tool) { return isRecord(tool) && tool.type === OPENAI_WEB_SEARCH_TOOL.type; } function isManagedWebSearchTool(tool) { return isRecord(tool) && tool.type === "function" && tool.name === OPENAI_WEB_SEARCH_TOOL.type; } function raiseMinimalReasoningForOpenAINativeWebSearch(payload) { const reasoning = payload.reasoning; if (!isRecord(reasoning) || reasoning.effort !== "minimal") return; reasoning.effort = "low"; } function patchOpenAINativeWebSearchPayload(payload) { if (!isRecord(payload)) return; const existingTools = Array.isArray(payload.tools) ? payload.tools : []; const filteredTools = existingTools.filter((tool) => !isManagedWebSearchTool(tool)); if (filteredTools.some(isNativeWebSearchTool)) { if (filteredTools.length !== existingTools.length) payload.tools = filteredTools; raiseMinimalReasoningForOpenAINativeWebSearch(payload); return; } payload.tools = [...filteredTools, OPENAI_WEB_SEARCH_TOOL]; raiseMinimalReasoningForOpenAINativeWebSearch(payload); } function createOpenAINativeWebSearchWrapper(baseStreamFn, params) { return createPayloadPatchStreamWrapper(baseStreamFn, ({ payload, options }) => { options?.openclawCodeModeAllowedHostedToolTypes?.add(OPENAI_WEB_SEARCH_TOOL.type); patchOpenAINativeWebSearchPayload(payload); }, { shouldPatch: ({ model }) => params.nativeWebSearchAllowedByToolPolicy !== false && resolveNativeWebSearch({ config: params.config, provider: model.provider, modelId: model.id, api: model.api, baseUrl: model.baseUrl }) }); } //#endregion export { createOpenAINativeWebSearchWrapper as t };