{"version":3,"sources":["../../../node_modules/tsup/assets/cjs_shims.js","../../../src/tools/search/wikipedia.ts"],"names":["getImportMetaUrl","document","URL","__filename","href","currentScript","tagName","toUpperCase","src","baseURI","importMetaUrl","wiki","default","setLang","WikipediaToolOutput","SearchToolOutput","results","maxSerializedLength","register","getTextContent","isEmpty","target","length","response","JSON","stringify","Infinity","substring","createSnapshot","loadSnapshot","snapshot","Object","assign","WikipediaTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","config","_mappers","categories","page","content","html","markdown","runOptions","then","result","url","fullurl","base","protocol","hostname","port","filter","Boolean","join","replace","service","Turndown","use","turndownPlugin","gfm","remove","node","extraction","fields","turndown","images","intro","infobox","links","coordinates","langLinks","references","related","summary","tables","_defaultRunOptions","unwrapTags","Set","unwrapTagsSelector","Array","from","values","ignoredTags","ignoredClasses","ignoredRoles","ignoredSelector","map","cls","role","transform","output","toLowerCase","has","className","trim","split","table","querySelectorAll","colspan","parseInt","getAttribute","insertAdjacentHTML","removeAttribute","ignoredTargets","childNode","unwrapTargets","reverse","push","outerHTML","innerHTML","filters","minPageNameSimilarity","excludeOthersOnExactMatch","search","limit","suggestion","maxDescriptionLength","_createRunOptions","overrides","baseKeys","R","pipe","mergeDeep","pick","options","_run","input","_options","patchAxiosUserAgent","searchRawResults","bestCandidates","extractBestCandidates","Promise","all","pageId","redirect","preload","keys","key","asyncProperties","title","resolve","mapValues","value","catch","undefined","candidates","normalize","text","stringComparison","jaccardIndex","sortMatch","candidate","index","pageid","score","rating","sort","a","b","at","enumerable","patched","doPatch","entry","defaults","headers","common","axios","createRequire","require","axiosCjs"],"mappings":"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","file":"wikipedia.cjs","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n  typeof document === \"undefined\" \n    ? new URL(`file:${__filename}`).href \n    : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n      ? document.currentScript.src \n      : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Page, pageFunctions, searchOptions } from \"wikipedia\";\nimport wiki from \"wikipedia\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\nimport { keys, mapValues } from \"remeda\";\nimport { ArrayKeys, Common } from \"@/internals/types.js\";\nimport {\n  SearchToolOptions,\n  SearchToolOutput,\n  SearchToolResult,\n  SearchToolRunOptions,\n} from \"./base.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { z } from \"zod\";\nimport { Tool, ToolEmitter, ToolInput } from \"@/tools/base.js\";\nimport Turndown from \"turndown\";\n// @ts-expect-error missing types\nimport turndownPlugin from \"joplin-turndown-plugin-gfm\";\nimport stringComparison from \"string-comparison\";\nimport type { pageResult } from \"wikipedia\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nwiki.default.setLang(\"en\");\n\nexport interface SearchOptions extends searchOptions {}\n\nexport interface FilterOptions {\n  excludeOthersOnExactMatch?: boolean;\n  minPageNameSimilarity?: number;\n}\n\nexport type PageFunctions = Record<\n  pageFunctions,\n  {\n    transform?: <T>(output: T) => T;\n  }\n> & {\n  markdown: {\n    transform?: (output: string) => string;\n    filter?: (node: HTMLElement) => boolean;\n  };\n};\n\nexport interface ExtractionOptions {\n  fields?: Partial<PageFunctions>;\n}\n\nexport interface OutputOptions {\n  maxSerializedLength?: number;\n  maxDescriptionLength?: number;\n}\n\nexport interface WikipediaToolOptions extends SearchToolOptions {\n  filters?: FilterOptions;\n  search?: SearchOptions;\n  extraction?: ExtractionOptions;\n  output?: OutputOptions;\n}\n\nexport interface WikipediaToolRunOptions extends SearchToolRunOptions {\n  filters?: FilterOptions;\n  search?: SearchOptions;\n  extraction?: ExtractionOptions;\n  output?: OutputOptions;\n}\n\ntype PageWithMarkdown = Page & { markdown: () => Promise<string> };\n\ntype ResultFields = { [K in keyof PageFunctions]: Awaited<ReturnType<PageWithMarkdown[K]>> };\n\nexport interface WikipediaToolResult extends SearchToolResult {\n  fields: Partial<ResultFields>;\n}\n\nexport class WikipediaToolOutput extends SearchToolOutput<WikipediaToolResult> {\n  constructor(\n    public readonly results: WikipediaToolResult[],\n    protected readonly maxSerializedLength: number,\n  ) {\n    super(results);\n  }\n\n  static {\n    this.register();\n  }\n\n  @Cache()\n  getTextContent(): string {\n    if (this.isEmpty()) {\n      return `No results were found. Try to reformat your query.`;\n    }\n\n    const target = this.results.length === 1 ? this.results[0] : this.results;\n    const response = JSON.stringify(target);\n\n    return this.maxSerializedLength < Infinity\n      ? response.substring(0, this.maxSerializedLength)\n      : response;\n  }\n\n  createSnapshot() {\n    return {\n      results: this.results,\n      maxSerializedLength: this.maxSerializedLength,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n\ninterface SearchResponse {\n  results: Pick<pageResult, \"title\" | \"pageid\">[];\n  suggestion: string;\n}\n\nexport class WikipediaTool extends Tool<\n  WikipediaToolOutput,\n  WikipediaToolOptions,\n  WikipediaToolRunOptions\n> {\n  name = \"Wikipedia\";\n  description =\n    \"Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.\";\n\n  public readonly emitter: ToolEmitter<ToolInput<this>, WikipediaToolOutput> = Emitter.root.child({\n    namespace: [\"tool\", \"search\", \"wikipedia\"],\n    creator: this,\n  });\n\n  inputSchema() {\n    return z.object({\n      query: z\n        .string({ description: `Name of the wikipedia page, for example 'New York'` })\n        .min(1)\n        .max(128),\n    });\n  }\n\n  public constructor(public readonly config: WikipediaToolOptions = {}) {\n    super(config);\n  }\n\n  static {\n    this.register();\n  }\n\n  @Cache({\n    enumerable: false,\n  })\n  protected get _mappers(): Record<\n    keyof PageFunctions,\n    (page: Page, runOptions: WikipediaToolRunOptions) => Promise<any>\n  > {\n    return {\n      categories: (page) => page.categories(),\n      content: (page) => page.content(),\n      html: (page) => page.html(),\n      markdown: async (page, runOptions) => {\n        const html = await page.html().then((result) => {\n          const url = new URL(page.fullurl);\n          const base = `${url.protocol}//${[url.hostname, url.port].filter(Boolean).join(\":\")}`;\n          return (\n            result\n              // Missing a protocol\n              .replace(/(<img .*src=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n              .replace(/(<a .*href=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n\n              // Missing a hostname\n              .replace(/(<img .*src=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n              .replace(/(<a .*href=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n          );\n        });\n\n        const service = new Turndown();\n        service.use(turndownPlugin.gfm);\n        return service\n          .remove((node) => runOptions.extraction?.fields?.markdown?.filter?.(node) === false)\n          .turndown(html);\n      },\n      images: (page) => page.images(),\n      intro: (page) => page.intro(),\n      infobox: (page) => page.infobox(),\n      links: (page) => page.links(),\n      coordinates: (page) => page.coordinates(),\n      langLinks: (page) => page.langLinks(),\n      references: (page) => page.references(),\n      related: (page) => page.related(),\n      summary: (page) => page.summary(),\n      tables: (page) => page.tables(),\n    };\n  }\n\n  @Cache({\n    enumerable: false,\n  })\n  protected get _defaultRunOptions(): WikipediaToolRunOptions {\n    const unwrapTags = new Set([\"a\", \"small\", \"sup\"]);\n    const unwrapTagsSelector = Array.from(unwrapTags.values()).join(\",\");\n\n    const ignoredTags = new Set([\n      \"img\",\n      \"link\",\n      \"style\",\n      \"abbr\",\n      \"cite\",\n      \"input\",\n      \"sup\",\n      \"bdi\",\n      \"q\",\n      \"figure\",\n      \"audio\",\n      \"track\",\n      \"figcaption\",\n    ]);\n    const ignoredClasses = new Set([\n      \"toc\",\n      \"reflist\",\n      \"mw-references-wrap\",\n      \"box-More_footnotes_needed\",\n      \"navbox\",\n      \"navbox-styles\",\n      \"mw-editsection\",\n      \"sistersitebox\",\n      \"navbox-inner\",\n      \"refbegin\",\n      \"notpageimage\",\n      \"mw-file-element\",\n      \"box-Unreferenced_section\",\n      \"navigation-not-searchable\",\n      \"noexcerpt\",\n      \"infobox-image\",\n      \"mw-tmh-player\",\n      \"printfooter\",\n      \"ambox\",\n      \"infobox\",\n    ]);\n    const ignoredRoles = new Set([\"navigation\"]);\n\n    const ignoredSelector = [\n      ...ignoredTags.values(),\n      Array.from(ignoredClasses.values()).map((cls) => `.${cls}`),\n      Array.from(ignoredRoles.values()).map((role) => `[role=\"${role}\"]`),\n      \"table>caption\",\n    ].join(\",\");\n\n    return {\n      extraction: {\n        fields: {\n          markdown: {\n            transform: (output: string) => output.replace(/([^\\\\])(\\$)/g, `$1\\\\$2`),\n            filter: (node) => {\n              const tagName = node.tagName.toLowerCase();\n              if (ignoredTags.has(tagName) || ignoredRoles.has(node.role ?? \"\")) {\n                return false;\n              }\n\n              for (const cls of node.className.trim().split(\" \").filter(Boolean)) {\n                if (ignoredClasses.has(cls)) {\n                  return false;\n                }\n              }\n\n              for (const table of Array.from(node.querySelectorAll(\"table tr>th\"))) {\n                let colspan = parseInt(table.getAttribute(\"colspan\") || \"1\");\n                while (colspan > 1) {\n                  table.insertAdjacentHTML(\"afterend\", `<th>&nbsp;</th>`);\n                  colspan--;\n                }\n                table.removeAttribute(\"colspan\");\n              }\n\n              const ignoredTargets = Array.from(\n                ignoredSelector ? node.querySelectorAll(ignoredSelector) : [],\n              );\n              for (const childNode of ignoredTargets) {\n                childNode.remove();\n              }\n\n              const unwrapTargets = Array.from(\n                unwrapTagsSelector ? node.querySelectorAll(unwrapTagsSelector) : [],\n              ).reverse();\n              if (unwrapTags.has(tagName)) {\n                unwrapTargets.push(node);\n              }\n              for (const childNode of unwrapTargets) {\n                childNode.outerHTML = childNode.innerHTML;\n              }\n\n              return true;\n            },\n          },\n        },\n      },\n      filters: {\n        minPageNameSimilarity: 0.5,\n        excludeOthersOnExactMatch: true,\n      },\n      search: {\n        limit: 3,\n        suggestion: true,\n      },\n      output: {\n        maxSerializedLength: 25_000,\n        maxDescriptionLength: 250,\n      },\n    };\n  }\n\n  protected _createRunOptions(overrides?: WikipediaToolRunOptions): WikipediaToolRunOptions {\n    const baseKeys: ArrayKeys<Common<WikipediaToolRunOptions, WikipediaToolOptions>> = [\n      \"filters\",\n      \"search\",\n      \"extraction\",\n      \"retryOptions\",\n      \"output\",\n    ];\n\n    return R.pipe(\n      { ...this._defaultRunOptions },\n      R.mergeDeep(R.pick(this.options ?? {}, baseKeys)),\n      R.mergeDeep({ ...overrides }),\n    );\n  }\n\n  protected async _run(\n    { query: input }: ToolInput<WikipediaTool>,\n    _options?: WikipediaToolRunOptions,\n  ): Promise<WikipediaToolOutput> {\n    await patchAxiosUserAgent();\n\n    const runOptions = this._createRunOptions(_options);\n\n    const { results: searchRawResults, suggestion }: SearchResponse = await wiki.default.search(\n      input,\n      {\n        suggestion: Boolean(_options?.search?.suggestion),\n        ...runOptions.search,\n      },\n    );\n\n    if (searchRawResults.length === 0 && suggestion && runOptions.search?.suggestion) {\n      return await this._run({ query: suggestion }, _options);\n    }\n\n    const bestCandidates = this.extractBestCandidates(\n      input,\n      searchRawResults,\n      runOptions?.filters ?? {},\n    );\n\n    const results = await Promise.all(\n      bestCandidates.map(async ({ pageId }) => {\n        // @ts-expect-error wrong library's typing, passing a string would lead to a classic text search instead of a concrete page retrieval\n        const page = await wiki.default.page(pageId, {\n          redirect: true,\n          preload: false,\n          fields: keys(runOptions.extraction?.fields ?? {}).filter((key) => key !== \"markdown\"),\n        });\n\n        return asyncProperties({\n          title: page.title,\n          description: ((): Promise<string> => {\n            const length = runOptions?.output?.maxDescriptionLength ?? 0;\n            return length <= 0\n              ? Promise.resolve(\"\")\n              : page.content().then((content) => content.substring(0, length));\n          })(),\n          url: page.fullurl,\n          fields: asyncProperties(\n            mapValues(runOptions?.extraction?.fields ?? {}, (value, key) =>\n              this._mappers[key](page, runOptions)\n                .then((response) => (value.transform ? value.transform(response) : response))\n                .catch(() => undefined),\n            ),\n          ),\n        });\n      }),\n    );\n    return new WikipediaToolOutput(results, runOptions.output?.maxSerializedLength ?? Infinity);\n  }\n\n  protected extractBestCandidates(\n    query: string,\n    candidates: SearchResponse[\"results\"],\n    options: FilterOptions,\n  ) {\n    const normalize = (text: string) =>\n      text\n        .normalize(\"NFKD\")\n        .replace(/[^\\w| ]/g, \"\") // remove diacritics and special characters (except whitespace)\n        .replace(/\\s\\s+/g, \" \") // collapse multiple whitespaces into one\n        .trim();\n\n    const bestCandidates = stringComparison.jaccardIndex\n      .sortMatch(\n        normalize(query),\n        candidates.map((candidate) => normalize(candidate.title)),\n      )\n      .map((result) => ({\n        pageId: candidates[result.index].pageid,\n        score: result.rating,\n      }))\n      .filter((result) => result.score >= (options.minPageNameSimilarity ?? 0))\n      .sort((a, b) => b.score - a.score);\n\n    if (bestCandidates.at(0)?.score === 1 && options.excludeOthersOnExactMatch) {\n      bestCandidates.length = 1;\n    }\n\n    return bestCandidates;\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      config: this.config,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    super.loadSnapshot(snapshot);\n  }\n}\n\nasync function patchAxiosUserAgent() {\n  if (patchAxiosUserAgent.patched) {\n    return;\n  }\n  patchAxiosUserAgent.patched = true;\n\n  const doPatch = (entry: any) => {\n    entry.defaults.headers.common[\"User-Agent\"] = \"BeeAI Framework\";\n  };\n\n  const { default: axios } = await import(\"axios\");\n  doPatch(axios);\n\n  try {\n    const { createRequire } = await import(\"node:module\");\n    const require = createRequire(import.meta.url);\n    const { default: axiosCjs } = await require(\"axios\");\n    if (axiosCjs !== axios) {\n      doPatch(axiosCjs);\n    }\n  } catch {\n    /* empty */\n  }\n}\npatchAxiosUserAgent.patched = false;\n"]}