{"version":3,"sources":["../src/client.ts","../src/tools/search.ts","../src/tools/extract.ts"],"names":["Parallel","tool","z","objectiveDescription"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Shared Parallel Web client instance\n */\n\ndeclare const __PACKAGE_VERSION__: string;\n\nimport { Parallel } from 'parallel-web';\n\nlet _parallelClient: Parallel | null = null;\n\nexport const parallelClient = new Proxy({} as Parallel, {\n  get(_target, prop: keyof Parallel) {\n    if (!_parallelClient) {\n      _parallelClient = new Parallel({\n        apiKey: process.env['PARALLEL_API_KEY'],\n        defaultHeaders: {\n          'X-Tool-Calling-Package': `npm:@parallel-web/ai-sdk-tools/v${__PACKAGE_VERSION__ ?? '0.0.0'}`,\n        },\n      });\n    }\n    const value = _parallelClient[prop];\n    // Bind methods (e.g. `search`, `extract`) to the real client instance.\n    // They read private fields via `this`; returning them unbound would make\n    // `this` the Proxy and throw \"Cannot read private member\" at call time.\n    return typeof value === 'function' ? value.bind(_parallelClient) : value;\n  },\n});\n","/**\n * Search tool for Parallel Web (v1 Search API)\n */\n\ndeclare const __PACKAGE_VERSION__: string;\n\nimport { tool } from 'ai';\nimport { z } from 'zod';\nimport { Parallel } from 'parallel-web';\nimport type {\n  AdvancedSearchSettings,\n  ExcerptSettings,\n  FetchPolicy,\n} from 'parallel-web/resources/top-level.mjs';\nimport type { SourcePolicy } from 'parallel-web/resources/shared.mjs';\nimport { parallelClient } from '../client.js';\n\n/**\n * Options for creating a custom search tool with code-supplied defaults.\n */\nexport interface CreateSearchToolOptions {\n  /**\n   * API key for Parallel Web. If not provided, falls back to PARALLEL_API_KEY\n   * environment variable.\n   */\n  apiKey?: string;\n\n  /**\n   * Default search mode. 'basic' offers the lowest latency and works best with\n   * 2-3 high-quality search queries. 'advanced' provides higher quality with more\n   * advanced retrieval and compression. Defaults to 'advanced'.\n   */\n  mode?: 'basic' | 'advanced';\n\n  /**\n   * Upper bound on total characters across excerpts from all results. Defaults to\n   * a dynamic value based on the request and client_model.\n   */\n  max_chars_total?: number;\n\n  /**\n   * The model consuming the results, e.g. 'claude-opus-4-7'. Enables optimizations\n   * tailored to the model's capabilities.\n   */\n  client_model?: string;\n\n  /**\n   * Maximum number of search results to return. Defaults to 10.\n   * Nested under advanced_settings in the v1 API.\n   */\n  max_results?: number;\n\n  /**\n   * Excerpt settings for controlling excerpt length.\n   * Nested under advanced_settings in the v1 API.\n   */\n  excerpts?: ExcerptSettings;\n\n  /**\n   * ISO 3166-1 alpha-2 country code for geo-targeted search results.\n   * Nested under advanced_settings in the v1 API.\n   */\n  location?: string;\n\n  /**\n   * Source policy for controlling which domains to include/exclude and freshness.\n   * Nested under advanced_settings in the v1 API.\n   */\n  source_policy?: SourcePolicy | null;\n\n  /**\n   * Fetch policy for controlling cached vs fresh content.\n   * Nested under advanced_settings in the v1 API.\n   */\n  fetch_policy?: FetchPolicy | null;\n\n  /**\n   * Custom tool description. If not provided, uses the default description.\n   */\n  description?: string;\n}\n\nconst objectiveDescription = `Natural-language description of the underlying question or goal driving the search. Used together with search_queries to focus results on the most relevant content. Should be self-contained with enough context to understand the intent of the search.`;\n\nconst searchQueriesDescription = `List of concise keyword search queries, 3-6 words each, which may include search operators. At least one query is required; provide 2-3 for best results. Limited to 5 entries of 200 characters each.`;\n\nconst modeDescription = `Search mode preset. \"basic\" offers the lowest latency and works best with 2-3 high-quality search queries, while \"advanced\" provides higher quality with more advanced retrieval and compression. Defaults to \"advanced\".`;\n\n/**\n * Build an advanced_settings object from code-supplied options, returning\n * undefined when no advanced settings were provided.\n */\nfunction buildAdvancedSearchSettings(\n  options: Pick<\n    CreateSearchToolOptions,\n    'max_results' | 'excerpts' | 'location' | 'source_policy' | 'fetch_policy'\n  >\n): AdvancedSearchSettings | undefined {\n  const settings: AdvancedSearchSettings = {};\n  if (options.excerpts !== undefined)\n    settings.excerpt_settings = options.excerpts;\n  if (options.fetch_policy !== undefined)\n    settings.fetch_policy = options.fetch_policy;\n  if (options.location !== undefined) settings.location = options.location;\n  if (options.max_results !== undefined)\n    settings.max_results = options.max_results;\n  if (options.source_policy !== undefined)\n    settings.source_policy = options.source_policy;\n  return Object.keys(settings).length > 0 ? settings : undefined;\n}\n\n/**\n * Search tool that mirrors the MCP web_search_preview tool.\n * Takes search_queries plus optional objective/mode, returns raw search response.\n */\nexport const searchTool = tool({\n  description: `Purpose: Perform web searches and return results in an LLM-friendly format.\n\nUse the web search tool to search the web and access information from the web. The tool returns ranked, extended web excerpts optimized for LLMs.`,\n  inputSchema: z.object({\n    search_queries: z\n      .array(z.string())\n      .min(1)\n      .describe(searchQueriesDescription),\n    objective: z.string().nullable().optional().describe(objectiveDescription),\n    mode: z\n      .enum(['basic', 'advanced'])\n      .nullable()\n      .optional()\n      .default('advanced')\n      .describe(modeDescription),\n  }),\n\n  execute: async function (\n    { search_queries, objective, mode },\n    { abortSignal }\n  ) {\n    return await parallelClient.search(\n      {\n        search_queries,\n        objective,\n        mode,\n      },\n      {\n        signal: abortSignal,\n      }\n    );\n  },\n});\n\nconst defaultSearchDescription = `Purpose: Perform web searches and return results in an LLM-friendly format.\n\nUse the web search tool to search the web and access information from the web. The tool returns ranked, extended web excerpts optimized for LLMs.`;\n\n/**\n * Factory function to create a search tool with custom defaults.\n *\n * Use this when you want to set defaults for mode, max_chars_total, client_model,\n * or advanced settings (max_results, excerpts, location, source_policy,\n * fetch_policy) in your code, so the LLM only needs to provide search_queries and\n * objective.\n *\n * @example\n * ```ts\n * const mySearchTool = createSearchTool({\n *   mode: 'basic',\n *   max_results: 5,\n *   excerpts: { max_chars_per_result: 5000 },\n * });\n * ```\n */\nexport function createSearchTool(options: CreateSearchToolOptions = {}) {\n  const {\n    apiKey,\n    mode: defaultMode = 'advanced',\n    max_chars_total,\n    client_model,\n    description = defaultSearchDescription,\n  } = options;\n\n  const advanced_settings = buildAdvancedSearchSettings(options);\n\n  const client = apiKey\n    ? new Parallel({\n        apiKey,\n        defaultHeaders: {\n          'X-Tool-Calling-Package': `npm:@parallel-web/ai-sdk-tools/v${__PACKAGE_VERSION__ ?? '0.0.0'}`,\n        },\n      })\n    : parallelClient;\n\n  return tool({\n    description,\n    inputSchema: z.object({\n      search_queries: z\n        .array(z.string())\n        .min(1)\n        .describe(searchQueriesDescription),\n      objective: z\n        .string()\n        .nullable()\n        .optional()\n        .describe(objectiveDescription),\n    }),\n\n    execute: async function ({ search_queries, objective }, { abortSignal }) {\n      return await client.search(\n        {\n          search_queries,\n          objective,\n          mode: defaultMode,\n          max_chars_total,\n          client_model,\n          advanced_settings,\n        },\n        {\n          signal: abortSignal,\n        }\n      );\n    },\n  });\n}\n","/**\n * Extract tool for Parallel Web (v1 Extract API)\n */\n\ndeclare const __PACKAGE_VERSION__: string;\n\nimport { tool } from 'ai';\nimport { z } from 'zod';\nimport { Parallel } from 'parallel-web';\nimport type {\n  AdvancedExtractSettings,\n  ExcerptSettings,\n  FetchPolicy,\n} from 'parallel-web/resources/top-level.mjs';\nimport { parallelClient } from '../client.js';\n\n/**\n * Options for creating a custom extract tool with code-supplied defaults.\n */\nexport interface CreateExtractToolOptions {\n  /**\n   * API key for Parallel Web. If not provided, falls back to PARALLEL_API_KEY\n   * environment variable.\n   */\n  apiKey?: string;\n\n  /**\n   * Excerpt settings for controlling excerpt length. In the v1 API excerpts are\n   * always returned; size is controlled via these settings.\n   * Nested under advanced_settings in the v1 API.\n   */\n  excerpts?: ExcerptSettings;\n\n  /**\n   * Include full content from each URL. Set to true to enable with defaults, false\n   * to disable, or provide FullContentSettings for fine-grained control.\n   * Nested under advanced_settings in the v1 API.\n   */\n  full_content?: AdvancedExtractSettings['full_content'];\n\n  /**\n   * Fetch policy for controlling cached vs fresh content.\n   * Nested under advanced_settings in the v1 API.\n   */\n  fetch_policy?: FetchPolicy | null;\n\n  /**\n   * Upper bound on total characters across excerpts from all extracted results.\n   * Defaults to a dynamic value based on the request and client_model.\n   */\n  max_chars_total?: number;\n\n  /**\n   * The model consuming the results, e.g. 'claude-opus-4-7'. Enables optimizations\n   * tailored to the model's capabilities.\n   */\n  client_model?: string;\n\n  /**\n   * Custom tool description. If not provided, uses the default description.\n   */\n  description?: string;\n}\n\nconst urlsDescription = `List of URLs to extract content from. Must be valid HTTP/HTTPS URLs. Maximum 20 URLs per request.`;\n\nconst objectiveDescription = `Natural-language description of what information you're looking for from the URLs. Used to focus excerpts on the most relevant content.`;\n\n/**\n * Build an advanced_settings object from code-supplied options, returning\n * undefined when no advanced settings were provided.\n */\nfunction buildAdvancedExtractSettings(\n  options: Pick<\n    CreateExtractToolOptions,\n    'excerpts' | 'full_content' | 'fetch_policy'\n  >\n): AdvancedExtractSettings | undefined {\n  const settings: AdvancedExtractSettings = {};\n  if (options.excerpts !== undefined)\n    settings.excerpt_settings = options.excerpts;\n  if (options.fetch_policy !== undefined)\n    settings.fetch_policy = options.fetch_policy;\n  if (options.full_content !== undefined)\n    settings.full_content = options.full_content;\n  return Object.keys(settings).length > 0 ? settings : undefined;\n}\n\n/**\n * Extract tool that mirrors the MCP web_fetch tool.\n * Takes urls and optional objective, returns raw extract response.\n */\nexport const extractTool = tool({\n  description: `Purpose: Fetch and extract relevant content from specific web URLs.\n\nIdeal Use Cases:\n- Extracting content from specific URLs you've already identified\n- Exploring URLs returned by a web search in greater depth`,\n  inputSchema: z.object({\n    urls: z.array(z.string()).describe(urlsDescription),\n    objective: z.string().nullable().optional().describe(objectiveDescription),\n  }),\n\n  execute: async function ({ urls, objective }, { abortSignal }) {\n    return await parallelClient.extract(\n      {\n        urls,\n        objective,\n      },\n      {\n        signal: abortSignal,\n      }\n    );\n  },\n});\n\nconst defaultExtractDescription = `Purpose: Fetch and extract relevant content from specific web URLs.\n\nIdeal Use Cases:\n- Extracting content from specific URLs you've already identified\n- Exploring URLs returned by a web search in greater depth`;\n\n/**\n * Factory function to create an extract tool with custom defaults.\n *\n * Use this when you want to set defaults for excerpts, full_content,\n * fetch_policy, max_chars_total, or client_model in your code, so the LLM only\n * needs to provide urls and objective.\n *\n * @example\n * ```ts\n * const myExtractTool = createExtractTool({\n *   excerpts: { max_chars_per_result: 5000 },\n *   full_content: true,\n * });\n * ```\n */\nexport function createExtractTool(options: CreateExtractToolOptions = {}) {\n  const {\n    apiKey,\n    max_chars_total,\n    client_model,\n    description = defaultExtractDescription,\n  } = options;\n\n  const advanced_settings = buildAdvancedExtractSettings(options);\n\n  const client = apiKey\n    ? new Parallel({\n        apiKey,\n        defaultHeaders: {\n          'X-Tool-Calling-Package': `npm:@parallel-web/ai-sdk-tools/v${__PACKAGE_VERSION__ ?? '0.0.0'}`,\n        },\n      })\n    : parallelClient;\n\n  return tool({\n    description,\n    inputSchema: z.object({\n      urls: z.array(z.string()).describe(urlsDescription),\n      objective: z\n        .string()\n        .nullable()\n        .optional()\n        .describe(objectiveDescription),\n    }),\n\n    execute: async function ({ urls, objective }, { abortSignal }) {\n      return await client.extract(\n        {\n          urls,\n          objective,\n          max_chars_total,\n          client_model,\n          advanced_settings,\n        },\n        {\n          signal: abortSignal,\n        }\n      );\n    },\n  });\n}\n"]}