mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-27 00:52:05 +00:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import type { OpenClawConfig } from "../../config/config.js";
|
|
import { resolveBundledWebSearchPluginId } from "../../plugins/bundled-web-search-provider-ids.js";
|
|
import type { RuntimeWebSearchMetadata } from "../../secrets/runtime-web-tools.types.js";
|
|
import {
|
|
resolveWebSearchDefinition,
|
|
resolveWebSearchProviderId,
|
|
} from "../../web-search/runtime.js";
|
|
import type { AnyAgentTool } from "./common.js";
|
|
import { jsonResult } from "./common.js";
|
|
import { SEARCH_CACHE } from "./web-search-provider-common.js";
|
|
|
|
export function createWebSearchTool(options?: {
|
|
config?: OpenClawConfig;
|
|
sandboxed?: boolean;
|
|
runtimeWebSearch?: RuntimeWebSearchMetadata;
|
|
}): AnyAgentTool | null {
|
|
const runtimeProviderId =
|
|
options?.runtimeWebSearch?.selectedProvider ?? options?.runtimeWebSearch?.providerConfigured;
|
|
const resolved = resolveWebSearchDefinition({
|
|
...options,
|
|
preferRuntimeProviders:
|
|
Boolean(runtimeProviderId) && !resolveBundledWebSearchPluginId(runtimeProviderId),
|
|
});
|
|
if (!resolved) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
label: "Web Search",
|
|
name: "web_search",
|
|
description: resolved.definition.description,
|
|
parameters: resolved.definition.parameters,
|
|
execute: async (_toolCallId, args) => jsonResult(await resolved.definition.execute(args)),
|
|
};
|
|
}
|
|
|
|
export const __testing = {
|
|
SEARCH_CACHE,
|
|
resolveSearchProvider: (search?: Parameters<typeof resolveWebSearchProviderId>[0]["search"]) =>
|
|
resolveWebSearchProviderId({ search }),
|
|
};
|