UNPKG

chaite

Version:

core for chatgpt-plugin and karin-plugin-chatgpt

2 lines (1 loc) 12.7 kB
import{_ as xe}from"./add-one-llEDYAn9.js";import{p as u,d as Pe,q as De,s as Ne,o as B,b as F,w as n,N as Te,e as l,u as o,v as Ie,x as $e,y as D,B as d,g as f,z as je,A as Le,n as te,C as Re,D as Ue,E as Ae,F as N,j as r,G as i,H as k,I as Ge,J as Ee}from"./index-D3SoE8bB.js";import{f as Je}from"./presets-ChXh9F9_.js";import{_ as Be}from"./McpServerFormModal.vue_vue_type_script_setup_true_lang-CSyHD58H.js";import{_ as Fe}from"./SkillFormModal.vue_vue_type_script_setup_true_lang-CjYlwim_.js";import{N as ae,_ as T}from"./Grid-B3ZO_4Zt.js";import{N as Ve}from"./DataTable-il8xWJze.js";import{N as V}from"./Popconfirm-DW1-B0Ft.js";import{_ as qe,N as Ke}from"./FormItem-yXZKI0f3.js";import"./FormItemGridItem-D-Opymhq.js";import"./InputNumber-CRx3qCIC.js";import"./DynamicTags-CSrYGFn_.js";import"./prop-NnGblK-3.js";import"./Checkbox-CAwnmj4L.js";import"./RadioGroup-BsD84s4u.js";import"./Ellipsis-BaRgB7ya.js";import"./download-C2161hUv.js";function Oe(s={}){return u.Get("/api/agent/skills",{params:s})}function He(s){return u.Get(`/api/agent/skills/${encodeURIComponent(s)}`)}function We(){return u.Post("/api/agent/skills/reload",{})}function Qe(s){return u.Post("/api/agent/skills",s)}function Xe(s,a){return u.Patch(`/api/agent/skills/${encodeURIComponent(s)}`,a)}function Ye(s){return u.Delete(`/api/agent/skills/${encodeURIComponent(s)}`)}function Ze(s,a={}){return u.Post(`/api/agent/skills/${encodeURIComponent(s)}/run`,a)}function et(s={}){return u.Get("/api/agent/jobs",{params:s})}function tt(s={}){return u.Get("/api/agent/scheduled-tasks",{params:s})}function at(s){return u.Delete(`/api/agent/scheduled-tasks/${s}`)}function lt(s={}){return u.Get("/api/agent/mcp-servers",{params:s})}function nt(s){return u.Post("/api/agent/mcp-servers",s)}function st(s,a){return u.Patch(`/api/agent/mcp-servers/${s}`,a)}function it(s){return u.Delete(`/api/agent/mcp-servers/${s}`)}function ot(s){return u.Post(`/api/agent/mcp-servers/${s}/test`,{})}const wt=Pe({__name:"index",setup(s){const a=De(),y=r("skills"),q=r([]),m=r(!1),h=r(!1),b=r(!1),v=r({}),I=r(!1),K=r([]),S=r("");function p(){m.value=!0,Oe({name:S.value||void 0}).then(e=>{e.code===0?q.value=e.data.items:a.error(e.message||"加载技能列表失败")}).catch(()=>a.error("加载技能列表失败")).finally(()=>m.value=!1)}function le(){b.value=!1,v.value={},h.value=!0}function ne(e){m.value=!0,He(e.id).then(t=>{t.code===0?(b.value=!0,v.value=t.data,h.value=!0):a.error(t.message||"加载技能详情失败")}).catch(()=>a.error("加载技能详情失败")).finally(()=>m.value=!1)}function se(e){Ye(e.id).then(t=>{t.code===0?(a.success("删除成功"),p()):a.error(t.message||"删除失败")}).catch(()=>a.error("删除失败"))}function ie(e){if(e.frontmatter.executionMode==="direct"){a.warning("direct 模式技能需通过对话 API 触发,不支持手动运行");return}Ze(e.id,{background:!0}).then(t=>{t.code===0?a.success(`已提交后台任务,Job ID: ${t.data?.jobId??"未知"}`):a.error(t.message||"运行失败")}).catch(()=>a.error("运行失败"))}function oe(){I.value=!0,We().then(e=>{e.code===0?(a.success(`重载成功,共 ${e.data.count} 个技能`),p()):a.error(e.message||"重载失败")}).catch(()=>a.error("重载失败")).finally(()=>I.value=!1)}function re(e){b.value&&v.value.name?Xe(v.value.name,e).then(t=>{t.code===0?(a.success("更新成功"),p()):a.error(t.message||"更新失败")}).catch(()=>a.error("更新失败")):Qe(e).then(t=>{t.code===0?(a.success("创建成功"),p()):a.error(t.message||"创建失败")}).catch(()=>a.error("创建失败"))}const ue={direct:"Direct",plan:"Plan",workflow:"Workflow"},de={direct:"default",plan:"info",workflow:"success"},ce=[{title:"技能名称",key:"id",width:180},{title:"描述",key:"frontmatter.description",ellipsis:{tooltip:!0},render:e=>e.frontmatter.description},{title:"执行模式",key:"frontmatter.executionMode",width:120,render:e=>{const t=e.frontmatter.executionMode??"direct";return i(k,{type:de[t]??"default",size:"small"},{default:()=>ue[t]??t})}},{title:"只读",key:"frontmatter.readonly",width:70,render:e=>e.frontmatter.readonly?i(k,{type:"warning",size:"small"},{default:()=>"只读"}):""},{title:"操作",key:"actions",width:200,render:e=>{const t=e.frontmatter.readonly;return i(D,{gap:6},{default:()=>[i(d,{size:"small",type:"primary",tertiary:!0,onClick:()=>ne(e),disabled:t},{default:()=>"编辑"}),i(d,{size:"small",type:"info",tertiary:!0,onClick:()=>ie(e),disabled:e.frontmatter.executionMode==="direct"},{default:()=>"运行"}),i(V,{onPositiveClick:()=>se(e)},{trigger:()=>i(d,{size:"small",type:"error",tertiary:!0,disabled:t},{default:()=>"删除"}),default:()=>`确认删除技能 "${e.id}"?`})]})}}],O=r([]),$=r(!1),C=r(!1),_=r(!1),g=r({}),j=r(null);function L(){$.value=!0,lt({pageSize:100}).then(e=>{e.code===0?O.value=e.data.items:a.error(e.message||"加载 MCP 服务器失败")}).catch(()=>a.error("加载 MCP 服务器失败")).finally(()=>$.value=!1)}function pe(){_.value=!1,g.value={},C.value=!0}function fe(e){_.value=!0,g.value={...e},C.value=!0}function me(e){it(e.id).then(t=>{t.code===0?(a.success("删除成功"),L()):a.error(t.message||"删除失败")}).catch(()=>a.error("删除失败"))}function ve(e){j.value=e.id,ot(e.id).then(t=>{t.code===0?a.success(`连接成功,发现 ${t.data.toolCount} 个工具`):a.error(t.message||"连接失败")}).catch(()=>a.error("连接测试失败")).finally(()=>j.value=null)}function _e(e){(_.value&&g.value.id?st(g.value.id,e):nt(e)).then(w=>{w.code===0?(a.success(_.value?"更新成功":"添加成功"),L()):a.error(w.message||"操作失败")}).catch(()=>a.error("操作失败"))}const ge=[{title:"名称",key:"name",width:160},{title:"地址",key:"baseUrl",ellipsis:{tooltip:!0},render:e=>i("span",{style:"font-family: monospace; font-size: 12px"},e.baseUrl)},{title:"状态",key:"enabled",width:80,render:e=>i(k,{type:e.enabled?"success":"default",size:"small"},{default:()=>e.enabled?"启用":"禁用"})},{title:"描述",key:"description",ellipsis:{tooltip:!0}},{title:"操作",key:"actions",width:240,render:e=>{const t=j.value===e.id;return i(D,{gap:6},{default:()=>[i(d,{size:"small",type:"success",tertiary:!0,loading:t,disabled:t,onClick:()=>ve(e)},{default:()=>"连接测试"}),i(d,{size:"small",type:"info",tertiary:!0,onClick:()=>fe(e)},{default:()=>"编辑"}),i(V,{onPositiveClick:()=>me(e)},{trigger:()=>i(d,{size:"small",type:"error",tertiary:!0},{default:()=>"删除"}),default:()=>`确认删除 "${e.name}"?`})]})}}],H=r([]),R=r(!1),M=Ge({userId:"",status:void 0});function U(){R.value=!0,et({pageSize:50,userId:M.userId||void 0,status:M.status}).then(e=>{e.code===0?H.value=e.data.items:a.error(e.message||"加载任务列表失败")}).catch(()=>a.error("加载任务列表失败")).finally(()=>R.value=!1)}function A(e){return e?new Date(e).toLocaleString():"-"}const W={pending:{type:"default",label:"等待中"},running:{type:"info",label:"运行中"},completed:{type:"success",label:"已完成"},failed:{type:"error",label:"失败"}},ke=[{title:"Job ID",key:"id",width:220,ellipsis:{tooltip:!0}},{title:"状态",key:"status",width:90,render:e=>i(k,{type:W[e.status]?.type??"default",size:"small"},{default:()=>W[e.status]?.label??e.status})},{title:"描述",key:"description",ellipsis:{tooltip:!0}},{title:"用户",key:"userId",width:120},{title:"创建时间",key:"createdAt",width:160,render:e=>A(e.createdAt)},{title:"错误信息",key:"error",ellipsis:{tooltip:!0},render:e=>e.error?i(Ee,{},{trigger:()=>i("span",{style:"color: var(--n-error-color); cursor: pointer"},"查看错误"),default:()=>e.error}):""}],ye=[{label:"全部",value:void 0},{label:"等待中",value:"pending"},{label:"运行中",value:"running"},{label:"已完成",value:"completed"},{label:"失败",value:"failed"}],Q=r([]),G=r(!1);function E(){G.value=!0,tt({pageSize:100}).then(e=>{e.code===0?Q.value=e.data.items:a.error(e.message||"加载定时任务失败")}).catch(()=>a.error("加载定时任务失败")).finally(()=>G.value=!1)}function he(e){at(e.id).then(t=>{t.code===0?(a.success("已取消"),E()):a.error(t.message||"取消失败")}).catch(()=>a.error("取消失败"))}const X={active:{type:"success",label:"活跃"},paused:{type:"warning",label:"暂停"},completed:{type:"default",label:"已完成"},failed:{type:"error",label:"失败"}},be=[{title:"任务 ID",key:"id",width:220,ellipsis:{tooltip:!0}},{title:"状态",key:"status",width:90,render:e=>i(k,{type:X[e.status]?.type??"default",size:"small"},{default:()=>X[e.status]?.label??e.status})},{title:"描述",key:"description",ellipsis:{tooltip:!0}},{title:"Cron",key:"cronExpression",width:160},{title:"下次执行",key:"nextRunAt",width:160,render:e=>A(e.nextRunAt)},{title:"最后执行",key:"lastRunAt",width:160,render:e=>A(e.lastRunAt)},{title:"操作",key:"actions",width:100,render:e=>i(V,{onPositiveClick:()=>he(e)},{trigger:()=>i(d,{size:"small",type:"error",tertiary:!0,disabled:e.status!=="active"},{default:()=>"取消"}),default:()=>"确认取消此定时任务?"})}];function Se(){Je({}).then(e=>{e.code===0&&(K.value=e.data.map(t=>({label:t.name,value:t.name})))}).catch(()=>{})}Ne(()=>{p(),L(),Se()});function Ce(e){e==="jobs"&&U(),e==="tasks"&&E()}return(e,t)=>{const w=Ie,Y=Ke,Me=je,z=Le,Z=qe,J=Te,we=Re,ee=xe,x=Ve,P=Ae,ze=Ue;return B(),F(o(N),{vertical:"",size:"large"},{default:n(()=>[y.value==="skills"?(B(),F(J,{key:0},{default:n(()=>[l(Z,{"label-placement":"left",inline:"","show-feedback":!1},{default:n(()=>[l(o(ae),{cols:"1 s:2 m:4","x-gap":12,"y-gap":12,responsive:"screen","item-responsive":""},{default:n(()=>[l(o(T),{span:"1"},{default:n(()=>[l(Y,{label:"名称"},{default:n(()=>[l(w,{value:S.value,"onUpdate:value":t[0]||(t[0]=c=>S.value=c),placeholder:"搜索技能名称或描述",clearable:"",onKeydown:$e(p,["enter"])},null,8,["value"])]),_:1})]),_:1}),l(o(T),{span:"1"},{default:n(()=>[l(o(D),null,{default:n(()=>[l(o(d),{type:"primary",onClick:p},{icon:n(()=>[l(Me)]),default:n(()=>[t[6]||(t[6]=f(" 搜索 ",-1))]),_:1}),l(o(d),{secondary:"",onClick:t[1]||(t[1]=c=>{S.value="",p()})},{icon:n(()=>[l(z)]),default:n(()=>[t[7]||(t[7]=f(" 重置 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):te("",!0),y.value==="jobs"?(B(),F(J,{key:1},{default:n(()=>[l(Z,{"label-placement":"left",inline:"","show-feedback":!1},{default:n(()=>[l(o(ae),{cols:"1 s:2 m:4","x-gap":12,"y-gap":12,responsive:"screen","item-responsive":""},{default:n(()=>[l(o(T),{span:"1"},{default:n(()=>[l(Y,{label:"状态"},{default:n(()=>[l(we,{value:M.status,"onUpdate:value":[t[2]||(t[2]=c=>M.status=c),U],options:ye,style:{"min-width":"120px"}},null,8,["value"])]),_:1})]),_:1}),l(o(T),{span:"1"},{default:n(()=>[l(o(d),{type:"primary",onClick:U},{icon:n(()=>[l(z)]),default:n(()=>[t[8]||(t[8]=f(" 刷新 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):te("",!0),l(J,null,{default:n(()=>[l(ze,{value:y.value,"onUpdate:value":[t[3]||(t[3]=c=>y.value=c),Ce],type:"line",animated:""},{default:n(()=>[l(P,{name:"skills",tab:"技能管理"},{default:n(()=>[l(o(N),{vertical:"",size:"large"},{default:n(()=>[l(o(D),{gap:"8"},{default:n(()=>[l(o(d),{type:"primary",onClick:le},{icon:n(()=>[l(ee)]),default:n(()=>[t[9]||(t[9]=f(" 新建技能 ",-1))]),_:1}),l(o(d),{secondary:"",loading:I.value,onClick:oe},{icon:n(()=>[l(z)]),default:n(()=>[t[10]||(t[10]=f(" 重载技能 ",-1))]),_:1},8,["loading"])]),_:1}),l(x,{columns:ce,data:q.value,loading:m.value,pagination:{pageSize:20},striped:""},null,8,["data","loading"])]),_:1})]),_:1}),l(P,{name:"mcp",tab:"MCP 服务器"},{default:n(()=>[l(o(N),{vertical:"",size:"large"},{default:n(()=>[l(o(d),{type:"primary",onClick:pe},{icon:n(()=>[l(ee)]),default:n(()=>[t[11]||(t[11]=f(" 添加 MCP 服务器 ",-1))]),_:1}),l(x,{columns:ge,data:O.value,loading:$.value,striped:""},null,8,["data","loading"])]),_:1})]),_:1}),l(P,{name:"jobs",tab:"后台任务"},{default:n(()=>[l(x,{columns:ke,data:H.value,loading:R.value,pagination:{pageSize:20},striped:""},null,8,["data","loading"])]),_:1}),l(P,{name:"tasks",tab:"定时任务"},{default:n(()=>[l(o(N),{vertical:"",size:"large"},{default:n(()=>[l(o(d),{secondary:"",onClick:E},{icon:n(()=>[l(z)]),default:n(()=>[t[12]||(t[12]=f(" 刷新 ",-1))]),_:1}),l(x,{columns:be,data:Q.value,loading:G.value,striped:""},null,8,["data","loading"])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),l(Fe,{show:h.value,"onUpdate:show":t[4]||(t[4]=c=>h.value=c),"edit-mode":b.value,"initial-data":v.value,"preset-options":K.value,onSubmit:re},null,8,["show","edit-mode","initial-data","preset-options"]),l(Be,{show:C.value,"onUpdate:show":t[5]||(t[5]=c=>C.value=c),"edit-mode":_.value,"initial-data":g.value,onSubmit:_e},null,8,["show","edit-mode","initial-data"])]),_:1})}}});export{wt as default};