import { resolveProviderWebSearchPluginConfig, setProviderWebSearchPluginConfigValue, type WebSearchProviderPlugin, } from "openclaw/plugin-sdk/provider-web-search-contract"; function getTopLevelCredentialValue(searchConfig?: Record): unknown { return searchConfig?.apiKey; } function setTopLevelCredentialValue( searchConfigTarget: Record, value: unknown, ): void { searchConfigTarget.apiKey = value; } export function createBraveWebSearchProvider(): WebSearchProviderPlugin { return { id: "brave", label: "Brave Search", hint: "Structured results ยท country/language/time filters", onboardingScopes: ["text-inference"], credentialLabel: "Brave Search API key", envVars: ["BRAVE_API_KEY"], placeholder: "BSA...", signupUrl: "https://brave.com/search/api/", docsUrl: "https://docs.openclaw.ai/brave-search", autoDetectOrder: 10, credentialPath: "plugins.entries.brave.config.webSearch.apiKey", inactiveSecretPaths: ["plugins.entries.brave.config.webSearch.apiKey"], getCredentialValue: getTopLevelCredentialValue, setCredentialValue: setTopLevelCredentialValue, getConfiguredCredentialValue: (config) => resolveProviderWebSearchPluginConfig(config, "brave")?.apiKey, setConfiguredCredentialValue: (configTarget, value) => { setProviderWebSearchPluginConfigValue(configTarget, "brave", "apiKey", value); }, createTool: () => null, }; }