diff --git a/.eslintignore b/.eslintignore index 0292a5f..0a0ef14 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,3 +14,4 @@ deployspec.yml .storybook/*.html cz-adapter.cjs LICENSE +*.vue diff --git a/.gitignore b/.gitignore index e0ac319..e85f647 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ node_modules temp .aider* .vscode-test-web +**/.vitepress/cache +**/.vitepress/.temp +.gpt-runner diff --git a/.vscode/settings.json b/.vscode/settings.json index c80b02d..3ffd1a5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -47,22 +47,31 @@ "titleBar.activeForeground": "#F8FCFD" }, "cSpell.words": [ + "autoplay", + "Codegee", + "Codeium", "commitlint", + "deepseek", "esno", "execa", "fullpath", "ianvs", + "iconify", "knip", "langchain", "Nicepkg", "nodir", + "Ollama", "openai", + "Pipfile", + "pyproject", + "qwen", + "tailwindcss", "treeshake", "tsup", "undici", - "vsix" - ], - "aide.convertLanguagePairs": { - "typescript": "python" - } + "vitepress", + "vsix", + "Zhipu" + ] } diff --git a/.vscodeignore b/.vscodeignore index 5a522c8..e33b6c7 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -13,3 +13,4 @@ scripts .vscode-test/** .vscode-test-web/** out/** +website/** diff --git a/README.md b/README.md index 9f16f84..7591f6e 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ English / [简体中文 🌏](https://github.com/nicepkg/aide/tree/master/README_CN.md) -Master Any Code: One-Click Comments and Language Conversion. 💪 +Mastering Any Code In VSCode: One-click commenting and language conversion. 💪 -掌握任何屎山代码:一键注释和语言转换。💪 +在 VSCode 里掌握任何屎山代码:一键注释和语言转换。💪 [![Version](https://img.shields.io/visual-studio-marketplace/v/nicepkg.aide-pro)](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro) [![Downloads](https://img.shields.io/visual-studio-marketplace/d/nicepkg.aide-pro)](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro) @@ -16,11 +16,18 @@ Master Any Code: One-Click Comments and Language Conversion. 💪 +## Document 📚 + +- See: [https://aide.nicepkg.cn](https://aide.nicepkg.cn) +- Video: + +https://github.com/user-attachments/assets/55f85f8e-7515-4da3-b850-9c078b3440d5 + ## Features ✨ - 🔄 **Code Conversion**: One-click code transformation between languages. - 📖 **Code Annotation**: One-click detailed comments for better readability. -- 📋 **Quick Copy**: Copy files/folders as AI prompts instantly. +- 📋 **Quick Copy**: Batch copy files/folders as AI prompts. - 💬 **Custom Commands**: Execute custom AI commands on selected files. - 🔀 **Variable Rename**: Rename variables using AI-suggested variable names. - 🎛 **Prompt Templates**: Define flexible AI prompt templates. @@ -35,76 +42,13 @@ Master Any Code: One-Click Comments and Language Conversion. 💪 3. Search for "[Aide](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro)" 4. Click Install -## Configuration 🛠 - -See: [Document](https://github.com/nicepkg/aide/tree/master/docs/configuration/README.md) - -## Usage 🚀 - -### 1. Aide: Code Convert - -Convert selected code from one programming language to another using AI. - -**How to Use:** - -- Select code in the editor. -- Click the paper-like icon in the top right corner or right-click and choose `✨ Aide: Code Convert`. - -### 2. Aide: Code Viewer Helper - -Add comments to the selected code to make it readable for beginners, using AI. - -**How to Use:** - -- Select code in the editor. -- Click the book-like icon in the top right corner or right-click and choose `✨ Aide: Code Viewer Helper`. - -### 3. Aide: Copy As AI Prompt - -Copy selected files' contents into the clipboard, formatted as a prompt for AI interaction. - -**How to Use:** - -- Select files or folders in the Explorer. -- Right-click and choose `✨ Aide: Copy As AI Prompt`. - -### 4. Aide: Ask AI - -Prepare and execute custom AI commands based on selected files and user input. - -**How to Use:** - -- Select files or folders in the Explorer. -- Right-click and choose `✨ Aide: Ask AI`. -- Enter your question when prompted. - -### 5. Aide: Rename Variable - -Rename variables using AI-suggested variable names. - -**How to Use:** - -- Select a variable in the editor. -- Right-click and choose `✨ Aide: Rename Variable`. -- Select a suggested variable name. - -### 6. Customizing Keyboard Shortcuts - -Assign custom keyboard shortcuts to these commands for faster access: - -1. Open the Keyboard Shortcuts editor (`Ctrl+K Ctrl+S` or `Cmd+K Cmd+S`). -2. Search for the desired Aide command. -3. Click the plus icon next to the command and press your desired key combination. - -Enhance your productivity with Aide's AI-powered features. Install now and experience a smarter way to code! - ## ChangeLog 📅 See the [CHANGELOG](https://github.com/nicepkg/aide/blob/master/CHANGELOG.md) for the latest updates. ## Contributing 🤝 -Contributions are welcome! Please feel free to submit a Pull Request. See the [contributing guide](https://github.com/nicepkg/aide/blob/master/CONTRIBUTING.md) for more details. +Contributions are welcome! Please feel free to submit a Pull Request. See the [Contributing Guide](https://github.com/nicepkg/aide/blob/master/CONTRIBUTING.md) for more details. This project exists thanks to all the people who contribute: diff --git a/README_CN.md b/README_CN.md index 5b6ae25..c97115e 100644 --- a/README_CN.md +++ b/README_CN.md @@ -4,7 +4,7 @@ [English 🌏](https://github.com/nicepkg/aide/tree/master/README.md) / 简体中文 -掌握任何屎山代码:一键注释和语言转换。💪 +在 VSCode 里掌握任何屎山代码:一键注释和语言转换。💪 [![Version](https://img.shields.io/visual-studio-marketplace/v/nicepkg.aide-pro)](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro) [![Downloads](https://img.shields.io/visual-studio-marketplace/d/nicepkg.aide-pro)](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro) @@ -14,15 +14,22 @@ +## 文档 📚 + +- 查看:[https://aide.nicepkg.cn](https://aide.nicepkg.cn) +- 视频: + +https://github.com/user-attachments/assets/55f85f8e-7515-4da3-b850-9c078b3440d5 + ## 功能 ✨ - 🔄 **代码转换**:一键代码语言转换。 - 📖 **代码注释**:一键添加详细注释,提升可读性。 -- 📋 **快速复制**:即时复制文件/文件夹为AI提示。 -- 💬 **自定义命令**:对选定文件执行自定义AI命令。 -- 🔀 **变量重命名**:使用AI给出的变量名建议重命名变量。 -- 🎛 **提示模板**:定义灵活的AI提示模板。 -- 📁 **多文件支持**:选择多个文件/文件夹进行AI提示或命令。 +- 📋 **快速复制**:批量复制文件/文件夹为 AI 提示。 +- 💬 **自定义命令**:对选定文件执行自定义 AI 命令。 +- 🔀 **变量重命名**:使用 AI 给出的变量名建议重命名变量。 +- 🎛 **提示模板**:定义灵活的 AI 提示模板。 +- 📁 **多文件支持**:选择多个文件/文件夹进行 AI 提示或命令。 - 🚫 **忽略模式**:使用自定义 glob 规则排除文件/文件夹。 - ⌨ **快捷键**:设置你偏好的功能快捷键。 @@ -33,69 +40,6 @@ 3. 搜索 “[Aide](https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro)” 4. 点击安装 -## 配置 🛠 - -查看:[文档](https://github.com/nicepkg/aide/tree/master/docs/configuration/README_CN.md) - -## 用法 🚀 - -### 1. Aide: 代码转换 - -使用 AI 将选定的代码从一种编程语言转换为另一种。 - -**使用方法:** - -- 在编辑器中选择代码。 -- 点击右上角的纸张图标或右键选择 `✨ Aide: 代码转换`。 - -### 2. Aide: 代码查看器助手 - -使用 AI 为选定的代码添加注释,使其易于初学者阅读。 - -**使用方法:** - -- 在编辑器中选择代码。 -- 点击右上角的书本图标或右键选择 `✨ Aide: 代码查看器助手`。 - -### 3. Aide: 复制为 AI Prompt - -将选定文件的内容复制到剪贴板,并格式化为 AI 交互提示。 - -**使用方法:** - -- 在资源管理器中选择文件或文件夹。 -- 右键选择 `✨ Aide: 复制为 AI Prompt`。 - -### 4. Aide: 问 AI - -基于选定的文件和用户输入准备并执行自定义 AI 命令。 - -**使用方法:** - -- 在资源管理器中选择文件或文件夹。 -- 右键选择 `✨ Aide: 问 AI`。 -- 按提示输入您的问题。 - -### 5. Aide: 重命名变量 - -使用 AI 给出几个可能的变量名建议以及解释,帮助您更快地重命名变量。 - -**使用方法:** - -- 在编辑器中选择变量。 -- 点击右键选择 `✨ Aide: 重命名变量`。 -- 选择一个建议的变量名。 - -### 6. 自定义键盘快捷键 - -为这些命令分配自定义键盘快捷键以更快地访问: - -1. 打开键盘快捷键编辑器(`Ctrl+K Ctrl+S` 或 `Cmd+K Cmd+S`)。 -2. 搜索所需的 Aide 命令。 -3. 点击命令旁的加号图标并按下您想要的快捷键组合。 - -通过 Aide 的 AI 驱动功能提升您的工作效率。立即安装,体验更智能的编码方式! - ## 更新日志 📅 查看最新的更新和功能:[更新日志](https://github.com/nicepkg/aide/blob/master/CHANGELOG.md) diff --git a/docs/configuration/README.md b/docs/configuration/README.md index 8831f1c..1b6a971 100644 --- a/docs/configuration/README.md +++ b/docs/configuration/README.md @@ -1,3 +1,9 @@ +# Warm Reminder + +## This document is no longer maintained. Please visit [https://aide.nicepkg.cn](https://aide.nicepkg.cn) for the complete documentation. + +--- + ## Aide Configuration Documentation To customize Aide's settings and tailor it to your workflow, follow these steps to access its configuration area: diff --git a/docs/configuration/README_CN.md b/docs/configuration/README_CN.md index 5d10b87..8b4b1c1 100644 --- a/docs/configuration/README_CN.md +++ b/docs/configuration/README_CN.md @@ -1,3 +1,9 @@ +# 温情提示 + +## 本处文档不再维护,请移步到 [https://aide.nicepkg.cn](https://aide.nicepkg.cn) 查看完整文档。 + +--- + ## Aide 配置文档 要自定义 Aide 的设置并根据你的工作流程进行调整,请按照以下步骤访问其配置区域: diff --git a/package.json b/package.json index 33546b1..55fca71 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "publisher": "nicepkg", "name": "aide-pro", "displayName": "Aide", - "description": "Master Any Code: One-Click Comments and Language Conversion. 💪", + "description": "Master Any Code: One-Click Comments and Language Conversion. 掌握任何屎山代码:一键注释和语言转换。💪", "version": "1.12.0", "private": true, "packageManager": "pnpm@9.3.0", @@ -59,9 +59,6 @@ ], "main": "./dist/node/index.js", "icon": "res/icon.png", - "files": [ - "dist" - ], "engines": { "vscode": "^1.82.0" }, @@ -88,6 +85,10 @@ { "command": "aide.renameVariable", "title": "%command.renameVariable%" + }, + { + "command": "aide.smartPaste", + "title": "%command.smartPaste%" } ], "menus": { @@ -105,16 +106,20 @@ ], "editor/context": [ { - "command": "aide.codeViewerHelper", - "group": "0_aide@100" - }, - { - "command": "aide.codeConvert", + "command": "aide.smartPaste", "group": "0_aide@101" }, { "command": "aide.renameVariable", "group": "0_aide@102" + }, + { + "command": "aide.codeViewerHelper", + "group": "0_aide@120" + }, + { + "command": "aide.codeConvert", + "group": "0_aide@121" } ], "editor/title": [ @@ -230,16 +235,17 @@ "@commitlint/config-conventional": "^19.2.2", "@commitlint/cz-commitlint": "^19.2.0", "@ianvs/prettier-plugin-sort-imports": "^4.3.1", - "@langchain/core": "0.2.16", - "@langchain/openai": "^0.2.2", + "@langchain/anthropic": "^0.2.6", + "@langchain/core": "0.2.17", + "@langchain/openai": "^0.2.4", "@types/fs-extra": "^11.0.4", "@types/global-agent": "^2.1.3", - "@types/node": "^20.14.10", + "@types/node": "^20.14.11", "@types/shell-quote": "^1.7.5", "@types/vscode": "1.82.0", "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", - "@vscode/vsce": "^2.30.0", + "@vscode/vsce": "^2.31.0", "commitizen": "^4.3.0", "dotenv": "^16.4.5", "eslint": "^8.57.0", @@ -250,7 +256,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-json": "^4.0.0", - "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^3.2.0", "esno": "^4.7.0", @@ -258,7 +264,7 @@ "fs-extra": "^11.2.0", "glob": "^10.4.3", "global-agent": "^3.0.0", - "husky": "^9.0.11", + "husky": "^9.1.0", "ignore": "^5.3.1", "inquirer": "^9.3.4", "knip": "^5.26.0", @@ -269,16 +275,16 @@ "prettier": "^3.3.3", "rimraf": "^6.0.1", "shell-quote": "^1.8.1", - "tsup": "^8.1.0", + "tsup": "^8.1.2", "typescript": "5.4.5", "undici": "^6.19.2", - "vite": "^5.3.3", + "vite": "^5.3.4", "vitest": "^2.0.3", "zod": "^3.23.8" }, "pnpm": { "overrides": { - "@langchain/core": "0.2.16" + "@langchain/core": "0.2.17" } }, "commitlint": { diff --git a/package.nls.en.json b/package.nls.en.json index fe3d77c..3c12ded 100644 --- a/package.nls.en.json +++ b/package.nls.en.json @@ -4,6 +4,7 @@ "command.codeConvert": "✨ Aide: Code Convert", "command.codeViewerHelper": "✨ Aide: Code Viewer Helper", "command.renameVariable": "✨ Aide: Rename Variable", + "command.smartPaste": "✨ Aide: Smart Paste", "config.title": "Aide Configuration", "config.aiPrompt.description": "Template for copied content, use #{content} as a placeholder for file content", "config.aiCommand.description": "Custom AI command template. Available variables: #{filesRelativePath}, #{filesFullPath}, #{content}", diff --git a/package.nls.json b/package.nls.json index fe3d77c..3c12ded 100644 --- a/package.nls.json +++ b/package.nls.json @@ -4,6 +4,7 @@ "command.codeConvert": "✨ Aide: Code Convert", "command.codeViewerHelper": "✨ Aide: Code Viewer Helper", "command.renameVariable": "✨ Aide: Rename Variable", + "command.smartPaste": "✨ Aide: Smart Paste", "config.title": "Aide Configuration", "config.aiPrompt.description": "Template for copied content, use #{content} as a placeholder for file content", "config.aiCommand.description": "Custom AI command template. Available variables: #{filesRelativePath}, #{filesFullPath}, #{content}", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index f091a44..e2e99fc 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -1,9 +1,10 @@ { - "command.copyAsPrompt": "✨ Aide: 复制为 AI Prompt", + "command.copyAsPrompt": "✨ Aide: 复制为 AI 提示词", "command.askAI": "✨ Aide: 问 AI", "command.codeConvert": "✨ Aide: 代码转换", "command.codeViewerHelper": "✨ Aide: 代码查看器助手", "command.renameVariable": "✨ Aide: 重命名变量", + "command.smartPaste": "✨ Aide: 智能粘贴", "config.title": "Aide 配置", "config.aiPrompt.description": "复制内容的模板,使用#{content}作为文件内容的占位符", "config.aiCommand.description": "自定义 AI 命令模板。可用变量:#{filesRelativePath}, #{filesFullPath}, #{content}", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b866025..b931b05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - '@langchain/core': 0.2.16 + '@langchain/core': 0.2.17 importers: @@ -16,22 +16,25 @@ importers: version: 0.1.9 '@commitlint/cli': specifier: ^19.3.0 - version: 19.3.0(@types/node@20.14.10)(typescript@5.4.5) + version: 19.3.0(@types/node@20.14.11)(typescript@5.4.5) '@commitlint/config-conventional': specifier: ^19.2.2 version: 19.2.2 '@commitlint/cz-commitlint': specifier: ^19.2.0 - version: 19.2.0(@types/node@20.14.10)(commitizen@4.3.0(@types/node@20.14.10)(typescript@5.4.5))(inquirer@9.3.4)(typescript@5.4.5) + version: 19.2.0(@types/node@20.14.11)(commitizen@4.3.0(@types/node@20.14.11)(typescript@5.4.5))(inquirer@9.3.4)(typescript@5.4.5) '@ianvs/prettier-plugin-sort-imports': specifier: ^4.3.1 - version: 4.3.1(@vue/compiler-sfc@3.4.31)(prettier@3.3.3) + version: 4.3.1(@vue/compiler-sfc@3.4.32)(prettier@3.3.3) + '@langchain/anthropic': + specifier: ^0.2.6 + version: 0.2.6(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) '@langchain/core': - specifier: 0.2.16 - version: 0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + specifier: 0.2.17 + version: 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) '@langchain/openai': - specifier: ^0.2.2 - version: 0.2.2(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1)) + specifier: ^0.2.4 + version: 0.2.4(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1)) '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 @@ -39,8 +42,8 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@types/node': - specifier: ^20.14.10 - version: 20.14.10 + specifier: ^20.14.11 + version: 20.14.11 '@types/shell-quote': specifier: ^1.7.5 version: 1.7.5 @@ -54,11 +57,11 @@ importers: specifier: ^7.16.1 version: 7.16.1(eslint@8.57.0)(typescript@5.4.5) '@vscode/vsce': - specifier: ^2.30.0 - version: 2.30.0 + specifier: ^2.31.0 + version: 2.31.0 commitizen: specifier: ^4.3.0 - version: 4.3.0(@types/node@20.14.10)(typescript@5.4.5) + version: 4.3.0(@types/node@20.14.11)(typescript@5.4.5) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -87,8 +90,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + specifier: ^5.2.1 + version: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-simple-import-sort: specifier: ^12.1.1 version: 12.1.1(eslint@8.57.0) @@ -111,8 +114,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 husky: - specifier: ^9.0.11 - version: 9.0.11 + specifier: ^9.1.0 + version: 9.1.0 ignore: specifier: ^5.3.1 version: 5.3.1 @@ -121,10 +124,10 @@ importers: version: 9.3.4 knip: specifier: ^5.26.0 - version: 5.26.0(@types/node@20.14.10)(typescript@5.4.5) + version: 5.26.0(@types/node@20.14.11)(typescript@5.4.5) langchain: specifier: ^0.2.10 - version: 0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1) + version: 0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1) lint-staged: specifier: ^15.2.7 version: 15.2.7 @@ -144,8 +147,8 @@ importers: specifier: ^1.8.1 version: 1.8.1 tsup: - specifier: ^8.1.0 - version: 8.1.0(postcss@8.4.39)(typescript@5.4.5) + specifier: ^8.1.2 + version: 8.1.2(jiti@1.21.6)(postcss@8.4.39)(tsx@4.10.5)(typescript@5.4.5)(yaml@2.4.5) typescript: specifier: 5.4.5 version: 5.4.5 @@ -153,25 +156,142 @@ importers: specifier: ^6.19.2 version: 6.19.2 vite: - specifier: ^5.3.3 - version: 5.3.3(@types/node@20.14.10) + specifier: ^5.3.4 + version: 5.3.4(@types/node@20.14.11) vitest: specifier: ^2.0.3 - version: 2.0.3(@types/node@20.14.10) + version: 2.0.3(@types/node@20.14.11) zod: specifier: ^3.23.8 version: 3.23.8 + website: + dependencies: + '@vueuse/core': + specifier: 10.11.0 + version: 10.11.0(vue@3.4.32(typescript@5.4.5)) + vue: + specifier: 3.4.32 + version: 3.4.32(typescript@5.4.5) + devDependencies: + '@iconify-json/bx': + specifier: ^1.1.10 + version: 1.1.10 + '@iconify-json/fluent-emoji': + specifier: ^1.1.18 + version: 1.1.18 + '@iconify-json/logos': + specifier: ^1.1.43 + version: 1.1.43 + '@unocss/preset-icons': + specifier: ^0.61.5 + version: 0.61.5 + '@unocss/preset-uno': + specifier: 0.61.5 + version: 0.61.5 + '@unocss/preset-web-fonts': + specifier: ^0.61.5 + version: 0.61.5 + markdown-it: + specifier: ^14.1.0 + version: 14.1.0 + markdown-it-container: + specifier: ^4.0.0 + version: 4.0.0 + unocss: + specifier: ^0.61.5 + version: 0.61.5(postcss@8.4.39)(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11)) + vitepress: + specifier: 1.3.1 + version: 1.3.1(@algolia/client-search@4.24.0)(@types/node@20.14.11)(postcss@8.4.39)(search-insights@2.15.0)(typescript@5.4.5) + zod: + specifier: 3.23.8 + version: 3.23.8 + packages: '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + '@algolia/autocomplete-core@1.9.3': + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3': + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.9.3': + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.9.3': + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} + + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} + + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} + + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} + + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} + + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} + + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} + + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} + + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} + + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} + + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} + + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} + + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} + + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@0.1.1': + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@anthropic-ai/sdk@0.22.0': + resolution: {integrity: sha512-dv4BCC6FZJw3w66WNLsHlUFjhu19fS1L/5jMPApwhZLa/Oy1j0A2i3RypmDtHEPp4Wwg3aZkSHksp7VzYWjzmw==} + '@atao60/fse-cli@0.1.9': resolution: {integrity: sha512-ga+hz6CUNOvvA63EMs5gucg6IHUuQSq3noL+Y479Om57FXsLEqBpl96vdLj1QnBEK6Z8mrzwZ/vXovOK8OQZ1g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0, npm: '>=6.14.11'} @@ -237,18 +357,44 @@ packages: resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.9': + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + engines: {node: '>=6.9.0'} + '@babel/core@7.24.7': resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} + '@babel/core@7.24.9': + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.10': + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.24.7': resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.7': resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.8': + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.8': + resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-environment-visitor@7.24.7': resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} @@ -261,6 +407,10 @@ packages: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -271,10 +421,34 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.9': + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} @@ -283,6 +457,10 @@ packages: resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -291,10 +469,18 @@ packages: resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.7': resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.8': + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -304,6 +490,41 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.24.8': + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.24.8': + resolution: {integrity: sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.24.7': resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} @@ -316,10 +537,18 @@ packages: resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.8': + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.7': resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.24.9': + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + '@commitlint/cli@19.3.0': resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==} engines: {node: '>=v18'} @@ -396,6 +625,29 @@ packages: resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} engines: {node: '>=v18'} + '@docsearch/css@3.6.1': + resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==} + + '@docsearch/js@3.6.1': + resolution: {integrity: sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==} + + '@docsearch/react@3.6.1': + resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -408,6 +660,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -420,6 +678,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -432,6 +696,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -444,6 +714,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -456,6 +732,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -468,6 +750,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -480,6 +768,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -492,6 +786,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -504,6 +804,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -516,6 +822,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -528,6 +840,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -540,6 +858,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -552,6 +876,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -564,6 +894,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -576,6 +912,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -588,6 +930,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -600,6 +948,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -612,6 +966,18 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -624,6 +990,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -636,6 +1008,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -648,6 +1026,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -660,6 +1044,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -672,6 +1062,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -712,6 +1108,21 @@ packages: '@vue/compiler-sfc': optional: true + '@iconify-json/bx@1.1.10': + resolution: {integrity: sha512-4JzMDYhs/hkU9mO8nNMNKZwHn706oQaD46URyUuD4fP/XAWGf01vg6wKITmQseEHsHDrtKAXjwcumfnTUDi3OQ==} + + '@iconify-json/fluent-emoji@1.1.18': + resolution: {integrity: sha512-LLXbamtfQctodGAOlBEKuXyLs2TrwY/EI0EvNmttuf128V/Bkb872bNmlsKzVrescix3NOvqr0EMhyW/L/Upww==} + + '@iconify-json/logos@1.1.43': + resolution: {integrity: sha512-UtvL1yDHUr9dl1Tqihh6K9m5dmbYKOYyLf3i9aKhymSW76QjOCGjpgQc0PQ4GJCAdU1cAMu+WO61TgPxdonrlg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.25': + resolution: {integrity: sha512-Y+iGko8uv/Fz5bQLLJyNSZGOdMW0G7cnlEX1CiNcKsRXX9cq/y/vwxrIAtLCZhKHr3m0VJmsjVPsvnM4uX8YLg==} + '@inquirer/figures@1.0.3': resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} @@ -720,10 +1131,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -732,10 +1139,6 @@ packages: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -746,12 +1149,16 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@langchain/core@0.2.16': - resolution: {integrity: sha512-mPmQi0ecJ81QwhvUQX4cwGVAqsM30ly3ygIlWoeUwDOXv9UW/IB2LAq8KKoVYIHTyEsIWJiyMP9Sv3e0xwjV8g==} + '@langchain/anthropic@0.2.6': + resolution: {integrity: sha512-mFBC944rKGy+oRKWOmCmABPj+pQ2S8FcvyFGavFgIqjWlnBk9PwMjWm8IEdWwaSEahJXuEL9xAV2StWazWdXvg==} + engines: {node: '>=18'} + + '@langchain/core@0.2.17': + resolution: {integrity: sha512-WnFiZ7R/ZUVeHO2IgcSL7Tu+CjApa26Iy99THJP5fax/NF8UQCc/ZRcw2Sb/RUuRPVm6ALDass0fSQE1L9YNJg==} engines: {node: '>=18'} - '@langchain/openai@0.2.2': - resolution: {integrity: sha512-1V7GZbRf8srdgfHV8C3W63BlYMf6/hsjTKh5ozZQaQDQ6bWMJwDjauvISvSVA+A0tqLAzf017C4+QVvy1kxjsw==} + '@langchain/openai@0.2.4': + resolution: {integrity: sha512-PQGmnnKbsC8odwjGbYf2aHAQEZ/uVXYtXqKnwk7BTVMZlFnt+Rt9eigp940xMKAadxHzqtKJpSd7Xf6G+LI6KA==} engines: {node: '>=18'} '@langchain/textsplitters@0.0.3': @@ -778,89 +1185,187 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.17.2': resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.18.1': + resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.17.2': resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.18.1': + resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.17.2': resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.18.1': + resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.17.2': resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.18.1': + resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.17.2': resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.17.2': resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.18.1': + resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.17.2': resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.18.1': + resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.17.2': resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.17.2': resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.18.1': + resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.17.2': resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.18.1': + resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.17.2': resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.18.1': + resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.17.2': resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.18.1': + resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.17.2': resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.17.2': + '@rollup/rollup-win32-ia32-msvc@4.18.1': + resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.17.2': resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.18.1': + resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} + cpu: [x64] + os: [win32] + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shikijs/core@1.10.3': + resolution: {integrity: sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==} + + '@shikijs/transformers@1.10.3': + resolution: {integrity: sha512-MNjsyye2WHVdxfZUSr5frS97sLGe6G1T+1P41QjyBFJehZphMcr4aBlRLmq6OSPBslYe9byQPVvt/LJCOfxw8Q==} + '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -885,6 +1390,9 @@ packages: '@types/global-agent@2.1.3': resolution: {integrity: sha512-rGtZZcgZcKWuKNTkGBGsqyOQ7Nn2MjXh4+xeZbf+5b5KMUx8H1rTqLRackxos7pUlreszbYjQcop5JvqCnZlLw==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -894,14 +1402,23 @@ packages: '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.1': + resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} '@types/node@18.19.39': resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} + '@types/node@20.14.11': + resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -909,12 +1426,18 @@ packages: '@types/shell-quote@1.7.5': resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} '@types/vscode@1.82.0': resolution: {integrity: sha512-VSHV+VnpF8DEm8LNrn8OJ8VuUNcBzN3tMvKrNpbhhfuVjFm82+6v44AbDhLvVFgCzn6vs94EJNTp7w8S6+Q1Rw==} + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + '@typescript-eslint/eslint-plugin@7.16.1': resolution: {integrity: sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==} engines: {node: ^18.18.0 || >=20.0.0} @@ -976,6 +1499,99 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@unocss/astro@0.61.5': + resolution: {integrity: sha512-keyh6/EsPMBEiLguaOsh47UcMkWCGT0rW3KV5aYRUfYXlgccSzDd4SLmTNsdlGXIso2XCl/14BJQuwjP0UEU0Q==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.61.5': + resolution: {integrity: sha512-Y5mKSoQGEYRmjUi5Tia3EesQbLgQTTPGmeE7LFrbeyP1c7PDiW3wSR5fRNZ7PBrr6/C5oo2sId3MhWJQl3tFSA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.61.5': + resolution: {integrity: sha512-VIIln/1aD9cqU95+3IVZG9U1yO7Ys6RqyqtgD5pIJ77rg57v/2sey+S2ScFx3KB24Bal3FxAgHA5CdjFpQZldA==} + engines: {node: '>=14'} + + '@unocss/core@0.61.5': + resolution: {integrity: sha512-hB8zr2rnrCzz9x8ho2SAXQiYTEjwAPMiBzpaEe2C0+CFWeL1179h9508YVyZHHAzMyZILIG9YrVAWrrMdt2/Xg==} + + '@unocss/extractor-arbitrary-variants@0.61.5': + resolution: {integrity: sha512-UB1EweAaJrUxv+h3n5FqoizKHrnUgUzkdmOdJTfV6xvow90ITqbUoza+L6iVMNfcrcXTx8QpDnWh6rhLRyKY+g==} + + '@unocss/inspector@0.61.5': + resolution: {integrity: sha512-DIT+hgTphHXZTJEe4ZWUoYoQUNszmVJr06+gGhBkKwpdetQa6B2N+zGLkAxgAvo/BUmk29tOORIBu7AyoloRUA==} + + '@unocss/postcss@0.61.5': + resolution: {integrity: sha512-FbN9G3v5X6TEzBRytnFvqOr1oeeUv1ZzprBIyXnQFg17D8rx7uRS9kAfUMoSiqAqnFxkJObv43fH+W3E41+JYQ==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.61.5': + resolution: {integrity: sha512-D2KDHPj8Qvp0hafA4JT5GXebO49gHsuKT6QvzwBpP9wzwAefAkd6PIY8cSKqSD6sjjVSfOpCfbZIzbwLEbXV5w==} + + '@unocss/preset-icons@0.61.5': + resolution: {integrity: sha512-Fx1WZz6A7wtUDU+mt6KdjWOu9fEGG2XgzE8t8YFfUu22KjXyyef7Lto90uUNs9z+vYLevXqeDfthOZQFwNSfIg==} + + '@unocss/preset-mini@0.61.5': + resolution: {integrity: sha512-gVm7Z9X0krx8CK/+pKAqcVmpqzRk1+SH7bfgRxKtKhyFSxJlwpjNp1rKm3gCT0F1Tlp3d8aufYRksaXGZhs8Ow==} + + '@unocss/preset-tagify@0.61.5': + resolution: {integrity: sha512-kxO20pV7Bwg7U3hPpxShFSn6CXH+EMaTFC+WXsh2wTOEs43Tta7L6kCSUPzrZ9pX/Pq4oInRQY9gqiZqlGETmQ==} + + '@unocss/preset-typography@0.61.5': + resolution: {integrity: sha512-CQIleFkmfk/dAOlY7nPA1SOYHzXA6ia7+BCqGrTKxQVFOyBL7iHeNl0yV7lFtKFQn8zyFNEiBVW+fYi0QrouYw==} + + '@unocss/preset-uno@0.61.5': + resolution: {integrity: sha512-CflB0l9CeZx+b/Q8mA4Ow4d63Caf+vFJ+1EGA06jG9qYjPLy76Rkci//0m9cEtO+vPnYtgLc7HZAZv0X6wh4Tg==} + + '@unocss/preset-web-fonts@0.61.5': + resolution: {integrity: sha512-hVIMPGayxg7xvlvfQnJxB0N3KTvmrglbH3v5BCYNjbh37+5hv+x22K6iWewY3BkGtaWqOtLO3H1n5a1rxPMyaw==} + + '@unocss/preset-wind@0.61.5': + resolution: {integrity: sha512-n4uepxv3gVoVQb0tv7iV8M4W0CgwLw0QaMX+3ECYzFLMynjCkZmFDtdQAX720yTvLZxwCxEZfQCgydOSt0qjZA==} + + '@unocss/reset@0.61.5': + resolution: {integrity: sha512-5FKNsHnke9J1Z0T4prOZn9hkWh86c6Px+Oh3xf8mDd6dDw8CjzYMRxZEKti0gt13NcsO29G1vLGM7UjG1sCamg==} + + '@unocss/rule-utils@0.61.5': + resolution: {integrity: sha512-sCHnpCQoj3/ZmCjYo+oW3+4r5Z8kFI2snEL+miU2Uk0SqCgY1k0cUIYivj5L9ghp29p8VjEusX9M01QEZOYK7g==} + engines: {node: '>=14'} + + '@unocss/scope@0.61.5': + resolution: {integrity: sha512-GSmnSYWQ4oiSmJdyT5bmf0McXXhFJcVY7jgweAK2WltQgrxs1C3FWl9XIJtkWvaP3DIJjf4mKJf+zc6TjYxxEw==} + + '@unocss/transformer-attributify-jsx-babel@0.61.5': + resolution: {integrity: sha512-wBwjBCh6N95Bv3fJg8iokbDO9P5F+ee4n4gCecoePi6qSW22cBowj/UakP++L92GWX8FNZcphKOqMxx61q9gOg==} + + '@unocss/transformer-attributify-jsx@0.61.5': + resolution: {integrity: sha512-w9vSBfgRdfofFnqzBvxrMi/FmP+ZtXz9W07wnoS6Yea7uhADilgx1h7wNfJECmK8kM8gWhjl5e6svZNAUQbI7A==} + + '@unocss/transformer-compile-class@0.61.5': + resolution: {integrity: sha512-5WLi5MgRt8DJiANoWUK49noCgdyU/IKneGs3RJYDRNONEh2HdsL6ktACSRe9Y185ICGaD9MOk3cHBZALj07gew==} + + '@unocss/transformer-directives@0.61.5': + resolution: {integrity: sha512-vQvgLicgFJt/rUTh3nd8yZz5l0AMoE9qmtZqpgb9iDMOTHUZrlWpI3hsVsU6AB9kvL/NoyMI16hVkP8x6y7b9g==} + + '@unocss/transformer-variant-group@0.61.5': + resolution: {integrity: sha512-7Is7PChplNYTkLTiQm5fL5zFKf+LV6d9TpzNuwXNK2oa1pQARMXNmnHjFPpzaDgxpTjn9sqQON72gziuXcpOsg==} + + '@unocss/vite@0.61.5': + resolution: {integrity: sha512-+U5Ey5Z2csjLy7zcaDCtUqs08+ugRK87UWGm65W8yMAGW7me72f36QR8IHJUTqlVVEdhbJVIAy+yNFjGHYffjA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + '@vitest/expect@2.0.3': resolution: {integrity: sha512-X6AepoOYePM0lDNUPsGXTxgXZAl3EXd0GYe/MZyVE4HzkUqyUVC6S3PrY5mClDJ6/7/7vALLMV3+xD/Ko60Hqg==} @@ -1042,26 +1658,102 @@ packages: '@vscode/vsce-sign@2.0.4': resolution: {integrity: sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA==} - '@vscode/vsce@2.30.0': - resolution: {integrity: sha512-MBYpXdCY1SCdc2u/y11kmJuSODKFyZRpeRTQq5p4rSg05QSjSy5pz6h/BGLNdSahgXfKRBATEkjAcJFdJuDz8Q==} + '@vscode/vsce@2.31.0': + resolution: {integrity: sha512-iZvx9Vn3E81BCwZUAFctQyVxJE09LJ/nLHLGVZmKB5Pjtn62EgjWfJupehmWGmRYMS6ViK+7q7ysNrjxNFhh1g==} engines: {node: '>= 16'} hasBin: true - '@vue/compiler-core@3.4.31': - resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} + '@vue/compiler-core@3.4.32': + resolution: {integrity: sha512-8tCVWkkLe/QCWIsrIvExUGnhYCAOroUs5dzhSoKL5w4MJS8uIYiou+pOPSVIOALOQ80B0jBs+Ri+kd5+MBnCDw==} + + '@vue/compiler-dom@3.4.32': + resolution: {integrity: sha512-PbSgt9KuYo4fyb90dynuPc0XFTfFPs3sCTbPLOLlo+PrUESW1gn/NjSsUvhR+mI2AmmEzexwYMxbHDldxSOr2A==} + + '@vue/compiler-sfc@3.4.32': + resolution: {integrity: sha512-STy9im/WHfaguJnfKjjVpMHukxHUrOKjm2vVCxiojQJyo3Sb6Os8SMXBr/MI+ekpstEGkDONfqAQoSbZhspLYw==} + + '@vue/compiler-ssr@3.4.32': + resolution: {integrity: sha512-nyu/txTecF6DrxLrpLcI34xutrvZPtHPBj9yRoPxstIquxeeyywXpYZrQMsIeDfBhlw1abJb9CbbyZvDw2kjdg==} + + '@vue/devtools-api@7.3.6': + resolution: {integrity: sha512-z6cKyxdXrIGgA++eyGBfquj6dCplRdgjt+I18fJx8hjWTXDTIyeQvryyEBMchnfZVyvUTjK3QjGjDpLCnJxPjw==} - '@vue/compiler-dom@3.4.31': - resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} + '@vue/devtools-kit@7.3.6': + resolution: {integrity: sha512-5Ym9V3fkJenEoptqKoo+cgY5RTVwrSssFdzRsuyIgaeiskCT+rRJeQdwoo81tyrQ1mfS7Er1rYZlSzr3Y3L/ew==} - '@vue/compiler-sfc@3.4.31': - resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} + '@vue/devtools-shared@7.3.6': + resolution: {integrity: sha512-R/FOmdJV+hhuwcNoxp6e87RRkEeDMVhWH+nOsnHUrwjjsyeXJ2W1475Ozmw+cbZhejWQzftkHVKO28Fuo1yqCw==} - '@vue/compiler-ssr@3.4.31': - resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} + '@vue/reactivity@3.4.32': + resolution: {integrity: sha512-1P7QvghAzhSIWmiNmh4MNkLVjr2QTNDcFv2sKmytEWhR6t7BZzNicgm5ENER4uU++wbWxgRh/pSEYgdI3MDcvg==} + + '@vue/runtime-core@3.4.32': + resolution: {integrity: sha512-FxT2dTHUs1Hki8Ui/B1Hu339mx4H5kRJooqrNM32tGUHBPStJxwMzLIRbeGO/B1NMplU4Pg9fwOqrJtrOzkdfA==} + + '@vue/runtime-dom@3.4.32': + resolution: {integrity: sha512-Xz9G+ZViRyPFQtRBCPFkhMzKn454ihCPMKUiacNaUhuTIXvyfkAq8l89IZ/kegFVyw/7KkJGRGqYdEZrf27Xsg==} + + '@vue/server-renderer@3.4.32': + resolution: {integrity: sha512-3c4rd0522Ao8hKjzgmUAbcjv2mBnvnw0Ld2f8HOMCuWJZjYie/p8cpIoYJbeP0VV2JYmrJJMwGQDO5RH4iQ30A==} + peerDependencies: + vue: 3.4.32 '@vue/shared@3.4.31': resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + '@vue/shared@3.4.32': + resolution: {integrity: sha512-ep4mF1IVnX/pYaNwxwOpJHyBtOMKWoKZMbnUyd+z0udqIxLUh7YCCd/JfDna8aUrmnG9SFORyIq2HzEATRrQsg==} + + '@vueuse/core@10.11.0': + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} + + '@vueuse/integrations@10.11.0': + resolution: {integrity: sha512-Pp6MtWEIr+NDOccWd8j59Kpjy5YDXogXI61Kb1JxvSfVBO8NzFQkmrKmSZz47i+ZqHnIzxaT38L358yDHTncZg==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^4 + drauu: ^0.3 + focus-trap: ^7 + fuse.js: ^6 + idb-keyval: ^6 + jwt-decode: ^3 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^6 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@10.11.0': + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} + + '@vueuse/shared@10.11.0': + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1098,6 +1790,9 @@ packages: ajv@8.16.0: resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1209,6 +1904,9 @@ packages: binary-search@1.3.6: resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} + birpc@0.2.17: + resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1237,6 +1935,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -1249,11 +1952,11 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-require@4.0.2: - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: '>=0.17' + esbuild: '>=0.18' cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -1281,6 +1984,9 @@ packages: caniuse-lite@1.0.30001620: resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} + caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} + chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -1405,9 +2111,16 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -1427,6 +2140,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + core-js@3.37.1: resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} @@ -1454,10 +2171,17 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cz-conventional-changelog@3.3.0: resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} @@ -1545,10 +2269,16 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} engines: {node: '>=0.10.0'} @@ -1597,6 +2327,9 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1609,6 +2342,9 @@ packages: electron-to-chromium@1.4.774: resolution: {integrity: sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==} + electron-to-chromium@1.4.829: + resolution: {integrity: sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==} + emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -1679,6 +2415,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1762,8 +2503,8 @@ packages: resolution: {integrity: sha512-l/P3WTzl2HI8PbwsbDIrZ+6jvwQI4TGuz20ReJkG3Y+gZS5ZurTgx+gBmuLpOgiqMyDJWyJ7+GCjevWtNYQcUg==} engines: {node: '>=18.0'} - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1892,6 +2633,10 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + hasBin: true + fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} @@ -1943,6 +2688,9 @@ packages: flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -2062,10 +2810,6 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2111,6 +2855,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -2156,6 +2904,9 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} @@ -2186,8 +2937,8 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + husky@9.1.0: + resolution: {integrity: sha512-8XCjbomYTGdNF2h50dio3T3zghmZ9f/ZNzr99YwSkvDdhEjJGs5qzy8tbFx+SG8yCx2wn9nMVfZxVrr/yT8gNQ==} engines: {node: '>=18'} hasBin: true @@ -2382,6 +3133,10 @@ packages: is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -2502,6 +3257,9 @@ packages: '@types/node': '>=18' typescript: '>=5.0.4' + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + langchain@0.2.10: resolution: {integrity: sha512-i0fC+RlX/6w6HKPWL3N5zrhrkijvpe2Xu4t/qbWzq4uFf8WBfPwmNFom3RtO2RatuPnHLm8mViU6nw8YBDiVwA==} engines: {node: '>=18'} @@ -2664,7 +3422,7 @@ packages: langsmith@0.1.36: resolution: {integrity: sha512-D5hhkFl31uxFdffx0lA6pin0lt8Pv2dpHFZYpSgEzvQ26PQ/Y/tnniQ+aCNokIXuLhMa7uqLtb6tfwjfiZXgdg==} peerDependencies: - '@langchain/core': 0.2.16 + '@langchain/core': 0.2.17 langchain: '*' openai: '*' peerDependenciesMeta: @@ -2683,10 +3441,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -2697,6 +3451,9 @@ packages: linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + lint-staged@15.2.7: resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} engines: {node: '>=18.12.0'} @@ -2710,6 +3467,10 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2805,17 +3566,33 @@ packages: magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + markdown-it-container@4.0.0: + resolution: {integrity: sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==} + markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -2884,6 +3661,12 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minisearch@7.0.1: + resolution: {integrity: sha512-xLeX/AwTJLzgBF2/bdUI7MEePwXtzaLExkRwu8YFGfLDwSe06KYkplqPodLANsqvfc5Ks/r5ItFUSjIp7+9xtw==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -2902,6 +3685,13 @@ packages: ml-tree-similarity@1.0.0: resolution: {integrity: sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2944,6 +3734,9 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3010,6 +3803,9 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3153,6 +3949,9 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -3173,6 +3972,9 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + playwright-core@1.45.1: resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} engines: {node: '>=18'} @@ -3192,22 +3994,31 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} peerDependencies: + jiti: '>=1.21.0' postcss: '>=8.0.9' - ts-node: '>=9.0.0' + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: + jiti: + optional: true postcss: optional: true - ts-node: + tsx: + optional: true + yaml: optional: true postcss@8.4.39: resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} + preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -3233,6 +4044,10 @@ packages: pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3335,6 +4150,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.18.1: + resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -3366,6 +4186,9 @@ packages: sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + search-insights@2.15.0: + resolution: {integrity: sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ==} + semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} @@ -3409,6 +4232,9 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shiki@1.10.3: + resolution: {integrity: sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==} + side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -3428,6 +4254,10 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3459,6 +4289,10 @@ packages: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -3546,14 +4380,21 @@ packages: resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true summary@2.1.0: resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} + superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -3570,10 +4411,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -3637,6 +4481,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -3662,8 +4510,8 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tsup@8.1.0: - resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==} + tsup@8.1.2: + resolution: {integrity: sha512-Gzw/PXSX/z0aYMNmkcI54bKKFVFJQbLne+EqTJZeQ3lNT3QpumjtMU4rl+ZwTTp8oRF3ahMbEAxT2sZPJLFSrg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -3740,9 +4588,18 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unconfig@0.3.13: + resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} + underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} @@ -3761,12 +4618,30 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unocss@0.61.5: + resolution: {integrity: sha512-BScwlqXW9KHQLKIKtXmwWmMb4Ihoryb7uIgmS+HSqmCN58eqNA73vAo3cZ97xtO+RFdauqgGKP5wD6ShQUvqnQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.61.5 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + update-browserslist-db@1.0.16: resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3793,8 +4668,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.3.3: - resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} + vite@5.3.4: + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3821,6 +4696,18 @@ packages: terser: optional: true + vitepress@1.3.1: + resolution: {integrity: sha512-soZDpg2rRVJNIM/IYMNDPPr+zTHDA5RbLDHAxacRu+Q9iZ2GwSR0QSUlLs+aEZTkG0SOX1dc8RmUYwyuxK8dfQ==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + vitest@2.0.3: resolution: {integrity: sha512-o3HRvU93q6qZK4rI2JrhKyZMMuxg/JRt30E6qeQs6ueaiz5hr1cPj+Sk2kATgQzMMqsa2DiNI0TIK++1ULx8Jw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3861,6 +4748,25 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vue-demi@0.14.8: + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue@3.4.32: + resolution: {integrity: sha512-9mCGIAi/CAq7GtaLLLp2J92pEic+HArstG+pq6F+H7+/jB9a0Z7576n4Bh4k79/50L1cKMIhZC3MC0iGpl+1IA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -3946,10 +4852,6 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} - yaml@2.4.5: resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} @@ -4003,11 +4905,135 @@ snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.15.0)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.15.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.15.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + search-insights: 2.15.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/cache-browser-local-storage@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/cache-common@4.24.0': {} + + '@algolia/cache-in-memory@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/client-account@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-analytics@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-common@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-personalization@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-search@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/logger-common@4.24.0': {} + + '@algolia/logger-console@4.24.0': + dependencies: + '@algolia/logger-common': 4.24.0 + + '@algolia/recommend@4.24.0': + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/requester-browser-xhr@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/requester-common@4.24.0': {} + + '@algolia/requester-node-http@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/transporter@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/install-pkg@0.1.1': + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + + '@antfu/utils@0.7.10': {} + + '@anthropic-ai/sdk@0.22.0': + dependencies: + '@types/node': 18.19.39 + '@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 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + '@atao60/fse-cli@0.1.9': dependencies: '@babel/runtime': 7.24.7 @@ -4114,6 +5140,8 @@ snapshots: '@babel/compat-data@7.24.7': {} + '@babel/compat-data@7.24.9': {} + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 @@ -4134,6 +5162,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.24.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.10': + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/generator@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -4141,6 +5196,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.24.7 + '@babel/helper-compilation-targets@7.24.7': dependencies: '@babel/compat-data': 7.24.7 @@ -4149,6 +5208,29 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.24.8': + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-environment-visitor@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -4162,6 +5244,13 @@ snapshots: dependencies: '@babel/types': 7.24.7 + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -4180,6 +5269,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -4187,21 +5302,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-split-export-declaration@7.24.7': dependencies: '@babel/types': 7.24.7 '@babel/helper-string-parser@7.24.7': {} + '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.7': {} + '@babel/helper-validator-option@7.24.8': {} + '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 + '@babel/helpers@7.24.8': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -4213,6 +5344,50 @@ snapshots: dependencies: '@babel/types': 7.24.7 + '@babel/parser@7.24.8': + dependencies: + '@babel/types': 7.24.9 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.24.8(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.24.7(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 @@ -4238,17 +5413,38 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.24.8': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.24.7': dependencies: '@babel/helper-string-parser': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@commitlint/cli@19.3.0(@types/node@20.14.10)(typescript@5.4.5)': + '@babel/types@7.24.9': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@commitlint/cli@19.3.0(@types/node@20.14.11)(typescript@5.4.5)': dependencies: '@commitlint/format': 19.3.0 '@commitlint/lint': 19.2.2 - '@commitlint/load': 19.2.0(@types/node@20.14.10)(typescript@5.4.5) + '@commitlint/load': 19.2.0(@types/node@20.14.11)(typescript@5.4.5) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -4267,13 +5463,13 @@ snapshots: '@commitlint/types': 19.0.3 ajv: 8.16.0 - '@commitlint/cz-commitlint@19.2.0(@types/node@20.14.10)(commitizen@4.3.0(@types/node@20.14.10)(typescript@5.4.5))(inquirer@9.3.4)(typescript@5.4.5)': + '@commitlint/cz-commitlint@19.2.0(@types/node@20.14.11)(commitizen@4.3.0(@types/node@20.14.11)(typescript@5.4.5))(inquirer@9.3.4)(typescript@5.4.5)': dependencies: '@commitlint/ensure': 19.0.3 - '@commitlint/load': 19.2.0(@types/node@20.14.10)(typescript@5.4.5) + '@commitlint/load': 19.2.0(@types/node@20.14.11)(typescript@5.4.5) '@commitlint/types': 19.0.3 chalk: 5.3.0 - commitizen: 4.3.0(@types/node@20.14.10)(typescript@5.4.5) + commitizen: 4.3.0(@types/node@20.14.11)(typescript@5.4.5) inquirer: 9.3.4 lodash.isplainobject: 4.0.6 word-wrap: 1.2.5 @@ -4309,7 +5505,7 @@ snapshots: '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 - '@commitlint/load@19.2.0(@types/node@20.14.10)(typescript@5.4.5)': + '@commitlint/load@19.2.0(@types/node@20.14.11)(typescript@5.4.5)': dependencies: '@commitlint/config-validator': 19.0.3 '@commitlint/execute-rule': 19.0.0 @@ -4317,7 +5513,7 @@ snapshots: '@commitlint/types': 19.0.3 chalk: 5.3.0 cosmiconfig: 9.0.0(typescript@5.4.5) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.10)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.11)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -4369,144 +5565,240 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 + '@docsearch/css@3.6.1': {} + + '@docsearch/js@3.6.1(@algolia/client-search@4.24.0)(search-insights@2.15.0)': + dependencies: + '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.15.0) + preact: 10.22.1 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.6.1(@algolia/client-search@4.24.0)(search-insights@2.15.0)': + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.15.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.1 + algoliasearch: 4.24.0 + optionalDependencies: + search-insights: 2.15.0 + transitivePeerDependencies: + - '@algolia/client-search' + '@esbuild/aix-ppc64@0.20.2': optional: true '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.0': + optional: true + '@esbuild/android-arm64@0.20.2': optional: true '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.0': + optional: true + '@esbuild/android-arm@0.20.2': optional: true '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.0': + optional: true + '@esbuild/android-x64@0.20.2': optional: true '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.0': + optional: true + '@esbuild/darwin-arm64@0.20.2': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.0': + optional: true + '@esbuild/darwin-x64@0.20.2': optional: true '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.0': + optional: true + '@esbuild/freebsd-arm64@0.20.2': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.0': + optional: true + '@esbuild/freebsd-x64@0.20.2': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.0': + optional: true + '@esbuild/linux-arm64@0.20.2': optional: true '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.0': + optional: true + '@esbuild/linux-arm@0.20.2': optional: true '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.0': + optional: true + '@esbuild/linux-ia32@0.20.2': optional: true '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.0': + optional: true + '@esbuild/linux-loong64@0.20.2': optional: true '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.0': + optional: true + '@esbuild/linux-mips64el@0.20.2': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.0': + optional: true + '@esbuild/linux-ppc64@0.20.2': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.0': + optional: true + '@esbuild/linux-riscv64@0.20.2': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.0': + optional: true + '@esbuild/linux-s390x@0.20.2': optional: true '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.0': + optional: true + '@esbuild/linux-x64@0.20.2': optional: true '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.0': + optional: true + '@esbuild/netbsd-x64@0.20.2': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.0': + optional: true + '@esbuild/openbsd-x64@0.20.2': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.0': + optional: true + '@esbuild/sunos-x64@0.20.2': optional: true '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.0': + optional: true + '@esbuild/win32-arm64@0.20.2': optional: true '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.0': + optional: true + '@esbuild/win32-ia32@0.20.2': optional: true '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.0': + optional: true + '@esbuild/win32-x64@0.20.2': optional: true '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.0': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -4542,7 +5834,7 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@ianvs/prettier-plugin-sort-imports@4.3.1(@vue/compiler-sfc@3.4.31)(prettier@3.3.3)': + '@ianvs/prettier-plugin-sort-imports@4.3.1(@vue/compiler-sfc@3.4.32)(prettier@3.3.3)': dependencies: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 @@ -4552,7 +5844,33 @@ snapshots: prettier: 3.3.3 semver: 7.6.2 optionalDependencies: - '@vue/compiler-sfc': 3.4.31 + '@vue/compiler-sfc': 3.4.32 + transitivePeerDependencies: + - supports-color + + '@iconify-json/bx@1.1.10': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/fluent-emoji@1.1.18': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/logos@1.1.43': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.25': + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.5 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 transitivePeerDependencies: - supports-color @@ -4567,12 +5885,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4581,8 +5893,6 @@ snapshots: '@jridgewell/resolve-uri@3.1.1': {} - '@jridgewell/set-array@1.1.2': {} - '@jridgewell/set-array@1.2.1': {} '@jridgewell/sourcemap-codec@1.4.15': {} @@ -4592,13 +5902,25 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@langchain/core@0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3)': + '@langchain/anthropic@0.2.6(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3)': + dependencies: + '@anthropic-ai/sdk': 0.22.0 + '@langchain/core': 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + fast-xml-parser: 4.4.0 + zod: 3.23.8 + zod-to-json-schema: 3.22.5(zod@3.23.8) + transitivePeerDependencies: + - encoding + - langchain + - openai + + '@langchain/core@0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3)': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.12 - langsmith: 0.1.36(@langchain/core@0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + langsmith: 0.1.36(@langchain/core@0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) ml-distance: 4.0.1 mustache: 4.2.0 p-queue: 6.6.2 @@ -4610,9 +5932,9 @@ snapshots: - langchain - openai - '@langchain/openai@0.2.2(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))': + '@langchain/openai@0.2.4(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))': dependencies: - '@langchain/core': 0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + '@langchain/core': 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) js-tiktoken: 1.0.12 openai: 4.52.3 zod: 3.23.8 @@ -4621,9 +5943,9 @@ snapshots: - encoding - langchain - '@langchain/textsplitters@0.0.3(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3)': + '@langchain/textsplitters@0.0.3(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3)': dependencies: - '@langchain/core': 0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + '@langchain/core': 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) js-tiktoken: 1.0.12 transitivePeerDependencies: - langchain @@ -4646,56 +5968,122 @@ snapshots: '@pkgr/core@0.1.1': {} + '@polka/url@1.0.0-next.25': {} + + '@rollup/pluginutils@5.1.0(rollup@4.18.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.18.1 + '@rollup/rollup-android-arm-eabi@4.17.2': optional: true + '@rollup/rollup-android-arm-eabi@4.18.1': + optional: true + '@rollup/rollup-android-arm64@4.17.2': optional: true + '@rollup/rollup-android-arm64@4.18.1': + optional: true + '@rollup/rollup-darwin-arm64@4.17.2': optional: true + '@rollup/rollup-darwin-arm64@4.18.1': + optional: true + '@rollup/rollup-darwin-x64@4.17.2': optional: true + '@rollup/rollup-darwin-x64@4.18.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.17.2': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.17.2': optional: true + '@rollup/rollup-linux-arm64-gnu@4.18.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.17.2': optional: true + '@rollup/rollup-linux-arm64-musl@4.18.1': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.17.2': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.17.2': optional: true + '@rollup/rollup-linux-s390x-gnu@4.18.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': + '@rollup/rollup-linux-x64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.17.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.1': optional: true '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true + '@rollup/rollup-win32-arm64-msvc@4.18.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true + '@rollup/rollup-win32-ia32-msvc@4.18.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true + '@rollup/rollup-win32-x64-msvc@4.18.1': + optional: true + '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@1.10.3': + dependencies: + '@types/hast': 3.0.4 + + '@shikijs/transformers@1.10.3': + dependencies: + shiki: 1.10.3 + '@sindresorhus/merge-streams@4.0.0': {} '@snyk/github-codeowners@1.1.0': @@ -4706,7 +6094,7 @@ snapshots: '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 '@types/eslint@8.56.10': dependencies: @@ -4719,10 +6107,14 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.14.10 + '@types/node': 20.14.11 '@types/global-agent@2.1.3': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 + '@types/json-schema@7.0.15': optional: true @@ -4730,18 +6122,27 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.1': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} '@types/node-fetch@2.6.11': dependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 form-data: 4.0.0 '@types/node@18.19.39': dependencies: undici-types: 5.26.5 - '@types/node@20.14.10': + '@types/node@20.14.11': dependencies: undici-types: 5.26.5 @@ -4749,10 +6150,14 @@ snapshots: '@types/shell-quote@1.7.5': {} + '@types/unist@3.0.2': {} + '@types/uuid@9.0.8': {} '@types/vscode@1.82.0': {} + '@types/web-bluetooth@0.0.20': {} + '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 @@ -4836,6 +6241,164 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@unocss/astro@0.61.5(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11))': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/reset': 0.61.5 + '@unocss/vite': 0.61.5(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11)) + optionalDependencies: + vite: 5.3.4(@types/node@20.14.11) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.61.5(rollup@4.18.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@unocss/config': 0.61.5 + '@unocss/core': 0.61.5 + '@unocss/preset-uno': 0.61.5 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + unconfig: 0.3.13 + + '@unocss/core@0.61.5': {} + + '@unocss/extractor-arbitrary-variants@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/inspector@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/rule-utils': 0.61.5 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/postcss@0.61.5(postcss@8.4.39)': + dependencies: + '@unocss/config': 0.61.5 + '@unocss/core': 0.61.5 + '@unocss/rule-utils': 0.61.5 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.10 + postcss: 8.4.39 + + '@unocss/preset-attributify@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/preset-icons@0.61.5': + dependencies: + '@iconify/utils': 2.1.25 + '@unocss/core': 0.61.5 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/extractor-arbitrary-variants': 0.61.5 + '@unocss/rule-utils': 0.61.5 + + '@unocss/preset-tagify@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/preset-typography@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/preset-mini': 0.61.5 + + '@unocss/preset-uno@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/preset-mini': 0.61.5 + '@unocss/preset-wind': 0.61.5 + '@unocss/rule-utils': 0.61.5 + + '@unocss/preset-web-fonts@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + ofetch: 1.3.4 + + '@unocss/preset-wind@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/preset-mini': 0.61.5 + '@unocss/rule-utils': 0.61.5 + + '@unocss/reset@0.61.5': {} + + '@unocss/rule-utils@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + magic-string: 0.30.10 + + '@unocss/scope@0.61.5': {} + + '@unocss/transformer-attributify-jsx-babel@0.61.5': + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) + '@unocss/core': 0.61.5 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-attributify-jsx@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/transformer-compile-class@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/transformer-directives@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + '@unocss/rule-utils': 0.61.5 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.61.5': + dependencies: + '@unocss/core': 0.61.5 + + '@unocss/vite@0.61.5(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@unocss/config': 0.61.5 + '@unocss/core': 0.61.5 + '@unocss/inspector': 0.61.5 + '@unocss/scope': 0.61.5 + '@unocss/transformer-directives': 0.61.5 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 5.3.4(@types/node@20.14.11) + transitivePeerDependencies: + - rollup + + '@vitejs/plugin-vue@5.0.5(vite@5.3.4(@types/node@20.14.11))(vue@3.4.32(typescript@5.4.5))': + dependencies: + vite: 5.3.4(@types/node@20.14.11) + vue: 3.4.32(typescript@5.4.5) + '@vitest/expect@2.0.3': dependencies: '@vitest/spy': 2.0.3 @@ -4908,7 +6471,7 @@ snapshots: '@vscode/vsce-sign-win32-arm64': 2.0.2 '@vscode/vsce-sign-win32-x64': 2.0.2 - '@vscode/vsce@2.30.0': + '@vscode/vsce@2.31.0': dependencies: '@azure/identity': 4.3.0 '@vscode/vsce-sign': 2.0.4 @@ -4939,42 +6502,109 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.4.31': + '@vue/compiler-core@3.4.32': dependencies: '@babel/parser': 7.24.7 - '@vue/shared': 3.4.31 + '@vue/shared': 3.4.32 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - optional: true - '@vue/compiler-dom@3.4.31': + '@vue/compiler-dom@3.4.32': dependencies: - '@vue/compiler-core': 3.4.31 - '@vue/shared': 3.4.31 - optional: true + '@vue/compiler-core': 3.4.32 + '@vue/shared': 3.4.32 - '@vue/compiler-sfc@3.4.31': + '@vue/compiler-sfc@3.4.32': dependencies: '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.31 - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 + '@vue/compiler-core': 3.4.32 + '@vue/compiler-dom': 3.4.32 + '@vue/compiler-ssr': 3.4.32 + '@vue/shared': 3.4.32 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.39 source-map-js: 1.2.0 - optional: true - '@vue/compiler-ssr@3.4.31': + '@vue/compiler-ssr@3.4.32': dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 - optional: true + '@vue/compiler-dom': 3.4.32 + '@vue/shared': 3.4.32 - '@vue/shared@3.4.31': - optional: true + '@vue/devtools-api@7.3.6': + dependencies: + '@vue/devtools-kit': 7.3.6 + + '@vue/devtools-kit@7.3.6': + dependencies: + '@vue/devtools-shared': 7.3.6 + birpc: 0.2.17 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.1 + + '@vue/devtools-shared@7.3.6': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.4.32': + dependencies: + '@vue/shared': 3.4.32 + + '@vue/runtime-core@3.4.32': + dependencies: + '@vue/reactivity': 3.4.32 + '@vue/shared': 3.4.32 + + '@vue/runtime-dom@3.4.32': + dependencies: + '@vue/reactivity': 3.4.32 + '@vue/runtime-core': 3.4.32 + '@vue/shared': 3.4.32 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.32(vue@3.4.32(typescript@5.4.5))': + dependencies: + '@vue/compiler-ssr': 3.4.32 + '@vue/shared': 3.4.32 + vue: 3.4.32(typescript@5.4.5) + + '@vue/shared@3.4.31': {} + + '@vue/shared@3.4.32': {} + + '@vueuse/core@10.11.0(vue@3.4.32(typescript@5.4.5))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.4.32(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.32(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/integrations@10.11.0(focus-trap@7.5.4)(vue@3.4.32(typescript@5.4.5))': + dependencies: + '@vueuse/core': 10.11.0(vue@3.4.32(typescript@5.4.5)) + '@vueuse/shared': 10.11.0(vue@3.4.32(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.32(typescript@5.4.5)) + optionalDependencies: + focus-trap: 7.5.4 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.11.0': {} + + '@vueuse/shared@10.11.0(vue@3.4.32(typescript@5.4.5))': + dependencies: + vue-demi: 0.14.8(vue@3.4.32(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue JSONStream@1.3.5: dependencies: @@ -5020,6 +6650,24 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -5132,6 +6780,8 @@ snapshots: binary-search@1.3.6: {} + birpc@0.2.17: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -5166,6 +6816,13 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.0) + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001642 + electron-to-chromium: 1.4.829 + node-releases: 2.0.14 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + buffer-crc32@0.2.13: {} buffer-equal-constant-time@1.0.1: {} @@ -5177,9 +6834,9 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@4.0.2(esbuild@0.21.5): + bundle-require@5.0.0(esbuild@0.23.0): dependencies: - esbuild: 0.21.5 + esbuild: 0.23.0 load-tsconfig: 0.2.5 cac@6.7.14: {} @@ -5206,6 +6863,8 @@ snapshots: caniuse-lite@1.0.30001620: {} + caniuse-lite@1.0.30001642: {} + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -5253,7 +6912,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -5322,10 +6981,10 @@ snapshots: commander@6.2.1: {} - commitizen@4.3.0(@types/node@20.14.10)(typescript@5.4.5): + commitizen@4.3.0(@types/node@20.14.11)(typescript@5.4.5): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.14.10)(typescript@5.4.5) + cz-conventional-changelog: 3.3.0(@types/node@20.14.11)(typescript@5.4.5) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -5349,8 +7008,12 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.7: {} + confusing-browser-globals@1.0.11: {} + consola@3.2.3: {} + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 @@ -5370,11 +7033,15 @@ snapshots: convert-source-map@2.0.0: {} + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + core-js@3.37.1: {} - cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.10)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): + cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.11)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): dependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.0 typescript: 5.4.5 @@ -5402,18 +7069,25 @@ snapshots: domutils: 3.1.0 nth-check: 2.1.1 + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + css-what@6.1.0: {} - cz-conventional-changelog@3.3.0(@types/node@20.14.10)(typescript@5.4.5): + csstype@3.1.3: {} + + cz-conventional-changelog@3.3.0(@types/node@20.14.11)(typescript@5.4.5): dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.14.10)(typescript@5.4.5) + commitizen: 4.3.0(@types/node@20.14.11)(typescript@5.4.5) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.2.0(@types/node@20.14.10)(typescript@5.4.5) + '@commitlint/load': 19.2.0(@types/node@20.14.11)(typescript@5.4.5) transitivePeerDependencies: - '@types/node' - typescript @@ -5490,8 +7164,12 @@ snapshots: has-property-descriptors: 1.0.1 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} + destr@2.0.3: {} + detect-file@1.0.0: {} detect-indent@6.1.0: {} @@ -5537,6 +7215,8 @@ snapshots: dotenv@16.4.5: {} + duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} easy-table@1.2.0: @@ -5551,6 +7231,8 @@ snapshots: electron-to-chromium@1.4.774: {} + electron-to-chromium@1.4.829: {} + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} @@ -5706,6 +7388,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -5806,12 +7515,12 @@ snapshots: lodash: 4.17.21 vscode-json-languageservice: 4.2.1 - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + synckit: 0.9.1 optionalDependencies: '@types/eslint': 8.56.10 eslint-config-prettier: 9.1.0(eslint@8.57.0) @@ -5899,8 +7608,7 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: - optional: true + estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: @@ -5984,6 +7692,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-xml-parser@4.4.0: + dependencies: + strnum: 1.0.5 + fastq@1.15.0: dependencies: reusify: 1.0.4 @@ -6045,6 +7757,10 @@ snapshots: flatted@3.2.9: {} + focus-trap@7.5.4: + dependencies: + tabbable: 6.2.0 + for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -6179,15 +7895,6 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 2.0.0 - glob@7.1.6: - 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@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -6252,6 +7959,10 @@ snapshots: graphemer@1.4.0: {} + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + has-bigints@1.0.2: {} has-flag@3.0.0: {} @@ -6288,6 +7999,8 @@ snapshots: dependencies: parse-passwd: 1.0.0 + hookable@5.5.3: {} + hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 @@ -6323,7 +8036,7 @@ snapshots: dependencies: ms: 2.1.3 - husky@9.0.11: {} + husky@9.1.0: {} iconv-lite@0.4.24: dependencies: @@ -6503,6 +8216,8 @@ snapshots: dependencies: call-bind: 1.0.7 + is-what@4.1.16: {} + is-windows@1.0.2: {} is-wsl@2.2.0: @@ -6618,11 +8333,11 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.26.0(@types/node@20.14.10)(typescript@5.4.5): + knip@5.26.0(@types/node@20.14.11)(typescript@5.4.5): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 - '@types/node': 20.14.10 + '@types/node': 20.14.11 easy-table: 1.2.0 fast-glob: 3.3.2 jiti: 1.21.6 @@ -6639,17 +8354,19 @@ snapshots: zod: 3.23.8 zod-validation-error: 3.3.0(zod@3.23.8) - langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1): + kolorist@1.8.0: {} + + langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1): dependencies: - '@langchain/core': 0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) - '@langchain/openai': 0.2.2(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1)) - '@langchain/textsplitters': 0.0.3(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + '@langchain/core': 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + '@langchain/openai': 0.2.4(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1)) + '@langchain/textsplitters': 0.0.3(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) binary-extensions: 2.2.0 js-tiktoken: 1.0.12 js-yaml: 4.1.0 jsonpointer: 5.0.1 langchainhub: 0.0.11 - langsmith: 0.1.36(@langchain/core@0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + langsmith: 0.1.36(@langchain/core@0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) ml-distance: 4.0.1 openapi-types: 12.1.3 p-retry: 4.6.2 @@ -6659,6 +8376,7 @@ snapshots: zod-to-json-schema: 3.22.5(zod@3.23.8) optionalDependencies: cheerio: 1.0.0-rc.12 + fast-xml-parser: 4.4.0 ignore: 5.3.1 playwright: 1.45.1 transitivePeerDependencies: @@ -6667,7 +8385,7 @@ snapshots: langchainhub@0.0.11: {} - langsmith@0.1.36(@langchain/core@0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3): + langsmith@0.1.36(@langchain/core@0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3))(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3): dependencies: '@types/uuid': 9.0.8 commander: 10.0.1 @@ -6675,8 +8393,8 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.2.16(langchain@0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) - langchain: 0.2.10(cheerio@1.0.0-rc.12)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1) + '@langchain/core': 0.2.17(langchain@0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1))(openai@4.52.3) + langchain: 0.2.10(cheerio@1.0.0-rc.12)(fast-xml-parser@4.4.0)(ignore@5.3.1)(openai@4.52.3)(playwright@1.45.1) openai: 4.52.3 leven@3.1.0: {} @@ -6686,8 +8404,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@2.1.0: {} - lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -6696,6 +8412,10 @@ snapshots: dependencies: uc.micro: 1.0.6 + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + lint-staged@15.2.7: dependencies: chalk: 5.3.0 @@ -6722,6 +8442,11 @@ snapshots: load-tsconfig@0.2.5: {} + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.3 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -6801,6 +8526,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + mark.js@8.11.1: {} + + markdown-it-container@4.0.0: {} + markdown-it@12.3.2: dependencies: argparse: 2.0.1 @@ -6809,12 +8538,25 @@ snapshots: mdurl: 1.0.1 uc.micro: 1.0.6 + 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 + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 + mdn-data@2.0.30: {} + mdurl@1.0.1: {} + mdurl@2.0.0: {} + meow@12.1.1: {} merge-stream@2.0.0: {} @@ -6866,6 +8608,10 @@ snapshots: minipass@7.1.2: {} + minisearch@7.0.1: {} + + mitt@3.0.1: {} + mkdirp-classic@0.5.3: optional: true @@ -6890,6 +8636,15 @@ snapshots: binary-search: 1.3.6 num-sort: 2.1.0 + mlly@1.7.1: + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + + mrmime@2.0.0: {} + ms@2.1.2: {} ms@2.1.3: {} @@ -6923,6 +8678,8 @@ snapshots: node-domexception@1.0.0: {} + node-fetch-native@1.6.4: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -6987,6 +8744,12 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + ofetch@1.3.4: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7139,6 +8902,8 @@ snapshots: pend@1.2.0: {} + perfect-debounce@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -7149,6 +8914,12 @@ snapshots: pirates@4.0.6: {} + pkg-types@1.1.3: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + playwright-core@1.45.1: optional: true @@ -7163,12 +8934,14 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-load-config@4.0.1(postcss@8.4.39): + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.39)(tsx@4.10.5)(yaml@2.4.5): dependencies: - lilconfig: 2.1.0 - yaml: 2.3.4 + lilconfig: 3.1.2 optionalDependencies: + jiti: 1.21.6 postcss: 8.4.39 + tsx: 4.10.5 + yaml: 2.4.5 postcss@8.4.39: dependencies: @@ -7176,6 +8949,8 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 + preact@10.22.1: {} + prebuild-install@7.1.1: dependencies: detect-libc: 2.0.2 @@ -7210,6 +8985,8 @@ snapshots: once: 1.4.0 optional: true + punycode.js@2.3.1: {} + punycode@2.3.1: {} qs@6.11.2: @@ -7328,6 +9105,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 + rollup@4.18.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.1 + '@rollup/rollup-android-arm64': 4.18.1 + '@rollup/rollup-darwin-arm64': 4.18.1 + '@rollup/rollup-darwin-x64': 4.18.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 + '@rollup/rollup-linux-arm-musleabihf': 4.18.1 + '@rollup/rollup-linux-arm64-gnu': 4.18.1 + '@rollup/rollup-linux-arm64-musl': 4.18.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 + '@rollup/rollup-linux-riscv64-gnu': 4.18.1 + '@rollup/rollup-linux-s390x-gnu': 4.18.1 + '@rollup/rollup-linux-x64-gnu': 4.18.1 + '@rollup/rollup-linux-x64-musl': 4.18.1 + '@rollup/rollup-win32-arm64-msvc': 4.18.1 + '@rollup/rollup-win32-ia32-msvc': 4.18.1 + '@rollup/rollup-win32-x64-msvc': 4.18.1 + fsevents: 2.3.3 + run-async@2.4.1: {} run-async@3.0.0: {} @@ -7359,6 +9158,8 @@ snapshots: sax@1.3.0: {} + search-insights@2.15.0: {} + semver-compare@1.0.0: {} semver@5.7.2: {} @@ -7402,6 +9203,11 @@ snapshots: shell-quote@1.8.1: {} + shiki@1.10.3: + dependencies: + '@shikijs/core': 1.10.3 + '@types/hast': 3.0.4 + side-channel@1.0.4: dependencies: call-bind: 1.0.7 @@ -7424,6 +9230,12 @@ snapshots: simple-concat: 1.0.1 optional: true + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + slash@3.0.0: {} slice-ansi@5.0.0: @@ -7451,6 +9263,8 @@ snapshots: dependencies: whatwg-url: 7.1.0 + speakingurl@14.0.1: {} + split2@4.2.0: {} sprintf-js@1.1.3: {} @@ -7529,11 +9343,13 @@ snapshots: strip-json-comments@5.0.1: {} - sucrase@3.34.0: + strnum@1.0.5: {} + + sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 7.1.6 + glob: 10.4.3 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -7541,6 +9357,10 @@ snapshots: summary@2.1.0: {} + superjson@2.2.1: + dependencies: + copy-anything: 3.0.5 + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -7556,11 +9376,13 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.8.8: + synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 + tabbable@6.2.0: {} + tapable@2.2.1: {} tar-fs@2.1.1: @@ -7621,6 +9443,8 @@ snapshots: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tr46@0.0.3: {} tr46@1.0.1: @@ -7644,28 +9468,31 @@ snapshots: tslib@2.6.2: {} - tsup@8.1.0(postcss@8.4.39)(typescript@5.4.5): + tsup@8.1.2(jiti@1.21.6)(postcss@8.4.39)(tsx@4.10.5)(typescript@5.4.5)(yaml@2.4.5): dependencies: - bundle-require: 4.0.2(esbuild@0.21.5) + bundle-require: 5.0.0(esbuild@0.23.0) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.4 - esbuild: 0.21.5 + consola: 3.2.3 + debug: 4.3.5 + esbuild: 0.23.0 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.39) + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.39)(tsx@4.10.5)(yaml@2.4.5) resolve-from: 5.0.0 - rollup: 4.17.2 + rollup: 4.18.1 source-map: 0.8.0-beta.0 - sucrase: 3.34.0 + sucrase: 3.35.0 tree-kill: 1.2.2 optionalDependencies: postcss: 8.4.39 typescript: 5.4.5 transitivePeerDependencies: + - jiti - supports-color - - ts-node + - tsx + - yaml tsx@4.10.5: dependencies: @@ -7735,6 +9562,10 @@ snapshots: uc.micro@1.0.6: {} + uc.micro@2.1.0: {} + + ufo@1.5.4: {} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -7742,6 +9573,12 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + unconfig@0.3.13: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + jiti: 1.21.6 + underscore@1.13.6: {} undici-types@5.26.5: {} @@ -7752,12 +9589,47 @@ snapshots: universalify@2.0.1: {} + unocss@0.61.5(postcss@8.4.39)(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11)): + dependencies: + '@unocss/astro': 0.61.5(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11)) + '@unocss/cli': 0.61.5(rollup@4.18.1) + '@unocss/core': 0.61.5 + '@unocss/extractor-arbitrary-variants': 0.61.5 + '@unocss/postcss': 0.61.5(postcss@8.4.39) + '@unocss/preset-attributify': 0.61.5 + '@unocss/preset-icons': 0.61.5 + '@unocss/preset-mini': 0.61.5 + '@unocss/preset-tagify': 0.61.5 + '@unocss/preset-typography': 0.61.5 + '@unocss/preset-uno': 0.61.5 + '@unocss/preset-web-fonts': 0.61.5 + '@unocss/preset-wind': 0.61.5 + '@unocss/reset': 0.61.5 + '@unocss/transformer-attributify-jsx': 0.61.5 + '@unocss/transformer-attributify-jsx-babel': 0.61.5 + '@unocss/transformer-compile-class': 0.61.5 + '@unocss/transformer-directives': 0.61.5 + '@unocss/transformer-variant-group': 0.61.5 + '@unocss/vite': 0.61.5(rollup@4.18.1)(vite@5.3.4(@types/node@20.14.11)) + optionalDependencies: + vite: 5.3.4(@types/node@20.14.11) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + update-browserslist-db@1.0.16(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.1 + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -7772,13 +9644,13 @@ snapshots: uuid@9.0.1: {} - vite-node@2.0.3(@types/node@20.14.10): + vite-node@2.0.3(@types/node@20.14.11): dependencies: cac: 6.7.14 debug: 4.3.5 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.3(@types/node@20.14.10) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - '@types/node' - less @@ -7789,16 +9661,63 @@ snapshots: - supports-color - terser - vite@5.3.3(@types/node@20.14.10): + vite@5.3.4(@types/node@20.14.11): dependencies: esbuild: 0.21.5 postcss: 8.4.39 rollup: 4.17.2 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 fsevents: 2.3.3 - vitest@2.0.3(@types/node@20.14.10): + vitepress@1.3.1(@algolia/client-search@4.24.0)(@types/node@20.14.11)(postcss@8.4.39)(search-insights@2.15.0)(typescript@5.4.5): + dependencies: + '@docsearch/css': 3.6.1 + '@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.15.0) + '@shikijs/core': 1.10.3 + '@shikijs/transformers': 1.10.3 + '@types/markdown-it': 14.1.1 + '@vitejs/plugin-vue': 5.0.5(vite@5.3.4(@types/node@20.14.11))(vue@3.4.32(typescript@5.4.5)) + '@vue/devtools-api': 7.3.6 + '@vue/shared': 3.4.31 + '@vueuse/core': 10.11.0(vue@3.4.32(typescript@5.4.5)) + '@vueuse/integrations': 10.11.0(focus-trap@7.5.4)(vue@3.4.32(typescript@5.4.5)) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 7.0.1 + shiki: 1.10.3 + vite: 5.3.4(@types/node@20.14.11) + vue: 3.4.32(typescript@5.4.5) + optionalDependencies: + postcss: 8.4.39 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vitest@2.0.3(@types/node@20.14.11): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.3 @@ -7816,11 +9735,11 @@ snapshots: tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.3(@types/node@20.14.10) - vite-node: 2.0.3(@types/node@20.14.10) + vite: 5.3.4(@types/node@20.14.11) + vite-node: 2.0.3(@types/node@20.14.11) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.11 transitivePeerDependencies: - less - lightningcss @@ -7846,6 +9765,20 @@ snapshots: vscode-uri@3.0.8: {} + vue-demi@0.14.8(vue@3.4.32(typescript@5.4.5)): + dependencies: + vue: 3.4.32(typescript@5.4.5) + + vue@3.4.32(typescript@5.4.5): + dependencies: + '@vue/compiler-dom': 3.4.32 + '@vue/compiler-sfc': 3.4.32 + '@vue/runtime-dom': 3.4.32 + '@vue/server-renderer': 3.4.32(vue@3.4.32(typescript@5.4.5)) + '@vue/shared': 3.4.32 + optionalDependencies: + typescript: 5.4.5 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -7939,8 +9872,6 @@ snapshots: yallist@4.0.0: {} - yaml@2.3.4: {} - yaml@2.4.5: {} yargs-parser@21.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b6e39cd..d0bf04c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - playground - examples/* + - website diff --git a/src/ai/get-reference-file-paths.ts b/src/ai/get-reference-file-paths.ts new file mode 100644 index 0000000..8ac5905 --- /dev/null +++ b/src/ai/get-reference-file-paths.ts @@ -0,0 +1,73 @@ +import { traverseFileOrFolders } from '@/file-utils/traverse-fs' +import { getCurrentWorkspaceFolderEditor } from '@/utils' +import * as vscode from 'vscode' +import { z } from 'zod' + +import { createModelProvider } from './helpers' + +export interface ReferenceFilePaths { + referenceFileRelativePaths: string[] + dependenceFileRelativePath: string +} + +export const getReferenceFilePaths = async ({ + currentFilePath +}: { + currentFilePath: string +}): Promise => { + const { workspaceFolder } = await getCurrentWorkspaceFolderEditor() + const allRelativePaths: string[] = [] + + await traverseFileOrFolders( + [workspaceFolder.uri.fsPath], + workspaceFolder.uri.fsPath, + fileInfo => { + allRelativePaths.push(fileInfo.relativePath) + } + ) + + const currentFileRelativePath = + vscode.workspace.asRelativePath(currentFilePath) + + const modelProvider = await createModelProvider() + const aiRunnable = await modelProvider.createStructuredOutputRunnable({ + useHistory: false, + zodSchema: z.object({ + referenceFileRelativePaths: z.array(z.string()).length(3).describe(` + The relative paths of the three most useful files related to the currently edited file. + `), + dependenceFileRelativePath: z.string().describe(` + The relative path of the dependency file for the current file. If the dependency file is not found, return an empty string. + `) + }) + }) + + const aiRes: ReferenceFilePaths = await aiRunnable.invoke({ + input: ` +I will provide the relative paths of all current files and the path of the currently edited file. +I would like you to do two things: + +1. Find the file path of the dependency file for the current file. Dependency files usually contain configuration for project dependencies. Please identify the dependency file paths based on different programming languages and common dependency file naming conventions. Here are some examples of dependency files for common programming languages: + - JavaScript/TypeScript: package.json + - Python: requirements.txt, Pipfile, pyproject.toml + - Java: pom.xml, build.gradle + - Ruby: Gemfile + - PHP: composer.json + - Rust: Cargo.toml + +2. Identify the three most useful files related to the currently edited file. These files should be helpful for editing the current file. I will provide the contents of these files to assist in the editing process. + +Please note, do not include very large files such as yarn.lock. Based on this information, please return the relative path of the dependency file for the current file and the three most useful file paths. + +Here are the relative paths of all files: +${allRelativePaths.join('\n')} + +The path of the currently edited file is: +${currentFileRelativePath} + +Please find and return the dependency file path for the current file and the three most useful file paths. + ` + }) + + return aiRes +} diff --git a/src/ai/helpers.ts b/src/ai/helpers.ts index 114ab02..a20709d 100644 --- a/src/ai/helpers.ts +++ b/src/ai/helpers.ts @@ -2,6 +2,7 @@ import type { BaseChatModel } from '@langchain/core/language_models/chat_models' import { AzureOpenAIModelProvider } from './model-providers/azure-openai' import type { BaseModelProvider } from './model-providers/base' +import { AnthropicModelProvider } from './model-providers/claude' import { OpenAIModelProvider } from './model-providers/openai' import { parseModelBaseUrl, type ModelUrlType } from './parse-model-base-url' @@ -10,7 +11,8 @@ export const getCurrentModelProvider = async () => { const urlTypeProviderMap = { openai: OpenAIModelProvider, - 'azure-openai': AzureOpenAIModelProvider + 'azure-openai': AzureOpenAIModelProvider, + anthropic: AnthropicModelProvider } satisfies Record> return urlTypeProviderMap[urlType] || OpenAIModelProvider diff --git a/src/ai/model-providers/base.ts b/src/ai/model-providers/base.ts index 4cf8b0a..ca2002e 100644 --- a/src/ai/model-providers/base.ts +++ b/src/ai/model-providers/base.ts @@ -19,12 +19,15 @@ import { import { z } from 'zod' export interface BaseModelProviderCreateRunnableOptions { + useHistory?: boolean historyMessages?: BaseMessage[] + signal?: AbortSignal } export interface BaseModelProviderCreateStructuredOutputRunnableOptions< - ZSchema extends z.ZodType + ZSchema extends z.ZodType = z.ZodType > { + useHistory?: boolean historyMessages?: BaseMessage[] zodSchema: ZSchema } @@ -43,63 +46,88 @@ export abstract class BaseModelProvider { .join('') } + model?: Model + abstract createModel(): MaybePromise - createPrompt(): MaybePromise { - const prompt = ChatPromptTemplate.fromMessages([ - new MessagesPlaceholder('history'), - HumanMessagePromptTemplate.fromTemplate('{input}') - ]) + async getModel(): Promise { + if (!this.model) { + this.model = await this.createModel() + } + + return this.model + } + + createPrompt(options?: { + useHistory?: boolean + }): MaybePromise { + const { useHistory = true } = options ?? {} + const prompt = ChatPromptTemplate.fromMessages( + [ + useHistory ? new MessagesPlaceholder('history') : '', + HumanMessagePromptTemplate.fromTemplate('{input}') + ].filter(Boolean) + ) return prompt } + async getHistory( + sessionId: string, + appendHistoryMessages?: BaseMessage[] + ): Promise { + if (BaseModelProvider.sessionIdHistoriesMap[sessionId] === undefined) { + const messageHistory = new InMemoryChatMessageHistory() + + if (appendHistoryMessages && appendHistoryMessages.length > 0) { + await messageHistory.addMessages(appendHistoryMessages) + } + + BaseModelProvider.sessionIdHistoriesMap[sessionId] = messageHistory + } + + return BaseModelProvider.sessionIdHistoriesMap[sessionId]! + } + createRunnableWithMessageHistory( chain: Runnable, historyMessages: BaseMessage[] ) { return new RunnableWithMessageHistory({ runnable: chain, - getMessageHistory: async sessionId => { - if (BaseModelProvider.sessionIdHistoriesMap[sessionId] === undefined) { - const messageHistory = new InMemoryChatMessageHistory() - - if (historyMessages.length > 0) { - await messageHistory.addMessages(historyMessages) - } - - BaseModelProvider.sessionIdHistoriesMap[sessionId] = messageHistory - } - - return BaseModelProvider.sessionIdHistoriesMap[sessionId]! - }, + getMessageHistory: async sessionId => + await this.getHistory(sessionId, historyMessages), inputMessagesKey: 'input', historyMessagesKey: 'history' }) } async createRunnable(options?: BaseModelProviderCreateRunnableOptions) { - const { historyMessages } = options ?? {} - const model = await this.createModel() - const prompt = await this.createPrompt() - const chain = prompt.pipe(model) - return await this.createRunnableWithMessageHistory( - chain, - historyMessages || [] - ) + const { useHistory = true, historyMessages, signal } = options ?? {} + const model = await this.getModel() + const prompt = await this.createPrompt({ useHistory }) + const chain = prompt.pipe(signal ? model.bind({ signal }) : model) + return useHistory + ? await this.createRunnableWithMessageHistory( + chain, + historyMessages || [] + ) + : chain } - async createStructuredOutputRunnable>( - options: BaseModelProviderCreateStructuredOutputRunnableOptions - ) { - const { historyMessages, zodSchema } = options - const model = await this.createModel() - const prompt = await this.createPrompt() + async createStructuredOutputRunnable< + ZSchema extends z.ZodType = z.ZodType + >(options: BaseModelProviderCreateStructuredOutputRunnableOptions) { + const { useHistory = true, historyMessages, zodSchema } = options + const model = await this.getModel() + const prompt = await this.createPrompt({ useHistory }) const chain = prompt.pipe(model.withStructuredOutput(zodSchema)) - return await this.createRunnableWithMessageHistory( - chain, - historyMessages || [] - ) + return useHistory + ? await this.createRunnableWithMessageHistory( + chain, + historyMessages || [] + ) + : chain } } diff --git a/src/ai/model-providers/claude.ts b/src/ai/model-providers/claude.ts new file mode 100644 index 0000000..dfe938b --- /dev/null +++ b/src/ai/model-providers/claude.ts @@ -0,0 +1,32 @@ +import { getConfigKey } from '@/config' +import { getContext } from '@/context' +import { ChatAnthropic } from '@langchain/anthropic' +import * as vscode from 'vscode' + +import { parseModelBaseUrl } from '../parse-model-base-url' +import { BaseModelProvider } from './base' + +export class AnthropicModelProvider extends BaseModelProvider { + async createModel() { + const isDev = getContext().extensionMode !== vscode.ExtensionMode.Production + + // anthropic@https://api.anthropic.com + const { url: openaiBaseUrl } = await parseModelBaseUrl() + const openaiKey = await getConfigKey('openaiKey') + const openaiModel = await getConfigKey('openaiModel') + + const model = new ChatAnthropic({ + apiKey: openaiKey, + anthropicApiUrl: openaiBaseUrl, + clientOptions: { + fetch + }, + model: openaiModel, + temperature: 0.95, // never use 1.0, some models do not support it + maxRetries: 3, + verbose: isDev + }) + + return model + } +} diff --git a/src/ai/parse-model-base-url.ts b/src/ai/parse-model-base-url.ts index c1ffd50..a8d9669 100644 --- a/src/ai/parse-model-base-url.ts +++ b/src/ai/parse-model-base-url.ts @@ -2,7 +2,7 @@ import { getConfigKey } from '@/config' import { t } from '@/i18n' -export type ModelUrlType = 'openai' | 'azure-openai' +export type ModelUrlType = 'openai' | 'azure-openai' | 'anthropic' export const parseModelBaseUrl = async (): Promise<{ urlType: ModelUrlType url: string @@ -19,7 +19,8 @@ export const parseModelBaseUrl = async (): Promise<{ let url = '' // Use regexp to parse the urlType - const regex = /^(openai|azure-openai|copilot)?@?(https?:\/\/[^\s]+)?$/ + const regex = + /^(openai|azure-openai|anthropic|copilot)?@?(https?:\/\/[^\s]+)?$/ const match = baseUrl.trim().match(regex) if (match) { diff --git a/src/cleanup.ts b/src/cleanup.ts index 70349fa..820f8fe 100644 --- a/src/cleanup.ts +++ b/src/cleanup.ts @@ -2,12 +2,14 @@ import * as vscode from 'vscode' import { cleanupCodeConvertRunnables } from './commands/code-convert' import { cleanupCodeViewerHelperRunnables } from './commands/code-viewer-helper' +import { cleanupSmartPasteRunnables } from './commands/smart-paste' export const cleanup = async (context: vscode.ExtensionContext) => { context.subscriptions.push( vscode.workspace.onDidCloseTextDocument(() => { cleanupCodeConvertRunnables() cleanupCodeViewerHelperRunnables() + cleanupSmartPasteRunnables }) ) } diff --git a/src/commands/code-convert.ts b/src/commands/code-convert.ts index 1d1a1ba..71f490b 100644 --- a/src/commands/code-convert.ts +++ b/src/commands/code-convert.ts @@ -111,8 +111,13 @@ export const handleCodeConvert = async () => { } = await createTmpFileInfo() const targetLanguageId = await getTargetLanguageId(originalFileLanguageId) + + // ai const modelProvider = await createModelProvider() - const aiRunnable = await modelProvider.createRunnable() + const aiRunnableAbortController = new AbortController() + const aiRunnable = await modelProvider.createRunnable({ + signal: aiRunnableAbortController.signal + }) const sessionId = `codeConvert:${tmpFileUri.fsPath}}` const aiRunnableConfig: RunnableConfig = { configurable: { @@ -132,6 +137,9 @@ export const handleCodeConvert = async () => { const tmpFileWriterReturns = await tmpFileWriter({ languageId: targetLanguageId, + onCancel() { + aiRunnableAbortController.abort() + }, buildAiStream: async () => { if (!isContinue) { // cleanup previous session diff --git a/src/commands/code-viewer-helper.ts b/src/commands/code-viewer-helper.ts index f3810ee..4d10674 100644 --- a/src/commands/code-viewer-helper.ts +++ b/src/commands/code-viewer-helper.ts @@ -50,8 +50,12 @@ export const handleCodeViewerHelper = async () => { isTmpFileHasContent } = await createTmpFileInfo() + // ai const modelProvider = await createModelProvider() - const aiRunnable = await modelProvider.createRunnable() + const aiRunnableAbortController = new AbortController() + const aiRunnable = await modelProvider.createRunnable({ + signal: aiRunnableAbortController.signal + }) const sessionId = `codeViewerHelper:${tmpFileUri.fsPath}}` const aiRunnableConfig: RunnableConfig = { configurable: { @@ -69,6 +73,9 @@ export const handleCodeViewerHelper = async () => { const tmpFileWriterReturns = await tmpFileWriter({ languageId: originalFileLanguageId, + onCancel() { + aiRunnableAbortController.abort() + }, buildAiStream: async () => { if (!isContinue) { // cleanup previous session diff --git a/src/commands/copy-as-prompt.ts b/src/commands/copy-as-prompt.ts index b96493f..764e403 100644 --- a/src/commands/copy-as-prompt.ts +++ b/src/commands/copy-as-prompt.ts @@ -1,44 +1,8 @@ -import path from 'path' import { getConfigKey } from '@/config' -import type { FileInfo } from '@/file-utils/traverse-fs' -import { traverseFileOrFolders } from '@/file-utils/traverse-fs' +import { getFileOrFoldersPromptInfo } from '@/file-utils/get-fs-prompt-info' import { t } from '@/i18n' import * as vscode from 'vscode' -interface PromptInfo { - promptFullContent: string - filesInfo: FileInfo[] -} - -const getFileOrFoldersPromptInfo = async ( - fileOrFolders: string[], - workspacePath: string -): Promise => { - const result: PromptInfo = { - promptFullContent: '', - filesInfo: [] - } - - const processFile = async (fileInfo: FileInfo) => { - const { fullPath, relativePath, content } = fileInfo - const language = path.extname(fullPath).slice(1) - - const promptFullContent = t( - 'file.content', - relativePath, - language, - content.toString() - ) - - result.filesInfo.push(fileInfo) - result.promptFullContent += promptFullContent - } - - await traverseFileOrFolders(fileOrFolders, workspacePath, processFile) - - return result -} - export const handleCopyAsPrompt = async ( uri: vscode.Uri, selectedUris: vscode.Uri[] = [] diff --git a/src/commands/index.ts b/src/commands/index.ts index ca9605e..ed7443c 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -6,6 +6,7 @@ import { handleCodeConvert } from './code-convert' import { handleCodeViewerHelper } from './code-viewer-helper' import { handleCopyAsPrompt } from './copy-as-prompt' import { handleRenameVariable } from './rename-variable' +import { handleSmartPaste } from './smart-paste' export const registerCommands = (context: vscode.ExtensionContext) => { const copyDisposable = vscode.commands.registerCommand( @@ -32,11 +33,17 @@ export const registerCommands = (context: vscode.ExtensionContext) => { commandErrorCatcher(handleRenameVariable) ) + const smartPasteDisposable = vscode.commands.registerCommand( + 'aide.smartPaste', + commandErrorCatcher(handleSmartPaste) + ) + context.subscriptions.push( copyDisposable, askAIDisposable, codeConvertDisposable, codeViewerHelperDisposable, - renameVariableDisposable + renameVariableDisposable, + smartPasteDisposable ) } diff --git a/src/commands/rename-variable.ts b/src/commands/rename-variable.ts index 8bcbe5b..3cee4a6 100644 --- a/src/commands/rename-variable.ts +++ b/src/commands/rename-variable.ts @@ -5,7 +5,7 @@ import { } from '@/ai/helpers' import { t } from '@/i18n' import { createLoading } from '@/loading' -import { getActiveEditorContent, getCurrentWorkspaceFolder } from '@/utils' +import { getCurrentWorkspaceFolderEditor } from '@/utils' import type { BaseLanguageModelInput } from '@langchain/core/language_models/base' import type { RunnableConfig } from '@langchain/core/runnables' import * as vscode from 'vscode' @@ -117,8 +117,7 @@ const renameVariable = async ({ } export const handleRenameVariable = async () => { - const workspaceFolder = getCurrentWorkspaceFolder() - const { activeEditor } = await getActiveEditorContent() + const { workspaceFolder, activeEditor } = getCurrentWorkspaceFolderEditor() const { selection } = activeEditor const variableName = activeEditor.document.getText(selection) const modelProvider = await createModelProvider() diff --git a/src/commands/smart-paste.ts b/src/commands/smart-paste.ts new file mode 100644 index 0000000..16f63f9 --- /dev/null +++ b/src/commands/smart-paste.ts @@ -0,0 +1,159 @@ +import { getReferenceFilePaths } from '@/ai/get-reference-file-paths' +import { + createModelProvider, + getCurrentSessionIdHistoriesMap +} from '@/ai/helpers' +import { getFileOrFoldersPromptInfo } from '@/file-utils/get-fs-prompt-info' +import { insertTextAtSelection } from '@/file-utils/insert-text-at-selection' +import { streamingCompletionWriter } from '@/file-utils/stream-completion-writer' +import { getCurrentWorkspaceFolderEditor } from '@/utils' +import type { BaseLanguageModelInput } from '@langchain/core/language_models/base' +import type { RunnableConfig } from '@langchain/core/runnables' +import * as vscode from 'vscode' + +const buildConvertPrompt = async ({ + workspaceFolder, + currentFilePath, + selection +}: { + workspaceFolder: vscode.WorkspaceFolder + currentFilePath: string + selection: vscode.Selection +}): Promise => { + // content from clipboard + const clipboardContent = await vscode.env.clipboard.readText() + + // current file content + const locationMark = `### Here is the code you need to insert after convert ###` + const currentFileContent = await insertTextAtSelection({ + filePath: currentFilePath, + selection, + textToInsert: locationMark + }) + const currentFileRelativePath = + vscode.workspace.asRelativePath(currentFilePath) + + // reference file content + const { referenceFileRelativePaths, dependenceFileRelativePath } = + await getReferenceFilePaths({ currentFilePath }) + const referencePaths = [ + ...new Set([dependenceFileRelativePath, ...referenceFileRelativePaths]) + ] + const { promptFullContent: referenceFileContent } = + await getFileOrFoldersPromptInfo(referencePaths, workspaceFolder.uri.fsPath) + + // console.log('smart-paste', { + // referencePaths, + // currentFileRelativePath, + // clipboardContent + // }) + + const prompt = ` + I will provide the content of the current file, as well as the content of several most useful files related to the currently edited file, to you. + + I would like you to automatically recognize the programming language of the current file's code and the code from the clipboard, then convert the code from the clipboard into the current file's programming language. + + The converted code should be inserted at the location marked with ${locationMark}. + + Please note that the converted code should be valid code without any syntax errors when I insert it into the location marked. + + **You should try to guess the my intention and the desired conversion style as much as possible.** + + For example, if I copied Tailwind CSS template code and pasted it into Flutter code, you should automatically recognize this as Tailwind CSS code and convert it to Flutter code. + + Another example if I copied Tailwind CSS template code and pasted it into vue style tag, you should automatically convert it as css/less/sass(which I use) code for me to insert into the style tag. + + Another example would be if I copied JSON data and pasted it into a TypeScript \`types XXX = {}\` statement, you should automatically recognize this as JSON data and convert it to a TypeScript type. + + **In short, you are always very smart to guess my intention based on the position where I paste, and then automatically convert the code.** + + You should not respond with anything other than the converted code. + + You should always use my mother tongue ${vscode.env.language} to add comments if the code requires comments. + + **Do not include any markdown syntax or wrap the code in a markdown code block.** + + Here are the details: + + 1. Clipboard content: + \`\`\` + ${clipboardContent} + \`\`\` + + 2. Current file content: + File: ${currentFileRelativePath} + \`\`\` + ${currentFileContent} + \`\`\` + + 3. Reference files content: + ${referenceFileContent} + + **In short, you are always very smart to guess my intention based on the position where I paste, and then automatically convert the code.** + Please convert the clipboard content to match the programming language and context of the current file, I will insert the converted code at the specified location. + **Please do not reply with any text other than the code, and do not use markdown syntax** + ` + + return prompt +} + +export const cleanupSmartPasteRunnables = async () => { + const openDocumentPaths = new Set( + vscode.workspace.textDocuments.map(doc => doc.uri.fsPath) + ) + const sessionIdHistoriesMap = await getCurrentSessionIdHistoriesMap() + + Object.keys(sessionIdHistoriesMap).forEach(sessionId => { + const path = sessionId.match(/^smartPaste:(.*)$/)?.[1] + + if (path && !openDocumentPaths.has(path)) { + delete sessionIdHistoriesMap[sessionId] + } + }) +} + +export const handleSmartPaste = async () => { + const { workspaceFolder, activeEditor } = + await getCurrentWorkspaceFolderEditor() + const currentFilePath = activeEditor.document.uri.fsPath + + // ai + const modelProvider = await createModelProvider() + const aiRunnableAbortController = new AbortController() + const aiRunnable = await modelProvider.createRunnable({ + signal: aiRunnableAbortController.signal + }) + const sessionId = `smartPaste:${currentFilePath}}` + const aiRunnableConfig: RunnableConfig = { + configurable: { + sessionId + } + } + const sessionIdHistoriesMap = await getCurrentSessionIdHistoriesMap() + delete sessionIdHistoriesMap[sessionId] + + await streamingCompletionWriter({ + editor: activeEditor, + onCancel() { + aiRunnableAbortController.abort() + }, + buildAiStream: async () => { + const prompt = await buildConvertPrompt({ + workspaceFolder, + currentFilePath, + selection: activeEditor.selection + }) + + const aiStream = aiRunnable.stream( + { + input: prompt + }, + aiRunnableConfig + ) + + return aiStream + } + }) + + delete sessionIdHistoriesMap[sessionId] +} diff --git a/src/config.ts b/src/config.ts index 17ca110..44688df 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,7 +3,7 @@ import * as vscode from 'vscode' import pkg from '../package.json' import { t, translateVscodeJsonText } from './i18n' import { logger } from './logger' -import { getCurrentWorkspaceFolder, getErrorMsg } from './utils' +import { getCurrentWorkspaceFolderEditor, getErrorMsg } from './utils' const pkgConfig = pkg.contributes.configuration.properties type ConfigKey = keyof { @@ -107,8 +107,8 @@ export const getConfigKey = async ( required, allowCustomOptionValue } = options || {} - const workspaceFolderUri = getCurrentWorkspaceFolder() - const config = vscode.workspace.getConfiguration('aide', workspaceFolderUri) + const { workspaceFolder } = getCurrentWorkspaceFolderEditor(false) + const config = vscode.workspace.getConfiguration('aide', workspaceFolder) const configKeyInfo = { ...configKey[key], description: translateVscodeJsonText(configKey[key].description) @@ -256,8 +256,8 @@ export const setConfigKey = async ( targetForSet = vscode.ConfigurationTarget.Global, allowCustomOptionValue = false } = options || {} - const workspaceFolderUri = getCurrentWorkspaceFolder() - const config = vscode.workspace.getConfiguration('aide', workspaceFolderUri) + const { workspaceFolder } = getCurrentWorkspaceFolderEditor(false) + const config = vscode.workspace.getConfiguration('aide', workspaceFolder) const configKeyInfo = configKey[key] as ConfigKeyInfo if (!configKeyInfo) { @@ -284,7 +284,7 @@ export const setConfigKey = async ( try { if ( targetForSet === vscode.ConfigurationTarget.WorkspaceFolder && - !workspaceFolderUri + !workspaceFolder ) { // if can't find WorkspaceFolder, fallback to Workspace level await config.update(key, value, vscode.ConfigurationTarget.Workspace) diff --git a/src/enable-global-proxy.ts b/src/enable-global-proxy.ts index ceb6832..7a2f919 100644 --- a/src/enable-global-proxy.ts +++ b/src/enable-global-proxy.ts @@ -38,7 +38,7 @@ export const enableGlobalProxy = () => { setGlobalDispatcher(dispatcher) } } catch (err) { - logger.log('Failed to enable global proxy', err) + logger.warn('Failed to enable global proxy', err) } } diff --git a/src/file-utils/get-fs-prompt-info.ts b/src/file-utils/get-fs-prompt-info.ts new file mode 100644 index 0000000..6ea6fff --- /dev/null +++ b/src/file-utils/get-fs-prompt-info.ts @@ -0,0 +1,38 @@ +import path from 'path' +import { t } from '@/i18n' + +import { traverseFileOrFolders, type FileInfo } from './traverse-fs' + +export interface FsPromptInfo { + promptFullContent: string + filesInfo: FileInfo[] +} + +export const getFileOrFoldersPromptInfo = async ( + fileOrFolders: string[], + workspacePath: string +): Promise => { + const result: FsPromptInfo = { + promptFullContent: '', + filesInfo: [] + } + + const processFile = async (fileInfo: FileInfo) => { + const { fullPath, relativePath, content } = fileInfo + const language = path.extname(fullPath).slice(1) + + const promptFullContent = t( + 'file.content', + relativePath, + language, + content.toString() + ) + + result.filesInfo.push(fileInfo) + result.promptFullContent += promptFullContent + } + + await traverseFileOrFolders(fileOrFolders, workspacePath, processFile) + + return result +} diff --git a/src/file-utils/ignore-patterns.ts b/src/file-utils/ignore-patterns.ts index 4cac9f6..f4d35f3 100644 --- a/src/file-utils/ignore-patterns.ts +++ b/src/file-utils/ignore-patterns.ts @@ -69,7 +69,11 @@ export const getAllValidFiles = async ( return shouldIgnore(p.fullpath()) }, childrenIgnored(p) { - return shouldIgnore(p.fullpath()) + try { + return shouldIgnore(p.fullpath()) + } catch { + return false + } } } }) diff --git a/src/file-utils/insert-text-at-selection.ts b/src/file-utils/insert-text-at-selection.ts new file mode 100644 index 0000000..f43f473 --- /dev/null +++ b/src/file-utils/insert-text-at-selection.ts @@ -0,0 +1,58 @@ +import * as vscode from 'vscode' + +import { VsCodeFS } from './vscode-fs' + +export const insertTextAtSelection = async ({ + filePath, + selection, + textToInsert +}: { + filePath: string + selection: vscode.Selection + textToInsert: string +}): Promise => { + // read file content + const fullText = await VsCodeFS.readFileOrOpenDocumentContent( + filePath, + 'utf-8' + ) + const lines = fullText.split('\n') + + // get start and end position of selection + const { start } = selection + const { end } = selection + + // check if selection is empty + if (selection.isEmpty) { + // insert text at cursor position + const line = lines[start.line] || '' + lines[start.line] = + line.slice(0, start.character) + + textToInsert + + line.slice(start.character) + } else { + // replace selected text + const startLine = lines[start.line] || '' + const endLine = lines[end.line] || '' + + if (start.line === end.line) { + // replace single line text + lines[start.line] = + startLine.slice(0, start.character) + + textToInsert + + endLine.slice(end.character) + } else { + // replace multiple lines text + const newLines = [ + startLine.slice(0, start.character) + + textToInsert + + endLine.slice(end.character) + ] + + lines.splice(start.line, end.line - start.line + 1, ...newLines) + } + } + + // recombine text and return + return lines.join('\n') +} diff --git a/src/file-utils/stream-completion-writer.ts b/src/file-utils/stream-completion-writer.ts new file mode 100644 index 0000000..b92d6f9 --- /dev/null +++ b/src/file-utils/stream-completion-writer.ts @@ -0,0 +1,123 @@ +import { getCurrentModelProvider } from '@/ai/helpers' +import { createLoading } from '@/loading' +import { + removeCodeBlockEndSyntax, + removeCodeBlockStartSyntax, + removeCodeBlockSyntax +} from '@/utils' +import type { IterableReadableStream } from '@langchain/core/dist/utils/stream' +import type { AIMessageChunk } from '@langchain/core/messages' +import * as vscode from 'vscode' + +export interface StreamingCompletionWriterOptions { + editor: vscode.TextEditor + buildAiStream: () => Promise> + onCancel?: () => void +} +export const streamingCompletionWriter = async ( + options: StreamingCompletionWriterOptions +): Promise => { + const { editor, buildAiStream, onCancel } = options + const ModelProvider = await getCurrentModelProvider() + const { showProcessLoading, hideProcessLoading } = createLoading() + const isClosedFile = () => editor.document.isClosed + const initialPosition = editor.selection.active + let currentPosition = initialPosition + + const dispose = () => { + hideProcessLoading() + } + + try { + showProcessLoading({ + onCancel + }) + + const aiStream = await buildAiStream() + + const writeTextPart = async (text: string) => { + await editor.edit( + // eslint-disable-next-line @typescript-eslint/no-loop-func + editBuilder => { + // only insert new text + editBuilder.insert(currentPosition, text) + }, + { undoStopBefore: false, undoStopAfter: false } + ) + + // update current position to the end of the inserted text + currentPosition = editor.document.positionAt( + editor.document.offsetAt(currentPosition) + text.length + ) + } + + const writeText = async (text: string, originPosition: vscode.Position) => { + // override existing text if any + const endPosition = editor.document.positionAt( + editor.document.offsetAt(originPosition) + text.length + ) + const range = new vscode.Range(originPosition, endPosition) + + await editor.edit( + editBuilder => { + editBuilder.replace(range, text) + }, + { undoStopBefore: false, undoStopAfter: false } + ) + + // update current position to the end of the inserted text + currentPosition = editor.document.positionAt( + editor.document.offsetAt(originPosition) + text.length + ) + + // update editor selection + editor.selection = new vscode.Selection(currentPosition, currentPosition) + } + + let fullText = '' + for await (const chunk of aiStream) { + if (isClosedFile()) { + dispose() + return + } + + // convert openai answer content to text + const text = ModelProvider.answerContentToText(chunk.content) + fullText += text + + await writeTextPart(text) + + // remove code block syntax + // for example, remove ```python\n and \n``` + const removeCodeBlockStartSyntaxCode = + removeCodeBlockStartSyntax(fullText) + + if (removeCodeBlockStartSyntaxCode !== fullText) { + await writeText(removeCodeBlockStartSyntaxCode, initialPosition) + } + } + + // remove code block end syntax + // for example, remove \n``` at the end + const removeCodeBlockEndSyntaxCode = removeCodeBlockEndSyntax(fullText) + + if (removeCodeBlockEndSyntaxCode !== fullText) { + await writeText(removeCodeBlockEndSyntaxCode, initialPosition) + } + + // remove code block syntax + // for example, remove ```python\n and \n``` at the start and end + // just confirm the code is clean + const finalCode = removeCodeBlockSyntax(fullText) + + // write the final code + await writeText(finalCode, initialPosition) + + // create an undo stop point after completion + await editor.edit(() => {}, { undoStopBefore: true, undoStopAfter: true }) + + await vscode.commands.executeCommand('editor.action.inlineSuggest.commit') + } finally { + dispose() + } +} diff --git a/src/file-utils/tmp-file-writer.ts b/src/file-utils/tmp-file-writer.ts index 9d47eaa..6369899 100644 --- a/src/file-utils/tmp-file-writer.ts +++ b/src/file-utils/tmp-file-writer.ts @@ -16,12 +16,13 @@ import { export interface TmpFileWriterOptions extends CreateTmpFileOptions { buildAiStream: () => Promise> + onCancel?: () => void } export const tmpFileWriter = async ( options: TmpFileWriterOptions ): Promise => { - const { buildAiStream, ...createTmpFileOptions } = options + const { buildAiStream, onCancel, ...createTmpFileOptions } = options const createTmpFileAndWriterReturns = await createTmpFileAndWriter(createTmpFileOptions) @@ -32,7 +33,9 @@ export const tmpFileWriter = async ( const { showProcessLoading, hideProcessLoading } = createLoading() try { - showProcessLoading() + showProcessLoading({ + onCancel + }) const aiStream = await buildAiStream() for await (const chunk of aiStream) { diff --git a/src/file-utils/traverse-fs.ts b/src/file-utils/traverse-fs.ts index b6f62d3..271f7ce 100644 --- a/src/file-utils/traverse-fs.ts +++ b/src/file-utils/traverse-fs.ts @@ -1,4 +1,5 @@ import * as path from 'path' +import type { MaybePromise } from '@/types' import * as vscode from 'vscode' import { getAllValidFiles } from './ignore-patterns' @@ -14,7 +15,10 @@ const getFileInfo = async ( filePath: string, workspacePath: string ): Promise => { - const fileContent = await VsCodeFS.readFile(filePath, 'utf-8') + const fileContent = await VsCodeFS.readFileOrOpenDocumentContent( + filePath, + 'utf-8' + ) const relativePath = path.relative(workspacePath, filePath) return { @@ -27,16 +31,20 @@ const getFileInfo = async ( export const traverseFileOrFolders = async ( filesOrFolders: string[], workspacePath: string, - fileCallback: (fileInfo: FileInfo) => Promise + fileCallback: (fileInfo: FileInfo) => MaybePromise ): Promise => { const results: T[] = [] await Promise.allSettled( filesOrFolders.map(async fileOrFolder => { - const stat = await VsCodeFS.stat(fileOrFolder) + // Convert relative path to absolute path + const absolutePath = path.isAbsolute(fileOrFolder) + ? fileOrFolder + : path.join(workspacePath, fileOrFolder) + const stat = await VsCodeFS.stat(absolutePath) if (stat.type === vscode.FileType.Directory) { - const allFiles = await getAllValidFiles(fileOrFolder) + const allFiles = await getAllValidFiles(absolutePath) await Promise.allSettled( allFiles.map(async filePath => { @@ -49,7 +57,8 @@ export const traverseFileOrFolders = async ( } if (stat.type === vscode.FileType.File) { - const fileInfo = await getFileInfo(fileOrFolder, workspacePath) + const fileInfo = await getFileInfo(absolutePath, workspacePath) + if (fileInfo) { results.push(await fileCallback(fileInfo)) } diff --git a/src/file-utils/vscode-fs.ts b/src/file-utils/vscode-fs.ts index 5be2e52..762075e 100644 --- a/src/file-utils/vscode-fs.ts +++ b/src/file-utils/vscode-fs.ts @@ -13,6 +13,41 @@ export class VsCodeFS { return Buffer.from(uint8Array).toString(encoding) } + static _getOpenTextDocumentContent(path: string): string | undefined { + const documents = vscode.workspace.textDocuments + const document = documents.find(doc => doc.uri.fsPath === path) + return document?.getText() + } + + /** + * Reads the content of a file, prioritizing open documents in VS Code. + * + * This method addresses a limitation of the standard file system read operations + * in VS Code extensions. While `vscode.workspace.fs.readFile()` only reads the + * content saved on disk, this method also considers unsaved changes in open editors. + * + * The method works as follows: + * 1. It first checks if the file is open in any VS Code text editor. + * 2. If the file is open, it returns the current content of the document, + * including any unsaved changes. + * 3. If the file is not open in any editor, it falls back to reading the file + * content from the disk. + * + * This approach ensures that the most up-to-date content is always returned, + * whether it's the saved file on disk or the current state in an open editor. + * + */ + static async readFileOrOpenDocumentContent( + path: string, + encoding: BufferEncoding = 'utf-8' + ): Promise { + const openDocumentContent = this._getOpenTextDocumentContent(path) + if (openDocumentContent !== undefined) { + return openDocumentContent + } + return await this.readFile(path, encoding) + } + static async writeFile( path: string, data: string | Uint8Array, diff --git a/src/loading.ts b/src/loading.ts index 144f12c..883846c 100644 --- a/src/loading.ts +++ b/src/loading.ts @@ -4,12 +4,39 @@ import { t } from './i18n' export const createLoading = () => { let progressResolve: (() => void) | undefined + let progressInterval: NodeJS.Timeout | undefined - const showProcessLoading = async (title = t('info.processing')) => { - if (progressResolve) { - // if there is already a progress bar showing, close it first - progressResolve() - } + const updateProgress = ( + progress: vscode.Progress<{ increment: number }>, + token: vscode.CancellationToken + ) => { + let currentProgress = 0 + const increment = 1 // 1% each time + + progressInterval = setInterval(() => { + if (token.isCancellationRequested) { + clearInterval(progressInterval!) + progressResolve?.() + progressResolve = undefined + return + } + + currentProgress += increment + if (currentProgress > 100) { + currentProgress = 0 + progress.report({ increment: -100 }) + } + progress.report({ increment }) + }, 50) + } + + const showProcessLoading = async (options?: { + title?: string + onCancel?: () => void + }) => { + const { title = t('info.processing'), onCancel } = options ?? {} + // Clear the previous progress + progressResolve?.() await vscode.window.withProgress( { @@ -17,46 +44,25 @@ export const createLoading = () => { title, cancellable: true }, - async progress => + async (progress, token) => new Promise(resolve => { progressResolve = resolve - const updateProgress = () => { - let currentProgress = 0 - const increment = 1 // 1% each time, increment can be adjusted as needed - - const progressInterval = setInterval(() => { - if (progressResolve) { - currentProgress += increment - - if (currentProgress > 100) { - currentProgress = 0 - progress.report({ - increment: -100 - }) - } - - progress.report({ - increment - // message: `${currentProgress}%` - }) - } else { - clearInterval(progressInterval) - resolve() - } - }, 50) // Update every 100 milliseconds, can be adjusted as needed - } + token.onCancellationRequested(() => { + clearInterval(progressInterval!) + onCancel?.() + hideProcessLoading() + }) - updateProgress() + updateProgress(progress, token) }) ) } const hideProcessLoading = () => { - if (progressResolve) { - progressResolve() - progressResolve = undefined - } + clearInterval(progressInterval!) + progressResolve?.() + progressResolve = undefined } return { diff --git a/src/utils.ts b/src/utils.ts index 21ee4b7..89c0fd6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -43,6 +43,10 @@ export const commandErrorCatcher = any>( try { return await commandFn(...args) } catch (err) { + const errMsg = getErrorMsg(err) + // skip abort error + if (errMsg === 'AbortError') return + logger.warn('commandErrorCatcher', err) vscode.window.showErrorMessage(getErrorMsg(err)) } @@ -51,34 +55,49 @@ export const commandErrorCatcher = any>( export const getLanguageIdExt = (languageId: string): string => languageIdExtMap[languageId as keyof typeof languageIdExtMap]?.[0] || '' -export const getCurrentWorkspaceFolder = () => { +export const getCurrentWorkspaceFolderEditor = ( + throwErrorWhenNotFound: T = true as T +): T extends true + ? { workspaceFolder: vscode.WorkspaceFolder; activeEditor: vscode.TextEditor } + : { + workspaceFolder: vscode.WorkspaceFolder | undefined + activeEditor: vscode.TextEditor | undefined + } => { const activeEditor = vscode.window.activeTextEditor - if (!activeEditor) return + if (!activeEditor) { + if (throwErrorWhenNotFound) throw new Error(t('error.noActiveEditor')) + return { workspaceFolder: undefined, activeEditor: undefined } as any + } const workspaceFolder = vscode.workspace.getWorkspaceFolder( activeEditor.document.uri ) - return workspaceFolder + if (!workspaceFolder) { + if (throwErrorWhenNotFound) throw new Error(t('error.noWorkspace')) + return { workspaceFolder: undefined, activeEditor } as any + } + + return { workspaceFolder, activeEditor } } -export const getActiveEditorContent = async () => { - const activeEditor = vscode.window.activeTextEditor +// export const getActiveEditorContent = async () => { +// const activeEditor = vscode.window.activeTextEditor - if (!activeEditor) throw new Error(t('error.noActiveEditor')) +// if (!activeEditor) throw new Error(t('error.noActiveEditor')) - const { selection } = activeEditor - const isSelection = !selection.isEmpty - const content = isSelection - ? activeEditor.document.getText(selection) - : activeEditor.document.getText() +// const { selection } = activeEditor +// const isSelection = !selection.isEmpty +// const content = isSelection +// ? activeEditor.document.getText(selection) +// : activeEditor.document.getText() - return { - activeEditor, - content, - isSelection - } -} +// return { +// activeEditor, +// content, +// isSelection +// } +// } export const removeCodeBlockSyntax = (str: string): string => { if (!str) return '' diff --git a/website/.vitepress/config/en.ts b/website/.vitepress/config/en.ts new file mode 100644 index 0000000..485a996 --- /dev/null +++ b/website/.vitepress/config/en.ts @@ -0,0 +1,162 @@ +import { createRequire } from 'module' +import type { DefaultTheme } from 'vitepress' +import { defineConfig } from 'vitepress' + +const require = createRequire(import.meta.url) +const pkg = require('../../../package.json') + +export const en = defineConfig({ + lang: 'en-US', + description: + 'Mastering Any Code In VSCode: One-click commenting and language conversion. 💪', + themeConfig: { + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2024-present Nicepkg' + }, + nav: nav(), + sidebar: sidebar(), + editLink: { + pattern: 'https://github.com/nicepkg/aide/edit/master/website/:path', + text: 'Edit this page on GitHub' + } + } +}) + +function nav(): DefaultTheme.NavItem[] { + return [ + { + text: 'Guide', + link: '/guide/getting-started/', + activeMatch: '/guide/' + }, + { + text: 'Development', + items: [ + { + text: 'Install' + ' ' + pkg.version, + link: 'https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro' + }, + { + text: 'Changelog', + link: 'https://github.com/nicepkg/aide/blob/master/CHANGELOG.md' + }, + { + text: 'Contributing', + link: 'https://github.com/nicepkg/aide/blob/master/CONTRIBUTING.md' + } + ] + } + ] +} + +function sidebar(): DefaultTheme.Sidebar { + return { + '/guide/': [ + { + text: '🚀   Getting Started', + collapsed: false, + base: '/guide/getting-started', + items: [ + { text: 'Introduction', link: '/' }, + { text: 'Installation', link: '/installation' }, + { + text: 'Customize Shortcuts', + link: '/customize-shortcuts' + }, + { + text: 'Customize Configuration', + link: '/customize-configuration' + }, + { text: 'FAQ', link: '/faq' } + ] + }, + { + text: '✨   Features', + collapsed: false, + base: '/guide/features', + items: [ + { + text: 'Code Viewer Helper', + link: '/code-viewer-helper' + }, + { + text: 'Code Convert', + link: '/code-convert' + }, + { + text: 'Smart Paste', + link: '/smart-paste' + }, + { + text: 'Copy Multiple Files As Prompt', + link: '/copy-as-prompt' + }, + { + text: 'Rename Variable', + link: '/rename-variable' + }, + { text: 'Ask AI With Custom Command', link: '/ask-ai' } + ] + }, + { + text: '🛠   Configuration', + collapsed: true, + base: '/guide/configuration', + items: [ + { text: 'aide.openaiKey', link: '/openai-key' }, + { + text: 'aide.openaiModel', + link: '/openai-model' + }, + { + text: 'aide.openaiBaseUrl', + link: '/openai-base-url' + }, + { + text: 'aide.codeViewerHelperPrompt', + link: '/code-viewer-helper-prompt' + }, + { + text: 'aide.convertLanguagePairs', + link: '/convert-language-pairs' + }, + { + text: 'aide.autoRememberConvertLanguagePairs', + link: '/auto-remember-convert-language-pairs' + }, + { text: 'aide.aiPrompt', link: '/ai-prompt' }, + { + text: 'aide.ignorePatterns', + link: '/ignore-patterns' + }, + { + text: 'aide.respectGitIgnore', + link: '/respect-git-ignore' + }, + { text: 'aide.aiCommand', link: '/ai-command' }, + { + text: 'aide.aiCommandCopyBeforeRun', + link: '/ai-command-copy-before-run' + } + ] + }, + { + text: '🌱   Use Another LLM', + collapsed: true, + base: '/guide/use-another-llm', + items: [ + { text: 'Anthropic', link: '/anthropic' }, + { text: 'Azure', link: '/azure' }, + { text: 'DeepSeek', link: '/deepseek' }, + { text: 'Google', link: '/google' }, + { text: 'LocalAI', link: '/local-ai' }, + { text: 'Ollama', link: '/ollama' }, + { text: 'OpenAI', link: '/openai' }, + { text: 'Qwen', link: '/qwen' }, + { text: 'Zhipu', link: '/zhipu' } + ] + } + ] + } +} diff --git a/website/.vitepress/config/index.ts b/website/.vitepress/config/index.ts new file mode 100644 index 0000000..3e999a5 --- /dev/null +++ b/website/.vitepress/config/index.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitepress' + +import { en } from './en' +import { shared } from './shared' +import { zh } from './zh' + +export default defineConfig({ + ...shared, + locales: { + root: { label: 'English', ...en }, + zh: { label: '简体中文', ...zh } + } +}) diff --git a/website/.vitepress/config/shared.ts b/website/.vitepress/config/shared.ts new file mode 100644 index 0000000..765d1f8 --- /dev/null +++ b/website/.vitepress/config/shared.ts @@ -0,0 +1,81 @@ +import Unocss from 'unocss/vite' +import { defineConfig } from 'vitepress' + +import { search as zhSearch } from './zh' + +export const shared = defineConfig({ + title: 'Aide', + + rewrites: { + 'en/:rest*': ':rest*' + }, + + lastUpdated: true, + cleanUrls: true, + metaChunk: true, + + markdown: { + lineNumbers: false + }, + + sitemap: { + hostname: 'https://aide.nicepkg.cn', + transformItems(items) { + return items.filter(item => !item.url.includes('migration')) + } + }, + + head: [ + ['link', { rel: 'icon', type: 'image/svg+xml', href: '/logo-mini.svg' }], + ['link', { rel: 'icon', type: 'image/png', href: '/logo-mini.png' }], + ['meta', { name: 'theme-color', content: '#8c6bef' }], + ['meta', { property: 'og:type', content: 'website' }], + ['meta', { property: 'og:locale', content: 'en' }], + [ + 'meta', + { + property: 'og:title', + content: 'Aide | Mastering Any Code In VSCode' + } + ], + ['meta', { property: 'og:site_name', content: 'Aide' }], + [ + 'meta', + { + property: 'og:image', + content: 'https://aide.nicepkg.cn/og-cover.png' + } + ], + ['meta', { property: 'og:url', content: 'https://aide.nicepkg.cn/' }] + ], + + themeConfig: { + logo: { src: '/logo-mini.svg', width: 24, height: 24 }, + + socialLinks: [{ icon: 'github', link: 'https://github.com/nicepkg/aide' }], + + // search: { + // provider: 'algolia', + // options: { + // appId: 'xxx', + // apiKey: 'xxx', + // indexName: 'aide', + // locales: { + // ...zhSearch + // } + // } + // } + + search: { + provider: 'local' + } + }, + + vite: { + plugins: [ + Unocss({ + configFile: '../../uno.config.ts' + }) + ] + } +}) diff --git a/website/.vitepress/config/zh.ts b/website/.vitepress/config/zh.ts new file mode 100644 index 0000000..90a99c6 --- /dev/null +++ b/website/.vitepress/config/zh.ts @@ -0,0 +1,239 @@ +import { createRequire } from 'module' +import type { DefaultTheme } from 'vitepress' +import { defineConfig } from 'vitepress' + +const require = createRequire(import.meta.url) +const pkg = require('../../../package.json') + +export const zh = defineConfig({ + lang: 'zh-Hans', + description: '在 VSCode 里掌握任何屎山代码:一键注释和语言转换。💪', + themeConfig: { + footer: { + message: '基于 MIT 许可发布', + copyright: `Copyright © 2024-present Nicepkg` + }, + nav: nav(), + sidebar: sidebar(), + editLink: { + pattern: 'https://github.com/nicepkg/aide/edit/master/website/:path', + text: '在 GitHub 上编辑此页面' + }, + docFooter: { + prev: '上一页', + next: '下一页' + }, + outline: { + label: '页面导航' + }, + + lastUpdated: { + text: '最后更新于', + formatOptions: { + dateStyle: 'short', + timeStyle: 'medium' + } + }, + + langMenuLabel: '多语言', + returnToTopLabel: '回到顶部', + sidebarMenuLabel: '菜单', + darkModeSwitchLabel: '主题', + lightModeSwitchTitle: '切换到浅色模式', + darkModeSwitchTitle: '切换到深色模式' + } +}) + +function nav(): DefaultTheme.NavItem[] { + return [ + { + text: '指南', + link: '/zh/guide/getting-started/', + activeMatch: '/zh/guide/' + }, + { + text: '开发', + items: [ + { + text: '安装' + ' ' + pkg.version, + link: 'https://marketplace.visualstudio.com/items?itemName=nicepkg.aide-pro' + }, + { + text: '更新日志', + link: 'https://github.com/nicepkg/aide/blob/master/CHANGELOG.md' + }, + { + text: '贡献指南', + link: 'https://github.com/nicepkg/aide/blob/master/CONTRIBUTING.md' + } + ] + } + ] +} + +function sidebar(): DefaultTheme.Sidebar { + return { + '/zh/guide/': [ + { + text: '🚀   快速开始', + collapsed: false, + base: '/zh/guide/getting-started', + items: [ + { text: '简介', link: '/' }, + { + text: '安装', + link: '/installation' + }, + { + text: '自定义快捷键', + link: '/customize-shortcuts' + }, + { + text: '自定义配置', + link: '/customize-configuration' + }, + { text: '常见问题解答', link: '/faq' } + ] + }, + { + text: '✨   功能', + collapsed: false, + base: '/zh/guide/features', + items: [ + { + text: '智能代码查看器助手', + link: '/code-viewer-helper' + }, + { + text: '智能代码转换', + link: '/code-convert' + }, + { + text: '智能粘贴', + link: '/smart-paste' + }, + { + text: '批量复制文件为 AI 提示词', + link: '/copy-as-prompt' + }, + { + text: '智能重命名变量', + link: '/rename-variable' + }, + { + text: '自定义命令提问 AI', + link: '/ask-ai' + } + ] + }, + { + text: '🛠   配置', + collapsed: true, + base: '/zh/guide/configuration', + items: [ + { + text: 'aide.openaiKey', + link: '/openai-key' + }, + { + text: 'aide.openaiModel', + link: '/openai-model' + }, + { + text: 'aide.openaiBaseUrl', + link: '/openai-base-url' + }, + { + text: 'aide.codeViewerHelperPrompt', + link: '/code-viewer-helper-prompt' + }, + { + text: 'aide.convertLanguagePairs', + link: '/convert-language-pairs' + }, + { + text: 'aide.autoRememberConvertLanguagePairs', + link: '/auto-remember-convert-language-pairs' + }, + { text: 'aide.aiPrompt', link: '/ai-prompt' }, + { + text: 'aide.ignorePatterns', + link: '/ignore-patterns' + }, + { + text: 'aide.respectGitIgnore', + link: '/respect-git-ignore' + }, + { + text: 'aide.aiCommand', + link: '/ai-command' + }, + { + text: 'aide.aiCommandCopyBeforeRun', + link: '/ai-command-copy-before-run' + } + ] + }, + { + text: '🌱   使用其他大语言模型', + collapsed: true, + base: '/zh/guide/use-another-llm', + items: [ + { text: 'Anthropic', link: '/anthropic' }, + { text: 'Azure', link: '/azure' }, + { text: 'DeepSeek', link: '/deepseek' }, + { text: '谷歌', link: '/google' }, + { text: 'LocalAI', link: '/local-ai' }, + { text: 'Ollama', link: '/ollama' }, + { text: 'OpenAI', link: '/openai' }, + { text: '通义千问', link: '/qwen' }, + { text: '智谱', link: '/zhipu' } + ] + } + ] + } +} + +export const search: DefaultTheme.AlgoliaSearchOptions['locales'] = { + zh: { + placeholder: '搜索文档', + translations: { + button: { + buttonText: '搜索文档', + buttonAriaLabel: '搜索文档' + }, + modal: { + searchBox: { + resetButtonTitle: '清除查询条件', + resetButtonAriaLabel: '清除查询条件', + cancelButtonText: '取消', + cancelButtonAriaLabel: '取消' + }, + startScreen: { + recentSearchesTitle: '搜索历史', + noRecentSearchesText: '没有搜索历史', + saveRecentSearchButtonTitle: '保存至搜索历史', + removeRecentSearchButtonTitle: '从搜索历史中移除', + favoriteSearchesTitle: '收藏', + removeFavoriteSearchButtonTitle: '从收藏中移除' + }, + errorScreen: { + titleText: '无法获取结果', + helpText: '你可能需要检查你的网络连接' + }, + footer: { + selectText: '选择', + navigateText: '切换', + closeText: '关闭', + searchByText: '搜索提供者' + }, + noResultsScreen: { + noResultsText: '无法找到相关结果', + suggestedQueryText: '你可以尝试查询', + reportMissingResultsText: '你认为该查询应该有结果?', + reportMissingResultsLinkText: '点击反馈' + } + } + } + } +} diff --git a/website/.vitepress/integrations.ts b/website/.vitepress/integrations.ts new file mode 100644 index 0000000..b05d651 --- /dev/null +++ b/website/.vitepress/integrations.ts @@ -0,0 +1,29 @@ +export interface Integration { + icon: string + name: string + link: string + target?: string + secondary?: string +} + +// @unocss-include + +export const integrations: Integration[] = [ + { + name: 'Vue', + link: '/guide/getting-started/integrations/vue', + icon: 'i-logos-vue' + }, + { + name: 'Nuxt', + link: '/guide/getting-started/integrations/nuxt', + icon: 'i-logos-nuxt-icon' + }, + { + name: 'TailWind', + secondary: 'Upvote Issue', + target: '_blank', + link: 'https://github.com/jd-solanki/anu/issues/128', + icon: 'i-logos-tailwindcss-icon' + } +] diff --git a/website/.vitepress/shim.d.ts b/website/.vitepress/shim.d.ts new file mode 100644 index 0000000..2b97bd9 --- /dev/null +++ b/website/.vitepress/shim.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/website/.vitepress/theme/index.ts b/website/.vitepress/theme/index.ts new file mode 100644 index 0000000..d471bd2 --- /dev/null +++ b/website/.vitepress/theme/index.ts @@ -0,0 +1,14 @@ +import DefaultTheme from 'vitepress/theme' +import type { App } from 'vue' + +import Video from '../../components/Video.vue' + +import 'uno.css' +import './style.css' + +export default { + extends: DefaultTheme, + enhanceApp({ app }: { app: App }) { + app.component('Video', Video) + } +} diff --git a/website/.vitepress/theme/style.css b/website/.vitepress/theme/style.css new file mode 100644 index 0000000..536d469 --- /dev/null +++ b/website/.vitepress/theme/style.css @@ -0,0 +1,17 @@ +/* Styles adjusting VitePress according to theme */ +:root { + --vp-c-brand-1: #8c6bef; + --vp-c-brand-2: #7a55e8; + --vp-c-brand-3: #6940e0; + --vp-c-brand-soft: rgba(140, 107, 239, 0.14); + + /* We need this because menu component has 51 index which overlaps on navbar on scroll */ + /* --vp-z-index-nav: 52; */ + + --vp-code-scrollbar-thumb-bg: hsl(0, 0%, 40%); + --vp-code-line-height: 1.9; +} + +:root.dark { + --vp-code-scrollbar-thumb-bg: hsl(0, 0%, 25%); +} diff --git a/website/components/Video.vue b/website/components/Video.vue new file mode 100644 index 0000000..6f54bc9 --- /dev/null +++ b/website/components/Video.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/website/en/guide/configuration/ai-command-copy-before-run.md b/website/en/guide/configuration/ai-command-copy-before-run.md new file mode 100644 index 0000000..e567738 --- /dev/null +++ b/website/en/guide/configuration/ai-command-copy-before-run.md @@ -0,0 +1,11 @@ +# aide.aiCommandCopyBeforeRun + +This configuration allows you to customize whether to copy the AI command before execution. + +- **Default value:** + + ```json + { + "aide.aiCommandCopyBeforeRun": true + } + ``` diff --git a/website/en/guide/configuration/ai-command.md b/website/en/guide/configuration/ai-command.md new file mode 100644 index 0000000..808b419 --- /dev/null +++ b/website/en/guide/configuration/ai-command.md @@ -0,0 +1,26 @@ +# aide.aiCommand + +This configuration allows you to customize the template for executing AI commands. Templates can include several placeholders: + +**Template Parameters:** + +| Parameter | Description | Output Example | +| ---------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `#{filesRelativePath}` | Placeholder for file paths | `"./src/index.ts" "./src/utils.ts"` | +| `#{filesFullPath}` | Placeholder for full paths | `"/project/src/index.ts" "/project/src/utils.ts"` | +| `#{question}` | Placeholder for user query | `"What is the purpose of this code?" ` | +| `#{content}` | Placeholder for file content |
File: example.js
\`\`\`js
const bar = "hello, aide";
console.log(bar);
\`\`\`
| + +**Usage Example:** + +- **Default Template:** + + By default, the template is blank, and you'll need to provide a custom template. + +- **Example:** + + It is recommended to use the [aider (a highly regarded command-line AI tool)](https://github.com/paul-gauthier/aider) command to ask AI questions about the selected files: + + ```plaintext + aider #{filesRelativePath} + ``` diff --git a/website/en/guide/configuration/ai-prompt.md b/website/en/guide/configuration/ai-prompt.md new file mode 100644 index 0000000..88a4729 --- /dev/null +++ b/website/en/guide/configuration/ai-prompt.md @@ -0,0 +1,24 @@ +# aide.aiPrompt + +This configuration allows you to customize the template for AI prompts when batch copying files. The template can include some placeholders: + +**Template Parameters:** + +| Parameter | Description | Output Example | +| ------------ | --------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `#{content}` | Placeholder for full file content |
File: example.js
\`\`\`js
const bar = "hello, aide";
console.log(bar);
\`\`\`
| + +**Usage Example:** + +- **Default Template:** + + ```plaintext + #{content} + ``` + +- **Example:** + ```plaintext + Here is the code snippet: + #{content} + Please answer the following question: + ``` diff --git a/website/en/guide/configuration/auto-remember-convert-language-pairs.md b/website/en/guide/configuration/auto-remember-convert-language-pairs.md new file mode 100644 index 0000000..d955323 --- /dev/null +++ b/website/en/guide/configuration/auto-remember-convert-language-pairs.md @@ -0,0 +1,3 @@ +# aide.autoRememberConvertLanguagePairs + +This configuration allows you to customize whether to automatically remember the language mapping for code conversion. The default value is `true`. diff --git a/website/en/guide/configuration/code-viewer-helper-prompt.md b/website/en/guide/configuration/code-viewer-helper-prompt.md new file mode 100644 index 0000000..d20c4a6 --- /dev/null +++ b/website/en/guide/configuration/code-viewer-helper-prompt.md @@ -0,0 +1,32 @@ +# aide.codeViewerHelperPrompt + +This configuration allows you to customize the AI prompt template for the code viewer assistant. The template can include some placeholders: + +**Template Parameters:** + +| Parameter | Description | Output Example | +| ------------------- | ------------------------ | ------------------------------------------------------------------------------------------ | +| `#{sourceLanguage}` | Source code language | `javascript` | +| `#{locale}` | User's language/locale | `en` | +| `#{content}` | Full content of the file |
const bar = "hello, aide";
console.log(bar);
| + +**Usage Examples:** + +- **Default Template:** + + ```plaintext + You are a programming language commentator. + You need to help me add comments to #{sourceLanguage} code as much as possible to make it readable for beginners. + Do not change the original code, just add as detailed comments as possible, because my purpose is only to understand and read. + Please use my native language #{locale} as the commenting language. + Please do not reply with any text other than the code, and do not use markdown syntax. + Here is the code you need to comment on: + #{content} + ``` + +- **Example:** + + ```plaintext + Provide detailed comments for the following #{sourceLanguage} code, using #{locale}: + #{content} + ``` diff --git a/website/en/guide/configuration/convert-language-pairs.md b/website/en/guide/configuration/convert-language-pairs.md new file mode 100644 index 0000000..ab1ebf8 --- /dev/null +++ b/website/en/guide/configuration/convert-language-pairs.md @@ -0,0 +1,96 @@ +# aide.convertLanguagePairs + +This configuration allows you to customize the language mapping for code conversion. The mapping should be in the form of `sourceLanguage: targetLanguage`. + +By default, the editor will remember your language mapping in the current project's `.vscode/settings.json` file, under the `aide.convertLanguagePairs` configuration. You can modify or add new language mappings here, for example: + +```json +{ + //other settings... + "aide.convertLanguagePairs": { + "javascript": "python", // Convert javascript to python + "json": "yaml" // Convert json to yaml + } +} +``` + +Your language names should follow the [VSCode Language Identifiers](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers). Here are some VSCode language identifiers you might need: + +::: details List of VSCode Language Identifiers + +- abap +- bat +- bibtex +- clojure +- coffeescript +- c +- cpp +- csharp +- dockercompose +- css +- cuda-cpp +- d +- pascal +- diff +- dockerfile +- erlang +- fsharp +- git-commit +- git-rebase +- go +- groovy +- handlebars +- haml +- haskell +- html +- ini +- java +- javascript +- javascriptreact +- json +- jsonc +- julia +- latex +- less +- lua +- makefile +- markdown +- objective-c +- objective-cpp +- ocaml +- perl +- perl6 +- php +- plaintext +- powershell +- jade +- pug +- python +- r +- razor +- ruby +- rust +- scss +- sass +- shaderlab +- shellscript +- slim +- sql +- stylus +- svelte +- swift +- typescript +- typescriptreact +- tex +- vb +- vue +- vue-html +- xml +- xsl +- yaml + +::: + +::: tip +If you can't find your language in the list, you can freely customize your language identifier. However, this means you might not get syntax highlighting, that's all. +::: diff --git a/website/en/guide/configuration/ignore-patterns.md b/website/en/guide/configuration/ignore-patterns.md new file mode 100644 index 0000000..2179116 --- /dev/null +++ b/website/en/guide/configuration/ignore-patterns.md @@ -0,0 +1,39 @@ +# aide.ignorePatterns + +This configuration allows you to customize file exclusion rules. It supports [glob](https://github.com/isaacs/node-glob) patterns. + +- **Default value:** + + ```json + { + "aide.ignorePatterns": [ + "**/node_modules/**", + "**/.git/**", + "**/__pycache__/**", + "**/.Python/**", + "**/.DS_Store/**", + "**/.cache/**", + "**/.next/**", + "**/.nuxt/**", + "**/.out/**", + "**/dist/**", + "**/.serverless/**", + "**/.parcel-cache/**" + ] + } + ``` + +- **Usage example:** + + For instance, to exclude the `node_modules`, `.git`, `dist`, and `build` folders from AI suggestions, you can update the settings as follows: + + ```json + { + "aide.ignorePatterns": [ + "**/node_modules/**", + "**/.git/**", + "**/dist/**", + "**/build/**" + ] + } + ``` diff --git a/website/en/guide/configuration/openai-base-url.md b/website/en/guide/configuration/openai-base-url.md new file mode 100644 index 0000000..bc9aeb4 --- /dev/null +++ b/website/en/guide/configuration/openai-base-url.md @@ -0,0 +1,11 @@ +# aide.openaiBaseUrl + +This configuration allows you to customize the base URL of the OpenAI API. + +- **Default value:** + + ```json + { + "aide.openaiBaseUrl": "https://api.openai.com/v1" + } + ``` diff --git a/website/en/guide/configuration/openai-key.md b/website/en/guide/configuration/openai-key.md new file mode 100644 index 0000000..c5fe120 --- /dev/null +++ b/website/en/guide/configuration/openai-key.md @@ -0,0 +1,14 @@ +# aide.openaiKey + +This configuration allows you to customize the OpenAI API key. You can obtain your API key from the [OpenAI website](https://platform.openai.com). + +- **Default value:** + + ```json + { + "aide.openaiKey": "" + } + ``` + +
+