import { useKey } from '@kevisual/context'; import { app } from '../../app.ts'; import z from 'zod'; app.route({ path: 'cnb', key: 'get-assistant-url', description: '获取cnb工作空间中部署的各个助手的访问地址', middleware: ['auth'], metadata: { args: { more: z.boolean().describe('需要更多信息') } } }).define(async (ctx) => { const uri = useKey('CNB_VSCODE_PROXY_URI') as string || ''; const base = { base: uri, link: uri.replace('{{port}}', '51515'), kevisual: uri.replace('{{port}}', '51515'), openclaw: uri.replace('{{port}}', '80'), opencode: uri.replace('{{port}}', '100'), openwebui: uri.replace('{{port}}', '200'), note: uri.replace('{{port}}', '3000'), uptime: uri.replace('{{port}}', '3001'), immich: uri.replace('{{port}}', '2283'), nocodb: uri.replace('{{port}}', '4000'), openlist: uri.replace('{{port}}', '5244'), xiaoyao: uri.replace('{{port}}', '5678'), meilisearch: uri.replace('{{port}}', '7700'), bark: uri.replace('{{port}}', '9111'), vaultwarden: uri.replace('{{port}}', '8180'), music: uri.replace('{{port}}', '8096'), jellyfin: uri.replace('{{port}}', '8096'), homeassistant: uri.replace('{{port}}', '8123'), cloudreve: uri.replace('{{port}}', '5212'), filebrowser: uri.replace('{{port}}', '8081'), // newapi: uri.replace('{{port}}', '8080'), vscode: useKey('CNB_VSCODE_WEB_URL') as string || '', codeServer: uri.replace('{{port}}', '10000'), gitea: uri.replace('{{port}}', '3000'), calibre: uri.replace('{{port}}', '8083'), searXNG: uri.replace('{{port}}', '8888'), } ctx.body = { ...base, } }).addTo(app);