34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { createSkill } from '@kevisual/router'
|
||
import { app } from '../../app.ts'
|
||
import { tool } from '@opencode-ai/plugin/tool'
|
||
|
||
if (!app.hasRoute('call')) {
|
||
// "调用 path: cnb key: list-repos"
|
||
app.route({
|
||
path: 'call',
|
||
key: '',
|
||
description: '调用',
|
||
middleware: ['admin-auth'],
|
||
metadata: {
|
||
tags: ['opencode'],
|
||
...createSkill({
|
||
skill: 'call-app',
|
||
title: '调用app应用',
|
||
summary: '调用router的应用, 参数path, key, payload',
|
||
args: {
|
||
path: tool.schema.string().describe('应用路径,例如 cnb'),
|
||
key: tool.schema.string().optional().describe('应用key,例如 list-repos'),
|
||
payload: tool.schema.object({}).optional().describe('调用参数'),
|
||
}
|
||
})
|
||
},
|
||
}).define(async (ctx) => {
|
||
const { path, key } = ctx.query;
|
||
console.log('call app', ctx.query);
|
||
if (!path) {
|
||
ctx.throw('路径path不能为空');
|
||
}
|
||
const res = await ctx.run({ path, key, payload: ctx.query.payload || {} });
|
||
ctx.forward(res);
|
||
}).addTo(app)
|
||
} |