UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

84 lines (83 loc) 3.42 kB
import { c as isRecord } from "./utils-CCC-BEJH.js"; import { t as isDiagnosticFlagEnabled } from "./diagnostic-flags-4mY6zjJI.js"; import "./string-coerce-runtime-CEGJWkQ_.js"; import "./diagnostic-runtime-BCe2Aywp.js"; import { i as resolveProviderWebSearchPluginConfig, r as mergeScopedSearchConfig } from "./web-search-provider-config-BQzMMhw8.js"; import { n as buildBraveWebSearchProviderBase } from "./web-search-shared-BP0MpYKA.js"; //#region extensions/brave/src/brave-web-search-provider.ts /** * Brave web-search provider factory. It builds the agent tool definition and * lazy-loads HTTP execution only when a search is run. */ let braveWebSearchRuntimePromise; function loadBraveWebSearchRuntime() { braveWebSearchRuntimePromise ??= import("./brave-web-search-provider.runtime.js"); return braveWebSearchRuntimePromise; } const BraveSearchSchema = { type: "object", properties: { query: { type: "string", description: "Search query string." }, count: { type: "integer", description: "Number of results to return (1-10).", minimum: 1, maximum: 10 }, country: { type: "string", description: "2-letter country code for region-specific results (e.g., 'DE', 'US', 'ALL'). Default: 'US'." }, language: { type: "string", description: "ISO 639-1 language code for results (e.g., 'en', 'de', 'fr')." }, freshness: { type: "string", description: "Filter by time: 'day' (24h), 'week', 'month', or 'year'." }, date_after: { type: "string", description: "Only results published after this date (YYYY-MM-DD)." }, date_before: { type: "string", description: "Only results published before this date (YYYY-MM-DD)." }, search_lang: { type: "string", description: "Brave language code for search results (e.g., 'en', 'de', 'en-gb', 'zh-hans', 'zh-hant', 'pt-br')." }, ui_lang: { type: "string", description: "Locale code for UI elements in language-region format (e.g., 'en-US', 'de-DE', 'fr-FR', 'tr-TR'). Must include region subtag." } } }; function resolveBraveMode(searchConfig) { return (isRecord(searchConfig?.brave) ? searchConfig.brave : void 0)?.mode === "llm-context" ? "llm-context" : "web"; } function createBraveToolDefinition(searchConfig, config) { const braveMode = resolveBraveMode(searchConfig); const diagnosticsEnabled = isDiagnosticFlagEnabled("brave.http", config); return { description: braveMode === "llm-context" ? "Search the web using Brave Search LLM Context API. Returns pre-extracted page content (text chunks, tables, code blocks) optimized for LLM grounding." : "Search the web using Brave Search API. Supports region-specific and localized search via country and language parameters. Returns titles, URLs, and snippets for fast research.", parameters: BraveSearchSchema, execute: async (args) => { const { executeBraveSearch } = await loadBraveWebSearchRuntime(); return await executeBraveSearch(args, searchConfig, { diagnosticsEnabled }); } }; } /** Create the runtime Brave Search provider descriptor. */ function createBraveWebSearchProvider() { return { ...buildBraveWebSearchProviderBase(), createTool: (ctx) => createBraveToolDefinition(mergeScopedSearchConfig(ctx.searchConfig, "brave", resolveProviderWebSearchPluginConfig(ctx.config, "brave"), { mirrorApiKeyToTopLevel: true }), ctx.config) }; } //#endregion export { createBraveWebSearchProvider as t };