UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

99 lines (98 loc) 5.06 kB
import { a as normalizeLowercaseStringOrEmpty } from "./string-coerce-mnp54Vah.js"; import { r as logVerbose } from "./globals-GTrXU4s9.js"; import { n as getActiveRuntimeWebToolsMetadata } from "./runtime-web-tools-state-fE_he60Y.js"; import { o as sortWebFetchProvidersForAutoDetect } from "./web-search-providers.shared-DMAveALG.js"; import { n as resolveRuntimeWebFetchProviders, t as resolvePluginWebFetchProviders } from "./web-fetch-providers.runtime.js"; import { a as resolveWebProviderDefinition, i as resolveWebProviderConfig, n as providerRequiresCredential, r as readWebProviderEnvValue, t as hasWebProviderEntryCredential } from "./provider-runtime-shared-Da_3Al2P.js"; //#region src/web-fetch/runtime.ts /** Runtime provider selection and tool construction for the `web_fetch` tool. */ /** Resolves whether web_fetch is enabled for the current config/sandbox. */ function resolveWebFetchEnabled(params) { if (typeof params.fetch?.enabled === "boolean") return params.fetch.enabled; return true; } function resolveFetchConfig(config) { return resolveWebProviderConfig(config, "fetch"); } function hasEntryCredential(provider, config, fetch) { return hasWebProviderEntryCredential({ provider, config, toolConfig: fetch, resolveRawValue: ({ provider: currentProvider, config: currentConfig, toolConfig }) => currentProvider.getConfiguredCredentialValue?.(currentConfig) ?? currentProvider.getCredentialValue(toolConfig), resolveFallbackRawValue: ({ provider: currentProvider, config: currentConfig }) => currentProvider.getConfiguredCredentialFallback?.(currentConfig)?.value, resolveEnvValue: ({ provider: currentProvider }) => readWebProviderEnvValue(currentProvider.envVars) }); } /** Reports whether a web_fetch provider has usable credentials. */ function isWebFetchProviderConfigured(params) { return hasEntryCredential(params.provider, params.config, resolveFetchConfig(params.config)); } /** Lists web_fetch providers available to runtime selection. */ function listWebFetchProviders(params) { return resolvePluginWebFetchProviders({ config: params?.config }); } /** Lists plugin-configured web_fetch providers. */ function listConfiguredWebFetchProviders(params) { return resolvePluginWebFetchProviders({ config: params?.config }); } /** Resolves the configured or auto-detected web_fetch provider id. */ function resolveWebFetchProviderId(params) { const providers = sortWebFetchProvidersForAutoDetect(params.providers ?? resolvePluginWebFetchProviders({ config: params.config })); const raw = params.fetch && "provider" in params.fetch ? normalizeLowercaseStringOrEmpty(params.fetch.provider) : ""; if (raw) { const explicit = providers.find((provider) => provider.id === raw); if (explicit) return explicit.id; } for (const provider of providers) { if (!providerRequiresCredential(provider)) { logVerbose(`web_fetch: ${raw ? `invalid configured provider "${raw}", ` : ""}auto-detected keyless provider "${provider.id}"`); return provider.id; } if (!hasEntryCredential(provider, params.config, params.fetch)) continue; logVerbose(`web_fetch: ${raw ? `invalid configured provider "${raw}", ` : ""}auto-detected "${provider.id}" from available API keys`); return provider.id; } return ""; } function resolveConfiguredWebFetchProviderId(params) { const raw = params.fetch && "provider" in params.fetch ? normalizeLowercaseStringOrEmpty(params.fetch.provider) : ""; if (!raw) return; return params.providers.find((provider) => provider.id === raw)?.id; } /** Resolves the executable web_fetch provider tool definition. */ function resolveWebFetchDefinition(options) { const fetch = resolveWebProviderConfig(options?.config, "fetch"); const runtimeWebFetch = options?.runtimeWebFetch ?? getActiveRuntimeWebToolsMetadata()?.fetch; const providers = sortWebFetchProvidersForAutoDetect(options?.sandboxed ? resolvePluginWebFetchProviders({ config: options?.config, origin: "bundled" }) : options?.preferRuntimeProviders ? resolveRuntimeWebFetchProviders({ config: options?.config }) : resolvePluginWebFetchProviders({ config: options?.config })); return resolveWebProviderDefinition({ config: options?.config, toolConfig: fetch, runtimeMetadata: runtimeWebFetch, sandboxed: options?.sandboxed, providerId: options?.providerId ?? resolveConfiguredWebFetchProviderId({ fetch, providers }), providers, resolveEnabled: ({ toolConfig, sandboxed }) => resolveWebFetchEnabled({ fetch: toolConfig, sandboxed }), resolveAutoProviderId: ({ config, toolConfig, providers: providersLocal }) => resolveWebFetchProviderId({ config, fetch: toolConfig, providers: providersLocal }), createTool: ({ provider, config, toolConfig, runtimeMetadata }) => provider.createTool({ config, fetchConfig: toolConfig, runtimeMetadata }) }); } //#endregion export { resolveWebFetchEnabled as a, resolveWebFetchDefinition as i, listConfiguredWebFetchProviders as n, resolveWebFetchProviderId as o, listWebFetchProviders as r, isWebFetchProviderConfigured as t };