


























@@ -260,33 +260,66 @@ function resolveWebSearchProviderLoadScope(params: {
260260return onlyPluginIds ? { onlyPluginIds } : {};
261261}
262262263-export function resolveWebSearchDefinition(
264-options?: ResolveWebSearchDefinitionParams,
265-): { provider: PluginWebSearchProviderEntry; definition: WebSearchProviderToolDefinition } | null {
263+type WebSearchRequestContext = {
264+config?: OpenClawConfig;
265+search?: WebSearchConfig;
266+runtimeWebSearch?: RuntimeWebSearchMetadata;
267+};
268+269+function resolveWebSearchRequestContext(
270+options?: Pick<
271+ResolveWebSearchDefinitionParams,
272+"config" | "preferInputConfig" | "runtimeWebSearch"
273+>,
274+): WebSearchRequestContext {
266275const config = resolveWebSearchRuntimeConfig({
267276config: options?.config,
268277preferInputConfig: options?.preferInputConfig,
269278});
270-const search = resolveSearchConfig(config);
271-const runtimeWebSearch = options?.runtimeWebSearch ?? getActiveRuntimeWebToolsMetadata()?.search;
272-const loadScope = resolveWebSearchProviderLoadScope({
279+return {
273280 config,
274- search,
275- runtimeWebSearch,
276-providerId: options?.providerId,
277-includeRuntimeSelection: Boolean(options?.preferRuntimeProviders),
281+search: resolveSearchConfig(config),
282+runtimeWebSearch: options?.runtimeWebSearch ?? getActiveRuntimeWebToolsMetadata()?.search,
283+};
284+}
285+286+function loadSortedWebSearchProviders(
287+params: WebSearchRequestContext & {
288+providerId?: string;
289+preferRuntimeProviders?: boolean;
290+},
291+): PluginWebSearchProviderEntry[] {
292+const loadScope = resolveWebSearchProviderLoadScope({
293+config: params.config,
294+search: params.search,
295+runtimeWebSearch: params.runtimeWebSearch,
296+providerId: params.providerId,
297+includeRuntimeSelection: Boolean(params.preferRuntimeProviders),
278298});
279-const providers = sortWebSearchProvidersForAutoDetect(
280-options?.preferRuntimeProviders
299+return sortWebSearchProvidersForAutoDetect(
300+params.preferRuntimeProviders
281301 ? resolveRuntimeWebSearchProviders({
282- config,
302+config: params.config,
283303 ...loadScope,
284304})
285305 : resolvePluginWebSearchProviders({
286- config,
306+config: params.config,
287307 ...loadScope,
288308}),
289309);
310+}
311+312+export function resolveWebSearchDefinition(
313+options?: ResolveWebSearchDefinitionParams,
314+): { provider: PluginWebSearchProviderEntry; definition: WebSearchProviderToolDefinition } | null {
315+const { config, search, runtimeWebSearch } = resolveWebSearchRequestContext(options);
316+const providers = loadSortedWebSearchProviders({
317+ config,
318+ search,
319+ runtimeWebSearch,
320+providerId: options?.providerId,
321+preferRuntimeProviders: options?.preferRuntimeProviders,
322+});
290323return resolveWebProviderDefinition({
291324 config,
292325toolConfig: search as Record<string, unknown> | undefined,
@@ -326,34 +359,18 @@ export function resolveWebSearchDefinition(
326359function resolveWebSearchCandidates(
327360options?: ResolveWebSearchDefinitionParams,
328361): PluginWebSearchProviderEntry[] {
329-const config = resolveWebSearchRuntimeConfig({
330-config: options?.config,
331-preferInputConfig: options?.preferInputConfig,
332-});
333-const search = resolveSearchConfig(config);
334-const runtimeWebSearch = options?.runtimeWebSearch ?? getActiveRuntimeWebToolsMetadata()?.search;
362+const { config, search, runtimeWebSearch } = resolveWebSearchRequestContext(options);
335363if (!resolveWebSearchEnabled({ search, sandboxed: options?.sandboxed })) {
336364return [];
337365}
338-const loadScope = resolveWebSearchProviderLoadScope({
366+367+const providers = loadSortedWebSearchProviders({
339368 config,
340369 search,
341370 runtimeWebSearch,
342371providerId: options?.providerId,
343-includeRuntimeSelection: Boolean(options?.preferRuntimeProviders),
344-});
345-346-const providers = sortWebSearchProvidersForAutoDetect(
347-options?.preferRuntimeProviders
348- ? resolveRuntimeWebSearchProviders({
349- config,
350- ...loadScope,
351-})
352- : resolvePluginWebSearchProviders({
353- config,
354- ...loadScope,
355-}),
356-).filter(Boolean);
372+preferRuntimeProviders: options?.preferRuntimeProviders,
373+}).filter(Boolean);
357374if (providers.length === 0) {
358375return [];
359376}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。