* doc: add service api refs (#67)

* doc: add service api refs

* fix: page title

* docs: add Service API overview and images, mark as Beta

* doc: update for plugin system on windows

* docs: perf

* doc: add pipeline plugin comments
This commit is contained in:
Junyan Qin (Chin)
2025-11-10 23:12:48 +08:00
committed by GitHub
parent 530b9d636c
commit c493d4ef58
27 changed files with 4406 additions and 92 deletions
+46 -7
View File
@@ -1,4 +1,17 @@
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' }
const sidebarZh = useSidebar({
spec: specZh,
linkPrefix: '/zh/tags/',
})
const sidebarEn = useSidebar({
spec: specEn,
linkPrefix: '/en/tags/',
})
// https://vitepress.dev/reference/site-config
export default defineConfig({
@@ -202,15 +215,16 @@ export default defineConfig({
],
},
{ text: "迁移指南", link: "/zh/plugin/dev/migration" },
{ text: "分发插件", collapsed: true,
{
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: "系统兼容处理", link: "/zh/plugin/compatibility" },
],
},
{
@@ -246,6 +260,18 @@ export default defineConfig({
}
],
},
{
text: "[Beta] Service API 参考",
items: [
{ text: "概述", link: "/zh/tags/readme" },
...sidebarZh.generateSidebarGroups({
linkPrefix: '/zh/tags/',
}).map(group => ({
...group,
collapsed: true, // Collapsible and open by default.
})),
],
},
{
text: "开发",
items: [
@@ -459,12 +485,13 @@ export default defineConfig({
],
},
{ text: "Migration Guide", link: "/en/plugin/dev/migration" },
{ text: "Distribute Plugin", collapsed: true,
{
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" },
@@ -482,8 +509,8 @@ export default defineConfig({
// link: "/en/workshop/mcp-details"
// },
{
text: "Container Network Configuration Details",
link: "/en/workshop/network-details",
text: "Container Network Configuration Details",
link: "/en/workshop/network-details",
},
{
text: "Using New API to Transmit Models from Multiple Channels",
@@ -499,6 +526,18 @@ export default defineConfig({
}
],
},
{
text: "[Beta] Service API Reference",
items: [
{ text: "Overview", link: "/en/tags/readme" },
...sidebarEn.generateSidebarGroups({
linkPrefix: '/en/tags/',
}).map(group => ({
...group,
collapsed: true,
})),
],
},
{
text: "Development",
items: [
+68 -1
View File
@@ -1,5 +1,72 @@
// .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'
export default DefaultTheme
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 })
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -24
View File
@@ -3,7 +3,6 @@
:::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.
3. **Do not deploy LangBot natively on Windows, [this will make plugins unusable](/en/plugin/compatibility)**, please use [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install) or Docker deployment.
:::
## Installing the Main Program
@@ -12,30 +11,9 @@
![Download Release](/assets/image/zh/deploy/langbot/manual/dl_release.png)
:::info
You can also use the following commands to clone the latest code (may contain unstable code) and use it:
```bash
# Clone the main repository
git clone https://github.com/langbot-app/LangBot
cd LangBot
```
Then manually build the frontend:
```bash
# Build frontend, requires NodeJS >= 22
cd web
npm install && npm run build
cd ..
```
:::
2. Install dependencies
We use uv to manage dependencies.
We use [uv](https://docs.astral.sh/uv/) to manage dependencies.
```bash
pip install uv
@@ -61,7 +39,7 @@ You will see the following message:
📖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:
- plugins/__init__.py
- data/config.yaml
...
```
+3 -3
View File
@@ -8,8 +8,8 @@ If we switch to using `SelectorEventLoop`, it would prevent Plugin Runtime and p
For detailed information about these issues, please refer to: [Python Official Documentation](https://docs.python.org/3.13/library/asyncio-platforms.html)
## Proposed Solution
## Solution
In the future, we plan to support WebSocket as the default communication method between LangBot and Plugin Runtime, as well as between Plugin Runtime and plugins on Windows.
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.
For now, please deploy LangBot on Unix-like systems, or use Docker or WSL2 on Windows.
This behavior is automatically selected based on the OS, so no manual configuration is required.
+7 -7
View File
@@ -6,13 +6,9 @@ Each plugin runs in an independent process, managed uniformly by the Plugin Runt
<img width="600" src="/assets/image/zh/plugin/dev/plugin_system_arch.png" />
:::warning
Due to Python Asyncio compatibility issues, the plugin system currently cannot run properly in native Windows environments. Please use Docker or WSL2 for deployment: [System Compatibility](/en/plugin/compatibility)
:::
## Plugin Structure
Plugins can consist of the following components based on their specific functionality:
Plugins can provide the following components based on their specific functionality:
- Event Handlers: Listen to events during pipeline execution and modify context or pipelines.
- Commands: Triggered by user command messages starting with `!` (or other configured prefixes).
@@ -25,14 +21,18 @@ 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.
<img width="600" src="/assets/image/zh/plugin/install_from_local.png" />
<img width="600" src="/assets/image/zh/plugin/install_method.png" />
Select `.lbpkg` files shared by others or downloaded from the Marketplace to install plugins.
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.
<img width="600" src="/assets/image/zh/plugin/install_from_marketplace.png" />
After installing plugins, you need to select the plugin in your pipeline configuration page.
<img width="600" src="/assets/image/zh/plugin/pipeline_extensions.png" />
## Plugin Management
### Plugin Configuration
+13
View File
@@ -0,0 +1,13 @@
---
aside: false
outline: [2, 3]
title: Service API
---
<script setup lang="ts">
import { useData } from 'vitepress'
const { params } = useData()
</script>
<OAOperation :operationId="params.operationId" />
+18
View File
@@ -0,0 +1,18 @@
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`,
},
}
})
},
}
+16
View File
@@ -0,0 +1,16 @@
---
aside: false
outline: false
title: Service API
---
<script setup lang="ts">
import { useRoute, useData } from 'vitepress'
const route = useRoute()
const { params } = useData()
const tag = params.value.tag
</script>
<OASpec :tags="[tag]" hide-info hide-servers hide-paths-summary />
+17
View File
@@ -0,0 +1,17 @@
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`,
},
}
})
},
}
+21
View File
@@ -0,0 +1,21 @@
# 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)
After creation, copy the API Key and save it.
![copy_api_key](/assets/image/zh/api/copy_api_key.png)
## Use API
The left sidebar lists all available APIs. You can fill in your instance address (the port address exposed by the backend, default is `http://localhost:5300`) and API Key, then click the `Try it out` button to call the API.
+3 -37
View File
@@ -2,8 +2,7 @@
:::warning
1. 请使用Python 3.10.1(不包含3.10.0)及以上版本,推荐3.10.14版本,没有Python的需自行安装。
2. 不推荐此方式,后续可能不再支持手动部署,请考虑使用 Docker 部署。
3. **请勿在 Windows 系统上原生部署 LangBot,[这将导致插件不可用](/zh/plugin/compatibility)**,推荐使用 [WSL2](https://learn.microsoft.com/zh-cn/windows/wsl/install) 或 Docker 部署。
2. Unix-like 系统上请优先考虑使用 Docker 部署。
:::
## 安装主程序
@@ -12,37 +11,9 @@
![下载Release](/assets/image/zh/deploy/langbot/manual/dl_release.png)
:::info
您也可以使用以下命令克隆最新代码(有可能包含不稳定的代码)并使用:
```bash
# 克隆主仓库
git clone https://github.com/langbot-app/LangBot
cd LangBot
```
若您位于中国大陆境内,可以从 [GitCode 镜像](https://gitcode.com/RockChinQ/LangBot) 克隆:
```bash
git clone https://gitcode.com/RockChinQ/LangBot
cd LangBot
```
接下来手动构建前端:
```bash
# 构建前端,需要 NodeJS >= 22
cd web
npm install && npm run build
cd ..
```
:::
2. 安装依赖
我们使用 uv 管理依赖。
我们使用 [uv](https://docs.astral.sh/uv/) 管理依赖。
```bash
pip install uv
@@ -75,13 +46,8 @@ uv run main.py
📖文档地址: https://docs.langbot.app
以下文件不存在,已自动生成,请按需修改配置文件后重启:
- plugins/__init__.py
- data/config.yaml
...
```
接下来可以使用 Ctrl+C 退出程序,继续查看[部署机器人](/zh/deploy/platforms/readme)页。
:::info
LangBot 在每次启动时会检查所有插件的依赖以便确保所有插件都能正常运行。
如果由于网络问题导致 LangBot 无法正常检查依赖,可以提供`--skip-plugin-deps-check`参数跳过检查,并自行安装插件依赖:命令行切换目录到`plugins`目录下的每个子文件夹(若已安装插件),然后使用`uv sync`安装依赖。
:::
+4 -4
View File
@@ -1,4 +1,4 @@
# 系统兼容性
# 系统兼容处理
LangBot 插件系统运用了`Asyncio`和`Subprocess`等机制,这在unix-like系统(如Linux、MacOS)上运行良好,但在Windows上存在一些问题,导致插件无法正常运行。
@@ -8,8 +8,8 @@ Windows 上的 Python 异步事件循环默认使用 `ProactorEventLoop`,但
详细问题参阅:[Python官方文档](https://docs.python.org/zh-cn/3.13/library/asyncio-platforms.html)
## 解决方案(拟)
## 解决方案
后续将支持在 Windows 上默认采用 Websocket 作为 LangBot 到 Plugin Runtime 、Plugin Runtime 到插件的通信方式。
与 Unix-like 系统上的子进程管理与 Stdio 通信绑定的形式不同,LangBot 和 Plugin Runtime 在 Windows 上会自动采用 子进程 + WebSocket 结合的跨进程通信技术,LangBot 通过子进程启动 Plugin Runtime 但通过 WebSocket 与其通信;Plugin Runtime 也通过子进程启动各个已安装插件但通过 WebSocket 通信。
现阶段请您使用 Unix-like 系统部署 LangBot,或在 Windows 上使用 Docker 或 WSL2。
这是 LangBot 根据系统标识自动适应的,您无需手动配置。
+8 -8
View File
@@ -6,13 +6,9 @@ LangBot 内部由多种组件组成,如大模型工具、命令、消息平台
<img width="600" src="/assets/image/zh/plugin/dev/plugin_system_arch.png" />
:::warning
由于 Python Asyncio 的兼容性问题,目前无法正常在 Windows 原生环境中使用插件系统,请改为使用 Docker 或 WSL2部署:[系统兼容性](/zh/plugin/compatibility)
:::
## 插件结构
插件根据具体功能可由以下组件构成:
插件根据具体功能可提供以下组件:
- 事件处理器:监听流水线执行期间的事件,对上下文或流水线进行修改。
- 命令:由用户通过`!`(或其他已设置的前缀)开头的命令消息触发。
@@ -22,17 +18,21 @@ LangBot 内部由多种组件组成,如大模型工具、命令、消息平台
## 安装插件
目前支持上传插件包和从插件市场安装插件。
目前支持上传插件包安装、从插件市场安装以及从 GitHub Release 安装插件。
在 LangBot 的插件管理页面,点击右上角即可选择安装方式
<img width="600" src="/assets/image/zh/plugin/install_from_local.png" />
<img width="600" src="/assets/image/zh/plugin/install_method.png" />
选择他人分享的或从 Marketplace 下载的`.lbpkg`文件,即可安装插件。
点击本地安装,选择他人分享的或从 Marketplace 下载的`.lbpkg`文件,即可安装插件。
或点击插件市场 Tab,选择插件后点击安装。
<img width="600" src="/assets/image/zh/plugin/install_from_marketplace.png" />
安装插件后,您需要到流水线配置中,选择所需要使用的插件。
<img width="600" src="/assets/image/zh/plugin/pipeline_extensions.png" />
## 插件管理
### 插件配置项
+13
View File
@@ -0,0 +1,13 @@
---
aside: false
outline: [2, 3]
title: Service API
---
<script setup lang="ts">
import { useData } from 'vitepress'
const { params } = useData()
</script>
<OAOperation :operationId="params.operationId" />
+18
View File
@@ -0,0 +1,18 @@
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`,
},
}
})
},
}
+16
View File
@@ -0,0 +1,16 @@
---
aside: false
outline: false
title: Service API
---
<script setup lang="ts">
import { useRoute, useData } from 'vitepress'
const route = useRoute()
const { params } = useData()
const tag = params.value.tag
</script>
<OASpec :tags="[tag]" hide-info hide-servers hide-paths-summary />
+18
View File
@@ -0,0 +1,18 @@
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`,
},
}
})
},
}
+21
View File
@@ -0,0 +1,21 @@
# 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)
创建后,复制 API Key 并保存。
![copy_api_key](/assets/image/zh/api/copy_api_key.png)
## 使用 API
左侧列出了所有可用的 API,您可以填入您的实例地址(后端开放的端口地址,默认为 `http://localhost:5300`)和 API Key,然后点击`Try it out`按钮即可调用 API。
+2 -1
View File
@@ -8,6 +8,7 @@
"docs:preview": "vitepress preview docs"
},
"dependencies": {
"mermaid": "^11.8.0"
"mermaid": "^11.8.0",
"vitepress-openapi": "^0.1.10"
}
}
+204
View File
@@ -11,6 +11,9 @@ importers:
mermaid:
specifier: ^11.8.0
version: 11.12.1
vitepress-openapi:
specifier: ^0.1.10
version: 0.1.10([email protected](@algolia/[email protected])([email protected])([email protected]))([email protected])
devDependencies:
vitepress:
specifier: ^1.3.4
@@ -296,6 +299,18 @@ packages:
cpu: [x64]
os: [win32]
'@floating-ui/[email protected]':
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
'@floating-ui/[email protected]':
resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
'@floating-ui/[email protected]':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
'@floating-ui/[email protected]':
resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==}
'@iconify-json/[email protected]':
resolution: {integrity: sha512-/yWbO502M6WfvmcV5OjEgA4uoPN/76nrn7Hri/8g9L4GiNQ6VMgXWE9vFp4tDsmGMAe4ZCov3NbH6vJCgXZ1hA==}
@@ -305,6 +320,12 @@ packages:
'@iconify/[email protected]':
resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==}
'@internationalized/[email protected]':
resolution: {integrity: sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==}
'@internationalized/[email protected]':
resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==}
'@jridgewell/[email protected]':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
@@ -445,6 +466,17 @@ packages:
'@shikijs/[email protected]':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
'@swc/[email protected]':
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
'@tanstack/[email protected]':
resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==}
'@tanstack/[email protected]':
resolution: {integrity: sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==}
peerDependencies:
vue: ^2.7.0 || ^3.0.0
'@types/[email protected]':
resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
@@ -619,6 +651,11 @@ packages:
'@vueuse/[email protected]':
resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==}
'@vueuse/[email protected]':
resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==}
peerDependencies:
vue: ^3.5.0
'@vueuse/[email protected]':
resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==}
peerDependencies:
@@ -663,9 +700,17 @@ packages:
'@vueuse/[email protected]':
resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==}
'@vueuse/[email protected]':
resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==}
'@vueuse/[email protected]':
resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==}
'@vueuse/[email protected]':
resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==}
peerDependencies:
vue: ^3.5.0
[email protected]:
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
@@ -675,6 +720,10 @@ packages:
resolution: {integrity: sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==}
engines: {node: '>= 14.0.0'}
[email protected]:
resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
engines: {node: '>=10'}
[email protected]:
resolution: {integrity: sha512-tub/wFGH49vNCm0xraykcY3TcRgX/3JsALYq/Lwrtti+bTyFHkCUAWF5wgYoie8P41wYwig2mIKiqoocr1EkEQ==}
@@ -695,6 +744,13 @@ packages:
[email protected]:
resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==}
[email protected]:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
[email protected]:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
[email protected]:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -893,6 +949,9 @@ packages:
supports-color:
optional: true
[email protected]:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
[email protected]:
resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
@@ -993,12 +1052,20 @@ packages:
[email protected]:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
[email protected]:
resolution: {integrity: sha512-3MrtHIBdh4dPCUZDLxQnvmQ17UzUnBYgezUSIo87Laais8hOz6qIPllp0iG/uS/UIzk7bJxyZRzoZTW/gLSr4A==}
peerDependencies:
vue: '>=3.0.1'
[email protected]:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
[email protected]:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
[email protected]:
resolution: {integrity: sha512-pg5OK0jPLg62H4k7M9mRJLT61gUp9nvG0XveKYHMOOluASo9OEF13WlXrpAp2aj35LbedAy3QOCgQCw0tkLKAQ==}
[email protected]:
resolution: {integrity: sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==}
engines: {node: '>= 20'}
@@ -1042,6 +1109,9 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
[email protected]:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
[email protected]:
resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
@@ -1094,6 +1164,11 @@ packages:
[email protected]:
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
[email protected]:
resolution: {integrity: sha512-NrGMKrABD97l890mFS3TNUzB0BLUfbL3hh0NjcJRIUSUljb288bx3Mzo31nOyUcdiiW0HqFGXJwyCBh9cWgb0w==}
peerDependencies:
vue: '>= 3.2.0'
[email protected]:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
@@ -1155,6 +1230,9 @@ packages:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
[email protected]:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
[email protected]:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
@@ -1214,6 +1292,12 @@ packages:
terser:
optional: true
[email protected]:
resolution: {integrity: sha512-Pu7h2EFM0yvrjSgDsoBhWaRKTTl+5Z21lmkjh1aFtZk7f3CXD0pTXrUOh/3juBUmLv+zoS3t4vSGKtll2Cd6mw==}
peerDependencies:
vitepress: '>=1.0.0'
vue: ^3.0.0
[email protected]:
resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==}
hasBin: true
@@ -1246,6 +1330,17 @@ packages:
[email protected]:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
[email protected]:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
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
[email protected]:
resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==}
peerDependencies:
@@ -1503,6 +1598,26 @@ snapshots:
'@esbuild/[email protected]':
optional: true
'@floating-ui/[email protected]':
dependencies:
'@floating-ui/utils': 0.2.10
'@floating-ui/[email protected]':
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.10
'@floating-ui/[email protected]': {}
'@floating-ui/[email protected]([email protected])':
dependencies:
'@floating-ui/dom': 1.7.4
'@floating-ui/utils': 0.2.10
vue-demi: 0.14.10([email protected])
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@iconify-json/[email protected]':
dependencies:
'@iconify/types': 2.0.0
@@ -1522,6 +1637,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@internationalized/[email protected]':
dependencies:
'@swc/helpers': 0.5.17
'@internationalized/[email protected]':
dependencies:
'@swc/helpers': 0.5.17
'@jridgewell/[email protected]': {}
'@mermaid-js/[email protected]':
@@ -1634,6 +1757,17 @@ snapshots:
'@shikijs/[email protected]': {}
'@swc/[email protected]':
dependencies:
tslib: 2.8.1
'@tanstack/[email protected]': {}
'@tanstack/[email protected]([email protected])':
dependencies:
'@tanstack/virtual-core': 3.13.12
vue: 3.5.22
'@types/[email protected]': {}
'@types/[email protected]':
@@ -1867,6 +2001,13 @@ snapshots:
transitivePeerDependencies:
- typescript
'@vueuse/[email protected]([email protected])':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 13.9.0
'@vueuse/shared': 13.9.0([email protected])
vue: 3.5.22
'@vueuse/[email protected]([email protected])':
dependencies:
'@vueuse/core': 12.8.2
@@ -1879,12 +2020,18 @@ snapshots:
'@vueuse/[email protected]': {}
'@vueuse/[email protected]': {}
'@vueuse/[email protected]':
dependencies:
vue: 3.5.22
transitivePeerDependencies:
- typescript
'@vueuse/[email protected]([email protected])':
dependencies:
vue: 3.5.22
[email protected]: {}
[email protected]:
@@ -1904,6 +2051,10 @@ snapshots:
'@algolia/requester-fetch': 5.42.0
'@algolia/requester-node-http': 5.42.0
[email protected]:
dependencies:
tslib: 2.8.1
[email protected]: {}
[email protected]: {}
@@ -1926,6 +2077,12 @@ snapshots:
'@chevrotain/utils': 11.0.3
lodash-es: 4.17.21
[email protected]:
dependencies:
clsx: 2.1.1
[email protected]: {}
[email protected]: {}
[email protected]: {}
@@ -2140,6 +2297,8 @@ snapshots:
dependencies:
ms: 2.1.3
[email protected]: {}
[email protected]:
dependencies:
robust-predicates: 3.0.2
@@ -2259,12 +2418,18 @@ snapshots:
[email protected]: {}
[email protected]([email protected]):
dependencies:
vue: 3.5.22
[email protected]:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
[email protected]: {}
[email protected]: {}
[email protected]: {}
[email protected]:
@@ -2336,6 +2501,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
emoji-regex-xs: 1.0.0
@@ -2393,6 +2560,23 @@ snapshots:
dependencies:
regex-utilities: 2.3.0
[email protected]([email protected]):
dependencies:
'@floating-ui/dom': 1.7.4
'@floating-ui/vue': 1.1.9([email protected])
'@internationalized/date': 3.10.0
'@internationalized/number': 3.6.5
'@tanstack/vue-virtual': 3.13.12([email protected])
'@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
[email protected]: {}
[email protected]: {}
@@ -2474,6 +2658,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]: {}
[email protected]:
@@ -2519,6 +2705,20 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
[email protected]([email protected](@algolia/[email protected])([email protected])([email protected]))([email protected]):
dependencies:
'@vueuse/core': 13.9.0([email protected])
class-variance-authority: 0.7.1
clsx: 2.1.1
lucide-vue-next: 0.503.0([email protected])
markdown-it-link-attributes: 4.0.1
reka-ui: 2.6.0([email protected])
vitepress: 1.6.4(@algolia/[email protected])([email protected])([email protected])
vue: 3.5.22
transitivePeerDependencies:
- '@vue/composition-api'
- typescript
[email protected](@algolia/[email protected])([email protected])([email protected]):
dependencies:
'@docsearch/css': 3.8.2
@@ -2585,6 +2785,10 @@ snapshots:
[email protected]: {}
[email protected]([email protected]):
dependencies:
vue: 3.5.22
[email protected]:
dependencies:
'@vue/compiler-dom': 3.5.22