- Deleted pnpm-workspace.yaml file. - Modified opencode.ts to enhance skill creation and execution: - Updated skill title and summary for clarity. - Introduced a delay for router loading. - Improved route filtering logic. - Added extractArgs function to handle argument extraction from z.object types. - Updated route.ts to ensure 'opencode' tag is added to skills if not present and improved JSON schema handling for args.
79 lines
2.0 KiB
TypeScript
79 lines
2.0 KiB
TypeScript
import { app, createSkill, tool } from '../app.ts';
|
||
import * as docs from '../gen/index.ts'
|
||
import * as pkgs from '../../package.json' assert { type: 'json' };
|
||
import z from 'zod';
|
||
app.route({
|
||
path: 'router-skill',
|
||
key: 'create-route',
|
||
description: '创建路由技能',
|
||
middleware: ['auth'],
|
||
metadata: {
|
||
tags: ['opencode'],
|
||
...createSkill({
|
||
skill: 'create-router-skill',
|
||
title: '创建路由技能',
|
||
summary: '创建一个新的路由技能,参数包括路径、键、描述、参数等',
|
||
args: {
|
||
question: tool.schema.string().describe('要实现的功能'),
|
||
}
|
||
})
|
||
},
|
||
}).define(async (ctx) => {
|
||
const { question } = ctx.query || {};
|
||
if (!question) {
|
||
ctx.throw('参数 question 不能为空');
|
||
}
|
||
let base = ''
|
||
base += `根据用户需要实现的功能生成一个route的代码:${question}\n\n`;
|
||
base += `资料库:\n`
|
||
base += docs.readme + '\n\n';
|
||
|
||
ctx.body = {
|
||
body: base
|
||
}
|
||
}).addTo(app);
|
||
|
||
// 获取最新router版本号
|
||
app.route({
|
||
path: 'router-skill',
|
||
key: 'version',
|
||
description: '获取最新router版本号',
|
||
middleware: ['auth'],
|
||
metadata: {
|
||
tags: ['opencode'],
|
||
...createSkill({
|
||
skill: 'router-skill-version',
|
||
title: '获取最新router版本号',
|
||
summary: '获取最新router版本号',
|
||
args: {}
|
||
})
|
||
},
|
||
}).define(async (ctx) => {
|
||
ctx.body = {
|
||
content: pkgs.version || 'unknown'
|
||
}
|
||
}).addTo(app);
|
||
|
||
// 执行技能test-route-skill,name为abearxiong
|
||
app.route({
|
||
path: 'route-skill',
|
||
key: 'test',
|
||
description: '测试路由技能',
|
||
middleware: ['auth'],
|
||
metadata: {
|
||
tags: ['opencode'],
|
||
...createSkill({
|
||
skill: 'test-route-skill',
|
||
title: '测试路由技能',
|
||
summary: '测试路由技能是否正常工作',
|
||
args: z.object({
|
||
name: z.string().describe('名字'),
|
||
})
|
||
})
|
||
},
|
||
}).define(async (ctx) => {
|
||
const name = ctx.query.name || 'unknown';
|
||
ctx.body = {
|
||
content: '测试成功,你好 ' + name
|
||
}
|
||
}).addTo(app) |