feat: 添加云端构建功能,支持参数配置和环境变量
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import { Result } from '@kevisual/query';
|
||||
import { CNB } from '../../src/index.ts';
|
||||
import { useKey } from '@kevisual/context';
|
||||
export const getConfig = async (opts: { token?: string }) => {
|
||||
const res = await fetch('https://kevisual.cn/api/router', {
|
||||
const kevisualEnv = useKey('KEVISUAL_ENV')
|
||||
const baseUrl = kevisualEnv === 'production' ? 'https://kevisual.cn/api/router' : 'https://kevisual.xiongxiao.me/api/router';
|
||||
const res = await fetch(baseUrl, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
path: 'config',
|
||||
@@ -51,6 +54,7 @@ export class CNBManager {
|
||||
cnbItem.runAt = Date.now()
|
||||
return cnbItem
|
||||
}
|
||||
|
||||
const res = await getConfig({ token: opts?.kevisualToken })
|
||||
if (res.code === 200) {
|
||||
const cookie = res.data?.data?.CNB_COOKIE
|
||||
|
||||
@@ -43,6 +43,27 @@ app.route({
|
||||
}
|
||||
}).addTo(app);
|
||||
|
||||
app.route({
|
||||
path: 'cnb',
|
||||
key: 'get-repo',
|
||||
description: '获取代码仓库详情, 参数name',
|
||||
middleware: ['auth'],
|
||||
metadata: {
|
||||
args: {
|
||||
name: tool.schema.string().describe('代码仓库名称, 如 my-user/my-repo'),
|
||||
}
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const cnb = await cnbManager.getContext(ctx);
|
||||
const name = ctx.query?.name;
|
||||
|
||||
if (!name) {
|
||||
ctx.throw(400, '缺少参数 name');
|
||||
}
|
||||
const res = await cnb.repo.getRepo(name);
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
|
||||
app.route({
|
||||
path: 'cnb',
|
||||
key: 'create-repo-file',
|
||||
@@ -106,7 +127,56 @@ app.route({
|
||||
if (!name) {
|
||||
ctx.throw(400, '缺少参数 name');
|
||||
}
|
||||
try {
|
||||
const resCookie = await cnb.user.checkCookieValid()
|
||||
if (resCookie.code !== 200) {
|
||||
ctx.throw(401, 'Cookie 无效或已过期');
|
||||
}
|
||||
const res = await cnb.repo.deleteRepoCookie(name);
|
||||
ctx.forward(res);
|
||||
} catch (error) {
|
||||
ctx.code = 200
|
||||
ctx.body = { content: '已经删除' }
|
||||
}
|
||||
}).addTo(app);
|
||||
|
||||
const res = await cnb.repo.deleteRepoCookie(name);
|
||||
|
||||
app.route({
|
||||
path: 'cnb',
|
||||
key: 'update-repo-info',
|
||||
description: '更新代码仓库信息, 参数name, description',
|
||||
middleware: ['auth'],
|
||||
metadata: {
|
||||
tags: ['opencode'],
|
||||
...createSkill({
|
||||
skill: 'update-repo-info',
|
||||
title: '更新代码仓库信息',
|
||||
args: {
|
||||
name: tool.schema.string().describe('代码仓库名称'),
|
||||
description: tool.schema.string().describe('代码仓库描述'),
|
||||
license: tool.schema.string().describe('代码仓库许可证类型,如 MIT').optional(),
|
||||
site: tool.schema.string().describe('代码仓库主页链接').optional(),
|
||||
topics: tool.schema.array(tool.schema.string()).describe('代码仓库话题标签列表').optional(),
|
||||
},
|
||||
summary: '更新代码仓库的信息',
|
||||
})
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const cnb = await cnbManager.getContext(ctx);
|
||||
const name = ctx.query?.name;
|
||||
const description = ctx.query?.description;
|
||||
const license = ctx.query?.license;
|
||||
const site = ctx.query?.site;
|
||||
const topics = ctx.query?.topics;
|
||||
|
||||
if (!name) {
|
||||
ctx.throw(400, '缺少参数 name');
|
||||
}
|
||||
if (!description) {
|
||||
ctx.throw(400, '缺少参数 description');
|
||||
}
|
||||
|
||||
const res = await cnb.repo.updateRepoInfo(name, { description, license, site, topics });
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
}).addTo(app);
|
||||
|
||||
|
||||
43
agent/routes/workspace/build.ts
Normal file
43
agent/routes/workspace/build.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { createSkill, tool } from '@kevisual/router';
|
||||
|
||||
import { app, cnbManager, notCNBCheck } from '../../app.ts';
|
||||
|
||||
// 启动工作空间
|
||||
app.route({
|
||||
path: 'cnb',
|
||||
key: 'cloud-build',
|
||||
description: '云端构建,参数 event, repo, branch, ref, config, env',
|
||||
middleware: ['auth'],
|
||||
metadata: {
|
||||
tags: ['opencode'],
|
||||
...createSkill({
|
||||
skill: 'cloud-build',
|
||||
title: '云端构建',
|
||||
summary: '在云端构建代码仓库,参数包括 event, repo, branch, ref, config, env',
|
||||
args: {
|
||||
env: tool.schema.any().optional().describe('构建环境变量,格式为 { "KEY": "VALUE" }'),
|
||||
event: tool.schema.string().optional().describe('触发事件类型,例如 api_trigger_event'),
|
||||
branch: tool.schema.string().optional().describe('分支名称,默认主分支'),
|
||||
config: tool.schema.string().describe('构建config文件内容,例如 cloudbuild.yaml对应的yml的内容'),
|
||||
repo: tool.schema.string().describe('代码仓库路径,例如 user/repo'),
|
||||
},
|
||||
})
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const cnb = await cnbManager.getContext(ctx);
|
||||
const repo = ctx.query?.repo;
|
||||
const branch = ctx.query?.branch || 'main';
|
||||
const config = ctx.query?.config;
|
||||
const event = ctx.query?.event || 'api_trigger_event';
|
||||
const env = ctx.query?.env ?? {};
|
||||
if (!repo) {
|
||||
ctx.throw(400, '缺少参数 repo');
|
||||
}
|
||||
const res = await cnb.build.startBuild(repo, {
|
||||
branch,
|
||||
config,
|
||||
event,
|
||||
env,
|
||||
});
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
@@ -3,6 +3,7 @@ import { app, cnbManager, notCNBCheck } from '../../app.ts';
|
||||
import z from 'zod';
|
||||
import './skills.ts';
|
||||
import './keep.ts';
|
||||
import './build.ts';
|
||||
|
||||
// 启动工作空间
|
||||
app.route({
|
||||
@@ -67,7 +68,7 @@ app.route({
|
||||
page: page ?? 1,
|
||||
pageSize: pageSize ?? 100,
|
||||
});
|
||||
ctx.forward({ code: 200, message: 'success', data: res });
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
|
||||
// 获取工作空间详情
|
||||
@@ -99,7 +100,7 @@ app.route({
|
||||
ctx.throw(400, '缺少参数 sn');
|
||||
}
|
||||
const res = await cnb.workspace.getDetail(repo, sn);
|
||||
ctx.forward({ code: 200, message: 'success', data: res });
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
|
||||
// 删除工作空间
|
||||
@@ -161,7 +162,6 @@ app.route({
|
||||
})
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
if (notCNBCheck(ctx)) { return; }
|
||||
const cnb = await cnbManager.getContext(ctx);
|
||||
const pipelineId = ctx.query?.pipelineId;
|
||||
const sn = ctx.query?.sn;
|
||||
@@ -169,6 +169,7 @@ app.route({
|
||||
ctx.throw(400, 'pipelineId 和 sn 必须提供其中一个');
|
||||
}
|
||||
const res = await cnb.workspace.stopWorkspace({ pipelineId, sn });
|
||||
ctx.forward({ code: 200, message: 'success', data: res });
|
||||
ctx.forward(res);
|
||||
}).addTo(app);
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"@kevisual/dts": "^0.0.4",
|
||||
"@kevisual/remote-app": "^0.0.6",
|
||||
"@kevisual/types": "^0.0.12",
|
||||
"@opencode-ai/plugin": "^1.2.22",
|
||||
"@opencode-ai/plugin": "^1.2.23",
|
||||
"@types/bun": "^1.3.10",
|
||||
"@types/node": "^25.3.5",
|
||||
"@types/ws": "^8.18.1",
|
||||
|
||||
169
pnpm-lock.yaml
generated
169
pnpm-lock.yaml
generated
@@ -15,8 +15,8 @@ importers:
|
||||
specifier: ^0.0.53
|
||||
version: 0.0.53
|
||||
'@kevisual/router':
|
||||
specifier: ^0.0.88
|
||||
version: 0.0.88
|
||||
specifier: ^0.0.90
|
||||
version: 0.0.90
|
||||
'@kevisual/use-config':
|
||||
specifier: ^1.0.30
|
||||
version: 1.0.30(dotenv@17.3.1)
|
||||
@@ -39,6 +39,9 @@ importers:
|
||||
'@kevisual/ai':
|
||||
specifier: ^0.0.26
|
||||
version: 0.0.26
|
||||
'@kevisual/api':
|
||||
specifier: ^0.0.62
|
||||
version: 0.0.62(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@kevisual/code-builder':
|
||||
specifier: ^0.0.6
|
||||
version: 0.0.6
|
||||
@@ -48,12 +51,15 @@ importers:
|
||||
'@kevisual/dts':
|
||||
specifier: ^0.0.4
|
||||
version: 0.0.4(typescript@5.9.3)
|
||||
'@kevisual/remote-app':
|
||||
specifier: ^0.0.6
|
||||
version: 0.0.6
|
||||
'@kevisual/types':
|
||||
specifier: ^0.0.12
|
||||
version: 0.0.12
|
||||
'@opencode-ai/plugin':
|
||||
specifier: ^1.2.20
|
||||
version: 1.2.20
|
||||
specifier: ^1.2.23
|
||||
version: 1.2.23
|
||||
'@types/bun':
|
||||
specifier: ^1.3.10
|
||||
version: 1.3.10
|
||||
@@ -89,6 +95,9 @@ packages:
|
||||
'@kevisual/ai@0.0.26':
|
||||
resolution: {integrity: sha512-lhaMpxi+vgqPdyBKiuNbSil4hy13tNLbDiqCtG0qUXKtvoowK6xMx269pSSYkYBivczM8g8I0XEouuJceUpJPg==}
|
||||
|
||||
'@kevisual/api@0.0.62':
|
||||
resolution: {integrity: sha512-GB8Ho2absXoXoZP2GKyuoRqRqjdwtV0JR512DXBaKJR2sIPn1KvuglbBiX+zPjDBBskv/ApvZKOoSwj1OmkrKQ==}
|
||||
|
||||
'@kevisual/code-builder@0.0.6':
|
||||
resolution: {integrity: sha512-0aqATB31/yw4k4s5/xKnfr4DKbUnx8e3Z3BmKbiXTrc+CqWiWTdlGe9bKI9dZ2Df+xNp6g11W4xM2NICNyyCCw==}
|
||||
hasBin: true
|
||||
@@ -100,6 +109,9 @@ packages:
|
||||
resolution: {integrity: sha512-FVUaH/0nyhbHWpEVjFTGP54PLMm4Hf06aqWLdHOYHNPIgr1aK1C26kOH7iumklGFGk9w93IGxj8Zxe5fap5N2A==}
|
||||
hasBin: true
|
||||
|
||||
'@kevisual/js-filter@0.0.5':
|
||||
resolution: {integrity: sha512-+S+Sf3K/aP6XtZI2s7TgKOr35UuvUvtpJ9YDW30a+mY0/N8gRuzyKhieBzQN7Ykayzz70uoMavBXut2rUlLgzw==}
|
||||
|
||||
'@kevisual/load@0.0.6':
|
||||
resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
|
||||
|
||||
@@ -115,8 +127,11 @@ packages:
|
||||
'@kevisual/query@0.0.53':
|
||||
resolution: {integrity: sha512-PAhpCLBr0emz0lGNlTVHMbJiC5wrtGLbInPddRzgKE35fiyNt+SWSsUWABiD0DeNrLN/OxWyAFobt880Z/e5MQ==}
|
||||
|
||||
'@kevisual/router@0.0.88':
|
||||
resolution: {integrity: sha512-T8kEbxyTGxZpbxAKDplDjZMIY+HCnXOeEdjwQ11AQetrLuqLFDZS5PnaWdVAHnONUDLhYoftkNj7bGWLtyQDlg==}
|
||||
'@kevisual/remote-app@0.0.6':
|
||||
resolution: {integrity: sha512-yc3BKAhtY+SzrvQSebeyR/QR93nPctndNMnW6ne1YPK+Kfpuf8gi7W4zlg18EJh7FEpDuDVHKqVp1klsWjESqQ==}
|
||||
|
||||
'@kevisual/router@0.0.90':
|
||||
resolution: {integrity: sha512-pFNfjsJkN9NqSVuyQB6QjvJnBeyrR/JQrM/KPa+PtvkByp0UA2FFFtSbB/OX7rduEKcXg5GImm4yucqFLdzewQ==}
|
||||
|
||||
'@kevisual/types@0.0.12':
|
||||
resolution: {integrity: sha512-zJXH2dosir3jVrQ6QG4i0+iLQeT9gJ3H+cKXs8ReWboxBSYzUZO78XssVeVrFPsJ33iaAqo4q3DWbSS1dWGn7Q==}
|
||||
@@ -130,11 +145,19 @@ packages:
|
||||
resolution: {integrity: sha512-jLsL80wBBKkrJZrfk3SQpJ9JA/zREdlUROj7eCkmzqduAWKSI0wVcXuCKf+mLFCHB0Q0Tkh2rgzjSlurt3JQgw==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
|
||||
'@opencode-ai/plugin@1.2.20':
|
||||
resolution: {integrity: sha512-BE6TOXVxgF24g5QgtlogSY5B+/AmZJ3cYaVjHZhUVuAli9JEg4RblrbrK2rfgbyZBoZDpjBLGTYtIRTVmOccEA==}
|
||||
'@noble/hashes@2.0.1':
|
||||
resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
|
||||
engines: {node: '>= 20.19.0'}
|
||||
|
||||
'@opencode-ai/sdk@1.2.20':
|
||||
resolution: {integrity: sha512-U5ROpG21D8jg9rkc1IgKAk1g5dn6X/rkOBfveupd0peSDO9n6VM9aikYccVLaMObxVqdjtG08IeQOFTPVS8ySQ==}
|
||||
'@opencode-ai/plugin@1.2.23':
|
||||
resolution: {integrity: sha512-5DRhitKrMK02u0AKrF+jIK+gUj0GyzN34bXkABXgNMTYDPwiMPkh4UPDJjjRrlofRgWQgmSLFc0nARHX4f92qA==}
|
||||
|
||||
'@opencode-ai/sdk@1.2.23':
|
||||
resolution: {integrity: sha512-f0qtJ5GFsEK8fCgT13zL7Ev7lFt03mf9HTQqmpJEgJpDaSx3Mb3ZGJCsfyw48SAASISkq+4Lct/4P17CKG7xUg==}
|
||||
|
||||
'@paralleldrive/cuid2@3.3.0':
|
||||
resolution: {integrity: sha512-OqiFvSOF0dBSesELYY2CAMa4YINvlLpvKOz/rv6NeZEqiyttlHgv98Juwv4Ch+GrEV7IZ8jfI2VcEoYUjXXCjw==}
|
||||
hasBin: true
|
||||
|
||||
'@rollup/plugin-commonjs@29.0.0':
|
||||
resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==}
|
||||
@@ -333,6 +356,9 @@ packages:
|
||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
bignumber.js@9.3.1:
|
||||
resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
|
||||
|
||||
bun-types@1.3.10:
|
||||
resolution: {integrity: sha512-tcpfCCl6XWo6nCVnpcVrxQ+9AYN1iqMIzgrSKYMB/fjLtV2eyAVEg7AxQJuCq/26R6HpKWykQXuSOq/21RYcbg==}
|
||||
|
||||
@@ -370,6 +396,9 @@ packages:
|
||||
resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
error-causes@3.0.2:
|
||||
resolution: {integrity: sha512-i0B8zq1dHL6mM85FGoxaJnVtx6LD5nL2v0hlpGdntg5FOSyzQ46c9lmz5qx0xRS2+PWHGOHcYxGIBC5Le2dRMw==}
|
||||
|
||||
es-toolkit@1.45.1:
|
||||
resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==}
|
||||
|
||||
@@ -379,6 +408,9 @@ packages:
|
||||
eventemitter3@5.0.1:
|
||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
||||
|
||||
eventemitter3@5.0.4:
|
||||
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
|
||||
|
||||
fdir@6.5.0:
|
||||
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
@@ -396,6 +428,10 @@ packages:
|
||||
function-bind@1.1.2:
|
||||
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
|
||||
|
||||
fuse.js@7.1.0:
|
||||
resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
h3@1.15.5:
|
||||
resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==}
|
||||
|
||||
@@ -444,6 +480,9 @@ packages:
|
||||
ofetch@1.5.1:
|
||||
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
|
||||
|
||||
path-browserify-esm@1.0.6:
|
||||
resolution: {integrity: sha512-9nUwYvvu/yq1PYrUyYCihNWmpzacaRYF6gGbjLWErrZ4MRDWyfPN7RpE8E7tsw8eqBU/rr7mcoTXbS+Vih8uUA==}
|
||||
|
||||
path-parse@1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
|
||||
@@ -461,6 +500,15 @@ packages:
|
||||
radix3@1.1.2:
|
||||
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
|
||||
|
||||
react-dom@19.2.4:
|
||||
resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
|
||||
peerDependencies:
|
||||
react: ^19.2.4
|
||||
|
||||
react@19.2.4:
|
||||
resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
readdirp@5.0.0:
|
||||
resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==}
|
||||
engines: {node: '>= 20.19.0'}
|
||||
@@ -482,6 +530,18 @@ packages:
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
scheduler@0.27.0:
|
||||
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
|
||||
|
||||
sonner@2.0.7:
|
||||
resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==}
|
||||
peerDependencies:
|
||||
react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
|
||||
react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
|
||||
|
||||
spark-md5@3.0.2:
|
||||
resolution: {integrity: sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==}
|
||||
|
||||
supports-preserve-symlinks-flag@1.0.0:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -568,6 +628,24 @@ packages:
|
||||
zod@4.3.6:
|
||||
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
|
||||
|
||||
zustand@5.0.11:
|
||||
resolution: {integrity: sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
peerDependencies:
|
||||
'@types/react': '>=18.0.0'
|
||||
immer: '>=9.0.6'
|
||||
react: '>=18.0.0'
|
||||
use-sync-external-store: '>=1.2.0'
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
immer:
|
||||
optional: true
|
||||
react:
|
||||
optional: true
|
||||
use-sync-external-store:
|
||||
optional: true
|
||||
|
||||
snapshots:
|
||||
|
||||
'@babel/code-frame@7.29.0':
|
||||
@@ -588,6 +666,27 @@ snapshots:
|
||||
'@kevisual/permission': 0.0.4
|
||||
'@kevisual/query': 0.0.52
|
||||
|
||||
'@kevisual/api@0.0.62(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@kevisual/context': 0.0.8
|
||||
'@kevisual/js-filter': 0.0.5
|
||||
'@kevisual/load': 0.0.6
|
||||
'@paralleldrive/cuid2': 3.3.0
|
||||
es-toolkit: 1.45.1
|
||||
eventemitter3: 5.0.4
|
||||
fuse.js: 7.1.0
|
||||
nanoid: 5.1.6
|
||||
path-browserify-esm: 1.0.6
|
||||
sonner: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
spark-md5: 3.0.2
|
||||
zustand: 5.0.11(react@19.2.4)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- immer
|
||||
- react
|
||||
- react-dom
|
||||
- use-sync-external-store
|
||||
|
||||
'@kevisual/code-builder@0.0.6': {}
|
||||
|
||||
'@kevisual/context@0.0.8': {}
|
||||
@@ -603,6 +702,8 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
'@kevisual/js-filter@0.0.5': {}
|
||||
|
||||
'@kevisual/load@0.0.6':
|
||||
dependencies:
|
||||
eventemitter3: 5.0.1
|
||||
@@ -615,7 +716,9 @@ snapshots:
|
||||
|
||||
'@kevisual/query@0.0.53': {}
|
||||
|
||||
'@kevisual/router@0.0.88':
|
||||
'@kevisual/remote-app@0.0.6': {}
|
||||
|
||||
'@kevisual/router@0.0.90':
|
||||
dependencies:
|
||||
es-toolkit: 1.45.1
|
||||
|
||||
@@ -628,12 +731,20 @@ snapshots:
|
||||
|
||||
'@kevisual/ws@8.19.0': {}
|
||||
|
||||
'@opencode-ai/plugin@1.2.20':
|
||||
'@noble/hashes@2.0.1': {}
|
||||
|
||||
'@opencode-ai/plugin@1.2.23':
|
||||
dependencies:
|
||||
'@opencode-ai/sdk': 1.2.20
|
||||
'@opencode-ai/sdk': 1.2.23
|
||||
zod: 4.3.6
|
||||
|
||||
'@opencode-ai/sdk@1.2.20': {}
|
||||
'@opencode-ai/sdk@1.2.23': {}
|
||||
|
||||
'@paralleldrive/cuid2@3.3.0':
|
||||
dependencies:
|
||||
'@noble/hashes': 2.0.1
|
||||
bignumber.js: 9.3.1
|
||||
error-causes: 3.0.2
|
||||
|
||||
'@rollup/plugin-commonjs@29.0.0(rollup@4.57.1)':
|
||||
dependencies:
|
||||
@@ -770,6 +881,8 @@ snapshots:
|
||||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.1
|
||||
|
||||
bignumber.js@9.3.1: {}
|
||||
|
||||
bun-types@1.3.10:
|
||||
dependencies:
|
||||
'@types/node': 25.3.5
|
||||
@@ -798,12 +911,16 @@ snapshots:
|
||||
|
||||
dotenv@17.3.1: {}
|
||||
|
||||
error-causes@3.0.2: {}
|
||||
|
||||
es-toolkit@1.45.1: {}
|
||||
|
||||
estree-walker@2.0.2: {}
|
||||
|
||||
eventemitter3@5.0.1: {}
|
||||
|
||||
eventemitter3@5.0.4: {}
|
||||
|
||||
fdir@6.5.0(picomatch@4.0.3):
|
||||
optionalDependencies:
|
||||
picomatch: 4.0.3
|
||||
@@ -813,6 +930,8 @@ snapshots:
|
||||
|
||||
function-bind@1.1.2: {}
|
||||
|
||||
fuse.js@7.1.0: {}
|
||||
|
||||
h3@1.15.5:
|
||||
dependencies:
|
||||
cookie-es: 1.2.2
|
||||
@@ -864,6 +983,8 @@ snapshots:
|
||||
node-fetch-native: 1.6.7
|
||||
ufo: 1.6.3
|
||||
|
||||
path-browserify-esm@1.0.6: {}
|
||||
|
||||
path-parse@1.0.7: {}
|
||||
|
||||
picocolors@1.1.1:
|
||||
@@ -875,6 +996,13 @@ snapshots:
|
||||
|
||||
radix3@1.1.2: {}
|
||||
|
||||
react-dom@19.2.4(react@19.2.4):
|
||||
dependencies:
|
||||
react: 19.2.4
|
||||
scheduler: 0.27.0
|
||||
|
||||
react@19.2.4: {}
|
||||
|
||||
readdirp@5.0.0: {}
|
||||
|
||||
resolve@1.22.11:
|
||||
@@ -922,6 +1050,15 @@ snapshots:
|
||||
'@rollup/rollup-win32-x64-msvc': 4.57.1
|
||||
fsevents: 2.3.3
|
||||
|
||||
scheduler@0.27.0: {}
|
||||
|
||||
sonner@2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
|
||||
dependencies:
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
|
||||
spark-md5@3.0.2: {}
|
||||
|
||||
supports-preserve-symlinks-flag@1.0.0: {}
|
||||
|
||||
tslib@2.8.1: {}
|
||||
@@ -946,3 +1083,7 @@ snapshots:
|
||||
ufo: 1.6.3
|
||||
|
||||
zod@4.3.6: {}
|
||||
|
||||
zustand@5.0.11(react@19.2.4):
|
||||
optionalDependencies:
|
||||
react: 19.2.4
|
||||
|
||||
Reference in New Issue
Block a user