From ac0e980f341913e78714ce5cdab3c4e5f64a1e84 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Sat, 6 Dec 2025 18:56:08 +0800 Subject: [PATCH] temp --- agents/noco/callback/index.ts | 21 + agents/noco/common/base-table.ts | 23 +- agents/noco/common/core.ts | 18 +- agents/noco/control/index.ts | 1 - agents/noco/index.ts | 12 +- agents/noco/life/index.ts | 1 - backend/package.json | 10 +- backend/prompts/markdown-files.json | 18 + backend/prompts/应用脚本.md | 1 + backend/prompts/快捷键.md | 18 + backend/prompts/文档.md | 1 + backend/prompts/智能家居HA.md | 5 + backend/src/routes/index.ts | 1 - backend/src/routes/noco/auto-generate-data.ts | 106 ++ backend/src/routes/noco/index.ts | 190 +-- backend/src/routes/noco/noco-life.ts | 188 +++ backend/src/routes/noco/services/life.ts | 10 +- backend/test/create-json.ts | 27 + frontend/package.json | 18 +- package.json | 4 +- pnpm-lock.yaml | 1118 +++++++++++------ 21 files changed, 1158 insertions(+), 633 deletions(-) create mode 100644 agents/noco/callback/index.ts create mode 100644 backend/prompts/markdown-files.json create mode 100644 backend/prompts/应用脚本.md create mode 100644 backend/prompts/快捷键.md create mode 100644 backend/prompts/文档.md create mode 100644 backend/prompts/智能家居HA.md create mode 100644 backend/src/routes/noco/auto-generate-data.ts create mode 100644 backend/src/routes/noco/noco-life.ts create mode 100644 backend/test/create-json.ts diff --git a/agents/noco/callback/index.ts b/agents/noco/callback/index.ts new file mode 100644 index 0000000..e00c49f --- /dev/null +++ b/agents/noco/callback/index.ts @@ -0,0 +1,21 @@ + +export type BaseNocoItem = { + Id: number, + CreatedAt: string + UpdatedAt: string +} & T; +export type NocoWehookPayload = { + /** 请求id */ + id: string; + type: "records.after.trigger"; + /** + * 多维表base id + **/ + base_id: string; + version: "v3", + data: { + table_id: string; + table_name: string; + rows: BaseNocoItem[]; + } +} \ No newline at end of file diff --git a/agents/noco/common/base-table.ts b/agents/noco/common/base-table.ts index c5ea3db..fa70f40 100644 --- a/agents/noco/common/base-table.ts +++ b/agents/noco/common/base-table.ts @@ -2,6 +2,7 @@ import { CreateColumnData } from "@kevisual/noco" export const columns: CreateColumnData[] = [ { title: 'Id', + // @ts-ignore uidt: "ID", pk: true, pv: true, @@ -10,7 +11,7 @@ export const columns: CreateColumnData[] = [ title: '标题', uidt: 'SingleLineText', - description: '简单的标题', + description: '简单的标题, 最简单的介绍', }, { title: '标签', @@ -115,4 +116,22 @@ export const columns: CreateColumnData[] = [ title: '提示词', uidt: 'LongText', description: '和AI交互时候简单的实时提示词', - }] \ No newline at end of file + }] + + +export type ColumnItem = { + 'Id': number, + 'CreatedAt': string, + 'UpdatedAt': string, + "标题": string, + "标签"?: string, + "总结"?: string, + "描述"?: string, + "数据"?: string, + "链接"?: string, + "类型"?: string, + "启动时间"?: string, + "任务"?: "非任务" | "运行中" | "已停止" | "个人计划" | "已完成" | "AI自动化", + "任务结果"?: string, + "提示词"?: string, +} & T; \ No newline at end of file diff --git a/agents/noco/common/core.ts b/agents/noco/common/core.ts index c5dad5a..d9d93ac 100644 --- a/agents/noco/common/core.ts +++ b/agents/noco/common/core.ts @@ -1,6 +1,6 @@ import { NocoApi } from "@kevisual/noco"; import { columns } from "../common/base-table.ts"; - +import { ColumnItem } from "./base-table.ts"; type ReponseData = { code: number, message?: string, @@ -11,19 +11,7 @@ export type CoreOptions = { baseId?: string } & T -type CoreItem = { - Id: number, - 标题: string, - 总结?: string, - 启动时间?: string, - 标签?: string, - 任务?: string, // 运行中,已完成,未开始 - 链接?: string, - 数据?: string, - 类型?: string, - 提示词?: string, - 任务结果?: string, -} +type CoreItem = ColumnItem export class Core { nocoApi: NocoApi; baseId?: string; @@ -68,7 +56,7 @@ export class Core { tableId = res?.data?.id; } this.tableId = tableId; - if(this.nocoApi.record) { + if (this.nocoApi.record) { this.nocoApi.record.table = tableId; } return { diff --git a/agents/noco/control/index.ts b/agents/noco/control/index.ts index 5bfefb4..7f64cb5 100644 --- a/agents/noco/control/index.ts +++ b/agents/noco/control/index.ts @@ -1,4 +1,3 @@ -import { NocoApi } from "@kevisual/noco"; import { Core } from "../common/index.ts"; export class Control extends Core { diff --git a/agents/noco/index.ts b/agents/noco/index.ts index e48b079..05d9631 100644 --- a/agents/noco/index.ts +++ b/agents/noco/index.ts @@ -1,11 +1,19 @@ import { NocoApi } from "@kevisual/noco"; -import { columns } from "./common/base-table.ts"; +import { columns, ColumnItem } from "./common/base-table.ts"; import { Life } from "../noco/life/index.ts"; import { Control } from "../noco/control/index.ts"; +import { Core } from "./common/core.ts"; +import { NocoWehookPayload } from "./callback/index.ts"; export { NocoApi, columns, + ColumnItem, Control, - Life + Life, + Core, +} + +export type { + NocoWehookPayload } \ No newline at end of file diff --git a/agents/noco/life/index.ts b/agents/noco/life/index.ts index 957cbf4..c079f9f 100644 --- a/agents/noco/life/index.ts +++ b/agents/noco/life/index.ts @@ -1,4 +1,3 @@ -import { NocoApi } from "@kevisual/noco"; import { Core } from "../common/index.ts"; export class Life extends Core { diff --git a/backend/package.json b/backend/package.json index bb2f375..00a2135 100644 --- a/backend/package.json +++ b/backend/package.json @@ -14,6 +14,7 @@ "scripts": { "dev": "bun --watch src/main.ts ", "build": "pnpm run clean && bun run bun.config.mjs", + "create": "bun run test/create-json.ts", "clean": "rm -rf dist && rimraf pack-dist", "prepub": "pnpm build", "pub": "envision pack -p -u" @@ -29,8 +30,8 @@ "dependencies": { "@kevisual/local-proxy": "^0.0.8", "@kevisual/noco-auto": "../", - "@kevisual/query": "^0.0.29", - "@kevisual/router": "0.0.33", + "@kevisual/query": "^0.0.31", + "@kevisual/router": "0.0.36", "@kevisual/use-config": "^1.0.21", "archiver": "^7.0.1", "dayjs": "^1.11.19", @@ -39,11 +40,12 @@ "nanoid": "^5.1.6" }, "devDependencies": { - "@kevisual/ai": "^0.0.15", + "@kevisual/ai": "^0.0.16", "@kevisual/types": "^0.0.10", "@types/archiver": "^7.0.0", "@types/bun": "^1.3.3", "@types/node": "^24.10.1", - "dotenv": "^17.2.3" + "dotenv": "^17.2.3", + "fast-glob": "^3.3.3" } } \ No newline at end of file diff --git a/backend/prompts/markdown-files.json b/backend/prompts/markdown-files.json new file mode 100644 index 0000000..1896a4d --- /dev/null +++ b/backend/prompts/markdown-files.json @@ -0,0 +1,18 @@ +[ + { + "title": "应用脚本", + "content": "应用脚本" + }, + { + "title": "智能家居HA", + "content": "请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下:\n\n```json\n{ \"type\": \"ha\", \"ha\": { \"entity_id\": \"string\", \"task\": \"\" } }\n```\n" + }, + { + "title": "快捷键", + "content": "请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下:\n```json\n{\"type\":\"hotkeys\",\"hotkeys\":\"ctrlOrCommand+h\"}\n```\n### 规则说明:\n\n1. **数据类型固定为**:`\"hotkeys\"`,字段名为 `hotkeys`,值为**标准快捷键字符串**,使用小写字母和 `+` 连接。\n1. **操作系统适配**:所有修饰符的 `Ctrl` 键必须替换为 `ctrlOrCommand`, 但是win默认为windows的按键,alt键保留\n2. 如果用户没有提供指令,但是说要复制,则根据对应的情况生成一个快捷键,比如ctrlOrCommand+c\n3. *优先级规则**:\n - 如果用户**明确提供了快捷键指令**(如“按 Ctrl+H”、“设置快捷键为 Ctrl+Shift+A”),则**优先解析并生成对应的快捷键**。\n - 如果用户**未明确提供快捷键**,但表达了**常见操作意图**(如“复制”、\"粘贴\"、ps快捷键等),则根据标准自动映射\n\n比如,生成一个ctrl+h的快捷键,生成的json数据是\n```json\n{”type\":\"hotkeys\",\"hotkeys\":\"ctrlOrCommnd+h\"}\n```\n### 用户输入内容是\n" + }, + { + "title": "文档", + "content": "对当前内容进行美化" + } +] \ No newline at end of file diff --git a/backend/prompts/应用脚本.md b/backend/prompts/应用脚本.md new file mode 100644 index 0000000..77d50ae --- /dev/null +++ b/backend/prompts/应用脚本.md @@ -0,0 +1 @@ +应用脚本 \ No newline at end of file diff --git a/backend/prompts/快捷键.md b/backend/prompts/快捷键.md new file mode 100644 index 0000000..3d9176e --- /dev/null +++ b/backend/prompts/快捷键.md @@ -0,0 +1,18 @@ +请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下: +```json +{"type":"hotkeys","hotkeys":"ctrlOrCommand+h"} +``` +### 规则说明: + +1. **数据类型固定为**:`"hotkeys"`,字段名为 `hotkeys`,值为**标准快捷键字符串**,使用小写字母和 `+` 连接。 +1. **操作系统适配**:所有修饰符的 `Ctrl` 键必须替换为 `ctrlOrCommand`, 但是win默认为windows的按键,alt键保留 +2. 如果用户没有提供指令,但是说要复制,则根据对应的情况生成一个快捷键,比如ctrlOrCommand+c +3. *优先级规则**: + - 如果用户**明确提供了快捷键指令**(如“按 Ctrl+H”、“设置快捷键为 Ctrl+Shift+A”),则**优先解析并生成对应的快捷键**。 + - 如果用户**未明确提供快捷键**,但表达了**常见操作意图**(如“复制”、"粘贴"、ps快捷键等),则根据标准自动映射 + +比如,生成一个ctrl+h的快捷键,生成的json数据是 +```json +{”type":"hotkeys","hotkeys":"ctrlOrCommnd+h"} +``` +### 用户输入内容是 diff --git a/backend/prompts/文档.md b/backend/prompts/文档.md new file mode 100644 index 0000000..d0469da --- /dev/null +++ b/backend/prompts/文档.md @@ -0,0 +1 @@ +对当前内容进行美化 \ No newline at end of file diff --git a/backend/prompts/智能家居HA.md b/backend/prompts/智能家居HA.md new file mode 100644 index 0000000..e88029f --- /dev/null +++ b/backend/prompts/智能家居HA.md @@ -0,0 +1,5 @@ +请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下: + +```json +{ "type": "ha", "ha": { "entity_id": "string", "task": "" } } +``` diff --git a/backend/src/routes/index.ts b/backend/src/routes/index.ts index a778eba..29a815c 100644 --- a/backend/src/routes/index.ts +++ b/backend/src/routes/index.ts @@ -2,7 +2,6 @@ // base import { app } from '../app.ts'; import './noco/index.ts'; -import './noco/config.ts'; // 添加认证中间件路由 const hasAuth = app.router.routes.some(r => r.id === 'auth'); diff --git a/backend/src/routes/noco/auto-generate-data.ts b/backend/src/routes/noco/auto-generate-data.ts new file mode 100644 index 0000000..c9c1a3f --- /dev/null +++ b/backend/src/routes/noco/auto-generate-data.ts @@ -0,0 +1,106 @@ +import { app } from '@/app.ts' +import { NocoLifeService } from './services/life.ts'; +import { useContextKey } from '@kevisual/context'; +import { NocoWehookPayload, ColumnItem } from '@kevisual/noco-auto'; +import { AIUtils, BaseChat } from '@kevisual/ai'; +export const reportErrors = (errors: any[]) => { + // TODO +} +app.route({ + path: 'noco-control', + key: 'generateData', + description: `多维表格自动生成数据接口, 根据用户需求,自动生成字段"数据"的内容`, + middleware: ['auth'] +}).define(async (ctx) => { + const query = ctx.query as NocoWehookPayload; + const token = ctx.query.token || ''; + const baseId = query?.base_id; + const tableId = query?.data?.table_id; + let question = ctx.query.question || ''; + const lifeService = new NocoLifeService({ token }); + const config = await lifeService.getLifeConfig(); + console.log('rows', query.data.rows); + if (config.baseId !== baseId) { + ctx.throw(400, 'baseId 不匹配'); + } + const life = await lifeService.createLife({ ...config, tableId }); + + const row = query.data.rows?.[0]; + if (!row) { + ctx.throw(400, '没有数据行'); + } + const columnKeys = Object.keys(row).filter(k => !['Id', 'CreatedAt', 'UpdatedAt'].includes(k)); + if (columnKeys.length === 0) { + ctx.throw(400, '没有可用的字段'); + } + let prompt = question || row['提示词'] || '' + const id = row['Id']; + if (!id) { + ctx.throw(400, '数据行没有 Id'); + } + const title = row['标题'] || ''; + const summary = row['总结'] || ''; + const type = row['类型'] || ''; + const _data = row['数据'] || ''; + let systemPrompt = getPrompt({ type }); + let other = `\n相关资料是: +标题: ${title} +总结: ${summary}` + if (_data) { + other += ` +已有数据: ${_data}` + } + + if (title) { + systemPrompt += other + } + const ai: BaseChat = useContextKey('ai'); + const answer = await ai.chat([ + { role: 'system', content: systemPrompt }, + { role: 'user', content: prompt ? prompt : '请生成对应的数据' } + ]) + let msg = ai.responseText || ''; + console.log('生成的数据内容:', msg); + const data = await AIUtils.extractJsonFromMarkdown(msg); + if (data == null) { + ctx.throw(500, 'AI 返回结果解析失败'); + } + // 更新数据到多维表格 + const itme = await life.updateItem({ + Id: id, + ['数据']: data, + }); + console.log('更新后的数据行:', itme); + ctx.body = 'ok' +}).addTo(app) + +const DATA_TYPES = ['快捷键', '应用脚本', '智能家居HA', '文档']; +type DataType = typeof DATA_TYPES[number]; +const getPrompt = (opts?: { type: DataType }) => { + const type = opts?.type || '通用'; + + const data = [ + { + "title": "应用脚本", + "content": "应用脚本" + }, + { + "title": "智能家居HA", + "content": "请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下:\n\n```json\n{ \"type\": \"ha\", \"ha\": { \"entity_id\": \"string\", \"task\": \"\" } }\n```\n" + }, + { + "title": "快捷键", + "content": "请根据用户输入生成符合规范的快捷键 JSON 数据,格式如下:\n```json\n{\"type\":\"hotkeys\",\"hotkeys\":\"ctrlOrCommand+h\"}\n```\n### 规则说明:\n\n1. **数据类型固定为**:`\"hotkeys\"`,字段名为 `hotkeys`,值为**标准快捷键字符串**,使用小写字母和 `+` 连接。\n1. **操作系统适配**:所有修饰符的 `Ctrl` 键必须替换为 `ctrlOrCommand`, 但是win默认为windows的按键,alt键保留\n2. 如果用户没有提供指令,但是说要复制,则根据对应的情况生成一个快捷键,比如ctrlOrCommand+c\n3. *优先级规则**:\n - 如果用户**明确提供了快捷键指令**(如“按 Ctrl+H”、“设置快捷键为 Ctrl+Shift+A”),则**优先解析并生成对应的快捷键**。\n - 如果用户**未明确提供快捷键**,但表达了**常见操作意图**(如“复制”、\"粘贴\"、ps快捷键等),则根据标准自动映射\n\n比如,生成一个ctrl+h的快捷键,生成的json数据是\n```json\n{”type\":\"hotkeys\",\"hotkeys\":\"ctrlOrCommnd+h\"}\n```\n### 用户输入内容是\n" + }, + { + "title": "文档", + "content": "对当前内容进行美化" + } +] + + const item = data.find(d => d.title === type); + if (item) { + return item.content; + } + return ''; +} \ No newline at end of file diff --git a/backend/src/routes/noco/index.ts b/backend/src/routes/noco/index.ts index 6ba95b6..8ad99e1 100644 --- a/backend/src/routes/noco/index.ts +++ b/backend/src/routes/noco/index.ts @@ -1,188 +1,4 @@ -import { app } from '@/app.ts' -import { NocoLifeService } from './services/life.ts'; -import { useContextKey } from '@kevisual/context'; -import { BaseChat } from '@kevisual/ai'; -import { AIUtils } from '@kevisual/ai'; -import { createLunarDate, toGregorian } from 'lunar'; -import dayjs from 'dayjs'; -app.route({ - path: 'noco-life', - key: 'chat', - description: `多维表格聊天接口, 对自己的多维表格的数据进行操作,参数是 question, `, - middleware: ['auth'] -}).define(async (ctx) => { - const question = ctx.query.question || ''; - if (!question) { - ctx.throw(400, '缺少参数 question'); - } - const token = ctx.query.token || ''; - - if (question.startsWith('配置多维表格')) { - const res = await ctx.call({ - path: 'noco-life', - key: 'config-update', - token: token, - payload: { question } - }) - ctx.body = res.body; - return; - } - const nocoLifeService = new NocoLifeService({ token }); - await nocoLifeService.initConfig() - const routes = ctx.queryRouter.getList().filter(r => r.path.startsWith('noco-life') && r.key !== 'chat'); - const v = `${routes.map((r, index) => `${index + 1}工具名称: ${r.id}\n描述: ${r.description}\n`).join('\n')}\n\n当用户询问时,如果拥有工具,请返回 JSON 数据,不存在工具,则返回分析判断,数据JSON数据类型是{id,payload},外面的id是工具的id。如果工具有参数,在 payload 当中,默认不需要参数,如果工具内部需要id,在payload当中。` - const ai: BaseChat = useContextKey('ai'); - const answer = await ai.chat([ - { role: 'system', content: `你是一个多维表格助理,你的任务是帮助用户操作和查询多维表格的数据。你可以使用以下工具来完成任务:\n\n${v}` }, - { role: 'user', content: question } - ]) - let msg = AIUtils.extractJsonFromMarkdown(ai.responseText || ''); - if (msg == null) { - ctx.throw(500, 'AI 返回结果解析失败'); - } - console.log('msg', msg); - const route = routes.find(r => r.id === msg.id || r.key === msg.id); - console.log('route============', route.id, route.path, route.key); - const res = await ctx.call({ - ...msg, - token: token - }); - if (res.code !== 200) { - console.log('调用工具失败', res.message); - ctx.throw(500, res.message || '调用工具失败'); - } - console.log('con=============', res?.data); - console.log('res', res.code, res.body?.content); - ctx.body = res.body; -}).addTo(app); - - -app.route({ - path: 'noco-life', - key: 'today', - description: `获取今天需要做的事情列表`, - middleware: ['auth'] -}).define(async (ctx) => { - const token = ctx.query.token || ''; - const nocoLifeService = new NocoLifeService({ token }); - await nocoLifeService.initConfig() - const life = nocoLifeService.life; - - const tomorrow = dayjs().add(1, 'day').startOf('day').toISOString(); - const tomorrowDate = dayjs(tomorrow).format('YYYY-MM-DD'); - const res = await life.getList({ - fields: ['Id', '标题', '总结', '启动时间', '标签', '任务'], - where: `(任务,eq,运行中)~and(启动时间,lt,exactDate,${tomorrowDate})`, - // where: "(任务,eq,运行中)~and(启动时间,le,today)", - // where: "(任务,eq,运行中)~and(启动时间,le,daysAgo,-1)", - sort: '启动时间', - }); - console.log('today res', res.data?.list?.map(i => i['标题'])); - if (res.code === 200) { - const list = res.data.list || [] - ctx.body = { - list, - content: list.map(item => { - return `任务: ${item['标题']}[${item['Id']}], 启动时间: ${dayjs(item['启动时间']).format('YYYY-MM-DD HH:mm:ss')}, 标签: ${item['标签'] || '无'} \n总结: ${item['总结'] || '无'}`; - }).join('\n') - }; - if (list.length === 0) { - ctx.body = { - list, - content: '今天没有需要做的事情了,休息一下吧' - } - } - return; - } - ctx.throw(500, '获取记录列表失败'); -}).addTo(app); - -app.route({ - path: 'noco-life', - key: 'done', - description: `完成某件事情,然后判断下一次运行时间。参数是id,数据类型是number。`, - middleware: ['auth'] -}).define(async (ctx) => { - const id = ctx.query.id; - if (!id) { - ctx.throw(400, '缺少参数 id'); - } - console.log('id', id); - const token = ctx.query.token || ''; - const nocoLifeService = new NocoLifeService({ token }); - await nocoLifeService.initConfig() - const life = nocoLifeService.life; - // 获取记录详情 - const recordRes = await life.getItem(id); - if (recordRes.code !== 200) { - ctx.throw(500, '获取记录详情失败'); - } - const record = recordRes.data; - - // 检查启动时间是否大于今天 - const startTime = record['启动时间']; - const today = dayjs().startOf('day'); - const startDate = dayjs(startTime).startOf('day'); - - if (startDate.isAfter(today)) { - ctx.throw(400, '还没到今天呢,到时候再做吧'); - } - // 计算下一次运行时间 - // 1. 知道当前时间 - // 2. 知道任务类型,如果是每日,则加一天;如果是每周,则加七天;如果是每月,则加一个月,如果是每年农历,需要转为新的,如果是其他,需要智能判断 - // 3. 更新记录 - const strTime = (time: string) => { - return dayjs(time).format('YYYY-MM-DD HH:mm:ss'); - } - const currentTime = strTime(new Date().toISOString()); - const isLuar = record['类型']?.includes?.('农历'); - let summay = record['总结'] || '无'; - if (summay.length > 200) { - summay = summay.substring(0, 200) + '...'; - } - const prompt = record['提示词'] || ''; - const type = record['类型'] || ''; - const content = `上一次执行的时间是${strTime(startTime)},当前时间是${currentTime},请帮我计算下一次的运行时间,如果时间不存在,默认在8点启动。 -${prompt ? `这是我给你的提示词,帮你更好地理解我的需求:${prompt}` : ''} - -相关资料是 -任务:${record['标题']} -总结:${summay} -类型: ${type} -` - const ai = useContextKey('ai'); - await ai.chat([ - { role: 'system', content: `你是一个时间计算专家,擅长根据任务类型和时间计算下一次运行时间。只返回我对应的日期的结果,格式是:YYYY-MM-DD HH:mm:ss。` }, - { role: 'user', content } - ]) - let nextTime = ai.responseText?.trim(); - try { - // 判断返回的时间是否可以格式化 - if (nextTime && dayjs(nextTime).isValid()) { - const time = dayjs(nextTime); - if (isLuar) { - const festival = createLunarDate({ year: time.year(), month: time.month() + 1, day: time.date() }); - const { date } = toGregorian(festival); - nextTime = dayjs(date).toISOString(); - } else { - nextTime = time.toISOString(); - } - } else { - ctx.throw(500, 'AI 返回的时间格式无效,无法格式化'); - } - } catch (e) { - ctx.throw(500, 'AI 返回结果解析失败'); - } - const update = await life.updateItem({ Id: id, '启动时间': nextTime }); - if (update.code !== 200) { - ctx.throw(500, '更新记录失败'); - } - ctx.body = { - id, - nextTime, - showCNTime: dayjs(nextTime).format('YYYY-MM-DD HH:mm:ss'), - content: `任务 "${record['标题']}" 已标记为完成。下一次运行时间是 ${dayjs(nextTime).format('YYYY-MM-DD HH:mm:ss')}` - }; - -}).addTo(app); +import './noco-life.ts' +import './config.ts' +import './auto-generate-data.ts' \ No newline at end of file diff --git a/backend/src/routes/noco/noco-life.ts b/backend/src/routes/noco/noco-life.ts new file mode 100644 index 0000000..6ba95b6 --- /dev/null +++ b/backend/src/routes/noco/noco-life.ts @@ -0,0 +1,188 @@ +import { app } from '@/app.ts' +import { NocoLifeService } from './services/life.ts'; +import { useContextKey } from '@kevisual/context'; +import { BaseChat } from '@kevisual/ai'; +import { AIUtils } from '@kevisual/ai'; +import { createLunarDate, toGregorian } from 'lunar'; +import dayjs from 'dayjs'; +app.route({ + path: 'noco-life', + key: 'chat', + description: `多维表格聊天接口, 对自己的多维表格的数据进行操作,参数是 question, `, + middleware: ['auth'] +}).define(async (ctx) => { + const question = ctx.query.question || ''; + if (!question) { + ctx.throw(400, '缺少参数 question'); + } + const token = ctx.query.token || ''; + + if (question.startsWith('配置多维表格')) { + const res = await ctx.call({ + path: 'noco-life', + key: 'config-update', + token: token, + payload: { question } + }) + ctx.body = res.body; + return; + } + const nocoLifeService = new NocoLifeService({ token }); + await nocoLifeService.initConfig() + const routes = ctx.queryRouter.getList().filter(r => r.path.startsWith('noco-life') && r.key !== 'chat'); + const v = `${routes.map((r, index) => `${index + 1}工具名称: ${r.id}\n描述: ${r.description}\n`).join('\n')}\n\n当用户询问时,如果拥有工具,请返回 JSON 数据,不存在工具,则返回分析判断,数据JSON数据类型是{id,payload},外面的id是工具的id。如果工具有参数,在 payload 当中,默认不需要参数,如果工具内部需要id,在payload当中。` + const ai: BaseChat = useContextKey('ai'); + const answer = await ai.chat([ + { role: 'system', content: `你是一个多维表格助理,你的任务是帮助用户操作和查询多维表格的数据。你可以使用以下工具来完成任务:\n\n${v}` }, + { role: 'user', content: question } + ]) + let msg = AIUtils.extractJsonFromMarkdown(ai.responseText || ''); + if (msg == null) { + ctx.throw(500, 'AI 返回结果解析失败'); + } + console.log('msg', msg); + const route = routes.find(r => r.id === msg.id || r.key === msg.id); + console.log('route============', route.id, route.path, route.key); + const res = await ctx.call({ + ...msg, + token: token + }); + if (res.code !== 200) { + console.log('调用工具失败', res.message); + ctx.throw(500, res.message || '调用工具失败'); + } + console.log('con=============', res?.data); + console.log('res', res.code, res.body?.content); + ctx.body = res.body; +}).addTo(app); + + +app.route({ + path: 'noco-life', + key: 'today', + description: `获取今天需要做的事情列表`, + middleware: ['auth'] +}).define(async (ctx) => { + const token = ctx.query.token || ''; + const nocoLifeService = new NocoLifeService({ token }); + await nocoLifeService.initConfig() + const life = nocoLifeService.life; + + const tomorrow = dayjs().add(1, 'day').startOf('day').toISOString(); + const tomorrowDate = dayjs(tomorrow).format('YYYY-MM-DD'); + const res = await life.getList({ + fields: ['Id', '标题', '总结', '启动时间', '标签', '任务'], + where: `(任务,eq,运行中)~and(启动时间,lt,exactDate,${tomorrowDate})`, + // where: "(任务,eq,运行中)~and(启动时间,le,today)", + // where: "(任务,eq,运行中)~and(启动时间,le,daysAgo,-1)", + sort: '启动时间', + }); + console.log('today res', res.data?.list?.map(i => i['标题'])); + if (res.code === 200) { + const list = res.data.list || [] + ctx.body = { + list, + content: list.map(item => { + return `任务: ${item['标题']}[${item['Id']}], 启动时间: ${dayjs(item['启动时间']).format('YYYY-MM-DD HH:mm:ss')}, 标签: ${item['标签'] || '无'} \n总结: ${item['总结'] || '无'}`; + }).join('\n') + }; + if (list.length === 0) { + ctx.body = { + list, + content: '今天没有需要做的事情了,休息一下吧' + } + } + return; + } + ctx.throw(500, '获取记录列表失败'); +}).addTo(app); + +app.route({ + path: 'noco-life', + key: 'done', + description: `完成某件事情,然后判断下一次运行时间。参数是id,数据类型是number。`, + middleware: ['auth'] +}).define(async (ctx) => { + const id = ctx.query.id; + if (!id) { + ctx.throw(400, '缺少参数 id'); + } + console.log('id', id); + const token = ctx.query.token || ''; + const nocoLifeService = new NocoLifeService({ token }); + await nocoLifeService.initConfig() + const life = nocoLifeService.life; + // 获取记录详情 + const recordRes = await life.getItem(id); + if (recordRes.code !== 200) { + ctx.throw(500, '获取记录详情失败'); + } + const record = recordRes.data; + + // 检查启动时间是否大于今天 + const startTime = record['启动时间']; + const today = dayjs().startOf('day'); + const startDate = dayjs(startTime).startOf('day'); + + if (startDate.isAfter(today)) { + ctx.throw(400, '还没到今天呢,到时候再做吧'); + } + // 计算下一次运行时间 + // 1. 知道当前时间 + // 2. 知道任务类型,如果是每日,则加一天;如果是每周,则加七天;如果是每月,则加一个月,如果是每年农历,需要转为新的,如果是其他,需要智能判断 + // 3. 更新记录 + const strTime = (time: string) => { + return dayjs(time).format('YYYY-MM-DD HH:mm:ss'); + } + const currentTime = strTime(new Date().toISOString()); + const isLuar = record['类型']?.includes?.('农历'); + let summay = record['总结'] || '无'; + if (summay.length > 200) { + summay = summay.substring(0, 200) + '...'; + } + const prompt = record['提示词'] || ''; + const type = record['类型'] || ''; + const content = `上一次执行的时间是${strTime(startTime)},当前时间是${currentTime},请帮我计算下一次的运行时间,如果时间不存在,默认在8点启动。 +${prompt ? `这是我给你的提示词,帮你更好地理解我的需求:${prompt}` : ''} + +相关资料是 +任务:${record['标题']} +总结:${summay} +类型: ${type} +` + const ai = useContextKey('ai'); + await ai.chat([ + { role: 'system', content: `你是一个时间计算专家,擅长根据任务类型和时间计算下一次运行时间。只返回我对应的日期的结果,格式是:YYYY-MM-DD HH:mm:ss。` }, + { role: 'user', content } + ]) + let nextTime = ai.responseText?.trim(); + try { + // 判断返回的时间是否可以格式化 + if (nextTime && dayjs(nextTime).isValid()) { + const time = dayjs(nextTime); + if (isLuar) { + const festival = createLunarDate({ year: time.year(), month: time.month() + 1, day: time.date() }); + const { date } = toGregorian(festival); + nextTime = dayjs(date).toISOString(); + } else { + nextTime = time.toISOString(); + } + } else { + ctx.throw(500, 'AI 返回的时间格式无效,无法格式化'); + } + } catch (e) { + ctx.throw(500, 'AI 返回结果解析失败'); + } + const update = await life.updateItem({ Id: id, '启动时间': nextTime }); + if (update.code !== 200) { + ctx.throw(500, '更新记录失败'); + } + ctx.body = { + id, + nextTime, + showCNTime: dayjs(nextTime).format('YYYY-MM-DD HH:mm:ss'), + content: `任务 "${record['标题']}" 已标记为完成。下一次运行时间是 ${dayjs(nextTime).format('YYYY-MM-DD HH:mm:ss')}` + }; + +}).addTo(app); + diff --git a/backend/src/routes/noco/services/life.ts b/backend/src/routes/noco/services/life.ts index 2d5d15f..060cf96 100644 --- a/backend/src/routes/noco/services/life.ts +++ b/backend/src/routes/noco/services/life.ts @@ -1,5 +1,4 @@ import { Life, NocoApi } from '@kevisual/noco-auto'; -import { initConfig } from "@kevisual/use-config"; import { QueryConfig } from "@/query/query-config/query-config.ts"; import { Query } from "@kevisual/query/query"; import { CustomError } from '@kevisual/router' @@ -43,6 +42,15 @@ export class NocoLifeService { }, { token: this.token }); return res; } + async createLife(data: NocoLifeConfig) { + const nocoApi = new NocoApi({ + baseURL: data.baseURL || '', + token: data.token || '', + table: data.tableId || '', + }); + const life = new Life({ nocoApi, baseId: data.baseId }); + return life; + } /** * 需要从服务端获取自己保存的配置,包括 nocodb 地址,apiKey 等 */ diff --git a/backend/test/create-json.ts b/backend/test/create-json.ts new file mode 100644 index 0000000..898c743 --- /dev/null +++ b/backend/test/create-json.ts @@ -0,0 +1,27 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import fastGlob from 'fast-glob'; + +// 匹配所有 markdown 文件 +const mds = await fastGlob('../prompts/*.md', { + cwd: __dirname, + absolute: false, +}); + +// 生成 JSON 数据 +const jsonData = mds.map((filePath) => { + const fileName = path.basename(filePath, '.md'); + const content = fs.readFileSync(path.join(__dirname, filePath), 'utf-8'); + return { + title: fileName, + content: content, + }; +}); + +// 输出 JSON +const outputPath = path.join(__dirname, '../prompts/markdown-files.json'); +fs.writeFileSync(outputPath, JSON.stringify(jsonData, null, 2), 'utf-8'); + +console.log(`已生成 JSON 文件: ${outputPath}`); +console.log(`共找到 ${jsonData.length} 个 markdown 文件`); + diff --git a/frontend/package.json b/frontend/package.json index f2754ac..ec4b357 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,29 +19,29 @@ "@astrojs/mdx": "^4.3.12", "@astrojs/react": "^4.4.2", "@astrojs/sitemap": "^3.6.0", - "@kevisual/query": "^0.0.29", + "@kevisual/query": "^0.0.31", "@kevisual/query-login": "^0.0.7", "@kevisual/registry": "^0.0.1", "@radix-ui/react-slot": "^1.2.4", "@tailwindcss/vite": "^4.1.17", - "@uiw/react-md-editor": "^4.0.8", - "antd": "^6.0.0", - "astro": "^5.16.0", + "@uiw/react-md-editor": "^4.0.11", + "antd": "^6.0.1", + "astro": "^5.16.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dayjs": "^1.11.19", "es-toolkit": "^1.42.0", "github-markdown-css": "^5.8.1", "highlight.js": "^11.11.1", - "lucide-react": "^0.554.0", + "lucide-react": "^0.556.0", "marked": "^17.0.1", "marked-highlight": "^2.2.3", "nanoid": "^5.1.6", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "^19.2.1", + "react-dom": "^19.2.1", "react-toastify": "^11.0.5", "tailwind-merge": "^3.4.0", - "zustand": "^5.0.8" + "zustand": "^5.0.9" }, "publishConfig": { "access": "public" @@ -54,7 +54,7 @@ "tailwindcss": "^4.1.17", "tw-animate-css": "^1.4.0" }, - "packageManager": "pnpm@10.23.0", + "packageManager": "pnpm@10.24.0", "onlyBuiltDependencies": [ "@tailwindcss/oxide", "esbuild", diff --git a/package.json b/package.json index 1770327..8f20f60 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "dependencies": { "@kevisual/context": "^0.0.4", "@kevisual/noco": "^0.0.8", - "@kevisual/query": "^0.0.29", - "@kevisual/router": "^0.0.33", + "@kevisual/query": "^0.0.31", + "@kevisual/router": "^0.0.36", "@kevisual/use-config": "^1.0.21" }, "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77226b8..aff7469 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,11 +15,11 @@ importers: specifier: ^0.0.8 version: 0.0.8 '@kevisual/query': - specifier: ^0.0.29 - version: 0.0.29(zod@3.25.76) + specifier: ^0.0.31 + version: 0.0.31 '@kevisual/router': - specifier: ^0.0.33 - version: 0.0.33 + specifier: ^0.0.36 + version: 0.0.36 '@kevisual/use-config': specifier: ^1.0.21 version: 1.0.21(dotenv@17.2.3) @@ -37,11 +37,11 @@ importers: specifier: ../ version: link:.. '@kevisual/query': - specifier: ^0.0.29 - version: 0.0.29(zod@3.25.76) + specifier: ^0.0.31 + version: 0.0.31 '@kevisual/router': - specifier: 0.0.33 - version: 0.0.33 + specifier: 0.0.36 + version: 0.0.36 '@kevisual/use-config': specifier: ^1.0.21 version: 1.0.21(dotenv@17.2.3) @@ -62,8 +62,8 @@ importers: version: 5.1.6 devDependencies: '@kevisual/ai': - specifier: ^0.0.15 - version: 0.0.15 + specifier: ^0.0.16 + version: 0.0.16 '@kevisual/types': specifier: ^0.0.10 version: 0.0.10 @@ -79,42 +79,45 @@ importers: dotenv: specifier: ^17.2.3 version: 17.2.3 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 frontend: dependencies: '@astrojs/mdx': specifier: ^4.3.12 - version: 4.3.12(astro@5.16.3(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)) + version: 4.3.12(astro@5.16.4(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)) '@astrojs/react': specifier: ^4.4.2 - version: 4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@astrojs/sitemap': specifier: ^3.6.0 version: 3.6.0 '@kevisual/query': - specifier: ^0.0.29 - version: 0.0.29(zod@3.25.76) + specifier: ^0.0.31 + version: 0.0.31 '@kevisual/query-login': specifier: ^0.0.7 - version: 0.0.7(@kevisual/query@0.0.29(zod@3.25.76)) + version: 0.0.7(@kevisual/query@0.0.31) '@kevisual/registry': specifier: ^0.0.1 version: 0.0.1(typescript@5.9.3) '@radix-ui/react-slot': specifier: ^1.2.4 - version: 1.2.4(@types/react@19.2.7)(react@19.2.0) + version: 1.2.4(@types/react@19.2.7)(react@19.2.1) '@tailwindcss/vite': specifier: ^4.1.17 version: 4.1.17(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)) '@uiw/react-md-editor': - specifier: ^4.0.8 - version: 4.0.9(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^4.0.11 + version: 4.0.11(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) antd: - specifier: ^6.0.0 - version: 6.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^6.0.1 + version: 6.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) astro: - specifier: ^5.16.0 - version: 5.16.3(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3) + specifier: ^5.16.4 + version: 5.16.4(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -134,8 +137,8 @@ importers: specifier: ^11.11.1 version: 11.11.1 lucide-react: - specifier: ^0.554.0 - version: 0.554.0(react@19.2.0) + specifier: ^0.556.0 + version: 0.556.0(react@19.2.1) marked: specifier: ^17.0.1 version: 17.0.1 @@ -146,20 +149,20 @@ importers: specifier: ^5.1.6 version: 5.1.6 react: - specifier: ^19.2.0 - version: 19.2.0 + specifier: ^19.2.1 + version: 19.2.1 react-dom: - specifier: ^19.2.0 - version: 19.2.0(react@19.2.0) + specifier: ^19.2.1 + version: 19.2.1(react@19.2.1) react-toastify: specifier: ^11.0.5 - version: 11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 11.0.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) tailwind-merge: specifier: ^3.4.0 version: 3.4.0 zustand: - specifier: ^5.0.8 - version: 5.0.9(@types/react@19.2.7)(react@19.2.0) + specifier: ^5.0.9 + version: 5.0.9(@types/react@19.2.7)(react@19.2.1) devDependencies: '@kevisual/types': specifier: ^0.0.10 @@ -664,8 +667,8 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@kevisual/ai@0.0.15': - resolution: {integrity: sha512-7oX/wHUKJCfvphFJq7fLBGpl4f6ASEJooQVvmgHZ7fZiYBEeVAEYAB28BNqk36iOItEyWlhuOCxq1oQz3wN+XQ==} + '@kevisual/ai@0.0.16': + resolution: {integrity: sha512-K5KYm+dwHCnB61BhVFh9UcWiOS/FeS29ijvgwE/cQR8RonfPtX/oI7WhAu0jCGGSxTI6cel2LjrpU4JoVzWgnA==} '@kevisual/cache@0.0.3': resolution: {integrity: sha512-BWEck69KYL96/ywjYVkML974RHjDJTj2ITQND1zFPR+hlBV1H1p55QZgSYRJCObg3EAV1S9Zic/fR2T4pfe8yg==} @@ -693,14 +696,17 @@ packages: peerDependencies: '@kevisual/query': ^0 - '@kevisual/query@0.0.29': - resolution: {integrity: sha512-rQZk0J073UuC1QGzuyq+pb4Y0hu8/Qx/xYHs9NbsmslM+RuMnd1zpXmvhXNj7Kn1MdYTH90ng2MlFLBkkQFaIg==} + '@kevisual/query@0.0.30': + resolution: {integrity: sha512-mDPEaLX9LdTRgi9anmWQ4EJ491umsASu/gs6K85J5nJqtUN/kfnZ3x5IouUr6aNbgAhrNLv/vTqpQTBsQhEYHQ==} + + '@kevisual/query@0.0.31': + resolution: {integrity: sha512-bBdepjmMICLpcj/a9fnn82/0CGGYUZiCV+usWsJZKAwVlZcnj+WtKmbgKT09KpP6g3jjYzYOaXHiNFB8N0bQAQ==} '@kevisual/registry@0.0.1': resolution: {integrity: sha512-//OHu9m4JDrMjgP8o8dcjZd3D3IAUkRVlkTSviouZEH7r5m7mccA3Hvzw0XJ/lelx6exC6LWsyv6c4uV0Dp+gw==} - '@kevisual/router@0.0.33': - resolution: {integrity: sha512-9z7TkSzCIGbXn9SuHPBdZpGwHlAuwA8iN5jNAZBUvbEvBRkBxlrbdCSe9fBYiAHueLm2AceFNrW74uulOiAkqA==} + '@kevisual/router@0.0.36': + resolution: {integrity: sha512-o7GAb5T0WwRuHnWe3KB0/SPVaNHrnsFSNAQ9XuWokobfDP1ACFvOR9/rjbC0fbGFaeTeRKAprixxKkY1sfunBw==} '@kevisual/types@0.0.10': resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} @@ -713,9 +719,59 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + '@peculiar/asn1-cms@2.6.0': + resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==} + + '@peculiar/asn1-csr@2.6.0': + resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==} + + '@peculiar/asn1-ecc@2.6.0': + resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==} + + '@peculiar/asn1-pfx@2.6.0': + resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==} + + '@peculiar/asn1-pkcs8@2.6.0': + resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==} + + '@peculiar/asn1-pkcs9@2.6.0': + resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==} + + '@peculiar/asn1-rsa@2.6.0': + resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==} + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@peculiar/asn1-x509-attr@2.6.0': + resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==} + + '@peculiar/asn1-x509@2.6.0': + resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==} + + '@peculiar/x509@1.14.2': + resolution: {integrity: sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==} + engines: {node: '>=22.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -742,8 +798,8 @@ packages: resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} engines: {node: '>=14.x'} - '@rc-component/cascader@1.7.0': - resolution: {integrity: sha512-Cg8AlH+9N7vht7n+bKMkJCP5ERn9HJXMYLuaLC2wVq+Fapzr+3Ei7lNr7F4OjLkXdtMhkgiX4AZBEqja8+goxw==} + '@rc-component/cascader@1.8.0': + resolution: {integrity: sha512-AYcJ6zHWua/CPp2DK2Xebu6nhcbav5PcPVVwTRb7yJTuKuwnjlB81wgtPIEgMKRv42aH3hyMYZvFgKhuxuvKmg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -857,9 +913,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@rc-component/picker@1.6.0': - resolution: {integrity: sha512-5gmNlnsK18Xu8W9xqluz8JzfRBHwPKfdUnkTwMmhGg7P8vjVUveYRHGQbyPZAE2Q11maE42x457l36FlXi4Hyw==} - engines: {node: '>=8.x'} + '@rc-component/picker@1.7.1': + resolution: {integrity: sha512-u75rwgbYbH3M2+k22dWOCXv1YUtdb5bgrD7YXCV19H6qS6mUHxQOcqRVTU2JmUPKkq+TOaHC4kDgU83mN2G01w==} + engines: {node: '>=12.x'} peerDependencies: date-fns: '>= 2.x' dayjs: '>= 1.x' @@ -1330,8 +1386,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@uiw/react-md-editor@4.0.9': - resolution: {integrity: sha512-5qFb+aDN+ka61Z083szWj0AiKgk3MUB6WN3PeQ6MJpj6OguRyMPyf5qOyX//VT0wp04tUDGx7wiglyVihJ3P8Q==} + '@uiw/react-md-editor@4.0.11': + resolution: {integrity: sha512-F0OR5O1v54EkZYvJj3ew0I7UqLiPeU34hMAY4MdXS3hI86rruYi5DHVkG/VuvLkUZW7wIETM2QFtZ459gKIjQA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1378,8 +1434,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - antd@6.0.0: - resolution: {integrity: sha512-OoalcsmgsLFI8UWLkfDJftABP2KmNDiU9REaTApb0s7cd3vZfIok7OnHKuNGQ3tCNY1NKPDvoRtWKXlpaq7zWQ==} + antd@6.0.1: + resolution: {integrity: sha512-/kCH3057suoqe1D/JJ4lxvkESZWJr1+ISTbRnbxk99gXJWaxYp7pCX+4CZSdvVDKFpU1YBkzHn9/ZVNNyHImqQ==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' @@ -1409,12 +1465,16 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + asn1js@3.0.6: + resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} + engines: {node: '>=12.0.0'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro@5.16.3: - resolution: {integrity: sha512-KzDk41F9Dspf5fM/Ls4XZhV4/csjJcWBrlenbnp5V3NGwU1zEaJz/HIyrdKdf5yw+FgwCeD2+Yos1Xkx9gnI0A==} + astro@5.16.4: + resolution: {integrity: sha512-rgXI/8/tnO3Y9tfAaUyg/8beKhlIMltbiC8Q6jCoAfEidOyaue4KYKzbe0gJIb6qEdEaG3Kf3BY3EOSLkbWOLg==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1470,6 +1530,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} @@ -1488,6 +1552,10 @@ packages: bun-types@1.3.3: resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + camelcase@8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} @@ -1820,6 +1888,13 @@ packages: 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'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -1829,6 +1904,10 @@ packages: picomatch: optional: true + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1867,6 +1946,10 @@ packages: github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true @@ -2000,10 +2083,18 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + 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==} @@ -2015,6 +2106,10 @@ packages: is-mobile@5.0.0: resolution: {integrity: sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -2155,8 +2250,8 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - lucide-react@0.554.0: - resolution: {integrity: sha512-St+z29uthEJVx0Is7ellNkgTEhaeSoA42I7JjOCBCrc5X6LYMGSv0P/2uS5HDLTExP5tpiqRD2PyUEOS6s9UXA==} + lucide-react@0.556.0: + resolution: {integrity: sha512-iOb8dRk7kLaYBZhR2VlV1CeJGxChBgUthpSP8wom9jfj79qovgG6qcSdiy6vkoREKPnbUYzJsCn4o4PtG3Iy+A==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2244,6 +2339,10 @@ packages: mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -2349,6 +2448,10 @@ packages: 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.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} @@ -2405,10 +2508,6 @@ packages: encoding: optional: true - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - node-mock-http@1.0.3: resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} @@ -2438,18 +2537,6 @@ packages: oniguruma-to-es@4.3.4: resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} - openai@5.23.2: - resolution: {integrity: sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==} - hasBin: true - peerDependencies: - ws: ^8.18.0 - zod: ^3.23.8 - peerDependenciesMeta: - ws: - optional: true - zod: - optional: true - p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -2508,6 +2595,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} + engines: {node: '>=16.0.0'} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -2533,6 +2624,16 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -2565,10 +2666,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + react-dom@19.2.1: + resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} peerDependencies: - react: ^19.2.0 + react: ^19.2.1 react-i18next@15.7.4: resolution: {integrity: sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw==} @@ -2605,8 +2706,8 @@ packages: react: ^18 || ^19 react-dom: ^18 || ^19 - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + react@19.2.1: + resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -2637,6 +2738,9 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + refractor@4.9.0: resolution: {integrity: sha512-nEG1SPXFoGGx+dcjftjv8cAjEusIh6ED1xhf5DG3C0x/k+rmZ2duKnc3QLpt6qeHv5fPb8uwN3VWN2BT7fr3Og==} @@ -2729,11 +2833,18 @@ packages: 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'} + rollup@4.53.3: resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -2749,9 +2860,9 @@ packages: scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} - selfsigned@4.0.0: - resolution: {integrity: sha512-eP/1BEUCziBF/7p96ergE2JlGOMsGj9kIe77pD99G3ValgxDFwHA2oNCYW4rjlmYp8LXc684ypH0836GjSKw0A==} - engines: {node: '>=10'} + selfsigned@5.2.0: + resolution: {integrity: sha512-QKF6fsJgdKn5Cy1SekTuwUQ6LOLUdnO4gVne1+TGSAyL/CD1aznNCmBna+bQB9xyon7DiYbDtTR1cLaxDXuaVA==} + engines: {node: '>=15.6.0'} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -2898,6 +3009,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + 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'} @@ -2921,9 +3036,16 @@ packages: typescript: optional: true + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} @@ -3226,45 +3348,45 @@ snapshots: dependencies: '@ant-design/fast-color': 3.0.0 - '@ant-design/cssinjs-utils@2.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/cssinjs-utils@2.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@ant-design/cssinjs': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@ant-design/cssinjs': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@babel/runtime': 7.28.4 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@ant-design/cssinjs@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/cssinjs@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 csstype: 3.2.3 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) stylis: 4.3.6 '@ant-design/fast-color@3.0.0': {} '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons@6.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/icons@6.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@ant-design/colors': 8.0.0 '@ant-design/icons-svg': 4.4.2 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@ant-design/react-slick@1.1.2(react@19.2.0)': + '@ant-design/react-slick@1.1.2(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 json2mq: 0.2.0 - react: 19.2.0 + react: 19.2.1 resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 @@ -3298,12 +3420,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.12(astro@5.16.3(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3))': + '@astrojs/mdx@4.3.12(astro@5.16.4(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3))': dependencies: '@astrojs/markdown-remark': 6.3.9 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.16.3(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3) + astro: 5.16.4(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -3321,13 +3443,13 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/react@4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@astrojs/react@4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@types/react': 19.2.7 '@types/react-dom': 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) ultrahtml: 1.6.0 vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2) transitivePeerDependencies: @@ -3692,10 +3814,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@kevisual/ai@0.0.15': + '@kevisual/ai@0.0.16': dependencies: '@kevisual/logger': 0.0.4 '@kevisual/permission': 0.0.3 + '@kevisual/query': 0.0.30 '@kevisual/cache@0.0.3': dependencies: @@ -3715,18 +3838,15 @@ snapshots: '@kevisual/permission@0.0.3': {} - '@kevisual/query-login@0.0.7(@kevisual/query@0.0.29(zod@3.25.76))': + '@kevisual/query-login@0.0.7(@kevisual/query@0.0.31)': dependencies: '@kevisual/cache': 0.0.3 - '@kevisual/query': 0.0.29(zod@3.25.76) + '@kevisual/query': 0.0.31 dotenv: 17.2.3 - '@kevisual/query@0.0.29(zod@3.25.76)': - dependencies: - openai: 5.23.2(zod@3.25.76) - transitivePeerDependencies: - - ws - - zod + '@kevisual/query@0.0.30': {} + + '@kevisual/query@0.0.31': {} '@kevisual/registry@0.0.1(typescript@5.9.3)': dependencies: @@ -3735,21 +3855,21 @@ snapshots: i18next: 25.7.1(typescript@5.9.3) i18next-browser-languagedetector: 8.2.0 i18next-http-backend: 3.0.2 - lucide-react: 0.509.0(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-i18next: 15.7.4(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) - react-toastify: 11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + lucide-react: 0.509.0(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-i18next: 15.7.4(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) + react-toastify: 11.0.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) tailwind-merge: 3.4.0 transitivePeerDependencies: - encoding - react-native - typescript - '@kevisual/router@0.0.33': + '@kevisual/router@0.0.36': dependencies: path-to-regexp: 8.3.0 - selfsigned: 4.0.0 + selfsigned: 5.2.0 send: 1.2.0 transitivePeerDependencies: - supports-color @@ -3791,21 +3911,125 @@ snapshots: transitivePeerDependencies: - supports-color + '@noble/hashes@1.4.0': {} + + '@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.19.1 + '@oslojs/encoding@1.1.0': {} + '@peculiar/asn1-cms@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pfx': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.6 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.6 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/x509@1.14.2': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-csr': 2.6.0 + '@peculiar/asn1-ecc': 2.6.0 + '@peculiar/asn1-pkcs9': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@pkgjs/parseargs@0.11.0': optional: true - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.1)': dependencies: - react: 19.2.0 + react: 19.2.1 optionalDependencies: '@types/react': 19.2.7 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.0)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.0) - react: 19.2.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1) + react: 19.2.1 optionalDependencies: '@types/react': 19.2.7 @@ -3813,328 +4037,328 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 - '@rc-component/cascader@1.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/cascader@1.8.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/select': 1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tree': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/select': 1.2.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tree': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/checkbox@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/checkbox@1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/collapse@1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/collapse@1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/color-picker@3.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/color-picker@3.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@ant-design/fast-color': 3.0.0 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/context@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/context@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/dialog@1.5.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/dialog@1.5.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/portal': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/portal': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/drawer@1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/drawer@1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/portal': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/portal': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) classnames: 2.5.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/dropdown@1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/dropdown@1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/form@1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/form@1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@rc-component/async-validator': 5.0.4 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/image@1.5.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/image@1.5.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/portal': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/portal': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/input-number@1.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/input-number@1.6.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@rc-component/mini-decimal': 1.1.0 - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/input@1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/input@1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/mentions@1.5.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/mentions@1.5.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/input': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/menu': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/textarea': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/input': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/menu': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/textarea': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/menu@1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/menu@1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-overflow: 1.5.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) '@rc-component/mini-decimal@1.1.0': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/motion@1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/motion@1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/mutate-observer@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/mutate-observer@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/notification@1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/notification@1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/pagination@1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/pagination@1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/picker@1.6.0(dayjs@1.11.19)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/picker@1.7.1(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-overflow: 1.5.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) optionalDependencies: dayjs: 1.11.19 - '@rc-component/portal@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/portal@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/progress@1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/progress@1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/qrcode@1.1.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/qrcode@1.1.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/rate@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/rate@1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/resize-observer@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/resize-observer@1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/segmented@1.2.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/segmented@1.2.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/select@1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/select@1.2.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-overflow: 1.5.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + rc-virtual-list: 3.19.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/slider@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/slider@1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/steps@1.2.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/steps@1.2.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/switch@1.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/switch@1.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/table@1.8.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/table@1.8.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/context': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/context': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-virtual-list: 3.19.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/tabs@1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tabs@1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/dropdown': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/menu': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/dropdown': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/menu': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/textarea@1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/textarea@1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/input': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/input': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/tooltip@1.3.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tooltip@1.3.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/tour@2.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tour@2.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/portal': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/tree-select@1.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tree-select@1.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/select': 1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tree': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/select': 1.2.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tree': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/tree@1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tree@1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-virtual-list: 3.19.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/trigger@3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/trigger@3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/portal': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/portal': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/upload@1.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/upload@1.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - '@rc-component/util@1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/util@1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: is-mobile: 5.0.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) react-is: 18.3.1 '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -4411,13 +4635,13 @@ snapshots: '@uiw/copy-to-clipboard@1.0.17': {} - '@uiw/react-markdown-preview@5.1.5(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@uiw/react-markdown-preview@5.1.5(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 '@uiw/copy-to-clipboard': 1.0.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-markdown: 9.0.3(@types/react@19.2.7)(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-markdown: 9.0.3(@types/react@19.2.7)(react@19.2.1) rehype-attr: 3.0.3 rehype-autolink-headings: 7.1.0 rehype-ignore: 2.0.2 @@ -4432,12 +4656,12 @@ snapshots: - '@types/react' - supports-color - '@uiw/react-md-editor@4.0.9(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@uiw/react-md-editor@4.0.11(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@babel/runtime': 7.28.4 - '@uiw/react-markdown-preview': 5.1.5(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@uiw/react-markdown-preview': 5.1.5(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) rehype: 13.0.2 rehype-prism-plus: 2.0.1 transitivePeerDependencies: @@ -4482,55 +4706,56 @@ snapshots: ansi-styles@6.2.3: {} - antd@6.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + antd@6.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@ant-design/colors': 8.0.0 - '@ant-design/cssinjs': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ant-design/cssinjs-utils': 2.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@ant-design/cssinjs': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@ant-design/cssinjs-utils': 2.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@ant-design/fast-color': 3.0.0 - '@ant-design/icons': 6.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ant-design/react-slick': 1.1.2(react@19.2.0) - '@rc-component/cascader': 1.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/checkbox': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/collapse': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/color-picker': 3.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/dialog': 1.5.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/drawer': 1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/dropdown': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/form': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/image': 1.5.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/input': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/input-number': 1.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/mentions': 1.5.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/menu': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/motion': 1.1.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/mutate-observer': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/notification': 1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/pagination': 1.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/picker': 1.6.0(dayjs@1.11.19)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/progress': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/qrcode': 1.1.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/rate': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/resize-observer': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/segmented': 1.2.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/select': 1.2.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/slider': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/steps': 1.2.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/switch': 1.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/table': 1.8.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tabs': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/textarea': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tooltip': 1.3.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tour': 2.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tree': 1.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tree-select': 1.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 3.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/upload': 1.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/util': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@ant-design/icons': 6.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@ant-design/react-slick': 1.1.2(react@19.2.1) + '@babel/runtime': 7.28.4 + '@rc-component/cascader': 1.8.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/checkbox': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/collapse': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/color-picker': 3.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/dialog': 1.5.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/drawer': 1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/dropdown': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/form': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/image': 1.5.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/input': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/input-number': 1.6.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/mentions': 1.5.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/menu': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/motion': 1.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/mutate-observer': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/notification': 1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/pagination': 1.2.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/picker': 1.7.1(dayjs@1.11.19)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/progress': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/qrcode': 1.1.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/rate': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/resize-observer': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/segmented': 1.2.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/select': 1.2.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/slider': 1.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/steps': 1.2.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/switch': 1.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/table': 1.8.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tabs': 1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/textarea': 1.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tooltip': 1.3.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tour': 2.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tree': 1.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/tree-select': 1.3.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/trigger': 3.7.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/upload': 1.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@rc-component/util': 1.4.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) clsx: 2.1.1 dayjs: 1.11.19 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) scroll-into-view-if-needed: 3.1.0 throttle-debounce: 5.0.2 transitivePeerDependencies: @@ -4574,9 +4799,15 @@ snapshots: array-iterate@2.0.1: {} + asn1js@3.0.6: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + astring@1.9.0: {} - astro@5.16.3(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3): + astro@5.16.4(@types/node@24.10.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.5 @@ -4715,6 +4946,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + brotli@1.3.3: dependencies: base64-js: 1.5.1 @@ -4738,6 +4973,8 @@ snapshots: dependencies: '@types/node': 24.10.1 + bytestreamjs@2.0.1: {} + camelcase@8.0.0: {} caniuse-lite@1.0.30001757: {} @@ -5048,10 +5285,26 @@ snapshots: 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 + + fastq@1.19.1: + dependencies: + reusify: 1.1.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 + flattie@1.1.1: {} fontace@0.3.1: @@ -5089,6 +5342,10 @@ snapshots: github-slugger@2.0.0: {} + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -5343,8 +5600,14 @@ snapshots: is-docker@3.0.0: {} + is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-hexadecimal@2.0.1: {} is-inside-container@1.0.0: @@ -5353,6 +5616,8 @@ snapshots: is-mobile@5.0.0: {} + is-number@7.0.0: {} + is-plain-obj@4.1.0: {} is-stream@2.0.1: {} @@ -5452,13 +5717,13 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.509.0(react@19.2.0): + lucide-react@0.509.0(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 - lucide-react@0.554.0(react@19.2.0): + lucide-react@0.556.0(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 lunar@2.0.0: {} @@ -5655,6 +5920,8 @@ snapshots: mdn-data@2.12.2: {} + merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -5919,6 +6186,11 @@ snapshots: transitivePeerDependencies: - supports-color + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.54.0: {} mime-types@3.0.2: @@ -5955,8 +6227,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-forge@1.3.1: {} - node-mock-http@1.0.3: {} node-releases@2.0.27: {} @@ -5987,10 +6257,6 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - openai@5.23.2(zod@3.25.76): - optionalDependencies: - zod: 3.25.76 - p-limit@6.2.0: dependencies: yocto-queue: 1.2.2 @@ -6050,6 +6316,15 @@ snapshots: picomatch@4.0.3: {} + pkijs@3.3.3: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.6 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -6071,62 +6346,70 @@ snapshots: property-information@7.1.0: {} + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + + queue-microtask@1.2.3: {} + radix3@1.1.2: {} range-parser@1.2.1: {} - rc-overflow@1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-overflow@1.5.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-resize-observer: 1.4.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + rc-util: 5.44.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - rc-resize-observer@1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-resize-observer@1.4.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) resize-observer-polyfill: 1.5.1 - rc-util@5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-util@5.44.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) react-is: 18.3.1 - rc-virtual-list@3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-virtual-list@3.19.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-resize-observer: 1.4.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + rc-util: 5.44.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react-dom@19.2.0(react@19.2.0): + react-dom@19.2.1(react@19.2.1): dependencies: - react: 19.2.0 + react: 19.2.1 scheduler: 0.27.0 - react-i18next@15.7.4(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): + react-i18next@15.7.4(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.4 html-parse-stringify: 3.0.1 i18next: 25.7.1(typescript@5.9.3) - react: 19.2.0 + react: 19.2.1 optionalDependencies: - react-dom: 19.2.0(react@19.2.0) + react-dom: 19.2.1(react@19.2.1) typescript: 5.9.3 react-is@18.3.1: {} - react-markdown@9.0.3(@types/react@19.2.7)(react@19.2.0): + react-markdown@9.0.3(@types/react@19.2.7)(react@19.2.1): dependencies: '@types/hast': 3.0.4 '@types/react': 19.2.7 @@ -6134,7 +6417,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.1 - react: 19.2.0 + react: 19.2.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 unified: 11.0.5 @@ -6145,13 +6428,13 @@ snapshots: react-refresh@0.17.0: {} - react-toastify@11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-toastify@11.0.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) - react@19.2.0: {} + react@19.2.1: {} readable-stream@2.3.8: dependencies: @@ -6206,6 +6489,8 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + reflect-metadata@0.2.2: {} + refractor@4.9.0: dependencies: '@types/hast': 2.3.10 @@ -6389,6 +6674,8 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 + reusify@1.1.0: {} + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 @@ -6417,6 +6704,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -6429,9 +6720,10 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 - selfsigned@4.0.0: + selfsigned@5.2.0: dependencies: - node-forge: 1.3.1 + '@peculiar/x509': 1.14.2 + pkijs: 3.3.3 semver@6.3.1: {} @@ -6629,6 +6921,10 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + toidentifier@1.0.1: {} tr46@0.0.3: {} @@ -6641,8 +6937,14 @@ snapshots: optionalDependencies: typescript: 5.9.3 + tslib@1.14.1: {} + tslib@2.8.1: {} + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + tw-animate-css@1.4.0: {} type-fest@4.41.0: {} @@ -6859,9 +7161,9 @@ snapshots: zod@3.25.76: {} - zustand@5.0.9(@types/react@19.2.7)(react@19.2.0): + zustand@5.0.9(@types/react@19.2.7)(react@19.2.1): optionalDependencies: '@types/react': 19.2.7 - react: 19.2.0 + react: 19.2.1 zwitch@2.0.4: {}