var S=(x,q,w)=>new Promise((P,k)=>{var h=i=>{try{y(w.next(i))}catch(c){k(c)}},T=i=>{try{y(w.throw(i))}catch(c){k(c)}},y=i=>i.done?P(i.value):Promise.resolve(i.value).then(h,T);y((w=w.apply(x,q)).next())});import"./index-BDvqZ5j4.js";import{M as oe}from"./BasicModal-xH56XuRZ.js";import{B as le}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as ne}from"./useForm-D61zovon.js";import{saveOrUpdate as se,saveAndSync as re}from"./AiragMcp.api-Cq7GCN8X.js";import{s as ue,aG as ie,av as pe,aw as de,aA as me,au as ce}from"./index-X7Y8jykP.js";import{a as fe}from"./useModal-DaJ3Bflg.js";import"./index-DfHu-LAS.js";import{e as ve,R as ye}from"./Group-DBzJABA_.js";import{e as ke,y as V,z as C,A as t,r as b,u as B,K as he,Q as A,f as r,E as m,H as O,c as ge,n as X}from"./vue-vendor-DNhG1Cve.js";import{_ as be}from"./index-DTjkSGYl.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useTimeout-D5AmIBZw.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./index-BzChaRPg.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./useAppInject-DPZGPcR3.js";import"./index-CuWaQdlK.js";import"./index-DO7ZhK45.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./RadioButton-DRBix2Fq.js";import"./Checkbox-Dbxs4we4.js";import"./eagerComputed-BTlOruLW.js";import"./fromPairs-Dx9PT-t0.js";import"./useMaxLevel-DE205ncc.js";import"./index-DSsDi_fL.js";import"./Group-UHkub2tu.js";import"./index-BuONesFs.js";import"./index-CfNJyBRj.js";import"./dropdown-jkliuVyN.js";import"./index-C7ckZv9Z.js";import"./DirectoryTree-nk_YTTIy.js";import"./FolderOpenOutlined-SzIPA7z0.js";import"./index-Cl-8Hzo4.js";import"./scrollTo-D49dA-9c.js";import"./operationUnit-vCu2co3e.js";const Pe={class:"modal"},we={class:"mcp-content"},Te={class:"headers-table-wrapper"},_e={class:"headers-table-container"},Ne=ke({__name:"AiragMcpAddModal",emits:["success","register"],setup(x,{emit:q}){const w=q,{createMessage:P}=ue(),k=b(!1),h=b(!1),T=b(void 0),y=b("mcp"),i=b("sse"),c=b("none"),R=b("X-Access-Token"),J=b(""),z=ge(()=>y.value==="plugin"?"请输入BaseURL,例如:https://api.example.com(可选,不填使用当前系统地址)":i.value==="sse"||i.value==="http"?"请输入服务端点URL,例如:https://example.com/stream":"请输入启动命令,例如:./start-mcp-service"),f=b([]),F=[{title:"键",dataIndex:"key",key:"key",width:"40%"},{title:"值",dataIndex:"value",key:"value",width:"45%"},{title:"操作",key:"action",width:"15%"}];function H(){f.value.push({key:"",value:""})}function D(e){if(f.value.length<=1){const a=f.value[0];if(!a.key&&!a.value)return;a.key="",a.value="",P.success("已清空数据");return}f.value.splice(e,1)}function M(){const e=f.value.filter(o=>o.key&&o.value);if(e.length===0)return"";const a=e.reduce((o,u)=>(o[u.key]=u.value,o),{});return JSON.stringify(a)}function L(e){if(!e){f.value=[{key:"",value:""}];return}try{const a=JSON.parse(e),o=Object.entries(a);o.length===0?f.value=[{key:"",value:""}]:f.value=o.map(([u,n])=>({key:u,value:String(n)}))}catch(a){f.value=[{key:"",value:""}]}}function E(e){c.value=e,_([{field:"tokenParamName",required:e==="token",show:e==="token"},{field:"tokenParamValue",required:!1,show:e==="token"}])}function G(e){y.value=e.target.value,y.value==="plugin"?(_([{field:"category",label:"类型"},{field:"endpoint",label:"BaseURL",required:!1},{field:"type",show:!1},{field:"headers",label:"请求头",show:!0},{field:"authType",label:"授权方式",required:!0,show:!0},{field:"tokenParamName",label:"Token参数名",required:c.value==="token",show:c.value==="token"},{field:"tokenParamValue",label:"Token参数值",required:!1,show:c.value==="token"}]),N({type:"api",authType:c.value||"none",tokenParamName:R.value||"X-Access-Token"})):(_([{field:"category",label:"类型"},{field:"endpoint",label:i.value==="stdio"?"命令":"URL",required:!0},{field:"type",label:"MCP类型",show:!0},{field:"headers",label:"请求头",show:()=>i.value!=="stdio"},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),N({type:i.value||"sse",authType:void 0,tokenParamName:void 0,tokenParamValue:void 0}))}const[K,{resetFields:Q,validate:j,setFieldsValue:N,updateSchema:_}]=ne({showActionButtonGroup:!1,layout:"vertical",baseColProps:{span:24},schemas:[{field:"name",component:"Input",label:"名称",required:!0,componentProps:{placeholder:"请输入名称"}},{field:"icon",label:"图标",component:"JImageUpload"},{field:"category",component:"RadioGroup",label:"类型",required:!0,slot:"category",defaultValue:"mcp"},{field:"type",component:"Select",label:"MCP类型",required:!0,slot:"type",defaultValue:"sse"},{field:"endpoint",component:"Input",label:"URL",required:!0,slot:"endpoint"},{field:"headers",component:"InputTextArea",label:"请求头",slot:"headers",show:!1},{field:"authType",component:"Select",label:"授权方式",required:!0,slot:"authType",defaultValue:"none",show:!1},{field:"tokenParamName",component:"Input",label:"Token参数名",required:!1,slot:"tokenParamName",defaultValue:"X-Access-Token",show:!1},{field:"tokenParamValue",component:"Input",label:"Token参数值",required:!1,slot:"tokenParamValue",show:!1},{field:"descr",component:"InputTextArea",label:"描述",componentProps:{rows:3,placeholder:"请输入描述"}}]}),[$,{closeModal:I}]=fe(e=>S(null,null,function*(){if(yield Q(),h.value=!1,T.value=e==null?void 0:e.id,e&&Object.keys(e).length>0){e.id?k.value=!0:k.value=!1;const a=e.category||"mcp";y.value=a;const o=e.type||"sse";i.value=o;let u="none",n="X-Access-Token",g="";if(a==="plugin"){if(e.metadata)try{const v=typeof e.metadata=="string"?JSON.parse(e.metadata):e.metadata;u=v.authType||"none",n=v.tokenParamName||"X-Access-Token",g=v.tokenParamValue||""}catch(v){}let d={};if(e.headers)try{d=typeof e.headers=="string"?JSON.parse(e.headers):e.headers,u==="token"&&n&&d[n]&&(g=d[n],delete d[n])}catch(v){}c.value=u,R.value=n,J.value=g,_([{field:"category",label:"类型",componentProps:{disabled:!0}},{field:"endpoint",label:"BaseURL",required:!1},{field:"type",show:!1},{field:"headers",label:"请求头",show:!0},{field:"authType",label:"授权方式",required:!0,show:!0},{field:"tokenParamName",label:"Token参数名",required:u==="token",show:u==="token"},{field:"tokenParamValue",label:"Token参数值",required:!1,show:u==="token"}]),L(Object.keys(d).length>0?JSON.stringify(d):""),X(()=>{N({icon:e.icon,name:e.name,descr:e.descr,category:a,type:o,endpoint:e.endpoint,authType:u,tokenParamName:n,tokenParamValue:g})})}else _([{field:"category",label:"类型",componentProps:{disabled:!0}},{field:"endpoint",label:o==="stdio"?"命令":"URL",required:!0},{field:"type",label:"MCP类型",show:!0},{field:"headers",label:"请求头",show:()=>o!=="stdio"},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),L(e.headers),X(()=>{N({icon:e.icon,name:e.name,descr:e.descr,category:a,type:o,endpoint:e.endpoint})})}else k.value=!1,y.value="mcp",i.value="sse",c.value="none",R.value="X-Access-Token",J.value="",f.value=[{key:"",value:""}],_([{field:"category",label:"类型"},{field:"endpoint",label:"URL"},{field:"headers",label:"请求头",show:!0},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),N({category:"mcp",type:"sse",authType:"none",tokenParamName:"X-Access-Token",tokenParamValue:""})}));function W(e){i.value=e,_([{field:"endpoint",label:e==="stdio"?"命令":"URL"},{field:"headers",label:"请求头",show:()=>e!=="stdio"}])}function Y(){return S(this,null,function*(){try{h.value=!0;const e=yield j();if(T.value&&(e.id=T.value),e.category==="plugin"){if(e.authType==="token"&&!e.tokenParamName){P.error("Token授权方式需要填写Token参数名和参数值");return}let o={};const u=M();if(u)try{o=JSON.parse(u)}catch(g){o={}}e.authType==="token"&&e.tokenParamName&&e.tokenParamValue&&(o[e.tokenParamName]=e.tokenParamValue),e.headers=Object.keys(o).length>0?JSON.stringify(o):"";const n={};if(e.metadata)try{Object.assign(n,typeof e.metadata=="string"?JSON.parse(e.metadata):e.metadata)}catch(g){}n.authType=e.authType||"none",e.authType==="token"&&(n.tokenParamName=e.tokenParamName||"X-Access-Token",n.tokenParamValue=e.tokenParamValue||""),e.metadata=JSON.stringify(n),e.type="api"}else e.headers=M(),delete e.authType,delete e.tokenParamName,delete e.tokenParamValue;const a=yield se(e);a.success?(P.success(a.message||"保存成功"),w("success"),I()):P.error(a.message||"保存失败")}finally{h.value=!1}})}function Z(){return S(this,null,function*(){try{h.value=!0;const e=yield j();T.value&&(e.id=T.value),e.headers=M();const a=yield re(e);a.success?(P.success(a.message||"保存并同步成功"),w("success"),I()):P.error(a.message||"保存并同步失败")}finally{h.value=!1}})}function ee(){I()}return(e,a)=>{const o=ye,u=ve,n=de,g=pe,d=ie,v=he("a-button"),ae=be,te=me;return C(),V(oe,{destroyOnClose:"",onRegister:B($),canFullscreen:!1,width:"640px",title:k.value?"编辑MCP":"新增MCP",wrapClassName:"airag-mcp-modal"},{footer:t(()=>[r(v,{onClick:ee},{default:t(()=>[...a[9]||(a[9]=[m("关闭",-1)])]),_:1}),r(v,{type:"primary",onClick:Y,loading:h.value},{default:t(()=>[...a[10]||(a[10]=[m("保存",-1)])]),_:1},8,["loading"]),y.value==="mcp"?(C(),V(v,{key:0,type:"primary",onClick:Z,loading:h.value},{default:t(()=>[...a[11]||(a[11]=[m("保存并同步",-1)])]),_:1},8,["loading"])):O("",!0)]),default:t(()=>[A("div",Pe,[A("div",we,[r(le,{onRegister:B(K)},{category:t(({model:s,field:l})=>[r(u,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:G,disabled:k.value},{default:t(()=>[r(o,{value:"mcp"},{default:t(()=>[...a[0]||(a[0]=[m("MCP",-1)])]),_:1}),r(o,{value:"plugin"},{default:t(()=>[...a[1]||(a[1]=[m("插件",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","disabled"])]),type:t(({model:s,field:l})=>[r(g,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:W,disabled:k.value},{default:t(()=>[r(n,{value:"sse"},{default:t(()=>[...a[2]||(a[2]=[m("SSE",-1)])]),_:1}),r(n,{value:"stdio"},{default:t(()=>[...a[3]||(a[3]=[m("STDIO",-1)])]),_:1}),r(n,{value:"http"},{default:t(()=>[...a[4]||(a[4]=[m("HTTP",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","disabled"])]),endpoint:t(({model:s,field:l})=>[r(d,{value:s[l],"onUpdate:value":p=>s[l]=p,placeholder:z.value,autocomplete:"new-password"},null,8,["value","onUpdate:value","placeholder"])]),headers:t(()=>[r(te,null,{default:t(()=>[A("div",Te,[r(v,{type:"primary",size:"small",onClick:H,style:{"margin-bottom":"8px"}},{default:t(()=>[...a[5]||(a[5]=[m(" 添加 ",-1)])]),_:1}),A("div",_e,[r(ae,{dataSource:f.value,columns:F,pagination:!1,size:"small",bordered:""},{bodyCell:t(({column:s,record:l,index:p})=>[s.key==="key"?(C(),V(d,{key:0,value:l.key,"onUpdate:value":U=>l.key=U,placeholder:"请输入键",size:"small"},null,8,["value","onUpdate:value"])):O("",!0),s.key==="value"?(C(),V(d,{key:1,value:l.value,"onUpdate:value":U=>l.value=U,placeholder:"请输入值",size:"small"},null,8,["value","onUpdate:value"])):O("",!0),s.key==="action"?(C(),V(v,{key:2,type:"link",danger:"",size:"small",onClick:U=>D(p)},{default:t(()=>[...a[6]||(a[6]=[m("删除",-1)])]),_:1},8,["onClick"])):O("",!0)]),_:1},8,["dataSource"])])])]),_:1})]),authType:t(({model:s,field:l})=>[r(g,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:E},{default:t(()=>[r(n,{value:"none"},{default:t(()=>[...a[7]||(a[7]=[m("不需要授权",-1)])]),_:1}),r(n,{value:"token"},{default:t(()=>[...a[8]||(a[8]=[m("Token / API Key",-1)])]),_:1})]),_:1},8,["value","onUpdate:value"])]),tokenParamName:t(({model:s,field:l})=>[r(d,{value:s[l],"onUpdate:value":p=>s[l]=p,placeholder:"请输入Token参数名"},null,8,["value","onUpdate:value"])]),tokenParamValue:t(({model:s,field:l})=>[r(d,{autocomplete:"new-password",value:s[l],"onUpdate:value":p=>s[l]=p,type:"password",placeholder:"请输入Token值"},null,8,["value","onUpdate:value"])]),_:1},8,["onRegister"])])])]),_:1},8,["onRegister","title"])}}}),wa=ce(Ne,[["__scopeId","data-v-0ec00e79"]]);export{wa as default};