@quanthermes/hermes-web-ui 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/bin/hermes-web-ui.mjs +7 -0
  2. package/dist/client/assets/js/{ChannelsView-BAbGxkKW.js → ChannelsView-BduiL1-M.js} +1 -1
  3. package/dist/client/assets/js/{ChatView-hdWG7dhS.js → ChatView-C-84i0a3.js} +1 -1
  4. package/dist/client/assets/js/{CodingAgentsView-BB79rLb_.js → CodingAgentsView-Cu5bfdCo.js} +1 -1
  5. package/dist/client/assets/js/{DevicesView-DEdHwkrV.js → DevicesView-BwVqTyuH.js} +1 -1
  6. package/dist/client/assets/js/{FileRenameModal-CdKXqr0a.js → FileRenameModal-DMqVjoLN.js} +1 -1
  7. package/dist/client/assets/js/{FilesView-C49jsfxy.js → FilesView-Ce30F1_8.js} +1 -1
  8. package/dist/client/assets/js/{GroupChatView-DwL-zIjT.js → GroupChatView-BQqM5noE.js} +1 -1
  9. package/dist/client/assets/js/{HistoryMessageList-B1ORl6-d.js → HistoryMessageList-B3TsU-9g.js} +1 -1
  10. package/dist/client/assets/js/{HistoryView-CdlRAUh5.js → HistoryView-qhTXEU5G.js} +1 -1
  11. package/dist/client/assets/js/{JobsView-BPZ4Wv0y.js → JobsView-BszCmau_.js} +1 -1
  12. package/dist/client/assets/js/{KanbanView-UHzayv3c.js → KanbanView-BMa_FMqS.js} +1 -1
  13. package/dist/client/assets/js/{LoginView-BYrZGFRC.js → LoginView-v4Lvgu2R.js} +1 -1
  14. package/dist/client/assets/js/{LogsView-CyfCeIeY.js → LogsView-CuwioOCX.js} +1 -1
  15. package/dist/client/assets/js/{MarkdownRenderer-D-IgakCO.js → MarkdownRenderer-2bwbBjlK.js} +1 -1
  16. package/dist/client/assets/js/{McpManagerView-DMbmKtiH.js → McpManagerView-BDJSjkHx.js} +1 -1
  17. package/dist/client/assets/js/{MemoryView-iYE-K13x.js → MemoryView-rYoZbfMb.js} +1 -1
  18. package/dist/client/assets/js/{MessageItem-Be7fqF3P.js → MessageItem-OSBjfS2l.js} +1 -1
  19. package/dist/client/assets/js/{ModelsView-XRIIk2f7.js → ModelsView-DGPA2heM.js} +1 -1
  20. package/dist/client/assets/js/{OutlinePanel-BSPx9YaI.js → OutlinePanel-CN0TVZ0B.js} +1 -1
  21. package/dist/client/assets/js/{PerformanceView-m3deuRba.js → PerformanceView-0GmZ2GXR.js} +1 -1
  22. package/dist/client/assets/js/{PluginsView-BBrFPfSn.js → PluginsView-D6XEulKx.js} +1 -1
  23. package/dist/client/assets/js/{ProfilesView-G_eYB34O.js → ProfilesView-CCPI-DaB.js} +1 -1
  24. package/dist/client/assets/js/{SettingRow-wqcLQ0FL.js → SettingRow-B0WJ-Iqa.js} +1 -1
  25. package/dist/client/assets/js/{SettingsView-DMOWr41T.js → SettingsView-BaZ_P8Wu.js} +1 -1
  26. package/dist/client/assets/js/{SkillsUsageView-fn3jivrH.js → SkillsUsageView-BJVHpo4D.js} +1 -1
  27. package/dist/client/assets/js/{SkillsView-CXDdZj7R.js → SkillsView-vhxQVIz8.js} +1 -1
  28. package/dist/client/assets/js/{TerminalPanel-CqIASgSb.js → TerminalPanel-C50X3--t.js} +1 -1
  29. package/dist/client/assets/js/{TerminalView-ycEOrgth.js → TerminalView-1qIvfZKj.js} +1 -1
  30. package/dist/client/assets/js/{UsageView-BhNclgOH.js → UsageView-CLUP9AqF.js} +1 -1
  31. package/dist/client/assets/js/{VersionPreviewView-DoG0hdD2.js → VersionPreviewView-C9I3ZH13.js} +1 -1
  32. package/dist/client/assets/js/{VirtualMessageList-B_teFrlt.js → VirtualMessageList-D6BvQLbe.js} +1 -1
  33. package/dist/client/assets/js/{_plugin-vue_export-helper-D4mtpdbl.js → _plugin-vue_export-helper-CtZk2OSc.js} +2 -2
  34. package/dist/client/assets/js/{index-BHU-82RO.js → index-DyLZQAQu.js} +1 -1
  35. package/dist/client/assets/js/{models-BX7pr_Gd.js → models-CjHxxDse.js} +1 -1
  36. package/dist/client/assets/js/{session-browser-prefs-OR-qaA1z.js → session-browser-prefs-kGpZZDQo.js} +1 -1
  37. package/dist/client/assets/js/{skills-fBzB8FGc.js → skills-CDjYTDMo.js} +1 -1
  38. package/dist/client/assets/js/{system-vQTkarwT.js → system-Pg8JEuA6.js} +1 -1
  39. package/dist/client/index.html +3 -3
  40. package/dist/server/index.js +3 -3
  41. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as m,$t as s,An as S,Bn as ve,Bt as le,Cn as ge,En as ye,Jn as h,Jt as I,Qt as k,S as ke,Xn as ae,Yt as A,an as L,bn as be,bt as Me,en as D,it as xe,nn as d,on as E,sn as re,t as $e,tn as v,xn as r}from"./ui-vendor-DNWaqYj5.js";import{c as ue,l as ce}from"./vue-vendor-VX6KvV1_.js";import{n as de,t as me}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{J as Se,Q as Ce,X as we,Y as Te,Z as Pe,q as Be}from"./index-BHU-82RO.js";function Fe(e){return e?he[e]||e:""}function _e(e){if(!e)return"";const p=new Date(e),c=new Date;return p.toDateString()===c.toDateString()?p.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):p.toLocaleDateString([],{month:"short",day:"numeric"})}function Ge(e){return _e(e*1e3)}var he,Ie=g((()=>{he={telegram:"Telegram",api_server:"API Server",cli:"CLI",discord:"Discord",slack:"Slack",matrix:"Matrix",whatsapp:"WhatsApp",signal:"Signal",email:"Email",sms:"SMS",dingtalk:"DingTalk",feishu:"Feishu",wecom:"WeCom",weixin:"WeChat",bluebubbles:"iMessage",mattermost:"Mattermost",cron:"Cron"}})),N,O,Q,Y,q,K,U,V,W,X,z,pe,J=g((()=>{le(),$e(),ue(),Pe(),Te(),Se(),Ie(),N={key:0,class:"session-item-checkbox"},O={class:"session-item-content"},Q={class:"session-item-title-row"},Y={key:0,class:"session-item-pin","aria-hidden":"true"},q={class:"session-item-title"},K={key:0,class:"session-item-streaming",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},U={class:"session-item-meta"},V=["title"],W={class:"session-item-time"},X={key:0,class:"session-item-profile"},z={class:"session-item-profile-name"},pe=re({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean},showProfile:{type:Boolean,default:!0},to:{}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:p}){const c=e,f=p,{t:y}=ce(),b=Ce(),P=we(),M=k(()=>c.session.model?b.displayModelName(c.session.model,c.session.provider):""),_=k(()=>c.session.profile||"default"),u=k(()=>P.profiles.find(o=>o.name===_.value)?.avatar),t=k(()=>!!b.profileModelGroups.find(o=>o.profile===_.value)?.groups?.some(o=>o.models.length>0)),n=k(()=>b.profileModelGroups.length>0&&!t.value);let i=null;const a=ve(!1);function x(o){a.value=!1,i=setTimeout(()=>{a.value=!0;const l=o.touches[0];f("contextmenu",new MouseEvent("contextmenu",{clientX:l.clientX,clientY:l.clientY,bubbles:!0}))},500)}function $(){i&&(clearTimeout(i),i=null)}function C(){i&&(clearTimeout(i),i=null)}function w(o){return!!o&&(o.metaKey||o.ctrlKey||o.shiftKey||o.altKey||o.button!==0)}function T(o){if(a.value){a.value=!1,o?.preventDefault();return}w(o)||(c.to&&!c.selectable&&o?.preventDefault(),f("select"))}return be(()=>{i&&clearTimeout(i)}),(o,l)=>(r(),D(ye(e.selectable||!e.to?"button":"a"),{class:ae(["session-item",{active:e.active,"batch-mode":e.selectable,"missing-models":n.value}]),"aria-current":e.active?"page":void 0,href:e.selectable?void 0:e.to,type:e.selectable||!e.to?"button":void 0,onClick:T,onContextmenu:l[4]||(l[4]=B=>f("contextmenu",B)),onTouchstart:x,onTouchend:$,onTouchmove:C},{default:S(()=>[e.selectable?(r(),d("div",N,[E(h(Me),{checked:e.selected,onClick:l[0]||(l[0]=I(B=>f("toggle-select"),["stop"]))},null,8,["checked"])])):v("",!0),s("div",O,[s("span",Q,[e.pinned?(r(),d("span",Y,[...l[5]||(l[5]=[s("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M12 17v5"}),s("path",{d:"M5 8l14 0"}),s("path",{d:"M8 3l8 0 0 5 3 5-14 0 3-5z"})],-1)])])):v("",!0),s("span",q,[e.streaming?(r(),d("svg",K,[...l[6]||(l[6]=[s("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"},null,-1)])])):v("",!0),L(" "+m(e.session.title),1)]),n.value?(r(),D(h(xe),{key:1,trigger:"click",placement:"top"},{trigger:S(()=>[s("button",{class:"session-item-warning",type:"button",onClick:l[1]||(l[1]=I(()=>{},["stop","prevent"]))}," ! ")]),default:S(()=>[L(" "+m(h(y)("chat.profileMissingModelsTip",{profile:_.value})),1)]),_:1})):v("",!0)]),s("span",U,[M.value?(r(),d("span",{key:0,class:"session-item-model",title:e.session.model},m(M.value),9,V)):v("",!0),s("span",W,m(h(_e)(e.session.createdAt)),1)]),c.showProfile?(r(),d("span",X,[E(Be,{class:"session-item-profile-avatar",name:_.value,avatar:u.value,size:16},null,8,["name","avatar"]),s("span",z,m(_.value),1)])):v("",!0)]),e.canDelete&&!e.selectable?(r(),D(h(ke),{key:1,onPositiveClick:l[3]||(l[3]=B=>f("delete"))},{trigger:S(()=>[s("button",{class:"session-item-delete",onClick:l[2]||(l[2]=I(()=>{},["stop","prevent"]))},[...l[7]||(l[7]=[s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:S(()=>[L(" "+m(h(y)("chat.deleteSession")),1)]),_:1})):v("",!0)]),_:1},40,["class","aria-current","href","type"]))}})})),Le=g((()=>{})),De,He=g((()=>{J(),J(),Le(),de(),De=me(pe,[["__scopeId","data-v-baff08d8"]])})),F,G,H,j,R,Z,ee,te,se,ne,ie,fe,oe=g((()=>{le(),ue(),F={class:"outline-panel"},G={class:"outline-header"},H={class:"outline-title"},j={class:"outline-content"},R=["onClick"],Z={class:"user-question"},ee={class:"q-text"},te=["onClick"],se={class:"heading-item"},ne={class:"heading-text"},ie={key:1,class:"outline-empty"},fe=re({__name:"OutlinePanel",props:{messages:{}},emits:["navigate"],setup(e,{emit:p}){const c=e,f=p,{t:y}=ce();function b(u,t){const n=[],i=u.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
1
+ import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as m,$t as s,An as S,Bn as ve,Bt as le,Cn as ge,En as ye,Jn as h,Jt as I,Qt as k,S as ke,Xn as ae,Yt as A,an as L,bn as be,bt as Me,en as D,it as xe,nn as d,on as E,sn as re,t as $e,tn as v,xn as r}from"./ui-vendor-DNWaqYj5.js";import{c as ue,l as ce}from"./vue-vendor-VX6KvV1_.js";import{n as de,t as me}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{J as Se,Q as Ce,X as we,Y as Te,Z as Pe,q as Be}from"./index-DyLZQAQu.js";function Fe(e){return e?he[e]||e:""}function _e(e){if(!e)return"";const p=new Date(e),c=new Date;return p.toDateString()===c.toDateString()?p.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):p.toLocaleDateString([],{month:"short",day:"numeric"})}function Ge(e){return _e(e*1e3)}var he,Ie=g((()=>{he={telegram:"Telegram",api_server:"API Server",cli:"CLI",discord:"Discord",slack:"Slack",matrix:"Matrix",whatsapp:"WhatsApp",signal:"Signal",email:"Email",sms:"SMS",dingtalk:"DingTalk",feishu:"Feishu",wecom:"WeCom",weixin:"WeChat",bluebubbles:"iMessage",mattermost:"Mattermost",cron:"Cron"}})),N,O,Q,Y,q,K,U,V,W,X,z,pe,J=g((()=>{le(),$e(),ue(),Pe(),Te(),Se(),Ie(),N={key:0,class:"session-item-checkbox"},O={class:"session-item-content"},Q={class:"session-item-title-row"},Y={key:0,class:"session-item-pin","aria-hidden":"true"},q={class:"session-item-title"},K={key:0,class:"session-item-streaming",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},U={class:"session-item-meta"},V=["title"],W={class:"session-item-time"},X={key:0,class:"session-item-profile"},z={class:"session-item-profile-name"},pe=re({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean},showProfile:{type:Boolean,default:!0},to:{}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:p}){const c=e,f=p,{t:y}=ce(),b=Ce(),P=we(),M=k(()=>c.session.model?b.displayModelName(c.session.model,c.session.provider):""),_=k(()=>c.session.profile||"default"),u=k(()=>P.profiles.find(o=>o.name===_.value)?.avatar),t=k(()=>!!b.profileModelGroups.find(o=>o.profile===_.value)?.groups?.some(o=>o.models.length>0)),n=k(()=>b.profileModelGroups.length>0&&!t.value);let i=null;const a=ve(!1);function x(o){a.value=!1,i=setTimeout(()=>{a.value=!0;const l=o.touches[0];f("contextmenu",new MouseEvent("contextmenu",{clientX:l.clientX,clientY:l.clientY,bubbles:!0}))},500)}function $(){i&&(clearTimeout(i),i=null)}function C(){i&&(clearTimeout(i),i=null)}function w(o){return!!o&&(o.metaKey||o.ctrlKey||o.shiftKey||o.altKey||o.button!==0)}function T(o){if(a.value){a.value=!1,o?.preventDefault();return}w(o)||(c.to&&!c.selectable&&o?.preventDefault(),f("select"))}return be(()=>{i&&clearTimeout(i)}),(o,l)=>(r(),D(ye(e.selectable||!e.to?"button":"a"),{class:ae(["session-item",{active:e.active,"batch-mode":e.selectable,"missing-models":n.value}]),"aria-current":e.active?"page":void 0,href:e.selectable?void 0:e.to,type:e.selectable||!e.to?"button":void 0,onClick:T,onContextmenu:l[4]||(l[4]=B=>f("contextmenu",B)),onTouchstart:x,onTouchend:$,onTouchmove:C},{default:S(()=>[e.selectable?(r(),d("div",N,[E(h(Me),{checked:e.selected,onClick:l[0]||(l[0]=I(B=>f("toggle-select"),["stop"]))},null,8,["checked"])])):v("",!0),s("div",O,[s("span",Q,[e.pinned?(r(),d("span",Y,[...l[5]||(l[5]=[s("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M12 17v5"}),s("path",{d:"M5 8l14 0"}),s("path",{d:"M8 3l8 0 0 5 3 5-14 0 3-5z"})],-1)])])):v("",!0),s("span",q,[e.streaming?(r(),d("svg",K,[...l[6]||(l[6]=[s("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"},null,-1)])])):v("",!0),L(" "+m(e.session.title),1)]),n.value?(r(),D(h(xe),{key:1,trigger:"click",placement:"top"},{trigger:S(()=>[s("button",{class:"session-item-warning",type:"button",onClick:l[1]||(l[1]=I(()=>{},["stop","prevent"]))}," ! ")]),default:S(()=>[L(" "+m(h(y)("chat.profileMissingModelsTip",{profile:_.value})),1)]),_:1})):v("",!0)]),s("span",U,[M.value?(r(),d("span",{key:0,class:"session-item-model",title:e.session.model},m(M.value),9,V)):v("",!0),s("span",W,m(h(_e)(e.session.createdAt)),1)]),c.showProfile?(r(),d("span",X,[E(Be,{class:"session-item-profile-avatar",name:_.value,avatar:u.value,size:16},null,8,["name","avatar"]),s("span",z,m(_.value),1)])):v("",!0)]),e.canDelete&&!e.selectable?(r(),D(h(ke),{key:1,onPositiveClick:l[3]||(l[3]=B=>f("delete"))},{trigger:S(()=>[s("button",{class:"session-item-delete",onClick:l[2]||(l[2]=I(()=>{},["stop","prevent"]))},[...l[7]||(l[7]=[s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:S(()=>[L(" "+m(h(y)("chat.deleteSession")),1)]),_:1})):v("",!0)]),_:1},40,["class","aria-current","href","type"]))}})})),Le=g((()=>{})),De,He=g((()=>{J(),J(),Le(),de(),De=me(pe,[["__scopeId","data-v-baff08d8"]])})),F,G,H,j,R,Z,ee,te,se,ne,ie,fe,oe=g((()=>{le(),ue(),F={class:"outline-panel"},G={class:"outline-header"},H={class:"outline-title"},j={class:"outline-content"},R=["onClick"],Z={class:"user-question"},ee={class:"q-text"},te=["onClick"],se={class:"heading-item"},ne={class:"heading-text"},ie={key:1,class:"outline-empty"},fe=re({__name:"OutlinePanel",props:{messages:{}},emits:["navigate"],setup(e,{emit:p}){const c=e,f=p,{t:y}=ce();function b(u,t){const n=[],i=u.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
2
2
  `);let a=0;for(const x of i){const $=x.trim(),C=$.match(/^#\s+(.+)/),w=$.match(/^##\s+(.+)/),T=$.match(/^###\s+(.+)/);C?(a++,n.push({id:`outline-${t}-h${a}`,type:"outline",content:C[1].trim(),messageId:t,level:1,anchorId:`msg-${t}-heading-${a}`})):w?(a++,n.push({id:`outline-${t}-h${a}`,type:"outline",content:w[1].trim(),messageId:t,level:2,anchorId:`msg-${t}-heading-${a}`})):T&&(a++,n.push({id:`outline-${t}-h${a}`,type:"outline",content:T[1].trim(),messageId:t,level:3,anchorId:`msg-${t}-heading-${a}`}))}return n}function P(u){const t=u.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
3
3
  `)[0]||"";return t.length>50?t.slice(0,50)+"...":t||y("chat.outlineUserQuestion")}const M=k(()=>{const u=[];let t=0;const n=c.messages.filter(i=>i.role==="user"||i.role==="assistant");for(;t<n.length;){const i=n[t];if(i.role==="user"){for(u.push({id:`user-${i.id}`,type:"user",content:P(i.content||""),messageId:i.id,level:0,anchorId:`message-${i.id}`}),t++;t<n.length&&n[t].role!=="assistant";)t++;if(t<n.length){const a=n[t],x=b(a.content||"",a.id);u.push(...x)}}t++}return u});function _(u){f("navigate",{messageId:u.messageId,anchorId:u.anchorId})}return(u,t)=>(r(),d("div",F,[s("div",G,[s("span",H,m(h(y)("chat.outlineTitle")),1)]),s("div",j,[M.value.length>0?(r(!0),d(A,{key:0},ge(M.value,n=>(r(),d(A,{key:n.id},[n.type==="user"?(r(),d("div",{key:0,class:"outline-item user-item",onClick:i=>_(n)},[s("div",Z,[t[0]||(t[0]=s("span",{class:"q-label"},"Q:",-1)),s("span",ee,m(n.content),1)])],8,R)):(r(),d("div",{key:1,class:ae(["outline-item outline-heading-item",`level-${n.level}`]),onClick:i=>_(n)},[s("div",se,[s("span",ne,m(n.content),1)])],10,te))],64))),128)):(r(),d("div",ie,m(h(y)("chat.outlineEmpty")),1))])]))}})})),Ae=g((()=>{})),Ee,je=g((()=>{oe(),oe(),Ae(),de(),Ee=me(fe,[["__scopeId","data-v-5fd5256e"]])}));export{Ge as a,He as i,je as n,Fe as o,De as r,Ie as s,Ee as t};
@@ -1 +1 @@
1
- import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as e,An as w,Bn as P,Bt as ge,Cn as C,Jn as a,Qn as M,Qt as h,Xn as $,Yt as S,_n as be,an as x,g as we,nn as u,on as B,sn as Pe,t as Be,tn as y,wt as R,xn as m,yn as ke,z as Ce}from"./ui-vendor-DNWaqYj5.js";import{c as Me,l as $e}from"./vue-vendor-VX6KvV1_.js";import{d as Se,l as xe,n as Re,t as Ve}from"./_plugin-vue_export-helper-D4mtpdbl.js";async function Ie(){return Se("/api/hermes/performance/runtime")}var Fe=g((()=>{xe()})),V,I,F,N,U,z,D,T,A,W,L,O,Q,Y,j,q,E,G,J,K,X,H,Z,ee,se,ne,te,re,ae,le,ie,oe,ue,ce,me=g((()=>{ge(),Be(),Me(),Fe(),V={class:"performance-view"},I={class:"page-header"},F={class:"header-title"},N={class:"header-actions"},U={key:0,class:"performance-content"},z={class:"summary-grid"},D={class:"summary-item"},T={class:"summary-label"},A={class:"meter"},W={class:"summary-item"},L={class:"summary-label"},O={class:"meter"},Q={class:"summary-item"},Y={class:"summary-label"},j={class:"summary-item"},q={class:"summary-label"},E={class:"runtime-section"},G={class:"section-header"},J={class:"process-grid"},K={class:"process-row"},X={class:"status running"},H={class:"process-row"},Z={key:0,class:"runtime-error"},ee={class:"runtime-section"},se={class:"section-header"},ne={class:"worker-table-wrap"},te={class:"worker-table"},re={key:0},ae={colspan:"7",class:"empty-cell"},le={class:"runtime-section"},ie={class:"section-header"},oe={class:"session-list"},ue={key:0,class:"session-empty"},ce=Pe({__name:"PerformanceView",setup(De){const{t:r}=$e(),de=Ce(),n=P(null),p=P(!1),f=P(!0);let c;const _e=h(()=>n.value?.bridge.broker.process?.memoryRssBytes??null),pe=h(()=>n.value?.web.memory.rss??null),fe=h(()=>n.value?.bridge.workers.length??0),ve=h(()=>n.value?.bridge.workers.filter(t=>t.running).length??0);function d(t){if(t==null||!Number.isFinite(t))return"-";const i=["B","KB","MB","GB","TB"];let l=t,o=0;for(;l>=1024&&o<i.length-1;)l/=1024,o+=1;return`${l.toFixed(o===0?0:1)} ${i[o]}`}function _(t){return t==null||!Number.isFinite(t)?"-":`${t.toFixed(1)}%`}function he(t){if(t==null||!Number.isFinite(t))return"-";const i=Math.floor(t/86400),l=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return i>0?`${i}d ${l}h`:l>0?`${l}h ${o}m`:`${o}m`}function ye(t){return t?new Date(t*1e3).toLocaleString():"-"}function v(t){return r(t?"performance.running":"performance.stopped")}async function b(t=!0){p.value=!0;try{n.value=await Ie()}catch(i){t&&de.error(i?.message||r("performance.loadFailed"))}finally{p.value=!1}}function k(t){f.value=t,c&&(clearInterval(c),c=void 0),t&&(c=setInterval(()=>b(!1),5e3))}return ke(()=>{b(),k(!0)}),be(()=>{c&&clearInterval(c)}),(t,i)=>(m(),u("div",V,[e("header",I,[e("h2",F,s(a(r)("performance.title")),1),e("div",N,[B(a(R),{size:"small",type:f.value?"primary":"default",secondary:"",onClick:i[0]||(i[0]=l=>k(!f.value))},{default:w(()=>[x(s(f.value?a(r)("performance.autoRefreshOn"):a(r)("performance.autoRefreshOff")),1)]),_:1},8,["type"]),B(a(R),{size:"small",loading:p.value,onClick:i[1]||(i[1]=l=>b())},{default:w(()=>[x(s(a(r)("performance.refresh")),1)]),_:1},8,["loading"])])]),B(a(we),{show:p.value&&!n.value,class:"performance-spin"},{default:w(()=>[n.value?(m(),u("main",U,[e("section",z,[e("div",D,[e("span",T,s(a(r)("performance.systemCpu")),1),e("strong",null,s(_(n.value.system.cpuPercent)),1),e("div",A,[e("span",{style:M({width:`${n.value.system.cpuPercent||0}%`})},null,4)])]),e("div",W,[e("span",L,s(a(r)("performance.systemMemory")),1),e("strong",null,s(_(n.value.system.memoryPercent)),1),e("small",null,s(d(n.value.system.usedMemoryBytes))+" / "+s(d(n.value.system.totalMemoryBytes)),1),e("div",O,[e("span",{style:M({width:`${n.value.system.memoryPercent||0}%`})},null,4)])]),e("div",Q,[e("span",Y,s(a(r)("performance.activeSessions")),1),e("strong",null,s(n.value.sessions.active),1),e("small",null,s(a(r)("performance.runningSessions",{count:n.value.sessions.running})),1)]),e("div",j,[e("span",q,s(a(r)("performance.workers")),1),e("strong",null,s(ve.value)+" / "+s(fe.value),1),e("small",null,s(a(r)("performance.totalWorkerMemory"))+" "+s(d(n.value.bridge.totalWorkerMemoryRssBytes)),1)])]),e("section",E,[e("div",G,[e("h3",null,s(a(r)("performance.processes")),1),e("span",null,s(n.value.system.platform)+" "+s(n.value.system.arch)+" · "+s(n.value.system.cpuCount)+" CPU · "+s(a(r)("performance.uptime"))+" "+s(he(n.value.system.uptimeSeconds)),1)]),e("div",J,[e("div",K,[e("div",null,[i[2]||(i[2]=e("strong",null,"Web UI",-1)),e("span",null,"PID "+s(n.value.web.pid),1)]),e("span",null,s(_(n.value.web.cpuPercent)),1),e("span",null,s(d(pe.value)),1),e("span",X,s(v(!0)),1)]),e("div",H,[e("div",null,[i[3]||(i[3]=e("strong",null,"Bridge Broker",-1)),e("span",null,s(n.value.bridge.endpoint),1)]),e("span",null,s(_(n.value.bridge.broker.process?.cpuPercent)),1),e("span",null,s(d(_e.value)),1),e("span",{class:$(["status",{running:n.value.bridge.reachable&&n.value.bridge.broker.running}])},s(n.value.bridge.reachable&&n.value.bridge.broker.running?v(!0):v(!1)),3)])]),n.value.bridge.error?(m(),u("div",Z,s(n.value.bridge.error),1)):y("",!0)]),e("section",ee,[e("div",se,[e("h3",null,s(a(r)("performance.workerMemory")),1),e("span",null,s(a(r)("performance.lastUpdated"))+" "+s(new Date(n.value.timestamp).toLocaleTimeString()),1)]),e("div",ne,[e("table",te,[e("thead",null,[e("tr",null,[e("th",null,s(a(r)("performance.profile")),1),i[4]||(i[4]=e("th",null,"PID",-1)),i[5]||(i[5]=e("th",null,"CPU",-1)),e("th",null,s(a(r)("performance.memory")),1),e("th",null,s(a(r)("performance.runningActiveSessions")),1),e("th",null,s(a(r)("performance.lastUsed")),1),e("th",null,s(a(r)("performance.status")),1)])]),e("tbody",null,[n.value.bridge.workers.length===0?(m(),u("tr",re,[e("td",ae,s(a(r)("performance.noWorkers")),1)])):y("",!0),(m(!0),u(S,null,C(n.value.bridge.workers,l=>(m(),u("tr",{key:l.profile||l.pid},[e("td",null,s(l.profile||"-"),1),e("td",null,s(l.pid||"-"),1),e("td",null,s(_(l.cpuPercent)),1),e("td",null,s(d(l.memoryRssBytes)),1),e("td",null,s(l.runningSessionCount)+" / "+s(l.sessionCount),1),e("td",null,s(ye(l.lastUsedAt)),1),e("td",null,[e("span",{class:$(["status",{running:l.running}])},s(v(l.running)),3)])]))),128))])])])]),e("section",le,[e("div",ie,[e("h3",null,s(a(r)("performance.sessionsByProfile")),1)]),e("div",oe,[Object.keys(n.value.sessions.byProfile).length===0?(m(),u("div",ue,s(a(r)("performance.noActiveSessions")),1)):y("",!0),(m(!0),u(S,null,C(n.value.sessions.byProfile,(l,o)=>(m(),u("div",{key:o,class:"session-row"},[e("span",null,s(o),1),e("strong",null,s(l),1)]))),128))])])])):y("",!0)]),_:1},8,["show"])]))}})})),Ne=g((()=>{})),Ue,ze=g((()=>{me(),me(),Ne(),Re(),Ue=Ve(ce,[["__scopeId","data-v-0ce2fc3a"]])}));ze();export{Ue as default};
1
+ import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as e,An as w,Bn as P,Bt as ge,Cn as C,Jn as a,Qn as M,Qt as h,Xn as $,Yt as S,_n as be,an as x,g as we,nn as u,on as B,sn as Pe,t as Be,tn as y,wt as R,xn as m,yn as ke,z as Ce}from"./ui-vendor-DNWaqYj5.js";import{c as Me,l as $e}from"./vue-vendor-VX6KvV1_.js";import{d as Se,l as xe,n as Re,t as Ve}from"./_plugin-vue_export-helper-CtZk2OSc.js";async function Ie(){return Se("/api/hermes/performance/runtime")}var Fe=g((()=>{xe()})),V,I,F,N,U,z,D,T,A,W,L,O,Q,Y,j,q,E,G,J,K,X,H,Z,ee,se,ne,te,re,ae,le,ie,oe,ue,ce,me=g((()=>{ge(),Be(),Me(),Fe(),V={class:"performance-view"},I={class:"page-header"},F={class:"header-title"},N={class:"header-actions"},U={key:0,class:"performance-content"},z={class:"summary-grid"},D={class:"summary-item"},T={class:"summary-label"},A={class:"meter"},W={class:"summary-item"},L={class:"summary-label"},O={class:"meter"},Q={class:"summary-item"},Y={class:"summary-label"},j={class:"summary-item"},q={class:"summary-label"},E={class:"runtime-section"},G={class:"section-header"},J={class:"process-grid"},K={class:"process-row"},X={class:"status running"},H={class:"process-row"},Z={key:0,class:"runtime-error"},ee={class:"runtime-section"},se={class:"section-header"},ne={class:"worker-table-wrap"},te={class:"worker-table"},re={key:0},ae={colspan:"7",class:"empty-cell"},le={class:"runtime-section"},ie={class:"section-header"},oe={class:"session-list"},ue={key:0,class:"session-empty"},ce=Pe({__name:"PerformanceView",setup(De){const{t:r}=$e(),de=Ce(),n=P(null),p=P(!1),f=P(!0);let c;const _e=h(()=>n.value?.bridge.broker.process?.memoryRssBytes??null),pe=h(()=>n.value?.web.memory.rss??null),fe=h(()=>n.value?.bridge.workers.length??0),ve=h(()=>n.value?.bridge.workers.filter(t=>t.running).length??0);function d(t){if(t==null||!Number.isFinite(t))return"-";const i=["B","KB","MB","GB","TB"];let l=t,o=0;for(;l>=1024&&o<i.length-1;)l/=1024,o+=1;return`${l.toFixed(o===0?0:1)} ${i[o]}`}function _(t){return t==null||!Number.isFinite(t)?"-":`${t.toFixed(1)}%`}function he(t){if(t==null||!Number.isFinite(t))return"-";const i=Math.floor(t/86400),l=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return i>0?`${i}d ${l}h`:l>0?`${l}h ${o}m`:`${o}m`}function ye(t){return t?new Date(t*1e3).toLocaleString():"-"}function v(t){return r(t?"performance.running":"performance.stopped")}async function b(t=!0){p.value=!0;try{n.value=await Ie()}catch(i){t&&de.error(i?.message||r("performance.loadFailed"))}finally{p.value=!1}}function k(t){f.value=t,c&&(clearInterval(c),c=void 0),t&&(c=setInterval(()=>b(!1),5e3))}return ke(()=>{b(),k(!0)}),be(()=>{c&&clearInterval(c)}),(t,i)=>(m(),u("div",V,[e("header",I,[e("h2",F,s(a(r)("performance.title")),1),e("div",N,[B(a(R),{size:"small",type:f.value?"primary":"default",secondary:"",onClick:i[0]||(i[0]=l=>k(!f.value))},{default:w(()=>[x(s(f.value?a(r)("performance.autoRefreshOn"):a(r)("performance.autoRefreshOff")),1)]),_:1},8,["type"]),B(a(R),{size:"small",loading:p.value,onClick:i[1]||(i[1]=l=>b())},{default:w(()=>[x(s(a(r)("performance.refresh")),1)]),_:1},8,["loading"])])]),B(a(we),{show:p.value&&!n.value,class:"performance-spin"},{default:w(()=>[n.value?(m(),u("main",U,[e("section",z,[e("div",D,[e("span",T,s(a(r)("performance.systemCpu")),1),e("strong",null,s(_(n.value.system.cpuPercent)),1),e("div",A,[e("span",{style:M({width:`${n.value.system.cpuPercent||0}%`})},null,4)])]),e("div",W,[e("span",L,s(a(r)("performance.systemMemory")),1),e("strong",null,s(_(n.value.system.memoryPercent)),1),e("small",null,s(d(n.value.system.usedMemoryBytes))+" / "+s(d(n.value.system.totalMemoryBytes)),1),e("div",O,[e("span",{style:M({width:`${n.value.system.memoryPercent||0}%`})},null,4)])]),e("div",Q,[e("span",Y,s(a(r)("performance.activeSessions")),1),e("strong",null,s(n.value.sessions.active),1),e("small",null,s(a(r)("performance.runningSessions",{count:n.value.sessions.running})),1)]),e("div",j,[e("span",q,s(a(r)("performance.workers")),1),e("strong",null,s(ve.value)+" / "+s(fe.value),1),e("small",null,s(a(r)("performance.totalWorkerMemory"))+" "+s(d(n.value.bridge.totalWorkerMemoryRssBytes)),1)])]),e("section",E,[e("div",G,[e("h3",null,s(a(r)("performance.processes")),1),e("span",null,s(n.value.system.platform)+" "+s(n.value.system.arch)+" · "+s(n.value.system.cpuCount)+" CPU · "+s(a(r)("performance.uptime"))+" "+s(he(n.value.system.uptimeSeconds)),1)]),e("div",J,[e("div",K,[e("div",null,[i[2]||(i[2]=e("strong",null,"Web UI",-1)),e("span",null,"PID "+s(n.value.web.pid),1)]),e("span",null,s(_(n.value.web.cpuPercent)),1),e("span",null,s(d(pe.value)),1),e("span",X,s(v(!0)),1)]),e("div",H,[e("div",null,[i[3]||(i[3]=e("strong",null,"Bridge Broker",-1)),e("span",null,s(n.value.bridge.endpoint),1)]),e("span",null,s(_(n.value.bridge.broker.process?.cpuPercent)),1),e("span",null,s(d(_e.value)),1),e("span",{class:$(["status",{running:n.value.bridge.reachable&&n.value.bridge.broker.running}])},s(n.value.bridge.reachable&&n.value.bridge.broker.running?v(!0):v(!1)),3)])]),n.value.bridge.error?(m(),u("div",Z,s(n.value.bridge.error),1)):y("",!0)]),e("section",ee,[e("div",se,[e("h3",null,s(a(r)("performance.workerMemory")),1),e("span",null,s(a(r)("performance.lastUpdated"))+" "+s(new Date(n.value.timestamp).toLocaleTimeString()),1)]),e("div",ne,[e("table",te,[e("thead",null,[e("tr",null,[e("th",null,s(a(r)("performance.profile")),1),i[4]||(i[4]=e("th",null,"PID",-1)),i[5]||(i[5]=e("th",null,"CPU",-1)),e("th",null,s(a(r)("performance.memory")),1),e("th",null,s(a(r)("performance.runningActiveSessions")),1),e("th",null,s(a(r)("performance.lastUsed")),1),e("th",null,s(a(r)("performance.status")),1)])]),e("tbody",null,[n.value.bridge.workers.length===0?(m(),u("tr",re,[e("td",ae,s(a(r)("performance.noWorkers")),1)])):y("",!0),(m(!0),u(S,null,C(n.value.bridge.workers,l=>(m(),u("tr",{key:l.profile||l.pid},[e("td",null,s(l.profile||"-"),1),e("td",null,s(l.pid||"-"),1),e("td",null,s(_(l.cpuPercent)),1),e("td",null,s(d(l.memoryRssBytes)),1),e("td",null,s(l.runningSessionCount)+" / "+s(l.sessionCount),1),e("td",null,s(ye(l.lastUsedAt)),1),e("td",null,[e("span",{class:$(["status",{running:l.running}])},s(v(l.running)),3)])]))),128))])])])]),e("section",le,[e("div",ie,[e("h3",null,s(a(r)("performance.sessionsByProfile")),1)]),e("div",oe,[Object.keys(n.value.sessions.byProfile).length===0?(m(),u("div",ue,s(a(r)("performance.noActiveSessions")),1)):y("",!0),(m(!0),u(S,null,C(n.value.sessions.byProfile,(l,o)=>(m(),u("div",{key:o,class:"session-row"},[e("span",null,s(o),1),e("strong",null,s(l),1)]))),128))])])])):y("",!0)]),_:1},8,["show"])]))}})})),Ne=g((()=>{})),Ue,ze=g((()=>{me(),me(),Ne(),Re(),Ue=Ve(ce,[["__scopeId","data-v-0ce2fc3a"]])}));ze();export{Ue as default};
@@ -1 +1 @@
1
- import{n as C}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as a,$t as e,An as v,At as Ce,Bn as _,Bt as Ve,Cn as F,Jn as t,Mt as B,On as xe,Pt as T,Qt as h,Rt as Be,Yt as L,an as r,en as P,ft as $,g as Te,nn as o,on as c,sn as $e,t as ze,tn as p,wt as O,xn as u,z as Ae}from"./ui-vendor-DNWaqYj5.js";import{c as Ee,l as Me}from"./vue-vendor-VX6KvV1_.js";import{d as Ne,l as Fe,n as Le,t as Oe}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{X as qe,Y as Ie}from"./index-BHU-82RO.js";async function Re(){return Ne("/api/hermes/plugins")}var Ue=C((()=>{Fe()})),q,I,R,U,j,Y,Q,D,H,J,K,X,G,W,Z,ee,te,ae,se,le,ne,ie,ue,re,oe,de,ce,ve,_e,me,pe=C((()=>{Ve(),ze(),Ee(),Ue(),Ie(),q={class:"plugins-view"},I={class:"page-header"},R={class:"header-title"},U={class:"plugins-content"},j={class:"summary-grid"},Y={class:"summary-card"},Q={class:"summary-label"},D={class:"summary-card success"},H={class:"summary-label"},J={class:"summary-card warning"},K={class:"summary-label"},X={class:"summary-card error"},G={class:"summary-label"},W={class:"summary-card info"},Z={class:"summary-label"},ee={class:"filter-row"},te={key:0,class:"plugins-table-wrap"},ae={class:"plugins-table"},se={class:"plugin-name"},le={key:0},ne={key:0,class:"description"},ie={key:1,class:"meta-line"},ue={key:0},re={key:1},oe={class:"config-status"},de={class:"capability-list"},ce={class:"path-cell"},ve={key:1,class:"muted"},_e={key:1,class:"metadata-panel"},me=$e({__name:"PluginsView",setup(De){const{t:n,te:z}=Me(),fe=Ae(),y=qe(),d=_([]),V=_([]),m=_(null),f=_(!1),b=_(""),x=_(""),k=_(null),w=_(null),S=_(null),ge=["enabled","auto-active","inactive","disabled","provider-managed"],he=h(()=>ge.map(s=>({label:n(`plugins.status.${s}`),value:s}))),ye=h(()=>E(d.value.map(s=>s.source))),be=h(()=>E(d.value.map(s=>s.kind))),g=h(()=>({total:d.value.length,active:d.value.filter(s=>s.effectiveStatus==="enabled"||s.effectiveStatus==="auto-active").length,inactive:d.value.filter(s=>s.effectiveStatus==="inactive").length,disabled:d.value.filter(s=>s.effectiveStatus==="disabled").length,providerManaged:d.value.filter(s=>s.effectiveStatus==="provider-managed").length})),A=h(()=>{const s=x.value.trim().toLowerCase();return d.value.filter(i=>k.value&&i.source!==k.value||w.value&&i.kind!==w.value||S.value&&i.effectiveStatus!==S.value?!1:s?[i.key,i.name,i.description,i.path,i.source,i.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function E(s){return Array.from(new Set(s.filter(Boolean))).sort((i,l)=>i.localeCompare(l)).map(i=>({label:i,value:i}))}async function M(){f.value=!0,b.value="";try{(!y.activeProfileName||y.profiles.length===0)&&await y.fetchProfiles();const s=await Re();d.value=s.plugins??[],V.value=s.warnings??[],m.value=s.metadata??null}catch(s){b.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function ke(s){const i=`plugins.statusLabel.${s.effectiveStatus}`;return z(i)?n(i):s.effectiveStatus}function we(s){const i=`plugins.configStatuses.${s.configStatus}`;return z(i)?n(i):s.configStatus}function Se(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function N(s){const i=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${i}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${i}'`:""}async function Pe(s){const i=N(s);i&&(await navigator.clipboard.writeText(i),fe.success(n("plugins.commandCopied")))}return xe(()=>y.activeProfileName||"default",()=>{d.value=[],V.value=[],m.value=null,M()},{immediate:!0}),(s,i)=>(u(),o("div",q,[e("header",I,[e("h2",R,a(t(n)("plugins.title")),1),c(t(O),{size:"small",quaternary:"",loading:f.value,onClick:M},{default:v(()=>[r(a(t(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",U,[c(t(B),{type:"info",bordered:!1,class:"plugins-notice"},{default:v(()=>[r(a(t(n)("plugins.notice")),1)]),_:1}),b.value?(u(),P(t(B),{key:0,type:"error",class:"plugins-notice"},{default:v(()=>[r(a(b.value),1)]),_:1})):p("",!0),(u(!0),o(L,null,F(V.value,l=>(u(),P(t(B),{key:l,type:"warning",class:"plugins-notice"},{default:v(()=>[r(a(l),1)]),_:2},1024))),128)),e("div",j,[e("div",Y,[e("span",Q,a(t(n)("plugins.summary.total")),1),e("strong",null,a(g.value.total),1)]),e("div",D,[e("span",H,a(t(n)("plugins.summary.active")),1),e("strong",null,a(g.value.active),1)]),e("div",J,[e("span",K,a(t(n)("plugins.summary.inactive")),1),e("strong",null,a(g.value.inactive),1)]),e("div",X,[e("span",G,a(t(n)("plugins.summary.disabled")),1),e("strong",null,a(g.value.disabled),1)]),e("div",W,[e("span",Z,a(t(n)("plugins.summary.providerManaged")),1),e("strong",null,a(g.value.providerManaged),1)])]),e("div",ee,[c(t(Ce),{value:x.value,"onUpdate:value":i[0]||(i[0]=l=>x.value=l),placeholder:t(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(t($),{value:k.value,"onUpdate:value":i[1]||(i[1]=l=>k.value=l),options:ye.value,placeholder:t(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(t($),{value:w.value,"onUpdate:value":i[2]||(i[2]=l=>w.value=l),options:be.value,placeholder:t(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(t($),{value:S.value,"onUpdate:value":i[3]||(i[3]=l=>S.value=l),options:he.value,placeholder:t(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(t(Te),{show:f.value&&d.value.length===0},{default:v(()=>[A.value.length?(u(),o("div",te,[e("table",ae,[e("thead",null,[e("tr",null,[e("th",null,a(t(n)("plugins.table.plugin")),1),e("th",null,a(t(n)("plugins.table.status")),1),e("th",null,a(t(n)("plugins.table.source")),1),e("th",null,a(t(n)("plugins.table.kind")),1),e("th",null,a(t(n)("plugins.table.capabilities")),1),e("th",null,a(t(n)("plugins.table.path")),1),e("th",null,a(t(n)("plugins.table.cli")),1)])]),e("tbody",null,[(u(!0),o(L,null,F(A.value,l=>(u(),o("tr",{key:l.key},[e("td",null,[e("div",se,[e("strong",null,a(l.key),1),l.name!==l.key?(u(),o("span",le,a(l.name),1)):p("",!0)]),l.description?(u(),o("div",ne,a(l.description),1)):p("",!0),l.version||l.author?(u(),o("div",ie,[l.version?(u(),o("span",ue,"v"+a(l.version),1)):p("",!0),l.author?(u(),o("span",re,a(l.author),1)):p("",!0)])):p("",!0)]),e("td",null,[c(t(T),{size:"small",type:Se(l)},{default:v(()=>[r(a(ke(l)),1)]),_:2},1032,["type"]),e("div",oe,a(t(n)("plugins.configStatus",{status:we(l)})),1)]),e("td",null,[c(t(T),{size:"small",round:""},{default:v(()=>[r(a(l.source),1)]),_:2},1024)]),e("td",null,[c(t(T),{size:"small",round:""},{default:v(()=>[r(a(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",de,[e("span",null,a(t(n)("plugins.capabilities.tools",{count:l.providesTools.length})),1),e("span",null,a(t(n)("plugins.capabilities.hooks",{count:l.providesHooks.length})),1),e("span",null,a(t(n)("plugins.capabilities.env",{count:l.requiresEnv.length})),1)])]),e("td",null,[e("code",ce,a(l.path||t(n)("plugins.notAvailable")),1)]),e("td",null,[N(l)?(u(),P(t(O),{key:0,size:"tiny",secondary:"",onClick:He=>Pe(l)},{default:v(()=>[r(a(t(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(u(),o("span",ve,a(t(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?p("",!0):(u(),P(t(Be),{key:1,description:t(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(u(),o("div",_e,[e("span",null,[r(a(t(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,a(m.value.hermesAgentRoot),1)]),e("span",null,[r(a(t(n)("plugins.metadata.python"))+": ",1),e("code",null,a(m.value.pythonExecutable),1)]),e("span",null,[r(a(t(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,a(m.value.cwd),1)]),e("span",null,[r(a(t(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,a(m.value.projectPluginsEnabled?t(n)("plugins.enabled"):t(n)("plugins.disabled")),1)])])):p("",!0)])]))}})})),je=C((()=>{})),Ye,Qe=C((()=>{pe(),pe(),je(),Le(),Ye=Oe(me,[["__scopeId","data-v-4d517283"]])}));Qe();export{Ye as default};
1
+ import{n as C}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as a,$t as e,An as v,At as Ce,Bn as _,Bt as Ve,Cn as F,Jn as t,Mt as B,On as xe,Pt as T,Qt as h,Rt as Be,Yt as L,an as r,en as P,ft as $,g as Te,nn as o,on as c,sn as $e,t as ze,tn as p,wt as O,xn as u,z as Ae}from"./ui-vendor-DNWaqYj5.js";import{c as Ee,l as Me}from"./vue-vendor-VX6KvV1_.js";import{d as Ne,l as Fe,n as Le,t as Oe}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{X as qe,Y as Ie}from"./index-DyLZQAQu.js";async function Re(){return Ne("/api/hermes/plugins")}var Ue=C((()=>{Fe()})),q,I,R,U,j,Y,Q,D,H,J,K,X,G,W,Z,ee,te,ae,se,le,ne,ie,ue,re,oe,de,ce,ve,_e,me,pe=C((()=>{Ve(),ze(),Ee(),Ue(),Ie(),q={class:"plugins-view"},I={class:"page-header"},R={class:"header-title"},U={class:"plugins-content"},j={class:"summary-grid"},Y={class:"summary-card"},Q={class:"summary-label"},D={class:"summary-card success"},H={class:"summary-label"},J={class:"summary-card warning"},K={class:"summary-label"},X={class:"summary-card error"},G={class:"summary-label"},W={class:"summary-card info"},Z={class:"summary-label"},ee={class:"filter-row"},te={key:0,class:"plugins-table-wrap"},ae={class:"plugins-table"},se={class:"plugin-name"},le={key:0},ne={key:0,class:"description"},ie={key:1,class:"meta-line"},ue={key:0},re={key:1},oe={class:"config-status"},de={class:"capability-list"},ce={class:"path-cell"},ve={key:1,class:"muted"},_e={key:1,class:"metadata-panel"},me=$e({__name:"PluginsView",setup(De){const{t:n,te:z}=Me(),fe=Ae(),y=qe(),d=_([]),V=_([]),m=_(null),f=_(!1),b=_(""),x=_(""),k=_(null),w=_(null),S=_(null),ge=["enabled","auto-active","inactive","disabled","provider-managed"],he=h(()=>ge.map(s=>({label:n(`plugins.status.${s}`),value:s}))),ye=h(()=>E(d.value.map(s=>s.source))),be=h(()=>E(d.value.map(s=>s.kind))),g=h(()=>({total:d.value.length,active:d.value.filter(s=>s.effectiveStatus==="enabled"||s.effectiveStatus==="auto-active").length,inactive:d.value.filter(s=>s.effectiveStatus==="inactive").length,disabled:d.value.filter(s=>s.effectiveStatus==="disabled").length,providerManaged:d.value.filter(s=>s.effectiveStatus==="provider-managed").length})),A=h(()=>{const s=x.value.trim().toLowerCase();return d.value.filter(i=>k.value&&i.source!==k.value||w.value&&i.kind!==w.value||S.value&&i.effectiveStatus!==S.value?!1:s?[i.key,i.name,i.description,i.path,i.source,i.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function E(s){return Array.from(new Set(s.filter(Boolean))).sort((i,l)=>i.localeCompare(l)).map(i=>({label:i,value:i}))}async function M(){f.value=!0,b.value="";try{(!y.activeProfileName||y.profiles.length===0)&&await y.fetchProfiles();const s=await Re();d.value=s.plugins??[],V.value=s.warnings??[],m.value=s.metadata??null}catch(s){b.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function ke(s){const i=`plugins.statusLabel.${s.effectiveStatus}`;return z(i)?n(i):s.effectiveStatus}function we(s){const i=`plugins.configStatuses.${s.configStatus}`;return z(i)?n(i):s.configStatus}function Se(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function N(s){const i=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${i}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${i}'`:""}async function Pe(s){const i=N(s);i&&(await navigator.clipboard.writeText(i),fe.success(n("plugins.commandCopied")))}return xe(()=>y.activeProfileName||"default",()=>{d.value=[],V.value=[],m.value=null,M()},{immediate:!0}),(s,i)=>(u(),o("div",q,[e("header",I,[e("h2",R,a(t(n)("plugins.title")),1),c(t(O),{size:"small",quaternary:"",loading:f.value,onClick:M},{default:v(()=>[r(a(t(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",U,[c(t(B),{type:"info",bordered:!1,class:"plugins-notice"},{default:v(()=>[r(a(t(n)("plugins.notice")),1)]),_:1}),b.value?(u(),P(t(B),{key:0,type:"error",class:"plugins-notice"},{default:v(()=>[r(a(b.value),1)]),_:1})):p("",!0),(u(!0),o(L,null,F(V.value,l=>(u(),P(t(B),{key:l,type:"warning",class:"plugins-notice"},{default:v(()=>[r(a(l),1)]),_:2},1024))),128)),e("div",j,[e("div",Y,[e("span",Q,a(t(n)("plugins.summary.total")),1),e("strong",null,a(g.value.total),1)]),e("div",D,[e("span",H,a(t(n)("plugins.summary.active")),1),e("strong",null,a(g.value.active),1)]),e("div",J,[e("span",K,a(t(n)("plugins.summary.inactive")),1),e("strong",null,a(g.value.inactive),1)]),e("div",X,[e("span",G,a(t(n)("plugins.summary.disabled")),1),e("strong",null,a(g.value.disabled),1)]),e("div",W,[e("span",Z,a(t(n)("plugins.summary.providerManaged")),1),e("strong",null,a(g.value.providerManaged),1)])]),e("div",ee,[c(t(Ce),{value:x.value,"onUpdate:value":i[0]||(i[0]=l=>x.value=l),placeholder:t(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(t($),{value:k.value,"onUpdate:value":i[1]||(i[1]=l=>k.value=l),options:ye.value,placeholder:t(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(t($),{value:w.value,"onUpdate:value":i[2]||(i[2]=l=>w.value=l),options:be.value,placeholder:t(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(t($),{value:S.value,"onUpdate:value":i[3]||(i[3]=l=>S.value=l),options:he.value,placeholder:t(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(t(Te),{show:f.value&&d.value.length===0},{default:v(()=>[A.value.length?(u(),o("div",te,[e("table",ae,[e("thead",null,[e("tr",null,[e("th",null,a(t(n)("plugins.table.plugin")),1),e("th",null,a(t(n)("plugins.table.status")),1),e("th",null,a(t(n)("plugins.table.source")),1),e("th",null,a(t(n)("plugins.table.kind")),1),e("th",null,a(t(n)("plugins.table.capabilities")),1),e("th",null,a(t(n)("plugins.table.path")),1),e("th",null,a(t(n)("plugins.table.cli")),1)])]),e("tbody",null,[(u(!0),o(L,null,F(A.value,l=>(u(),o("tr",{key:l.key},[e("td",null,[e("div",se,[e("strong",null,a(l.key),1),l.name!==l.key?(u(),o("span",le,a(l.name),1)):p("",!0)]),l.description?(u(),o("div",ne,a(l.description),1)):p("",!0),l.version||l.author?(u(),o("div",ie,[l.version?(u(),o("span",ue,"v"+a(l.version),1)):p("",!0),l.author?(u(),o("span",re,a(l.author),1)):p("",!0)])):p("",!0)]),e("td",null,[c(t(T),{size:"small",type:Se(l)},{default:v(()=>[r(a(ke(l)),1)]),_:2},1032,["type"]),e("div",oe,a(t(n)("plugins.configStatus",{status:we(l)})),1)]),e("td",null,[c(t(T),{size:"small",round:""},{default:v(()=>[r(a(l.source),1)]),_:2},1024)]),e("td",null,[c(t(T),{size:"small",round:""},{default:v(()=>[r(a(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",de,[e("span",null,a(t(n)("plugins.capabilities.tools",{count:l.providesTools.length})),1),e("span",null,a(t(n)("plugins.capabilities.hooks",{count:l.providesHooks.length})),1),e("span",null,a(t(n)("plugins.capabilities.env",{count:l.requiresEnv.length})),1)])]),e("td",null,[e("code",ce,a(l.path||t(n)("plugins.notAvailable")),1)]),e("td",null,[N(l)?(u(),P(t(O),{key:0,size:"tiny",secondary:"",onClick:He=>Pe(l)},{default:v(()=>[r(a(t(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(u(),o("span",ve,a(t(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?p("",!0):(u(),P(t(Be),{key:1,description:t(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(u(),o("div",_e,[e("span",null,[r(a(t(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,a(m.value.hermesAgentRoot),1)]),e("span",null,[r(a(t(n)("plugins.metadata.python"))+": ",1),e("code",null,a(m.value.pythonExecutable),1)]),e("span",null,[r(a(t(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,a(m.value.cwd),1)]),e("span",null,[r(a(t(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,a(m.value.projectPluginsEnabled?t(n)("plugins.enabled"):t(n)("plugins.disabled")),1)])])):p("",!0)])]))}})})),je=C((()=>{})),Ye,Qe=C((()=>{pe(),pe(),je(),Le(),Ye=Oe(me,[["__scopeId","data-v-4d517283"]])}));Qe();export{Ye as default};
@@ -1,3 +1,3 @@
1
- import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as i,$t as a,An as s,At as Ne,Bn as h,Bt as F,Cn as Ge,E as q,Jn as e,O as Be,Pt as Ke,Qt as Oe,W as Y,Xn as J,Yt as Ue,an as P,en as k,g as Le,i as Qe,m as Ze,nn as $,on as _,q as el,s as E,sn as T,t as A,tn as S,wt as b,xn as m,yn as ll,z as D}from"./ui-vendor-DNWaqYj5.js";import{c as V,l as N}from"./vue-vendor-VX6KvV1_.js";import{n as B,t as U}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{J as al,X as L,Y as R,q as tl}from"./index-BHU-82RO.js";var W,X,G,K,O,Q,Z,ee,le,ae,te,oe,ie,se,ne,re,ue,de,fe,_e,pe,ce,ve,me,he,Re,ge=y((()=>{F(),A(),R(),V(),al(),W={class:"card-header"},X={class:"profile-title"},G={class:"profile-name"},K={class:"card-body"},O={class:"info-row"},Q={class:"info-label"},Z={class:"info-value mono"},ee={class:"toggle-text"},le={key:0,class:"card-detail"},ae={class:"info-row"},te={class:"info-label"},oe={class:"info-value"},ie={class:"info-row"},se={class:"info-label"},ne={class:"info-value mono detail-path"},re={class:"info-row"},ue={class:"info-label"},de={class:"info-value"},fe={class:"info-row"},_e={class:"info-label"},pe={class:"info-value"},ce={class:"info-row"},ve={class:"info-label"},me={class:"info-value"},he={class:"card-actions"},Re=T({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:x}){const u=C,{t:l}=N(),n=L(),r=D(),g=el(),p=h(!1),d=h(!1),c=h(!1),o=h(!1),v=h(null),I=Oe(()=>u.profile.name==="default");async function M(){if(p.value){p.value=!1;return}p.value=!0,d.value=!0;try{v.value=await n.fetchProfileDetail(u.profile.name)}finally{d.value=!1}}async function f(){g.warning({title:l("profiles.switchTo"),content:l("profiles.switchConfirm",{name:u.profile.name}),positiveText:l("profiles.switchTo"),negativeText:l("common.cancel"),onPositiveClick:t})}async function t(){o.value=!0;try{await n.switchHermesProfile(u.profile.name)?(r.success(l("profiles.switchSuccess",{name:u.profile.name})),setTimeout(()=>window.location.reload(),500)):r.error(l("profiles.switchFailed"))}finally{o.value=!1}}function w(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:u.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await n.deleteProfile(u.profile.name)?r.success(l("profiles.deleteSuccess")):r.error(l("profiles.deleteFailed"))}})}async function z(){c.value=!0;try{await n.exportProfile(u.profile.name)?r.success(l("profiles.exportSuccess")):r.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,H)=>(m(),$("div",{class:J(["profile-card",{active:C.profile.active}])},[a("div",W,[a("div",X,[_(tl,{name:C.profile.name,avatar:C.profile.avatar,size:28},null,8,["name","avatar"]),a("h3",G,i(C.profile.name),1)]),C.profile.active?(m(),k(e(Ke),{key:0,size:"tiny",type:"success",bordered:!1},{default:s(()=>[P(i(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",K,[a("div",O,[a("span",Q,i(e(l)("profiles.model")),1),a("code",Z,i(C.profile.model),1)])]),a("div",{class:"card-detail-toggle",onClick:M},[(m(),$("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:J(["toggle-icon",{expanded:p.value}])},[...H[0]||(H[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",ee,i(p.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),p.value?(m(),$("div",le,[_(e(Le),{show:d.value,size:"small"},{default:s(()=>[v.value?(m(),$(Ue,{key:0},[a("div",ae,[a("span",te,i(e(l)("profiles.provider")),1),a("span",oe,i(v.value.provider),1)]),a("div",ie,[a("span",se,i(e(l)("profiles.path")),1),a("code",ne,i(v.value.path),1)]),a("div",re,[a("span",ue,i(e(l)("profiles.skills")),1),a("span",de,i(v.value.skills),1)]),a("div",fe,[a("span",_e,i(e(l)("profiles.hasEnv")),1),a("span",pe,i(v.value.hasEnv?"Yes":"No"),1)]),a("div",ce,[a("span",ve,i(e(l)("profiles.hasSoulMd")),1),a("span",me,i(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",he,[C.profile.active?S("",!0):(m(),k(e(b),{key:0,size:"tiny",loading:o.value,quaternary:"",type:"primary",onClick:f},{default:s(()=>[P(i(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),_(e(b),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:w},{default:s(()=>[P(i(e(l)("common.delete")),1)]),_:1},8,["disabled"]),_(e(b),{size:"tiny",quaternary:"",loading:c.value,onClick:z},{default:s(()=>[P(i(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),ol=y((()=>{})),je,il=y((()=>{ge(),ge(),ol(),B(),je=U(Re,[["__scopeId","data-v-6cae06e2"]])})),ye,we,Ae,Pe=y((()=>{F(),il(),R(),V(),ye={key:0,class:"empty-state"},we={key:1,class:"profiles-grid"},Ae=T({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:x}=N(),u=L();return(l,n)=>e(u).profiles.length===0?(m(),$("div",ye,[n[1]||(n[1]=a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[a("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),a("circle",{cx:"12",cy:"7",r:"4"})],-1)),a("p",null,i(e(x)("profiles.noProfiles")),1)])):(m(),$("div",we,[(m(!0),$(Ue,null,Ge(e(u).profiles,r=>(m(),k(je,{key:r.name,profile:r,onRename:n[0]||(n[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),De,nl=y((()=>{Pe(),Pe(),sl(),B(),De=U(Ae,[["__scopeId","data-v-51e73d5a"]])})),Ce,qe,xe=y((()=>{F(),A(),R(),V(),Ce={class:"modal-footer"},qe=T({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:x}){const u=x,{t:l}=N(),n=L(),r=D(),g=h(!0),p=h(!1),d=h(""),c=h(!1),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=l("profiles.nameValidation"):o.value="",d.value=t}async function I(){if(!d.value){r.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(d.value)){r.error(l("profiles.nameValidation"));return}p.value=!0;try{const f=await n.createProfile(d.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],z=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||z.length>0)){const j=[];t.length>0&&j.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&j.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),z.length>0&&j.push(l("profiles.cloneStrippedConfigCredentials",{count:z.length,list:z.join(", ")})),r.info(`${l("profiles.createSuccess",{name:d.value.trim()})}
1
+ import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as i,$t as a,An as s,At as Ne,Bn as h,Bt as F,Cn as Ge,E as q,Jn as e,O as Be,Pt as Ke,Qt as Oe,W as Y,Xn as J,Yt as Ue,an as P,en as k,g as Le,i as Qe,m as Ze,nn as $,on as _,q as el,s as E,sn as T,t as A,tn as S,wt as b,xn as m,yn as ll,z as D}from"./ui-vendor-DNWaqYj5.js";import{c as V,l as N}from"./vue-vendor-VX6KvV1_.js";import{n as B,t as U}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{J as al,X as L,Y as R,q as tl}from"./index-DyLZQAQu.js";var W,X,G,K,O,Q,Z,ee,le,ae,te,oe,ie,se,ne,re,ue,de,fe,_e,pe,ce,ve,me,he,Re,ge=y((()=>{F(),A(),R(),V(),al(),W={class:"card-header"},X={class:"profile-title"},G={class:"profile-name"},K={class:"card-body"},O={class:"info-row"},Q={class:"info-label"},Z={class:"info-value mono"},ee={class:"toggle-text"},le={key:0,class:"card-detail"},ae={class:"info-row"},te={class:"info-label"},oe={class:"info-value"},ie={class:"info-row"},se={class:"info-label"},ne={class:"info-value mono detail-path"},re={class:"info-row"},ue={class:"info-label"},de={class:"info-value"},fe={class:"info-row"},_e={class:"info-label"},pe={class:"info-value"},ce={class:"info-row"},ve={class:"info-label"},me={class:"info-value"},he={class:"card-actions"},Re=T({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:x}){const u=C,{t:l}=N(),n=L(),r=D(),g=el(),p=h(!1),d=h(!1),c=h(!1),o=h(!1),v=h(null),I=Oe(()=>u.profile.name==="default");async function M(){if(p.value){p.value=!1;return}p.value=!0,d.value=!0;try{v.value=await n.fetchProfileDetail(u.profile.name)}finally{d.value=!1}}async function f(){g.warning({title:l("profiles.switchTo"),content:l("profiles.switchConfirm",{name:u.profile.name}),positiveText:l("profiles.switchTo"),negativeText:l("common.cancel"),onPositiveClick:t})}async function t(){o.value=!0;try{await n.switchHermesProfile(u.profile.name)?(r.success(l("profiles.switchSuccess",{name:u.profile.name})),setTimeout(()=>window.location.reload(),500)):r.error(l("profiles.switchFailed"))}finally{o.value=!1}}function w(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:u.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await n.deleteProfile(u.profile.name)?r.success(l("profiles.deleteSuccess")):r.error(l("profiles.deleteFailed"))}})}async function z(){c.value=!0;try{await n.exportProfile(u.profile.name)?r.success(l("profiles.exportSuccess")):r.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,H)=>(m(),$("div",{class:J(["profile-card",{active:C.profile.active}])},[a("div",W,[a("div",X,[_(tl,{name:C.profile.name,avatar:C.profile.avatar,size:28},null,8,["name","avatar"]),a("h3",G,i(C.profile.name),1)]),C.profile.active?(m(),k(e(Ke),{key:0,size:"tiny",type:"success",bordered:!1},{default:s(()=>[P(i(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",K,[a("div",O,[a("span",Q,i(e(l)("profiles.model")),1),a("code",Z,i(C.profile.model),1)])]),a("div",{class:"card-detail-toggle",onClick:M},[(m(),$("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:J(["toggle-icon",{expanded:p.value}])},[...H[0]||(H[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",ee,i(p.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),p.value?(m(),$("div",le,[_(e(Le),{show:d.value,size:"small"},{default:s(()=>[v.value?(m(),$(Ue,{key:0},[a("div",ae,[a("span",te,i(e(l)("profiles.provider")),1),a("span",oe,i(v.value.provider),1)]),a("div",ie,[a("span",se,i(e(l)("profiles.path")),1),a("code",ne,i(v.value.path),1)]),a("div",re,[a("span",ue,i(e(l)("profiles.skills")),1),a("span",de,i(v.value.skills),1)]),a("div",fe,[a("span",_e,i(e(l)("profiles.hasEnv")),1),a("span",pe,i(v.value.hasEnv?"Yes":"No"),1)]),a("div",ce,[a("span",ve,i(e(l)("profiles.hasSoulMd")),1),a("span",me,i(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",he,[C.profile.active?S("",!0):(m(),k(e(b),{key:0,size:"tiny",loading:o.value,quaternary:"",type:"primary",onClick:f},{default:s(()=>[P(i(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),_(e(b),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:w},{default:s(()=>[P(i(e(l)("common.delete")),1)]),_:1},8,["disabled"]),_(e(b),{size:"tiny",quaternary:"",loading:c.value,onClick:z},{default:s(()=>[P(i(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),ol=y((()=>{})),je,il=y((()=>{ge(),ge(),ol(),B(),je=U(Re,[["__scopeId","data-v-6cae06e2"]])})),ye,we,Ae,Pe=y((()=>{F(),il(),R(),V(),ye={key:0,class:"empty-state"},we={key:1,class:"profiles-grid"},Ae=T({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:x}=N(),u=L();return(l,n)=>e(u).profiles.length===0?(m(),$("div",ye,[n[1]||(n[1]=a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[a("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),a("circle",{cx:"12",cy:"7",r:"4"})],-1)),a("p",null,i(e(x)("profiles.noProfiles")),1)])):(m(),$("div",we,[(m(!0),$(Ue,null,Ge(e(u).profiles,r=>(m(),k(je,{key:r.name,profile:r,onRename:n[0]||(n[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),De,nl=y((()=>{Pe(),Pe(),sl(),B(),De=U(Ae,[["__scopeId","data-v-51e73d5a"]])})),Ce,qe,xe=y((()=>{F(),A(),R(),V(),Ce={class:"modal-footer"},qe=T({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:x}){const u=x,{t:l}=N(),n=L(),r=D(),g=h(!0),p=h(!1),d=h(""),c=h(!1),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=l("profiles.nameValidation"):o.value="",d.value=t}async function I(){if(!d.value){r.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(d.value)){r.error(l("profiles.nameValidation"));return}p.value=!0;try{const f=await n.createProfile(d.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],z=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||z.length>0)){const j=[];t.length>0&&j.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&j.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),z.length>0&&j.push(l("profiles.cloneStrippedConfigCredentials",{count:z.length,list:z.join(", ")})),r.info(`${l("profiles.createSuccess",{name:d.value.trim()})}
2
2
  ${j.join(`
3
3
  `)}`,{duration:6e3})}else r.success(l("profiles.createSuccess",{name:d.value.trim()}));u("saved")}else{const t=f.error||l("profiles.createFailed");r.error(t)}}finally{p.value=!1}}function M(){g.value=!1,setTimeout(()=>u("close"),200)}return(f,t)=>(m(),k(e(Y),{show:g.value,"onUpdate:show":t[2]||(t[2]=w=>g.value=w),preset:"card",title:e(l)("profiles.create"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!p.value,onAfterLeave:t[3]||(t[3]=w=>u("close"))},{footer:s(()=>[a("div",Ce,[_(e(b),{onClick:M},{default:s(()=>[P(i(e(l)("common.cancel")),1)]),_:1}),_(e(b),{type:"primary",loading:p.value,onClick:I},{default:s(()=>[P(i(e(l)("common.create")),1)]),_:1},8,["loading"])])]),default:s(()=>[_(e(Be),{"label-placement":"top"},{default:s(()=>[_(e(q),{label:e(l)("profiles.name"),required:""},{default:s(()=>[_(e(Ne),{value:d.value,"onUpdate:value":t[0]||(t[0]=w=>d.value=w),placeholder:e(l)("profiles.namePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),o.value?(m(),k(e(E),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:s(()=>[P(i(o.value),1)]),_:1})):S("",!0),_(e(q),{label:e(l)("profiles.cloneFromCurrent")},{default:s(()=>[_(e(Ze),{value:c.value,"onUpdate:value":t[1]||(t[1]=w=>c.value=w)},null,8,["value"])]),_:1},8,["label"]),c.value?(m(),k(e(E),{key:1,depth:"3",style:{"font-size":"12px"}},{default:s(()=>[P(i(e(l)("profiles.cloneCleanupNotice")),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),rl=y((()=>{})),ul=y((()=>{})),Ee,dl=y((()=>{xe(),xe(),rl(),ul(),B(),Ee=U(qe,[["__scopeId","data-v-06cc88f3"]])})),ke,Ye,be=y((()=>{F(),A(),R(),V(),ke={class:"modal-footer"},Ye=T({__name:"ProfileRenameModal",props:{profileName:{}},emits:["close","saved"],setup(C,{emit:x}){const u=C,l=x,{t:n}=N(),r=L(),g=D(),p=h(!0),d=h(!1),c=h(""),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=n("profiles.nameValidation"):o.value="",c.value=t}async function I(){if(!c.value){g.warning(n("profiles.newNamePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(c.value)){g.error(n("profiles.nameValidation"));return}d.value=!0;try{await r.renameProfile(u.profileName,c.value.trim())?(g.success(n("profiles.renameSuccess")),l("saved")):g.error(n("profiles.renameFailed"))}finally{d.value=!1}}function M(){p.value=!1,setTimeout(()=>l("close"),200)}return(f,t)=>(m(),k(e(Y),{show:p.value,"onUpdate:show":t[1]||(t[1]=w=>p.value=w),preset:"card",title:e(n)("profiles.rename"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!d.value,onAfterLeave:t[2]||(t[2]=w=>l("close"))},{footer:s(()=>[a("div",ke,[_(e(b),{onClick:M},{default:s(()=>[P(i(e(n)("common.cancel")),1)]),_:1}),_(e(b),{type:"primary",loading:d.value,onClick:I},{default:s(()=>[P(i(e(n)("common.confirm")),1)]),_:1},8,["loading"])])]),default:s(()=>[_(e(Be),{"label-placement":"top"},{default:s(()=>[_(e(q),{label:e(n)("profiles.newName"),required:""},{default:s(()=>[_(e(Ne),{value:c.value,"onUpdate:value":t[0]||(t[0]=w=>c.value=w),placeholder:e(n)("profiles.newNamePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),o.value?(m(),k(e(E),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:s(()=>[P(i(o.value),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),fl=y((()=>{})),He,_l=y((()=>{be(),be(),fl(),B(),He=U(Ye,[["__scopeId","data-v-740612c1"]])})),Me,Je,Se=y((()=>{F(),A(),R(),V(),Me={class:"modal-footer"},Je=T({__name:"ProfileImportModal",emits:["close","saved"],setup(C,{emit:x}){const u=x,{t:l}=N(),n=L(),r=D(),g=h(!0),p=h(!1),d=h([]),c=[".tar.gz",".tgz",".gz",".zip"];function o({file:M}){const f=M.name?.toLowerCase()||"";return c.some(t=>f.endsWith(t))?!0:(r.warning(l("profiles.importInvalidFile")),!1)}async function v(){if(!d.value.length){r.warning(l("profiles.importSelectFile"));return}p.value=!0;try{const M=d.value[0].file;if(!M){r.error(l("profiles.importFailed"));return}await n.importProfile(M)?(r.success(l("profiles.importSuccess")),u("saved")):r.error(l("profiles.importFailed"))}finally{p.value=!1}}function I(){g.value=!1,setTimeout(()=>u("close"),200)}return(M,f)=>(m(),k(e(Y),{show:g.value,"onUpdate:show":f[1]||(f[1]=t=>g.value=t),preset:"card",title:e(l)("profiles.import"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!p.value,onAfterLeave:f[2]||(f[2]=t=>u("close"))},{footer:s(()=>[a("div",Me,[_(e(b),{onClick:I},{default:s(()=>[P(i(e(l)("common.cancel")),1)]),_:1}),_(e(b),{type:"primary",loading:p.value,disabled:!d.value.length,onClick:v},{default:s(()=>[P(i(e(l)("common.confirm")),1)]),_:1},8,["loading","disabled"])])]),default:s(()=>[_(e(Qe),{"file-list":d.value,"onUpdate:fileList":f[0]||(f[0]=t=>d.value=t),max:1,accept:c.join(","),disabled:p.value,onBeforeUpload:o},{default:s(()=>[_(e(b),null,{default:s(()=>[P(i(e(l)("profiles.importSelectFile")),1)]),_:1})]),_:1},8,["file-list","accept","disabled"])]),_:1},8,["show","title","mask-closable"]))}})})),pl=y((()=>{})),We,cl=y((()=>{Se(),Se(),pl(),B(),We=U(Je,[["__scopeId","data-v-accddacf"]])})),$e,Ie,ze,Fe,Te,Xe,Ve=y((()=>{F(),A(),V(),nl(),dl(),_l(),cl(),R(),$e={class:"profiles-view"},Ie={class:"page-header"},ze={class:"header-title"},Fe={class:"header-actions"},Te={class:"profiles-content"},Xe=T({__name:"ProfilesView",setup(C){const{t:x}=N(),u=L(),l=h(!1),n=h(!1),r=h(null);ll(()=>{u.fetchHermesProfiles()});function g(){l.value=!1}function p(){r.value=null}function d(){n.value=!1}return(c,o)=>(m(),$("div",$e,[a("header",Ie,[a("h2",ze,i(e(x)("profiles.title")),1),a("div",Fe,[_(e(b),{size:"small",onClick:o[0]||(o[0]=v=>n.value=!0)},{icon:s(()=>[...o[6]||(o[6]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[a("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),a("polyline",{points:"17 8 12 3 7 8"}),a("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)])]),default:s(()=>[P(" "+i(e(x)("profiles.import")),1)]),_:1}),_(e(b),{type:"primary",size:"small",onClick:o[1]||(o[1]=v=>l.value=!0)},{icon:s(()=>[...o[7]||(o[7]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[a("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),a("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:s(()=>[P(" "+i(e(x)("profiles.create")),1)]),_:1})])]),a("div",Te,[_(e(Le),{show:e(u).loading&&e(u).profiles.length===0},{default:s(()=>[_(De,{onRename:o[2]||(o[2]=v=>r.value=v)})]),_:1},8,["show"])]),l.value?(m(),k(Ee,{key:0,onClose:o[3]||(o[3]=v=>l.value=!1),onSaved:g})):S("",!0),r.value?(m(),k(He,{key:1,"profile-name":r.value,onClose:o[4]||(o[4]=v=>r.value=null),onSaved:p},null,8,["profile-name"])):S("",!0),n.value?(m(),k(We,{key:2,onClose:o[5]||(o[5]=v=>n.value=!1),onSaved:d})):S("",!0)]))}})})),vl=y((()=>{})),ml,hl=y((()=>{Ve(),Ve(),vl(),B(),ml=U(Xe,[["__scopeId","data-v-4b884a5a"]])}));hl();export{ml as default};
@@ -1 +1 @@
1
- import{n as _}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as n,$t as t,Bt as c,nn as i,sn as g,tn as m,wn as h,xn as s}from"./ui-vendor-DNWaqYj5.js";import{n as b,t as f}from"./_plugin-vue_export-helper-D4mtpdbl.js";var a,r,o,l,u,p,d=_((()=>{c(),a={class:"setting-row"},r={class:"setting-info"},o={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=g({__name:"SettingRow",props:{label:{},hint:{}},setup(e){return(v,y)=>(s(),i("div",a,[t("div",r,[t("label",o,n(e.label),1),e.hint?(s(),i("p",l,n(e.hint),1)):m("",!0)]),t("div",u,[h(v.$slots,"default",{},void 0,!0)])]))}})})),w=_((()=>{})),S,C=_((()=>{d(),d(),w(),b(),S=f(p,[["__scopeId","data-v-b81640b4"]])}));export{C as n,S as t};
1
+ import{n as _}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as n,$t as t,Bt as c,nn as i,sn as g,tn as m,wn as h,xn as s}from"./ui-vendor-DNWaqYj5.js";import{n as b,t as f}from"./_plugin-vue_export-helper-CtZk2OSc.js";var a,r,o,l,u,p,d=_((()=>{c(),a={class:"setting-row"},r={class:"setting-info"},o={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=g({__name:"SettingRow",props:{label:{},hint:{}},setup(e){return(v,y)=>(s(),i("div",a,[t("div",r,[t("label",o,n(e.label),1),e.hint?(s(),i("p",l,n(e.hint),1)):m("",!0)]),t("div",u,[h(v.$slots,"default",{},void 0,!0)])]))}})})),w=_((()=>{})),S,C=_((()=>{d(),d(),w(),b(),S=f(p,[["__scopeId","data-v-b81640b4"]])}));export{C as n,S as t};
@@ -1 +1 @@
1
- import{a as ka,n as U}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as _,$t as g,A as Ue,An as i,At as T,Bn as C,Bt as L,Cn as Zt,E as ae,Jn as e,O as fe,On as za,Pt as he,Q as Ha,Qt as Q,Rt as Na,S as ea,W as ye,Xn as Va,Yt as ve,an as N,en as se,f as te,ft as F,g as ta,m as K,nn as M,on as a,qt as be,sn as O,t as B,tn as I,u as Fa,un as X,v as Ae,w as Z,wt as z,xn as S,yn as pe,z as le,zn as Ta}from"./ui-vendor-DNWaqYj5.js";import{c as E,f as Da,l as W,m as Ia,p as $a}from"./vue-vendor-VX6KvV1_.js";import{l as Ka,n as j,t as G,u as Ra}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{N as La}from"./vendor-B1Lfatlz.js";import{l as Oa,x as Ce}from"./system-vQTkarwT.js";import{$ as Ba,C as ue,J as Ea,S as re,X as aa,Y as sa,c as Wa,et as ja,f as Ga,g as Me,h as Pe,i as Ja,l as Ya,m as qa,n as Xa,o as Qa,p as Za,q as es,r as ts,s as as,t as ss,u as la}from"./index-BHU-82RO.js";import{n as de,t as p}from"./SettingRow-wqcLQ0FL.js";import{n as ls,t as is}from"./session-browser-prefs-OR-qaA1z.js";import{a as ns,c as os,i as us,n as rs,o as ds,r as xe,t as ke}from"./ttsHelpers-CVcFKmJR.js";import{n as cs,t as vs}from"./models-BX7pr_Gd.js";var ze,ia,He=U((()=>{L(),B(),E(),re(),Ba(),de(),ze={class:"settings-section"},ia=O({__name:"DisplaySettings",setup(J){const t=ue(),s=le(),{t:l}=W(),{brightness:o,setBrightness:m}=ja(),y=[{label:l("settings.display.themeLight"),value:"light"},{label:l("settings.display.themeDark"),value:"dark"},{label:l("settings.display.themeSystem"),value:"system"}];async function r(n){try{await t.saveSection("display",n),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}}function c(n){const u=n;m(u),r({skin:u})}return(n,u)=>(S(),M("section",ze,[a(p,{label:e(l)("settings.display.theme"),hint:e(l)("settings.display.themeHint")},{default:i(()=>[a(e(F),{value:e(o),options:y,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.streaming"),hint:e(l)("settings.display.streamingHint")},{default:i(()=>[a(e(K),{value:e(t).display.streaming,"onUpdate:value":u[0]||(u[0]=h=>r({streaming:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.compact"),hint:e(l)("settings.display.compactHint")},{default:i(()=>[a(e(K),{value:e(t).display.compact,"onUpdate:value":u[1]||(u[1]=h=>r({compact:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.showReasoning"),hint:e(l)("settings.display.showReasoningHint")},{default:i(()=>[a(e(K),{value:e(t).display.show_reasoning,"onUpdate:value":u[2]||(u[2]=h=>r({show_reasoning:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.showCost"),hint:e(l)("settings.display.showCostHint")},{default:i(()=>[a(e(K),{value:e(t).display.show_cost,"onUpdate:value":u[3]||(u[3]=h=>r({show_cost:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.inlineDiffs"),hint:e(l)("settings.display.inlineDiffsHint")},{default:i(()=>[a(e(K),{value:e(t).display.inline_diffs,"onUpdate:value":u[4]||(u[4]=h=>r({inline_diffs:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.bellOnComplete"),hint:e(l)("settings.display.bellOnCompleteHint")},{default:i(()=>[a(e(K),{value:e(t).display.bell_on_complete,"onUpdate:value":u[5]||(u[5]=h=>r({bell_on_complete:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.busyInputMode"),hint:e(l)("settings.display.busyInputModeHint")},{default:i(()=>[a(e(K),{value:e(t).display.busy_input_mode==="interrupt","onUpdate:value":u[6]||(u[6]=h=>r({busy_input_mode:h?"interrupt":"off"}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ps=U((()=>{})),na,ms=U((()=>{He(),He(),ps(),j(),na=G(ia,[["__scopeId","data-v-e5486815"]])})),Ne,oa,Ve=U((()=>{L(),B(),E(),re(),de(),Ne={class:"settings-section"},oa=O({__name:"AgentSettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={};function m(r){t.updateLocal("agent",r),t.saveSection("agent",r).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function y(r,c){t.updateLocal("agent",{[r]:c}),o[r]&&clearTimeout(o[r]),o[r]=setTimeout(async()=>{try{await t.saveSection("agent",{[r]:c}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(r,c)=>(S(),M("section",Ne,[a(p,{label:e(l)("settings.agent.maxTurns"),hint:e(l)("settings.agent.maxTurnsHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":c[0]||(c[0]=n=>n!=null&&y("max_turns",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.gatewayTimeout"),hint:e(l)("settings.agent.gatewayTimeoutHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":c[1]||(c[1]=n=>n!=null&&y("gateway_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.restartDrainTimeout"),hint:e(l)("settings.agent.restartDrainTimeoutHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=n=>n!=null&&y("restart_drain_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.toolEnforcement"),hint:e(l)("settings.agent.toolEnforcementHint")},{default:i(()=>[a(e(F),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(l)("settings.agent.auto"),value:"auto"},{label:e(l)("settings.agent.always"),value:"always"},{label:e(l)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=n=>m({tool_use_enforcement:n}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),_s=U((()=>{})),ua,gs=U((()=>{Ve(),Ve(),_s(),j(),ua=G(oa,[["__scopeId","data-v-d06d83a7"]])})),Fe,Te,De,ra,Ie=U((()=>{L(),B(),E(),re(),sa(),de(),Fe={class:"settings-section gateway-auto-start-settings"},Te={class:"section-title"},De={class:"section-hint"},ra=O({__name:"GatewayAutoStartSettings",setup(J){const t=ue(),s=aa(),l=le(),{t:o}=W(),m=Q(()=>t.gatewayAutoStart.enabled!==!1),y=Q(()=>Array.isArray(t.gatewayAutoStart.include)?"include":"all"),r=Q(()=>t.gatewayAutoStart.include||[]),c=Q(()=>t.gatewayAutoStart.exclude||[]),n=Q(()=>s.profiles.map(x=>({label:x.name,value:x.name}))),u=Q(()=>[{label:o("settings.gatewayAutoStart.modeAll"),value:"all"},{label:o("settings.gatewayAutoStart.modeInclude"),value:"include"}]);function h(x){const V=new Set,D=[];for(const ne of x){const q=String(ne||"").trim();!q||V.has(q)||(V.add(q),D.push(q))}return D}async function f(x){try{t.updateLocal("gatewayAutoStart",x),await t.saveSection("gatewayAutoStart",x,{restart:!1}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}}function P(x){f(x==="include"?{include:t.gatewayAutoStart.include||[],exclude:null}:{include:null})}function $(x){f({include:h(x),exclude:null})}function Y(x){const V=h(x);f({exclude:V.length>0?V:null})}return(x,V)=>(S(),M("section",Fe,[g("h3",Te,_(e(o)("settings.gatewayAutoStart.title")),1),g("p",De,_(e(o)("settings.gatewayAutoStart.description")),1),a(p,{label:e(o)("settings.gatewayAutoStart.enabled"),hint:e(o)("settings.gatewayAutoStart.enabledHint")},{default:i(()=>[a(e(K),{value:m.value,"onUpdate:value":V[0]||(V[0]=D=>f({enabled:D}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.gatewayAutoStart.mode"),hint:e(o)("settings.gatewayAutoStart.modeHint")},{default:i(()=>[a(e(F),{value:y.value,options:u.value,size:"small",class:"input-md","onUpdate:value":P},null,8,["value","options"])]),_:1},8,["label","hint"]),y.value==="include"?(S(),se(p,{key:0,label:e(o)("settings.gatewayAutoStart.include"),hint:e(o)("settings.gatewayAutoStart.includeHint")},{default:i(()=>[a(e(F),{multiple:"",filterable:"",value:r.value,options:n.value,size:"small",class:"input-md",placeholder:e(o)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":$},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):I("",!0),y.value==="all"?(S(),se(p,{key:1,label:e(o)("settings.gatewayAutoStart.exclude"),hint:e(o)("settings.gatewayAutoStart.excludeHint")},{default:i(()=>[a(e(F),{multiple:"",filterable:"",value:c.value,options:n.value,size:"small",class:"input-md",placeholder:e(o)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":Y},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):I("",!0)]))}})})),hs=U((()=>{})),da,fs=U((()=>{Ie(),Ie(),hs(),j(),da=G(ra,[["__scopeId","data-v-acd78d5c"]])})),$e,ca,Ke=U((()=>{L(),B(),E(),re(),de(),$e={class:"settings-section"},ca=O({__name:"MemorySettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={};function m(r){t.updateLocal("memory",r),t.saveSection("memory",r).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function y(r,c){t.updateLocal("memory",{[r]:c}),o[r]&&clearTimeout(o[r]),o[r]=setTimeout(async()=>{try{await t.saveSection("memory",{[r]:c}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(r,c)=>(S(),M("section",$e,[a(p,{label:e(l)("settings.memory.enabled"),hint:e(l)("settings.memory.enabledHint")},{default:i(()=>[a(e(K),{value:e(t).memory.memory_enabled,"onUpdate:value":c[0]||(c[0]=n=>m({memory_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.userProfile"),hint:e(l)("settings.memory.userProfileHint")},{default:i(()=>[a(e(K),{value:e(t).memory.user_profile_enabled,"onUpdate:value":c[1]||(c[1]=n=>m({user_profile_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.charLimit"),hint:e(l)("settings.memory.charLimitHint")},{default:i(()=>[a(e(Z),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=n=>n!=null&&y("memory_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.userCharLimit"),hint:e(l)("settings.memory.userCharLimitHint")},{default:i(()=>[a(e(Z),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=n=>n!=null&&y("user_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ys=U((()=>{})),va,bs=U((()=>{Ke(),Ke(),ys(),j(),va=G(ca,[["__scopeId","data-v-b2529605"]])})),Re,pa,Le=U((()=>{L(),B(),E(),re(),de(),Re={class:"settings-section"},pa=O({__name:"CompressionSettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={enabled:!0,threshold:.5,target_ratio:.2,protect_last_n:20,protect_first_n:3},m={};function y(c){t.updateLocal("compression",c),t.saveSection("compression",c).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function r(c,n){t.updateLocal("compression",{[c]:n}),m[c]&&clearTimeout(m[c]),m[c]=setTimeout(async()=>{try{await t.saveSection("compression",{[c]:n}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(c,n)=>(S(),M("section",Re,[a(p,{label:e(l)("settings.compression.enabled"),hint:e(l)("settings.compression.enabledHint")},{default:i(()=>[a(e(K),{value:e(t).compression.enabled??o.enabled,size:"small","onUpdate:value":n[0]||(n[0]=u=>y({enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.threshold"),hint:e(l)("settings.compression.thresholdHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.threshold??o.threshold,min:.1,max:.95,step:.05,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=u=>u!=null&&r("threshold",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.targetRatio"),hint:e(l)("settings.compression.targetRatioHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.target_ratio??o.target_ratio,min:.05,max:.8,step:.05,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=u=>u!=null&&r("target_ratio",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.protectLastN"),hint:e(l)("settings.compression.protectLastNHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.protect_last_n??o.protect_last_n,min:0,max:200,step:1,size:"small",class:"input-sm","onUpdate:value":n[3]||(n[3]=u=>u!=null&&r("protect_last_n",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.protectFirstN"),hint:e(l)("settings.compression.protectFirstNHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.protect_first_n??o.protect_first_n,min:0,max:50,step:1,size:"small",class:"input-sm","onUpdate:value":n[4]||(n[4]=u=>u!=null&&r("protect_first_n",u))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ws=U((()=>{})),ma,Ss=U((()=>{Le(),Le(),ws(),j(),ma=G(pa,[["__scopeId","data-v-b584a6a0"]])})),Oe,_a,Be=U((()=>{L(),B(),E(),re(),is(),de(),Oe={class:"settings-section"},_a=O({__name:"SessionSettings",setup(J){const t=ue(),s=ls(),l=le(),{t:o}=W(),m={};function y(n){t.updateLocal("session_reset",n),t.saveSection("session_reset",n).then(()=>{l.success(o("settings.saved"))}).catch(()=>{l.error(o("settings.saveFailed"))})}function r(n,u){t.updateLocal("session_reset",{[n]:u}),m[n]&&clearTimeout(m[n]),m[n]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[n]:u}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}},300)}async function c(n){try{await t.saveSection("approvals",{mode:n?"manual":"off"}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}}return(n,u)=>(S(),M("section",Oe,[a(p,{label:e(o)("settings.session.requireAuth"),hint:e(o)("settings.session.requireAuthHint")},{default:i(()=>[a(e(K),{value:e(t).approvals.mode==="manual","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.mode"),hint:e(o)("settings.session.modeHint")},{default:i(()=>[a(e(F),{value:e(t).sessionReset.mode||"both",options:[{label:e(o)("settings.session.modeBoth"),value:"both"},{label:e(o)("settings.session.modeIdle"),value:"idle"},{label:e(o)("settings.session.modeDaily"),value:"daily"},{label:e(o)("settings.session.modeNone"),value:"none"}],size:"small",class:"input-md","onUpdate:value":u[0]||(u[0]=h=>y({mode:h}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.idleMinutes"),hint:e(o)("settings.session.idleMinutesHint")},{default:i(()=>[a(e(Z),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":u[1]||(u[1]=h=>h!=null&&r("idle_minutes",h))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.atHour"),hint:e(o)("settings.session.atHourHint")},{default:i(()=>[a(e(Z),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":u[2]||(u[2]=h=>h!=null&&r("at_hour",h))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.liveMonitorHumanOnly"),hint:e(o)("settings.session.liveMonitorHumanOnlyHint")},{default:i(()=>[a(e(K),{value:e(s).humanOnly,"onUpdate:value":u[3]||(u[3]=h=>e(s).setHumanOnly(h))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Us=U((()=>{})),ga,As=U((()=>{Be(),Be(),Us(),j(),ga=G(_a,[["__scopeId","data-v-a317c50b"]])})),Ee,ha,We=U((()=>{L(),B(),E(),re(),de(),Ee={class:"settings-section"},ha=O({__name:"PrivacySettings",setup(J){const t=ue(),s=le(),{t:l}=W();async function o(m){try{await t.saveSection("privacy",m),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}}return(m,y)=>(S(),M("section",Ee,[a(p,{label:e(l)("settings.privacy.redactPii"),hint:e(l)("settings.privacy.redactPiiHint")},{default:i(()=>[a(e(K),{value:e(t).privacy.redact_pii,"onUpdate:value":y[0]||(y[0]=r=>o({redact_pii:r}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Cs=U((()=>{})),fa,Ms=U((()=>{We(),We(),Cs(),j(),fa=G(ha,[["__scopeId","data-v-43145f27"]])})),je,Ge,Je,Ye,qe,Xe,Qe,Ze,ya,et=U((()=>{L(),B(),vs(),Oa(),E(),je={class:"settings-section"},Ge={key:0,class:"empty-hint"},Je={class:"provider-header"},Ye={class:"provider-name"},qe={key:0,class:"provider-fields"},Xe={class:"field-row"},Qe={key:1,class:"provider-fields"},Ze={class:"field-row"},ya=O({__name:"ModelSettings",setup(J){const{t}=W(),s=cs(),l=le(),o=C(null),m=C({});pe(()=>{s.providers.length===0&&s.fetchProviders()});const y=u=>!s.providers.find(h=>h.provider===u)?.builtin&&u.startsWith("custom:");function r(u){if(!(u in m.value)){const h=s.providers.find(f=>f.provider===u);m.value[u]=h?.api_key||""}return m.value[u]}async function c(u){const h=r(u);if(!h.trim()){l.warning(t("settings.models.apiKeyPlaceholder"));return}o.value=u;try{await Ce(u,{api_key:h.trim()}),l.success(t("settings.models.saved")),await s.fetchProviders()}catch(f){l.error(f.message||t("settings.models.saveFailed"))}finally{o.value=null}}async function n(u){const h=r(u);o.value=u;try{await Ce(u,{api_key:h.trim()}),l.success(t("settings.models.saved")),await s.fetchProviders()}catch(f){l.error(f.message||t("settings.models.saveFailed"))}finally{o.value=null}}return(u,h)=>(S(),M("section",je,[a(e(ta),{show:e(s).loading},{default:i(()=>[e(s).providers.length===0?(S(),M("div",Ge,[a(e(Na),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):I("",!0),(S(!0),M(ve,null,Zt(e(s).providers,f=>(S(),M("div",{key:f.provider,class:"provider-section"},[g("div",Je,[g("h4",Ye,_(f.label),1),g("span",{class:Va(["type-badge",y(f.provider)?"custom":"builtin"])},_(y(f.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),y(f.provider)?(S(),M("div",Qe,[g("div",Ze,[a(e(T),{value:r(f.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":P=>m.value[f.provider]=P},null,8,["value","placeholder","onUpdate:value"]),a(e(z),{type:"primary",size:"small",loading:o.value===f.provider,onClick:P=>n(f.provider)},{default:i(()=>[N(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(S(),M("div",qe,[g("div",Xe,[a(e(T),{value:r(f.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":P=>m.value[f.provider]=P},null,8,["value","placeholder","onUpdate:value"]),a(e(z),{type:"primary",size:"small",loading:o.value===f.provider,onClick:P=>c(f.provider)},{default:i(()=>[N(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),Ps=U((()=>{})),ba,xs=U((()=>{et(),et(),Ps(),j(),ba=G(ya,[["__scopeId","data-v-8cd750e1"]])})),tt,at,st,lt,it,nt,ot,ut,rt,dt,ct,vt,pt,mt,_t,gt,ht,ft,yt,bt,wt,St,Ut,At,Ct,wa,Mt=U((()=>{L(),B(),E(),la(),Ea(),tt=ka(La()),at={class:"account-settings"},st={class:"section-desc"},lt={class:"avatar-section"},it={class:"section-title"},nt={class:"avatar-row"},ot={class:"avatar-display"},ut={class:"avatar-actions"},rt={class:"avatar-hint"},dt={class:"action-buttons"},ct={class:"configured-section"},vt={class:"action-row"},pt={class:"action-label"},mt={class:"action-buttons"},_t={class:"locked-ips-section"},gt={class:"section-title"},ht={class:"action-row",style:{"margin-bottom":"12px"}},ft={class:"action-label"},yt={class:"action-buttons"},bt={key:0,class:"locked-list"},wt={class:"locked-info"},St={class:"locked-ip"},Ut={class:"locked-badge"},At={class:"locked-ttl"},Ct={key:1,class:"empty-hint"},wa=O({__name:"AccountSettings",setup(J){const{t}=W(),s=le(),l=C(null),o=C(!1),m=C(null),y=C(null),r=C(!1);function c(H,w){return new Promise((A,R)=>{const ce=new FileReader;ce.onload=()=>{const oe=new Image;oe.onload=()=>{const ie=document.createElement("canvas");ie.width=oe.width,ie.height=oe.height,ie.getContext("2d").drawImage(oe,0,0);const we=ge=>{const Se=ie.toDataURL("image/jpeg",ge);Se.length<=w||ge<=.3?A(Se):we(ge-.1)};we(.8)},oe.onerror=R,oe.src=ce.result},ce.onerror=R,ce.readAsDataURL(H)})}async function n(H){const w=H.target,A=w.files?.[0];if(A){if(!["image/png","image/jpeg","image/webp"].includes(A.type)){s.error(t("settings.userAvatar.invalidType")),w.value="";return}if(A.size>1024*1024){s.error(t("settings.userAvatar.tooLarge")),w.value="";return}r.value=!0;try{let R;A.size>500*1024?R=await c(A,500*1024):R=await new Promise((ce,oe)=>{const ie=new FileReader;ie.onload=()=>ce(ie.result),ie.onerror=oe,ie.readAsDataURL(A)}),await Me({type:"image",dataUrl:R}),m.value={type:"image",dataUrl:R},s.success(t("settings.userAvatar.saveSuccess"))}catch(R){s.error(R.message||t("settings.userAvatar.saveFailed"))}finally{r.value=!1,w.value=""}}}async function u(){r.value=!0;try{const H=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2),w=`${l.value||"default"}-${Date.now()}-${H}`,A=(0,tt.default)(w),R="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(A)));await Me({type:"image",dataUrl:R,seed:w}),m.value={type:"image",dataUrl:R,seed:w},s.success(t("settings.userAvatar.saveSuccess"))}catch(H){s.error(H.message||t("settings.userAvatar.saveFailed"))}finally{r.value=!1}}async function h(){r.value=!0;try{await Ga(),m.value={type:"default",seed:l.value||"default"},s.success(t("settings.userAvatar.resetSuccess"))}catch(H){s.error(H.message||t("settings.userAvatar.resetFailed"))}finally{r.value=!1}}const f=C(!1),P=C(""),$=C(""),Y=C(""),x=C(!1),V=C(""),D=C("");pe(async()=>{try{l.value=(await Qa()).username}catch{}try{m.value=await Ya()||{type:"default",seed:l.value||"default"}}catch{}});async function ne(){if($.value!==Y.value){s.error(t("login.passwordMismatch"));return}if($.value.length<6){s.error(t("login.passwordTooShort"));return}o.value=!0;try{await ss(P.value,$.value),f.value=!1,P.value="",$.value="",Y.value="",s.success(t("login.passwordChanged"))}catch(H){s.error(H.message||t("common.saveFailed"))}finally{o.value=!1}}async function q(){if(D.value.trim().length<2){s.error(t("login.usernameTooShort"));return}o.value=!0;try{await Xa(V.value,D.value.trim()),l.value=D.value.trim(),x.value=!1,V.value="",D.value="",s.success(t("login.usernameChanged"))}catch(H){s.error(H.message||t("common.saveFailed"))}finally{o.value=!1}}function me(){P.value="",$.value="",Y.value="",f.value=!0}function v(){V.value="",D.value="",x.value=!0}const d=C([]),b=C(!1);async function k(){b.value=!0;try{d.value=await as()}catch{}finally{b.value=!1}}async function ee(H){try{await qa(H),s.success(t("settings.lockedIps.unlocked")),await k()}catch(w){s.error(w.message||t("common.saveFailed"))}}async function _e(){try{const H=await Za();s.success(t("settings.lockedIps.allUnlocked",{count:H})),await k()}catch(H){s.error(H.message||t("common.saveFailed"))}}function xa(H){const w=Math.max(0,Math.round((H-Date.now())/6e4));return w>0?`${w} min`:t("common.expired")}return pe(()=>{k()}),(H,w)=>(S(),M("div",at,[g("p",st,_(e(t)("login.setupDescription")),1),g("div",lt,[g("h3",it,_(e(t)("settings.userAvatar.title")),1),g("div",nt,[g("div",ot,[a(es,{name:l.value||"default",avatar:m.value?.type==="image"&&m.value.dataUrl?{type:"image",dataUrl:m.value.dataUrl}:null,size:80},null,8,["name","avatar"])]),g("div",ut,[g("p",rt,_(e(t)("settings.userAvatar.hint")),1),g("div",dt,[a(e(z),{onClick:w[0]||(w[0]=A=>y.value?.click())},{default:i(()=>[N(_(e(t)("settings.userAvatar.upload")),1)]),_:1}),a(e(z),{onClick:u,loading:r.value},{default:i(()=>[N(_(e(t)("settings.userAvatar.random")),1)]),_:1},8,["loading"]),a(e(z),{onClick:h,loading:r.value},{default:i(()=>[N(_(e(t)("settings.userAvatar.reset")),1)]),_:1},8,["loading"])]),g("input",{ref_key:"avatarFileInput",ref:y,type:"file",accept:".png,.jpg,.jpeg,.webp",style:{display:"none"},onChange:n},null,544)])])]),g("div",ct,[g("div",vt,[g("span",pt,_(e(t)("login.passwordLoginConfigured",{username:l.value})),1),g("div",mt,[a(e(z),{onClick:me},{default:i(()=>[N(_(e(t)("login.changePassword")),1)]),_:1}),a(e(z),{onClick:v},{default:i(()=>[N(_(e(t)("login.changeUsername")),1)]),_:1})])])]),g("div",_t,[g("h3",gt,_(e(t)("settings.lockedIps.title")),1),g("div",ht,[g("span",ft,_(e(t)("settings.lockedIps.count",{count:d.value.length})),1),g("div",yt,[a(e(z),{size:"small",loading:b.value,onClick:k},{default:i(()=>[N(_(e(t)("common.retry")),1)]),_:1},8,["loading"]),d.value.length>0?(S(),se(e(ea),{key:0,onPositiveClick:_e},{trigger:i(()=>[a(e(z),{size:"small",type:"warning"},{default:i(()=>[N(_(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:i(()=>[N(" "+_(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):I("",!0)])]),d.value.length>0?(S(),M("div",bt,[(S(!0),M(ve,null,Zt(d.value,A=>(S(),M("div",{key:A.ip+A.type,class:"locked-item"},[g("div",wt,[g("span",St,_(A.ip),1),g("span",Ut,_(A.type),1),g("span",At,_(xa(A.lockedUntil)),1)]),a(e(z),{size:"tiny",type:"error",ghost:"",onClick:R=>ee(A.ip)},{default:i(()=>[N(_(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(S(),M("p",Ct,_(e(t)("settings.lockedIps.empty")),1))]),a(e(ye),{show:f.value,"onUpdate:show":w[5]||(w[5]=A=>f.value=A),preset:"dialog",title:e(t)("login.changePassword")},{action:i(()=>[a(e(z),{onClick:w[4]||(w[4]=A=>f.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:ne},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("login.currentPassword")},{default:i(()=>[a(e(T),{value:P.value,"onUpdate:value":w[1]||(w[1]=A=>P.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.newPassword")},{default:i(()=>[a(e(T),{value:$.value,"onUpdate:value":w[2]||(w[2]=A=>$.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.confirmPassword")},{default:i(()=>[a(e(T),{value:Y.value,"onUpdate:value":w[3]||(w[3]=A=>Y.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:be(ne,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(ye),{show:x.value,"onUpdate:show":w[9]||(w[9]=A=>x.value=A),preset:"dialog",title:e(t)("login.changeUsername")},{action:i(()=>[a(e(z),{onClick:w[8]||(w[8]=A=>x.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:q},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("login.currentPassword")},{default:i(()=>[a(e(T),{value:V.value,"onUpdate:value":w[6]||(w[6]=A=>V.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.newUsername")},{default:i(()=>[a(e(T),{value:D.value,"onUpdate:value":w[7]||(w[7]=A=>D.value=A),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:be(q,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),ks=U((()=>{})),Sa,zs=U((()=>{Mt(),Mt(),ks(),j(),Sa=G(wa,[["__scopeId","data-v-37ce8d61"]])})),Pt,xt,kt,zt,Ua,Ht=U((()=>{L(),B(),E(),la(),Pt={class:"user-management"},xt={class:"toolbar"},kt={class:"section-title"},zt={class:"section-desc"},Ua=O({__name:"UserManagementSettings",setup(J){const{t}=W(),s=le(),l=C(!1),o=C(!1),m=C([]),y=C([]),r=C(!1),c=C(null),n=Ta({username:"",password:"",role:"admin",status:"active",profiles:[]}),u=Q(()=>[{label:t("users.roles.admin"),value:"admin"},{label:t("users.roles.superAdmin"),value:"super_admin"}]),h=Q(()=>[{label:t("users.status.active"),value:"active"},{label:t("users.status.disabled"),value:"disabled"}]),f=Q(()=>y.value.map(v=>({label:v,value:v})));function P(){c.value=null,n.username="",n.password="",n.role="admin",n.status="active",n.profiles=[]}async function $(){l.value=!0;try{const v=await Wa();m.value=v.users,y.value=v.profiles}catch(v){s.error(v.message||t("users.loadFailed"))}finally{l.value=!1}}function Y(){P(),r.value=!0}function x(v){c.value=v,n.username=v.username,n.password="",n.role=v.role,n.status=v.status,n.profiles=[...v.profiles],r.value=!0}async function V(){if(n.username.trim().length<2){s.error(t("login.usernameTooShort"));return}if(!c.value&&n.password.length<6){s.error(t("login.passwordTooShort"));return}if(n.password&&n.password.length<6){s.error(t("login.passwordTooShort"));return}o.value=!0;try{const v={username:n.username.trim(),password:n.password||void 0,role:n.role,status:n.status,profiles:n.role==="super_admin"?[]:n.profiles,defaultProfile:n.profiles[0]||null},d=c.value?await Pe(c.value.id,v):await ts({...v,password:n.password});m.value=d.users,y.value=d.profiles,r.value=!1,P(),s.success(t("common.saved"))}catch(v){s.error(v.message||t("common.saveFailed"))}finally{o.value=!1}}async function D(v,d){o.value=!0;try{const b=await Pe(v.id,{status:d});m.value=b.users,y.value=b.profiles,s.success(t("common.saved"))}catch(b){s.error(b.message||t("common.saveFailed"))}finally{o.value=!1}}async function ne(v){o.value=!0;try{const d=await Ja(v.id);m.value=d.users,y.value=d.profiles,s.success(t("common.saved"))}catch(d){s.error(d.message||t("common.deleteFailed"))}finally{o.value=!1}}function q(v){return v?new Date(v).toLocaleString():"-"}const me=Q(()=>[{title:t("users.username"),key:"username",minWidth:140},{title:t("users.role"),key:"role",width:130,render:v=>X(he,{size:"small",type:v.role==="super_admin"?"warning":"default"},{default:()=>v.role==="super_admin"?t("users.roles.superAdmin"):t("users.roles.admin")})},{title:t("users.statusLabel"),key:"status",width:110,render:v=>X(he,{size:"small",type:v.status==="active"?"success":"error"},{default:()=>v.status==="active"?t("users.status.active"):t("users.status.disabled")})},{title:t("users.profiles"),key:"profiles",minWidth:200,render:v=>v.role==="super_admin"?X("span",{class:"muted"},t("users.allProfiles")):X(Ue,{size:4},{default:()=>v.profiles.length?v.profiles.map(d=>X(he,{size:"small",bordered:!1},{default:()=>d})):X("span",{class:"muted"},t("users.noProfiles"))})},{title:t("users.lastLogin"),key:"last_login_at",minWidth:170,render:v=>q(v.last_login_at)},{title:t("common.edit"),key:"actions",width:280,render:v=>X(Ue,{size:8},{default:()=>[X(z,{size:"small",onClick:()=>x(v)},{default:()=>t("common.edit")}),X(z,{size:"small",type:v.status==="active"?"warning":"primary",ghost:!0,loading:o.value,onClick:()=>D(v,v.status==="active"?"disabled":"active")},{default:()=>v.status==="active"?t("users.disable"):t("users.enable")}),X(ea,{onPositiveClick:()=>ne(v)},{trigger:()=>X(z,{size:"small",type:"error",ghost:!0,loading:o.value},{default:()=>t("common.delete")}),default:()=>t("users.deleteConfirm")})]})}]);return pe($),(v,d)=>(S(),M("div",Pt,[g("div",xt,[g("div",null,[g("h3",kt,_(e(t)("users.title")),1),g("p",zt,_(e(t)("users.description")),1)]),a(e(z),{type:"primary",onClick:Y},{default:i(()=>[N(_(e(t)("users.create")),1)]),_:1})]),a(e(Ha),{columns:me.value,data:m.value,loading:l.value,bordered:!1,"single-line":!1,size:"small"},null,8,["columns","data","loading"]),a(e(ye),{show:r.value,"onUpdate:show":d[6]||(d[6]=b=>r.value=b),preset:"dialog",title:c.value?e(t)("users.edit"):e(t)("users.create")},{action:i(()=>[a(e(z),{onClick:d[5]||(d[5]=b=>r.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:V},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("users.username")},{default:i(()=>[a(e(T),{value:n.username,"onUpdate:value":d[0]||(d[0]=b=>n.username=b),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:c.value?e(t)("users.newPasswordOptional"):e(t)("login.newPassword")},{default:i(()=>[a(e(T),{value:n.password,"onUpdate:value":d[1]||(d[1]=b=>n.password=b),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("users.role")},{default:i(()=>[a(e(F),{value:n.role,"onUpdate:value":d[2]||(d[2]=b=>n.role=b),options:u.value},null,8,["value","options"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("users.statusLabel")},{default:i(()=>[a(e(F),{value:n.status,"onUpdate:value":d[3]||(d[3]=b=>n.status=b),options:h.value},null,8,["value","options"])]),_:1},8,["label"]),n.role!=="super_admin"?(S(),se(e(ae),{key:0,label:e(t)("users.profiles")},{default:i(()=>[a(e(F),{value:n.profiles,"onUpdate:value":d[4]||(d[4]=b=>n.profiles=b),multiple:"",filterable:"",options:f.value,placeholder:e(t)("users.profilesPlaceholder")},null,8,["value","options","placeholder"])]),_:1},8,["label"])):I("",!0)]),_:1})]),_:1},8,["show","title"])]))}})})),Hs=U((()=>{})),Aa,Ns=U((()=>{Ht(),Ht(),Hs(),j(),Aa=G(Ua,[["__scopeId","data-v-bcd3f33a"]])})),Nt,Vt,Ft,Tt,Dt,It,$t,Kt,Rt,Lt,Ot,Bt,Et,Wt,jt,Ca,Gt=U((()=>{L(),B(),E(),us(),ds(),rs(),de(),Nt={class:"voice-settings"},Vt={class:"provider-hint"},Ft={class:"provider-hint"},Tt={class:"slider-row"},Dt={class:"slider-value"},It={class:"slider-row"},$t={class:"slider-value"},Kt={class:"provider-hint"},Rt={class:"clone-audio-row"},Lt={key:0,class:"clone-audio-name"},Ot={class:"test-section"},Bt={class:"test-title"},Et={class:"test-row"},Wt=10*1024*1024,jt="audio/mpeg,audio/mp3,audio/wav,.mp3,.wav",Ca=O({__name:"VoiceSettings",setup(J){const{t}=W(),s=ns(),l=os(),o=C(t("settings.voice.testTextDefault")),m=C(!1),y=C(null),r=[{label:t("settings.voice.providerWebSpeech"),value:"webspeech"},{label:t("settings.voice.providerOpenai"),value:"openai"},{label:t("settings.voice.providerCustom"),value:"custom"},{label:t("settings.voice.providerEdge"),value:"edge"},{label:t("settings.voice.providerMimo"),value:"mimo"}],c=[{label:"tts-1",value:"tts-1"},{label:"tts-1-hd",value:"tts-1-hd"}],n=[{label:"Alloy",value:"alloy"},{label:"Echo",value:"echo"},{label:"Fable",value:"fable"},{label:"Nova",value:"nova"},{label:"Onyx",value:"onyx"},{label:"Shimmer",value:"shimmer"}],u=[{label:"晓晓 (zh-CN-XiaoxiaoNeural)",value:"zh-CN-XiaoxiaoNeural"},{label:"晓萱 (zh-CN-XiaoxuanNeural)",value:"zh-CN-XiaoxuanNeural"},{label:"云希 (zh-CN-YunxiNeural)",value:"zh-CN-YunxiNeural"},{label:"云健 (zh-CN-YunjianNeural)",value:"zh-CN-YunjianNeural"},{label:"云扬 (zh-CN-YunyangNeural)",value:"zh-CN-YunyangNeural"},{label:"小晨 (zh-TW-HsiaoChenNeural)",value:"zh-TW-HsiaoChenNeural"},{label:"小宇 (zh-TW-HsiaoYuNeural)",value:"zh-TW-HsiaoYuNeural"},{label:"云哲 (zh-TW-YunJheNeural)",value:"zh-TW-YunJheNeural"},{label:"希雅 (zh-HK-HiuGaaiNeural)",value:"zh-HK-HiuGaaiNeural"},{label:"希文 (zh-HK-HiuMaanNeural)",value:"zh-HK-HiuMaanNeural"},{label:"文龙 (zh-HK-WanLungNeural)",value:"zh-HK-WanLungNeural"},{label:"Jenny (en-US-JennyNeural)",value:"en-US-JennyNeural"},{label:"Aria (en-US-AriaNeural)",value:"en-US-AriaNeural"},{label:"Guy (en-US-GuyNeural)",value:"en-US-GuyNeural"},{label:"Sonia (en-GB-SoniaNeural)",value:"en-GB-SoniaNeural"},{label:"Ryan (en-GB-RyanNeural)",value:"en-GB-RyanNeural"},{label:"Nanami (ja-JP-NanamiNeural)",value:"ja-JP-NanamiNeural"},{label:"Keita (ja-JP-KeitaNeural)",value:"ja-JP-KeitaNeural"},{label:"Sun-Hi (ko-KR-SunHiNeural)",value:"ko-KR-SunHiNeural"},{label:"InJoon (ko-KR-InJoonNeural)",value:"ko-KR-InJoonNeural"},{label:"Denise (fr-FR-DeniseNeural)",value:"fr-FR-DeniseNeural"},{label:"Henri (fr-FR-HenriNeural)",value:"fr-FR-HenriNeural"},{label:"Katja (de-DE-KatjaNeural)",value:"de-DE-KatjaNeural"},{label:"Conrad (de-DE-ConradNeural)",value:"de-DE-ConradNeural"}],h=C([]);pe(()=>{if("speechSynthesis"in window){const d=window.speechSynthesis.getVoices();d.length&&(h.value=d),window.speechSynthesis.onvoiceschanged=()=>{h.value=window.speechSynthesis.getVoices()}}});const f=[{label:"https://api.xiaomimimo.com/v1",value:"https://api.xiaomimimo.com/v1"},{label:"https://token-plan-cn.xiaomimimo.com/v1",value:"https://token-plan-cn.xiaomimimo.com/v1"}],P=[{label:t("settings.voice.mimoAuthModeBearer"),value:"bearer"},{label:t("settings.voice.mimoAuthModeApiKey"),value:"api-key"},{label:t("settings.voice.mimoAuthModeBoth"),value:"both"}],$=[{label:t("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:t("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"},{label:t("settings.voice.mimoModelVoiceClone"),value:"mimo-v2.5-tts-voiceclone"}],Y=[{label:"冰糖 (中文·女)",value:"冰糖"},{label:"茉莉 (中文·女)",value:"茉莉"},{label:"苏打 (中文·男)",value:"苏打"},{label:"白桦 (中文·男)",value:"白桦"},{label:"Mia (English·Female)",value:"Mia"},{label:"Chloe (English·Female)",value:"Chloe"},{label:"Milo (English·Male)",value:"Milo"},{label:"Dean (English·Male)",value:"Dean"}];function x(){return s.mimoModel.value==="mimo-v2.5-tts-voicedesign"?"voiceDesign":s.mimoModel.value==="mimo-v2.5-tts-voiceclone"?"voiceClone":"preset"}function V(){const d=x();return{baseUrl:s.mimoBaseUrl.value,apiKey:s.mimoApiKey.value,authMode:s.mimoAuthMode.value,model:s.mimoModel.value,voiceMode:d,voice:d==="preset"?s.mimoVoice.value:void 0,voiceDesignDesc:d==="voiceDesign"&&s.mimoVoiceDesignDesc.value||void 0,voiceCloneDataUri:d==="voiceClone"&&s.mimoVoiceCloneDataUri.value||void 0,voiceCloneFormat:d==="voiceClone"?s.mimoVoiceCloneFormat.value:void 0,stylePrompt:s.mimoStylePrompt.value||void 0}}function D(d){const b=d.name.toLowerCase();return d.type.includes("mpeg")||d.type.includes("mp3")||b.endsWith(".mp3")?"mp3":"wav"}function ne(d){return new Promise((b,k)=>{const ee=new FileReader;ee.onload=()=>b(String(ee.result||"")),ee.onerror=()=>k(ee.error||new Error("Failed to read audio file")),ee.readAsDataURL(d)})}async function q(d){const b=d.target,k=b.files?.[0];if(!k)return;const ee=k.name.toLowerCase();if(!(k.type==="audio/wav"||k.type==="audio/mpeg"||k.type==="audio/mp3"||ee.endsWith(".wav")||ee.endsWith(".mp3"))){console.warn("[VoiceSettings] MiMo clone audio must be mp3 or wav"),b.value="";return}if(k.size>Wt){console.warn("[VoiceSettings] MiMo clone audio is too large"),b.value="";return}const _e=await ne(k);s.setMimoVoiceCloneDataUri(_e),s.setMimoVoiceCloneFileName(k.name),s.setMimoVoiceCloneFormat(D(k))}function me(){s.setMimoVoiceCloneDataUri(""),s.setMimoVoiceCloneFileName(""),s.setMimoVoiceCloneFormat("wav"),y.value&&(y.value.value="")}async function v(){const d=o.value.trim();if(d){m.value=!0;try{if(s.provider.value==="webspeech")l.stop(!1),l.speakViaBrowser("__test__",d,{voiceName:s.webspeechVoice.value||void 0});else if(s.provider.value==="openai"){if(!s.openaiBaseUrl.value){console.warn("[VoiceSettings] OpenAI base URL empty");return}await l.openaiPlay("__test__",d,{provider:"openai",baseUrl:s.openaiBaseUrl.value,apiKey:s.openaiApiKey.value||void 0,model:s.openaiModel.value,voice:s.openaiVoice.value})}else if(s.provider.value==="custom"){if(!s.customUrl.value){console.warn("[VoiceSettings] Custom URL empty");return}await l.openaiPlay("__test__",d,{provider:"custom",baseUrl:s.customUrl.value,apiKey:s.customApiKey.value||void 0})}else if(s.provider.value==="edge")await l.openaiPlay("__test__",d,{provider:"edge",baseUrl:"/api/tts/proxy",voice:s.edgeVoice.value,rate:xe(s.edgeRate.value),pitch:ke(s.edgePitchHz.value)});else if(s.provider.value==="mimo"){if(!s.mimoApiKey.value){console.warn("[VoiceSettings] MiMo API Key empty");return}await l.mimoPlay("__test__",d,V())}}catch(b){console.error("[VoiceSettings] Test failed:",b)}finally{m.value=!1}}}return(d,b)=>(S(),M("div",Nt,[a(p,{label:e(t)("settings.voice.ttsProvider"),hint:e(t)("settings.voice.ttsProviderHint")},{default:i(()=>[a(e(F),{value:e(s).provider.value,options:r,size:"small",style:{width:"300px"},"onUpdate:value":e(s).setProvider},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).provider.value==="webspeech"?(S(),se(p,{key:0,label:e(t)("settings.voice.webspeechVoice"),hint:e(t)("settings.voice.webspeechVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).webspeechVoice.value,size:"small",filterable:"",style:{width:"320px"},placeholder:e(t)("settings.voice.webspeechVoicePlaceholder"),"consistent-menu-width":!1,options:h.value.map(k=>({label:`${k.name} (${k.lang})`,value:k.name})),"onUpdate:value":e(s).setWebSpeechVoice},null,8,["value","placeholder","options","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).provider.value==="openai"?(S(),M(ve,{key:1},[a(p,{label:e(t)("settings.voice.openaiKey"),hint:e(t)("settings.voice.openaiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).openaiApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:"sk-...","onUpdate:value":e(s).setOpenaiApiKey},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiUrl"),hint:e(t)("settings.voice.openaiUrlHint")},{default:i(()=>[a(e(T),{value:e(s).openaiBaseUrl.value,size:"small",style:{width:"360px"},placeholder:"https://api.openai.com/v1/audio/speech","onUpdate:value":e(s).setOpenaiBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiModel"),hint:e(t)("settings.voice.openaiModelHint")},{default:i(()=>[a(e(F),{value:e(s).openaiModel.value,options:c,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiVoice"),hint:e(t)("settings.voice.openaiVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).openaiVoice.value,options:n,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="custom"?(S(),M(ve,{key:2},[g("div",Vt,_(e(t)("settings.voice.customHint")),1),a(p,{label:e(t)("settings.voice.customUrl"),hint:e(t)("settings.voice.customUrlHint")},{default:i(()=>[a(e(T),{value:e(s).customUrl.value,size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.customUrlPlaceholder"),"onUpdate:value":e(s).setCustomUrl},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.customApiKey"),hint:e(t)("settings.voice.customApiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).customApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:e(t)("settings.voice.customApiKeyPlaceholder"),"onUpdate:value":e(s).setCustomApiKey},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="edge"?(S(),M(ve,{key:3},[g("div",Ft,_(e(t)("settings.voice.edgeHint")),1),a(p,{label:e(t)("settings.voice.edgeVoice"),hint:e(t)("settings.voice.edgeVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).edgeVoice.value,options:u,size:"small",filterable:"",style:{width:"320px"},"consistent-menu-width":!1,"onUpdate:value":e(s).setEdgeVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.edgeRate"),hint:e(t)("settings.voice.edgeRateHint")},{default:i(()=>[g("div",Tt,[a(e(Ae),{value:e(s).edgeRate.value,min:.5,max:2,step:.05,style:{width:"200px"},"onUpdate:value":e(s).setEdgeRate},null,8,["value","onUpdate:value"]),g("span",Dt,_(e(s).edgeRate.value.toFixed(2))+"x ("+_(e(xe)(e(s).edgeRate.value))+")",1)])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.edgePitch"),hint:e(t)("settings.voice.edgePitchHint")},{default:i(()=>[g("div",It,[a(e(Ae),{value:e(s).edgePitchHz.value,min:-20,max:20,step:1,style:{width:"200px"},"onUpdate:value":e(s).setEdgePitchHz},null,8,["value","onUpdate:value"]),g("span",$t,_(e(s).edgePitchHz.value>0?"+":"")+_(e(s).edgePitchHz.value)+" Hz ("+_(e(ke)(e(s).edgePitchHz.value))+")",1)])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="mimo"?(S(),M(ve,{key:4},[g("div",Kt,_(e(t)("settings.voice.mimoHint")),1),a(p,{label:e(t)("settings.voice.mimoApiKey"),hint:e(t)("settings.voice.mimoApiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).mimoApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:e(t)("settings.voice.mimoApiKeyPlaceholder"),"onUpdate:value":e(s).setMimoApiKey},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoAuthMode"),hint:e(t)("settings.voice.mimoAuthModeHint")},{default:i(()=>[a(e(F),{value:e(s).mimoAuthMode.value,options:P,size:"small",style:{width:"240px"},"onUpdate:value":e(s).setMimoAuthMode},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoBaseUrl"),hint:e(t)("settings.voice.mimoBaseUrlHint")},{default:i(()=>[a(e(F),{value:e(s).mimoBaseUrl.value,options:f,size:"small",filterable:"",tag:"",style:{width:"360px"},"onUpdate:value":e(s).setMimoBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoModel"),hint:e(t)("settings.voice.mimoModelHint")},{default:i(()=>[a(e(F),{value:e(s).mimoModel.value,options:$,size:"small",style:{width:"320px"},"onUpdate:value":e(s).setMimoModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).mimoModel.value==="mimo-v2.5-tts"?(S(),se(p,{key:0,label:e(t)("settings.voice.mimoVoice"),hint:e(t)("settings.voice.mimoVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).mimoVoice.value,options:Y,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setMimoVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voicedesign"?(S(),se(p,{key:1,label:e(t)("settings.voice.mimoVoiceDesignPrompt"),hint:e(t)("settings.voice.mimoVoiceDesignPromptHint")},{default:i(()=>[a(e(T),{value:e(s).mimoVoiceDesignDesc.value,type:"textarea",size:"small",style:{width:"360px"},rows:3,placeholder:e(t)("settings.voice.mimoVoiceDesignPromptPlaceholder"),"onUpdate:value":e(s).setMimoVoiceDesignDesc},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voiceclone"?(S(),se(p,{key:2,label:e(t)("settings.voice.mimoCloneAudio"),hint:e(t)("settings.voice.mimoCloneAudioHint")},{default:i(()=>[g("div",Rt,[g("input",{ref_key:"mimoCloneAudioInput",ref:y,type:"file",accept:jt,class:"hidden-file-input",onChange:q},null,544),a(e(z),{size:"small",onClick:b[0]||(b[0]=k=>y.value?.click())},{default:i(()=>[N(_(e(t)("settings.voice.mimoCloneAudioUpload")),1)]),_:1}),e(s).mimoVoiceCloneFileName.value?(S(),M("span",Lt,_(e(s).mimoVoiceCloneFileName.value)+" · "+_(e(s).mimoVoiceCloneFormat.value),1)):I("",!0),e(s).mimoVoiceCloneDataUri.value?(S(),se(e(z),{key:1,size:"small",tertiary:"",onClick:me},{default:i(()=>[N(_(e(t)("settings.voice.mimoCloneAudioClear")),1)]),_:1})):I("",!0)])]),_:1},8,["label","hint"])):I("",!0),a(p,{label:e(t)("settings.voice.mimoStylePrompt"),hint:e(t)("settings.voice.mimoStylePromptHint")},{default:i(()=>[a(e(T),{value:e(s).mimoStylePrompt.value,type:"textarea",size:"small",style:{width:"360px"},rows:2,placeholder:e(t)("settings.voice.mimoStylePromptPlaceholder"),"onUpdate:value":e(s).setMimoStylePrompt},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),g("div",Ot,[g("h4",Bt,_(e(t)("settings.voice.testTitle")),1),g("div",Et,[a(e(T),{value:o.value,"onUpdate:value":b[1]||(b[1]=k=>o.value=k),size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.testTextPlaceholder"),disabled:m.value,onKeyup:be(v,["enter"])},null,8,["value","placeholder","disabled"]),a(e(z),{size:"small",type:"primary",loading:m.value,disabled:m.value,onClick:v},{default:i(()=>[N(_(m.value?e(t)("settings.voice.testButtonPlaying"):e(t)("settings.voice.testButton")),1)]),_:1},8,["loading","disabled"])])])]))}})})),Vs=U((()=>{})),Ma,Fs=U((()=>{Gt(),Gt(),Vs(),j(),Ma=G(Ca,[["__scopeId","data-v-b2e8273b"]])})),Jt,Yt,qt,Xt,Pa,Qt=U((()=>{L(),Da(),B(),E(),re(),ms(),gs(),fs(),bs(),Ss(),As(),Ms(),xs(),zs(),Ns(),Fs(),Ka(),sa(),Jt={class:"settings-view"},Yt={class:"page-header"},qt={class:"header-title"},Xt={class:"settings-content"},Pa=O({__name:"SettingsView",setup(J){const t=ue(),s=aa(),{t:l}=W(),o=Ra(),m=$a(),y=Ia(),r=C("account"),c=Q(()=>new Set(["account",...o?["users"]:[],"display","agent","memory","compression","session","privacy","models","voice"]));function n(f){const P=typeof f=="string"?f:"";return c.value.has(P)?P:"account"}function u(f){r.value=n(f),y.replace({query:{...m.query,tab:r.value==="account"?void 0:r.value}})}za(()=>m.query.tab,f=>{r.value=n(f)},{immediate:!0});async function h(){(!s.activeProfileName||s.profiles.length===0)&&await s.fetchProfiles(),await t.fetchSettings()}return pe(()=>{h()}),(f,P)=>(S(),M("div",Jt,[g("header",Yt,[g("h2",qt,_(e(l)("settings.title")),1)]),g("div",Xt,[a(e(ta),{show:e(t).loading||e(t).saving,size:"large",description:e(l)("common.loading")},{default:i(()=>[a(e(Fa),{value:r.value,"onUpdate:value":[P[0]||(P[0]=$=>r.value=$),u],type:"line",animated:""},{default:i(()=>[a(e(te),{name:"account",tab:e(l)("settings.tabs.account")},{default:i(()=>[a(Sa)]),_:1},8,["tab"]),e(o)?(S(),se(e(te),{key:0,name:"users",tab:e(l)("settings.tabs.users")},{default:i(()=>[a(Aa)]),_:1},8,["tab"])):I("",!0),a(e(te),{name:"display",tab:e(l)("settings.tabs.display")},{default:i(()=>[a(na)]),_:1},8,["tab"]),a(e(te),{name:"agent",tab:e(l)("settings.tabs.agent")},{default:i(()=>[a(ua),a(da)]),_:1},8,["tab"]),a(e(te),{name:"memory",tab:e(l)("settings.tabs.memory")},{default:i(()=>[a(va)]),_:1},8,["tab"]),a(e(te),{name:"compression",tab:e(l)("settings.tabs.compression")},{default:i(()=>[a(ma)]),_:1},8,["tab"]),a(e(te),{name:"session",tab:e(l)("settings.tabs.session")},{default:i(()=>[a(ga)]),_:1},8,["tab"]),a(e(te),{name:"privacy",tab:e(l)("settings.tabs.privacy")},{default:i(()=>[a(fa)]),_:1},8,["tab"]),a(e(te),{name:"models",tab:e(l)("settings.tabs.models")},{default:i(()=>[a(ba)]),_:1},8,["tab"]),a(e(te),{name:"voice",tab:e(l)("settings.tabs.voice")},{default:i(()=>[a(Ma)]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show","description"])])]))}})})),Ts=U((()=>{})),Ds,Is=U((()=>{Qt(),Qt(),Ts(),j(),Ds=G(Pa,[["__scopeId","data-v-3a2d49d6"]])}));Is();export{Ds as default};
1
+ import{a as ka,n as U}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as _,$t as g,A as Ue,An as i,At as T,Bn as C,Bt as L,Cn as Zt,E as ae,Jn as e,O as fe,On as za,Pt as he,Q as Ha,Qt as Q,Rt as Na,S as ea,W as ye,Xn as Va,Yt as ve,an as N,en as se,f as te,ft as F,g as ta,m as K,nn as M,on as a,qt as be,sn as O,t as B,tn as I,u as Fa,un as X,v as Ae,w as Z,wt as z,xn as S,yn as pe,z as le,zn as Ta}from"./ui-vendor-DNWaqYj5.js";import{c as E,f as Da,l as W,m as Ia,p as $a}from"./vue-vendor-VX6KvV1_.js";import{l as Ka,n as j,t as G,u as Ra}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{N as La}from"./vendor-B1Lfatlz.js";import{l as Oa,x as Ce}from"./system-Pg8JEuA6.js";import{$ as Ba,C as ue,J as Ea,S as re,X as aa,Y as sa,c as Wa,et as ja,f as Ga,g as Me,h as Pe,i as Ja,l as Ya,m as qa,n as Xa,o as Qa,p as Za,q as es,r as ts,s as as,t as ss,u as la}from"./index-DyLZQAQu.js";import{n as de,t as p}from"./SettingRow-B0WJ-Iqa.js";import{n as ls,t as is}from"./session-browser-prefs-kGpZZDQo.js";import{a as ns,c as os,i as us,n as rs,o as ds,r as xe,t as ke}from"./ttsHelpers-CVcFKmJR.js";import{n as cs,t as vs}from"./models-CjHxxDse.js";var ze,ia,He=U((()=>{L(),B(),E(),re(),Ba(),de(),ze={class:"settings-section"},ia=O({__name:"DisplaySettings",setup(J){const t=ue(),s=le(),{t:l}=W(),{brightness:o,setBrightness:m}=ja(),y=[{label:l("settings.display.themeLight"),value:"light"},{label:l("settings.display.themeDark"),value:"dark"},{label:l("settings.display.themeSystem"),value:"system"}];async function r(n){try{await t.saveSection("display",n),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}}function c(n){const u=n;m(u),r({skin:u})}return(n,u)=>(S(),M("section",ze,[a(p,{label:e(l)("settings.display.theme"),hint:e(l)("settings.display.themeHint")},{default:i(()=>[a(e(F),{value:e(o),options:y,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.streaming"),hint:e(l)("settings.display.streamingHint")},{default:i(()=>[a(e(K),{value:e(t).display.streaming,"onUpdate:value":u[0]||(u[0]=h=>r({streaming:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.compact"),hint:e(l)("settings.display.compactHint")},{default:i(()=>[a(e(K),{value:e(t).display.compact,"onUpdate:value":u[1]||(u[1]=h=>r({compact:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.showReasoning"),hint:e(l)("settings.display.showReasoningHint")},{default:i(()=>[a(e(K),{value:e(t).display.show_reasoning,"onUpdate:value":u[2]||(u[2]=h=>r({show_reasoning:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.showCost"),hint:e(l)("settings.display.showCostHint")},{default:i(()=>[a(e(K),{value:e(t).display.show_cost,"onUpdate:value":u[3]||(u[3]=h=>r({show_cost:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.inlineDiffs"),hint:e(l)("settings.display.inlineDiffsHint")},{default:i(()=>[a(e(K),{value:e(t).display.inline_diffs,"onUpdate:value":u[4]||(u[4]=h=>r({inline_diffs:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.bellOnComplete"),hint:e(l)("settings.display.bellOnCompleteHint")},{default:i(()=>[a(e(K),{value:e(t).display.bell_on_complete,"onUpdate:value":u[5]||(u[5]=h=>r({bell_on_complete:h}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.display.busyInputMode"),hint:e(l)("settings.display.busyInputModeHint")},{default:i(()=>[a(e(K),{value:e(t).display.busy_input_mode==="interrupt","onUpdate:value":u[6]||(u[6]=h=>r({busy_input_mode:h?"interrupt":"off"}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ps=U((()=>{})),na,ms=U((()=>{He(),He(),ps(),j(),na=G(ia,[["__scopeId","data-v-e5486815"]])})),Ne,oa,Ve=U((()=>{L(),B(),E(),re(),de(),Ne={class:"settings-section"},oa=O({__name:"AgentSettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={};function m(r){t.updateLocal("agent",r),t.saveSection("agent",r).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function y(r,c){t.updateLocal("agent",{[r]:c}),o[r]&&clearTimeout(o[r]),o[r]=setTimeout(async()=>{try{await t.saveSection("agent",{[r]:c}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(r,c)=>(S(),M("section",Ne,[a(p,{label:e(l)("settings.agent.maxTurns"),hint:e(l)("settings.agent.maxTurnsHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":c[0]||(c[0]=n=>n!=null&&y("max_turns",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.gatewayTimeout"),hint:e(l)("settings.agent.gatewayTimeoutHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":c[1]||(c[1]=n=>n!=null&&y("gateway_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.restartDrainTimeout"),hint:e(l)("settings.agent.restartDrainTimeoutHint")},{default:i(()=>[a(e(Z),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=n=>n!=null&&y("restart_drain_timeout",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.agent.toolEnforcement"),hint:e(l)("settings.agent.toolEnforcementHint")},{default:i(()=>[a(e(F),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(l)("settings.agent.auto"),value:"auto"},{label:e(l)("settings.agent.always"),value:"always"},{label:e(l)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=n=>m({tool_use_enforcement:n}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),_s=U((()=>{})),ua,gs=U((()=>{Ve(),Ve(),_s(),j(),ua=G(oa,[["__scopeId","data-v-d06d83a7"]])})),Fe,Te,De,ra,Ie=U((()=>{L(),B(),E(),re(),sa(),de(),Fe={class:"settings-section gateway-auto-start-settings"},Te={class:"section-title"},De={class:"section-hint"},ra=O({__name:"GatewayAutoStartSettings",setup(J){const t=ue(),s=aa(),l=le(),{t:o}=W(),m=Q(()=>t.gatewayAutoStart.enabled!==!1),y=Q(()=>Array.isArray(t.gatewayAutoStart.include)?"include":"all"),r=Q(()=>t.gatewayAutoStart.include||[]),c=Q(()=>t.gatewayAutoStart.exclude||[]),n=Q(()=>s.profiles.map(x=>({label:x.name,value:x.name}))),u=Q(()=>[{label:o("settings.gatewayAutoStart.modeAll"),value:"all"},{label:o("settings.gatewayAutoStart.modeInclude"),value:"include"}]);function h(x){const V=new Set,D=[];for(const ne of x){const q=String(ne||"").trim();!q||V.has(q)||(V.add(q),D.push(q))}return D}async function f(x){try{t.updateLocal("gatewayAutoStart",x),await t.saveSection("gatewayAutoStart",x,{restart:!1}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}}function P(x){f(x==="include"?{include:t.gatewayAutoStart.include||[],exclude:null}:{include:null})}function $(x){f({include:h(x),exclude:null})}function Y(x){const V=h(x);f({exclude:V.length>0?V:null})}return(x,V)=>(S(),M("section",Fe,[g("h3",Te,_(e(o)("settings.gatewayAutoStart.title")),1),g("p",De,_(e(o)("settings.gatewayAutoStart.description")),1),a(p,{label:e(o)("settings.gatewayAutoStart.enabled"),hint:e(o)("settings.gatewayAutoStart.enabledHint")},{default:i(()=>[a(e(K),{value:m.value,"onUpdate:value":V[0]||(V[0]=D=>f({enabled:D}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.gatewayAutoStart.mode"),hint:e(o)("settings.gatewayAutoStart.modeHint")},{default:i(()=>[a(e(F),{value:y.value,options:u.value,size:"small",class:"input-md","onUpdate:value":P},null,8,["value","options"])]),_:1},8,["label","hint"]),y.value==="include"?(S(),se(p,{key:0,label:e(o)("settings.gatewayAutoStart.include"),hint:e(o)("settings.gatewayAutoStart.includeHint")},{default:i(()=>[a(e(F),{multiple:"",filterable:"",value:r.value,options:n.value,size:"small",class:"input-md",placeholder:e(o)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":$},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):I("",!0),y.value==="all"?(S(),se(p,{key:1,label:e(o)("settings.gatewayAutoStart.exclude"),hint:e(o)("settings.gatewayAutoStart.excludeHint")},{default:i(()=>[a(e(F),{multiple:"",filterable:"",value:c.value,options:n.value,size:"small",class:"input-md",placeholder:e(o)("settings.gatewayAutoStart.profileListPlaceholder"),"onUpdate:value":Y},null,8,["value","options","placeholder"])]),_:1},8,["label","hint"])):I("",!0)]))}})})),hs=U((()=>{})),da,fs=U((()=>{Ie(),Ie(),hs(),j(),da=G(ra,[["__scopeId","data-v-acd78d5c"]])})),$e,ca,Ke=U((()=>{L(),B(),E(),re(),de(),$e={class:"settings-section"},ca=O({__name:"MemorySettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={};function m(r){t.updateLocal("memory",r),t.saveSection("memory",r).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function y(r,c){t.updateLocal("memory",{[r]:c}),o[r]&&clearTimeout(o[r]),o[r]=setTimeout(async()=>{try{await t.saveSection("memory",{[r]:c}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(r,c)=>(S(),M("section",$e,[a(p,{label:e(l)("settings.memory.enabled"),hint:e(l)("settings.memory.enabledHint")},{default:i(()=>[a(e(K),{value:e(t).memory.memory_enabled,"onUpdate:value":c[0]||(c[0]=n=>m({memory_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.userProfile"),hint:e(l)("settings.memory.userProfileHint")},{default:i(()=>[a(e(K),{value:e(t).memory.user_profile_enabled,"onUpdate:value":c[1]||(c[1]=n=>m({user_profile_enabled:n}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.charLimit"),hint:e(l)("settings.memory.charLimitHint")},{default:i(()=>[a(e(Z),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=n=>n!=null&&y("memory_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.memory.userCharLimit"),hint:e(l)("settings.memory.userCharLimitHint")},{default:i(()=>[a(e(Z),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=n=>n!=null&&y("user_char_limit",n))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ys=U((()=>{})),va,bs=U((()=>{Ke(),Ke(),ys(),j(),va=G(ca,[["__scopeId","data-v-b2529605"]])})),Re,pa,Le=U((()=>{L(),B(),E(),re(),de(),Re={class:"settings-section"},pa=O({__name:"CompressionSettings",setup(J){const t=ue(),s=le(),{t:l}=W(),o={enabled:!0,threshold:.5,target_ratio:.2,protect_last_n:20,protect_first_n:3},m={};function y(c){t.updateLocal("compression",c),t.saveSection("compression",c).then(()=>{s.success(l("settings.saved"))}).catch(()=>{s.error(l("settings.saveFailed"))})}function r(c,n){t.updateLocal("compression",{[c]:n}),m[c]&&clearTimeout(m[c]),m[c]=setTimeout(async()=>{try{await t.saveSection("compression",{[c]:n}),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}},300)}return(c,n)=>(S(),M("section",Re,[a(p,{label:e(l)("settings.compression.enabled"),hint:e(l)("settings.compression.enabledHint")},{default:i(()=>[a(e(K),{value:e(t).compression.enabled??o.enabled,size:"small","onUpdate:value":n[0]||(n[0]=u=>y({enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.threshold"),hint:e(l)("settings.compression.thresholdHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.threshold??o.threshold,min:.1,max:.95,step:.05,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=u=>u!=null&&r("threshold",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.targetRatio"),hint:e(l)("settings.compression.targetRatioHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.target_ratio??o.target_ratio,min:.05,max:.8,step:.05,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=u=>u!=null&&r("target_ratio",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.protectLastN"),hint:e(l)("settings.compression.protectLastNHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.protect_last_n??o.protect_last_n,min:0,max:200,step:1,size:"small",class:"input-sm","onUpdate:value":n[3]||(n[3]=u=>u!=null&&r("protect_last_n",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(l)("settings.compression.protectFirstN"),hint:e(l)("settings.compression.protectFirstNHint")},{default:i(()=>[a(e(Z),{value:e(t).compression.protect_first_n??o.protect_first_n,min:0,max:50,step:1,size:"small",class:"input-sm","onUpdate:value":n[4]||(n[4]=u=>u!=null&&r("protect_first_n",u))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ws=U((()=>{})),ma,Ss=U((()=>{Le(),Le(),ws(),j(),ma=G(pa,[["__scopeId","data-v-b584a6a0"]])})),Oe,_a,Be=U((()=>{L(),B(),E(),re(),is(),de(),Oe={class:"settings-section"},_a=O({__name:"SessionSettings",setup(J){const t=ue(),s=ls(),l=le(),{t:o}=W(),m={};function y(n){t.updateLocal("session_reset",n),t.saveSection("session_reset",n).then(()=>{l.success(o("settings.saved"))}).catch(()=>{l.error(o("settings.saveFailed"))})}function r(n,u){t.updateLocal("session_reset",{[n]:u}),m[n]&&clearTimeout(m[n]),m[n]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[n]:u}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}},300)}async function c(n){try{await t.saveSection("approvals",{mode:n?"manual":"off"}),l.success(o("settings.saved"))}catch{l.error(o("settings.saveFailed"))}}return(n,u)=>(S(),M("section",Oe,[a(p,{label:e(o)("settings.session.requireAuth"),hint:e(o)("settings.session.requireAuthHint")},{default:i(()=>[a(e(K),{value:e(t).approvals.mode==="manual","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.mode"),hint:e(o)("settings.session.modeHint")},{default:i(()=>[a(e(F),{value:e(t).sessionReset.mode||"both",options:[{label:e(o)("settings.session.modeBoth"),value:"both"},{label:e(o)("settings.session.modeIdle"),value:"idle"},{label:e(o)("settings.session.modeDaily"),value:"daily"},{label:e(o)("settings.session.modeNone"),value:"none"}],size:"small",class:"input-md","onUpdate:value":u[0]||(u[0]=h=>y({mode:h}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.idleMinutes"),hint:e(o)("settings.session.idleMinutesHint")},{default:i(()=>[a(e(Z),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":u[1]||(u[1]=h=>h!=null&&r("idle_minutes",h))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.atHour"),hint:e(o)("settings.session.atHourHint")},{default:i(()=>[a(e(Z),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":u[2]||(u[2]=h=>h!=null&&r("at_hour",h))},null,8,["value"])]),_:1},8,["label","hint"]),a(p,{label:e(o)("settings.session.liveMonitorHumanOnly"),hint:e(o)("settings.session.liveMonitorHumanOnlyHint")},{default:i(()=>[a(e(K),{value:e(s).humanOnly,"onUpdate:value":u[3]||(u[3]=h=>e(s).setHumanOnly(h))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Us=U((()=>{})),ga,As=U((()=>{Be(),Be(),Us(),j(),ga=G(_a,[["__scopeId","data-v-a317c50b"]])})),Ee,ha,We=U((()=>{L(),B(),E(),re(),de(),Ee={class:"settings-section"},ha=O({__name:"PrivacySettings",setup(J){const t=ue(),s=le(),{t:l}=W();async function o(m){try{await t.saveSection("privacy",m),s.success(l("settings.saved"))}catch{s.error(l("settings.saveFailed"))}}return(m,y)=>(S(),M("section",Ee,[a(p,{label:e(l)("settings.privacy.redactPii"),hint:e(l)("settings.privacy.redactPiiHint")},{default:i(()=>[a(e(K),{value:e(t).privacy.redact_pii,"onUpdate:value":y[0]||(y[0]=r=>o({redact_pii:r}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),Cs=U((()=>{})),fa,Ms=U((()=>{We(),We(),Cs(),j(),fa=G(ha,[["__scopeId","data-v-43145f27"]])})),je,Ge,Je,Ye,qe,Xe,Qe,Ze,ya,et=U((()=>{L(),B(),vs(),Oa(),E(),je={class:"settings-section"},Ge={key:0,class:"empty-hint"},Je={class:"provider-header"},Ye={class:"provider-name"},qe={key:0,class:"provider-fields"},Xe={class:"field-row"},Qe={key:1,class:"provider-fields"},Ze={class:"field-row"},ya=O({__name:"ModelSettings",setup(J){const{t}=W(),s=cs(),l=le(),o=C(null),m=C({});pe(()=>{s.providers.length===0&&s.fetchProviders()});const y=u=>!s.providers.find(h=>h.provider===u)?.builtin&&u.startsWith("custom:");function r(u){if(!(u in m.value)){const h=s.providers.find(f=>f.provider===u);m.value[u]=h?.api_key||""}return m.value[u]}async function c(u){const h=r(u);if(!h.trim()){l.warning(t("settings.models.apiKeyPlaceholder"));return}o.value=u;try{await Ce(u,{api_key:h.trim()}),l.success(t("settings.models.saved")),await s.fetchProviders()}catch(f){l.error(f.message||t("settings.models.saveFailed"))}finally{o.value=null}}async function n(u){const h=r(u);o.value=u;try{await Ce(u,{api_key:h.trim()}),l.success(t("settings.models.saved")),await s.fetchProviders()}catch(f){l.error(f.message||t("settings.models.saveFailed"))}finally{o.value=null}}return(u,h)=>(S(),M("section",je,[a(e(ta),{show:e(s).loading},{default:i(()=>[e(s).providers.length===0?(S(),M("div",Ge,[a(e(Na),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):I("",!0),(S(!0),M(ve,null,Zt(e(s).providers,f=>(S(),M("div",{key:f.provider,class:"provider-section"},[g("div",Je,[g("h4",Ye,_(f.label),1),g("span",{class:Va(["type-badge",y(f.provider)?"custom":"builtin"])},_(y(f.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),y(f.provider)?(S(),M("div",Qe,[g("div",Ze,[a(e(T),{value:r(f.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":P=>m.value[f.provider]=P},null,8,["value","placeholder","onUpdate:value"]),a(e(z),{type:"primary",size:"small",loading:o.value===f.provider,onClick:P=>n(f.provider)},{default:i(()=>[N(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(S(),M("div",qe,[g("div",Xe,[a(e(T),{value:r(f.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":P=>m.value[f.provider]=P},null,8,["value","placeholder","onUpdate:value"]),a(e(z),{type:"primary",size:"small",loading:o.value===f.provider,onClick:P=>c(f.provider)},{default:i(()=>[N(_(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),Ps=U((()=>{})),ba,xs=U((()=>{et(),et(),Ps(),j(),ba=G(ya,[["__scopeId","data-v-8cd750e1"]])})),tt,at,st,lt,it,nt,ot,ut,rt,dt,ct,vt,pt,mt,_t,gt,ht,ft,yt,bt,wt,St,Ut,At,Ct,wa,Mt=U((()=>{L(),B(),E(),la(),Ea(),tt=ka(La()),at={class:"account-settings"},st={class:"section-desc"},lt={class:"avatar-section"},it={class:"section-title"},nt={class:"avatar-row"},ot={class:"avatar-display"},ut={class:"avatar-actions"},rt={class:"avatar-hint"},dt={class:"action-buttons"},ct={class:"configured-section"},vt={class:"action-row"},pt={class:"action-label"},mt={class:"action-buttons"},_t={class:"locked-ips-section"},gt={class:"section-title"},ht={class:"action-row",style:{"margin-bottom":"12px"}},ft={class:"action-label"},yt={class:"action-buttons"},bt={key:0,class:"locked-list"},wt={class:"locked-info"},St={class:"locked-ip"},Ut={class:"locked-badge"},At={class:"locked-ttl"},Ct={key:1,class:"empty-hint"},wa=O({__name:"AccountSettings",setup(J){const{t}=W(),s=le(),l=C(null),o=C(!1),m=C(null),y=C(null),r=C(!1);function c(H,w){return new Promise((A,R)=>{const ce=new FileReader;ce.onload=()=>{const oe=new Image;oe.onload=()=>{const ie=document.createElement("canvas");ie.width=oe.width,ie.height=oe.height,ie.getContext("2d").drawImage(oe,0,0);const we=ge=>{const Se=ie.toDataURL("image/jpeg",ge);Se.length<=w||ge<=.3?A(Se):we(ge-.1)};we(.8)},oe.onerror=R,oe.src=ce.result},ce.onerror=R,ce.readAsDataURL(H)})}async function n(H){const w=H.target,A=w.files?.[0];if(A){if(!["image/png","image/jpeg","image/webp"].includes(A.type)){s.error(t("settings.userAvatar.invalidType")),w.value="";return}if(A.size>1024*1024){s.error(t("settings.userAvatar.tooLarge")),w.value="";return}r.value=!0;try{let R;A.size>500*1024?R=await c(A,500*1024):R=await new Promise((ce,oe)=>{const ie=new FileReader;ie.onload=()=>ce(ie.result),ie.onerror=oe,ie.readAsDataURL(A)}),await Me({type:"image",dataUrl:R}),m.value={type:"image",dataUrl:R},s.success(t("settings.userAvatar.saveSuccess"))}catch(R){s.error(R.message||t("settings.userAvatar.saveFailed"))}finally{r.value=!1,w.value=""}}}async function u(){r.value=!0;try{const H=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2),w=`${l.value||"default"}-${Date.now()}-${H}`,A=(0,tt.default)(w),R="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(A)));await Me({type:"image",dataUrl:R,seed:w}),m.value={type:"image",dataUrl:R,seed:w},s.success(t("settings.userAvatar.saveSuccess"))}catch(H){s.error(H.message||t("settings.userAvatar.saveFailed"))}finally{r.value=!1}}async function h(){r.value=!0;try{await Ga(),m.value={type:"default",seed:l.value||"default"},s.success(t("settings.userAvatar.resetSuccess"))}catch(H){s.error(H.message||t("settings.userAvatar.resetFailed"))}finally{r.value=!1}}const f=C(!1),P=C(""),$=C(""),Y=C(""),x=C(!1),V=C(""),D=C("");pe(async()=>{try{l.value=(await Qa()).username}catch{}try{m.value=await Ya()||{type:"default",seed:l.value||"default"}}catch{}});async function ne(){if($.value!==Y.value){s.error(t("login.passwordMismatch"));return}if($.value.length<6){s.error(t("login.passwordTooShort"));return}o.value=!0;try{await ss(P.value,$.value),f.value=!1,P.value="",$.value="",Y.value="",s.success(t("login.passwordChanged"))}catch(H){s.error(H.message||t("common.saveFailed"))}finally{o.value=!1}}async function q(){if(D.value.trim().length<2){s.error(t("login.usernameTooShort"));return}o.value=!0;try{await Xa(V.value,D.value.trim()),l.value=D.value.trim(),x.value=!1,V.value="",D.value="",s.success(t("login.usernameChanged"))}catch(H){s.error(H.message||t("common.saveFailed"))}finally{o.value=!1}}function me(){P.value="",$.value="",Y.value="",f.value=!0}function v(){V.value="",D.value="",x.value=!0}const d=C([]),b=C(!1);async function k(){b.value=!0;try{d.value=await as()}catch{}finally{b.value=!1}}async function ee(H){try{await qa(H),s.success(t("settings.lockedIps.unlocked")),await k()}catch(w){s.error(w.message||t("common.saveFailed"))}}async function _e(){try{const H=await Za();s.success(t("settings.lockedIps.allUnlocked",{count:H})),await k()}catch(H){s.error(H.message||t("common.saveFailed"))}}function xa(H){const w=Math.max(0,Math.round((H-Date.now())/6e4));return w>0?`${w} min`:t("common.expired")}return pe(()=>{k()}),(H,w)=>(S(),M("div",at,[g("p",st,_(e(t)("login.setupDescription")),1),g("div",lt,[g("h3",it,_(e(t)("settings.userAvatar.title")),1),g("div",nt,[g("div",ot,[a(es,{name:l.value||"default",avatar:m.value?.type==="image"&&m.value.dataUrl?{type:"image",dataUrl:m.value.dataUrl}:null,size:80},null,8,["name","avatar"])]),g("div",ut,[g("p",rt,_(e(t)("settings.userAvatar.hint")),1),g("div",dt,[a(e(z),{onClick:w[0]||(w[0]=A=>y.value?.click())},{default:i(()=>[N(_(e(t)("settings.userAvatar.upload")),1)]),_:1}),a(e(z),{onClick:u,loading:r.value},{default:i(()=>[N(_(e(t)("settings.userAvatar.random")),1)]),_:1},8,["loading"]),a(e(z),{onClick:h,loading:r.value},{default:i(()=>[N(_(e(t)("settings.userAvatar.reset")),1)]),_:1},8,["loading"])]),g("input",{ref_key:"avatarFileInput",ref:y,type:"file",accept:".png,.jpg,.jpeg,.webp",style:{display:"none"},onChange:n},null,544)])])]),g("div",ct,[g("div",vt,[g("span",pt,_(e(t)("login.passwordLoginConfigured",{username:l.value})),1),g("div",mt,[a(e(z),{onClick:me},{default:i(()=>[N(_(e(t)("login.changePassword")),1)]),_:1}),a(e(z),{onClick:v},{default:i(()=>[N(_(e(t)("login.changeUsername")),1)]),_:1})])])]),g("div",_t,[g("h3",gt,_(e(t)("settings.lockedIps.title")),1),g("div",ht,[g("span",ft,_(e(t)("settings.lockedIps.count",{count:d.value.length})),1),g("div",yt,[a(e(z),{size:"small",loading:b.value,onClick:k},{default:i(()=>[N(_(e(t)("common.retry")),1)]),_:1},8,["loading"]),d.value.length>0?(S(),se(e(ea),{key:0,onPositiveClick:_e},{trigger:i(()=>[a(e(z),{size:"small",type:"warning"},{default:i(()=>[N(_(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:i(()=>[N(" "+_(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):I("",!0)])]),d.value.length>0?(S(),M("div",bt,[(S(!0),M(ve,null,Zt(d.value,A=>(S(),M("div",{key:A.ip+A.type,class:"locked-item"},[g("div",wt,[g("span",St,_(A.ip),1),g("span",Ut,_(A.type),1),g("span",At,_(xa(A.lockedUntil)),1)]),a(e(z),{size:"tiny",type:"error",ghost:"",onClick:R=>ee(A.ip)},{default:i(()=>[N(_(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(S(),M("p",Ct,_(e(t)("settings.lockedIps.empty")),1))]),a(e(ye),{show:f.value,"onUpdate:show":w[5]||(w[5]=A=>f.value=A),preset:"dialog",title:e(t)("login.changePassword")},{action:i(()=>[a(e(z),{onClick:w[4]||(w[4]=A=>f.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:ne},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("login.currentPassword")},{default:i(()=>[a(e(T),{value:P.value,"onUpdate:value":w[1]||(w[1]=A=>P.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.newPassword")},{default:i(()=>[a(e(T),{value:$.value,"onUpdate:value":w[2]||(w[2]=A=>$.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.confirmPassword")},{default:i(()=>[a(e(T),{value:Y.value,"onUpdate:value":w[3]||(w[3]=A=>Y.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:be(ne,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(ye),{show:x.value,"onUpdate:show":w[9]||(w[9]=A=>x.value=A),preset:"dialog",title:e(t)("login.changeUsername")},{action:i(()=>[a(e(z),{onClick:w[8]||(w[8]=A=>x.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:q},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("login.currentPassword")},{default:i(()=>[a(e(T),{value:V.value,"onUpdate:value":w[6]||(w[6]=A=>V.value=A),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("login.newUsername")},{default:i(()=>[a(e(T),{value:D.value,"onUpdate:value":w[7]||(w[7]=A=>D.value=A),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:be(q,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),ks=U((()=>{})),Sa,zs=U((()=>{Mt(),Mt(),ks(),j(),Sa=G(wa,[["__scopeId","data-v-37ce8d61"]])})),Pt,xt,kt,zt,Ua,Ht=U((()=>{L(),B(),E(),la(),Pt={class:"user-management"},xt={class:"toolbar"},kt={class:"section-title"},zt={class:"section-desc"},Ua=O({__name:"UserManagementSettings",setup(J){const{t}=W(),s=le(),l=C(!1),o=C(!1),m=C([]),y=C([]),r=C(!1),c=C(null),n=Ta({username:"",password:"",role:"admin",status:"active",profiles:[]}),u=Q(()=>[{label:t("users.roles.admin"),value:"admin"},{label:t("users.roles.superAdmin"),value:"super_admin"}]),h=Q(()=>[{label:t("users.status.active"),value:"active"},{label:t("users.status.disabled"),value:"disabled"}]),f=Q(()=>y.value.map(v=>({label:v,value:v})));function P(){c.value=null,n.username="",n.password="",n.role="admin",n.status="active",n.profiles=[]}async function $(){l.value=!0;try{const v=await Wa();m.value=v.users,y.value=v.profiles}catch(v){s.error(v.message||t("users.loadFailed"))}finally{l.value=!1}}function Y(){P(),r.value=!0}function x(v){c.value=v,n.username=v.username,n.password="",n.role=v.role,n.status=v.status,n.profiles=[...v.profiles],r.value=!0}async function V(){if(n.username.trim().length<2){s.error(t("login.usernameTooShort"));return}if(!c.value&&n.password.length<6){s.error(t("login.passwordTooShort"));return}if(n.password&&n.password.length<6){s.error(t("login.passwordTooShort"));return}o.value=!0;try{const v={username:n.username.trim(),password:n.password||void 0,role:n.role,status:n.status,profiles:n.role==="super_admin"?[]:n.profiles,defaultProfile:n.profiles[0]||null},d=c.value?await Pe(c.value.id,v):await ts({...v,password:n.password});m.value=d.users,y.value=d.profiles,r.value=!1,P(),s.success(t("common.saved"))}catch(v){s.error(v.message||t("common.saveFailed"))}finally{o.value=!1}}async function D(v,d){o.value=!0;try{const b=await Pe(v.id,{status:d});m.value=b.users,y.value=b.profiles,s.success(t("common.saved"))}catch(b){s.error(b.message||t("common.saveFailed"))}finally{o.value=!1}}async function ne(v){o.value=!0;try{const d=await Ja(v.id);m.value=d.users,y.value=d.profiles,s.success(t("common.saved"))}catch(d){s.error(d.message||t("common.deleteFailed"))}finally{o.value=!1}}function q(v){return v?new Date(v).toLocaleString():"-"}const me=Q(()=>[{title:t("users.username"),key:"username",minWidth:140},{title:t("users.role"),key:"role",width:130,render:v=>X(he,{size:"small",type:v.role==="super_admin"?"warning":"default"},{default:()=>v.role==="super_admin"?t("users.roles.superAdmin"):t("users.roles.admin")})},{title:t("users.statusLabel"),key:"status",width:110,render:v=>X(he,{size:"small",type:v.status==="active"?"success":"error"},{default:()=>v.status==="active"?t("users.status.active"):t("users.status.disabled")})},{title:t("users.profiles"),key:"profiles",minWidth:200,render:v=>v.role==="super_admin"?X("span",{class:"muted"},t("users.allProfiles")):X(Ue,{size:4},{default:()=>v.profiles.length?v.profiles.map(d=>X(he,{size:"small",bordered:!1},{default:()=>d})):X("span",{class:"muted"},t("users.noProfiles"))})},{title:t("users.lastLogin"),key:"last_login_at",minWidth:170,render:v=>q(v.last_login_at)},{title:t("common.edit"),key:"actions",width:280,render:v=>X(Ue,{size:8},{default:()=>[X(z,{size:"small",onClick:()=>x(v)},{default:()=>t("common.edit")}),X(z,{size:"small",type:v.status==="active"?"warning":"primary",ghost:!0,loading:o.value,onClick:()=>D(v,v.status==="active"?"disabled":"active")},{default:()=>v.status==="active"?t("users.disable"):t("users.enable")}),X(ea,{onPositiveClick:()=>ne(v)},{trigger:()=>X(z,{size:"small",type:"error",ghost:!0,loading:o.value},{default:()=>t("common.delete")}),default:()=>t("users.deleteConfirm")})]})}]);return pe($),(v,d)=>(S(),M("div",Pt,[g("div",xt,[g("div",null,[g("h3",kt,_(e(t)("users.title")),1),g("p",zt,_(e(t)("users.description")),1)]),a(e(z),{type:"primary",onClick:Y},{default:i(()=>[N(_(e(t)("users.create")),1)]),_:1})]),a(e(Ha),{columns:me.value,data:m.value,loading:l.value,bordered:!1,"single-line":!1,size:"small"},null,8,["columns","data","loading"]),a(e(ye),{show:r.value,"onUpdate:show":d[6]||(d[6]=b=>r.value=b),preset:"dialog",title:c.value?e(t)("users.edit"):e(t)("users.create")},{action:i(()=>[a(e(z),{onClick:d[5]||(d[5]=b=>r.value=!1)},{default:i(()=>[N(_(e(t)("common.cancel")),1)]),_:1}),a(e(z),{type:"primary",loading:o.value,onClick:V},{default:i(()=>[N(_(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:i(()=>[a(e(fe),{"label-placement":"top"},{default:i(()=>[a(e(ae),{label:e(t)("users.username")},{default:i(()=>[a(e(T),{value:n.username,"onUpdate:value":d[0]||(d[0]=b=>n.username=b),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:c.value?e(t)("users.newPasswordOptional"):e(t)("login.newPassword")},{default:i(()=>[a(e(T),{value:n.password,"onUpdate:value":d[1]||(d[1]=b=>n.password=b),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("users.role")},{default:i(()=>[a(e(F),{value:n.role,"onUpdate:value":d[2]||(d[2]=b=>n.role=b),options:u.value},null,8,["value","options"])]),_:1},8,["label"]),a(e(ae),{label:e(t)("users.statusLabel")},{default:i(()=>[a(e(F),{value:n.status,"onUpdate:value":d[3]||(d[3]=b=>n.status=b),options:h.value},null,8,["value","options"])]),_:1},8,["label"]),n.role!=="super_admin"?(S(),se(e(ae),{key:0,label:e(t)("users.profiles")},{default:i(()=>[a(e(F),{value:n.profiles,"onUpdate:value":d[4]||(d[4]=b=>n.profiles=b),multiple:"",filterable:"",options:f.value,placeholder:e(t)("users.profilesPlaceholder")},null,8,["value","options","placeholder"])]),_:1},8,["label"])):I("",!0)]),_:1})]),_:1},8,["show","title"])]))}})})),Hs=U((()=>{})),Aa,Ns=U((()=>{Ht(),Ht(),Hs(),j(),Aa=G(Ua,[["__scopeId","data-v-bcd3f33a"]])})),Nt,Vt,Ft,Tt,Dt,It,$t,Kt,Rt,Lt,Ot,Bt,Et,Wt,jt,Ca,Gt=U((()=>{L(),B(),E(),us(),ds(),rs(),de(),Nt={class:"voice-settings"},Vt={class:"provider-hint"},Ft={class:"provider-hint"},Tt={class:"slider-row"},Dt={class:"slider-value"},It={class:"slider-row"},$t={class:"slider-value"},Kt={class:"provider-hint"},Rt={class:"clone-audio-row"},Lt={key:0,class:"clone-audio-name"},Ot={class:"test-section"},Bt={class:"test-title"},Et={class:"test-row"},Wt=10*1024*1024,jt="audio/mpeg,audio/mp3,audio/wav,.mp3,.wav",Ca=O({__name:"VoiceSettings",setup(J){const{t}=W(),s=ns(),l=os(),o=C(t("settings.voice.testTextDefault")),m=C(!1),y=C(null),r=[{label:t("settings.voice.providerWebSpeech"),value:"webspeech"},{label:t("settings.voice.providerOpenai"),value:"openai"},{label:t("settings.voice.providerCustom"),value:"custom"},{label:t("settings.voice.providerEdge"),value:"edge"},{label:t("settings.voice.providerMimo"),value:"mimo"}],c=[{label:"tts-1",value:"tts-1"},{label:"tts-1-hd",value:"tts-1-hd"}],n=[{label:"Alloy",value:"alloy"},{label:"Echo",value:"echo"},{label:"Fable",value:"fable"},{label:"Nova",value:"nova"},{label:"Onyx",value:"onyx"},{label:"Shimmer",value:"shimmer"}],u=[{label:"晓晓 (zh-CN-XiaoxiaoNeural)",value:"zh-CN-XiaoxiaoNeural"},{label:"晓萱 (zh-CN-XiaoxuanNeural)",value:"zh-CN-XiaoxuanNeural"},{label:"云希 (zh-CN-YunxiNeural)",value:"zh-CN-YunxiNeural"},{label:"云健 (zh-CN-YunjianNeural)",value:"zh-CN-YunjianNeural"},{label:"云扬 (zh-CN-YunyangNeural)",value:"zh-CN-YunyangNeural"},{label:"小晨 (zh-TW-HsiaoChenNeural)",value:"zh-TW-HsiaoChenNeural"},{label:"小宇 (zh-TW-HsiaoYuNeural)",value:"zh-TW-HsiaoYuNeural"},{label:"云哲 (zh-TW-YunJheNeural)",value:"zh-TW-YunJheNeural"},{label:"希雅 (zh-HK-HiuGaaiNeural)",value:"zh-HK-HiuGaaiNeural"},{label:"希文 (zh-HK-HiuMaanNeural)",value:"zh-HK-HiuMaanNeural"},{label:"文龙 (zh-HK-WanLungNeural)",value:"zh-HK-WanLungNeural"},{label:"Jenny (en-US-JennyNeural)",value:"en-US-JennyNeural"},{label:"Aria (en-US-AriaNeural)",value:"en-US-AriaNeural"},{label:"Guy (en-US-GuyNeural)",value:"en-US-GuyNeural"},{label:"Sonia (en-GB-SoniaNeural)",value:"en-GB-SoniaNeural"},{label:"Ryan (en-GB-RyanNeural)",value:"en-GB-RyanNeural"},{label:"Nanami (ja-JP-NanamiNeural)",value:"ja-JP-NanamiNeural"},{label:"Keita (ja-JP-KeitaNeural)",value:"ja-JP-KeitaNeural"},{label:"Sun-Hi (ko-KR-SunHiNeural)",value:"ko-KR-SunHiNeural"},{label:"InJoon (ko-KR-InJoonNeural)",value:"ko-KR-InJoonNeural"},{label:"Denise (fr-FR-DeniseNeural)",value:"fr-FR-DeniseNeural"},{label:"Henri (fr-FR-HenriNeural)",value:"fr-FR-HenriNeural"},{label:"Katja (de-DE-KatjaNeural)",value:"de-DE-KatjaNeural"},{label:"Conrad (de-DE-ConradNeural)",value:"de-DE-ConradNeural"}],h=C([]);pe(()=>{if("speechSynthesis"in window){const d=window.speechSynthesis.getVoices();d.length&&(h.value=d),window.speechSynthesis.onvoiceschanged=()=>{h.value=window.speechSynthesis.getVoices()}}});const f=[{label:"https://api.xiaomimimo.com/v1",value:"https://api.xiaomimimo.com/v1"},{label:"https://token-plan-cn.xiaomimimo.com/v1",value:"https://token-plan-cn.xiaomimimo.com/v1"}],P=[{label:t("settings.voice.mimoAuthModeBearer"),value:"bearer"},{label:t("settings.voice.mimoAuthModeApiKey"),value:"api-key"},{label:t("settings.voice.mimoAuthModeBoth"),value:"both"}],$=[{label:t("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:t("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"},{label:t("settings.voice.mimoModelVoiceClone"),value:"mimo-v2.5-tts-voiceclone"}],Y=[{label:"冰糖 (中文·女)",value:"冰糖"},{label:"茉莉 (中文·女)",value:"茉莉"},{label:"苏打 (中文·男)",value:"苏打"},{label:"白桦 (中文·男)",value:"白桦"},{label:"Mia (English·Female)",value:"Mia"},{label:"Chloe (English·Female)",value:"Chloe"},{label:"Milo (English·Male)",value:"Milo"},{label:"Dean (English·Male)",value:"Dean"}];function x(){return s.mimoModel.value==="mimo-v2.5-tts-voicedesign"?"voiceDesign":s.mimoModel.value==="mimo-v2.5-tts-voiceclone"?"voiceClone":"preset"}function V(){const d=x();return{baseUrl:s.mimoBaseUrl.value,apiKey:s.mimoApiKey.value,authMode:s.mimoAuthMode.value,model:s.mimoModel.value,voiceMode:d,voice:d==="preset"?s.mimoVoice.value:void 0,voiceDesignDesc:d==="voiceDesign"&&s.mimoVoiceDesignDesc.value||void 0,voiceCloneDataUri:d==="voiceClone"&&s.mimoVoiceCloneDataUri.value||void 0,voiceCloneFormat:d==="voiceClone"?s.mimoVoiceCloneFormat.value:void 0,stylePrompt:s.mimoStylePrompt.value||void 0}}function D(d){const b=d.name.toLowerCase();return d.type.includes("mpeg")||d.type.includes("mp3")||b.endsWith(".mp3")?"mp3":"wav"}function ne(d){return new Promise((b,k)=>{const ee=new FileReader;ee.onload=()=>b(String(ee.result||"")),ee.onerror=()=>k(ee.error||new Error("Failed to read audio file")),ee.readAsDataURL(d)})}async function q(d){const b=d.target,k=b.files?.[0];if(!k)return;const ee=k.name.toLowerCase();if(!(k.type==="audio/wav"||k.type==="audio/mpeg"||k.type==="audio/mp3"||ee.endsWith(".wav")||ee.endsWith(".mp3"))){console.warn("[VoiceSettings] MiMo clone audio must be mp3 or wav"),b.value="";return}if(k.size>Wt){console.warn("[VoiceSettings] MiMo clone audio is too large"),b.value="";return}const _e=await ne(k);s.setMimoVoiceCloneDataUri(_e),s.setMimoVoiceCloneFileName(k.name),s.setMimoVoiceCloneFormat(D(k))}function me(){s.setMimoVoiceCloneDataUri(""),s.setMimoVoiceCloneFileName(""),s.setMimoVoiceCloneFormat("wav"),y.value&&(y.value.value="")}async function v(){const d=o.value.trim();if(d){m.value=!0;try{if(s.provider.value==="webspeech")l.stop(!1),l.speakViaBrowser("__test__",d,{voiceName:s.webspeechVoice.value||void 0});else if(s.provider.value==="openai"){if(!s.openaiBaseUrl.value){console.warn("[VoiceSettings] OpenAI base URL empty");return}await l.openaiPlay("__test__",d,{provider:"openai",baseUrl:s.openaiBaseUrl.value,apiKey:s.openaiApiKey.value||void 0,model:s.openaiModel.value,voice:s.openaiVoice.value})}else if(s.provider.value==="custom"){if(!s.customUrl.value){console.warn("[VoiceSettings] Custom URL empty");return}await l.openaiPlay("__test__",d,{provider:"custom",baseUrl:s.customUrl.value,apiKey:s.customApiKey.value||void 0})}else if(s.provider.value==="edge")await l.openaiPlay("__test__",d,{provider:"edge",baseUrl:"/api/tts/proxy",voice:s.edgeVoice.value,rate:xe(s.edgeRate.value),pitch:ke(s.edgePitchHz.value)});else if(s.provider.value==="mimo"){if(!s.mimoApiKey.value){console.warn("[VoiceSettings] MiMo API Key empty");return}await l.mimoPlay("__test__",d,V())}}catch(b){console.error("[VoiceSettings] Test failed:",b)}finally{m.value=!1}}}return(d,b)=>(S(),M("div",Nt,[a(p,{label:e(t)("settings.voice.ttsProvider"),hint:e(t)("settings.voice.ttsProviderHint")},{default:i(()=>[a(e(F),{value:e(s).provider.value,options:r,size:"small",style:{width:"300px"},"onUpdate:value":e(s).setProvider},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).provider.value==="webspeech"?(S(),se(p,{key:0,label:e(t)("settings.voice.webspeechVoice"),hint:e(t)("settings.voice.webspeechVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).webspeechVoice.value,size:"small",filterable:"",style:{width:"320px"},placeholder:e(t)("settings.voice.webspeechVoicePlaceholder"),"consistent-menu-width":!1,options:h.value.map(k=>({label:`${k.name} (${k.lang})`,value:k.name})),"onUpdate:value":e(s).setWebSpeechVoice},null,8,["value","placeholder","options","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).provider.value==="openai"?(S(),M(ve,{key:1},[a(p,{label:e(t)("settings.voice.openaiKey"),hint:e(t)("settings.voice.openaiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).openaiApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:"sk-...","onUpdate:value":e(s).setOpenaiApiKey},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiUrl"),hint:e(t)("settings.voice.openaiUrlHint")},{default:i(()=>[a(e(T),{value:e(s).openaiBaseUrl.value,size:"small",style:{width:"360px"},placeholder:"https://api.openai.com/v1/audio/speech","onUpdate:value":e(s).setOpenaiBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiModel"),hint:e(t)("settings.voice.openaiModelHint")},{default:i(()=>[a(e(F),{value:e(s).openaiModel.value,options:c,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.openaiVoice"),hint:e(t)("settings.voice.openaiVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).openaiVoice.value,options:n,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="custom"?(S(),M(ve,{key:2},[g("div",Vt,_(e(t)("settings.voice.customHint")),1),a(p,{label:e(t)("settings.voice.customUrl"),hint:e(t)("settings.voice.customUrlHint")},{default:i(()=>[a(e(T),{value:e(s).customUrl.value,size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.customUrlPlaceholder"),"onUpdate:value":e(s).setCustomUrl},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.customApiKey"),hint:e(t)("settings.voice.customApiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).customApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:e(t)("settings.voice.customApiKeyPlaceholder"),"onUpdate:value":e(s).setCustomApiKey},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="edge"?(S(),M(ve,{key:3},[g("div",Ft,_(e(t)("settings.voice.edgeHint")),1),a(p,{label:e(t)("settings.voice.edgeVoice"),hint:e(t)("settings.voice.edgeVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).edgeVoice.value,options:u,size:"small",filterable:"",style:{width:"320px"},"consistent-menu-width":!1,"onUpdate:value":e(s).setEdgeVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.edgeRate"),hint:e(t)("settings.voice.edgeRateHint")},{default:i(()=>[g("div",Tt,[a(e(Ae),{value:e(s).edgeRate.value,min:.5,max:2,step:.05,style:{width:"200px"},"onUpdate:value":e(s).setEdgeRate},null,8,["value","onUpdate:value"]),g("span",Dt,_(e(s).edgeRate.value.toFixed(2))+"x ("+_(e(xe)(e(s).edgeRate.value))+")",1)])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.edgePitch"),hint:e(t)("settings.voice.edgePitchHint")},{default:i(()=>[g("div",It,[a(e(Ae),{value:e(s).edgePitchHz.value,min:-20,max:20,step:1,style:{width:"200px"},"onUpdate:value":e(s).setEdgePitchHz},null,8,["value","onUpdate:value"]),g("span",$t,_(e(s).edgePitchHz.value>0?"+":"")+_(e(s).edgePitchHz.value)+" Hz ("+_(e(ke)(e(s).edgePitchHz.value))+")",1)])]),_:1},8,["label","hint"])],64)):I("",!0),e(s).provider.value==="mimo"?(S(),M(ve,{key:4},[g("div",Kt,_(e(t)("settings.voice.mimoHint")),1),a(p,{label:e(t)("settings.voice.mimoApiKey"),hint:e(t)("settings.voice.mimoApiKeyHint")},{default:i(()=>[a(e(T),{value:e(s).mimoApiKey.value,type:"password",size:"small","show-password-on":"click",style:{width:"360px"},placeholder:e(t)("settings.voice.mimoApiKeyPlaceholder"),"onUpdate:value":e(s).setMimoApiKey},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoAuthMode"),hint:e(t)("settings.voice.mimoAuthModeHint")},{default:i(()=>[a(e(F),{value:e(s).mimoAuthMode.value,options:P,size:"small",style:{width:"240px"},"onUpdate:value":e(s).setMimoAuthMode},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoBaseUrl"),hint:e(t)("settings.voice.mimoBaseUrlHint")},{default:i(()=>[a(e(F),{value:e(s).mimoBaseUrl.value,options:f,size:"small",filterable:"",tag:"",style:{width:"360px"},"onUpdate:value":e(s).setMimoBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(p,{label:e(t)("settings.voice.mimoModel"),hint:e(t)("settings.voice.mimoModelHint")},{default:i(()=>[a(e(F),{value:e(s).mimoModel.value,options:$,size:"small",style:{width:"320px"},"onUpdate:value":e(s).setMimoModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).mimoModel.value==="mimo-v2.5-tts"?(S(),se(p,{key:0,label:e(t)("settings.voice.mimoVoice"),hint:e(t)("settings.voice.mimoVoiceHint")},{default:i(()=>[a(e(F),{value:e(s).mimoVoice.value,options:Y,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setMimoVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voicedesign"?(S(),se(p,{key:1,label:e(t)("settings.voice.mimoVoiceDesignPrompt"),hint:e(t)("settings.voice.mimoVoiceDesignPromptHint")},{default:i(()=>[a(e(T),{value:e(s).mimoVoiceDesignDesc.value,type:"textarea",size:"small",style:{width:"360px"},rows:3,placeholder:e(t)("settings.voice.mimoVoiceDesignPromptPlaceholder"),"onUpdate:value":e(s).setMimoVoiceDesignDesc},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])):I("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voiceclone"?(S(),se(p,{key:2,label:e(t)("settings.voice.mimoCloneAudio"),hint:e(t)("settings.voice.mimoCloneAudioHint")},{default:i(()=>[g("div",Rt,[g("input",{ref_key:"mimoCloneAudioInput",ref:y,type:"file",accept:jt,class:"hidden-file-input",onChange:q},null,544),a(e(z),{size:"small",onClick:b[0]||(b[0]=k=>y.value?.click())},{default:i(()=>[N(_(e(t)("settings.voice.mimoCloneAudioUpload")),1)]),_:1}),e(s).mimoVoiceCloneFileName.value?(S(),M("span",Lt,_(e(s).mimoVoiceCloneFileName.value)+" · "+_(e(s).mimoVoiceCloneFormat.value),1)):I("",!0),e(s).mimoVoiceCloneDataUri.value?(S(),se(e(z),{key:1,size:"small",tertiary:"",onClick:me},{default:i(()=>[N(_(e(t)("settings.voice.mimoCloneAudioClear")),1)]),_:1})):I("",!0)])]),_:1},8,["label","hint"])):I("",!0),a(p,{label:e(t)("settings.voice.mimoStylePrompt"),hint:e(t)("settings.voice.mimoStylePromptHint")},{default:i(()=>[a(e(T),{value:e(s).mimoStylePrompt.value,type:"textarea",size:"small",style:{width:"360px"},rows:2,placeholder:e(t)("settings.voice.mimoStylePromptPlaceholder"),"onUpdate:value":e(s).setMimoStylePrompt},null,8,["value","placeholder","onUpdate:value"])]),_:1},8,["label","hint"])],64)):I("",!0),g("div",Ot,[g("h4",Bt,_(e(t)("settings.voice.testTitle")),1),g("div",Et,[a(e(T),{value:o.value,"onUpdate:value":b[1]||(b[1]=k=>o.value=k),size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.testTextPlaceholder"),disabled:m.value,onKeyup:be(v,["enter"])},null,8,["value","placeholder","disabled"]),a(e(z),{size:"small",type:"primary",loading:m.value,disabled:m.value,onClick:v},{default:i(()=>[N(_(m.value?e(t)("settings.voice.testButtonPlaying"):e(t)("settings.voice.testButton")),1)]),_:1},8,["loading","disabled"])])])]))}})})),Vs=U((()=>{})),Ma,Fs=U((()=>{Gt(),Gt(),Vs(),j(),Ma=G(Ca,[["__scopeId","data-v-b2e8273b"]])})),Jt,Yt,qt,Xt,Pa,Qt=U((()=>{L(),Da(),B(),E(),re(),ms(),gs(),fs(),bs(),Ss(),As(),Ms(),xs(),zs(),Ns(),Fs(),Ka(),sa(),Jt={class:"settings-view"},Yt={class:"page-header"},qt={class:"header-title"},Xt={class:"settings-content"},Pa=O({__name:"SettingsView",setup(J){const t=ue(),s=aa(),{t:l}=W(),o=Ra(),m=$a(),y=Ia(),r=C("account"),c=Q(()=>new Set(["account",...o?["users"]:[],"display","agent","memory","compression","session","privacy","models","voice"]));function n(f){const P=typeof f=="string"?f:"";return c.value.has(P)?P:"account"}function u(f){r.value=n(f),y.replace({query:{...m.query,tab:r.value==="account"?void 0:r.value}})}za(()=>m.query.tab,f=>{r.value=n(f)},{immediate:!0});async function h(){(!s.activeProfileName||s.profiles.length===0)&&await s.fetchProfiles(),await t.fetchSettings()}return pe(()=>{h()}),(f,P)=>(S(),M("div",Jt,[g("header",Yt,[g("h2",qt,_(e(l)("settings.title")),1)]),g("div",Xt,[a(e(ta),{show:e(t).loading||e(t).saving,size:"large",description:e(l)("common.loading")},{default:i(()=>[a(e(Fa),{value:r.value,"onUpdate:value":[P[0]||(P[0]=$=>r.value=$),u],type:"line",animated:""},{default:i(()=>[a(e(te),{name:"account",tab:e(l)("settings.tabs.account")},{default:i(()=>[a(Sa)]),_:1},8,["tab"]),e(o)?(S(),se(e(te),{key:0,name:"users",tab:e(l)("settings.tabs.users")},{default:i(()=>[a(Aa)]),_:1},8,["tab"])):I("",!0),a(e(te),{name:"display",tab:e(l)("settings.tabs.display")},{default:i(()=>[a(na)]),_:1},8,["tab"]),a(e(te),{name:"agent",tab:e(l)("settings.tabs.agent")},{default:i(()=>[a(ua),a(da)]),_:1},8,["tab"]),a(e(te),{name:"memory",tab:e(l)("settings.tabs.memory")},{default:i(()=>[a(va)]),_:1},8,["tab"]),a(e(te),{name:"compression",tab:e(l)("settings.tabs.compression")},{default:i(()=>[a(ma)]),_:1},8,["tab"]),a(e(te),{name:"session",tab:e(l)("settings.tabs.session")},{default:i(()=>[a(ga)]),_:1},8,["tab"]),a(e(te),{name:"privacy",tab:e(l)("settings.tabs.privacy")},{default:i(()=>[a(fa)]),_:1},8,["tab"]),a(e(te),{name:"models",tab:e(l)("settings.tabs.models")},{default:i(()=>[a(ba)]),_:1},8,["tab"]),a(e(te),{name:"voice",tab:e(l)("settings.tabs.voice")},{default:i(()=>[a(Ma)]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show","description"])])]))}})})),Ts=U((()=>{})),Ds,Is=U((()=>{Qt(),Qt(),Ts(),j(),Ds=G(Pa,[["__scopeId","data-v-3a2d49d6"]])}));Is();export{Ds as default};
@@ -1 +1 @@
1
- import{n as q}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as a,$t as e,An as R,Bn as p,Bt as sl,Cn as f,Jn as i,Qn as b,Qt as v,Xn as X,Yt as m,an as C,nn as n,on as E,sn as al,t as tl,tn as D,wt as H,xn as r,yn as il}from"./ui-vendor-DNWaqYj5.js";import{c as ol,l as nl}from"./vue-vendor-VX6KvV1_.js";import{n as rl,t as ul}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{X as dl,Y as _l}from"./index-BHU-82RO.js";import{l as cl,o as vl}from"./skills-fBzB8FGc.js";var J,K,O,j,G,W,Z,ee,le,se,ae,te,ie,oe,ne,re,ue,de,_e,ce,ve,he,ke,me,pe,ge,ye,fe,be,Se,Ue,we,xe,Ce,$e,Me,Ve,Be,De,Fe,Pe,qe,Ae,Te,Le,Ne,ze,Ie,Ye,Qe,F,P,Xe,Re=q((()=>{sl(),ol(),tl(),_l(),cl(),J={class:"skills-usage-view"},K={class:"page-header"},O={class:"header-text"},j={class:"header-title"},G={class:"header-subtitle"},W={class:"skills-usage-toolbar"},Z=["aria-label"],ee={class:"skills-usage-content"},le={key:0,class:"skills-usage-state error"},se={key:1,class:"skills-usage-state"},ae={key:0,class:"inline-error"},te={class:"overview-grid"},ie={class:"panel-header"},oe={key:0,class:"skills-usage-state compact"},ne={class:"skill-bar-chart"},re=["onMouseenter","onFocusin","onMouseleave","onFocusout"],ue={class:"skill-bar-track"},de=["data-skill"],_e={class:"tooltip-date"},ce={class:"tooltip-row total"},ve={class:"bar-dates"},he=["aria-label"],ke={class:"summary-card primary"},me={class:"summary-label"},pe={class:"summary-value"},ge={class:"summary-card"},ye={class:"summary-label"},fe={class:"summary-value"},be={class:"summary-card"},Se={class:"summary-label"},Ue={class:"summary-value"},we={class:"summary-card"},xe={class:"summary-label"},Ce={class:"summary-value"},$e={class:"usage-panel"},Me={class:"panel-header"},Ve={key:0,class:"skills-usage-state compact"},Be=["aria-label"],De={class:"skills-row table-head",role:"row"},Fe={role:"columnheader"},Pe={role:"columnheader"},qe={role:"columnheader"},Ae={role:"columnheader"},Te={role:"columnheader"},Le={class:"skill-name",role:"cell"},Ne={role:"cell"},ze={role:"cell"},Ie={class:"share-cell",role:"cell"},Ye={class:"share-bar"},Qe={class:"last-used",role:"cell"},F=6,P="#5b6b84",Xe=al({__name:"SkillsUsageView",setup(pl){const{t}=nl(),$=dl(),Ee=[7,30,90,365],A=["#2f6eea","#f26d3d","#f49a5c","#9aa7ff","#8f2c8f","#00c2d1"],h=p(7),g=p(!1),k=p(""),S=p({});let U=0;const T={},o=v(()=>S.value[h.value]??null),L=v(()=>(o.value?.summary.total_skill_actions??0)>0),He=v(()=>Math.max(...(o.value?.by_day??[]).map(s=>s.total_count),1)),Je=v(()=>g.value&&!!o.value),w=p(null),x=p(null),y=v(()=>o.value?.by_day.find(s=>s.date===w.value)??null),Ke=v(()=>y.value?I(y.value):[]),Oe=v(()=>{const s=o.value?.by_day.length??0;return x.value===null||s<=0?"align-right":x.value>=s/2?"align-left":"align-right"}),M=v(()=>(o.value?.top_skills??[]).slice(0,F)),je=v(()=>new Set(M.value.map(s=>s.skill)));function N(s){return`${s.toFixed(1)}%`}function Ge(s){return s?new Date(s*1e3).toLocaleString():"—"}function We(s){return`${Math.max(2,s/He.value*100)}%`}function Ze(s){return Math.max(s,0)}function z(s){return s.total_count||s.view_count+s.manage_count}function el(){const s=Math.max((o.value?.top_skills.length??0)-F,0);return s>0?`${t("skillsUsage.otherSkills")} (+${s})`:t("skillsUsage.otherSkills")}function V(s){const d=M.value.findIndex(l=>l.skill===s);return d>=0?A[d%A.length]:P}function I(s){const d=s.skills??[],l=new Map(d.map(u=>[u.skill,z(u)])),c=M.value.map(u=>({key:u.skill,label:u.skill,count:l.get(u.skill)??0,color:V(u.skill)})).filter(u=>u.count>0),_=d.filter(u=>!je.value.has(u.skill)).reduce((u,ll)=>u+z(ll),0);return _>0&&c.push({key:"other-skills",label:el(),count:_,color:P}),c}function Y(s,d){w.value=s.date,x.value=d}function Q(s){w.value===s.date&&(w.value=null,x.value=null)}async function B(s=h.value,d=!1){h.value=s,(!$.activeProfileName||$.profiles.length===0)&&await $.fetchProfiles();const l=++U;T[s]=l,g.value=!0,(!S.value[s]||d)&&(k.value="");try{const c=await vl(s);T[s]===l&&(S.value={...S.value,[s]:c}),l===U&&(k.value="")}catch(c){l===U&&(k.value=c?.message||t("skillsUsage.loadFailed"))}finally{l===U&&(g.value=!1)}}return il(()=>{B(7)}),(s,d)=>(r(),n("div",J,[e("header",K,[e("div",O,[e("h2",j,a(i(t)("skillsUsage.title")),1),e("p",G,a(i(t)("skillsUsage.subtitle")),1)]),e("div",W,[e("div",{class:"period-selector",role:"group","aria-label":i(t)("skillsUsage.periodSelector")},[(r(),n(m,null,f(Ee,l=>E(i(H),{key:l,size:"small",secondary:h.value===l,quaternary:h.value!==l,type:h.value===l?"primary":"default","aria-pressed":h.value===l?"true":"false",onClick:c=>B(l)},{default:R(()=>[C(a(i(t)("skillsUsage.periodLabel",{days:l})),1)]),_:2},1032,["secondary","quaternary","type","aria-pressed","onClick"])),64))],8,Z),E(i(H),{size:"small",quaternary:"",loading:g.value,onClick:d[0]||(d[0]=l=>B(h.value,!0))},{default:R(()=>[C(a(i(t)("skillsUsage.refresh")),1)]),_:1},8,["loading"])])]),e("div",ee,[k.value&&!o.value?(r(),n("div",le,a(k.value),1)):g.value&&!o.value?(r(),n("div",se,a(i(t)("common.loading")),1)):o.value?(r(),n(m,{key:2},[k.value?(r(),n("div",ae,a(k.value),1)):D("",!0),e("section",te,[e("div",{class:X(["usage-panel chart-panel",{"is-refreshing":Je.value}]),"data-testid":"skills-usage-chart"},[e("div",ie,[e("h3",null,a(i(t)("skillsUsage.dailyTrend")),1),e("span",null,a(i(t)("skillsUsage.periodSummary",{days:o.value.period_days})),1)]),L.value?(r(),n(m,{key:1},[e("div",ne,[(r(!0),n(m,null,f(o.value.by_day,(l,c)=>(r(),n("div",{key:l.date,class:"skill-bar-col",tabindex:"0",onMouseenter:_=>Y(l,c),onFocusin:_=>Y(l,c),onMouseleave:_=>Q(l),onFocusout:_=>Q(l)},[e("div",ue,[e("div",{class:"skill-bar-fill",style:b({height:We(l.total_count)})},[(r(!0),n(m,null,f(I(l),_=>(r(),n("div",{key:_.key,class:"skill-bar-segment","data-skill":_.key,style:b({flex:Ze(_.count),background:_.color})},null,12,de))),128))],4)])],40,re))),128))]),y.value?(r(),n("div",{key:0,class:X(["floating-tooltip",Oe.value])},[e("div",_e,a(y.value.date),1),(r(!0),n(m,null,f(Ke.value,l=>(r(),n("div",{key:l.key,class:"tooltip-row"},[e("i",{class:"tooltip-dot",style:b({background:l.color})},null,4),e("span",null,a(l.label),1),e("strong",null,a(l.count),1)]))),128)),e("div",ce,[e("span",null,a(i(t)("skillsUsage.totalActions")),1),e("strong",null,a(y.value.total_count),1)])],2)):D("",!0),e("div",ve,[e("span",null,a(o.value.by_day[0]?.date.slice(5)),1),e("span",null,a(o.value.by_day[o.value.by_day.length-1]?.date.slice(5)),1)])],64)):(r(),n("div",oe,a(i(t)("skillsUsage.noData")),1))],2),e("div",{class:"summary-grid","data-testid":"skills-usage-stats","aria-label":i(t)("skillsUsage.summary")},[e("div",ke,[e("div",me,a(i(t)("skillsUsage.totalActions")),1),e("div",pe,a(o.value.summary.total_skill_actions),1)]),e("div",ge,[e("div",ye,a(i(t)("skillsUsage.loads")),1),e("div",fe,a(o.value.summary.total_skill_loads),1)]),e("div",be,[e("div",Se,a(i(t)("skillsUsage.edits")),1),e("div",Ue,a(o.value.summary.total_skill_edits),1)]),e("div",we,[e("div",xe,a(i(t)("skillsUsage.distinctSkills")),1),e("div",Ce,a(o.value.summary.distinct_skills_used),1)])],8,he)]),e("section",$e,[e("div",Me,[e("h3",null,a(i(t)("skillsUsage.topSkills")),1),e("span",null,a(i(t)("skillsUsage.periodSummary",{days:o.value.period_days})),1)]),L.value?(r(),n("div",{key:1,class:"skills-table",role:"table","aria-label":i(t)("skillsUsage.topSkills")},[e("div",De,[e("span",Fe,a(i(t)("skillsUsage.skill")),1),e("span",Pe,a(i(t)("skillsUsage.loads")),1),e("span",qe,a(i(t)("skillsUsage.edits")),1),e("span",Ae,a(i(t)("skillsUsage.share")),1),e("span",Te,a(i(t)("skillsUsage.lastUsed")),1)]),(r(!0),n(m,null,f(o.value.top_skills,l=>(r(),n("div",{key:l.skill,class:"skills-row",role:"row"},[e("span",Le,[e("i",{class:"skill-color-dot",style:b({background:V(l.skill)})},null,4),C(" "+a(l.skill),1)]),e("span",Ne,a(l.view_count),1),e("span",ze,a(l.manage_count),1),e("span",Ie,[e("span",Ye,[e("span",{style:b({width:N(l.percentage),background:V(l.skill)})},null,4)]),C(" "+a(N(l.percentage)),1)]),e("span",Qe,a(Ge(l.last_used_at)),1)]))),128))],8,Be)):(r(),n("div",Ve,a(i(t)("skillsUsage.noData")),1))])],64)):D("",!0)])]))}})})),hl=q((()=>{})),kl,ml=q((()=>{Re(),Re(),hl(),rl(),kl=ul(Xe,[["__scopeId","data-v-efe6595e"]])}));ml();export{kl as default};
1
+ import{n as q}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as a,$t as e,An as R,Bn as p,Bt as sl,Cn as f,Jn as i,Qn as b,Qt as v,Xn as X,Yt as m,an as C,nn as n,on as E,sn as al,t as tl,tn as D,wt as H,xn as r,yn as il}from"./ui-vendor-DNWaqYj5.js";import{c as ol,l as nl}from"./vue-vendor-VX6KvV1_.js";import{n as rl,t as ul}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{X as dl,Y as _l}from"./index-DyLZQAQu.js";import{l as cl,o as vl}from"./skills-CDjYTDMo.js";var J,K,O,j,G,W,Z,ee,le,se,ae,te,ie,oe,ne,re,ue,de,_e,ce,ve,he,ke,me,pe,ge,ye,fe,be,Se,Ue,we,xe,Ce,$e,Me,Ve,Be,De,Fe,Pe,qe,Ae,Te,Le,Ne,ze,Ie,Ye,Qe,F,P,Xe,Re=q((()=>{sl(),ol(),tl(),_l(),cl(),J={class:"skills-usage-view"},K={class:"page-header"},O={class:"header-text"},j={class:"header-title"},G={class:"header-subtitle"},W={class:"skills-usage-toolbar"},Z=["aria-label"],ee={class:"skills-usage-content"},le={key:0,class:"skills-usage-state error"},se={key:1,class:"skills-usage-state"},ae={key:0,class:"inline-error"},te={class:"overview-grid"},ie={class:"panel-header"},oe={key:0,class:"skills-usage-state compact"},ne={class:"skill-bar-chart"},re=["onMouseenter","onFocusin","onMouseleave","onFocusout"],ue={class:"skill-bar-track"},de=["data-skill"],_e={class:"tooltip-date"},ce={class:"tooltip-row total"},ve={class:"bar-dates"},he=["aria-label"],ke={class:"summary-card primary"},me={class:"summary-label"},pe={class:"summary-value"},ge={class:"summary-card"},ye={class:"summary-label"},fe={class:"summary-value"},be={class:"summary-card"},Se={class:"summary-label"},Ue={class:"summary-value"},we={class:"summary-card"},xe={class:"summary-label"},Ce={class:"summary-value"},$e={class:"usage-panel"},Me={class:"panel-header"},Ve={key:0,class:"skills-usage-state compact"},Be=["aria-label"],De={class:"skills-row table-head",role:"row"},Fe={role:"columnheader"},Pe={role:"columnheader"},qe={role:"columnheader"},Ae={role:"columnheader"},Te={role:"columnheader"},Le={class:"skill-name",role:"cell"},Ne={role:"cell"},ze={role:"cell"},Ie={class:"share-cell",role:"cell"},Ye={class:"share-bar"},Qe={class:"last-used",role:"cell"},F=6,P="#5b6b84",Xe=al({__name:"SkillsUsageView",setup(pl){const{t}=nl(),$=dl(),Ee=[7,30,90,365],A=["#2f6eea","#f26d3d","#f49a5c","#9aa7ff","#8f2c8f","#00c2d1"],h=p(7),g=p(!1),k=p(""),S=p({});let U=0;const T={},o=v(()=>S.value[h.value]??null),L=v(()=>(o.value?.summary.total_skill_actions??0)>0),He=v(()=>Math.max(...(o.value?.by_day??[]).map(s=>s.total_count),1)),Je=v(()=>g.value&&!!o.value),w=p(null),x=p(null),y=v(()=>o.value?.by_day.find(s=>s.date===w.value)??null),Ke=v(()=>y.value?I(y.value):[]),Oe=v(()=>{const s=o.value?.by_day.length??0;return x.value===null||s<=0?"align-right":x.value>=s/2?"align-left":"align-right"}),M=v(()=>(o.value?.top_skills??[]).slice(0,F)),je=v(()=>new Set(M.value.map(s=>s.skill)));function N(s){return`${s.toFixed(1)}%`}function Ge(s){return s?new Date(s*1e3).toLocaleString():"—"}function We(s){return`${Math.max(2,s/He.value*100)}%`}function Ze(s){return Math.max(s,0)}function z(s){return s.total_count||s.view_count+s.manage_count}function el(){const s=Math.max((o.value?.top_skills.length??0)-F,0);return s>0?`${t("skillsUsage.otherSkills")} (+${s})`:t("skillsUsage.otherSkills")}function V(s){const d=M.value.findIndex(l=>l.skill===s);return d>=0?A[d%A.length]:P}function I(s){const d=s.skills??[],l=new Map(d.map(u=>[u.skill,z(u)])),c=M.value.map(u=>({key:u.skill,label:u.skill,count:l.get(u.skill)??0,color:V(u.skill)})).filter(u=>u.count>0),_=d.filter(u=>!je.value.has(u.skill)).reduce((u,ll)=>u+z(ll),0);return _>0&&c.push({key:"other-skills",label:el(),count:_,color:P}),c}function Y(s,d){w.value=s.date,x.value=d}function Q(s){w.value===s.date&&(w.value=null,x.value=null)}async function B(s=h.value,d=!1){h.value=s,(!$.activeProfileName||$.profiles.length===0)&&await $.fetchProfiles();const l=++U;T[s]=l,g.value=!0,(!S.value[s]||d)&&(k.value="");try{const c=await vl(s);T[s]===l&&(S.value={...S.value,[s]:c}),l===U&&(k.value="")}catch(c){l===U&&(k.value=c?.message||t("skillsUsage.loadFailed"))}finally{l===U&&(g.value=!1)}}return il(()=>{B(7)}),(s,d)=>(r(),n("div",J,[e("header",K,[e("div",O,[e("h2",j,a(i(t)("skillsUsage.title")),1),e("p",G,a(i(t)("skillsUsage.subtitle")),1)]),e("div",W,[e("div",{class:"period-selector",role:"group","aria-label":i(t)("skillsUsage.periodSelector")},[(r(),n(m,null,f(Ee,l=>E(i(H),{key:l,size:"small",secondary:h.value===l,quaternary:h.value!==l,type:h.value===l?"primary":"default","aria-pressed":h.value===l?"true":"false",onClick:c=>B(l)},{default:R(()=>[C(a(i(t)("skillsUsage.periodLabel",{days:l})),1)]),_:2},1032,["secondary","quaternary","type","aria-pressed","onClick"])),64))],8,Z),E(i(H),{size:"small",quaternary:"",loading:g.value,onClick:d[0]||(d[0]=l=>B(h.value,!0))},{default:R(()=>[C(a(i(t)("skillsUsage.refresh")),1)]),_:1},8,["loading"])])]),e("div",ee,[k.value&&!o.value?(r(),n("div",le,a(k.value),1)):g.value&&!o.value?(r(),n("div",se,a(i(t)("common.loading")),1)):o.value?(r(),n(m,{key:2},[k.value?(r(),n("div",ae,a(k.value),1)):D("",!0),e("section",te,[e("div",{class:X(["usage-panel chart-panel",{"is-refreshing":Je.value}]),"data-testid":"skills-usage-chart"},[e("div",ie,[e("h3",null,a(i(t)("skillsUsage.dailyTrend")),1),e("span",null,a(i(t)("skillsUsage.periodSummary",{days:o.value.period_days})),1)]),L.value?(r(),n(m,{key:1},[e("div",ne,[(r(!0),n(m,null,f(o.value.by_day,(l,c)=>(r(),n("div",{key:l.date,class:"skill-bar-col",tabindex:"0",onMouseenter:_=>Y(l,c),onFocusin:_=>Y(l,c),onMouseleave:_=>Q(l),onFocusout:_=>Q(l)},[e("div",ue,[e("div",{class:"skill-bar-fill",style:b({height:We(l.total_count)})},[(r(!0),n(m,null,f(I(l),_=>(r(),n("div",{key:_.key,class:"skill-bar-segment","data-skill":_.key,style:b({flex:Ze(_.count),background:_.color})},null,12,de))),128))],4)])],40,re))),128))]),y.value?(r(),n("div",{key:0,class:X(["floating-tooltip",Oe.value])},[e("div",_e,a(y.value.date),1),(r(!0),n(m,null,f(Ke.value,l=>(r(),n("div",{key:l.key,class:"tooltip-row"},[e("i",{class:"tooltip-dot",style:b({background:l.color})},null,4),e("span",null,a(l.label),1),e("strong",null,a(l.count),1)]))),128)),e("div",ce,[e("span",null,a(i(t)("skillsUsage.totalActions")),1),e("strong",null,a(y.value.total_count),1)])],2)):D("",!0),e("div",ve,[e("span",null,a(o.value.by_day[0]?.date.slice(5)),1),e("span",null,a(o.value.by_day[o.value.by_day.length-1]?.date.slice(5)),1)])],64)):(r(),n("div",oe,a(i(t)("skillsUsage.noData")),1))],2),e("div",{class:"summary-grid","data-testid":"skills-usage-stats","aria-label":i(t)("skillsUsage.summary")},[e("div",ke,[e("div",me,a(i(t)("skillsUsage.totalActions")),1),e("div",pe,a(o.value.summary.total_skill_actions),1)]),e("div",ge,[e("div",ye,a(i(t)("skillsUsage.loads")),1),e("div",fe,a(o.value.summary.total_skill_loads),1)]),e("div",be,[e("div",Se,a(i(t)("skillsUsage.edits")),1),e("div",Ue,a(o.value.summary.total_skill_edits),1)]),e("div",we,[e("div",xe,a(i(t)("skillsUsage.distinctSkills")),1),e("div",Ce,a(o.value.summary.distinct_skills_used),1)])],8,he)]),e("section",$e,[e("div",Me,[e("h3",null,a(i(t)("skillsUsage.topSkills")),1),e("span",null,a(i(t)("skillsUsage.periodSummary",{days:o.value.period_days})),1)]),L.value?(r(),n("div",{key:1,class:"skills-table",role:"table","aria-label":i(t)("skillsUsage.topSkills")},[e("div",De,[e("span",Fe,a(i(t)("skillsUsage.skill")),1),e("span",Pe,a(i(t)("skillsUsage.loads")),1),e("span",qe,a(i(t)("skillsUsage.edits")),1),e("span",Ae,a(i(t)("skillsUsage.share")),1),e("span",Te,a(i(t)("skillsUsage.lastUsed")),1)]),(r(!0),n(m,null,f(o.value.top_skills,l=>(r(),n("div",{key:l.skill,class:"skills-row",role:"row"},[e("span",Le,[e("i",{class:"skill-color-dot",style:b({background:V(l.skill)})},null,4),C(" "+a(l.skill),1)]),e("span",Ne,a(l.view_count),1),e("span",ze,a(l.manage_count),1),e("span",Ie,[e("span",Ye,[e("span",{style:b({width:N(l.percentage),background:V(l.skill)})},null,4)]),C(" "+a(N(l.percentage)),1)]),e("span",Qe,a(Ge(l.last_used_at)),1)]))),128))],8,Be)):(r(),n("div",Ve,a(i(t)("skillsUsage.noData")),1))])],64)):D("",!0)])]))}})})),hl=q((()=>{})),kl,ml=q((()=>{Re(),Re(),hl(),rl(),kl=ul(Xe,[["__scopeId","data-v-efe6595e"]])}));ml();export{kl as default};