| 1234 |
- /*!
- Build based on gin-vue-admin
- Time : 1757946830000 */
- import{a as e,r as a,q as l,g as t,c as r,o,f as s,w as n,b as u,C as i,v as c,bx as p,F as d,I as m,i as y,d as v,b1 as b,h as f,E as g}from"./index.DlqNVRUO.js";import{i as h,j as x}from"./autoCode.DdG1XdC0.js";const w={class:"p-2"},k={class:"flex justify-between items-center font-bold"},S={class:"font-mono whitespace-pre-wrap break-words bg-gray-100 p-2.5 rounded text-gray-700"},V={class:"flex justify-between items-center font-bold"},_={class:"text-sm mb-1"},j={key:0,class:"mt-1 text-xs overflow-y-auto max-h-[100px] p-2 border-t border-gray-200 bg-gray-50 rounded-b"},O={class:"font-semibold mb-1 text-gray-700 flex items-center"},U={class:"text-xs text-gray-500"},C={class:"space-y-2"},J={class:"flex items-center justify-between"},N={class:"flex items-center"},q={class:"font-medium text-gray-800"},P={key:0,class:"ml-1 text-red-500 text-xs"},E={class:"text-xs px-1.5 py-0.5 bg-blue-100 text-blue-700 rounded"},T=["title"],F={key:1,class:"mt-1 text-xs p-2 border-t border-gray-200 bg-gray-50 rounded-b flex items-center justify-center"},I={key:1,class:"mt-5 p-[15px] border border-gray-200 rounded bg-gray-50"},M={key:0},R={class:"bg-gray-100 p-2.5 rounded whitespace-pre-wrap break-words overflow-y-auto"},A={key:1},z={key:2},W={class:"bg-gray-100 p-2.5 rounded whitespace-pre-wrap break-words overflow-y-auto"},B={key:3},D={class:"bg-gray-100 p-2.5 rounded whitespace-pre-wrap break-words overflow-y-auto"},G={class:"dialog-footer"},H=Object.assign({name:"MCPTest"},{__name:"mcpTest",setup(H){const K=e([]),L=e(!1),Q=e(null),X=a({}),Y=e(null),Z=e(null),$=e(JSON.stringify({mcpServers:{gva:{url:"https://127.0.0.1/sse"}}},null,2));l(()=>{(async()=>{const e=await h();0===e.code&&e.data&&e.data.list.tools?(K.value=e.data.list.tools,$.value=JSON.stringify(e.data.mcpServerConfig,null,2)):g.error(e.msg||"获取工具列表失败或数据格式不正确")})()});const ee=async()=>{try{await navigator.clipboard.writeText($.value),g.success("配置已复制到剪贴板")}catch(e){g.error("复制失败: "+e)}},ae=e=>{Z.value=null,e()},le=async()=>{Q.value?Y.value&&Y.value.validate(async e=>{if(e){const e=Q.value.name,a={...X};Q.value.inputSchema&&Q.value.inputSchema.properties&&Object.keys(Q.value.inputSchema.properties).forEach(e=>{const l=Q.value.inputSchema.properties[e];if(("object"===l.type||"array"===l.type)&&a[e]&&"string"==typeof a[e])try{a[e]=JSON.parse(a[e])}catch(t){throw g.error("参数 ".concat(e," 的JSON格式无效: ").concat(t.message)),new Error("参数 ".concat(e," JSON无效"))}});const l=await x({name:e,arguments:a});Z.value=l.data,0===l.code&&g.success("API调用成功")}}):g.warning("没有选中的测试工具")};return(e,a)=>{const l=t("el-button"),g=t("el-tooltip"),h=t("el-card"),x=t("el-col"),H=t("el-row"),te=t("el-input"),re=t("el-option"),oe=t("el-select"),se=t("el-form-item"),ne=t("el-form"),ue=t("el-image"),ie=t("el-dialog");return o(),r("div",w,[s(h,{class:"mb-2"},{header:n(()=>[u("div",k,[a[2]||(a[2]=u("span",null,"MCP 服务器配置示例",-1)),s(g,{content:"复制配置",placement:"top"},{default:n(()=>[s(l,{icon:c(p),circle:"",onClick:ee},null,8,["icon"])]),_:1})])]),default:n(()=>[u("pre",S,i($.value),1)]),_:1}),s(H,{gutter:8},{default:n(()=>[(o(!0),r(d,null,m(K.value,e=>(o(),y(x,{key:e.name,xs:24,sm:12,md:12,lg:8},{default:n(()=>[s(h,{class:"mb-5 min-h-[150px] flex flex-col overflow-hidden"},{header:n(()=>[u("div",V,[u("span",null,i(e.name),1),s(g,{content:"测试工具",placement:"top"},{default:n(()=>[s(l,{icon:c(b),circle:"",onClick:a=>(e=>{Q.value=e,Z.value=null;for(const a in X)delete X[a];e.inputSchema&&e.inputSchema.properties&&Object.keys(e.inputSchema.properties).forEach(a=>{const l=e.inputSchema.properties[a];void 0!==l.default?X[a]=l.default:"boolean"===l.type?X[a]=!1:"number"===l.type?X[a]=null:("object"===l.type||l.type,X[a]="")}),L.value=!0,Y.value&&Y.value.clearValidate()})(e)},null,8,["icon","onClick"])]),_:2},1024)])]),default:n(()=>[u("div",_,i(e.description),1),e.inputSchema&&e.inputSchema.properties&&Object.keys(e.inputSchema.properties).length>0?(o(),r("div",j,[u("p",O,[a[3]||(a[3]=u("span",{class:"mr-1 my-2"},"参数列表",-1)),u("span",U,"("+i(Object.keys(e.inputSchema.properties).length)+")",1)]),u("div",C,[(o(!0),r(d,null,m(e.inputSchema.properties,(a,l)=>(o(),r("div",{key:l,class:"flex flex-col p-1.5 bg-white rounded border border-gray-100 hover:border-gray-300 transition-colors"},[u("div",J,[u("div",N,[u("span",q,i(l),1),e.inputSchema.required&&e.inputSchema.required.includes(l)?(o(),r("span",P,"*")):v("",!0)]),u("span",E,i(a.type),1)]),u("div",{class:"text-gray-500 mt-0.5 text-xs line-clamp-2",title:a.description||"无描述"},i(a.description||"无描述"),9,T)]))),128))])])):(o(),r("div",F,[...a[4]||(a[4]=[u("span",{class:"text-gray-500 italic py-3"},"无输入参数",-1)])]))]),_:2},1024)]),_:2},1024))),128))]),_:1}),s(ie,{modelValue:L.value,"onUpdate:modelValue":a[1]||(a[1]=e=>L.value=e),title:Q.value?"".concat(Q.value.name," - 参数测试"):"参数测试",width:"60%","before-close":ae},{footer:n(()=>[u("span",G,[s(l,{onClick:a[0]||(a[0]=e=>L.value=!1)},{default:n(()=>[...a[6]||(a[6]=[f("取消",-1)])]),_:1}),s(l,{type:"primary",onClick:le},{default:n(()=>[...a[7]||(a[7]=[f("测试",-1)])]),_:1})])]),default:n(()=>[Q.value?(o(),y(ne,{key:0,model:X,ref_key:"testParamsFormRef",ref:Y,"label-width":"120px","label-position":"top",class:"max-h-[calc(60vh-120px)] overflow-y-auto"},{default:n(()=>[(o(!0),r(d,null,m(Q.value.inputSchema.properties,(e,a)=>(o(),y(se,{key:a,label:e.description||a,prop:a,rules:Q.value.inputSchema.required&&Q.value.inputSchema.required.includes(a)?[{required:!0,message:"请输入 "+(e.description||a),trigger:"blur"}]:[]},{default:n(()=>["string"!==e.type||e.enum?"number"===e.type?(o(),y(te,{key:1,modelValue:X[a],"onUpdate:modelValue":e=>X[a]=e,modelModifiers:{number:!0},type:"number",placeholder:e.description||"请输入数字"+a},null,8,["modelValue","onUpdate:modelValue","placeholder"])):"boolean"===e.type?(o(),y(oe,{key:2,modelValue:X[a],"onUpdate:modelValue":e=>X[a]=e,placeholder:e.description||"请选择"},{default:n(()=>[s(re,{label:"True",value:!0}),s(re,{label:"False",value:!1})]),_:1},8,["modelValue","onUpdate:modelValue","placeholder"])):"string"===e.type&&e.enum?(o(),y(oe,{key:3,modelValue:X[a],"onUpdate:modelValue":e=>X[a]=e,placeholder:e.description||"请选择"+a},{default:n(()=>[(o(!0),r(d,null,m(e.enum,e=>(o(),y(re,{key:e,label:e,value:e},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):(o(),y(te,{key:4,type:"textarea",modelValue:X[a],"onUpdate:modelValue":e=>X[a]=e,placeholder:(e.description||a)+" (请输入JSON格式)",autosize:{minRows:2,maxRows:6}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):(o(),y(te,{key:0,modelValue:X[a],"onUpdate:modelValue":e=>X[a]=e,placeholder:e.description||"请输入"+a},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label","prop","rules"]))),128))]),_:1},8,["model"])):v("",!0),Z.value?(o(),r("div",I,[a[5]||(a[5]=u("h4",{class:"mt-0 mb-2.5 text-base"},"API 返回结果:",-1)),"string"==typeof Z.value?(o(),r("div",M,[u("pre",R,i(Z.value),1)])):"image"===Z.value.type&&Z.value.content?(o(),r("div",A,[s(ue,{class:"max-w-full max-h-[300px]",src:Z.value.content,"preview-src-list":[Z.value.content],fit:"contain"},null,8,["src","preview-src-list"])])):"text"===Z.value.type&&Z.value.content?(o(),r("div",z,[u("pre",W,i(Z.value.content),1)])):(o(),r("div",B,[u("pre",D,i(JSON.stringify(Z.value,null,2)),1)]))])):v("",!0)]),_:1},8,["modelValue","title"])])}}});export{H as default};
|