diff --git a/.gitignore b/.gitignore index fe5f0d917..a0d12d133 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules/ -docs/.vitepress/cache/ -docs/.vitepress/dist -docs/.vitepress/.temp/ +.mintlify/ .DS_Store +/.omc +.mintlify-last/ \ No newline at end of file diff --git a/docs/public/QChatGPT-0516.png b/QChatGPT-0516.png similarity index 100% rename from docs/public/QChatGPT-0516.png rename to QChatGPT-0516.png diff --git a/docs/public/c12e8803945846f4ea730e249db79574.txt b/c12e8803945846f4ea730e249db79574.txt similarity index 100% rename from docs/public/c12e8803945846f4ea730e249db79574.txt rename to c12e8803945846f4ea730e249db79574.txt diff --git a/docs/public/chrome-192.png b/chrome-192.png similarity index 100% rename from docs/public/chrome-192.png rename to chrome-192.png diff --git a/docs/public/chrome-512.png b/chrome-512.png similarity index 100% rename from docs/public/chrome-512.png rename to chrome-512.png diff --git a/docs.json b/docs.json new file mode 100644 index 000000000..22037fbb3 --- /dev/null +++ b/docs.json @@ -0,0 +1,624 @@ +{ + "$schema": "https://mintlify.com/docs.json", + "theme": "mint", + "name": "LangBot", + "colors": { + "primary": "#4692dd", + "light": "#4692dd", + "dark": "#4692dd" + }, + "logo": { + "light": "/logo/langbot-logo-0.5x.png", + "dark": "/logo/langbot-logo-0.5x.png", + "href": "https://langbot.app" + }, + "favicon": "/favicon.ico", + "navbar": { + "links": [ + { + "label": "Home", + "href": "https://langbot.app" + }, + { + "label": "Market", + "href": "https://space.langbot.app" + }, + { + "label": "Blog", + "href": "https://blog.langbot.app" + }, + { + "label": "Roadmap", + "href": "https://langbot.featurebase.app/roadmap" + } + ] + }, + "footer": { + "socials": { + "github": "https://github.com/langbot-app/LangBot" + } + }, + "redirects": [ + { "source": "/zh/deploy/models/readme", "destination": "/zh/usage/models/readme" }, + { "source": "/zh/deploy/platforms/readme", "destination": "/zh/usage/platforms/readme" }, + { "source": "/zh/deploy/pipelines/readme", "destination": "/zh/usage/pipelines/readme" }, + { "source": "/zh/deploy/knowledge/readme", "destination": "/zh/usage/knowledge/readme" }, + { "source": "/en/deploy/models/readme", "destination": "/en/usage/models/readme" }, + { "source": "/en/deploy/platforms/readme", "destination": "/en/usage/platforms/readme" }, + { "source": "/en/deploy/pipelines/readme", "destination": "/en/usage/pipelines/readme" }, + { "source": "/en/deploy/knowledge/readme", "destination": "/en/usage/knowledge/readme" }, + { "source": "/ja/deploy/models/readme", "destination": "/ja/usage/models/readme" }, + { "source": "/ja/deploy/platforms/readme", "destination": "/ja/usage/platforms/readme" }, + { "source": "/ja/deploy/pipelines/readme", "destination": "/ja/usage/pipelines/readme" }, + { "source": "/ja/deploy/knowledge/readme", "destination": "/ja/usage/knowledge/readme" } + ], + "navigation": { + "languages": [ + { + "language": "cn", + "tabs": [ + { + "tab": "指南", + "groups": [ + { + "group": "快速开始", + "pages": [ + "zh/insight/guide", + "zh/insight/features", + "zh/insight/community" + ] + }, + { + "group": "安装部署", + "pages": [ + "zh/deploy/langbot/package", + "zh/deploy/langbot/docker", + "zh/deploy/langbot/one-click/1panel", + "zh/deploy/langbot/one-click/bt", + "zh/deploy/langbot/manual", + "zh/deploy/settings", + "zh/deploy/update", + "zh/deploy/command" + ] + }, + { + "group": "配置机器人", + "pages": [ + "zh/usage/platforms/readme", + "zh/usage/platforms/discord", + "zh/usage/platforms/telegram", + "zh/usage/platforms/slack", + "zh/usage/platforms/line", + "zh/usage/platforms/kook", + "zh/usage/platforms/lark", + "zh/usage/platforms/dingtalk", + "zh/usage/platforms/wxoa", + { + "group": "QQ (OneBot v11)", + "pages": [ + "zh/usage/platforms/qq/aiocqhttp/napcat", + "zh/usage/platforms/qq/aiocqhttp/lagrange", + "zh/usage/platforms/qq/aiocqhttp/llonebot" + ] + }, + { + "group": "QQ 官方机器人", + "pages": [ + "zh/usage/platforms/qq/official_webhook", + "zh/usage/platforms/qq/official" + ] + }, + { + "group": "企业微信", + "pages": [ + "zh/usage/platforms/wecom/wecom", + "zh/usage/platforms/wecom/wecomcs", + "zh/usage/platforms/wecom/wecombot" + ] + }, + { + "group": "微信", + "pages": [ + "zh/usage/platforms/wechat/wechatpad" + ] + } + ] + }, + { + "group": "配置 AI 能力", + "pages": [ + "zh/usage/models/readme", + "zh/usage/pipelines/readme", + { + "group": "接入 LLMOps 平台", + "pages": [ + "zh/usage/pipelines/dify", + "zh/usage/pipelines/n8n", + "zh/usage/pipelines/langflow", + "zh/usage/pipelines/tbox", + "zh/usage/pipelines/coze" + ] + }, + "zh/usage/knowledge/readme", + "zh/usage/mcp/readme" + ] + }, + { + "group": "进阶运维", + "pages": [ + "zh/workshop/production/proxy-and-ssl", + "zh/workshop/network-details", + "zh/workshop/mcp-details", + "zh/insight/platform-features", + { + "group": "第三方模型接入", + "pages": [ + "zh/workshop/newapi-integration", + "zh/workshop/shengsuanyun-integration", + "zh/workshop/tokenpony-integration", + "zh/workshop/ppio-integration", + "zh/workshop/302ai-integration" + ] + }, + { + "group": "规模使用", + "hidden": true, + "pages": [ + "zh/tob/index", + "zh/tob/platform", + "zh/tob/provider", + "zh/tob/contact" + ] + } + ] + }, + { + "group": "插件使用", + "pages": [ + "zh/plugin/plugin-intro", + "zh/plugin/compatibility" + ] + } + ] + }, + { + "tab": "开发者", + "groups": [ + { + "group": "插件开发", + "pages": [ + "zh/plugin/dev/tutor", + "zh/plugin/dev/basic-info", + "zh/plugin/dev/directory-structure", + { + "group": "组件开发", + "pages": [ + "zh/plugin/dev/components/add", + "zh/plugin/dev/components/event-listener", + "zh/plugin/dev/components/command", + "zh/plugin/dev/components/tool", + "zh/plugin/dev/components/knowledge-retriever" + ] + }, + "zh/plugin/dev/style", + "zh/plugin/dev/migration", + { + "group": "发布插件", + "pages": [ + "zh/plugin/dev/publish/market", + "zh/plugin/dev/publish/github" + ] + }, + "zh/develop/plugin-runtime" + ] + }, + { + "group": "插件 SDK API", + "pages": [ + "zh/plugin/dev/apis/common", + "zh/plugin/dev/apis/pipeline-events", + "zh/plugin/dev/apis/messages", + "zh/plugin/dev/apis/tech-details" + ] + }, + { + "group": "核心开发", + "pages": [ + "zh/develop/dev-config", + "zh/develop/comp-arch", + "zh/workshop/impl-platform-adapter", + { + "group": "Discord 适配器", + "pages": [ + "zh/develop/adapter/discord/README", + "zh/develop/adapter/discord/quick_start", + "zh/develop/adapter/discord/design", + "zh/develop/adapter/discord/api_reference", + "zh/develop/adapter/discord/troubleshooting" + ] + } + ] + } + ] + }, + { + "tab": "API 参考", + "groups": [ + { + "group": "Service API", + "pages": [ + "zh/tags/readme", + "zh/tags/webhook" + ] + }, + { + "group": "HTTP API Reference", + "openapi": { + "source": "openapi/service-api-zh.json", + "directory": "zh/api-reference" + } + } + ] + } + ] + }, + { + "language": "en", + "tabs": [ + { + "tab": "Guides", + "groups": [ + { + "group": "Quick Start", + "pages": [ + "en/insight/guide", + "en/insight/features", + "en/insight/community" + ] + }, + { + "group": "Installation", + "pages": [ + "en/deploy/langbot/package", + "en/deploy/langbot/docker", + "en/deploy/langbot/one-click/1panel", + "en/deploy/langbot/one-click/bt", + "en/deploy/langbot/manual", + "en/deploy/settings", + "en/deploy/update", + "en/deploy/command" + ] + }, + { + "group": "Configure Bots", + "pages": [ + "en/usage/platforms/readme", + "en/usage/platforms/discord", + "en/usage/platforms/telegram", + "en/usage/platforms/slack", + "en/usage/platforms/line", + "en/usage/platforms/kook", + "en/usage/platforms/lark", + "en/usage/platforms/dingtalk", + "en/usage/platforms/wxoa", + { + "group": "QQ (OneBot v11)", + "pages": [ + "en/usage/platforms/qq/aiocqhttp/napcat", + "en/usage/platforms/qq/aiocqhttp/lagrange", + "en/usage/platforms/qq/aiocqhttp/llonebot" + ] + }, + { + "group": "QQ Official Bot", + "pages": [ + "en/usage/platforms/qq/official_webhook" + ] + }, + { + "group": "WeCom (Enterprise WeChat)", + "pages": [ + "en/usage/platforms/wecom/wecom", + "en/usage/platforms/wecom/wecomcs", + "en/usage/platforms/wecom/wecombot" + ] + } + ] + }, + { + "group": "AI Configuration", + "pages": [ + "en/usage/models/readme", + "en/usage/pipelines/readme", + { + "group": "LLMOps Integrations", + "pages": [ + "en/usage/pipelines/dify", + "en/usage/pipelines/n8n", + "en/usage/pipelines/langflow", + "en/usage/pipelines/coze" + ] + }, + "en/usage/knowledge/readme", + "en/usage/mcp/readme" + ] + }, + { + "group": "Advanced Operations", + "pages": [ + "en/workshop/production/proxy-and-ssl", + "en/workshop/network-details", + "en/workshop/mcp-details", + "en/insight/platform-features", + { + "group": "Third-Party Model Providers", + "pages": [ + "en/workshop/newapi-integration", + "en/workshop/ppio-integration", + "en/workshop/302ai-integration" + ] + } + ] + }, + { + "group": "Using Plugins", + "pages": [ + "en/plugin/plugin-intro", + "en/plugin/compatibility" + ] + } + ] + }, + { + "tab": "Developers", + "groups": [ + { + "group": "Plugin Development", + "pages": [ + "en/plugin/dev/tutor", + "en/plugin/dev/basic-info", + "en/plugin/dev/directory-structure", + { + "group": "Component Development", + "pages": [ + "en/plugin/dev/components/add", + "en/plugin/dev/components/event-listener", + "en/plugin/dev/components/command", + "en/plugin/dev/components/tool", + "en/plugin/dev/components/knowledge-retriever" + ] + }, + "en/plugin/dev/style", + "en/plugin/dev/migration", + { + "group": "Publish Plugin", + "pages": [ + "en/plugin/dev/publish/market", + "en/plugin/dev/publish/github" + ] + }, + "en/develop/plugin-runtime" + ] + }, + { + "group": "Plugin SDK API", + "pages": [ + "en/plugin/dev/apis/common", + "en/plugin/dev/apis/pipeline-events", + "en/plugin/dev/apis/messages", + "en/plugin/dev/apis/tech-details" + ] + }, + { + "group": "Core Development", + "pages": [ + "en/develop/dev-config", + "en/develop/comp-arch", + "en/workshop/impl-platform-adapter" + ] + } + ] + }, + { + "tab": "API Reference", + "groups": [ + { + "group": "Service API", + "pages": [ + "en/tags/readme", + "en/tags/webhook" + ] + }, + { + "group": "HTTP API Reference", + "openapi": { + "source": "openapi/service-api-en.json", + "directory": "en/api-reference" + } + } + ] + } + ] + }, + { + "language": "jp", + "tabs": [ + { + "tab": "ガイド", + "groups": [ + { + "group": "クイックスタート", + "pages": [ + "ja/insight/guide", + "ja/insight/features", + "ja/insight/community" + ] + }, + { + "group": "インストール", + "pages": [ + "ja/deploy/langbot/package", + "ja/deploy/langbot/docker", + "ja/deploy/langbot/one-click/1panel", + "ja/deploy/langbot/one-click/bt", + "ja/deploy/langbot/manual", + "ja/deploy/settings", + "ja/deploy/update", + "ja/deploy/command" + ] + }, + { + "group": "ボットを設定", + "pages": [ + "ja/usage/platforms/readme", + "ja/usage/platforms/discord", + "ja/usage/platforms/telegram", + "ja/usage/platforms/slack", + "ja/usage/platforms/line", + "ja/usage/platforms/kook", + "ja/usage/platforms/lark", + "ja/usage/platforms/dingtalk", + "ja/usage/platforms/wxoa", + { + "group": "QQ (OneBot v11)", + "pages": [ + "ja/usage/platforms/qq/aiocqhttp/napcat", + "ja/usage/platforms/qq/aiocqhttp/lagrange", + "ja/usage/platforms/qq/aiocqhttp/llonebot" + ] + }, + { + "group": "QQ 公式ボット", + "pages": [ + "ja/usage/platforms/qq/official_webhook" + ] + }, + { + "group": "WeCom(企業微信)", + "pages": [ + "ja/usage/platforms/wecom/wecom", + "ja/usage/platforms/wecom/wecomcs", + "ja/usage/platforms/wecom/wecombot" + ] + } + ] + }, + { + "group": "AI 設定", + "pages": [ + "ja/usage/models/readme", + "ja/usage/pipelines/readme", + { + "group": "LLMOps プラットフォーム連携", + "pages": [ + "ja/usage/pipelines/dify", + "ja/usage/pipelines/n8n", + "ja/usage/pipelines/langflow", + "ja/usage/pipelines/coze" + ] + }, + "ja/usage/knowledge/readme", + "ja/usage/mcp/readme" + ] + }, + { + "group": "運用ガイド", + "pages": [ + "ja/workshop/production/proxy-and-ssl", + "ja/workshop/network-details", + "ja/workshop/mcp-details", + "ja/insight/platform-features", + { + "group": "サードパーティモデル接続", + "pages": [ + "ja/workshop/newapi-integration", + "ja/workshop/ppio-integration", + "ja/workshop/302ai-integration" + ] + } + ] + }, + { + "group": "プラグインの利用", + "pages": [ + "ja/plugin/plugin-intro", + "ja/plugin/compatibility" + ] + } + ] + }, + { + "tab": "開発者", + "groups": [ + { + "group": "プラグイン開発", + "pages": [ + "ja/plugin/dev/tutor", + "ja/plugin/dev/basic-info", + "ja/plugin/dev/directory-structure", + { + "group": "コンポーネント開発", + "pages": [ + "ja/plugin/dev/components/add", + "ja/plugin/dev/components/event-listener", + "ja/plugin/dev/components/command", + "ja/plugin/dev/components/tool", + "ja/plugin/dev/components/knowledge-retriever" + ] + }, + "ja/plugin/dev/style", + "ja/plugin/dev/migration", + { + "group": "プラグインを配布", + "pages": [ + "ja/plugin/dev/publish/market", + "ja/plugin/dev/publish/github" + ] + }, + "ja/develop/plugin-runtime" + ] + }, + { + "group": "プラグイン SDK API", + "pages": [ + "ja/plugin/dev/apis/common", + "ja/plugin/dev/apis/pipeline-events", + "ja/plugin/dev/apis/messages", + "ja/plugin/dev/apis/tech-details" + ] + }, + { + "group": "コア開発", + "pages": [ + "ja/develop/dev-config", + "ja/develop/comp-arch", + "ja/workshop/impl-platform-adapter" + ] + } + ] + }, + { + "tab": "API リファレンス", + "groups": [ + { + "group": "Service API", + "pages": [ + "ja/tags/readme", + "ja/tags/webhook" + ] + }, + { + "group": "HTTP API Reference", + "openapi": { + "source": "openapi/service-api-ja.json", + "directory": "ja/api-reference" + } + } + ] + } + ] + } + ] + }, + "description": "Production-grade AI Bot Platform for Discord, Telegram, LINE & WeChat etc." +} diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts deleted file mode 100644 index 0237e854e..000000000 --- a/docs/.vitepress/config.mts +++ /dev/null @@ -1,887 +0,0 @@ -import { defineConfig } from "vitepress"; -import { useSidebar } from "vitepress-openapi"; -import specZh from '../assets/service-api-openapi-zh.json' with { type: 'json' } -import specEn from '../assets/service-api-openapi-en.json' with { type: 'json' } -import specJa from '../assets/service-api-openapi-ja.json' with { type: 'json' } - -const sidebarZh = useSidebar({ - spec: specZh, - linkPrefix: '/zh/tags/', -}) - -const sidebarEn = useSidebar({ - spec: specEn, - linkPrefix: '/en/tags/', -}) - -const sidebarJa = useSidebar({ - spec: specJa, - linkPrefix: '/ja/tags/', -}) - -// https://vitepress.dev/reference/site-config -export default defineConfig({ - themeConfig: { - logo: "/langbot-logo-0.5x.png", - - // 编辑链接 - editLink: { - pattern: - "https://github.com/langbot-app/Langbot-Wiki/edit/main/docs/:path", - }, - - // 本地搜索 - search: { - provider: "local", - }, - }, - - sitemap: { - hostname: 'https://docs.langbot.app', - - }, - - locales: { - root: { - title: "LangBot 文档", - label: "简体中文", - lang: "zh", - link: "/zh/", - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: "主页", link: "https://langbot.app" }, - { text: "市场", link: "https://space.langbot.app"}, - { text: "博客", link: "https://blog.langbot.app/zh/" }, - { text: "路线图", link: "https://langbot.featurebase.app/roadmap" }, - ], - - sidebar: [ - { - text: "概述", - items: [ - { text: "新手指引(必看)", link: "/zh/insight/guide" }, - { text: "社区资源", link: "/zh/insight/community" }, - { - text: "特性规格", link: "/zh/insight/features", collapsed: true, items: [ - { text: "消息平台特性支持性", link: "/zh/insight/platform-features" } - ] - }, - ], - }, - { - text: "部署", - items: [ - { - text: "部署 LangBot", - collapsed: true, - items: [ - { text: "包管理器部署", link: "/zh/deploy/langbot/package" }, - { text: "Docker部署", link: "/zh/deploy/langbot/docker" }, - { - text: "1Panel面板部署", - link: "/zh/deploy/langbot/one-click/1panel", - }, - { - text: "宝塔面板部署", - link: "/zh/deploy/langbot/one-click/bt", - }, - { text: "手动部署", link: "/zh/deploy/langbot/manual" }, - ], - }, - { - text: "系统环境设置", - link: "/zh/deploy/settings", - }, - { - text: "更新 LangBot", - link: "/zh/deploy/update", - }, - ], - }, - { - text: "构建机器人", - items: [ - { - text: "配置机器人", - collapsed: true, - link: "/zh/usage/platforms/readme", - items: [ - { - text: "OneBot v11", - collapsed: true, - items: [ - { - text: "NapCat", - link: "/zh/usage/platforms/qq/aiocqhttp/napcat", - }, - { - text: "Lagrange", - link: "/zh/usage/platforms/qq/aiocqhttp/lagrange", - }, - { - text: "llonebot", - link: "/zh/usage/platforms/qq/aiocqhttp/llonebot", - }, - ], - }, - { - text: "QQ 官方机器人", - collapsed: true, - items: [ - { - text: "Webhook 方式", - link: "/zh/usage/platforms/qq/official_webhook", - }, - { - text: "WebSocket 方式", - link: "/zh/usage/platforms/qq/official", - }, - ], - }, - { - text: "企业微信", - collapsed: true, - items: [ - { - text: "内部应用", - link: "/zh/usage/platforms/wecom/wecom", - }, - { - text: "对外客服", - link: "/zh/usage/platforms/wecom/wecomcs", - }, - { - text: "智能机器人", - link: "/zh/usage/platforms/wecom/wecombot", - } - ], - }, - { - text: "微信", - collapsed: true, - items: [ - { - text: "WeChatPadPro", - link: "/zh/usage/platforms/wechat/wechatpad.md" - }, - ], - }, - { text: "微信公众号", link: "/zh/usage/platforms/wxoa.md" }, - { text: "飞书", link: "/zh/usage/platforms/lark" }, - { text: "钉钉", link: "/zh/usage/platforms/dingtalk.md" }, - { text: "Discord", link: "/zh/usage/platforms/discord" }, - { text: "Telegram", link: "/zh/usage/platforms/telegram" }, - { text: "Slack", link: "/zh/usage/platforms/slack" }, - { text: "LINE", link: "/zh/usage/platforms/line" }, - { text: "KOOK", link: "/zh/usage/platforms/kook" }, - ], - }, - { - text: "配置模型", - link: "/zh/usage/models/readme", - }, - { - text: "修改对话流水线", - link: "/zh/usage/pipelines/readme", - collapsed: true, - items: [ - { text: "Dify", link: "/zh/usage/pipelines/dify" }, - { text: "n8n", link: "/zh/usage/pipelines/n8n" }, - { text: "Langflow", link: "/zh/usage/pipelines/langflow" }, - { text: "TBox", link: "/zh/usage/pipelines/tbox" }, - { text: "Coze", link: "/zh/usage/pipelines/coze" }, - ], - }, - { - text: "使用知识库", - link: "/zh/usage/knowledge/readme", - }, - { - text: "使用 MCP 服务", - link: "/zh/usage/mcp/readme" - }, - { - text: "对话命令", - link: "/zh/deploy/command", - }, - ], - }, - { - text: "插件", - // collapsed: true, - items: [ - { text: "插件介绍", link: "/zh/plugin/plugin-intro" }, - { - text: "插件开发", - collapsed: true, - items: [ - { text: "基础教程", link: "/zh/plugin/dev/tutor" }, - { text: "完善配置信息", link: "/zh/plugin/dev/basic-info" }, - { text: "目录规范", link: "/zh/plugin/dev/directory-structure" }, - { - text: "组件开发", - collapsed: true, - items: [ - { text: "添加组件", link: "/zh/plugin/dev/components/add" }, - { text: "组件:事件监听器", link: "/zh/plugin/dev/components/event-listener" }, - { text: "组件:命令", link: "/zh/plugin/dev/components/command" }, - { text: "组件:工具", link: "/zh/plugin/dev/components/tool" }, - { text: "组件:知识检索器", link: "/zh/plugin/dev/components/knowledge-retriever" }, - ], - }, - { - text: "API 参考", - collapsed: true, - items: [ - { text: "插件通用 API", link: "/zh/plugin/dev/apis/common" }, - { text: "流水线事件", link: "/zh/plugin/dev/apis/pipeline-events" }, - { text: "消息平台实体", link: "/zh/plugin/dev/apis/messages" }, - ], - }, - { text: "代码规范", link: "/zh/plugin/dev/style" }, - { text: "迁移指南", link: "/zh/plugin/dev/migration" }, - { - text: "分发插件", collapsed: true, - items: [ - { text: "发布到插件市场", link: "/zh/plugin/dev/publish/market" }, - { text: "通过 GitHub 分发", link: "/zh/plugin/dev/publish/github" }, - ] - }, - ], - }, - { text: "系统兼容处理", link: "/zh/plugin/compatibility" }, - ], - }, - { - text: "实践", - items: [ - { - text: "将 LangBot 用于生产环境", - collapsed: true, - items: [ - { text: "配置 HTTP 反向代理或通过网关访问 LangBot", link: "/zh/workshop/production/proxy-and-ssl" }, - ] - }, - { - text: "如何实现一个消息平台适配器?", - link: "/zh/workshop/impl-platform-adapter", - }, - { - text: "容器网络配置详解", - link: "/zh/workshop/network-details", - }, - { - text: "使用 New API 中转多种渠道模型", - link: "/zh/workshop/newapi-integration" - }, - { - text: "接入来自胜算云的模型", - link: "/zh/workshop/shengsuanyun-integration" - }, - { - text: "接入来自小马算力的模型", - link: "/zh/workshop/tokenpony-integration" - }, - { - text: "接入 PPIO API 的模型", - link: "/zh/workshop/ppio-integration" - }, - { - text: "接入 302.AI 的模型", - link: "/zh/workshop/302ai-integration" - } - ], - }, - { - text: "[Beta] Service API 参考", - items: [ - { text: "概述", link: "/zh/tags/readme" }, - { text: "Webhooks", link: "/zh/tags/webhook" }, - ...sidebarZh.generateSidebarGroups({ - linkPrefix: '/zh/tags/', - }).map(group => ({ - ...group, - collapsed: true, // Collapsible and open by default. - })), - ], - }, - { - text: "开发", - items: [ - { text: "开发配置", link: "/zh/develop/dev-config" }, - { text: "组件架构", link: "/zh/develop/comp-arch" }, - { text: "插件运行时", link: "/zh/develop/plugin-runtime" }, - { - text: "适配器开发", - collapsed: true, - items: [ - { - text: "Discord 适配器", - collapsed: true, - items: [ - { text: "概述", link: "/zh/develop/adapter/discord/README" }, - { text: "快速开始", link: "/zh/develop/adapter/discord/quick_start" }, - { text: "架构设计", link: "/zh/develop/adapter/discord/design" }, - { text: "API 参考", link: "/zh/develop/adapter/discord/api_reference" }, - { text: "故障排除", link: "/zh/develop/adapter/discord/troubleshooting" }, - ], - }, - ], - }, - ], - }, - ], - - // 编辑链接 - editLink: { - pattern: - "https://github.com/langbot-app/Langbot-Wiki/edit/main/docs/:path", - }, - - // 导航栏的社交图标 - socialLinks: [ - { - icon: "github", - link: "https://github.com/langbot-app/LangBot", - }, - ], - }, - }, - en: { - title: "LangBot Docs", - label: "English", - lang: "en", - link: "/en/", - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - - nav: [ - { text: "Home", link: "https://langbot.app" }, - { text: "Market", link: "https://space.langbot.app" }, - { text: "Blog", link: "https://blog.langbot.app/en/" }, - { text: "Roadmap", link: "https://langbot.featurebase.app/roadmap" }, - ], - - sidebar: [ - { - text: "Overview", - items: [ - { text: "Getting Started (Must Read)", link: "/en/insight/guide" }, - { text: "Community Resources", link: "/en/insight/community" }, - { text: "Features", link: "/en/insight/features" }, - ], - }, - { - text: "Deployment", - items: [ - { - text: "Deploy LangBot", - collapsed: true, - items: [ - { text: "Package Manager Deployment", link: "/en/deploy/langbot/package" }, - { text: "Docker Deployment", link: "/en/deploy/langbot/docker" }, - { - text: "1Panel Deployment", - link: "/en/deploy/langbot/one-click/1panel", - }, - { - text: "aaPanel Deployment", - link: "/en/deploy/langbot/one-click/bt", - }, - { text: "Manual Deployment", link: "/en/deploy/langbot/manual" }, - ], - }, - { - text: "System Settings", - link: "/en/deploy/settings", - }, - { - text: "Update LangBot", - link: "/en/deploy/update", - }, - ], - }, - { - text: "Build Your Bot", - items: [ - { - text: "Configure Bots", - collapsed: true, - link: "/en/usage/platforms/readme", - items: [ - { text: "Discord", link: "/en/usage/platforms/discord" }, - { text: "Telegram", link: "/en/usage/platforms/telegram" }, - { text: "Slack", link: "/en/usage/platforms/slack" }, - { text: "LINE", link: "/en/usage/platforms/line" }, - { text: "KOOK", link: "/en/usage/platforms/kook" }, - { text: "Lark", link: "/en/usage/platforms/lark" }, - { text: "DingTalk", link: "/en/usage/platforms/dingtalk" }, - { - text: "OneBot v11", - collapsed: true, - items: [ - { - text: "NapCat", - link: "/en/usage/platforms/qq/aiocqhttp/napcat", - }, - { - text: "Lagrange", - link: "/en/usage/platforms/qq/aiocqhttp/lagrange", - }, - { - text: "llonebot", - link: "/en/usage/platforms/qq/aiocqhttp/llonebot", - }, - ], - }, - { - text: "QQ Official Bot", - collapsed: true, - items: [ - { - text: "Webhook Method", - link: "/en/usage/platforms/qq/official_webhook", - }, - { - text: "WebSocket Method", - link: "/en/usage/platforms/qq/official", - }, - ], - }, - { - text: "WeCom (Enterprise WeChat)", - collapsed: true, - items: [ - { - text: "Internal Application", - link: "/en/usage/platforms/wecom/wecom", - }, - { - text: "External Customer Service", - link: "/en/usage/platforms/wecom/wecomcs", - }, - { - text: "Intelligent Bot", - link: "/en/usage/platforms/wecom/wecombot", - } - ], - }, - { text: "WeChat Official Account", link: "/en/usage/platforms/wxoa" }, - ], - }, - { - text: "Configure Models", - link: "/en/usage/models/readme", - }, - { - text: "Modify Dialogue Pipeline", - link: "/en/usage/pipelines/readme", - collapsed: true, - items: [ - { text: "Dify", link: "/en/usage/pipelines/dify" }, - { text: "n8n", link: "/en/usage/pipelines/n8n" }, - { text: "Langflow", link: "/en/usage/pipelines/langflow" }, - ], - }, - { - text: "Using Knowledge Base", - link: "/en/usage/knowledge/readme", - }, - { - text: "Using MCP Services", - link: "/en/usage/mcp/readme", - }, - { - text: "Dialogue Commands", - link: "/en/deploy/command", - }, - ], - }, - { - text: "Plugins", - items: [ - { text: "Plugin Introduction", link: "/en/plugin/plugin-intro" }, - { - text: "Plugin Development", - collapsed: true, - items: [ - { text: "Basic Tutorial", link: "/en/plugin/dev/tutor" }, - { text: "Complete Plugin Configuration Information", link: "/en/plugin/dev/basic-info" }, - { text: "Directory Structure", link: "/en/plugin/dev/directory-structure" }, - { - text: "Component Development", - collapsed: true, - items: [ - { text: "Adding Components", link: "/en/plugin/dev/components/add" }, - { text: "Component: Event Listener", link: "/en/plugin/dev/components/event-listener" }, - { text: "Component: Command", link: "/en/plugin/dev/components/command" }, - { text: "Component: Tool", link: "/en/plugin/dev/components/tool" }, - { text: "Component: Knowledge Retriever", link: "/en/plugin/dev/components/knowledge-retriever" }, - ], - }, - { - text: "API Reference", - collapsed: true, - items: [ - { text: "Plugin Common APIs", link: "/en/plugin/dev/apis/common" }, - { text: "Pipeline Events", link: "/en/plugin/dev/apis/pipeline-events" }, - { text: "Message Platform Entities", link: "/en/plugin/dev/apis/messages" }, - ], - }, - { text: "Code Style", link: "/en/plugin/dev/style" }, - { text: "Migration Guide", link: "/en/plugin/dev/migration" }, - { - text: "Distribute Plugin", collapsed: true, - items: [ - { text: "Publish to Marketplace", link: "/en/plugin/dev/publish/market" }, - { text: "Distribute via GitHub", link: "/en/plugin/dev/publish/github" }, - ] - }, - ], - }, - { text: "System Compatibility", link: "/en/plugin/compatibility" }, - ], - }, - { - text: "Workshops", - items: [ - { - text: "Using LangBot in Production Environment", - collapsed: true, - items: [ - { text: "Configuring HTTP Reverse Proxy or Accessing LangBot via Gateway", link: "/en/workshop/production/proxy-and-ssl" }, - ], - }, - { - text: "How to Implement a Message Platform Adapter?", - link: "/en/workshop/impl-platform-adapter", - }, - // { - // text: "Integrating Complete MCP Ecosystem in LangBot", - // link: "/en/workshop/mcp-details" - // }, - { - text: "Container Network Configuration Details", - link: "/en/workshop/network-details", - }, - { - text: "Using New API to Transmit Models from Multiple Channels", - link: "/en/workshop/newapi-integration" - }, - { - text: "Integrating PPIO API Model", - link: "/en/workshop/ppio-integration" - }, - { - text: "Integrating 302.AI Models", - link: "/en/workshop/302ai-integration" - } - ], - }, - { - text: "[Beta] Service API Reference", - items: [ - { text: "Overview", link: "/en/tags/readme" }, - { text: "Webhooks", link: "/en/tags/webhook" }, - ...sidebarEn.generateSidebarGroups({ - linkPrefix: '/en/tags/', - }).map(group => ({ - ...group, - collapsed: true, - })), - ], - }, - { - text: "Development", - items: [ - { text: "Development Configuration", link: "/en/develop/dev-config" }, - { text: "Component Architecture", link: "/en/develop/comp-arch" }, - { text: "Plugin Runtime", link: "/en/develop/plugin-runtime" }, - ], - }, - ], - - // edit link - editLink: { - pattern: - "https://github.com/langbot-app/Langbot-Wiki/edit/main/docs/:path", - }, - - // social links in the navbar - socialLinks: [ - { - icon: "github", - link: "https://github.com/langbot-app/LangBot", - }, - ], - }, - }, - ja: { - title: "LangBot ドキュメント", - label: "日本語", - lang: "ja", - link: "/ja/", - themeConfig: { - nav: [ - { text: "ホーム", link: "https://langbot.app" }, - { text: "マーケット", link: "https://space.langbot.app" }, - { text: "ブログ", link: "https://blog.langbot.app/en/" }, - { text: "ロードマップ", link: "https://langbot.featurebase.app/roadmap" }, - ], - - sidebar: [ - { - text: "概要", - items: [ - { text: "はじめに(必読)", link: "/ja/insight/guide" }, - { text: "コミュニティリソース", link: "/ja/insight/community" }, - { text: "機能一覧", link: "/ja/insight/features" }, - ], - }, - { - text: "デプロイ", - items: [ - { - text: "LangBot をデプロイ", - collapsed: true, - items: [ - { text: "パッケージマネージャーでデプロイ", link: "/ja/deploy/langbot/package" }, - { text: "Docker でデプロイ", link: "/ja/deploy/langbot/docker" }, - { - text: "1Panel でデプロイ", - link: "/ja/deploy/langbot/one-click/1panel", - }, - { - text: "aaPanel でデプロイ", - link: "/ja/deploy/langbot/one-click/bt", - }, - { text: "手動デプロイ", link: "/ja/deploy/langbot/manual" }, - ], - }, - { - text: "システム設定", - link: "/ja/deploy/settings", - }, - { - text: "LangBot を更新", - link: "/ja/deploy/update", - }, - ], - }, - { - text: "ボットを構築", - items: [ - { - text: "ボットを設定", - collapsed: true, - link: "/ja/usage/platforms/readme", - items: [ - { text: "Discord", link: "/ja/usage/platforms/discord" }, - { text: "Telegram", link: "/ja/usage/platforms/telegram" }, - { text: "Slack", link: "/ja/usage/platforms/slack" }, - { text: "LINE", link: "/ja/usage/platforms/line" }, - { text: "KOOK", link: "/ja/usage/platforms/kook" }, - { text: "Lark", link: "/ja/usage/platforms/lark" }, - { text: "DingTalk", link: "/ja/usage/platforms/dingtalk" }, - { - text: "OneBot v11", - collapsed: true, - items: [ - { - text: "NapCat", - link: "/ja/usage/platforms/qq/aiocqhttp/napcat", - }, - { - text: "Lagrange", - link: "/ja/usage/platforms/qq/aiocqhttp/lagrange", - }, - { - text: "llonebot", - link: "/ja/usage/platforms/qq/aiocqhttp/llonebot", - }, - ], - }, - { - text: "QQ 公式ボット", - collapsed: true, - items: [ - { - text: "Webhook 方式", - link: "/ja/usage/platforms/qq/official_webhook", - }, - { - text: "WebSocket 方式", - link: "/ja/usage/platforms/qq/official", - }, - ], - }, - { - text: "WeCom(企業微信)", - collapsed: true, - items: [ - { - text: "内部アプリケーション", - link: "/ja/usage/platforms/wecom/wecom", - }, - { - text: "外部カスタマーサービス", - link: "/ja/usage/platforms/wecom/wecomcs", - }, - { - text: "インテリジェントボット", - link: "/ja/usage/platforms/wecom/wecombot", - } - ], - }, - { text: "WeChat 公式アカウント", link: "/ja/usage/platforms/wxoa" }, - ], - }, - { - text: "モデルを設定", - link: "/ja/usage/models/readme", - }, - { - text: "対話パイプラインを変更", - link: "/ja/usage/pipelines/readme", - collapsed: true, - items: [ - { text: "Dify", link: "/ja/usage/pipelines/dify" }, - { text: "n8n", link: "/ja/usage/pipelines/n8n" }, - { text: "Langflow", link: "/ja/usage/pipelines/langflow" }, - ], - }, - { - text: "ナレッジベースを使用", - link: "/ja/usage/knowledge/readme", - }, - { - text: "MCP サービスを使用", - link: "/ja/usage/mcp/readme", - }, - { - text: "対話コマンド", - link: "/ja/deploy/command", - }, - ], - }, - { - text: "プラグイン", - items: [ - { text: "プラグイン紹介", link: "/ja/plugin/plugin-intro" }, - { - text: "プラグイン開発", - collapsed: true, - items: [ - { text: "基本チュートリアル", link: "/ja/plugin/dev/tutor" }, - { text: "プラグイン設定情報を完成", link: "/ja/plugin/dev/basic-info" }, - { text: "ディレクトリ構造", link: "/ja/plugin/dev/directory-structure" }, - { - text: "コンポーネント開発", - collapsed: true, - items: [ - { text: "コンポーネントを追加", link: "/ja/plugin/dev/components/add" }, - { text: "コンポーネント:イベントリスナー", link: "/ja/plugin/dev/components/event-listener" }, - { text: "コンポーネント:コマンド", link: "/ja/plugin/dev/components/command" }, - { text: "コンポーネント:ツール", link: "/ja/plugin/dev/components/tool" }, - { text: "コンポーネント:ナレッジレトリーバー", link: "/ja/plugin/dev/components/knowledge-retriever" }, - ], - }, - { - text: "API リファレンス", - collapsed: true, - items: [ - { text: "プラグイン共通 API", link: "/ja/plugin/dev/apis/common" }, - { text: "パイプラインイベント", link: "/ja/plugin/dev/apis/pipeline-events" }, - { text: "メッセージプラットフォームエンティティ", link: "/ja/plugin/dev/apis/messages" }, - ], - }, - { text: "コードスタイル", link: "/ja/plugin/dev/style" }, - { text: "移行ガイド", link: "/ja/plugin/dev/migration" }, - { - text: "プラグインを配布", collapsed: true, - items: [ - { text: "マーケットプレイスに公開", link: "/ja/plugin/dev/publish/market" }, - { text: "GitHub で配布", link: "/ja/plugin/dev/publish/github" }, - ] - }, - ], - }, - { text: "システム互換性", link: "/ja/plugin/compatibility" }, - ], - }, - { - text: "ワークショップ", - items: [ - { - text: "本番環境で LangBot を使用", - collapsed: true, - items: [ - { text: "HTTP リバースプロキシの設定またはゲートウェイ経由で LangBot にアクセス", link: "/ja/workshop/production/proxy-and-ssl" }, - ], - }, - { - text: "メッセージプラットフォームアダプターの実装方法", - link: "/ja/workshop/impl-platform-adapter", - }, - { - text: "コンテナネットワーク設定の詳細", - link: "/ja/workshop/network-details", - }, - { - text: "New API を使用して複数チャネルのモデルを中継", - link: "/ja/workshop/newapi-integration" - }, - { - text: "PPIO API モデルの統合", - link: "/ja/workshop/ppio-integration" - }, - { - text: "302.AI モデルの統合", - link: "/ja/workshop/302ai-integration" - } - ], - }, - { - text: "[Beta] Service API リファレンス", - items: [ - { text: "概要", link: "/ja/tags/readme" }, - { text: "Webhooks", link: "/ja/tags/webhook" }, - ...sidebarJa.generateSidebarGroups({ - linkPrefix: '/ja/tags/', - }).map(group => ({ - ...group, - collapsed: true, - })), - ], - }, - { - text: "開発", - items: [ - { text: "開発設定", link: "/ja/develop/dev-config" }, - { text: "コンポーネントアーキテクチャ", link: "/ja/develop/comp-arch" }, - { text: "プラグインランタイム", link: "/ja/develop/plugin-runtime" }, - ], - }, - ], - - // edit link - editLink: { - pattern: - "https://github.com/langbot-app/Langbot-Wiki/edit/main/docs/:path", - }, - - // social links in the navbar - socialLinks: [ - { - icon: "github", - link: "https://github.com/langbot-app/LangBot", - }, - ], - }, - }, - }, - - // 最后更新时间 - lastUpdated: true, -}); diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css deleted file mode 100644 index fa23cbf5f..000000000 --- a/docs/.vitepress/theme/custom.css +++ /dev/null @@ -1,6 +0,0 @@ -/* .vitepress/theme/custom.css */ -:root { - /* 自定义主页的hero部分的 name 的字体颜色 */ - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff); -} \ No newline at end of file diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts deleted file mode 100644 index bb041d3a6..000000000 --- a/docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,72 +0,0 @@ -// .vitepress/theme/index.ts -import DefaultTheme from 'vitepress/theme' -import './custom.css' -import { theme, useOpenapi } from 'vitepress-openapi/client' -import 'vitepress-openapi/dist/style.css' - -import specZh from '../../assets/service-api-openapi-zh.json' -import specEn from '../../assets/service-api-openapi-en.json' - -export default { - extends: DefaultTheme, - enhanceApp({ app, router, siteData }) { - // Determine which spec to use based on the current route - const getSpec = () => { - // Check if we're in the Chinese or English version - if (typeof window !== 'undefined') { - const path = window.location.pathname - return path.startsWith('/zh') ? specZh : specEn - } - // Default to Chinese spec for SSR - return specZh - } - - const getLocale = () => { - if (typeof window !== 'undefined') { - const path = window.location.pathname - return path.startsWith('/zh') ? 'zh' : 'en' - } - return 'zh' - } - - // Register the openapi spec with custom configuration - useOpenapi({ - spec: getSpec(), - config: { - // Allow users to customize the server URL in the playground - server: { - allowCustomServer: true, - }, - // Set locale based on current language - i18n: { - locale: getLocale(), - fallbackLocale: 'en', - }, - }, - }) - - // Update spec when route changes - if (router) { - router.onAfterRouteChanged = (to) => { - const newSpec = to.startsWith('/zh') ? specZh : specEn - const newLocale = to.startsWith('/zh') ? 'zh' : 'en' - - useOpenapi({ - spec: newSpec, - config: { - server: { - allowCustomServer: true, - }, - i18n: { - locale: newLocale, - fallbackLocale: 'en', - }, - }, - }) - } - } - - // Then enhance the app with the theme - theme.enhanceApp({ app, router, siteData }) - } -} \ No newline at end of file diff --git a/docs/assets/icon/chrome-mask-192.png b/docs/assets/icon/chrome-mask-192.png deleted file mode 100644 index 3aa04857a..000000000 Binary files a/docs/assets/icon/chrome-mask-192.png and /dev/null differ diff --git a/docs/assets/icon/chrome-mask-512.png b/docs/assets/icon/chrome-mask-512.png deleted file mode 100644 index 94d6d8ac1..000000000 Binary files a/docs/assets/icon/chrome-mask-512.png and /dev/null differ diff --git a/docs/assets/icon/guide-maskable.png b/docs/assets/icon/guide-maskable.png deleted file mode 100644 index 9d678fe6a..000000000 Binary files a/docs/assets/icon/guide-maskable.png and /dev/null differ diff --git a/docs/en/deploy/knowledge/readme.md b/docs/en/deploy/knowledge/readme.md deleted file mode 100644 index 6f29a28c0..000000000 --- a/docs/en/deploy/knowledge/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/en/deploy/models/readme.md b/docs/en/deploy/models/readme.md deleted file mode 100644 index a780e1253..000000000 --- a/docs/en/deploy/models/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/en/deploy/pipelines/readme.md b/docs/en/deploy/pipelines/readme.md deleted file mode 100644 index 2368a6e71..000000000 --- a/docs/en/deploy/pipelines/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/en/deploy/platforms/readme.md b/docs/en/deploy/platforms/readme.md deleted file mode 100644 index 58b635bb4..000000000 --- a/docs/en/deploy/platforms/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/en/develop/comp-arch.md b/docs/en/develop/comp-arch.md deleted file mode 100644 index f1606d73d..000000000 --- a/docs/en/develop/comp-arch.md +++ /dev/null @@ -1,3 +0,0 @@ -# Component Architecture - -![Component Architecture Diagram](/assets/image/zh/develop/comp_arch/develop_comp_arch_1.png) diff --git a/docs/en/index.md b/docs/en/index.md deleted file mode 100644 index 0613a5da9..000000000 --- a/docs/en/index.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/en/plugin/dev/apis/messages.md b/docs/en/plugin/dev/apis/messages.md deleted file mode 100644 index cf1fdb1b8..000000000 --- a/docs/en/plugin/dev/apis/messages.md +++ /dev/null @@ -1,96 +0,0 @@ -# Message Platform Entities - -:::info Table of Contents -[[toc]] -::: - -LangBot supports multiple messaging platforms, and each platform has different `message entity` formats. To abstract away these differences, we have implemented a unified standard. Plugin developers only need to master and use the message entities described on this page in plugins, and LangBot's internal message processing logic can automatically handle message parsing and conversion. - -## Message Chain - -`Messages` on messaging platforms are different from messages used for AI interaction. Messages on messaging platforms are described in the form of `message chains`. Each independent message displayed on QQ is a message chain, which can contain various `message chain components` such as `text`, `images`, `@mentions`, etc. For example: - -![](/assets/image/zh/plugin/dev/apis/plugin_dev_messages_01.png) - -This is a message chain containing one Plain component (Hello World) and one Image component (Usagi). - -The definitions of message chains and message chain components are located in `langbot_plugin.api.entities.builtin.platform.message`. - -### Constructing Message Chains - -Please first import the `langbot_plugin.api.entities.builtin.platform.message` package to use the message components within it. - -```python -from langbot_plugin.api.entities.builtin.platform.message import * - -# Build a message containing text "Hello LangBot" and an image (from URL) -msg_chain = MessageChain([ - Plain(text="Hello LangBot"), - Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') -]) - -# Build a message containing @everyone and text "Hello LangBot" -msg_chain = MessageChain([ - AtAll(), - Plain(text="Hello LangBot") -]) - -# Build a message containing @specific member and text "Hello LangBot" -msg_chain = MessageChain([ - At(target=123456), - Plain(text="Hello LangBot") -]) -``` - -Currently supported message chain components: - -- `Source` - Source message chain information. Messages received from messaging platforms will include this component at the front of the message chain to record message information -- `Plain` - Plain text message -- `Quote` - Quote message -- `Image` - Image message -- `AtAll` - @everyone message -- `At` - @specific member message -- `Voice` - Voice message - - Need to check messaging platform support -- `Forward` - Forward message - - Not supported on many platforms, not recommended -- `File` - File message - -When creating components, named parameters must be used. For specific usage, you can check the definitions in the source code `langbot_plugin.api.entities.builtin.platform.message`. - -## Other Entities - -In addition to the above entities, there are also entities like `Friend` and `Group`. These entities are defined in `langbot_plugin.api.entities.platform.entities`. - -## Accessing Underlying Platform APIs - -:::warning Note -Not applicable for 4.x. -::: - -To abstract away platform differences, LangBot provides an abstraction layer above messaging platform APIs, which includes the content described above and various platform adapters in the `pkg/platform/sources` directory. -However, due to significant platform differences, the entity and API encapsulation in the abstraction layer is not complete. If your plugin needs to access platform-specific functionality, you can access underlying APIs according to the following instructions. - -:::info -The `adapter` here is the instantiated object of each adapter, corresponding to the `xxxAdapter(adapter.MessagePlatformAdapter)` classes in files under `pkg/platform/sources/`. It can be obtained from `query.adapter` in plugin events, for example: - -```python - # For example in a plugin - @handler(GroupMessageReceived) - async def _(self, ctx: EventContext): - # Get adapter object - adapter = ctx.query.adapter -``` -::: - -| Platform | Adapter | Access Method | Description | -| --- | --- | --- | --- | -| OneBot v11| aiocqhttp | adapter.bot | bot object corresponds to [aiocqhttp](https://github.com/nonebot/aiocqhttp) CQHttp object, please refer to aiocqhttp documentation for detailed usage | -| QQ Official API | qqofficial | adapter.bot | bot object is the SDK object under libs/qq_official_api, for detailed usage please refer to the `send_group_text_msg` method in `QQOfficialClient` in libs/qq_official_api/api.py for HTTP request methods, please refer to QQ Official API documentation for specific interface documentation | -| WeCom (Enterprise WeChat) | wecom | adapter.bot | Refer to the `send_image` method in `WecomClient` in libs/wecom_api/api.py for HTTP request methods, please refer to WeCom API documentation for specific interface documentation | -| WeChat Official Account | officialaccount | - | Please refer to WeChat Official Account API documentation for interface documentation, credential information can be obtained from adapter.bot | -| Lark | lark | adapter.api_client | Lark SDK's API Client object, please refer to [oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python) for details | -| DingTalk | dingtalk | - | Please refer to DingTalk API documentation, credential information can be obtained from adapter.bot | -| Discord | discord | adapter.bot | bot object is [Rapptz/discord.py](https://github.com/Rapptz/discord.py) Discord object, please refer to documentation for detailed usage | -| Telegram | telegram | adapter.bot | bot object is [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) Telegram object, please refer to documentation for detailed usage | -| Slack | slack | adapter.bot | bot object in libs/slack_api/api.py, please refer to its code and Slack SDK for detailed usage | \ No newline at end of file diff --git a/docs/en/tags/[operationId].md b/docs/en/tags/[operationId].md deleted file mode 100644 index 587c310a1..000000000 --- a/docs/en/tags/[operationId].md +++ /dev/null @@ -1,13 +0,0 @@ ---- -aside: false -outline: [2, 3] -title: Service API ---- - - - - diff --git a/docs/en/tags/[operationId].paths.mts b/docs/en/tags/[operationId].paths.mts deleted file mode 100644 index 1fa0b9cfd..000000000 --- a/docs/en/tags/[operationId].paths.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-en.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getPathsByVerbs() - .filter(item => item && item.operationId) - .map(({ operationId, summary }) => { - return { - params: { - operationId, - pageTitle: `${summary || operationId} - LangBot API`, - }, - } - }) - }, -} diff --git a/docs/en/tags/[tag].md b/docs/en/tags/[tag].md deleted file mode 100644 index c2902a5aa..000000000 --- a/docs/en/tags/[tag].md +++ /dev/null @@ -1,16 +0,0 @@ ---- -aside: false -outline: false -title: Service API ---- - - - - diff --git a/docs/en/tags/[tag].paths.mts b/docs/en/tags/[tag].paths.mts deleted file mode 100644 index 7932baa1b..000000000 --- a/docs/en/tags/[tag].paths.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-en.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getTags() - .map(({ name }) => { - return { - params: { - tag: name, - pageTitle: `${name} - LangBot API`, - }, - } - }) - }, -} diff --git a/docs/en/workshop/302ai-integration.md b/docs/en/workshop/302ai-integration.md deleted file mode 100644 index cffebfde8..000000000 --- a/docs/en/workshop/302ai-integration.md +++ /dev/null @@ -1,5 +0,0 @@ -# Integrating Models with 302 AI - -Open the WebUI page, and select [302 AI](https://share.302.ai/SuTG99) when adding a model. - -![model](/assets/image/zh/workshop/302ai-integration/model.png) \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 8c7b3173f..000000000 --- a/docs/index.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/deploy/knowledge/readme.md b/docs/ja/deploy/knowledge/readme.md deleted file mode 100644 index ceefbbd88..000000000 --- a/docs/ja/deploy/knowledge/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/deploy/models/readme.md b/docs/ja/deploy/models/readme.md deleted file mode 100644 index 79a66f0e6..000000000 --- a/docs/ja/deploy/models/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/deploy/pipelines/readme.md b/docs/ja/deploy/pipelines/readme.md deleted file mode 100644 index d47bcd3e0..000000000 --- a/docs/ja/deploy/pipelines/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/deploy/platforms/readme.md b/docs/ja/deploy/platforms/readme.md deleted file mode 100644 index 71a5b0fca..000000000 --- a/docs/ja/deploy/platforms/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/develop/comp-arch.md b/docs/ja/develop/comp-arch.md deleted file mode 100644 index f9ccb87de..000000000 --- a/docs/ja/develop/comp-arch.md +++ /dev/null @@ -1,3 +0,0 @@ -# コンポーネントアーキテクチャ - -![コンポーネントアーキテクチャ図](/assets/image/zh/develop/comp_arch/develop_comp_arch_1.png) diff --git a/docs/ja/index.md b/docs/ja/index.md deleted file mode 100644 index a7b44606f..000000000 --- a/docs/ja/index.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/ja/plugin/dev/apis/messages.md b/docs/ja/plugin/dev/apis/messages.md deleted file mode 100644 index d60e94da3..000000000 --- a/docs/ja/plugin/dev/apis/messages.md +++ /dev/null @@ -1,96 +0,0 @@ -# メッセージプラットフォームエンティティ - -:::info 目次 -[[toc]] -::: - -LangBotは複数のメッセージングプラットフォームをサポートしており、各プラットフォームには異なる`メッセージエンティティ`フォーマットがあります。これらの違いを抽象化するために、統一された標準を実装しました。プラグイン開発者は、プラグイン内でこのページに記載されているメッセージエンティティを習得して使用するだけで、LangBotの内部メッセージ処理ロジックがメッセージの解析と変換を自動的に処理します。 - -## メッセージチェーン - -メッセージングプラットフォーム上の`メッセージ`は、AI対話に使用されるメッセージとは異なります。メッセージングプラットフォーム上のメッセージは、`メッセージチェーン`の形式で記述されます。QQに表示される各独立したメッセージはメッセージチェーンであり、`テキスト`、`画像`、`@メンション`などのさまざまな`メッセージチェーンコンポーネント`を含むことができます。例えば: - -![](/assets/image/zh/plugin/dev/apis/plugin_dev_messages_01.png) - -これは、1つのPlainコンポーネント(Hello World)と1つのImageコンポーネント(Usagi)を含むメッセージチェーンです。 - -メッセージチェーンとメッセージチェーンコンポーネントの定義は、`langbot_plugin.api.entities.builtin.platform.message`にあります。 - -### メッセージチェーンの構築 - -まず、`langbot_plugin.api.entities.builtin.platform.message`パッケージをインポートして、その中のメッセージコンポーネントを使用してください。 - -```python -from langbot_plugin.api.entities.builtin.platform.message import * - -# テキスト「Hello LangBot」と画像(URLから)を含むメッセージを構築 -msg_chain = MessageChain([ - Plain(text="Hello LangBot"), - Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') -]) - -# @全員とテキスト「Hello LangBot」を含むメッセージを構築 -msg_chain = MessageChain([ - AtAll(), - Plain(text="Hello LangBot") -]) - -# @特定のメンバーとテキスト「Hello LangBot」を含むメッセージを構築 -msg_chain = MessageChain([ - At(target=123456), - Plain(text="Hello LangBot") -]) -``` - -現在サポートされているメッセージチェーンコンポーネント: - -- `Source` - ソースメッセージチェーン情報。メッセージングプラットフォームから受信したメッセージには、メッセージ情報を記録するためにメッセージチェーンの先頭にこのコンポーネントが含まれます -- `Plain` - プレーンテキストメッセージ -- `Quote` - 引用メッセージ -- `Image` - 画像メッセージ -- `AtAll` - @全員メッセージ -- `At` - @特定のメンバーメッセージ -- `Voice` - 音声メッセージ - - メッセージングプラットフォームのサポートを確認する必要があります -- `Forward` - 転送メッセージ - - 多くのプラットフォームでサポートされていないため、推奨されません -- `File` - ファイルメッセージ - -コンポーネントを作成する際は、名前付きパラメータを使用する必要があります。具体的な使用方法については、ソースコード`langbot_plugin.api.entities.builtin.platform.message`の定義を確認してください。 - -## その他のエンティティ - -上記のエンティティに加えて、`Friend`や`Group`などのエンティティもあります。これらのエンティティは`langbot_plugin.api.entities.platform.entities`で定義されています。 - -## 基盤プラットフォームAPIへのアクセス - -:::warning 注意 -4.xには適用されません。 -::: - -プラットフォームの違いを抽象化するために、LangBotはメッセージングプラットフォームAPIの上に抽象化レイヤーを提供しています。これには、上記で説明した内容と、`pkg/platform/sources`ディレクトリ内のさまざまなプラットフォームアダプターが含まれます。 -ただし、プラットフォームの違いが大きいため、抽象化レイヤーのエンティティとAPIのカプセル化は完全ではありません。プラグインがプラットフォーム固有の機能にアクセスする必要がある場合は、次の手順に従って基盤APIにアクセスできます。 - -:::info -ここでの`adapter`は、各アダプターのインスタンス化されたオブジェクトであり、`pkg/platform/sources/`以下のファイル内の`xxxAdapter(adapter.MessagePlatformAdapter)`クラスに対応します。プラグインイベントの`query.adapter`から取得できます。例えば: - -```python - # 例えばプラグイン内で - @handler(GroupMessageReceived) - async def _(self, ctx: EventContext): - # アダプターオブジェクトを取得 - adapter = ctx.query.adapter -``` -::: - -| プラットフォーム | アダプター | アクセス方法 | 説明 | -| --- | --- | --- | --- | -| OneBot v11| aiocqhttp | adapter.bot | botオブジェクトは[aiocqhttp](https://github.com/nonebot/aiocqhttp) CQHttpオブジェクトに対応します。詳細な使用方法についてはaiocqhttpドキュメントを参照してください | -| QQ公式API | qqofficial | adapter.bot | botオブジェクトはlibs/qq_official_api以下のSDKオブジェクトです。詳細な使用方法については、libs/qq_official_api/api.pyの`QQOfficialClient`内の`send_group_text_msg`メソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはQQ公式APIドキュメントを参照してください | -| WeCom(企業微信) | wecom | adapter.bot | libs/wecom_api/api.pyの`WecomClient`内の`send_image`メソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはWeCom APIドキュメントを参照してください | -| WeChat公式アカウント | officialaccount | - | インターフェースドキュメントについてはWeChat公式アカウントAPIドキュメントを参照してください。認証情報はadapter.botから取得できます | -| Lark | lark | adapter.api_client | Lark SDKのAPI Clientオブジェクトです。詳細については[oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python)を参照してください | -| DingTalk | dingtalk | - | DingTalk APIドキュメントを参照してください。認証情報はadapter.botから取得できます | -| Discord | discord | adapter.bot | botオブジェクトは[Rapptz/discord.py](https://github.com/Rapptz/discord.py) Discordオブジェクトです。詳細な使用方法についてはドキュメントを参照してください | -| Telegram | telegram | adapter.bot | botオブジェクトは[python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) Telegramオブジェクトです。詳細な使用方法についてはドキュメントを参照してください | -| Slack | slack | adapter.bot | botオブジェクトはlibs/slack_api/api.py内にあります。詳細な使用方法についてはそのコードとSlack SDKを参照してください | diff --git a/docs/ja/tags/[operationId].md b/docs/ja/tags/[operationId].md deleted file mode 100644 index 587c310a1..000000000 --- a/docs/ja/tags/[operationId].md +++ /dev/null @@ -1,13 +0,0 @@ ---- -aside: false -outline: [2, 3] -title: Service API ---- - - - - diff --git a/docs/ja/tags/[operationId].paths.mts b/docs/ja/tags/[operationId].paths.mts deleted file mode 100644 index 1fa0b9cfd..000000000 --- a/docs/ja/tags/[operationId].paths.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-en.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getPathsByVerbs() - .filter(item => item && item.operationId) - .map(({ operationId, summary }) => { - return { - params: { - operationId, - pageTitle: `${summary || operationId} - LangBot API`, - }, - } - }) - }, -} diff --git a/docs/ja/tags/[tag].md b/docs/ja/tags/[tag].md deleted file mode 100644 index c2902a5aa..000000000 --- a/docs/ja/tags/[tag].md +++ /dev/null @@ -1,16 +0,0 @@ ---- -aside: false -outline: false -title: Service API ---- - - - - diff --git a/docs/ja/tags/[tag].paths.mts b/docs/ja/tags/[tag].paths.mts deleted file mode 100644 index 7932baa1b..000000000 --- a/docs/ja/tags/[tag].paths.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-en.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getTags() - .map(({ name }) => { - return { - params: { - tag: name, - pageTitle: `${name} - LangBot API`, - }, - } - }) - }, -} diff --git a/docs/zh/deploy/knowledge/readme.md b/docs/zh/deploy/knowledge/readme.md deleted file mode 100644 index 1d45eab47..000000000 --- a/docs/zh/deploy/knowledge/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/zh/deploy/langbot/docker.md b/docs/zh/deploy/langbot/docker.md deleted file mode 100644 index 82f7ddf0f..000000000 --- a/docs/zh/deploy/langbot/docker.md +++ /dev/null @@ -1,43 +0,0 @@ -# Docker部署 - -:::warning -建议您先学习以下内容: - - - `Docker` 和 `Docker Compose` 的使用 - - Docker 容器间网络通信配置方式 -::: - -:::info -- 请先确保 Git、 Docker 和 Docker Compose 已安装 -- 推荐使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs) -::: - -Git 克隆本项目: - -```bash -git clone https://github.com/langbot-app/LangBot -cd LangBot/docker -``` - -启动容器: - -```bash -docker compose up -``` - -:::info -- 如果你的主机位于中国大陆,可以把上方命令的`https://github.com/langbot-app/LangBot`改为`https://gitcode.com/RockChinQ/LangBot`以使用国内镜像源。 -- 如果你的主机位于中国大陆,可以考虑把 `docker-compose.yaml` 文件中的镜像名称改为`docker.langbot.app/langbot-public/rockchin/langbot:latest`以使用我们提供的镜像源。 -- 推荐[设置 Docker 容器代理](https://docker.github.net.cn/network/proxy/),以便保证 LangBot 在运行期间的网络访问通畅。 -::: - -首次启动会输出创建配置文件的提示,请继续按照文件配置。 - -容器会映射`5300`端口供 WebUI 使用,您可以访问`http://127.0.0.1:5300`查看 WebUI。 -还会映射`2280-2290`端口供使用 OneBot 协议的消息平台适配器反向连接。 - -完成 LangBot 部署后,请继续阅读: - -- [配置机器人文档](/zh/deploy/platforms/readme)。 -- [配置模型文档](/zh/deploy/models/readme)。 - diff --git a/docs/zh/deploy/models/readme.md b/docs/zh/deploy/models/readme.md deleted file mode 100644 index 6295c0b52..000000000 --- a/docs/zh/deploy/models/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/zh/deploy/pipelines/readme.md b/docs/zh/deploy/pipelines/readme.md deleted file mode 100644 index f695559d3..000000000 --- a/docs/zh/deploy/pipelines/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/zh/deploy/platforms/readme.md b/docs/zh/deploy/platforms/readme.md deleted file mode 100644 index 7f2432a6b..000000000 --- a/docs/zh/deploy/platforms/readme.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/zh/develop/comp-arch.md b/docs/zh/develop/comp-arch.md deleted file mode 100644 index 797a03611..000000000 --- a/docs/zh/develop/comp-arch.md +++ /dev/null @@ -1,3 +0,0 @@ -# 组件架构 - -![组件架构图](/assets/image/zh/develop/comp_arch/develop_comp_arch_1.png) \ No newline at end of file diff --git a/docs/zh/index.md b/docs/zh/index.md deleted file mode 100644 index 8c7b3173f..000000000 --- a/docs/zh/index.md +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/zh/plugin/dev/apis/messages.md b/docs/zh/plugin/dev/apis/messages.md deleted file mode 100644 index 0d26485ff..000000000 --- a/docs/zh/plugin/dev/apis/messages.md +++ /dev/null @@ -1,97 +0,0 @@ -# 消息平台实体 - -:::info 目录 -[[toc]] -::: - -LangBot 支持多种消息平台,每个消息平台的`消息实体`格式均不相同。为了屏蔽这些差异,我们实现了一套统一的标准。插件开发者只需要掌握并在插件中使用此页所述的消息实体,LangBot 内部的消息处理逻辑能够自动完成消息的解析和转换。 - -## 消息链 - -消息平台的`消息`不同于用于 AI 交互的消息,消息平台的消息以`消息链`的形式描述,QQ 上展示的每一个独立的消息就是一条消息链,消息链中可以包含`文字`、`图片`、`@组件`等多种`消息链组件`,例如: - -![](/assets/image/zh/plugin/dev/apis/plugin_dev_messages_01.png) - -这就是一个消息链,包含 一个 Plain 组件(Hello World)和 一个 Image 组件(乌萨奇) - -消息链和消息链组件的定义位于`langbot_plugin.api.entities.builtin.platform.message`中。 - -### 构造消息链 - -请先引入`langbot_plugin.api.entities.builtin.platform.message`包,才能使用其中的消息组件。 - -```python -from langbot_plugin.api.entities.builtin.platform.message import * - -# 构建一个包含文字 Hello LangBot 和图片(从URL获取)的消息 -msg_chain = MessageChain([ - Plain(text="Hello LangBot"), - Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') -]) - -# 构建一个包含 @全体成员 和文字 Hello LangBot 的消息 -msg_chain = MessageChain([ - AtAll(), - Plain(text="Hello LangBot") -]) - -# 构建一个包含 @指定成员 和文字 Hello LangBot 的消息 -msg_chain = MessageChain([ - At(target=123456), - Plain(text="Hello LangBot") -]) -``` - -目前支持的消息链组件: - -- `Source` 源消息链信息,如果是从消息平台收到的消息,都会在消息链最前端包含此组件,记录消息信息 -- `Plain` 纯文本消息 -- `Quote` 引用消息 -- `Image` 图片消息 -- `AtAll` @全体成员消息 -- `At` @指定成员消息 -- `Voice` 语音消息 - - 需要检查消息平台支持性 -- `Forward` 转发消息 - - 在很多平台不受支持,不建议使用 -- `File` 文件消息 - -创建组件时,须使用具名参数传入。具体使用方式可以查看源码`langbot_plugin.api.entities.builtin.platform.message`中的定义。 - -## 其他实体 - -除了上述实体之外,还有`好友 Friend`和`群 Group`等实体,这些实体的定义位于`langbot_plugin.api.entities.platform.entities`中。 - -## 访问消息平台底层 API - -:::warning 注意 -4.x 暂不适用。 -::: - -为了抹平各个平台的差异,LangBot 在消息平台API之上,提供了一个抽象层,即上方所述的内容,以及`pkg/platform/sources`目录下的各个平台适配器。 -但由于各个平台的差异较大,抽象层内的实体和 API 封装并不完整,如果您的插件需要访问特定平台的功能,可以按照以下说明访问底层 API。 - -:::info -其中的`adapter`为每个适配器的实例化对象,对应 `pkg/platform/sources/` 下各个文件中的 `xxxAdapter(adapter.MessagePlatformAdapter)` 类。可以在插件事件的`query.adapter`中取得,例如: - -```python - # 例如在插件中 - @handler(GroupMessageReceived) - async def _(self, ctx: EventContext): - # 取得适配器对象 - adapter = ctx.query.adapter -``` -::: - - -| 平台 | 适配器 | 访问方式 | 说明 | -| --- | --- | --- | --- | -| OneBot v11| aiocqhttp | adapter.bot | bot 对象对应 [aiocqhttp](https://github.com/nonebot/aiocqhttp) 的 CQHttp 对象,详细使用方式请参考 aiocqhttp 文档 | -| QQ 官方API | qqofficial | adapter.bot | bot 对象为 libs/qq_official_api 下的 SDK 对象,详细使用方式可以参考 libs/qq_official_api/api.py 中`QQOfficialClient`中的`send_group_text_msg`方法发起 HTTP 请求的方式,具体接口文档请查看 QQ 官方 API 文档| -| 企业微信 | wecom | adapter.bot | 参考 libs/wecom_api/api.py 中`WecomClient`中的`send_image`方法发起 HTTP 请求的方式,具体接口文档请查看企业微信 API 文档 | -| 微信公众号 | officialaccount | - | 请参考微信公众号的 API 文档中的接口文档信息,相关的凭据信息可以在 adapter.bot 中取得 | -| 飞书 | lark | adapter.api_client | 飞书 SDK 的 API Client 对象,具体请参考[oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python) | -| 钉钉 | dingtalk | - | 请参考钉钉 API 文档,相关的凭据信息可以在 adapter.bot 中取得 | -| Discord | discord | adapter.bot | bot 对象为 [Rapptz/discord.py](https://github.com/Rapptz/discord.py) 的 Discord 对象,详细使用方式请参考文档 | -| Telegram | telegram | adapter.bot | bot 对象为 [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) 的 Telegram 对象,详细使用方式请参考文档 | -| Slack | slack | adapter.bot | bot 对象 libs/slack_api/api.py 中的对象,详细使用方式请参考其代码以及 Slack SDK | \ No newline at end of file diff --git a/docs/zh/tags/[operationId].md b/docs/zh/tags/[operationId].md deleted file mode 100644 index 587c310a1..000000000 --- a/docs/zh/tags/[operationId].md +++ /dev/null @@ -1,13 +0,0 @@ ---- -aside: false -outline: [2, 3] -title: Service API ---- - - - - diff --git a/docs/zh/tags/[operationId].paths.mts b/docs/zh/tags/[operationId].paths.mts deleted file mode 100644 index 580371b2e..000000000 --- a/docs/zh/tags/[operationId].paths.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-zh.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getPathsByVerbs() - .filter(item => item && item.operationId) - .map(({ operationId, summary }) => { - return { - params: { - operationId, - pageTitle: `${summary || operationId} - LangBot API`, - }, - } - }) - }, -} diff --git a/docs/zh/tags/[tag].md b/docs/zh/tags/[tag].md deleted file mode 100644 index 8aac25cfe..000000000 --- a/docs/zh/tags/[tag].md +++ /dev/null @@ -1,16 +0,0 @@ ---- -aside: false -outline: false -title: Service API ---- - - - - \ No newline at end of file diff --git a/docs/zh/tags/[tag].paths.mts b/docs/zh/tags/[tag].paths.mts deleted file mode 100644 index ec4ab08cf..000000000 --- a/docs/zh/tags/[tag].paths.mts +++ /dev/null @@ -1,18 +0,0 @@ -import { usePaths } from 'vitepress-openapi' -import spec from '../../assets/service-api-openapi-zh.json' with { type: 'json' } - -export default { - paths() { - return usePaths({ spec }) - .getTags() - .map(({ name }) => { - return { - params: { - tag: name, - pageTitle: `${name} - LangBot API`, - }, - } - }) - }, -} - diff --git a/docs/zh/workshop/302ai-integration.md b/docs/zh/workshop/302ai-integration.md deleted file mode 100644 index 6ec7dbf47..000000000 --- a/docs/zh/workshop/302ai-integration.md +++ /dev/null @@ -1,6 +0,0 @@ -# 接入 302.AI 的模型 - -打开 WebUI 页面,添加模型时选择[302.AI](https://share.302.ai/SuTG99)即可 - -![model](/assets/image/zh/workshop/302ai-integration/model.png) - diff --git a/docs/en/deploy/command.md b/en/deploy/command.mdx similarity index 76% rename from docs/en/deploy/command.md rename to en/deploy/command.mdx index e8413e83e..89421553d 100644 --- a/docs/en/deploy/command.md +++ b/en/deploy/command.mdx @@ -1,5 +1,7 @@ -# Command +--- +title: "Command" +--- LangBot will regard messages starting with `!` as commands. Official provides [`EssentialCommands` plugin](https://space.langbot.app/market?author=langbot-team&plugin=EssentialCommands), which includes commonly used commands. -You can also develop your own command plugin, please refer to [Command Plugin Development](/en/plugin/dev/components/command.md). \ No newline at end of file +You can also develop your own command plugin, please refer to [Command Plugin Development](/en/plugin/dev/components/command). diff --git a/docs/en/deploy/langbot/docker.md b/en/deploy/langbot/docker.mdx similarity index 58% rename from docs/en/deploy/langbot/docker.md rename to en/deploy/langbot/docker.mdx index 8edc6fea4..421810870 100644 --- a/docs/en/deploy/langbot/docker.md +++ b/en/deploy/langbot/docker.mdx @@ -1,33 +1,35 @@ -# Docker Deployment - -:::warning -It is recommended that you first learn the following: - - - Usage of `Docker` and `Docker Compose` - - Docker container network communication configuration methods -::: - -:::info -- Please ensure Git, Docker, and Docker Compose are installed -::: - -Clone the project: - -```bash -git clone https://github.com/langbot-app/LangBot -cd LangBot/docker -``` - -Start the container: - -```bash -docker compose up -``` - -The container maps port `5300` for WebUI access. You can visit `http://127.0.0.1:5300` to view the WebUI. -It also maps ports `2280-2290` for reserved for message platform adapters. - -After completing the LangBot deployment, please continue reading: - -- [Bot Configuration Documentation](/en/deploy/platforms/readme). -- [Model Configuration Documentation](/en/deploy/models/readme). +--- +title: "Docker Deployment" +--- + + + Before you start, you may learn about in advanced: + + - Usage of `Docker` and `Docker Compose` + - Docker container network communication configuration methods + + + + - Please ensure Git, Docker, and Docker Compose are installed + + +Clone the project: + +```bash +git clone https://github.com/langbot-app/LangBot +cd LangBot/docker +``` + +Start the container: + +```bash +docker compose up +``` + +The container maps port `5300` for WebUI access. You can visit `http://127.0.0.1:5300` to view the WebUI.\ +It also maps ports `2280-2290` for reserved for message platform adapters. + +After completing the LangBot deployment, please continue reading: + +- [Bot Configuration Documentation](/en/deploy/platforms/readme). +- [Model Configuration Documentation](/en/deploy/models/readme). \ No newline at end of file diff --git a/docs/en/deploy/langbot/manual.md b/en/deploy/langbot/manual.mdx similarity index 69% rename from docs/en/deploy/langbot/manual.md rename to en/deploy/langbot/manual.mdx index 483e5ab7e..9c9d144f2 100644 --- a/docs/en/deploy/langbot/manual.md +++ b/en/deploy/langbot/manual.mdx @@ -1,46 +1,43 @@ -# Manual Deployment - -:::warning -1. Please use Python 3.10.1 (not including 3.10.0) or higher version, 3.10.14 is recommended. You need to install Python if you don't have it. -2. This method is not recommended, manual deployment may not be supported in the future. Please consider using Docker deployment. -::: - -## Installing the Main Program - -1. Go to the [Release](https://github.com/langbot-app/LangBot/releases) page to download the latest version of the zip package (recommended) `langbot-xxx-all.zip` (do not download Source Code as it does not include WebUI). Extract it and open a command line (terminal) in the extracted directory. - -![Download Release](/assets/image/zh/deploy/langbot/manual/dl_release.png) - -2. Install dependencies - -We use [uv](https://docs.astral.sh/uv/) to manage dependencies. - -```bash -pip install uv -uv sync -``` - -3. Run the main program once to generate configuration files - -```bash -uv run main.py -``` - -You will see the following message: - -``` - _ ___ _ -| | __ _ _ _ __ _| _ ) ___| |_ -| |__/ _` | ' \/ _` | _ \/ _ \ _| -|____\__,_|_||_\__, |___/\___/\__| - |___/ - -⭐️Open Source: https://github.com/langbot-app/LangBot -📖Documentation: https://docs.langbot.app - -The following files do not exist and have been automatically generated. Please modify the configuration files as needed and restart: -- data/config.yaml -... -``` - -You can now use Ctrl+C to exit the program and continue to the [Deploy Bots](/en/deploy/platforms/readme) page. +--- +title: "Manual Deployment" +--- + +## Installing the Main Program + +1. Go to the [Release](https://github.com/langbot-app/LangBot/releases) page to download the latest version of the zip package (recommended) `langbot-xxx-all.zip` (do not download Source Code as it does not include WebUI). Extract it and open a command line (terminal) in the extracted directory. + +![Download Release](/images/zh/deploy/langbot/manual/dl_release.png) + +2. Install dependencies + +We use [uv](https://docs.astral.sh/uv/) to manage dependencies. + +```bash +pip install uv +uv sync +``` + +3. Run the main program once to generate configuration files + +```bash +uv run main.py +``` + +You will see the following message: + +``` + _ ___ _ +| | __ _ _ _ __ _| _ ) ___| |_ +| |__/ _` | ' \/ _` | _ \/ _ \ _| +|____\__,_|_||_\__, |___/\___/\__| + |___/ + +⭐️Open Source: https://github.com/langbot-app/LangBot +📖Documentation: https://docs.langbot.app + +The following files do not exist and have been automatically generated. Please modify the configuration files as needed and restart: +- data/config.yaml +... +``` + +You can now use Ctrl+C to exit the program and continue to the [Deploy Bots](/en/deploy/platforms/readme) page. \ No newline at end of file diff --git a/docs/en/deploy/langbot/one-click/1panel.md b/en/deploy/langbot/one-click/1panel.mdx similarity index 62% rename from docs/en/deploy/langbot/one-click/1panel.md rename to en/deploy/langbot/one-click/1panel.mdx index 5d3603f88..e35953867 100644 --- a/docs/en/deploy/langbot/one-click/1panel.md +++ b/en/deploy/langbot/one-click/1panel.mdx @@ -1,19 +1,9 @@ -# 1Panel Deployment +--- +title: "1Panel Deployment" +--- Deploy LangBot with one click using [1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot). -:::warning - -Unless you plan to use messaging platforms that do not require additional containers (such as Discord or Lark), or you are familiar with the network connection between Docker containers on 1Panel, it is not recommended to use the one-click deployment of 1Panel. Please consider using [Docker Deployment](/en/deploy/langbot/docker) instead. - -::: - -:::info - -With [Alibaba Cloud](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs), you can get a server for as low as 38 yuan per year, and even enjoy a 20% discount. It is more convenient to install 1Panel with one click. - -::: - ## Install 1Panel > Recommended server systems (from 1Panel): Debian 12, Ubuntu 22, etc. @@ -22,9 +12,7 @@ This article assumes that the server has a public IPv4 address by default. If yo Visit [1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot) and use the Linux panel installation script provided officially by 1Panel. Select the corresponding script according to your operating system. - - -![Install 1Panel](/assets/image/zh/deploy/langbot/one-click/1p_install_01.png) +![Install 1Panel](/images/zh/deploy/langbot/one-click/1p_install_01.png) Copy the corresponding script, paste it into the server, and execute it. @@ -36,23 +24,17 @@ Then copy the `External Address` and open it in a browser. Open the `App Store`, select the `AI` category, and click to install LangBot. - - -![Install LangBot ](/assets/image/zh/deploy/langbot/one-click/1p_langbot_01.png) +![Install LangBot ](/images/zh/deploy/langbot/one-click/1p_langbot_01.png) Check the box for `External Port Access` and click Confirm. - - -![Install LangBot ](/assets/image/zh/deploy/langbot/one-click/1p_langbot_02.png) +![Install LangBot ](/images/zh/deploy/langbot/one-click/1p_langbot_02.png) Wait for a moment, and the installation will be completed. Click `Containers` on the left side, then select the `Containers` category, and you will see the LangBot container bar. - - -![View LangBot Container Information](/assets/image/zh/deploy/langbot/one-click/1p_langbot_03.png) +![View LangBot Container Information](/images/zh/deploy/langbot/one-click/1p_langbot_03.png) Copy the public IP address of the server, for example, `http://xxx.xxx.xxx.xxx:5300` (where xxx.xxx.xxx.xxx is the IP address of the server where 1Panel is located, and 5300 is the port number). diff --git a/docs/en/deploy/langbot/one-click/bt.md b/en/deploy/langbot/one-click/bt.mdx similarity index 73% rename from docs/en/deploy/langbot/one-click/bt.md rename to en/deploy/langbot/one-click/bt.mdx index bc51a4a05..1d459092e 100644 --- a/docs/en/deploy/langbot/one-click/bt.md +++ b/en/deploy/langbot/one-click/bt.mdx @@ -1,53 +1,53 @@ -# aaPanel Deployment - -Deploy LangBot with one click using [aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot). - -:::warning -- Unless you plan to use message platforms like Discord or Feishu that don't require additional containers, or you are familiar with Docker container networking on aaPanel, it's not recommended to use one-click deployment with aaPanel. Please consider using [Docker deployment](/en/deploy/langbot/docker). -- If you already have aaPanel installed, please update to version **9.2.0** or higher -::: - - -## Installing aaPanel - -> Recommended server systems (from aaPanel): Debian 12, Ubuntu 22, etc. -> -> This document assumes you have a server with a public IPv4 address. If you're using a home machine without a public IP, you can access the relevant pages through the internal network mentioned below. - -Open [aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot), use the Linux panel installation script provided by aaPanel official, and select the corresponding script based on your system. - -![Install aaPanel](/assets/image/zh/deploy/langbot/one-click/bt_install_01.png) - -Copy the corresponding script and paste it into your server to execute. - -## Installing LangBot - -After waiting for a while, aaPanel installation will be complete. - -You'll see a message similar to this, copy the external panel address and open it in your browser. - -![aaPanel Access Address](/assets/image/zh/deploy/langbot/one-click/bt_install_02.png) - -When you first open it, you should see a popup for `Recommended Installation Suite`. You can skip this by closing it. - -Then click on `docker` in the sidebar. If it's your first time, you'll be prompted to install Docker and Docker Compose services. Click "Install Now" if prompted, or ignore if already installed. - -Then go to `Docker -> App Store`, search for `LangBot` (note the case sensitivity), click `Install`, and use the default configuration. - -After a short wait, you'll see a container named `langbot_XXXX` showing as `Running`. - -![Create LangBot Container](/assets/image/zh/deploy/langbot/one-click/bt_langbot_01.png) - -Click the red circle in the image above to view the running logs. - -![View LangBot Container Logs](/assets/image/zh/deploy/langbot/one-click/bt_langbot_02.png) - -You can see the external and internal access paths for the WebUI configuration page (visual configuration page). Copy the public address, for example `http://xxx.xxx.xxx.xxx:5300` (where xxx.xxx.xxx.xxx is your aaPanel IP, and 5300 is the port number, which may vary as shown in the image). - -After opening it, enter your admin email and password, then click initialize. - -You can then proceed with configuration in the visual interface. - -If you prefer to directly modify JSON configuration files, you can look at the local mapping directory shown in the image above. Go to the installation directory, where the `data` folder is used to store configuration files, and the `plugins` folder is used for plugin-related files. - -Next, please continue reading the [Deploy Message Platform](/en/deploy/platforms/readme) page. +--- +title: "aaPanel Deployment" +--- + +Deploy LangBot with one click using [aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot). + + + If you already have aaPanel installed, please update to version **9.2.0** or higher + + +## Installing aaPanel + +> Recommended server systems (from aaPanel): Debian 12, Ubuntu 22, etc. +> +> This document assumes you have a server with a public IPv4 address. If you're using a home machine without a public IP, you can access the relevant pages through the internal network mentioned below. + +Open [aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot), use the Linux panel installation script provided by aaPanel official, and select the corresponding script based on your system. + +![Install aaPanel](/images/zh/deploy/langbot/one-click/bt_install_01.png) + +Copy the corresponding script and paste it into your server to execute. + +## Installing LangBot + +After waiting for a while, aaPanel installation will be complete. + +You'll see a message similar to this, copy the external panel address and open it in your browser. + +![aaPanel Access Address](/images/zh/deploy/langbot/one-click/bt_install_02.png) + +When you first open it, you should see a popup for `Recommended Installation Suite`. You can skip this by closing it. + +Then click on `docker` in the sidebar. If it's your first time, you'll be prompted to install Docker and Docker Compose services. Click "Install Now" if prompted, or ignore if already installed. + +Then go to `Docker -> App Store`, search for `LangBot` (note the case sensitivity), click `Install`, and use the default configuration. + +After a short wait, you'll see a container named `langbot_XXXX` showing as `Running`. + +![Create LangBot Container](/images/zh/deploy/langbot/one-click/bt_langbot_01.png) + +Click the red circle in the image above to view the running logs. + +![View LangBot Container Logs](/images/zh/deploy/langbot/one-click/bt_langbot_02.png) + +You can see the external and internal access paths for the WebUI configuration page (visual configuration page). Copy the public address, for example `http://xxx.xxx.xxx.xxx:5300` (where xxx.xxx.xxx.xxx is your aaPanel IP, and 5300 is the port number, which may vary as shown in the image). + +After opening it, enter your admin email and password, then click initialize. + +You can then proceed with configuration in the visual interface. + +If you prefer to directly modify JSON configuration files, you can look at the local mapping directory shown in the image above. Go to the installation directory, where the `data` folder is used to store configuration files, and the `plugins` folder is used for plugin-related files. + +Next, please continue reading the [Deploy Message Platform](/en/deploy/platforms/readme) page. \ No newline at end of file diff --git a/docs/en/deploy/langbot/package.md b/en/deploy/langbot/package.mdx similarity index 79% rename from docs/en/deploy/langbot/package.md rename to en/deploy/langbot/package.mdx index d660a2b9d..c9faa42e9 100644 --- a/docs/en/deploy/langbot/package.md +++ b/en/deploy/langbot/package.mdx @@ -1,8 +1,10 @@ -# Deploy with Package Manager +--- +title: "Deploy with Package Manager" +--- -:::info + Supports Windows, Linux, Mac OS, etc. Recommended for testing environments and personal use scenarios; production-level environments please use [Docker Deployment](/en/deploy/langbot/docker.html). -::: + LangBot is packaged and released to PyPI. Please install [uv](https://docs.astral.sh/uv/getting-started/installation/), and then run the following command in an empty directory: @@ -10,4 +12,4 @@ LangBot is packaged and released to PyPI. Please install [uv](https://docs.astra uvx langbot@latest ``` -This will set the current directory as the working directory, and you can access `http://localhost:5300` to start using it. \ No newline at end of file +This will set the current directory as the working directory, and you can access `http://localhost:5300` to start using it. diff --git a/docs/en/deploy/settings.md b/en/deploy/settings.mdx similarity index 99% rename from docs/en/deploy/settings.md rename to en/deploy/settings.mdx index 1ae5effa7..9334ba27b 100644 --- a/docs/en/deploy/settings.md +++ b/en/deploy/settings.mdx @@ -1,4 +1,6 @@ -# System Environment Settings +--- +title: "System Environment Settings" +--- Configure some environment information for system operation, located in the `data/config.yaml` file. Generally, no modification is needed. diff --git a/docs/en/deploy/update.md b/en/deploy/update.mdx similarity index 95% rename from docs/en/deploy/update.md rename to en/deploy/update.mdx index fe40e1ea4..36a41880f 100644 --- a/docs/en/deploy/update.md +++ b/en/deploy/update.mdx @@ -1,4 +1,6 @@ -# Update LangBot +--- +title: "Update LangBot" +--- ## Using Package Manager @@ -26,9 +28,9 @@ docker compose up --force-recreate --pull always -d This command will pull the latest LangBot image and rebuild the container. -:::info + 4.3.0 version changed the content and location of the `docker-compose.yaml` file, if you updated from a previous version, please [redploy according to the documentation](/en/deploy/langbot/docker). -::: + ## Manual Deployment diff --git a/en/develop/comp-arch.mdx b/en/develop/comp-arch.mdx new file mode 100644 index 000000000..ae94779a8 --- /dev/null +++ b/en/develop/comp-arch.mdx @@ -0,0 +1,5 @@ +--- +title: "Component Architecture" +--- + +![Component Architecture Diagram](/images/zh/develop/comp_arch/develop_comp_arch_1.png) diff --git a/docs/en/develop/dev-config.md b/en/develop/dev-config.mdx similarity index 86% rename from docs/en/develop/dev-config.md rename to en/develop/dev-config.mdx index ae9f8f85f..4b9ce3547 100644 --- a/docs/en/develop/dev-config.md +++ b/en/develop/dev-config.mdx @@ -1,4 +1,6 @@ -# Development Configuration +--- +title: "Development Configuration" +--- LangBot is divided into frontend and backend. The frontend is developed using Next.js + shadcn, and the backend is developed using Quart (an asynchronous version of Flask). @@ -52,11 +54,10 @@ npm run dev Then according to the output information, visit `http://127.0.0.1:3000` to view the standalone frontend page. -:::info -When using `pnpm dev` to start locally, the environment variable `NEXT_PUBLIC_API_BASE_URL` will be automatically used by the frontend to ensure that the frontend can access the `5300` port of the locally running backend. + In production environments, the frontend will be precompiled into static files and provided by the backend, and the frontend will automatically access the backend address on the same domain. -::: + ## Code Formatting diff --git a/docs/en/develop/plugin-runtime.md b/en/develop/plugin-runtime.mdx similarity index 91% rename from docs/en/develop/plugin-runtime.md rename to en/develop/plugin-runtime.mdx index a7cad71bc..bef150759 100644 --- a/docs/en/develop/plugin-runtime.md +++ b/en/develop/plugin-runtime.mdx @@ -1,10 +1,10 @@ -# Debugging Plugin Runtime, CLI, SDK +--- +title: "Debugging Plugin Runtime, CLI, SDK" +--- -::: info -Please read the [Plugin Tutorial](/en/plugin/plugin-intro) first to understand the plugin system. - -- Plugin Runtime, CLI, SDK are open sourced at: https://github.com/langbot-app/langbot-plugin-sdk -::: + + Plugin Runtime, CLI, SDK are open sourced at: https://github.com/langbot-app/langbot-plugin-sdk + Clone the plugin runtime source code: @@ -52,7 +52,7 @@ plugin: runtime_ws_url: ws://localhost:5400/control/ws ``` -And add the startup parameter `--standalone-runtime` when starting the LangBot main program (e.g., `uv run main.py --standalone-runtime`). +And add the startup parameter `--standalone-runtime` when starting the LangBot main program (e.g., `uv run main.py --standalone-runtime`).\ Restart LangBot, and it will connect to this runtime using WebSocket. ## langbot-plugin-sdk Architecture diff --git a/docs/en/insight/community.md b/en/insight/community.mdx similarity index 88% rename from docs/en/insight/community.md rename to en/insight/community.mdx index eecdf60a7..ee86eae20 100644 --- a/docs/en/insight/community.md +++ b/en/insight/community.mdx @@ -1,4 +1,6 @@ -# Community Resources +--- +title: "Community Resources" +--- ## Simplified Tutorials @@ -8,4 +10,4 @@ Collected at: https://blog.thelazy.top/tags/langbot ## 🥰 Community -Join our community on Discord: [![Discord](https://img.shields.io/discord/1335141740050649118?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb)](https://discord.gg/wdNEHETs87) \ No newline at end of file +Join our community on Discord: [![Discord](https://img.shields.io/discord/1335141740050649118?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb)](https://discord.gg/wdNEHETs87) diff --git a/docs/en/insight/features.md b/en/insight/features.mdx similarity index 90% rename from docs/en/insight/features.md rename to en/insight/features.mdx index 8b90fb5ee..1dcc0a4d1 100644 --- a/docs/en/insight/features.md +++ b/en/insight/features.mdx @@ -1,4 +1,6 @@ -# Features +--- +title: "Features" +--- LangBot is an open-source LLM native instant messaging robot development platform, aiming to provide an out-of-the-box IM robot development experience, with Agent, RAG, MCP and other LLM application functions, supporting global instant messaging platforms, and providing rich API interfaces, supporting custom development. @@ -69,15 +71,14 @@ For platform-specific feature support, please check [this document](/en/insight/ ## Case Screenshots -![bot_page](/assets/image/zh/insight/features/bot-page.png) +![bot_page](/images/zh/insight/features/bot-page.png) -![create_model](/assets/image/zh/insight/features/create-model.png) +![create_model](/images/zh/insight/features/create-model.png) -![edit_pipeline](/assets/image/zh/insight/features/edit-pipeline.png) +![edit_pipeline](/images/zh/insight/features/edit-pipeline.png) -![plugin_market](/assets/image/zh/insight/features/plugin-market.png) +![plugin_market](/images/zh/insight/features/plugin-market.png) -![private_chat](/assets/image/zh/insight/private_chat.png) - -![group_chat](/assets/image/zh/insight/group_chat.png) +![private_chat](/images/zh/insight/private_chat.png) +![group_chat](/images/zh/insight/group_chat.png) diff --git a/docs/en/insight/guide.md b/en/insight/guide.mdx similarity index 96% rename from docs/en/insight/guide.md rename to en/insight/guide.mdx index e58b15e6b..1b934ab8c 100644 --- a/docs/en/insight/guide.md +++ b/en/insight/guide.mdx @@ -1,4 +1,6 @@ -# Welcome to LangBot Documentation +--- +title: "Welcome to LangBot Documentation" +--- LangBot is an open-source Large Language Model (LLM) native instant messaging bot platform that supports multiple messaging platforms and model providers. It provides support for LLMOps platforms such as Dify. It also offers a WebUI for users to quickly deploy and use. @@ -34,6 +36,6 @@ Check [Configure Bots](/en/deploy/platforms/readme) in the left sidebar Check [Configure Dialogue Models](/en/deploy/models/readme) in the left sidebar -
+
After completing the above two steps, you can start using LangBot. If you need to configure more features, you can set them in the [Pipeline](/en/deploy/pipelines/readme) section diff --git a/docs/en/insight/platform-features.md b/en/insight/platform-features.mdx similarity index 99% rename from docs/en/insight/platform-features.md rename to en/insight/platform-features.mdx index fb40af93f..a0c9ca95a 100644 --- a/docs/en/insight/platform-features.md +++ b/en/insight/platform-features.mdx @@ -1,4 +1,6 @@ -# Platform Feature Support +--- +title: "Platform Feature Support" +--- The following is a list of features we have implemented and tested for each platform. If you encounter unexpected behavior, please feel free to report it to [GitHub Issues](https://github.com/langbot-app/LangBot/issues) or directly submit a Pull Request to help fix it. diff --git a/docs/en/plugin/compatibility.md b/en/plugin/compatibility.mdx similarity index 95% rename from docs/en/plugin/compatibility.md rename to en/plugin/compatibility.mdx index be7bde856..b7a73058a 100644 --- a/docs/en/plugin/compatibility.md +++ b/en/plugin/compatibility.mdx @@ -1,4 +1,6 @@ -# System Compatibility +--- +title: "System Compatibility" +--- LangBot's plugin system utilizes mechanisms such as `Asyncio` and `Subprocess`, which work well on Unix-like systems (such as Linux, macOS), but have some issues on Windows, preventing plugins from running properly. @@ -12,4 +14,4 @@ For detailed information about these issues, please refer to: [Python Official D Unlike the tight coupling between subprocess management and Stdio communication on Unix-like systems, LangBot and the Plugin Runtime automatically switch to a hybrid subprocess + WebSocket communication strategy on Windows. LangBot still launches the Plugin Runtime via a subprocess, but communicates with it over WebSocket; similarly, the Plugin Runtime starts each installed plugin via subprocesses while communicating with them through WebSocket. -This behavior is automatically selected based on the OS, so no manual configuration is required. \ No newline at end of file +This behavior is automatically selected based on the OS, so no manual configuration is required. diff --git a/docs/en/plugin/dev/apis/common.md b/en/plugin/dev/apis/common.mdx similarity index 97% rename from docs/en/plugin/dev/apis/common.md rename to en/plugin/dev/apis/common.mdx index 68eb2622a..f820d7c08 100644 --- a/docs/en/plugin/dev/apis/common.md +++ b/en/plugin/dev/apis/common.mdx @@ -1,11 +1,9 @@ -# Plugin Common APIs +--- +title: "Plugin Common APIs" +--- LangBot provides a series of APIs for plugins to operate various LangBot modules and control message contexts. -:::info Table of Contents -[[toc]] -::: - ## Request API Operations for the currently processing user request (message). Only available in `EventListener` and `Command` components. Access methods: @@ -309,4 +307,4 @@ async def get_config_file(self, file_key: str) -> bytes: file_bytes = await self.plugin.get_config_file("key") ``` -Use this in conjunction with configuration fields of type [`file` or `array[file`](/en/plugin/dev/basic-info.html#type-file). +Use this in conjunction with configuration fields of type [``file or array[file``](/en/plugin/dev/basic-info.html#type-file). \ No newline at end of file diff --git a/en/plugin/dev/apis/messages.mdx b/en/plugin/dev/apis/messages.mdx new file mode 100644 index 000000000..eadf571c6 --- /dev/null +++ b/en/plugin/dev/apis/messages.mdx @@ -0,0 +1,91 @@ +--- +title: "Message Platform Entities" +--- + +LangBot supports multiple messaging platforms, and each platform has different `message entity` formats. To abstract away these differences, we have implemented a unified standard. Plugin developers only need to master and use the message entities described on this page in plugins, and LangBot's internal message processing logic can automatically handle message parsing and conversion. + +## Message Chain + +`Messages` on messaging platforms are different from messages used for AI interaction. Messages on messaging platforms are described in the form of `message chains`. Each independent message displayed on QQ is a message chain, which can contain various `message chain components` such as `text`, `images`, `@mentions`, etc. For example: + +![](/images/zh/plugin/dev/apis/plugin_dev_messages_01.png) + +This is a message chain containing one Plain component (Hello World) and one Image component (Usagi). + +The definitions of message chains and message chain components are located in `langbot_plugin.api.entities.builtin.platform.message`. + +### Constructing Message Chains + +Please first import the `langbot_plugin.api.entities.builtin.platform.message` package to use the message components within it. + +```python +from langbot_plugin.api.entities.builtin.platform.message import * + +# Build a message containing text "Hello LangBot" and an image (from URL) +msg_chain = MessageChain([ + Plain(text="Hello LangBot"), + Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') +]) + +# Build a message containing @everyone and text "Hello LangBot" +msg_chain = MessageChain([ + AtAll(), + Plain(text="Hello LangBot") +]) + +# Build a message containing @specific member and text "Hello LangBot" +msg_chain = MessageChain([ + At(target=123456), + Plain(text="Hello LangBot") +]) +``` + +Currently supported message chain components: + +- `Source` - Source message chain information. Messages received from messaging platforms will include this component at the front of the message chain to record message information +- `Plain` - Plain text message +- `Quote` - Quote message +- `Image` - Image message +- `AtAll` - @everyone message +- `At` - @specific member message +- `Voice` - Voice message + - Need to check messaging platform support +- `Forward` - Forward message + - Not supported on many platforms, not recommended +- `File` - File message + +When creating components, named parameters must be used. For specific usage, you can check the definitions in the source code `langbot_plugin.api.entities.builtin.platform.message`. + +## Other Entities + +In addition to the above entities, there are also entities like `Friend` and `Group`. These entities are defined in `langbot_plugin.api.entities.platform.entities`. + +## Accessing Underlying Platform APIs + + + Not applicable for 4.x. + + +To abstract away platform differences, LangBot provides an abstraction layer above messaging platform APIs, which includes the content described above and various platform adapters in the `pkg/platform/sources` directory. However, due to significant platform differences, the entity and API encapsulation in the abstraction layer is not complete. If your plugin needs to access platform-specific functionality, you can access underlying APIs according to the following instructions. + + + ```python + # For example in a plugin + @handler(GroupMessageReceived) + async def _(self, ctx: EventContext): + # Get adapter object + adapter = ctx.query.adapter + ``` + + +| Platform | Adapter | Access Method | Description | +| ------------------------- | --------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OneBot v11 | aiocqhttp | adapter.bot | bot object corresponds to [aiocqhttp](https://github.com/nonebot/aiocqhttp) CQHttp object, please refer to aiocqhttp documentation for detailed usage | +| QQ Official API | qqofficial | adapter.bot | bot object is the SDK object under libs/qq_official_api, for detailed usage please refer to the `send_group_text_msg` method in `QQOfficialClient` in libs/qq_official_api/api.py for HTTP request methods, please refer to QQ Official API documentation for specific interface documentation | +| WeCom (Enterprise WeChat) | wecom | adapter.bot | Refer to the `send_image` method in `WecomClient` in libs/wecom_api/api.py for HTTP request methods, please refer to WeCom API documentation for specific interface documentation | +| WeChat Official Account | officialaccount | - | Please refer to WeChat Official Account API documentation for interface documentation, credential information can be obtained from adapter.bot | +| Lark | lark | adapter.api_client | Lark SDK's API Client object, please refer to [oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python) for details | +| DingTalk | dingtalk | - | Please refer to DingTalk API documentation, credential information can be obtained from adapter.bot | +| Discord | discord | adapter.bot | bot object is [Rapptz/discord.py](https://github.com/Rapptz/discord.py) Discord object, please refer to documentation for detailed usage | +| Telegram | telegram | adapter.bot | bot object is [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) Telegram object, please refer to documentation for detailed usage | +| Slack | slack | adapter.bot | bot object in libs/slack_api/api.py, please refer to its code and Slack SDK for detailed usage | \ No newline at end of file diff --git a/docs/en/plugin/dev/apis/pipeline-events.md b/en/plugin/dev/apis/pipeline-events.mdx similarity index 94% rename from docs/en/plugin/dev/apis/pipeline-events.md rename to en/plugin/dev/apis/pipeline-events.mdx index 53262f3e1..ceaf5942c 100644 --- a/docs/en/plugin/dev/apis/pipeline-events.md +++ b/en/plugin/dev/apis/pipeline-events.mdx @@ -1,8 +1,6 @@ -# Pipeline Events and APIs - -:::info Table of Contents -[[toc]] -::: +--- +title: "Pipeline Events and APIs" +--- LangBot plugins can register and handle pipeline events. For usage instructions, see [Component: Event Listener](/en/plugin/dev/components/event-listener). @@ -10,7 +8,7 @@ LangBot plugins can register and handle pipeline events. For usage instructions, Some events have `settable attributes`, which can be modified by plugin code and used in subsequent LangBot processing. -### *MessageReceived +### \*MessageReceived Triggered when any message is received in group chat or private chat. @@ -61,7 +59,7 @@ class GroupMessageReceived(BaseEventModel): """Message chain""" ``` -### *NormalMessageReceived +### \*NormalMessageReceived Triggered when a group chat or private chat message is received and determined to be a message that needs to be processed by LLM (non-command message). @@ -134,11 +132,11 @@ class GroupNormalMessageReceived(BaseEventModel): """Direct reply message chain, only effective when preventing default behavior""" ``` -### *CommandSent +### \*CommandSent -:::warning Note -No longer recommended for use, please use [Component: Command](/en/plugin/dev/components/command) instead. -::: + + No longer recommended for use, please use [Component: Command](/en/plugin/dev/components/command) instead. + Triggered when a group chat or private chat command is received. @@ -189,7 +187,6 @@ class GroupCommandSent(BaseEventModel): is_admin: bool """Whether it's an administrator""" - ``` ### NormalMessageResponded @@ -288,18 +285,15 @@ event_context.prevent_default() Calling this method will prevent the default subsequent behavior of this event, and the pipeline will end directly. -:::info -Only the following events can prevent default behavior: - -- PersonMessageReceived -- GroupMessageReceived -- PersonNormalMessageReceived -- GroupNormalMessageReceived -- PersonCommandSent -- GroupCommandSent -- NormalMessageResponded - -::: + + - PersonMessageReceived + - GroupMessageReceived + - PersonNormalMessageReceived + - GroupNormalMessageReceived + - PersonCommandSent + - GroupCommandSent + - NormalMessageResponded + ### Prevent Postorder Execution @@ -311,4 +305,4 @@ def prevent_postorder(self): event_context.prevent_postorder() ``` -Calling this method will prevent the subsequent plugins from executing this time. +Calling this method will prevent the subsequent plugins from executing this time. \ No newline at end of file diff --git a/docs/en/plugin/dev/apis/tech-details.md b/en/plugin/dev/apis/tech-details.mdx similarity index 82% rename from docs/en/plugin/dev/apis/tech-details.md rename to en/plugin/dev/apis/tech-details.mdx index 82b417d2e..8170205d8 100644 --- a/docs/en/plugin/dev/apis/tech-details.md +++ b/en/plugin/dev/apis/tech-details.mdx @@ -1,11 +1,13 @@ -# Plugin Technical Details +--- +title: "Plugin Technical Details" +--- ## Architecture - + In version 4.0, we introduced a high-security, high-flexibility production-grade plugin system and provided developers with rich APIs and easy-to-use supporting tools. Plugin Runtime is used to manage plugin lifecycles and coordinate interactions between LangBot and plugins. It has two operating modes: `stdio` and `websocket`. When LangBot is started directly by users (not running in a container), it uses `stdio` mode, which is common for personal users or lightweight environments. When LangBot runs in a container, it uses `websocket` mode, designed specifically for production environments. -Plugin Runtime automatically starts each installed plugin and interacts through stdio. In plugin development scenarios, developers can use the `lbp` command-line tool to start plugins and connect to the running Runtime via WebSocket for debugging. \ No newline at end of file +Plugin Runtime automatically starts each installed plugin and interacts through stdio. In plugin development scenarios, developers can use the `lbp` command-line tool to start plugins and connect to the running Runtime via WebSocket for debugging. diff --git a/docs/en/plugin/dev/basic-info.md b/en/plugin/dev/basic-info.mdx similarity index 96% rename from docs/en/plugin/dev/basic-info.md rename to en/plugin/dev/basic-info.mdx index 094f2edff..a8b7dcc4f 100644 --- a/docs/en/plugin/dev/basic-info.md +++ b/en/plugin/dev/basic-info.mdx @@ -1,8 +1,6 @@ -# Completing Plugin Configuration Information - -:::info Table of Contents -[[toc]] -::: +--- +title: "Completing Plugin Configuration Information" +--- ## Modifying the Manifest File @@ -180,9 +178,9 @@ print(file_config) file_bytes = await self.get_config_file(file_key) ``` -::: info -Common MIME type and file extension reference: [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) -::: + + Common MIME type and file extension reference: [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) + ### type: array[file] diff --git a/docs/en/plugin/dev/components/add.md b/en/plugin/dev/components/add.mdx similarity index 84% rename from docs/en/plugin/dev/components/add.md rename to en/plugin/dev/components/add.mdx index 327c03371..79bb15179 100644 --- a/docs/en/plugin/dev/components/add.md +++ b/en/plugin/dev/components/add.mdx @@ -1,4 +1,6 @@ -# Adding Components +--- +title: "Adding Components" +--- Plugins consist of one or more components that provide different functionalities to LangBot. Currently supported component types include: @@ -31,8 +33,7 @@ Component EventListener generated successfully. ➜ HelloPlugin > ``` -:::info -The CLI will generate a `components` directory in the plugin directory and create corresponding component directories within it. + ``` . @@ -61,13 +62,13 @@ components: ... ``` To remove components, you can delete the corresponding information manually. -::: + ## Component Types For detailed usage of each component, please refer to: -- [EventListener](./event-listener.md) -- [Command](./command.md) -- [Tool](./tool.md) -- [KnowledgeRetriever](./knowledge-retriever.md) \ No newline at end of file +- [EventListener](./event-listener) +- [Command](./command) +- [Tool](./tool) +- [KnowledgeRetriever](./knowledge-retriever) diff --git a/docs/en/plugin/dev/components/command.md b/en/plugin/dev/components/command.mdx similarity index 93% rename from docs/en/plugin/dev/components/command.md rename to en/plugin/dev/components/command.mdx index 1f22c9815..4a21cfff6 100644 --- a/docs/en/plugin/dev/components/command.md +++ b/en/plugin/dev/components/command.mdx @@ -1,8 +1,10 @@ -# Component: Command +--- +title: "Component: Command" +--- Command components are triggered by user command messages starting with `!` (or other configured prefixes). Here's an example of triggering the `!help` command: - + ## Adding Command Components @@ -53,7 +55,7 @@ execution: ## Plugin Processing -The following code is generated by default (components/command/.py). You need to register and implement subcommand processing logic in the `initialize` method of the `Info` class. +The following code is generated by default (`components/command/.py`). You need to register and implement subcommand processing logic in the `initialize` method of the `Info` class. ```python # Auto generated by LangBot Plugin SDK. @@ -136,7 +138,7 @@ In subcommand functions, you can read command parameters through the `context` v The effect of the above command is shown in the image: - + ### Command Context @@ -209,4 +211,4 @@ For specific return values, please refer to the definition of `CommandReturn`: [ You have learned the basic information about command registration and command execution. Next, you can: -- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) \ No newline at end of file +- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) diff --git a/docs/en/plugin/dev/components/event-listener.md b/en/plugin/dev/components/event-listener.mdx similarity index 97% rename from docs/en/plugin/dev/components/event-listener.md rename to en/plugin/dev/components/event-listener.mdx index 5acda0d7d..ce616cf33 100644 --- a/docs/en/plugin/dev/components/event-listener.md +++ b/en/plugin/dev/components/event-listener.mdx @@ -1,4 +1,6 @@ -# Component: Event Listener +--- +title: "Component: Event Listener" +--- LangBot's pipeline generates events during runtime for plugins to hook into and process. Each plugin can only have one event listener (components/event_listener/default.yaml), but can register any number of events within it. @@ -98,4 +100,4 @@ Event registration is implemented through the `@self.handler` decorator, with th You have learned the basic information about event listeners. Next, you can: - Check the `List of Monitorable Events` and `Event Context APIs` in the documentation [Pipeline Events](/en/plugin/dev/apis/pipeline-events) -- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) \ No newline at end of file +- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) diff --git a/docs/en/plugin/dev/components/knowledge-retriever.md b/en/plugin/dev/components/knowledge-retriever.mdx similarity index 94% rename from docs/en/plugin/dev/components/knowledge-retriever.md rename to en/plugin/dev/components/knowledge-retriever.mdx index 5a5bc74b1..fe90d32a8 100644 --- a/docs/en/plugin/dev/components/knowledge-retriever.md +++ b/en/plugin/dev/components/knowledge-retriever.mdx @@ -1,8 +1,10 @@ -# Component: Knowledge Retriever +--- +title: "Component: Knowledge Retriever" +--- The Knowledge Retriever component allows plugins to provide external knowledge base retrieval capabilities for LangBot. When users create an external knowledge base in LangBot, they can choose a knowledge retriever provided by a plugin to retrieve knowledge. - + ## Adding a Knowledge Retriever Component @@ -116,7 +118,7 @@ For configuration item format reference, see: [Plugin Manifest Configuration For ## Plugin Handler -The following code will be generated by default (components/knowledge_retriever/.py). You need to implement the knowledge retrieval logic in the `retrieve` method of the `FastGPT` class. Complete code can be found in [langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo). +The following code will be generated by default (`components/knowledge_retriever/.py`). You need to implement the knowledge retrieval logic in the `retrieve` method of the `FastGPT` class. Complete code can be found in [langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo). ```python # Auto generated by LangBot Plugin SDK. @@ -259,6 +261,6 @@ After creation, execute the command `lbp run` in the plugin directory to start d 2. Add an external knowledge base 3. Select the knowledge retriever provided by your plugin and fill in the configuration - + After saving, you can select this knowledge base in the LangBot pipeline. diff --git a/docs/en/plugin/dev/components/tool.md b/en/plugin/dev/components/tool.mdx similarity index 93% rename from docs/en/plugin/dev/components/tool.md rename to en/plugin/dev/components/tool.mdx index 305c6ef09..55b4c82e2 100644 --- a/docs/en/plugin/dev/components/tool.md +++ b/en/plugin/dev/components/tool.mdx @@ -1,4 +1,6 @@ -# Component: Tool +--- +title: "Component: Tool" +--- LangBot's built-in Local Agent calls tools to interact with the outside world during execution. Currently, adding tools is supported through both plugins and MCP. @@ -53,7 +55,7 @@ execution: ## Plugin Processing -The following code is generated by default (components/tools/.py). You need to implement the calling and return logic for this tool in the `call` method of the `GetWeatherAlerts` class. +The following code is generated by default (`components/tools/.py`). You need to implement the calling and return logic for this tool in the `call` method of the `GetWeatherAlerts` class. ```python # Auto generated by LangBot Plugin SDK. @@ -75,9 +77,9 @@ class GetWeatherAlerts(Tool): In the `call` method, implement this tool: -:::info + The weather retrieval tool example comes from MCP's [Server Writing Example](https://modelcontextprotocol.io/quickstart/server). -::: + ```python from __future__ import annotations @@ -165,10 +167,10 @@ httpx Now execute the command `lbp run` in the plugin directory to start debugging. Configure a model that supports tool calling in LangBot and select to use that model on the corresponding pipeline to use this tool. - + ## What's Next You have learned the basic usage of tools. Next, you can: -- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) \ No newline at end of file +- Check out [Plugin Common APIs](/en/plugin/dev/apis/common) diff --git a/docs/en/plugin/dev/directory-structure.md b/en/plugin/dev/directory-structure.mdx similarity index 89% rename from docs/en/plugin/dev/directory-structure.md rename to en/plugin/dev/directory-structure.mdx index 7fb528f3e..78e448afc 100644 --- a/docs/en/plugin/dev/directory-structure.md +++ b/en/plugin/dev/directory-structure.mdx @@ -1,8 +1,6 @@ -# Plugin Directory Structure - -:::info Table of Contents -[[toc]] -::: +--- +title: "Plugin Directory Structure" +--- This document introduces the standard directory structure and file organization specifications for LangBot plugins, helping developers create compliant plugins. @@ -38,12 +36,11 @@ LangBot plugins support multilingual README documentation to provide localized p **Important Specifications:** -1. **Root `README.md` (Required)** +1. **`Root README.md (Required)`** - Must be written in **English** - Serves as the plugin's default documentation - Used as fallback when requested language version doesn't exist - -2. **`readme/` Directory (Optional)** +2. **`readme/ Directory (Optional)`** - Used to store **non-English** README documents - File naming format: `README_{language_code}.md` @@ -51,12 +48,12 @@ LangBot plugins support multilingual README documentation to provide localized p According to [RFC 4646](https://datatracker.ietf.org/doc/html/rfc4646) standard, LangBot currently supports the following language codes: -| Language | Language Code | Filename | Location | -|----------|---------------|----------|----------| -| English | `en` or `en_US` | `README.md` | **Plugin root directory** | -| Simplified Chinese | `zh_Hans` | `README_zh_Hans.md` | `readme/` directory | -| Traditional Chinese | `zh_Hant` | `README_zh_Hant.md` | `readme/` directory | -| Japanese | `ja_JP` | `README_ja_JP.md` | `readme/` directory | +| Language | Language Code | Filename | Location | +| ------------------- | --------------- | ------------------- | ------------------------- | +| English | `en` or `en_US` | `README.md` | **Plugin root directory** | +| Simplified Chinese | `zh_Hans` | `README_zh_Hans.md` | `readme/` directory | +| Traditional Chinese | `zh_Hant` | `README_zh_Hant.md` | `readme/` directory | +| Japanese | `ja_JP` | `README_ja_JP.md` | `readme/` directory | ### Example Directory Structure @@ -102,7 +99,6 @@ When a user requests a README in a specific language, LangBot will search in the - User requests Simplified Chinese (`zh_Hans`) - → Look for `readme/README_zh_Hans.md` - → If not found, return `README.md` (English version) - - User requests Japanese (`ja_JP`) - → Look for `readme/README_ja_JP.md` - → If not found, return `README.md` (English version) @@ -188,4 +184,4 @@ pillow>=9.0.0 - [Basic Tutorial](/en/plugin/dev/tutor) - Learn how to create your first plugin - [Complete Plugin Configuration Information](/en/plugin/dev/basic-info) - Configure manifest.yaml - [Adding Components](/en/plugin/dev/components/add) - Develop plugin components -- [Publish to Marketplace](/en/plugin/dev/publish/market) - Distribute your plugin +- [Publish to Marketplace](/en/plugin/dev/publish/market) - Distribute your plugin \ No newline at end of file diff --git a/docs/en/plugin/dev/migration.md b/en/plugin/dev/migration.mdx similarity index 92% rename from docs/en/plugin/dev/migration.md rename to en/plugin/dev/migration.mdx index 5fa7879a1..488e14757 100644 --- a/docs/en/plugin/dev/migration.md +++ b/en/plugin/dev/migration.mdx @@ -1,14 +1,15 @@ -# Migration Guide +--- +title: "Migration Guide" +--- This tutorial highlights certain considerations. Please read the current version plugin tutorial first, then use this document as a reference for plugin migration. ## Migrating from 3.x Supported Asynchronous Plugins -:::info -Plugin characteristics: + - Main time period: 2024.2 ~ 2025.8 - Registration method: Using `@handler` decorators to register event listeners and `@llm_func` decorators to register content functions (tools) in the plugin class in `main.py`; all handler functions are asynchronous functions (async def) -::: + - Plugin and component registration method: Changed from the previous single plugin class decorator registration method to manifest file registration method. See [Manifest File](/en/plugin/dev/basic-info); and separated different types of components independently. For details, see [Adding Components](/en/plugin/dev/components/add). - Message chain entities: Now refactored. The construction method of each message chain element now requires explicit passing of **named parameters**. See [Message Platform Entities](/en/plugin/dev/apis/messages). @@ -17,11 +18,10 @@ Plugin characteristics: ## Migrating from 2.x and 3.x Supported Synchronous Plugins -:::info -Plugin characteristics: + - Main time period: 2023.1 ~ 2024.2 - Registration method: Using `@on` decorators to register event listeners and `@func` decorators to register content functions (tools) in the plugin class in `main.py`; all handler functions are synchronous functions (def) -::: + - Synchronous to asynchronous: Plugin runtime has now changed to fully asynchronous (based on asyncio). Please change all plugin code involving IO operations to asynchronous writing. -- For detailed content, please refer to the above 3.x asynchronous plugin migration guide. \ No newline at end of file +- For detailed content, please refer to the above 3.x asynchronous plugin migration guide. diff --git a/docs/en/plugin/dev/publish/github.md b/en/plugin/dev/publish/github.mdx similarity index 83% rename from docs/en/plugin/dev/publish/github.md rename to en/plugin/dev/publish/github.mdx index fcfe58d49..7b54e93c2 100644 --- a/docs/en/plugin/dev/publish/github.md +++ b/en/plugin/dev/publish/github.mdx @@ -1,4 +1,6 @@ -# Distribute Plugins via GitHub +--- +title: "Distribute Plugins via GitHub" +--- You can upload your plugin to GitHub, create a Release for the repository, and upload the `.lbpkg` file, allowing other users to install it in LangBot. @@ -16,7 +18,7 @@ This will generate a `.lbpkg` file in the `dist` directory. Upload your plugin to GitHub, then go to the Release page of your plugin repository, click to create a Release, and upload the `.lbpkg` file you just built. - + ## Install Plugin diff --git a/docs/en/plugin/dev/publish/market.md b/en/plugin/dev/publish/market.mdx similarity index 89% rename from docs/en/plugin/dev/publish/market.md rename to en/plugin/dev/publish/market.mdx index 43c5682f4..7be746d83 100644 --- a/docs/en/plugin/dev/publish/market.md +++ b/en/plugin/dev/publish/market.mdx @@ -1,4 +1,6 @@ -# Publish to Plugin Marketplace +--- +title: "Publish to Plugin Marketplace" +--- Publish plugins to [LangBot Plugin Marketplace](https://space.langbot.app/market) via CLI. @@ -6,7 +8,7 @@ Publish plugins to [LangBot Plugin Marketplace](https://space.langbot.app/market LangBot Space is LangBot's centralized service platform. Please visit [LangBot Space](https://space.langbot.app), click the top-right corner to log in with GitHub and create an account. - + This will redirect to GitHub authorization page, please complete authorization as prompted. @@ -31,7 +33,7 @@ Waiting for verification... Please click `Verification URL` to redirect to LangBot Space, enter `User Code` to complete login. - + ```bash ================================================== @@ -60,6 +62,6 @@ Plugin built successfully: dist/tmp/RockChinQ-HelloPlugin-0.1.0.lbpkg You can now check your plugin submission task at [LangBot Plugin Marketplace](https://space.langbot.app/market). Please wait for approval, after which you can view your plugin in the marketplace. - + -If you have any questions, you can send an email to `hello@langbot.app` or contact us through [Community](/en/insight/community). \ No newline at end of file +If you have any questions, you can send an email to `hello@langbot.app` or contact us through [Community](/en/insight/community). diff --git a/docs/en/plugin/dev/style.md b/en/plugin/dev/style.mdx similarity index 92% rename from docs/en/plugin/dev/style.md rename to en/plugin/dev/style.mdx index ac229fbd3..36da3b353 100644 --- a/docs/en/plugin/dev/style.md +++ b/en/plugin/dev/style.mdx @@ -1,4 +1,6 @@ -# Code Style Guide +--- +title: "Code Style Guide" +--- ## Logging @@ -12,4 +14,4 @@ logger = logging.getLogger(__name__) # Import logging module at the beginning o logger.info('This is an info message') # Use logger.info to record info level logs logger.warning('This is a warning message') logger.error('This is an error message') -``` \ No newline at end of file +``` diff --git a/docs/en/plugin/dev/tutor.md b/en/plugin/dev/tutor.mdx similarity index 88% rename from docs/en/plugin/dev/tutor.md rename to en/plugin/dev/tutor.mdx index 08216b9dc..dd851ae7a 100644 --- a/docs/en/plugin/dev/tutor.md +++ b/en/plugin/dev/tutor.mdx @@ -1,10 +1,12 @@ -# Plugin Development Tutorial +--- +title: "Plugin Development Tutorial" +--- ## Architecture Foundation In version 4.0, we introduced a high-security, high-flexibility production-grade plugin system and provided developers with rich APIs and easy-to-use supporting tools. - + Plugin Runtime is used to manage plugin lifecycles and coordinate interactions between LangBot and plugins. It has two operating modes: `stdio` and `websocket`. When LangBot is started directly by users (not running in a container), it uses `stdio` mode, which is common for personal users or lightweight environments. When LangBot runs in a container, it uses `websocket` mode, designed specifically for production environments. @@ -43,11 +45,10 @@ The plugin class in main.py is common code for each plugin, initialized when the Each component is a core functional module of your plugin, which can be [added and removed](/en/plugin/dev/components/add) as needed. Different components are called in different situations, making it easy to extend plugin functionality later. Each component directly inherits from the various component base classes under the `langbot_plugin.api.definition.components` package and contains a `plugin: BasePlugin` object, allowing you to directly call the plugin's APIs. -::: info -- For detailed API documentation, please refer to [API Reference](/en/plugin/dev/apis/common). + Please continue reading this tutorial to understand the plugin development process. -::: + ## AI-Assisted Development @@ -73,16 +74,14 @@ lbp init Follow the prompts to enter `Author`, `Description`, and other information. -:::info -You can also use the `lbp init HelloPlugin` command to initialize the plugin in the subdirectory `HelloPlugin`. + - -::: + + This operation will generate the initial files for the plugin. You can now open the `HelloPlugin` directory in your favorite editor and start writing plugin code. -:::info -If you get a "command not found" error for `lbp`, it may be because you haven't properly set the `PATH` environment variable. + You can use `python -m langbot_plugin.cli.__init__` instead of the `lbp` command. For example: @@ -91,14 +90,13 @@ For example: python -m langbot_plugin.cli.__init__ init HelloPlugin cd HelloPlugin ``` -::: + ## Starting Debug Mode You need to first deploy and start LangBot, ensuring that Plugin Runtime is running and listening on port `5401`. -::: info -Runtime has two startup modes: + - `Stdio` mode: When you start LangBot using source code without the startup parameter `--standalone-runtime`, LangBot will automatically start Plugin Runtime as a subprocess and communicate with Plugin Runtime through `stdio` (standard input/output streams). In this case, Runtime will load plugins from the `data/plugins` directory in the LangBot root directory and listen on port `5401` of the LangBot host as a debug port. @@ -109,7 +107,7 @@ Runtime has two startup modes: Whether in `stdio` or `websocket` mode, Plugin Runtime will listen on port `5401` of its host as a debug port for plugin debugging connections. When developing plugins, we recommend starting LangBot according to the [Development Configuration](/en/develop/dev-config) method, which will start Plugin Runtime in Stdio mode, making plugin development easier. -::: + Copy the `.env.example` file in the plugin directory to `.env`, and check or modify `DEBUG_RUNTIME_WS_URL` to your Plugin Runtime's WebSocket address. @@ -123,15 +121,15 @@ Start plugin debugging, and you will see the plugin output: lbp run ``` - + And you can see this plugin has been loaded in LangBot's WebUI. - + ## What's Next This tutorial will guide you through step-by-step completion of plugin functionality. - Modify Plugin Information: The plugin has been created with basic plugin information. Please [complete the plugin information](/en/plugin/dev/basic-info). -- Add Components: Plugin components are the core functional units of plugins. You can [add components](/en/plugin/dev/components/add) based on your needs. \ No newline at end of file +- Add Components: Plugin components are the core functional units of plugins. You can [add components](/en/plugin/dev/components/add) based on your needs. diff --git a/docs/en/plugin/plugin-intro.md b/en/plugin/plugin-intro.mdx similarity index 79% rename from docs/en/plugin/plugin-intro.md rename to en/plugin/plugin-intro.mdx index af6ea5ec9..68b3648d2 100644 --- a/docs/en/plugin/plugin-intro.md +++ b/en/plugin/plugin-intro.mdx @@ -1,10 +1,12 @@ -# LangBot Plugins +--- +title: "LangBot Plugins" +--- LangBot is composed of various internal components such as Large Language Model tools, commands, messaging platform adapters, LLM requesters, and more. To meet extensibility and flexibility requirements, we have implemented a production-grade plugin system. Each plugin runs in an independent process, managed uniformly by the Plugin Runtime. - + ## Plugin Structure @@ -22,17 +24,17 @@ More component types will be supported for plugin implementation in the future. Currently supports uploading plugin packages and installing plugins from the plugin marketplace. In LangBot's plugin management page, click the top-right corner to choose the installation method. - + Click `Upload Local`, select `.lbpkg` files shared by others or downloaded from the Marketplace to install plugins. Or click the Plugin Marketplace tab, select a plugin, and click install. - + After installing plugins, you need to select the plugin in your pipeline configuration page. - + ## Plugin Management @@ -40,14 +42,14 @@ After installing plugins, you need to select the plugin in your pipeline configu Some plugins may require you to fill in specific configuration items (please refer to the plugin README instructions). Click on the plugin card to enter the plugin details page and obtain and input the required information as prompted. - + ### Updating Plugins Only plugins installed from the plugin marketplace can be updated. - + ## Plugin Marketplace -The plugin marketplace can be accessed from LangBot's internal `Plugin Management` page, or you can visit the standalone site [LangBot Plugin Marketplace](https://space.langbot.app/market). \ No newline at end of file +The plugin marketplace can be accessed from LangBot's internal `Plugin Management` page, or you can visit the standalone site [LangBot Plugin Marketplace](https://space.langbot.app/market). diff --git a/docs/en/tags/readme.md b/en/tags/readme.mdx similarity index 81% rename from docs/en/tags/readme.md rename to en/tags/readme.mdx index 1d16d8d5c..a09bd6513 100644 --- a/docs/en/tags/readme.md +++ b/en/tags/readme.mdx @@ -1,20 +1,22 @@ -# Service API Overview +--- +title: "Service API Overview" +--- LangBot provides a set of APIs for external services to integrate. These APIs are authenticated with API keys, which are a subset of the HTTP API. To view the API documentation for frontend-backend communication, please go to the [Development](/en/develop/dev-config) section. -::: warning + Service API is currently in Beta and some APIs may change frequently. -::: + ## Get API Key Click the `API Keys` button in the sidebar of the WebUI to create an API Key. -![create_api_key](/assets/image/zh/api/create_api_key.png) +![create_api_key](/images/zh/api/create_api_key.png) After creation, copy the API Key and save it. -![copy_api_key](/assets/image/zh/api/copy_api_key.png) +![copy_api_key](/images/zh/api/copy_api_key.png) ## Use API diff --git a/docs/en/tags/webhook.md b/en/tags/webhook.mdx similarity index 98% rename from docs/en/tags/webhook.md rename to en/tags/webhook.mdx index 0fac455b6..2f3035362 100644 --- a/docs/en/tags/webhook.md +++ b/en/tags/webhook.mdx @@ -1,4 +1,6 @@ -# Webhooks +--- +title: "Webhooks" +--- Webhooks allow you to send bot message events to external services for processing. @@ -85,9 +87,9 @@ Webhook services should return JSON: - `true`: Message won't continue in pipeline - `false`: Message proceeds normally -::: tip + `skip_pipeline` lets you completely take over message processing. When `true`, the message is only handled by your webhook service and won't trigger LangBot's AI features. -::: + ## Integration Example diff --git a/docs/en/usage/knowledge/readme.md b/en/usage/knowledge/readme.mdx similarity index 70% rename from docs/en/usage/knowledge/readme.md rename to en/usage/knowledge/readme.mdx index 083e6adb9..5326e5746 100644 --- a/docs/en/usage/knowledge/readme.md +++ b/en/usage/knowledge/readme.mdx @@ -1,17 +1,20 @@ -# Using the Knowledge Base +--- +title: "Using the Knowledge Base" +--- LangBot natively supports RAG (Retrieval-Augmented Generation). You can create a built-in knowledge base and bind it to a pipeline, allowing the pipeline to answer questions based on the contents of the knowledge base. LangBot also supports connecting to external knowledge retrieval services (e.g., Dify, RAGFlow). ## Build a Built-in Knowledge Base -:::info -- Creating and using a built-in knowledge base requires configuring an embedding model first. Please read [Configure Models](/en/usage/models/readme). -::: + +Creating and using a built-in knowledge base requires configuring an embedding model first. Please read [Configure Models](/en/usage/models/readme). + + +On the knowledge base page, click the `Create Knowledge Base` button, fill in the name, select an already configured embedding model, then click `Create`. -On the knowledge base page, click the `Create Knowledge Base` button, fill in the name, select an already configured embedding model, then click `Create`. After creation, go to the "Documents" tab of your knowledge base and upload documents. LangBot will automatically parse and index these in the background. -create_kb +create_kb ## Connect External Knowledge Base @@ -21,14 +24,14 @@ On the knowledge base page, switch to the "External Knowledge Base" tab and add Go to your pipeline configuration, under the "AI" tab, choose `Local Agent` as the runner, then select the knowledge base you just created. -use_kb +use_kb -use_kb +use_kb -:::info + LangBot's built-in knowledge base can be used only when the runner is set to `Local Agent`. For other runners, refer to their documentation. -::: + Now you can use the knowledge base in `Chat Debug`, or through the bot linked to this pipeline: -use_kb_in_chat \ No newline at end of file +use_kb_in_chat diff --git a/docs/en/usage/mcp/readme.md b/en/usage/mcp/readme.mdx similarity index 63% rename from docs/en/usage/mcp/readme.md rename to en/usage/mcp/readme.mdx index 4084dd572..cd7f058c0 100644 --- a/docs/en/usage/mcp/readme.md +++ b/en/usage/mcp/readme.mdx @@ -1,37 +1,38 @@ -# Using MCP Servers +--- +title: "Using MCP Servers" +--- LangBot supports using tools from MCP servers. You can add MCP servers to leverage the tool calling capabilities in large language models for better handling of LLM requests. -:::info -- MCP service supports HTTP Streamable, SSE and stdio modes. + - MCP servers recommended acquisition channel: [Composio MCP](https://mcp.composio.dev/) -::: + ## Enable Function Calling for Models As shown in the image, enable the `Function Calling` feature for the model. -enable function call +enable function call ## Create MCP Server Click `Plugin Management`, then `MCP Management`, as shown: -server page +server page Click `Add` in the top right corner, then `Create MCP Server`, -create new mcp server +create new mcp server For example, to use the Fetch HTML server, fill in the corresponding URL, click `Test` to test the MCP server, and click `Submit` to add the server. After adding, click the switch on the card to connect to the MCP server. Click the card to view the MCP server details: -detailed server +detailed server ## Effect You need to select `Local Agent` as the runner in the pipeline settings and use a model that supports function calling. -dialog with mcp +dialog with mcp diff --git a/docs/en/usage/models/readme.md b/en/usage/models/readme.mdx similarity index 82% rename from docs/en/usage/models/readme.md rename to en/usage/models/readme.mdx index c0ec7323f..5d7557403 100644 --- a/docs/en/usage/models/readme.md +++ b/en/usage/models/readme.mdx @@ -1,10 +1,12 @@ -# Configure Models (Models) +--- +title: "Configure Models (Models)" +--- ## LangBot Models LangBot Models is an official model service provided by LangBot. When you initialize a local instance with your LangBot Space account, available models will be automatically added to your instance without any configuration. You will receive a certain amount of free quota to get started quickly. -langbot_models +langbot_models For specific available models, please check [LangBot Space](https://space.langbot.app/models). @@ -16,11 +18,11 @@ You can also add models from other sources. Models will be used by pipelines to process messages. The first model you configure will be set as the model for the default pipeline. -![arch](/assets/image/zh/deploy/models/arch.png) +![arch](/images/zh/deploy/models/arch.png) You can add multiple models, and then select which model to use in the pipeline. -model_config +model_config Enter these four parameters: `Model Name`, `Model Provider`, `Request URL`, and `API Key`, then submit. @@ -34,7 +36,7 @@ For model capabilities, please choose according to the specific model characteri Embedding models are used to compute vector representations of messages. If you need to use knowledge bases, please configure this model. -embedding_model +embedding_model Enter these four parameters: `Model Name`, `Model Provider`, `Request URL`, and `API Key`, then submit. After that, please configure the knowledge base to use this model. diff --git a/docs/en/usage/pipelines/coze.md b/en/usage/pipelines/coze.mdx similarity index 82% rename from docs/en/usage/pipelines/coze.md rename to en/usage/pipelines/coze.mdx index 8b94fa36a..172043f42 100644 --- a/docs/en/usage/pipelines/coze.md +++ b/en/usage/pipelines/coze.mdx @@ -1,24 +1,26 @@ -# Integrating Coze API +--- +title: "Integrating Coze API" +--- This document explains how to obtain the Token and Bot ID from the Coze platform and enter them into the LangBot pipeline configuration. ## 1. Obtaining the Token and Bot ID 1. Log in to the Coze platform and enter your developer console. -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze07.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze07.png) 2. In "API Management", create and copy the token. -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze06.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze06.png) -:::info + In Coze authorization, coze.cn supports long-term authorization through "Service Identities and Credentials", while coze.com only provides Personal Access Tokens. -::: + 3. Select your own agent (or create a new one) from the project development section. The obtained ID is the `bot_id`. -![Coze bot_id](/assets/image/zh/deploy/pipelines/coze/coze05.png) +![Coze bot_id](/images/zh/deploy/pipelines/coze/coze05.png) * Make sure to select the API option when publishing the agent -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze04.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze04.png) Please securely store the following two pieces of information: - **token**: The token generated by the Coze platform @@ -35,7 +37,7 @@ Please securely store the following two pieces of information: - **bot_id**: Paste the corresponding Bot ID - Please select the `API Base URL` according to the Coze site you are using: coze.cn please fill in `https://api.coze.cn`; coze.com please fill in `https://api.coze.com` - ![Pipeline Configuration](/assets/image/zh/deploy/pipelines/coze/coze08.png) + ![Pipeline Configuration](/images/zh/deploy/pipelines/coze/coze08.png) 4. Click "Save" to complete the configuration @@ -46,4 +48,4 @@ Once completed, you can invoke the Coze agent within this pipeline for dialogue - **Save fails or invocation returns an error**: Please verify that the token and bot_id are correct and do not contain extra spaces - **Unable to select `Coze API`**: Please confirm whether the current version supports this runner. If not yet supported, please upgrade to a version that includes the Coze runner -For more general pipeline configuration instructions, please refer to [Modifying Dialogue Pipeline Configuration](/en/usage/pipelines/readme) \ No newline at end of file +For more general pipeline configuration instructions, please refer to [Modifying Dialogue Pipeline Configuration](/en/usage/pipelines/readme) diff --git a/docs/en/usage/pipelines/dify.md b/en/usage/pipelines/dify.mdx similarity index 79% rename from docs/en/usage/pipelines/dify.md rename to en/usage/pipelines/dify.mdx index a145acac0..4ec036e2d 100644 --- a/docs/en/usage/pipelines/dify.md +++ b/en/usage/pipelines/dify.mdx @@ -1,4 +1,6 @@ -# Using Dify with LangBot +--- +title: "Using Dify with LangBot" +--- [Dify](https://dify.ai) is an open-source large language model (LLM) application development platform. It combines the concepts of Backend as Service and LLMOps, enabling developers to quickly build production-grade generative AI applications. Dify can create chat assistants (including Chatflow), Agents, text generation applications, workflows, and other types of applications. @@ -11,32 +13,30 @@ Please follow the [Dify documentation](https://docs.dify.ai) to deploy Dify and After publishing your application, go to the `Access API` page of your application to generate an API key. -![Dify Application API Key](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_01.png) +![Dify Application API Key](/images/zh/deploy/pipelines/dify/dify_sv_api_01.png) Save the API server and API key for configuring LangBot's pipeline `AI Capability`. -:::info -The above is an example for Dify cloud service version. If you are using the self-hosted community version, please use your own Dify service address as the `base-url` in LangBot, and add `/v1` as the path. + - If LangBot and Dify are deployed on the same host and both are deployed using Docker, you can refer to the article: [Network Configuration Details](/zh/workshop/network-details.html#langbot-%E5%92%8C%E6%B6%88%E6%81%AF%E5%B9%B3%E5%8F%B0%E5%9D%87%E8%BF%90%E8%A1%8C%E5%9C%A8-docker-%E5%AE%B9%E5%99%A8%E4%B8%AD). In this case, add `langbot-network` to the `networks` of all containers in the docker-compose.yaml file that starts Dify, add the container name `dify-nginx` to the `nginx` container, and finally set `base-url` to `http://dify-nginx/v1` in the LangBot configuration. - For other cases, please consult your company's operations team. -::: + ## Configuring LangBot Open the LangBot WebUI page, add a new pipeline or switch to the AI capability configuration page in an existing pipeline. -![Setting Development Item](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_02.png) +![Setting Development Item](/images/zh/deploy/pipelines/dify/dify_sv_api_02.png) -::: info -### Workflow Output Key + If you are using a Dify workflow application, please use `summary` as the key to pass the output content. -![Dify Workflow Application Output Key](/assets/image/zh/deploy/pipelines/dify/dify_workflow_output_key.png) +![Dify Workflow Application Output Key](/images/zh/deploy/pipelines/dify/dify_workflow_output_key.png) ## Output Processing When using a workflow application or Agent application, if you enable `track-function-calls` in LangBot's pipeline `Output Processing`, a message of `calling function xxx` will be output to the user when Dify executes each tool call. However, if you are using `ChatFlow` under the `chat` application (Chat Assistant -> Workflow Orchestration), it will only output the text returned by the Answer (direct reply) node regardless of the settings. -::: + diff --git a/docs/en/usage/pipelines/langflow.md b/en/usage/pipelines/langflow.mdx similarity index 72% rename from docs/en/usage/pipelines/langflow.md rename to en/usage/pipelines/langflow.mdx index a687473fd..201066862 100644 --- a/docs/en/usage/pipelines/langflow.md +++ b/en/usage/pipelines/langflow.mdx @@ -1,4 +1,6 @@ -# Using Langflow with LangBot +--- +title: "Using Langflow with LangBot" +--- [Langflow](https://langflow.com/) is an open-source project for building and deploying AI-based Agents and Workflows. It supports local and cloud deployment, and provides APIs for other applications to integrate. @@ -10,22 +12,22 @@ Please follow the [Langflow documentation](https://langflow.com/docs/introductio As an example of the default template's Simple Agent: -![create_flow](/assets/image/zh/deploy/pipelines/langflow/create_flow.png) +![create_flow](/images/zh/deploy/pipelines/langflow/create_flow.png) You can modify the workflow according to your needs: -![edit_flow](/assets/image/zh/deploy/pipelines/langflow/edit_flow.png) +![edit_flow](/images/zh/deploy/pipelines/langflow/edit_flow.png) ## Configuring LangBot Open the LangBot WebUI page, add a new pipeline or switch to the AI capability configuration page in an existing pipeline, and select `Langflow API` as the runner. -![set_langflow_runner](/assets/image/zh/deploy/pipelines/langflow/set_langflow_runner.png) +![set_langflow_runner](/images/zh/deploy/pipelines/langflow/set_langflow_runner.png) Fill in the other settings according to the prompts, including `Base URL` (fill in according to actual network conditions), `API Key`, `Flow ID`, etc. The API Key can be obtained from Langflow's Settings: -![get_api_key](/assets/image/zh/deploy/pipelines/langflow/get_api_key.png) +![get_api_key](/images/zh/deploy/pipelines/langflow/get_api_key.png) Flow ID can be obtained by clicking the `Share` -> `API access` button in the top right corner of the edit page and obtaining it from the example code: -![get_flow_id](/assets/image/zh/deploy/pipelines/langflow/get_flow_id.png) \ No newline at end of file +![get_flow_id](/images/zh/deploy/pipelines/langflow/get_flow_id.png) diff --git a/docs/en/usage/pipelines/n8n.md b/en/usage/pipelines/n8n.mdx similarity index 55% rename from docs/en/usage/pipelines/n8n.md rename to en/usage/pipelines/n8n.mdx index 373051e2b..1d6650655 100644 --- a/docs/en/usage/pipelines/n8n.md +++ b/en/usage/pipelines/n8n.mdx @@ -1,4 +1,6 @@ -# Using n8n with LangBot +--- +title: "Using n8n with LangBot" +--- [n8n](https://n8n.io/) is an open-source workflow automation platform that allows you to create, schedule, and execute various automated tasks. @@ -8,42 +10,40 @@ LangBot currently supports triggering workflows and receiving responses through Please open the configuration page of an existing pipeline or create a new pipeline (recommended) and open the configuration page. Select `n8n Workflow API` as the runner in `AI`. -![n8n as the runner](/assets/image/zh/deploy/pipelines/n8n/config_runner.png) +![n8n as the runner](/images/zh/deploy/pipelines/n8n/config_runner.png) Then configure and fill in the other settings according to the content below. ## Configuring n8n Workflow Connection -![n8n Workflow](/assets/image/zh/deploy/pipelines/n8n/create_wf.png) +![n8n Workflow](/images/zh/deploy/pipelines/n8n/create_wf.png) or -![n8n Workflow](/assets/image/zh/deploy/pipelines/n8n/create_wf01.png) +![n8n Workflow](/images/zh/deploy/pipelines/n8n/create_wf01.png) Select `Webhook` or `On chat message` as the trigger and configure as follows: - Webhook: - ![n8n webhook configuration](/assets/image/zh/deploy/pipelines/n8n/config_webhook.png) + ![n8n webhook configuration](/images/zh/deploy/pipelines/n8n/config_webhook.png) - On chat message: - ![n8n on chat message configuration](/assets/image/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) + ![n8n on chat message configuration](/images/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) -:::info -If you need streaming responses, set `Response Mode` to `Streaming`. -![n8n streaming configuration](/assets/image/zh/deploy/pipelines/n8n/config_response_model.png) -::: + +![n8n streaming configuration](/images/zh/deploy/pipelines/n8n/config_response_model.png) + -:::info -Authentication corresponds to the authentication methods in LangBot's pipeline configuration, which you can modify as needed. + -![n8n workflow configuration](/assets/image/zh/deploy/pipelines/n8n/config_auth.png) -::: +![n8n workflow configuration](/images/zh/deploy/pipelines/n8n/config_auth.png) + Configure the node that calls the AI model as `AI Agent`, following the setup below: > For streaming responses, add the items highlighted in the red box. If you don't need streaming, you can skip this. -![n8n AI model call configuration](/assets/image/zh/deploy/pipelines/n8n/config_call_ai.png) +![n8n AI model call configuration](/images/zh/deploy/pipelines/n8n/config_call_ai.png) For the workflow response content in n8n, please use the `Respond to Webhook` node and configure it according to the image below (if you choose streaming responses with the `AI Agent` node, you do not need this step): -![n8n workflow response configuration](/assets/image/zh/deploy/pipelines/n8n/config_respond.png) +![n8n workflow response configuration](/images/zh/deploy/pipelines/n8n/config_respond.png) The response content key name in `Response Body` needs to match the `output key name` in LangBot's pipeline configuration. -After completing the n8n workflow configuration, please click `Active` at the top to enable the workflow. \ No newline at end of file +After completing the n8n workflow configuration, please click `Active` at the top to enable the workflow. diff --git a/docs/en/usage/pipelines/readme.md b/en/usage/pipelines/readme.mdx similarity index 84% rename from docs/en/usage/pipelines/readme.md rename to en/usage/pipelines/readme.mdx index 3ded1538e..99a5f0ae8 100644 --- a/docs/en/usage/pipelines/readme.md +++ b/en/usage/pipelines/readme.mdx @@ -1,10 +1,12 @@ -# Modify Dialogue Pipeline Configuration (Pipelines) +--- +title: "Modify Dialogue Pipeline Configuration (Pipelines)" +--- The pipeline controls the processing flow after receiving a message, as well as the information exchange with the large language model. Each bot can be bound to one pipeline, and the same pipeline can be bound to multiple bots. LangBot automatically creates a default pipeline when first started. When creating a bot, it is automatically bound to the default pipeline. When creating the first model, it is automatically set as the model for the default pipeline. -![arch](/assets/image/zh/deploy/pipelines/arch.png) +![arch](/images/zh/deploy/pipelines/arch.png) You can create multiple pipelines for different bots to adapt to different scenarios. @@ -20,13 +22,13 @@ AI capabilities are mainly divided into two parts: selecting the runner and conf The runner defines how to schedule the large model to process messages. The default is `Built-in Agent`, which is a multi-round Agent strategy implemented by LangBot. Only when this runner is selected will the models and tools configured internally in LangBot be used. -** +{/* ![edit_pipeline](/images/zh/deploy/pipelines/edit_pipeline_ai.png) */} -edit_pipeline +edit_pipeline You can also choose to use external LLMOps platforms such as `Dify`, [`n8n`](https://n8n.io/). In this case, the models, prompts, tools, and other resources used will be provided by the LLMOps platform. -more_runner +more_runner - For detailed steps on connecting to Dify, you can [refer to the tutorial](/en/usage/pipelines/dify.html). - For detailed steps on connecting to n8n, you can [refer to the tutorial](/en/usage/pipelines/n8n.html). @@ -46,7 +48,7 @@ When using external LLMOps platforms, LangBot explicitly passes the following pa You can [customize any variable through plugins](/en/plugin/dev/apis/common.html#set-request-variables). -![Dify Workflow Start Node Configuration](/assets/image/zh/workshop/dify-service-api/dify_workflow_var.png) +![Dify Workflow Start Node Configuration](/images/zh/workshop/dify-service-api/dify_workflow_var.png) ## Other Configurations diff --git a/docs/en/usage/platforms/dingtalk.md b/en/usage/platforms/dingtalk.mdx similarity index 69% rename from docs/en/usage/platforms/dingtalk.md rename to en/usage/platforms/dingtalk.mdx index 426e72fd1..4462184c0 100644 --- a/docs/en/usage/platforms/dingtalk.md +++ b/en/usage/platforms/dingtalk.mdx @@ -1,56 +1,58 @@ -# Deploy DingTalk Bot +--- +title: "Deploy DingTalk Bot" +--- Deploy LangBot to DingTalk. ## Create Bot Enter the [DingTalk Developer Backend](https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e5MkawbT#/), log in and enter the organization. After successful login, enter the open platform, which looks like this: -![DingTalk Open Platform](/assets/image/zh/deploy/bots/dingtalk/dingtalk1.png) +![DingTalk Open Platform](/images/zh/deploy/bots/dingtalk/dingtalk1.png) Click `Application Development` at the top, then click the blue button `Create Application` on the right, fill in the basic information of the bot, and click save. Enter the bot's backend, for example, if we have a bot named langbot2, its management page looks like this: -![Bot Page](/assets/image/zh/deploy/bots/dingtalk/dingtalk2.png) +![Bot Page](/images/zh/deploy/bots/dingtalk/dingtalk2.png) ## Configure Bot Click `Add Application Capability`, `Other Application Capabilities`, `Configure` in `Robot`, click configure and fill in the information, as shown below: -![Bot Configuration](/assets/image/zh/deploy/bots/dingtalk/dingtalk3.png) +![Bot Configuration](/images/zh/deploy/bots/dingtalk/dingtalk3.png) Click `Publish` at the bottom of the page, after successful publication, click `Version Management and Publishing` at the bottom left of the bot page, as shown: -![Version Management and Publishing](/assets/image/zh/deploy/bots/dingtalk/dingtalk4.png) +![Version Management and Publishing](/images/zh/deploy/bots/dingtalk/dingtalk4.png) If this is the first time creating a bot, the right side is empty, you need to click `Create New Version`, set information in it, then set `Application Visibility Range`, and click save. Click `Event Subscription`, change the push method to `Stream Mode Push`. If card streaming is needed, you must apply for card permissions in the permission management, as shown: -![Before applying for card permissions](/assets/image/zh/deploy/bots/dingtalk/dingtalk6.png) +![Before applying for card permissions](/images/zh/deploy/bots/dingtalk/dingtalk6.png) -![After applying for card permissions](/assets/image/zh/deploy/bots/dingtalk/dingtalk7.png) +![After applying for card permissions](/images/zh/deploy/bots/dingtalk/dingtalk7.png) Additionally, for card messages you mainly need to create a card template and record the template ID to fill in the configuration, the process is as follows: > The card content template ID can be obtained by logging into the developer backend > [Card Platform](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV) Fill in information when creating a new template, as shown: -![Fill in information for new template](/assets/image/zh/deploy/bots/dingtalk/dingtalk8.png) +![Fill in information for new template](/images/zh/deploy/bots/dingtalk/dingtalk8.png) Select a preset template (just choose the first one and modify the template content later), as shown: -![Select preset template](/assets/image/zh/deploy/bots/dingtalk/dingtalk9.png) +![Select preset template](/images/zh/deploy/bots/dingtalk/dingtalk9.png) Click Use -![Click](/assets/image/zh/deploy/bots/dingtalk/dingtalk10.png) +![Click](/images/zh/deploy/bots/dingtalk/dingtalk10.png) Create -![Create](/assets/image/zh/deploy/bots/dingtalk/dingtalk11.png) +![Create](/images/zh/deploy/bots/dingtalk/dingtalk11.png) After clicking Create you'll be redirected to edit the template. As shown, you can freely edit your desired card message: -![Edit template](/assets/image/zh/deploy/bots/dingtalk/dingtalk12.png) +![Edit template](/images/zh/deploy/bots/dingtalk/dingtalk12.png) For the main content, keep the default 'content' unchanged: -![Don't modify](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk13.png) +![Don't modify](../../../images/zh/deploy/bots/dingtalk/dingtalk13.png) After editing and confirming everything is correct, save it and copy the template ID to fill in the configuration file: -![Save](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk14.png) -![Copy template ID](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk15.png) +![Save](../../../images/zh/deploy/bots/dingtalk/dingtalk14.png) +![Copy template ID](../../../images/zh/deploy/bots/dingtalk/dingtalk15.png) ## Fill in Configuration Information @@ -61,17 +63,17 @@ Record the above configuration items and fill them in the LangBot bot configurat Click [Card Platform](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV), copy the corresponding bound template ID from the template list, and fill it into the card template ID field. -![Connect to LangBot](/assets/image/zh/deploy/bots/dingtalk/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/dingtalk/connect_to_langbot.png) Streaming related: -![img.png](../../../assets/image/zh/deploy/bots/lark/lark_15.png) +![img.png](../../../images/zh/deploy/bots/lark/lark_15.png) **Start LangBot**. ## Add Bot This article uses DingTalk Windows desktop version as an example, click `Search` at the top, `Features`, then enter the name of the bot you just created, as shown: -![robot_png](/assets/image/zh/deploy/bots/dingtalk/dingtalk5.png) +![robot_png](/images/zh/deploy/bots/dingtalk/dingtalk5.png) Click on the bot to chat with it. diff --git a/docs/en/usage/platforms/discord.md b/en/usage/platforms/discord.mdx similarity index 61% rename from docs/en/usage/platforms/discord.md rename to en/usage/platforms/discord.mdx index 4f63f3867..ba843753d 100644 --- a/docs/en/usage/platforms/discord.md +++ b/en/usage/platforms/discord.mdx @@ -1,22 +1,24 @@ -# Connect to Discord Bot +--- +title: "Connect to Discord Bot" +--- ## Create Bot Go to the [Discord Developer Portal](https://discord.com/developers/applications), log in, and create an application. -![alt text](/assets/image/zh/deploy/bots/discord/discord_01.png) +![alt text](/images/zh/deploy/bots/discord/discord_01.png) Modify the basic information, click `Save Changes` to save. -![alt text](/assets/image/zh/deploy/bots/discord/discord_02.png) +![alt text](/images/zh/deploy/bots/discord/discord_02.png) Click `Bot` on the left, click `Reset Token`, copy the generated Token. -![alt text](/assets/image/zh/deploy/bots/discord/discord_03.png) +![alt text](/images/zh/deploy/bots/discord/discord_03.png) And check all options in `Privileged Gateway Intents` on this page, click `Save Changes` to save. -![alt text](/assets/image/zh/deploy/bots/discord/discord_05.png) +![alt text](/images/zh/deploy/bots/discord/discord_05.png) **Finally, click `OAuth2` on the left, copy the `Client ID` on the page.** @@ -24,13 +26,11 @@ And check all options in `Privileged Gateway Intents` on this page, click `Save Click to add a new bot, fill in the `Client ID` and `Token` obtained in the previous step into the configuration. -![alt text](/assets/image/zh/deploy/bots/discord/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/discord/connect_to_langbot.png) -:::warning + -If you are using this adapter within mainland China, you may need to set up a network proxy. - -::: + After filling in, start LangBot. If configured successfully, the log will show `[02-02 16:48:15.263] manager.py (68) - [INFO] : Initializing platform adapter 1: discord`, keep LangBot running. @@ -40,16 +40,16 @@ You need to create a server first, then invite the bot to the server. Go to the `OAuth2` page, select `URL Generator`, select `bot`, check the permissions as shown in the image. -![alt text](/assets/image/zh/deploy/bots/discord/discord_06.png) +![alt text](/images/zh/deploy/bots/discord/discord_06.png) -![alt text](/assets/image/zh/deploy/bots/discord/discord_07.png) +![alt text](/images/zh/deploy/bots/discord/discord_07.png) Click `Copy`, paste the generated URL into your browser to open it, and invite the bot to your server. -![alt text](/assets/image/zh/deploy/bots/discord/discord_08.png) +![alt text](/images/zh/deploy/bots/discord/discord_08.png) ## Use Bot Now you can use the bot normally in groups or private messages. -![alt text](/assets/image/zh/deploy/bots/discord/discord_09.png) +![alt text](/images/zh/deploy/bots/discord/discord_09.png) diff --git a/docs/en/usage/platforms/kook.md b/en/usage/platforms/kook.mdx similarity index 59% rename from docs/en/usage/platforms/kook.md rename to en/usage/platforms/kook.mdx index ef82ffe69..7cff45542 100644 --- a/docs/en/usage/platforms/kook.md +++ b/en/usage/platforms/kook.mdx @@ -1,62 +1,64 @@ -# Integrating KOOK Bot +--- +title: "Integrating KOOK Bot" +--- ## Create a Bot Visit the [KOOK Developer Center](https://developer.kookapp.cn/), log in and access the console. -![KOOK Developer Console](/assets/image/zh/deploy/bots/kook/01-dashboard.png) +![KOOK Developer Console](/images/zh/deploy/bots/kook/01-dashboard.png) Click "Create Application" and fill in the application information. -![Create Application](/assets/image/zh/deploy/bots/kook/02-create-app.png) +![Create Application](/images/zh/deploy/bots/kook/02-create-app.png) After the application is created, enter the application details page. -![Application Created](/assets/image/zh/deploy/bots/kook/03-app-created.png) +![Application Created](/images/zh/deploy/bots/kook/03-app-created.png) You can view the basic information of the application on the application overview page. -![Application Overview](/assets/image/zh/deploy/bots/kook/04-app-overview.png) +![Application Overview](/images/zh/deploy/bots/kook/04-app-overview.png) ## Get Bot Token In the application page, click the "Bot" tab, copy the Bot Token and save it securely. You will need it later. -![Get Bot Token](/assets/image/zh/deploy/bots/kook/05-bot-token.png) +![Get Bot Token](/images/zh/deploy/bots/kook/05-bot-token.png) ## Configure Bot Permissions **Important:** In the "Bot" settings, find the "Message Filtering" option and click to configure. -![Message Filter Settings](/assets/image/zh/deploy/bots/kook/07-message-filters.png) +![Message Filter Settings](/images/zh/deploy/bots/kook/07-message-filters.png) Enable all message-related event permissions, including channel messages and private message events. Otherwise, the bot will not be able to receive messages. -![Enable Permissions](/assets/image/zh/deploy/bots/kook/08-permissions-enabled.png) +![Enable Permissions](/images/zh/deploy/bots/kook/08-permissions-enabled.png) ## Invite the Bot In the bot settings page, you can generate an invitation link to invite the bot to your server. -![Generate Invitation Link](/assets/image/zh/deploy/bots/kook/06-invite-link.png) +![Generate Invitation Link](/images/zh/deploy/bots/kook/06-invite-link.png) ## Connect to LangBot Open the LangBot Webui page, and click to create a new bot on the "Bots" page. -![LangBot Bot Management](/assets/image/zh/deploy/bots/kook/09-langbot-bots.png) +![LangBot Bot Management](/images/zh/deploy/bots/kook/09-langbot-bots.png) Select the KOOK platform, fill in the bot name and Bot Token. -![Configure KOOK Bot](/assets/image/zh/deploy/bots/kook/10-bot-config.png) +![Configure KOOK Bot](/images/zh/deploy/bots/kook/10-bot-config.png) After saving, the bot will appear in the list. -![Bot Created](/assets/image/zh/deploy/bots/kook/11-bot-created.png) +![Bot Created](/images/zh/deploy/bots/kook/11-bot-created.png) Click the enable button to start the bot. If successfully configured, the bot status will show as running. -![Bot Enabled](/assets/image/zh/deploy/bots/kook/12-bot-enabled.png) +![Bot Enabled](/images/zh/deploy/bots/kook/12-bot-enabled.png) ## Using the Bot diff --git a/docs/en/usage/platforms/lark.md b/en/usage/platforms/lark.mdx similarity index 59% rename from docs/en/usage/platforms/lark.md rename to en/usage/platforms/lark.mdx index 51af08503..54b9ef750 100644 --- a/docs/en/usage/platforms/lark.md +++ b/en/usage/platforms/lark.mdx @@ -1,33 +1,35 @@ -# Connect to Feishu Bot +--- +title: "Connect to Feishu Bot" +--- ## Create Bot Go to the [Feishu Open Platform](https://open.feishu.cn/app), log in, and create an enterprise self-built application or store application. [(difference introduction)](https://open.feishu.cn/document/platform-overveiw/overview) -![alt text](/assets/image/zh/deploy/bots/lark/lark_01.png) +![alt text](/images/zh/deploy/bots/lark/lark_01.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_02.png) +![alt text](/images/zh/deploy/bots/lark/lark_02.png) Add bot capability to the application: -![alt text](/assets/image/zh/deploy/bots/lark/lark_03.png) +![alt text](/images/zh/deploy/bots/lark/lark_03.png) Add the permissions shown in the image in the permission management: -![alt text](/assets/image/zh/deploy/bots/lark/lark_04.png) +![alt text](/images/zh/deploy/bots/lark/lark_04.png) If card streaming permissions are required, additionally add the following card creation and update permissions as shown in the image: -![img_1.png](../../../assets/image/zh/deploy/bots/lark/lark_14.png) +![img_1.png](../../../images/zh/deploy/bots/lark/lark_14.png) -::: warning + If you need to change the default card template, you need to modify the card template in the platform adapter's code yourself. -::: + ## Connect to LangBot Find `app_id` and `app_secret` on the `Credentials and Basic Information` page. -![alt text](/assets/image/zh/deploy/bots/lark/lark_05.png) +![alt text](/images/zh/deploy/bots/lark/lark_05.png) @@ -35,56 +37,54 @@ Open LangBot's Webui configuration page, create a new bot Fill in the relevant information in the form -![alt text](/assets/image/zh/deploy/bots/lark/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/lark/connect_to_langbot.png) Streaming related: -![Streaming related](../../../assets/image/zh/deploy/bots/lark/connect_to_langbot01.png) +![Streaming related](../../../images/zh/deploy/bots/lark/connect_to_langbot01.png) After filling in, start LangBot. If configured successfully, the log will show `[01-29 23:42:56.796] manager.py (68) - [INFO] : Initializing platform adapter 1: lark`, keep LangBot running. -:::warning -By default, WebSocket long connection mode is used, corresponding to the long connection subscription below. But in some cases (such as international version of Feishu), long connection mode is not available, in which case you need to use Webhook mode, corresponding to the `Send events to developer server` mode, please refer to the following configuration: + - `enable-webhook`: Set to `true` - `encrypt-key`: Set to `Encrypt Key` in the `Encryption Strategy` of the `Events and Callbacks` page Note that in Webhook mode, LangBot needs to be deployed on a server with a public IP, and ensure that the firewall has opened the port configured above. -::: + ## Configure Event Subscription Go to the `Events and Callbacks` page, configure the subscription method as `Long Connection`: -![alt text](/assets/image/zh/deploy/bots/lark/lark_07.png) +![alt text](/images/zh/deploy/bots/lark/lark_07.png) And add the event: `Receive Messages` -![alt text](/assets/image/zh/deploy/bots/lark/lark_08.png) +![alt text](/images/zh/deploy/bots/lark/lark_08.png) -:::warning -Webhook mode configuration method: + -![alt text](/assets/image/zh/deploy/bots/lark/lark_13.png) +![alt text](/images/zh/deploy/bots/lark/lark_13.png) Please start LangBot first, fill in your server address and port here, the path is `/lark/callback`, click `Save`. -::: + ## Publish Bot Click `Create Version` at the top, fill in the version number and other information, click `Save` below. -![alt text](/assets/image/zh/deploy/bots/lark/lark_09.png) +![alt text](/images/zh/deploy/bots/lark/lark_09.png) Add the bot to a Feishu group to use it: -![alt text](/assets/image/zh/deploy/bots/lark/lark_10.png) +![alt text](/images/zh/deploy/bots/lark/lark_10.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_11.png) +![alt text](/images/zh/deploy/bots/lark/lark_11.png) Private chat can also be used directly -![alt text](/assets/image/zh/deploy/bots/lark/lark_12.png) +![alt text](/images/zh/deploy/bots/lark/lark_12.png) ## Common Issues -- Store app bots cannot respond to chat messages immediately after creation/saving. Due to the [app_ticket event](https://open.feishu.cn/document/server-docs/application-v6/event/app_ticket-events) delay mechanism, you need to wait about 2 minutes before it can work normally. \ No newline at end of file +- Store app bots cannot respond to chat messages immediately after creation/saving. Due to the [app_ticket event](https://open.feishu.cn/document/server-docs/application-v6/event/app_ticket-events) delay mechanism, you need to wait about 2 minutes before it can work normally. diff --git a/docs/en/usage/platforms/line.md b/en/usage/platforms/line.mdx similarity index 66% rename from docs/en/usage/platforms/line.md rename to en/usage/platforms/line.mdx index cefb030c4..80992c516 100644 --- a/docs/en/usage/platforms/line.md +++ b/en/usage/platforms/line.mdx @@ -1,4 +1,6 @@ -# Integrating LINE Bot +--- +title: "Integrating LINE Bot" +--- This article explains how to connect LangBot with the LINE platform to implement LINE bot functionality. @@ -14,29 +16,29 @@ This article explains how to connect LangBot with the LINE platform to implement > [Developer Console](https://developers.line.biz/console) 1. In the developer console, create a new Provider (if you don't have one) -![alt text](/assets/image/zh/deploy/bots/line/line01.png) +![alt text](/images/zh/deploy/bots/line/line01.png) 2. Under the Provider, click "Create" -![alt text](/assets/image/zh/deploy/bots/line/line02.png) +![alt text](/images/zh/deploy/bots/line/line02.png) 3. Enter a name and click Create -![alt text](/assets/image/zh/deploy/bots/line/line03.png) +![alt text](/images/zh/deploy/bots/line/line03.png) 4. After being redirected, select Create a Message API -![alt text](/assets/image/zh/deploy/bots/line/line04.png) +![alt text](/images/zh/deploy/bots/line/line04.png) * Continue by clicking Create a Message API -![alt text](/assets/image/zh/deploy/bots/line/line05.png) +![alt text](/images/zh/deploy/bots/line/line05.png) * After being redirected, fill in the basic information -![alt text](/assets/image/zh/deploy/bots/line/line06.png) +![alt text](/images/zh/deploy/bots/line/line06.png) - Channel Name - Channel Description - Category - Subcategory - Email Address 5. After filling in all information, click "Continue" to create -![alt text](/assets/image/zh/deploy/bots/line/line07.png) +![alt text](/images/zh/deploy/bots/line/line07.png) 6. Check the information you entered, and if there are no issues, click Submit -![alt text](/assets/image/zh/deploy/bots/line/line08.png) +![alt text](/images/zh/deploy/bots/line/line08.png) 7. Successfully created, proceed to use -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) ### Get Configuration Information @@ -45,74 +47,74 @@ After creation, you will obtain the following important information, please reco 1. Channel Secret > [Page after clicking use](https://manager.line.biz/account) * Select Settings -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) * Click Message API -![alt text](/assets/image/zh/deploy/bots/line/line11.png) +![alt text](/images/zh/deploy/bots/line/line11.png) * Enable Message API -![alt text](/assets/image/zh/deploy/bots/line/line12.png) +![alt text](/images/zh/deploy/bots/line/line12.png) * Select the Provider you just created and click Agree -![alt text](/assets/image/zh/deploy/bots/line/line13.png) +![alt text](/images/zh/deploy/bots/line/line13.png) * For privacy terms, simply click OK -![alt text](/assets/image/zh/deploy/bots/line/line14.png) +![alt text](/images/zh/deploy/bots/line/line14.png) * Click OK to complete creation -![alt text](/assets/image/zh/deploy/bots/line/line15.png) +![alt text](/images/zh/deploy/bots/line/line15.png) * Copy it -![alt text](/assets/image/zh/deploy/bots/line/line16.png) +![alt text](/images/zh/deploy/bots/line/line16.png) 2. Channel Access Token (need to click the "Issue" button to generate) * Click console or directly visit [Console](https://developers.line.biz/console/) -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * Select the Provider you created and click Message API -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * Click Message API -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * Scroll to the bottom, click Issue -![alt text](/assets/image/zh/deploy/bots/line/line20.png) +![alt text](/images/zh/deploy/bots/line/line20.png) * Click the icon to copy -![alt text](/assets/image/zh/deploy/bots/line/line21.png) +![alt text](/images/zh/deploy/bots/line/line21.png) ## Connecting to LangBot Next, open the LangBot configuration page: 1. Click "Bots", then click "Add" -![alt text](/assets/image/zh/deploy/bots/line/line26.png) +![alt text](/images/zh/deploy/bots/line/line26.png) 2. Select "LINE" in "Platform/Adapter Selection" -![alt text](/assets/image/zh/deploy/bots/line/line27.png) +![alt text](/images/zh/deploy/bots/line/line27.png) 3. Fill in the configuration information: - Channel Secret: The Channel secret you obtained earlier - Channel Access Token: The Channel access token you obtained earlier - ![alt text](/assets/image/zh/deploy/bots/line/line28.png) + ![alt text](/images/zh/deploy/bots/line/line28.png) 4. Click "Save" to complete the configuration - ![alt text](/assets/image/zh/deploy/bots/line/line29.png) + ![alt text](/images/zh/deploy/bots/line/line29.png) ## Configure Webhook -::: info + We recommend that you first refer to [Configure HTTP Reverse Proxy](/en/workshop/production/proxy-and-ssl) to configure the LangBot callback address. -::: + * Get the Webhook callback URL from the LangBot configuration page -![alt text](/assets/image/zh/deploy/bots/line/line30.png) +![alt text](/images/zh/deploy/bots/line/line30.png) * Click console or directly visit [Console](https://developers.line.biz/console/) -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * Select the Provider you created and click Message API -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * Click Message API -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * Click Edit to fill in the connection -![alt text](/assets/image/zh/deploy/bots/line/line22.png) +![alt text](/images/zh/deploy/bots/line/line22.png) * Enter the connection (must be an HTTPS connection, which means you need an SSL certificate), click Update -![alt text](/assets/image/zh/deploy/bots/line/line23.png) +![alt text](/images/zh/deploy/bots/line/line23.png) * Select Use Webhook -![alt text](/assets/image/zh/deploy/bots/line/line24.png) +![alt text](/images/zh/deploy/bots/line/line24.png) 5. Click the "Verify" button to test if the connection is successful -![alt text](/assets/image/zh/deploy/bots/line/line25.png) +![alt text](/images/zh/deploy/bots/line/line25.png) ## Feature Configuration diff --git a/docs/en/usage/platforms/qq/aiocqhttp/lagrange.md b/en/usage/platforms/qq/aiocqhttp/lagrange.mdx similarity index 83% rename from docs/en/usage/platforms/qq/aiocqhttp/lagrange.md rename to en/usage/platforms/qq/aiocqhttp/lagrange.mdx index ee8eacb2e..cb54d4290 100644 --- a/docs/en/usage/platforms/qq/aiocqhttp/lagrange.md +++ b/en/usage/platforms/qq/aiocqhttp/lagrange.mdx @@ -1,12 +1,14 @@ -# Deploy Message Platform Lagrange +--- +title: "Deploy Message Platform Lagrange" +--- ## Lagrange Introduction Lagrange is a QQNT protocol reverse engineering framework that is lightweight and relatively stable. Connect through the OneBot 11 protocol, you need to select `OneBot v11` as the adapter. -::: warning + You need to use NT QQ to interact with the bot, old versions of QQ will not work properly -::: + ## Deployment Steps @@ -24,11 +26,11 @@ You need to log in to Github to download. If you don't need certain features, yo Follow the images to download: -![Image 1](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) +![Image 1](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) -![Image 2](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) +![Image 2](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) -![Image 3](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) +![Image 3](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) ### Final Steps @@ -46,7 +48,7 @@ If you cannot log in, please check if you have correctly filled in the signature You need to configure Lagrange to connect to LangBot. Please edit Lagrange's configuration file appsettings.json and ensure that the connection configuration in Implementations matches the content in the image below: -![Configure Connection](/assets/image/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) +![Configure Connection](/images/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) The Type must be `ReverseWebSocket`; Host is the IP of the host running LangBot, if on the same host, you can write `127.0.0.1`; @@ -60,8 +62,8 @@ Click on Bots, then click Add Select `OneBot v11` for `Platform/Adapter Selection` -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + Note, if you have network connection issues involving multiple docker containers, please refer to [Network Configuration Details](/en/workshop/network-details) -::: + diff --git a/docs/en/usage/platforms/qq/aiocqhttp/llonebot.md b/en/usage/platforms/qq/aiocqhttp/llonebot.mdx similarity index 78% rename from docs/en/usage/platforms/qq/aiocqhttp/llonebot.md rename to en/usage/platforms/qq/aiocqhttp/llonebot.mdx index aadd9fff9..8fa63cb93 100644 --- a/docs/en/usage/platforms/qq/aiocqhttp/llonebot.md +++ b/en/usage/platforms/qq/aiocqhttp/llonebot.mdx @@ -1,4 +1,6 @@ -# Deploy Message Platform LiteLoaderQQNT +--- +title: "Deploy Message Platform LiteLoaderQQNT" +--- Connect through the OneBot 11 protocol, you need to select ``OneBot v11`` as the adapter. @@ -8,7 +10,7 @@ Connect through the OneBot 11 protocol, you need to select ``OneBot v11`` as the Installation tutorial for LiteLoaderQQNT: https://llonebot.github.io/zh-CN/guide/getting-started -![Image 1](/assets/image/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) +![Image 1](/images/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) Make sure the IP address in the address is the address of the host running LangBot (if running on the same network, use 127.0.0.1) @@ -20,8 +22,8 @@ Click on Bots, then click Add Select `OneBot v11` for `Platform/Adapter Selection` -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + Note, if you have network connection issues involving multiple docker containers, please refer to [Network Configuration Details](/en/workshop/network-details) -::: + diff --git a/docs/en/usage/platforms/qq/aiocqhttp/napcat.md b/en/usage/platforms/qq/aiocqhttp/napcat.mdx similarity index 79% rename from docs/en/usage/platforms/qq/aiocqhttp/napcat.md rename to en/usage/platforms/qq/aiocqhttp/napcat.mdx index 74669eb95..ffbe02eff 100644 --- a/docs/en/usage/platforms/qq/aiocqhttp/napcat.md +++ b/en/usage/platforms/qq/aiocqhttp/napcat.mdx @@ -1,4 +1,6 @@ -# Deploy Message Platform NapCat +--- +title: "Deploy Message Platform NapCat" +--- Connect through the OneBot 11 protocol, you need to select ``OneBot v11`` as the adapter. @@ -11,12 +13,12 @@ Follow the [NapCat official documentation for installation](https://napcat.napne Only using webui operation as an example, for other configuration methods, please check the NapCat documentation. After logging in, you can check the logs in the console or Bash, find `[NapCat] [WebUi] WebUi Publish Panel Url: http://x.x.x.x:6099/webui?token=xxxxx ` -![napcat_webui_01](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) +![napcat_webui_01](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) Copy the Url to your browser or on Windows 11, press Ctrl and click the Url. After scanning the QR code to log in, you will enter the network configuration page. Click Add Network Configuration, select WebSocket Client, click Enable, then fill in `ws://127.0.0.1:2280/ws` in the Url field and save. -![napcat_webui_02](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) +![napcat_webui_02](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) ## NapCat Integration @@ -26,8 +28,8 @@ Click on Bots, then click Add Select `OneBot v11` for `Platform/Adapter Selection` -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + Note, if you have network connection issues involving multiple docker containers, please refer to [Network Configuration Details](/en/workshop/network-details) -::: + diff --git a/docs/en/usage/platforms/qq/official_webhook.md b/en/usage/platforms/qq/official_webhook.mdx similarity index 84% rename from docs/en/usage/platforms/qq/official_webhook.md rename to en/usage/platforms/qq/official_webhook.mdx index d1f03219e..5991cfd18 100644 --- a/docs/en/usage/platforms/qq/official_webhook.md +++ b/en/usage/platforms/qq/official_webhook.mdx @@ -1,10 +1,12 @@ -# Using QQ Official Bot API (Using webhook method) +--- +title: "Using QQ Official Bot API (Using webhook method)" +--- This article only provides the deployment of test bots. For the official launch of bots, please follow the [release process](https://q.qq.com/qqbot/#/home). -:::warning + QQ Official has issued an announcement prohibiting unauthorized access to AIGC features. Please use with caution. -::: + @@ -14,23 +16,23 @@ QQ Official has issued an announcement prohibiting unauthorized access to AIGC f Go to the [QQ Open Platform](https://q.qq.com/#/), find `Application Management` at the bottom, click Create Bot, fill in the basic information, and then enter the bot page, as shown: -![Bot Main Page](/assets/image/zh/deploy/bots/qq/official/qqofficial1.png) +![Bot Main Page](/images/zh/deploy/bots/qq/official/qqofficial1.png) -The `Release Process` in the `Home` option is the step to launch the bot. Since you are deploying a test version bot, you only need to complete the `Information` and `Sandbox Configuration` sections.
+The `Release Process` in the `Home` option is the step to launch the bot. Since you are deploying a test version bot, you only need to complete the `Information` and `Sandbox Configuration` sections.
First fill in the information, then click on Sandbox Configuration. #### Configure Sandbox Settings Click on `Sandbox Configuration`. -If you want to deploy in a QQ group, follow the requirements under `QQ Group ID` to select a group chat, and add users with private chat permissions in the message list configuration.
+If you want to deploy in a QQ group, follow the requirements under `QQ Group ID` to select a group chat, and add users with private chat permissions in the message list configuration.
If you want to deploy in a QQ channel, follow the requirements under `Channel ID` to select a channel ID, with bot type 0. #### Configure Development Management Click on `Development Management`. -![Development Management Page](/assets/image/zh/deploy/bots/qq/official/qqofficial2.png) +![Development Management Page](/images/zh/deploy/bots/qq/official/qqofficial2.png) Record the `AppID`, `Token`, and `AppSecret`, and add the IP address of the server where LangBot is located to the IP whitelist. @@ -42,7 +44,7 @@ Click on Bots, then click Add Select `QQ Official API` for `Platform/Adapter Selection` -![QQ Official Bot Integration with LangBot](/assets/image/zh/deploy/bots/qq/official/qqofficial3.png) +![QQ Official Bot Integration with LangBot](/images/zh/deploy/bots/qq/official/qqofficial3.png) ## Configure Callback Address @@ -52,7 +54,7 @@ LangBot must be deployed on a server with a public IP address, and HTTPS must be #### Subsequent Configuration -If Caddy fails to start, please read the [Caddy documentation](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile) or join the LangBot community group for help.
+If Caddy fails to start, please read the [Caddy documentation](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile) or join the LangBot community group for help.
Here are some possible issues: @@ -70,7 +72,7 @@ Click on `Callback Configuration` in the bot management portal, check all events Go to the LangBot configuration page, enable and select the corresponding QQ bot, copy the Webhook callback address from the corresponding bot configuration page, replace the IP address and port with the domain name configured in Caddy, and enter it in the request address. As shown in the image: -![Caddy Documentation](/assets/image/zh/deploy/bots/qq/official/qqofficial4.png) +![Caddy Documentation](/images/zh/deploy/bots/qq/official/qqofficial4.png) For example, if the domain is `testlb.com`, then enter `testlb.com/bots/xxxxxx-xxxxxx` in the request address, and click to confirm the configuration. If the callback address is saved successfully, it means the deployment is successful. If you see `Verification Failed`, please carefully check if the above configuration items are filled in correctly. diff --git a/docs/en/usage/platforms/readme.md b/en/usage/platforms/readme.mdx similarity index 83% rename from docs/en/usage/platforms/readme.md rename to en/usage/platforms/readme.mdx index 470888d09..71f6ff4ca 100644 --- a/docs/en/usage/platforms/readme.md +++ b/en/usage/platforms/readme.mdx @@ -1,8 +1,10 @@ -# Configure Bots (Bots) +--- +title: "Configure Bots (Bots)" +--- Bots are used to receive message events from messaging platforms and call pipelines to process messages. -![arch](/assets/image/zh/deploy/bots/arch.png) +![arch](/images/zh/deploy/bots/arch.png) | Platform | Status | Notes | Tutorial | @@ -18,5 +20,5 @@ Bots are used to receive message events from messaging platforms and call pipeli | WeCom Intelligent Bot | ✅ | wecom intelligent bot | [Tutorial](/en/usage/platforms/wecom/wecombot) | | WeCom Customer Service | ✅ | Enterprise external bot | [Tutorial](/en/usage/platforms/wecom/wecomcs) | | WeChat Official Account | ✅ | WeChat public platform bot | [Tutorial](/en/usage/platforms/wxoa) | -| OneBot v11 | ✅ | Uses a personal QQ account as a bot, requires an independent protocol client, supports OneBot v11 | [NapCat](/en/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/en/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/en/usage/platforms/qq/aiocqhttp/llonebot) | +| OneBot v11 | ✅ | Uses a personal QQ account as a bot, requires an independent protocol client, supports OneBot v11 | [NapCat](/en/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/en/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/en/usage/platforms/qq/aiocqhttp/llonebot) | | QQ Official Bot | ✅ | Connects to the QQ Open Platform bot API | [Tutorial](/en/usage/platforms/qq/official_webhook) | diff --git a/docs/en/usage/platforms/slack.md b/en/usage/platforms/slack.mdx similarity index 76% rename from docs/en/usage/platforms/slack.md rename to en/usage/platforms/slack.mdx index 8659cab1b..1b04ff5e6 100644 --- a/docs/en/usage/platforms/slack.md +++ b/en/usage/platforms/slack.mdx @@ -1,10 +1,12 @@ -# Connect to Slack Bot +--- +title: "Connect to Slack Bot" +--- ## Create Bot Go to the [Slack App Platform](https://api.slack.com/apps). -![Slack Platform](/assets/image/zh/deploy/bots/slack/slack_01.jpg) +![Slack Platform](/images/zh/deploy/bots/slack/slack_01.jpg) Click `Create New App` in the top right corner, select `from a manifest`, select the workspace where you want to deploy the bot, select next, and choose to create the bot. @@ -12,15 +14,15 @@ Enter the `Basic Information` option on the left, record the `signing_secret`. Enter `OAuth & Permissions` on the left, scroll down to `Scopes`, add the following bot permissions: -![Bot Permissions 1](/assets/image/zh/deploy/bots/slack/slack_02.jpg) +![Bot Permissions 1](/images/zh/deploy/bots/slack/slack_02.jpg) -![Bot Permissions 2](/assets/image/zh/deploy/bots/slack/slack_03.jpg) +![Bot Permissions 2](/images/zh/deploy/bots/slack/slack_03.jpg) -After adding the above permissions, click `Install to your workspace`, record the token starting with `xoxb-xxxxx`.
+After adding the above permissions, click `Install to your workspace`, record the token starting with `xoxb-xxxxx`.
**Note:** -**If you didn't add all permissions at once, you'll need to reinstall the App later.**
+**If you didn't add all permissions at once, you'll need to reinstall the App later.**
Enter the `App Home` tab on the left, scroll to the bottom where you'll find `Message Tab`, turn it on and check `Allow users to send Slash commands and messages from the messages tab`. @@ -29,17 +31,17 @@ Enter the `App Home` tab on the left, scroll to the bottom where you'll find `Me Enter `Event Subscriptions` on the left, turn on the switch, click `Subscribe to bot events`, add the following permissions: -![Event Permissions](/assets/image/zh/deploy/bots/slack/slack_04.jpg) +![Event Permissions](/images/zh/deploy/bots/slack/slack_04.jpg) After completing all the above operations, open the LangBot Webui configuration page, add a new bot -![Event Permissions](/assets/image/zh/deploy/bots/slack/connect_to_langbot.png) +![Event Permissions](/images/zh/deploy/bots/slack/connect_to_langbot.png) ## Start Bot -::: info + Since Slack officially requires https, please configure reverse proxy first according to the documentation [Configure HTTP Reverse Proxy and SSL](/en/workshop/production/proxy-and-ssl). -::: + After filling in the Slack configuration items, **start LangBot**. Enable and open the Slack bot configuration page on the LangBot homepage, copy the WebHook URL from it, then in the `Request URL` of the Event Subscriptions you just configured, fill in the WebHook URL. @@ -50,4 +52,4 @@ Otherwise, check if the above configuration items are filled in correctly. ## Effect Demonstration -![Effect Demonstration](/assets/image/zh/deploy/bots/slack/slack_05.jpg) +![Effect Demonstration](/images/zh/deploy/bots/slack/slack_05.jpg) diff --git a/docs/en/usage/platforms/telegram.md b/en/usage/platforms/telegram.mdx similarity index 54% rename from docs/en/usage/platforms/telegram.md rename to en/usage/platforms/telegram.mdx index 715b958d1..093de63ef 100644 --- a/docs/en/usage/platforms/telegram.md +++ b/en/usage/platforms/telegram.mdx @@ -1,22 +1,24 @@ -# Connect to Telegram Bot +--- +title: "Connect to Telegram Bot" +--- ## Create Bot Go to the [Telegram Bot Creation Page](https://t.me/botfather), follow the prompts, and create a bot. -![Telegram Bot Creation](/assets/image/zh/deploy/bots/telegram/telegram_01.png) +![Telegram Bot Creation](/images/zh/deploy/bots/telegram/telegram_01.png) -![Telegram Bot Creation](/assets/image/zh/deploy/bots/telegram/telegram_02.png) +![Telegram Bot Creation](/images/zh/deploy/bots/telegram/telegram_02.png) After creation, BotFather will return an API Token, please keep it safe. Next, turn off `Privacy Mode` to use it in group chats. -![Telegram Bot API Token](/assets/image/zh/deploy/bots/telegram/telegram_03.png) +![Telegram Bot API Token](/images/zh/deploy/bots/telegram/telegram_03.png) ## Connect to LangBot Open the LangBot Webui page, create a new bot -![Connect to LangBot](/assets/image/zh/deploy/bots/telegram/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/telegram/connect_to_langbot.png) After filling in, start LangBot. If configured successfully, the log will show `[02-02 16:48:15.263] manager.py (68) - [INFO] : Initializing platform adapter 1: telegram`, keep LangBot running. @@ -24,6 +26,6 @@ After filling in, start LangBot. If configured successfully, the log will show ` Now you can use the bot normally in groups or private messages. -![Telegram Bot Usage](/assets/image/zh/deploy/bots/telegram/telegram_04.png) +![Telegram Bot Usage](/images/zh/deploy/bots/telegram/telegram_04.png) -![Telegram Bot Usage](/assets/image/zh/deploy/bots/telegram/telegram_05.png) +![Telegram Bot Usage](/images/zh/deploy/bots/telegram/telegram_05.png) diff --git a/docs/en/usage/platforms/wecom/wecom.md b/en/usage/platforms/wecom/wecom.mdx similarity index 66% rename from docs/en/usage/platforms/wecom/wecom.md rename to en/usage/platforms/wecom/wecom.mdx index 698ece405..dbc0e76c8 100644 --- a/docs/en/usage/platforms/wecom/wecom.md +++ b/en/usage/platforms/wecom/wecom.mdx @@ -1,67 +1,67 @@ -# Deploy WeCom Bot +--- +title: "Deploy WeCom Bot" +--- Deploy the WeCom (Enterprise WeChat) bot to integrate with LangBot. -:::info -- This integration is for internal enterprise applications, used within your organization. If external customer support is needed, please refer to the [WeCom Customer Service integration solution](wecomcs.md). + - The WeCom callback address requires a public IP and domain name. We recommend you first follow [Configure HTTP Reverse Proxy](/en/workshop/production/proxy-and-ssl) to configure the LangBot callback address. -::: + ## Record Corporate ID Open the [WeCom Admin Portal](https://work.weixin.qq.com/), click `My Enterprise`, and record the `Corporate ID` at the bottom. -![Corp ID](/assets/image/zh/deploy/bots/wecom/wecom/03-corp-id.png) +![Corp ID](/images/zh/deploy/bots/wecom/wecom/03-corp-id.png) ## Create Bot Click `App Management`, then `Build Your Own`, and click `Create App`. -![App Management](/assets/image/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) +![App Management](/images/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) Fill in the basic information for the bot: -![Create Application](/assets/image/zh/deploy/bots/wecom/wecom/02-create-app.png) +![Create Application](/images/zh/deploy/bots/wecom/wecom/02-create-app.png) View and record the bot's secret: -![Bot Secret](/assets/image/zh/deploy/bots/wecom/wecom/04-bot-secret.png) +![Bot Secret](/images/zh/deploy/bots/wecom/wecom/04-bot-secret.png) Get it from the WeCom client as prompted. ## Enable Contact Sync Permission -:::info -- This configuration is required for LangBot to support mass messaging. The related code can be found at libs/wecom_api/api.py. + - This feature has not been implemented yet as LangBot is still under development. - This field can be filled with any random characters, but **cannot be empty**. -::: + Click `Security and Management`, then `Management Tools`, `Contact Sync`; configure the trusted IP by adding the IP address of the server where LangBot is deployed. Click `View Secret` and record it - this is the contacts_secret (Contact Sync Secret). -![Contact Sync Secret](/assets/image/zh/deploy/bots/wecom/wecom/08-contact-secret.png) +![Contact Sync Secret](/images/zh/deploy/bots/wecom/wecom/08-contact-secret.png) ## Create Bot on LangBot On the LangBot bot page, click `Create Bot`, enter a name, select `WeCom`, and fill in the Corporate ID, Bot Secret, and Contact Sync Secret. -![Create WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) +![Create WeCom Bot](/images/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) Click submit to enter the bot edit page, then click enable. At this point you'll see the Webhook callback address—copy it: -![Webhook Callback Address](/assets/image/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) +![Webhook Callback Address](/images/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) ## Set Callback Address Return to the WeCom bot admin page, click `Receive Messages`, `Set API Reception`, and paste LangBot's Webhook callback address into the `URL` field: -![Set API Receiver](/assets/image/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) +![Set API Receiver](/images/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) Click to randomly generate the Token and EncodingAESKey, and record them. **Keep this page open.** Go back to the LangBot WeCom bot configuration page, enter the Token and EncodingAESKey, and click Save. -![Save WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) +![Save WeCom Bot](/images/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) Return to the **page where you just filled in the Webhook callback address**, and click Save to complete the configuration. If you see **request URL failed**, please carefully double-check your configuration. @@ -69,7 +69,7 @@ Return to the **page where you just filled in the Webhook callback address**, an Go back to this application's admin page, find `Enterprise Trusted IP` at the bottom, and add the IP address of your LangBot deployment server. -![Corp Trusted IP](/assets/image/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) +![Corp Trusted IP](/images/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) Click Save. diff --git a/docs/en/usage/platforms/wecom/wecombot.md b/en/usage/platforms/wecom/wecombot.mdx similarity index 74% rename from docs/en/usage/platforms/wecom/wecombot.md rename to en/usage/platforms/wecom/wecombot.mdx index 592eb90a2..abe8a4c97 100644 --- a/docs/en/usage/platforms/wecom/wecombot.md +++ b/en/usage/platforms/wecom/wecombot.mdx @@ -1,21 +1,23 @@ -# Deploying WeCom Intelligent Bot +--- +title: "Deploying WeCom Intelligent Bot" +--- ## Creating a Bot First, log in to the [WeCom Admin Console](https://work.weixin.qq.com/wework_admin/frame#/). -![Homepage](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_1.png) +![Homepage](/images/zh/deploy/bots/wecom/wecombot/wecombot_1.png) Click `Security And Management` in the left sidebar, then click `Intelligent Bot` under `Management Tool`. As shown: -![Intelligent Bot](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_2.png) +![Intelligent Bot](/images/zh/deploy/bots/wecom/wecombot/wecombot_2.png) Click `Create Bot`, scroll to the bottom of the page, click `Create via API Mode`, and enter the page: -![Create via API Mode](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_3.png) +![Create via API Mode](/images/zh/deploy/bots/wecom/wecombot/wecombot_3.png) Click to randomly generate Token and EncodingAESKey, then fill in the basic bot information above. **Pay attention to setting the visibility scope**. @@ -27,20 +29,20 @@ Start the LangBot main program, select the adapter `WeCom Intelligent Bot`, and Among them, the token is Token, the Encoding-AESKey is EncodingAESKey, and the Bot ID can be filled in as xxx (or filled in randomly, it will be changed later). After filling in, click `Save`, and `Enable` the robot. -![WeCom Intelligent Bot Adapter](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_4.png) +![WeCom Intelligent Bot Adapter](/images/zh/deploy/bots/wecom/wecombot/wecombot_4.png) On the LangBot homepage, enable and select the corresponding bot, click to enter the configuration page, copy the Webhook callback address -::: info + We recommend that you first refer to [Configure HTTP Reverse Proxy](/en/workshop/production/proxy-and-ssl) to configure the LangBot callback address. -::: + -![Webhook Callback Address](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_8.png) +![Webhook Callback Address](/images/zh/deploy/bots/wecom/wecombot/wecombot_8.png) Return to the WeCom robot configuration page and fill the copied webhook address into `URL Callback`. If the creation is successful, it will jump to the details page. If the message `Request URL Failed` appears, please double-check whether the above steps have been completed one by one. Details page after successful creation: -![Creation Successful](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_5.png) +![Creation Successful](/images/zh/deploy/bots/wecom/wecombot/wecombot_5.png) Copy the `Bot ID` from the WeCom robot details page, return to the LangBot management page, change the Bot ID of the deployed intelligent robot to the copied ID, and restart the robot. @@ -48,7 +50,7 @@ Copy the `Bot ID` from the WeCom robot details page, return to the LangBot manag Enter WeCom, click `➕`, as shown: -![Add Bot](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_6.png) +![Add Bot](/images/zh/deploy/bots/wecom/wecombot/wecombot_6.png) Click `Company-Created`, select the created bot, and enter the chat interface. @@ -56,4 +58,4 @@ Similarly, if you want to invite the bot to a group chat, click the add member b ## Effect Images -![Effect Image 1](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_7.png) +![Effect Image 1](/images/zh/deploy/bots/wecom/wecombot/wecombot_7.png) diff --git a/docs/en/usage/platforms/wecom/wecomcs.md b/en/usage/platforms/wecom/wecomcs.mdx similarity index 59% rename from docs/en/usage/platforms/wecom/wecomcs.md rename to en/usage/platforms/wecom/wecomcs.mdx index 8b95cd95a..55a3f3911 100644 --- a/docs/en/usage/platforms/wecom/wecomcs.md +++ b/en/usage/platforms/wecom/wecomcs.mdx @@ -1,22 +1,22 @@ -# Deploy WeCom Customer Service +--- +title: "Deploy WeCom Customer Service" +--- -:::info - -This article details the process of deploying LangBot to a WeCom customer service account, which allows conversations between the customer service account and regular WeChat. If you only need to use it within WeCom, please refer to [WeCom Internal Application Implementation](wecom.md). + **Deploying a WeCom customer service account requires enterprise qualifications**. Please check the [WeCom Customer Service Integration Guide](https://developer.work.weixin.qq.com/document/path/94638) and provide the corresponding enterprise qualification certificates according to this document. -::: + ## Effect Demonstration -![Effect Demonstration](/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) +![Effect Demonstration](/images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) ## Connect to LangBot -![Connect to LangBot](/assets/image/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) -The subsequent configuration method and configuration items are the same as [WeCom Internal Application](wecom.md), except that `contacts_secret` is not required. +The subsequent configuration method and configuration items are the same as [WeCom Internal Application](wecom), except that `contacts_secret` is not required. ## Notes diff --git a/docs/en/usage/platforms/wxoa.md b/en/usage/platforms/wxoa.mdx similarity index 92% rename from docs/en/usage/platforms/wxoa.md rename to en/usage/platforms/wxoa.mdx index 5166ff084..da31821b3 100644 --- a/docs/en/usage/platforms/wxoa.md +++ b/en/usage/platforms/wxoa.mdx @@ -1,4 +1,6 @@ -# Deploy WeChat Official Account Bot +--- +title: "Deploy WeChat Official Account Bot" +--- Deploy WeChat Official Account bot to connect with LangBot. @@ -20,7 +22,7 @@ For more complex functionality, please contact the **LangBot team** for customiz Enter the [WeChat Official Account Platform](https://mp.weixin.qq.com/), if you already have an official account, scan the QR code to log in and enter the console. If you haven't registered an official account before, click Register Now, select `Official Account`, fill in the information in sequence, and enter the console. The console looks like this: -![Console Page](/assets/image/zh/deploy/bots/wxoa/wxoa1.png) +![Console Page](/images/zh/deploy/bots/wxoa/wxoa1.png) ## Set Callback Address @@ -28,7 +30,7 @@ If you haven't registered an official account before, click Register Now, select ### Get Configuration Items Click `Settings and Development`, `Development Interface Management`, and you'll see a page like this: -![Set Development Items](/assets/image/zh/deploy/bots/wxoa/wxoa2.png) +![Set Development Items](/images/zh/deploy/bots/wxoa/wxoa2.png) Record the `Developer ID (AppID)`, `Developer Password (AppSecret)`, and add the server where LangBot is deployed to the `IP Whitelist`. @@ -42,7 +44,7 @@ Click Set Server Configuration, enter `Token`, `EncodingAESKey`, and change the At this point, open the LangBot Webui page, create a new bot, and fill in the four configuration items obtained (AppID, AppSecret, token, EncodingAESKey) -![Set Development Items](/assets/image/zh/deploy/bots/wxoa/connect_to_langbot.png) +![Set Development Items](/images/zh/deploy/bots/wxoa/connect_to_langbot.png) In the configuration items, the `Mode` option is the selected integration mode, where the default is `drop`. `drop` is the traditional message exchange mode, and `passive` is the "send any text to get reply" mode. diff --git a/en/workshop/302ai-integration.mdx b/en/workshop/302ai-integration.mdx new file mode 100644 index 000000000..747bc1473 --- /dev/null +++ b/en/workshop/302ai-integration.mdx @@ -0,0 +1,7 @@ +--- +title: "Integrating Models with 302 AI" +--- + +Open the WebUI page, and select [302 AI](https://share.302.ai/SuTG99) when adding a model. + +![model](/images/zh/workshop/302ai-integration/model.png) diff --git a/docs/en/workshop/impl-platform-adapter.md b/en/workshop/impl-platform-adapter.mdx similarity index 94% rename from docs/en/workshop/impl-platform-adapter.md rename to en/workshop/impl-platform-adapter.mdx index 9983ea85c..601571cf9 100644 --- a/docs/en/workshop/impl-platform-adapter.md +++ b/en/workshop/impl-platform-adapter.mdx @@ -1,4 +1,6 @@ -# Implementing a Message Platform Adapter +--- +title: "Implementing a Message Platform Adapter" +--- This article will use the `aiocqhttp` adapter as an example to explain how to implement a new message platform adapter for LangBot, in order to integrate new message platform protocols such as WhatsApp and Discord. @@ -40,7 +42,7 @@ The main work of a message platform adapter is to `receive events from the messa The following diagram shows the processing patterns for two scenarios: message platform protocol without SDK and with mature SDK. In the first case, we need to implement connection management and network format data conversion to LB message Python objects according to the message platform protocol documentation. In the second case, the message platform has a mature SDK, we only need to create connections according to the SDK documentation, register event listeners, and implement message converters. -![alt text](/assets/image/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) +![alt text](/images/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) In the `pkg.platform.sources.aiocqhttp` file, we can see not only `AiocqhttpAdapter`, but also `class AiocqhttpMessageConverter(adapter.MessageConverter):` and `class AiocqhttpEventConverter(adapter.EventConverter):`. diff --git a/docs/en/workshop/mcp-details.md b/en/workshop/mcp-details.mdx similarity index 83% rename from docs/en/workshop/mcp-details.md rename to en/workshop/mcp-details.mdx index 872085d70..cac1e49bc 100644 --- a/docs/en/workshop/mcp-details.md +++ b/en/workshop/mcp-details.mdx @@ -1,4 +1,6 @@ -# MCP Ecosystem Details +--- +title: "MCP Ecosystem Details" +--- The [MCP Protocol](https://modelcontextprotocol.io/) is a protocol that describes the interaction between applications and LLMs, and has been adopted by various products. LangBot can act as an MCP Client to connect to MCP Servers, providing extensive tools for LLMs to use during conversations with users. @@ -10,16 +12,14 @@ There are two types of MCP Servers in the market: - Executable files implemented in Node or Python, communicating with LangBot through `stdio` (standard input/output) - Web services based on HTTP protocol, communicating with LangBot through HTTP protocol -:::info - -- You can check existing MCP Servers in the [MCP Server List](https://github.com/punkpeye/awesome-mcp-servers). + - For online hosted MCP Servers, you can find them at [Composio MCP](https://mcp.composio.dev/). - To write your own MCP Server, you can refer to the [MCP Protocol Documentation](https://modelcontextprotocol.io/quickstart/server) and [MCP Server Examples](https://modelcontextprotocol.io/examples). -::: + ## Configuring MCP Server Please refer to the [System Settings Documentation](/en/deploy/settings.html) -After configuration, you can use the `!func` command in chat to view registered MCP tools. When chatting with models that support Function Calling, LangBot will automatically call MCP tools. \ No newline at end of file +After configuration, you can use the `!func` command in chat to view registered MCP tools. When chatting with models that support Function Calling, LangBot will automatically call MCP tools. diff --git a/docs/en/workshop/network-details.md b/en/workshop/network-details.mdx similarity index 88% rename from docs/en/workshop/network-details.md rename to en/workshop/network-details.mdx index 790160f92..208865568 100644 --- a/docs/en/workshop/network-details.md +++ b/en/workshop/network-details.mdx @@ -1,15 +1,16 @@ -# Network Configuration Details +--- +title: "Network Configuration Details" +--- -::: info -Some messaging platforms (such as personal QQ accounts) require an independent protocol endpoint to process messages. If you are using such messaging platforms, please refer to the following network configuration. + At the same time, if your LangBot instance needs to connect to other services running in containers (such as Ollama), you can also refer to the following configuration, replacing `messaging platform` with `the service you want to connect to`. -::: + LangBot and some messaging platforms can both be deployed using Docker. Below are network configuration details for four different scenarios. -:::info Table of Contents + [[toc]] -::: + ## Both LangBot and Messaging Platform Running in Docker Containers @@ -55,8 +56,8 @@ Configure the messaging platform and LangBot settings according to the documenta ## Only Messaging Platform Running in Docker Container (Not Recommended) -:::warning + Only supports Linux, or other systems that support host mode docker networking. -::: + Currently, LangBot's aiocqhttp adapter only supports reverse WebSocket connections. When the messaging platform runs in a Docker container while LangBot runs directly on the host machine, the messaging platform must act as a client connecting to LangBot. In this case, you can only set the messaging platform's network to `host` mode, and then set its WS connection address to 127.0.0.1, with the port corresponding to the port enabled by LangBot's aiocqhttp adapter. diff --git a/docs/en/workshop/newapi-integration.md b/en/workshop/newapi-integration.mdx similarity index 90% rename from docs/en/workshop/newapi-integration.md rename to en/workshop/newapi-integration.mdx index 506b68508..f3c5d1595 100644 --- a/docs/en/workshop/newapi-integration.md +++ b/en/workshop/newapi-integration.mdx @@ -1,4 +1,6 @@ -# Integrating LangBot with New API +--- +title: "Integrating LangBot with New API" +--- New API is a next-generation large model gateway and AI asset management system, designed to address issues such as fragmented access to multiple AI service providers, difficulty in cost control, and insufficient service stability. Its core advantages are focused on three aspects: @@ -35,10 +37,10 @@ After deployment, open `http://server-IP:3000` to configure New API. - Request URL: Enter `http://server-IP:3000/v1` - API Key: Enter the token created in New API -![](/assets/image/zh/workshop/newapi-integration/model.png) +![](/images/zh/workshop/newapi-integration/model.png) 2. **Select the newly configured model in the pipeline** -![](/assets/image/zh/workshop/newapi-integration/model2.png) +![](/images/zh/workshop/newapi-integration/model2.png) -3. Now you can use the models in New API. \ No newline at end of file +3. Now you can use the models in New API. diff --git a/docs/en/workshop/ppio-integration.md b/en/workshop/ppio-integration.mdx similarity index 57% rename from docs/en/workshop/ppio-integration.md rename to en/workshop/ppio-integration.mdx index 0f1094732..bc451f632 100644 --- a/docs/en/workshop/ppio-integration.md +++ b/en/workshop/ppio-integration.mdx @@ -1,5 +1,7 @@ -# Integrating Models with PPIO Cloud API +--- +title: "Integrating Models with PPIO Cloud API" +--- Open the WebUI page, and select [PPIO Cloud](https://ppio.cn/user/register?from=ppinfra&invited_by=QJKFYD&utm_source=github_langbot) when adding a model. -![model](/assets/image/zh/workshop/ppio-integration/model.png) \ No newline at end of file +![model](/images/zh/workshop/ppio-integration/model.png) diff --git a/docs/en/workshop/production/proxy-and-ssl.md b/en/workshop/production/proxy-and-ssl.mdx similarity index 97% rename from docs/en/workshop/production/proxy-and-ssl.md rename to en/workshop/production/proxy-and-ssl.mdx index 8d40a0652..4fc11f39f 100644 --- a/docs/en/workshop/production/proxy-and-ssl.md +++ b/en/workshop/production/proxy-and-ssl.mdx @@ -1,12 +1,14 @@ -# Configure HTTP Reverse Proxy or Access LangBot Through Gateway +--- +title: "Configure HTTP Reverse Proxy or Access LangBot Through Gateway" +--- LangBot does not have built-in SSL support for HTTPS services. If you need to resolve a domain name to a LangBot instance, or need to use HTTPS to access LangBot WebUI and webhook addresses for various bots, please refer to this document to deploy NGINX or Caddy to implement HTTP reverse proxy. You need to deploy LangBot on a host with a public IP address, purchase a domain name, and resolve the domain name to the host's public IP. -::: warning + If you need to use bots that require Webhook callback addresses such as QQ Official Bot, WeChat Official Account, WeCom, Slack, LINE, etc., you must configure HTTP reverse proxy according to this document. -::: + ## Caddy @@ -25,9 +27,9 @@ your.domain.com { } ``` -::: info + If your Caddy and LangBot are deployed using containers, please check [Container Network Configuration Details](/en/workshop/network-details) -::: + Now, you can access LangBot WebUI through your browser at `https://your.domain.com`. diff --git a/docs/public/favicon.ico b/favicon.ico similarity index 100% rename from docs/public/favicon.ico rename to favicon.ico diff --git a/docs/public/google7804ffd730579dcd.html b/google7804ffd730579dcd.html similarity index 100% rename from docs/public/google7804ffd730579dcd.html rename to google7804ffd730579dcd.html diff --git a/docs/assets/image/zh/api/copy_api_key.png b/images/zh/api/copy_api_key.png similarity index 100% rename from docs/assets/image/zh/api/copy_api_key.png rename to images/zh/api/copy_api_key.png diff --git a/docs/assets/image/zh/api/create_api_key.png b/images/zh/api/create_api_key.png similarity index 100% rename from docs/assets/image/zh/api/create_api_key.png rename to images/zh/api/create_api_key.png diff --git a/docs/assets/image/zh/deploy/bots/arch.png b/images/zh/deploy/bots/arch.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/arch.png rename to images/zh/deploy/bots/arch.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/connect_to_langbot.png b/images/zh/deploy/bots/dingtalk/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/connect_to_langbot.png rename to images/zh/deploy/bots/dingtalk/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk1.png b/images/zh/deploy/bots/dingtalk/dingtalk1.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk1.png rename to images/zh/deploy/bots/dingtalk/dingtalk1.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk10.png b/images/zh/deploy/bots/dingtalk/dingtalk10.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk10.png rename to images/zh/deploy/bots/dingtalk/dingtalk10.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk11.png b/images/zh/deploy/bots/dingtalk/dingtalk11.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk11.png rename to images/zh/deploy/bots/dingtalk/dingtalk11.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk12.png b/images/zh/deploy/bots/dingtalk/dingtalk12.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk12.png rename to images/zh/deploy/bots/dingtalk/dingtalk12.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk13.png b/images/zh/deploy/bots/dingtalk/dingtalk13.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk13.png rename to images/zh/deploy/bots/dingtalk/dingtalk13.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk14.png b/images/zh/deploy/bots/dingtalk/dingtalk14.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk14.png rename to images/zh/deploy/bots/dingtalk/dingtalk14.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk15.png b/images/zh/deploy/bots/dingtalk/dingtalk15.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk15.png rename to images/zh/deploy/bots/dingtalk/dingtalk15.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk2.png b/images/zh/deploy/bots/dingtalk/dingtalk2.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk2.png rename to images/zh/deploy/bots/dingtalk/dingtalk2.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk3.png b/images/zh/deploy/bots/dingtalk/dingtalk3.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk3.png rename to images/zh/deploy/bots/dingtalk/dingtalk3.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk4.png b/images/zh/deploy/bots/dingtalk/dingtalk4.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk4.png rename to images/zh/deploy/bots/dingtalk/dingtalk4.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk5.png b/images/zh/deploy/bots/dingtalk/dingtalk5.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk5.png rename to images/zh/deploy/bots/dingtalk/dingtalk5.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk6.png b/images/zh/deploy/bots/dingtalk/dingtalk6.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk6.png rename to images/zh/deploy/bots/dingtalk/dingtalk6.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk7.png b/images/zh/deploy/bots/dingtalk/dingtalk7.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk7.png rename to images/zh/deploy/bots/dingtalk/dingtalk7.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk8.png b/images/zh/deploy/bots/dingtalk/dingtalk8.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk8.png rename to images/zh/deploy/bots/dingtalk/dingtalk8.png diff --git a/docs/assets/image/zh/deploy/bots/dingtalk/dingtalk9.png b/images/zh/deploy/bots/dingtalk/dingtalk9.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/dingtalk/dingtalk9.png rename to images/zh/deploy/bots/dingtalk/dingtalk9.png diff --git a/docs/assets/image/zh/deploy/bots/discord/connect_to_langbot.png b/images/zh/deploy/bots/discord/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/connect_to_langbot.png rename to images/zh/deploy/bots/discord/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_01.png b/images/zh/deploy/bots/discord/discord_01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_01.png rename to images/zh/deploy/bots/discord/discord_01.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_02.png b/images/zh/deploy/bots/discord/discord_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_02.png rename to images/zh/deploy/bots/discord/discord_02.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_03.png b/images/zh/deploy/bots/discord/discord_03.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_03.png rename to images/zh/deploy/bots/discord/discord_03.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_04.png b/images/zh/deploy/bots/discord/discord_04.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_04.png rename to images/zh/deploy/bots/discord/discord_04.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_05.png b/images/zh/deploy/bots/discord/discord_05.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_05.png rename to images/zh/deploy/bots/discord/discord_05.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_06.png b/images/zh/deploy/bots/discord/discord_06.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_06.png rename to images/zh/deploy/bots/discord/discord_06.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_07.png b/images/zh/deploy/bots/discord/discord_07.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_07.png rename to images/zh/deploy/bots/discord/discord_07.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_08.png b/images/zh/deploy/bots/discord/discord_08.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_08.png rename to images/zh/deploy/bots/discord/discord_08.png diff --git a/docs/assets/image/zh/deploy/bots/discord/discord_09.png b/images/zh/deploy/bots/discord/discord_09.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/discord/discord_09.png rename to images/zh/deploy/bots/discord/discord_09.png diff --git a/docs/assets/image/zh/deploy/bots/gewechat/gewechat_01.png b/images/zh/deploy/bots/gewechat/gewechat_01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/gewechat/gewechat_01.png rename to images/zh/deploy/bots/gewechat/gewechat_01.png diff --git a/docs/assets/image/zh/deploy/bots/gewechat/gewechat_02.png b/images/zh/deploy/bots/gewechat/gewechat_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/gewechat/gewechat_02.png rename to images/zh/deploy/bots/gewechat/gewechat_02.png diff --git a/docs/assets/image/zh/deploy/bots/kook/01-dashboard.png b/images/zh/deploy/bots/kook/01-dashboard.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/01-dashboard.png rename to images/zh/deploy/bots/kook/01-dashboard.png diff --git a/docs/assets/image/zh/deploy/bots/kook/02-create-app.png b/images/zh/deploy/bots/kook/02-create-app.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/02-create-app.png rename to images/zh/deploy/bots/kook/02-create-app.png diff --git a/docs/assets/image/zh/deploy/bots/kook/03-app-created.png b/images/zh/deploy/bots/kook/03-app-created.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/03-app-created.png rename to images/zh/deploy/bots/kook/03-app-created.png diff --git a/docs/assets/image/zh/deploy/bots/kook/04-app-overview.png b/images/zh/deploy/bots/kook/04-app-overview.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/04-app-overview.png rename to images/zh/deploy/bots/kook/04-app-overview.png diff --git a/docs/assets/image/zh/deploy/bots/kook/05-bot-token.png b/images/zh/deploy/bots/kook/05-bot-token.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/05-bot-token.png rename to images/zh/deploy/bots/kook/05-bot-token.png diff --git a/docs/assets/image/zh/deploy/bots/kook/06-invite-link.png b/images/zh/deploy/bots/kook/06-invite-link.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/06-invite-link.png rename to images/zh/deploy/bots/kook/06-invite-link.png diff --git a/docs/assets/image/zh/deploy/bots/kook/07-message-filters.png b/images/zh/deploy/bots/kook/07-message-filters.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/07-message-filters.png rename to images/zh/deploy/bots/kook/07-message-filters.png diff --git a/docs/assets/image/zh/deploy/bots/kook/08-permissions-enabled.png b/images/zh/deploy/bots/kook/08-permissions-enabled.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/08-permissions-enabled.png rename to images/zh/deploy/bots/kook/08-permissions-enabled.png diff --git a/docs/assets/image/zh/deploy/bots/kook/09-langbot-bots.png b/images/zh/deploy/bots/kook/09-langbot-bots.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/09-langbot-bots.png rename to images/zh/deploy/bots/kook/09-langbot-bots.png diff --git a/docs/assets/image/zh/deploy/bots/kook/10-bot-config.png b/images/zh/deploy/bots/kook/10-bot-config.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/10-bot-config.png rename to images/zh/deploy/bots/kook/10-bot-config.png diff --git a/docs/assets/image/zh/deploy/bots/kook/11-bot-created.png b/images/zh/deploy/bots/kook/11-bot-created.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/11-bot-created.png rename to images/zh/deploy/bots/kook/11-bot-created.png diff --git a/docs/assets/image/zh/deploy/bots/kook/12-bot-enabled.png b/images/zh/deploy/bots/kook/12-bot-enabled.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/kook/12-bot-enabled.png rename to images/zh/deploy/bots/kook/12-bot-enabled.png diff --git a/docs/assets/image/zh/deploy/bots/lark/connect_to_langbot.png b/images/zh/deploy/bots/lark/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/connect_to_langbot.png rename to images/zh/deploy/bots/lark/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/lark/connect_to_langbot01.png b/images/zh/deploy/bots/lark/connect_to_langbot01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/connect_to_langbot01.png rename to images/zh/deploy/bots/lark/connect_to_langbot01.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_01.png b/images/zh/deploy/bots/lark/lark_01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_01.png rename to images/zh/deploy/bots/lark/lark_01.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_02.png b/images/zh/deploy/bots/lark/lark_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_02.png rename to images/zh/deploy/bots/lark/lark_02.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_03.png b/images/zh/deploy/bots/lark/lark_03.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_03.png rename to images/zh/deploy/bots/lark/lark_03.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_04.png b/images/zh/deploy/bots/lark/lark_04.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_04.png rename to images/zh/deploy/bots/lark/lark_04.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_05.png b/images/zh/deploy/bots/lark/lark_05.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_05.png rename to images/zh/deploy/bots/lark/lark_05.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_06.png b/images/zh/deploy/bots/lark/lark_06.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_06.png rename to images/zh/deploy/bots/lark/lark_06.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_07.png b/images/zh/deploy/bots/lark/lark_07.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_07.png rename to images/zh/deploy/bots/lark/lark_07.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_08.png b/images/zh/deploy/bots/lark/lark_08.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_08.png rename to images/zh/deploy/bots/lark/lark_08.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_09.png b/images/zh/deploy/bots/lark/lark_09.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_09.png rename to images/zh/deploy/bots/lark/lark_09.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_10.png b/images/zh/deploy/bots/lark/lark_10.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_10.png rename to images/zh/deploy/bots/lark/lark_10.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_11.png b/images/zh/deploy/bots/lark/lark_11.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_11.png rename to images/zh/deploy/bots/lark/lark_11.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_12.png b/images/zh/deploy/bots/lark/lark_12.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_12.png rename to images/zh/deploy/bots/lark/lark_12.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_13.png b/images/zh/deploy/bots/lark/lark_13.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_13.png rename to images/zh/deploy/bots/lark/lark_13.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_14.png b/images/zh/deploy/bots/lark/lark_14.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_14.png rename to images/zh/deploy/bots/lark/lark_14.png diff --git a/docs/assets/image/zh/deploy/bots/lark/lark_15.png b/images/zh/deploy/bots/lark/lark_15.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/lark/lark_15.png rename to images/zh/deploy/bots/lark/lark_15.png diff --git a/docs/assets/image/zh/deploy/bots/line/line01.png b/images/zh/deploy/bots/line/line01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line01.png rename to images/zh/deploy/bots/line/line01.png diff --git a/docs/assets/image/zh/deploy/bots/line/line02.png b/images/zh/deploy/bots/line/line02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line02.png rename to images/zh/deploy/bots/line/line02.png diff --git a/docs/assets/image/zh/deploy/bots/line/line03.png b/images/zh/deploy/bots/line/line03.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line03.png rename to images/zh/deploy/bots/line/line03.png diff --git a/docs/assets/image/zh/deploy/bots/line/line04.png b/images/zh/deploy/bots/line/line04.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line04.png rename to images/zh/deploy/bots/line/line04.png diff --git a/docs/assets/image/zh/deploy/bots/line/line05.png b/images/zh/deploy/bots/line/line05.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line05.png rename to images/zh/deploy/bots/line/line05.png diff --git a/docs/assets/image/zh/deploy/bots/line/line06.png b/images/zh/deploy/bots/line/line06.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line06.png rename to images/zh/deploy/bots/line/line06.png diff --git a/docs/assets/image/zh/deploy/bots/line/line07.png b/images/zh/deploy/bots/line/line07.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line07.png rename to images/zh/deploy/bots/line/line07.png diff --git a/docs/assets/image/zh/deploy/bots/line/line08.png b/images/zh/deploy/bots/line/line08.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line08.png rename to images/zh/deploy/bots/line/line08.png diff --git a/docs/assets/image/zh/deploy/bots/line/line09.png b/images/zh/deploy/bots/line/line09.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line09.png rename to images/zh/deploy/bots/line/line09.png diff --git a/docs/assets/image/zh/deploy/bots/line/line10.png b/images/zh/deploy/bots/line/line10.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line10.png rename to images/zh/deploy/bots/line/line10.png diff --git a/docs/assets/image/zh/deploy/bots/line/line11.png b/images/zh/deploy/bots/line/line11.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line11.png rename to images/zh/deploy/bots/line/line11.png diff --git a/docs/assets/image/zh/deploy/bots/line/line12.png b/images/zh/deploy/bots/line/line12.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line12.png rename to images/zh/deploy/bots/line/line12.png diff --git a/docs/assets/image/zh/deploy/bots/line/line13.png b/images/zh/deploy/bots/line/line13.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line13.png rename to images/zh/deploy/bots/line/line13.png diff --git a/docs/assets/image/zh/deploy/bots/line/line14.png b/images/zh/deploy/bots/line/line14.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line14.png rename to images/zh/deploy/bots/line/line14.png diff --git a/docs/assets/image/zh/deploy/bots/line/line15.png b/images/zh/deploy/bots/line/line15.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line15.png rename to images/zh/deploy/bots/line/line15.png diff --git a/docs/assets/image/zh/deploy/bots/line/line16.png b/images/zh/deploy/bots/line/line16.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line16.png rename to images/zh/deploy/bots/line/line16.png diff --git a/docs/assets/image/zh/deploy/bots/line/line17.png b/images/zh/deploy/bots/line/line17.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line17.png rename to images/zh/deploy/bots/line/line17.png diff --git a/docs/assets/image/zh/deploy/bots/line/line18.png b/images/zh/deploy/bots/line/line18.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line18.png rename to images/zh/deploy/bots/line/line18.png diff --git a/docs/assets/image/zh/deploy/bots/line/line19.png b/images/zh/deploy/bots/line/line19.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line19.png rename to images/zh/deploy/bots/line/line19.png diff --git a/docs/assets/image/zh/deploy/bots/line/line20.png b/images/zh/deploy/bots/line/line20.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line20.png rename to images/zh/deploy/bots/line/line20.png diff --git a/docs/assets/image/zh/deploy/bots/line/line21.png b/images/zh/deploy/bots/line/line21.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line21.png rename to images/zh/deploy/bots/line/line21.png diff --git a/docs/assets/image/zh/deploy/bots/line/line22.png b/images/zh/deploy/bots/line/line22.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line22.png rename to images/zh/deploy/bots/line/line22.png diff --git a/docs/assets/image/zh/deploy/bots/line/line23.png b/images/zh/deploy/bots/line/line23.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line23.png rename to images/zh/deploy/bots/line/line23.png diff --git a/docs/assets/image/zh/deploy/bots/line/line24.png b/images/zh/deploy/bots/line/line24.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line24.png rename to images/zh/deploy/bots/line/line24.png diff --git a/docs/assets/image/zh/deploy/bots/line/line25.png b/images/zh/deploy/bots/line/line25.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line25.png rename to images/zh/deploy/bots/line/line25.png diff --git a/docs/assets/image/zh/deploy/bots/line/line26.png b/images/zh/deploy/bots/line/line26.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line26.png rename to images/zh/deploy/bots/line/line26.png diff --git a/docs/assets/image/zh/deploy/bots/line/line27.png b/images/zh/deploy/bots/line/line27.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line27.png rename to images/zh/deploy/bots/line/line27.png diff --git a/docs/assets/image/zh/deploy/bots/line/line28.png b/images/zh/deploy/bots/line/line28.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line28.png rename to images/zh/deploy/bots/line/line28.png diff --git a/docs/assets/image/zh/deploy/bots/line/line29.png b/images/zh/deploy/bots/line/line29.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line29.png rename to images/zh/deploy/bots/line/line29.png diff --git a/docs/assets/image/zh/deploy/bots/line/line30.png b/images/zh/deploy/bots/line/line30.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/line/line30.png rename to images/zh/deploy/bots/line/line30.png diff --git a/docs/assets/image/zh/deploy/bots/qq/official/qqofficial1.png b/images/zh/deploy/bots/qq/official/qqofficial1.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/official/qqofficial1.png rename to images/zh/deploy/bots/qq/official/qqofficial1.png diff --git a/docs/assets/image/zh/deploy/bots/qq/official/qqofficial2.png b/images/zh/deploy/bots/qq/official/qqofficial2.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/official/qqofficial2.png rename to images/zh/deploy/bots/qq/official/qqofficial2.png diff --git a/docs/assets/image/zh/deploy/bots/qq/official/qqofficial3.png b/images/zh/deploy/bots/qq/official/qqofficial3.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/official/qqofficial3.png rename to images/zh/deploy/bots/qq/official/qqofficial3.png diff --git a/docs/assets/image/zh/deploy/bots/qq/official/qqofficial4.png b/images/zh/deploy/bots/qq/official/qqofficial4.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/official/qqofficial4.png rename to images/zh/deploy/bots/qq/official/qqofficial4.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png b/images/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png rename to images/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png b/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png rename to images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png b/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png rename to images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png b/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png rename to images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png b/images/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png rename to images/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png b/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png rename to images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png b/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png rename to images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png diff --git a/docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png b/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png rename to images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png diff --git a/docs/assets/image/zh/deploy/bots/slack/connect_to_langbot.png b/images/zh/deploy/bots/slack/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/connect_to_langbot.png rename to images/zh/deploy/bots/slack/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/slack/slack_01.jpg b/images/zh/deploy/bots/slack/slack_01.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/slack_01.jpg rename to images/zh/deploy/bots/slack/slack_01.jpg diff --git a/docs/assets/image/zh/deploy/bots/slack/slack_02.jpg b/images/zh/deploy/bots/slack/slack_02.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/slack_02.jpg rename to images/zh/deploy/bots/slack/slack_02.jpg diff --git a/docs/assets/image/zh/deploy/bots/slack/slack_03.jpg b/images/zh/deploy/bots/slack/slack_03.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/slack_03.jpg rename to images/zh/deploy/bots/slack/slack_03.jpg diff --git a/docs/assets/image/zh/deploy/bots/slack/slack_04.jpg b/images/zh/deploy/bots/slack/slack_04.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/slack_04.jpg rename to images/zh/deploy/bots/slack/slack_04.jpg diff --git a/docs/assets/image/zh/deploy/bots/slack/slack_05.jpg b/images/zh/deploy/bots/slack/slack_05.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/slack/slack_05.jpg rename to images/zh/deploy/bots/slack/slack_05.jpg diff --git a/docs/assets/image/zh/deploy/bots/telegram/connect_to_langbot.png b/images/zh/deploy/bots/telegram/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/connect_to_langbot.png rename to images/zh/deploy/bots/telegram/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/telegram/telegram_01.png b/images/zh/deploy/bots/telegram/telegram_01.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/telegram_01.png rename to images/zh/deploy/bots/telegram/telegram_01.png diff --git a/docs/assets/image/zh/deploy/bots/telegram/telegram_02.png b/images/zh/deploy/bots/telegram/telegram_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/telegram_02.png rename to images/zh/deploy/bots/telegram/telegram_02.png diff --git a/docs/assets/image/zh/deploy/bots/telegram/telegram_03.png b/images/zh/deploy/bots/telegram/telegram_03.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/telegram_03.png rename to images/zh/deploy/bots/telegram/telegram_03.png diff --git a/docs/assets/image/zh/deploy/bots/telegram/telegram_04.png b/images/zh/deploy/bots/telegram/telegram_04.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/telegram_04.png rename to images/zh/deploy/bots/telegram/telegram_04.png diff --git a/docs/assets/image/zh/deploy/bots/telegram/telegram_05.png b/images/zh/deploy/bots/telegram/telegram_05.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/telegram/telegram_05.png rename to images/zh/deploy/bots/telegram/telegram_05.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/01-wecom-apps.png b/images/zh/deploy/bots/wecom/wecom/01-wecom-apps.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/01-wecom-apps.png rename to images/zh/deploy/bots/wecom/wecom/01-wecom-apps.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/02-create-app.png b/images/zh/deploy/bots/wecom/wecom/02-create-app.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/02-create-app.png rename to images/zh/deploy/bots/wecom/wecom/02-create-app.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/03-corp-id.png b/images/zh/deploy/bots/wecom/wecom/03-corp-id.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/03-corp-id.png rename to images/zh/deploy/bots/wecom/wecom/03-corp-id.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/04-bot-secret.png b/images/zh/deploy/bots/wecom/wecom/04-bot-secret.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/04-bot-secret.png rename to images/zh/deploy/bots/wecom/wecom/04-bot-secret.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png b/images/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png rename to images/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png b/images/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png rename to images/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png b/images/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png rename to images/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/08-contact-secret.png b/images/zh/deploy/bots/wecom/wecom/08-contact-secret.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/08-contact-secret.png rename to images/zh/deploy/bots/wecom/wecom/08-contact-secret.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png b/images/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png rename to images/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png b/images/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png rename to images/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_1.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_1.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_1.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_1.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_2.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_2.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_2.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_2.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_3.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_3.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_3.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_3.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_4.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_4.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_4.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_4.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_5.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_5.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_5.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_5.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_6.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_6.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_6.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_6.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_7.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_7.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_7.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_7.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_8.png b/images/zh/deploy/bots/wecom/wecombot/wecombot_8.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_8.png rename to images/zh/deploy/bots/wecom/wecombot/wecombot_8.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png b/images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png rename to images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg b/images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg rename to images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg diff --git a/docs/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_02.png b/images/zh/deploy/bots/wecom/wecomcs/wecomcs_02.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_02.png rename to images/zh/deploy/bots/wecom/wecomcs/wecomcs_02.png diff --git a/docs/assets/image/zh/deploy/bots/wxoa/connect_to_langbot.png b/images/zh/deploy/bots/wxoa/connect_to_langbot.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wxoa/connect_to_langbot.png rename to images/zh/deploy/bots/wxoa/connect_to_langbot.png diff --git a/docs/assets/image/zh/deploy/bots/wxoa/wxoa1.png b/images/zh/deploy/bots/wxoa/wxoa1.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wxoa/wxoa1.png rename to images/zh/deploy/bots/wxoa/wxoa1.png diff --git a/docs/assets/image/zh/deploy/bots/wxoa/wxoa2.png b/images/zh/deploy/bots/wxoa/wxoa2.png similarity index 100% rename from docs/assets/image/zh/deploy/bots/wxoa/wxoa2.png rename to images/zh/deploy/bots/wxoa/wxoa2.png diff --git a/docs/assets/image/zh/deploy/knowledge/upload_docs.png b/images/zh/deploy/knowledge/upload_docs.png similarity index 100% rename from docs/assets/image/zh/deploy/knowledge/upload_docs.png rename to images/zh/deploy/knowledge/upload_docs.png diff --git a/docs/assets/image/zh/deploy/knowledge/use_kb.png b/images/zh/deploy/knowledge/use_kb.png similarity index 100% rename from docs/assets/image/zh/deploy/knowledge/use_kb.png rename to images/zh/deploy/knowledge/use_kb.png diff --git a/docs/assets/image/zh/deploy/knowledge/use_kb_in_chat.png b/images/zh/deploy/knowledge/use_kb_in_chat.png similarity index 100% rename from docs/assets/image/zh/deploy/knowledge/use_kb_in_chat.png rename to images/zh/deploy/knowledge/use_kb_in_chat.png diff --git a/docs/assets/image/zh/deploy/knowledge/use_local_agent.png b/images/zh/deploy/knowledge/use_local_agent.png similarity index 100% rename from docs/assets/image/zh/deploy/knowledge/use_local_agent.png rename to images/zh/deploy/knowledge/use_local_agent.png diff --git a/docs/assets/image/zh/deploy/langbot/manual/dl_release.png b/images/zh/deploy/langbot/manual/dl_release.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/manual/dl_release.png rename to images/zh/deploy/langbot/manual/dl_release.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/1p_install_01.png b/images/zh/deploy/langbot/one-click/1p_install_01.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/1p_install_01.png rename to images/zh/deploy/langbot/one-click/1p_install_01.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_01.png b/images/zh/deploy/langbot/one-click/1p_langbot_01.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_01.png rename to images/zh/deploy/langbot/one-click/1p_langbot_01.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_02.png b/images/zh/deploy/langbot/one-click/1p_langbot_02.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_02.png rename to images/zh/deploy/langbot/one-click/1p_langbot_02.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_03.png b/images/zh/deploy/langbot/one-click/1p_langbot_03.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/1p_langbot_03.png rename to images/zh/deploy/langbot/one-click/1p_langbot_03.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/bt_install_01.png b/images/zh/deploy/langbot/one-click/bt_install_01.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/bt_install_01.png rename to images/zh/deploy/langbot/one-click/bt_install_01.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/bt_install_02.png b/images/zh/deploy/langbot/one-click/bt_install_02.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/bt_install_02.png rename to images/zh/deploy/langbot/one-click/bt_install_02.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/bt_langbot_01.png b/images/zh/deploy/langbot/one-click/bt_langbot_01.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/bt_langbot_01.png rename to images/zh/deploy/langbot/one-click/bt_langbot_01.png diff --git a/docs/assets/image/zh/deploy/langbot/one-click/bt_langbot_02.png b/images/zh/deploy/langbot/one-click/bt_langbot_02.png similarity index 100% rename from docs/assets/image/zh/deploy/langbot/one-click/bt_langbot_02.png rename to images/zh/deploy/langbot/one-click/bt_langbot_02.png diff --git a/docs/assets/image/zh/deploy/mcp/mcp02.png b/images/zh/deploy/mcp/mcp02.png similarity index 100% rename from docs/assets/image/zh/deploy/mcp/mcp02.png rename to images/zh/deploy/mcp/mcp02.png diff --git a/docs/assets/image/zh/deploy/mcp/mcp03.png b/images/zh/deploy/mcp/mcp03.png similarity index 100% rename from docs/assets/image/zh/deploy/mcp/mcp03.png rename to images/zh/deploy/mcp/mcp03.png diff --git a/docs/assets/image/zh/deploy/mcp/mcp04.png b/images/zh/deploy/mcp/mcp04.png similarity index 100% rename from docs/assets/image/zh/deploy/mcp/mcp04.png rename to images/zh/deploy/mcp/mcp04.png diff --git a/docs/assets/image/zh/deploy/mcp/mcp05.png b/images/zh/deploy/mcp/mcp05.png similarity index 100% rename from docs/assets/image/zh/deploy/mcp/mcp05.png rename to images/zh/deploy/mcp/mcp05.png diff --git a/docs/assets/image/zh/deploy/mcp/mcp_01.png b/images/zh/deploy/mcp/mcp_01.png similarity index 100% rename from docs/assets/image/zh/deploy/mcp/mcp_01.png rename to images/zh/deploy/mcp/mcp_01.png diff --git a/docs/assets/image/zh/deploy/models/arch.png b/images/zh/deploy/models/arch.png similarity index 100% rename from docs/assets/image/zh/deploy/models/arch.png rename to images/zh/deploy/models/arch.png diff --git a/docs/assets/image/zh/deploy/models/create_model.png b/images/zh/deploy/models/create_model.png similarity index 100% rename from docs/assets/image/zh/deploy/models/create_model.png rename to images/zh/deploy/models/create_model.png diff --git a/docs/assets/image/zh/deploy/models/embedding_model.png b/images/zh/deploy/models/embedding_model.png similarity index 100% rename from docs/assets/image/zh/deploy/models/embedding_model.png rename to images/zh/deploy/models/embedding_model.png diff --git a/docs/assets/image/zh/deploy/models/langbot_models.png b/images/zh/deploy/models/langbot_models.png similarity index 100% rename from docs/assets/image/zh/deploy/models/langbot_models.png rename to images/zh/deploy/models/langbot_models.png diff --git a/docs/assets/image/zh/deploy/models/model_config.png b/images/zh/deploy/models/model_config.png similarity index 100% rename from docs/assets/image/zh/deploy/models/model_config.png rename to images/zh/deploy/models/model_config.png diff --git a/docs/assets/image/zh/deploy/models/other_provider.png b/images/zh/deploy/models/other_provider.png similarity index 100% rename from docs/assets/image/zh/deploy/models/other_provider.png rename to images/zh/deploy/models/other_provider.png diff --git a/docs/assets/image/zh/deploy/pipelines/arch.png b/images/zh/deploy/pipelines/arch.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/arch.png rename to images/zh/deploy/pipelines/arch.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze00.png b/images/zh/deploy/pipelines/coze/coze00.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze00.png rename to images/zh/deploy/pipelines/coze/coze00.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze01.png b/images/zh/deploy/pipelines/coze/coze01.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze01.png rename to images/zh/deploy/pipelines/coze/coze01.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze02.png b/images/zh/deploy/pipelines/coze/coze02.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze02.png rename to images/zh/deploy/pipelines/coze/coze02.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze03.png b/images/zh/deploy/pipelines/coze/coze03.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze03.png rename to images/zh/deploy/pipelines/coze/coze03.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze04.png b/images/zh/deploy/pipelines/coze/coze04.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze04.png rename to images/zh/deploy/pipelines/coze/coze04.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze05.png b/images/zh/deploy/pipelines/coze/coze05.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze05.png rename to images/zh/deploy/pipelines/coze/coze05.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze06.png b/images/zh/deploy/pipelines/coze/coze06.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze06.png rename to images/zh/deploy/pipelines/coze/coze06.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze07.png b/images/zh/deploy/pipelines/coze/coze07.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze07.png rename to images/zh/deploy/pipelines/coze/coze07.png diff --git a/docs/assets/image/zh/deploy/pipelines/coze/coze08.png b/images/zh/deploy/pipelines/coze/coze08.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/coze/coze08.png rename to images/zh/deploy/pipelines/coze/coze08.png diff --git a/docs/assets/image/zh/deploy/pipelines/dify/dify_sv_api_01.png b/images/zh/deploy/pipelines/dify/dify_sv_api_01.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/dify/dify_sv_api_01.png rename to images/zh/deploy/pipelines/dify/dify_sv_api_01.png diff --git a/docs/assets/image/zh/deploy/pipelines/dify/dify_sv_api_02.png b/images/zh/deploy/pipelines/dify/dify_sv_api_02.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/dify/dify_sv_api_02.png rename to images/zh/deploy/pipelines/dify/dify_sv_api_02.png diff --git a/docs/assets/image/zh/deploy/pipelines/dify/dify_workflow_output_key.png b/images/zh/deploy/pipelines/dify/dify_workflow_output_key.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/dify/dify_workflow_output_key.png rename to images/zh/deploy/pipelines/dify/dify_workflow_output_key.png diff --git a/docs/assets/image/zh/deploy/pipelines/edit_pipeline_ai.png b/images/zh/deploy/pipelines/edit_pipeline_ai.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/edit_pipeline_ai.png rename to images/zh/deploy/pipelines/edit_pipeline_ai.png diff --git a/docs/assets/image/zh/deploy/pipelines/langflow/create_flow.png b/images/zh/deploy/pipelines/langflow/create_flow.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/langflow/create_flow.png rename to images/zh/deploy/pipelines/langflow/create_flow.png diff --git a/docs/assets/image/zh/deploy/pipelines/langflow/edit_flow.png b/images/zh/deploy/pipelines/langflow/edit_flow.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/langflow/edit_flow.png rename to images/zh/deploy/pipelines/langflow/edit_flow.png diff --git a/docs/assets/image/zh/deploy/pipelines/langflow/get_api_key.png b/images/zh/deploy/pipelines/langflow/get_api_key.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/langflow/get_api_key.png rename to images/zh/deploy/pipelines/langflow/get_api_key.png diff --git a/docs/assets/image/zh/deploy/pipelines/langflow/get_flow_id.png b/images/zh/deploy/pipelines/langflow/get_flow_id.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/langflow/get_flow_id.png rename to images/zh/deploy/pipelines/langflow/get_flow_id.png diff --git a/docs/assets/image/zh/deploy/pipelines/langflow/set_langflow_runner.png b/images/zh/deploy/pipelines/langflow/set_langflow_runner.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/langflow/set_langflow_runner.png rename to images/zh/deploy/pipelines/langflow/set_langflow_runner.png diff --git a/docs/assets/image/zh/deploy/pipelines/more_runner.png b/images/zh/deploy/pipelines/more_runner.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/more_runner.png rename to images/zh/deploy/pipelines/more_runner.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_auth.png b/images/zh/deploy/pipelines/n8n/config_auth.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_auth.png rename to images/zh/deploy/pipelines/n8n/config_auth.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_call_ai.png b/images/zh/deploy/pipelines/n8n/config_call_ai.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_call_ai.png rename to images/zh/deploy/pipelines/n8n/config_call_ai.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png b/images/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png rename to images/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_respond.png b/images/zh/deploy/pipelines/n8n/config_respond.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_respond.png rename to images/zh/deploy/pipelines/n8n/config_respond.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_response_model.png b/images/zh/deploy/pipelines/n8n/config_response_model.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_response_model.png rename to images/zh/deploy/pipelines/n8n/config_response_model.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_runner.png b/images/zh/deploy/pipelines/n8n/config_runner.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_runner.png rename to images/zh/deploy/pipelines/n8n/config_runner.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/config_webhook.png b/images/zh/deploy/pipelines/n8n/config_webhook.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/config_webhook.png rename to images/zh/deploy/pipelines/n8n/config_webhook.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/create_wf.png b/images/zh/deploy/pipelines/n8n/create_wf.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/create_wf.png rename to images/zh/deploy/pipelines/n8n/create_wf.png diff --git a/docs/assets/image/zh/deploy/pipelines/n8n/create_wf01.png b/images/zh/deploy/pipelines/n8n/create_wf01.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/n8n/create_wf01.png rename to images/zh/deploy/pipelines/n8n/create_wf01.png diff --git a/docs/assets/image/zh/deploy/pipelines/tbox/create_api_key.png b/images/zh/deploy/pipelines/tbox/create_api_key.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/tbox/create_api_key.png rename to images/zh/deploy/pipelines/tbox/create_api_key.png diff --git a/docs/assets/image/zh/deploy/pipelines/tbox/find_appid.png b/images/zh/deploy/pipelines/tbox/find_appid.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/tbox/find_appid.png rename to images/zh/deploy/pipelines/tbox/find_appid.png diff --git a/docs/assets/image/zh/deploy/pipelines/tbox/tbox_runner.png b/images/zh/deploy/pipelines/tbox/tbox_runner.png similarity index 100% rename from docs/assets/image/zh/deploy/pipelines/tbox/tbox_runner.png rename to images/zh/deploy/pipelines/tbox/tbox_runner.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-45.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-45.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-45.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-45.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-38-10.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-38-10.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-38-10.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-38-10.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png b/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png rename to images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/gettoken.png b/images/zh/deploy/platforms/wechat/gettoken.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/gettoken.png rename to images/zh/deploy/platforms/wechat/gettoken.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/ipadlogin.jpg b/images/zh/deploy/platforms/wechat/ipadlogin.jpg similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/ipadlogin.jpg rename to images/zh/deploy/platforms/wechat/ipadlogin.jpg diff --git a/docs/assets/image/zh/deploy/platforms/wechat/langbotset.png b/images/zh/deploy/platforms/wechat/langbotset.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/langbotset.png rename to images/zh/deploy/platforms/wechat/langbotset.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/login1.png b/images/zh/deploy/platforms/wechat/login1.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/login1.png rename to images/zh/deploy/platforms/wechat/login1.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/login2.png b/images/zh/deploy/platforms/wechat/login2.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/login2.png rename to images/zh/deploy/platforms/wechat/login2.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/login3.png b/images/zh/deploy/platforms/wechat/login3.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/login3.png rename to images/zh/deploy/platforms/wechat/login3.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/page1.png b/images/zh/deploy/platforms/wechat/page1.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/page1.png rename to images/zh/deploy/platforms/wechat/page1.png diff --git a/docs/assets/image/zh/deploy/platforms/wechat/sendtoken.png b/images/zh/deploy/platforms/wechat/sendtoken.png similarity index 100% rename from docs/assets/image/zh/deploy/platforms/wechat/sendtoken.png rename to images/zh/deploy/platforms/wechat/sendtoken.png diff --git a/docs/assets/image/zh/develop/comp_arch/develop_comp_arch_1.png b/images/zh/develop/comp_arch/develop_comp_arch_1.png similarity index 100% rename from docs/assets/image/zh/develop/comp_arch/develop_comp_arch_1.png rename to images/zh/develop/comp_arch/develop_comp_arch_1.png diff --git a/docs/assets/image/zh/develop/confirm_venv.png b/images/zh/develop/confirm_venv.png similarity index 100% rename from docs/assets/image/zh/develop/confirm_venv.png rename to images/zh/develop/confirm_venv.png diff --git a/docs/assets/image/zh/insight/features/bot-page.png b/images/zh/insight/features/bot-page.png similarity index 100% rename from docs/assets/image/zh/insight/features/bot-page.png rename to images/zh/insight/features/bot-page.png diff --git a/docs/assets/image/zh/insight/features/create-model.png b/images/zh/insight/features/create-model.png similarity index 100% rename from docs/assets/image/zh/insight/features/create-model.png rename to images/zh/insight/features/create-model.png diff --git a/docs/assets/image/zh/insight/features/edit-pipeline.png b/images/zh/insight/features/edit-pipeline.png similarity index 100% rename from docs/assets/image/zh/insight/features/edit-pipeline.png rename to images/zh/insight/features/edit-pipeline.png diff --git a/docs/assets/image/zh/insight/features/plugin-market.png b/images/zh/insight/features/plugin-market.png similarity index 100% rename from docs/assets/image/zh/insight/features/plugin-market.png rename to images/zh/insight/features/plugin-market.png diff --git a/docs/assets/image/zh/insight/group_chat.png b/images/zh/insight/group_chat.png similarity index 100% rename from docs/assets/image/zh/insight/group_chat.png rename to images/zh/insight/group_chat.png diff --git a/docs/assets/image/zh/insight/private_chat.png b/images/zh/insight/private_chat.png similarity index 100% rename from docs/assets/image/zh/insight/private_chat.png rename to images/zh/insight/private_chat.png diff --git a/docs/assets/image/zh/plugin/dev/apis/plugin_dev_messages_01.png b/images/zh/plugin/dev/apis/plugin_dev_messages_01.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/apis/plugin_dev_messages_01.png rename to images/zh/plugin/dev/apis/plugin_dev_messages_01.png diff --git a/docs/assets/image/zh/plugin/dev/components/command_use.png b/images/zh/plugin/dev/components/command_use.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/components/command_use.png rename to images/zh/plugin/dev/components/command_use.png diff --git a/docs/assets/image/zh/plugin/dev/components/info_command_demo.png b/images/zh/plugin/dev/components/info_command_demo.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/components/info_command_demo.png rename to images/zh/plugin/dev/components/info_command_demo.png diff --git a/docs/assets/image/zh/plugin/dev/components/knowledge_retriever_config.png b/images/zh/plugin/dev/components/knowledge_retriever_config.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/components/knowledge_retriever_config.png rename to images/zh/plugin/dev/components/knowledge_retriever_config.png diff --git a/docs/assets/image/zh/plugin/dev/components/knowledge_retriever_use.png b/images/zh/plugin/dev/components/knowledge_retriever_use.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/components/knowledge_retriever_use.png rename to images/zh/plugin/dev/components/knowledge_retriever_use.png diff --git a/docs/assets/image/zh/plugin/dev/components/tool_use_in_chat.png b/images/zh/plugin/dev/components/tool_use_in_chat.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/components/tool_use_in_chat.png rename to images/zh/plugin/dev/components/tool_use_in_chat.png diff --git a/docs/assets/image/zh/plugin/dev/create_plugin.png b/images/zh/plugin/dev/create_plugin.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/create_plugin.png rename to images/zh/plugin/dev/create_plugin.png diff --git a/docs/assets/image/zh/plugin/dev/debug_plugin_loaded.png b/images/zh/plugin/dev/debug_plugin_loaded.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/debug_plugin_loaded.png rename to images/zh/plugin/dev/debug_plugin_loaded.png diff --git a/docs/assets/image/zh/plugin/dev/dist/github_release.png b/images/zh/plugin/dev/dist/github_release.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/dist/github_release.png rename to images/zh/plugin/dev/dist/github_release.png diff --git a/docs/assets/image/zh/plugin/dev/launch_debug_plugin.png b/images/zh/plugin/dev/launch_debug_plugin.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/launch_debug_plugin.png rename to images/zh/plugin/dev/launch_debug_plugin.png diff --git a/docs/assets/image/zh/plugin/dev/login_space.png b/images/zh/plugin/dev/login_space.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/login_space.png rename to images/zh/plugin/dev/login_space.png diff --git a/docs/assets/image/zh/plugin/dev/plugin_submission.png b/images/zh/plugin/dev/plugin_submission.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/plugin_submission.png rename to images/zh/plugin/dev/plugin_submission.png diff --git a/docs/assets/image/zh/plugin/dev/plugin_system_arch.png b/images/zh/plugin/dev/plugin_system_arch.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/plugin_system_arch.png rename to images/zh/plugin/dev/plugin_system_arch.png diff --git a/docs/assets/image/zh/plugin/dev/space_device_flow.png b/images/zh/plugin/dev/space_device_flow.png similarity index 100% rename from docs/assets/image/zh/plugin/dev/space_device_flow.png rename to images/zh/plugin/dev/space_device_flow.png diff --git a/docs/assets/image/zh/plugin/install_from_marketplace.png b/images/zh/plugin/install_from_marketplace.png similarity index 100% rename from docs/assets/image/zh/plugin/install_from_marketplace.png rename to images/zh/plugin/install_from_marketplace.png diff --git a/docs/assets/image/zh/plugin/install_method.png b/images/zh/plugin/install_method.png similarity index 100% rename from docs/assets/image/zh/plugin/install_method.png rename to images/zh/plugin/install_method.png diff --git a/docs/assets/image/zh/plugin/pipeline_extensions.png b/images/zh/plugin/pipeline_extensions.png similarity index 100% rename from docs/assets/image/zh/plugin/pipeline_extensions.png rename to images/zh/plugin/pipeline_extensions.png diff --git a/docs/assets/image/zh/plugin/plugin_config.png b/images/zh/plugin/plugin_config.png similarity index 100% rename from docs/assets/image/zh/plugin/plugin_config.png rename to images/zh/plugin/plugin_config.png diff --git a/docs/assets/image/zh/plugin/update_plugin.png b/images/zh/plugin/update_plugin.png similarity index 100% rename from docs/assets/image/zh/plugin/update_plugin.png rename to images/zh/plugin/update_plugin.png diff --git a/docs/assets/image/zh/workshop/302ai-integration/model.png b/images/zh/workshop/302ai-integration/model.png similarity index 100% rename from docs/assets/image/zh/workshop/302ai-integration/model.png rename to images/zh/workshop/302ai-integration/model.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_01.png b/images/zh/workshop/dify-service-api/dify_01.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_01.png rename to images/zh/workshop/dify-service-api/dify_01.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_02.png b/images/zh/workshop/dify-service-api/dify_02.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_02.png rename to images/zh/workshop/dify-service-api/dify_02.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_03.png b/images/zh/workshop/dify-service-api/dify_03.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_03.png rename to images/zh/workshop/dify-service-api/dify_03.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_04.png b/images/zh/workshop/dify-service-api/dify_04.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_04.png rename to images/zh/workshop/dify-service-api/dify_04.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_05.png b/images/zh/workshop/dify-service-api/dify_05.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_05.png rename to images/zh/workshop/dify-service-api/dify_05.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_06.png b/images/zh/workshop/dify-service-api/dify_06.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_06.png rename to images/zh/workshop/dify-service-api/dify_06.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_07.png b/images/zh/workshop/dify-service-api/dify_07.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_07.png rename to images/zh/workshop/dify-service-api/dify_07.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_08.png b/images/zh/workshop/dify-service-api/dify_08.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_08.png rename to images/zh/workshop/dify-service-api/dify_08.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_09.png b/images/zh/workshop/dify-service-api/dify_09.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_09.png rename to images/zh/workshop/dify-service-api/dify_09.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_10.png b/images/zh/workshop/dify-service-api/dify_10.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_10.png rename to images/zh/workshop/dify-service-api/dify_10.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_11.png b/images/zh/workshop/dify-service-api/dify_11.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_11.png rename to images/zh/workshop/dify-service-api/dify_11.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_12.png b/images/zh/workshop/dify-service-api/dify_12.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_12.png rename to images/zh/workshop/dify-service-api/dify_12.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_13.png b/images/zh/workshop/dify-service-api/dify_13.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_13.png rename to images/zh/workshop/dify-service-api/dify_13.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_14.png b/images/zh/workshop/dify-service-api/dify_14.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_14.png rename to images/zh/workshop/dify-service-api/dify_14.png diff --git a/docs/assets/image/zh/workshop/dify-service-api/dify_workflow_var.png b/images/zh/workshop/dify-service-api/dify_workflow_var.png similarity index 100% rename from docs/assets/image/zh/workshop/dify-service-api/dify_workflow_var.png rename to images/zh/workshop/dify-service-api/dify_workflow_var.png diff --git a/docs/assets/image/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png b/images/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png similarity index 100% rename from docs/assets/image/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png rename to images/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png diff --git a/docs/assets/image/zh/workshop/newapi-integration/model.png b/images/zh/workshop/newapi-integration/model.png similarity index 100% rename from docs/assets/image/zh/workshop/newapi-integration/model.png rename to images/zh/workshop/newapi-integration/model.png diff --git a/docs/assets/image/zh/workshop/newapi-integration/model2.png b/images/zh/workshop/newapi-integration/model2.png similarity index 100% rename from docs/assets/image/zh/workshop/newapi-integration/model2.png rename to images/zh/workshop/newapi-integration/model2.png diff --git a/docs/assets/image/zh/workshop/ppio-integration/model.png b/images/zh/workshop/ppio-integration/model.png similarity index 100% rename from docs/assets/image/zh/workshop/ppio-integration/model.png rename to images/zh/workshop/ppio-integration/model.png diff --git a/docs/assets/image/zh/workshop/shengsuanyun-integration/add-llm-model.png b/images/zh/workshop/shengsuanyun-integration/add-llm-model.png similarity index 100% rename from docs/assets/image/zh/workshop/shengsuanyun-integration/add-llm-model.png rename to images/zh/workshop/shengsuanyun-integration/add-llm-model.png diff --git a/docs/assets/image/zh/workshop/shengsuanyun-integration/llm-models.png b/images/zh/workshop/shengsuanyun-integration/llm-models.png similarity index 100% rename from docs/assets/image/zh/workshop/shengsuanyun-integration/llm-models.png rename to images/zh/workshop/shengsuanyun-integration/llm-models.png diff --git a/docs/assets/image/zh/workshop/tokenpony-integration/access-api-key-page.png b/images/zh/workshop/tokenpony-integration/access-api-key-page.png similarity index 100% rename from docs/assets/image/zh/workshop/tokenpony-integration/access-api-key-page.png rename to images/zh/workshop/tokenpony-integration/access-api-key-page.png diff --git a/docs/assets/image/zh/workshop/tokenpony-integration/add-model.png b/images/zh/workshop/tokenpony-integration/add-model.png similarity index 100% rename from docs/assets/image/zh/workshop/tokenpony-integration/add-model.png rename to images/zh/workshop/tokenpony-integration/add-model.png diff --git a/docs/assets/image/zh/workshop/tokenpony-integration/get-api-key.png b/images/zh/workshop/tokenpony-integration/get-api-key.png similarity index 100% rename from docs/assets/image/zh/workshop/tokenpony-integration/get-api-key.png rename to images/zh/workshop/tokenpony-integration/get-api-key.png diff --git a/docs/assets/image/zh/workshop/tokenpony-integration/tokenpony-mainpage.png b/images/zh/workshop/tokenpony-integration/tokenpony-mainpage.png similarity index 100% rename from docs/assets/image/zh/workshop/tokenpony-integration/tokenpony-mainpage.png rename to images/zh/workshop/tokenpony-integration/tokenpony-mainpage.png diff --git a/docs/ja/deploy/command.md b/ja/deploy/command.mdx similarity index 82% rename from docs/ja/deploy/command.md rename to ja/deploy/command.mdx index 24a9006f7..a6a541e84 100644 --- a/docs/ja/deploy/command.md +++ b/ja/deploy/command.mdx @@ -1,5 +1,7 @@ -# コマンド +--- +title: "コマンド" +--- LangBotは`!`で始まるメッセージをコマンドとして認識します。公式では[`EssentialCommands`プラグイン](https://space.langbot.app/market?author=langbot-team&plugin=EssentialCommands)を提供しており、よく使用されるコマンドが含まれています。 -独自のコマンドプラグインを開発することもできます。詳細は[コマンドプラグイン開発](/en/plugin/dev/components/command.md)を参照してください。 +独自のコマンドプラグインを開発することもできます。詳細は[コマンドプラグイン開発](/en/plugin/dev/components/command)を参照してください。 diff --git a/docs/ja/deploy/langbot/docker.md b/ja/deploy/langbot/docker.mdx similarity index 86% rename from docs/ja/deploy/langbot/docker.md rename to ja/deploy/langbot/docker.mdx index 52f51b991..bac1e1563 100644 --- a/docs/ja/deploy/langbot/docker.md +++ b/ja/deploy/langbot/docker.mdx @@ -1,33 +1,34 @@ -# Dockerデプロイ - -:::warning -まず以下について学習することをお勧めします: - - - `Docker`と`Docker Compose`の使用方法 - - Dockerコンテナネットワーク通信の設定方法 -::: - -:::info -- Git、Docker、Docker Composeがインストールされていることを確認してください -::: - -プロジェクトをクローンします: - -```bash -git clone https://github.com/langbot-app/LangBot -cd LangBot/docker -``` - -コンテナを起動します: - -```bash -docker compose up -``` - -コンテナはWebUIアクセス用にポート`5300`をマッピングします。`http://127.0.0.1:5300`にアクセスしてWebUIを表示できます。 -また、メッセージプラットフォームアダプター用に予約されたポート`2280-2290`もマッピングします。 - -LangBotのデプロイ完了後、引き続き以下をお読みください: - -- [ボット設定ドキュメント](/en/deploy/platforms/readme) -- [モデル設定ドキュメント](/en/deploy/models/readme) +--- +title: "Dockerデプロイ" +--- + + + + - `Docker`と`Docker Compose`の使用方法 + - Dockerコンテナネットワーク通信の設定方法 + + + +- Git、Docker、Docker Composeがインストールされていることを確認してください + + +プロジェクトをクローンします: + +```bash +git clone https://github.com/langbot-app/LangBot +cd LangBot/docker +``` + +コンテナを起動します: + +```bash +docker compose up +``` + +コンテナはWebUIアクセス用にポート`5300`をマッピングします。`http://127.0.0.1:5300`にアクセスしてWebUIを表示できます。 +また、メッセージプラットフォームアダプター用に予約されたポート`2280-2290`もマッピングします。 + +LangBotのデプロイ完了後、引き続き以下をお読みください: + +- [ボット設定ドキュメント](/en/deploy/platforms/readme) +- [モデル設定ドキュメント](/en/deploy/models/readme) diff --git a/docs/ja/deploy/langbot/manual.md b/ja/deploy/langbot/manual.mdx similarity index 71% rename from docs/ja/deploy/langbot/manual.md rename to ja/deploy/langbot/manual.mdx index e523a5733..52dba83c7 100644 --- a/docs/ja/deploy/langbot/manual.md +++ b/ja/deploy/langbot/manual.mdx @@ -1,46 +1,43 @@ -# 手動デプロイ - -:::warning -1. Python 3.10.1以上(3.10.0は除く)を使用してください。3.10.14を推奨します。Pythonがインストールされていない場合はインストールが必要です。 -2. この方法は推奨されません。手動デプロイは将来サポートされなくなる可能性があります。Dockerデプロイの使用を検討してください。 -::: - -## メインプログラムのインストール - -1. [リリース](https://github.com/langbot-app/LangBot/releases)ページにアクセスし、最新バージョンのzipパッケージ(推奨)`langbot-xxx-all.zip`をダウンロードします(Source Codeはダウンロードしないでください。WebUIが含まれていません)。展開して、展開されたディレクトリでコマンドライン(ターミナル)を開きます。 - -![リリースのダウンロード](/assets/image/zh/deploy/langbot/manual/dl_release.png) - -2. 依存関係のインストール - -依存関係の管理には[uv](https://docs.astral.sh/uv/)を使用します。 - -```bash -pip install uv -uv sync -``` - -3. メインプログラムを一度実行して設定ファイルを生成します - -```bash -uv run main.py -``` - -以下のメッセージが表示されます: - -``` - _ ___ _ -| | __ _ _ _ __ _| _ ) ___| |_ -| |__/ _` | ' \/ _` | _ \/ _ \ _| -|____\__,_|_||_\__, |___/\___/\__| - |___/ - -⭐️オープンソース: https://github.com/langbot-app/LangBot -📖ドキュメント: https://docs.langbot.app - -以下のファイルが存在しないため、自動的に生成されました。必要に応じて設定ファイルを変更して再起動してください: -- data/config.yaml -... -``` - -Ctrl+Cでプログラムを終了し、[ボットのデプロイ](/en/deploy/platforms/readme)ページに進んでください。 +--- +title: "手動デプロイ" +--- + +## メインプログラムのインストール + +1. [リリース](https://github.com/langbot-app/LangBot/releases)ページにアクセスし、最新バージョンのzipパッケージ(推奨)`langbot-xxx-all.zip`をダウンロードします(Source Codeはダウンロードしないでください。WebUIが含まれていません)。展開して、展開されたディレクトリでコマンドライン(ターミナル)を開きます。 + +![リリースのダウンロード](/images/zh/deploy/langbot/manual/dl_release.png) + +2. 依存関係のインストール + +依存関係の管理には[uv](https://docs.astral.sh/uv/)を使用します。 + +```bash +pip install uv +uv sync +``` + +3. メインプログラムを一度実行して設定ファイルを生成します + +```bash +uv run main.py +``` + +以下のメッセージが表示されます: + +``` + _ ___ _ +| | __ _ _ _ __ _| _ ) ___| |_ +| |__/ _` | ' \/ _` | _ \/ _ \ _| +|____\__,_|_||_\__, |___/\___/\__| + |___/ + +⭐️オープンソース: https://github.com/langbot-app/LangBot +📖ドキュメント: https://docs.langbot.app + +以下のファイルが存在しないため、自動的に生成されました。必要に応じて設定ファイルを変更して再起動してください: +- data/config.yaml +... +``` + +Ctrl+Cでプログラムを終了し、[ボットのデプロイ](/en/deploy/platforms/readme)ページに進んでください。 \ No newline at end of file diff --git a/docs/ja/deploy/langbot/one-click/1panel.md b/ja/deploy/langbot/one-click/1panel.mdx similarity index 65% rename from docs/ja/deploy/langbot/one-click/1panel.md rename to ja/deploy/langbot/one-click/1panel.mdx index 8532a5516..09c965b48 100644 --- a/docs/ja/deploy/langbot/one-click/1panel.md +++ b/ja/deploy/langbot/one-click/1panel.mdx @@ -1,19 +1,9 @@ -# 1Panelデプロイ +--- +title: "1Panelデプロイ" +--- [1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot)を使用してLangBotをワンクリックでデプロイします。 -:::warning - -追加のコンテナを必要としないメッセージプラットフォーム(DiscordやLarkなど)を使用する予定がない場合、または1Panel上のDockerコンテナ間のネットワーク接続に精通していない場合は、1Panelのワンクリックデプロイは推奨されません。代わりに[Dockerデプロイ](/en/deploy/langbot/docker)の使用を検討してください。 - -::: - -:::info - -[Alibaba Cloud](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs)なら、年間38元という低価格でサーバーを入手でき、さらに20%の割引も受けられます。1Panelをワンクリックでインストールするのがより便利です。 - -::: - ## 1Panelのインストール > 推奨サーバーシステム(1Panelより): Debian 12、Ubuntu 22など @@ -22,7 +12,7 @@ [1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot)にアクセスし、1Panelが公式に提供するLinuxパネルインストールスクリプトを使用します。お使いのオペレーティングシステムに応じて対応するスクリプトを選択してください。 -![1Panelのインストール](/assets/image/zh/deploy/langbot/one-click/1p_install_01.png) +![1Panelのインストール](/images/zh/deploy/langbot/one-click/1p_install_01.png) 対応するスクリプトをコピーし、サーバーに貼り付けて実行します。 @@ -34,17 +24,17 @@ `アプリストア`を開き、`AI`カテゴリを選択し、LangBotをクリックしてインストールします。 -![LangBotのインストール](/assets/image/zh/deploy/langbot/one-click/1p_langbot_01.png) +![LangBotのインストール](/images/zh/deploy/langbot/one-click/1p_langbot_01.png) `外部ポートアクセス`のチェックボックスをオンにして、確認をクリックします。 -![LangBotのインストール](/assets/image/zh/deploy/langbot/one-click/1p_langbot_02.png) +![LangBotのインストール](/images/zh/deploy/langbot/one-click/1p_langbot_02.png) しばらく待つと、インストールが完了します。 左側の`コンテナ`をクリックし、`コンテナ`カテゴリを選択すると、LangBotコンテナバーが表示されます。 -![LangBotコンテナ情報の表示](/assets/image/zh/deploy/langbot/one-click/1p_langbot_03.png) +![LangBotコンテナ情報の表示](/images/zh/deploy/langbot/one-click/1p_langbot_03.png) サーバーのパブリックIPアドレスをコピーします。例: `http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxxは1Panelが配置されているサーバーのIPアドレス、5300はポート番号)。 @@ -52,4 +42,4 @@ その後、ビジュアルインターフェースでLangBotを設定できます。 -次に、[メッセージプラットフォームのデプロイ](/en/deploy/platforms/readme)ページを引き続きお読みください。 +次に、[メッセージプラットフォームのデプロイ](/en/deploy/platforms/readme)ページを引き続きお読みください。 \ No newline at end of file diff --git a/docs/ja/deploy/langbot/one-click/bt.md b/ja/deploy/langbot/one-click/bt.mdx similarity index 78% rename from docs/ja/deploy/langbot/one-click/bt.md rename to ja/deploy/langbot/one-click/bt.mdx index 5deb3bf63..0ee8c1f04 100644 --- a/docs/ja/deploy/langbot/one-click/bt.md +++ b/ja/deploy/langbot/one-click/bt.mdx @@ -1,53 +1,54 @@ -# aaPanelデプロイ - -[aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot)を使用してLangBotをワンクリックでデプロイします。 - -:::warning -- 追加のコンテナを必要としないDiscordやFeishuなどのメッセージプラットフォームを使用する予定がない場合、またはaaPanel上のDockerコンテナネットワーキングに精通していない場合は、aaPanelでのワンクリックデプロイは推奨されません。[Dockerデプロイ](/en/deploy/langbot/docker)の使用を検討してください。 -- 既にaaPanelがインストールされている場合は、バージョン**9.2.0**以上に更新してください -::: - - -## aaPanelのインストール - -> 推奨サーバーシステム(aaPanelより): Debian 12、Ubuntu 22など -> -> このドキュメントでは、パブリックIPv4アドレスを持つサーバーがあることを前提としています。パブリックIPのないホームマシンを使用している場合は、以下で言及する内部ネットワーク経由で関連ページにアクセスできます。 - -[aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot)を開き、aaPanel公式が提供するLinuxパネルインストールスクリプトを使用し、お使いのシステムに基づいて対応するスクリプトを選択します。 - -![aaPanelのインストール](/assets/image/zh/deploy/langbot/one-click/bt_install_01.png) - -対応するスクリプトをコピーしてサーバーに貼り付けて実行します。 - -## LangBotのインストール - -しばらく待つと、aaPanelのインストールが完了します。 - -このようなメッセージが表示されますので、外部パネルアドレスをコピーしてブラウザで開きます。 - -![aaPanelアクセスアドレス](/assets/image/zh/deploy/langbot/one-click/bt_install_02.png) - -初めて開くと、`推奨インストールスイート`のポップアップが表示されます。閉じてスキップできます。 - -次にサイドバーの`docker`をクリックします。初めての場合、DockerとDocker Composeサービスのインストールを求められます。プロンプトが表示されたら「今すぐインストール」をクリックするか、既にインストールされている場合は無視してください。 - -次に`Docker -> アプリストア`に移動し、`LangBot`を検索し(大文字小文字に注意)、`インストール`をクリックし、デフォルト設定を使用します。 - -少し待つと、`langbot_XXXX`という名前のコンテナが`実行中`として表示されます。 - -![LangBotコンテナの作成](/assets/image/zh/deploy/langbot/one-click/bt_langbot_01.png) - -上の画像の赤い円をクリックして実行ログを表示します。 - -![LangBotコンテナログの表示](/assets/image/zh/deploy/langbot/one-click/bt_langbot_02.png) - -WebUI設定ページ(ビジュアル設定ページ)の外部および内部アクセスパスが表示されます。パブリックアドレスをコピーします。例: `http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxxはaaPanelのIP、5300はポート番号で、画像に示されているように異なる場合があります)。 - -開いた後、管理者のメールアドレスとパスワードを入力し、初期化をクリックします。 - -その後、ビジュアルインターフェースで設定を進めることができます。 - -JSON設定ファイルを直接変更したい場合は、上の画像に示されているローカルマッピングディレクトリを参照できます。インストールディレクトリに移動すると、`data`フォルダは設定ファイルの保存に使用され、`plugins`フォルダはプラグイン関連ファイルに使用されます。 - -次に、[メッセージプラットフォームのデプロイ](/en/deploy/platforms/readme)ページを引き続きお読みください。 +--- +title: "aaPanelデプロイ" +--- + +[aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot)を使用してLangBotをワンクリックでデプロイします。 + + +- 既にaaPanelがインストールされている場合は、バージョン**9.2.0**以上に更新してください + + + +## aaPanelのインストール + +> 推奨サーバーシステム(aaPanelより): Debian 12、Ubuntu 22など +> +> このドキュメントでは、パブリックIPv4アドレスを持つサーバーがあることを前提としています。パブリックIPのないホームマシンを使用している場合は、以下で言及する内部ネットワーク経由で関連ページにアクセスできます。 + +[aaPanel](https://www.bt.cn/new/download.html?r=dk_LangBot)を開き、aaPanel公式が提供するLinuxパネルインストールスクリプトを使用し、お使いのシステムに基づいて対応するスクリプトを選択します。 + +![aaPanelのインストール](/images/zh/deploy/langbot/one-click/bt_install_01.png) + +対応するスクリプトをコピーしてサーバーに貼り付けて実行します。 + +## LangBotのインストール + +しばらく待つと、aaPanelのインストールが完了します。 + +このようなメッセージが表示されますので、外部パネルアドレスをコピーしてブラウザで開きます。 + +![aaPanelアクセスアドレス](/images/zh/deploy/langbot/one-click/bt_install_02.png) + +初めて開くと、`推奨インストールスイート`のポップアップが表示されます。閉じてスキップできます。 + +次にサイドバーの`docker`をクリックします。初めての場合、DockerとDocker Composeサービスのインストールを求められます。プロンプトが表示されたら「今すぐインストール」をクリックするか、既にインストールされている場合は無視してください。 + +次に`Docker -> アプリストア`に移動し、`LangBot`を検索し(大文字小文字に注意)、`インストール`をクリックし、デフォルト設定を使用します。 + +少し待つと、`langbot_XXXX`という名前のコンテナが`実行中`として表示されます。 + +![LangBotコンテナの作成](/images/zh/deploy/langbot/one-click/bt_langbot_01.png) + +上の画像の赤い円をクリックして実行ログを表示します。 + +![LangBotコンテナログの表示](/images/zh/deploy/langbot/one-click/bt_langbot_02.png) + +WebUI設定ページ(ビジュアル設定ページ)の外部および内部アクセスパスが表示されます。パブリックアドレスをコピーします。例: `http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxxはaaPanelのIP、5300はポート番号で、画像に示されているように異なる場合があります)。 + +開いた後、管理者のメールアドレスとパスワードを入力し、初期化をクリックします。 + +その後、ビジュアルインターフェースで設定を進めることができます。 + +JSON設定ファイルを直接変更したい場合は、上の画像に示されているローカルマッピングディレクトリを参照できます。インストールディレクトリに移動すると、`data`フォルダは設定ファイルの保存に使用され、`plugins`フォルダはプラグイン関連ファイルに使用されます。 + +次に、[メッセージプラットフォームのデプロイ](/en/deploy/platforms/readme)ページを引き続きお読みください。 diff --git a/docs/ja/deploy/langbot/package.md b/ja/deploy/langbot/package.mdx similarity index 88% rename from docs/ja/deploy/langbot/package.md rename to ja/deploy/langbot/package.mdx index 30ed0413e..df7a6d766 100644 --- a/docs/ja/deploy/langbot/package.md +++ b/ja/deploy/langbot/package.mdx @@ -1,8 +1,10 @@ -# パッケージマネージャーでのデプロイ +--- +title: "パッケージマネージャーでのデプロイ" +--- -:::info + Windows、Linux、Mac OSなどをサポート。テスト環境および個人使用シナリオに推奨。本番レベルの環境では[Dockerデプロイ](/en/deploy/langbot/docker.html)を使用してください。 -::: + LangBotはパッケージ化されてPyPIにリリースされています。[uv](https://docs.astral.sh/uv/getting-started/installation/)をインストールしてから、空のディレクトリで以下のコマンドを実行してください: diff --git a/docs/ja/deploy/settings.md b/ja/deploy/settings.mdx similarity index 99% rename from docs/ja/deploy/settings.md rename to ja/deploy/settings.mdx index 8246f8d4b..3c727b56f 100644 --- a/docs/ja/deploy/settings.md +++ b/ja/deploy/settings.mdx @@ -1,4 +1,6 @@ -# システム環境設定 +--- +title: "システム環境設定" +--- システム動作のための環境情報を設定します。`data/config.yaml`ファイルに配置されています。 通常、変更は必要ありません。 diff --git a/docs/ja/deploy/update.md b/ja/deploy/update.mdx similarity index 96% rename from docs/ja/deploy/update.md rename to ja/deploy/update.mdx index ad1858204..57b4f44ea 100644 --- a/docs/ja/deploy/update.md +++ b/ja/deploy/update.mdx @@ -1,4 +1,6 @@ -# LangBotの更新 +--- +title: "LangBotの更新" +--- ## パッケージマネージャーを使用 @@ -26,9 +28,9 @@ docker compose up --force-recreate --pull always -d このコマンドは最新のLangBotイメージをプルしてコンテナを再構築します。 -:::info + 4.3.0バージョンでは`docker-compose.yaml`ファイルの内容と場所が変更されました。以前のバージョンから更新した場合は、[ドキュメントに従って再デプロイ](/en/deploy/langbot/docker)してください。 -::: + ## 手動デプロイ diff --git a/ja/develop/comp-arch.mdx b/ja/develop/comp-arch.mdx new file mode 100644 index 000000000..b5c71ce8c --- /dev/null +++ b/ja/develop/comp-arch.mdx @@ -0,0 +1,5 @@ +--- +title: "コンポーネントアーキテクチャ" +--- + +![コンポーネントアーキテクチャ図](/images/zh/develop/comp_arch/develop_comp_arch_1.png) diff --git a/docs/ja/develop/dev-config.md b/ja/develop/dev-config.mdx similarity index 86% rename from docs/ja/develop/dev-config.md rename to ja/develop/dev-config.mdx index 078558911..d3d84c51a 100644 --- a/docs/ja/develop/dev-config.md +++ b/ja/develop/dev-config.mdx @@ -1,4 +1,6 @@ -# 開発設定 +--- +title: "開発設定" +--- LangBotはフロントエンドとバックエンドに分かれています。フロントエンドはNext.js + shadcnを使用して開発され、バックエンドはQuart(Flaskの非同期版)を使用して開発されています。 @@ -52,11 +54,10 @@ npm run dev その後、出力情報に従って、`http://127.0.0.1:3000`にアクセスして、スタンドアロンフロントエンドページを表示します。 -:::info -`pnpm dev`を使用してローカルで起動すると、環境変数`NEXT_PUBLIC_API_BASE_URL`がフロントエンドによって自動的に使用され、フロントエンドがローカルで実行中のバックエンドの`5300`ポートにアクセスできるようになります。 + 本番環境では、フロントエンドは静的ファイルにプリコンパイルされ、バックエンドによって提供され、フロントエンドは同じドメインのバックエンドアドレスに自動的にアクセスします。 -::: + ## コードフォーマット diff --git a/docs/ja/develop/plugin-runtime.md b/ja/develop/plugin-runtime.mdx similarity index 87% rename from docs/ja/develop/plugin-runtime.md rename to ja/develop/plugin-runtime.mdx index 8f038b18b..c60903242 100644 --- a/docs/ja/develop/plugin-runtime.md +++ b/ja/develop/plugin-runtime.mdx @@ -1,10 +1,10 @@ -# プラグインランタイム、CLI、SDKのデバッグ +--- +title: "プラグインランタイム、CLI、SDKのデバッグ" +--- -::: info -まず[プラグインチュートリアル](/en/plugin/plugin-intro)を読んで、プラグインシステムを理解してください。 - -- プラグインランタイム、CLI、SDKはこちらでオープンソース化されています: https://github.com/langbot-app/langbot-plugin-sdk -::: + + プラグインランタイム、CLI、SDKはこちらでオープンソース化されています: https://github.com/langbot-app/langbot-plugin-sdk + プラグインランタイムのソースコードをクローンします: @@ -52,8 +52,7 @@ plugin: runtime_ws_url: ws://localhost:5400/control/ws ``` -そして、LangBotメインプログラムの起動時に起動パラメーター`--standalone-runtime`を追加します(例: `uv run main.py --standalone-runtime`)。 -LangBotを再起動すると、WebSocketを使用してこのランタイムに接続されます。 +そして、LangBotメインプログラムの起動時に起動パラメーター`--standalone-runtime`を追加します(例: `uv run main.py --standalone-runtime`)。 LangBotを再起動すると、WebSocketを使用してこのランタイムに接続されます。 ## langbot-plugin-sdkアーキテクチャ @@ -69,4 +68,4 @@ LangBotを再起動すると、WebSocketを使用してこのランタイムに CLIツールは、ランタイムの起動、プラグインの初期化、プラグインコンポーネント管理、Marketplaceとのインタラクションなどの機能を提供します。 -詳細なプログラムエントリポイントについては、[`langbot_plugin.cli.__init__`](https://github.com/langbot-app/langbot-plugin-sdk/blob/main/src/langbot_plugin/cli/__init__.py)を参照してください。 +詳細なプログラムエントリポイントについては、[`langbot_plugin.cli.__init__`](https://github.com/langbot-app/langbot-plugin-sdk/blob/main/src/langbot_plugin/cli/__init__.py)を参照してください。 \ No newline at end of file diff --git a/docs/ja/insight/community.md b/ja/insight/community.mdx similarity index 91% rename from docs/ja/insight/community.md rename to ja/insight/community.mdx index 357a78f61..f022d1be8 100644 --- a/docs/ja/insight/community.md +++ b/ja/insight/community.mdx @@ -1,4 +1,6 @@ -# コミュニティリソース +--- +title: "コミュニティリソース" +--- ## 簡易チュートリアル diff --git a/docs/ja/insight/features.md b/ja/insight/features.mdx similarity index 92% rename from docs/ja/insight/features.md rename to ja/insight/features.mdx index a925fb939..c95a1598e 100644 --- a/docs/ja/insight/features.md +++ b/ja/insight/features.mdx @@ -1,4 +1,6 @@ -# 機能 +--- +title: "機能" +--- LangBotは、オープンソースのLLMネイティブインスタントメッセージングロボット開発プラットフォームであり、すぐに使えるIMロボット開発体験を提供することを目的としています。Agent、RAG、MCPなどのLLMアプリケーション機能を備え、グローバルなインスタントメッセージングプラットフォームをサポートし、豊富なAPIインターフェースを提供し、カスタム開発をサポートします。 @@ -69,15 +71,14 @@ LangBotは、オープンソースのLLMネイティブインスタントメッ ## ケーススクリーンショット -![bot_page](/assets/image/zh/insight/features/bot-page.png) +![bot_page](/images/zh/insight/features/bot-page.png) -![create_model](/assets/image/zh/insight/features/create-model.png) +![create_model](/images/zh/insight/features/create-model.png) -![edit_pipeline](/assets/image/zh/insight/features/edit-pipeline.png) +![edit_pipeline](/images/zh/insight/features/edit-pipeline.png) -![plugin_market](/assets/image/zh/insight/features/plugin-market.png) +![plugin_market](/images/zh/insight/features/plugin-market.png) -![private_chat](/assets/image/zh/insight/private_chat.png) - -![group_chat](/assets/image/zh/insight/group_chat.png) +![private_chat](/images/zh/insight/private_chat.png) +![group_chat](/images/zh/insight/group_chat.png) diff --git a/docs/ja/insight/guide.md b/ja/insight/guide.mdx similarity index 96% rename from docs/ja/insight/guide.md rename to ja/insight/guide.mdx index e8fad3ba9..ffff6d017 100644 --- a/docs/ja/insight/guide.md +++ b/ja/insight/guide.mdx @@ -1,4 +1,6 @@ -# LangBotドキュメントへようこそ +--- +title: "LangBotドキュメントへようこそ" +--- LangBotは、オープンソースの大規模言語モデル(LLM)ネイティブインスタントメッセージングボットプラットフォームで、複数のメッセージングプラットフォームとモデルプロバイダーをサポートしています。DifyなどのLLMOpsプラットフォームのサポートを提供します。また、ユーザーが迅速にデプロイして使用できるWebUIを提供します。 @@ -34,6 +36,6 @@ LangBotは、オープンソースの大規模言語モデル(LLM)ネイティ 左サイドバーの[対話モデルの設定](/en/deploy/models/readme)を確認してください -
+
上記の2つのステップを完了すると、LangBotの使用を開始できます。さらに多くの機能を設定する必要がある場合は、[Pipeline](/en/deploy/pipelines/readme)セクションで設定できます diff --git a/docs/ja/insight/platform-features.md b/ja/insight/platform-features.mdx similarity index 99% rename from docs/ja/insight/platform-features.md rename to ja/insight/platform-features.mdx index 4bf41ffcf..e862c3ec2 100644 --- a/docs/ja/insight/platform-features.md +++ b/ja/insight/platform-features.mdx @@ -1,4 +1,6 @@ -# 各メッセージプラットフォームの機能サポート +--- +title: "各メッセージプラットフォームの機能サポート" +--- 以下は各プラットフォームで実装およびテスト済みの機能リストです。予期しない動作が発生した場合は、[GitHub Issues](https://github.com/langbot-app/LangBot/issues)に報告するか、Pull Requestを直接提出して修正にご協力ください。 diff --git a/docs/ja/plugin/compatibility.md b/ja/plugin/compatibility.mdx similarity index 97% rename from docs/ja/plugin/compatibility.md rename to ja/plugin/compatibility.mdx index 9aa7e9786..50b60b7dc 100644 --- a/docs/ja/plugin/compatibility.md +++ b/ja/plugin/compatibility.mdx @@ -1,4 +1,6 @@ -# システム互換性 +--- +title: "システム互換性" +--- LangBotのプラグインシステムは、`Asyncio`や`Subprocess`などのメカニズムを利用しています。これらはUnix系システム(LinuxやmacOSなど)では正常に動作しますが、Windowsではいくつかの問題があり、プラグインが正常に動作しない場合があります。 diff --git a/docs/ja/plugin/dev/apis/common.md b/ja/plugin/dev/apis/common.mdx similarity index 98% rename from docs/ja/plugin/dev/apis/common.md rename to ja/plugin/dev/apis/common.mdx index 79fec3e63..e93d48404 100644 --- a/docs/ja/plugin/dev/apis/common.md +++ b/ja/plugin/dev/apis/common.mdx @@ -1,11 +1,9 @@ -# プラグイン共通API +--- +title: "プラグイン共通API" +--- LangBotは、プラグインがさまざまなLangBotモジュールを操作し、メッセージコンテキストを制御するための一連のAPIを提供します。 -:::info 目次 -[[toc]] -::: - ## リクエストAPI 現在処理中のユーザーリクエスト(メッセージ)に対する操作です。`EventListener`と`Command`コンポーネントでのみ使用可能です。アクセス方法: @@ -309,4 +307,4 @@ async def get_config_file(self, file_key: str) -> bytes: file_bytes = await self.plugin.get_config_file("key") ``` -これは[`file`または`array[file`](/en/plugin/dev/basic-info.html#type-file)型の設定フィールドと組み合わせて使用します。 +これは[``fileまたはarray[file``](/en/plugin/dev/basic-info.html#type-file)型の設定フィールドと組み合わせて使用します。 \ No newline at end of file diff --git a/ja/plugin/dev/apis/messages.mdx b/ja/plugin/dev/apis/messages.mdx new file mode 100644 index 000000000..130ca772d --- /dev/null +++ b/ja/plugin/dev/apis/messages.mdx @@ -0,0 +1,91 @@ +--- +title: "メッセージプラットフォームエンティティ" +--- + +LangBotは複数のメッセージングプラットフォームをサポートしており、各プラットフォームには異なる`メッセージエンティティ`フォーマットがあります。これらの違いを抽象化するために、統一された標準を実装しました。プラグイン開発者は、プラグイン内でこのページに記載されているメッセージエンティティを習得して使用するだけで、LangBotの内部メッセージ処理ロジックがメッセージの解析と変換を自動的に処理します。 + +## メッセージチェーン + +メッセージングプラットフォーム上の`メッセージ`は、AI対話に使用されるメッセージとは異なります。メッセージングプラットフォーム上のメッセージは、`メッセージチェーン`の形式で記述されます。QQに表示される各独立したメッセージはメッセージチェーンであり、`テキスト`、`画像`、`@メンション`などのさまざまな`メッセージチェーンコンポーネント`を含むことができます。例えば: + +![](/images/zh/plugin/dev/apis/plugin_dev_messages_01.png) + +これは、1つのPlainコンポーネント(Hello World)と1つのImageコンポーネント(Usagi)を含むメッセージチェーンです。 + +メッセージチェーンとメッセージチェーンコンポーネントの定義は、`langbot_plugin.api.entities.builtin.platform.message`にあります。 + +### メッセージチェーンの構築 + +まず、`langbot_plugin.api.entities.builtin.platform.message`パッケージをインポートして、その中のメッセージコンポーネントを使用してください。 + +```python +from langbot_plugin.api.entities.builtin.platform.message import * + +# テキスト「Hello LangBot」と画像(URLから)を含むメッセージを構築 +msg_chain = MessageChain([ + Plain(text="Hello LangBot"), + Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') +]) + +# @全員とテキスト「Hello LangBot」を含むメッセージを構築 +msg_chain = MessageChain([ + AtAll(), + Plain(text="Hello LangBot") +]) + +# @特定のメンバーとテキスト「Hello LangBot」を含むメッセージを構築 +msg_chain = MessageChain([ + At(target=123456), + Plain(text="Hello LangBot") +]) +``` + +現在サポートされているメッセージチェーンコンポーネント: + +- `Source` - ソースメッセージチェーン情報。メッセージングプラットフォームから受信したメッセージには、メッセージ情報を記録するためにメッセージチェーンの先頭にこのコンポーネントが含まれます +- `Plain` - プレーンテキストメッセージ +- `Quote` - 引用メッセージ +- `Image` - 画像メッセージ +- `AtAll` - @全員メッセージ +- `At` - @特定のメンバーメッセージ +- `Voice` - 音声メッセージ + - メッセージングプラットフォームのサポートを確認する必要があります +- `Forward` - 転送メッセージ + - 多くのプラットフォームでサポートされていないため、推奨されません +- `File` - ファイルメッセージ + +コンポーネントを作成する際は、名前付きパラメータを使用する必要があります。具体的な使用方法については、ソースコード`langbot_plugin.api.entities.builtin.platform.message`の定義を確認してください。 + +## その他のエンティティ + +上記のエンティティに加えて、`Friend`や`Group`などのエンティティもあります。これらのエンティティは`langbot_plugin.api.entities.platform.entities`で定義されています。 + +## 基盤プラットフォームAPIへのアクセス + + + 4.xには適用されません。 + + +プラットフォームの違いを抽象化するために、LangBotはメッセージングプラットフォームAPIの上に抽象化レイヤーを提供しています。これには、上記で説明した内容と、`pkg/platform/sources`ディレクトリ内のさまざまなプラットフォームアダプターが含まれます。 ただし、プラットフォームの違いが大きいため、抽象化レイヤーのエンティティとAPIのカプセル化は完全ではありません。プラグインがプラットフォーム固有の機能にアクセスする必要がある場合は、次の手順に従って基盤APIにアクセスできます。 + + + ```python + # 例えばプラグイン内で + @handler(GroupMessageReceived) + async def _(self, ctx: EventContext): + # アダプターオブジェクトを取得 + adapter = ctx.query.adapter + ``` + + +| プラットフォーム | アダプター | アクセス方法 | 説明 | +| ------------- | --------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OneBot v11 | aiocqhttp | adapter.bot | botオブジェクトは[aiocqhttp](https://github.com/nonebot/aiocqhttp) CQHttpオブジェクトに対応します。詳細な使用方法についてはaiocqhttpドキュメントを参照してください | +| QQ公式API | qqofficial | adapter.bot | botオブジェクトはlibs/qq_official_api以下のSDKオブジェクトです。詳細な使用方法については、libs/qq_official_api/api.pyの`QQOfficialClient`内の`send_group_text_msg`メソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはQQ公式APIドキュメントを参照してください | +| WeCom(企業微信) | wecom | adapter.bot | libs/wecom_api/api.pyの`WecomClient`内の`send_image`メソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはWeCom APIドキュメントを参照してください | +| WeChat公式アカウント | officialaccount | - | インターフェースドキュメントについてはWeChat公式アカウントAPIドキュメントを参照してください。認証情報はadapter.botから取得できます | +| Lark | lark | adapter.api_client | Lark SDKのAPI Clientオブジェクトです。詳細については[oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python)を参照してください | +| DingTalk | dingtalk | - | DingTalk APIドキュメントを参照してください。認証情報はadapter.botから取得できます | +| Discord | discord | adapter.bot | botオブジェクトは[Rapptz/discord.py](https://github.com/Rapptz/discord.py) Discordオブジェクトです。詳細な使用方法についてはドキュメントを参照してください | +| Telegram | telegram | adapter.bot | botオブジェクトは[python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) Telegramオブジェクトです。詳細な使用方法についてはドキュメントを参照してください | +| Slack | slack | adapter.bot | botオブジェクトはlibs/slack_api/api.py内にあります。詳細な使用方法についてはそのコードとSlack SDKを参照してください | \ No newline at end of file diff --git a/docs/ja/plugin/dev/apis/pipeline-events.md b/ja/plugin/dev/apis/pipeline-events.mdx similarity index 94% rename from docs/ja/plugin/dev/apis/pipeline-events.md rename to ja/plugin/dev/apis/pipeline-events.mdx index fdd2be3f1..50d81cf52 100644 --- a/docs/ja/plugin/dev/apis/pipeline-events.md +++ b/ja/plugin/dev/apis/pipeline-events.mdx @@ -1,8 +1,6 @@ -# パイプラインイベントとAPI - -:::info 目次 -[[toc]] -::: +--- +title: "パイプラインイベントとAPI" +--- LangBotプラグインはパイプラインイベントを登録して処理できます。使用方法については、[コンポーネント: イベントリスナー](/ja/plugin/dev/components/event-listener)を参照してください。 @@ -10,7 +8,7 @@ LangBotプラグインはパイプラインイベントを登録して処理で 一部のイベントには`設定可能な属性`があり、プラグインコードで変更して、その後のLangBot処理で使用できます。 -### *MessageReceived +### \*MessageReceived グループチャットまたはプライベートチャットでメッセージを受信したときにトリガーされます。 @@ -61,7 +59,7 @@ class GroupMessageReceived(BaseEventModel): """メッセージチェーン""" ``` -### *NormalMessageReceived +### \*NormalMessageReceived グループチャットまたはプライベートチャットメッセージを受信し、LLMで処理する必要があるメッセージ(コマンドでないメッセージ)であると判定されたときにトリガーされます。 @@ -134,11 +132,11 @@ class GroupNormalMessageReceived(BaseEventModel): """直接返信メッセージチェーン、デフォルト動作を防止した場合のみ有効""" ``` -### *CommandSent +### \*CommandSent -:::warning 注意 -使用は推奨されなくなりました。代わりに[コンポーネント: Command](/ja/plugin/dev/components/command)を使用してください。 -::: + + 使用は推奨されなくなりました。代わりに[コンポーネント: Command](/ja/plugin/dev/components/command)を使用してください。 + グループチャットまたはプライベートチャットでコマンドを受信したときにトリガーされます。 @@ -189,7 +187,6 @@ class GroupCommandSent(BaseEventModel): is_admin: bool """管理者かどうか""" - ``` ### NormalMessageResponded @@ -288,18 +285,15 @@ event_context.prevent_default() このメソッドを呼び出すと、このイベントのデフォルトの後続動作が防止され、パイプラインは直接終了します。 -:::info -次のイベントのみがデフォルト動作を防止できます: - -- PersonMessageReceived -- GroupMessageReceived -- PersonNormalMessageReceived -- GroupNormalMessageReceived -- PersonCommandSent -- GroupCommandSent -- NormalMessageResponded - -::: + + - PersonMessageReceived + - GroupMessageReceived + - PersonNormalMessageReceived + - GroupNormalMessageReceived + - PersonCommandSent + - GroupCommandSent + - NormalMessageResponded + ### 後続実行を防止 @@ -311,4 +305,4 @@ def prevent_postorder(self): event_context.prevent_postorder() ``` -このメソッドを呼び出すと、後続のプラグインがこの時点で実行されなくなります。 +このメソッドを呼び出すと、後続のプラグインがこの時点で実行されなくなります。 \ No newline at end of file diff --git a/docs/ja/plugin/dev/apis/tech-details.md b/ja/plugin/dev/apis/tech-details.mdx similarity index 91% rename from docs/ja/plugin/dev/apis/tech-details.md rename to ja/plugin/dev/apis/tech-details.mdx index 1036f5f38..fa2c39e54 100644 --- a/docs/ja/plugin/dev/apis/tech-details.md +++ b/ja/plugin/dev/apis/tech-details.mdx @@ -1,8 +1,10 @@ -# プラグイン技術詳細 +--- +title: "プラグイン技術詳細" +--- ## アーキテクチャ - + バージョン4.0では、高セキュリティで柔軟性の高い本番環境グレードのプラグインシステムを導入し、開発者に豊富なAPIと使いやすいサポートツールを提供しています。 diff --git a/docs/ja/plugin/dev/basic-info.md b/ja/plugin/dev/basic-info.mdx similarity index 96% rename from docs/ja/plugin/dev/basic-info.md rename to ja/plugin/dev/basic-info.mdx index 42d31e7f5..98d096782 100644 --- a/docs/ja/plugin/dev/basic-info.md +++ b/ja/plugin/dev/basic-info.mdx @@ -1,8 +1,6 @@ -# プラグイン設定情報の完成 - -:::info 目次 -[[toc]] -::: +--- +title: "プラグイン設定情報の完成" +--- ## マニフェストファイルの修正 @@ -180,9 +178,9 @@ print(file_config) file_bytes = await self.get_config_file(file_key) ``` -::: info -一般的なMIMEタイプとファイル拡張子のリファレンス: [MDNドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) -::: + + 一般的なMIMEタイプとファイル拡張子のリファレンス: [MDNドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) + ### type: array[file] @@ -241,4 +239,4 @@ print(bot_uuid) # 出力: '550e8400-e29b-41d4-a716-446655440000' このチュートリアルでは、プラグイン機能を段階的に完成させる方法を案内します。 -- コンポーネントの追加: プラグインコンポーネントはプラグインのコア機能ユニットです。必要に応じて[コンポーネントを追加](/en/plugin/dev/components/add)できます。 +- コンポーネントの追加: プラグインコンポーネントはプラグインのコア機能ユニットです。必要に応じて[コンポーネントを追加](/en/plugin/dev/components/add)できます。 \ No newline at end of file diff --git a/docs/ja/plugin/dev/components/add.md b/ja/plugin/dev/components/add.mdx similarity index 85% rename from docs/ja/plugin/dev/components/add.md rename to ja/plugin/dev/components/add.mdx index 598ff1b51..74758c7de 100644 --- a/docs/ja/plugin/dev/components/add.md +++ b/ja/plugin/dev/components/add.mdx @@ -1,4 +1,6 @@ -# コンポーネントの追加 +--- +title: "コンポーネントの追加" +--- プラグインは、LangBotにさまざまな機能を提供する1つ以上のコンポーネントで構成されています。現在サポートされているコンポーネントタイプには次のものがあります: @@ -31,8 +33,7 @@ Component EventListener generated successfully. ➜ HelloPlugin > ``` -:::info -CLIはプラグインディレクトリに`components`ディレクトリを生成し、その中に対応するコンポーネントディレクトリを作成します。 + ``` . @@ -61,13 +62,13 @@ components: ... ``` コンポーネントを削除するには、対応する情報を手動で削除できます。 -::: + ## コンポーネントタイプ 各コンポーネントの詳細な使用方法については、次を参照してください: -- [EventListener](./event-listener.md) -- [Command](./command.md) -- [Tool](./tool.md) -- [KnowledgeRetriever](./knowledge-retriever.md) +- [EventListener](./event-listener) +- [Command](./command) +- [Tool](./tool) +- [KnowledgeRetriever](./knowledge-retriever) diff --git a/docs/ja/plugin/dev/components/command.md b/ja/plugin/dev/components/command.mdx similarity index 94% rename from docs/ja/plugin/dev/components/command.md rename to ja/plugin/dev/components/command.mdx index 5ddf5e9dd..dc60826ae 100644 --- a/docs/ja/plugin/dev/components/command.md +++ b/ja/plugin/dev/components/command.mdx @@ -1,8 +1,10 @@ -# コンポーネント: Command +--- +title: "コンポーネント: Command" +--- Commandコンポーネントは、`!`(または他の設定されたプレフィックス)で始まるユーザーコマンドメッセージによってトリガーされます。`!help`コマンドをトリガーする例を次に示します: - + ## Commandコンポーネントの追加 @@ -53,7 +55,7 @@ execution: ## プラグイン処理 -以下のコードがデフォルトで生成されます(components/command/.py)。`Info`クラスの`initialize`メソッドでサブコマンド処理ロジックを登録して実装する必要があります。 +以下のコードがデフォルトで生成されます(`components/command/.py`)。`Info`クラスの`initialize`メソッドでサブコマンド処理ロジックを登録して実装する必要があります。 ```python # Auto generated by LangBot Plugin SDK. @@ -136,7 +138,7 @@ class Info(Command): 上記のコマンドの効果は画像に示されています: - + ### コマンドコンテキスト diff --git a/docs/ja/plugin/dev/components/event-listener.md b/ja/plugin/dev/components/event-listener.mdx similarity index 98% rename from docs/ja/plugin/dev/components/event-listener.md rename to ja/plugin/dev/components/event-listener.mdx index 72c80aa9a..3f0b99319 100644 --- a/docs/ja/plugin/dev/components/event-listener.md +++ b/ja/plugin/dev/components/event-listener.mdx @@ -1,4 +1,6 @@ -# コンポーネント: イベントリスナー +--- +title: "コンポーネント: イベントリスナー" +--- LangBotのパイプラインは実行時にイベントを生成し、プラグインがフックして処理できるようにします。各プラグインは1つのイベントリスナー(components/event_listener/default.yaml)のみを持つことができますが、その中で任意の数のイベントを登録できます。 diff --git a/docs/ja/plugin/dev/components/knowledge-retriever.md b/ja/plugin/dev/components/knowledge-retriever.mdx similarity index 94% rename from docs/ja/plugin/dev/components/knowledge-retriever.md rename to ja/plugin/dev/components/knowledge-retriever.mdx index c01a88b8d..4df7ef932 100644 --- a/docs/ja/plugin/dev/components/knowledge-retriever.md +++ b/ja/plugin/dev/components/knowledge-retriever.mdx @@ -1,8 +1,10 @@ -# コンポーネント: ナレッジリトリーバー +--- +title: "コンポーネント: ナレッジリトリーバー" +--- ナレッジリトリーバーコンポーネントにより、プラグインはLangBotに外部ナレッジベース検索機能を提供できます。ユーザーがLangBotで外部ナレッジベースを作成する際、プラグインが提供するナレッジリトリーバーを選択してナレッジを検索できます。 - + ## ナレッジリトリーバーコンポーネントの追加 @@ -116,7 +118,7 @@ execution: ## プラグインハンドラ -以下のコードがデフォルトで生成されます(components/knowledge_retriever/.py)。`FastGPT`クラスの`retrieve`メソッドでナレッジ検索ロジックを実装する必要があります。完全なコードは[langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo)で見つけることができます。 +以下のコードがデフォルトで生成されます(`components/knowledge_retriever/.py`)。`FastGPT`クラスの`retrieve`メソッドでナレッジ検索ロジックを実装する必要があります。完全なコードは[langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo)で見つけることができます。 ```python # Auto generated by LangBot Plugin SDK. @@ -259,6 +261,6 @@ search_mode = self.config.get('search_mode', 'embedding') 2. 外部ナレッジベースを追加 3. プラグインが提供するナレッジリトリーバーを選択し、設定を入力 - + 保存後、LangBotパイプラインでこのナレッジベースを選択できます。 diff --git a/docs/ja/plugin/dev/components/tool.md b/ja/plugin/dev/components/tool.mdx similarity index 94% rename from docs/ja/plugin/dev/components/tool.md rename to ja/plugin/dev/components/tool.mdx index 375927823..fadc8efcd 100644 --- a/docs/ja/plugin/dev/components/tool.md +++ b/ja/plugin/dev/components/tool.mdx @@ -1,4 +1,6 @@ -# コンポーネント: Tool +--- +title: "コンポーネント: Tool" +--- LangBotの組み込みLocal Agentは、実行中にツールを呼び出して外部世界と対話します。現在、プラグインとMCPの両方を通じてツールを追加することがサポートされています。 @@ -53,7 +55,7 @@ execution: ## プラグイン処理 -以下のコードがデフォルトで生成されます(components/tools/.py)。`GetWeatherAlerts`クラスの`call`メソッドでこのツールの呼び出しと戻り値のロジックを実装する必要があります。 +以下のコードがデフォルトで生成されます(`components/tools/.py`)。`GetWeatherAlerts`クラスの`call`メソッドでこのツールの呼び出しと戻り値のロジックを実装する必要があります。 ```python # Auto generated by LangBot Plugin SDK. @@ -75,9 +77,9 @@ class GetWeatherAlerts(Tool): `call`メソッドでこのツールを実装します: -:::info + 天気検索ツールの例は、MCPの[サーバー作成例](https://modelcontextprotocol.io/quickstart/server)から来ています。 -::: + ```python from __future__ import annotations @@ -165,7 +167,7 @@ httpx 次に、プラグインディレクトリでコマンド`lbp run`を実行してデバッグを開始します。LangBotでツール呼び出しをサポートするモデルを設定し、対応するパイプラインでそのモデルの使用を選択してこのツールを使用します。 - + ## 次のステップ diff --git a/docs/ja/plugin/dev/directory-structure.md b/ja/plugin/dev/directory-structure.mdx similarity index 90% rename from docs/ja/plugin/dev/directory-structure.md rename to ja/plugin/dev/directory-structure.mdx index b3aaf4389..dd613f174 100644 --- a/docs/ja/plugin/dev/directory-structure.md +++ b/ja/plugin/dev/directory-structure.mdx @@ -1,8 +1,6 @@ -# プラグインディレクトリ構造 - -:::info 目次 -[[toc]] -::: +--- +title: "プラグインディレクトリ構造" +--- このドキュメントでは、LangBotプラグインの標準ディレクトリ構造とファイル組織仕様を紹介し、開発者が準拠したプラグインを作成できるように支援します。 @@ -38,12 +36,11 @@ LangBotプラグインは、異なる言語のユーザーにローカライズ **重要な仕様:** -1. **ルート`README.md`(必須)** +1. **`ルートREADME.md(必須)`** - **英語**で記述する必要があります - プラグインのデフォルトドキュメントとして機能します - 要求された言語バージョンが存在しない場合のフォールバックとして使用されます - -2. **`readme/`ディレクトリ(オプション)** +2. **`readme/ディレクトリ(オプション)`** - **非英語**のREADMEドキュメントを保存するために使用 - ファイル命名形式: `README_{言語コード}.md` @@ -51,12 +48,12 @@ LangBotプラグインは、異なる言語のユーザーにローカライズ [RFC 4646](https://datatracker.ietf.org/doc/html/rfc4646)標準に従い、LangBotは現在次の言語コードをサポートしています: -| 言語 | 言語コード | ファイル名 | 配置場所 | -|----------|---------------|----------|----------| -| 英語 | `en`または`en_US` | `README.md` | **プラグインルートディレクトリ** | -| 簡体字中国語 | `zh_Hans` | `README_zh_Hans.md` | `readme/`ディレクトリ | -| 繁体字中国語 | `zh_Hant` | `README_zh_Hant.md` | `readme/`ディレクトリ | -| 日本語 | `ja_JP` | `README_ja_JP.md` | `readme/`ディレクトリ | +| 言語 | 言語コード | ファイル名 | 配置場所 | +| ------ | -------------- | ------------------- | ------------------ | +| 英語 | `en`または`en_US` | `README.md` | **プラグインルートディレクトリ** | +| 簡体字中国語 | `zh_Hans` | `README_zh_Hans.md` | `readme/`ディレクトリ | +| 繁体字中国語 | `zh_Hant` | `README_zh_Hant.md` | `readme/`ディレクトリ | +| 日本語 | `ja_JP` | `README_ja_JP.md` | `readme/`ディレクトリ | ### ディレクトリ構造の例 @@ -102,7 +99,6 @@ This is a plugin... - ユーザーが簡体字中国語(`zh_Hans`)を要求 - → `readme/README_zh_Hans.md`を検索 - → 見つからない場合は、`README.md`(英語版)を返します - - ユーザーが日本語(`ja_JP`)を要求 - → `readme/README_ja_JP.md`を検索 - → 見つからない場合は、`README.md`(英語版)を返します @@ -188,4 +184,4 @@ pillow>=9.0.0 - [基本チュートリアル](/en/plugin/dev/tutor) - 最初のプラグインを作成する方法を学ぶ - [プラグイン設定情報の完成](/en/plugin/dev/basic-info) - manifest.yamlの設定 - [コンポーネントの追加](/en/plugin/dev/components/add) - プラグインコンポーネントの開発 -- [マーケットプレイスに公開](/en/plugin/dev/publish/market) - プラグインを配布 +- [マーケットプレイスに公開](/en/plugin/dev/publish/market) - プラグインを配布 \ No newline at end of file diff --git a/docs/ja/plugin/dev/migration.md b/ja/plugin/dev/migration.mdx similarity index 95% rename from docs/ja/plugin/dev/migration.md rename to ja/plugin/dev/migration.mdx index 27f511a9b..e10e0fb1d 100644 --- a/docs/ja/plugin/dev/migration.md +++ b/ja/plugin/dev/migration.mdx @@ -1,14 +1,15 @@ -# 移行ガイド +--- +title: "移行ガイド" +--- このチュートリアルでは特定の考慮事項を強調しています。まず現在のバージョンのプラグインチュートリアルをお読みいただき、その後このドキュメントをプラグイン移行のリファレンスとしてご使用ください。 ## 3.xサポートの非同期プラグインからの移行 -:::info -プラグインの特徴: + - 主な期間: 2024.2 ~ 2025.8 - 登録方法: `main.py`のプラグインクラスで`@handler`デコレータを使用してイベントリスナーを登録し、`@llm_func`デコレータを使用してコンテンツ関数(ツール)を登録; すべてのハンドラ関数は非同期関数(async def) -::: + - プラグインとコンポーネント登録方法: 以前の単一プラグインクラスデコレータ登録方法から、マニフェストファイル登録方法に変更されました。[マニフェストファイル](/en/plugin/dev/basic-info)を参照してください; そして、異なるタイプのコンポーネントを独立して分離しました。詳細については、[コンポーネントの追加](/en/plugin/dev/components/add)を参照してください。 - メッセージチェーンエンティティ: リファクタリングされました。各メッセージチェーン要素の構築方法では、**名前付きパラメータ**の明示的な渡しが必要になりました。[メッセージプラットフォームエンティティ](/en/plugin/dev/apis/messages)を参照してください。 @@ -17,11 +18,10 @@ ## 2.xおよび3.xサポートの同期プラグインからの移行 -:::info -プラグインの特徴: + - 主な期間: 2023.1 ~ 2024.2 - 登録方法: `main.py`のプラグインクラスで`@on`デコレータを使用してイベントリスナーを登録し、`@func`デコレータを使用してコンテンツ関数(ツール)を登録; すべてのハンドラ関数は同期関数(def) -::: + - 同期から非同期へ: プラグインランタイムは完全に非同期(asyncioベース)に変更されました。IO操作を含むすべてのプラグインコードを非同期記述に変更してください。 - 詳細な内容については、上記の3.x非同期プラグイン移行ガイドを参照してください。 diff --git a/docs/ja/plugin/dev/publish/github.md b/ja/plugin/dev/publish/github.mdx similarity index 87% rename from docs/ja/plugin/dev/publish/github.md rename to ja/plugin/dev/publish/github.mdx index 71ad13356..e0e6e61fc 100644 --- a/docs/ja/plugin/dev/publish/github.md +++ b/ja/plugin/dev/publish/github.mdx @@ -1,4 +1,6 @@ -# GitHub経由でプラグインを配布 +--- +title: "GitHub経由でプラグインを配布" +--- プラグインをGitHubにアップロードし、リポジトリのReleaseを作成して`.lbpkg`ファイルをアップロードすることで、他のユーザーがLangBotでインストールできるようになります。 @@ -16,7 +18,7 @@ lbp build プラグインをGitHubにアップロードし、プラグインリポジトリのReleaseページに移動し、Releaseを作成をクリックして、先ほどビルドした`.lbpkg`ファイルをアップロードします。 - + ## プラグインのインストール diff --git a/docs/ja/plugin/dev/publish/market.md b/ja/plugin/dev/publish/market.mdx similarity index 90% rename from docs/ja/plugin/dev/publish/market.md rename to ja/plugin/dev/publish/market.mdx index 49f2420f0..a80f8f696 100644 --- a/docs/ja/plugin/dev/publish/market.md +++ b/ja/plugin/dev/publish/market.mdx @@ -1,4 +1,6 @@ -# プラグインマーケットプレイスに公開 +--- +title: "プラグインマーケットプレイスに公開" +--- CLI経由で[LangBotプラグインマーケットプレイス](https://space.langbot.app/market)にプラグインを公開します。 @@ -6,7 +8,7 @@ CLI経由で[LangBotプラグインマーケットプレイス](https://space.la LangBot SpaceはLangBotの集中サービスプラットフォームです。[LangBot Space](https://space.langbot.app)にアクセスし、右上隅をクリックしてGitHubでログインし、アカウントを作成してください。 - + GitHubの認証ページにリダイレクトされますので、プロンプトに従って認証を完了してください。 @@ -31,7 +33,7 @@ Waiting for verification... `Verification URL`をクリックしてLangBot Spaceにリダイレクトし、`User Code`を入力してログインを完了してください。 - + ```bash ================================================== @@ -60,6 +62,6 @@ Plugin built successfully: dist/tmp/RockChinQ-HelloPlugin-0.1.0.lbpkg [LangBotプラグインマーケットプレイス](https://space.langbot.app/market)でプラグイン提出タスクを確認できます。承認をお待ちください。承認後、マーケットプレイスでプラグインを表示できます。 - + ご質問がある場合は、`hello@langbot.app`にメールを送信するか、[コミュニティ](/en/insight/community)を通じてお問い合わせください。 diff --git a/docs/ja/plugin/dev/style.md b/ja/plugin/dev/style.mdx similarity index 92% rename from docs/ja/plugin/dev/style.md rename to ja/plugin/dev/style.mdx index 24378c0ef..a334bc4de 100644 --- a/docs/ja/plugin/dev/style.md +++ b/ja/plugin/dev/style.mdx @@ -1,4 +1,6 @@ -# コードスタイルガイド +--- +title: "コードスタイルガイド" +--- ## ロギング @@ -12,4 +14,4 @@ logger = logging.getLogger(__name__) # 任意の Python ファイルの先頭 logger.info('This is an info message') # logger.info を使用して info レベルのログを記録します logger.warning('This is a warning message') logger.error('This is an error message') -``` \ No newline at end of file +``` diff --git a/docs/ja/plugin/dev/tutor.md b/ja/plugin/dev/tutor.mdx similarity index 90% rename from docs/ja/plugin/dev/tutor.md rename to ja/plugin/dev/tutor.mdx index 2c8a8f149..6490400a0 100644 --- a/docs/ja/plugin/dev/tutor.md +++ b/ja/plugin/dev/tutor.mdx @@ -1,10 +1,12 @@ -# プラグイン開発チュートリアル +--- +title: "プラグイン開発チュートリアル" +--- ## アーキテクチャの基礎 バージョン4.0では、高セキュリティで柔軟性の高い本番環境グレードのプラグインシステムを導入し、開発者に豊富なAPIと使いやすいサポートツールを提供しています。 - + Plugin Runtimeは、プラグインのライフサイクルを管理し、LangBotとプラグイン間の相互作用を調整するために使用されます。`stdio`と`websocket`の2つの動作モードがあります。LangBotがユーザーによって直接起動される場合(コンテナ内で実行されていない場合)、`stdio`モードを使用します。これは個人ユーザーや軽量環境で一般的です。LangBotがコンテナ内で実行される場合、`websocket`モードを使用します。これは本番環境専用に設計されています。 @@ -43,11 +45,10 @@ main.pyのプラグインクラスは各プラグインの共通コードで、 各コンポーネントはプラグインのコア機能モジュールであり、必要に応じて[追加および削除](/en/plugin/dev/components/add)できます。異なるコンポーネントは異なる状況で呼び出され、後でプラグイン機能を簡単に拡張できます。各コンポーネントは`langbot_plugin.api.definition.components`パッケージ下のさまざまなコンポーネント基底クラスから直接継承し、`plugin: BasePlugin`オブジェクトを含み、プラグインのAPIを直接呼び出すことができます。 -::: info -- 詳細なAPIドキュメントについては、[APIリファレンス](/en/plugin/dev/apis/common)を参照してください。 + このチュートリアルを続けて読んで、プラグイン開発プロセスを理解してください。 -::: + ## AI 支援開発 @@ -73,16 +74,14 @@ lbp init プロンプトに従って`Author`、`Description`などの情報を入力します。 -:::info -`lbp init HelloPlugin`コマンドを使用して、サブディレクトリ`HelloPlugin`でプラグインを初期化することもできます。 + - -::: + + この操作により、プラグインの初期ファイルが生成されます。お気に入りのエディターで`HelloPlugin`ディレクトリを開き、プラグインコードの記述を開始できます。 -:::info -`lbp`コマンドで「command not found」エラーが発生した場合、`PATH`環境変数が適切に設定されていない可能性があります。 + `lbp`コマンドの代わりに`python -m langbot_plugin.cli.__init__`を使用できます。 例えば: @@ -91,14 +90,13 @@ lbp init python -m langbot_plugin.cli.__init__ init HelloPlugin cd HelloPlugin ``` -::: + ## デバッグモードの開始 まずLangBotをデプロイして起動し、Plugin Runtimeが実行されてポート`5401`をリッスンしていることを確認する必要があります。 -::: info -Runtimeには2つの起動モードがあります: + - `Stdio`モード: 起動パラメータ`--standalone-runtime`なしでソースコードを使用してLangBotを起動すると、LangBotは自動的にPlugin Runtimeをサブプロセスとして起動し、`stdio`(標準入出力ストリーム)を通じてPlugin Runtimeと通信します。この場合、RuntimeはLangBotルートディレクトリの`data/plugins`ディレクトリからプラグインをロードし、LangBotホストのポート`5401`をデバッグポートとしてリッスンします。 @@ -109,7 +107,7 @@ Runtimeには2つの起動モードがあります: `stdio`または`websocket`モードのいずれの場合でも、Plugin Runtimeはそのホストのポート`5401`をプラグインデバッグ接続のデバッグポートとしてリッスンします。 プラグインを開発する際は、[開発設定](/en/develop/dev-config)方法に従ってLangBotを起動することをお勧めします。これによりPlugin RuntimeがStdioモードで起動され、プラグイン開発が容易になります。 -::: + プラグインディレクトリの`.env.example`ファイルを`.env`にコピーし、`DEBUG_RUNTIME_WS_URL`をPlugin RuntimeのWebSocketアドレスに確認または変更します。 @@ -123,11 +121,11 @@ cp .env.example .env lbp run ``` - + そして、LangBotのWebUIでこのプラグインがロードされたことを確認できます。 - + ## 次のステップ diff --git a/docs/ja/plugin/plugin-intro.md b/ja/plugin/plugin-intro.mdx similarity index 86% rename from docs/ja/plugin/plugin-intro.md rename to ja/plugin/plugin-intro.mdx index 6829b645a..affc667d4 100644 --- a/docs/ja/plugin/plugin-intro.md +++ b/ja/plugin/plugin-intro.mdx @@ -1,10 +1,12 @@ -# LangBotプラグイン +--- +title: "LangBotプラグイン" +--- LangBotは、大規模言語モデルツール、コマンド、メッセージングプラットフォームアダプター、LLMリクエスターなど、さまざまな内部コンポーネントで構成されています。拡張性と柔軟性の要件を満たすために、本番環境グレードのプラグインシステムを実装しました。 各プラグインは独立したプロセスで実行され、Plugin Runtimeによって統一的に管理されます。 - + ## プラグイン構造 @@ -22,17 +24,17 @@ LangBotは、大規模言語モデルツール、コマンド、メッセージ 現在、プラグインパッケージのアップロードとプラグインマーケットプレイスからのプラグインのインストールをサポートしています。 LangBotのプラグイン管理ページで、右上隅をクリックしてインストール方法を選択します。 - + `Upload Local`をクリックして、他の人が共有した`.lbpkg`ファイルまたはマーケットプレイスからダウンロードしたファイルを選択してプラグインをインストールします。 または、プラグインマーケットプレイスタブをクリックし、プラグインを選択してインストールをクリックします。 - + プラグインをインストールした後、パイプライン設定ページでプラグインを選択する必要があります。 - + ## プラグイン管理 @@ -40,13 +42,13 @@ LangBotのプラグイン管理ページで、右上隅をクリックしてイ 一部のプラグインでは、特定の設定項目を入力する必要がある場合があります(プラグインREADMEの指示を参照)。プラグインカードをクリックしてプラグイン詳細ページに入り、プロンプトに従って必要な情報を取得して入力します。 - + ### プラグインの更新 プラグインマーケットプレイスからインストールされたプラグインのみを更新できます。 - + ## プラグインマーケットプレイス diff --git a/docs/ja/tags/readme.md b/ja/tags/readme.mdx similarity index 86% rename from docs/ja/tags/readme.md rename to ja/tags/readme.mdx index 2a9e2d860..baba68217 100644 --- a/docs/ja/tags/readme.md +++ b/ja/tags/readme.mdx @@ -1,20 +1,22 @@ -# Service API 概要 +--- +title: "Service API 概要" +--- LangBotは、外部サービスと統合するための一連のAPIを提供します。これらのAPIはAPIキーで認証され、HTTP APIのサブセットです。フロントエンドとバックエンドの通信用APIドキュメントを表示するには、[開発](/en/develop/dev-config)セクションにアクセスしてください。 -::: warning + Service APIは現在ベータ版であり、一部のAPIは頻繁に変更される可能性があります。 -::: + ## APIキーの取得 WebUIのサイドバーにある`API Keys`ボタンをクリックして、APIキーを作成します。 -![create_api_key](/assets/image/zh/api/create_api_key.png) +![create_api_key](/images/zh/api/create_api_key.png) 作成後、APIキーをコピーして保存します。 -![copy_api_key](/assets/image/zh/api/copy_api_key.png) +![copy_api_key](/images/zh/api/copy_api_key.png) ## APIの使用 diff --git a/docs/ja/tags/webhook.md b/ja/tags/webhook.mdx similarity index 98% rename from docs/ja/tags/webhook.md rename to ja/tags/webhook.mdx index c13a2ab9d..57d8e8934 100644 --- a/docs/ja/tags/webhook.md +++ b/ja/tags/webhook.mdx @@ -1,4 +1,6 @@ -# Webhook +--- +title: "Webhook" +--- Webhookを使用すると、ボットメッセージイベントを外部サービスに送信して処理できます。 @@ -85,9 +87,9 @@ WebhookサービスはJSONを返す必要があります: - `true`: メッセージはパイプラインで続行されません - `false`: メッセージは通常どおり続行されます -::: tip + `skip_pipeline`を使用すると、メッセージ処理を完全に引き継ぐことができます。`true`の場合、メッセージはWebhookサービスによってのみ処理され、LangBotのAI機能はトリガーされません。 -::: + ## 統合例 diff --git a/docs/ja/usage/knowledge/readme.md b/ja/usage/knowledge/readme.mdx similarity index 68% rename from docs/ja/usage/knowledge/readme.md rename to ja/usage/knowledge/readme.mdx index 0e48df924..7accc82d2 100644 --- a/docs/ja/usage/knowledge/readme.md +++ b/ja/usage/knowledge/readme.mdx @@ -1,17 +1,20 @@ -# ナレッジベースの使用 +--- +title: "ナレッジベースの使用" +--- LangBotはRAG(Retrieval-Augmented Generation)をネイティブサポートしています。組み込みナレッジベースを作成してパイプラインにバインドすることで、ナレッジベースの内容に基づいて質問に答えることができます。LangBotは外部のナレッジ検索サービス(例: Dify、RAGFlow)への接続もサポートしています。 ## 組み込みナレッジベースの構築 -:::info -- 組み込みナレッジベースの作成と使用には、まず埋め込みモデルの設定が必要です。[モデルの設定](/ja/usage/models/readme)をお読みください。 -::: + +組み込みナレッジベースの作成と使用には、まず埋め込みモデルの設定が必要です。[モデルの設定](/ja/usage/models/readme)をお読みください。 + + +`ナレッジベースを作成`ボタンをクリックし、名前を入力し、既に設定済みの埋め込みモデルを選択してから`作成`をクリックします。 -ナレッジベースページで`ナレッジベースを作成`ボタンをクリックし、名前を入力し、既に設定済みの埋め込みモデルを選択してから`作成`をクリックします。 作成後、ナレッジベースの「ドキュメント」タブに移動してドキュメントをアップロードします。LangBotはバックグラウンドで自動的に解析とインデックス化を行います。 -create_kb +create_kb ## 外部ナレッジベースの接続 @@ -21,14 +24,14 @@ LangBotはRAG(Retrieval-Augmented Generation)をネイティブサポートし パイプライン設定に移動し、「AI」タブで`Local Agent`をランナーとして選択してから、先ほど作成したナレッジベースを選択します。 -use_kb +use_kb -use_kb +use_kb -:::info + LangBotの組み込みナレッジベースは、ランナーが`Local Agent`に設定されている場合にのみ使用できます。他のランナーについては、それぞれのドキュメントを参照してください。 -::: + これで`チャットデバッグ`でナレッジベースを使用したり、このパイプラインにリンクされたボットを通じて使用できます: -use_kb_in_chat +use_kb_in_chat diff --git a/docs/ja/usage/mcp/readme.md b/ja/usage/mcp/readme.mdx similarity index 67% rename from docs/ja/usage/mcp/readme.md rename to ja/usage/mcp/readme.mdx index 8d93f53ab..0d86c1ba4 100644 --- a/docs/ja/usage/mcp/readme.md +++ b/ja/usage/mcp/readme.mdx @@ -1,37 +1,38 @@ -# MCPサーバーの使用 +--- +title: "MCPサーバーの使用" +--- LangBotはMCPサーバーをサポートしています。MCPサーバーを追加して、大規模言語モデルのツール呼び出し機能を活用し、LLMリクエストをより適切に処理できます。 -:::info -- MCP サービスは HTTP Streamable、SSE および stdio モードをサポートしています。 + - MCPサーバーの推奨取得チャネル: [Composio MCP](https://mcp.composio.dev/) -::: + ## モデルのFunction Callingを有効化 画像に示すように、モデルの`Function Calling`機能を有効にします。 -enable function call +enable function call ## MCPサーバーの作成 `プラグイン管理`をクリックしてから`MCP管理`をクリックします: -server page +server page 右上の`追加`をクリックしてから`MCPサーバーを作成`をクリックします。 -create new mcp server +create new mcp server 例えば、Fetch HTMLサーバーを使用するには、対応するURLを入力し、`テスト`をクリックしてMCPサーバーをテストし、`送信`をクリックしてサーバーを追加します。 追加後、カードのスイッチをクリックしてMCPサーバーに接続します。カードをクリックしてMCPサーバーの詳細を表示します: -detailed server +detailed server ## 効果 パイプライン設定で`Local Agent`をランナーとして選択し、function callingをサポートするモデルを使用する必要があります。 -dialog with mcp +dialog with mcp diff --git a/docs/ja/usage/models/readme.md b/ja/usage/models/readme.mdx similarity index 86% rename from docs/ja/usage/models/readme.md rename to ja/usage/models/readme.mdx index 8819544d3..d03b9493c 100644 --- a/docs/ja/usage/models/readme.md +++ b/ja/usage/models/readme.mdx @@ -1,10 +1,12 @@ -# モデルの設定(Models) +--- +title: "モデルの設定(Models)" +--- ## LangBot Models LangBot Modelsは、LangBotが公式に提供するモデルサービスです。LangBot Spaceアカウントでローカルインスタンスを初期化すると、利用可能なモデルが自動的にインスタンスに追加され、設定は不要です。すぐに始められるように、一定の無料枠が提供されます。 -langbot_models +langbot_models 具体的な利用可能モデルについては、[LangBot Space](https://space.langbot.app/models)をご確認ください。 @@ -16,11 +18,11 @@ LangBot Modelsは、LangBotが公式に提供するモデルサービスです モデルはパイプラインによってメッセージ処理に使用されます。最初に設定したモデルがデフォルトパイプラインのモデルとして設定されます。 -![arch](/assets/image/zh/deploy/models/arch.png) +![arch](/images/zh/deploy/models/arch.png) 複数のモデルを追加して、パイプラインでどのモデルを使用するかを選択できます。 -model_config +model_config これら4つのパラメータを入力します: `モデル名`、`モデルプロバイダー`、`リクエストURL`、`APIキー`、そして送信します。 @@ -34,7 +36,7 @@ LangBot Modelsは、LangBotが公式に提供するモデルサービスです 埋め込みモデルはメッセージのベクトル表現を計算するために使用されます。ナレッジベースを使用する場合は、このモデルを設定してください。 -embedding_model +embedding_model これら4つのパラメータを入力します: `モデル名`、`モデルプロバイダー`、`リクエストURL`、`APIキー`、そして送信します。その後、ナレッジベースでこのモデルを使用するように設定してください。 diff --git a/docs/ja/usage/pipelines/coze.md b/ja/usage/pipelines/coze.mdx similarity index 85% rename from docs/ja/usage/pipelines/coze.md rename to ja/usage/pipelines/coze.mdx index 574ad0888..b817b5b86 100644 --- a/docs/ja/usage/pipelines/coze.md +++ b/ja/usage/pipelines/coze.mdx @@ -1,24 +1,26 @@ -# Coze APIの統合 +--- +title: "Coze APIの統合" +--- このドキュメントでは、CozeプラットフォームからTokenとBot IDを取得し、LangBotパイプライン設定に入力する方法を説明します。 ## 1. TokenとBot IDの取得 1. Cozeプラットフォームにログインし、開発者コンソールに入ります。 -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze07.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze07.png) 2. 「API管理」でトークンを作成してコピーします。 -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze06.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze06.png) -:::info + Coze認証では、coze.cnは「サービスIDと認証情報」を通じた長期認証をサポートしていますが、coze.comはPersonal Access Tokenのみを提供しています。 -::: + 3. プロジェクト開発セクションから自分のエージェントを選択します(または新しいエージェントを作成します)。取得したIDが`bot_id`です。 -![Coze bot_id](/assets/image/zh/deploy/pipelines/coze/coze05.png) +![Coze bot_id](/images/zh/deploy/pipelines/coze/coze05.png) * エージェントを公開する際は、必ずAPIオプションを選択してください -![Coze Application API Key](/assets/image/zh/deploy/pipelines/coze/coze04.png) +![Coze Application API Key](/images/zh/deploy/pipelines/coze/coze04.png) 以下の2つの情報を安全に保管してください: - **token**: Cozeプラットフォームで生成されたトークン @@ -35,7 +37,7 @@ Coze認証では、coze.cnは「サービスIDと認証情報」を通じた長 - **bot_id**: 対応するBot IDを貼り付けます - 使用しているCozeサイトに応じて`API Base URL`を選択してください: coze.cnの場合は`https://api.coze.cn`を入力してください; coze.comの場合は`https://api.coze.com`を入力してください - ![パイプライン設定](/assets/image/zh/deploy/pipelines/coze/coze08.png) + ![パイプライン設定](/images/zh/deploy/pipelines/coze/coze08.png) 4. 「保存」をクリックして設定を完了します diff --git a/docs/ja/usage/pipelines/dify.md b/ja/usage/pipelines/dify.mdx similarity index 81% rename from docs/ja/usage/pipelines/dify.md rename to ja/usage/pipelines/dify.mdx index bc006c13a..1a0cda458 100644 --- a/docs/ja/usage/pipelines/dify.md +++ b/ja/usage/pipelines/dify.mdx @@ -1,4 +1,6 @@ -# LangBotでのDifyの使用 +--- +title: "LangBotでのDifyの使用" +--- [Dify](https://dify.ai)は、オープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームです。Backend as ServiceとLLMOpsの概念を組み合わせ、開発者が本番グレードの生成AIアプリケーションを迅速に構築できるようにします。 Difyは、チャットアシスタント(Chatflowを含む)、エージェント、テキスト生成アプリケーション、ワークフローなどのタイプのアプリケーションを作成できます。 @@ -11,32 +13,30 @@ LangBotは現在、3種類のDifyアプリケーションをサポートして アプリケーションを公開した後、アプリケーションの`Access API`ページに移動してAPIキーを生成します。 -![Dify Application API Key](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_01.png) +![Dify Application API Key](/images/zh/deploy/pipelines/dify/dify_sv_api_01.png) LangBotのパイプライン`AI機能`を設定するために、APIサーバーとAPIキーを保存します。 -:::info -上記はDifyクラウドサービスバージョンの例です。セルフホストコミュニティバージョンを使用している場合は、LangBotの`base-url`として独自のDifyサービスアドレスを使用し、パスとして`/v1`を追加してください。 + - LangBotとDifyが同じホストにデプロイされており、両方ともDockerを使用してデプロイされている場合は、記事[ネットワーク設定の詳細](/zh/workshop/network-details.html#langbot-%E5%92%8C%E6%B6%88%E6%81%AF%E5%B9%B3%E5%8F%B0%E5%9D%87%E8%BF%90%E8%A1%8C%E5%9C%A8-docker-%E5%AE%B9%E5%99%A8%E4%B8%AD)を参照してください。この場合、Difyを起動するdocker-compose.yamlファイル内のすべてのコンテナの`networks`に`langbot-network`を追加し、`nginx`コンテナにコンテナ名`dify-nginx`を追加し、最後にLangBot設定で`base-url`を`http://dify-nginx/v1`に設定します。 - その他のケースについては、会社の運用チームにお問い合わせください。 -::: + ## LangBotの設定 LangBot WebUIページを開き、新しいパイプラインを追加するか、既存のパイプラインのAI機能設定ページに切り替えます。 -![設定開発項目](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_02.png) +![設定開発項目](/images/zh/deploy/pipelines/dify/dify_sv_api_02.png) -::: info -### ワークフロー出力キー + Difyワークフローアプリケーションを使用している場合は、出力コンテンツを渡すキーとして`summary`を使用してください。 -![Difyワークフローアプリケーション出力キー](/assets/image/zh/deploy/pipelines/dify/dify_workflow_output_key.png) +![Difyワークフローアプリケーション出力キー](/images/zh/deploy/pipelines/dify/dify_workflow_output_key.png) ## 出力処理 ワークフローアプリケーションまたはエージェントアプリケーションを使用している場合、LangBotのパイプライン`出力処理`で`track-function-calls`を有効にすると、Difyが各ツール呼び出しを実行する際に`calling function xxx`というメッセージがユーザーに出力されます。 ただし、`chat`アプリケーション(チャットアシスタント -> ワークフローオーケストレーション)の下で`ChatFlow`を使用している場合は、設定に関係なく、Answer(直接返信)ノードによって返されるテキストのみが出力されます。 -::: + diff --git a/docs/ja/usage/pipelines/langflow.md b/ja/usage/pipelines/langflow.mdx similarity index 76% rename from docs/ja/usage/pipelines/langflow.md rename to ja/usage/pipelines/langflow.mdx index 521a0f542..8d971f1ee 100644 --- a/docs/ja/usage/pipelines/langflow.md +++ b/ja/usage/pipelines/langflow.mdx @@ -1,4 +1,6 @@ -# LangBotでのLangflowの使用 +--- +title: "LangBotでのLangflowの使用" +--- [Langflow](https://langflow.com/)は、AIベースのエージェントとワークフローを構築およびデプロイするためのオープンソースプロジェクトです。ローカルおよびクラウドデプロイをサポートし、他のアプリケーションが統合できるAPIを提供します。 @@ -10,22 +12,22 @@ LangBotは現在、ランナーとしてLangflowの使用をサポートして デフォルトテンプレートのSimple Agentの例: -![create_flow](/assets/image/zh/deploy/pipelines/langflow/create_flow.png) +![create_flow](/images/zh/deploy/pipelines/langflow/create_flow.png) 必要に応じてワークフローを変更できます: -![edit_flow](/assets/image/zh/deploy/pipelines/langflow/edit_flow.png) +![edit_flow](/images/zh/deploy/pipelines/langflow/edit_flow.png) ## LangBotの設定 LangBot WebUIページを開き、新しいパイプラインを追加するか、既存のパイプラインのAI機能設定ページに切り替え、ランナーとして`Langflow API`を選択します。 -![set_langflow_runner](/assets/image/zh/deploy/pipelines/langflow/set_langflow_runner.png) +![set_langflow_runner](/images/zh/deploy/pipelines/langflow/set_langflow_runner.png) プロンプトに従って他の設定を入力します。`Base URL`(実際のネットワーク状況に応じて入力)、`API Key`、`Flow ID`などが含まれます。API KeyはLangflowの設定から取得できます: -![get_api_key](/assets/image/zh/deploy/pipelines/langflow/get_api_key.png) +![get_api_key](/images/zh/deploy/pipelines/langflow/get_api_key.png) Flow IDは、編集ページの右上にある`共有` -> `APIアクセス`ボタンをクリックし、サンプルコードから取得できます: -![get_flow_id](/assets/image/zh/deploy/pipelines/langflow/get_flow_id.png) +![get_flow_id](/images/zh/deploy/pipelines/langflow/get_flow_id.png) diff --git a/docs/ja/usage/pipelines/n8n.md b/ja/usage/pipelines/n8n.mdx similarity index 62% rename from docs/ja/usage/pipelines/n8n.md rename to ja/usage/pipelines/n8n.mdx index 41d981034..cc80aa127 100644 --- a/docs/ja/usage/pipelines/n8n.md +++ b/ja/usage/pipelines/n8n.mdx @@ -1,4 +1,6 @@ -# LangBotでのn8nの使用 +--- +title: "LangBotでのn8nの使用" +--- [n8n](https://n8n.io/)は、さまざまな自動化タスクを作成、スケジュール、実行できるオープンソースのワークフロー自動化プラットフォームです。 @@ -8,41 +10,39 @@ LangBotは現在、n8nワークフローの`Webhook`ノードを通じてワー 既存のパイプラインの設定ページを開くか、新しいパイプライン(推奨)を作成して設定ページを開いてください。`AI`で`n8n Workflow API`をランナーとして選択します。 -![ランナーとしてのn8n](/assets/image/zh/deploy/pipelines/n8n/config_runner.png) +![ランナーとしてのn8n](/images/zh/deploy/pipelines/n8n/config_runner.png) 次に、以下の内容に従って他の設定を構成して入力します。 ## n8nワークフロー接続の設定 -![n8nワークフロー](/assets/image/zh/deploy/pipelines/n8n/create_wf.png) +![n8nワークフロー](/images/zh/deploy/pipelines/n8n/create_wf.png) または -![n8nワークフロー](/assets/image/zh/deploy/pipelines/n8n/create_wf01.png) +![n8nワークフロー](/images/zh/deploy/pipelines/n8n/create_wf01.png) トリガーとして`Webhook`または`On chat message`を選択し、以下のように設定します: - Webhook: - ![n8n webhook設定](/assets/image/zh/deploy/pipelines/n8n/config_webhook.png) + ![n8n webhook設定](/images/zh/deploy/pipelines/n8n/config_webhook.png) - On chat message: - ![n8n on chat message設定](/assets/image/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) + ![n8n on chat message設定](/images/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) -:::info -ストリーミングレスポンスが必要な場合は、`Response Mode`を`Streaming`に設定します。 -![n8nストリーミング設定](/assets/image/zh/deploy/pipelines/n8n/config_response_model.png) -::: + +![n8nストリーミング設定](/images/zh/deploy/pipelines/n8n/config_response_model.png) + -:::info -認証は、LangBotのパイプライン設定の認証方法に対応しており、必要に応じて変更できます。 + -![n8nワークフロー設定](/assets/image/zh/deploy/pipelines/n8n/config_auth.png) -::: +![n8nワークフロー設定](/images/zh/deploy/pipelines/n8n/config_auth.png) + AIモデルを呼び出すノードを`AI Agent`として設定し、以下のセットアップに従います: > ストリーミングレスポンスの場合、赤い枠で強調表示されている項目を追加します。ストリーミングが不要な場合は、このステップをスキップできます。 -![n8n AIモデル呼び出し設定](/assets/image/zh/deploy/pipelines/n8n/config_call_ai.png) +![n8n AIモデル呼び出し設定](/images/zh/deploy/pipelines/n8n/config_call_ai.png) n8nのワークフローレスポンスコンテンツについては、`Respond to Webhook`ノードを使用し、以下の画像に従って設定してください(`AI Agent`ノードでストリーミングレスポンスを選択した場合、このステップは不要です): -![n8nワークフローレスポンス設定](/assets/image/zh/deploy/pipelines/n8n/config_respond.png) +![n8nワークフローレスポンス設定](/images/zh/deploy/pipelines/n8n/config_respond.png) `Response Body`のレスポンスコンテンツキー名は、LangBotのパイプライン設定の`出力キー名`と一致する必要があります。 diff --git a/docs/ja/usage/pipelines/readme.md b/ja/usage/pipelines/readme.mdx similarity index 87% rename from docs/ja/usage/pipelines/readme.md rename to ja/usage/pipelines/readme.mdx index 772c4fb0b..71cf93aa8 100644 --- a/docs/ja/usage/pipelines/readme.md +++ b/ja/usage/pipelines/readme.mdx @@ -1,10 +1,12 @@ -# 対話パイプライン設定の変更(Pipelines) +--- +title: "対話パイプライン設定の変更(Pipelines)" +--- パイプラインは、メッセージを受信した後の処理フローと、大規模言語モデルとの情報交換を制御します。各ボットは1つのパイプラインにバインドでき、同じパイプラインは複数のボットにバインドできます。 LangBotは最初の起動時にデフォルトパイプラインを自動的に作成します。ボットを作成すると、自動的にデフォルトパイプラインにバインドされます。最初のモデルを作成すると、自動的にデフォルトパイプラインのモデルとして設定されます。 -![arch](/assets/image/zh/deploy/pipelines/arch.png) +![arch](/images/zh/deploy/pipelines/arch.png) 異なるシナリオに適応するために、異なるボット用に複数のパイプラインを作成できます。 @@ -20,13 +22,13 @@ AI機能は主に2つの部分に分かれています: ランナーの選択と ランナーは、メッセージを処理するために大規模モデルをスケジュールする方法を定義します。デフォルトは`組み込みエージェント`で、これはLangBotによって実装された複数ラウンドのエージェント戦略です。このランナーが選択されている場合のみ、LangBot内で設定されたモデルとツールが使用されます。 -** +{/* ![edit_pipeline](/images/zh/deploy/pipelines/edit_pipeline_ai.png) */} -edit_pipeline +edit_pipeline `Dify`、[`n8n`](https://n8n.io/)などの外部LLMOpsプラットフォームを使用することもできます。この場合、使用されるモデル、プロンプト、ツール、その他のリソースはLLMOpsプラットフォームによって提供されます。 -more_runner +more_runner - Difyへの接続の詳細手順は、[チュートリアルを参照](/ja/usage/pipelines/dify.html)してください。 - n8nへの接続の詳細手順は、[チュートリアルを参照](/ja/usage/pipelines/n8n.html)してください。 @@ -46,7 +48,7 @@ AI機能は主に2つの部分に分かれています: ランナーの選択と [プラグインを通じて任意の変数をカスタマイズできます](/en/plugin/dev/apis/common.html#set-request-variables)。 -![Difyワークフロー開始ノード設定](/assets/image/zh/workshop/dify-service-api/dify_workflow_var.png) +![Difyワークフロー開始ノード設定](/images/zh/workshop/dify-service-api/dify_workflow_var.png) ## その他の設定 diff --git a/docs/ja/usage/platforms/dingtalk.md b/ja/usage/platforms/dingtalk.mdx similarity index 76% rename from docs/ja/usage/platforms/dingtalk.md rename to ja/usage/platforms/dingtalk.mdx index 8dcee19fd..e3ce420b1 100644 --- a/docs/ja/usage/platforms/dingtalk.md +++ b/ja/usage/platforms/dingtalk.mdx @@ -1,56 +1,58 @@ -# DingTalk ボットのデプロイ +--- +title: "DingTalk ボットのデプロイ" +--- DingTalk に LangBot をデプロイします。 ## ボットの作成 [DingTalk 開発者バックエンド](https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e5MkawbT#/)にアクセスし、ログインして組織に入ります。ログインに成功したら、オープンプラットフォームに入ります。以下のように表示されます: -![DingTalk Open Platform](/assets/image/zh/deploy/bots/dingtalk/dingtalk1.png) +![DingTalk Open Platform](/images/zh/deploy/bots/dingtalk/dingtalk1.png) 上部の「アプリケーション開発」をクリックし、右側の青いボタン「アプリケーションを作成」をクリックして、ボットの基本情報を入力し、保存をクリックします。 ボットのバックエンドに入ります。例えば、langbot2 という名前のボットがある場合、管理ページは以下のように表示されます: -![Bot Page](/assets/image/zh/deploy/bots/dingtalk/dingtalk2.png) +![Bot Page](/images/zh/deploy/bots/dingtalk/dingtalk2.png) ## ボットの設定 「アプリケーション機能を追加」、「その他のアプリケーション機能」、「ロボット」の「設定」をクリックし、設定をクリックして情報を入力します。以下のように: -![Bot Configuration](/assets/image/zh/deploy/bots/dingtalk/dingtalk3.png) +![Bot Configuration](/images/zh/deploy/bots/dingtalk/dingtalk3.png) ページ下部の「公開」をクリックし、公開が成功したら、ボットページの左下にある「バージョン管理と公開」をクリックします。以下のように: -![Version Management and Publishing](/assets/image/zh/deploy/bots/dingtalk/dingtalk4.png) +![Version Management and Publishing](/images/zh/deploy/bots/dingtalk/dingtalk4.png) 初めてボットを作成する場合、右側は空なので、「新しいバージョンを作成」をクリックし、その中で情報を設定し、「アプリケーションの表示範囲」を設定して、保存をクリックします。 「イベントサブスクリプション」をクリックし、プッシュ方式を「ストリームモードプッシュ」に変更します。 カードストリーミングが必要な場合は、権限管理でカード権限を申請する必要があります。以下のように: -![Before applying for card permissions](/assets/image/zh/deploy/bots/dingtalk/dingtalk6.png) +![Before applying for card permissions](/images/zh/deploy/bots/dingtalk/dingtalk6.png) -![After applying for card permissions](/assets/image/zh/deploy/bots/dingtalk/dingtalk7.png) +![After applying for card permissions](/images/zh/deploy/bots/dingtalk/dingtalk7.png) さらに、カードメッセージの場合、主にカードテンプレートを作成し、テンプレート ID を記録して設定に入力する必要があります。手順は以下の通りです: > カードコンテンツテンプレート ID は、開発者バックエンドにログイン > [カードプラットフォーム](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV)から取得できます 新しいテンプレートを作成する際に情報を入力します。以下のように: -![Fill in information for new template](/assets/image/zh/deploy/bots/dingtalk/dingtalk8.png) +![Fill in information for new template](/images/zh/deploy/bots/dingtalk/dingtalk8.png) プリセットテンプレートを選択します(最初のものを選択し、後でテンプレートの内容を変更します)。以下のように: -![Select preset template](/assets/image/zh/deploy/bots/dingtalk/dingtalk9.png) +![Select preset template](/images/zh/deploy/bots/dingtalk/dingtalk9.png) 使用をクリック -![Click](/assets/image/zh/deploy/bots/dingtalk/dingtalk10.png) +![Click](/images/zh/deploy/bots/dingtalk/dingtalk10.png) 作成 -![Create](/assets/image/zh/deploy/bots/dingtalk/dingtalk11.png) +![Create](/images/zh/deploy/bots/dingtalk/dingtalk11.png) 作成をクリックすると、テンプレートの編集にリダイレクトされます。以下のように、希望するカードメッセージを自由に編集できます: -![Edit template](/assets/image/zh/deploy/bots/dingtalk/dingtalk12.png) +![Edit template](/images/zh/deploy/bots/dingtalk/dingtalk12.png) メインコンテンツについては、デフォルトの「content」をそのままにしておきます: -![Don't modify](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk13.png) +![Don't modify](../../../images/zh/deploy/bots/dingtalk/dingtalk13.png) 編集を終え、すべて正しいことを確認したら、保存してテンプレート ID をコピーし、設定ファイルに入力します: -![Save](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk14.png) -![Copy template ID](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk15.png) +![Save](../../../images/zh/deploy/bots/dingtalk/dingtalk14.png) +![Copy template ID](../../../images/zh/deploy/bots/dingtalk/dingtalk15.png) ## 設定情報の入力 @@ -61,17 +63,17 @@ DingTalk に LangBot をデプロイします。 [カードプラットフォーム](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV)をクリックし、テンプレートリストから対応するバインドされたテンプレート ID をコピーし、カードテンプレート ID フィールドに入力します。 -![Connect to LangBot](/assets/image/zh/deploy/bots/dingtalk/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/dingtalk/connect_to_langbot.png) ストリーミング関連: -![img.png](../../../assets/image/zh/deploy/bots/lark/lark_15.png) +![img.png](../../../images/zh/deploy/bots/lark/lark_15.png) **LangBot を起動します**。 ## ボットの追加 この記事では DingTalk Windows デスクトップ版を例として使用します。上部の「検索」、「機能」をクリックし、先ほど作成したボットの名前を入力します。以下のように: -![robot_png](/assets/image/zh/deploy/bots/dingtalk/dingtalk5.png) +![robot_png](/images/zh/deploy/bots/dingtalk/dingtalk5.png) ボットをクリックしてチャットします。 diff --git a/docs/ja/usage/platforms/discord.md b/ja/usage/platforms/discord.mdx similarity index 68% rename from docs/ja/usage/platforms/discord.md rename to ja/usage/platforms/discord.mdx index ef5a2094d..07d0f5f23 100644 --- a/docs/ja/usage/platforms/discord.md +++ b/ja/usage/platforms/discord.mdx @@ -1,22 +1,24 @@ -# Discord ボットに接続 +--- +title: "Discord ボットに接続" +--- ## ボットの作成 [Discord Developer Portal](https://discord.com/developers/applications)にアクセスし、ログインしてアプリケーションを作成します。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_01.png) +![alt text](/images/zh/deploy/bots/discord/discord_01.png) 基本情報を変更し、「Save Changes」をクリックして保存します。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_02.png) +![alt text](/images/zh/deploy/bots/discord/discord_02.png) 左側の「Bot」をクリックし、「Reset Token」をクリックして、生成された Token をコピーします。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_03.png) +![alt text](/images/zh/deploy/bots/discord/discord_03.png) そして、このページの「Privileged Gateway Intents」のすべてのオプションをチェックし、「Save Changes」をクリックして保存します。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_05.png) +![alt text](/images/zh/deploy/bots/discord/discord_05.png) **最後に、左側の「OAuth2」をクリックし、ページの「Client ID」をコピーします。** @@ -24,13 +26,11 @@ 新しいボットを追加するためにクリックし、前の手順で取得した「Client ID」と「Token」を設定に入力します。 -![alt text](/assets/image/zh/deploy/bots/discord/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/discord/connect_to_langbot.png) -:::warning + -中国本土内でこのアダプターを使用している場合、ネットワークプロキシを設定する必要がある場合があります。 - -::: + 入力後、LangBot を起動します。設定が成功した場合、ログに `[02-02 16:48:15.263] manager.py (68) - [INFO] : Initializing platform adapter 1: discord` と表示されます。LangBot を実行し続けてください。 @@ -40,16 +40,16 @@ 「OAuth2」ページに移動し、「URL Generator」を選択し、「bot」を選択して、画像に示されている権限をチェックします。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_06.png) +![alt text](/images/zh/deploy/bots/discord/discord_06.png) -![alt text](/assets/image/zh/deploy/bots/discord/discord_07.png) +![alt text](/images/zh/deploy/bots/discord/discord_07.png) 「Copy」をクリックし、生成された URL をブラウザに貼り付けて開き、ボットをサーバーに招待します。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_08.png) +![alt text](/images/zh/deploy/bots/discord/discord_08.png) ## ボットの使用 グループまたはプライベートメッセージでボットを通常どおり使用できるようになりました。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_09.png) +![alt text](/images/zh/deploy/bots/discord/discord_09.png) diff --git a/docs/ja/usage/platforms/kook.md b/ja/usage/platforms/kook.mdx similarity index 67% rename from docs/ja/usage/platforms/kook.md rename to ja/usage/platforms/kook.mdx index 2025fc0a9..71eacee5f 100644 --- a/docs/ja/usage/platforms/kook.md +++ b/ja/usage/platforms/kook.mdx @@ -1,62 +1,64 @@ -# KOOK ボットの統合 +--- +title: "KOOK ボットの統合" +--- ## ボットの作成 [KOOK Developer Center](https://developer.kookapp.cn/)にアクセスし、ログインしてコンソールにアクセスします。 -![KOOK Developer Console](/assets/image/zh/deploy/bots/kook/01-dashboard.png) +![KOOK Developer Console](/images/zh/deploy/bots/kook/01-dashboard.png) 「アプリケーションを作成」をクリックし、アプリケーション情報を入力します。 -![Create Application](/assets/image/zh/deploy/bots/kook/02-create-app.png) +![Create Application](/images/zh/deploy/bots/kook/02-create-app.png) アプリケーションが作成されたら、アプリケーション詳細ページに入ります。 -![Application Created](/assets/image/zh/deploy/bots/kook/03-app-created.png) +![Application Created](/images/zh/deploy/bots/kook/03-app-created.png) アプリケーション概要ページでアプリケーションの基本情報を表示できます。 -![Application Overview](/assets/image/zh/deploy/bots/kook/04-app-overview.png) +![Application Overview](/images/zh/deploy/bots/kook/04-app-overview.png) ## Bot Token の取得 アプリケーションページで、「Bot」タブをクリックし、Bot Token をコピーして安全に保存します。後で必要になります。 -![Get Bot Token](/assets/image/zh/deploy/bots/kook/05-bot-token.png) +![Get Bot Token](/images/zh/deploy/bots/kook/05-bot-token.png) ## ボット権限の設定 **重要:**「Bot」設定で、「メッセージフィルタリング」オプションを見つけてクリックして設定します。 -![Message Filter Settings](/assets/image/zh/deploy/bots/kook/07-message-filters.png) +![Message Filter Settings](/images/zh/deploy/bots/kook/07-message-filters.png) チャンネルメッセージやプライベートメッセージイベントを含む、すべてのメッセージ関連イベント権限を有効にします。そうしないと、ボットはメッセージを受信できません。 -![Enable Permissions](/assets/image/zh/deploy/bots/kook/08-permissions-enabled.png) +![Enable Permissions](/images/zh/deploy/bots/kook/08-permissions-enabled.png) ## ボットの招待 ボット設定ページで、招待リンクを生成してボットをサーバーに招待できます。 -![Generate Invitation Link](/assets/image/zh/deploy/bots/kook/06-invite-link.png) +![Generate Invitation Link](/images/zh/deploy/bots/kook/06-invite-link.png) ## LangBot に接続 LangBot Webui ページを開き、「Bots」ページで新しいボットを作成するためにクリックします。 -![LangBot Bot Management](/assets/image/zh/deploy/bots/kook/09-langbot-bots.png) +![LangBot Bot Management](/images/zh/deploy/bots/kook/09-langbot-bots.png) KOOK プラットフォームを選択し、ボット名と Bot Token を入力します。 -![Configure KOOK Bot](/assets/image/zh/deploy/bots/kook/10-bot-config.png) +![Configure KOOK Bot](/images/zh/deploy/bots/kook/10-bot-config.png) 保存後、ボットがリストに表示されます。 -![Bot Created](/assets/image/zh/deploy/bots/kook/11-bot-created.png) +![Bot Created](/images/zh/deploy/bots/kook/11-bot-created.png) 有効化ボタンをクリックしてボットを起動します。正常に設定されている場合、ボットのステータスは実行中として表示されます。 -![Bot Enabled](/assets/image/zh/deploy/bots/kook/12-bot-enabled.png) +![Bot Enabled](/images/zh/deploy/bots/kook/12-bot-enabled.png) ## ボットの使用 diff --git a/docs/ja/usage/platforms/lark.md b/ja/usage/platforms/lark.mdx similarity index 64% rename from docs/ja/usage/platforms/lark.md rename to ja/usage/platforms/lark.mdx index d75a6f920..404c386c3 100644 --- a/docs/ja/usage/platforms/lark.md +++ b/ja/usage/platforms/lark.mdx @@ -1,33 +1,35 @@ -# Feishu ボットに接続 +--- +title: "Feishu ボットに接続" +--- ## ボットの作成 [Feishu Open Platform](https://open.feishu.cn/app)にアクセスし、ログインして、企業の自己構築アプリケーションまたはストアアプリケーションを作成します。[(違いの紹介)](https://open.feishu.cn/document/platform-overveiw/overview) -![alt text](/assets/image/zh/deploy/bots/lark/lark_01.png) +![alt text](/images/zh/deploy/bots/lark/lark_01.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_02.png) +![alt text](/images/zh/deploy/bots/lark/lark_02.png) アプリケーションにボット機能を追加します: -![alt text](/assets/image/zh/deploy/bots/lark/lark_03.png) +![alt text](/images/zh/deploy/bots/lark/lark_03.png) 権限管理で画像に示されている権限を追加します: -![alt text](/assets/image/zh/deploy/bots/lark/lark_04.png) +![alt text](/images/zh/deploy/bots/lark/lark_04.png) カードストリーミング権限が必要な場合は、画像に示されている次のカード作成と更新権限を追加します: -![img_1.png](../../../assets/image/zh/deploy/bots/lark/lark_14.png) +![img_1.png](../../../images/zh/deploy/bots/lark/lark_14.png) -::: warning + デフォルトのカードテンプレートを変更する必要がある場合は、プラットフォームアダプターのコードでカードテンプレートを自分で修正する必要があります。 -::: + ## LangBot に接続 「認証情報と基本情報」ページで `app_id` と `app_secret` を見つけます。 -![alt text](/assets/image/zh/deploy/bots/lark/lark_05.png) +![alt text](/images/zh/deploy/bots/lark/lark_05.png) @@ -35,56 +37,54 @@ LangBot の Webui 設定ページを開き、新しいボットを作成しま フォームに関連情報を入力します -![alt text](/assets/image/zh/deploy/bots/lark/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/lark/connect_to_langbot.png) ストリーミング関連: -![Streaming related](../../../assets/image/zh/deploy/bots/lark/connect_to_langbot01.png) +![Streaming related](../../../images/zh/deploy/bots/lark/connect_to_langbot01.png) 入力後、LangBot を起動します。設定が成功した場合、ログに `[01-29 23:42:56.796] manager.py (68) - [INFO] : Initializing platform adapter 1: lark` と表示されます。LangBot を実行し続けてください。 -:::warning -デフォルトでは、WebSocket 長時間接続モードが使用されます。これは以下の長時間接続サブスクリプションに対応しています。ただし、場合によっては(国際版の Feishu など)、長時間接続モードが利用できない場合があります。その場合は、Webhook モードを使用する必要があります。これは、「開発者サーバーにイベントを送信」モードに対応しています。次の設定を参照してください: + - `enable-webhook`:`true` に設定 - `encrypt-key`:「イベントとコールバック」ページの「暗号化戦略」の「Encrypt Key」に設定 Webhook モードでは、LangBot をパブリック IP を持つサーバーにデプロイし、ファイアウォールが上記で設定したポートを開いていることを確認する必要があることに注意してください。 -::: + ## イベントサブスクリプションの設定 「イベントとコールバック」ページに移動し、サブスクリプション方式を「長時間接続」として設定します: -![alt text](/assets/image/zh/deploy/bots/lark/lark_07.png) +![alt text](/images/zh/deploy/bots/lark/lark_07.png) そして、イベント:「メッセージを受信」を追加します -![alt text](/assets/image/zh/deploy/bots/lark/lark_08.png) +![alt text](/images/zh/deploy/bots/lark/lark_08.png) -:::warning -Webhook モード設定方法: + -![alt text](/assets/image/zh/deploy/bots/lark/lark_13.png) +![alt text](/images/zh/deploy/bots/lark/lark_13.png) まず LangBot を起動してください。ここにサーバーアドレスとポートを入力します。パスは `/lark/callback` です。「保存」をクリックします。 -::: + ## ボットの公開 上部の「バージョンを作成」をクリックし、バージョン番号とその他の情報を入力し、下部の「保存」をクリックします。 -![alt text](/assets/image/zh/deploy/bots/lark/lark_09.png) +![alt text](/images/zh/deploy/bots/lark/lark_09.png) ボットを Feishu グループに追加して使用します: -![alt text](/assets/image/zh/deploy/bots/lark/lark_10.png) +![alt text](/images/zh/deploy/bots/lark/lark_10.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_11.png) +![alt text](/images/zh/deploy/bots/lark/lark_11.png) プライベートチャットでも直接使用できます -![alt text](/assets/image/zh/deploy/bots/lark/lark_12.png) +![alt text](/images/zh/deploy/bots/lark/lark_12.png) ## よくある問題 - ストアアプリのボットは、作成/保存直後にチャットメッセージに応答できません。[app_ticket イベント](https://open.feishu.cn/document/server-docs/application-v6/event/app_ticket-events)の遅延メカニズムにより、正常に動作するまで約 2 分待つ必要があります。 diff --git a/docs/ja/usage/platforms/line.md b/ja/usage/platforms/line.mdx similarity index 72% rename from docs/ja/usage/platforms/line.md rename to ja/usage/platforms/line.mdx index b158f337b..e759ecc5e 100644 --- a/docs/ja/usage/platforms/line.md +++ b/ja/usage/platforms/line.mdx @@ -1,4 +1,6 @@ -# LINE ボットの統合 +--- +title: "LINE ボットの統合" +--- この記事では、LangBot を LINE プラットフォームと接続して LINE ボット機能を実装する方法について説明します。 @@ -14,29 +16,29 @@ > [Developer Console](https://developers.line.biz/console) 1. 開発者コンソールで、新しい Provider を作成します(ない場合) -![alt text](/assets/image/zh/deploy/bots/line/line01.png) +![alt text](/images/zh/deploy/bots/line/line01.png) 2. Provider の下で、「Create」をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line02.png) +![alt text](/images/zh/deploy/bots/line/line02.png) 3. 名前を入力して Create をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line03.png) +![alt text](/images/zh/deploy/bots/line/line03.png) 4. リダイレクト後、Message API の作成を選択します -![alt text](/assets/image/zh/deploy/bots/line/line04.png) +![alt text](/images/zh/deploy/bots/line/line04.png) * Message API の作成をクリックして続行します -![alt text](/assets/image/zh/deploy/bots/line/line05.png) +![alt text](/images/zh/deploy/bots/line/line05.png) * リダイレクト後、基本情報を入力します -![alt text](/assets/image/zh/deploy/bots/line/line06.png) +![alt text](/images/zh/deploy/bots/line/line06.png) - Channel Name - Channel Description - Category - Subcategory - Email Address 5. すべての情報を入力したら、「Continue」をクリックして作成します -![alt text](/assets/image/zh/deploy/bots/line/line07.png) +![alt text](/images/zh/deploy/bots/line/line07.png) 6. 入力した情報を確認し、問題がなければ Submit をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line08.png) +![alt text](/images/zh/deploy/bots/line/line08.png) 7. 正常に作成されました。使用に進みます -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) ### 設定情報の取得 @@ -45,74 +47,74 @@ 1. Channel Secret > [使用をクリックした後のページ](https://manager.line.biz/account) * Settings を選択 -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) * Message API をクリック -![alt text](/assets/image/zh/deploy/bots/line/line11.png) +![alt text](/images/zh/deploy/bots/line/line11.png) * Message API を有効にします -![alt text](/assets/image/zh/deploy/bots/line/line12.png) +![alt text](/images/zh/deploy/bots/line/line12.png) * 作成したばかりの Provider を選択し、Agree をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line13.png) +![alt text](/images/zh/deploy/bots/line/line13.png) * プライバシー規約については、単に OK をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line14.png) +![alt text](/images/zh/deploy/bots/line/line14.png) * OK をクリックして作成を完了します -![alt text](/assets/image/zh/deploy/bots/line/line15.png) +![alt text](/images/zh/deploy/bots/line/line15.png) * コピーします -![alt text](/assets/image/zh/deploy/bots/line/line16.png) +![alt text](/images/zh/deploy/bots/line/line16.png) 2. Channel Access Token(「Issue」ボタンをクリックして生成する必要があります) * console をクリックするか、直接 [Console](https://developers.line.biz/console/) にアクセスします -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * 作成した Provider を選択し、Message API をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * Message API をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * 一番下までスクロールし、Issue をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line20.png) +![alt text](/images/zh/deploy/bots/line/line20.png) * アイコンをクリックしてコピーします -![alt text](/assets/image/zh/deploy/bots/line/line21.png) +![alt text](/images/zh/deploy/bots/line/line21.png) ## LangBot に接続 次に、LangBot 設定ページを開きます: 1. 「Bots」をクリックし、次に「Add」をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line26.png) +![alt text](/images/zh/deploy/bots/line/line26.png) 2. 「Platform/Adapter Selection」で「LINE」を選択します -![alt text](/assets/image/zh/deploy/bots/line/line27.png) +![alt text](/images/zh/deploy/bots/line/line27.png) 3. 設定情報を入力します: - Channel Secret:以前に取得した Channel secret - Channel Access Token:以前に取得した Channel access token - ![alt text](/assets/image/zh/deploy/bots/line/line28.png) + ![alt text](/images/zh/deploy/bots/line/line28.png) 4. 「Save」をクリックして設定を完了します - ![alt text](/assets/image/zh/deploy/bots/line/line29.png) + ![alt text](/images/zh/deploy/bots/line/line29.png) ## Webhook の設定 -::: info + まず、[HTTP リバースプロキシの設定](/en/workshop/production/proxy-and-ssl)を参照して LangBot コールバックアドレスを設定することをお勧めします。 -::: + * LangBot 設定ページから Webhook コールバック URL を取得します -![alt text](/assets/image/zh/deploy/bots/line/line30.png) +![alt text](/images/zh/deploy/bots/line/line30.png) * console をクリックするか、直接 [Console](https://developers.line.biz/console/) にアクセスします -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * 作成した Provider を選択し、Message API をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * Message API をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * Edit をクリックして接続を入力します -![alt text](/assets/image/zh/deploy/bots/line/line22.png) +![alt text](/images/zh/deploy/bots/line/line22.png) * 接続を入力します(HTTPS 接続である必要があります。つまり、SSL 証明書が必要です)、Update をクリックします -![alt text](/assets/image/zh/deploy/bots/line/line23.png) +![alt text](/images/zh/deploy/bots/line/line23.png) * Use Webhook を選択します -![alt text](/assets/image/zh/deploy/bots/line/line24.png) +![alt text](/images/zh/deploy/bots/line/line24.png) 5. 「Verify」ボタンをクリックして、接続が成功したかどうかをテストします -![alt text](/assets/image/zh/deploy/bots/line/line25.png) +![alt text](/images/zh/deploy/bots/line/line25.png) ## 機能設定 diff --git a/docs/ja/usage/platforms/qq/aiocqhttp/lagrange.md b/ja/usage/platforms/qq/aiocqhttp/lagrange.mdx similarity index 86% rename from docs/ja/usage/platforms/qq/aiocqhttp/lagrange.md rename to ja/usage/platforms/qq/aiocqhttp/lagrange.mdx index 3de463164..ea9328eab 100644 --- a/docs/ja/usage/platforms/qq/aiocqhttp/lagrange.md +++ b/ja/usage/platforms/qq/aiocqhttp/lagrange.mdx @@ -1,12 +1,14 @@ -# メッセージプラットフォーム Lagrange のデプロイ +--- +title: "メッセージプラットフォーム Lagrange のデプロイ" +--- ## Lagrange の紹介 Lagrange は、軽量で比較的安定した QQNT プロトコルリバースエンジニアリングフレームワークです。OneBot 11 プロトコルを通じて接続します。アダプターとして `OneBot v11` を選択する必要があります。 -::: warning + ボットとやり取りするには NT QQ を使用する必要があります。古いバージョンの QQ は正常に動作しません -::: + ## デプロイ手順 @@ -24,11 +26,11 @@ Github にログインしてダウンロードする必要があります。特 画像に従ってダウンロードします: -![Image 1](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) +![Image 1](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) -![Image 2](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) +![Image 2](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) -![Image 3](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) +![Image 3](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) ### 最終ステップ @@ -46,7 +48,7 @@ Github にログインしてダウンロードする必要があります。特 Lagrange を LangBot に接続するように設定する必要があります。Lagrange の設定ファイル appsettings.json を編集し、Implementations の接続設定が以下の画像の内容と一致することを確認してください: -![Configure Connection](/assets/image/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) +![Configure Connection](/images/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) Type は `ReverseWebSocket` である必要があります; Host は LangBot を実行しているホストの IP です。同じホストにある場合は、`127.0.0.1` と記述できます; @@ -60,8 +62,8 @@ Bots をクリックし、次に Add をクリックします `Platform/Adapter Selection` で `OneBot v11` を選択します -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + 注意:複数の docker コンテナに関連するネットワーク接続の問題がある場合は、[ネットワーク設定の詳細](/en/workshop/network-details)を参照してください -::: + diff --git a/docs/ja/usage/platforms/qq/aiocqhttp/llonebot.md b/ja/usage/platforms/qq/aiocqhttp/llonebot.mdx similarity index 81% rename from docs/ja/usage/platforms/qq/aiocqhttp/llonebot.md rename to ja/usage/platforms/qq/aiocqhttp/llonebot.mdx index 8de533a83..5105ef5ae 100644 --- a/docs/ja/usage/platforms/qq/aiocqhttp/llonebot.md +++ b/ja/usage/platforms/qq/aiocqhttp/llonebot.mdx @@ -1,4 +1,6 @@ -# メッセージプラットフォーム LiteLoaderQQNT のデプロイ +--- +title: "メッセージプラットフォーム LiteLoaderQQNT のデプロイ" +--- OneBot 11 プロトコルを通じて接続します。アダプターとして ``OneBot v11`` を選択する必要があります。 @@ -8,7 +10,7 @@ OneBot 11 プロトコルを通じて接続します。アダプターとして LiteLoaderQQNT のインストールチュートリアル:https://llonebot.github.io/zh-CN/guide/getting-started -![Image 1](/assets/image/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) +![Image 1](/images/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) アドレスの IP アドレスが LangBot を実行しているホストのアドレスであることを確認してください(同じネットワークで実行している場合は、127.0.0.1 を使用します) @@ -20,8 +22,8 @@ Bots をクリックし、次に Add をクリックします `Platform/Adapter Selection` で `OneBot v11` を選択します -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + 注意:複数の docker コンテナに関連するネットワーク接続の問題がある場合は、[ネットワーク設定の詳細](/en/workshop/network-details)を参照してください -::: + diff --git a/docs/ja/usage/platforms/qq/aiocqhttp/napcat.md b/ja/usage/platforms/qq/aiocqhttp/napcat.mdx similarity index 81% rename from docs/ja/usage/platforms/qq/aiocqhttp/napcat.md rename to ja/usage/platforms/qq/aiocqhttp/napcat.mdx index 701bad15b..84a2a136b 100644 --- a/docs/ja/usage/platforms/qq/aiocqhttp/napcat.md +++ b/ja/usage/platforms/qq/aiocqhttp/napcat.mdx @@ -1,4 +1,6 @@ -# メッセージプラットフォーム NapCat のデプロイ +--- +title: "メッセージプラットフォーム NapCat のデプロイ" +--- OneBot 11 プロトコルを通じて接続します。アダプターとして ``OneBot v11`` を選択する必要があります。 @@ -11,12 +13,12 @@ OneBot 11 プロトコルを通じて接続します。アダプターとして webui 操作のみを例として使用します。他の設定方法については、NapCat ドキュメントを確認してください。 ログイン後、コンソールまたは Bash でログを確認し、`[NapCat] [WebUi] WebUi Publish Panel Url: http://x.x.x.x:6099/webui?token=xxxxx ` を見つけます -![napcat_webui_01](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) +![napcat_webui_01](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) Url をブラウザにコピーするか、Windows 11 では Ctrl を押しながら Url をクリックします。QR コードをスキャンしてログインすると、ネットワーク設定ページに入ります。 ネットワーク設定を追加をクリックし、WebSocket Client を選択し、有効をクリックして、Url フィールドに `ws://127.0.0.1:2280/ws` を入力して保存します。 -![napcat_webui_02](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) +![napcat_webui_02](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) ## NapCat 統合 @@ -26,8 +28,8 @@ Bots をクリックし、次に Add をクリックします `Platform/Adapter Selection` で `OneBot v11` を選択します -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) -::: info + 注意:複数の docker コンテナに関連するネットワーク接続の問題がある場合は、[ネットワーク設定の詳細](/en/workshop/network-details)を参照してください -::: + diff --git a/docs/ja/usage/platforms/qq/official_webhook.md b/ja/usage/platforms/qq/official_webhook.mdx similarity index 87% rename from docs/ja/usage/platforms/qq/official_webhook.md rename to ja/usage/platforms/qq/official_webhook.mdx index df7a114d3..60cda1a2b 100644 --- a/docs/ja/usage/platforms/qq/official_webhook.md +++ b/ja/usage/platforms/qq/official_webhook.mdx @@ -1,10 +1,12 @@ -# QQ 公式ボット API の使用(Webhook 方式を使用) +--- +title: "QQ 公式ボット API の使用(Webhook 方式を使用)" +--- この記事では、テストボットのデプロイのみを提供します。ボットの正式な起動については、[リリースプロセス](https://q.qq.com/qqbot/#/home)に従ってください。 -:::warning + QQ 公式は、AIGC 機能への不正アクセスを禁止する発表を行いました。注意して使用してください。 -::: + @@ -14,23 +16,23 @@ QQ 公式は、AIGC 機能への不正アクセスを禁止する発表を行い [QQ Open Platform](https://q.qq.com/#/)にアクセスし、下部の「アプリケーション管理」を見つけ、ボットを作成をクリックし、基本情報を入力して、ボットページに入ります。以下のように: -![Bot Main Page](/assets/image/zh/deploy/bots/qq/official/qqofficial1.png) +![Bot Main Page](/images/zh/deploy/bots/qq/official/qqofficial1.png) -「ホーム」オプションの「リリースプロセス」は、ボットを起動する手順です。テストバージョンのボットをデプロイしているため、「情報」と「サンドボックス設定」セクションを完了するだけで済みます。
+「ホーム」オプションの「リリースプロセス」は、ボットを起動する手順です。テストバージョンのボットをデプロイしているため、「情報」と「サンドボックス設定」セクションを完了するだけで済みます。
まず情報を入力し、次にサンドボックス設定をクリックします。 #### サンドボックス設定の構成 「サンドボックス設定」をクリックします。 -QQ グループにデプロイする場合は、「QQ グループ ID」の下の要件に従ってグループチャットを選択し、メッセージリスト設定でプライベートチャット権限を持つユーザーを追加します。
+QQ グループにデプロイする場合は、「QQ グループ ID」の下の要件に従ってグループチャットを選択し、メッセージリスト設定でプライベートチャット権限を持つユーザーを追加します。
QQ チャンネルにデプロイする場合は、「チャンネル ID」の下の要件に従ってチャンネル ID を選択します。ボットタイプは 0 です。 #### 開発管理の構成 「開発管理」をクリックします。 -![Development Management Page](/assets/image/zh/deploy/bots/qq/official/qqofficial2.png) +![Development Management Page](/images/zh/deploy/bots/qq/official/qqofficial2.png) 「AppID」、「Token」、「AppSecret」を記録し、LangBot が配置されているサーバーの IP アドレスを IP ホワイトリストに追加します。 @@ -42,7 +44,7 @@ Bots をクリックし、次に Add をクリックします `Platform/Adapter Selection` で `QQ Official API` を選択します -![QQ Official Bot Integration with LangBot](/assets/image/zh/deploy/bots/qq/official/qqofficial3.png) +![QQ Official Bot Integration with LangBot](/images/zh/deploy/bots/qq/official/qqofficial3.png) ## コールバックアドレスの設定 @@ -52,7 +54,7 @@ LangBot は、パブリック IP アドレスを持つサーバーにデプロ #### 後続の設定 -Caddy の起動に失敗した場合は、[Caddy ドキュメント](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile)を読むか、LangBot コミュニティグループに参加してヘルプを求めてください。
+Caddy の起動に失敗した場合は、[Caddy ドキュメント](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile)を読むか、LangBot コミュニティグループに参加してヘルプを求めてください。
以下は、考えられる問題の一部です: @@ -70,7 +72,7 @@ Caddy の起動に失敗した場合は、[Caddy ドキュメント](https://cad LangBot 設定ページに移動し、対応する QQ ボットを有効にして選択し、対応するボット設定ページから Webhook コールバックアドレスをコピーし、IP アドレスとポートを Caddy で設定したドメイン名に置き換えて、リクエストアドレスに入力します。 画像に示されているように: -![Caddy Documentation](/assets/image/zh/deploy/bots/qq/official/qqofficial4.png) +![Caddy Documentation](/images/zh/deploy/bots/qq/official/qqofficial4.png) たとえば、ドメインが `testlb.com` の場合、リクエストアドレスに `testlb.com/bots/xxxxxx-xxxxxx` を入力し、設定の確認をクリックします。コールバックアドレスが正常に保存された場合、デプロイは成功です。「検証失敗」が表示された場合は、上記の設定項目が正しく入力されているかどうかを注意深く確認してください。 diff --git a/docs/ja/usage/platforms/readme.md b/ja/usage/platforms/readme.mdx similarity index 86% rename from docs/ja/usage/platforms/readme.md rename to ja/usage/platforms/readme.mdx index ea1171b3e..b81bacc1d 100644 --- a/docs/ja/usage/platforms/readme.md +++ b/ja/usage/platforms/readme.mdx @@ -1,8 +1,10 @@ -# ボットの設定(Bots) +--- +title: "ボットの設定(Bots)" +--- ボットは、メッセージングプラットフォームからメッセージイベントを受信し、パイプラインを呼び出してメッセージを処理するために使用されます。 -![arch](/assets/image/zh/deploy/bots/arch.png) +![arch](/images/zh/deploy/bots/arch.png) | プラットフォーム | ステータス | 備考 | チュートリアル | @@ -18,5 +20,5 @@ | WeCom Intelligent Bot | ✅ | wecom インテリジェントボット | [チュートリアル](/ja/usage/platforms/wecom/wecombot) | | WeCom Customer Service | ✅ | 企業外部ボット | [チュートリアル](/ja/usage/platforms/wecom/wecomcs) | | WeChat Official Account | ✅ | WeChat 公式プラットフォームボット | [チュートリアル](/ja/usage/platforms/wxoa) | -| OneBot v11 | ✅ | 個人 QQ アカウントをボットとして使用し、独立したプロトコルクライアントが必要です。OneBot v11 をサポートします | [NapCat](/ja/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/ja/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/ja/usage/platforms/qq/aiocqhttp/llonebot) | +| OneBot v11 | ✅ | 個人 QQ アカウントをボットとして使用し、独立したプロトコルクライアントが必要です。OneBot v11 をサポートします | [NapCat](/ja/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/ja/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/ja/usage/platforms/qq/aiocqhttp/llonebot) | | QQ Official Bot | ✅ | QQ Open Platform ボット API に接続します | [チュートリアル](/ja/usage/platforms/qq/official_webhook) | diff --git a/docs/ja/usage/platforms/slack.md b/ja/usage/platforms/slack.mdx similarity index 82% rename from docs/ja/usage/platforms/slack.md rename to ja/usage/platforms/slack.mdx index 353a71398..a4d6ecf2e 100644 --- a/docs/ja/usage/platforms/slack.md +++ b/ja/usage/platforms/slack.mdx @@ -1,10 +1,12 @@ -# Slack ボットに接続 +--- +title: "Slack ボットに接続" +--- ## ボットの作成 [Slack App Platform](https://api.slack.com/apps)にアクセスします。 -![Slack Platform](/assets/image/zh/deploy/bots/slack/slack_01.jpg) +![Slack Platform](/images/zh/deploy/bots/slack/slack_01.jpg) 右上の「Create New App」をクリックし、「from a manifest」を選択し、ボットをデプロイするワークスペースを選択し、next を選択して、ボットを作成します。 @@ -12,15 +14,15 @@ 左側の「OAuth & Permissions」に入り、「Scopes」までスクロールダウンし、次のボット権限を追加します: -![Bot Permissions 1](/assets/image/zh/deploy/bots/slack/slack_02.jpg) +![Bot Permissions 1](/images/zh/deploy/bots/slack/slack_02.jpg) -![Bot Permissions 2](/assets/image/zh/deploy/bots/slack/slack_03.jpg) +![Bot Permissions 2](/images/zh/deploy/bots/slack/slack_03.jpg) -上記の権限を追加した後、「Install to your workspace」をクリックし、`xoxb-xxxxx` で始まるトークンを記録します。
+上記の権限を追加した後、「Install to your workspace」をクリックし、`xoxb-xxxxx` で始まるトークンを記録します。
**注意:** -**すべての権限を一度に追加しなかった場合は、後で App を再インストールする必要があります。**
+**すべての権限を一度に追加しなかった場合は、後で App を再インストールする必要があります。**
左側の「App Home」タブに入り、一番下までスクロールして「Message Tab」を見つけ、オンにして 「Allow users to send Slash commands and messages from the messages tab」をチェックします。 @@ -29,17 +31,17 @@ 左側の「Event Subscriptions」に入り、スイッチをオンにし、「Subscribe to bot events」をクリックし、 次の権限を追加します: -![Event Permissions](/assets/image/zh/deploy/bots/slack/slack_04.jpg) +![Event Permissions](/images/zh/deploy/bots/slack/slack_04.jpg) 上記のすべての操作を完了した後、LangBot Webui 設定ページを開き、新しいボットを追加します -![Event Permissions](/assets/image/zh/deploy/bots/slack/connect_to_langbot.png) +![Event Permissions](/images/zh/deploy/bots/slack/connect_to_langbot.png) ## ボットの起動 -::: info + Slack 公式が https を要求しているため、まずドキュメント [HTTP リバースプロキシと SSL の設定](/en/workshop/production/proxy-and-ssl)に従ってリバースプロキシを設定してください。 -::: + Slack 設定項目を入力した後、**LangBot を起動します**。 LangBot ホームページで Slack ボットを有効にして開き、ボット設定ページから WebHook URL をコピーし、先ほど設定した Event Subscriptions の「Request URL」に WebHook URL を入力します。 @@ -50,4 +52,4 @@ LangBot ホームページで Slack ボットを有効にして開き、ボッ ## 効果のデモンストレーション -![Effect Demonstration](/assets/image/zh/deploy/bots/slack/slack_05.jpg) +![Effect Demonstration](/images/zh/deploy/bots/slack/slack_05.jpg) diff --git a/docs/ja/usage/platforms/telegram.md b/ja/usage/platforms/telegram.mdx similarity index 62% rename from docs/ja/usage/platforms/telegram.md rename to ja/usage/platforms/telegram.mdx index 713fedabd..0ff062245 100644 --- a/docs/ja/usage/platforms/telegram.md +++ b/ja/usage/platforms/telegram.mdx @@ -1,22 +1,24 @@ -# Telegram ボットに接続 +--- +title: "Telegram ボットに接続" +--- ## ボットの作成 [Telegram Bot Creation Page](https://t.me/botfather)にアクセスし、プロンプトに従ってボットを作成します。 -![Telegram Bot Creation](/assets/image/zh/deploy/bots/telegram/telegram_01.png) +![Telegram Bot Creation](/images/zh/deploy/bots/telegram/telegram_01.png) -![Telegram Bot Creation](/assets/image/zh/deploy/bots/telegram/telegram_02.png) +![Telegram Bot Creation](/images/zh/deploy/bots/telegram/telegram_02.png) 作成後、BotFather は API Token を返しますので、安全に保管してください。次に、グループチャットで使用するために「Privacy Mode」をオフにします。 -![Telegram Bot API Token](/assets/image/zh/deploy/bots/telegram/telegram_03.png) +![Telegram Bot API Token](/images/zh/deploy/bots/telegram/telegram_03.png) ## LangBot に接続 LangBot Webui ページを開き、新しいボットを作成します -![Connect to LangBot](/assets/image/zh/deploy/bots/telegram/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/telegram/connect_to_langbot.png) 入力後、LangBot を起動します。設定が成功した場合、ログに `[02-02 16:48:15.263] manager.py (68) - [INFO] : Initializing platform adapter 1: telegram` と表示されます。LangBot を実行し続けてください。 @@ -24,6 +26,6 @@ LangBot Webui ページを開き、新しいボットを作成します グループまたはプライベートメッセージでボットを通常どおり使用できるようになりました。 -![Telegram Bot Usage](/assets/image/zh/deploy/bots/telegram/telegram_04.png) +![Telegram Bot Usage](/images/zh/deploy/bots/telegram/telegram_04.png) -![Telegram Bot Usage](/assets/image/zh/deploy/bots/telegram/telegram_05.png) +![Telegram Bot Usage](/images/zh/deploy/bots/telegram/telegram_05.png) diff --git a/docs/ja/usage/platforms/wecom/wecom.md b/ja/usage/platforms/wecom/wecom.mdx similarity index 72% rename from docs/ja/usage/platforms/wecom/wecom.md rename to ja/usage/platforms/wecom/wecom.mdx index ac542d179..961e400af 100644 --- a/docs/ja/usage/platforms/wecom/wecom.md +++ b/ja/usage/platforms/wecom/wecom.mdx @@ -1,67 +1,67 @@ -# WeCom ボットのデプロイ +--- +title: "WeCom ボットのデプロイ" +--- WeCom(企業微信)ボットをデプロイして LangBot に接続します。 -:::info -- この統合方法は、企業内部アプリケーション用であり、企業内で使用されます。外部カスタマーサービスが必要な場合は、[WeCom Customer Service 統合ソリューション](wecomcs.md)を確認してください。 + - WeCom コールバックアドレスにはパブリック IP とドメイン名が必要です。まず [HTTP リバースプロキシの設定](/ja/workshop/production/proxy-and-ssl)を参照して LangBot コールバックアドレスを設定することをお勧めします。 -::: + ## 企業 ID の記録 [WeCom 管理ポータル](https://work.weixin.qq.com/)を開き、`私の企業`をクリックして、一番下の`企業 ID`を記録します。 -![Corp ID](/assets/image/zh/deploy/bots/wecom/wecom/03-corp-id.png) +![Corp ID](/images/zh/deploy/bots/wecom/wecom/03-corp-id.png) ## ボットの作成 `アプリ管理`、`自社開発`、`アプリを作成`をクリックします。 -![App Management](/assets/image/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) +![App Management](/images/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) ボットの基本情報を入力します: -![Create Application](/assets/image/zh/deploy/bots/wecom/wecom/02-create-app.png) +![Create Application](/images/zh/deploy/bots/wecom/wecom/02-create-app.png) ボットのシークレット(Secret)を確認して記録します: -![Bot Secret](/assets/image/zh/deploy/bots/wecom/wecom/04-bot-secret.png) +![Bot Secret](/images/zh/deploy/bots/wecom/wecom/04-bot-secret.png) WeCom クライアントからプロンプトに従って取得します。 ## 連絡先同期権限の有効化 -:::info -- この設定項目は、LangBot の一斉送信機能を実装するためのものです。具体的なコードは libs/wecom_api/api.py にあります。 + - LangBot はまだ開発中であるため、この設定項目に関連する機能はまだ実装されていません。 - この設定項目はランダムな文字で埋めることができますが、**空にすることはできません**。 -::: + `セキュリティと管理`、`管理ツール`、`連絡先同期`をクリックします。まず信頼できる IP を設定し、LangBot がデプロイされているサーバーの IP を追加します。 `Secret を表示`をクリックして記録します。これが contacts_secret(連絡先同期 Secret)です。 -![Contact Sync Secret](/assets/image/zh/deploy/bots/wecom/wecom/08-contact-secret.png) +![Contact Sync Secret](/images/zh/deploy/bots/wecom/wecom/08-contact-secret.png) ## LangBot でボットを作成 LangBot のボットページで、`ボットを作成`をクリックし、名前を入力し、`企業微信`を選択します。このステップでは、企業 ID、ボットシークレット、連絡先同期 Secret のみを入力する必要があります。 -![Create WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) +![Create WeCom Bot](/images/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) 送信をクリックして、ボット編集ページにジャンプし、有効化をクリックします。この時点で Webhook コールバックアドレスが表示されるので、コピーします: -![Webhook Callback Address](/assets/image/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) +![Webhook Callback Address](/images/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) ## コールバックアドレスの設定 WeCom のボット管理ページに戻り、`メッセージを受信`、`API 受信を設定`をクリックし、LangBot の Webhook コールバックアドレスを`URL`に入力します: -![Set API Receiver](/assets/image/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) +![Set API Receiver](/images/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) Token と EncodingAESKey の`ランダム生成`をクリックして記録し、**このページを開いたままにします**。LangBot の WeCom ボット設定ページに戻り、Token と EncodingAESKey を入力して、保存をクリックします。 -![Save WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) +![Save WeCom Bot](/images/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) **先ほど Webhook コールバックアドレスを入力したページ**に戻り、保存をクリックして設定を完了します。**リクエスト URL 失敗**が表示された場合は、設定項目が正しく入力されているか再度確認してください。 @@ -69,7 +69,7 @@ Token と EncodingAESKey の`ランダム生成`をクリックして記録し このアプリの管理ページに戻り、下部の`企業信頼 IP`を見つけ、LangBot がデプロイされているサーバーの IP を追加します。 -![Corp Trusted IP](/assets/image/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) +![Corp Trusted IP](/images/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) 保存をクリックして完了です。 diff --git a/docs/ja/usage/platforms/wecom/wecombot.md b/ja/usage/platforms/wecom/wecombot.mdx similarity index 79% rename from docs/ja/usage/platforms/wecom/wecombot.md rename to ja/usage/platforms/wecom/wecombot.mdx index 7587e66a5..0fb81d32c 100644 --- a/docs/ja/usage/platforms/wecom/wecombot.md +++ b/ja/usage/platforms/wecom/wecombot.mdx @@ -1,21 +1,23 @@ -# WeCom インテリジェントボットのデプロイ +--- +title: "WeCom インテリジェントボットのデプロイ" +--- ## ボットの作成 まず、[WeCom Admin Console](https://work.weixin.qq.com/wework_admin/frame#/)にログインします。 -![Homepage](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_1.png) +![Homepage](/images/zh/deploy/bots/wecom/wecombot/wecombot_1.png) 左側のサイドバーの「セキュリティと管理」をクリックし、次に「管理ツール」の下の「インテリジェントボット」をクリックします。 以下のように: -![Intelligent Bot](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_2.png) +![Intelligent Bot](/images/zh/deploy/bots/wecom/wecombot/wecombot_2.png) 「ボットを作成」をクリックし、ページの一番下までスクロールして「API モードで作成」をクリックし、ページに入ります: -![Create via API Mode](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_3.png) +![Create via API Mode](/images/zh/deploy/bots/wecom/wecombot/wecombot_3.png) Token と EncodingAESKey をランダムに生成するためにクリックし、次に上部に基本的なボット情報を入力します。**表示範囲の設定に注意してください**。 @@ -27,20 +29,20 @@ LangBot メインプログラムを起動し、アダプター「WeCom Intellige その中で、token は Token、Encoding-AESKey は EncodingAESKey、Bot ID は xxx として入力できます(またはランダムに入力でき、後で変更されます)。入力後、 「保存」をクリックし、ロボットを「有効化」します。 -![WeCom Intelligent Bot Adapter](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_4.png) +![WeCom Intelligent Bot Adapter](/images/zh/deploy/bots/wecom/wecombot/wecombot_4.png) LangBot ホームページで、対応するボットを有効にして選択し、設定ページをクリックして入り、Webhook コールバックアドレスをコピーします -::: info + まず、[HTTP リバースプロキシの設定](/en/workshop/production/proxy-and-ssl)を参照して LangBot コールバックアドレスを設定することをお勧めします。 -::: + -![Webhook Callback Address](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_8.png) +![Webhook Callback Address](/images/zh/deploy/bots/wecom/wecombot/wecombot_8.png) WeCom ロボット設定ページに戻り、コピーした webhook アドレスを「URL Callback」に入力します。作成が成功すると、詳細ページにジャンプします。「Request URL Failed」というメッセージが表示された場合は、上記の手順が 1 つずつ完了しているかどうかを再度確認してください。 作成成功後の詳細ページ: -![Creation Successful](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_5.png) +![Creation Successful](/images/zh/deploy/bots/wecom/wecombot/wecombot_5.png) WeCom ロボット詳細ページから「Bot ID」をコピーし、LangBot 管理ページに戻り、デプロイされたインテリジェントロボットの Bot ID をコピーした ID に変更し、ロボットを再起動します。 @@ -48,7 +50,7 @@ WeCom ロボット詳細ページから「Bot ID」をコピーし、LangBot 管 WeCom に入り、「➕」をクリックします。以下のように: -![Add Bot](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_6.png) +![Add Bot](/images/zh/deploy/bots/wecom/wecombot/wecombot_6.png) 「会社作成」をクリックし、作成したボットを選択し、チャットインターフェイスに入ります。 @@ -56,4 +58,4 @@ WeCom に入り、「➕」をクリックします。以下のように: ## 効果の画像 -![Effect Image 1](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_7.png) +![Effect Image 1](/images/zh/deploy/bots/wecom/wecombot/wecombot_7.png) diff --git a/docs/ja/usage/platforms/wecom/wecomcs.md b/ja/usage/platforms/wecom/wecomcs.mdx similarity index 57% rename from docs/ja/usage/platforms/wecom/wecomcs.md rename to ja/usage/platforms/wecom/wecomcs.mdx index b058c940c..1104be262 100644 --- a/docs/ja/usage/platforms/wecom/wecomcs.md +++ b/ja/usage/platforms/wecom/wecomcs.mdx @@ -1,22 +1,22 @@ -# WeCom Customer Service のデプロイ +--- +title: "WeCom Customer Service のデプロイ" +--- -:::info - -この記事では、LangBot を WeCom カスタマーサービスアカウントにデプロイするプロセスについて詳しく説明します。これにより、カスタマーサービスアカウントと通常の WeChat との間の会話が可能になります。WeCom 内でのみ使用する必要がある場合は、[WeCom 内部アプリケーションの実装](wecom.md)を参照してください。 + **WeCom カスタマーサービスアカウントのデプロイには企業資格が必要です**。[WeCom Customer Service 統合ガイド](https://developer.work.weixin.qq.com/document/path/94638)を確認し、このドキュメントに従って対応する企業資格証明書を提供してください。 -::: + ## 効果のデモンストレーション -![Effect Demonstration](/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) +![Effect Demonstration](/images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) ## LangBot に接続 -![Connect to LangBot](/assets/image/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) +![Connect to LangBot](/images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) -後続の設定方法と設定項目は [WeCom 内部アプリケーション](wecom.md)と同じですが、`contacts_secret` は必要ありません。 +後続の設定方法と設定項目は [WeCom 内部アプリケーション](wecom)と同じですが、`contacts_secret` は必要ありません。 ## 注意事項 diff --git a/docs/ja/usage/platforms/wxoa.md b/ja/usage/platforms/wxoa.mdx similarity index 94% rename from docs/ja/usage/platforms/wxoa.md rename to ja/usage/platforms/wxoa.mdx index 2a9aabb21..220f01afa 100644 --- a/docs/ja/usage/platforms/wxoa.md +++ b/ja/usage/platforms/wxoa.mdx @@ -1,4 +1,6 @@ -# WeChat Official Account ボットのデプロイ +--- +title: "WeChat Official Account ボットのデプロイ" +--- WeChat Official Account ボットをデプロイして LangBot に接続します。 @@ -20,7 +22,7 @@ WeChat Official Account ボットをデプロイして LangBot に接続しま [WeChat Official Account Platform](https://mp.weixin.qq.com/)に入り、すでに公式アカウントをお持ちの場合は、QR コードをスキャンしてログインしてコンソールに入ります。 以前に公式アカウントを登録したことがない場合は、今すぐ登録をクリックし、「公式アカウント」を選択し、順番に情報を入力し、コンソールに入ります。コンソールは次のようになります: -![Console Page](/assets/image/zh/deploy/bots/wxoa/wxoa1.png) +![Console Page](/images/zh/deploy/bots/wxoa/wxoa1.png) ## コールバックアドレスの設定 @@ -28,7 +30,7 @@ WeChat Official Account ボットをデプロイして LangBot に接続しま ### 設定項目の取得 「設定と開発」、「開発インターフェイス管理」をクリックすると、次のようなページが表示されます: -![Set Development Items](/assets/image/zh/deploy/bots/wxoa/wxoa2.png) +![Set Development Items](/images/zh/deploy/bots/wxoa/wxoa2.png) 「開発者 ID(AppID)」、「開発者パスワード(AppSecret)」を記録し、LangBot がデプロイされているサーバーを「IP ホワイトリスト」に追加します。 @@ -42,7 +44,7 @@ WeChat Official Accounts は http(ポート 80)と https(ポート 443) この時点で、LangBot Webui ページを開き、新しいボットを作成し、取得した 4 つの設定項目(AppID、AppSecret、token、EncodingAESKey)を入力します -![Set Development Items](/assets/image/zh/deploy/bots/wxoa/connect_to_langbot.png) +![Set Development Items](/images/zh/deploy/bots/wxoa/connect_to_langbot.png) 設定項目の「Mode」オプションは、選択された統合モードです。デフォルトは「drop」です。「drop」は従来のメッセージ交換モードで、「passive」は「任意のテキストを送信して返信を取得」モードです。 diff --git a/docs/ja/workshop/302ai-integration.md b/ja/workshop/302ai-integration.mdx similarity index 53% rename from docs/ja/workshop/302ai-integration.md rename to ja/workshop/302ai-integration.mdx index b0ad84e40..4173b5a8a 100644 --- a/docs/ja/workshop/302ai-integration.md +++ b/ja/workshop/302ai-integration.mdx @@ -1,5 +1,7 @@ -# 302 AIとのモデル統合 +--- +title: "302 AIとのモデル統合" +--- WebUIページを開き、モデルを追加する際に[302 AI](https://share.302.ai/SuTG99)を選択します。 -![model](/assets/image/zh/workshop/302ai-integration/model.png) +![model](/images/zh/workshop/302ai-integration/model.png) diff --git a/docs/ja/workshop/impl-platform-adapter.md b/ja/workshop/impl-platform-adapter.mdx similarity index 95% rename from docs/ja/workshop/impl-platform-adapter.md rename to ja/workshop/impl-platform-adapter.mdx index 1b7b97634..cf1494a18 100644 --- a/docs/ja/workshop/impl-platform-adapter.md +++ b/ja/workshop/impl-platform-adapter.mdx @@ -1,4 +1,6 @@ -# メッセージプラットフォームアダプターの実装 +--- +title: "メッセージプラットフォームアダプターの実装" +--- この記事では、`aiocqhttp`アダプターを例として、LangBotの新しいメッセージプラットフォームアダプターを実装し、WhatsAppやDiscordなどの新しいメッセージプラットフォームプロトコルを統合する方法を説明します。 @@ -40,7 +42,7 @@ class AiocqhttpAdapter(adapter.MessageSourceAdapter): 次の図は、2つのシナリオの処理パターンを示しています: SDKのないメッセージプラットフォームプロトコルと成熟したSDKを持つプロトコル。最初のケースでは、メッセージプラットフォームプロトコルのドキュメントに従って、接続管理とネットワーク形式データのLBメッセージPythonオブジェクトへの変換を実装する必要があります。2番目のケースでは、メッセージプラットフォームに成熟したSDKがあり、SDKドキュメントに従って接続を作成し、イベントリスナーを登録し、メッセージコンバーターを実装するだけです。 -![alt text](/assets/image/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) +![alt text](/images/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) `pkg.platform.sources.aiocqhttp`ファイルでは、`AiocqhttpAdapter`だけでなく、`class AiocqhttpMessageConverter(adapter.MessageConverter):`と`class AiocqhttpEventConverter(adapter.EventConverter):`も確認できます。 diff --git a/docs/ja/workshop/mcp-details.md b/ja/workshop/mcp-details.mdx similarity index 88% rename from docs/ja/workshop/mcp-details.md rename to ja/workshop/mcp-details.mdx index f61a06fba..87b0e15a4 100644 --- a/docs/ja/workshop/mcp-details.md +++ b/ja/workshop/mcp-details.mdx @@ -1,4 +1,6 @@ -# MCPエコシステムの詳細 +--- +title: "MCPエコシステムの詳細" +--- [MCPプロトコル](https://modelcontextprotocol.io/)は、アプリケーションとLLM間のインタラクションを記述するプロトコルであり、さまざまな製品で採用されています。LangBotはMCPクライアントとして動作し、MCPサーバーに接続して、ユーザーとの会話中にLLMが使用する広範なツールを提供できます。 @@ -10,13 +12,11 @@ LangBotでMCPツールを使用するには、既存のMCPサーバーを見つ - NodeまたはPythonで実装された実行可能ファイルで、`stdio`(標準入出力)を通じてLangBotと通信します - HTTPプロトコルに基づくWebサービスで、HTTPプロトコルを通じてLangBotと通信します -:::info - -- 既存のMCPサーバーは[MCPサーバーリスト](https://github.com/punkpeye/awesome-mcp-servers)で確認できます。 + - オンラインでホストされているMCPサーバーについては、[Composio MCP](https://mcp.composio.dev/)で見つけることができます。 - 独自のMCPサーバーを作成するには、[MCPプロトコルドキュメント](https://modelcontextprotocol.io/quickstart/server)および[MCPサーバーの例](https://modelcontextprotocol.io/examples)を参照してください。 -::: + ## MCPサーバーの設定 diff --git a/docs/ja/workshop/network-details.md b/ja/workshop/network-details.mdx similarity index 88% rename from docs/ja/workshop/network-details.md rename to ja/workshop/network-details.mdx index c466b75ab..7fab157c8 100644 --- a/docs/ja/workshop/network-details.md +++ b/ja/workshop/network-details.mdx @@ -1,15 +1,16 @@ -# ネットワーク設定の詳細 +--- +title: "ネットワーク設定の詳細" +--- -::: info -一部のメッセージングプラットフォーム(個人QQアカウントなど)では、メッセージを処理するために独立したプロトコルエンドポイントが必要です。このようなメッセージングプラットフォームを使用している場合は、以下のネットワーク設定を参照してください。 + 同時に、LangBotインスタンスがコンテナで実行されている他のサービス(Ollamaなど)に接続する必要がある場合も、以下の設定を参照して、`メッセージングプラットフォーム`を`接続したいサービス`に置き換えてください。 -::: + LangBotと一部のメッセージングプラットフォームは、どちらもDockerを使用してデプロイできます。以下は、4つの異なるシナリオのネットワーク設定の詳細です。 -:::info 目次 + [[toc]] -::: + ## LangBotとメッセージングプラットフォームの両方がDockerコンテナで実行されている場合 @@ -55,8 +56,8 @@ LangBotのみがDockerを使用してデプロイされている場合、ポー ## メッセージングプラットフォームのみがDockerコンテナで実行されている場合(推奨されません) -:::warning + Linuxまたはホストモードのdockerネットワークをサポートする他のシステムのみサポートします。 -::: + 現在、LangBotのaiocqhttpアダプターはリバースWebSocket接続のみをサポートしています。メッセージングプラットフォームがDockerコンテナで実行され、LangBotがホストマシンで直接実行される場合、メッセージングプラットフォームはLangBotに接続するクライアントとして動作する必要があります。この場合、メッセージングプラットフォームのネットワークを`host`モードに設定し、そのWS接続アドレスを127.0.0.1に設定し、ポートをLangBotのaiocqhttpアダプターによって有効にされたポートに対応させることしかできません。 diff --git a/docs/ja/workshop/newapi-integration.md b/ja/workshop/newapi-integration.mdx similarity index 94% rename from docs/ja/workshop/newapi-integration.md rename to ja/workshop/newapi-integration.mdx index 059db569c..df781fd4b 100644 --- a/docs/ja/workshop/newapi-integration.md +++ b/ja/workshop/newapi-integration.mdx @@ -1,4 +1,6 @@ -# LangBotとNew APIの統合 +--- +title: "LangBotとNew APIの統合" +--- New APIは次世代の大規模モデルゲートウェイおよびAI資産管理システムであり、複数のAIサービスプロバイダーへの断片的なアクセス、コスト管理の難しさ、サービス安定性の不足などの問題に対処するように設計されています。その中心的な利点は、次の3つの側面に焦点を当てています: @@ -35,10 +37,10 @@ docker run --name new-api -d --restart always \ - リクエストURL: `http://server-IP:3000/v1`を入力します - APIキー: New APIで作成したトークンを入力します -![](/assets/image/zh/workshop/newapi-integration/model.png) +![](/images/zh/workshop/newapi-integration/model.png) 2. **パイプラインで新しく設定したモデルを選択** -![](/assets/image/zh/workshop/newapi-integration/model2.png) +![](/images/zh/workshop/newapi-integration/model2.png) 3. これで、New APIのモデルを使用できます。 diff --git a/docs/ja/workshop/ppio-integration.md b/ja/workshop/ppio-integration.mdx similarity index 62% rename from docs/ja/workshop/ppio-integration.md rename to ja/workshop/ppio-integration.mdx index 7079c5bef..ea870879c 100644 --- a/docs/ja/workshop/ppio-integration.md +++ b/ja/workshop/ppio-integration.mdx @@ -1,5 +1,7 @@ -# PPIO Cloud APIとのモデル統合 +--- +title: "PPIO Cloud APIとのモデル統合" +--- WebUIページを開き、モデルを追加する際に[PPIO Cloud](https://ppio.cn/user/register?from=ppinfra&invited_by=QJKFYD&utm_source=github_langbot)を選択します。 -![model](/assets/image/zh/workshop/ppio-integration/model.png) +![model](/images/zh/workshop/ppio-integration/model.png) diff --git a/docs/ja/workshop/production/proxy-and-ssl.md b/ja/workshop/production/proxy-and-ssl.mdx similarity index 97% rename from docs/ja/workshop/production/proxy-and-ssl.md rename to ja/workshop/production/proxy-and-ssl.mdx index 0de0ffb9b..b9cecf3d5 100644 --- a/docs/ja/workshop/production/proxy-and-ssl.md +++ b/ja/workshop/production/proxy-and-ssl.mdx @@ -1,12 +1,14 @@ -# HTTPリバースプロキシの設定またはゲートウェイ経由でのLangBotへのアクセス +--- +title: "HTTPリバースプロキシの設定またはゲートウェイ経由でのLangBotへのアクセス" +--- LangBotにはHTTPSサービス用の組み込みSSLサポートがありません。ドメイン名をLangBotインスタンスに解決する必要がある場合、またはHTTPSを使用してLangBot WebUIとさまざまなボット用のWebhookアドレスにアクセスする必要がある場合は、このドキュメントを参照してNGINXまたはCaddyをデプロイし、HTTPリバースプロキシを実装してください。 公開IPアドレスを持つホストにLangBotをデプロイし、ドメイン名を購入し、ドメイン名をホストの公開IPに解決する必要があります。 -::: warning + QQ公式ボット、WeChat公式アカウント、WeCom、Slack、LINEなどのWebhookコールバックアドレスが必要なボットを使用する必要がある場合は、このドキュメントに従ってHTTPリバースプロキシを設定する必要があります。 -::: + ## Caddy @@ -25,9 +27,9 @@ your.domain.com { } ``` -::: info + CaddyとLangBotがコンテナを使用してデプロイされている場合は、[コンテナネットワーク設定の詳細](/en/workshop/network-details)を確認してください -::: + これで、ブラウザを通じて`https://your.domain.com`でLangBot WebUIにアクセスできます。 diff --git a/docs/public/langbot-plugin-social.png b/langbot-plugin-social.png similarity index 100% rename from docs/public/langbot-plugin-social.png rename to langbot-plugin-social.png diff --git a/docs/public/langbot-logo-0.5x.png b/logo/langbot-logo-0.5x.png similarity index 100% rename from docs/public/langbot-logo-0.5x.png rename to logo/langbot-logo-0.5x.png diff --git a/docs/public/langbot-logo-block.png b/logo/langbot-logo-block.png similarity index 100% rename from docs/public/langbot-logo-block.png rename to logo/langbot-logo-block.png diff --git a/docs/public/langbot-logo-final.png b/logo/langbot-logo-final.png similarity index 100% rename from docs/public/langbot-logo-final.png rename to logo/langbot-logo-final.png diff --git a/docs/public/langbot-logo.png b/logo/langbot-logo.png similarity index 100% rename from docs/public/langbot-logo.png rename to logo/langbot-logo.png diff --git a/docs/assets/service-api-openapi-en.json b/openapi/service-api-en.json similarity index 100% rename from docs/assets/service-api-openapi-en.json rename to openapi/service-api-en.json diff --git a/docs/assets/service-api-openapi-ja.json b/openapi/service-api-ja.json similarity index 100% rename from docs/assets/service-api-openapi-ja.json rename to openapi/service-api-ja.json diff --git a/docs/assets/service-api-openapi-zh.json b/openapi/service-api-zh.json similarity index 100% rename from docs/assets/service-api-openapi-zh.json rename to openapi/service-api-zh.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 52cc52d7f..000000000 --- a/package-lock.json +++ /dev/null @@ -1,3264 +0,0 @@ -{ - "name": "Langbot-Wiki", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "mermaid": "^11.8.0" - }, - "devDependencies": { - "vitepress": "^1.3.4" - } - }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "search-insights": ">= 1 < 3" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "dev": true, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", - "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.24.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", - "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", - "dev": true - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", - "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.24.0" - } - }, - "node_modules/@algolia/client-account": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", - "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", - "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-common": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.1.1.tgz", - "integrity": "sha512-jkQNQbGY+XQB3Eln7wqqdUZKBzG8lETcsaUk5gcMc6iIwyN/qW0v0fhpKPH+Kli+BImLxo0CWk12CvVvx2exWA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", - "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-search": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.1.1.tgz", - "integrity": "sha512-SFpb3FI/VouGou/vpuS7qeCA5Y/KpV42P6CEA/1MZQtl/xJkl6PVjikb+Q9YadeHi2jtDV/aQ6PyiVDnX4PQcw==", - "dev": true, - "peer": true, - "dependencies": { - "@algolia/client-common": "5.1.1", - "@algolia/requester-browser-xhr": "5.1.1", - "@algolia/requester-node-http": "5.1.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/logger-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", - "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", - "dev": true - }, - "node_modules/@algolia/logger-console": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", - "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", - "dev": true, - "dependencies": { - "@algolia/logger-common": "4.24.0" - } - }, - "node_modules/@algolia/recommend": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", - "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", - "dev": true, - "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" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", - "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", - "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.1.1.tgz", - "integrity": "sha512-NXmN1ujJCj5GlJQaMK6DbdiXdcf6nhRef/X40lu9TYi71q9xTo/5RPMI0K2iOp6g07S26BrXFOz6RSV3Ny4LLw==", - "dev": true, - "peer": true, - "dependencies": { - "@algolia/client-common": "5.1.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/requester-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", - "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", - "dev": true - }, - "node_modules/@algolia/requester-node-http": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.1.1.tgz", - "integrity": "sha512-xwrgnNTIzgxDEx6zuCKSKTPzQLA8fL/WZiVB6fRpIu5agLMjoAi0cWA5YSDbo+2FFxqVgLqKY/Jz6mKmWtY15Q==", - "dev": true, - "peer": true, - "dependencies": { - "@algolia/client-common": "5.1.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/transporter": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", - "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.24.0", - "@algolia/logger-common": "4.24.0", - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", - "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", - "license": "MIT", - "dependencies": { - "package-manager-detector": "^1.3.0", - "tinyexec": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", - "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", - "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", - "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", - "license": "MIT" - }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", - "license": "Apache-2.0" - }, - "node_modules/@docsearch/css": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", - "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", - "dev": true - }, - "node_modules/@docsearch/js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.1.tgz", - "integrity": "sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==", - "dev": true, - "dependencies": { - "@docsearch/react": "3.6.1", - "preact": "^10.0.0" - } - }, - "node_modules/@docsearch/react": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", - "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.6.1", - "algoliasearch": "^4.19.1" - }, - "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 - } - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@antfu/utils": "^8.1.0", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.14.0", - "kolorist": "^1.8.0", - "local-pkg": "^1.0.0", - "mlly": "^1.7.4" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@mermaid-js/parser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.0.tgz", - "integrity": "sha512-7DNESgpyZ5WG1SIkrYafVBhWmImtmQuoxOO1lawI3gQYWxBX3v1FW3IyuuRfKJAO06XrZR71W0Kif5VEGGd4VA==", - "license": "MIT", - "dependencies": { - "langium": "3.3.1" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", - "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", - "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", - "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", - "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", - "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", - "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", - "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", - "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", - "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", - "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", - "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", - "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", - "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", - "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", - "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", - "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", - "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", - "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@shikijs/core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz", - "integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/transformers": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.14.1.tgz", - "integrity": "sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==", - "dev": true, - "dependencies": { - "shiki": "1.14.1" - } - }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "license": "MIT", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "license": "MIT" - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "license": "MIT", - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", - "license": "MIT" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "license": "MIT", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "license": "MIT" - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "license": "MIT" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "license": "MIT" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "license": "MIT" - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "license": "MIT" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "license": "MIT", - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", - "dev": true - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz", - "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==", - "dev": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", - "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.38", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", - "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", - "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.38", - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.40", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", - "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/devtools-api": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.3.9.tgz", - "integrity": "sha512-D+GTYtFg68bqSu66EugQUydsOqaDlPLNmYw5oYk8k81uBu9/bVTUrqlAJrAA9Am7MXhKz2gWdDkopY6sOBf/Bg==", - "dev": true, - "dependencies": { - "@vue/devtools-kit": "^7.3.9" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.3.9.tgz", - "integrity": "sha512-Gr17nA+DaQzqyhNx1DUJr1CJRzTRfbIuuC80ZgU8MD/qNO302tv9la+ROi+Uaw+ULVwU9T71GnwLy4n8m9Lspg==", - "dev": true, - "dependencies": { - "@vue/devtools-shared": "^7.3.9", - "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" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.3.9.tgz", - "integrity": "sha512-CdfMRZKXyI8vw+hqOcQIiLihB6Hbbi7WNZGp7LsuH1Qe4aYAFmTaKjSciRZ301oTnwmU/knC/s5OGuV6UNiNoA==", - "dev": true, - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", - "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", - "dev": true, - "dependencies": { - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", - "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", - "dev": true, - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", - "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", - "dev": true, - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/runtime-core": "3.4.38", - "@vue/shared": "3.4.38", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", - "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "vue": "3.4.38" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", - "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", - "dev": true - }, - "node_modules/@vueuse/core": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.0.3.tgz", - "integrity": "sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==", - "dev": true, - "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "11.0.3", - "@vueuse/shared": "11.0.3", - "vue-demi": ">=0.14.10" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/integrations": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.0.3.tgz", - "integrity": "sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==", - "dev": true, - "dependencies": { - "@vueuse/core": "11.0.3", - "@vueuse/shared": "11.0.3", - "vue-demi": ">=0.14.10" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "async-validator": "^4", - "axios": "^1", - "change-case": "^5", - "drauu": "^0.4", - "focus-trap": "^7", - "fuse.js": "^7", - "idb-keyval": "^6", - "jwt-decode": "^4", - "nprogress": "^0.2", - "qrcode": "^1.5", - "sortablejs": "^1", - "universal-cookie": "^7" - }, - "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 - } - } - }, - "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/metadata": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.0.3.tgz", - "integrity": "sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.0.3.tgz", - "integrity": "sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==", - "dev": true, - "dependencies": { - "vue-demi": ">=0.14.10" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/algoliasearch": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", - "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", - "dev": true, - "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" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", - "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", - "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/birpc": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", - "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "license": "MIT", - "dependencies": { - "layout-base": "^1.0.0" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/cytoscape": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.32.0.tgz", - "integrity": "sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "license": "MIT", - "dependencies": { - "layout-base": "^2.0.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", - "license": "MIT" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "license": "ISC", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "license": "ISC", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "license": "ISC", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "license": "ISC", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "license": "BSD-3-Clause", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "license": "ISC" - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", - "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", - "license": "MIT", - "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/exsolve": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", - "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", - "license": "MIT" - }, - "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "dev": true, - "dependencies": { - "tabbable": "^6.2.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", - "license": "MIT" - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "license": "MIT" - }, - "node_modules/langium": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", - "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", - "license": "MIT", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/layout-base": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", - "license": "MIT" - }, - "node_modules/local-pkg": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", - "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", - "license": "MIT", - "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.0.1", - "quansync": "^0.2.8" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true - }, - "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mermaid": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.8.0.tgz", - "integrity": "sha512-uAZUwnBiqREZcUrFw3G5iQ5Pj3hTYUP95EZc3ec/nGBzHddJZydzYGE09tGZDBS1VoSoDn0symZ85FmypSTo5g==", - "license": "MIT", - "dependencies": { - "@braintree/sanitize-url": "^7.0.4", - "@iconify/utils": "^2.1.33", - "@mermaid-js/parser": "^0.6.0", - "@types/d3": "^7.4.3", - "cytoscape": "^3.29.3", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - "d3": "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.13", - "dompurify": "^3.2.5", - "katex": "^0.16.9", - "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^15.0.7", - "roughjs": "^4.6.6", - "stylis": "^4.3.6", - "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" - } - }, - "node_modules/minisearch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz", - "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==", - "dev": true - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/package-manager-detector": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", - "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", - "license": "MIT" - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/pkg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.2.0.tgz", - "integrity": "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.2.2", - "exsolve": "^1.0.7", - "pathe": "^2.0.3" - } - }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", - "license": "MIT" - }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "license": "MIT", - "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" - } - }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/preact": { - "version": "10.23.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.23.2.tgz", - "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/quansync": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", - "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense" - }, - "node_modules/rollup": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", - "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.27.4", - "@rollup/rollup-android-arm64": "4.27.4", - "@rollup/rollup-darwin-arm64": "4.27.4", - "@rollup/rollup-darwin-x64": "4.27.4", - "@rollup/rollup-freebsd-arm64": "4.27.4", - "@rollup/rollup-freebsd-x64": "4.27.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", - "@rollup/rollup-linux-arm-musleabihf": "4.27.4", - "@rollup/rollup-linux-arm64-gnu": "4.27.4", - "@rollup/rollup-linux-arm64-musl": "4.27.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", - "@rollup/rollup-linux-riscv64-gnu": "4.27.4", - "@rollup/rollup-linux-s390x-gnu": "4.27.4", - "@rollup/rollup-linux-x64-gnu": "4.27.4", - "@rollup/rollup-linux-x64-musl": "4.27.4", - "@rollup/rollup-win32-arm64-msvc": "4.27.4", - "@rollup/rollup-win32-ia32-msvc": "4.27.4", - "@rollup/rollup-win32-x64-msvc": "4.27.4", - "fsevents": "~2.3.2" - } - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", - "license": "MIT", - "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/search-insights": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.0.tgz", - "integrity": "sha512-AskayU3QNsXQzSL6v4LTYST7NNfs2HWyHHB+sdORP9chsytAhro5XRfToAMI/LAVYgNbzowVZTMfBRodgbUHKg==", - "dev": true, - "peer": true - }, - "node_modules/shiki": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz", - "integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==", - "dev": true, - "dependencies": { - "@shikijs/core": "1.14.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "license": "MIT" - }, - "node_modules/superjson": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", - "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", - "dev": true, - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true - }, - "node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "license": "MIT" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitepress": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.3.4.tgz", - "integrity": "sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==", - "dev": true, - "dependencies": { - "@docsearch/css": "^3.6.1", - "@docsearch/js": "^3.6.1", - "@shikijs/core": "^1.13.0", - "@shikijs/transformers": "^1.13.0", - "@types/markdown-it": "^14.1.2", - "@vitejs/plugin-vue": "^5.1.2", - "@vue/devtools-api": "^7.3.8", - "@vue/shared": "^3.4.38", - "@vueuse/core": "^11.0.0", - "@vueuse/integrations": "^11.0.0", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^7.1.0", - "shiki": "^1.13.0", - "vite": "^5.4.1", - "vue": "^3.4.38" - }, - "bin": { - "vitepress": "bin/vitepress.js" - }, - "peerDependencies": { - "markdown-it-mathjax3": "^4", - "postcss": "^8" - }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } - } - }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "license": "MIT" - }, - "node_modules/vue": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", - "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-sfc": "3.4.38", - "@vue/runtime-dom": "3.4.38", - "@vue/server-renderer": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - } - } -} diff --git a/package.json b/package.json index 7a469afd1..4180f19e3 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,8 @@ { - "devDependencies": { - "vitepress": "^1.3.4" - }, "scripts": { - "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", - "docs:preview": "vitepress preview docs" + "dev": "mintlify dev" }, "dependencies": { - "mermaid": "^11.8.0", - "vitepress-openapi": "^0.1.10" + "mintlify": "^4.2.375" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70b804dc0..5d33fce9d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,937 +8,1318 @@ importers: .: dependencies: - mermaid: - specifier: ^11.8.0 - version: 11.12.1 - vitepress-openapi: - specifier: ^0.1.10 - version: 0.1.10(vitepress@1.6.4(@algolia/client-search@5.42.0)(postcss@8.5.6)(search-insights@2.17.3))(vue@3.5.22) - devDependencies: - vitepress: - specifier: ^1.3.4 - version: 1.6.4(@algolia/client-search@5.42.0)(postcss@8.5.6)(search-insights@2.17.3) + mintlify: + specifier: ^4.2.375 + version: 4.2.375(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.0)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) packages: - '@algolia/abtesting@1.8.0': - resolution: {integrity: sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==} - engines: {node: '>= 14.0.0'} + '@alcalzone/ansi-tokenize@0.2.5': + resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==} + engines: {node: '>=18'} - '@algolia/autocomplete-core@1.17.7': - resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} - '@algolia/autocomplete-plugin-algolia-insights@1.17.7': - resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} - peerDependencies: - search-insights: '>= 1 < 3' + '@ark/schema@0.55.0': + resolution: {integrity: sha512-IlSIc0FmLKTDGr4I/FzNHauMn0MADA6bCjT1wauu4k6MyxhC1R9gz0olNpIRvK7lGGDwtc/VO0RUDNvVQW5WFg==} - '@algolia/autocomplete-preset-algolia@1.17.7': - resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' + '@ark/schema@0.56.0': + resolution: {integrity: sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA==} - '@algolia/autocomplete-shared@1.17.7': - resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' + '@ark/util@0.55.0': + resolution: {integrity: sha512-aWFNK7aqSvqFtVsl1xmbTjGbg91uqtJV7Za76YGNEwIO4qLjMfyY8flmmbhooYMuqPCO2jyxu8hve943D+w3bA==} - '@algolia/client-abtesting@5.42.0': - resolution: {integrity: sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==} - engines: {node: '>= 14.0.0'} + '@ark/util@0.56.0': + resolution: {integrity: sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA==} - '@algolia/client-analytics@5.42.0': - resolution: {integrity: sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==} - engines: {node: '>= 14.0.0'} + '@asyncapi/parser@3.4.0': + resolution: {integrity: sha512-Sxn74oHiZSU6+cVeZy62iPZMFMvKp4jupMFHelSICCMw1qELmUHPvuZSr+ZHDmNGgHcEpzJM5HN02kR7T4g+PQ==} - '@algolia/client-common@5.42.0': - resolution: {integrity: sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==} - engines: {node: '>= 14.0.0'} + '@asyncapi/specs@6.8.1': + resolution: {integrity: sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA==} - '@algolia/client-insights@5.42.0': - resolution: {integrity: sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-personalization@5.42.0': - resolution: {integrity: sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-query-suggestions@5.42.0': - resolution: {integrity: sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-search@5.42.0': - resolution: {integrity: sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==} - engines: {node: '>= 14.0.0'} - - '@algolia/ingestion@1.42.0': - resolution: {integrity: sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==} - engines: {node: '>= 14.0.0'} - - '@algolia/monitoring@1.42.0': - resolution: {integrity: sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/recommend@5.42.0': - resolution: {integrity: sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@5.42.0': - resolution: {integrity: sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-fetch@5.42.0': - resolution: {integrity: sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-node-http@5.42.0': - resolution: {integrity: sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==} - engines: {node: '>= 14.0.0'} - - '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - - '@antfu/utils@9.3.0': - resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true + '@canvas/image-data@1.1.0': + resolution: {integrity: sha512-QdObRRjRbcXGmM1tmJ+MrHcaz1MftF2+W7YI+MsphnsCrmtyfS0d5qJbk0MeSbUeyM/jCb0hmnkXPsy026L7dA==} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} - '@braintree/sanitize-url@7.1.1': - resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - - '@docsearch/css@3.8.2': - resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} - - '@docsearch/js@3.8.2': - resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} - - '@docsearch/react@3.8.2': - resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} 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.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@floating-ui/core@1.7.3': - resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - - '@floating-ui/dom@1.7.4': - resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + react: '>=16.8.0' + react-dom: '>=16.8.0' '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@floating-ui/vue@1.1.9': - resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] - '@iconify-json/simple-icons@1.2.57': - resolution: {integrity: sha512-/yWbO502M6WfvmcV5OjEgA4uoPN/76nrn7Hri/8g9L4GiNQ6VMgXWE9vFp4tDsmGMAe4ZCov3NbH6vJCgXZ1hA==} + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] - '@iconify/utils@3.0.2': - resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] - '@internationalized/date@3.10.0': - resolution: {integrity: sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==} + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] - '@internationalized/number@3.6.5': - resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.9.0': + resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@mermaid-js/parser@0.6.3': - resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} - cpu: [arm] - os: [android] + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} - cpu: [arm64] - os: [android] + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} - cpu: [arm64] - os: [darwin] + '@jsep-plugin/ternary@1.1.4': + resolution: {integrity: sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} - cpu: [x64] - os: [darwin] + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} - cpu: [arm64] - os: [freebsd] + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} - cpu: [x64] - os: [freebsd] + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} - cpu: [arm] - os: [linux] + '@mintlify/cli@4.0.978': + resolution: {integrity: sha512-Zer7yXn+IzYbWl6r4PXeLsrkODlQkfr8t0OkkUQ7OqPCxlBI0bWtFKq6OvE/pDtQumghU+ajgaf14d2V01RziA==} + engines: {node: '>=18.0.0'} + hasBin: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} - cpu: [arm] - os: [linux] + '@mintlify/common@1.0.661': + resolution: {integrity: sha512-/Hdiblzaomp+AWStQ4smhVMgesQhffzQjC9aYBnmLReNdh2Js+ccQFUaWL3TNIxwiS2esaZvsHSV/D+zyRS3hg==} - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} - cpu: [arm64] - os: [linux] + '@mintlify/common@1.0.749': + resolution: {integrity: sha512-3ZN6HBwjwIys5m9z7Wi6WAaAHVJXdQNvt1sqC6/FHifX/Cr7m/jBtwaMfSyynfo5UiPDszeFeinE7nvL0B4Vyg==} - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} - cpu: [arm64] - os: [linux] + '@mintlify/link-rot@3.0.913': + resolution: {integrity: sha512-028krnNVCKSERMrCfeauXxftRsl8USx2LAhc+0WU+gTcnR0H8VfWYVcsyXZSOAVhG7VP0Nze0+PCPe/FAlYJhA==} + engines: {node: '>=18.0.0'} - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} - cpu: [loong64] - os: [linux] + '@mintlify/mdx@3.0.4': + resolution: {integrity: sha512-tJhdpnM5ReJLNJ2fuDRIEr0zgVd6id7/oAIfs26V46QlygiLsc8qx4Rz3LWIX51rUXW/cfakjj0EATxIciIw+g==} + peerDependencies: + '@radix-ui/react-popover': ^1.1.15 + react: ^18.3.1 + react-dom: ^18.3.1 - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} - cpu: [ppc64] - os: [linux] + '@mintlify/models@0.0.255': + resolution: {integrity: sha512-LIUkfA7l7ypHAAuOW74ZJws/NwNRqlDRD/U466jarXvvSlGhJec/6J4/I+IEcBvWDnc9anLFKmnGO04jPKgAsg==} + engines: {node: '>=18.0.0'} - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} - cpu: [riscv64] - os: [linux] + '@mintlify/models@0.0.274': + resolution: {integrity: sha512-/W7qlRoF8SQRkzvGNoAKPc/WZ4jNy2G3Ir3VnEbyuHG3+lKNPmIdlo/+MaqacFYw2HLiegvqk0hiluNBKSM2fQ==} + engines: {node: '>=18.0.0'} - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} - cpu: [riscv64] - os: [linux] + '@mintlify/openapi-parser@0.0.8': + resolution: {integrity: sha512-9MBRq9lS4l4HITYCrqCL7T61MOb20q9IdU7HWhqYMNMM1jGO1nHjXasFy61yZ8V6gMZyyKQARGVoZ0ZrYN48Og==} + engines: {node: '>=18'} - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} - cpu: [s390x] - os: [linux] + '@mintlify/prebuild@1.0.886': + resolution: {integrity: sha512-Tj6tfibYDFPql/TNg2+y6HQi4V2PynFt7b6wqaQLI7F1/yrpqUu9TfO7l5c95YiNNNgzqYCLuNtmMqFxxL9Esg==} - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} - cpu: [x64] - os: [linux] + '@mintlify/previewing@4.0.943': + resolution: {integrity: sha512-OvuAD9FlDd8SDZPjAeBUZC8eVUweeSZBbaDuVbYDEjuwRPOhVkRyQWSdds/GNT80GTyQxcCjRN4QnaMaahBWng==} + engines: {node: '>=18.0.0'} - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} - cpu: [x64] - os: [linux] + '@mintlify/scraping@4.0.522': + resolution: {integrity: sha512-PL2k52WT5S5OAgnT2K13bP7J2El6XwiVvQlrLvxDYw5KMMV+y34YVJI8ZscKb4trjitWDgyK0UTq2KN6NQgn6g==} + engines: {node: '>=18.0.0'} + hasBin: true - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} - cpu: [arm64] - os: [openharmony] + '@mintlify/scraping@4.0.611': + resolution: {integrity: sha512-JsUJ2ZZnRk+D6t2NrqMZ4tkhkUob4KHczMpkwp+b5lt7exz3rl8Gzt5q1XhY4ioN1KFaVQgx1ykBAFf2EtD7rw==} + engines: {node: '>=18.0.0'} + hasBin: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} - cpu: [arm64] - os: [win32] + '@mintlify/validation@0.1.555': + resolution: {integrity: sha512-11QVUReL4N5u8wSCgZt4RN7PA0jYQoMEBZ5IrUp5pgb5ZJBOoGV/vPsQrxPPa1cxsUDAuToNhtGxRQtOav/w8w==} - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} - cpu: [ia32] - os: [win32] + '@mintlify/validation@0.1.605': + resolution: {integrity: sha512-4mMdB5Kah+NcpOsH5x1waJ+gWtiRSSJaLmBzfs5j6E2XVCn8MEbFbg+aZTR2lkesNtaEvz/nq7TQZy6GKS3X6g==} - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} - cpu: [x64] - os: [win32] + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} - cpu: [x64] - os: [win32] + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@shikijs/core@2.5.0': - resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} - '@shikijs/engine-javascript@2.5.0': - resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} + '@openapi-contrib/openapi-schema-to-json-schema@3.2.0': + resolution: {integrity: sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw==} - '@shikijs/engine-oniguruma@2.5.0': - resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} + '@puppeteer/browsers@2.3.0': + resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} + engines: {node: '>=18'} + hasBin: true - '@shikijs/langs@2.5.0': - resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - '@shikijs/themes@2.5.0': - resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@shikijs/transformers@2.5.0': - resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@shikijs/types@2.5.0': - resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@shikijs/core@3.22.0': + resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} + + '@shikijs/engine-javascript@3.22.0': + resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} + + '@shikijs/engine-oniguruma@3.22.0': + resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} + + '@shikijs/langs@3.22.0': + resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} + + '@shikijs/themes@3.22.0': + resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} + + '@shikijs/transformers@3.22.0': + resolution: {integrity: sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw==} + + '@shikijs/twoslash@3.22.0': + resolution: {integrity: sha512-GO27UPN+kegOMQvC+4XcLt0Mttyg+n16XKjmoKjdaNZoW+sOJV7FLdv2QKauqUDws6nE3EQPD+TFHEdyyoUBDw==} + peerDependencies: + typescript: '>=5.5.0' + + '@shikijs/types@3.22.0': + resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} - '@tanstack/virtual-core@3.13.12': - resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + '@sindresorhus/slugify@2.2.0': + resolution: {integrity: sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w==} + engines: {node: '>=12'} - '@tanstack/vue-virtual@3.13.12': - resolution: {integrity: sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==} + '@sindresorhus/transliterate@1.6.0': + resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} + engines: {node: '>=12'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@stoplight/better-ajv-errors@1.0.3': + resolution: {integrity: sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==} + engines: {node: ^12.20 || >= 14.13} peerDependencies: - vue: ^2.7.0 || ^3.0.0 + ajv: '>=8' - '@types/d3-array@3.2.2': - resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + '@stoplight/json-ref-readers@1.2.2': + resolution: {integrity: sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==} + engines: {node: '>=8.3.0'} - '@types/d3-axis@3.0.6': - resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + '@stoplight/json-ref-resolver@3.1.6': + resolution: {integrity: sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==} + engines: {node: '>=8.3.0'} - '@types/d3-brush@3.0.6': - resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + '@stoplight/json@3.21.0': + resolution: {integrity: sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==} + engines: {node: '>=8.3.0'} - '@types/d3-chord@3.0.6': - resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + '@stoplight/ordered-object-literal@1.0.5': + resolution: {integrity: sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==} + engines: {node: '>=8'} - '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + '@stoplight/path@1.3.2': + resolution: {integrity: sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==} + engines: {node: '>=8'} - '@types/d3-contour@3.0.6': - resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + '@stoplight/spectral-core@1.21.0': + resolution: {integrity: sha512-oj4e/FrDLUhBRocIW+lRMKlJ/q/rDZw61HkLbTFsdMd+f/FTkli2xHNB1YC6n1mrMKjjvy7XlUuFkC7XxtgbWw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-delaunay@6.0.4': - resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + '@stoplight/spectral-formats@1.8.2': + resolution: {integrity: sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-dispatch@3.0.7': - resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + '@stoplight/spectral-functions@1.10.1': + resolution: {integrity: sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-drag@3.0.7': - resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + '@stoplight/spectral-parsers@1.0.5': + resolution: {integrity: sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-dsv@3.0.7': - resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + '@stoplight/spectral-ref-resolver@1.0.5': + resolution: {integrity: sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-ease@3.0.2': - resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + '@stoplight/spectral-runtime@1.1.4': + resolution: {integrity: sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} - '@types/d3-fetch@3.0.7': - resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + '@stoplight/types@13.20.0': + resolution: {integrity: sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==} + engines: {node: ^12.20 || >=14.13} - '@types/d3-force@3.0.10': - resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + '@stoplight/types@13.6.0': + resolution: {integrity: sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==} + engines: {node: ^12.20 || >=14.13} - '@types/d3-format@3.0.4': - resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + '@stoplight/types@14.1.1': + resolution: {integrity: sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==} + engines: {node: ^12.20 || >=14.13} - '@types/d3-geo@3.1.0': - resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + '@stoplight/yaml-ast-parser@0.0.50': + resolution: {integrity: sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==} - '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + '@stoplight/yaml@4.3.0': + resolution: {integrity: sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==} + engines: {node: '>=10.8'} - '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} - '@types/d3-path@3.1.1': - resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@types/d3-polygon@3.0.2': - resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/d3-quadtree@3.0.6': - resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - '@types/d3-random@3.0.3': - resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} - '@types/d3-scale-chromatic@3.1.0': - resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/d3-scale@4.0.9': - resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + '@types/es-aggregate-error@1.0.6': + resolution: {integrity: sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==} - '@types/d3-selection@3.0.11': - resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - - '@types/d3-shape@3.1.7': - resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} - - '@types/d3-time-format@4.0.3': - resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} - - '@types/d3-time@3.0.4': - resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - - '@types/d3-timer@3.0.2': - resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - - '@types/d3-transition@3.0.9': - resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} - - '@types/d3-zoom@3.0.8': - resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - - '@types/d3@7.4.3': - resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/geojson@7946.0.16': - resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@25.3.0': + resolution: {integrity: sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==} + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/web-bluetooth@0.0.21': - resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@types/urijs@1.19.26': + resolution: {integrity: sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript/vfs@1.6.4': + resolution: {integrity: sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==} + peerDependencies: + typescript: '*' '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-vue@5.2.4': - resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} - engines: {node: ^18.0.0 || >=20.0.0} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: - vite: ^5.0.0 || ^6.0.0 - vue: ^3.2.25 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vue/compiler-core@3.5.22': - resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} - - '@vue/compiler-dom@3.5.22': - resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} - - '@vue/compiler-sfc@3.5.22': - resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} - - '@vue/compiler-ssr@3.5.22': - resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} - - '@vue/devtools-api@7.7.7': - resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} - - '@vue/devtools-kit@7.7.7': - resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} - - '@vue/devtools-shared@7.7.7': - resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} - - '@vue/reactivity@3.5.22': - resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} - - '@vue/runtime-core@3.5.22': - resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==} - - '@vue/runtime-dom@3.5.22': - resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==} - - '@vue/server-renderer@3.5.22': - resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==} - peerDependencies: - vue: 3.5.22 - - '@vue/shared@3.5.22': - resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} - - '@vueuse/core@12.8.2': - resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} - - '@vueuse/core@13.9.0': - resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} - peerDependencies: - vue: ^3.5.0 - - '@vueuse/integrations@12.8.2': - resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} - peerDependencies: - async-validator: ^4 - axios: ^1 - change-case: ^5 - drauu: ^0.4 - focus-trap: ^7 - fuse.js: ^7 - idb-keyval: ^6 - jwt-decode: ^4 - nprogress: ^0.2 - qrcode: ^1.5 - sortablejs: ^1 - universal-cookie: ^7 - 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@12.8.2': - resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} - - '@vueuse/metadata@13.9.0': - resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} - - '@vueuse/shared@12.8.2': - resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - - '@vueuse/shared@13.9.0': - resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} - peerDependencies: - vue: ^3.5.0 - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true - algoliasearch@5.42.0: - resolution: {integrity: sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==} - engines: {node: '>= 14.0.0'} + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-errors@3.0.0: + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} + peerDependencies: + ajv: ^8.0.1 + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-hidden@1.2.6: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - birpc@2.7.0: - resolution: {integrity: sha512-tub/wFGH49vNCm0xraykcY3TcRgX/3JsALYq/Lwrtti+bTyFHkCUAWF5wgYoie8P41wYwig2mIKiqoocr1EkEQ==} + arkregex@0.0.3: + resolution: {integrity: sha512-bU21QJOJEFJK+BPNgv+5bVXkvRxyAvgnon75D92newgHxkBJTgiFwQxusyViYyJkETsddPlHyspshDQcCzmkNg==} + + arkregex@0.0.5: + resolution: {integrity: sha512-ncYjBdLlh5/QnVsAA8De16Tc9EqmYM7y/WU9j+236KcyYNUXogpz3sC4ATIZYzzLxwI+0sEOaQLEmLmRleaEXw==} + + arktype@2.1.27: + resolution: {integrity: sha512-enctOHxI4SULBv/TDtCVi5M8oLd4J5SVlPUblXDzSsOYQNMzmVbUosGBnJuZDKmFlN5Ie0/QVEuTE+Z5X1UhsQ==} + + arktype@2.1.29: + resolution: {integrity: sha512-jyfKk4xIOzvYNayqnD8ZJQqOwcrTOUbIU4293yrzAjA3O1dWh61j71ArMQ6tS/u4pD7vabSPe7nG3RCyoXW6RQ==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + auto-bind@5.0.1: + resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + avsc@5.7.9: + resolution: {integrity: sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==} + engines: {node: '>=0.11'} + + axios@1.10.0: + resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + + b4a@1.8.0: + resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.5.4: + resolution: {integrity: sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.8.0: + resolution: {integrity: sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + basic-ftp@5.1.0: + resolution: {integrity: sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==} + engines: {node: '>=10.0.0'} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chromium-bidi@0.6.2: + resolution: {integrity: sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg==} peerDependencies: - chevrotain: ^11.0.0 + devtools-protocol: '*' - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} - class-variance-authority@0.7.1: - resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + code-excerpt@4.0.0: + resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-blend@4.0.0: + resolution: {integrity: sha512-fYODTHhI/NG+B5GnzvuL3kiFrK/UnkUezWFTgEPBTY5V+kpyfAn95Vn9sJeeCX6omrCOdxnqCL3CvH+6sXtIbw==} + engines: {node: '>=10.0.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} - cose-base@1.0.3: - resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + convert-to-spaces@2.0.1: + resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cose-base@2.2.0: - resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} - cytoscape-cose-bilkent@4.1.0: - resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} peerDependencies: - cytoscape: ^3.2.0 + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true - cytoscape-fcose@2.2.0: - resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} - peerDependencies: - cytoscape: ^3.2.0 - - cytoscape@3.33.1: - resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} - engines: {node: '>=0.10'} - - d3-array@2.12.1: - resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} - - d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - - d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - - d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - - d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} - - d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - - d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} - - d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} - - d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - - d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - - d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true - d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} - d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} - d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} - d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} - d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - - d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - - d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - - d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - - d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - - d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - - d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - - d3-sankey@0.12.3: - resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - - d3-scale-chromatic@3.1.0: - resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} - engines: {node: '>=12'} - - d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - - d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - - d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - - d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - - d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - - d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - - d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - - d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: - d3-selection: 2 - 3 + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - - d3@7.9.0: - resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} - engines: {node: '>=12'} - - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} - - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -949,211 +1330,1508 @@ packages: supports-color: optional: true - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + decode-bmp@0.2.1: + resolution: {integrity: sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==} + engines: {node: '>=8.6.0'} - delaunator@5.0.1: - resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + decode-ico@0.4.1: + resolution: {integrity: sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==} + engines: {node: '>=8.6'} + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dompurify@3.3.0: - resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} + devtools-protocol@0.0.1312386: + resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + dns-socket@4.2.2: + resolution: {integrity: sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==} + engines: {node: '>=6'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + engines: {node: '>= 0.4'} + + es-aggregate-error@1.0.14: + resolution: {integrity: sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es-toolkit@1.44.0: + resolution: {integrity: sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} hasBin: true - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - focus-trap@7.6.6: - resolution: {integrity: sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + favicons@7.2.0: + resolution: {integrity: sha512-k/2rVBRIRzOeom3wI9jBPaSEvoTSQEW4iM0EveBmBBKFxO8mSyyRWtDlfC3VnEfu0avmjrMzy8/ZFPSe6F71Hw==} + engines: {node: '>=14.0.0'} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + + fs-extra@11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gcd@0.0.1: + resolution: {integrity: sha512-VNx3UEGr+ILJTiMs1+xc5SX1cMgJCrXezKPa003APUWNqQqaF6n25W8VcR7nHN6yRWbvvUTwCpZCFJeWC2kXlw==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} - hachure-fill@0.5.2: - resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + + hast-util-from-dom@5.0.1: + resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} + + hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-body-ok-link@3.0.1: + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-minify-whitespace@1.0.1: + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-mdast@10.1.0: + resolution: {integrity: sha512-DsL/SvCK9V7+vfc6SLQ+vKIyBDXTk2KLSbfBYkH4zeF/uR1yBajHRhkzuaUSGOB1WJSTieJBdHwxlC+HLKvZZw==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + hex-rgb@5.0.0: + resolution: {integrity: sha512-NQO+lgVUCtHxZ792FodgW0zflK+ozS9X9dwGp9XvvmPlH7pyxd588cn24TD3rmPm/N0AIRXF10Otah8yKqGw4w==} + engines: {node: '>=12'} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + ico-endec@0.1.6: + resolution: {integrity: sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - internmap@1.0.1: - resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ink-spinner@5.0.0: + resolution: {integrity: sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==} + engines: {node: '>=14.16'} + peerDependencies: + ink: '>=4.0.0' + react: '>=18.0.0' + + ink@6.3.0: + resolution: {integrity: sha512-2CbJAa7XeziZYe6pDS5RVLirRY28iSGMQuEV8jRU5NQsONQNfcR/BZHHc9vkMg2lGYTHTM2pskxC1YmY28p6bQ==} + engines: {node: '>=20'} + peerDependencies: + '@types/react': '>=19.0.0' + react: '>=19.0.0' + react-devtools-core: ^4.19.1 + peerDependenciesMeta: + '@types/react': + optional: true + react-devtools-core: + optional: true + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + inquirer@12.3.0: + resolution: {integrity: sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + + ip-regex@4.3.0: + resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - katex@0.16.25: - resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-in-ci@2.0.0: + resolution: {integrity: sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==} + engines: {node: '>=20'} hasBin: true - khroma@2.1.0: - resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + is-ip@3.1.0: + resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} + engines: {node: '>=8'} - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} - langium@3.3.1: - resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} - engines: {node: '>=16.0.0'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} - layout-base@1.0.2: - resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} - layout-base@2.0.1: - resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + is-online@10.0.0: + resolution: {integrity: sha512-WCPdKwNDjXJJmUubf2VHLMDBkUZEtuOvpXUfUnUFbEnM6In9ByiScL4f4jKACz/fsb2qDkesFerW3snf/AYz3A==} + engines: {node: '>=14.16'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + jsonc-parser@2.2.1: + resolution: {integrity: sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==} + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + jsonpath-plus@10.4.0: + resolution: {integrity: sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==} + engines: {node: '>=18.0.0'} + hasBin: true + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + katex@0.16.28: + resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + lcm@0.0.3: + resolution: {integrity: sha512-TB+ZjoillV6B26Vspf9l2L/vKaRY/4ep3hahcyVkCGFgsTNRUQdc24bQeNFiZeoxH0vr5+7SfNRMQuPHv/1IrQ==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + leven@4.1.0: + resolution: {integrity: sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lucide-vue-next@0.503.0: - resolution: {integrity: sha512-3MrtHIBdh4dPCUZDLxQnvmQ17UzUnBYgezUSIo87Laais8hOz6qIPllp0iG/uS/UIzk7bJxyZRzoZTW/gLSr4A==} - peerDependencies: - vue: '>=3.0.1' + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - markdown-it-link-attributes@4.0.1: - resolution: {integrity: sha512-pg5OK0jPLg62H4k7M9mRJLT61gUp9nvG0XveKYHMOOluASo9OEF13WlXrpAp2aj35LbedAy3QOCgQCw0tkLKAQ==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - marked@16.4.1: - resolution: {integrity: sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==} - engines: {node: '>= 20'} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - mermaid@11.12.1: - resolution: {integrity: sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} micromark-util-types@2.0.2: resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - minisearch@7.2.0: - resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mintlify@4.2.375: + resolution: {integrity: sha512-10Ny+U1xCT97nPGQh1Mf9juLYaE8dXd5cRVvBZ/9bm4cZgZCvjnzaj6qKzj3z/itfcfRLOWFaacMlVcemYISTg==} + engines: {node: '>=18.0.0'} + hasBin: true mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - oniguruma-to-es@3.1.1: - resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} - path-data-parser@0.1.0: - resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + next-mdx-remote-client@1.1.6: + resolution: {integrity: sha512-O4HIpi44d6SismhfG5W78aTUfgxfbsj6FgoM4/G3o4Vtcobt0Ej439IiDPkv+IqsmtouVYG1tGAsz1DIuj9Tfg==} + engines: {node: '>=20.9.0'} + peerDependencies: + react: '>= 18.3.0 < 19.0.0' + react-dom: '>= 18.3.0 < 19.0.0' - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + nimma@0.2.3: + resolution: {integrity: sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==} + engines: {node: ^12.20 || >=14.13} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + non-error@0.1.0: + resolution: {integrity: sha512-TMB1uHiGsHRGv1uYclfhivcnf0/PdFp2pNqRxXjncaAsjYMoisaQJI+SSZCqRq+VliwRTC8tsMQfmrWjDMhkPQ==} + engines: {node: '>=20'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} + engines: {node: '>=14.16'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-any@4.0.0: + resolution: {integrity: sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==} + engines: {node: '>=12.20'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-some@6.0.0: + resolution: {integrity: sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg==} + engines: {node: '>=12.20'} + + p-timeout@5.1.0: + resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} + engines: {node: '>=12'} + + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + patch-console@2.0.0: + resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} - points-on-curve@0.2.0: - resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - points-on-path@0.2.1: - resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pony-cause@1.1.1: + resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==} + engines: {node: '>=12.0.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.27.2: - resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + public-ip@5.0.0: + resolution: {integrity: sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw==} + engines: {node: ^14.13.1 || >=16.0.0} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + puppeteer-core@22.14.0: + resolution: {integrity: sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw==} + engines: {node: '>=18'} + + puppeteer@22.14.0: + resolution: {integrity: sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw==} + engines: {node: '>=18'} + deprecated: < 24.15.0 is no longer supported + hasBin: true + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-reconciler@0.32.0: + resolution: {integrity: sha512-2NPMOzgTlG0ZWdIf3qG+dcbLSoAc/uLfOwckc3ofy5sSK0pLJqnQLpUFxvGcN2rlXSjnVtGeeFLNimCQEj5gOQ==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^19.1.0 + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -1161,1202 +2839,3115 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - reka-ui@2.6.0: - resolution: {integrity: sha512-NrGMKrABD97l890mFS3TNUzB0BLUfbL3hh0NjcJRIUSUljb288bx3Mzo31nOyUcdiiW0HqFGXJwyCBh9cWgb0w==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + rehype-katex@7.0.1: + resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} + + rehype-minify-whitespace@6.0.2: + resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + + remark-mdx-remove-esm@1.2.3: + resolution: {integrity: sha512-n6r36SaE+7cno7pmshWbGzYolDVLxJm5EKuw67+q4SPQT6kelNJHyZAiFYYtOB0axh+/1xF4BC57Ec3jncAGXQ==} peerDependencies: - vue: '>= 3.2.0' + unified: ^11 - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} hasBin: true - roughjs@4.6.6: - resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} - rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@1.1.1: + resolution: {integrity: sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - search-insights@2.17.3: - resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} - shiki@2.5.0: - resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-error@13.0.1: + resolution: {integrity: sha512-bBZaRwLH9PN5HbLCjPId4dP5bNGEtumcErgOX952IsvOhVPrm3/AeK1y0UHA/QaPG701eg0yEnOKsCOC6X/kaA==} + engines: {node: '>=20'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sharp-ico@0.1.5: + resolution: {integrity: sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q==} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shiki@3.22.0: + resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-eval@1.0.1: + resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} + engines: {node: '>=12'} + + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socket.io-adapter@2.5.6: + resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} + + socket.io-parser@4.2.5: + resolution: {integrity: sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==} + engines: {node: '>=10.0.0'} + + socket.io@4.7.2: + resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + engines: {node: '>=10.2.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - stylis@4.3.6: - resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} - superjson@2.2.5: - resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==} - engines: {node: '>=16'} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} - tabbable@6.3.0: - resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.1.15: + resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} + engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-data-view@1.1.0: + resolution: {integrity: sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} + trim-trailing-lines@2.1.0: + resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + twoslash-protocol@0.3.6: + resolution: {integrity: sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA==} + + twoslash@0.3.6: + resolution: {integrity: sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA==} + peerDependencies: + typescript: ^5.5.0 + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-fest@5.4.4: + resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + engines: {node: '>=20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-builder@4.0.0: + resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-map@4.0.0: + resolution: {integrity: sha512-HJs1tpkSmRJUzj6fskQrS5oYhBYlmtcvy4SepdDEEsL04FjBrgF0Mgggvxc1/qGBGgW7hRh9+UBK1aqTEnBpIA==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-remove@4.0.0: + resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + + urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-matter@5.0.1: + resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@5.4.21: - resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: - '@types/node': + bufferutil: optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: + utf-8-validate: optional: true - vitepress-openapi@0.1.10: - resolution: {integrity: sha512-Pu7h2EFM0yvrjSgDsoBhWaRKTTl+5Z21lmkjh1aFtZk7f3CXD0pTXrUOh/3juBUmLv+zoS3t4vSGKtll2Cd6mw==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} peerDependencies: - vitepress: '>=1.0.0' - vue: ^3.0.0 - - vitepress@1.6.4: - resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} - hasBin: true - peerDependencies: - markdown-it-mathjax3: ^4 - postcss: ^8 + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: - markdown-it-mathjax3: + bufferutil: optional: true - postcss: + utf-8-validate: optional: true - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} hasBin: true - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 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.5.22: - resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} + yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + + yoga-layout@3.2.1: + resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} + + zod-to-json-schema@3.20.4: + resolution: {integrity: sha512-Un9+kInJ2Zt63n6Z7mLqBifzzPcOyX+b+Exuzf7L1+xqck9Q2EPByyTRduV3kmSPaXaRer1JCsucubpgL1fipg==} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + zod: ^3.20.0 + + zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zod@3.24.0: + resolution: {integrity: sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@algolia/abtesting@1.8.0': + '@alcalzone/ansi-tokenize@0.2.5': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3)': + '@alloc/quick-lru@5.2.0': {} + + '@ark/schema@0.55.0': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) + '@ark/util': 0.55.0 + + '@ark/schema@0.56.0': + dependencies: + '@ark/util': 0.56.0 + + '@ark/util@0.55.0': {} + + '@ark/util@0.56.0': {} + + '@asyncapi/parser@3.4.0': + dependencies: + '@asyncapi/specs': 6.8.1 + '@openapi-contrib/openapi-schema-to-json-schema': 3.2.0 + '@stoplight/json': 3.21.0 + '@stoplight/json-ref-readers': 1.2.2 + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-core': 1.21.0 + '@stoplight/spectral-functions': 1.10.1 + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5 + '@stoplight/types': 13.20.0 + '@types/json-schema': 7.0.15 + '@types/urijs': 1.19.26 + ajv: 8.18.0 + ajv-errors: 3.0.0(ajv@8.18.0) + ajv-formats: 2.1.1(ajv@8.18.0) + avsc: 5.7.9 + js-yaml: 4.1.0 + jsonpath-plus: 10.4.0 + node-fetch: 2.6.7 transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights + - encoding - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3)': + '@asyncapi/specs@6.8.1': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch + '@types/json-schema': 7.0.15 - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)': + '@babel/code-frame@7.29.0': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) - '@algolia/client-search': 5.42.0 - algoliasearch: 5.42.0 - - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)': - dependencies: - '@algolia/client-search': 5.42.0 - algoliasearch: 5.42.0 - - '@algolia/client-abtesting@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/client-analytics@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/client-common@5.42.0': {} - - '@algolia/client-insights@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/client-personalization@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/client-query-suggestions@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/client-search@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/ingestion@1.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/monitoring@1.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/recommend@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 - - '@algolia/requester-browser-xhr@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - - '@algolia/requester-fetch@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - - '@algolia/requester-node-http@5.42.0': - dependencies: - '@algolia/client-common': 5.42.0 - - '@antfu/install-pkg@1.1.0': - dependencies: - package-manager-detector: 1.5.0 - tinyexec: 1.0.2 - - '@antfu/utils@9.3.0': {} - - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@canvas/image-data@1.1.0': {} + + '@emnapi/runtime@1.8.1': dependencies: - '@babel/types': 7.28.5 - - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@braintree/sanitize-url@7.1.1': {} - - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} - - '@docsearch/css@3.8.2': {} - - '@docsearch/js@3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3)': - dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3) - preact: 10.27.2 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights - - '@docsearch/react@3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) - '@docsearch/css': 3.8.2 - algoliasearch: 5.42.0 - optionalDependencies: - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - '@esbuild/aix-ppc64@0.21.5': + tslib: 2.8.1 optional: true - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@floating-ui/core@1.7.3': + '@floating-ui/core@1.7.4': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.4': + '@floating-ui/dom@1.7.5': dependencies: - '@floating-ui/core': 1.7.3 + '@floating-ui/core': 1.7.4 '@floating-ui/utils': 0.2.10 + '@floating-ui/react-dom@2.1.7(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + '@floating-ui/utils@0.2.10': {} - '@floating-ui/vue@1.1.9(vue@3.5.22)': - dependencies: - '@floating-ui/dom': 1.7.4 - '@floating-ui/utils': 0.2.10 - vue-demi: 0.14.10(vue@3.5.22) - transitivePeerDependencies: - - '@vue/composition-api' - - vue + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true - '@iconify-json/simple-icons@1.2.57': - dependencies: - '@iconify/types': 2.0.0 + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true - '@iconify/types@2.0.0': {} + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true - '@iconify/utils@3.0.2': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 9.3.0 - '@iconify/types': 2.0.0 - debug: 4.4.3 - globals: 15.15.0 - kolorist: 1.8.0 - local-pkg: 1.1.2 - mlly: 1.8.0 - transitivePeerDependencies: - - supports-color + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true - '@internationalized/date@3.10.0': - dependencies: - '@swc/helpers': 0.5.17 + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true - '@internationalized/number@3.6.5': + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': dependencies: - '@swc/helpers': 0.5.17 + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/confirm@5.1.21(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/core@10.3.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/editor@4.2.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/external-editor': 1.0.3(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/expand@4.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/external-editor@1.0.3(@types/node@25.3.0)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/number@3.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/password@4.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/prompts@7.9.0(@types/node@25.3.0)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@25.3.0) + '@inquirer/confirm': 5.1.21(@types/node@25.3.0) + '@inquirer/editor': 4.2.23(@types/node@25.3.0) + '@inquirer/expand': 4.0.23(@types/node@25.3.0) + '@inquirer/input': 4.3.1(@types/node@25.3.0) + '@inquirer/number': 3.0.23(@types/node@25.3.0) + '@inquirer/password': 4.0.23(@types/node@25.3.0) + '@inquirer/rawlist': 4.1.11(@types/node@25.3.0) + '@inquirer/search': 3.2.2(@types/node@25.3.0) + '@inquirer/select': 4.4.2(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/rawlist@4.1.11(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/search@3.2.2(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/select@4.4.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/type@3.0.10(@types/node@25.3.0)': + optionalDependencies: + '@types/node': 25.3.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} - '@mermaid-js/parser@0.6.3': + '@jridgewell/trace-mapping@0.3.31': dependencies: - langium: 3.3.1 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@rollup/rollup-android-arm-eabi@4.52.5': - optional: true - - '@rollup/rollup-android-arm64@4.52.5': - optional: true - - '@rollup/rollup-darwin-arm64@4.52.5': - optional: true - - '@rollup/rollup-darwin-x64@4.52.5': - optional: true - - '@rollup/rollup-freebsd-arm64@4.52.5': - optional: true - - '@rollup/rollup-freebsd-x64@4.52.5': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.52.5': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.52.5': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-x64-musl@4.52.5': - optional: true - - '@rollup/rollup-openharmony-arm64@4.52.5': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.52.5': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.52.5': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.52.5': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.52.5': - optional: true - - '@shikijs/core@2.5.0': + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': dependencies: - '@shikijs/engine-javascript': 2.5.0 - '@shikijs/engine-oniguruma': 2.5.0 - '@shikijs/types': 2.5.0 + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/ternary@1.1.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.11.2 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.11.2) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.14 + react: 19.2.3 + + '@mintlify/cli@4.0.978(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.0)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': + dependencies: + '@inquirer/prompts': 7.9.0(@types/node@25.3.0) + '@mintlify/common': 1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/link-rot': 3.0.913(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.274 + '@mintlify/prebuild': 1.0.886(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/previewing': 4.0.943(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + '@mintlify/scraping': 4.0.611(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + adm-zip: 0.5.16 + chalk: 5.2.0 + color: 4.2.3 + detect-port: 1.5.1 + front-matter: 4.0.2 + fs-extra: 11.2.0 + ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) + inquirer: 12.3.0(@types/node@25.3.0) + js-yaml: 4.1.0 + mdast-util-mdx-jsx: 3.2.0 + react: 19.2.3 + semver: 7.7.2 + unist-util-visit: 5.0.0 + yargs: 17.7.1 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/node' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react-devtools-core + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/common@1.0.661(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@asyncapi/parser': 3.4.0 + '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.255 + '@mintlify/openapi-parser': 0.0.8 + '@mintlify/validation': 0.1.555(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@sindresorhus/slugify': 2.2.0 + '@types/mdast': 4.0.4 + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + color-blend: 4.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + front-matter: 4.0.2 + hast-util-from-html: 2.0.3 + hast-util-to-html: 9.0.4 + hast-util-to-text: 4.0.2 + hex-rgb: 5.0.0 + ignore: 7.0.5 + js-yaml: 4.1.0 + lodash: 4.17.21 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.0.0 + mdast-util-mdx: 3.0.0 + mdast-util-mdx-jsx: 3.1.3 + micromark-extension-gfm: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdxjs: 3.0.0 + openapi-types: 12.1.3 + postcss: 8.5.6 + rehype-stringify: 10.0.1 + remark: 15.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + remark-math: 6.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + remark-stringify: 11.0.0 + tailwindcss: 3.4.4 + unified: 11.0.5 + unist-builder: 4.0.0 + unist-util-map: 4.0.0 + unist-util-remove: 4.0.0 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - debug + - encoding + - react + - react-dom + - supports-color + - ts-node + - typescript + + '@mintlify/common@1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@asyncapi/parser': 3.4.0 + '@asyncapi/specs': 6.8.1 + '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.274 + '@mintlify/openapi-parser': 0.0.8 + '@mintlify/validation': 0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@sindresorhus/slugify': 2.2.0 + '@types/mdast': 4.0.4 + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + color-blend: 4.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + front-matter: 4.0.2 + hast-util-from-html: 2.0.3 + hast-util-to-html: 9.0.4 + hast-util-to-text: 4.0.2 + hex-rgb: 5.0.0 + ignore: 7.0.5 + js-yaml: 4.1.0 + lodash: 4.17.21 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.0.0 + mdast-util-mdx: 3.0.0 + mdast-util-mdx-jsx: 3.1.3 + micromark-extension-gfm: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdxjs: 3.0.0 + openapi-types: 12.1.3 + postcss: 8.5.6 + rehype-stringify: 10.0.1 + remark: 15.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + remark-math: 6.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + remark-stringify: 11.0.0 + tailwindcss: 3.4.4 + unified: 11.0.5 + unist-builder: 4.0.0 + unist-util-map: 4.0.0 + unist-util-remove: 4.0.0 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - debug + - encoding + - react + - react-dom + - supports-color + - ts-node + - typescript + + '@mintlify/link-rot@3.0.913(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/common': 1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/prebuild': 1.0.886(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/previewing': 4.0.943(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + '@mintlify/scraping': 4.0.522(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + fs-extra: 11.1.0 + unist-util-visit: 4.1.2 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react + - react-devtools-core + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/mdx@3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@radix-ui/react-popover': 1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@shikijs/transformers': 3.22.0 + '@shikijs/twoslash': 3.22.0(typescript@5.9.3) + arktype: 2.1.29 + hast-util-to-string: 3.0.1 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.1.0 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-hast: 13.2.1 + next-mdx-remote-client: 1.1.6(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(unified@11.0.5) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + rehype-katex: 7.0.1 + remark-gfm: 4.0.0 + remark-math: 6.0.0 + remark-smartypants: 3.0.2 + shiki: 3.22.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - '@types/react' + - supports-color + - typescript + + '@mintlify/models@0.0.255': + dependencies: + axios: 1.10.0 + openapi-types: 12.1.3 + transitivePeerDependencies: + - debug + + '@mintlify/models@0.0.274': + dependencies: + axios: 1.13.2 + openapi-types: 12.1.3 + transitivePeerDependencies: + - debug + + '@mintlify/openapi-parser@0.0.8': + dependencies: + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv-formats: 3.0.1(ajv@8.18.0) + jsonpointer: 5.0.1 + leven: 4.1.0 + yaml: 2.8.2 + + '@mintlify/prebuild@1.0.886(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/common': 1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/openapi-parser': 0.0.8 + '@mintlify/scraping': 4.0.611(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + chalk: 5.3.0 + favicons: 7.2.0 + front-matter: 4.0.2 + fs-extra: 11.1.0 + js-yaml: 4.1.0 + openapi-types: 12.1.3 + sharp: 0.33.5 + sharp-ico: 0.1.5 + unist-util-visit: 4.1.2 + uuid: 11.1.0 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/previewing@4.0.943(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': + dependencies: + '@mintlify/common': 1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/prebuild': 1.0.886(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + better-opn: 3.0.2 + chalk: 5.2.0 + chokidar: 3.5.3 + express: 4.18.2 + front-matter: 4.0.2 + fs-extra: 11.1.0 + got: 13.0.0 + ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) + ink-spinner: 5.0.0(ink@6.3.0(@types/react@19.2.14)(react@19.2.3))(react@19.2.3) + is-online: 10.0.0 + js-yaml: 4.1.0 + openapi-types: 12.1.3 + react: 19.2.3 + socket.io: 4.7.2 + tar: 6.1.15 + unist-util-visit: 4.1.2 + yargs: 17.7.1 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react-devtools-core + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/scraping@4.0.522(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/common': 1.0.661(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/openapi-parser': 0.0.8 + fs-extra: 11.1.1 + hast-util-to-mdast: 10.1.0 + js-yaml: 4.1.0 + mdast-util-mdx-jsx: 3.1.3 + neotraverse: 0.6.18 + puppeteer: 22.14.0(typescript@5.9.3) + rehype-parse: 9.0.1 + remark-gfm: 4.0.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + yargs: 17.7.1 + zod: 3.21.4 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/scraping@4.0.611(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/common': 1.0.749(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/openapi-parser': 0.0.8 + fs-extra: 11.1.1 + hast-util-to-mdast: 10.1.0 + js-yaml: 4.1.0 + mdast-util-mdx-jsx: 3.1.3 + neotraverse: 0.6.18 + puppeteer: 22.14.0(typescript@5.9.3) + rehype-parse: 9.0.1 + remark-gfm: 4.0.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + yargs: 17.7.1 + zod: 3.24.0 + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate + + '@mintlify/validation@0.1.555(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.255 + arktype: 2.1.27 + js-yaml: 4.1.0 + lcm: 0.0.3 + lodash: 4.17.21 + object-hash: 3.0.0 + openapi-types: 12.1.3 + uuid: 11.1.0 + zod: 3.21.4 + zod-to-json-schema: 3.20.4(zod@3.21.4) + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - debug + - react + - react-dom + - supports-color + - typescript + + '@mintlify/validation@0.1.605(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.274 + arktype: 2.1.27 + js-yaml: 4.1.0 + lcm: 0.0.3 + lodash: 4.17.21 + object-hash: 3.0.0 + openapi-types: 12.1.3 + uuid: 11.1.0 + zod: 3.24.0 + zod-to-json-schema: 3.20.4(zod@3.24.0) + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/react' + - debug + - react + - react-dom + - supports-color + - typescript + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@openapi-contrib/openapi-schema-to-json-schema@3.2.0': + dependencies: + fast-deep-equal: 3.1.3 + + '@puppeteer/browsers@2.3.0': + dependencies: + debug: 4.4.3 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.1.1 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + - supports-color + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-arrow@1.1.7(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-scope@1.1.7(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-popper@1.2.8(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-arrow': 1.1.7(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-portal@1.1.9(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-presence@1.1.5(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-primitive@2.1.3(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/rect@1.1.1': {} + + '@shikijs/core@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@2.5.0': + '@shikijs/engine-javascript@3.22.0': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 3.1.1 + oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@2.5.0': + '@shikijs/engine-oniguruma@3.22.0': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@2.5.0': + '@shikijs/langs@3.22.0': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.22.0 - '@shikijs/themes@2.5.0': + '@shikijs/themes@3.22.0': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.22.0 - '@shikijs/transformers@2.5.0': + '@shikijs/transformers@3.22.0': dependencies: - '@shikijs/core': 2.5.0 - '@shikijs/types': 2.5.0 + '@shikijs/core': 3.22.0 + '@shikijs/types': 3.22.0 - '@shikijs/types@2.5.0': + '@shikijs/twoslash@3.22.0(typescript@5.9.3)': + dependencies: + '@shikijs/core': 3.22.0 + '@shikijs/types': 3.22.0 + twoslash: 0.3.6(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@shikijs/types@3.22.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} - '@swc/helpers@0.5.17': + '@sindresorhus/is@5.6.0': {} + + '@sindresorhus/slugify@2.2.0': dependencies: + '@sindresorhus/transliterate': 1.6.0 + escape-string-regexp: 5.0.0 + + '@sindresorhus/transliterate@1.6.0': + dependencies: + escape-string-regexp: 5.0.0 + + '@socket.io/component-emitter@3.1.2': {} + + '@stoplight/better-ajv-errors@1.0.3(ajv@8.18.0)': + dependencies: + ajv: 8.18.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@stoplight/json-ref-readers@1.2.2': + dependencies: + node-fetch: 2.6.7 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + + '@stoplight/json-ref-resolver@3.1.6': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + '@types/urijs': 1.19.26 + dependency-graph: 0.11.0 + fast-memoize: 2.5.2 + immer: 9.0.21 + lodash: 4.17.21 + tslib: 2.8.1 + urijs: 1.19.11 + + '@stoplight/json@3.21.0': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + jsonc-parser: 2.2.1 + lodash: 4.17.21 + safe-stable-stringify: 1.1.1 + + '@stoplight/ordered-object-literal@1.0.5': {} + + '@stoplight/path@1.3.2': {} + + '@stoplight/spectral-core@1.21.0': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.18.0) + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5 + '@stoplight/spectral-runtime': 1.1.4 + '@stoplight/types': 13.6.0 + '@types/es-aggregate-error': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 8.18.0 + ajv-errors: 3.0.0(ajv@8.18.0) + ajv-formats: 2.1.1(ajv@8.18.0) + es-aggregate-error: 1.0.14 + jsonpath-plus: 10.4.0 + lodash: 4.17.23 + lodash.topath: 4.5.2 + minimatch: 3.1.2 + nimma: 0.2.3 + pony-cause: 1.1.1 + simple-eval: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-formats@1.8.2': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/spectral-core': 1.21.0 + '@types/json-schema': 7.0.15 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-functions@1.10.1': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.18.0) + '@stoplight/json': 3.21.0 + '@stoplight/spectral-core': 1.21.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-runtime': 1.1.4 + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv-errors: 3.0.0(ajv@8.18.0) + ajv-formats: 2.1.1(ajv@8.18.0) + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-parsers@1.0.5': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/types': 14.1.1 + '@stoplight/yaml': 4.3.0 tslib: 2.8.1 - '@tanstack/virtual-core@3.13.12': {} - - '@tanstack/vue-virtual@3.13.12(vue@3.5.22)': + '@stoplight/spectral-ref-resolver@1.0.5': dependencies: - '@tanstack/virtual-core': 3.13.12 - vue: 3.5.22 + '@stoplight/json-ref-readers': 1.2.2 + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-runtime': 1.1.4 + dependency-graph: 0.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding - '@types/d3-array@3.2.2': {} - - '@types/d3-axis@3.0.6': + '@stoplight/spectral-runtime@1.1.4': dependencies: - '@types/d3-selection': 3.0.11 + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + abort-controller: 3.0.0 + lodash: 4.17.21 + node-fetch: 2.7.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding - '@types/d3-brush@3.0.6': + '@stoplight/types@13.20.0': dependencies: - '@types/d3-selection': 3.0.11 + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 - '@types/d3-chord@3.0.6': {} - - '@types/d3-color@3.1.3': {} - - '@types/d3-contour@3.0.6': + '@stoplight/types@13.6.0': dependencies: - '@types/d3-array': 3.2.2 - '@types/geojson': 7946.0.16 + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 - '@types/d3-delaunay@6.0.4': {} - - '@types/d3-dispatch@3.0.7': {} - - '@types/d3-drag@3.0.7': + '@stoplight/types@14.1.1': dependencies: - '@types/d3-selection': 3.0.11 + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 - '@types/d3-dsv@3.0.7': {} + '@stoplight/yaml-ast-parser@0.0.50': {} - '@types/d3-ease@3.0.2': {} - - '@types/d3-fetch@3.0.7': + '@stoplight/yaml@4.3.0': dependencies: - '@types/d3-dsv': 3.0.7 + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/types': 14.1.1 + '@stoplight/yaml-ast-parser': 0.0.50 + tslib: 2.8.1 - '@types/d3-force@3.0.10': {} - - '@types/d3-format@3.0.4': {} - - '@types/d3-geo@3.1.0': + '@szmarczak/http-timer@5.0.1': dependencies: - '@types/geojson': 7946.0.16 + defer-to-connect: 2.0.1 - '@types/d3-hierarchy@3.1.7': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} - '@types/d3-interpolate@3.0.4': + '@types/acorn@4.0.6': dependencies: - '@types/d3-color': 3.1.3 + '@types/estree': 1.0.8 - '@types/d3-path@3.1.1': {} + '@types/cookie@0.4.1': {} - '@types/d3-polygon@3.0.2': {} - - '@types/d3-quadtree@3.0.6': {} - - '@types/d3-random@3.0.3': {} - - '@types/d3-scale-chromatic@3.1.0': {} - - '@types/d3-scale@4.0.9': + '@types/cors@2.8.19': dependencies: - '@types/d3-time': 3.0.4 + '@types/node': 25.3.0 - '@types/d3-selection@3.0.11': {} - - '@types/d3-shape@3.1.7': + '@types/debug@4.1.12': dependencies: - '@types/d3-path': 3.1.1 + '@types/ms': 2.1.0 - '@types/d3-time-format@4.0.3': {} - - '@types/d3-time@3.0.4': {} - - '@types/d3-timer@3.0.2': {} - - '@types/d3-transition@3.0.9': + '@types/es-aggregate-error@1.0.6': dependencies: - '@types/d3-selection': 3.0.11 + '@types/node': 25.3.0 - '@types/d3-zoom@3.0.8': + '@types/estree-jsx@1.0.5': dependencies: - '@types/d3-interpolate': 3.0.4 - '@types/d3-selection': 3.0.11 - - '@types/d3@7.4.3': - dependencies: - '@types/d3-array': 3.2.2 - '@types/d3-axis': 3.0.6 - '@types/d3-brush': 3.0.6 - '@types/d3-chord': 3.0.6 - '@types/d3-color': 3.1.3 - '@types/d3-contour': 3.0.6 - '@types/d3-delaunay': 6.0.4 - '@types/d3-dispatch': 3.0.7 - '@types/d3-drag': 3.0.7 - '@types/d3-dsv': 3.0.7 - '@types/d3-ease': 3.0.2 - '@types/d3-fetch': 3.0.7 - '@types/d3-force': 3.0.10 - '@types/d3-format': 3.0.4 - '@types/d3-geo': 3.1.0 - '@types/d3-hierarchy': 3.1.7 - '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.1.1 - '@types/d3-polygon': 3.0.2 - '@types/d3-quadtree': 3.0.6 - '@types/d3-random': 3.0.3 - '@types/d3-scale': 4.0.9 - '@types/d3-scale-chromatic': 3.1.0 - '@types/d3-selection': 3.0.11 - '@types/d3-shape': 3.1.7 - '@types/d3-time': 3.0.4 - '@types/d3-time-format': 4.0.3 - '@types/d3-timer': 3.0.2 - '@types/d3-transition': 3.0.9 - '@types/d3-zoom': 3.0.8 + '@types/estree': 1.0.8 '@types/estree@1.0.8': {} - '@types/geojson@7946.0.16': {} - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 - '@types/linkify-it@5.0.0': {} + '@types/http-cache-semantics@4.2.0': {} - '@types/markdown-it@14.1.2': - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 + '@types/json-schema@7.0.15': {} + + '@types/katex@0.16.8': {} '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - '@types/mdurl@2.0.0': {} + '@types/mdx@2.0.13': {} - '@types/trusted-types@2.0.7': - optional: true + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@25.3.0': + dependencies: + undici-types: 7.18.2 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} - '@types/web-bluetooth@0.0.21': {} + '@types/urijs@1.19.26': {} + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 25.3.0 + optional: true + + '@typescript/vfs@1.6.4(typescript@5.9.3)': + dependencies: + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.21)(vue@3.5.22)': + abort-controller@3.0.0: dependencies: - vite: 5.4.21 - vue: 3.5.22 + event-target-shim: 5.0.1 - '@vue/compiler-core@3.5.22': + accepts@1.3.8: dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.22 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 + mime-types: 2.1.35 + negotiator: 0.6.3 - '@vue/compiler-dom@3.5.22': + acorn-jsx@5.3.2(acorn@8.11.2): dependencies: - '@vue/compiler-core': 3.5.22 - '@vue/shared': 3.5.22 + acorn: 8.11.2 - '@vue/compiler-sfc@3.5.22': + acorn@8.11.2: {} + + address@1.2.2: {} + + adm-zip@0.5.16: {} + + agent-base@7.1.4: {} + + aggregate-error@4.0.1: dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.22 - '@vue/compiler-dom': 3.5.22 - '@vue/compiler-ssr': 3.5.22 - '@vue/shared': 3.5.22 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.6 - source-map-js: 1.2.1 + clean-stack: 4.2.0 + indent-string: 5.0.0 - '@vue/compiler-ssr@3.5.22': - dependencies: - '@vue/compiler-dom': 3.5.22 - '@vue/shared': 3.5.22 - - '@vue/devtools-api@7.7.7': - dependencies: - '@vue/devtools-kit': 7.7.7 - - '@vue/devtools-kit@7.7.7': - dependencies: - '@vue/devtools-shared': 7.7.7 - birpc: 2.7.0 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.5 - - '@vue/devtools-shared@7.7.7': - dependencies: - rfdc: 1.4.1 - - '@vue/reactivity@3.5.22': - dependencies: - '@vue/shared': 3.5.22 - - '@vue/runtime-core@3.5.22': - dependencies: - '@vue/reactivity': 3.5.22 - '@vue/shared': 3.5.22 - - '@vue/runtime-dom@3.5.22': - dependencies: - '@vue/reactivity': 3.5.22 - '@vue/runtime-core': 3.5.22 - '@vue/shared': 3.5.22 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.22(vue@3.5.22)': - dependencies: - '@vue/compiler-ssr': 3.5.22 - '@vue/shared': 3.5.22 - vue: 3.5.22 - - '@vue/shared@3.5.22': {} - - '@vueuse/core@12.8.2': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2 - vue: 3.5.22 - transitivePeerDependencies: - - typescript - - '@vueuse/core@13.9.0(vue@3.5.22)': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 13.9.0 - '@vueuse/shared': 13.9.0(vue@3.5.22) - vue: 3.5.22 - - '@vueuse/integrations@12.8.2(focus-trap@7.6.6)': - dependencies: - '@vueuse/core': 12.8.2 - '@vueuse/shared': 12.8.2 - vue: 3.5.22 + ajv-draft-04@1.0.0(ajv@8.18.0): optionalDependencies: - focus-trap: 7.6.6 - transitivePeerDependencies: - - typescript + ajv: 8.18.0 - '@vueuse/metadata@12.8.2': {} - - '@vueuse/metadata@13.9.0': {} - - '@vueuse/shared@12.8.2': + ajv-errors@3.0.0(ajv@8.18.0): dependencies: - vue: 3.5.22 - transitivePeerDependencies: - - typescript + ajv: 8.18.0 - '@vueuse/shared@13.9.0(vue@3.5.22)': + ajv-formats@2.1.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv-formats@3.0.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv@8.18.0: dependencies: - vue: 3.5.22 + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 - acorn@8.15.0: {} - - algoliasearch@5.42.0: + ansi-escapes@4.3.2: dependencies: - '@algolia/abtesting': 1.8.0 - '@algolia/client-abtesting': 5.42.0 - '@algolia/client-analytics': 5.42.0 - '@algolia/client-common': 5.42.0 - '@algolia/client-insights': 5.42.0 - '@algolia/client-personalization': 5.42.0 - '@algolia/client-query-suggestions': 5.42.0 - '@algolia/client-search': 5.42.0 - '@algolia/ingestion': 1.42.0 - '@algolia/monitoring': 1.42.0 - '@algolia/recommend': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + type-fest: 0.21.3 + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} aria-hidden@1.2.6: dependencies: tslib: 2.8.1 - birpc@2.7.0: {} + arkregex@0.0.3: + dependencies: + '@ark/util': 0.55.0 + + arkregex@0.0.5: + dependencies: + '@ark/util': 0.56.0 + + arktype@2.1.27: + dependencies: + '@ark/schema': 0.55.0 + '@ark/util': 0.55.0 + arkregex: 0.0.3 + + arktype@2.1.29: + dependencies: + '@ark/schema': 0.56.0 + '@ark/util': 0.56.0 + arkregex: 0.0.5 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-flatten@1.1.1: {} + + array-iterate@2.0.1: {} + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + + astring@1.9.0: {} + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + auto-bind@5.0.1: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + avsc@5.7.9: {} + + axios@1.10.0: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.13.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b4a@1.8.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + bare-events@2.8.2: {} + + bare-fs@4.5.4: + dependencies: + bare-events: 2.8.2 + bare-path: 3.0.0 + bare-stream: 2.8.0(bare-events@2.8.2) + bare-url: 2.3.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-os@3.6.2: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.2 + optional: true + + bare-stream@2.8.0(bare-events@2.8.2): + dependencies: + streamx: 2.23.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-url@2.3.2: + dependencies: + bare-path: 3.0.0 + optional: true + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + basic-ftp@5.1.0: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + binary-extensions@2.3.0: {} + + body-parser@1.20.1: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + buffer-crc32@0.2.13: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.2.0 + get-stream: 6.0.1 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.1.1 + responselike: 3.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} ccount@2.0.1: {} + chalk@5.2.0: {} + + chalk@5.3.0: {} + + chalk@5.6.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.21 + character-entities@2.0.2: {} - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 + character-reference-invalid@2.0.1: {} - class-variance-authority@0.7.1: - dependencies: - clsx: 2.1.1 + chardet@2.1.1: {} - clsx@2.1.1: {} + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@2.0.0: {} + + chromium-bidi@0.6.2(devtools-protocol@0.0.1312386): + dependencies: + devtools-protocol: 0.0.1312386 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + + clean-stack@4.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + cli-boxes@3.0.0: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + code-excerpt@4.0.0: + dependencies: + convert-to-spaces: 2.0.1 + + collapse-white-space@2.1.0: {} + + color-blend@4.0.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 comma-separated-tokens@2.0.3: {} - commander@7.2.0: {} + commander@4.1.1: {} commander@8.3.0: {} - confbox@0.1.8: {} + concat-map@0.0.1: {} - confbox@0.2.2: {} - - copy-anything@4.0.5: + content-disposition@0.5.4: dependencies: - is-what: 5.5.0 + safe-buffer: 5.2.1 - cose-base@1.0.3: + content-type@1.0.5: {} + + convert-to-spaces@2.0.1: {} + + cookie-signature@1.0.6: {} + + cookie@0.4.2: {} + + cookie@0.5.0: {} + + cors@2.8.6: dependencies: - layout-base: 1.0.2 + object-assign: 4.1.1 + vary: 1.1.2 - cose-base@2.2.0: + cosmiconfig@9.0.0(typescript@5.9.3): dependencies: - layout-base: 2.0.1 + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 - csstype@3.1.3: {} + cssesc@3.0.0: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + csstype@3.2.3: {} + + data-uri-to-buffer@6.0.2: {} + + data-view-buffer@1.0.2: dependencies: - cose-base: 1.0.3 - cytoscape: 3.33.1 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - cytoscape-fcose@2.2.0(cytoscape@3.33.1): + data-view-byte-length@1.0.2: dependencies: - cose-base: 2.2.0 - cytoscape: 3.33.1 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - cytoscape@3.33.1: {} - - d3-array@2.12.1: + data-view-byte-offset@1.0.1: dependencies: - internmap: 1.0.1 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - d3-array@3.2.4: + debug@2.6.9: dependencies: - internmap: 2.0.3 + ms: 2.0.0 - d3-axis@3.0.0: {} - - d3-brush@3.0.0: + debug@4.3.7: dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3-chord@3.0.1: - dependencies: - d3-path: 3.1.0 - - d3-color@3.1.0: {} - - d3-contour@4.0.2: - dependencies: - d3-array: 3.2.4 - - d3-delaunay@6.0.4: - dependencies: - delaunator: 5.0.1 - - d3-dispatch@3.0.1: {} - - d3-drag@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - - d3-dsv@3.0.1: - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - - d3-ease@3.0.1: {} - - d3-fetch@3.0.1: - dependencies: - d3-dsv: 3.0.1 - - d3-force@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - - d3-format@3.1.0: {} - - d3-geo@3.1.1: - dependencies: - d3-array: 3.2.4 - - d3-hierarchy@3.1.2: {} - - d3-interpolate@3.0.1: - dependencies: - d3-color: 3.1.0 - - d3-path@1.0.9: {} - - d3-path@3.1.0: {} - - d3-polygon@3.0.1: {} - - d3-quadtree@3.0.1: {} - - d3-random@3.0.1: {} - - d3-sankey@0.12.3: - dependencies: - d3-array: 2.12.1 - d3-shape: 1.3.7 - - d3-scale-chromatic@3.1.0: - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - - d3-scale@4.0.2: - dependencies: - d3-array: 3.2.4 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - - d3-selection@3.0.0: {} - - d3-shape@1.3.7: - dependencies: - d3-path: 1.0.9 - - d3-shape@3.2.0: - dependencies: - d3-path: 3.1.0 - - d3-time-format@4.1.0: - dependencies: - d3-time: 3.1.0 - - d3-time@3.1.0: - dependencies: - d3-array: 3.2.4 - - d3-timer@3.0.1: {} - - d3-transition@3.0.1(d3-selection@3.0.0): - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - - d3-zoom@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3@7.9.0: - dependencies: - d3-array: 3.2.4 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.2 - d3-delaunay: 6.0.4 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.1 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.1.0 - d3-selection: 3.0.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - - dagre-d3-es@7.0.13: - dependencies: - d3: 7.9.0 - lodash-es: 4.17.21 - - dayjs@1.11.19: {} + ms: 2.1.3 debug@4.4.3: dependencies: ms: 2.1.3 - defu@6.1.4: {} - - delaunator@5.0.1: + decode-bmp@0.2.1: dependencies: - robust-predicates: 3.0.2 + '@canvas/image-data': 1.1.0 + to-data-view: 1.1.0 + + decode-ico@0.4.1: + dependencies: + '@canvas/image-data': 1.1.0 + decode-bmp: 0.2.1 + to-data-view: 1.1.0 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dependency-graph@0.11.0: {} dequal@2.0.3: {} + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + detect-port@1.5.1: + dependencies: + address: 1.2.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + devlop@1.1.0: dependencies: dequal: 2.0.3 - dompurify@3.3.0: - optionalDependencies: - '@types/trusted-types': 2.0.7 + devtools-protocol@0.0.1312386: {} - emoji-regex-xs@1.0.0: {} + didyoumean@1.2.2: {} - entities@4.5.0: {} + dlv@1.1.3: {} - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - estree-walker@2.0.2: {} - - exsolve@1.0.7: {} - - focus-trap@7.6.6: + dns-packet@5.6.1: dependencies: - tabbable: 6.3.0 + '@leichtgewicht/ip-codec': 2.0.5 + + dns-socket@4.2.2: + dependencies: + dns-packet: 5.6.1 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ee-first@1.1.1: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + engine.io-parser@5.2.3: {} + + engine.io@6.5.5: + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.19 + '@types/node': 25.3.0 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.6 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + entities@6.0.1: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.1: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-aggregate-error@1.0.14: + dependencies: + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + function-bind: 1.1.2 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + set-function-name: 2.0.2 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es-toolkit@1.44.0: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.11.2 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + events-universal@1.0.1: + dependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + + express@4.18.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend@3.0.2: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-memoize@2.5.2: {} + + fast-uri@3.1.0: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + favicons@7.2.0: + dependencies: + escape-html: 1.0.3 + sharp: 0.33.5 + xml2js: 0.6.2 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + form-data-encoder@2.1.4: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + format@0.2.2: {} + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + front-matter@4.0.2: + dependencies: + js-yaml: 3.14.2 + + fs-extra@11.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@11.1.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 fsevents@2.3.3: optional: true - globals@15.15.0: {} + function-bind@1.1.2: {} - hachure-fill@0.5.2: {} + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gcd@0.0.1: {} + + generator-function@2.0.1: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.5.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-uri@6.0.5: + dependencies: + basic-ftp: 5.1.0 + data-uri-to-buffer: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + got@13.0.0: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-embedded@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-is-element: 3.0.0 + + hast-util-from-dom@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hastscript: 9.0.1 + web-namespaces: 2.0.1 + + hast-util-from-html-isomorphic@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.1 + hast-util-from-html: 2.0.3 + unist-util-remove-position: 5.0.0 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-minify-whitespace@1.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-has-property: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 + hast-util-is-element: 3.0.0 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 hast-util-to-html@9.0.5: dependencies: @@ -2366,73 +5957,637 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-mdast@10.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-phrasing: 3.0.1 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hast-util-whitespace: 3.0.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-hast: 13.2.1 + mdast-util-to-string: 4.0.0 + rehype-minify-whitespace: 6.0.2 + trim-trailing-lines: 2.1.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 - hookable@5.5.3: {} + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + hex-rgb@5.0.0: {} html-void-elements@3.0.0: {} - iconv-lite@0.6.3: + http-cache-semantics@4.2.0: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + ico-endec@0.1.6: {} + + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - internmap@1.0.1: {} + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 - internmap@2.0.3: {} + ieee754@1.2.1: {} - is-what@5.5.0: {} + ignore@7.0.5: {} - katex@0.16.25: + immer@9.0.21: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + indent-string@5.0.0: {} + + inherits@2.0.4: {} + + ink-spinner@5.0.0(ink@6.3.0(@types/react@19.2.14)(react@19.2.3))(react@19.2.3): + dependencies: + cli-spinners: 2.9.2 + ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + + ink@6.3.0(@types/react@19.2.14)(react@19.2.3): + dependencies: + '@alcalzone/ansi-tokenize': 0.2.5 + ansi-escapes: 7.3.0 + ansi-styles: 6.2.3 + auto-bind: 5.0.1 + chalk: 5.6.2 + cli-boxes: 3.0.0 + cli-cursor: 4.0.0 + cli-truncate: 4.0.0 + code-excerpt: 4.0.0 + es-toolkit: 1.44.0 + indent-string: 5.0.0 + is-in-ci: 2.0.0 + patch-console: 2.0.0 + react: 19.2.3 + react-reconciler: 0.32.0(react@19.2.3) + signal-exit: 3.0.7 + slice-ansi: 7.1.2 + stack-utils: 2.0.6 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.2 + ws: 8.19.0 + yoga-layout: 3.2.1 + optionalDependencies: + '@types/react': 19.2.14 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + inline-style-parser@0.2.7: {} + + inquirer@12.3.0(@types/node@25.3.0): + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/prompts': 7.9.0(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + '@types/node': 25.3.0 + ansi-escapes: 4.3.2 + mute-stream: 2.0.0 + run-async: 3.0.0 + rxjs: 7.8.2 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + ip-address@10.1.0: {} + + ip-regex@4.3.0: {} + + ipaddr.js@1.9.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.4: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.5.0 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-in-ci@2.0.0: {} + + is-ip@3.1.0: + dependencies: + ip-regex: 4.3.0 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-online@10.0.0: + dependencies: + got: 12.6.1 + p-any: 4.0.0 + p-timeout: 5.1.0 + public-ip: 5.0.0 + + is-plain-obj@4.1.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@2.0.5: {} + + jiti@1.21.7: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsep@1.4.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + jsonc-parser@2.2.1: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpath-plus@10.4.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + + jsonpointer@5.0.1: {} + + katex@0.16.28: dependencies: commander: 8.3.0 - khroma@2.1.0: {} - - kolorist@1.8.0: {} - - langium@3.3.1: + keyv@4.5.4: dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 + json-buffer: 3.0.1 - layout-base@1.0.2: {} - - layout-base@2.0.1: {} - - local-pkg@1.1.2: + lcm@0.0.3: dependencies: - mlly: 1.8.0 - pkg-types: 2.3.0 - quansync: 0.2.11 + gcd: 0.0.1 - lodash-es@4.17.21: {} + leven@3.1.0: {} - lucide-vue-next@0.503.0(vue@3.5.22): + leven@4.1.0: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lodash.topath@4.5.2: {} + + lodash@4.17.21: {} + + lodash@4.17.23: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: dependencies: - vue: 3.5.22 + js-tokens: 4.0.0 - magic-string@0.30.21: + lowercase-keys@3.0.0: {} + + lru-cache@7.18.3: {} + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.1 - mark.js@8.11.1: {} + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color - markdown-it-link-attributes@4.0.1: {} + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color - marked@16.4.1: {} + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color - mdast-util-to-hast@13.2.0: + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.3: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -2444,99 +6599,605 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 - mermaid@11.12.1: + mdast-util-to-markdown@2.1.2: dependencies: - '@braintree/sanitize-url': 7.1.1 - '@iconify/utils': 3.0.2 - '@mermaid-js/parser': 0.6.3 - '@types/d3': 7.4.3 - cytoscape: 3.33.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) - cytoscape-fcose: 2.2.0(cytoscape@3.33.1) - d3: 7.9.0 - d3-sankey: 0.12.3 - dagre-d3-es: 7.0.13 - dayjs: 1.11.19 - dompurify: 3.3.0 - katex: 0.16.25 - khroma: 2.1.0 - lodash-es: 4.17.21 - marked: 16.4.1 - roughjs: 4.6.6 - stylis: 4.3.6 - ts-dedent: 2.2.0 - uuid: 11.1.0 - transitivePeerDependencies: - - supports-color + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + media-typer@0.3.0: {} + + merge-descriptors@1.0.1: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.8 + devlop: 1.1.0 + katex: 0.16.28 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.1: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-encode@2.0.1: {} + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + micromark-util-sanitize-uri@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-symbol@2.0.1: {} micromark-util-types@2.0.2: {} - minisearch@7.2.0: {} + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mintlify@4.2.375(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.0)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3): + dependencies: + '@mintlify/cli': 4.0.978(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.0)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + transitivePeerDependencies: + - '@radix-ui/react-popover' + - '@types/node' + - '@types/react' + - bare-abort-controller + - bare-buffer + - bufferutil + - debug + - encoding + - react-devtools-core + - react-dom + - react-native-b4a + - supports-color + - ts-node + - typescript + - utf-8-validate mitt@3.0.1: {} - mlly@1.8.0: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 + mkdirp@1.0.4: {} + + ms@2.0.0: {} ms@2.1.3: {} + mute-stream@2.0.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.11: {} - ohash@2.0.11: {} + negotiator@0.6.3: {} - oniguruma-to-es@3.1.1: + neotraverse@0.6.18: {} + + netmask@2.0.2: {} + + next-mdx-remote-client@1.1.6(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(unified@11.0.5): dependencies: - emoji-regex-xs: 1.0.0 - regex: 6.0.1 + '@babel/code-frame': 7.29.0 + '@mdx-js/mdx': 3.1.1 + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.3) + react: 19.2.3 + react-dom: 18.3.1(react@19.2.3) + remark-mdx-remove-esm: 1.2.3(unified@11.0.5) + serialize-error: 13.0.1 + vfile: 6.0.3 + vfile-matter: 5.0.1 + transitivePeerDependencies: + - '@types/react' + - supports-color + - unified + + nimma@0.2.3: + dependencies: + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + '@jsep-plugin/ternary': 1.1.4(jsep@1.4.0) + astring: 1.9.0 + jsep: 1.4.0 + optionalDependencies: + jsonpath-plus: 10.4.0 + lodash.topath: 4.5.2 + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-fetch@2.6.7: + dependencies: + whatwg-url: 5.0.0 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + non-error@0.1.0: {} + + normalize-path@3.0.0: {} + + normalize-url@8.1.1: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 regex-recursion: 6.0.2 - package-manager-detector@1.5.0: {} + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 - path-data-parser@0.1.0: {} + openapi-types@12.1.3: {} - pathe@2.0.3: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 - perfect-debounce@1.0.0: {} + p-any@4.0.0: + dependencies: + p-cancelable: 3.0.0 + p-some: 6.0.0 + + p-cancelable@3.0.0: {} + + p-some@6.0.0: + dependencies: + aggregate-error: 4.0.1 + p-cancelable: 3.0.0 + + p-timeout@5.1.0: {} + + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.3 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseurl@1.3.3: {} + + patch-console@2.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.7: {} + + pend@1.2.0: {} picocolors@1.1.1: {} - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.0 - pathe: 2.0.3 + picomatch@2.3.1: {} - pkg-types@2.3.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 - pathe: 2.0.3 + picomatch@4.0.3: {} - points-on-curve@0.2.0: {} + pify@2.3.0: {} - points-on-path@0.2.1: + pirates@4.0.7: {} + + pony-cause@1.1.1: {} + + possible-typed-array-names@1.1.0: {} + + postcss-import@15.1.0(postcss@8.5.6): dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.11 + + postcss-js@4.1.0(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@4.0.2(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.2 + optionalDependencies: + postcss: 8.5.6 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} postcss@8.5.6: dependencies: @@ -2544,11 +7205,177 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.27.2: {} + progress@2.0.3: {} + + property-information@6.5.0: {} property-information@7.1.0: {} - quansync@0.2.11: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + public-ip@5.0.0: + dependencies: + dns-socket: 4.2.2 + got: 12.6.1 + is-ip: 3.1.0 + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + puppeteer-core@22.14.0: + dependencies: + '@puppeteer/browsers': 2.3.0 + chromium-bidi: 0.6.2(devtools-protocol@0.0.1312386) + debug: 4.4.3 + devtools-protocol: 0.0.1312386 + ws: 8.19.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - utf-8-validate + + puppeteer@22.14.0(typescript@5.9.3): + dependencies: + '@puppeteer/browsers': 2.3.0 + cosmiconfig: 9.0.0(typescript@5.9.3) + devtools-protocol: 0.0.1312386 + puppeteer-core: 22.14.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - typescript + - utf-8-validate + + qs@6.11.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + range-parser@1.2.1: {} + + raw-body@2.5.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-dom@18.3.1(react@19.2.3): + dependencies: + loose-envify: 1.4.0 + react: 19.2.3 + scheduler: 0.23.2 + + react-reconciler@0.32.0(react@19.2.3): + dependencies: + react: 19.2.3 + scheduler: 0.26.0 + + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.3): + dependencies: + react: 19.2.3 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.3) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.3): + dependencies: + react: 19.2.3 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.3) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.3) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.3) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.14 + + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.3): + dependencies: + get-nonce: 1.0.1 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react@19.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.11.2): + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 regex-recursion@6.0.2: dependencies: @@ -2556,137 +7383,848 @@ snapshots: regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 - reka-ui@2.6.0(vue@3.5.22): + regexp.prototype.flags@1.5.4: dependencies: - '@floating-ui/dom': 1.7.4 - '@floating-ui/vue': 1.1.9(vue@3.5.22) - '@internationalized/date': 3.10.0 - '@internationalized/number': 3.6.5 - '@tanstack/vue-virtual': 3.13.12(vue@3.5.22) - '@vueuse/core': 12.8.2 - '@vueuse/shared': 12.8.2 - aria-hidden: 1.2.6 - defu: 6.1.4 - ohash: 2.0.11 - vue: 3.5.22 - transitivePeerDependencies: - - '@vue/composition-api' - - typescript + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 - rfdc@1.4.1: {} + rehype-katex@7.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/katex': 0.16.8 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 + katex: 0.16.28 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 - robust-predicates@3.0.2: {} + rehype-minify-whitespace@6.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-minify-whitespace: 1.0.1 - rollup@4.52.5: + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 - fsevents: 2.3.3 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color - roughjs@4.6.6: + rehype-stringify@10.0.1: dependencies: - hachure-fill: 0.5.2 - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - points-on-path: 0.2.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + unified: 11.0.5 - rw@1.3.3: {} + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-math@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.1.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx-remove-esm@1.2.3(unified@11.0.5): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-mdxjs-esm: 2.0.1 + unified: 11.0.5 + unist-util-remove: 4.0.0 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.0.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.0: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remark@15.0.1: + dependencies: + '@types/mdast': 4.0.4 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-alpn@1.2.1: {} + + resolve-from@4.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + reusify@1.1.0: {} + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@1.1.1: {} safer-buffer@2.1.2: {} - search-insights@2.17.3: {} + sax@1.4.4: {} - shiki@2.5.0: + scheduler@0.23.2: dependencies: - '@shikijs/core': 2.5.0 - '@shikijs/engine-javascript': 2.5.0 - '@shikijs/engine-oniguruma': 2.5.0 - '@shikijs/langs': 2.5.0 - '@shikijs/themes': 2.5.0 - '@shikijs/types': 2.5.0 + loose-envify: 1.4.0 + + scheduler@0.26.0: {} + + semver@7.7.2: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-error@13.0.1: + dependencies: + non-error: 0.1.0 + type-fest: 5.4.4 + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.2.0: {} + + sharp-ico@0.1.5: + dependencies: + decode-ico: 0.4.1 + ico-endec: 0.1.6 + sharp: 0.33.5 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.1.2 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + shiki@3.22.0: + dependencies: + '@shikijs/core': 3.22.0 + '@shikijs/engine-javascript': 3.22.0 + '@shikijs/engine-oniguruma': 3.22.0 + '@shikijs/langs': 3.22.0 + '@shikijs/themes': 3.22.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-eval@1.0.1: + dependencies: + jsep: 1.4.0 + + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + smart-buffer@4.2.0: {} + + socket.io-adapter@2.5.6: + dependencies: + debug: 4.4.3 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.5: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + socket.io@4.7.2: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.6 + debug: 4.3.7 + engine.io: 6.5.5 + socket.io-adapter: 2.5.6 + socket.io-parser: 4.2.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.1.0 + smart-buffer: 4.2.0 + source-map-js@1.2.1: {} + source-map@0.6.1: + optional: true + + source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} - speakingurl@14.0.1: {} + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + streamx@2.23.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - stylis@4.3.6: {} - - superjson@2.2.5: + strip-ansi@6.0.1: dependencies: - copy-anything: 4.0.5 + ansi-regex: 5.0.1 - tabbable@6.3.0: {} + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 - tinyexec@1.0.2: {} + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + + supports-preserve-symlinks-flag@1.0.0: {} + + tagged-tag@1.0.0: {} + + tailwindcss@3.4.4: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.1.0(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.11 + sucrase: 3.35.1 + transitivePeerDependencies: + - ts-node + + tar-fs@3.1.1: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.5.4 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + tar-stream@3.1.7: + dependencies: + b4a: 1.8.0 + fast-fifo: 1.3.2 + streamx: 2.23.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + tar@6.1.15: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + teex@1.0.1: + dependencies: + streamx: 2.23.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + text-decoder@1.2.7: + dependencies: + b4a: 1.8.0 + transitivePeerDependencies: + - react-native-b4a + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-data-view@1.1.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} trim-lines@3.0.1: {} - ts-dedent@2.2.0: {} + trim-trailing-lines@2.1.0: {} + + trough@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@1.14.1: {} tslib@2.8.1: {} - ufo@1.6.1: {} + twoslash-protocol@0.3.6: {} + + twoslash@0.3.6(typescript@5.9.3): + dependencies: + '@typescript/vfs': 1.6.4(typescript@5.9.3) + twoslash-protocol: 0.3.6 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + type-fest@0.21.3: {} + + type-fest@4.41.0: {} + + type-fest@5.4.4: + dependencies: + tagged-tag: 1.0.0 + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.9.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@7.18.2: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-builder@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.11 unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 + unist-util-map@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + unist-util-remove@4.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.1 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + urijs@1.19.11: {} + + urlpattern-polyfill@10.0.0: {} + + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.3): + dependencies: + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.3): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + util-deprecate@1.0.2: {} + + utility-types@3.11.0: {} + + utils-merge@1.0.1: {} + uuid@11.1.0: {} + vary@1.1.2: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-matter@5.0.1: + dependencies: + vfile: 6.0.3 + yaml: 2.8.2 + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -2697,104 +8235,142 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@5.4.21: + web-namespaces@2.0.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: dependencies: - esbuild: 0.21.5 - postcss: 8.5.6 - rollup: 4.52.5 - optionalDependencies: - fsevents: 2.3.3 + tr46: 0.0.3 + webidl-conversions: 3.0.1 - vitepress-openapi@0.1.10(vitepress@1.6.4(@algolia/client-search@5.42.0)(postcss@8.5.6)(search-insights@2.17.3))(vue@3.5.22): + which-boxed-primitive@1.1.1: dependencies: - '@vueuse/core': 13.9.0(vue@3.5.22) - class-variance-authority: 0.7.1 - clsx: 2.1.1 - lucide-vue-next: 0.503.0(vue@3.5.22) - markdown-it-link-attributes: 4.0.1 - reka-ui: 2.6.0(vue@3.5.22) - vitepress: 1.6.4(@algolia/client-search@5.42.0)(postcss@8.5.6)(search-insights@2.17.3) - vue: 3.5.22 - transitivePeerDependencies: - - '@vue/composition-api' - - typescript + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 - vitepress@1.6.4(@algolia/client-search@5.42.0)(postcss@8.5.6)(search-insights@2.17.3): + which-builtin-type@1.2.1: dependencies: - '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.57 - '@shikijs/core': 2.5.0 - '@shikijs/transformers': 2.5.0 - '@shikijs/types': 2.5.0 - '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21)(vue@3.5.22) - '@vue/devtools-api': 7.7.7 - '@vue/shared': 3.5.22 - '@vueuse/core': 12.8.2 - '@vueuse/integrations': 12.8.2(focus-trap@7.6.6) - focus-trap: 7.6.6 - mark.js: 8.11.1 - minisearch: 7.2.0 - shiki: 2.5.0 - vite: 5.4.21 - vue: 3.5.22 - optionalDependencies: - postcss: 8.5.6 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - lightningcss - - nprogress - - qrcode - - react - - react-dom - - sass - - sass-embedded - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - typescript - - universal-cookie + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: + which-collection@1.0.2: dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: + which-typed-array@1.1.20: dependencies: - vscode-languageserver-protocol: 3.17.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 - vscode-uri@3.0.8: {} - - vue-demi@0.14.10(vue@3.5.22): + widest-line@5.0.0: dependencies: - vue: 3.5.22 + string-width: 7.2.0 - vue@3.5.22: + wrap-ansi@6.2.0: dependencies: - '@vue/compiler-dom': 3.5.22 - '@vue/compiler-sfc': 3.5.22 - '@vue/runtime-dom': 3.5.22 - '@vue/server-renderer': 3.5.22(vue@3.5.22) - '@vue/shared': 3.5.22 + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + + wrappy@1.0.2: {} + + ws@8.17.1: {} + + ws@8.18.3: {} + + ws@8.19.0: {} + + xml2js@0.6.2: + dependencies: + sax: 1.4.4 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yaml@2.8.2: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.1: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yoctocolors-cjs@2.1.3: {} + + yoga-layout@3.2.1: {} + + zod-to-json-schema@3.20.4(zod@3.21.4): + dependencies: + zod: 3.21.4 + + zod-to-json-schema@3.20.4(zod@3.24.0): + dependencies: + zod: 3.24.0 + + zod@3.21.4: {} + + zod@3.23.8: {} + + zod@3.24.0: {} zwitch@2.0.4: {} diff --git a/docs/public/social.png b/social.png similarity index 100% rename from docs/public/social.png rename to social.png diff --git a/docs/public/social_en.png b/social_en.png similarity index 100% rename from docs/public/social_en.png rename to social_en.png diff --git a/docs/public/social_zh.png b/social_zh.png similarity index 100% rename from docs/public/social_zh.png rename to social_zh.png diff --git a/docs/public/star.gif b/star.gif similarity index 100% rename from docs/public/star.gif rename to star.gif diff --git a/docs/public/ui/bot-page-en-rounded.png b/ui/bot-page-en-rounded.png similarity index 100% rename from docs/public/ui/bot-page-en-rounded.png rename to ui/bot-page-en-rounded.png diff --git a/docs/public/ui/bot-page-zh-rounded.png b/ui/bot-page-zh-rounded.png similarity index 100% rename from docs/public/ui/bot-page-zh-rounded.png rename to ui/bot-page-zh-rounded.png diff --git a/docs/zh/deploy/command.md b/zh/deploy/command.mdx similarity index 79% rename from docs/zh/deploy/command.md rename to zh/deploy/command.mdx index f460af4c7..fd2f8bf01 100644 --- a/docs/zh/deploy/command.md +++ b/zh/deploy/command.mdx @@ -1,5 +1,7 @@ -# 命令 +--- +title: "命令" +--- LangBot 将以 `!` 开头的消息视为命令。官方提供了 [`EssentialCommands` 插件](https://space.langbot.app/market?author=langbot-team&plugin=EssentialCommands),包含了常用的命令。 -您也可以开发自己的命令插件,请参考 [命令插件开发](/zh/plugin/dev/components/command.md)。 \ No newline at end of file +您也可以开发自己的命令插件,请参考 [命令插件开发](/zh/plugin/dev/components/command)。 diff --git a/zh/deploy/langbot/docker.mdx b/zh/deploy/langbot/docker.mdx new file mode 100644 index 000000000..8507d58c4 --- /dev/null +++ b/zh/deploy/langbot/docker.mdx @@ -0,0 +1,42 @@ +--- +title: "Docker部署" +--- + + + 您需要提前了解: + + - `Docker` 和 `Docker Compose` 的使用 + - Docker 容器间网络通信配置方式 + + + + - 推荐使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs) + + +Git 克隆本项目: + +```bash +git clone https://github.com/langbot-app/LangBot +cd LangBot/docker +``` + +启动容器: + +```bash +docker compose up +``` + + + - 如果你的主机位于中国大陆,可以考虑把 `docker-compose.yaml` 文件中的镜像名称改为`docker.langbot.app/langbot-public/rockchin/langbot:latest`以使用我们提供的镜像源。 + - 推荐[设置 Docker 容器代理](https://docker.github.net.cn/network/proxy/),以便保证 LangBot 在运行期间的网络访问通畅。 + + +首次启动会输出创建配置文件的提示,请继续按照文件配置。 + +容器会映射`5300`端口供 WebUI 使用,您可以访问`http://127.0.0.1:5300`查看 WebUI。\ +还会映射`2280-2290`端口供使用 OneBot 协议的消息平台适配器反向连接。 + +完成 LangBot 部署后,请继续阅读: + +- [配置机器人文档](/zh/deploy/platforms/readme)。 +- [配置模型文档](/zh/deploy/models/readme)。 \ No newline at end of file diff --git a/docs/zh/deploy/langbot/manual.md b/zh/deploy/langbot/manual.mdx similarity index 73% rename from docs/zh/deploy/langbot/manual.md rename to zh/deploy/langbot/manual.mdx index 0d3c83435..9e5dd5b4b 100644 --- a/docs/zh/deploy/langbot/manual.md +++ b/zh/deploy/langbot/manual.mdx @@ -1,53 +1,54 @@ -# 手动部署 - -:::warning -1. 请使用Python 3.10.1(不包含3.10.0)及以上版本,推荐3.10.14版本,没有Python的需自行安装。 -2. Unix-like 系统上请优先考虑使用 Docker 部署。 -::: - -## 安装主程序 - -1. 前往[Release](https://github.com/langbot-app/LangBot/releases)页面下载最新版本的压缩包(推荐)`langbot-xxx-all.zip`(请勿下载 Source Code,因为其中不包含 WebUI)。解压,在解压目录打开命令行(终端) - -![下载Release](/assets/image/zh/deploy/langbot/manual/dl_release.png) - -2. 安装依赖 - -我们使用 [uv](https://docs.astral.sh/uv/) 管理依赖。 - -```bash -pip install uv -uv sync -``` - -或者使用清华源 - -```bash -pip install uv -i https://pypi.tuna.tsinghua.edu.cn/simple -uv sync -``` - -3. 运行一次主程序,生成配置文件 - -```bash -uv run main.py -``` - -提示如下信息 - -``` - _ ___ _ -| | __ _ _ _ __ _| _ ) ___| |_ -| |__/ _` | ' \/ _` | _ \/ _ \ _| -|____\__,_|_||_\__, |___/\___/\__| - |___/ - -⭐️开源地址: https://github.com/langbot-app/LangBot -📖文档地址: https://docs.langbot.app - -以下文件不存在,已自动生成,请按需修改配置文件后重启: -- data/config.yaml -... -``` - -接下来可以使用 Ctrl+C 退出程序,继续查看[部署机器人](/zh/deploy/platforms/readme)页。 +--- +title: "手动部署" +--- + + + Unix-like 系统上请优先考虑使用 Docker 部署。 + + +## 安装主程序 + +1. 前往[Release](https://github.com/langbot-app/LangBot/releases)页面下载最新版本的压缩包(推荐)`langbot-xxx-all.zip`(请勿下载 Source Code,因为其中不包含 WebUI)。解压,在解压目录打开命令行(终端) + +![下载Release](/images/zh/deploy/langbot/manual/dl_release.png) + +2. 安装依赖 + +我们使用 [uv](https://docs.astral.sh/uv/) 管理依赖。 + +```bash +pip install uv +uv sync +``` + +或者使用清华源 + +```bash +pip install uv -i https://pypi.tuna.tsinghua.edu.cn/simple +uv sync +``` + +3. 运行一次主程序,生成配置文件 + +```bash +uv run main.py +``` + +提示如下信息 + +``` + _ ___ _ +| | __ _ _ _ __ _| _ ) ___| |_ +| |__/ _` | ' \/ _` | _ \/ _ \ _| +|____\__,_|_||_\__, |___/\___/\__| + |___/ + +⭐️开源地址: https://github.com/langbot-app/LangBot +📖文档地址: https://docs.langbot.app + +以下文件不存在,已自动生成,请按需修改配置文件后重启: +- data/config.yaml +... +``` + +接下来可以使用 Ctrl+C 退出程序,继续查看[部署机器人](/zh/deploy/platforms/readme)页。 \ No newline at end of file diff --git a/docs/zh/deploy/langbot/one-click/1panel.md b/zh/deploy/langbot/one-click/1panel.mdx similarity index 60% rename from docs/zh/deploy/langbot/one-click/1panel.md rename to zh/deploy/langbot/one-click/1panel.mdx index e3d3f976f..a9c2ff52d 100644 --- a/docs/zh/deploy/langbot/one-click/1panel.md +++ b/zh/deploy/langbot/one-click/1panel.mdx @@ -1,18 +1,12 @@ -# 1Panel部署 +--- +title: "1Panel部署" +--- 使用[1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot)一键部署 LangBot。 -:::warning - -除非您打算使用 Discord、飞书等无需额外容器的消息平台,或您熟悉1Panel上 Docker 容器间的网络连接,否则不建议使用1Panel一键部署,请考虑使用[Docker部署](/zh/deploy/langbot/docker)。 - -::: - - - -:::info -使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),一键安装1Panel更方便 -::: + + 使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),一键安装1Panel更方便 + ## 安装1Panel @@ -22,7 +16,7 @@ 打开[1Panel](https://www.bt.cn/new/download.html?r=dk_LangBot),使用1Panel官方提供的Linux面板安装脚本,根据自己使用的系统选择对应的脚本 -![安装1Panel](/assets/image/zh/deploy/langbot/one-click/1p_install_01.png) +![安装1Panel](/images/zh/deploy/langbot/one-click/1p_install_01.png) 复制对应脚本,粘贴到服务器执行。 @@ -34,17 +28,17 @@ 打开`应用商店`,选择`AI`类别,点击安装 LangBot -![安装 LangBot ](/assets/image/zh/deploy/langbot/one-click/1p_langbot_01.png) +![安装 LangBot ](/images/zh/deploy/langbot/one-click/1p_langbot_01.png) 勾选`端口外部访问`,点击确认即可 -![安装 LangBot ](/assets/image/zh/deploy/langbot/one-click/1p_langbot_02.png) +![安装 LangBot ](/images/zh/deploy/langbot/one-click/1p_langbot_02.png) 稍等片刻,安装完成 点击左侧`容器`,选择`容器`类目,即可看到 LangBot 容器栏 -![查看 LangBot 容器信息](/assets/image/zh/deploy/langbot/one-click/1p_langbot_03.png) +![查看 LangBot 容器信息](/images/zh/deploy/langbot/one-click/1p_langbot_03.png) 复制服务器公网地址,例如`http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxx为1Panel 明白所在服务器的 IP,5300为端口号) @@ -52,4 +46,4 @@ 然后就可以在可视化界面进行配置了。 -接下来请继续阅读[部署消息平台](/zh/deploy/platforms/readme)页。 +接下来请继续阅读[部署消息平台](/zh/deploy/platforms/readme)页。 \ No newline at end of file diff --git a/docs/zh/deploy/langbot/one-click/bt.md b/zh/deploy/langbot/one-click/bt.mdx similarity index 63% rename from docs/zh/deploy/langbot/one-click/bt.md rename to zh/deploy/langbot/one-click/bt.mdx index f57bbaf27..2a71ffd8e 100644 --- a/docs/zh/deploy/langbot/one-click/bt.md +++ b/zh/deploy/langbot/one-click/bt.mdx @@ -1,55 +1,55 @@ -# 宝塔面板部署 - -使用[宝塔面板](https://www.bt.cn/new/download.html?r=dk_LangBot)一键部署 LangBot。 - -:::warning -- 除非您打算使用 Discord、飞书等无需额外容器的消息平台,或您熟悉宝塔面板上 Docker 容器间的网络连接,否则不建议使用宝塔面板一键部署,请考虑使用[Docker部署](/zh/deploy/langbot/docker)。 -- 如果你已经安装了宝塔,请更新到 **9.2.0** 及以上 -::: - - -:::info -使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),一键安装宝塔更方便 -::: - -## 安装宝塔 - -> 服务器系统推荐(来自宝塔):Debian 12,Ubuntu 22等 -> -> 本文默认所述的是拥有公网IPv4地址的服务器,如果是家用机器没有公网 IP,可以通过下文中的内网来访问相关页面 - -打开[宝塔面板](https://www.bt.cn/new/download.html?r=dk_LangBot),使用宝塔官方提供的Linux面板安装脚本,根据自己使用的系统选择对应的脚本 - -![安装宝塔](/assets/image/zh/deploy/langbot/one-click/bt_install_01.png) - -复制对应脚本,粘贴到服务器执行。 - -## 安装LangBot - -等待一段时间后,宝塔安装完成 - -可以看到提示信息中类似这样的一段,将外网面板地址复制到浏览器打开。 - -![宝塔访问地址](/assets/image/zh/deploy/langbot/one-click/bt_install_02.png) - -首次打开应该会弹出`推荐安装套件`,无需安装,关闭跳过即可。 - -然后点击侧边栏的`docker`,首次会提示安装Docker和Docker Compose服务,点击立即安装,若已安装请忽略。 - -然后在`Docker -> 应用商店`,搜索`LangBot`(注意大小写),点击`安装`,使用默认配置。 - -稍等一段时间,可以看到提示名为`langbot_XXXX`的容器显示`运行中` - -![创建LangBot容器](/assets/image/zh/deploy/langbot/one-click/bt_langbot_01.png) - -点击上图中红色圆圈查看运行日志 - -![查看LangBot容器运行日志](/assets/image/zh/deploy/langbot/one-click/bt_langbot_02.png) - -可以看到WebUI的配置页面(可视化配置页面)的外网和内网访问路径,复制公网地址,例如`http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxx为宝塔面板IP,5300为端口号,可能变化,具体如图) - -打开后输入管理员邮箱和密码,然后点击初始化。 - -然后就可以在可视化界面进行配置了。 - -接下来请继续阅读[部署消息平台](/zh/deploy/platforms/readme)页。 +--- +title: "宝塔面板部署" +--- + +使用[宝塔面板](https://www.bt.cn/new/download.html?r=dk_LangBot)一键部署 LangBot。 + + + 如果你已经安装了宝塔,请更新到 **9.2.0** 及以上 + + + + 使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),一键安装宝塔更方便 + + +## 安装宝塔 + +> 服务器系统推荐(来自宝塔):Debian 12,Ubuntu 22等 +> +> 本文默认所述的是拥有公网IPv4地址的服务器,如果是家用机器没有公网 IP,可以通过下文中的内网来访问相关页面 + +打开[宝塔面板](https://www.bt.cn/new/download.html?r=dk_LangBot),使用宝塔官方提供的Linux面板安装脚本,根据自己使用的系统选择对应的脚本 + +![安装宝塔](/images/zh/deploy/langbot/one-click/bt_install_01.png) + +复制对应脚本,粘贴到服务器执行。 + +## 安装LangBot + +等待一段时间后,宝塔安装完成 + +可以看到提示信息中类似这样的一段,将外网面板地址复制到浏览器打开。 + +![宝塔访问地址](/images/zh/deploy/langbot/one-click/bt_install_02.png) + +首次打开应该会弹出`推荐安装套件`,无需安装,关闭跳过即可。 + +然后点击侧边栏的`docker`,首次会提示安装Docker和Docker Compose服务,点击立即安装,若已安装请忽略。 + +然后在`Docker -> 应用商店`,搜索`LangBot`(注意大小写),点击`安装`,使用默认配置。 + +稍等一段时间,可以看到提示名为`langbot_XXXX`的容器显示`运行中` + +![创建LangBot容器](/images/zh/deploy/langbot/one-click/bt_langbot_01.png) + +点击上图中红色圆圈查看运行日志 + +![查看LangBot容器运行日志](/images/zh/deploy/langbot/one-click/bt_langbot_02.png) + +可以看到WebUI的配置页面(可视化配置页面)的外网和内网访问路径,复制公网地址,例如`http://xxx.xxx.xxx.xxx:5300`(xxx.xxx.xxx.xxx为宝塔面板IP,5300为端口号,可能变化,具体如图) + +打开后输入管理员邮箱和密码,然后点击初始化。 + +然后就可以在可视化界面进行配置了。 + +接下来请继续阅读[部署消息平台](/zh/deploy/platforms/readme)页。 \ No newline at end of file diff --git a/docs/zh/deploy/langbot/package.md b/zh/deploy/langbot/package.mdx similarity index 88% rename from docs/zh/deploy/langbot/package.md rename to zh/deploy/langbot/package.mdx index ef42898d4..eb11d6564 100644 --- a/docs/zh/deploy/langbot/package.md +++ b/zh/deploy/langbot/package.mdx @@ -1,8 +1,10 @@ -# 使用包管理器部署 +--- +title: "使用包管理器部署" +--- -:::info + 支持 Windows、Linux、Mac OS 等系统,推荐在测试环境、个人用途场景使用;生产级环境请使用[Docker部署](/zh/deploy/langbot/docker.html)。 -::: + LangBot 已打包发布至 PyPI。请安装[uv](https://docs.astral.sh/uv/getting-started/installation/),然后在空目录下运行以下命令: diff --git a/docs/zh/deploy/settings.md b/zh/deploy/settings.mdx similarity index 99% rename from docs/zh/deploy/settings.md rename to zh/deploy/settings.mdx index 934603a22..a44d9bf46 100644 --- a/docs/zh/deploy/settings.md +++ b/zh/deploy/settings.mdx @@ -1,4 +1,6 @@ -# 系统环境设置 +--- +title: "系统环境设置" +--- 配置系统运行的一些环境信息,文件位于`data/config.yaml`。 一般不需要修改。 diff --git a/docs/zh/deploy/update.md b/zh/deploy/update.mdx similarity index 88% rename from docs/zh/deploy/update.md rename to zh/deploy/update.mdx index 28a9de685..c89856277 100644 --- a/docs/zh/deploy/update.md +++ b/zh/deploy/update.mdx @@ -1,4 +1,6 @@ -# 更新 LangBot +--- +title: "更新 LangBot" +--- ## 使用包管理器部署 @@ -26,10 +28,10 @@ docker compose up --force-recreate --pull always -d 此命令将拉取最新的 LangBot 镜像并重建容器。 -:::info + 4.3.0 版本更改了 `docker/docker-compose.yaml` 文件的内容和位置,若您由之前版本更新而来,请[根据文档重新部署](/zh/deploy/langbot/docker)。 -::: + ## 手动部署 -从 [Releases](https://github.com/langbot-app/LangBot/releases) 页面下载最新发行版的 Assets 下的 `langbot--all.zip`,解压到原来部署到目录重启即可。 \ No newline at end of file +从 [Releases](https://github.com/langbot-app/LangBot/releases) 页面下载最新发行版的 Assets 下的 `langbot--all.zip`,解压到原来部署到目录重启即可。 diff --git a/docs/zh/develop/adapter/discord/README.md b/zh/develop/adapter/discord/README.mdx similarity index 93% rename from docs/zh/develop/adapter/discord/README.md rename to zh/develop/adapter/discord/README.mdx index a822d98ac..bb71742f2 100644 --- a/docs/zh/develop/adapter/discord/README.md +++ b/zh/develop/adapter/discord/README.mdx @@ -1,4 +1,6 @@ -# Discord 适配器文档 +--- +title: "Discord 适配器文档" +--- ## 概述 @@ -7,10 +9,10 @@ ## 文档导航 ### 核心文档 -- **[API 参考](api_reference.md)** - Discord 适配器完整 API 文档 -- **[快速开始](quick_start.md)** - 基本使用指南 -- **[架构设计](design.md)** - 适配器架构设计 -- **[故障排除](troubleshooting.md)** - 常见问题解决方案 +- **[API 参考](api_reference)** - Discord 适配器完整 API 文档 +- **[快速开始](quick_start)** - 基本使用指南 +- **[架构设计](design)** - 适配器架构设计 +- **[故障排除](troubleshooting)** - 常见问题解决方案 ## 完整功能集 diff --git a/docs/zh/develop/adapter/discord/api_reference.md b/zh/develop/adapter/discord/api_reference.mdx similarity index 99% rename from docs/zh/develop/adapter/discord/api_reference.md rename to zh/develop/adapter/discord/api_reference.mdx index b730f2dd5..a623be7d7 100644 --- a/docs/zh/develop/adapter/discord/api_reference.md +++ b/zh/develop/adapter/discord/api_reference.mdx @@ -1,4 +1,6 @@ -# Discord 适配器 API 参考 +--- +title: "Discord 适配器 API 参考" +--- ## 概述 diff --git a/docs/zh/develop/adapter/discord/design.md b/zh/develop/adapter/discord/design.mdx similarity index 99% rename from docs/zh/develop/adapter/discord/design.md rename to zh/develop/adapter/discord/design.mdx index 880ca3efa..beb948caf 100644 --- a/docs/zh/develop/adapter/discord/design.md +++ b/zh/develop/adapter/discord/design.mdx @@ -1,4 +1,6 @@ -# Discord 适配器架构设计 +--- +title: "Discord 适配器架构设计" +--- ## 概述 diff --git a/docs/zh/develop/adapter/discord/quick_start.md b/zh/develop/adapter/discord/quick_start.mdx similarity index 99% rename from docs/zh/develop/adapter/discord/quick_start.md rename to zh/develop/adapter/discord/quick_start.mdx index 8149574a7..e24740dfb 100644 --- a/docs/zh/develop/adapter/discord/quick_start.md +++ b/zh/develop/adapter/discord/quick_start.mdx @@ -1,4 +1,6 @@ -# Discord 适配器快速入门 +--- +title: "Discord 适配器快速入门" +--- ## 概述 diff --git a/docs/zh/develop/adapter/discord/troubleshooting.md b/zh/develop/adapter/discord/troubleshooting.mdx similarity index 99% rename from docs/zh/develop/adapter/discord/troubleshooting.md rename to zh/develop/adapter/discord/troubleshooting.mdx index 6c900070c..045790a78 100644 --- a/docs/zh/develop/adapter/discord/troubleshooting.md +++ b/zh/develop/adapter/discord/troubleshooting.mdx @@ -1,4 +1,6 @@ -# Discord 适配器故障排除 +--- +title: "Discord 适配器故障排除" +--- ## 概述 diff --git a/zh/develop/comp-arch.mdx b/zh/develop/comp-arch.mdx new file mode 100644 index 000000000..2dfee7d91 --- /dev/null +++ b/zh/develop/comp-arch.mdx @@ -0,0 +1,5 @@ +--- +title: "组件架构" +--- + +![组件架构图](/images/zh/develop/comp_arch/develop_comp_arch_1.png) diff --git a/docs/zh/develop/dev-config.md b/zh/develop/dev-config.mdx similarity index 84% rename from docs/zh/develop/dev-config.md rename to zh/develop/dev-config.mdx index c62f916ce..21f2cebbd 100644 --- a/docs/zh/develop/dev-config.md +++ b/zh/develop/dev-config.mdx @@ -1,4 +1,6 @@ -# 开发配置 +--- +title: "开发配置" +--- LangBot 分为前端和后端,前端使用 Next.js + shadcn 开发,后端通过 Quart(Flask 的异步版本)开发。 @@ -52,11 +54,10 @@ npm run dev 然后根据输出信息,访问`http://127.0.0.1:3000`查看独立启动的前端页面。 -:::info -本地使用`pnpm dev`启动时,会携带`.env`中的环境变量`NEXT_PUBLIC_API_BASE_URL`,该变量会自动被前端使用,以确保前端可以访问到本地启动的后端的`5300`端口。 + 生产环境中,前端会被预编译成静态文件,由后端提供服务,前端会自动访问同域的后端地址。 -::: + ## 代码格式化 diff --git a/docs/zh/develop/plugin-runtime.md b/zh/develop/plugin-runtime.mdx similarity index 87% rename from docs/zh/develop/plugin-runtime.md rename to zh/develop/plugin-runtime.mdx index 934194273..710f12993 100644 --- a/docs/zh/develop/plugin-runtime.md +++ b/zh/develop/plugin-runtime.mdx @@ -1,10 +1,10 @@ -# 调试插件运行时、CLI、SDK +--- +title: "调试插件运行时、CLI、SDK" +--- -::: info -请先阅读[插件教程](/zh/plugin/plugin-intro),了解插件系统。 - -- 插件运行时、CLI、SDK 开源在: https://github.com/langbot-app/langbot-plugin-sdk -::: + + 插件运行时、CLI、SDK 开源在: https://github.com/langbot-app/langbot-plugin-sdk + Clone 插件运行时源码: @@ -21,7 +21,10 @@ uv sync --dev 此时,uv 将自动为您创建虚拟环境(.venv),若您的编辑器询问您是否使用此虚拟环境,请选择`是`。 - + 或者请您手动激活此虚拟环境: @@ -54,7 +57,7 @@ plugin: runtime_ws_url: ws://localhost:5400/control/ws ``` -并在启动 LangBot 主程序时携带启动参数`--standalone-runtime`(如:`uv run main.py --standalone-runtime`)。 +并在启动 LangBot 主程序时携带启动参数`--standalone-runtime`(如:`uv run main.py --standalone-runtime`)。\ 重启 LangBot,将会使用 WebSocket 连接到此运行时。 ## langbot-plugin-sdk 架构 diff --git a/docs/zh/insight/community.md b/zh/insight/community.mdx similarity index 90% rename from docs/zh/insight/community.md rename to zh/insight/community.mdx index b4b13cc02..57abf2941 100644 --- a/docs/zh/insight/community.md +++ b/zh/insight/community.mdx @@ -1,4 +1,6 @@ -# 社区资源 +--- +title: "社区资源" +--- ## 简化版教程 @@ -22,8 +24,8 @@ 插件和 LangBot 开发、发布、交流 -:::warning 注意 + 此群群友只对开发插件感兴趣,不会解答您的任何其他问题。 -::: + -- LangBot 插件&开发:1032327138 ([链接](https://qm.qq.com/q/G7ENGTjeou)) +- LangBot 插件&开发:1032327138 ([链接](https://qm.qq.com/q/G7ENGTjeou)) diff --git a/docs/zh/insight/features.md b/zh/insight/features.mdx similarity index 89% rename from docs/zh/insight/features.md rename to zh/insight/features.mdx index 824208089..eaea2d906 100644 --- a/docs/zh/insight/features.md +++ b/zh/insight/features.mdx @@ -1,4 +1,6 @@ -# 特性规格 +--- +title: "特性规格" +--- LangBot 是一个开源的大语言模型原生即时通信机器人开发平台,旨在提供开箱即用的 IM 机器人开发体验,具有 Agent、RAG、MCP 等多种 LLM 应用功能,适配全球主流即时通信平台,并提供丰富的 API 接口,支持自定义开发。 @@ -69,15 +71,14 @@ LangBot 是一个开源的大语言模型原生即时通信机器人开发平台 ## 案例截图 -![bot_page](/assets/image/zh/insight/features/bot-page.png) +![bot_page](/images/zh/insight/features/bot-page.png) -![create_model](/assets/image/zh/insight/features/create-model.png) +![create_model](/images/zh/insight/features/create-model.png) -![edit_pipeline](/assets/image/zh/insight/features/edit-pipeline.png) +![edit_pipeline](/images/zh/insight/features/edit-pipeline.png) -![plugin_market](/assets/image/zh/insight/features/plugin-market.png) +![plugin_market](/images/zh/insight/features/plugin-market.png) -![private_chat](/assets/image/zh/insight/private_chat.png) - -![group_chat](/assets/image/zh/insight/group_chat.png) +![private_chat](/images/zh/insight/private_chat.png) +![group_chat](/images/zh/insight/group_chat.png) diff --git a/docs/zh/insight/guide.md b/zh/insight/guide.mdx similarity index 93% rename from docs/zh/insight/guide.md rename to zh/insight/guide.mdx index dfab3dfcd..8ea02e3b5 100644 --- a/docs/zh/insight/guide.md +++ b/zh/insight/guide.mdx @@ -1,43 +1,45 @@ -# 欢迎访问 LangBot 文档 - -LangBot 是一个开源的大语言模型(LLM)原生即时通信机器人平台,支持多种消息平台和模型供应商。提供对 Dify、阿里云百炼等 LLMOps 平台的支持。并提供 WebUI 供用户快速部署和使用。 - -:::info -这是 LangBot 4.0 的文档,3.0 文档请[访问](https://v3.docs.langbot.app)。 -::: - -## 文档结构 - -文档分为以下几个部分: - -- 部署和使用(必读):部署和使用 LangBot 的详细步骤 -- 插件:插件使用和开发相关信息 -- 实践:许多不错的 LangBot 使用案例 -- 开发:参与 LangBot 开发的相关信息 - -## 快速开始指南 - -> 两种方式快速开始: -> -> - 使用社区资源的简化版教程(见左侧) -> - 阅读文档自行部署(下述为快速开始的方法) - -### 1. 部署 LangBot - -阅读左侧 **部署 LangBot** 部分,选择部署 LangBot 的方式 - -部署完成后,打开`http://127.0.0.1:5300`或者`http://服务器公网IP:5300` - -进行初始化,填入邮箱和密码并记录保存下来 - -### 2. 配置机器人 - -查看左侧的[配置机器人](/zh/deploy/platforms/readme) - -### 3. 配置模型 - -查看左侧[配置对话模型](/zh/deploy/models/readme) - -
- -完成以上两步后即可使用,如果需要更多功能的配置,可在[流水线](/zh/deploy/pipelines/readme)中设置 +--- +title: "欢迎访问 LangBot 文档" +--- + +LangBot 是一个开源的大语言模型(LLM)原生即时通信机器人平台,支持多种消息平台和模型供应商。提供对 Dify、阿里云百炼等 LLMOps 平台的支持。并提供 WebUI 供用户快速部署和使用。 + + +这是 LangBot 4.0 的文档,3.0 文档请[访问](https://v3.docs.langbot.app)。 + + +## 文档结构 + +文档分为以下几个部分: + +- 部署和使用(必读):部署和使用 LangBot 的详细步骤 +- 插件:插件使用和开发相关信息 +- 实践:许多不错的 LangBot 使用案例 +- 开发:参与 LangBot 开发的相关信息 + +## 快速开始指南 + +> 两种方式快速开始: +> +> - 使用社区资源的简化版教程(见左侧) +> - 阅读文档自行部署(下述为快速开始的方法) + +### 1. 部署 LangBot + +阅读左侧 **部署 LangBot** 部分,选择部署 LangBot 的方式 + +部署完成后,打开`http://127.0.0.1:5300`或者`http://服务器公网IP:5300` + +进行初始化,填入邮箱和密码并记录保存下来 + +### 2. 配置机器人 + +查看左侧的[配置机器人](/zh/deploy/platforms/readme) + +### 3. 配置模型 + +查看左侧[配置对话模型](/zh/deploy/models/readme) + +
+ +完成以上两步后即可使用,如果需要更多功能的配置,可在[流水线](/zh/deploy/pipelines/readme)中设置 diff --git a/docs/zh/insight/platform-features.md b/zh/insight/platform-features.mdx similarity index 99% rename from docs/zh/insight/platform-features.md rename to zh/insight/platform-features.mdx index b6a67b684..9fd127b9c 100644 --- a/docs/zh/insight/platform-features.md +++ b/zh/insight/platform-features.mdx @@ -1,4 +1,6 @@ -# 各消息平台特性支持性 +--- +title: "各消息平台特性支持性" +--- 以下是各平台我们已实现并测试的功能列表,如有预期之外的现象,欢迎即使反馈到[GitHub Issues](https://github.com/langbot-app/LangBot/issues) 或直接提出 Pull Request 帮助修复。 @@ -226,4 +228,4 @@ P.S. 未测试 ## Slack -## LINE \ No newline at end of file +## LINE diff --git a/docs/zh/plugin/compatibility.md b/zh/plugin/compatibility.mdx similarity index 95% rename from docs/zh/plugin/compatibility.md rename to zh/plugin/compatibility.mdx index ea9bd8c79..2d03f7055 100644 --- a/docs/zh/plugin/compatibility.md +++ b/zh/plugin/compatibility.mdx @@ -1,4 +1,6 @@ -# 系统兼容处理 +--- +title: "系统兼容处理" +--- LangBot 插件系统运用了`Asyncio`和`Subprocess`等机制,这在unix-like系统(如Linux、MacOS)上运行良好,但在Windows上存在一些问题,导致插件无法正常运行。 @@ -12,4 +14,4 @@ Windows 上的 Python 异步事件循环默认使用 `ProactorEventLoop`,但 与 Unix-like 系统上的子进程管理与 Stdio 通信绑定的形式不同,LangBot 和 Plugin Runtime 在 Windows 上会自动采用 子进程 + WebSocket 结合的跨进程通信技术,LangBot 通过子进程启动 Plugin Runtime 但通过 WebSocket 与其通信;Plugin Runtime 也通过子进程启动各个已安装插件但通过 WebSocket 通信。 -这是 LangBot 根据系统标识自动适应的,您无需手动配置。 \ No newline at end of file +这是 LangBot 根据系统标识自动适应的,您无需手动配置。 diff --git a/docs/zh/plugin/dev/apis/common.md b/zh/plugin/dev/apis/common.mdx similarity index 98% rename from docs/zh/plugin/dev/apis/common.md rename to zh/plugin/dev/apis/common.mdx index f5b38ee23..47533ba3f 100644 --- a/docs/zh/plugin/dev/apis/common.md +++ b/zh/plugin/dev/apis/common.mdx @@ -1,11 +1,9 @@ -# 插件通用 API +--- +title: "插件通用 API" +--- LangBot 为插件提供了一系列 API ,用于操作 LangBot 各个模块、控制消息上下文等。 -:::info 目录 -[[toc]] -::: - ## 请求 API 操作当前正在处理的用户请求(消息)。仅在`EventListener`和`Command`组件中可用。访问方式如下: @@ -309,4 +307,4 @@ async def get_config_file(self, file_key: str) -> bytes: file_bytes = await self.plugin.get_config_file("key") ``` -请结合 [`file` 或 `array[file]` 类型配置项](/zh/plugin/dev/basic-info.html#type-file)使用。 \ No newline at end of file +请结合 [``file 或 array[file] 类型配置项``](/zh/plugin/dev/basic-info.html#type-file)使用。 \ No newline at end of file diff --git a/zh/plugin/dev/apis/messages.mdx b/zh/plugin/dev/apis/messages.mdx new file mode 100644 index 000000000..a5a5cee67 --- /dev/null +++ b/zh/plugin/dev/apis/messages.mdx @@ -0,0 +1,92 @@ +--- +title: "消息平台实体" +--- + +LangBot 支持多种消息平台,每个消息平台的`消息实体`格式均不相同。为了屏蔽这些差异,我们实现了一套统一的标准。插件开发者只需要掌握并在插件中使用此页所述的消息实体,LangBot 内部的消息处理逻辑能够自动完成消息的解析和转换。 + +## 消息链 + +消息平台的`消息`不同于用于 AI 交互的消息,消息平台的消息以`消息链`的形式描述,QQ 上展示的每一个独立的消息就是一条消息链,消息链中可以包含`文字`、`图片`、`@组件`等多种`消息链组件`,例如: + +![](/images/zh/plugin/dev/apis/plugin_dev_messages_01.png) + +这就是一个消息链,包含 一个 Plain 组件(Hello World)和 一个 Image 组件(乌萨奇) + +消息链和消息链组件的定义位于`langbot_plugin.api.entities.builtin.platform.message`中。 + +### 构造消息链 + +请先引入`langbot_plugin.api.entities.builtin.platform.message`包,才能使用其中的消息组件。 + +```python +from langbot_plugin.api.entities.builtin.platform.message import * + +# 构建一个包含文字 Hello LangBot 和图片(从URL获取)的消息 +msg_chain = MessageChain([ + Plain(text="Hello LangBot"), + Image(url='https://qchatgpt.rockchin.top/langbot-logo.png') +]) + +# 构建一个包含 @全体成员 和文字 Hello LangBot 的消息 +msg_chain = MessageChain([ + AtAll(), + Plain(text="Hello LangBot") +]) + +# 构建一个包含 @指定成员 和文字 Hello LangBot 的消息 +msg_chain = MessageChain([ + At(target=123456), + Plain(text="Hello LangBot") +]) +``` + +目前支持的消息链组件: + +- `Source` 源消息链信息,如果是从消息平台收到的消息,都会在消息链最前端包含此组件,记录消息信息 +- `Plain` 纯文本消息 +- `Quote` 引用消息 +- `Image` 图片消息 +- `AtAll` @全体成员消息 +- `At` @指定成员消息 +- `Voice` 语音消息 + - 需要检查消息平台支持性 +- `Forward` 转发消息 + - 在很多平台不受支持,不建议使用 +- `File` 文件消息 + +创建组件时,须使用具名参数传入。具体使用方式可以查看源码`langbot_plugin.api.entities.builtin.platform.message`中的定义。 + +## 其他实体 + +除了上述实体之外,还有`好友 Friend`和`群 Group`等实体,这些实体的定义位于`langbot_plugin.api.entities.platform.entities`中。 + +## 访问消息平台底层 API + + + 4.x 暂不适用。 + + +为了抹平各个平台的差异,LangBot 在消息平台API之上,提供了一个抽象层,即上方所述的内容,以及`pkg/platform/sources`目录下的各个平台适配器。\ +但由于各个平台的差异较大,抽象层内的实体和 API 封装并不完整,如果您的插件需要访问特定平台的功能,可以按照以下说明访问底层 API。 + + + ```python + # 例如在插件中 + @handler(GroupMessageReceived) + async def _(self, ctx: EventContext): + # 取得适配器对象 + adapter = ctx.query.adapter + ``` + + +| 平台 | 适配器 | 访问方式 | 说明 | +| ---------- | --------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OneBot v11 | aiocqhttp | adapter.bot | bot 对象对应 [aiocqhttp](https://github.com/nonebot/aiocqhttp) 的 CQHttp 对象,详细使用方式请参考 aiocqhttp 文档 | +| QQ 官方API | qqofficial | adapter.bot | bot 对象为 libs/qq_official_api 下的 SDK 对象,详细使用方式可以参考 libs/qq_official_api/api.py 中`QQOfficialClient`中的`send_group_text_msg`方法发起 HTTP 请求的方式,具体接口文档请查看 QQ 官方 API 文档 | +| 企业微信 | wecom | adapter.bot | 参考 libs/wecom_api/api.py 中`WecomClient`中的`send_image`方法发起 HTTP 请求的方式,具体接口文档请查看企业微信 API 文档 | +| 微信公众号 | officialaccount | - | 请参考微信公众号的 API 文档中的接口文档信息,相关的凭据信息可以在 adapter.bot 中取得 | +| 飞书 | lark | adapter.api_client | 飞书 SDK 的 API Client 对象,具体请参考[oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python) | +| 钉钉 | dingtalk | - | 请参考钉钉 API 文档,相关的凭据信息可以在 adapter.bot 中取得 | +| Discord | discord | adapter.bot | bot 对象为 [Rapptz/discord.py](https://github.com/Rapptz/discord.py) 的 Discord 对象,详细使用方式请参考文档 | +| Telegram | telegram | adapter.bot | bot 对象为 [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) 的 Telegram 对象,详细使用方式请参考文档 | +| Slack | slack | adapter.bot | bot 对象 libs/slack_api/api.py 中的对象,详细使用方式请参考其代码以及 Slack SDK | \ No newline at end of file diff --git a/docs/zh/plugin/dev/apis/pipeline-events.md b/zh/plugin/dev/apis/pipeline-events.mdx similarity index 94% rename from docs/zh/plugin/dev/apis/pipeline-events.md rename to zh/plugin/dev/apis/pipeline-events.mdx index 2eb13be89..0a1651d43 100644 --- a/docs/zh/plugin/dev/apis/pipeline-events.md +++ b/zh/plugin/dev/apis/pipeline-events.mdx @@ -1,8 +1,6 @@ -# 流水线事件和 API - -:::info 目录 -[[toc]] -::: +--- +title: "流水线事件和 API" +--- LangBot 插件可注册并处理流水线事件。使用方法见[组件:事件监听器](/zh/plugin/dev/components/event-listener)。 @@ -10,7 +8,7 @@ LangBot 插件可注册并处理流水线事件。使用方法见[组件:事 某些事件具有`可设置的属性`,这些属性可以被插件代码修改,并在之后被用在 LangBot 后续的处理中。 -### *MessageReceived +### \*MessageReceived 接收到群聊或私聊任何消息时触发。 @@ -61,7 +59,7 @@ class GroupMessageReceived(BaseEventModel): """消息链""" ``` -### *NormalMessageReceived +### \*NormalMessageReceived 接收到群聊或私聊消息,并判断为需要由 LLM 处理的消息(非命令消息)时触发。 @@ -134,11 +132,11 @@ class GroupNormalMessageReceived(BaseEventModel): """直接回复消息链,仅在阻止默认行为时生效""" ``` -### *CommandSent +### \*CommandSent -:::warning 注意 -不再推荐使用,请改为使用[组件:命令](/zh/plugin/dev/components/command)。 -::: + + 不再推荐使用,请改为使用[组件:命令](/zh/plugin/dev/components/command)。 + 接收到群聊或私聊命令时触发。 @@ -195,7 +193,6 @@ class GroupCommandSent(BaseEventModel): is_admin: bool """是否为管理员""" - ``` ### NormalMessageResponded @@ -260,7 +257,6 @@ class PromptPreProcessing(BaseEventModel): prompt: list[typing.Union[provider_message.Message, provider_message.MessageChunk]] """此对话现有消息记录,可修改,langbot_plugin.api.entities.builtin.provider.message.Message 或 langbot_plugin.api.entities.builtin.provider.message.MessageChunk 类型""" - ``` ## 事件上下文 API @@ -300,18 +296,15 @@ event_context.prevent_default() 调用该方法后,该事件后续默认行为将被阻止,流水线将直接结束。 -:::info -仅以下事件可阻止默认行为: - -- PersonMessageReceived -- GroupMessageReceived -- PersonNormalMessageReceived -- GroupNormalMessageReceived -- PersonCommandSent -- GroupCommandSent -- NormalMessageResponded - -::: + + - PersonMessageReceived + - GroupMessageReceived + - PersonNormalMessageReceived + - GroupNormalMessageReceived + - PersonCommandSent + - GroupCommandSent + - NormalMessageResponded + ### 阻止后序插件执行 @@ -323,4 +316,4 @@ def prevent_postorder(self): event_context.prevent_postorder() ``` -调用该方法后,注册了该事件的后序插件此次将不被执行。 +调用该方法后,注册了该事件的后序插件此次将不被执行。 \ No newline at end of file diff --git a/docs/zh/plugin/dev/apis/tech-details.md b/zh/plugin/dev/apis/tech-details.mdx similarity index 84% rename from docs/zh/plugin/dev/apis/tech-details.md rename to zh/plugin/dev/apis/tech-details.mdx index 6c59f597d..3e5e04320 100644 --- a/docs/zh/plugin/dev/apis/tech-details.md +++ b/zh/plugin/dev/apis/tech-details.mdx @@ -1,11 +1,13 @@ -# 插件技术细节 +--- +title: "插件技术细节" +--- ## 架构 - + 在 4.0 版本中,我们引入了一种高安全性、高灵活性的生产级插件系统,并为插件开发者提供了丰富的 API 和易用的配套工具。 Plugin Runtime (插件运行时),用于管理插件的生命周期,协调 LangBot 与插件之间的交互。有两种运行模式:`stdio` 和 `websocket`。当 LangBot 是由用户直接启动(未运行在容器内时),会使用 `stdio` 模式,这种场景多为个人用户或轻量级环境。当 LangBot 运行在容器内时,会使用 `websocket` 模式,此场景专为生产级环境设计。 -Plugin Runtime 会自动启动各个已安装的插件,通过 stdio 交互。在插件开发场景中,开发者可以使用 `lbp` 命令行工具启动插件并通过 WebSocket 连接到已启动的 Runtime 进行调试。 \ No newline at end of file +Plugin Runtime 会自动启动各个已安装的插件,通过 stdio 交互。在插件开发场景中,开发者可以使用 `lbp` 命令行工具启动插件并通过 WebSocket 连接到已启动的 Runtime 进行调试。 diff --git a/docs/zh/plugin/dev/basic-info.md b/zh/plugin/dev/basic-info.mdx similarity index 96% rename from docs/zh/plugin/dev/basic-info.md rename to zh/plugin/dev/basic-info.mdx index f87c8e4a1..72f1399dd 100644 --- a/docs/zh/plugin/dev/basic-info.md +++ b/zh/plugin/dev/basic-info.mdx @@ -1,8 +1,6 @@ -# 完善配置信息 - -:::info 目录 -[[toc]] -::: +--- +title: "完善配置信息" +--- ## 修改清单文件 @@ -180,9 +178,9 @@ print(file_config) file_bytes = await self.get_config_file(file_key) ``` -::: info -常见 mimetype 与文件扩展名对应参考:[mdn 文档](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/MIME_types/Common_types) -::: + + 常见 mimetype 与文件扩展名对应参考:[mdn 文档](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/MIME_types/Common_types) + ### type: array[file] @@ -241,4 +239,4 @@ print(bot_uuid) # 输出: '550e8400-e29b-41d4-a716-446655440000' 该教程将指引您逐步完善插件功能。 -- 添加组件:插件组件是插件的核心功能单元,您可以根据需求[添加组件](/zh/plugin/dev/components/add)。 +- 添加组件:插件组件是插件的核心功能单元,您可以根据需求[添加组件](/zh/plugin/dev/components/add)。 \ No newline at end of file diff --git a/docs/zh/plugin/dev/components/add.md b/zh/plugin/dev/components/add.mdx similarity index 85% rename from docs/zh/plugin/dev/components/add.md rename to zh/plugin/dev/components/add.mdx index eef807db9..f6a2c4b30 100644 --- a/docs/zh/plugin/dev/components/add.md +++ b/zh/plugin/dev/components/add.mdx @@ -1,4 +1,6 @@ -# 添加组件 +--- +title: "添加组件" +--- 插件由一种或多种组件构成,为 LangBot 提供不同的功能。目前支持的组件类型有: @@ -31,8 +33,7 @@ Component EventListener generated successfully. ➜ HelloPlugin > ``` -:::info -CLI 将在插件目录下生成一个 `components` 目录,并在其中创建组件对应目录 + ``` . @@ -61,14 +62,14 @@ components: ... ``` 如需删除组件,可自行删除对应信息。 -::: + ## 组件类型 各个组件的详细使用方式请参考: -- [EventListener](./event-listener.md) -- [Command](./command.md) -- [Tool](./tool.md) -- [KnowledgeRetriever](./knowledge-retriever.md) \ No newline at end of file +- [EventListener](./event-listener) +- [Command](./command) +- [Tool](./tool) +- [KnowledgeRetriever](./knowledge-retriever) diff --git a/docs/zh/plugin/dev/components/command.md b/zh/plugin/dev/components/command.mdx similarity index 94% rename from docs/zh/plugin/dev/components/command.md rename to zh/plugin/dev/components/command.mdx index d2b699074..5baa7f918 100644 --- a/docs/zh/plugin/dev/components/command.md +++ b/zh/plugin/dev/components/command.mdx @@ -1,8 +1,10 @@ -# 组件:命令 +--- +title: "组件:命令" +--- 命令组件由用户通过`!`(或其他已设置的前缀)开头的命令消息触发。如下是命令`!help`的触发示例: - + ## 添加命令组件 @@ -53,7 +55,7 @@ execution: ## 插件处理 -默认会生成如下代码(components/command/<命令名称>.py),您需要在`Info`类的`initialize`方法中注册并实现子命令的处理逻辑。 +默认会生成如下代码(`components/command/<命令名称>.py`),您需要在`Info`类的`initialize`方法中注册并实现子命令的处理逻辑。 ```python # Auto generated by LangBot Plugin SDK. @@ -136,7 +138,7 @@ class Info(Command): 上述命令效果如图: - + ### 命令上下文 diff --git a/docs/zh/plugin/dev/components/event-listener.md b/zh/plugin/dev/components/event-listener.mdx similarity index 97% rename from docs/zh/plugin/dev/components/event-listener.md rename to zh/plugin/dev/components/event-listener.mdx index ae8df207a..6aaa8aad3 100644 --- a/docs/zh/plugin/dev/components/event-listener.md +++ b/zh/plugin/dev/components/event-listener.mdx @@ -1,4 +1,6 @@ -# 组件:事件监听器 +--- +title: "组件:事件监听器" +--- LangBot 的流水线在运行期间会产生一些事件,供插件 Hook 并处理。每个插件中只允许添加一个事件监听器(components/event_listener/default.yaml),但在其中可以注册任意数量的事件。 @@ -98,4 +100,4 @@ class EventContext(pydantic.BaseModel): 您已经了解了事件监听器的基本信息,接下来可以: - 在文档[流水线事件](/zh/plugin/dev/apis/pipeline-events)中查看`可监听的事件列表`和`事件上下文 API` -- 查看[插件通用 API](/zh/plugin/dev/apis/common) \ No newline at end of file +- 查看[插件通用 API](/zh/plugin/dev/apis/common) diff --git a/docs/zh/plugin/dev/components/knowledge-retriever.md b/zh/plugin/dev/components/knowledge-retriever.mdx similarity index 94% rename from docs/zh/plugin/dev/components/knowledge-retriever.md rename to zh/plugin/dev/components/knowledge-retriever.mdx index 560a6fee6..060cc220d 100644 --- a/docs/zh/plugin/dev/components/knowledge-retriever.md +++ b/zh/plugin/dev/components/knowledge-retriever.mdx @@ -1,8 +1,10 @@ -# 组件:知识检索器 +--- +title: "组件:知识检索器" +--- 知识检索器(Knowledge Retriever)组件允许插件为 LangBot 提供外部知识库检索能力。当用户在 LangBot 中创建外部知识库时,可以选择由插件提供的知识检索器来检索知识。 - + ## 添加知识检索器组件 @@ -117,7 +119,7 @@ execution: ## 插件处理 -默认会生成如下代码(components/knowledge_retriever/<检索器名称>.py),您需要在`FastGPT`类的`retrieve`方法中实现知识检索逻辑。完整代码可在[langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo)中找到。 +默认会生成如下代码(`components/knowledge_retriever/<检索器名称>.py`),您需要在`FastGPT`类的`retrieve`方法中实现知识检索逻辑。完整代码可在[langbot-plugin-demo](https://github.com/langbot-app/langbot-plugin-demo)中找到。 ```python # Auto generated by LangBot Plugin SDK. @@ -260,6 +262,6 @@ search_mode = self.config.get('search_mode', 'embedding') 2. 添加外部知识库 3. 选择您的插件提供的知识检索器并填写配置 - + -保存后即可在 LangBot 流水线中选用该知识库。 \ No newline at end of file +保存后即可在 LangBot 流水线中选用该知识库。 diff --git a/docs/zh/plugin/dev/components/tool.md b/zh/plugin/dev/components/tool.mdx similarity index 94% rename from docs/zh/plugin/dev/components/tool.md rename to zh/plugin/dev/components/tool.mdx index e877c94e7..a35f7d795 100644 --- a/docs/zh/plugin/dev/components/tool.md +++ b/zh/plugin/dev/components/tool.mdx @@ -1,4 +1,6 @@ -# 组件:工具 +--- +title: "组件:工具" +--- LangBot 内置的 Local Agent 在执行期间会根据场景调用工具以与外界交互,目前支持通过插件和 MCP 两种方式添加工具。 @@ -53,7 +55,7 @@ execution: ## 插件处理 -默认会生成如下代码(components/tools/<工具名称>.py),您需要在`GetWeatherAlerts`类的`call`方法中实现此工具的调用和返回逻辑。 +默认会生成如下代码(`components/tools/<工具名称>.py`),您需要在`GetWeatherAlerts`类的`call`方法中实现此工具的调用和返回逻辑。 ```python # Auto generated by LangBot Plugin SDK. @@ -75,9 +77,9 @@ class GetWeatherAlerts(Tool): 在 `call` 方法中,实现该工具: -:::info + 天气获取工具用例来自 MCP 的 [Server 编写示例](https://modelcontextprotocol.io/quickstart/server)。 -::: + ```python from __future__ import annotations @@ -166,10 +168,10 @@ httpx 现在在插件目录执行命令`lbp run`,启动调试。在 LangBot 中配置支持工具调用的模型,并在对应流水线上选择使用该模型,即可使用该工具。 - + ## 接下来做什么 您已经了解了工具的基本用法,接下来可以: -- 查看[插件通用 API](/zh/plugin/dev/apis/common) \ No newline at end of file +- 查看[插件通用 API](/zh/plugin/dev/apis/common) diff --git a/docs/zh/plugin/dev/directory-structure.md b/zh/plugin/dev/directory-structure.mdx similarity index 90% rename from docs/zh/plugin/dev/directory-structure.md rename to zh/plugin/dev/directory-structure.mdx index c4d050e2d..7d70e0663 100644 --- a/docs/zh/plugin/dev/directory-structure.md +++ b/zh/plugin/dev/directory-structure.mdx @@ -1,8 +1,6 @@ -# 插件目录规范 - -:::info 目录 -[[toc]] -::: +--- +title: "插件目录规范" +--- 本文介绍 LangBot 插件的标准目录结构和文件组织规范,帮助开发者创建符合规范的插件。 @@ -38,12 +36,11 @@ LangBot 插件支持多语言 README 文档,以便为不同语言的用户提 **重要规范:** -1. **根目录 `README.md`(必需)** +1. **`根目录 README.md(必需)`** - 必须使用**英文**编写 - 作为插件的默认说明文档 - 当请求的语言版本不存在时,将回退到此文档 - -2. **`readme/` 目录(可选)** +2. **`readme/ 目录(可选)`** - 用于存放**非英文**的 README 文档 - 文件命名格式:`README_{语言代码}.md` @@ -51,12 +48,12 @@ LangBot 插件支持多语言 README 文档,以便为不同语言的用户提 根据 [RFC 4646](https://datatracker.ietf.org/doc/html/rfc4646) 标准,LangBot 目前支持以下语言代码: -| 语言 | 语言代码 | 文件名 | 位置 | -|------|----------|--------|------| -| 英文 | `en` 或 `en_US` | `README.md` | **插件根目录** | -| 简体中文 | `zh_Hans` | `README_zh_Hans.md` | `readme/` 目录 | -| 繁体中文 | `zh_Hant` | `README_zh_Hant.md` | `readme/` 目录 | -| 日语 | `ja_JP` | `README_ja_JP.md` | `readme/` 目录 | +| 语言 | 语言代码 | 文件名 | 位置 | +| ---- | -------------- | ------------------- | ------------ | +| 英文 | `en` 或 `en_US` | `README.md` | **插件根目录** | +| 简体中文 | `zh_Hans` | `README_zh_Hans.md` | `readme/` 目录 | +| 繁体中文 | `zh_Hant` | `README_zh_Hant.md` | `readme/` 目录 | +| 日语 | `ja_JP` | `README_ja_JP.md` | `readme/` 目录 | ### 示例目录结构 @@ -102,7 +99,6 @@ This is a plugin... - 用户请求简体中文(`zh_Hans`) - → 查找 `readme/README_zh_Hans.md` - → 如果不存在,返回 `README.md`(英文版) - - 用户请求日语(`ja_JP`) - → 查找 `readme/README_ja_JP.md` - → 如果不存在,返回 `README.md`(英文版) @@ -188,4 +184,4 @@ pillow>=9.0.0 - [基础教程](/zh/plugin/dev/tutor) - 了解如何创建第一个插件 - [完善配置信息](/zh/plugin/dev/basic-info) - 配置 manifest.yaml - [添加组件](/zh/plugin/dev/components/add) - 开发插件组件 -- [发布到插件市场](/zh/plugin/dev/publish/market) - 分发你的插件 +- [发布到插件市场](/zh/plugin/dev/publish/market) - 分发你的插件 \ No newline at end of file diff --git a/docs/zh/plugin/dev/migration.md b/zh/plugin/dev/migration.mdx similarity index 90% rename from docs/zh/plugin/dev/migration.md rename to zh/plugin/dev/migration.mdx index f196ee6d0..164cf0637 100644 --- a/docs/zh/plugin/dev/migration.md +++ b/zh/plugin/dev/migration.mdx @@ -1,14 +1,15 @@ -# 迁移指南 +--- +title: "迁移指南" +--- 本教程高亮了某些注意事项,请各位插件开发者在已阅读现版本插件教程后,再以此文档作为参考进行插件迁移。 ## 从 3.x 支持的异步插件迁移 -:::info -插件特征: + - 主要时间段:2024.2 ~ 2025.8 - 注册方式:`main.py` 中的插件类中使用 `@handler` 装饰器注册事件监听器、使用 `@llm_func` 装饰器注册内容函数(工具);处理函数均为异步函数(async def) -::: + - 插件和组件注册方式:已由以往的单一插件类中的装饰器注册方式,改为了清单文件注册方式,参阅[清单文件](/zh/plugin/dev/basic-info);并将各个不同类型的组件独立出来,详细请见[添加组件](/zh/plugin/dev/components/add)。 - 消息链实体:现已重构,每个消息链元素的构造方法现在需要显式传入**具名参数**,参阅[消息平台实体](/zh/plugin/dev/apis/messages)。 @@ -17,11 +18,10 @@ ## 从 2.x 和 3.x 支持的同步插件迁移 -:::info -插件特征: + - 主要时间段:2023.1 ~ 2024.2 - 注册方式:`main.py` 中的插件类中使用 `@on` 装饰器注册事件监听器、使用 `@func` 装饰器注册内容函数(工具);处理函数均为同步函数(def) -::: + - 同步改异步:插件运行时现已改为全异步(基于asyncio),请将插件所有涉及 IO 操作的代码改为异步写法。 -- 详细内容请参阅上述 3.x 异步插件迁移指南。 \ No newline at end of file +- 详细内容请参阅上述 3.x 异步插件迁移指南。 diff --git a/docs/zh/plugin/dev/publish/github.md b/zh/plugin/dev/publish/github.mdx similarity index 78% rename from docs/zh/plugin/dev/publish/github.md rename to zh/plugin/dev/publish/github.mdx index f68ade06f..fcd6fcfc4 100644 --- a/docs/zh/plugin/dev/publish/github.md +++ b/zh/plugin/dev/publish/github.mdx @@ -1,4 +1,6 @@ -# 通过 GitHub 分发插件 +--- +title: "通过 GitHub 分发插件" +--- 您可以将您的插件上传至 GitHub ,为仓库创建 Release 并上传 `.lbpkg` 文件,其他用户即可在 LangBot 上安装。 @@ -16,8 +18,8 @@ lbp build 请将该插件上传 GitHub,并前往插件仓库的 Release 页面,点击创建 Release,并上传刚刚打包的`.lbpkg`文件。 - + ## 安装插件 -请在 LangBot 的插件管理页面,点击右上角即可选择 GitHub 安装方式。 \ No newline at end of file +请在 LangBot 的插件管理页面,点击右上角即可选择 GitHub 安装方式。 diff --git a/docs/zh/plugin/dev/publish/market.md b/zh/plugin/dev/publish/market.mdx similarity index 88% rename from docs/zh/plugin/dev/publish/market.md rename to zh/plugin/dev/publish/market.mdx index 0f6624bc8..866552705 100644 --- a/docs/zh/plugin/dev/publish/market.md +++ b/zh/plugin/dev/publish/market.mdx @@ -1,4 +1,6 @@ -# 发布插件到插件市场 +--- +title: "发布插件到插件市场" +--- 通过 CLI 将插件发布至 [LangBot 插件市场](https://space.langbot.app/market)。 @@ -6,7 +8,7 @@ LangBot Space 是 LangBot 提供中心化服务平台。请访问[LangBot Space](https://space.langbot.app),点击右上角使用 GitHub 登录并创建账号。 - + 这将跳转到 GitHub 授权页面,请根据提示完成授权。 @@ -31,7 +33,7 @@ Waiting for verification... 请点击`Verification URL`跳转至 LangBot Space,输入`User Code`完成登录。 - + ```bash ================================================== @@ -60,6 +62,6 @@ Plugin built successfully: dist/tmp/RockChinQ-HelloPlugin-0.1.0.lbpkg 您现在可以在[LangBot 插件市场](https://space.langbot.app/market)查看您的插件提交任务。请等待审核通过后,您可以在插件市场查看您的插件。 - + 有任何问题,您可以发送邮件到`hello@langbot.app`或通过[社区](/zh/insight/community)联系我们。 diff --git a/docs/zh/plugin/dev/style.md b/zh/plugin/dev/style.mdx similarity index 92% rename from docs/zh/plugin/dev/style.md rename to zh/plugin/dev/style.mdx index 6cf7a691f..2a8ced43f 100644 --- a/docs/zh/plugin/dev/style.md +++ b/zh/plugin/dev/style.mdx @@ -1,4 +1,6 @@ -# 代码规范指南 +--- +title: "代码规范指南" +--- ## 日志记录 diff --git a/docs/zh/plugin/dev/tutor.md b/zh/plugin/dev/tutor.mdx similarity index 89% rename from docs/zh/plugin/dev/tutor.md rename to zh/plugin/dev/tutor.mdx index 9c30acd39..e7b6d2b3d 100644 --- a/docs/zh/plugin/dev/tutor.md +++ b/zh/plugin/dev/tutor.mdx @@ -1,10 +1,12 @@ -# 插件开发教程 +--- +title: "插件开发教程" +--- ## 架构基础 在 4.0 版本中,我们引入了一种高安全性、高灵活性的生产级插件系统,并为插件开发者提供了丰富的 API 和易用的配套工具。 - + Plugin Runtime (插件运行时),用于管理插件的生命周期,协调 LangBot 与插件之间的交互。有两种运行模式:`stdio` 和 `websocket`。当 LangBot 是由用户直接启动(未运行在容器内时),会使用 `stdio` 模式,这种场景多为个人用户或轻量级环境。当 LangBot 运行在容器内时,会使用 `websocket` 模式,此场景专为生产级环境设计。 @@ -43,11 +45,10 @@ main.py 中的插件类是每个插件通用的代码,在插件被启动时会 各个组件是您插件的核心功能模块,可以根据需要[添加和删除组件](/zh/plugin/dev/components/add)。不同的组件会在不同的情况下被调用,这种设计方便后续扩展插件功能。各个组件均直接继承于`langbot_plugin.api.definition.components`包下的各个组件基类,并在其中包含`plugin: BasePlugin`对象,您可直接调用插件的 API。 -::: info -- 详细的 API 说明请参考[API 参考](/zh/plugin/dev/apis/common)。 + 请您继续阅读本页教程,了解插件的开发流程。 -::: + ## AI 辅助开发 @@ -73,16 +74,14 @@ lbp init 按照提示输入`Author(作者)`、`Description(描述)`等信息 -:::info -您也可以使用`lbp init HelloPlugin`命令,在子目录`HelloPlugin`中初始化插件。 + - -::: + + 此操作将生成插件的初始文件。您现在可以在您喜爱的编辑器中打开 `HelloPlugin` 目录,开始编写插件代码。 -:::info -若提示找不到 `lbp` 命令,可能是由于您未正确设置 `PATH` 环境变量。 + 可使用`python -m langbot_plugin.cli.__init__`替代`lbp`命令。 例如: @@ -91,14 +90,13 @@ lbp init python -m langbot_plugin.cli.__init__ init HelloPlugin cd HelloPlugin ``` -::: + ## 启动调试 您需要先部署并启动 LangBot,确保 Plugin Runtime 正在运行并监听 `5401` 端口。 -::: info -Runtime 有两种启动方式: + - `Stdio` 模式:当您使用源代码启动 LangBot 并未携带启动参数`--standalone-runtime`时,LangBot 会自动以子进程的形式启动 Plugin Runtime,并通过 `stdio`(标准输入输出流)模式与 Plugin Runtime 通信。此时 Runtime 会加载 LangBot 根目录的`data/plugins`目录下的插件。并监听 LangBot 运行主机的`5401`端口作为调试端口。 @@ -109,7 +107,7 @@ Runtime 有两种启动方式: 无论是`stdio`或`websocket`模式,Plugin Runtime 都会监听其所在的主机的`5401`端口作为调试端口供插件调试时连接。 当您在开发插件时,推荐您按照[开发配置](/zh/develop/dev-config)中的方式 LangBot,此方式将以 Stdio 形式启动 Plugin Runtime,便于插件开发。 -::: + 复制插件目录下的`.env.example`文件为`.env`,检查或修改`DEBUG_RUNTIME_WS_URL`为您的 Plugin Runtime 的 WebSocket 地址。 @@ -123,11 +121,11 @@ cp .env.example .env lbp run ``` - + 并可以在 LangBot 的 WebUI 中看到此插件已被加载。 - + ## 接下来做什么 diff --git a/docs/zh/plugin/plugin-intro.md b/zh/plugin/plugin-intro.mdx similarity index 78% rename from docs/zh/plugin/plugin-intro.md rename to zh/plugin/plugin-intro.mdx index 6c59b864b..c994a629f 100644 --- a/docs/zh/plugin/plugin-intro.md +++ b/zh/plugin/plugin-intro.mdx @@ -1,10 +1,12 @@ -# LangBot 插件 +--- +title: "LangBot 插件" +--- LangBot 内部由多种组件组成,如大模型工具、命令、消息平台适配器、大模型请求器等。为了满足扩展性和灵活性的需求,我们实现了一套生产级的插件系统。 每个插件被运行在独立的进程中,由 Plugin Runtime 统一管理。 - + ## 插件结构 @@ -22,17 +24,17 @@ LangBot 内部由多种组件组成,如大模型工具、命令、消息平台 目前支持上传插件包安装、从插件市场安装以及从 GitHub Release 安装插件。 在 LangBot 的插件管理页面,点击右上角即可选择安装方式 - + 点击本地安装,选择他人分享的或从 Marketplace 下载的`.lbpkg`文件,即可安装插件。 或点击插件市场 Tab,选择插件后点击安装。 - + 安装插件后,您需要到流水线配置中,选择所需要使用的插件。 - + ## 插件管理 @@ -40,13 +42,13 @@ LangBot 内部由多种组件组成,如大模型工具、命令、消息平台 某些插件可能会要求您填入特定的配置项(请参考插件 README 说明),请点击插件卡片进入插件详情页,按照提示获取并输入。 - + ### 更新插件 仅支持更新从插件市场安装的插件。 - + ## 插件市场 diff --git a/docs/zh/tags/readme.md b/zh/tags/readme.mdx similarity index 79% rename from docs/zh/tags/readme.md rename to zh/tags/readme.mdx index 4a471f90b..2df01f875 100644 --- a/docs/zh/tags/readme.md +++ b/zh/tags/readme.mdx @@ -1,21 +1,23 @@ -# Service API 概述 +--- +title: "Service API 概述" +--- LangBot 提供了一套供外部服务使用的 API 接口,便于集成。这些接口以 API Key 鉴权,是目前 HTTP API 的子集。要查看前后端通信的 API 文档,请前往[开发](/zh/develop/dev-config)部分。 -::: warning + Service API 目前处于 Beta 阶段,部分接口可能会频繁变动。 -::: + ## 获取 API Key 点击 WebUI 侧栏的`API Keys`按钮,创建一个 API Key。 -![create_api_key](/assets/image/zh/api/create_api_key.png) +![create_api_key](/images/zh/api/create_api_key.png) 创建后,复制 API Key 并保存。 -![copy_api_key](/assets/image/zh/api/copy_api_key.png) +![copy_api_key](/images/zh/api/copy_api_key.png) ## 使用 API -左侧列出了所有可用的 API,您可以填入您的实例地址(后端开放的端口地址,默认为 `http://localhost:5300`)和 API Key,然后点击`Try it out`按钮即可调用 API。 \ No newline at end of file +左侧列出了所有可用的 API,您可以填入您的实例地址(后端开放的端口地址,默认为 `http://localhost:5300`)和 API Key,然后点击`Try it out`按钮即可调用 API。 diff --git a/docs/zh/tags/webhook.md b/zh/tags/webhook.mdx similarity index 98% rename from docs/zh/tags/webhook.md rename to zh/tags/webhook.mdx index 6f7ce783e..9f864c7b7 100644 --- a/docs/zh/tags/webhook.md +++ b/zh/tags/webhook.mdx @@ -1,4 +1,6 @@ -# Webhooks +--- +title: "Webhooks" +--- Webhooks 允许您将机器人收到的消息事件发送到外部服务进行处理。 @@ -85,9 +87,9 @@ Webhook 服务应返回 JSON 响应: - `true`: 消息不会继续在流水线中处理 - `false`: 消息正常进入流水线处理 -::: tip + `skip_pipeline` 允许您完全接管消息处理。设置为 `true` 时,消息只由 Webhook 服务处理,不触发 LangBot 的 AI 对话功能。 -::: + ## 集成示例 diff --git a/docs/zh/tob/contact.md b/zh/tob/contact.mdx similarity index 67% rename from docs/zh/tob/contact.md rename to zh/tob/contact.mdx index 3fe11acd4..403cf3a40 100644 --- a/docs/zh/tob/contact.md +++ b/zh/tob/contact.mdx @@ -1,6 +1,9 @@ -# 咨询方式 - -作者长期提供定制服务,欢迎咨询: - -- 微信:junyan_qin +--- +title: "咨询方式" +hidden: true +--- + +作者长期提供定制服务,欢迎咨询: + +- 微信:junyan_qin - QQ:1010553892 \ No newline at end of file diff --git a/docs/zh/tob/index.md b/zh/tob/index.mdx similarity index 74% rename from docs/zh/tob/index.md rename to zh/tob/index.mdx index 2d4065434..5b958bffe 100644 --- a/docs/zh/tob/index.md +++ b/zh/tob/index.mdx @@ -1,5 +1,7 @@ -# 规模使用和商用指南 - -LangBot 已经具备了一定的生产能力,目前已在多家公司的生产环境运行并承担一定的业务。我们相信您非常重视合规性和稳定性方面的问题,此章节将基于一些已有的案例讲解商用最佳实践。 - -请点击左侧目录查看具体内容。 \ No newline at end of file +--- +title: "规模使用和商用指南" +--- + +LangBot 已经具备了一定的生产能力,目前已在多家公司的生产环境运行并承担一定的业务。我们相信您非常重视合规性和稳定性方面的问题,此章节将基于一些已有的案例讲解商用最佳实践。 + +请点击左侧目录查看具体内容。 diff --git a/docs/zh/tob/platform.md b/zh/tob/platform.mdx similarity index 83% rename from docs/zh/tob/platform.md rename to zh/tob/platform.mdx index 3a8fa0a69..21c3a5cfe 100644 --- a/docs/zh/tob/platform.md +++ b/zh/tob/platform.mdx @@ -1,33 +1,29 @@ -# 消息平台稳定性 - -:::info 目录 -[[toc]] -::: - -主流的机器人都是使用`逆向工程`的方式,破解QQ的通信协议,实现程序控制的功能。这种方式具有一定的灰色性质,可能会被腾讯系统风控。 - -目前的案例来看,现有的逆向工程可以实现多个月的较稳定运行,服务宕机恢复不会超过24小时,有完善的社区支持,可以较好地应对商业用途。 - -## 降低被风控风险 - -- 在配置文件中启用`强制消息延迟`、`请求限速功能`,使机器人回复用户消息的速度降低,减少被风控的风险。 - -- 避免将机器人放到人员复杂的大群里使用。这个一般不会出问题,有过在3000人大群稳定运行近一年的案例。但若是群内人员频繁举报机器人账号,可能会被风控。 - -- 使用境内主机或家用网络的电脑运行消息平台,尽量不使用境外主机。 - -## 机器人服务多开 - -如果机器人的业务与账号本身弱相关,可以考虑开启多个`消息平台`(例如使用两个账号登录两个Lagrange实例),在一个机器人被腾讯封号后,另一个机器人还可以继续服务。 - -## 使用 QQ 官方机器人 API - -腾讯官方在23年下半年开放了Q群机器人API,LangBot 很好地支持这个 API,可以查看部署教程中的配置方式使用。 - -但 QQ 官方机器人API具有以下已知的局限性: - -- 需要企业资质才能申请 -- 仅支持群内使用,不支持私聊 -- 仅能接收到群内@机器人的消息,无法接收到群内其他消息 -- 主动发送消息每天限次 +--- +title: "消息平台稳定性" +--- + +主流的 QQ、微信机器人都是使用`逆向工程`的方式,破解QQ的通信协议,实现程序控制的功能。这种方式具有一定的灰色性质,可能会被腾讯系统风控。 + +目前的案例来看,现有的逆向工程可以实现多个月的较稳定运行,服务宕机恢复不会超过24小时,有完善的社区支持,可以较好地应对商业用途。 + +## 降低被风控风险 + +- 在配置文件中启用`强制消息延迟`、`请求限速功能`,使机器人回复用户消息的速度降低,减少被风控的风险。 +- 避免将机器人放到人员复杂的大群里使用。这个一般不会出问题,有过在3000人大群稳定运行近一年的案例。但若是群内人员频繁举报机器人账号,可能会被风控。 +- 使用境内主机或家用网络的电脑运行消息平台,尽量不使用境外主机。 + +## 机器人服务多开 + +如果机器人的业务与账号本身弱相关,可以考虑开启多个`消息平台`(例如使用两个账号登录两个Lagrange实例),在一个机器人被腾讯封号后,另一个机器人还可以继续服务。 + +## 使用 QQ 官方机器人 API + +腾讯官方在23年下半年开放了Q群机器人API,LangBot 很好地支持这个 API,可以查看部署教程中的配置方式使用。 + +但 QQ 官方机器人API具有以下已知的局限性: + +- 需要企业资质才能申请 +- 仅支持群内使用,不支持私聊 +- 仅能接收到群内@机器人的消息,无法接收到群内其他消息 +- 主动发送消息每天限次 - 腾讯对 AIGC 功能的机器人审核较严格 \ No newline at end of file diff --git a/docs/zh/tob/provider.md b/zh/tob/provider.mdx similarity index 86% rename from docs/zh/tob/provider.md rename to zh/tob/provider.mdx index d8a2b4fd1..4cf889b7a 100644 --- a/docs/zh/tob/provider.md +++ b/zh/tob/provider.mdx @@ -1,13 +1,15 @@ -# AI 内容合规性 - -> 国家对AIGC的管理办法参考资料 -> -> - [生成式人工智能服务管理暂行办法](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm) - -在内容管控方面,LangBot 内置了`关键词检测`、`百度智能云审核`等内容过滤器,具体请查看配置文件章节。 - -在实践中,应该辅以群内管理员禁言之类的方式管控内容,模型方面,以下是推荐的方案(按推荐顺序): - -1. 使用国产模型 -2. 使用严格的内容过滤器(可自行实现,详细参考插件功能章节) -3. 在使用境外模型时辅以严格的 Prompt \ No newline at end of file +--- +title: "AI 内容合规性" +--- + +> 国家对AIGC的管理办法参考资料 +> +> - [生成式人工智能服务管理暂行办法](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm) + +在内容管控方面,LangBot 内置了`关键词检测`、`百度智能云审核`等内容过滤器,具体请查看配置文件章节。 + +在实践中,应该辅以群内管理员禁言之类的方式管控内容,模型方面,以下是推荐的方案(按推荐顺序): + +1. 使用国产模型 +2. 使用严格的内容过滤器(可自行实现,详细参考插件功能章节) +3. 在使用境外模型时辅以严格的 Prompt diff --git a/docs/zh/usage/knowledge/readme.md b/zh/usage/knowledge/readme.mdx similarity index 60% rename from docs/zh/usage/knowledge/readme.md rename to zh/usage/knowledge/readme.mdx index 5a38ab831..d2bee7678 100644 --- a/docs/zh/usage/knowledge/readme.md +++ b/zh/usage/knowledge/readme.mdx @@ -1,34 +1,37 @@ -# 使用知识库 (Knowledge Base) +--- +title: "使用知识库 (Knowledge Base)" +--- LangBot 原生支持 RAG(Retrieval-Augmented Generation,即检索增强生成),您可以创建内置知识库,并将其与流水线绑定,流水线将根据知识库中的内容回答问题。同时,我们支持接入外部服务(Dify、RAGFLow等)提供的知识检索服务。 ## 构建内置知识库 -:::info -- 内置知识库的创建和使用需要先配置嵌入模型,请先阅读[配置模型](/zh/usage/models/readme)。 -::: + +内置知识库的创建和使用需要先配置嵌入模型,请先阅读[配置模型](/zh/usage/models/readme)。 + -在知识库页面,点击`创建知识库`按钮,填写知识库名称,选择已配置好的嵌入模型,然后点击`创建`按钮。 -之后请到知识库的“文档”页面,上传文档,LangBot 将会在后台开始解析和索引。 +在知识库页面,点击`创建知识库`按钮,填写知识库名称,选择已配置好的嵌入模型,然后点击`创建`按钮。 -create_kb +之后请到知识库的”文档”页面,上传文档,LangBot 将会在后台开始解析和索引。 + +create_kb ## 接入外部知识库 -请在知识库页面,切换到“外部知识库”标签页,添加外部知识库。在对话框中可以选择需要使用的外部知识库检索器,您需要先在插件管理中安装对应的插件。目前支持的知识检索器可以在[插件市场](https://space.langbot.app/market?category=KnowledgeRetriever)中查看。 +请在知识库页面,切换到”外部知识库”标签页,添加外部知识库。在对话框中可以选择需要使用的外部知识库检索器,您需要先在插件管理中安装对应的插件。目前支持的知识检索器可以在[插件市场](https://space.langbot.app/market?category=KnowledgeRetriever)中查看。 ## 使用知识库 -请到流水线配置中,“AI 能力”页,选择`内置 Agent`作为运行器,并在下方选择您刚刚创建的知识库。 +请到流水线配置中,”AI 能力”页,选择`内置 Agent`作为运行器,并在下方选择您刚刚创建的知识库。 -use_kb +use_kb -use_kb +use_kb -:::info + 仅当运行器为`内置 Agent`时,才可以使用 LangBot 原生知识库,若要在使用其他运行器时使用知识库,请参考所使用的运行器对应产品的文档。 -::: + 现在即可在`对话调试`或流水线所绑定的机器人上使用知识库进行对话: -use_kb_in_chat \ No newline at end of file +use_kb_in_chat diff --git a/docs/zh/usage/mcp/readme.md b/zh/usage/mcp/readme.mdx similarity index 52% rename from docs/zh/usage/mcp/readme.md rename to zh/usage/mcp/readme.mdx index 8dc5a8912..d48264a46 100644 --- a/docs/zh/usage/mcp/readme.md +++ b/zh/usage/mcp/readme.mdx @@ -1,37 +1,57 @@ -# 使用MCP服务器 - +--- +title: "使用MCP服务器" +--- LangBot 支持使用来自 MCP 服务器的工具,您可以添加 MCP 服务器,使用大语言模型中的工具调用特性,更好的处理 LLM 请求。 -:::info -- MCP 服务支持 HTTP Streamable、SSE 和 stdio 模式。 -- MCP 服务器推荐获取渠道:[ModelScope](https://modelscope.cn/mcp) -::: + + MCP 服务器推荐获取渠道:[ModelScope](https://modelscope.cn/mcp) + ## 打开模型的函数调用功能 如图,将模型的`函数调用`功能打开。 -enable function call +enable function call ## 创建MCP服务器 -点击`插件管理` -> `MCP管理`,如图所示: +点击`插件管理` -\> `MCP管理`,如图所示: -server page +server page 点击右上角的`添加`,选择`添加 MCP 服务器`, -create new mcp server +create new mcp server 比如使用 Fetch HTML 服务器,填写对应的 URL,点击`测试`用来测试 MCP 服务器,点`提交`添加此服务器。 添加完成之后,点击卡片上的开关以连接 MCP 服务器,点击卡片可以看到 MCP 服务器的详情: -detailed server +detailed server ## 效果 需要在流水线设置中选用 `内置 Agent` 作为运行器,并使用支持函数调用的模型。 -dialog with mcp +dialog with mcp \ No newline at end of file diff --git a/docs/zh/usage/models/readme.md b/zh/usage/models/readme.mdx similarity index 81% rename from docs/zh/usage/models/readme.md rename to zh/usage/models/readme.mdx index e2159d55e..75fcee660 100644 --- a/docs/zh/usage/models/readme.md +++ b/zh/usage/models/readme.mdx @@ -1,10 +1,12 @@ -# 配置模型 (Models) +--- +title: "配置模型 (Models)" +--- ## LangBot Models LangBot Models 是 LangBot 官方提供的模型服务。当您使用 LangBot Space 账户初始化本地实例时,可用模型将被自动添加到您的实例中,无需进行任何配置。您将会获得一定的免费额度用于快速上手。 -langbot_models +langbot_models 具体可用模型,请查看[LangBot Space](https://space.langbot.app/models)。 @@ -16,11 +18,11 @@ LangBot Models 是 LangBot 官方提供的模型服务。当您使用 LangBot Sp 对话模型将被流水线用于处理消息,您配置的第一个模型将被设置为默认流水线的模型。 -![arch](/assets/image/zh/deploy/models/arch.png) +![arch](/images/zh/deploy/models/arch.png) 可以添加多个模型,然后再流水线中选择具体使用什么模型 -model_config +model_config 填入这四个参数`模型名称`、`模型供应商`、`请求 URL`、`API Key`,然后提交即可 @@ -34,7 +36,7 @@ LangBot Models 是 LangBot 官方提供的模型服务。当您使用 LangBot Sp 嵌入模型将被用于计算消息的向量,若您需要使用知识库,请配置此模型。 -embedding_model +embedding_model 填入这四个参数`模型名称`、`模型供应商`、`请求 URL`、`API Key`,然后提交即可,之后请在知识库中配置使用此模型。 diff --git a/docs/zh/usage/pipelines/coze.md b/zh/usage/pipelines/coze.mdx similarity index 77% rename from docs/zh/usage/pipelines/coze.md rename to zh/usage/pipelines/coze.mdx index bdaa3b033..7d2ce72dc 100644 --- a/docs/zh/usage/pipelines/coze.md +++ b/zh/usage/pipelines/coze.mdx @@ -1,22 +1,24 @@ -# 接入 Coze API +--- +title: "接入 Coze API" +--- 本文仅说明如何在 Coze 平台获取 Token 与 Bot ID,并将其填写到 LangBot 流水线配置中。 ## 1. 获取 Token 与 Bot ID 1. 登录 Coze 平台,进入你的开发控制台。 -![Coze 应用 API 密钥](/assets/image/zh/deploy/pipelines/coze/coze07.png) +![Coze 应用 API 密钥](/images/zh/deploy/pipelines/coze/coze07.png) 2. 在“API 管理”中创建并复制令牌。 -![Coze 应用 API 密钥](/assets/image/zh/deploy/pipelines/coze/coze06.png) +![Coze 应用 API 密钥](/images/zh/deploy/pipelines/coze/coze06.png) -:::info + coze.cn 的授权中有可以长期授权的`服务身份及凭证`,但是 coze.com 只有个人访问令牌。 -::: + 3. 从项目开发中选择你自己的智能体,或者新建智能体,拿到一下id就是bot_id。 -![Coze bot_id](/assets/image/zh/deploy/pipelines/coze/coze05.png) +![Coze bot_id](/images/zh/deploy/pipelines/coze/coze05.png) * 智能体发布一定要选上api的选项 -![Coze 应用 API 密钥](/assets/image/zh/deploy/pipelines/coze/coze04.png) +![Coze 应用 API 密钥](/images/zh/deploy/pipelines/coze/coze04.png) @@ -33,7 +35,7 @@ coze.cn 的授权中有可以长期授权的`服务身份及凭证`,但是 coz - bot_id:粘贴对应机器人的 Bot ID - 请根据您使用的 Coze 站点选择 `API 基础 URL`:coze.cn 请填写 `https://api.coze.cn`;coze.com 请填写 `https://api.coze.com` - ![流水线配置](/assets/image/zh/deploy/pipelines/coze/coze08.png) + ![流水线配置](/images/zh/deploy/pipelines/coze/coze08.png) 4. 点击“保存”完成配置。 完成后,你即可在该流水线中调用 Coze 机器人完成对话处理。 @@ -42,4 +44,4 @@ coze.cn 的授权中有可以长期授权的`服务身份及凭证`,但是 coz - 保存失败或调用报错:请确认 token 与 bot_id 是否正确且未包含多余空格。 - 无法选择 `Coze API`:请确认当前版本是否已支持该运行器;若尚未支持,请升级到包含 Coze 运行器的版本。 -更多流水线通用配置说明,请参考[修改对话流水线配置](/zh/usage/pipelines/readme)。 \ No newline at end of file +更多流水线通用配置说明,请参考[修改对话流水线配置](/zh/usage/pipelines/readme)。 diff --git a/docs/zh/usage/pipelines/dify.md b/zh/usage/pipelines/dify.mdx similarity index 77% rename from docs/zh/usage/pipelines/dify.md rename to zh/usage/pipelines/dify.mdx index 66206dd02..05efc4d41 100644 --- a/docs/zh/usage/pipelines/dify.md +++ b/zh/usage/pipelines/dify.mdx @@ -1,4 +1,6 @@ -# 在 LangBot 上使用 Dify +--- +title: "在 LangBot 上使用 Dify" +--- [Dify](https://dify.ai) 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。 Dify 可以创建聊天助手(含Chatflow)、Agent、文本生成应用、工作流等应用。 @@ -11,32 +13,30 @@ LangBot 目前支持`聊天助手`(含Chatflow)、`Agent`、`工作流`三 发布应用后,在应用的 `访问API` 页面,生成 API 密钥。 -![Dify 应用 API 密钥](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_01.png) +![Dify 应用 API 密钥](/images/zh/deploy/pipelines/dify/dify_sv_api_01.png) 保存 API 服务器和 API 密钥,在 LangBot 的流水线的`AI 能力`配置。 -:::info -以上为 Dify 云服务版本的示例,若您使用本地自部署的社区版本,请使用 LangBot 访问你自己 Dify 服务的地址作为 `base-url`,后方需要添加 `/v1` 作为路径。 + - 若 LangBot 与 Dify 部署在同一台主机,并且都是使用 Docker 部署的,可以参考文章:[网络配置详解](/zh/workshop/network-details.html#langbot-%E5%92%8C%E6%B6%88%E6%81%AF%E5%B9%B3%E5%8F%B0%E5%9D%87%E8%BF%90%E8%A1%8C%E5%9C%A8-docker-%E5%AE%B9%E5%99%A8%E4%B8%AD)。其中,请将启动 Dify 的 docker-compose.yaml 中所有容器的`networks`均添加`langbot-network`,并为`nginx`容器添加容器名`dify-nginx`,最后在 LangBot 配置中将`base-url`设置为`http://dify-nginx/v1`。 - 其他情况请咨询贵司运维人员。 -::: + ## 配置 LangBot 打开 LangBot WebUI 页面,添加一个新的流水线或在已有流水线中切换到 AI 能力配置页面。 -![设置开发项](/assets/image/zh/deploy/pipelines/dify/dify_sv_api_02.png) +![设置开发项](/images/zh/deploy/pipelines/dify/dify_sv_api_02.png) -::: info -### 工作流输出键 + 如果使用的是 Dify 的工作流应用,那么请使用 `summary` 作为键传递输出内容。 -![Dify 工作流应用的输出键](/assets/image/zh/deploy/pipelines/dify/dify_workflow_output_key.png) +![Dify 工作流应用的输出键](/images/zh/deploy/pipelines/dify/dify_workflow_output_key.png) ## 输出处理 使用 工作流 应用或 Agent 应用时,如果开启了 LangBot 流水线`输出处理`中的`track-function-calls`,将会在 Dify 执行每个工具调用时,输出一个`调用函数xxx`的消息给用户。 但如果是使用`chat`应用下的`ChatFlow`(聊天助手->工作流编排),无论如何只会输出 Answer(直接回复)节点返回的文本。 -::: \ No newline at end of file + diff --git a/docs/zh/usage/pipelines/langflow.md b/zh/usage/pipelines/langflow.mdx similarity index 67% rename from docs/zh/usage/pipelines/langflow.md rename to zh/usage/pipelines/langflow.mdx index 2a247298b..fec1d124c 100644 --- a/docs/zh/usage/pipelines/langflow.md +++ b/zh/usage/pipelines/langflow.mdx @@ -1,4 +1,6 @@ -# 在 LangBot 上使用 Langflow +--- +title: "在 LangBot 上使用 Langflow" +--- Langflow 是一个开源的用于构建和部署基于 AI 的 Agent 和工作流的项目。其支持本地和云端部署,并提供 API 供其他应用接入。 @@ -10,22 +12,22 @@ LangBot 目前支持使用 Langflow 作为运行器。 以默认模板中的 Simple Agent 为例: -![create_flow](/assets/image/zh/deploy/pipelines/langflow/create_flow.png) +![create_flow](/images/zh/deploy/pipelines/langflow/create_flow.png) 您可根据需求修改工作流: -![edit_flow](/assets/image/zh/deploy/pipelines/langflow/edit_flow.png) +![edit_flow](/images/zh/deploy/pipelines/langflow/edit_flow.png) ## 配置 LangBot 打开 LangBot WebUI 页面,添加一个新的流水线或在已有流水线中切换到 AI 能力配置页面,选择`Langflow API` 作为运行器。 -![set_langflow_runner](/assets/image/zh/deploy/pipelines/langflow/set_langflow_runner.png) +![set_langflow_runner](/images/zh/deploy/pipelines/langflow/set_langflow_runner.png) 根据提示填入`Base URL`(根据实际网络情况填写) `API Key` `Flow ID` 等信息,API Key 可在 Langflow 的 Settings 中获取: -![get_api_key](/assets/image/zh/deploy/pipelines/langflow/get_api_key.png) +![get_api_key](/images/zh/deploy/pipelines/langflow/get_api_key.png) Flow ID 可点击编辑页右上角的`Share` -> `API access` 并示例代码中获取: -![get_flow_id](/assets/image/zh/deploy/pipelines/langflow/get_flow_id.png) \ No newline at end of file +![get_flow_id](/images/zh/deploy/pipelines/langflow/get_flow_id.png) diff --git a/docs/zh/usage/pipelines/n8n.md b/zh/usage/pipelines/n8n.mdx similarity index 52% rename from docs/zh/usage/pipelines/n8n.md rename to zh/usage/pipelines/n8n.mdx index f496a90bb..f430c3b45 100644 --- a/docs/zh/usage/pipelines/n8n.md +++ b/zh/usage/pipelines/n8n.mdx @@ -1,4 +1,6 @@ -# 在 LangBot 上使用 n8n +--- +title: "在 LangBot 上使用 n8n" +--- [n8n](https://n8n.io/) 是一款开源的自动化工作流平台,可以创建、调度、执行各种自动化任务。 @@ -8,46 +10,44 @@ LangBot 目前支持通过 n8n 工作流的 `Webhook` 节点,来触发工作 请打开已有的流水线配置页面,或新建流水线(推荐)并打开配置页面,到 `AI 能力`中选择 `n8n 工作流 API` 作为运行器。 -![n8n 作为运行器](/assets/image/zh/deploy/pipelines/n8n/config_runner.png) +![n8n 作为运行器](/images/zh/deploy/pipelines/n8n/config_runner.png) 并根据下方内容设置并填写其他配置。 ## 配置 n8n 工作流连接 -![n8n 工作流](/assets/image/zh/deploy/pipelines/n8n/create_wf.png) +![n8n 工作流](/images/zh/deploy/pipelines/n8n/create_wf.png) or -![n8n 工作流](/assets/image/zh/deploy/pipelines/n8n/create_wf01.png) +![n8n 工作流](/images/zh/deploy/pipelines/n8n/create_wf01.png) 需要选择`Webhook`或者`On chat message`触发,并参考下图配置: * webhook - ![n8n webhook 配置](/assets/image/zh/deploy/pipelines/n8n/config_webhook.png) + ![n8n webhook 配置](/images/zh/deploy/pipelines/n8n/config_webhook.png) * on chat message - ![n8n on chat message 配置](/assets/image/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) + ![n8n on chat message 配置](/images/zh/deploy/pipelines/n8n/config_n8n_onchatmessage.png) -:::info -如果要需要流式,其中的`Response Mode`都需要选择为`Streaming`。 -![n8n 流式配置](/assets/image/zh/deploy/pipelines/n8n/config_response_model.png) -::: + +![n8n 流式配置](/images/zh/deploy/pipelines/n8n/config_response_model.png) + -:::info -Authentication 对应 LangBot 流水线配置中的几种鉴权方式,可自行更改。 + -![n8n 工作流配置](/assets/image/zh/deploy/pipelines/n8n/config_auth.png) -::: +![n8n 工作流配置](/images/zh/deploy/pipelines/n8n/config_auth.png) + 调用ai模型的节点可配置为`AI Agent`,并参考下图配置: > 需要流式则将图片中红框内容添加,不需要则不管 -![n8n 调用ai模型配置](/assets/image/zh/deploy/pipelines/n8n/config_call_ai.png) +![n8n 调用ai模型配置](/images/zh/deploy/pipelines/n8n/config_call_ai.png) n8n 的工作流响应内容请使用`Respond to Webhook`节点,并参考下图配置(如果你选择的是流式响应和`AI Agent`节点,则不需要操作此步骤): -![n8n 工作流响应配置](/assets/image/zh/deploy/pipelines/n8n/config_respond.png) +![n8n 工作流响应配置](/images/zh/deploy/pipelines/n8n/config_respond.png) `Response Body`中的响应内容键名需要与 LangBot 流水线配置中的`输出键名`一致。 -在完成 n8n 工作流的配置之后,请在其顶部点击`Active`以启用工作流。 \ No newline at end of file +在完成 n8n 工作流的配置之后,请在其顶部点击`Active`以启用工作流。 diff --git a/docs/zh/usage/pipelines/readme.md b/zh/usage/pipelines/readme.mdx similarity index 82% rename from docs/zh/usage/pipelines/readme.md rename to zh/usage/pipelines/readme.mdx index 067e4f064..30314cc98 100644 --- a/docs/zh/usage/pipelines/readme.md +++ b/zh/usage/pipelines/readme.mdx @@ -1,10 +1,12 @@ -# 修改对话流水线配置 (Pipelines) +--- +title: "修改对话流水线配置 (Pipelines)" +--- 流水线控制了收到消息之后的处理流程,以及与大模型之间的信息交互。每个机器人可以绑定到一条流水线上,同一条流水线能被多个机器人绑定。 LangBot 首次启动时会自动创建一个默认的流水线。创建机器人时,会自动绑定到默认流水线。创建第一个模型时,会自动将其设置为默认流水线的模型。 -![arch](/assets/image/zh/deploy/pipelines/arch.png) +![arch](/images/zh/deploy/pipelines/arch.png) 您可以创建多条流水线,用于不同的机器人,适应不同的场景。 @@ -20,13 +22,13 @@ AI 能力主要分为两个部分,选择运行器和配置运行器参数。 运行器定义了如何调度大模型处理消息,默认为`内置 Agent`,这是 LangBot 实现的一个多回合 Agent 策略,当且仅当选择此运行器时,才会使用 LangBot 内部配置的模型和工具。 -** +{/* ![edit_pipeline](/images/zh/deploy/pipelines/edit_pipeline_ai.png) */} -edit_pipeline +edit_pipeline 您也可以选择使用 `Dify`、 [`n8n`](https://n8n.io/) 等外部 LLMOps 平台,这种情况下所使用的模型和提示词、工具等资源将由 LLMOps 平台提供。 -more_runner +more_runner - 接入 Dify 的详细步骤可以[参考教程](/zh/usage/pipelines/dify.html)。 - 接入 n8n 的详细步骤可以[参考教程](/zh/usage/pipelines/n8n.html)。 @@ -47,8 +49,8 @@ AI 能力主要分为两个部分,选择运行器和配置运行器参数。 您可以[通过插件自定义任何变量](/zh/plugin/dev/apis/common.html#%E8%AE%BE%E7%BD%AE%E8%AF%B7%E6%B1%82%E5%8F%98%E9%87%8F)。 -![Dify 工作流开始节点配置](/assets/image/zh/workshop/dify-service-api/dify_workflow_var.png) +![Dify 工作流开始节点配置](/images/zh/workshop/dify-service-api/dify_workflow_var.png) ## 其他配置 -请参考配置表单中的描述信息。 \ No newline at end of file +请参考配置表单中的描述信息。 diff --git a/docs/zh/usage/pipelines/tbox.md b/zh/usage/pipelines/tbox.mdx similarity index 71% rename from docs/zh/usage/pipelines/tbox.md rename to zh/usage/pipelines/tbox.mdx index 1a38b3e95..bb06783a1 100644 --- a/docs/zh/usage/pipelines/tbox.md +++ b/zh/usage/pipelines/tbox.mdx @@ -1,4 +1,6 @@ -# 在 LangBot 上使用 TBox(蚂蚁百宝箱) +--- +title: "在 LangBot 上使用 TBox(蚂蚁百宝箱)" +--- [TBox(百宝箱)](https://tbox.cn/)是蚂蚁集团推出的面向 AI 开发者的一站式智能体应用开发平台。在平台上,无论您是否拥有编程基础,都可以通过自然语言,基于各种大模型搭建属于您自己的智能体应用,并将其发布到支付宝小程序、web 服务、浏览器插件等生态渠道。 @@ -6,14 +8,14 @@ LangBot 支持接入 TBox 上编排好的智能体,用作流水线 Runner。 在 TBox 上搭建好智能体后,请到[`开放平台`](https://www.tbox.cn/open/authorized-management)创建 API Key: -![TBox API Key](/assets/image/zh/deploy/pipelines/tbox/create_api_key.png) +![TBox API Key](/images/zh/deploy/pipelines/tbox/create_api_key.png) 并在 TBox 的智能体编排页面找到该应用的 AppID: -![TBox AppID](/assets/image/zh/deploy/pipelines/tbox/find_appid.png) +![TBox AppID](/images/zh/deploy/pipelines/tbox/find_appid.png) 接着回到 LangBot 流水线设置中,切到`AI 能力`配置页面,选择`蚂蚁百宝箱平台 API` 作为运行器: -![TBox API Key](/assets/image/zh/deploy/pipelines/tbox/tbox_runner.png) +![TBox API Key](/images/zh/deploy/pipelines/tbox/tbox_runner.png) -现在即可使用 TBox 上的智能体了。 \ No newline at end of file +现在即可使用 TBox 上的智能体了。 diff --git a/docs/zh/usage/platforms/dingtalk.md b/zh/usage/platforms/dingtalk.mdx similarity index 68% rename from docs/zh/usage/platforms/dingtalk.md rename to zh/usage/platforms/dingtalk.mdx index 7e4be1290..7886872cd 100644 --- a/docs/zh/usage/platforms/dingtalk.md +++ b/zh/usage/platforms/dingtalk.mdx @@ -1,56 +1,58 @@ -# 部署钉钉机器人 +--- +title: "部署钉钉机器人" +--- 部署 LangBot 到钉钉。 ## 创建机器人 进入 [钉钉开发者后台](https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e5MkawbT#/),登录并且进入组织。登录成功后进入开放平台,是这样的: -![钉钉开放平台](/assets/image/zh/deploy/bots/dingtalk/dingtalk1.png) +![钉钉开放平台](/images/zh/deploy/bots/dingtalk/dingtalk1.png) 点击上方的 `应用开发`,然后点击右面蓝色的按钮 `创建应用`,填写机器人的基本信息,点击保存。 进入机器人的后台,比如我们有机器人 langbot2 ,那么它的管理页面是这样的: -![机器人页面](/assets/image/zh/deploy/bots/dingtalk/dingtalk2.png) +![机器人页面](/images/zh/deploy/bots/dingtalk/dingtalk2.png) ## 配置机器人 点击 `添加应用能力`,`其他应用能力`,`机器人`中的 `配置`,点击配置并且填写信息之后,如下图: -![机器人配置](/assets/image/zh/deploy/bots/dingtalk/dingtalk3.png) +![机器人配置](/images/zh/deploy/bots/dingtalk/dingtalk3.png) 点击页面下方的`发布`,发布成功之后,点击机器人页面中左侧最下方的`版本管理与发布`,如图: -![版本管理与发布](/assets/image/zh/deploy/bots/dingtalk/dingtalk4.png) +![版本管理与发布](/images/zh/deploy/bots/dingtalk/dingtalk4.png) 如果是第一次创建机器人,那么右边是空的,需要点击`创建新版本`,在其中设置信息,然后设置`应用可见范围`,点击保存。 点击`事件订阅`,将其中的推送方式改为`Stream模式推送`。 如果需要卡片流式,则需要在权限管理中申请卡片权限,如图: -![申请卡片权限前](/assets/image/zh/deploy/bots/dingtalk/dingtalk6.png) +![申请卡片权限前](/images/zh/deploy/bots/dingtalk/dingtalk6.png) -![申请卡片权限后](/assets/image/zh/deploy/bots/dingtalk/dingtalk7.png) +![申请卡片权限后](/images/zh/deploy/bots/dingtalk/dingtalk7.png) 另外卡片消息主要创建卡片模板,并记录模板id填入配置信息,流程如下: > 卡片内容模板ID,可通过登录开发者后台 > [卡片平台](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV)获取 新建模板填写信息,如图: -![新建模板填写信息](/assets/image/zh/deploy/bots/dingtalk/dingtalk8.png) +![新建模板填写信息](/images/zh/deploy/bots/dingtalk/dingtalk8.png) 选择预设模板(直接选第一个然后进去后更改模板内容),如图: -![选择预设模板](/assets/image/zh/deploy/bots/dingtalk/dingtalk9.png) +![选择预设模板](/images/zh/deploy/bots/dingtalk/dingtalk9.png) 点击使用 -![点击](/assets/image/zh/deploy/bots/dingtalk/dingtalk10.png) +![点击](/images/zh/deploy/bots/dingtalk/dingtalk10.png) 创建 -![创建](/assets/image/zh/deploy/bots/dingtalk/dingtalk11.png) +![创建](/images/zh/deploy/bots/dingtalk/dingtalk11.png) 点击创建后会跳转到编辑模板。如图,这样你就可以尽情的编辑你想要的卡片消息了: -![编辑模板](/assets/image/zh/deploy/bots/dingtalk/dingtalk12.png) +![编辑模板](/images/zh/deploy/bots/dingtalk/dingtalk12.png) 主内容这里默认content不要改动即可: -![不改动](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk13.png) +![不改动](../../../images/zh/deploy/bots/dingtalk/dingtalk13.png) 编辑好没问题之后保存即可,并复制模板id用以填写配置文件: -![保存](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk14.png) -![复制模板id](../../../assets/image/zh/deploy/bots/dingtalk/dingtalk15.png) +![保存](../../../images/zh/deploy/bots/dingtalk/dingtalk14.png) +![复制模板id](../../../images/zh/deploy/bots/dingtalk/dingtalk15.png) ## 填写配置信息 @@ -63,21 +65,18 @@ 点击[卡片平台](https://open-dev.dingtalk.com/fe/card?spm=ding_open_doc.document.0.0.33cf2281L0fXsV)模板列表复制绑定的对应的模板id填入卡片模板id -![对接 LangBot](/assets/image/zh/deploy/bots/dingtalk/connect_to_langbot.png) +![对接 LangBot](/images/zh/deploy/bots/dingtalk/connect_to_langbot.png) 流式相关: -![img.png](../../../assets/image/zh/deploy/bots/lark/lark_15.png) +![img.png](../../../images/zh/deploy/bots/lark/lark_15.png) **启动 LangBot** 。 ## 添加机器人 本文使用钉钉 windows 桌面版举例,点击上方的`搜索`,`功能`,然后输入刚才机器人创建的名称,如图: -![robot_png](/assets/image/zh/deploy/bots/dingtalk/dingtalk5.png) +![robot_png](/images/zh/deploy/bots/dingtalk/dingtalk5.png) 点击机器人即可和机器人聊天。 如果想要添加到群里,那么点击钉钉群的`群管理`,`机器人`,`添加机器人`,然后搜索机器人名称就可以在群中使用。 - - - diff --git a/docs/zh/usage/platforms/discord.md b/zh/usage/platforms/discord.mdx similarity index 61% rename from docs/zh/usage/platforms/discord.md rename to zh/usage/platforms/discord.mdx index b47bca4eb..e793d77b1 100644 --- a/docs/zh/usage/platforms/discord.md +++ b/zh/usage/platforms/discord.mdx @@ -1,22 +1,24 @@ -# 接入 Discord 机器人 +--- +title: "接入 Discord 机器人" +--- ## 创建机器人 前往[Discord 开发者门户](https://discord.com/developers/applications),登录后,创建应用。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_01.png) +![alt text](/images/zh/deploy/bots/discord/discord_01.png) 修改基础信息,点击`Save Changes`保存。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_02.png) +![alt text](/images/zh/deploy/bots/discord/discord_02.png) 点击左侧`Bot`,点击`Reset Token`,复制生成的 Token。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_03.png) +![alt text](/images/zh/deploy/bots/discord/discord_03.png) 并在此页面的`Privileged Gateway Intents`中勾选所有选项,点击`Save Changes`保存。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_05.png) +![alt text](/images/zh/deploy/bots/discord/discord_05.png) **最后,点击左侧`OAuth2`,复制页面上的`Client ID`。** @@ -24,13 +26,11 @@ 点击添加一个新的机器人,将上一步获取的`Client ID`和`Token`填写到配置中。 -![alt text](/assets/image/zh/deploy/bots/discord/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/discord/connect_to_langbot.png) -:::warning + -如果你在中国大陆境内使用此适配器,可能需要设置网络代理。 - -::: + 填写完成后启动 LangBot,若成功配置,日志中会出现`[02-02 16:48:15.263] manager.py (68) - [INFO] : 初始化平台适配器 1: discord`的字样,保持 LangBot 运行。 @@ -40,16 +40,16 @@ 前往`OAuth2`页面,选择`URL Generator`,选择`bot`,按照图中所示勾选权限。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_06.png) +![alt text](/images/zh/deploy/bots/discord/discord_06.png) -![alt text](/assets/image/zh/deploy/bots/discord/discord_07.png) +![alt text](/images/zh/deploy/bots/discord/discord_07.png) 点击`Copy`,将生成的 URL 粘贴到浏览器中打开,邀请机器人到你的服务器。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_08.png) +![alt text](/images/zh/deploy/bots/discord/discord_08.png) ## 使用机器人 现在在群里或者私聊机器人都可以正常使用了。 -![alt text](/assets/image/zh/deploy/bots/discord/discord_09.png) \ No newline at end of file +![alt text](/images/zh/deploy/bots/discord/discord_09.png) diff --git a/docs/zh/usage/platforms/kook.md b/zh/usage/platforms/kook.mdx similarity index 56% rename from docs/zh/usage/platforms/kook.md rename to zh/usage/platforms/kook.mdx index cdc319052..ac958db08 100644 --- a/docs/zh/usage/platforms/kook.md +++ b/zh/usage/platforms/kook.mdx @@ -1,62 +1,64 @@ -# 接入 KOOK 机器人 +--- +title: "接入 KOOK 机器人" +--- ## 创建机器人 前往 [KOOK 开发者中心](https://developer.kookapp.cn/),登录后进入控制台。 -![KOOK 开发者控制台](/assets/image/zh/deploy/bots/kook/01-dashboard.png) +![KOOK 开发者控制台](/images/zh/deploy/bots/kook/01-dashboard.png) 点击「新建应用」,填写应用信息。 -![创建应用](/assets/image/zh/deploy/bots/kook/02-create-app.png) +![创建应用](/images/zh/deploy/bots/kook/02-create-app.png) 应用创建完成后,进入应用详情页。 -![应用已创建](/assets/image/zh/deploy/bots/kook/03-app-created.png) +![应用已创建](/images/zh/deploy/bots/kook/03-app-created.png) 在应用概览页面可以查看应用的基本信息。 -![应用概览](/assets/image/zh/deploy/bots/kook/04-app-overview.png) +![应用概览](/images/zh/deploy/bots/kook/04-app-overview.png) ## 获取 Bot Token 在应用页面中,点击「机器人」标签,复制 Bot Token 并妥善保存,后续需要使用。 -![获取 Bot Token](/assets/image/zh/deploy/bots/kook/05-bot-token.png) +![获取 Bot Token](/images/zh/deploy/bots/kook/05-bot-token.png) ## 配置机器人权限 **重要:** 在「机器人」设置中,找到「消息过滤」选项,点击配置。 -![消息过滤设置](/assets/image/zh/deploy/bots/kook/07-message-filters.png) +![消息过滤设置](/images/zh/deploy/bots/kook/07-message-filters.png) 开启所有消息相关事件权限,包括频道消息和私聊消息事件,否则机器人将无法接收消息。 -![启用权限](/assets/image/zh/deploy/bots/kook/08-permissions-enabled.png) +![启用权限](/images/zh/deploy/bots/kook/08-permissions-enabled.png) ## 邀请机器人 在机器人设置页面,可以生成邀请链接,将机器人邀请到你的服务器。 -![生成邀请链接](/assets/image/zh/deploy/bots/kook/06-invite-link.png) +![生成邀请链接](/images/zh/deploy/bots/kook/06-invite-link.png) ## 对接 LangBot 打开 LangBot Webui 页面,在「机器人」页面点击创建新机器人。 -![LangBot 机器人管理](/assets/image/zh/deploy/bots/kook/09-langbot-bots.png) +![LangBot 机器人管理](/images/zh/deploy/bots/kook/09-langbot-bots.png) 选择 KOOK 平台,填写机器人名称和 Bot Token。 -![配置 KOOK 机器人](/assets/image/zh/deploy/bots/kook/10-bot-config.png) +![配置 KOOK 机器人](/images/zh/deploy/bots/kook/10-bot-config.png) 保存后,机器人将出现在列表中。 -![机器人已创建](/assets/image/zh/deploy/bots/kook/11-bot-created.png) +![机器人已创建](/images/zh/deploy/bots/kook/11-bot-created.png) 点击启用按钮,启动机器人。若成功配置,机器人状态将显示为运行中。 -![机器人已启用](/assets/image/zh/deploy/bots/kook/12-bot-enabled.png) +![机器人已启用](/images/zh/deploy/bots/kook/12-bot-enabled.png) ## 使用机器人 diff --git a/docs/zh/usage/platforms/lark.md b/zh/usage/platforms/lark.mdx similarity index 56% rename from docs/zh/usage/platforms/lark.md rename to zh/usage/platforms/lark.mdx index 5f4364ecd..94fe1054d 100644 --- a/docs/zh/usage/platforms/lark.md +++ b/zh/usage/platforms/lark.mdx @@ -1,33 +1,35 @@ -# 接入飞书机器人 +--- +title: "接入飞书机器人" +--- ## 创建机器人 前往[飞书开放平台](https://open.feishu.cn/app),登录后,创建企业自建应用/商店应用 [(区别介绍)](https://open.feishu.cn/document/platform-overveiw/overview)。 -![alt text](/assets/image/zh/deploy/bots/lark/lark_01.png) +![alt text](/images/zh/deploy/bots/lark/lark_01.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_02.png) +![alt text](/images/zh/deploy/bots/lark/lark_02.png) 为应用添加机器人能力: -![alt text](/assets/image/zh/deploy/bots/lark/lark_03.png) +![alt text](/images/zh/deploy/bots/lark/lark_03.png) 在权限管理中添加图中所示权限: -![alt text](/assets/image/zh/deploy/bots/lark/lark_04.png) +![alt text](/images/zh/deploy/bots/lark/lark_04.png) 如需卡片流式权限则多添加如下图的创建与更新卡片: -![img_1.png](../../../assets/image/zh/deploy/bots/lark/lark_14.png) +![img_1.png](../../../images/zh/deploy/bots/lark/lark_14.png) -::: warning + 默认卡片模板如需更换,需要自己去平台适配器的代码中修改卡片模板 -::: + ## 对接 LangBot 在`凭证与基础信息`页找到`app_id`和`app_secret`。 -![alt text](/assets/image/zh/deploy/bots/lark/lark_05.png) +![alt text](/images/zh/deploy/bots/lark/lark_05.png) @@ -35,56 +37,54 @@ 将相关信息填入表单 -![alt text](/assets/image/zh/deploy/bots/lark/connect_to_langbot.png) +![alt text](/images/zh/deploy/bots/lark/connect_to_langbot.png) 流式相关: -![流式相关](../../../assets/image/zh/deploy/bots/lark/connect_to_langbot01.png) +![流式相关](../../../images/zh/deploy/bots/lark/connect_to_langbot01.png) 填写完成后启动 LangBot,若成功配置,日志中会出现`[01-29 23:42:56.796] manager.py (68) - [INFO] : 初始化平台适配器 1: lark`的字样,保持 LangBot 运行。 -:::warning -默认使用的是 WebSocket 长连接模式,对应下方的长连接订阅。但某些情况下(如国际版飞书)不具有长连接模式,此时需要使用 Webhook 模式,对应`将事件发送到开发者服务器`模式,请参考以下配置: + - `enable-webhook`:设置为`true` - `encrypt-key`:设置为`事件与回调`页面的`加密策略`中的`Encrypt Key` 注意,在Webhook模式中,LangBot 需要部署在具有公网 IP 的服务器上,并确保防火墙已开放上方配置的端口。 -::: + ## 配置事件订阅 前往`事件与回调`页,配置订阅方式为`长连接`: -![alt text](/assets/image/zh/deploy/bots/lark/lark_07.png) +![alt text](/images/zh/deploy/bots/lark/lark_07.png) 并添加事件:`接收消息` -![alt text](/assets/image/zh/deploy/bots/lark/lark_08.png) +![alt text](/images/zh/deploy/bots/lark/lark_08.png) -:::warning -Webhook 模式配置方式: + -![alt text](/assets/image/zh/deploy/bots/lark/lark_13.png) +![alt text](/images/zh/deploy/bots/lark/lark_13.png) 请先启动 LangBot,在此处填写你的服务器地址和端口,路径为`/lark/callback`,点击`保存`。 -::: + ## 发布机器人 点击顶部`创建版本`,填写版本号等信息,点击下方`保存`。 -![alt text](/assets/image/zh/deploy/bots/lark/lark_09.png) +![alt text](/images/zh/deploy/bots/lark/lark_09.png) 在飞书群中添加机器人,即可使用: -![alt text](/assets/image/zh/deploy/bots/lark/lark_10.png) +![alt text](/images/zh/deploy/bots/lark/lark_10.png) -![alt text](/assets/image/zh/deploy/bots/lark/lark_11.png) +![alt text](/images/zh/deploy/bots/lark/lark_11.png) 私聊也可以直接使用 -![alt text](/assets/image/zh/deploy/bots/lark/lark_12.png) +![alt text](/images/zh/deploy/bots/lark/lark_12.png) ## 常见问题 -- 商店应用机器人创建/保存后无法立刻响应聊天消息,由于[app_ticket事件](https://open.feishu.cn/document/server-docs/application-v6/event/app_ticket-events)延迟机制,需要等待2分钟左右才可以正常使用。 \ No newline at end of file +- 商店应用机器人创建/保存后无法立刻响应聊天消息,由于[app_ticket事件](https://open.feishu.cn/document/server-docs/application-v6/event/app_ticket-events)延迟机制,需要等待2分钟左右才可以正常使用。 diff --git a/docs/zh/usage/platforms/line.md b/zh/usage/platforms/line.mdx similarity index 64% rename from docs/zh/usage/platforms/line.md rename to zh/usage/platforms/line.mdx index 824b90596..cf2c8eed0 100644 --- a/docs/zh/usage/platforms/line.md +++ b/zh/usage/platforms/line.mdx @@ -1,4 +1,6 @@ -# 接入LINE机器人 +--- +title: "接入LINE机器人" +--- 本文介绍如何将 LangBot 与 LINE 平台进行对接,实现 LINE 机器人功能。 @@ -15,33 +17,33 @@ 1. 在开发者控制台中,创建一个新的 Provider(如果没有的话) -![alt text](/assets/image/zh/deploy/bots/line/line01.png) +![alt text](/images/zh/deploy/bots/line/line01.png) 2. 在 Provider 下,点击 "Create" -![alt text](/assets/image/zh/deploy/bots/line/line02.png) +![alt text](/images/zh/deploy/bots/line/line02.png) 3. 填入名称,并点击 Create -![alt text](/assets/image/zh/deploy/bots/line/line03.png) +![alt text](/images/zh/deploy/bots/line/line03.png) 4. 跳转页面后选择 Create a Message API -![alt text](/assets/image/zh/deploy/bots/line/line04.png) +![alt text](/images/zh/deploy/bots/line/line04.png) * 继续点击 Create a Message API -![alt text](/assets/image/zh/deploy/bots/line/line05.png) +![alt text](/images/zh/deploy/bots/line/line05.png) * 跳转页面后填入基本信息 -![alt text](/assets/image/zh/deploy/bots/line/line06.png) +![alt text](/images/zh/deploy/bots/line/line06.png) - Channel Name(频道名称) - Channel Description(频道描述) - Category(类别) - Subcategory(子类别) - Email Address(邮箱地址) 5. 全部填好之后点击 "Continue" 创建 -![alt text](/assets/image/zh/deploy/bots/line/line07.png) +![alt text](/images/zh/deploy/bots/line/line07.png) 6. 检查填入的信息,无问题点击 Submit 即可 -![alt text](/assets/image/zh/deploy/bots/line/line08.png) +![alt text](/images/zh/deploy/bots/line/line08.png) 7. 创建成功去使用 -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) ### 获取配置信息 @@ -50,31 +52,31 @@ 1. Channel Secret > [刚刚点击使用跳转页面](https://manager.line.biz/account) * 选择 Settings -![alt text](/assets/image/zh/deploy/bots/line/line09.png) +![alt text](/images/zh/deploy/bots/line/line09.png) * 点击 Message API -![alt text](/assets/image/zh/deploy/bots/line/line11.png) +![alt text](/images/zh/deploy/bots/line/line11.png) * 开启 Message API -![alt text](/assets/image/zh/deploy/bots/line/line12.png) +![alt text](/images/zh/deploy/bots/line/line12.png) * 选择刚刚新建的 Provider 并点击 Agree -![alt text](/assets/image/zh/deploy/bots/line/line13.png) +![alt text](/images/zh/deploy/bots/line/line13.png) * 隐私条款直接点击 OK -![alt text](/assets/image/zh/deploy/bots/line/line14.png) +![alt text](/images/zh/deploy/bots/line/line14.png) * 点击 OK 创建成功 -![alt text](/assets/image/zh/deploy/bots/line/line15.png) +![alt text](/images/zh/deploy/bots/line/line15.png) * Copy 即可 -![alt text](/assets/image/zh/deploy/bots/line/line16.png) +![alt text](/images/zh/deploy/bots/line/line16.png) 2. Channel Access Token(需要点击 "Issue" 按钮生成) * 点击控制台或者直接访问 [控制台](https://developers.line.biz/console/) -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * 选择你创建的 Provider 并点击 Message API -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * 点击 Message API -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * 下滑到最下面,点击 Issue -![alt text](/assets/image/zh/deploy/bots/line/line20.png) +![alt text](/images/zh/deploy/bots/line/line20.png) * 点击图标复制 -![alt text](/assets/image/zh/deploy/bots/line/line21.png) +![alt text](/images/zh/deploy/bots/line/line21.png) @@ -83,44 +85,44 @@ 接下来打开 LangBot 配置页面: 1. 点击 "机器人",然后点击 "添加" -![alt text](/assets/image/zh/deploy/bots/line/line26.png) +![alt text](/images/zh/deploy/bots/line/line26.png) 2. 在 "平台/适配器选择" 中选择 "LINE" -![alt text](/assets/image/zh/deploy/bots/line/line27.png) +![alt text](/images/zh/deploy/bots/line/line27.png) 3. 填写配置信息: - Channel Secret:您之前获取的 Channel Secret - Channel Access Token:您之前获取的 Channel Access Token - ![alt text](/assets/image/zh/deploy/bots/line/line28.png) + ![alt text](/images/zh/deploy/bots/line/line28.png) 4. 点击 "保存" 完成配置 - ![alt text](/assets/image/zh/deploy/bots/line/line29.png) + ![alt text](/images/zh/deploy/bots/line/line29.png) ## 配置Webhook -::: info + 推荐您先参照[配置 HTTP 反向代理](/zh/workshop/production/proxy-and-ssl)来配置 LangBot 回调地址。 -::: + * 从 LangBot 配置页面获取 Webhook 回调地址 -![alt text](/assets/image/zh/deploy/bots/line/line30.png) +![alt text](/images/zh/deploy/bots/line/line30.png) * 点击控制台或者直接访问 [控制台](https://developers.line.biz/console/) -![alt text](/assets/image/zh/deploy/bots/line/line17.png) +![alt text](/images/zh/deploy/bots/line/line17.png) * 选择你创建的 Provider 并点击 Message API -![alt text](/assets/image/zh/deploy/bots/line/line18.png) +![alt text](/images/zh/deploy/bots/line/line18.png) * 点击 Message API -![alt text](/assets/image/zh/deploy/bots/line/line19.png) +![alt text](/images/zh/deploy/bots/line/line19.png) * 点击 Edit 填写连接 -![alt text](/assets/image/zh/deploy/bots/line/line22.png) +![alt text](/images/zh/deploy/bots/line/line22.png) * 填入连接(必须要 HTTPS 的连接,也就是要 SSL 证书),点击 Update -![alt text](/assets/image/zh/deploy/bots/line/line23.png) +![alt text](/images/zh/deploy/bots/line/line23.png) * 选择 Use Webhook -![alt text](/assets/image/zh/deploy/bots/line/line24.png) +![alt text](/images/zh/deploy/bots/line/line24.png) 5. 点击 "Verify" 按钮测试连接是否成功 -![alt text](/assets/image/zh/deploy/bots/line/line25.png) +![alt text](/images/zh/deploy/bots/line/line25.png) diff --git a/docs/zh/usage/platforms/qq/aiocqhttp/lagrange.md b/zh/usage/platforms/qq/aiocqhttp/lagrange.mdx similarity index 79% rename from docs/zh/usage/platforms/qq/aiocqhttp/lagrange.md rename to zh/usage/platforms/qq/aiocqhttp/lagrange.mdx index 8ad9bceca..94cbcd616 100644 --- a/docs/zh/usage/platforms/qq/aiocqhttp/lagrange.md +++ b/zh/usage/platforms/qq/aiocqhttp/lagrange.mdx @@ -1,67 +1,69 @@ -# 部署消息平台 Lagrange - -## Lagrange介绍 - -Lagrange 是一个 QQNT 协议逆向工程框架,轻便且相对稳定。通过 OneBot 11 协议接入,需选择使用`OneBot v11`作为适配器。 - -::: warning -需要使用 NT QQ 与机器人交互,旧版QQ无法正常使用 -::: - -## 部署步骤 - -以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/v1/Lagrange.OneBot/) - -### 环境配置 - -安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer) - -### 从Github Actions下载最新的build - -需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3 - -[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions) - -看图进行下载: - -![图片1](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) - -![图片2](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) - -![图片3](/assets/image/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) - -### 尾声 - -解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入 - -```bash -.\Lagrange.OneBot -``` - -运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。 - -若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。 - -## 修改配置 - -需要配置 Lagrange 以让其连接上 LangBot,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容: - -![配置连接](/assets/image/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) - -其中 Type 必须为 `ReverseWebSocket`; -Host 为 LangBot 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`; -Suffix 必须为 `/ws`; - -## Lagrange 对接 - -接下来打开 LangBot 配置页面 - -点击机器人,点击添加 - -`平台/适配器选择`为`OneBot v11` - -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) - -::: info -注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) -::: \ No newline at end of file +--- +title: "部署消息平台 Lagrange" +--- + +## Lagrange介绍 + +Lagrange 是一个 QQNT 协议逆向工程框架,轻便且相对稳定。通过 OneBot 11 协议接入,需选择使用`OneBot v11`作为适配器。 + + +需要使用 NT QQ 与机器人交互,旧版QQ无法正常使用 + + +## 部署步骤 + +以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/v1/Lagrange.OneBot/) + +### 环境配置 + +安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer) + +### 从Github Actions下载最新的build + +需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3 + +[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions) + +看图进行下载: + +![图片1](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_1.png) + +![图片2](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_2.png) + +![图片3](/images/zh/deploy/bots/qq/onebot/lagrange/dl_lgr_3.png) + +### 尾声 + +解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入 + +```bash +.\Lagrange.OneBot +``` + +运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。 + +若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。 + +## 修改配置 + +需要配置 Lagrange 以让其连接上 LangBot,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容: + +![配置连接](/images/zh/deploy/bots/qq/onebot/lagrange/config_lgr.png) + +其中 Type 必须为 `ReverseWebSocket`; +Host 为 LangBot 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`; +Suffix 必须为 `/ws`; + +## Lagrange 对接 + +接下来打开 LangBot 配置页面 + +点击机器人,点击添加 + +`平台/适配器选择`为`OneBot v11` + +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) + + +注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) + diff --git a/docs/zh/usage/platforms/qq/aiocqhttp/llonebot.md b/zh/usage/platforms/qq/aiocqhttp/llonebot.mdx similarity index 74% rename from docs/zh/usage/platforms/qq/aiocqhttp/llonebot.md rename to zh/usage/platforms/qq/aiocqhttp/llonebot.mdx index 75c564c88..c18b91343 100644 --- a/docs/zh/usage/platforms/qq/aiocqhttp/llonebot.md +++ b/zh/usage/platforms/qq/aiocqhttp/llonebot.mdx @@ -1,27 +1,29 @@ -# 部署消息平台 LiteLoaderQQNT - -通过 OneBot 11 协议接入,需选择使用``OneBot v11``作为适配器。 - -# LiteLoaderQQNT - -- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议 - -安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started - -![图片1](/assets/image/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) - -确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1) - -## Lagrange 对接 - -接下来打开 LangBot 配置页面 - -点击机器人,点击添加 - -`平台/适配器选择`为`OneBot v11` - -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) - -::: info -注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) -::: \ No newline at end of file +--- +title: "部署消息平台 LiteLoaderQQNT" +--- + +通过 OneBot 11 协议接入,需选择使用``OneBot v11``作为适配器。 + +# LiteLoaderQQNT + +- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议 + +安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started + +![图片1](/images/zh/deploy/bots/qq/onebot/llonebot/llob_cfg.png) + +确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1) + +## Lagrange 对接 + +接下来打开 LangBot 配置页面 + +点击机器人,点击添加 + +`平台/适配器选择`为`OneBot v11` + +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) + + +注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) + diff --git a/docs/zh/usage/platforms/qq/aiocqhttp/napcat.md b/zh/usage/platforms/qq/aiocqhttp/napcat.mdx similarity index 73% rename from docs/zh/usage/platforms/qq/aiocqhttp/napcat.md rename to zh/usage/platforms/qq/aiocqhttp/napcat.mdx index 9ed352b23..19d92c49e 100644 --- a/docs/zh/usage/platforms/qq/aiocqhttp/napcat.md +++ b/zh/usage/platforms/qq/aiocqhttp/napcat.mdx @@ -1,33 +1,35 @@ -# 部署消息平台 NapCat - -通过 OneBot 11 协议接入,需选择使用``OneBot v11``作为适配器。 - -## NapCat安装教程 - -按照 [NapCat 官方文档安装](https://napcat.napneko.icu/guide/start-install) - -## NapCat配置教程 - -仅以 webui 操作为例,其他的配置方式请查看 NapCat 文档。 - -登录后,在控制台或Bash上可以查看日志 , 找到 `[NapCat] [WebUi] WebUi Publish Panel Url: http://x.x.x.x:6099/webui?token=xxxxx ` -![napcat_webui_01](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) - -复制Url到浏览器或者 Windows11 按照Ctrl点击Url即可 扫码登录后即可进入网络配置一页 - -点击添加网络配置 WebSocket客户端 点击启用 然后在Url一栏填入 `ws://127.0.0.1:2280/ws` 并保存即可 -![napcat_webui_02](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) - -## NapCat 对接 - -接下来打开 LangBot 配置页面 - -点击机器人,点击添加 - -`平台/适配器选择`为`OneBot v11` - -![napcat_webui_03](/assets/image/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) - -::: info -注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) -::: \ No newline at end of file +--- +title: "部署消息平台 NapCat" +--- + +通过 OneBot 11 协议接入,需选择使用``OneBot v11``作为适配器。 + +## NapCat安装教程 + +按照 [NapCat 官方文档安装](https://napcat.napneko.icu/guide/start-install) + +## NapCat配置教程 + +仅以 webui 操作为例,其他的配置方式请查看 NapCat 文档。 + +登录后,在控制台或Bash上可以查看日志 , 找到 `[NapCat] [WebUi] WebUi Publish Panel Url: http://x.x.x.x:6099/webui?token=xxxxx ` +![napcat_webui_01](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_01.png) + +复制Url到浏览器或者 Windows11 按照Ctrl点击Url即可 扫码登录后即可进入网络配置一页 + +点击添加网络配置 WebSocket客户端 点击启用 然后在Url一栏填入 `ws://127.0.0.1:2280/ws` 并保存即可 +![napcat_webui_02](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_02.png) + +## NapCat 对接 + +接下来打开 LangBot 配置页面 + +点击机器人,点击添加 + +`平台/适配器选择`为`OneBot v11` + +![napcat_webui_03](/images/zh/deploy/bots/qq/onebot/napcat/napcat_webui_03.png) + + +注意,如果涉及多个 docker 容器的网络连接问题,请参考[网络配置详解](/zh/workshop/network-details) + diff --git a/docs/zh/usage/platforms/qq/official.md b/zh/usage/platforms/qq/official.mdx similarity index 76% rename from docs/zh/usage/platforms/qq/official.md rename to zh/usage/platforms/qq/official.mdx index 886a7af34..468592897 100644 --- a/docs/zh/usage/platforms/qq/official.md +++ b/zh/usage/platforms/qq/official.mdx @@ -1,15 +1,17 @@ -# 使用 QQ 官方机器人 API(使用websocket方式) - -:::warning -QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。 -::: - -QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。 - -## 注册 QQ 机器人 - -前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。 - -## 获取凭证 - -注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。 \ No newline at end of file +--- +title: "使用 QQ 官方机器人 API(使用websocket方式)" +--- + + +QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。 + + +QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。 + +## 注册 QQ 机器人 + +前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。 + +## 获取凭证 + +注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。 diff --git a/docs/zh/usage/platforms/qq/official_webhook.md b/zh/usage/platforms/qq/official_webhook.mdx similarity index 83% rename from docs/zh/usage/platforms/qq/official_webhook.md rename to zh/usage/platforms/qq/official_webhook.mdx index 89201013c..913a2d881 100644 --- a/docs/zh/usage/platforms/qq/official_webhook.md +++ b/zh/usage/platforms/qq/official_webhook.mdx @@ -1,10 +1,12 @@ -# 使用 QQ 官方机器人 API(使用webhook方式) +--- +title: "使用 QQ 官方机器人 API(使用webhook方式)" +--- 本文章只提供测试版机器人的发布,具体机器人上线请按照 [发布流程](https://q.qq.com/qqbot/#/home) 进行部署。 -:::warning + 目前 QQ 官方发布公告,禁止违规接入 AIGC 功能,请慎重使用。 -::: + @@ -14,23 +16,23 @@ 前往 [QQ开放平台](https://q.qq.com/#/) ,找到下方的 `应用管理` ,点击创建机器人,填写基本信息之后,进入机器人页面,如图: -![机器人主页面](/assets/image/zh/deploy/bots/qq/official/qqofficial1.png) +![机器人主页面](/images/zh/deploy/bots/qq/official/qqofficial1.png) -`首页` 选项中的 `发布流程` 即为上线机器人的步骤。由于部署的是测试版机器人,所以只需要进行其中的 `资料` 和 `沙箱配置` 。
+`首页` 选项中的 `发布流程` 即为上线机器人的步骤。由于部署的是测试版机器人,所以只需要进行其中的 `资料` 和 `沙箱配置` 。
先进行资料填写,然后点击沙箱配置。 #### 配置沙箱配置项 点击 `沙箱配置` 。 -如果要部署在QQ群中,那么按照 `QQ群ID` 下方的要求进行选择群聊,在消息列表配置中添加有私聊权限的用户。
+如果要部署在QQ群中,那么按照 `QQ群ID` 下方的要求进行选择群聊,在消息列表配置中添加有私聊权限的用户。
如果要部署在QQ频道中,那么按照 `频道ID` 下方的要求选择频道ID,机器人类型为0。 #### 配置开发管理项 点击 `开发管理` 。 -![开发管理页面](/assets/image/zh/deploy/bots/qq/official/qqofficial2.png) +![开发管理页面](/images/zh/deploy/bots/qq/official/qqofficial2.png) 记录其中的 `AppID` , `Token` , `AppSecret` ,并将 LangBot 所在服务器的IP地址填写到IP白名单中。 @@ -42,7 +44,7 @@ `平台/适配器选择`为`QQ官方API` -![QQ 官方 Bot 对接 LangBot](/assets/image/zh/deploy/bots/qq/official/qqofficial3.png) +![QQ 官方 Bot 对接 LangBot](/images/zh/deploy/bots/qq/official/qqofficial3.png) ## 配置回调地址 @@ -52,7 +54,7 @@ #### 后续配置 -若 Caddy 启动不成功,请自行阅读 [Caddy文档](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile),或者加入 LangBot 社区群请求帮助。
+若 Caddy 启动不成功,请自行阅读 [Caddy文档](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile),或者加入 LangBot 社区群请求帮助。
以下是一些可能出现的问题: @@ -70,7 +72,7 @@ 进入 LangBot 配置页面,启用并且选择对应的QQ机器人,粘贴对应机器人配置页面中的 Webhook 回调地址,将其中的 IP 地址和端口改成之前 Caddy 配置的域名,在请求地址中填入。 如图: -![Caddy文档](/assets/image/zh/deploy/bots/qq/official/qqofficial4.png) +![Caddy文档](/images/zh/deploy/bots/qq/official/qqofficial4.png) 比如域名为 `testlb.com`,那么请求地址中填写 `testlb.com/bots/xxxxxx-xxxxxx` ,点击确定配置。如果回调地址保存成功,那么意味着部署成功。若出现 `校验失败` 字样,请认真检查上述配置项是否填写正确。 diff --git a/docs/zh/usage/platforms/readme.md b/zh/usage/platforms/readme.mdx similarity index 80% rename from docs/zh/usage/platforms/readme.md rename to zh/usage/platforms/readme.mdx index 239a60fed..190785667 100644 --- a/docs/zh/usage/platforms/readme.md +++ b/zh/usage/platforms/readme.mdx @@ -1,18 +1,20 @@ -# 配置机器人 (Bots) +--- +title: "配置机器人 (Bots)" +--- 机器人用于从消息平台接收消息事件并调用流水线处理消息。 -![arch](/assets/image/zh/deploy/bots/arch.png) +![arch](/images/zh/deploy/bots/arch.png) | 平台 | 状态 | 备注 |教程 | | ------ | ---- | ---- | ---- | -| OneBot v11 | ✅ | 使用普通的 QQ 号作为机器人,需要使用独立的协议端,支持 OneBot v11 | [NapCat](/zh/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/zh/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/zh/usage/platforms/qq/aiocqhttp/llonebot) | +| OneBot v11 | ✅ | 使用普通的 QQ 号作为机器人,需要使用独立的协议端,支持 OneBot v11 | [NapCat](/zh/usage/platforms/qq/aiocqhttp/napcat)
[Lagrange](/zh/usage/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/zh/usage/platforms/qq/aiocqhttp/llonebot) | | QQ 官方机器人 | ✅ | 接入 QQ 开放平台的机器人 API | [教程](/zh/usage/platforms/qq/official_webhook) | | 企业微信 | ✅ | 企业内部机器人 | [教程](/zh/usage/platforms/wecom/wecom) | | 企业微信客服 | ✅ | 企业对外机器人 | [教程](/zh/usage/platforms/wecom/wecomcs) | | 企业微信智能机器人 | ✅ | 智能机器人 | [教程](/zh/usage/platforms/wecom/wecombot) | -| 微信公众号 | ✅ | 微信公众平台机器人 | [教程](/zh/usage/platforms/wxoa.md) | +| 微信公众号 | ✅ | 微信公众平台机器人 | [教程](/zh/usage/platforms/wxoa) | | 飞书 | ✅ | | [教程](/zh/usage/platforms/lark) | | 钉钉 | ✅ | | [教程](/zh/usage/platforms/dingtalk) | | Discord | ✅ | | [教程](/zh/usage/platforms/discord) | diff --git a/docs/zh/usage/platforms/slack.md b/zh/usage/platforms/slack.mdx similarity index 75% rename from docs/zh/usage/platforms/slack.md rename to zh/usage/platforms/slack.mdx index aab847c38..ed7d8047e 100644 --- a/docs/zh/usage/platforms/slack.md +++ b/zh/usage/platforms/slack.mdx @@ -1,10 +1,12 @@ -# 接入 Slack 机器人 +--- +title: "接入 Slack 机器人" +--- ## 创建机器人 前往 [Slack的App平台](https://api.slack.com/apps)。 -![Slack平台](/assets/image/zh/deploy/bots/slack/slack_01.jpg) +![Slack平台](/images/zh/deploy/bots/slack/slack_01.jpg) 点击右上角的 `Create New App` ,选择从 `from a manifest` , 选择要部署机器人的工作区,选择下一步, 选择创建机器人。 @@ -13,15 +15,15 @@ 进入左侧 `OAuth & Permissions` ,往下拉到 `Scopes`,添加如下机器人权限: -![机器人权限1](/assets/image/zh/deploy/bots/slack/slack_02.jpg) +![机器人权限1](/images/zh/deploy/bots/slack/slack_02.jpg) -![机器人权限2](/assets/image/zh/deploy/bots/slack/slack_03.jpg) +![机器人权限2](/images/zh/deploy/bots/slack/slack_03.jpg) -添加上述权限之后,点击 `Install to your workspace`,记录下开头为 `xoxb-xxxxx`的token。
+添加上述权限之后,点击 `Install to your workspace`,记录下开头为 `xoxb-xxxxx`的token。
**注:** -**若没有一次性添加成功权限,后续则需要重新安装App。**
+**若没有一次性添加成功权限,后续则需要重新安装App。**
进入左侧 `App Home` 栏,滑到最下面有 `Message Tab`,打开并且勾选 `Allow users to send Slash commands and messages from the messages tab`。 @@ -30,17 +32,17 @@ 进入左侧 `Event Subscriptions` ,打开开关,点击 `Subscribe to bot events`, 将如下权限添加进去: -![事件权限](/assets/image/zh/deploy/bots/slack/slack_04.jpg) +![事件权限](/images/zh/deploy/bots/slack/slack_04.jpg) 上述操作都完成之后,打开 LangBot Webui 配置页面,添加一个新的机器人 -![事件权限](/assets/image/zh/deploy/bots/slack/connect_to_langbot.png) +![事件权限](/images/zh/deploy/bots/slack/connect_to_langbot.png) ## 启动机器人 -::: info + 由于 Slack 官方要求使用 https,请根据文档[配置 HTTP 反向代理和 SSL](/zh/workshop/production/proxy-and-ssl) 先配置好反向代理。 -::: + Slack 配置项在填写完成后,**启动 LangBot**。 启用并打开 LangBot 主页中的 Slack 机器人配置页面,复制其中的 WebHook URL,在刚才Event Subscriptions的 `Request URL`中,填写入 WebHook URL。 @@ -51,5 +53,4 @@ Slack 配置项在填写完成后,**启动 LangBot**。 ## 效果图 -![效果图](/assets/image/zh/deploy/bots/slack/slack_05.jpg) - +![效果图](/images/zh/deploy/bots/slack/slack_05.jpg) diff --git a/docs/zh/usage/platforms/telegram.md b/zh/usage/platforms/telegram.mdx similarity index 54% rename from docs/zh/usage/platforms/telegram.md rename to zh/usage/platforms/telegram.mdx index 306483db6..22e90e2b8 100644 --- a/docs/zh/usage/platforms/telegram.md +++ b/zh/usage/platforms/telegram.mdx @@ -1,22 +1,24 @@ -# 接入 Telegram 机器人 +--- +title: "接入 Telegram 机器人" +--- ## 创建机器人 前往 [Telegram 机器人创建页面](https://t.me/botfather),按照提示操作,创建一个机器人。 -![Telegram 机器人创建](/assets/image/zh/deploy/bots/telegram/telegram_01.png) +![Telegram 机器人创建](/images/zh/deploy/bots/telegram/telegram_01.png) -![Telegram 机器人创建](/assets/image/zh/deploy/bots/telegram/telegram_02.png) +![Telegram 机器人创建](/images/zh/deploy/bots/telegram/telegram_02.png) 创建完成后,BotFather 会返回一个 API Token,请妥善保存。接下来关闭`Privacy Mode`,以便在群聊中使用。 -![Telegram 机器人 API Token](/assets/image/zh/deploy/bots/telegram/telegram_03.png) +![Telegram 机器人 API Token](/images/zh/deploy/bots/telegram/telegram_03.png) ## 对接 LangBot 打开 LangBot Webui 页面,创建一个新机器人 -![对接 LangBot](/assets/image/zh/deploy/bots/telegram/connect_to_langbot.png) +![对接 LangBot](/images/zh/deploy/bots/telegram/connect_to_langbot.png) 填写完成后启动 LangBot,若成功配置,日志中会出现`[02-02 16:48:15.263] manager.py (68) - [INFO] : 初始化平台适配器 1: telegram`的字样,保持 LangBot 运行。 @@ -24,6 +26,6 @@ 现在在群里或者私聊机器人都可以正常使用了。 -![Telegram 机器人使用](/assets/image/zh/deploy/bots/telegram/telegram_04.png) +![Telegram 机器人使用](/images/zh/deploy/bots/telegram/telegram_04.png) -![Telegram 机器人使用](/assets/image/zh/deploy/bots/telegram/telegram_05.png) \ No newline at end of file +![Telegram 机器人使用](/images/zh/deploy/bots/telegram/telegram_05.png) diff --git a/docs/zh/usage/platforms/wechat/wechatpad.md b/zh/usage/platforms/wechat/wechatpad.mdx similarity index 90% rename from docs/zh/usage/platforms/wechat/wechatpad.md rename to zh/usage/platforms/wechat/wechatpad.mdx index 4fe9d23d4..887d7f6a6 100644 --- a/docs/zh/usage/platforms/wechat/wechatpad.md +++ b/zh/usage/platforms/wechat/wechatpad.mdx @@ -1,4 +1,6 @@ -# 通过 WeChatPadPro 接入个人微信 +--- +title: "通过 WeChatPadPro 接入个人微信" +--- > 异地警告,没有 Socks5 代理或者本地服务器慎用!!!!!! @@ -246,34 +248,34 @@ volumes: ## 登录微信 1. 成功启动 WeChatPadPro 后根据你的 serverip:port 访问 WeChatPadPro 的 Swagger -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png) 2. 填入 adminKey -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png) 3. 获取 token ** try it out `/admin/GanAuthKey1` 接口 body 中的 days 改为 365 即可 -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png) 等待返回拿到里面的 token 回填入上面的 token -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png) 5. 登录微信 ** try it out `/login/GetLoginQrCodeNew` 接口即可(和服务器是同市或者同省) -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png) ** 如果是云服务器,需要填入 Proxy -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/login2.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/login2.png) ** 返回的参数中有登录二维码链接,打开扫码登录即可 -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/login3.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/login3.png) ** 手机登录后看是否有 iPad 在线,如果不在线就使用, 查看扫码状态 -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/ipadlogin.jpg) +![img.png](../../../../images/zh/deploy/platforms/wechat/ipadlogin.jpg) > 没有在线的话是因为什么(这是我已经成功登录,扫码状态过期了) -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png) 6. 记录你的 adminkey、token、wx 地址和访问地址(wxid 可以不管) @@ -286,7 +288,7 @@ volumes: - `wxid` 填写该登录账号的 wxid - `wechatpad_token` 填写 WeChatPadPro 的 token -![img.png](../../../../assets/image/zh/deploy/platforms/wechat/langbotset.png) +![img.png](../../../../images/zh/deploy/platforms/wechat/langbotset.png) ## 详细的 API 接口文档 @@ -398,4 +400,4 @@ docker compose up -d 3. 定期备份 - 备份 MySQL 数据 - - 备份应用数据 \ No newline at end of file + - 备份应用数据 diff --git a/docs/zh/usage/platforms/wecom/wecom.md b/zh/usage/platforms/wecom/wecom.mdx similarity index 64% rename from docs/zh/usage/platforms/wecom/wecom.md rename to zh/usage/platforms/wecom/wecom.mdx index 388cfff18..f94605282 100644 --- a/docs/zh/usage/platforms/wecom/wecom.md +++ b/zh/usage/platforms/wecom/wecom.mdx @@ -1,67 +1,67 @@ -# 部署企业微信机器人 +--- +title: "部署企业微信机器人" +--- 部署企业微信机器人接入 LangBot 。 -:::info -- 此种接入方式为企业内部自建应用,是在企业内部使用的,若需要对外接待,请查看[企业微信客服接入方案](wecomcs.md)。 + - 企业微信回调地址需要公网IP和域名,推荐您先参照[配置 HTTP 反向代理](/zh/workshop/production/proxy-and-ssl)来配置 LangBot 回调地址。 -::: + ## 记录企业ID 打开[企业微信管理后台](https://work.weixin.qq.com/),点击`我的企业`,记录下最下面的`企业ID`。 -![Corp ID](/assets/image/zh/deploy/bots/wecom/wecom/03-corp-id.png) +![Corp ID](/images/zh/deploy/bots/wecom/wecom/03-corp-id.png) ## 创建机器人 点击` 应用管理 `,` 自建 `,` 创建应用` -![App Management](/assets/image/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) +![App Management](/images/zh/deploy/bots/wecom/wecom/01-wecom-apps.png) 填写机器人基本信息: -![Create Application](/assets/image/zh/deploy/bots/wecom/wecom/02-create-app.png) +![Create Application](/images/zh/deploy/bots/wecom/wecom/02-create-app.png) 查看并记录机器人密钥(Secret): -![Bot Secret](/assets/image/zh/deploy/bots/wecom/wecom/04-bot-secret.png) +![Bot Secret](/images/zh/deploy/bots/wecom/wecom/04-bot-secret.png) 从企业微信客户端根据提示获取。 ## 开启通讯录同步权限 -:::info -- 此配置项是为了实现 LangBot 的群发消息,具体代码位于libs/wecom_api/api.py 。 + - 目前 LangBot 仍在开发,所以未实现此配置项的相关功能。 - 此配置项可以填写入随机字符,**不能为空**。 -::: + 点击`安全与管理`,`管理工具`,`通讯录同步`;先配置可信IP,添加部署 LangBot 的服务器IP。 点击`查看secret`,记录下来,这是 contacts_secret(通讯录同步 secret)。 -![Contact Sync Secret](/assets/image/zh/deploy/bots/wecom/wecom/08-contact-secret.png) +![Contact Sync Secret](/images/zh/deploy/bots/wecom/wecom/08-contact-secret.png) ## 在 LangBot 新建机器人 在 LangBot 机器人页面,点击`创建机器人`,填入名称,选择`企业微信`,此步骤只需要填入 企业ID 和 机器人密钥,以及通讯录同步 secret。 -![Create WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) +![Create WeCom Bot](/images/zh/deploy/bots/wecom/wecom/05-fill-in-corpid-secret.png) 点击提交,跳转到机器人编辑页面,点击启用;此时即可看到 Webhook 回调地址,复制下来: -![Webhook Callback Address](/assets/image/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) +![Webhook Callback Address](/images/zh/deploy/bots/wecom/wecom/06-webhook-callback-address.png) ## 设置回调地址 回到企业微信的机器人管理页面,点击`接收消息`,`设置API接收`,将 LangBot 的 Webhook 回调地址填入`URL`中: -![Set API Receiver](/assets/image/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) +![Set API Receiver](/images/zh/deploy/bots/wecom/wecom/07-set-api-receiver.png) 点击 Token 和 EncodingAESKey 的`随机获取`,并记录下来,**保持此页开启**。返回到 LangBot 的企微机器人配置页面,将 Token 和 EncodingAESKey 填入,点击保存。 -![Save WeCom Bot](/assets/image/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) +![Save WeCom Bot](/images/zh/deploy/bots/wecom/wecom/09-save-wecom-bot.png) 再回到**刚刚填写 Webhook 回调地址的页面**,点击保存即可配置完成;如果出现**请求URL失败**,请再三检查你的配置项填写是否正确。 @@ -69,11 +69,11 @@ 回到该应用到管理页,在下方找到`企业可信 IP`,添加部署 LangBot 的服务器IP。 -![Corp Trusted IP](/assets/image/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) +![Corp Trusted IP](/images/zh/deploy/bots/wecom/wecom/10-corp-trusted-ip.png) 点击保存即可。 ## 常见问题 Q:企微上找不到机器人对话框? -A:可以到企微管理页面上该应用的详情页,点击`功能`->`发送消息`->`发消息`,选择自己账号,发送消息,即可在自己的对话框中看到机器人。 \ No newline at end of file +A:可以到企微管理页面上该应用的详情页,点击`功能`->`发送消息`->`发消息`,选择自己账号,发送消息,即可在自己的对话框中看到机器人。 diff --git a/docs/zh/usage/platforms/wecom/wecombot.md b/zh/usage/platforms/wecom/wecombot.mdx similarity index 71% rename from docs/zh/usage/platforms/wecom/wecombot.md rename to zh/usage/platforms/wecom/wecombot.mdx index 1cb4f78f5..4e606c8ad 100644 --- a/docs/zh/usage/platforms/wecom/wecombot.md +++ b/zh/usage/platforms/wecom/wecombot.mdx @@ -1,21 +1,23 @@ -# 部署企业微信智能机器人 +--- +title: "部署企业微信智能机器人" +--- ## 创建机器人 首先登录[企业微信管理后台](https://work.weixin.qq.com/wework_admin/frame#/)。 -![主页](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_1.png) +![主页](/images/zh/deploy/bots/wecom/wecombot/wecombot_1.png) 点击左边栏的`安全与管理`,点击`管理工具`里面的`智能机器人`。 如图: -![智能机器人](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_2.png) +![智能机器人](/images/zh/deploy/bots/wecom/wecombot/wecombot_2.png) 点击`创建机器人`,拉至页面最底部,点击`API模式创建`,进入页面: -![API模式创建](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_3.png) +![API模式创建](/images/zh/deploy/bots/wecom/wecombot/wecombot_3.png) 点击随机获取 Token 和 EncodingAESKey,然后填写上方的机器人基本信息,**注意设置可见范围**。 @@ -27,20 +29,20 @@ 其中,令牌为 Token,消息加解密密钥为 EncodingAESKey,机器人ID填写入xxx(或者随便填写,后续会改),填写之后点击 `保存`,并`启用`机器人。 -![企业微信智能机器人适配器](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_4.png) +![企业微信智能机器人适配器](/images/zh/deploy/bots/wecom/wecombot/wecombot_4.png) 在 LangBot 主页中,启用并选择对应的机器人,点击进入配置页面,复制其中的 Webhook 回调地址 -::: info + 推荐您先参照[配置 HTTP 反向代理](/zh/workshop/production/proxy-and-ssl)来配置 LangBot 回调地址。 -::: + -![Webhook 回调地址](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_8.png) +![Webhook 回调地址](/images/zh/deploy/bots/wecom/wecombot/wecombot_8.png) 返回企业微信机器人配置页面将复制的webhook地址填写到`URL回调`中。若创建成功,则会跳转至详情页面,若出现`请求URL失败`字样,请再三检查上述操作是否一一完成。 创建成功之后的详情页: -![创建成功](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_5.png) +![创建成功](/images/zh/deploy/bots/wecom/wecombot/wecombot_5.png) 复制企业微信机器人详情页的`Bot ID`,回到LangBot管理页面,将部署的智能机器人的机器人Id改为复制的ID,重新启动机器人。 @@ -48,7 +50,7 @@ 进入企业微信,点击 `➕`,如图: -![添加机器人](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_6.png) +![添加机器人](/images/zh/deploy/bots/wecom/wecombot/wecombot_6.png) 点击`企业创建的`,选择创建的机器人,进入聊天界面。 @@ -56,8 +58,4 @@ ## 效果图 -![效果图1](/assets/image/zh/deploy/bots/wecom/wecombot/wecombot_7.png) - - - - +![效果图1](/images/zh/deploy/bots/wecom/wecombot/wecombot_7.png) diff --git a/docs/zh/usage/platforms/wecom/wecomcs.md b/zh/usage/platforms/wecom/wecomcs.mdx similarity index 59% rename from docs/zh/usage/platforms/wecom/wecomcs.md rename to zh/usage/platforms/wecom/wecomcs.mdx index 1f4d715a0..3202acceb 100644 --- a/docs/zh/usage/platforms/wecom/wecomcs.md +++ b/zh/usage/platforms/wecom/wecomcs.mdx @@ -1,26 +1,25 @@ -# 部署企业微信客服 +--- +title: "部署企业微信客服" +--- -:::info - -本文详细讲述 LangBot 部署到企业微信客服号的过程,此功能可以将客服号与普通微信进行对话。若只需要在企业微信内部使用,请参考[企业微信内部应用实现](wecom.md)。 + **部署企业微信客服号需要企业资质**,具体查看[企业微信客服号接入指南](https://developer.work.weixin.qq.com/document/path/94638),并且根据此文档提供对应的企业资质证明。 -::: + ## 效果图 -![效果图](/assets/image/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) +![效果图](/images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg) ## 对接 LangBot -![对接 LangBot](/assets/image/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) +![对接 LangBot](/images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png) -后续的配置方式和配置项和[企业微信内部应用](wecom.md)一样,只是不需要 `contacts_secret`。 +后续的配置方式和配置项和[企业微信内部应用](wecom)一样,只是不需要 `contacts_secret`。 ## 注意事项 1. 一定要按照上文的企业微信官方文档步骤走,将客服账号添加入 `api 管理`中。 2. 步骤与企业微信内部应用一样,不要漏看,同样需要保存回调地址,因为本质上只是在企业微信内部应用上增加了其他的权限。 3. LangBot 不会读取敏感信息如聊天记录和企业资质内容。 - diff --git a/docs/zh/usage/platforms/wxoa.md b/zh/usage/platforms/wxoa.mdx similarity index 91% rename from docs/zh/usage/platforms/wxoa.md rename to zh/usage/platforms/wxoa.mdx index 7476d46a9..bd5b8c85f 100644 --- a/docs/zh/usage/platforms/wxoa.md +++ b/zh/usage/platforms/wxoa.mdx @@ -1,4 +1,6 @@ -# 部署微信公众号机器人 +--- +title: "部署微信公众号机器人" +--- 部署微信公众号机器人接入 LangBot 。 @@ -20,7 +22,7 @@ 进入[微信公众平台](https://mp.weixin.qq.com/),如果已经有公众号账号,那么直接扫码登录,进入控制台。 如果之前没有注册过公众号,那么点击立即注册,选择 `公众号`,依次填写信息,进入控制台。控制台是这样的: -![控制台页面](/assets/image/zh/deploy/bots/wxoa/wxoa1.png) +![控制台页面](/images/zh/deploy/bots/wxoa/wxoa1.png) ## 设置回调地址 @@ -28,7 +30,7 @@ ### 获取配置项 点击`设置与开发`,`开发接口管理`,出现这样的页面: -![设置开发项](/assets/image/zh/deploy/bots/wxoa/wxoa2.png) +![设置开发项](/images/zh/deploy/bots/wxoa/wxoa2.png) 记录下来`开发者ID(AppID)`,`开发者密码(AppSecret)`,并将部署 LangBot 的服务器添加入`IP白名单`。 @@ -42,11 +44,10 @@ 至此,打开 LangBot Webui 页面,创建一个新的机器人,将获取到的四个配置项( AppID , AppSecret , token , EncodingAESKey )填入 -![设置开发项](/assets/image/zh/deploy/bots/wxoa/connect_to_langbot.png) +![设置开发项](/images/zh/deploy/bots/wxoa/connect_to_langbot.png) 在配置项中,`Mode`选项为选择的接入模式,其中默认为`drop`,`drop` 为传统收发消息模式,`passive` 为发送任意文字获取回复模式。 `LoadingMessage`选项为加载信息,可以更改为其他内容,仅在模式为`passive`下有效。将 `enable` 设置为 `true` 。 填写成功后,在 LangBot 主页中,启用并选择对应的机器人,点击进入配置页面,复制其中的 Webhook 回调地址,返回微信公众号机器人配置页面,填写到`URL`。比如 URL 填写为`https://your_domain_name/bots/xxxxx`,其中的 `your_domain_name` 就是 Caddy 中填写的域名。点击保存。如果可以保存成功,那么意味着部署成功。如果出现**系统发生错误,请稍后重试**,那么请重新检查以上配置内容是否填写正确。 - diff --git a/zh/workshop/302ai-integration.mdx b/zh/workshop/302ai-integration.mdx new file mode 100644 index 000000000..762cf8d57 --- /dev/null +++ b/zh/workshop/302ai-integration.mdx @@ -0,0 +1,7 @@ +--- +title: "接入 302.AI 的模型" +--- + +打开 WebUI 页面,添加模型时选择[302.AI](https://share.302.ai/SuTG99)即可 + +![model](/images/zh/workshop/302ai-integration/model.png) diff --git a/docs/zh/workshop/impl-platform-adapter.md b/zh/workshop/impl-platform-adapter.mdx similarity index 93% rename from docs/zh/workshop/impl-platform-adapter.md rename to zh/workshop/impl-platform-adapter.mdx index 495143cc4..000ed7457 100644 --- a/docs/zh/workshop/impl-platform-adapter.md +++ b/zh/workshop/impl-platform-adapter.mdx @@ -1,4 +1,6 @@ -# 实现一个消息平台适配器 +--- +title: "实现一个消息平台适配器" +--- 本文章将以`aiocqhttp`适配器为例,讲解如何为 LangBot 实现一个新的消息平台适配器,以便接入 WhatsApp、Discord 等新的消息平台协议。 @@ -40,11 +42,11 @@ class AiocqhttpAdapter(adapter.MessageSourceAdapter): 下图展示了两种情况的处理模式:消息平台协议无 SDK、有成熟 SDK。第一种情况我们需要根据消息平台协议的文档,自行实现连接管理、网络格式数据转换成 LB 消息 Python 对象。第二种情况,消息平台有成熟的 SDK,我们只需要根据 SDK 的文档,调用 SDK 的 API 创建连接,注册事件监听器,并实现消息转换器。 -![alt text](/assets/image/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) +![alt text](/images/zh/workshop/impl-platform-adapter/workshop_impl_platform_adapter_01.png) 在`pkg.platform.sources.aiocqhttp`文件里,我们可以看到不只有`AiocqhttpAdapter`,还有`class AiocqhttpMessageConverter(adapter.MessageConverter):` 和 `class AiocqhttpEventConverter(adapter.EventConverter):`。 - `MessageConverter` 用于进行 LangBot 消息和平台消息的互相转换。 - `EventConverter` 用于进行 LangBot 事件和平台事件的互相转换。 -TBC... \ No newline at end of file +TBC... diff --git a/docs/zh/workshop/mcp-details.md b/zh/workshop/mcp-details.mdx similarity index 83% rename from docs/zh/workshop/mcp-details.md rename to zh/workshop/mcp-details.mdx index 9168ca4da..4e7f1f1f5 100644 --- a/docs/zh/workshop/mcp-details.md +++ b/zh/workshop/mcp-details.mdx @@ -1,4 +1,6 @@ -# MCP 生态详解 +--- +title: "MCP 生态详解" +--- [MCP协议](https://modelcontextprotocol.io/) 是一种描述应用程序与 LLM 交互的协议,目前已经被多种产品采用。LangBot 可以作为 MCP Client 接入 MCP Server,大量扩展工具供 LLM 在与用户对话时使用。 @@ -11,16 +13,14 @@ - 基于 http 协议的 web 服务,通过 http 协议与 LangBot 通信 -:::info - -- 可以到 [MCP Server 列表](https://github.com/punkpeye/awesome-mcp-servers) 查看已有的 MCP Server。 + - 在线托管的 MCP Server 可以到 [Composio MCP](https://mcp.composio.dev/) 查找。 - 自行编写 MCP Server 可以参考 [MCP 协议文档](https://modelcontextprotocol.io/quickstart/server) 和 [MCP Server 示例](https://modelcontextprotocol.io/examples)。 -::: + ## 配置 MCP Server 查看 [系统设置文档](/zh/deploy/settings.html) -配置完成后即可在聊天中通过`!func`命令查看已经注册的 MCP 工具,在与支持 Function Calling 的模型对话时,LangBot 会自动调用 MCP 工具。 \ No newline at end of file +配置完成后即可在聊天中通过`!func`命令查看已经注册的 MCP 工具,在与支持 Function Calling 的模型对话时,LangBot 会自动调用 MCP 工具。 diff --git a/docs/zh/workshop/network-details.md b/zh/workshop/network-details.mdx similarity index 76% rename from docs/zh/workshop/network-details.md rename to zh/workshop/network-details.mdx index 35779c138..c3521b50e 100644 --- a/docs/zh/workshop/network-details.md +++ b/zh/workshop/network-details.mdx @@ -1,62 +1,56 @@ -# 网络配置详解 - -::: info -某些消息平台(如 QQ 个人号)需要使用独立的协议端来处理消息,如果您使用的是此类消息平台,请参考以下网络配置。 -同时,若您的 LangBot 实例需要连接其他在容器中运行的服务(如 Ollama),也可以参考以下配置,自行替换`消息平台`为`您要连接的服务`。 -::: - -LangBot 和部分消息平台均可采用 Docker 部署,以下是四种情况下的网络配置详解。 - -:::info 目录 -[[toc]] -::: - -## LangBot 和消息平台均运行在 Docker 容器中 - -如果消息平台(NapCat/Lagrange)和 LangBot 均使用 Docker 启动,那么你需要配置 Docker 的网络连接。 - -新建一个网络: - -```bash -docker network create langbot-network -``` - -在 LangBot 目录的 `docker-compose.yaml` 文件中添加网络配置(添加到 `services.langbot` 字段下,并在 `networks` 字段下添加 `langbot-network` 网络配置): - -```yaml -services: - langbot: - ... - networks: - - langbot-network - ... - -networks: - langbot-network: - external: true -``` - -然后在消息平台的 `docker-compose.yaml` 文件中添加同样的网络配置(如果是直接 docker run 命令启动的,请在启动命令中添加 `--network langbot-network`)。接着在消息平台配置文件中,把 WS 反向连接地址中的 IP 地址修改为 `langbot`(例如:`ws://langbot:2280/ws`)。 - -重启两个容器。 - - - -## 仅 LangBot 运行在 Docker 容器中 - -当只有 LangBot 采用 Docker 部署时,默认已经映射 2280 到 2290 端口到容器外。此时 LangBot 只能作为 WebSocket 服务器,接受消息平台作为客户端连接。 - -请把消息平台设置为 ReverseWebSocket(称为 `反向 ws` 或 `WebSocket 客户端`),端口对应 LangBot 的 aiocqhttp 适配器启用的端口,连接本地 127.0.0.1 即可。 - - -## LangBot 和消息平台都不使用 Docker 部署 - -根据文档配置消息平台和 LangBot 设置,两者端口设置为统一的不被占用的即可,都连接本地 127.0.0.1。 - -## 仅消息平台运行在 Docker 容器中(不建议) - -:::warning -仅支持 Linux ,或其他支持 host 模式 docker 网络的系统。 -::: - -目前 LangBot 的 aiocqhttp 适配器仅支持 反向 WebSocket 连接,当消息平台运行在 Docker 容器中而 LangBot 直接运行在宿主机时,必须由 消息平台作为客户端连接 LangBot。此时只能将 消息平台的 network 设置为 `host` 模式,再设置其 WS 连接地址为 127.0.0.1,端口对应 LangBot 的 aiocqhttp 适配器启用的端口。 +--- +title: "网络配置详解" +--- + + + 若您的 LangBot 实例需要连接其他在容器中运行的服务(如 Ollama),也可以参考以下配置,自行替换`消息平台`为`您要连接的服务`。 + + +LangBot 和部分消息平台均可采用 Docker 部署,以下是四种情况下的网络配置详解。 + +## LangBot 和消息平台均运行在 Docker 容器中 + +如果消息平台(NapCat/Lagrange)和 LangBot 均使用 Docker 启动,那么你需要配置 Docker 的网络连接。 + +新建一个网络: + +```bash +docker network create langbot-network +``` + +在 LangBot 目录的 `docker-compose.yaml` 文件中添加网络配置(添加到 `services.langbot` 字段下,并在 `networks` 字段下添加 `langbot-network` 网络配置): + +```yaml +services: + langbot: + ... + networks: + - langbot-network + ... + +networks: + langbot-network: + external: true +``` + +然后在消息平台的 `docker-compose.yaml` 文件中添加同样的网络配置(如果是直接 docker run 命令启动的,请在启动命令中添加 `--network langbot-network`)。接着在消息平台配置文件中,把 WS 反向连接地址中的 IP 地址修改为 `langbot`(例如:`ws://langbot:2280/ws`)。 + +重启两个容器。 + +## 仅 LangBot 运行在 Docker 容器中 + +当只有 LangBot 采用 Docker 部署时,默认已经映射 2280 到 2290 端口到容器外。此时 LangBot 只能作为 WebSocket 服务器,接受消息平台作为客户端连接。 + +请把消息平台设置为 ReverseWebSocket(称为 `反向 ws` 或 `WebSocket 客户端`),端口对应 LangBot 的 aiocqhttp 适配器启用的端口,连接本地 127.0.0.1 即可。 + +## LangBot 和消息平台都不使用 Docker 部署 + +根据文档配置消息平台和 LangBot 设置,两者端口设置为统一的不被占用的即可,都连接本地 127.0.0.1。 + +## 仅消息平台运行在 Docker 容器中(不建议) + + + 仅支持 Linux ,或其他支持 host 模式 docker 网络的系统。 + + +目前 LangBot 的 aiocqhttp 适配器仅支持 反向 WebSocket 连接,当消息平台运行在 Docker 容器中而 LangBot 直接运行在宿主机时,必须由 消息平台作为客户端连接 LangBot。此时只能将 消息平台的 network 设置为 `host` 模式,再设置其 WS 连接地址为 127.0.0.1,端口对应 LangBot 的 aiocqhttp 适配器启用的端口。 \ No newline at end of file diff --git a/docs/zh/workshop/newapi-integration.md b/zh/workshop/newapi-integration.mdx similarity index 88% rename from docs/zh/workshop/newapi-integration.md rename to zh/workshop/newapi-integration.mdx index e05db54c2..a9a140916 100644 --- a/docs/zh/workshop/newapi-integration.md +++ b/zh/workshop/newapi-integration.mdx @@ -1,4 +1,6 @@ -# LangBot 接入 New API +--- +title: "LangBot 接入 New API" +--- New API 是新一代大模型网关与 AI 资产管理系统,旨在解决多 AI 服务商接入分散、成本难管控、服务稳定性不足等问题,核心优势集中在三点: @@ -35,10 +37,10 @@ docker run --name new-api -d --restart always \ - 请求 URL:输入`http://服务器IP:3000/v1` - API Key:输入 New API 中创建的令牌 -![](/assets/image/zh/workshop/newapi-integration/model.png) +![](/images/zh/workshop/newapi-integration/model.png) 2. **流水线选择使用刚才配置的模型** -![](/assets/image/zh/workshop/newapi-integration/model2.png) +![](/images/zh/workshop/newapi-integration/model2.png) -3. 接下来就可以使用 New API 中的模型了 \ No newline at end of file +3. 接下来就可以使用 New API 中的模型了 diff --git a/docs/zh/workshop/ppio-integration.md b/zh/workshop/ppio-integration.mdx similarity index 57% rename from docs/zh/workshop/ppio-integration.md rename to zh/workshop/ppio-integration.mdx index 17e89d5a4..9c023f856 100644 --- a/docs/zh/workshop/ppio-integration.md +++ b/zh/workshop/ppio-integration.mdx @@ -1,5 +1,7 @@ -# 接入 PPIO 派欧云 API 的模型 +--- +title: "接入 PPIO 派欧云 API 的模型" +--- 打开 WebUI 页面,添加模型时选择[派欧云](https://ppio.cn/user/register?from=ppinfra&invited_by=QJKFYD&utm_source=github_langbot)即可 -![model](/assets/image/zh/workshop/ppio-integration/model.png) \ No newline at end of file +![model](/images/zh/workshop/ppio-integration/model.png) diff --git a/docs/zh/workshop/production/proxy-and-ssl.md b/zh/workshop/production/proxy-and-ssl.mdx similarity index 97% rename from docs/zh/workshop/production/proxy-and-ssl.md rename to zh/workshop/production/proxy-and-ssl.mdx index 8756a1e85..0d65378c8 100644 --- a/docs/zh/workshop/production/proxy-and-ssl.md +++ b/zh/workshop/production/proxy-and-ssl.mdx @@ -1,12 +1,14 @@ -# 配置 HTTP 反向代理或通过网关访问 LangBot +--- +title: "配置 HTTP 反向代理或通过网关访问 LangBot" +--- LangBot 内部未支持内置 SSL 提供 HTTPS 服务,若您需要解析域名到 LangBot 实例,或需要使用 HTTPS 访问 LangBot WebUI 和各个机器人的 Webhook 地址,请参考此文档部署 NGINX 或 Caddy 实现 HTTP 反向代理。 您需要将 LangBot 部署在具有公网 IP 的主机上,并购买域名,将域名解析到主机公网 IP 上。 -::: warning + 若您需要使用 QQ官方机器人、微信公众号、企业微信、Slack、LINE 等需要 Webhook 回调地址的机器人,请务必按照本文档配置 HTTP 反向代理。 -::: + ## Caddy @@ -25,9 +27,9 @@ your.domain.com { } ``` -::: info + 若您的 Caddy 和 LangBot 使用容器部署,请查看[容器网络配置详解](/zh/workshop/network-details) -::: + 现在,您即可通过浏览器访问 `https://your.domain.com` 访问 LangBot WebUI。 diff --git a/docs/zh/workshop/shengsuanyun-integration.md b/zh/workshop/shengsuanyun-integration.mdx similarity index 66% rename from docs/zh/workshop/shengsuanyun-integration.md rename to zh/workshop/shengsuanyun-integration.mdx index 3b2570485..3e1511c1a 100644 --- a/docs/zh/workshop/shengsuanyun-integration.md +++ b/zh/workshop/shengsuanyun-integration.mdx @@ -1,4 +1,6 @@ -# 接入来自胜算云的模型 +--- +title: "接入来自胜算云的模型" +--- 胜算云是一家提供大模型和 GPU 资源的平台,支持将国内外各种大模型接入 LangBot,包括 Claude、GPT、DeepSeek、Gemini 等。 @@ -10,10 +12,10 @@ 在胜算云顶部进入`大厂模型Router`,即可查看可用的模型列表,并复制模型名称。 -胜算云模型列表 +胜算云模型列表 前往 LangBot 模型管理页,添加模型(选择胜算云提供商,填入模型名称和 API Key): -添加模型 +添加模型 -现在即可在流水线中选择使用该模型。 \ No newline at end of file +现在即可在流水线中选择使用该模型。 diff --git a/docs/zh/workshop/tokenpony-integration.md b/zh/workshop/tokenpony-integration.mdx similarity index 63% rename from docs/zh/workshop/tokenpony-integration.md rename to zh/workshop/tokenpony-integration.mdx index 2da2a0dff..f3903d658 100644 --- a/docs/zh/workshop/tokenpony-integration.md +++ b/zh/workshop/tokenpony-integration.mdx @@ -1,6 +1,8 @@ -# 接入来自小马算力的模型 +--- +title: "接入来自小马算力的模型" +--- -![model](/assets/image/zh/workshop/tokenpony-integration/tokenpony-mainpage.png) +![model](/images/zh/workshop/tokenpony-integration/tokenpony-mainpage.png) TokenPony(小马算力)提供统一的API,可以通过单一端点访问数百个AI模型,同时自动处理回退并选择最具成本效益的选项。在 LangBot 中已完美适配,可按照以下步骤添加来自小马算力的模型。 @@ -8,11 +10,11 @@ TokenPony(小马算力)提供统一的API,可以通过单一端点访问 点击[链接](https://www.tokenpony.cn/453z1)注册小马算力账号,完成后点击右上角账户按钮,点击`API Keys` -![api-keys](/assets/image/zh/workshop/tokenpony-integration/access-api-key-page.png) +![api-keys](/images/zh/workshop/tokenpony-integration/access-api-key-page.png) 生成并复制 API Key。 -![api-keys](/assets/image/zh/workshop/tokenpony-integration/get-api-key.png) +![api-keys](/images/zh/workshop/tokenpony-integration/get-api-key.png) ## 使用聊天模型 @@ -20,6 +22,6 @@ TokenPony(小马算力)提供统一的API,可以通过单一端点访问 前往 LangBot 模型管理页,添加模型(选择小马算力提供商,填入模型名称和 API Key): -![model](/assets/image/zh/workshop/tokenpony-integration/add-model.png) +![model](/images/zh/workshop/tokenpony-integration/add-model.png) -现在即可在流水线中选择使用该模型。 \ No newline at end of file +现在即可在流水线中选择使用该模型。