You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1 lines
19 KiB

import{g as ke,C as Ce,c as a,a as t,q as r,s as h,F as u,r as p,l as m,H as we,t as c,d as S,v,b as X,x as K,y as g,z as Ve,A as x,o as i,L as I,p as Te,n as Q,_ as Ae}from"./6O01ZZML.js";import{u as Se}from"./BgasD__e.js";import{u as Ue}from"./xsgK-Nup.js";import{L as W}from"./DD3V9C6_.js";import{_ as Z}from"./BrJ9pewm.js";const Le={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},Me={class:"flex items-center gap-3"},Oe=["value"],Ne={key:0,class:"text-center py-20 text-slate-300"},$e={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Be={class:"text-xs text-slate-400"},je={class:"agent-grid"},Ee=["onClick"],Ie={class:"flex items-start justify-between gap-2"},ze={class:"min-w-0"},De={class:"font-semibold text-sm text-slate-800 truncate"},qe={class:"text-[11px] text-slate-400 mt-0.5 truncate"},Fe={class:"flex items-center gap-1 flex-shrink-0"},Ge={key:0,class:"badge badge-success badge-xs"},Ye={key:1,class:"badge badge-ghost badge-xs"},Je=["onClick"],Re={key:0,class:"text-xs text-slate-500 mt-2 line-clamp-2"},He={class:"flex flex-wrap items-center gap-1.5 mt-3"},Xe={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke={class:"ag-overlay"},Qe={class:"ag-box"},We={class:"flex items-center justify-between mb-4"},Ze={class:"flex items-center gap-3"},et={class:"text-base font-semibold text-slate-800"},tt={class:"scope-chip"},st={class:"ed-section"},lt={class:"type-row"},nt=["disabled","onClick"],ot={class:"ttab-title"},at={class:"ttab-desc"},it={key:0,class:"ed-tip"},dt={class:"ed-section"},ct={class:"grid grid-cols-2 gap-3"},rt=["disabled"],ut={class:"mt-3"},pt={class:"grid grid-cols-3 gap-3 mt-3"},vt={class:"ed-section"},_t={class:"slot-row"},mt={class:"slot-item"},bt={class:"ed-label inline"},gt=["onUpdate:modelValue"],ft={value:"",disabled:""},xt=["value"],yt={key:0,class:"slot-arrow"},ht={class:"ed-section"},kt={class:"grid grid-cols-2 gap-3"},Ct={class:"mt-3"},wt={class:"flex items-center justify-between mb-1"},Vt={class:"flex gap-1"},Tt=["disabled"],At={class:"ed-tip mb-1"},St={key:0,class:"text-xs text-slate-300 py-2"},Ut=["onUpdate:modelValue","onChange"],Lt=["value"],Mt=["onUpdate:modelValue","onChange"],Ot=["onUpdate:modelValue"],Nt=["value"],$t=["onUpdate:modelValue"],Pt=["onClick"],Bt={key:0,class:"ed-section"},jt={class:"mt-3"},Et={class:"flex items-center gap-2 text-sm cursor-pointer"},It={class:"ed-section"},zt={key:0,class:"ed-tip"},Dt={key:1,class:"mcp-grid"},qt=["checked","onChange"],Ft={class:"min-w-0"},Gt={class:"block truncate"},Yt={class:"block truncate text-[10px] text-slate-400 font-mono"},Jt={class:"ed-section"},Rt={key:0,class:"text-xs text-slate-300 py-2"},Ht=["onUpdate:modelValue"],Xt=["onUpdate:modelValue"],Kt=["onUpdate:modelValue"],Qt=["onClick"],Wt={class:"ed-footer"},Zt={class:"flex items-center gap-2 text-sm cursor-pointer"},es={class:"flex gap-2"},ts=["disabled"],ee=1,te=2,ss=3,ls=4,ns=5,os=7,se=9,as=10,is=ke({__name:"agents",setup(ds){const z=[{value:"chat",label:"chat-agent 对话",icon:"💬",hint:"STT → LLM → TTS 三段拼接",color:"#b45309",bg:"#fef9c3"},{value:"sts-chat",label:"sts-chat-agent 端到端对话",icon:"⚡",hint:"单个 STS 服务直接完成语音对话",color:"#be185d",bg:"#fce7f3"}],le={translate:{label:"翻译(已下线)",icon:"🧩",color:"#64748b",bg:"#f1f5f9"},"ast-translate":{label:"端到端翻译(已下线)",icon:"🚀",color:"#64748b",bg:"#f1f5f9"}},ne={chat:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"llm_svc_id",slot:"LLM",label:"大语言模型",cats:[ns,se],color:"#b45309"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],translate:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"mt_svc_id",slot:"MT",label:"机器翻译",cats:[ss],color:"#059669"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],"sts-chat":[{key:"sts_svc_id",slot:"STS",label:"端到端语音对话",cats:[os],color:"#be185d"}],"ast-translate":[{key:"ast_svc_id",slot:"AST",label:"端到端语音翻译",cats:[ls],color:"#f97316"}]};function k(l){return ne[l]??[]}const{webApi:C,consoleApi:oe}=Se(),{success:U,error:y}=Ue(),f=g(""),O=g([]),w=g([]),V=g([]),T=g([]),L=g(!1),b=g(!1),N=g(!1);function $(){return{app_name:"",id:"",name:"",type:"chat",description:"",avatar_url:"",enable:!0,stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:"",system_prompt:"",gender:0,greeting_enabled:!1,greeting_text:"",support_langs:"",default_lang:"",voice_map:[],mcp_svc_ids:[],variables:[],sort:0}}const n=Ve($()),ae=x(()=>n.type==="chat"||n.type==="sts-chat"),D=x(()=>{const l=(n.support_langs||"").split(",").map(e=>e.trim()).filter(Boolean);return l.length?W.filter(e=>l.includes(e.code)):W}),q=(l,e)=>(e.sort||0)-(l.sort||0)||(l.name||"").localeCompare(e.name||""),ie=x(()=>{const l=z.map(e=>({...e,type:e.value,items:w.value.filter(s=>s.type===e.value).sort(q)})).filter(e=>e.items.length);for(const[e,s]of Object.entries(le)){const d=w.value.filter(o=>o.type===e).sort(q);d.length&&l.push({value:e,type:e,hint:"已下线的类型,仅供查看与清理",...s,items:d})}return l});async function de(){try{const l=await oe("products/list",{});O.value=(l??[]).map(e=>e.name).filter(Boolean)}catch{O.value=[]}}async function ce(){try{const l=await C("getsvcconfigs",{app_name:f.value});V.value=l?.items??[]}catch{V.value=[]}}async function P(){try{const l=await C("getagents",{app_name:f.value});w.value=(l?.items??[]).map(e=>({...e,voice_map:e.voice_map??[],mcp_svc_ids:e.mcp_svc_ids??[],variables:e.variables??[]}))}catch(l){y(l?.message??"加载失败"),w.value=[]}}async function re(){try{const l=await C("getttsvoices",{});T.value=l?.voices??[]}catch{T.value=[]}}async function F(){await Promise.all([ce(),P()])}const G=x(()=>n.type==="sts-chat"?n.sts_svc_id:n.tts_svc_id),A=x(()=>V.value.find(l=>l.id===G.value)?.provider??""),B=x(()=>!!A.value&&T.value.some(l=>l.provider===A.value));function M(l,e){const s=A.value;if(!s||!l)return[];const d=(l.split("-")[0]||"").toLowerCase(),o=T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:_.language.toLowerCase()===l.toLowerCase());return o.length?o:T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:(_.language.split("-")[0]||"").toLowerCase()===d)}function Y(l,e){return M(l,e)[0]?.voice_id??""}function J(l){const e=M(l.language,l.gender);e.length&&(!l.voice||!e.some(s=>s.voice_id===l.voice))&&(l.voice=e[0].voice_id)}function ue(){const l=(n.support_langs||"").split(",").map(s=>s.trim()).filter(Boolean);if(!l.length){y("请先选择支持语言");return}let e=0;for(const s of l){if(n.voice_map.some(o=>o.language===s&&o.gender===n.gender))continue;const d=Y(s,n.gender);d&&(n.voice_map.push({language:s,gender:n.gender,voice:d}),e++)}U(e?`已补全 ${e} 种语言的默认音色`:"已是最新,无需补全")}const R=x(()=>j([as]));function pe(l){const e=n.mcp_svc_ids.indexOf(l);e>=0?n.mcp_svc_ids.splice(e,1):n.mcp_svc_ids.push(l)}function ve(){n.variables.push({key:"",label:"",def_value:"",description:""})}function H(l){return(l.categories||"").split(",").map(Number)}function j(l){return V.value.filter(e=>e.enable&&H(e).some(s=>l.includes(s)))}function _e(l){return H(l).includes(se)}function me(l){if(!l)return"未配置";const e=V.value.find(s=>s.id===l);return e?e.name:l}function be(l){return k(l.type).map(e=>({slot:e.slot,color:e.color,id:l[e.key]}))}function ge(){Object.assign(n,$()),b.value=!1,L.value=!0}function fe(l){Object.assign(n,$(),l,{voice_map:(l.voice_map??[]).map(e=>({...e})),mcp_svc_ids:[...l.mcp_svc_ids??[]],variables:(l.variables??[]).map(e=>({...e}))}),b.value=!0,L.value=!0}function E(){L.value=!1}function xe(){const l=n.default_lang||"";n.voice_map.push({language:l,gender:n.gender,voice:Y(l,n.gender)})}async function ye(){if(!n.id.trim()||!n.name.trim()){y("Agent ID 和 名称 必填");return}for(const l of k(n.type))if(!(n[l.key]||"").trim()){y(`${l.slot} ${l.label} 必选`);return}N.value=!0;try{const l={...JSON.parse(JSON.stringify(n)),app_name:f.value,id:n.id.trim(),name:n.name.trim(),stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:""};for(const e of k(n.type))l[e.key]=n[e.key];l.voice_map=n.voice_map.filter(e=>e.language&&e.voice),l.mcp_svc_ids=n.mcp_svc_ids.filter(Boolean),l.variables=n.variables.filter(e=>(e.key||"").trim()),await C(b.value?"updateagent":"addagent",l),U("保存成功"),E(),await P()}catch(l){y(l?.message??"保存失败")}finally{N.value=!1}}function he(l){window.confirm(`确定删除 Agent「${l.name||l.id}」吗?引用它的通话翻译规则会失效。`)&&C("delagent",{app_name:f.value,id:l.id}).then(()=>{U("已删除"),P()}).catch(e=>y(e?.message??"删除失败"))}return Ce(async()=>{await de(),await Promise.all([F(),re()])}),(l,e)=>(i(),a("div",null,[t("div",Le,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"Agent 配置"),t("p",{class:"text-xs text-slate-400 mt-1"}," 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 ")],-1)),t("div",Me,[e[14]||(e[14]=t("span",{class:"text-sm text-slate-500"},"作用域",-1)),r(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>f.value=s),class:"select select-bordered select-sm",onChange:F},[e[13]||(e[13]=t("option",{value:""},"全局默认",-1)),(i(!0),a(u,null,p(O.value,s=>(i(),a("option",{key:s,value:s},c(s),9,Oe))),128))],544),[[h,f.value]]),t("button",{class:"btn btn-primary btn-sm text-white",onClick:ge},"+ 新建 Agent")])]),w.value.length?m("",!0):(i(),a("div",Ne,[...e[16]||(e[16]=[t("div",{class:"text-5xl mb-3"},"🤖",-1),t("p",{class:"text-sm"},"当前作用域下还没有 Agent",-1),t("p",{class:"text-xs mt-1"},"先在「第三方服务配置」里配好服务,再来把它们组装成 Agent",-1)])])),(i(!0),a(u,null,p(ie.value,s=>(i(),a("div",{key:s.type,class:"mb-6"},[t("div",$e,[t("span",{class:"type-tag",style:I({background:s.bg,color:s.color})},c(s.icon)+" "+c(s.label),5),t("span",Pe,c(s.hint),1),e[17]||(e[17]=t("span",{class:"text-xs text-slate-300"},"·",-1)),t("span",Be,c(s.items.length)+" 个",1)]),t("div",je,[(i(!0),a(u,null,p(s.items,d=>(i(),a("div",{key:d.id,class:"agent-card",onClick:o=>fe(d)},[t("div",Ie,[t("div",ze,[t("div",De,c(d.name||d.id),1),t("div",qe,c(d.id),1)]),t("div",Fe,[d.enable?(i(),a("span",Ge,"启用")):(i(),a("span",Ye,"停用")),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:Te(o=>he(d),["stop"])},"删除",8,Je)])]),d.description?(i(),a("p",Re,c(d.description),1)):m("",!0),t("div",He,[(i(!0),a(u,null,p(be(d),o=>(i(),a("span",{key:o.slot,class:"svc-pill",style:I({background:o.color})},c(o.slot)+": "+c(me(o.id)),5))),128))]),d.support_langs?(i(),a("div",Xe," 支持语言:"+c(d.support_langs),1)):m("",!0)],8,Ee))),128))])]))),128)),r(t("div",Ke,[t("div",Qe,[t("div",We,[t("div",Ze,[t("h3",et,c(b.value?"编辑 Agent":"新建 Agent"),1),t("span",tt,c(f.value||"全局默认"),1)]),t("button",{class:"btn btn-ghost btn-xs",onClick:E},"✕ 关闭")]),t("section",st,[e[18]||(e[18]=t("div",{class:"ed-section-title"},"类型",-1)),t("div",lt,[(i(),a(u,null,p(z,s=>t("button",{key:s.value,type:"button",class:Q(["ttab",{on:n.type===s.value,locked:b.value&&n.type!==s.value}]),disabled:b.value,onClick:d=>n.type=s.value},[t("span",ot,c(s.icon)+" "+c(s.label),1),t("span",at,c(s.hint),1)],10,nt)),64))]),b.value?(i(),a("p",it,"类型创建后不可更改;需要换类型请新建一个 Agent。")):m("",!0)]),t("section",dt,[e[26]||(e[26]=t("div",{class:"ed-section-title"},"基本信息",-1)),t("div",ct,[t("div",null,[e[19]||(e[19]=t("span",{class:"ed-label"},[S("Agent ID "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>n.id=s),disabled:b.value,class:"input input-bordered input-sm w-full",placeholder:"如 trans-cn-en(作用域内唯一,创建后不可改)"},null,8,rt),[[v,n.id]])]),t("div",null,[e[20]||(e[20]=t("span",{class:"ed-label"},[S("名称 "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>n.name=s),class:"input input-bordered input-sm w-full",placeholder:"展示名,如 中英实时翻译"},null,512),[[v,n.name]])])]),t("div",ut,[e[21]||(e[21]=t("span",{class:"ed-label"},"描述",-1)),r(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>n.description=s),class:"input input-bordered input-sm w-full",placeholder:"这个 Agent 用在什么场景"},null,512),[[v,n.description]])]),t("div",pt,[t("div",null,[e[22]||(e[22]=t("span",{class:"ed-label"},"头像 URL",-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>n.avatar_url=s),class:"input input-bordered input-sm w-full",placeholder:"可留空"},null,512),[[v,n.avatar_url]])]),t("div",null,[e[23]||(e[23]=t("span",{class:"ed-label"},"排序(越大越靠前)",-1)),r(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>n.sort=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[v,n.sort,void 0,{number:!0}]])]),t("div",null,[e[25]||(e[25]=t("span",{class:"ed-label"},"音色性别偏好",-1)),r(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>n.gender=s),class:"select select-bordered select-sm w-full"},[...e[24]||(e[24]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],512),[[h,n.gender,void 0,{number:!0}]])])])]),t("section",vt,[e[27]||(e[27]=t("div",{class:"ed-section-title"},"服务编排",-1)),t("div",_t,[(i(!0),a(u,null,p(k(n.type),(s,d)=>(i(),a(u,{key:s.key},[t("div",mt,[t("span",{class:"stage-tag",style:I({background:s.color})},c(s.slot),5),t("span",bt,c(s.label),1),r(t("select",{"onUpdate:modelValue":o=>n[s.key]=o,class:"select select-bordered select-sm w-full"},[t("option",ft,c(j(s.cats).length?"请选择服务":"(无可用服务,请先去第三方服务配置里添加)"),1),(i(!0),a(u,null,p(j(s.cats),o=>(i(),a("option",{key:o.id,value:o.id},c(o.name)+c(_e(o)?" 🖼":""),9,xt))),128))],8,gt),[[h,n[s.key]]])]),d<k(n.type).length-1?(i(),a("span",yt,"→")):m("",!0)],64))),128))])]),t("section",ht,[e[33]||(e[33]=t("div",{class:"ed-section-title"},"语言与音色",-1)),t("div",kt,[t("div",null,[e[28]||(e[28]=t("span",{class:"ed-label"},"支持语言(多选)",-1)),X(Z,{modelValue:n.support_langs,"onUpdate:modelValue":e[7]||(e[7]=s=>n.support_langs=s),multiple:""},null,8,["modelValue"])]),t("div",null,[e[29]||(e[29]=t("span",{class:"ed-label"},"默认语言",-1)),X(Z,{modelValue:n.default_lang,"onUpdate:modelValue":e[8]||(e[8]=s=>n.default_lang=s),options:D.value},null,8,["modelValue","options"])])]),t("div",Ct,[t("div",wt,[e[30]||(e[30]=t("span",{class:"ed-label mb-0"},"音色(按语言+性别配,Agent 切语言时自动换音色)",-1)),t("div",Vt,[t("button",{class:"btn btn-ghost btn-xs",disabled:!B.value,onClick:ue},"按支持语言补全",8,Tt),t("button",{class:"btn btn-ghost btn-xs",onClick:xe},"+ 添加一行")])]),t("p",At,[G.value?B.value?(i(),a(u,{key:1},[S(" 候选来自内置音色表("+c(A.value)+");同一语言+性别有多个时默认第一个,可在下拉里换。没配到的语言走服务商默认音色。 ",1)],64)):(i(),a(u,{key:2},[S("「"+c(A.value||"该服务商")+"」不在内置音色表里,请手填服务商的音色 id。",1)],64)):(i(),a(u,{key:0},[S("先在上方选好语音服务,这里才能列出可用音色。")],64))]),n.voice_map.length?m("",!0):(i(),a("div",St,"未设置,全部走服务商默认音色")),(i(!0),a(u,null,p(n.voice_map,(s,d)=>(i(),a("div",{key:d,class:"voice-row"},[r(t("select",{"onUpdate:modelValue":o=>s.language=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[e[31]||(e[31]=t("option",{value:""},"(语言)",-1)),(i(!0),a(u,null,p(D.value,o=>(i(),a("option",{key:o.code,value:o.code},c(o.code)+" · "+c(o.name),9,Lt))),128))],40,Ut),[[h,s.language]]),r(t("select",{"onUpdate:modelValue":o=>s.gender=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[...e[32]||(e[32]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],40,Mt),[[h,s.gender,void 0,{number:!0}]]),B.value&&M(s.language,s.gender).length?r((i(),a("select",{key:0,"onUpdate:modelValue":o=>s.voice=o,class:"select select-bordered select-xs flex-1"},[(i(!0),a(u,null,p(M(s.language,s.gender),(o,_)=>(i(),a("option",{key:o.voice_id,value:o.voice_id},c(o.name)+" · "+c(o.voice_id)+c(_===0?"(默认)":""),9,Nt))),128))],8,Ot)),[[h,s.voice]]):r((i(),a("input",{key:1,"onUpdate:modelValue":o=>s.voice=o,class:"input input-bordered input-xs flex-1",placeholder:"音色 id,如 zh-CN-XiaoxiaoNeural"},null,8,$t)),[[v,s.voice]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.voice_map.splice(d,1)},"删除",8,Pt)]))),128))])]),ae.value?(i(),a("section",Bt,[e[36]||(e[36]=t("div",{class:"ed-section-title"},"对话设定",-1)),t("div",null,[e[34]||(e[34]=t("span",{class:"ed-label"},"系统提示词",-1)),r(t("textarea",{"onUpdate:modelValue":e[9]||(e[9]=s=>n.system_prompt=s),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"定义这个智能体的人设与行为"},null,512),[[v,n.system_prompt]])]),t("div",jt,[t("label",Et,[r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>n.greeting_enabled=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.greeting_enabled]]),e[35]||(e[35]=t("span",null,"开场白",-1))]),n.greeting_enabled?r((i(),a("input",{key:0,"onUpdate:modelValue":e[11]||(e[11]=s=>n.greeting_text=s),class:"input input-bordered input-sm w-full mt-2",placeholder:"接通后先说的一句话"},null,512)),[[v,n.greeting_text]]):m("",!0)])])):m("",!0),t("section",It,[e[37]||(e[37]=t("div",{class:"ed-section-title"},"MCP 服务(可选,给 Agent 挂工具)",-1)),R.value.length?(i(),a("div",Dt,[(i(!0),a(u,null,p(R.value,s=>(i(),a("label",{key:s.id,class:Q(["mcp-item",{on:n.mcp_svc_ids.includes(s.id)}])},[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:n.mcp_svc_ids.includes(s.id),onChange:d=>pe(s.id)},null,40,qt),t("span",Ft,[t("span",Gt,c(s.name),1),t("span",Yt,c(s.id),1)])],2))),128))])):(i(),a("p",zt,"还没有启用的 MCP 服务,先去「第三方服务配置 → MCP 服务」添加。"))]),t("section",Jt,[t("div",{class:"flex items-center justify-between mb-1"},[e[38]||(e[38]=t("div",{class:"ed-section-title mb-0"},"变量(提示词/开场白里用 {{key}} 占位)",-1)),t("button",{class:"btn btn-ghost btn-xs",onClick:ve},"+ 添加变量")]),n.variables.length?m("",!0):(i(),a("div",Rt,"未定义变量")),(i(!0),a(u,null,p(n.variables,(s,d)=>(i(),a("div",{key:d,class:"var-row"},[r(t("input",{"onUpdate:modelValue":o=>s.key=o,class:"input input-bordered input-xs",placeholder:"key"},null,8,Ht),[[v,s.key]]),r(t("input",{"onUpdate:modelValue":o=>s.label=o,class:"input input-bordered input-xs",placeholder:"展示名"},null,8,Xt),[[v,s.label]]),r(t("input",{"onUpdate:modelValue":o=>s.def_value=o,class:"input input-bordered input-xs flex-1",placeholder:"默认值(客户端没传时用它)"},null,8,Kt),[[v,s.def_value]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.variables.splice(d,1)},"删除",8,Qt)]))),128))]),t("div",Wt,[t("label",Zt,[r(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>n.enable=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.enable]]),e[39]||(e[39]=t("span",null,"启用",-1))]),t("div",es,[t("button",{class:"btn btn-ghost btn-sm",onClick:E},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:N.value,onClick:ye},"保存",8,ts)])])])],512),[[we,L.value]])]))}}),_s=Ae(is,[["__scopeId","data-v-dcf87e76"]]);export{_s as default};