From 72510a748806f4e0707f69bc4f3d8d6d4738f629 Mon Sep 17 00:00:00 2001 From: vtempest Date: Mon, 30 Sep 2024 21:17:53 -0700 Subject: [PATCH] added support for robots.txt exclusion in scraping --- CNAME | 1 - docs/assets/search.js | 2 +- docs/classes/torch.html | 19 +- docs/functions/convertMarkdownToHtml.html | 4 +- docs/functions/convertPDFToHTML.html | 5 +- docs/functions/copyHtmlToClipboard.html | 2 +- docs/index.html | 2 +- docs/modules.html | 4 +- docs/sitemap.xml | 86 +- index.js | 8 +- package.json | 23 +- pnpm-lock.yaml | 3793 +++++++++++++++++ readme.md | 6 +- .../html-to-content/html-to-basic-html.js | 4 +- .../html-to-content/html-to-content.js | 1 - src/extractor/html-to-content/html-utils.js | 129 +- .../url-to-content/pdf-to-content.js | 1 - src/extractor/url-to-content/scrape-url.js | 85 +- .../url-to-content/url-to-content.js | 2 +- .../url-to-content/youtube-to-text.js | 13 +- src/generate/generate-reply-api.js | 4 +- src/similarity/embeddings-to-graph.js | 14 +- src/similarity/similarity-vector.js | 9 +- src/similarity/us2.js | 14 - src/train/neural-net.js | 13 +- .../src/components/Home/ActionsPanel.svelte | 4 +- web-app/src/routes/api/extract/+server.js | 7 +- web-app/static/robots.txt | 27 + 28 files changed, 4104 insertions(+), 178 deletions(-) delete mode 100644 CNAME create mode 100644 pnpm-lock.yaml delete mode 100644 src/similarity/us2.js create mode 100644 web-app/static/robots.txt diff --git a/CNAME b/CNAME deleted file mode 100644 index e50745a..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -airesearch.js.org \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 20acdf9..03b4ef7 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/torch.html b/docs/classes/torch.html index 53edaa0..93f64fa 100644 --- a/docs/classes/torch.html +++ b/docs/classes/torch.html @@ -1,11 +1,16 @@ torch | ai-research-agent

Torch is a neural net matrix multiplication library

  1. Uses PyTorch API syntax -for tensors and neural nets. GPU.JS does matmul faster than PyTorch.
  2. -
  3. Uses GPU.js acceleration to translate matmul into WebGL shader code.
  4. +for tensors and neural nets. +
  5. Uses GPU.js acceleration +to translate matmul into WebGL shader code. GPU.JS does matmul faster +than PyTorch.
  6. Neural Net API: MultiHeadSelfAttention, FullyConnected, Block, -Embedding, PositionalEmbedding, ReLU, Softmax, Dropout, LayerNorm, CrossEntropyLoss.
  7. -
  8. Other Neural Nets: For LSTMs and CNNs, use Brain.js
  9. +Embedding, PositionalEmbedding, ReLU, Softmax, Dropout, +LayerNorm, CrossEntropyLoss. +
  10. Other Neural Nets: For LSTMs and CNNs, use [Tensorflow.js] +(https://github.com/tensorflow/tfjs?tab=readme-ov-file) +or Brain.js

torch

tensor(data, requires_grad = false, device = 'cpu') Creates a new Tensor filled with the given data

@@ -57,7 +62,7 @@

PyTorch Contributors, Leao, E. et al (2022), See also: Brain.js

-

Properties

Properties

Tensor Parameter add neg @@ -89,8 +94,8 @@

Properties

Tensor: typeof Tensor

Add methods from tensor.js (these methods are accessed with "torch."):

-
Parameter: typeof Parameter
add: ((a: any, b: any) => any)
neg: ((a: any) => any)
mul: ((a: any, b: any) => any)
div: ((a: any, b: any) => any)
matmul: ((a: any, b: any) => any)
exp: ((a: any) => any)
log: ((a: any) => any)
sqrt: ((a: any) => any)
pow: ((a: any, n: any) => any)
mean: ((a: any, dim?: number, keepdims?: boolean) => any)
masked_fill: ((a: any, mask: any, condition: any, value: any) => any)
variance: ((a: any, dim?: number, keepdims?: boolean) => any)
at: ((a: any, idx1: any, idx2: any) => any)
reshape: ((a: any, shape: any) => any)
_reshape: ((a: any, shape: any) => any)
transpose: ((a: any, dim1: any, dim2: any) => any)
tensor: ((data: any, requires_grad?: boolean, device?: string) => Tensor)
randint: ((low?: number, high?: number, shape?: number[], requires_grad?: boolean) => Tensor)
randn: ((shape: any, requires_grad?: boolean, device?: string, xavier?: boolean) => Tensor)
rand: ((shape: any, requires_grad?: boolean, device?: string) => Tensor)
tril: ((shape: any, requires_grad?: boolean, device?: string) => Tensor)
ones: ((shape: any, requires_grad?: boolean, device?: string) => Tensor)
zeros: ((shape: any, requires_grad?: boolean, device?: string) => Tensor)
broadcast: ((a: any, b: any) => Tensor)
save: ((model: any, file: any) => string)
load: ((model: any, loadedData: any) => any)
nn: {
    Module: typeof Module;
    Linear: typeof Linear;
    MultiHeadSelfAttention: typeof MultiHeadSelfAttention;
    FullyConnected: typeof FullyConnected;
    Block: typeof Block;
    Embedding: typeof Embedding;
    PositionalEmbedding: typeof PositionalEmbedding;
    ReLU: typeof ReLU;
    Softmax: typeof Softmax;
    Dropout: typeof Dropout;
    LayerNorm: typeof LayerNorm;
    CrossEntropyLoss: typeof CrossEntropyLoss;
}

Add submodules:

-
optim: {
    Adam: typeof Adam;
}
getShape: ((data: any, shape?: any[]) => any[])
diff --git a/docs/functions/convertMarkdownToHtml.html b/docs/functions/convertMarkdownToHtml.html index d0f7dda..fffd1ce 100644 --- a/docs/functions/convertMarkdownToHtml.html +++ b/docs/functions/convertMarkdownToHtml.html @@ -1,4 +1,4 @@ -convertMarkdownToHtml | ai-research-agent

Function convertMarkdownToHtml

  • Converts Markdown text to HTML. It handles the following Markdown elements:

    +convertMarkdownToHTML | ai-research-agent

    Function convertMarkdownToHTML

    • Converts Markdown text to HTML. It handles the following Markdown elements:

      • Headers (h1 to h6)
      • Bold text
      • @@ -11,7 +11,7 @@

      Parameters

      • markdown: string

        The Markdown-formatted text to be converted.

      Returns string

      The resulting HTML string.

      -
      const markdown = "# Header\n\nThis is **bold** and *italic* text.\n\n* List item 1\n* List item 2";
      const html = convertMarkdownToHtml(markdown);
      console.log(html);
      // Output:
      // <h1>Header</h1>
      // <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
      // <ul><li>List item 1</li><li>List item 2</li></ul> +
      const markdown = "# Header\n\nThis is **bold** and *italic* text.\n\n* List item 1\n* List item 2";
      const html = convertMarkdownToHTML(markdown);
      console.log(html);
      // Output:
      // <h1>Header</h1>
      // <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
      // <ul><li>List item 1</li><li>List item 2</li></ul>
    diff --git a/docs/functions/copyHtmlToClipboard.html b/docs/functions/copyHtmlToClipboard.html index 101eee8..19c733c 100644 --- a/docs/functions/copyHtmlToClipboard.html +++ b/docs/functions/copyHtmlToClipboard.html @@ -1,4 +1,4 @@ -copyHtmlToClipboard | ai-research-agent

    Function copyHtmlToClipboard

    • Copy HTML to clipboard. When pasting into rich text field, pastes rich +copyHTMLToClipboard | ai-research-agent

      Function copyHTMLToClipboard

      • Copy HTML to clipboard. When pasting into rich text field, pastes rich text. When pasting into plain text field, pastes: plain text, html, or markdown.

        Parameters

        • html: string

          The HTML content to be copied.

        • options: {
              pastePlainWithHTML: boolean;
              pastePlainWithMarkdown: boolean;
          } = {}

          The options object.

          diff --git a/docs/index.html b/docs/index.html index 408f664..23397b9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -43,7 +43,7 @@

          Javascript Docs (airesearch.js.org) Live Demo (qwksearch.com)

          Critical times call for critical thinkers to create a crowdsourced argument reasoning dataset, for AI models to recommend research quotes, evolve crowdsourced chain-of-thought reasoning, unlock faster ways to read long articles, monitor developments by topic modeling a knowledge base graph, and provide a public service of answers to research.

          -

          Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process, leading to direct demoratic AI economy where public votes reward influence. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. For example, imagine uploading several academic PDFs, then the app finds the citations full text and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them online in news and research to create AI assistants cloning their mind-uploaded perspective. Similar apps are Anthropic, Obsidian, SciSpace and Perplexity, which shows that users need this new way of self-organizating information.

          +

          Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process, leading to direct demoratic AI economy where public votes reward influence. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. For example, imagine uploading several academic PDFs, then the app finds the citations full text and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them online in news and research to create AI assistants cloning their mind-uploaded perspective. Similar apps are Anthropic Claude, Obsidian, SciSpace and Perplexity, which shows that users need this new way of self-organizating information.

          diff --git a/docs/modules.html b/docs/modules.html index 134ac68..8895c1f 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -10,8 +10,8 @@

      HTML Utilities

      Interface

      Match

      weighSimilarityByCharacter matchQUASAR diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 8a3dede..6065c6b 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -2,166 +2,166 @@ https://airesearch.js.org/modules.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/index.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractCite.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractFavicon.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractContentHTML.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractContentHTML2.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertHTMLToBasicHTML.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertMathLaTexToImage.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertHTMLSpecialChars.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z - https://airesearch.js.org/functions/convertMarkdownToHtml.html - 2024-09-24T20:00:23.768Z + https://airesearch.js.org/functions/convertMarkdownToHTML.html + 2024-09-24T22:55:13.629Z - https://airesearch.js.org/functions/copyHtmlToClipboard.html - 2024-09-24T20:00:23.768Z + https://airesearch.js.org/functions/copyHTMLToClipboard.html + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertPDFToHTML.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/scrapeURL.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extract.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/interfaces/Article.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/embedYoutubePlayer.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertYoutubeToText.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/generateLanguageModelReply.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/weighSimilarityByCharacter.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/matchQUASAR.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/weighRelevanceTermFrequency.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/searchSTREAM.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/searchWeb.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/searchWikipedia.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertEmbeddingsToUMAP.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/weighRelevanceConceptVectorAPI.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertTextToEmbedding.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/getEmbeddingModel.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/addEmbeddingVectorsToIndex.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/searchVectorIndex.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/getAllEmbeddings.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/exportEmbeddingsIndex.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/importVectorIndexFromString.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/splitSentences.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/suggestNextWordCompletions.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/splitTextSemanticChars.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/convertTextToTokens.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/stemWordToRoot.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractSEEKTOPIC.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/functions/extractTopicTermGroupsLDA.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z https://airesearch.js.org/classes/torch.html - 2024-09-24T20:00:23.768Z + 2024-09-24T22:55:13.629Z diff --git a/index.js b/index.js index 4c93591..f72c6f5 100644 --- a/index.js +++ b/index.js @@ -12,8 +12,8 @@ import { weighRelevanceConceptVectorAPI } from "./src/similarity/similarity-remo import { convertHTMLSpecialChars, - convertMarkdownToHtml, - copyHtmlToClipboard, + convertMarkdownToHTML, + copyHTMLToClipboard, convertURLToAbsoluteURL, convertMathLaTexToImage } from "./src/extractor/html-to-content/html-utils.js"; @@ -68,7 +68,7 @@ import { generateLanguageModelReply } from "./src/generate/generate-reply-api.js // Export all functions as named exports export { generateLanguageModelReply, - convertMarkdownToHtml, + convertMarkdownToHTML, importVectorIndexFromString, convertHTMLSpecialChars, convertPDFToHTML, @@ -76,7 +76,7 @@ export { extractFavicon, embedYoutubePlayer, stemWordToRoot, - copyHtmlToClipboard, + copyHTMLToClipboard, // compileTopicModel, convertMathLaTexToImage, extractCite, diff --git a/package.json b/package.json index f621696..e5a3827 100644 --- a/package.json +++ b/package.json @@ -17,30 +17,29 @@ }, "devDependencies": { "@jsprismarine/typedoc-material-theme": "^1.0.4", - "@mxssfd/typedoc-theme": "^1.1.6", - "@vitest/ui": "^2.0.5", + "@mxssfd/typedoc-theme": "^1.1.7", + "@vitest/ui": "^2.1.1", "adm-zip": "^0.5.16", "axios": "^1.7.7", "fast-xml-parser": "^4.5.0", "jszip": "^3.10.1", - "typedoc": "^0.26.6", + "typedoc": "^0.26.7", "typedoc-material-theme": "^1.1.0", "typedoc-plugin-ga": "^1.0.4", - "vitest": "^2.0.5" + "vitest": "^2.1.1" }, "dependencies": { - "@eduardoleao052/gpu": "^2.19.0", - "@huggingface/transformers": "^3.0.0-alpha.14", - "@langchain/anthropic": "^0.2.17", - "@langchain/core": "^0.2.31", - "@langchain/groq": "^0.0.17", - "@langchain/openai": "^0.2.10", - "chrono-node": "^2.7.6", + "@huggingface/transformers": "3.0.0-alpha.16", + "@langchain/anthropic": "^0.3.3", + "@langchain/core": "^0.3.3", + "@langchain/groq": "^0.1.2", + "@langchain/openai": "^0.3.2", + "chrono-node": "^2.7.7", "fake-indexeddb": "^6.0.0", "gpu.js": "^2.16.0", "hnswlib-wasm": "^0.8.2", "katex": "^0.16.11", - "linkedom": "^0.18.4", + "linkedom": "^0.18.5", "pdfjs-serverless": "^0.5.1", "umap-js": "^1.4.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..ca20f9f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3793 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@huggingface/transformers': + specifier: 3.0.0-alpha.16 + version: 3.0.0-alpha.16 + '@langchain/anthropic': + specifier: ^0.3.3 + version: 0.3.3(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/core': + specifier: ^0.3.3 + version: 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/groq': + specifier: ^0.1.2 + version: 0.1.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/openai': + specifier: ^0.3.2 + version: 0.3.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + chrono-node: + specifier: ^2.7.7 + version: 2.7.7 + fake-indexeddb: + specifier: ^6.0.0 + version: 6.0.0 + gpu.js: + specifier: ^2.16.0 + version: 2.16.0 + hnswlib-wasm: + specifier: ^0.8.2 + version: 0.8.2 + katex: + specifier: ^0.16.11 + version: 0.16.11 + linkedom: + specifier: ^0.18.5 + version: 0.18.5 + pdfjs-serverless: + specifier: ^0.5.1 + version: 0.5.1 + umap-js: + specifier: ^1.4.0 + version: 1.4.0 + devDependencies: + '@jsprismarine/typedoc-material-theme': + specifier: ^1.0.4 + version: 1.0.4(typedoc@0.26.7(typescript@5.6.2)) + '@mxssfd/typedoc-theme': + specifier: ^1.1.7 + version: 1.1.7(typedoc@0.26.7(typescript@5.6.2)) + '@vitest/ui': + specifier: ^2.1.1 + version: 2.1.1(vitest@2.1.1) + adm-zip: + specifier: ^0.5.16 + version: 0.5.16 + axios: + specifier: ^1.7.7 + version: 1.7.7 + fast-xml-parser: + specifier: ^4.5.0 + version: 4.5.0 + jszip: + specifier: ^3.10.1 + version: 3.10.1 + typedoc: + specifier: ^0.26.7 + version: 0.26.7(typescript@5.6.2) + typedoc-material-theme: + specifier: ^1.1.0 + version: 1.1.0(typedoc@0.26.7(typescript@5.6.2)) + typedoc-plugin-ga: + specifier: ^1.0.4 + version: 1.0.4(typedoc@0.26.7(typescript@5.6.2)) + vitest: + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.7.3)(@vitest/ui@2.1.1) + +packages: + + '@anthropic-ai/sdk@0.27.3': + resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} + + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@huggingface/jinja@0.3.1': + resolution: {integrity: sha512-SbcBWUKDQ76lzlVYOloscUk0SJjuL1LcbZsfQv/Bxxc7dwJMYuS+DAQ+HhVw6ZkTFXArejaX5HQRuCuleYwYdA==} + engines: {node: '>=18'} + + '@huggingface/transformers@3.0.0-alpha.16': + resolution: {integrity: sha512-EhuGTi5U06EVHDm1Q43LZWnsmHmlYdjhLyIJgLTq/1Mxa9CWhtGgpTEYNAkjdPmCE7TFaHKf2zj4yzauLNYmlA==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jsprismarine/typedoc-material-theme@1.0.4': + resolution: {integrity: sha512-VUvFFCJolhuaHE6IoEZ4LOWx54KTcLTxpG6HJDGUJPMfX3ylr+n0gD3v2LYQGxjnPuusCxPG7/DI5snoxDpCow==} + engines: {node: '>=18.0.0', npm: '>=8.6.0'} + peerDependencies: + typedoc: ^0.26.3 + + '@langchain/anthropic@0.3.3': + resolution: {integrity: sha512-OvnSV3Tjhb87n7CxWzIcJqcJEM4qoFDYYt6Rua7glQF/Ud5FBTurlzoMunLPTQeF5GdPiaOwP3nUw6I9gF7ppw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/core@0.3.3': + resolution: {integrity: sha512-WAtkmhbdl2T41qzimTzhb3pXCHQxO4onqxzPxgdf3KftQdTwLq0YYBDhozRMZLNAd/+cfH0ymZGaZSsnc9Ogsg==} + engines: {node: '>=18'} + + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/openai@0.3.2': + resolution: {integrity: sha512-p513TVHkZ+mMV4dGloprPFKaukOuOZxyPXY/IWReQK34c1dpnywmjrXg8ydcnfncNbq+kJ/kKe671NK9bic4WA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.26 <0.4.0' + + '@material/material-color-utilities@0.2.7': + resolution: {integrity: sha512-0FCeqG6WvK4/Cc06F/xXMd/pv4FeisI0c1tUpBbfhA2n9Y8eZEv4Karjbmf2ZqQCPUWMrGp8A571tCjizxoTiQ==} + + '@mxssfd/typedoc-theme@1.1.7': + resolution: {integrity: sha512-dj4p0TjIoudD8j1u+Kf+KzcEc+je3IB/B1oohWcVJmMRfbw5uZYX6qOGHzfUzAPiU1pYe2u5Vo1IPqgLo58taA==} + engines: {node: '>= 14'} + peerDependencies: + typedoc: ^0.26.7 + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@rollup/rollup-android-arm-eabi@4.22.4': + resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.22.4': + resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.22.4': + resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.22.4': + resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.22.4': + resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.22.4': + resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.22.4': + resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.22.4': + resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.22.4': + resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.22.4': + resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.22.4': + resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.22.4': + resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.20.0': + resolution: {integrity: sha512-KlO3iE0THzSdYkzDFugt8SHe6FR3qNYTkmpbdW1d6xo8juQkMjybxAw/cBi2npL2eb2F4PbbnSs5Z9tDusfvyg==} + + '@shikijs/engine-javascript@1.20.0': + resolution: {integrity: sha512-ZUMo758uduM0Tfgzi/kd+0IKMbNdumCxxWjY36uf1DIs2Qyg9HIq3vA1Wfa/vc6HE7tHWFpANRi3mv7UzJ68MQ==} + + '@shikijs/engine-oniguruma@1.20.0': + resolution: {integrity: sha512-MQ40WkVTZk7by33ces4PGK6XNFSo6PYvKTSAr2kTWdRNhFmOcnaX+1XzvFwB26eySXR7U74t91czZ1qJkEgxTA==} + + '@shikijs/types@1.20.0': + resolution: {integrity: sha512-y+EaDvU2K6/GaXOKXxJaGnr1XtmZMF7MfS0pSEDdxEq66gCtKsLwQvVwoQFdp7R7dLlNAro3ijEE19sMZ0pzqg==} + + '@shikijs/vscode-textmate@9.2.2': + resolution: {integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + + '@types/node@18.19.53': + resolution: {integrity: sha512-GLxgUgHhDKO1Edw9Q0lvMbiO/IQXJwJlMaqxSGBXMpPy8uhkCs2iiPFaB2Q/gmobnFkckD3rqTBMVjXdwq+nKg==} + + '@types/node@22.7.3': + resolution: {integrity: sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitest/expect@2.1.1': + resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + + '@vitest/mocker@2.1.1': + resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + peerDependencies: + '@vitest/spy': 2.1.1 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.1': + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + + '@vitest/runner@2.1.1': + resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} + + '@vitest/snapshot@2.1.1': + resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} + + '@vitest/spy@2.1.1': + resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} + + '@vitest/ui@2.1.1': + resolution: {integrity: sha512-IIxo2LkQDA+1TZdPLYPclzsXukBWd5dX2CKpGqH8CCt8Wh0ZuDn4+vuQ9qlppEju6/igDGzjWF/zyorfsf+nHg==} + peerDependencies: + vitest: 2.1.1 + + '@vitest/utils@2.1.1': + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bit-twiddle@1.0.2: + resolution: {integrity: sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + chrono-node@2.7.7: + resolution: {integrity: sha512-p3S7gotuTPu5oqhRL2p1fLwQXGgdQaRTtWR3e8Di9P1Pa9mzkK5DWR5AWBieMUh2ZdOnPgrK+zCrbbtyuA+D/Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + fake-indexeddb@6.0.0: + resolution: {integrity: sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==} + engines: {node: '>=18'} + + fast-xml-parser@4.5.0: + resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} + hasBin: true + + fdir@6.3.0: + resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + flatbuffers@1.12.0: + resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + gl-wiretap@0.6.2: + resolution: {integrity: sha512-fxy1XGiPkfzK+T3XKDbY7yaqMBmozCGvAFyTwaZA3imeZH83w7Hr3r3bYlMRWIyzMI/lDUvUMM/92LE2OwqFyQ==} + + gl@5.0.3: + resolution: {integrity: sha512-toWmb3Rgli5Wl9ygjZeglFBVLDYMOomy+rXlVZVDCoIRV+6mQE5nY4NgQgokYIc5oQzc1pvWY9lQJ0hGn61ZUg==} + engines: {node: '>=12.0.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + glsl-tokenizer@2.1.5: + resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} + + gpu-mock.js@1.3.1: + resolution: {integrity: sha512-+lbp8rQ0p1nTa6Gk6HoLiw4yM6JTpql82U+nCF3sZbX4FJWP9PzzF1018dW8K+pbmqRmhLHbn6Bjc6i6tgUpbA==} + peerDependencies: + gpu.js: ^2.10.3 + + gpu.js@2.16.0: + resolution: {integrity: sha512-ZKmWdRXi3F/9nim5ew2IPXZaMlSyqtMtVC8Itobjl+qYUgUqcBHxu8WKqK0AqIyjBVBl7A5ORo4Db2hzgrPd4A==} + engines: {node: '>=8.0.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + + guid-typescript@1.0.9: + resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hnswlib-wasm@0.8.2: + resolution: {integrity: sha512-qEgKETj4rMOYRA1esP0bxVosw9Wrz5S/HvjI2FBWOXG5rf5/Es4OoEWGVvztFihDNU5if61l6QGhW5ILtt+PqA==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-any-array@0.1.1: + resolution: {integrity: sha512-qTiELO+kpTKqPgxPYbshMERlzaFu29JDnpB8s3bjg+JkxBpw29/qqSaOdKv2pCdaG92rLGeG/zG2GauX58hfoA==} + + is-any-array@2.0.1: + resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-tiktoken@1.0.14: + resolution: {integrity: sha512-Pk3l3WOgM9joguZY2k52+jH82RtABRgB5RdGFZNUGbOKGMVlNmafcPA3b0ITcCZPu1L9UclP1tne6aw7ZI4Myg==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true + + langsmith@0.1.61: + resolution: {integrity: sha512-XQE4KPScwPmdaT0mWDzhNxj9gvqXUR+C7urLA0QFi27XeoQdm17eYpudenn4wxC0gIyUJutQCyuYJpfwlT5JnQ==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + linkedom@0.18.5: + resolution: {integrity: sha512-JGLaGGtqtu+eOhYrC1wkWYTBcpVWL4AsnwAtMtgO1Q0gI0PuPJKI0zBBE+a/1BrhOE3Uw8JI/ycByAv5cLrAuQ==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + ml-array-max@1.2.4: + resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} + + ml-array-min@1.2.3: + resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==} + + ml-array-rescale@1.3.7: + resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==} + + ml-levenberg-marquardt@2.1.1: + resolution: {integrity: sha512-2+HwUqew4qFFFYujYlQtmFUrxCB4iJAPqnUYro3P831wj70eJZcANwcRaIMGUVaH9NDKzfYuA4N5u67KExmaRA==} + + ml-matrix@6.11.1: + resolution: {integrity: sha512-Fvp1xF1O07tt6Ux9NcnEQTei5UlqbRpvvaFZGs7l3Ij+nOaEDcmbSVtxwNa8V4IfdyFI1NLNUteroMJ1S6vcEg==} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-abi@3.68.0: + resolution: {integrity: sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==} + engines: {node: '>=10'} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + + onnxruntime-common@1.19.2: + resolution: {integrity: sha512-a4R7wYEVFbZBlp0BfhpbFWqe4opCor3KM+5Wm22Az3NGDcQMiU2hfG/0MfnBs+1ZrlSGmlgWeMcXQkDk1UFb8Q==} + + onnxruntime-common@1.20.0-dev.20240827-5d54dc1462: + resolution: {integrity: sha512-oR+xPRD64OI+w9nRLXQi9rEXYZ5W9BhqVi688sUTreU9J6pK182JYblmHjvapCg+Tta6MbkAsr3T1NZHM3tB1g==} + + onnxruntime-node@1.19.2: + resolution: {integrity: sha512-9eHMP/HKbbeUcqte1JYzaaRC8JPn7ojWeCeoyShO86TOR97OCyIyAIOGX3V95ErjslVhJRXY8Em/caIUc0hm1Q==} + os: [win32, darwin, linux] + + onnxruntime-web@1.20.0-dev.20240908-de7a02beef: + resolution: {integrity: sha512-4HpjPz06XlM/zD8yfjDqF2Iu7thHTxeZLtLwO4LHTETxdUM2hzwruUuR7d8ZasU3Gxtmi+YfCddfssFaxfObrQ==} + + openai@4.65.0: + resolution: {integrity: sha512-LfA4KUBpH/8rA3vjCQ74LZtdK/8wx9W6Qxq8MHqEdImPsN1XPQ2ompIuJWkKS6kXt5Cs5i8Eb65IIo4M7U+yeQ==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + pdfjs-serverless@0.5.1: + resolution: {integrity: sha512-hfqKF2s+kfUTz0n/HyfnDWTPwTw2NtCvb1xxkFWADSwSOKzVz9GQisX+MwaDwCoiseKgLhU0327f7TvNaWjD4A==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + regex@4.3.2: + resolution: {integrity: sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + rollup@4.22.4: + resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.20.0: + resolution: {integrity: sha512-MZJJ1PCFsQB1Piq+25wiz0a75yUv8Q3/fzy7SzRx5ONdjdtGdyiKwYn8vb/FnK5kjS0voWGnPpjG16POauUR+g==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + through2@0.6.5: + resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + tinyglobby@0.2.6: + resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==} + engines: {node: '>=12.0.0'} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + typedoc-material-theme@1.1.0: + resolution: {integrity: sha512-LLWGVb8w+i+QGnsu/a0JKjcuzndFQt/UeGVOQz0HFFGGocROEHv5QYudIACrj+phL2LDwH05tJx0Ob3pYYH2UA==} + engines: {node: '>=18.0.0', npm: '>=8.6.0'} + peerDependencies: + typedoc: ^0.25.13 || ^0.26.3 + + typedoc-plugin-ga@1.0.4: + resolution: {integrity: sha512-3YdtfRzeiRGKPgA0wlQ0p4NBIMV2As7BaTkjRVkIvu5m9bsmstxp07CWMe49nF4shIwi2xmq0OU44D7RTMTmJw==} + peerDependencies: + typedoc: ^0.26.5 + + typedoc@0.26.7: + resolution: {integrity: sha512-gUeI/Wk99vjXXMi8kanwzyhmeFEGv1LTdTQsiyIsmSYsBebvFxhbcyAx7Zjo4cMbpLGxM4Uz3jVIjksu/I2v6Q==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + uhyphen@0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + + umap-js@1.4.0: + resolution: {integrity: sha512-xxpviF9wUO6Nxrx+C58SoDgea+h2PnVaRPKDelWv0HotmY6BeWeh0kAPJoumfqUkzUvowGsYfMbnsWI0b9do+A==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@2.1.1: + resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@2.1.1: + resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.1 + '@vitest/ui': 2.1.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webgpu@0.1.16: + resolution: {integrity: sha512-KAXn/f8lnL8o4B718zzdfi1l0nEWQpuoWlC1L5WM/svAbeHjShCEI0l5ZcZBEEUm9FF3ZTgRjWk8iwbJfnGKTA==} + engines: {node: '>= 13.0.0'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} + peerDependencies: + zod: ^3.23.3 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@anthropic-ai/sdk@0.27.3(encoding@0.1.13)': + dependencies: + '@types/node': 18.19.53 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@emnapi/runtime@1.2.0': + dependencies: + tslib: 2.7.0 + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@gar/promisify@1.1.3': {} + + '@huggingface/jinja@0.3.1': {} + + '@huggingface/transformers@3.0.0-alpha.16': + dependencies: + '@huggingface/jinja': 0.3.1 + onnxruntime-node: 1.19.2 + onnxruntime-web: 1.20.0-dev.20240908-de7a02beef + sharp: 0.33.5 + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.2.0 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jsprismarine/typedoc-material-theme@1.0.4(typedoc@0.26.7(typescript@5.6.2))': + dependencies: + '@material/material-color-utilities': 0.2.7 + typedoc: 0.26.7(typescript@5.6.2) + + '@langchain/anthropic@0.3.3(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@anthropic-ai/sdk': 0.27.3(encoding@0.1.13) + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + fast-xml-parser: 4.5.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - encoding + + '@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))': + dependencies: + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.14 + langsmith: 0.1.61(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - openai + + '@langchain/groq@0.1.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + groq-sdk: 0.5.0(encoding@0.1.13) + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - encoding + + '@langchain/openai@0.3.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + js-tiktoken: 1.0.14 + openai: 4.65.0(encoding@0.1.13)(zod@3.23.8) + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - encoding + + '@material/material-color-utilities@0.2.7': {} + + '@mxssfd/typedoc-theme@1.1.7(typedoc@0.26.7(typescript@5.6.2))': + dependencies: + typedoc: 0.26.7(typescript@5.6.2) + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.28': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@rollup/rollup-android-arm-eabi@4.22.4': + optional: true + + '@rollup/rollup-android-arm64@4.22.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.22.4': + optional: true + + '@rollup/rollup-darwin-x64@4.22.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.22.4': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.22.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.22.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.22.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.22.4': + optional: true + + '@shikijs/core@1.20.0': + dependencies: + '@shikijs/engine-javascript': 1.20.0 + '@shikijs/engine-oniguruma': 1.20.0 + '@shikijs/types': 1.20.0 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + + '@shikijs/engine-javascript@1.20.0': + dependencies: + '@shikijs/types': 1.20.0 + '@shikijs/vscode-textmate': 9.2.2 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.20.0': + dependencies: + '@shikijs/types': 1.20.0 + '@shikijs/vscode-textmate': 9.2.2 + + '@shikijs/types@1.20.0': + dependencies: + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.2.2': {} + + '@tootallnate/once@2.0.0': {} + + '@types/estree@1.0.5': {} + + '@types/estree@1.0.6': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/node-fetch@2.6.11': + dependencies: + '@types/node': 18.19.53 + form-data: 4.0.0 + + '@types/node@18.19.53': + dependencies: + undici-types: 5.26.5 + + '@types/node@22.7.3': + dependencies: + undici-types: 6.19.8 + + '@types/retry@0.12.0': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@10.0.0': {} + + '@ungap/structured-clone@1.2.0': {} + + '@vitest/expect@2.1.1': + dependencies: + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.8(@types/node@22.7.3))': + dependencies: + '@vitest/spy': 2.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + optionalDependencies: + vite: 5.4.8(@types/node@22.7.3) + + '@vitest/pretty-format@2.1.1': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.1': + dependencies: + '@vitest/utils': 2.1.1 + pathe: 1.1.2 + + '@vitest/snapshot@2.1.1': + dependencies: + '@vitest/pretty-format': 2.1.1 + magic-string: 0.30.11 + pathe: 1.1.2 + + '@vitest/spy@2.1.1': + dependencies: + tinyspy: 3.0.2 + + '@vitest/ui@2.1.1(vitest@2.1.1)': + dependencies: + '@vitest/utils': 2.1.1 + fflate: 0.8.2 + flatted: 3.3.1 + pathe: 1.1.2 + sirv: 2.0.4 + tinyglobby: 0.2.6 + tinyrainbow: 1.2.0 + vitest: 2.1.1(@types/node@22.7.3)(@vitest/ui@2.1.1) + + '@vitest/utils@2.1.1': + dependencies: + '@vitest/pretty-format': 2.1.1 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + + abbrev@1.1.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn@7.4.1: {} + + adm-zip@0.5.16: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + aproba@2.0.0: {} + + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bit-twiddle@1.0.2: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.1 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + camelcase@6.3.0: {} + + ccount@2.0.1: {} + + chai@5.1.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + chownr@3.0.0: {} + + chrono-node@2.7.7: + dependencies: + dayjs: 1.11.13 + + clean-stack@2.2.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color-support@1.1.3: {} + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@10.0.1: {} + + commander@8.3.0: {} + + concat-map@0.0.1: {} + + console-control-strings@1.1.0: {} + + core-util-is@1.0.3: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-what@6.1.0: {} + + cssom@0.5.0: {} + + dayjs@1.11.13: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-eql@5.0.2: {} + + deep-extend@0.6.0: {} + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + err-code@2.0.3: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + event-target-shim@5.0.1: {} + + eventemitter3@4.0.7: {} + + expand-template@2.0.3: {} + + exponential-backoff@3.1.1: {} + + fake-indexeddb@6.0.0: {} + + fast-xml-parser@4.5.0: + dependencies: + strnum: 1.0.5 + + fdir@6.3.0(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fflate@0.8.2: {} + + file-uri-to-path@1.0.0: {} + + flatbuffers@1.12.0: {} + + flatted@3.3.1: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data-encoder@1.7.2: {} + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + fs-constants@1.0.0: {} + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + get-func-name@2.0.2: {} + + github-from-package@0.0.0: {} + + gl-wiretap@0.6.2: {} + + gl@5.0.3: + dependencies: + bindings: 1.5.0 + bit-twiddle: 1.0.2 + glsl-tokenizer: 2.1.5 + nan: 2.20.0 + node-abi: 3.68.0 + node-gyp: 9.4.1 + prebuild-install: 7.1.2 + transitivePeerDependencies: + - bluebird + - supports-color + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + glsl-tokenizer@2.1.5: + dependencies: + through2: 0.6.5 + + gpu-mock.js@1.3.1(gpu.js@2.16.0): + dependencies: + gpu.js: 2.16.0 + + gpu.js@2.16.0: + dependencies: + acorn: 7.4.1 + gl: 5.0.3 + gl-wiretap: 0.6.2 + gpu-mock.js: 1.3.1(gpu.js@2.16.0) + webgpu: 0.1.16 + transitivePeerDependencies: + - bluebird + - supports-color + + graceful-fs@4.2.11: {} + + groq-sdk@0.5.0(encoding@0.1.13): + dependencies: + '@types/node': 18.19.53 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + guid-typescript@1.0.9: {} + + has-unicode@2.0.1: {} + + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hnswlib-wasm@0.8.2: {} + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-cache-semantics@4.1.1: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: {} + + immediate@3.0.6: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + infer-owner@1.0.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + is-any-array@0.1.1: {} + + is-any-array@2.0.1: {} + + is-arrayish@0.3.2: {} + + is-fullwidth-code-point@3.0.0: {} + + is-lambda@1.0.1: {} + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-tiktoken@1.0.14: + dependencies: + base64-js: 1.5.1 + + jsbn@1.1.0: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + katex@0.16.11: + dependencies: + commander: 8.3.0 + + langsmith@0.1.61(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + optionalDependencies: + openai: 4.65.0(encoding@0.1.13)(zod@3.23.8) + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + linkedom@0.18.5: + dependencies: + css-select: 5.1.0 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 9.1.0 + uhyphen: 0.2.0 + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + long@5.2.3: {} + + loupe@3.1.1: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + lru-cache@7.18.3: {} + + lunr@2.3.9: {} + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-response@3.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + minizlib@3.0.1: + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + ml-array-max@1.2.4: + dependencies: + is-any-array: 2.0.1 + + ml-array-min@1.2.3: + dependencies: + is-any-array: 2.0.1 + + ml-array-rescale@1.3.7: + dependencies: + is-any-array: 2.0.1 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + + ml-levenberg-marquardt@2.1.1: + dependencies: + is-any-array: 0.1.1 + ml-matrix: 6.11.1 + + ml-matrix@6.11.1: + dependencies: + is-any-array: 2.0.1 + ml-array-rescale: 1.3.7 + + mrmime@2.0.0: {} + + ms@2.1.3: {} + + mustache@4.2.0: {} + + nan@2.20.0: {} + + nanoid@3.3.7: {} + + napi-build-utils@1.0.2: {} + + negotiator@0.6.3: {} + + node-abi@3.68.0: + dependencies: + semver: 7.6.3 + + node-domexception@1.0.0: {} + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.2 + + onnxruntime-common@1.19.2: {} + + onnxruntime-common@1.20.0-dev.20240827-5d54dc1462: {} + + onnxruntime-node@1.19.2: + dependencies: + onnxruntime-common: 1.19.2 + tar: 7.4.3 + + onnxruntime-web@1.20.0-dev.20240908-de7a02beef: + dependencies: + flatbuffers: 1.12.0 + guid-typescript: 1.0.9 + long: 5.2.3 + onnxruntime-common: 1.20.0-dev.20240827-5d54dc1462 + platform: 1.3.6 + protobufjs: 7.4.0 + + openai@4.65.0(encoding@0.1.13)(zod@3.23.8): + dependencies: + '@types/node': 18.19.53 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + zod: 3.23.8 + transitivePeerDependencies: + - encoding + + p-finally@1.0.0: {} + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pathe@1.1.2: {} + + pathval@2.0.0: {} + + pdfjs-serverless@0.5.1: {} + + picocolors@1.1.0: {} + + picomatch@4.0.2: {} + + platform@1.3.6: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.68.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + + process-nextick-args@2.0.1: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + property-information@6.5.0: {} + + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.7.3 + long: 5.2.3 + + proxy-from-env@1.1.0: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode.js@2.3.1: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + regex@4.3.2: {} + + retry@0.12.0: {} + + retry@0.13.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rollup@4.22.4: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.22.4 + '@rollup/rollup-android-arm64': 4.22.4 + '@rollup/rollup-darwin-arm64': 4.22.4 + '@rollup/rollup-darwin-x64': 4.22.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 + '@rollup/rollup-linux-arm-musleabihf': 4.22.4 + '@rollup/rollup-linux-arm64-gnu': 4.22.4 + '@rollup/rollup-linux-arm64-musl': 4.22.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 + '@rollup/rollup-linux-riscv64-gnu': 4.22.4 + '@rollup/rollup-linux-s390x-gnu': 4.22.4 + '@rollup/rollup-linux-x64-gnu': 4.22.4 + '@rollup/rollup-linux-x64-musl': 4.22.4 + '@rollup/rollup-win32-arm64-msvc': 4.22.4 + '@rollup/rollup-win32-ia32-msvc': 4.22.4 + '@rollup/rollup-win32-x64-msvc': 4.22.4 + fsevents: 2.3.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: + optional: true + + semver@7.6.3: {} + + set-blocking@2.0.0: {} + + setimmediate@1.0.5: {} + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.20.0: + dependencies: + '@shikijs/core': 1.20.0 + '@shikijs/engine-javascript': 1.20.0 + '@shikijs/engine-oniguruma': 1.20.0 + '@shikijs/types': 1.20.0 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + smart-buffer@4.2.0: {} + + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + sprintf-js@1.1.3: {} + + ssri@9.0.1: + dependencies: + minipass: 3.3.6 + + stackback@0.0.2: {} + + std-env@3.7.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-json-comments@2.0.1: {} + + strnum@1.0.5: {} + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + + through2@0.6.5: + dependencies: + readable-stream: 1.0.34 + xtend: 4.0.2 + + tinybench@2.9.0: {} + + tinyexec@0.3.0: {} + + tinyglobby@0.2.6: + dependencies: + fdir: 6.3.0(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.0.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + tslib@2.7.0: + optional: true + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + typedoc-material-theme@1.1.0(typedoc@0.26.7(typescript@5.6.2)): + dependencies: + '@material/material-color-utilities': 0.2.7 + typedoc: 0.26.7(typescript@5.6.2) + + typedoc-plugin-ga@1.0.4(typedoc@0.26.7(typescript@5.6.2)): + dependencies: + typedoc: 0.26.7(typescript@5.6.2) + + typedoc@0.26.7(typescript@5.6.2): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.20.0 + typescript: 5.6.2 + yaml: 2.5.1 + + typescript@5.6.2: {} + + uc.micro@2.1.0: {} + + uhyphen@0.2.0: {} + + umap-js@1.4.0: + dependencies: + ml-levenberg-marquardt: 2.1.1 + + undici-types@5.26.5: {} + + undici-types@6.19.8: {} + + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + util-deprecate@1.0.2: {} + + uuid@10.0.0: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@2.1.1(@types/node@22.7.3): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.8(@types/node@22.7.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.8(@types/node@22.7.3): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.4 + optionalDependencies: + '@types/node': 22.7.3 + fsevents: 2.3.3 + + vitest@2.1.1(@types/node@22.7.3)(@vitest/ui@2.1.1): + dependencies: + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.8(@types/node@22.7.3)) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + debug: 4.3.7 + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.8(@types/node@22.7.3) + vite-node: 2.1.1(@types/node@22.7.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.7.3 + '@vitest/ui': 2.1.1(vitest@2.1.1) + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + webgpu@0.1.16: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xtend@4.0.2: {} + + yallist@4.0.0: {} + + yallist@5.0.0: {} + + yaml@2.5.1: {} + + zod-to-json-schema@3.23.3(zod@3.23.8): + dependencies: + zod: 3.23.8 + + zod@3.23.8: {} + + zwitch@2.0.4: {} diff --git a/readme.md b/readme.md index 533b2ae..90cb519 100644 --- a/readme.md +++ b/readme.md @@ -48,7 +48,7 @@ Critical times call for critical thinkers to create a crowdsourced argument reasoning dataset, for AI models to recommend research quotes, evolve crowdsourced chain-of-thought reasoning, unlock faster ways to read long articles, monitor developments by topic modeling a knowledge base graph, and provide a public service of answers to research. -Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process, leading to direct demoratic AI economy where public votes reward influence. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. For example, imagine uploading several academic PDFs, then the app finds the citations full text and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them online in news and research to create AI assistants cloning their mind-uploaded perspective. Similar apps are Anthropic Claude, Obsidian, SciSpace and Perplexity, which shows that users need this new way of self-organizating information. +Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process, leading to direct democratic AI economy where public votes reward influence. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. Users can upload research PDFs, then the app finds the citations full text and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them to create AI assistants cloning their mind-uploaded perspective. Similar apps are Anthropic Claude, Obsidian, SciSpace and Perplexity, showing that people need this new way of self-organizating information. @@ -138,7 +138,7 @@ SEEKTOPIC extracts unique, domain-specific key phrases from a document using nou

      -[compileTopicModel Docs](https://airesearch.js.org/functions/compileTopicModel.html) +[compileTopicModel Docs](https://github.com/vtempest/ai-research-agent/blob/master/src/datasets/compile-topic-model.js) Search and outline a research base using Wikipedia's 100k popular pages as the core topic phrases graph for LLM Research Agents. Most of the documents online (and by extension thinking in the collective conciousness) can revolve around core topic phrases linked as a graph. If all the available docs are nodes, the links in the graph can be extracted Wiki page entities and mappings of dictionary phrases to their wiki page. These can serve as topic labels, keywords, and suggestions for LLM followup questions. Documents can be linked in a graph with: 1. wiki page entity recognition 2. frequent keyphrases 3. html links 4. research paper references 5. keyphrases to query in global web search 6. site-specific recommendations. These can lay the foundation for LLM Research Agents to fully grok, summarize, and outline a research base. @@ -208,6 +208,6 @@ Search-on-keystroke and load this JSON index for word and phrase completion, sor * [Understanding UMAP](https://pair-code.github.io/understanding-umap/) * [Transformers Explained Visually (Part 3)](https://towardsdatascience.com/transformers-explained-visually-part-3-multi-head-attention-deep-dive-1c1ff1024853) * [Can LLMs Generate Novel Research Ideas?](https://arxiv.org/html/2409.04109v1) - +* [Graph Algorithms Playground](https://playground.memgraph.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) diff --git a/src/extractor/html-to-content/html-to-basic-html.js b/src/extractor/html-to-content/html-to-basic-html.js index 07318a7..a2f8d2a 100644 --- a/src/extractor/html-to-content/html-to-basic-html.js +++ b/src/extractor/html-to-content/html-to-basic-html.js @@ -34,7 +34,7 @@ export function convertHTMLToBasicHTML(html, options = {}) { videos = true, formatting = 1, url = "", - includeMath = 1, + mathLatex = 1, allowTags = "br,p,u,b,i,em,strong,h1,h2,h3,h4,h5,h6,blockquote,code,\ ul,ol,li,dd,dl,table,th,tr,td,thead,tbody,sub,sup,math", allowedAttributes = "href,src,type,width,height,id,data,target", @@ -107,7 +107,7 @@ export function convertHTMLToBasicHTML(html, options = {}) { // if (reHTMLInsideDataAttr.test(html)) // html = html.replaceAll(reHTMLInsideDataAttr, ""); - if(includeMath) + if(mathLatex) basicHtml = convertMathLaTexToImage(basicHtml); return basicHtml; diff --git a/src/extractor/html-to-content/html-to-content.js b/src/extractor/html-to-content/html-to-content.js index 56fd8cc..ae1e6b7 100644 --- a/src/extractor/html-to-content/html-to-content.js +++ b/src/extractor/html-to-content/html-to-content.js @@ -3,7 +3,6 @@ import { extractCite } from "../html-to-cite/extract-cite.js"; import { convertHTMLToBasicHTML } from "./html-to-basic-html.js"; import { parseHTML } from "linkedom"; import { extractNamedEntity } from "../html-to-cite/human-names-recognize.js"; - import { extractContentHTML } from "./extract-content/extractor1-content.js"; import { extractContentHTML2 } from "./extract-content/extractor2-content.js"; diff --git a/src/extractor/html-to-content/html-utils.js b/src/extractor/html-to-content/html-utils.js index ea27e26..5ea2c86 100644 --- a/src/extractor/html-to-content/html-utils.js +++ b/src/extractor/html-to-content/html-utils.js @@ -182,95 +182,136 @@ export function convertURLToAbsoluteURL(base, relative) { * - Paragraphs * - Images * - Links - * @param {string} markdown - The Markdown-formatted text to be converted. + * @param {string} content - The Markdown or HTML content to be converted. + * @param {boolean} toHtml - default=true - If true, converts Markdown to HTML. + * If false, converts HTML to Markdown. * @returns {string} The resulting HTML string. * @category HTML Utilities * @example * const markdown = "# Header\n\nThis is **bold** and *italic* text.\n\n* List item 1\n* List item 2"; - * const html = convertMarkdownToHtml(markdown); + * const html = convertMarkdownToHTML(markdown); * console.log(html); * // Output: * //

      Header

      * //

      This is bold and italic text.

      * //
      • List item 1
      • List item 2
      */ -export function convertMarkdownToHtml(markdown) { +export function convertMarkdownToHTML(content, toHtml = true) { + if (!toHtml) + return convertHTMLToMarkdown(content); - var html = markdown - // Convert headers - .replace(/^(#{1,6})\s(.+)$/gm, (match, hashes, content) => { + var html = content + // Convert headers + .replace(/^(#{1,6})\s(.+)$/gm, (match, hashes, content) => { const level = hashes.length; return `${content.trim()}`; - }) + }) - // Convert bold text - .replace(/\*\*(.+?)\*\*/g, '$1') + // Convert bold text + .replace(/\*\*(.+?)\*\*/g, '$1') - // Convert italic text - .replace(/\*(.+?)\*/g, '$1') + // Convert italic text + .replace(/\*(.+?)\*/g, '$1') - // Convert unordered lists - .replace(/^\s*\*\s(.+)$/gm, '
    • $1
    • ') - .replace(/(
    • .*<\/li>)/s, '
        $1
      ') + // Convert unordered lists + .replace(/^\s*\*\s(.+)$/gm, '
    • $1
    • ') + .replace(/(
    • .*<\/li>)/s, '
        $1
      ') - // Convert ordered lists - .replace(/^\s*\d+\.\s(.+)$/gm, '
    • $1
    • ') - .replace(/(
    • .*<\/li>)/s, '
        $1
      ') + // Convert ordered lists + .replace(/^\s*\d+\.\s(.+)$/gm, '
    • $1
    • ') + .replace(/(
    • .*<\/li>)/s, '
        $1
      ') - // Convert paragraphs - .split('\n\n').map(para => { + // Convert paragraphs + .split('\n\n').map(para => { if (!para.startsWith('<')) { - return `

      ${para.trim()}

      `; + return `

      ${para.trim()}

      `; } return para; - }).join('\n') + }).join('\n') - //convert images - .replace(/\!\[(.*?)\]\((.*?)\)/g, '$1') - - //convert links - .replace(/\[(.*?)\]\((.*?)\)/g, '$1') + // Convert images + .replace(/\!\[(.*?)\]\((.*?)\)/g, '$1') + // Convert links + .replace(/\[(.*?)\]\((.*?)\)/g, '$1'); return html; } +function convertHTMLToMarkdown(html) { + var markdown = html + // Convert headers + .replace(/(.*?)<\/h[1-6]>/g, (match, level, content) => { + return '#'.repeat(parseInt(level)) + ' ' + content.trim() + '\n\n'; + }) + + // Convert bold text + .replace(/(.*?)<\/strong>/g, '**$1**') + + // Convert italic text + .replace(/(.*?)<\/em>/g, '*$1*') + + // Convert unordered lists + .replace(/
        (.*?)<\/ul>/gs, (match, content) => { + return content.replace(/
      • (.*?)<\/li>/g, '* $1\n') + '\n'; + }) + + // Convert ordered lists + .replace(/
          (.*?)<\/ol>/gs, (match, content) => { + let index = 1; + return content.replace(/
        1. (.*?)<\/li>/g, () => `${index++}. $1\n`) + '\n'; + }) + + // Convert paragraphs + .replace(/

          (.*?)<\/p>/g, '$1\n\n') + + // Convert images + .replace(/(.*?)/g, '![$2]($1)') + + // Convert links + .replace(/(.*?)<\/a>/g, '[$2]($1)') + + // Remove any remaining HTML tags + .replace(/<[^>]*>/g, '') + + // Trim extra whitespace + .trim(); + + return markdown; +} + /** - * Copy HTML to clipboard. When pasting into rich text field, pastes rich - * text. When pasting into plain text field, pastes: plain text, html, or markdown. + * Copy HTML to clipboard. When pasting into rich text field, + * pastes rich text. When pasting into plain text field, pastes: + * plain text, html, or markdown. * * @param {string} html - The HTML content to be copied. * @param {object} options - The options object. - * @param {boolean} options.pastePlainWithHTML - - * If true, the plain text will be the same as the HTML. - * If false, the plain text will be the same as the HTML, - * without the HTML tags. - * @param {boolean} options.pastePlainWithMarkdown - - * If true, the plain text will be markdown. - * If false, the plain text will be the same as the HTML, - * without the HTML tags. + * @param {boolean} options.pastePlainFormat - + * default=0 + * 0 - plain text + * 1 - markdown + * 2 - html * @returns {Promise} - A promise that resolves when * the HTML is copied to the clipboard. * @category HTML Utilities * @author [Gulakov, A. (2024)](https://airesearch.js.org) - * */ -export async function copyHtmlToClipboard(html, options = {}) { +export async function copyHTMLToClipboard(html, options = {}) { var { - pastePlainWithHTML = true, - pastePlainWithMarkdown = false + pastePlainFormat = 0 } = options; if (typeof window == "undefined" || !navigator?.clipboard) return; const htmlBlob = new Blob([html], { type: "text/html" }); - var plainText = pastePlainWithHTML ? - html.replace(/<[^>]*>?/g, "") : - pastePlainWithMarkdown ? - convertMarkdownToHtml(html) : + var plainText = pastePlainFormat == 0 ? + html.replace(/<[^>]*>?/g, "") : + pastePlainFormat == 1 ? + convertMarkdownToHTML(html, false) : html; const textBlob = new Blob([plainText], { type: "text/plain" }) diff --git a/src/extractor/url-to-content/pdf-to-content.js b/src/extractor/url-to-content/pdf-to-content.js index c7fad00..5252698 100644 --- a/src/extractor/url-to-content/pdf-to-content.js +++ b/src/extractor/url-to-content/pdf-to-content.js @@ -17,7 +17,6 @@ import * as chrono from "chrono-node"; * @category Extract * @author [Gulakov, A. (2024)](https://airesearch.js.org), * [Mozilla (2012-)](https://github.com/mozilla/pdf.js/releases), - * [Adobe (1993)](https://en.wikipedia.org/wiki/History_of_PDF) */ export async function convertPDFToHTML(pdfURLOrBuffer, options = {}) { // try { diff --git a/src/extractor/url-to-content/scrape-url.js b/src/extractor/url-to-content/scrape-url.js index 5d1f70d..2552856 100644 --- a/src/extractor/url-to-content/scrape-url.js +++ b/src/extractor/url-to-content/scrape-url.js @@ -1,13 +1,13 @@ /** * ### Tardigrade the Web Crawler - *
          + * * * #### Use Fetch API, check for bot detection * * 1. Scrape any domain's URL to get its HTML, JSON, or arraybuffer.
          - * Scraping internet pages is a
          free speech - * right globally. + * Scraping internet pages is a [free speech right + * globally](https://blog.apify.com/is-web-scraping-legal/). * 2. Features: timeout, redirects, default UA, referer as google, and bot * detection checking.
          * 3. If fetch method does not get needed HTML, use Docker proxy as backup. @@ -24,13 +24,14 @@ * * @param {string} url - any domain's URL * @param {Object} [options] - * @param {number} options.timeout default=5 - abort request if not retrived, in seconds + * @param {number} options.timeout default=5 - abort request if not retrived, in seconds * @param {number} options.maxRedirects default=3 - max redirects to follow * @param {number} options.checkBotDetection default=true - check for bot detection messages * @param {number} options.changeReferer default=true - set referer as google * @param {number} options.userAgentIndex default=0 - index of [google bot, default chrome] * @param {number} options.useCORSProxy default=false - use 60%-working corsproxy.io (in frontend JS) * @param {string} options.proxy default=false - use proxy url + * @param {boolean} options.checkRobotsAllowed default=false - check robots.txt rules * @returns {Promise} - HTML, JSON, arraybuffer, or error object * @category Extract * @example await scrapeURL("https://hckrnews.com", {timeout: 5, userAgentIndex: 1}) @@ -47,8 +48,16 @@ export async function scrapeURL(url, options = {}) { useCORSProxy = false, proxy = null, useProxyAsBackup = true, + checkRobotsAllowed = false, } = options; + if(checkRobotsAllowed) { + const rules = await fetchScrapingRules(url); + if(!isAllowedToScrape(rules, url)) { + return { error: "Robots.txt forbids to scrape there" }; + } + } + if(proxy) url = proxy + url; @@ -141,7 +150,67 @@ function isHTMLBotDetection(html) { } -// try on the frontend -// -// document.getElementById('dom-iframe').src = '/get?url=' + url; -// document.getElementById('dom-iframe').contentWindow.document.body.innerHTML; + +/** + * Fetches and parses the robots.txt file for a given URL. + * @param {string} url - The base URL to fetch the robots.txt from. + * @returns {Promise} A JSON object representing the parsed robots.txt. + */ +export async function fetchScrapingRules(url) { + const hostname = url.split('//')[1].split('/')[0]; + const robotsUrl = `https://${hostname}/robots.txt`; + const content = await scrapeURL(robotsUrl); + const rules = { + directives: {}, + crawlDelay: {}, + sitemaps: [], + preferredHost: null + }; + let currentUserAgents = []; + + const lines = content.split('\n'); + for (const line of lines) { + const [directive, value] = line.split(':').map(s => s.trim()); + switch (directive.toLowerCase()) { + case 'user-agent': + currentUserAgents = [value.toLowerCase()]; + break; + case 'disallow': + case 'allow': + for (const ua of currentUserAgents) { + rules.directives[ua] = rules.directives[ua] || []; + rules.directives[ua].push({ path: value, allow: directive.toLowerCase() === 'allow' }); + } + break; + case 'crawl-delay': + for (const ua of currentUserAgents) { + rules.crawlDelay[ua] = parseFloat(value); + } + break; + case 'sitemap': + rules.sitemaps.push(value); + break; + case 'host': + rules.preferredHost = value.toLowerCase(); + break; + } + } + return rules; +} + +/** + * Checks if a given path is allowed for a specific user agent. + * @param {Object} rules - The parsed rules from robots.txt. + * @param {string} path - The path to check. + * @param {string} [userAgent='*'] - The user agent to check for. + * @returns {boolean} True if the path is allowed, false otherwise. + */ +function isAllowedToScrape(rules, path, userAgent = '*') { + const relevantRules = rules.directives[userAgent.toLowerCase()] + || rules.directives['*'] || []; + for (const rule of relevantRules) + if (path.startsWith(rule.path)) + return rule.allow; + + return true; // If no rules match, it's allowed by default +} diff --git a/src/extractor/url-to-content/url-to-content.js b/src/extractor/url-to-content/url-to-content.js index fd93d40..608dfc9 100644 --- a/src/extractor/url-to-content/url-to-content.js +++ b/src/extractor/url-to-content/url-to-content.js @@ -15,7 +15,7 @@ import { scrapeURL } from "./scrape-url.js"; * @property {string} title - The title of the article * @property {string} source - The source or origin of the article * @property {number} word_count - The word count of the full text (without HTML tags) - * @category Extact + * @category Extract */ /** diff --git a/src/extractor/url-to-content/youtube-to-text.js b/src/extractor/url-to-content/youtube-to-text.js index ea060ce..0f72765 100644 --- a/src/extractor/url-to-content/youtube-to-text.js +++ b/src/extractor/url-to-content/youtube-to-text.js @@ -1,11 +1,12 @@ import { convertHTMLSpecialChars } from "../../../index"; import { scrapeURL } from "./scrape-url.js" /** - * Fetch youtube.com video's webpage HTML for embedded transcript - * if blocked, use scraper of alternative sites + * Fetch youtube.com video's webpage HTML for embedded transcript. + * If blocked, use scraper of alternative sites providing transcripts. * @param {string} videoUrl * @param {Object} [options] - * @param {boolean} options.addTimestamps default=true - true to return timestamps, default true + * @param {boolean} options.addTimestamps default=true - + * true to return timestamps, default true * @param {boolean} options.timeout default=5 - http request timeout * @return {Object} {content, timestamps} where content is the full text of * the transcript, and timestamps is an array of [characterIndex, timeSeconds] @@ -128,14 +129,10 @@ export function getURLYoutubeVideo(url) { } /** - * Get YouTube transcript of most YouTube videos, - * except if disabled by uploader - * fetch-based scraper of youtubetotranscript.com - * + * Fetch-based scraper of youtubetotranscript.com * @param {string} videoUrl * @returns {Object} {content, timestamps} where content is the full text of * the transcript, and timestamps is an array of [characterIndex, timeSeconds] - * @private */ export async function fetchViaYoutubeToTranscriptCom(videoId, options = {}) { try { diff --git a/src/generate/generate-reply-api.js b/src/generate/generate-reply-api.js index d80b1d3..35a48ba 100644 --- a/src/generate/generate-reply-api.js +++ b/src/generate/generate-reply-api.js @@ -1,7 +1,7 @@ import { ChatGroq } from "@langchain/groq"; import { HumanMessage } from "@langchain/core/messages"; -import { convertMarkdownToHtml } from "../../index.js" +import { convertMarkdownToHTML } from "../../index.js" /** * Generates a reply using an AI models: Groq, Claude, or OpenAI's GPT. @@ -46,7 +46,7 @@ export async function generateLanguageModelReply(query, apiKey, model) { const messages = [new HumanMessage(query)]; const response = await chat.invoke(messages); - aiResponse.content = convertMarkdownToHtml(response.content); + aiResponse.content = convertMarkdownToHTML(response.content); } catch (error) { aiResponse.error = diff --git a/src/similarity/embeddings-to-graph.js b/src/similarity/embeddings-to-graph.js index fd255c7..13ef2c6 100644 --- a/src/similarity/embeddings-to-graph.js +++ b/src/similarity/embeddings-to-graph.js @@ -1,11 +1,5 @@ import { UMAP } from "umap-js/lib/umap-js.js"; -/** - * @typedef {Object} PlotDataPoint - * @property {number} x - The x-coordinate in the UMAP plot. - * @property {number} y - The y-coordinate in the UMAP plot. - * @property {string} label - The label associated with this data point. - */ /** * ### UMAP: Convert Embeddings to 2D or 3D Graph @@ -79,3 +73,11 @@ export async function convertEmbeddingsToUMAP(embeddingsDict, options = {}) { return plotDataArray; } + + +/** + * @typedef {Object} PlotDataPoint + * @property {number} x - The x-coordinate in the UMAP plot. + * @property {number} y - The y-coordinate in the UMAP plot. + * @property {string} label - The label associated with this data point. + */ \ No newline at end of file diff --git a/src/similarity/similarity-vector.js b/src/similarity/similarity-vector.js index d80e1e3..fb848f8 100644 --- a/src/similarity/similarity-vector.js +++ b/src/similarity/similarity-vector.js @@ -127,17 +127,18 @@ export async function getEmbeddingModel(options = {}) { * [NGT Algorithm](https://github.com/yahoojapan/NGT/wiki) * [NGT Cluster](https://github.com/yahoojapan/NGT/blob/main/lib/NGT/Clustering.h#L82) * - * [Vald Vector Engine Docs](https://vald.vdaas.org/docs/overview/about-vald/) - * [ANN Benchmarks](https://ann-benchmarks.com) + [Lancedb](https://lancedb.com) + [Usearch](https://unum-cloud.github.io/usearch/javascript/index.html) + * [ANN Benchmarks](https://ann-benchmarks.com) * * ![Benchmark](https://ann-benchmarks.com/glove-100-angular_10_angular.png) - * + * [Malkov et al. (2016)](https://arxiv.org/abs/1603.09320), + * @param {string[]} documentVectors - An array of document texts to be vectorized. * @param {Object} [options={}] - Optional parameters for vector generation and indexing. * @param {number} [options.numDimensions=384] - The length of data point vector that will be indexed. * @param {number} [options.maxElements=100] - The maximum number of data points. * @returns {Promise} The created HNSW index. - * @author [Malkov et al. (2016)](https://arxiv.org/abs/1603.09320), * @category Similarity */ export async function addEmbeddingVectorsToIndex(documentVectors, options = {}) { diff --git a/src/similarity/us2.js b/src/similarity/us2.js deleted file mode 100644 index 7f2fc9e..0000000 --- a/src/similarity/us2.js +++ /dev/null @@ -1,14 +0,0 @@ -const assert = require('node:assert'); -const usearch = require('usearch'); -const index = new usearch.Index({ metric: 'l2sq', connectivity: 16, dimensions: 3 }); -index.add(42n, new Float32Array([0.2, 0.6, 0.4])); -const dimensions = index.dimensions(); // Get the number of dimensions - -console.log(dimensions) -const results = index.search(new Float32Array([0.2, 0.6, 0.4]), 1); - -assert(index.size() === 1); -assert.deepEqual(results.keys, new BigUint64Array([42n])); -assert.deepEqual(results.distances, new Float32Array([0])); - -index.remove(42n); \ No newline at end of file diff --git a/src/train/neural-net.js b/src/train/neural-net.js index a452202..845ed78 100644 --- a/src/train/neural-net.js +++ b/src/train/neural-net.js @@ -2086,11 +2086,16 @@ const optim = { Adam }; /** * Torch is a neural net matrix multiplication library * 1. Uses [PyTorch API syntax](https://pytorch.org/docs/stable/index.html) - * for tensors and neural nets. GPU.JS does matmul [faster than PyTorch](https://github.com/raphaelrk/matrix-mul-test). - * 2. Uses [GPU.js](https://github.com/gpujs/gpu.js) acceleration to translate matmul into WebGL shader code. + * for tensors and neural nets. + * 2. Uses [GPU.js](https://github.com/gpujs/gpu.js) acceleration + * to translate matmul into WebGL shader code. GPU.js does matmul [faster + * than PyTorch](https://github.com/raphaelrk/matrix-mul-test). * 3. Neural Net API: MultiHeadSelfAttention, FullyConnected, Block, - * Embedding, PositionalEmbedding, ReLU, Softmax, Dropout, LayerNorm, CrossEntropyLoss. - * 4. Other Neural Nets: For LSTMs and CNNs, use [Brain.js](https://github.com/BrainJS/brain.js) + * Embedding, PositionalEmbedding, ReLU, Softmax, Dropout, + * LayerNorm, CrossEntropyLoss. + * 4. Other Neural Nets: For LSTMs and CNNs, use + * [Tensorflow.js](https://github.com/tensorflow/tfjs?tab=readme-ov-file) + * or [Brain.js](https://github.com/BrainJS/brain.js) * * * @class torch diff --git a/web-app/src/components/Home/ActionsPanel.svelte b/web-app/src/components/Home/ActionsPanel.svelte index 3f10a73..bc11e86 100644 --- a/web-app/src/components/Home/ActionsPanel.svelte +++ b/web-app/src/components/Home/ActionsPanel.svelte @@ -61,7 +61,7 @@ isExpanded = !isExpanded; } - function copyHtmlToClipboard() { + function copyHTMLToClipboard() { if (!selectedArticle) return; if (typeof window == "undefined") return; @@ -118,7 +118,7 @@