import{d as Ie,o as Re,l as c,w as Je,a as qe,m as d,c as u,u as E,b as Ge,e as y,f as l,t as s,n as D,F as v,r as k,g as p,i as m,s as M,x as We,T as ze,B as te,C as le,h as He,y as q,j as h,k as S,D as ne,p as Ke,q as Qe}from"./index.js";import{S as Xe,u as Ye}from"./SecondaryGate.js";import{C as Ze,F as G}from"./CloseButton.js";import{_ as we}from"./_plugin-vue_export-helper.js";const xe={class:"policy-page"},eo={class:"policy-header"},oo={class:"header-actions"},to={key:0,class:"dropdown-menu"},lo=["onClick"],no={key:0,class:"text-field"},ao=["placeholder"],so=["disabled"],io={class:"panel"},co={class:"panel-title"},ro={class:"category-table"},uo={class:"category-row category-head"},po=["onUpdate:modelValue"],mo=["onUpdate:modelValue"],yo=["onClick"],go={key:0,class:"tool-badges"},fo={key:1,class:"muted"},ho={class:"tool-select-search"},_o=["placeholder"],bo={class:"tool-select-options"},vo=["checked","onChange"],ko={key:0,class:"muted tiny"},Po=["onClick"],$o={class:"toggle-row compact"},Co=["checked","onChange"],To=["onClick"],So={key:0,class:"dropdown-menu"},Uo=["onClick"],Vo=["onClick"],Eo=["onClick"],Mo=["onClick"],Ao={class:"panel grid-2"},Bo={class:"panel-title"},Fo={class:"toggle-grid"},Oo=["checked","onChange"],jo={class:"panel-title"},Do={class:"toggle-grid"},No=["checked","onChange"],Lo={class:"panel"},Io={class:"panel-title"},Ro={class:"header-actions"},Jo=["disabled"],qo=["disabled"],Go={key:0,class:"muted"},Wo={key:1,class:"mcp-list"},zo={class:"mcp-grid"},Ho=["onUpdate:modelValue","placeholder"],Ko=["onUpdate:modelValue","placeholder"],Qo=["onUpdate:modelValue"],Xo=["onUpdate:modelValue"],Yo={key:0,class:"wide"},Zo=["onUpdate:modelValue","placeholder"],wo={key:1,class:"wide"},xo=["onUpdate:modelValue","placeholder"],et={key:2,class:"wide"},ot=["onUpdate:modelValue","placeholder"],tt={key:3,class:"wide"},lt=["onUpdate:modelValue","placeholder"],nt={class:"wide"},at=["onUpdate:modelValue","placeholder"],st={class:"wide"},it=["onUpdate:modelValue","placeholder"],ct=["onUpdate:modelValue"],dt={class:"wide"},rt=["onUpdate:modelValue","placeholder"],ut={class:"wide"},pt=["onUpdate:modelValue","placeholder"],mt={class:"wide"},yt=["onUpdate:modelValue","placeholder"],gt={class:"mcp-meta"},ft={key:0,class:"error-text"},ht={class:"mcp-actions"},_t=["onClick"],bt=["onClick"],vt=["onClick"],kt={class:"panel"},Pt={class:"panel-title"},$t={class:"chips"},Ct={key:0,class:"muted"},Tt=["onClick"],St={class:"panel muted-info"},Ut=Ie({__name:"PolicyApp",setup(Et){const _=q({categories:{},models:[],ui_block_keys:[]}),{verified:g,configured:se,loading:ie,error:ce,check:W,verify:de}=Ye(),i=q({target_type:"global",target_value:"",config:{category_overrides:{},remove_categories:[],forced_category_states:{},disabled_models:[],ui_blocks:{}}}),N=h(null),A=h(!1),B=h(null),U=h([]),F=h(!1),O=h(!1),re=S(()=>(ne.value,i.target_type==="role"?c("adminPolicy.placeholderRole"):i.target_type==="invite"?c("adminPolicy.placeholderInvite"):i.target_type==="user"?c("adminPolicy.placeholderUsername"):"")),z=()=>[{value:"global",label:c("adminPolicy.scopeGlobal")},{value:"role",label:c("adminPolicy.scopeRole")},{value:"user",label:c("adminPolicy.scopeUser")},{value:"invite",label:c("adminPolicy.scopeInvite")}],ue=S(()=>{var e;return ne.value,((e=z().find(t=>t.value===i.target_type))==null?void 0:e.label)||c("adminPolicy.scopeGlobal")}),V=h(!1),P=h(null),$=h(null),b=h(""),r=q({message:"",type:"info"}),H=S(()=>{const e=new Set,t=o=>{Array.isArray(o)&&o.forEach(n=>{typeof n=="string"&&n.trim()&&e.add(n.trim())})};return Object.values(_.categories||{}).forEach(o=>t(o==null?void 0:o.tools)),j.value.forEach(o=>t(o.tools)),e}),pe=S(()=>Array.from(H.value).sort()),L=S(()=>{const e={};return j.value.forEach(t=>{(t.tools||[]).forEach(o=>{e[o]||(e[o]=[]),e[o].push(t.id)})}),e}),me=e=>pe.value.filter(t=>{const o=L.value[t]||[];return o.length?o.length===1&&o[0]===e.id:!0}),K=e=>{const t=b.value.trim().toLowerCase(),o=me(e);return t?o.filter(n=>n.toLowerCase().includes(t)):o},ye=()=>{V.value=!V.value},ge=e=>{i.target_type=e,e==="global"&&(i.target_value=""),V.value=!1,P.value=null,$.value=null,J()},fe=e=>{P.value=P.value===e?null:e},he=e=>e===!0?c("adminPolicy.forcedEnable"):e===!1?c("adminPolicy.forcedDisable"):c("adminPolicy.forcedNone"),I=(e,t)=>{const o={...i.config.forced_category_states};t===null?delete o[e]:o[e]=t,i.config.forced_category_states=o,P.value=null},_e=e=>{$.value=$.value===e?null:e,b.value=""},Q=(e,t)=>{const n=(L.value[t]||[]).find(f=>f!==e.id);if(n){r.message=c("adminPolicy.toolConflict",{tool:t,category:n}),r.type="error";return}const a=new Set(e.tools||[]);a.has(t)?a.delete(t):a.add(t),e.tools=Array.from(a)},be=e=>{const t=b.value.trim();if(!t)return;const n=(L.value[t]||[]).find(a=>a!==e.id);if(n){r.message=c("adminPolicy.toolConflict",{tool:t,category:n}),r.type="error";return}Q(e,t),b.value=""},X=e=>{const t=e.target;t&&(t.closest(".tool-select")||($.value=null))},j=S(()=>{const e=i.config.category_overrides||{};return Object.keys(e).map(t=>{var o,n,a;return{id:t,label:((o=e[t])==null?void 0:o.label)||t,tools:Array.isArray((n=e[t])==null?void 0:n.tools)?[...e[t].tools]:[],default_enabled:((a=e[t])==null?void 0:a.default_enabled)!==!1,forced:i.config.forced_category_states[t]??null}})}),Y=e=>{var n;const t=i.config.category_overrides||{};if(t[e]&&typeof t[e].default_enabled<"u")return!!t[e].default_enabled;const o=(n=_.categories)==null?void 0:n[e];return o?!!o.default_enabled:!0},ve=(e,t)=>{var a;const o=i.config.category_overrides||{},n=o[e]||((a=_.categories)==null?void 0:a[e])||{label:e,tools:[]};i.config.category_overrides={...o,[e]:{...n,default_enabled:t}}};function ke(e){const t={collapse_workspace:"uiBlockCollapseWorkspace",block_file_manager:"uiBlockFileManager",block_personal_space:"uiBlockPersonalSpace",block_upload:"uiBlockUpload",block_conversation_review:"uiBlockConversationReview",block_tool_toggle:"uiBlockToolToggle",block_realtime_terminal:"uiBlockRealtimeTerminal",block_focus_panel:"uiBlockFocusPanel",block_token_panel:"uiBlockTokenPanel",block_compress_conversation:"uiBlockCompressConversation",block_virtual_monitor:"uiBlockVirtualMonitor"};return t[e]?c(`adminPolicy.${t[e]}`):e}function Pe(e,t){var o;(o=t==null?void 0:t.stopPropagation)==null||o.call(t),i.config.ui_blocks={...i.config.ui_blocks,[e]:!i.config.ui_blocks[e]}}function Z(e){return(i.config.disabled_models||[]).includes(e)}function $e(e){const t=new Set(i.config.disabled_models||[]);t.has(e)?t.delete(e):t.add(e),i.config.disabled_models=Array.from(t)}function Ce(){const e=`custom_${Date.now().toString(36)}`;i.config.category_overrides[e]={label:e,tools:[],default_enabled:!0}}function Te(e){delete i.config.category_overrides[e],i.config.forced_category_states[e]&&delete i.config.forced_category_states[e],i.config.remove_categories.includes(e)||i.config.remove_categories.push(e)}function Se(e){i.config.remove_categories=i.config.remove_categories.filter(t=>t!==e)}function Ue(){const e={};j.value.forEach(t=>{t.id&&(e[t.id]={label:t.label||t.id,tools:(t.tools||[]).map(o=>typeof o=="string"?o.trim():"").filter(Boolean),default_enabled:!!t.default_enabled},t.forced===!0||t.forced===!1?i.config.forced_category_states[t.id]=t.forced:delete i.config.forced_category_states[t.id])}),i.config.category_overrides=e}function w(e){return(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function Ve(e){return(e||"").split(` `).map(t=>t.trim()).filter(Boolean)}function x(e,t){const o=(t||"").trim();if(!o)return{};let n;try{n=JSON.parse(o)}catch(f){throw new Error(c("adminPolicy.jsonInvalid",{label:e,message:(f==null?void 0:f.message)||f}))}if(!n||typeof n!="object"||Array.isArray(n))throw new Error(c("adminPolicy.jsonMustBeObject",{label:e}));const a={};return Object.entries(n).forEach(([f,Le])=>{const oe=String(f||"").trim();oe&&(a[oe]=String(Le??""))}),a}function ee(e){const t=(e==null?void 0:e.transport)==="streamable_http"?"streamable_http":"stdio",o=Array.isArray(e==null?void 0:e.args)?e.args.filter(a=>typeof a=="string"):[],n=Array.isArray(e==null?void 0:e.tools_cache)?e.tools_cache:[];return{id:String((e==null?void 0:e.id)||""),name:String((e==null?void 0:e.name)||(e==null?void 0:e.id)||""),description:String((e==null?void 0:e.description)||""),transport:t,enabledText:(e==null?void 0:e.enabled)===!1?"false":"true",command:String((e==null?void 0:e.command)||""),argsText:o.join(` `),cwd:String((e==null?void 0:e.cwd)||""),url:String((e==null?void 0:e.url)||""),headersText:e!=null&&e.headers&&typeof e.headers=="object"?JSON.stringify(e.headers,null,2):"",envText:e!=null&&e.env&&typeof e.env=="object"?JSON.stringify(e.env,null,2):"",timeoutText:String((e==null?void 0:e.timeout_seconds)??25),includeToolsText:Array.isArray(e==null?void 0:e.include_tools)?e.include_tools.join(","):"",excludeToolsText:Array.isArray(e==null?void 0:e.exclude_tools)?e.exclude_tools.join(","):"",tools_cache_updated_at:String((e==null?void 0:e.tools_cache_updated_at)||""),last_error:String((e==null?void 0:e.last_error)||""),tools_cache_count:n.length}}function Ee(e){const t=e.id.trim();if(!t)throw new Error(c("adminPolicy.mcpIdRequired"));return{id:t,name:e.name.trim()||t,description:e.description.trim(),transport:e.transport,enabled:e.enabledText==="true",command:e.command.trim(),args:Ve(e.argsText),cwd:e.cwd.trim(),url:e.url.trim(),headers:x("headers",e.headersText),env:x("env",e.envText),timeout_seconds:Number(e.timeoutText||25),include_tools:w(e.includeToolsText),exclude_tools:w(e.excludeToolsText)}}async function C(){if(g.value){F.value=!0;try{const e=await fetch("/api/admin/mcp-servers",{credentials:"same-origin"}),t=await e.json();if(!e.ok||!t.success)throw new Error(t.error||c("adminPolicy.loadMcpFailed"));U.value=(t.data||[]).map(o=>ee(o))}catch(e){r.message=(e==null?void 0:e.message)||c("adminPolicy.loadMcpFailed"),r.type="error"}finally{F.value=!1}}}function Me(){U.value.unshift(ee({id:"",name:"",transport:"stdio",enabled:!0,timeout_seconds:25}))}async function Ae(e){if(g.value)try{const t=Ee(e),o=await fetch("/api/admin/mcp-servers",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await o.json();if(!o.ok||!n.success)throw new Error(n.error||c("adminPolicy.saveMcpFailed"));r.message=c("adminPolicy.mcpSaved",{id:t.id}),r.type="success",await R(t.id,!0)}catch(t){r.message=(t==null?void 0:t.message)||c("adminPolicy.saveMcpFailed"),r.type="error"}}async function Be(e,t){if(!g.value)return;const o=String(e||"").trim();if(!o){U.value.splice(t,1);return}try{const n=await fetch(`/api/admin/mcp-servers?id=${encodeURIComponent(o)}`,{method:"DELETE",credentials:"same-origin"}),a=await n.json();if(!n.ok||!a.success)throw new Error(a.error||c("adminPolicy.deleteMcpFailed"));r.message=c("adminPolicy.mcpDeleted",{id:o}),r.type="success",await C(),await T()}catch(n){r.message=(n==null?void 0:n.message)||c("adminPolicy.deleteMcpFailed"),r.type="error"}}async function R(e,t=!1){if(!g.value)return;const o=String(e||"").trim();if(typeof e<"u"&&!o){r.message=c("adminPolicy.syncRequiresSave"),r.type="error";return}t||(O.value=!0);try{const n=await fetch("/api/admin/mcp-servers/sync",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(o?{id:o}:{})}),a=await n.json();if(!n.ok||!a.success)throw new Error(a.error||c("adminPolicy.syncMcpFailed"));t||(r.message=o?c("adminPolicy.mcpSyncedWith",{id:o}):c("adminPolicy.mcpSyncedAll"),r.type="success"),await C(),await T()}catch(n){r.message=(n==null?void 0:n.message)||c("adminPolicy.syncMcpFailed"),r.type="error"}finally{t||(O.value=!1)}}async function Fe(){await R()}async function T(){var o,n,a,f;if(!g.value)return;const e=await fetch("/api/admin/policy",{credentials:"same-origin"}),t=await e.json();if(!e.ok||!t.success)throw new Error(t.error||c("adminPolicy.loadDefaultsFailed"));_.categories=((o=t.defaults)==null?void 0:o.categories)||{},_.models=((n=t.defaults)==null?void 0:n.models)||[],_.ui_block_keys=((a=t.defaults)==null?void 0:a.ui_block_keys)||[],B.value=t.data,N.value=((f=t.data)==null?void 0:f.updated_at)||null,J()}function Oe(){const e=B.value;return e?i.target_type==="global"?e.global||{}:i.target_type==="role"?(e.roles||{})[i.target_value]||{}:i.target_type==="user"?(e.users||{})[i.target_value]||{}:i.target_type==="invite"?(e.invites||{})[i.target_value]||{}:null:null}function J(){const e=Oe()||{},t=JSON.parse(JSON.stringify(_.categories||{})),o=e.category_overrides||{},n=new Set(e.remove_categories||[]);Object.keys(o).forEach(a=>{t[a]=o[a]}),n.forEach(a=>{delete t[a]}),i.config.category_overrides=t,i.config.remove_categories=[...n],i.config.forced_category_states={...e.forced_category_states||{}},i.config.disabled_models=[...e.disabled_models||[]],i.config.ui_blocks={...e.ui_blocks||{}},P.value=null,$.value=null}async function je(){if(g.value){if(!B.value){await T();return}J()}}async function De(){var e;if(g.value){Ue(),A.value=!0;try{const t=await fetch("/api/admin/policy",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({target_type:i.target_type,target_value:i.target_type==="global"?"global":i.target_value,config:i.config})}),o=await t.json();if(!t.ok||!o.success)throw new Error(o.error||c("adminPolicy.saveFailed"));B.value=o.data,N.value=((e=o.data)==null?void 0:e.updated_at)||null,r.message=c("adminPolicy.savedSuccess"),r.type="success"}catch(t){r.message=(t==null?void 0:t.message)||c("adminPolicy.saveFailed"),r.type="error"}finally{A.value=!1}}}const Ne=async e=>{await de(e),g.value&&Promise.all([T(),C()]).catch(t=>{console.error(t),r.message=(t==null?void 0:t.message)||c("adminPolicy.loadPolicyFailed"),r.type="error"})};return Re(async()=>{document.addEventListener("click",X),await W(),g.value&&Promise.all([T(),C()]).catch(e=>{console.error(e),r.message=(e==null?void 0:e.message)||c("adminPolicy.loadPolicyFailed"),r.type="error"})}),Je(g,e=>{e&&Promise.all([T(),C()]).catch(t=>{console.error(t),r.message=(t==null?void 0:t.message)||c("adminPolicy.loadPolicyFailed"),r.type="error"})}),qe(()=>{document.removeEventListener("click",X)}),(e,t)=>(d(),u("div",xe,[E(g)?y("",!0):(d(),Ge(Xe,{key:0,configured:E(se),loading:E(ie),error:E(ce),description:e.$t("adminPolicy.gateDescription"),onVerify:Ne,onRecheck:E(W)},null,8,["configured","loading","error","description","onRecheck"])),l("header",eo,[l("div",null,[l("h1",null,s(e.$t("adminPolicy.title")),1),l("p",null,s(e.$t("adminPolicy.subtitle",{time:N.value||"—"})),1)]),l("div",oo,[l("div",{class:D(["dropdown",{open:V.value}])},[l("button",{type:"button",class:"ghost-btn",onClick:ye},[l("span",null,s(ue.value),1),t[4]||(t[4]=l("span",{class:"caret"},"▾",-1))]),V.value?(d(),u("div",to,[(d(!0),u(v,null,k(z(),o=>(d(),u("button",{key:o.value,type:"button",onClick:n=>ge(o.value)},s(o.label),9,lo))),128))])):y("",!0)],2),i.target_type!=="global"?(d(),u("div",no,[p(l("input",{"onUpdate:modelValue":t[0]||(t[0]=o=>i.target_value=o),placeholder:re.value,class:"target-input",type:"text"},null,8,ao),[[m,i.target_value]])])):y("",!0),l("button",{type:"button",class:"ghost-btn",onClick:je},s(e.$t("adminPolicy.load")),1),l("button",{type:"button",class:"primary",disabled:A.value,onClick:De},s(A.value?e.$t("common.saving"):e.$t("common.save")),9,so)])]),M(ze,{name:"fade"},{default:We(()=>[r.message?(d(),u("div",{key:0,class:D(["banner",r.type])},[l("span",null,s(r.message),1),M(Ze,{label:e.$t("common.close"),onClick:t[1]||(t[1]=o=>r.message="")},null,8,["label"])],2)):y("",!0)]),_:1}),l("section",io,[l("div",co,[l("h2",null,s(e.$t("adminPolicy.categorySection")),1),l("button",{type:"button",onClick:Ce},s(e.$t("adminPolicy.addCategory")),1)]),l("div",ro,[l("div",uo,[l("span",null,s(e.$t("adminPolicy.catId")),1),l("span",null,s(e.$t("adminPolicy.catName")),1),l("span",null,s(e.$t("adminPolicy.catTools")),1),l("span",null,s(e.$t("adminPolicy.catDefaultEnabled")),1),l("span",null,s(e.$t("adminPolicy.catForced")),1),l("span",null,s(e.$t("adminPolicy.tableActions")),1)]),(d(!0),u(v,null,k(j.value,o=>(d(),u("div",{class:"category-row",key:o.id},[p(l("input",{"onUpdate:modelValue":n=>o.id=n,class:"id-input"},null,8,po),[[m,o.id]]),p(l("input",{"onUpdate:modelValue":n=>o.label=n},null,8,mo),[[m,o.label]]),l("div",{class:D(["tool-select",{open:$.value===o.id}])},[l("button",{type:"button",class:"tool-select-trigger",onClick:te(n=>_e(o.id),["stop"])},[o.tools.length?(d(),u("span",go,[(d(!0),u(v,null,k(o.tools,n=>(d(),u("span",{class:"tool-badge",key:n},s(n),1))),128))])):(d(),u("span",fo,s(e.$t("adminPolicy.selectTools")),1)),t[5]||(t[5]=l("span",{class:"caret"},"▾",-1))],8,yo),$.value===o.id?(d(),u("div",{key:0,class:"tool-select-menu",onClick:t[3]||(t[3]=te(()=>{},["stop"]))},[l("div",ho,[p(l("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>b.value=n),type:"text",placeholder:e.$t("adminPolicy.toolSearchPlaceholder")},null,8,_o),[[m,b.value]])]),l("div",bo,[(d(!0),u(v,null,k(K(o),n=>(d(),u("label",{key:n},[l("input",{type:"checkbox",checked:o.tools.includes(n),onChange:a=>Q(o,n)},null,40,vo),l("span",null,s(n),1)]))),128)),K.length?y("",!0):(d(),u("p",ko,s(e.$t("adminPolicy.noMatchingTool")),1))]),b.value.trim()&&!H.value.has(b.value.trim())?(d(),u("button",{key:0,type:"button",class:"link small",onClick:n=>be(o)},s(e.$t("adminPolicy.addCustomToolWith",{id:b.value.trim()})),9,Po)):y("",!0)])):y("",!0)],2),l("label",$o,[l("input",{type:"checkbox",checked:Y(o.id),onChange:n=>ve(o.id,n.target.checked)},null,40,Co),M(G,{checked:Y(o.id),"accent-checked":""},null,8,["checked"]),l("span",null,s(o.default_enabled?e.$t("adminPolicy.enabledOn"):e.$t("adminPolicy.enabledOff")),1)]),l("div",{class:D(["dropdown",{open:P.value===o.id}])},[l("button",{type:"button",class:"ghost-btn",onClick:n=>fe(o.id)},[l("span",null,s(he(o.forced)),1),t[6]||(t[6]=l("span",{class:"caret"},"▾",-1))],8,To),P.value===o.id?(d(),u("div",So,[l("button",{type:"button",onClick:n=>I(o.id,null)},s(e.$t("adminPolicy.forcedNone")),9,Uo),l("button",{type:"button",onClick:n=>I(o.id,!0)},s(e.$t("adminPolicy.forcedEnable")),9,Vo),l("button",{type:"button",onClick:n=>I(o.id,!1)},s(e.$t("adminPolicy.forcedDisable")),9,Eo)])):y("",!0)],2),l("button",{type:"button",class:"link danger",onClick:n=>Te(o.id)},s(e.$t("common.delete")),9,Mo)]))),128))])]),l("section",Ao,[l("div",null,[l("div",Bo,[l("h2",null,s(e.$t("adminPolicy.modelDisable")),1)]),l("div",Fo,[(d(!0),u(v,null,k(_.models,o=>(d(),u("label",{key:o,class:"toggle-row"},[l("input",{type:"checkbox",checked:Z(o),onChange:n=>$e(o)},null,40,Oo),M(G,{checked:Z(o),"accent-checked":""},null,8,["checked"]),l("span",null,s(o),1)]))),128))])]),l("div",null,[l("div",jo,[l("h2",null,s(e.$t("adminPolicy.uiBlockSection")),1)]),l("div",Do,[(d(!0),u(v,null,k(_.ui_block_keys,o=>(d(),u("label",{key:o,class:"toggle-row"},[l("input",{type:"checkbox",checked:!!i.config.ui_blocks[o],onChange:n=>Pe(o,n)},null,40,No),M(G,{checked:!!i.config.ui_blocks[o],"accent-checked":""},null,8,["checked"]),l("span",null,s(ke(o)),1)]))),128))])])]),l("section",Lo,[l("div",Io,[l("h2",null,s(e.$t("adminPolicy.mcpSection")),1),l("div",Ro,[l("button",{type:"button",class:"ghost-btn",disabled:F.value,onClick:C},s(F.value?e.$t("common.refreshing"):e.$t("adminPolicy.refresh")),9,Jo),l("button",{type:"button",class:"ghost-btn",disabled:O.value,onClick:Fe},s(O.value?e.$t("adminPolicy.syncing"):e.$t("adminPolicy.syncAll")),9,qo),l("button",{type:"button",onClick:Me},s(e.$t("adminPolicy.addMcpServer")),1)])]),U.value.length?(d(),u("div",Wo,[(d(!0),u(v,null,k(U.value,(o,n)=>(d(),u("div",{class:"mcp-item",key:o.id||`new-${n}`},[l("div",zo,[l("label",null,[l("span",null,s(e.$t("adminPolicy.mcpId")),1),p(l("input",{"onUpdate:modelValue":a=>o.id=a,placeholder:e.$t("adminPolicy.mcpIdPlaceholder")},null,8,Ho),[[m,o.id]])]),l("label",null,[l("span",null,s(e.$t("adminPolicy.mcpName")),1),p(l("input",{"onUpdate:modelValue":a=>o.name=a,placeholder:e.$t("adminPolicy.mcpNamePlaceholder")},null,8,Ko),[[m,o.name]])]),l("label",null,[t[8]||(t[8]=l("span",null,"Transport",-1)),p(l("select",{"onUpdate:modelValue":a=>o.transport=a},[...t[7]||(t[7]=[l("option",{value:"stdio"},"stdio",-1),l("option",{value:"streamable_http"},"streamable_http",-1)])],8,Qo),[[le,o.transport]])]),l("label",null,[l("span",null,s(e.$t("adminPolicy.mcpEnabled")),1),p(l("select",{"onUpdate:modelValue":a=>o.enabledText=a},[...t[9]||(t[9]=[l("option",{value:"true"},"true",-1),l("option",{value:"false"},"false",-1)])],8,Xo),[[le,o.enabledText]])]),o.transport==="stdio"?(d(),u("label",Yo,[t[10]||(t[10]=l("span",null,"command",-1)),p(l("input",{"onUpdate:modelValue":a=>o.command=a,placeholder:e.$t("adminPolicy.mcpCommandPlaceholder")},null,8,Zo),[[m,o.command]])])):y("",!0),o.transport==="stdio"?(d(),u("label",wo,[l("span",null,s(e.$t("adminPolicy.mcpArgs")),1),p(l("textarea",{"onUpdate:modelValue":a=>o.argsText=a,rows:"3",placeholder:e.$t("adminPolicy.mcpArgsPlaceholder")},null,8,xo),[[m,o.argsText]])])):y("",!0),o.transport==="stdio"?(d(),u("label",et,[l("span",null,s(e.$t("adminPolicy.mcpCwd")),1),p(l("input",{"onUpdate:modelValue":a=>o.cwd=a,placeholder:e.$t("adminPolicy.mcpCwdPlaceholder")},null,8,ot),[[m,o.cwd]])])):y("",!0),o.transport==="streamable_http"?(d(),u("label",tt,[t[11]||(t[11]=l("span",null,"url",-1)),p(l("input",{"onUpdate:modelValue":a=>o.url=a,placeholder:e.$t("adminPolicy.mcpUrlPlaceholder")},null,8,lt),[[m,o.url]])])):y("",!0),l("label",nt,[l("span",null,s(e.$t("adminPolicy.mcpHeaders")),1),p(l("textarea",{"onUpdate:modelValue":a=>o.headersText=a,rows:"2",placeholder:e.$t("adminPolicy.mcpHeadersPlaceholder")},null,8,at),[[m,o.headersText]])]),l("label",st,[l("span",null,s(e.$t("adminPolicy.mcpEnv")),1),p(l("textarea",{"onUpdate:modelValue":a=>o.envText=a,rows:"2",placeholder:e.$t("adminPolicy.mcpEnvPlaceholder")},null,8,it),[[m,o.envText]])]),l("label",null,[t[12]||(t[12]=l("span",null,"timeout(s)",-1)),p(l("input",{"onUpdate:modelValue":a=>o.timeoutText=a,placeholder:"25"},null,8,ct),[[m,o.timeoutText]])]),l("label",dt,[l("span",null,s(e.$t("adminPolicy.mcpIncludeTools")),1),p(l("input",{"onUpdate:modelValue":a=>o.includeToolsText=a,placeholder:e.$t("adminPolicy.mcpIncludeToolsPlaceholder")},null,8,rt),[[m,o.includeToolsText]])]),l("label",ut,[l("span",null,s(e.$t("adminPolicy.mcpExcludeTools")),1),p(l("input",{"onUpdate:modelValue":a=>o.excludeToolsText=a,placeholder:e.$t("adminPolicy.mcpExcludeToolsPlaceholder")},null,8,pt),[[m,o.excludeToolsText]])]),l("label",mt,[l("span",null,s(e.$t("adminPolicy.mcpDescription")),1),p(l("input",{"onUpdate:modelValue":a=>o.description=a,placeholder:e.$t("adminPolicy.mcpDescriptionPlaceholder")},null,8,yt),[[m,o.description]])])]),l("div",gt,[l("span",null,s(e.$t("adminPolicy.mcpLastSync",{time:o.tools_cache_updated_at||e.$t("adminPolicy.mcpNotSynced")})),1),o.last_error?(d(),u("span",ft,s(e.$t("adminPolicy.mcpError",{message:o.last_error})),1)):y("",!0),l("span",null,s(e.$t("adminPolicy.mcpCacheCount",{count:o.tools_cache_count})),1)]),l("div",ht,[l("button",{type:"button",class:"primary",onClick:a=>Ae(o)},s(e.$t("common.save")),9,_t),l("button",{type:"button",class:"ghost-btn",onClick:a=>R(o.id)},s(e.$t("adminPolicy.syncTools")),9,bt),l("button",{type:"button",class:"link danger",onClick:a=>Be(o.id,n)},s(e.$t("common.delete")),9,vt)])]))),128))])):(d(),u("div",Go,s(e.$t("adminPolicy.emptyMcpServers")),1))]),l("section",kt,[l("div",Pt,[l("h2",null,s(e.$t("adminPolicy.removedCategories")),1)]),l("div",$t,[i.config.remove_categories.length?y("",!0):(d(),u("span",Ct,s(e.$t("adminPolicy.none")),1)),(d(!0),u(v,null,k(i.config.remove_categories,o=>(d(),u("span",{key:o,class:"chip"},[He(s(o)+" ",1),l("button",{type:"button",onClick:n=>Se(o)},"×",8,Tt)]))),128))])]),l("section",St,[l("p",null,s(e.$t("adminPolicy.notesLabel")),1),l("ul",null,[l("li",null,s(e.$t("adminPolicy.notePriority")),1),l("li",null,s(e.$t("adminPolicy.noteForced")),1),l("li",null,s(e.$t("adminPolicy.noteUiBlocks")),1)])])]))}}),Vt=we(Ut,[["__scopeId","data-v-7d45e962"]]),ae=Ke(Vt);Qe(ae);ae.mount("#admin-policy-app");