UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

98 lines (97 loc) 4.67 kB
import { n as createParallelFreeWebSearchProviderBase, t as createParallelWebSearchProviderBase } from "./parallel-web-search-provider.shared-DS9va3Vo.js"; import "./parallel-search-normalize-BrqPQAw_.js"; //#region extensions/parallel/src/parallel-web-search-provider.ts const PARALLEL_MAX_SEARCH_COUNT = 40; const PARALLEL_MAX_SEARCH_QUERIES = 5; const PARALLEL_MAX_SEARCH_QUERY_CHARS = 200; const PARALLEL_MAX_OBJECTIVE_CHARS = 5e3; const PARALLEL_MAX_SESSION_ID_CHARS = 1e3; const PARALLEL_MAX_CLIENT_MODEL_CHARS = 100; let parallelWebSearchRuntimePromise; function loadParallelWebSearchRuntime() { parallelWebSearchRuntimePromise ??= import("./parallel-web-search-provider.runtime.js"); return parallelWebSearchRuntimePromise; } const ParallelSearchSchema = { type: "object", properties: { objective: { type: "string", description: "Natural-language description of the underlying question or goal driving the search. Should be self-contained with enough context to understand the intent. Used together with search_queries to focus results on the most relevant content.", maxLength: PARALLEL_MAX_OBJECTIVE_CHARS }, search_queries: { type: "array", description: "Concise keyword search queries, 3-6 words each. Provide 2-3 diverse queries for best results (max 5). Vary entity names, synonyms, and angles. Each query is a keyword phrase, not a sentence; do not use site: operators.", items: { type: "string", maxLength: PARALLEL_MAX_SEARCH_QUERY_CHARS }, minItems: 1, maxItems: PARALLEL_MAX_SEARCH_QUERIES }, count: { type: "integer", description: "Number of results to return (1-40).", minimum: 1, maximum: PARALLEL_MAX_SEARCH_COUNT }, session_id: { type: "string", description: "Optional session id returned by an earlier Parallel search. Pass it on follow-up searches that are part of the same task to keep Parallel's server-side context grouped (look for `sessionId` in the prior tool result).", maxLength: PARALLEL_MAX_SESSION_ID_CHARS }, client_model: { type: "string", description: "The identifier of the LLM model making this tool call (e.g. 'claude-opus-4-7', 'gpt-5.5', 'gemini-3.1-pro'). Pass the exact active model slug verbatim; never shorten or substitute a family alias like 'gpt-5'. Lets Parallel tailor default settings for your model's capabilities.", maxLength: PARALLEL_MAX_CLIENT_MODEL_CHARS } }, required: ["objective", "search_queries"], additionalProperties: false }; function createParallelWebSearchProvider() { return { ...createParallelWebSearchProviderBase(), createTool: (ctx) => ({ description: "Search the web using Parallel. Returns ranked, LLM-optimized dense excerpts from web sources. Pass an `objective` describing the underlying question along with 2-3 short keyword `search_queries` (Parallel's recommended pairing). For multi-step research, thread the prior result's `sessionId` back in as `session_id` to keep Parallel's context grouped.", parameters: ParallelSearchSchema, execute: async (args) => { const { executeParallelWebSearchProviderTool } = await loadParallelWebSearchRuntime(); return await executeParallelWebSearchProviderTool(ctx, args); } }) }; } //#endregion //#region extensions/parallel/src/parallel-free-web-search-provider.ts const ParallelFreeSearchSchema = { ...ParallelSearchSchema, properties: { ...ParallelSearchSchema.properties, session_id: { ...ParallelSearchSchema.properties.session_id, maxLength: 100 } } }; let parallelFreeWebSearchRuntimePromise; function loadParallelFreeWebSearchRuntime() { parallelFreeWebSearchRuntimePromise ??= import("./parallel-free-web-search-provider.runtime.js"); return parallelFreeWebSearchRuntimePromise; } function createParallelFreeWebSearchProvider() { return { ...createParallelFreeWebSearchProviderBase(), createTool: (ctx) => ({ description: "Search the web using Parallel's free Search MCP (no API key). Returns ranked, LLM-optimized dense excerpts from web sources. Pass an `objective` describing the underlying question along with 2-3 short keyword `search_queries` (Parallel's recommended pairing). For multi-step research, thread the prior result's `sessionId` back in as `session_id` to keep Parallel's context grouped.", parameters: ParallelFreeSearchSchema, execute: async (args, context) => { const { executeParallelFreeWebSearchProviderTool } = await loadParallelFreeWebSearchRuntime(); return await executeParallelFreeWebSearchProviderTool(ctx, args, context?.signal); } }) }; } //#endregion export { createParallelWebSearchProvider as n, createParallelFreeWebSearchProvider as t };