feat: add zod dependency and implement kevisual routes for CLI commands
- Added zod as a dependency in package.json. - Enhanced assistant configuration to include skills and plugins directories. - Implemented runCmd function to execute CLI commands in run.ts. - Updated light-code module to use node:child_process. - Created new kevisual routes for checking CLI login status and deploying web pages. - Added restart functionality for OpenCode client in opencode module.
This commit is contained in:
@@ -87,6 +87,7 @@
|
|||||||
"lowdb": "^7.0.1",
|
"lowdb": "^7.0.1",
|
||||||
"lru-cache": "^11.2.4",
|
"lru-cache": "^11.2.4",
|
||||||
"pm2": "^6.0.14",
|
"pm2": "^6.0.14",
|
||||||
"unstorage": "^1.17.4"
|
"unstorage": "^1.17.4",
|
||||||
|
"zod": "^4.3.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@ import { checkFileExists, createDir } from '../file/index.ts';
|
|||||||
import { ProxyInfo } from '../proxy/proxy.ts';
|
import { ProxyInfo } from '../proxy/proxy.ts';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
import { logger } from '@/module/logger.ts';
|
import { logger } from '@/module/logger.ts';
|
||||||
|
import { z } from 'zod'
|
||||||
|
|
||||||
let kevisualDir = path.join(homedir(), 'kevisual');
|
let kevisualDir = path.join(homedir(), 'kevisual');
|
||||||
const envKevisualDir = process.env.ASSISTANT_CONFIG_DIR
|
const envKevisualDir = process.env.ASSISTANT_CONFIG_DIR
|
||||||
@@ -28,12 +29,15 @@ export const initConfig = (configRootPath: string) => {
|
|||||||
const pageConfigPath = path.join(configDir, 'assistant-page-config.json');
|
const pageConfigPath = path.join(configDir, 'assistant-page-config.json');
|
||||||
const pagesDir = createDir(path.join(configDir, 'pages'));
|
const pagesDir = createDir(path.join(configDir, 'pages'));
|
||||||
const appsDir = createDir(path.join(configDir, 'apps'));
|
const appsDir = createDir(path.join(configDir, 'apps'));
|
||||||
|
const skillsDir = createDir(path.join(configDir, 'skills'), false);
|
||||||
|
const pluginsDir = createDir(path.join(configDir, 'plugins'), false);
|
||||||
|
|
||||||
const appsConfigPath = path.join(configDir, 'assistant-apps-config.json');
|
const appsConfigPath = path.join(configDir, 'assistant-apps-config.json');
|
||||||
const appPidPath = path.join(configDir, 'assistant-app.pid');
|
const appPidPath = path.join(configDir, 'assistant-app.pid');
|
||||||
const envConfigPath = path.join(configDir, '.env');
|
const envConfigPath = path.join(configDir, '.env');
|
||||||
return {
|
return {
|
||||||
/**
|
/**
|
||||||
* 助手配置文件路径
|
* 助手配置文件路径, assistant-app 目录
|
||||||
*/
|
*/
|
||||||
configDir,
|
configDir,
|
||||||
/**
|
/**
|
||||||
@@ -41,7 +45,7 @@ export const initConfig = (configRootPath: string) => {
|
|||||||
*/
|
*/
|
||||||
configPath,
|
configPath,
|
||||||
/**
|
/**
|
||||||
* 服务目录, 后端服务目录
|
* 服务目录, 后端服务目录, apps 目录
|
||||||
*/
|
*/
|
||||||
appsDir,
|
appsDir,
|
||||||
/**
|
/**
|
||||||
@@ -49,7 +53,7 @@ export const initConfig = (configRootPath: string) => {
|
|||||||
*/
|
*/
|
||||||
appsConfigPath,
|
appsConfigPath,
|
||||||
/**
|
/**
|
||||||
* 应用目录, 前端应用目录
|
* 应用目录, 前端应用目录, pages 目录
|
||||||
*/
|
*/
|
||||||
pagesDir,
|
pagesDir,
|
||||||
/**
|
/**
|
||||||
@@ -64,6 +68,14 @@ export const initConfig = (configRootPath: string) => {
|
|||||||
* 环境变量配置文件路径
|
* 环境变量配置文件路径
|
||||||
*/
|
*/
|
||||||
envConfigPath,
|
envConfigPath,
|
||||||
|
/**
|
||||||
|
* 技能目录,配置给 opencode 去用的
|
||||||
|
*/
|
||||||
|
skillsDir,
|
||||||
|
/**
|
||||||
|
* 插件目录, 给 cli 用的,动态加载插件,每一个都是独立的
|
||||||
|
*/
|
||||||
|
pluginsDir,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
export type ReturnInitConfigType = ReturnType<typeof initConfig>;
|
export type ReturnInitConfigType = ReturnType<typeof initConfig>;
|
||||||
|
|||||||
49
assistant/src/module/cmd/run.ts
Normal file
49
assistant/src/module/cmd/run.ts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import { spawn } from 'node:child_process'
|
||||||
|
|
||||||
|
type RunCmdOptions = {
|
||||||
|
cmd: string;
|
||||||
|
cwd?: string;
|
||||||
|
env?: Record<string, string>;
|
||||||
|
}
|
||||||
|
|
||||||
|
type RunResult = {
|
||||||
|
code: number;
|
||||||
|
data: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 运行命令行指令
|
||||||
|
* @param opts
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const runCmd = (opts: RunCmdOptions): Promise<RunResult> => {
|
||||||
|
const { cmd, cwd } = opts || {};
|
||||||
|
return new Promise<RunResult>((resolve) => {
|
||||||
|
const parts = cmd.split(' ');
|
||||||
|
const command = parts[0];
|
||||||
|
const args = parts.slice(1);
|
||||||
|
const proc = spawn(command, args, {
|
||||||
|
cwd: cwd || process.cwd(),
|
||||||
|
shell: true,
|
||||||
|
env: { ...process.env, ...opts?.env },
|
||||||
|
});
|
||||||
|
let stdout = '';
|
||||||
|
let stderr = '';
|
||||||
|
let result = ''
|
||||||
|
proc.stdout.on('data', (data: Buffer) => {
|
||||||
|
stdout += data.toString();
|
||||||
|
});
|
||||||
|
proc.stderr.on('data', (data: Buffer) => {
|
||||||
|
stderr += data.toString();
|
||||||
|
});
|
||||||
|
proc.on('close', (code: number) => {
|
||||||
|
result = stdout;
|
||||||
|
if (stderr) {
|
||||||
|
result += '\n' + stderr;
|
||||||
|
}
|
||||||
|
resolve({ code: code === 0 ? 200 : code, data: result });
|
||||||
|
});
|
||||||
|
proc.on('error', (err: Error) => {
|
||||||
|
resolve({ code: 500, data: err.message });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { fork } from 'child_process'
|
import { fork } from 'node:child_process'
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
||||||
export const fileExists = (path: string): boolean => {
|
export const fileExists = (path: string): boolean => {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import './call/index.ts'
|
|||||||
// import './hot-api/key-sender/index.ts';
|
// import './hot-api/key-sender/index.ts';
|
||||||
import './opencode/index.ts';
|
import './opencode/index.ts';
|
||||||
import './remote/index.ts';
|
import './remote/index.ts';
|
||||||
|
import './kevisual/index.ts'
|
||||||
|
|
||||||
import os from 'node:os';
|
import os from 'node:os';
|
||||||
import { authCache } from '@/module/cache/auth.ts';
|
import { authCache } from '@/module/cache/auth.ts';
|
||||||
@@ -160,6 +161,7 @@ app
|
|||||||
})
|
})
|
||||||
.addTo(app);
|
.addTo(app);
|
||||||
|
|
||||||
|
// 调用 path: client key: system
|
||||||
app
|
app
|
||||||
.route({
|
.route({
|
||||||
path: 'client',
|
path: 'client',
|
||||||
|
|||||||
67
assistant/src/routes/kevisual/auth.ts
Normal file
67
assistant/src/routes/kevisual/auth.ts
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
import { app } from '@/app.ts'
|
||||||
|
import { runCmd } from '@/module/cmd/run.ts';
|
||||||
|
import { createSkill, tool } from "@kevisual/router";
|
||||||
|
import { useKey } from '@kevisual/use-config';
|
||||||
|
|
||||||
|
// 查看 ev cli 是否登录
|
||||||
|
app.route({
|
||||||
|
path: 'kevisual',
|
||||||
|
key: ' me',
|
||||||
|
description: '查看 ev cli 是否登录',
|
||||||
|
middleware: ['admin-auth'],
|
||||||
|
metadata: {
|
||||||
|
tags: ['opencode'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'kevisual-me',
|
||||||
|
title: '查看 ev cli 是否登录',
|
||||||
|
summary: '查看 ev cli 是否登录',
|
||||||
|
args: {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}).define(async (ctx) => {
|
||||||
|
const cmd = 'ev me';
|
||||||
|
const res = await runCmd({ cmd })
|
||||||
|
if (res.code === 200) {
|
||||||
|
ctx.body = { content: res.data };
|
||||||
|
} else {
|
||||||
|
ctx.throw(500, res.data);
|
||||||
|
}
|
||||||
|
}).addTo(app);
|
||||||
|
|
||||||
|
// 执行工具 kevisual-login-by-admin
|
||||||
|
// 执行工具 通过当前登录用户 ev cl
|
||||||
|
// 调用 path: kevisual key: loginByAdmin
|
||||||
|
app.route({
|
||||||
|
path: 'kevisual',
|
||||||
|
key: 'loginByAdmin',
|
||||||
|
description: '通过当前登录用户 ev cli',
|
||||||
|
middleware: ['admin-auth'],
|
||||||
|
metadata: {
|
||||||
|
tags: ['opencode'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'kevisual-login-by-admin',
|
||||||
|
title: '通过当前登录用户 ev cli',
|
||||||
|
summary: '通过当前登录用户登录 ev cli, 直接用当前的用户的 token 直接设置 token 给 ev cli, 登录失败直接停止任务',
|
||||||
|
args: {}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}).define(async (ctx) => {
|
||||||
|
const token = ctx.query?.token || useKey('KEVISUAL_TOKEN');
|
||||||
|
if (!token) {
|
||||||
|
ctx.throw(400, '登录的 token 不能为空,请传入 token 参数');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const cmd = `ev login -e `;
|
||||||
|
const res = await runCmd({
|
||||||
|
cmd,
|
||||||
|
env: {
|
||||||
|
'KEVISUAL_TOKEN': token
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (res.code === 200) {
|
||||||
|
ctx.body = { content: res.data };
|
||||||
|
} else {
|
||||||
|
ctx.throw(500, res.data);
|
||||||
|
}
|
||||||
|
}).addTo(app);
|
||||||
45
assistant/src/routes/kevisual/deploy.ts
Normal file
45
assistant/src/routes/kevisual/deploy.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import { app } from '@/app.ts'
|
||||||
|
import { runCmd } from '@/module/cmd/run.ts';
|
||||||
|
import { createSkill, tool } from "@kevisual/router";
|
||||||
|
|
||||||
|
// 调用 path: kevisual key: deploy
|
||||||
|
app.route({
|
||||||
|
path: 'kevisual',
|
||||||
|
key: 'deploy',
|
||||||
|
description: '部署一个网页',
|
||||||
|
middleware: ['admin-auth'],
|
||||||
|
metadata: {
|
||||||
|
tags: ['kevisual'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'kevisual-deploy',
|
||||||
|
title: '部署一个网页',
|
||||||
|
summary: '部署一个网页到 kevisual 平台',
|
||||||
|
args: {
|
||||||
|
filepath: tool.schema.string().describe('要部署的网页文件路径'),
|
||||||
|
appKey: tool.schema.string().optional().describe('应用的 appKey,如果不传则创建一个新的应用'),
|
||||||
|
version: tool.schema.string().optional().describe('应用的版本号,默认为 1.0.0'),
|
||||||
|
update: tool.schema.boolean().optional().describe('是否同时更新部署,默认为 false'),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}).define(async (ctx) => {
|
||||||
|
const { filepath, appKey, update } = ctx.query;
|
||||||
|
console.log('部署网页,filepath:', filepath, 'appKey:', appKey);
|
||||||
|
|
||||||
|
ctx.body = { content: '部署功能正在开发中,敬请期待!' };
|
||||||
|
// ev deloly ${filepath} -k ${appKey} -v 1.0.0 -u -y y
|
||||||
|
// if (!filepath) {
|
||||||
|
// ctx.throw(400, '文件路径 filepath 不能为空');
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// let cmd = `ev deploy ${filepath} --type web`;
|
||||||
|
// if (appKey) {
|
||||||
|
// cmd += ` --appKey ${appKey}`;
|
||||||
|
// }
|
||||||
|
// const res = await runCmd({ cmd });
|
||||||
|
// if (res.code === 200) {
|
||||||
|
// ctx.body = { content: res.data };
|
||||||
|
// } else {
|
||||||
|
// ctx.throw(500, res.data);
|
||||||
|
// }
|
||||||
|
}).addTo(app);
|
||||||
2
assistant/src/routes/kevisual/index.ts
Normal file
2
assistant/src/routes/kevisual/index.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import './auth.ts'
|
||||||
|
import './deploy.ts'
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
import { app } from '@/app.ts'
|
import { app } from '@/app.ts'
|
||||||
import { createSkill, tool } from "@kevisual/router";
|
import { createSkill, tool } from "@kevisual/router";
|
||||||
import { opencodeManager } from './module/open.ts'
|
import { opencodeManager } from './module/open.ts'
|
||||||
import path from "node:path";
|
|
||||||
import { execSync } from "node:child_process";
|
|
||||||
import { useKey } from '@kevisual/use-config';
|
import { useKey } from '@kevisual/use-config';
|
||||||
|
|
||||||
// 创建一个opencode 客户端
|
// 创建一个opencode 客户端
|
||||||
@@ -27,7 +25,7 @@ app.route({
|
|||||||
ctx.body = { content: `${opencodeManager.url} OpenCode 客户端已就绪` };
|
ctx.body = { content: `${opencodeManager.url} OpenCode 客户端已就绪` };
|
||||||
}).addTo(app);
|
}).addTo(app);
|
||||||
|
|
||||||
// 关闭 opencode 客户端
|
// 关闭 opencode 客户端 5000
|
||||||
app.route({
|
app.route({
|
||||||
path: 'opencode',
|
path: 'opencode',
|
||||||
key: 'close',
|
key: 'close',
|
||||||
@@ -38,17 +36,39 @@ app.route({
|
|||||||
...createSkill({
|
...createSkill({
|
||||||
skill: 'close-opencode-client',
|
skill: 'close-opencode-client',
|
||||||
title: '关闭 OpenCode 客户端',
|
title: '关闭 OpenCode 客户端',
|
||||||
summary: '关闭 OpenCode 客户端',
|
summary: '关闭 OpenCode 客户端, 未提供端口则关闭默认端口',
|
||||||
args: {
|
args: {
|
||||||
|
port: tool.schema.number().optional().describe('OpenCode 服务端口,默认为 5000')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
}).define(async (ctx) => {
|
}).define(async (ctx) => {
|
||||||
await opencodeManager.close();
|
const port = ctx.query.port;
|
||||||
|
await opencodeManager.close({ port });
|
||||||
ctx.body = { content: 'OpenCode 客户端已关闭' };
|
ctx.body = { content: 'OpenCode 客户端已关闭' };
|
||||||
}).addTo(app);
|
}).addTo(app);
|
||||||
|
|
||||||
|
app.route({
|
||||||
|
path: 'opencode',
|
||||||
|
key: 'restart',
|
||||||
|
middleware: ['auth'],
|
||||||
|
description: '重启 OpenCode 客户端',
|
||||||
|
metadata: {
|
||||||
|
tags: ['opencode'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'restart-opencode-client',
|
||||||
|
title: '重启 OpenCode 客户端',
|
||||||
|
summary: '重启 OpenCode 客户端',
|
||||||
|
args: {
|
||||||
|
port: tool.schema.number().optional().describe('OpenCode 服务端口,默认为 5000')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}).define(async (ctx) => {
|
||||||
|
const port = ctx.query.port;
|
||||||
|
const res = await opencodeManager.restart({ port });
|
||||||
|
ctx.body = { content: `${opencodeManager.url} OpenCode 客户端已经重启` };
|
||||||
|
}).addTo(app);
|
||||||
// 调用 path: opencode key: getUrl
|
// 调用 path: opencode key: getUrl
|
||||||
app.route({
|
app.route({
|
||||||
path: 'opencode',
|
path: 'opencode',
|
||||||
|
|||||||
@@ -122,6 +122,11 @@ export class OpencodeManager {
|
|||||||
}
|
}
|
||||||
return `http://localhost:${port}`;
|
return `http://localhost:${port}`;
|
||||||
}
|
}
|
||||||
|
async restart(opts?: { port?: number }): Promise<OpencodeClient> {
|
||||||
|
const port = opts?.port ?? DEFAULT_PORT;
|
||||||
|
await this.close({ port });
|
||||||
|
return await this.getClient({ port });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const opencodeManager = OpencodeManager.getInstance();
|
export const opencodeManager = OpencodeManager.getInstance();
|
||||||
|
|||||||
273
pnpm-lock.yaml
generated
273
pnpm-lock.yaml
generated
@@ -159,6 +159,9 @@ importers:
|
|||||||
unstorage:
|
unstorage:
|
||||||
specifier: ^1.17.4
|
specifier: ^1.17.4
|
||||||
version: 1.17.4(idb-keyval@6.2.2)
|
version: 1.17.4(idb-keyval@6.2.2)
|
||||||
|
zod:
|
||||||
|
specifier: ^4.3.6
|
||||||
|
version: 4.3.6
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@kevisual/ai':
|
'@kevisual/ai':
|
||||||
specifier: ^0.0.22
|
specifier: ^0.0.22
|
||||||
@@ -357,6 +360,121 @@ importers:
|
|||||||
specifier: ^1.4.0
|
specifier: ^1.4.0
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
|
|
||||||
|
cli-center-docs:
|
||||||
|
dependencies:
|
||||||
|
'@astrojs/mdx':
|
||||||
|
specifier: ^4.3.13
|
||||||
|
version: 4.3.13(astro@5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2))
|
||||||
|
'@astrojs/react':
|
||||||
|
specifier: ^4.4.2
|
||||||
|
version: 4.4.2(@types/node@25.0.10)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
'@astrojs/sitemap':
|
||||||
|
specifier: ^3.7.0
|
||||||
|
version: 3.7.0
|
||||||
|
'@astrojs/vue':
|
||||||
|
specifier: ^5.1.4
|
||||||
|
version: 5.1.4(@types/node@25.0.10)(astro@5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(vue@3.5.27(typescript@5.8.2))
|
||||||
|
'@kevisual/api':
|
||||||
|
specifier: ^0.0.28
|
||||||
|
version: 0.0.28
|
||||||
|
'@kevisual/context':
|
||||||
|
specifier: ^0.0.4
|
||||||
|
version: 0.0.4
|
||||||
|
'@kevisual/kv-code':
|
||||||
|
specifier: ^0.0.4
|
||||||
|
version: 0.0.4(@types/react@19.2.10)(dotenv@17.2.3)
|
||||||
|
'@kevisual/query':
|
||||||
|
specifier: ^0.0.38
|
||||||
|
version: 0.0.38
|
||||||
|
'@kevisual/query-login':
|
||||||
|
specifier: ^0.0.7
|
||||||
|
version: 0.0.7(@kevisual/query@0.0.38)
|
||||||
|
'@kevisual/registry':
|
||||||
|
specifier: ^0.0.1
|
||||||
|
version: 0.0.1(typescript@5.8.2)
|
||||||
|
'@radix-ui/react-slot':
|
||||||
|
specifier: ^1.2.4
|
||||||
|
version: 1.2.4(@types/react@19.2.10)(react@19.2.4)
|
||||||
|
'@tailwindcss/vite':
|
||||||
|
specifier: ^4.1.18
|
||||||
|
version: 4.1.18(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
|
||||||
|
'@uiw/react-md-editor':
|
||||||
|
specifier: ^4.0.11
|
||||||
|
version: 4.0.11(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
antd:
|
||||||
|
specifier: ^6.2.2
|
||||||
|
version: 6.2.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
astro:
|
||||||
|
specifier: ^5.16.15
|
||||||
|
version: 5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2)
|
||||||
|
class-variance-authority:
|
||||||
|
specifier: ^0.7.1
|
||||||
|
version: 0.7.1
|
||||||
|
clsx:
|
||||||
|
specifier: ^2.1.1
|
||||||
|
version: 2.1.1
|
||||||
|
dayjs:
|
||||||
|
specifier: ^1.11.19
|
||||||
|
version: 1.11.19
|
||||||
|
es-toolkit:
|
||||||
|
specifier: ^1.44.0
|
||||||
|
version: 1.44.0
|
||||||
|
github-markdown-css:
|
||||||
|
specifier: ^5.8.1
|
||||||
|
version: 5.8.1
|
||||||
|
highlight.js:
|
||||||
|
specifier: ^11.11.1
|
||||||
|
version: 11.11.1
|
||||||
|
lucide-react:
|
||||||
|
specifier: ^0.563.0
|
||||||
|
version: 0.563.0(react@19.2.4)
|
||||||
|
marked:
|
||||||
|
specifier: ^17.0.1
|
||||||
|
version: 17.0.1
|
||||||
|
marked-highlight:
|
||||||
|
specifier: ^2.2.3
|
||||||
|
version: 2.2.3(marked@17.0.1)
|
||||||
|
nanoid:
|
||||||
|
specifier: ^5.1.6
|
||||||
|
version: 5.1.6
|
||||||
|
react:
|
||||||
|
specifier: ^19.2.4
|
||||||
|
version: 19.2.4
|
||||||
|
react-dom:
|
||||||
|
specifier: ^19.2.4
|
||||||
|
version: 19.2.4(react@19.2.4)
|
||||||
|
react-toastify:
|
||||||
|
specifier: ^11.0.5
|
||||||
|
version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
tailwind-merge:
|
||||||
|
specifier: ^3.4.0
|
||||||
|
version: 3.4.0
|
||||||
|
vue:
|
||||||
|
specifier: ^3.5.27
|
||||||
|
version: 3.5.27(typescript@5.8.2)
|
||||||
|
zustand:
|
||||||
|
specifier: ^5.0.10
|
||||||
|
version: 5.0.10(@types/react@19.2.10)(react@19.2.4)
|
||||||
|
devDependencies:
|
||||||
|
'@kevisual/types':
|
||||||
|
specifier: ^0.0.12
|
||||||
|
version: 0.0.12
|
||||||
|
'@types/react':
|
||||||
|
specifier: ^19.2.10
|
||||||
|
version: 19.2.10
|
||||||
|
'@types/react-dom':
|
||||||
|
specifier: ^19.2.3
|
||||||
|
version: 19.2.3(@types/react@19.2.10)
|
||||||
|
dotenv:
|
||||||
|
specifier: ^17.2.3
|
||||||
|
version: 17.2.3
|
||||||
|
tailwindcss:
|
||||||
|
specifier: ^4.1.18
|
||||||
|
version: 4.1.18
|
||||||
|
tw-animate-css:
|
||||||
|
specifier: ^1.4.0
|
||||||
|
version: 1.4.0
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
'@ant-design/colors@8.0.1':
|
'@ant-design/colors@8.0.1':
|
||||||
@@ -1994,39 +2112,21 @@ packages:
|
|||||||
'@sec-ant/readable-stream@0.4.1':
|
'@sec-ant/readable-stream@0.4.1':
|
||||||
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
|
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
|
||||||
|
|
||||||
'@shikijs/core@3.20.0':
|
|
||||||
resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==}
|
|
||||||
|
|
||||||
'@shikijs/core@3.21.0':
|
'@shikijs/core@3.21.0':
|
||||||
resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
|
resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.20.0':
|
|
||||||
resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==}
|
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.21.0':
|
'@shikijs/engine-javascript@3.21.0':
|
||||||
resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
|
resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.20.0':
|
|
||||||
resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
|
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.21.0':
|
'@shikijs/engine-oniguruma@3.21.0':
|
||||||
resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
|
resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
|
||||||
|
|
||||||
'@shikijs/langs@3.20.0':
|
|
||||||
resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
|
|
||||||
|
|
||||||
'@shikijs/langs@3.21.0':
|
'@shikijs/langs@3.21.0':
|
||||||
resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
|
resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
|
||||||
|
|
||||||
'@shikijs/themes@3.20.0':
|
|
||||||
resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
|
|
||||||
|
|
||||||
'@shikijs/themes@3.21.0':
|
'@shikijs/themes@3.21.0':
|
||||||
resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
|
resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
|
||||||
|
|
||||||
'@shikijs/types@3.20.0':
|
|
||||||
resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
|
|
||||||
|
|
||||||
'@shikijs/types@3.21.0':
|
'@shikijs/types@3.21.0':
|
||||||
resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
|
resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
|
||||||
|
|
||||||
@@ -2502,27 +2602,15 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@babel/core': ^7.0.0-0
|
'@babel/core': ^7.0.0-0
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.26':
|
|
||||||
resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==}
|
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.27':
|
'@vue/compiler-core@3.5.27':
|
||||||
resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==}
|
resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==}
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.26':
|
|
||||||
resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==}
|
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.27':
|
'@vue/compiler-dom@3.5.27':
|
||||||
resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==}
|
resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==}
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.26':
|
|
||||||
resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==}
|
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.27':
|
'@vue/compiler-sfc@3.5.27':
|
||||||
resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==}
|
resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==}
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.26':
|
|
||||||
resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==}
|
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.27':
|
'@vue/compiler-ssr@3.5.27':
|
||||||
resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==}
|
resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==}
|
||||||
|
|
||||||
@@ -2551,9 +2639,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: 3.5.27
|
vue: 3.5.27
|
||||||
|
|
||||||
'@vue/shared@3.5.26':
|
|
||||||
resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==}
|
|
||||||
|
|
||||||
'@vue/shared@3.5.27':
|
'@vue/shared@3.5.27':
|
||||||
resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==}
|
resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==}
|
||||||
|
|
||||||
@@ -4576,9 +4661,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
shiki@3.20.0:
|
|
||||||
resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==}
|
|
||||||
|
|
||||||
shiki@3.21.0:
|
shiki@3.21.0:
|
||||||
resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
|
resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
|
||||||
|
|
||||||
@@ -4612,10 +4694,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
|
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
|
||||||
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
|
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
|
||||||
|
|
||||||
smol-toml@1.5.2:
|
|
||||||
resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==}
|
|
||||||
engines: {node: '>= 18'}
|
|
||||||
|
|
||||||
smol-toml@1.6.0:
|
smol-toml@1.6.0:
|
||||||
resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==}
|
resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==}
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
@@ -5152,6 +5230,9 @@ packages:
|
|||||||
zod@4.1.8:
|
zod@4.1.8:
|
||||||
resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==}
|
resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==}
|
||||||
|
|
||||||
|
zod@4.3.6:
|
||||||
|
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
|
||||||
|
|
||||||
zustand@5.0.10:
|
zustand@5.0.10:
|
||||||
resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==}
|
resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==}
|
||||||
engines: {node: '>=12.20.0'}
|
engines: {node: '>=12.20.0'}
|
||||||
@@ -5243,8 +5324,8 @@ snapshots:
|
|||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0
|
||||||
remark-rehype: 11.1.2
|
remark-rehype: 11.1.2
|
||||||
remark-smartypants: 3.0.2
|
remark-smartypants: 3.0.2
|
||||||
shiki: 3.20.0
|
shiki: 3.21.0
|
||||||
smol-toml: 1.5.2
|
smol-toml: 1.6.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
unist-util-remove-position: 5.0.0
|
unist-util-remove-position: 5.0.0
|
||||||
unist-util-visit: 5.0.0
|
unist-util-visit: 5.0.0
|
||||||
@@ -5321,7 +5402,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
'@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
||||||
'@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
'@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
||||||
'@vue/compiler-sfc': 3.5.26
|
'@vue/compiler-sfc': 3.5.27
|
||||||
astro: 5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2)
|
astro: 5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2)
|
||||||
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
|
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
|
||||||
vite-plugin-vue-devtools: 7.7.9(rollup@4.43.0)(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
vite-plugin-vue-devtools: 7.7.9(rollup@4.43.0)(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
|
||||||
@@ -6498,7 +6579,7 @@ snapshots:
|
|||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.13':
|
'@jridgewell/gen-mapping@0.3.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
'@jridgewell/trace-mapping': 0.3.31
|
'@jridgewell/trace-mapping': 0.3.31
|
||||||
|
|
||||||
'@jridgewell/remapping@2.3.5':
|
'@jridgewell/remapping@2.3.5':
|
||||||
@@ -6515,7 +6596,7 @@ snapshots:
|
|||||||
'@jridgewell/trace-mapping@0.3.31':
|
'@jridgewell/trace-mapping@0.3.31':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
'@kevisual/ai@0.0.19':
|
'@kevisual/ai@0.0.19':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6686,7 +6767,7 @@ snapshots:
|
|||||||
'@kevisual/router@0.0.36':
|
'@kevisual/router@0.0.36':
|
||||||
dependencies:
|
dependencies:
|
||||||
path-to-regexp: 8.3.0
|
path-to-regexp: 8.3.0
|
||||||
selfsigned: 5.2.0
|
selfsigned: 5.4.0
|
||||||
send: 1.2.1(supports-color@10.2.2)
|
send: 1.2.1(supports-color@10.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@@ -6960,7 +7041,7 @@ snapshots:
|
|||||||
async: 2.6.4
|
async: 2.6.4
|
||||||
debug: 4.3.7(supports-color@10.2.2)
|
debug: 4.3.7(supports-color@10.2.2)
|
||||||
eventemitter2: 6.4.9
|
eventemitter2: 6.4.9
|
||||||
extrareqp2: 1.0.0(debug@4.3.7(supports-color@10.2.2))
|
extrareqp2: 1.0.0(debug@4.3.7)
|
||||||
ws: 7.5.10
|
ws: 7.5.10
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
@@ -7447,13 +7528,6 @@ snapshots:
|
|||||||
|
|
||||||
'@sec-ant/readable-stream@0.4.1': {}
|
'@sec-ant/readable-stream@0.4.1': {}
|
||||||
|
|
||||||
'@shikijs/core@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
|
||||||
'@types/hast': 3.0.4
|
|
||||||
hast-util-to-html: 9.0.5
|
|
||||||
|
|
||||||
'@shikijs/core@3.21.0':
|
'@shikijs/core@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
@@ -7461,49 +7535,25 @@ snapshots:
|
|||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
hast-util-to-html: 9.0.5
|
hast-util-to-html: 9.0.5
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
|
||||||
oniguruma-to-es: 4.3.4
|
|
||||||
|
|
||||||
'@shikijs/engine-javascript@3.21.0':
|
'@shikijs/engine-javascript@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
oniguruma-to-es: 4.3.4
|
oniguruma-to-es: 4.3.4
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
|
||||||
|
|
||||||
'@shikijs/engine-oniguruma@3.21.0':
|
'@shikijs/engine-oniguruma@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
|
|
||||||
'@shikijs/langs@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
|
|
||||||
'@shikijs/langs@3.21.0':
|
'@shikijs/langs@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
|
|
||||||
'@shikijs/themes@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
|
|
||||||
'@shikijs/themes@3.21.0':
|
'@shikijs/themes@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
|
|
||||||
'@shikijs/types@3.20.0':
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
|
||||||
'@types/hast': 3.0.4
|
|
||||||
|
|
||||||
'@shikijs/types@3.21.0':
|
'@shikijs/types@3.21.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
'@shikijs/vscode-textmate': 10.0.2
|
||||||
@@ -8108,7 +8158,7 @@ snapshots:
|
|||||||
'@babel/types': 7.28.5
|
'@babel/types': 7.28.5
|
||||||
'@vue/babel-helper-vue-transform-on': 1.5.0
|
'@vue/babel-helper-vue-transform-on': 1.5.0
|
||||||
'@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5)
|
'@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5)
|
||||||
'@vue/shared': 3.5.26
|
'@vue/shared': 3.5.27
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@babel/core': 7.28.5
|
'@babel/core': 7.28.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -8121,18 +8171,10 @@ snapshots:
|
|||||||
'@babel/helper-module-imports': 7.27.1
|
'@babel/helper-module-imports': 7.27.1
|
||||||
'@babel/helper-plugin-utils': 7.27.1
|
'@babel/helper-plugin-utils': 7.27.1
|
||||||
'@babel/parser': 7.28.5
|
'@babel/parser': 7.28.5
|
||||||
'@vue/compiler-sfc': 3.5.26
|
'@vue/compiler-sfc': 3.5.27
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.26':
|
|
||||||
dependencies:
|
|
||||||
'@babel/parser': 7.28.5
|
|
||||||
'@vue/shared': 3.5.26
|
|
||||||
entities: 7.0.0
|
|
||||||
estree-walker: 2.0.2
|
|
||||||
source-map-js: 1.2.1
|
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.27':
|
'@vue/compiler-core@3.5.27':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.28.5
|
'@babel/parser': 7.28.5
|
||||||
@@ -8141,28 +8183,11 @@ snapshots:
|
|||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.26':
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-core': 3.5.26
|
|
||||||
'@vue/shared': 3.5.26
|
|
||||||
|
|
||||||
'@vue/compiler-dom@3.5.27':
|
'@vue/compiler-dom@3.5.27':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-core': 3.5.27
|
'@vue/compiler-core': 3.5.27
|
||||||
'@vue/shared': 3.5.27
|
'@vue/shared': 3.5.27
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.26':
|
|
||||||
dependencies:
|
|
||||||
'@babel/parser': 7.28.5
|
|
||||||
'@vue/compiler-core': 3.5.26
|
|
||||||
'@vue/compiler-dom': 3.5.26
|
|
||||||
'@vue/compiler-ssr': 3.5.26
|
|
||||||
'@vue/shared': 3.5.26
|
|
||||||
estree-walker: 2.0.2
|
|
||||||
magic-string: 0.30.21
|
|
||||||
postcss: 8.5.6
|
|
||||||
source-map-js: 1.2.1
|
|
||||||
|
|
||||||
'@vue/compiler-sfc@3.5.27':
|
'@vue/compiler-sfc@3.5.27':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.28.5
|
'@babel/parser': 7.28.5
|
||||||
@@ -8175,11 +8200,6 @@ snapshots:
|
|||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.26':
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-dom': 3.5.26
|
|
||||||
'@vue/shared': 3.5.26
|
|
||||||
|
|
||||||
'@vue/compiler-ssr@3.5.27':
|
'@vue/compiler-ssr@3.5.27':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.5.27
|
'@vue/compiler-dom': 3.5.27
|
||||||
@@ -8233,8 +8253,6 @@ snapshots:
|
|||||||
'@vue/shared': 3.5.27
|
'@vue/shared': 3.5.27
|
||||||
vue: 3.5.27(typescript@5.8.2)
|
vue: 3.5.27(typescript@5.8.2)
|
||||||
|
|
||||||
'@vue/shared@3.5.26': {}
|
|
||||||
|
|
||||||
'@vue/shared@3.5.27': {}
|
'@vue/shared@3.5.27': {}
|
||||||
|
|
||||||
acorn-jsx@5.3.2(acorn@8.15.0):
|
acorn-jsx@5.3.2(acorn@8.15.0):
|
||||||
@@ -8986,9 +9004,9 @@ snapshots:
|
|||||||
|
|
||||||
extend@3.0.2: {}
|
extend@3.0.2: {}
|
||||||
|
|
||||||
extrareqp2@1.0.0(debug@4.3.7(supports-color@10.2.2)):
|
extrareqp2@1.0.0(debug@4.3.7):
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.9(debug@4.3.7(supports-color@10.2.2))
|
follow-redirects: 1.15.9(debug@4.3.7)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
|
|
||||||
@@ -9020,10 +9038,6 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
picomatch: 4.0.2
|
picomatch: 4.0.2
|
||||||
|
|
||||||
fdir@6.5.0(picomatch@4.0.2):
|
|
||||||
optionalDependencies:
|
|
||||||
picomatch: 4.0.2
|
|
||||||
|
|
||||||
fdir@6.5.0(picomatch@4.0.3):
|
fdir@6.5.0(picomatch@4.0.3):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
picomatch: 4.0.3
|
picomatch: 4.0.3
|
||||||
@@ -9042,7 +9056,7 @@ snapshots:
|
|||||||
|
|
||||||
flattie@1.1.1: {}
|
flattie@1.1.1: {}
|
||||||
|
|
||||||
follow-redirects@1.15.9(debug@4.3.7(supports-color@10.2.2)):
|
follow-redirects@1.15.9(debug@4.3.7):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
debug: 4.3.7(supports-color@10.2.2)
|
debug: 4.3.7(supports-color@10.2.2)
|
||||||
|
|
||||||
@@ -10862,17 +10876,6 @@ snapshots:
|
|||||||
|
|
||||||
shebang-regex@3.0.0: {}
|
shebang-regex@3.0.0: {}
|
||||||
|
|
||||||
shiki@3.20.0:
|
|
||||||
dependencies:
|
|
||||||
'@shikijs/core': 3.20.0
|
|
||||||
'@shikijs/engine-javascript': 3.20.0
|
|
||||||
'@shikijs/engine-oniguruma': 3.20.0
|
|
||||||
'@shikijs/langs': 3.20.0
|
|
||||||
'@shikijs/themes': 3.20.0
|
|
||||||
'@shikijs/types': 3.20.0
|
|
||||||
'@shikijs/vscode-textmate': 10.0.2
|
|
||||||
'@types/hast': 3.0.4
|
|
||||||
|
|
||||||
shiki@3.21.0:
|
shiki@3.21.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shikijs/core': 3.21.0
|
'@shikijs/core': 3.21.0
|
||||||
@@ -10913,8 +10916,6 @@ snapshots:
|
|||||||
|
|
||||||
smart-buffer@4.2.0: {}
|
smart-buffer@4.2.0: {}
|
||||||
|
|
||||||
smol-toml@1.5.2: {}
|
|
||||||
|
|
||||||
smol-toml@1.6.0: {}
|
smol-toml@1.6.0: {}
|
||||||
|
|
||||||
socks-proxy-agent@8.0.5(supports-color@10.2.2):
|
socks-proxy-agent@8.0.5(supports-color@10.2.2):
|
||||||
@@ -11257,7 +11258,7 @@ snapshots:
|
|||||||
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5)
|
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5)
|
||||||
'@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
|
'@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
|
||||||
'@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5)
|
'@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5)
|
||||||
'@vue/compiler-dom': 3.5.26
|
'@vue/compiler-dom': 3.5.27
|
||||||
kolorist: 1.8.0
|
kolorist: 1.8.0
|
||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
|
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
|
||||||
@@ -11267,8 +11268,8 @@ snapshots:
|
|||||||
vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2):
|
vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.25.12
|
esbuild: 0.25.12
|
||||||
fdir: 6.5.0(picomatch@4.0.2)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
picomatch: 4.0.2
|
picomatch: 4.0.3
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
rollup: 4.43.0
|
rollup: 4.43.0
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
@@ -11365,6 +11366,8 @@ snapshots:
|
|||||||
|
|
||||||
zod@4.1.8: {}
|
zod@4.1.8: {}
|
||||||
|
|
||||||
|
zod@4.3.6: {}
|
||||||
|
|
||||||
zustand@5.0.10(@types/react@19.2.10)(react@19.2.4):
|
zustand@5.0.10(@types/react@19.2.10)(react@19.2.4):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.10
|
'@types/react': 19.2.10
|
||||||
|
|||||||
Reference in New Issue
Block a user