chaite
Version:
core for chatgpt-plugin and karin-plugin-chatgpt
2 lines (1 loc) • 3.94 kB
JavaScript
import{e as A,t as Q}from"./tools-DE77Chhl.js";import{d as F,q as J,K as L,o as r,b as f,w as u,e as n,u as s,g as x,a as y,t as U,c as g,P as B,Q as z,v as I,B as D,n as M,L as K,j as i,O as S,M as P,I as G,k as H}from"./index-D3SoE8bB.js";import{N as R}from"./Alert-wir6kfwu.js";import{_ as W,N as T}from"./FormItem-yXZKI0f3.js";import{N as X}from"./Code-Cesxrx_z.js";import{N as Y}from"./InputNumber-CRx3qCIC.js";const Z={key:0},ee={class:"desc"},te={class:"grid"},ae={class:"grid context"},oe={key:0,class:"result"},se=F({__name:"ToolTestModal",props:{show:{type:Boolean},tool:{}},emits:["update:show"],setup(w,{emit:C}){const d=w,E=C,m=J(),c=i(),b=i(!1),h=i(!1),l=G({}),_=i("console-test"),N=i(""),p=i(),j=S(()=>new Set(c.value?.parameters.required||[])),k=S(()=>Object.entries(c.value?.parameters.properties||{}));function O(){Object.keys(l).forEach(a=>delete l[a]),k.value.forEach(([a,e])=>{l[a]=e.type==="boolean"?!1:e.type==="number"?0:""})}async function $(){if(!(!d.show||!d.tool?.id)){b.value=!0,p.value=void 0;try{const a=await A(d.tool.id);a.code===0?(c.value=a.data,O()):m.error(a.message||"无法读取工具参数")}catch{m.error("无法读取工具参数")}finally{b.value=!1}}}function V(){const a={};for(const[e,t]of k.value){const o=l[e];if((t.type==="array"||t.type==="object")&&typeof o=="string"){if(!o.trim()){a[e]=t.type==="array"?[]:{};continue}a[e]=JSON.parse(o)}else a[e]=o}return a}async function q(){if(d.tool?.id)try{const a=V();for(const t of j.value)if(a[t]===""||a[t]==null)throw new Error(`请填写必填参数:${t}`);h.value=!0;const e=await Q(d.tool.id,{args:a,userId:_.value||void 0,groupId:N.value||void 0});e.code===0?p.value=e.data:m.error(e.message||"工具执行失败")}catch(a){m.error(a instanceof Error?a.message:"参数无效")}finally{h.value=!1}}return L(()=>d.show,$),(a,e)=>(r(),f(s(K),{show:w.show,preset:"card",title:"工具测试",style:{width:"min(900px, calc(100vw - 32px))"},"onUpdate:show":e[2]||(e[2]=t=>E("update:show",t))},{default:u(()=>[n(s(R),{type:"info","show-icon":!1,style:{"margin-bottom":"16px"}},{default:u(()=>[e[3]||(e[3]=x("使用当前 chatgpt-plugin 进程中已经加载的 ",-1)),y("b",null,U(w.tool?.name),1),e[4]||(e[4]=x(" 执行。请勿用真实敏感数据测试会产生外部副作用的工具。",-1))]),_:1}),b.value?(r(),g("div",Z,"正在读取工具定义…")):c.value?(r(),g(B,{key:1},[y("p",ee,U(c.value.description||"该工具未提供说明。"),1),n(s(W),{"label-placement":"top"},{default:u(()=>[y("div",te,[(r(!0),g(B,null,z(k.value,([t,o])=>(r(),f(s(T),{key:t,label:`${t}${j.value.has(t)?" *":""}`,feedback:o.description||void 0},{default:u(()=>[o.type==="boolean"?(r(),f(s(P),{key:0,value:l[t],"onUpdate:value":v=>l[t]=v},null,8,["value","onUpdate:value"])):o.type==="number"?(r(),f(s(Y),{key:1,value:l[t],"onUpdate:value":v=>l[t]=v,style:{width:"100%"}},null,8,["value","onUpdate:value"])):(r(),f(s(I),{key:2,value:l[t],"onUpdate:value":v=>l[t]=v,type:o.type==="array"||o.type==="object"?"textarea":"text",placeholder:o.type==="array"||o.type==="object"?`输入 JSON ${o.type}`:`输入 ${t}`},null,8,["value","onUpdate:value","type","placeholder"]))]),_:2},1032,["label","feedback"]))),128))]),y("div",ae,[n(s(T),{label:"测试用户 QQ(可选)"},{default:u(()=>[n(s(I),{value:_.value,"onUpdate:value":e[0]||(e[0]=t=>_.value=t)},null,8,["value"])]),_:1}),n(s(T),{label:"测试群号(可选)"},{default:u(()=>[n(s(I),{value:N.value,"onUpdate:value":e[1]||(e[1]=t=>N.value=t)},null,8,["value"])]),_:1})])]),_:1}),n(s(D),{type:"primary",loading:h.value,onClick:q},{default:u(()=>[...e[5]||(e[5]=[x("真实运行工具",-1)])]),_:1},8,["loading"]),p.value?(r(),g("div",oe,[y("div",null,"执行完成 · "+U(p.value.durationMs)+" ms",1),n(s(X),{code:p.value.result,language:"json","word-wrap":""},null,8,["code"])])):M("",!0)],64)):M("",!0)]),_:1},8,["show"]))}}),ce=H(se,[["__scopeId","data-v-30c5a5ab"]]);export{ce as default};