test env
This commit is contained in:
@@ -97,10 +97,10 @@
|
|||||||
docker:
|
docker:
|
||||||
image: docker.cnb.cool/kevisual/dev-env:latest
|
image: docker.cnb.cool/kevisual/dev-env:latest
|
||||||
stages:
|
stages:
|
||||||
- name: 软链 .env 文件到工作目录(仓库根目录)
|
- name: 软链 .env.development 文件到工作目录(仓库根目录)
|
||||||
script: |
|
script: |
|
||||||
if [ -e "/root/.cnb/.env" ]; then
|
if [ -e "/root/.cnb/.env.development" ]; then
|
||||||
ln -sf /root/.cnb/.env ./.env
|
ln -sf /root/.cnb/.env.development ./.env
|
||||||
else
|
else
|
||||||
echo "文件不存在"
|
echo "文件不存在"
|
||||||
fi
|
fi
|
||||||
@@ -113,3 +113,8 @@
|
|||||||
else
|
else
|
||||||
echo "文件不存在"
|
echo "文件不存在"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
.end_state_template: &end_state_template
|
||||||
|
endStages:
|
||||||
|
- name: '结束'
|
||||||
|
script: echo "流水线执行完毕,当前状态:${CNB_PIPELINE_STATUS}"
|
||||||
@@ -1,12 +1,22 @@
|
|||||||
import { app, cnb } from '../../app.ts';
|
import { app, cnb } from '../../app.ts';
|
||||||
|
import { createSkill, Skill } from '@kevisual/router'
|
||||||
|
import { tool } from "@opencode-ai/plugin/tool"
|
||||||
app.route({
|
app.route({
|
||||||
path: 'cnb',
|
path: 'cnb',
|
||||||
key: 'repo-create',
|
key: 'create-repo',
|
||||||
description: '创建代码仓库, 参数name, visibility, description',
|
description: '创建代码仓库, 参数name, visibility, description',
|
||||||
middleware: ['auth'],
|
middleware: ['auth'],
|
||||||
metadata: {
|
metadata: {
|
||||||
tags: ['opencode']
|
tags: ['opencode'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'create-repo',
|
||||||
|
title: '创建代码仓库',
|
||||||
|
args: {
|
||||||
|
name: tool.schema.string().describe('代码仓库名称'),
|
||||||
|
description: tool.schema.string().describe('代码仓库描述'),
|
||||||
|
},
|
||||||
|
summary: '创建一个新的代码仓库',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}).define(async (ctx) => {
|
}).define(async (ctx) => {
|
||||||
const name = ctx.query?.name;
|
const name = ctx.query?.name;
|
||||||
@@ -27,11 +37,22 @@ app.route({
|
|||||||
|
|
||||||
app.route({
|
app.route({
|
||||||
path: 'cnb',
|
path: 'cnb',
|
||||||
key: 'repo-create-file',
|
key: 'create-repo-file',
|
||||||
description: '在代码仓库中创建文件, 参数repoName, path, content, encoding',
|
description: '在代码仓库中创建文件, 参数repoName, path, content, encoding',
|
||||||
middleware: ['auth'],
|
middleware: ['auth'],
|
||||||
metadata: {
|
metadata: {
|
||||||
tags: ['opencode']
|
tags: ['opencode'],
|
||||||
|
...createSkill({
|
||||||
|
skill: 'create-repo-file',
|
||||||
|
title: '在代码仓库中创建文件',
|
||||||
|
args: {
|
||||||
|
repoName: tool.schema.string().describe('代码仓库名称'),
|
||||||
|
path: tool.schema.string().describe('文件路径, 如 src/index.ts'),
|
||||||
|
content: tool.schema.string().describe('文件内容'),
|
||||||
|
encoding: tool.schema.string().describe('编码方式, 默认为 raw').optional(),
|
||||||
|
},
|
||||||
|
summary: '在代码仓库中创建文件',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}).define(async (ctx) => {
|
}).define(async (ctx) => {
|
||||||
const repoName = ctx.query?.repoName;
|
const repoName = ctx.query?.repoName;
|
||||||
|
|||||||
2
bun-test/.gitignore
vendored
2
bun-test/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
node_modules
|
|
||||||
dist
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "bun-test",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"keywords": [],
|
|
||||||
"author": "",
|
|
||||||
"license": "ISC",
|
|
||||||
"packageManager": "pnpm@10.25.0",
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/bun": "^1.3.4"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
||||||
"esbuild": "^0.27.2",
|
|
||||||
"lodash-es": "^4.17.22",
|
|
||||||
"rollup": "^4.54.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
// rollup.config.ts
|
|
||||||
import type { Plugin, RollupOptions } from 'rollup';
|
|
||||||
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
||||||
|
|
||||||
const cdnRewritePlugin: Plugin = {
|
|
||||||
name: 'rewrite-lodash-to-cdn',
|
|
||||||
resolveId(id) {
|
|
||||||
if (id === 'lodash-es') {
|
|
||||||
return 'https://esm.sh/lodash-es@5';
|
|
||||||
}
|
|
||||||
if (id.startsWith('lodash-es/')) {
|
|
||||||
const [, sub] = id.split('/', 2);
|
|
||||||
return `https://esm.sh/lodash-es@5/${sub}`;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const config: RollupOptions = {
|
|
||||||
input: 'src/index.ts',
|
|
||||||
output: {
|
|
||||||
dir: 'dist',
|
|
||||||
format: 'esm',
|
|
||||||
},
|
|
||||||
plugins: [cdnRewritePlugin, nodeResolve({ browser: true })],
|
|
||||||
external(id) {
|
|
||||||
return id.startsWith('https://');
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default config;
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
import { debounce } from 'lodash-es';
|
|
||||||
|
|
||||||
export const debounceFn = debounce;
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"permissions": {
|
|
||||||
"allow": [
|
|
||||||
"Read(*)",
|
|
||||||
"Write(*)",
|
|
||||||
"Edit(*)",
|
|
||||||
"Glob(*)",
|
|
||||||
"Grep(*)",
|
|
||||||
"Bash(node:*)",
|
|
||||||
"Bash(npm:*)",
|
|
||||||
"Bash(npx:*)",
|
|
||||||
"Bash(pnpm:*)",
|
|
||||||
"Bash(deno:*)",
|
|
||||||
"Bash(bun:*)",
|
|
||||||
"Bash(kubectl:*)",
|
|
||||||
"Bash(git:*)",
|
|
||||||
"Bash(git:*:*)",
|
|
||||||
"Bash(python:*)",
|
|
||||||
"Bash(pip:*)",
|
|
||||||
"Bash(mkdir:*)",
|
|
||||||
"Bash(rm:*)",
|
|
||||||
"Bash(cp:*)",
|
|
||||||
"Bash(mv:*)",
|
|
||||||
"Bash(ls:*)",
|
|
||||||
"Bash(cat:*)",
|
|
||||||
"Bash(rm:*)",
|
|
||||||
"Bash(du:*)",
|
|
||||||
"Bash(df:*)",
|
|
||||||
"Bash(pwd:*)",
|
|
||||||
"Bash(whoami:*)",
|
|
||||||
"Bash(test:*)",
|
|
||||||
"Bash(echo:*)",
|
|
||||||
"Bash(timeout:*:*)",
|
|
||||||
"Bash(touch:*)",
|
|
||||||
"Bash(file:*)",
|
|
||||||
"Bash(type:*)",
|
|
||||||
"Bash(ev:*)",
|
|
||||||
"Bash(opencode:*)"
|
|
||||||
],
|
|
||||||
"deny": [],
|
|
||||||
"ask": [
|
|
||||||
"Bash(rm:-rf)",
|
|
||||||
"Bash(rm:-R)",
|
|
||||||
"Bash(rm:-r)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
15
package.json
15
package.json
@@ -18,10 +18,10 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@kevisual/context": "^0.0.4",
|
"@kevisual/context": "^0.0.4",
|
||||||
"@kevisual/types": "^0.0.10",
|
"@kevisual/types": "^0.0.11",
|
||||||
"@opencode-ai/plugin": "^1.1.16",
|
"@opencode-ai/plugin": "^1.1.21",
|
||||||
"@types/bun": "^1.3.5",
|
"@types/bun": "^1.3.6",
|
||||||
"@types/node": "^25.0.7",
|
"@types/node": "^25.0.8",
|
||||||
"dotenv": "^17.2.3"
|
"dotenv": "^17.2.3"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
@@ -29,9 +29,10 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@kevisual/query": "^0.0.35",
|
"@kevisual/query": "^0.0.35",
|
||||||
"@kevisual/router": "^0.0.53",
|
"@kevisual/router": "^0.0.54",
|
||||||
"@kevisual/use-config": "^1.0.26",
|
"@kevisual/use-config": "^1.0.28",
|
||||||
"es-toolkit": "^1.43.0",
|
"es-toolkit": "^1.43.0",
|
||||||
"nanoid": "^5.1.6"
|
"nanoid": "^5.1.6",
|
||||||
|
"zod": "^4.3.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
86
pnpm-lock.yaml
generated
86
pnpm-lock.yaml
generated
@@ -12,33 +12,36 @@ importers:
|
|||||||
specifier: ^0.0.35
|
specifier: ^0.0.35
|
||||||
version: 0.0.35
|
version: 0.0.35
|
||||||
'@kevisual/router':
|
'@kevisual/router':
|
||||||
specifier: ^0.0.53
|
specifier: ^0.0.54
|
||||||
version: 0.0.53
|
version: 0.0.54
|
||||||
'@kevisual/use-config':
|
'@kevisual/use-config':
|
||||||
specifier: ^1.0.26
|
specifier: ^1.0.28
|
||||||
version: 1.0.26(dotenv@17.2.3)
|
version: 1.0.28(dotenv@17.2.3)
|
||||||
es-toolkit:
|
es-toolkit:
|
||||||
specifier: ^1.43.0
|
specifier: ^1.43.0
|
||||||
version: 1.43.0
|
version: 1.43.0
|
||||||
nanoid:
|
nanoid:
|
||||||
specifier: ^5.1.6
|
specifier: ^5.1.6
|
||||||
version: 5.1.6
|
version: 5.1.6
|
||||||
|
zod:
|
||||||
|
specifier: ^4.3.5
|
||||||
|
version: 4.3.5
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@kevisual/context':
|
'@kevisual/context':
|
||||||
specifier: ^0.0.4
|
specifier: ^0.0.4
|
||||||
version: 0.0.4
|
version: 0.0.4
|
||||||
'@kevisual/types':
|
'@kevisual/types':
|
||||||
specifier: ^0.0.10
|
specifier: ^0.0.11
|
||||||
version: 0.0.10
|
version: 0.0.11
|
||||||
'@opencode-ai/plugin':
|
'@opencode-ai/plugin':
|
||||||
specifier: ^1.1.16
|
specifier: ^1.1.21
|
||||||
version: 1.1.16
|
version: 1.1.21
|
||||||
'@types/bun':
|
'@types/bun':
|
||||||
specifier: ^1.3.5
|
specifier: ^1.3.6
|
||||||
version: 1.3.5
|
version: 1.3.6
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^25.0.7
|
specifier: ^25.0.8
|
||||||
version: 25.0.7
|
version: 25.0.8
|
||||||
dotenv:
|
dotenv:
|
||||||
specifier: ^17.2.3
|
specifier: ^17.2.3
|
||||||
version: 17.2.3
|
version: 17.2.3
|
||||||
@@ -54,31 +57,31 @@ packages:
|
|||||||
'@kevisual/query@0.0.35':
|
'@kevisual/query@0.0.35':
|
||||||
resolution: {integrity: sha512-80dyy2LMCmEC72g+X4QWUKlZErhawQPgnGSBNR4yhrBcFgHIJQ14LR1Z+bS5S1I7db+1PDNpaxBTjIaoYoXunw==}
|
resolution: {integrity: sha512-80dyy2LMCmEC72g+X4QWUKlZErhawQPgnGSBNR4yhrBcFgHIJQ14LR1Z+bS5S1I7db+1PDNpaxBTjIaoYoXunw==}
|
||||||
|
|
||||||
'@kevisual/router@0.0.53':
|
'@kevisual/router@0.0.54':
|
||||||
resolution: {integrity: sha512-Bw9xYVWyxRhd230nF1ac7cyvzWDYKI/3V+Fr1Ew1Bfr0Ey8KuWb1MgPPopHkRHCCcUcysLtWXfu/JRiTAoBmGA==}
|
resolution: {integrity: sha512-/D349QnAkTI2GWF0Kt549VvU3WC3NRZc9JW/56rkSYpJqTfU1kAztW6NhOgJhxHyqQiXrwgBBpObG0dfHrI/PA==}
|
||||||
|
|
||||||
'@kevisual/types@0.0.10':
|
'@kevisual/types@0.0.11':
|
||||||
resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==}
|
resolution: {integrity: sha512-idNLDTEKVdNXZHFQq8PTN62nflh94kvGtx+v8YDcMxt0Zo+HWVZTFElm+dMQxAs/vn4wo8F2r3VwzWNX/vcqwQ==}
|
||||||
|
|
||||||
'@kevisual/use-config@1.0.26':
|
'@kevisual/use-config@1.0.28':
|
||||||
resolution: {integrity: sha512-e5jgEALn4Pb5ReXnqVkK0XyQdRXLyciqmLFY7XVDyXCu7ieh6gxDCb41rsSfBj5ofpG8jH6afOlgWqt2A4BcWg==}
|
resolution: {integrity: sha512-ngF+LDbjxpXWrZNmnShIKF/jPpAa+ezV+DcgoZIIzHlRnIjE+rr9sLkN/B7WJbiH9C/j1tQXOILY8ujBqILrow==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
dotenv: ^17
|
dotenv: ^17
|
||||||
|
|
||||||
'@opencode-ai/plugin@1.1.16':
|
'@opencode-ai/plugin@1.1.21':
|
||||||
resolution: {integrity: sha512-t+Jg/rGlZkzaMABul1zu7Z7PtsjNh8UVUDc9sYh50YwO4n4ZgcVUoUllJ9AmPKdQ8MDYAFM62V29x2VVWITrwg==}
|
resolution: {integrity: sha512-oAWVlKG7LACGFYawfdHGMN6e+6lyN6F+zPVncFUB99BrTl/TjELE5gTZwU7MalGpjwfU77yslBOZm4BXVAYGvw==}
|
||||||
|
|
||||||
'@opencode-ai/sdk@1.1.16':
|
'@opencode-ai/sdk@1.1.21':
|
||||||
resolution: {integrity: sha512-J77pyb370VvzycqXQE/kvTs7P+tEb0wfsWZDHScBoqstQOV7Ya9uXp2XSO5aPuzjP9WJGfnNZ8MmUwMfv8vIZQ==}
|
resolution: {integrity: sha512-4M6lBjRPlPz99Rb5rS5ZqKrb0UDDxOT9VTG06JpNxvA7ynTd8C50ckc2NGzWtvjarmxfaAk1VeuBYN/cq2pIKQ==}
|
||||||
|
|
||||||
'@types/bun@1.3.5':
|
'@types/bun@1.3.6':
|
||||||
resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==}
|
resolution: {integrity: sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA==}
|
||||||
|
|
||||||
'@types/node@25.0.7':
|
'@types/node@25.0.8':
|
||||||
resolution: {integrity: sha512-C/er7DlIZgRJO7WtTdYovjIFzGsz0I95UlMyR9anTb4aCpBSRWe5Jc1/RvLKUfzmOxHPGjSE5+63HgLtndxU4w==}
|
resolution: {integrity: sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==}
|
||||||
|
|
||||||
bun-types@1.3.5:
|
bun-types@1.3.6:
|
||||||
resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==}
|
resolution: {integrity: sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ==}
|
||||||
|
|
||||||
dotenv@17.2.3:
|
dotenv@17.2.3:
|
||||||
resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
|
resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
|
||||||
@@ -104,6 +107,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.5:
|
||||||
|
resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
|
||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
'@kevisual/context@0.0.4': {}
|
'@kevisual/context@0.0.4': {}
|
||||||
@@ -116,33 +122,33 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@kevisual/router@0.0.53': {}
|
'@kevisual/router@0.0.54': {}
|
||||||
|
|
||||||
'@kevisual/types@0.0.10': {}
|
'@kevisual/types@0.0.11': {}
|
||||||
|
|
||||||
'@kevisual/use-config@1.0.26(dotenv@17.2.3)':
|
'@kevisual/use-config@1.0.28(dotenv@17.2.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@kevisual/load': 0.0.6
|
'@kevisual/load': 0.0.6
|
||||||
dotenv: 17.2.3
|
dotenv: 17.2.3
|
||||||
|
|
||||||
'@opencode-ai/plugin@1.1.16':
|
'@opencode-ai/plugin@1.1.21':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@opencode-ai/sdk': 1.1.16
|
'@opencode-ai/sdk': 1.1.21
|
||||||
zod: 4.1.8
|
zod: 4.1.8
|
||||||
|
|
||||||
'@opencode-ai/sdk@1.1.16': {}
|
'@opencode-ai/sdk@1.1.21': {}
|
||||||
|
|
||||||
'@types/bun@1.3.5':
|
'@types/bun@1.3.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
bun-types: 1.3.5
|
bun-types: 1.3.6
|
||||||
|
|
||||||
'@types/node@25.0.7':
|
'@types/node@25.0.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 7.16.0
|
undici-types: 7.16.0
|
||||||
|
|
||||||
bun-types@1.3.5:
|
bun-types@1.3.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 25.0.7
|
'@types/node': 25.0.8
|
||||||
|
|
||||||
dotenv@17.2.3: {}
|
dotenv@17.2.3: {}
|
||||||
|
|
||||||
@@ -157,3 +163,5 @@ snapshots:
|
|||||||
undici-types@7.16.0: {}
|
undici-types@7.16.0: {}
|
||||||
|
|
||||||
zod@4.1.8: {}
|
zod@4.1.8: {}
|
||||||
|
|
||||||
|
zod@4.3.5: {}
|
||||||
|
|||||||
Reference in New Issue
Block a user