hermes-web-ui 0.5.27 → 0.5.28

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 (36) hide show
  1. package/dist/client/assets/js/{ChannelsView-D_Hpf1W2.js → ChannelsView-CuofDTcs.js} +1 -1
  2. package/dist/client/assets/js/{ChatView-DOr-OoTw.js → ChatView-Cpj8e0uj.js} +1 -1
  3. package/dist/client/assets/js/{FileRenameModal-DCzKrCtb.js → FileRenameModal-DS3tMLmA.js} +1 -1
  4. package/dist/client/assets/js/{FilesView-UJ8COV83.js → FilesView-DitPDLfP.js} +1 -1
  5. package/dist/client/assets/js/{GatewaysView-DoaDCbK0.js → GatewaysView-DEwU6CSA.js} +1 -1
  6. package/dist/client/assets/js/{GroupChatView-DnI3I50w.js → GroupChatView-B1KWnK4w.js} +1 -1
  7. package/dist/client/assets/js/{HistoryMessageList-Dppp5myU.js → HistoryMessageList-DVoUuNfX.js} +1 -1
  8. package/dist/client/assets/js/{HistoryView-Bx31cTqX.js → HistoryView-By-yzPZa.js} +1 -1
  9. package/dist/client/assets/js/{JobsView-Dwo25w0R.js → JobsView-CCwgRxCj.js} +1 -1
  10. package/dist/client/assets/js/{KanbanView-B0OXZzdS.js → KanbanView-CHz90gv2.js} +1 -1
  11. package/dist/client/assets/js/{LoginView-BP1Dbycl.js → LoginView-nCg7jCjW.js} +1 -1
  12. package/dist/client/assets/js/{LogsView-Bjv7V7F0.js → LogsView-BXG5oQpY.js} +1 -1
  13. package/dist/client/assets/js/{MarkdownRenderer-CvzCPLnZ.js → MarkdownRenderer-BCFoS7DH.js} +1 -1
  14. package/dist/client/assets/js/{MemoryView-BZqGsRGv.js → MemoryView-DoVkLerx.js} +1 -1
  15. package/dist/client/assets/js/{MessageItem-BzZuEzVW.js → MessageItem-BhSU5oee.js} +1 -1
  16. package/dist/client/assets/js/{ModelsView-Bu2mJnSO.js → ModelsView-BeDBR3tp.js} +1 -1
  17. package/dist/client/assets/js/{PluginsView-Do42kP51.js → PluginsView-D3w2eLIX.js} +1 -1
  18. package/dist/client/assets/js/{ProfilesView-rgzlgeY7.js → ProfilesView-DgEhQ263.js} +1 -1
  19. package/dist/client/assets/js/{SessionListItem-Y4rY8ixs.js → SessionListItem-BKe7QBCc.js} +1 -1
  20. package/dist/client/assets/js/{SettingRow-5JNu2zcB.js → SettingRow-Cj9O4m9X.js} +1 -1
  21. package/dist/client/assets/js/{SettingsView-BsJJZ2sv.js → SettingsView-VtbkRWEM.js} +1 -1
  22. package/dist/client/assets/js/{SkillsUsageView-DmKMulrJ.js → SkillsUsageView-BGvo9h2N.js} +1 -1
  23. package/dist/client/assets/js/{SkillsView-DrUkFlBB.js → SkillsView-DwsnhtnV.js} +1 -1
  24. package/dist/client/assets/js/{TerminalView-HQvnFA42.js → TerminalView-BAlxAV-W.js} +1 -1
  25. package/dist/client/assets/js/{UsageView-DUlZFcoj.js → UsageView-ByfmOWKv.js} +1 -1
  26. package/dist/client/assets/js/{_plugin-vue_export-helper-ZIsfSgrY.js → _plugin-vue_export-helper-CrLlP_D3.js} +2 -2
  27. package/dist/client/assets/js/app-CYaCGxZ_.js +1 -0
  28. package/dist/client/assets/js/{auth-CrqiXkJC.js → auth-hbDI2OUF.js} +1 -1
  29. package/dist/client/assets/js/{index-JI6E-cKo.js → index-Bzb-xLYu.js} +1 -1
  30. package/dist/client/assets/js/{models-BR4rntqB.js → models-CDvVG-uE.js} +1 -1
  31. package/dist/client/assets/js/{session-browser-prefs-DPQy70mA.js → session-browser-prefs-HIgWQY8T.js} +1 -1
  32. package/dist/client/assets/js/{skills-BZYoszrI.js → skills-BCJOb_4y.js} +1 -1
  33. package/dist/client/index.html +3 -3
  34. package/dist/server/index.js +2 -2
  35. package/package.json +2 -2
  36. package/dist/client/assets/js/app-BP-u-rQP.js +0 -1
@@ -1,4 +1,4 @@
1
- import{n as E}from"./rolldown-runtime-BKwlnUi0.js";import{F as c,Nt as g,Rt as t,Tt as B,U as Me,Vt as s,_t as l,at as q,ct as Ce,et as p,ht as be,it as n,nt as h,ot as v,q as N,rt as f,st as y,t as Ve,tt as e,wt as r,y as ze}from"./ui-vendor-CsTMg6zH.js";import{n as Be,r as Ne}from"./vue-vendor-D8zSB7VM.js";import{n as Se,t as Ee}from"./_plugin-vue_export-helper-ZIsfSgrY.js";import{n as qe,t as S}from"./MarkdownRenderer-CvzCPLnZ.js";import{c as He,o as Le,t as Pe}from"./skills-BZYoszrI.js";var H,L,P,U,$,F,T,D,R,I,j,A,G,J,K,O,Q,W,X,Y,Z,ee,te,oe,ae,se,le,ie,ne,re,de,me,ue,ce,ve,_e,pe,ye=E((()=>{Me(),Ve(),Be(),qe(),Le(),H={class:"memory-view"},L={class:"page-header"},P={class:"header-title"},U={class:"memory-content"},$={key:0,class:"memory-loading"},F={key:1,class:"memory-sections"},T={class:"memory-section"},D={class:"section-header"},R={class:"section-title-row"},I={class:"section-title"},j={key:0,class:"section-mtime"},A={key:0,class:"section-body"},G={key:1,class:"empty-text"},J={key:1,class:"section-edit"},K=["placeholder"],O={class:"edit-actions"},Q={class:"memory-section"},W={class:"section-header"},X={class:"section-title-row"},Y={class:"section-title"},Z={key:0,class:"section-mtime"},ee={key:0,class:"section-body"},te={key:1,class:"empty-text"},oe={key:1,class:"section-edit"},ae=["placeholder"],se={class:"edit-actions"},le={class:"memory-section"},ie={class:"section-header"},ne={class:"section-title-row"},re={class:"section-title"},de={key:0,class:"section-mtime"},me={key:0,class:"section-body"},ue={key:1,class:"empty-text"},ce={key:1,class:"section-edit"},ve=["placeholder"],_e={class:"edit-actions"},pe=Ce({__name:"MemoryView",setup(Te){const{t:a}=Ne(),w=ze(),x=g(!1),i=g(null),d=g(null),m=g(""),k=g(!1);be(M);async function M(){x.value=!0;try{i.value=await Pe()}catch(u){console.error("Failed to load memory:",u),w.error(a("memory.loadFailed"))}finally{x.value=!1}}function C(u){d.value=u,m.value=i.value?.[u]||""}function b(){d.value=null,m.value=""}async function V(){if(d.value){k.value=!0;try{await He(d.value,m.value),await M(),d.value=null,m.value="",w.success(a("common.saved"))}catch(u){w.error(`${a("common.saveFailed")}: ${u.message}`)}finally{k.value=!1}}}function z(u){return u?new Date(u).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}const he=p(()=>!i.value?.memory?.trim()),fe=p(()=>!i.value?.user?.trim()),ke=p(()=>!i.value?.soul?.trim()),ge=p(()=>(i.value?.memory||"").replace(/§/g,`
1
+ import{n as E}from"./rolldown-runtime-BKwlnUi0.js";import{F as c,Nt as g,Rt as t,Tt as B,U as Me,Vt as s,_t as l,at as q,ct as Ce,et as p,ht as be,it as n,nt as h,ot as v,q as N,rt as f,st as y,t as Ve,tt as e,wt as r,y as ze}from"./ui-vendor-CsTMg6zH.js";import{n as Be,r as Ne}from"./vue-vendor-D8zSB7VM.js";import{n as Se,t as Ee}from"./_plugin-vue_export-helper-CrLlP_D3.js";import{n as qe,t as S}from"./MarkdownRenderer-BCFoS7DH.js";import{c as He,o as Le,t as Pe}from"./skills-BCJOb_4y.js";var H,L,P,U,$,F,T,D,R,I,j,A,G,J,K,O,Q,W,X,Y,Z,ee,te,oe,ae,se,le,ie,ne,re,de,me,ue,ce,ve,_e,pe,ye=E((()=>{Me(),Ve(),Be(),qe(),Le(),H={class:"memory-view"},L={class:"page-header"},P={class:"header-title"},U={class:"memory-content"},$={key:0,class:"memory-loading"},F={key:1,class:"memory-sections"},T={class:"memory-section"},D={class:"section-header"},R={class:"section-title-row"},I={class:"section-title"},j={key:0,class:"section-mtime"},A={key:0,class:"section-body"},G={key:1,class:"empty-text"},J={key:1,class:"section-edit"},K=["placeholder"],O={class:"edit-actions"},Q={class:"memory-section"},W={class:"section-header"},X={class:"section-title-row"},Y={class:"section-title"},Z={key:0,class:"section-mtime"},ee={key:0,class:"section-body"},te={key:1,class:"empty-text"},oe={key:1,class:"section-edit"},ae=["placeholder"],se={class:"edit-actions"},le={class:"memory-section"},ie={class:"section-header"},ne={class:"section-title-row"},re={class:"section-title"},de={key:0,class:"section-mtime"},me={key:0,class:"section-body"},ue={key:1,class:"empty-text"},ce={key:1,class:"section-edit"},ve=["placeholder"],_e={class:"edit-actions"},pe=Ce({__name:"MemoryView",setup(Te){const{t:a}=Ne(),w=ze(),x=g(!1),i=g(null),d=g(null),m=g(""),k=g(!1);be(M);async function M(){x.value=!0;try{i.value=await Pe()}catch(u){console.error("Failed to load memory:",u),w.error(a("memory.loadFailed"))}finally{x.value=!1}}function C(u){d.value=u,m.value=i.value?.[u]||""}function b(){d.value=null,m.value=""}async function V(){if(d.value){k.value=!0;try{await He(d.value,m.value),await M(),d.value=null,m.value="",w.success(a("common.saved"))}catch(u){w.error(`${a("common.saveFailed")}: ${u.message}`)}finally{k.value=!1}}}function z(u){return u?new Date(u).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}const he=p(()=>!i.value?.memory?.trim()),fe=p(()=>!i.value?.user?.trim()),ke=p(()=>!i.value?.soul?.trim()),ge=p(()=>(i.value?.memory||"").replace(/§/g,`
2
2
 
3
3
  `)),we=p(()=>(i.value?.user||"").replace(/§/g,`
4
4
 
@@ -1,4 +1,4 @@
1
- import{n as H}from"./rolldown-runtime-BKwlnUi0.js";import{Ct as Wt,Nt as V,Q as Yt,Rt as p,U as pt,Vt as y,X as Xt,Z as M,_t as i,ct as qt,et as u,ht as Gt,it as l,mt as ke,nt as P,rt as g,st as _e,t as Qt,tt as o,y as Zt,yt as oe,zt as _}from"./ui-vendor-CsTMg6zH.js";import{n as es,r as ts}from"./vue-vendor-D8zSB7VM.js";import{a as ss,c as ns,n as as,t as os}from"./_plugin-vue_export-helper-ZIsfSgrY.js";import{T as is,a as ls,i as rs,n as us,o as cs,r as ds,s as ms,t as gs,w as vs}from"./index-JI6E-cKo.js";import{n as hs,t as ps}from"./clipboard-BqPv71We.js";import{a as ys,c as fs,i as ks,n as _s,o as ws,r as we,s as Te,t as x}from"./MarkdownRenderer-CvzCPLnZ.js";import{a as Ts,i as bs,n as Ss,o as Cs,r as be,s as Ms,t as Se}from"./ttsHelpers-CaQY_kjb.js";function xs(){try{return localStorage.getItem(le)!=="false"}catch{return!0}}function yt(c){J.value=c;try{localStorage.setItem(le,String(c))}catch{}}function As(){yt(!J.value)}function Es(){return{toolTraceVisible:J,setToolTraceVisible:yt,toggleToolTraceVisible:As}}var le,J,Fs=H((()=>{pt(),le="hermes_show_tool_calls",J=V(xs())})),Ce,Me,xe,Ae,Ie,Be,Pe,Ue,$e,De,Ve,Re,Ne,Oe,Ee,Fe,Le,Ke,He,Je,je,ze,We,Ye,Xe,qe,Ge,Qe,Ze,et,tt,st,nt,at,ot,it,lt,rt,ut,ct,b,ie,dt,mt,gt,vt,K,ft,ht=H((()=>{pt(),vs(),es(),Qt(),fs(),ns(),hs(),_s(),rs(),gs(),cs(),ys(),Cs(),bs(),Ss(),Ce=["id"],Me={key:1,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",class:"tool-icon"},xe={class:"tool-name"},Ae={key:2,class:"tool-preview"},Ie={key:3,class:"tool-spinner"},Be={key:4,class:"tool-error-badge"},Pe={key:0,class:"tool-detail-section","data-copy-source":"tool-args"},Ue={class:"tool-detail-label"},$e=["innerHTML"],De={key:1,class:"tool-detail-section","data-copy-source":"tool-result"},Ve={class:"tool-detail-label"},Re=["innerHTML"],Ne={key:1,class:"msg-body"},Oe={key:0,src:is,alt:"Hermes",class:"msg-avatar"},Ee={key:0,class:"msg-attachments"},Fe=["src","alt","onClick"],Le=["onClick","title"],Ke={class:"att-name"},He={class:"att-size"},Je={class:"thinking-label"},je={key:0,class:"thinking-meta"},ze={class:"thinking-meta"},We={key:0,class:"thinking-body"},Ye={key:0,class:"msg-attachments"},Xe=["src","alt","onClick"],qe=["onClick","title"],Ge={class:"att-name"},Qe={key:6,class:"command-result command-status"},Ze={class:"command-status-grid"},et={class:"command-status-key"},tt={class:"command-status-value"},st={key:7,class:"command-result"},nt={key:8,class:"streaming-dots"},at={class:"message-meta"},ot=["title"],it={key:0,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},lt={key:1,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},rt=["title"],ut={class:"message-time"},ct=["src"],b=1e3,ie=200,dt=6,mt=1e3,gt=50,vt=50,K="__truncated__",ft=qt({__name:"MessageItem",props:{message:{},highlight:{type:Boolean}},setup(c){const a=c,{t:d}=ts(),k=Zt(),kt=u(()=>a.message.role==="system"),R=u(()=>a.message.role==="command"||a.message.systemType==="command"),_t=u(()=>a.message.role==="command"&&a.message.systemType==="error"),wt=u(()=>R.value&&a.message.commandAction==="status"),Tt=u(()=>{const e=a.message.commandData||{};return[{key:"status",value:e.isWorking?"running":"idle"},{key:"source",value:e.source},{key:"profile",value:e.profile},{key:"model",value:e.model||"-"},{key:"queue",value:e.queueLength??0},{key:"run",value:e.runId||"-"}]});function bt(e){return!e||typeof e!="object"?"":(e.type==="text"||e.type==="input_text")&&typeof e.text=="string"?e.text:""}function St(e){if(!e||typeof e!="object"||e.type!=="input_image"&&e.type!=="image_url")return null;const t=e.image_url;return typeof t=="string"?t:t&&typeof t=="object"&&typeof t.url=="string"?t.url:null}function Ct(e,t){const s=e.match(/^data:image\/([^;,]+)/i),r=s?.[1]==="jpeg"?"jpg":s?.[1]||"png";return`image-${t+1}.${r}`}function Mt(e){const t=e.trim();if(!t)return null;const s=r=>{const h=JSON.parse(r);return Array.isArray(h)&&h.length>0&&"type"in h[0]?h:null};try{return s(t)}catch{if(!t.startsWith("[{'")&&!t.startsWith('[{"'))return null;try{return s(t.replace(/\bNone\b/g,"null").replace(/\bTrue\b/g,"true").replace(/\bFalse\b/g,"false").replace(/'/g,'"'))}catch{return null}}}const j=u(()=>Mt(a.message.content||"")),z=u(()=>j.value!==null),re=u(()=>z.value?j.value.map(e=>bt(e)).filter(Boolean).join(`
1
+ import{n as H}from"./rolldown-runtime-BKwlnUi0.js";import{Ct as Wt,Nt as V,Q as Yt,Rt as p,U as pt,Vt as y,X as Xt,Z as M,_t as i,ct as qt,et as u,ht as Gt,it as l,mt as ke,nt as P,rt as g,st as _e,t as Qt,tt as o,y as Zt,yt as oe,zt as _}from"./ui-vendor-CsTMg6zH.js";import{n as es,r as ts}from"./vue-vendor-D8zSB7VM.js";import{a as ss,c as ns,n as as,t as os}from"./_plugin-vue_export-helper-CrLlP_D3.js";import{T as is,a as ls,i as rs,n as us,o as cs,r as ds,s as ms,t as gs,w as vs}from"./index-Bzb-xLYu.js";import{n as hs,t as ps}from"./clipboard-BqPv71We.js";import{a as ys,c as fs,i as ks,n as _s,o as ws,r as we,s as Te,t as x}from"./MarkdownRenderer-BCFoS7DH.js";import{a as Ts,i as bs,n as Ss,o as Cs,r as be,s as Ms,t as Se}from"./ttsHelpers-CaQY_kjb.js";function xs(){try{return localStorage.getItem(le)!=="false"}catch{return!0}}function yt(c){J.value=c;try{localStorage.setItem(le,String(c))}catch{}}function As(){yt(!J.value)}function Es(){return{toolTraceVisible:J,setToolTraceVisible:yt,toggleToolTraceVisible:As}}var le,J,Fs=H((()=>{pt(),le="hermes_show_tool_calls",J=V(xs())})),Ce,Me,xe,Ae,Ie,Be,Pe,Ue,$e,De,Ve,Re,Ne,Oe,Ee,Fe,Le,Ke,He,Je,je,ze,We,Ye,Xe,qe,Ge,Qe,Ze,et,tt,st,nt,at,ot,it,lt,rt,ut,ct,b,ie,dt,mt,gt,vt,K,ft,ht=H((()=>{pt(),vs(),es(),Qt(),fs(),ns(),hs(),_s(),rs(),gs(),cs(),ys(),Cs(),bs(),Ss(),Ce=["id"],Me={key:1,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",class:"tool-icon"},xe={class:"tool-name"},Ae={key:2,class:"tool-preview"},Ie={key:3,class:"tool-spinner"},Be={key:4,class:"tool-error-badge"},Pe={key:0,class:"tool-detail-section","data-copy-source":"tool-args"},Ue={class:"tool-detail-label"},$e=["innerHTML"],De={key:1,class:"tool-detail-section","data-copy-source":"tool-result"},Ve={class:"tool-detail-label"},Re=["innerHTML"],Ne={key:1,class:"msg-body"},Oe={key:0,src:is,alt:"Hermes",class:"msg-avatar"},Ee={key:0,class:"msg-attachments"},Fe=["src","alt","onClick"],Le=["onClick","title"],Ke={class:"att-name"},He={class:"att-size"},Je={class:"thinking-label"},je={key:0,class:"thinking-meta"},ze={class:"thinking-meta"},We={key:0,class:"thinking-body"},Ye={key:0,class:"msg-attachments"},Xe=["src","alt","onClick"],qe=["onClick","title"],Ge={class:"att-name"},Qe={key:6,class:"command-result command-status"},Ze={class:"command-status-grid"},et={class:"command-status-key"},tt={class:"command-status-value"},st={key:7,class:"command-result"},nt={key:8,class:"streaming-dots"},at={class:"message-meta"},ot=["title"],it={key:0,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},lt={key:1,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},rt=["title"],ut={class:"message-time"},ct=["src"],b=1e3,ie=200,dt=6,mt=1e3,gt=50,vt=50,K="__truncated__",ft=qt({__name:"MessageItem",props:{message:{},highlight:{type:Boolean}},setup(c){const a=c,{t:d}=ts(),k=Zt(),kt=u(()=>a.message.role==="system"),R=u(()=>a.message.role==="command"||a.message.systemType==="command"),_t=u(()=>a.message.role==="command"&&a.message.systemType==="error"),wt=u(()=>R.value&&a.message.commandAction==="status"),Tt=u(()=>{const e=a.message.commandData||{};return[{key:"status",value:e.isWorking?"running":"idle"},{key:"source",value:e.source},{key:"profile",value:e.profile},{key:"model",value:e.model||"-"},{key:"queue",value:e.queueLength??0},{key:"run",value:e.runId||"-"}]});function bt(e){return!e||typeof e!="object"?"":(e.type==="text"||e.type==="input_text")&&typeof e.text=="string"?e.text:""}function St(e){if(!e||typeof e!="object"||e.type!=="input_image"&&e.type!=="image_url")return null;const t=e.image_url;return typeof t=="string"?t:t&&typeof t=="object"&&typeof t.url=="string"?t.url:null}function Ct(e,t){const s=e.match(/^data:image\/([^;,]+)/i),r=s?.[1]==="jpeg"?"jpg":s?.[1]||"png";return`image-${t+1}.${r}`}function Mt(e){const t=e.trim();if(!t)return null;const s=r=>{const h=JSON.parse(r);return Array.isArray(h)&&h.length>0&&"type"in h[0]?h:null};try{return s(t)}catch{if(!t.startsWith("[{'")&&!t.startsWith('[{"'))return null;try{return s(t.replace(/\bNone\b/g,"null").replace(/\bTrue\b/g,"true").replace(/\bFalse\b/g,"false").replace(/'/g,'"'))}catch{return null}}}const j=u(()=>Mt(a.message.content||"")),z=u(()=>j.value!==null),re=u(()=>z.value?j.value.map(e=>bt(e)).filter(Boolean).join(`
2
2
  `):a.message.content||""),W=u(()=>z.value?j.value.flatMap((e,t)=>{if(e.type==="image")return[{type:"image",name:String(e.name||`image-${t+1}`),path:String(e.path||"")}].filter(r=>r.path);if(e.type==="file")return[{type:"file",name:String(e.name||`file-${t+1}`),path:String(e.path||"")}].filter(r=>r.path);const s=St(e);return s?.startsWith("data:image/")?[{type:"image",name:Ct(s,t),url:s}]:[]}):null);function xt(e,t){const s=ss(),r=`/api/hermes/download?path=${encodeURIComponent(e)}&name=${encodeURIComponent(t)}`;return s?`${r}&token=${encodeURIComponent(s)}`:r}function ue(e){return e.url?e.url:e.path?xt(e.path,e.name):""}const U=V(!1),A=V(null),ce=us(),At=ms(),m=Ms(),n=Ts(),Y=u(()=>{if(a.message.role==="tool")return null;const e=a.message.content||"";return e.trim()?e:null});async function It(){const e=Y.value;if(e){if(await ps(e)){k.success(d("chat.copiedBubble"));return}k.error(d("chat.copyFailed"))}}const w=u(()=>ls(a.message.content||"",{streaming:!!a.message.isStreaming})),de=u(()=>!!(a.message.reasoning&&a.message.reasoning.length>0)),Bt=u(()=>de.value||w.value.hasThinking),Pt=u(()=>{const e=[];return a.message.reasoning&&e.push(a.message.reasoning),e.push(...w.value.segments),w.value.pending&&e.push(w.value.pending),e.join(`
3
3
 
4
4
  `)}),Ut=u(()=>{let e=ds(w.value);return a.message.reasoning&&(e+=a.message.reasoning.length),e}),me=u(()=>a.message.isStreaming?!!(w.value.pending!==null||de.value&&!a.message.content):!1),X=V(null),N=u(()=>me.value?!0:X.value!==null?X.value:!!At.display.show_reasoning);function $t(){X.value=!N.value}const ge=V(Date.now());let S=null;function Dt(){const e=ce.getThinkingObservation(a.message.id),t=!!(a.message.isStreaming&&e?.startedAt!==void 0&&e.endedAt===void 0);t&&S===null?S=window.setInterval(()=>{ge.value=Date.now()},1e3):!t&&S!==null&&(window.clearInterval(S),S=null)}Wt(Dt),ke(()=>{S!==null&&window.clearInterval(S)});const q=u(()=>{const e=ce.getThinkingObservation(a.message.id);if(!e?.startedAt)return null;const t=e.startedAt,s=e?.endedAt??(a.message.isStreaming?ge.value:t);return Math.max(0,s-t)});function Vt(e){const t=Math.floor(e/1e3);if(t<60)return`${t}s`;const s=Math.floor(t/60),r=t%60;return r===0?`${s}m`:`${s}m ${r}s`}const Rt=u(()=>new Date(a.message.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}));function ve(e){return e.startsWith("image/")}function Nt(e){return e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB"}function Ot(e){const t=a.message.content||"";try{const h=JSON.parse(t);if(Array.isArray(h)&&h.length>0&&"type"in h[0]){const T=h.find($=>$.type==="file"&&$.name===e);if(T&&T.path)return T.path}}catch{}const s=/\[File:\s*([^\]]+)\]\(([^)]+)\)/g;let r;for(;(r=s.exec(t))!==null;)if(r[1].trim()===e.trim())return r[2];return null}function Et(e){const t=Ot(e.name);if(t){k.info(d("download.downloading")),Te(t,e.name).catch(s=>{k.error(s.message||d("download.downloadFailed"))});return}if(e.url&&e.url.startsWith("blob:")){const s=document.createElement("a");s.href=e.url,s.download=e.name,document.body.appendChild(s),s.click(),document.body.removeChild(s)}}function Ft(e,t){return e.length>ie?e.slice(0,ie)+`
@@ -1,4 +1,4 @@
1
- import{n as S}from"./rolldown-runtime-BKwlnUi0.js";import{C as ko,D as qo,F as x,N as Eo,Nt as c,O as Le,P as Xo,R as de,Rt as e,S as K,St as re,U as R,Vt as t,Y as Ho,Z as ue,_t as u,ct as G,et as q,f as Ko,gt as ce,ht as xo,it as w,k as Ae,l as _e,m as Ro,nt as D,ot as g,p as H,rt as F,st as n,t as Z,tt as o,wt as s,xt as Go,y as ee,yt as ve,zt as Yo}from"./ui-vendor-CsTMg6zH.js";import{n as Y,r as J}from"./vue-vendor-D8zSB7VM.js";import{c as pe,l as E,n as W,t as j}from"./_plugin-vue_export-helper-ZIsfSgrY.js";import{a as Jo,n as Wo,o as jo,t as Zo}from"./app-BP-u-rQP.js";import{n as Qo,t as et}from"./index-JI6E-cKo.js";import{n as Me,t as $e}from"./clipboard-BqPv71We.js";import{n as me,t as fe}from"./models-BR4rntqB.js";async function lt(){return E("/api/hermes/auth/copilot/start",{method:"POST"})}async function ot(V){return E(`/api/hermes/auth/copilot/poll/${V}`)}async function Pe(){return E("/api/hermes/auth/copilot/check-token")}async function tt(){return E("/api/hermes/auth/copilot/enable",{method:"POST"})}async function at(){return E("/api/hermes/auth/copilot/disable",{method:"POST"})}var he=S((()=>{pe()})),Se,Te,Ue,Ne,Oe,Ie,Ve,ze,Be,Fe,De,qe,Ee,Xe,He,Ke,Re,Ge,Ye,Je,We,je,Ze,Qe,el,ll,ol,tl,al,sl,il,nl,bo,rl=S((()=>{R(),Z(),fe(),Zo(),et(),he(),Y(),Se={class:"provider-card"},Te={class:"card-header"},Ue={class:"provider-name"},Ne={class:"card-body"},Oe={class:"info-row"},Ie={class:"info-label"},Ve={class:"info-value mono"},ze={class:"info-row"},Be={class:"info-label"},Fe={class:"info-value mono"},De={class:"info-row models-row"},qe={class:"info-label"},Ee={class:"info-value models-count"},Xe={class:"models-list"},He=["title","onClick"],Ke={class:"model-tag-name"},Re={key:0,class:"model-tag-id"},Ge={key:0,class:"model-tag model-tag-more"},Ye={class:"card-actions"},Je={class:"alias-list-hint"},We={class:"alias-list"},je={class:"alias-row-text"},Ze={class:"alias-row-name"},Qe={class:"alias-row-id"},el={key:0,class:"model-alias-canonical"},ll={class:"model-alias-hint"},ol={class:"model-alias-actions"},tl={class:"visibility-hint"},al={class:"visibility-count"},sl={class:"visibility-list"},il={key:0,class:"visibility-model-id"},nl={class:"visibility-actions"},bo=G({__name:"ProviderCard",props:{provider:{}},setup(V){const b=V,{t:l}=J(),k=me(),m=Wo(),p=Qo(),a=ee(),N=ko(),O=q(()=>!b.provider.builtin&&b.provider.provider.startsWith("custom:")),I=q(()=>b.provider.provider==="copilot"),_=q(()=>b.provider.label),T=c(!1),z=c(!1),L=c(!1),B=c(""),$=c(""),y=c(""),i=c(!1),C=c(!1),r=c([]),d=q(()=>k.allProviders.find(U=>U.provider===b.provider.provider)),P=q(()=>b.provider.available_models?.length?b.provider.available_models:d.value?.models?.length?d.value.models:b.provider.models),Q=q(()=>m.getProviderVisibility(b.provider.provider)),ae=q(()=>Q.value.mode==="include"),le=q(()=>`${b.provider.models.length}/${P.value.length}`);function oe(U){return m.getModelAlias(U,b.provider.provider)}function X(U){return m.displayModelName(U,b.provider.provider)}function se(U){B.value=b.provider.provider,$.value=U,y.value=m.getModelAlias(U,b.provider.provider),L.value=!0}async function te(){if(!(!$.value||!B.value))try{await m.setModelAlias($.value,B.value,y.value),L.value=!1}catch(U){a.error(U.message||l("models.aliasSaveFailed"))}}async function ie(){y.value="",await te()}function ge(){const U=m.getProviderVisibility(b.provider.provider);r.value=U.mode==="include"?P.value.filter(f=>U.models.includes(f)):[...P.value],i.value=!0}async function ye(){if(r.value.length===0){a.error(l("models.visibilitySelectOne"));return}C.value=!0;try{const U=r.value.filter(h=>P.value.includes(h)),f=U.length===P.value.length?"all":"include";await m.setModelVisibility(b.provider.provider,{mode:f,models:U}),await k.fetchProviders(),i.value=!1,a.success(l("models.visibilitySaved"))}catch(U){a.error(U.message||l("models.visibilitySaveFailed"))}finally{C.value=!1}}function we(){r.value=[...P.value]}function ke(){r.value=[]}async function xe(){let U="";if(I.value)try{const f=await Pe();f.source==="env"?U=l("models.copilotDeleteHintEnv"):f.source==="gh-cli"?U=l("models.copilotDeleteHintGhCli"):f.source==="apps-json"&&(U=l("models.copilotDeleteHintAppsJson"))}catch{}N.warning({title:l("models.deleteProvider"),content:I.value&&U?`${l("models.deleteConfirm",{name:_.value})}
1
+ import{n as S}from"./rolldown-runtime-BKwlnUi0.js";import{C as ko,D as qo,F as x,N as Eo,Nt as c,O as Le,P as Xo,R as de,Rt as e,S as K,St as re,U as R,Vt as t,Y as Ho,Z as ue,_t as u,ct as G,et as q,f as Ko,gt as ce,ht as xo,it as w,k as Ae,l as _e,m as Ro,nt as D,ot as g,p as H,rt as F,st as n,t as Z,tt as o,wt as s,xt as Go,y as ee,yt as ve,zt as Yo}from"./ui-vendor-CsTMg6zH.js";import{n as Y,r as J}from"./vue-vendor-D8zSB7VM.js";import{c as pe,l as E,n as W,t as j}from"./_plugin-vue_export-helper-CrLlP_D3.js";import{a as Jo,n as Wo,o as jo,t as Zo}from"./app-CYaCGxZ_.js";import{n as Qo,t as et}from"./index-Bzb-xLYu.js";import{n as Me,t as $e}from"./clipboard-BqPv71We.js";import{n as me,t as fe}from"./models-CDvVG-uE.js";async function lt(){return E("/api/hermes/auth/copilot/start",{method:"POST"})}async function ot(V){return E(`/api/hermes/auth/copilot/poll/${V}`)}async function Pe(){return E("/api/hermes/auth/copilot/check-token")}async function tt(){return E("/api/hermes/auth/copilot/enable",{method:"POST"})}async function at(){return E("/api/hermes/auth/copilot/disable",{method:"POST"})}var he=S((()=>{pe()})),Se,Te,Ue,Ne,Oe,Ie,Ve,ze,Be,Fe,De,qe,Ee,Xe,He,Ke,Re,Ge,Ye,Je,We,je,Ze,Qe,el,ll,ol,tl,al,sl,il,nl,bo,rl=S((()=>{R(),Z(),fe(),Zo(),et(),he(),Y(),Se={class:"provider-card"},Te={class:"card-header"},Ue={class:"provider-name"},Ne={class:"card-body"},Oe={class:"info-row"},Ie={class:"info-label"},Ve={class:"info-value mono"},ze={class:"info-row"},Be={class:"info-label"},Fe={class:"info-value mono"},De={class:"info-row models-row"},qe={class:"info-label"},Ee={class:"info-value models-count"},Xe={class:"models-list"},He=["title","onClick"],Ke={class:"model-tag-name"},Re={key:0,class:"model-tag-id"},Ge={key:0,class:"model-tag model-tag-more"},Ye={class:"card-actions"},Je={class:"alias-list-hint"},We={class:"alias-list"},je={class:"alias-row-text"},Ze={class:"alias-row-name"},Qe={class:"alias-row-id"},el={key:0,class:"model-alias-canonical"},ll={class:"model-alias-hint"},ol={class:"model-alias-actions"},tl={class:"visibility-hint"},al={class:"visibility-count"},sl={class:"visibility-list"},il={key:0,class:"visibility-model-id"},nl={class:"visibility-actions"},bo=G({__name:"ProviderCard",props:{provider:{}},setup(V){const b=V,{t:l}=J(),k=me(),m=Wo(),p=Qo(),a=ee(),N=ko(),O=q(()=>!b.provider.builtin&&b.provider.provider.startsWith("custom:")),I=q(()=>b.provider.provider==="copilot"),_=q(()=>b.provider.label),T=c(!1),z=c(!1),L=c(!1),B=c(""),$=c(""),y=c(""),i=c(!1),C=c(!1),r=c([]),d=q(()=>k.allProviders.find(U=>U.provider===b.provider.provider)),P=q(()=>b.provider.available_models?.length?b.provider.available_models:d.value?.models?.length?d.value.models:b.provider.models),Q=q(()=>m.getProviderVisibility(b.provider.provider)),ae=q(()=>Q.value.mode==="include"),le=q(()=>`${b.provider.models.length}/${P.value.length}`);function oe(U){return m.getModelAlias(U,b.provider.provider)}function X(U){return m.displayModelName(U,b.provider.provider)}function se(U){B.value=b.provider.provider,$.value=U,y.value=m.getModelAlias(U,b.provider.provider),L.value=!0}async function te(){if(!(!$.value||!B.value))try{await m.setModelAlias($.value,B.value,y.value),L.value=!1}catch(U){a.error(U.message||l("models.aliasSaveFailed"))}}async function ie(){y.value="",await te()}function ge(){const U=m.getProviderVisibility(b.provider.provider);r.value=U.mode==="include"?P.value.filter(f=>U.models.includes(f)):[...P.value],i.value=!0}async function ye(){if(r.value.length===0){a.error(l("models.visibilitySelectOne"));return}C.value=!0;try{const U=r.value.filter(h=>P.value.includes(h)),f=U.length===P.value.length?"all":"include";await m.setModelVisibility(b.provider.provider,{mode:f,models:U}),await k.fetchProviders(),i.value=!1,a.success(l("models.visibilitySaved"))}catch(U){a.error(U.message||l("models.visibilitySaveFailed"))}finally{C.value=!1}}function we(){r.value=[...P.value]}function ke(){r.value=[]}async function xe(){let U="";if(I.value)try{const f=await Pe();f.source==="env"?U=l("models.copilotDeleteHintEnv"):f.source==="gh-cli"?U=l("models.copilotDeleteHintGhCli"):f.source==="apps-json"&&(U=l("models.copilotDeleteHintAppsJson"))}catch{}N.warning({title:l("models.deleteProvider"),content:I.value&&U?`${l("models.deleteConfirm",{name:_.value})}
2
2
 
3
3
  ${U}`:l("models.deleteConfirm",{name:_.value}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{T.value=!0;try{if(I.value?(await at(),p.clearProviderFromSessions("copilot"),await k.fetchProviders()):await k.removeProvider(b.provider.provider),!m.selectedModel&&m.modelGroups.length>0){const f=m.modelGroups.find(h=>h.models.length>0);f&&await m.switchModel(f.models[0],f.provider)}a.success(l("models.providerDeleted"))}catch(f){a.error(f.message)}finally{T.value=!1}}})}return(U,f)=>(u(),w("div",Se,[o("div",Te,[o("h3",Ue,t(_.value),1),o("span",{class:Yo(["type-badge",O.value?"custom":"builtin"])},t(O.value?e(l)("models.customType"):e(l)("models.builtIn")),3)]),o("div",Ne,[o("div",Oe,[o("span",Ie,t(e(l)("models.provider")),1),o("code",Ve,t(V.provider.provider),1)]),o("div",ze,[o("span",Be,t(e(l)("models.baseUrl")),1),o("code",Fe,t(V.provider.base_url),1)]),o("div",De,[o("span",qe,t(e(l)("models.models")),1),o("span",Ee,t(ae.value?le.value:V.provider.models.length)+" "+t(e(l)("models.count")),1)]),o("div",Xe,[(u(!0),w(ue,null,ve(V.provider.models.slice(0,20),h=>(u(),w("button",{key:h,class:"model-tag model-tag-button",type:"button",title:e(l)("models.aliasTitleFor",{model:h}),onClick:ne=>se(h)},[o("span",Ke,t(X(h)),1),oe(h)?(u(),w("span",Re,t(h),1)):F("",!0)],8,He))),128)),V.provider.models.length>20?(u(),w("span",Ge," +"+t(V.provider.models.length-20)+" "+t(e(l)("models.more")),1)):F("",!0)])]),o("div",Ye,[n(e(x),{size:"tiny",quaternary:"",onClick:f[0]||(f[0]=h=>z.value=!0)},{default:s(()=>[g(t(e(l)("models.aliasManage")),1)]),_:1}),n(e(x),{size:"tiny",quaternary:"",onClick:ge},{default:s(()=>[g(t(e(l)("models.manageVisibleModels")),1)]),_:1}),n(e(x),{size:"tiny",quaternary:"",type:"error",loading:T.value,onClick:xe},{default:s(()=>[g(t(e(l)("common.delete")),1)]),_:1},8,["loading"])]),n(e(K),{show:z.value,"onUpdate:show":f[1]||(f[1]=h=>z.value=h),preset:"card",title:e(l)("models.aliasManageFor",{provider:_.value}),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!0},{default:s(()=>[o("div",Je,t(e(l)("models.aliasHint")),1),o("div",We,[(u(!0),w(ue,null,ve(V.provider.models,h=>(u(),w("div",{key:h,class:"alias-row"},[o("div",je,[o("span",Ze,t(X(h)),1),o("code",Qe,t(h),1)]),n(e(x),{size:"tiny",quaternary:"",onClick:ne=>se(h)},{default:s(()=>[g(t(e(l)("models.aliasEdit")),1)]),_:1},8,["onClick"])]))),128))])]),_:1},8,["show","title"]),n(e(K),{show:L.value,"onUpdate:show":f[4]||(f[4]=h=>L.value=h),preset:"card",title:$.value?e(l)("models.aliasTitleFor",{model:$.value}):e(l)("models.aliasTitle"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!0},{footer:s(()=>[o("div",ol,[n(e(x),{quaternary:"",disabled:!e(m).getModelAlias($.value,B.value),onClick:ie},{default:s(()=>[g(t(e(l)("models.aliasUseOriginal")),1)]),_:1},8,["disabled"]),f[8]||(f[8]=o("div",{class:"model-alias-spacer"},null,-1)),n(e(x),{onClick:f[3]||(f[3]=h=>L.value=!1)},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1}),n(e(x),{type:"primary",onClick:te},{default:s(()=>[g(t(e(l)("common.save")),1)]),_:1})])]),default:s(()=>[n(e(de),{value:y.value,"onUpdate:value":f[2]||(f[2]=h=>y.value=h),placeholder:e(l)("models.aliasPlaceholder"),clearable:"",onKeydown:Ho(te,["enter"])},null,8,["value","placeholder"]),$.value?(u(),w("div",el,t(e(l)("models.aliasCanonical",{model:$.value})),1)):F("",!0),o("div",ll,t(e(l)("models.aliasHint")),1)]),_:1},8,["show","title"]),n(e(K),{show:i.value,"onUpdate:show":f[7]||(f[7]=h=>i.value=h),preset:"card",title:e(l)("models.manageVisibleModelsFor",{name:_.value}),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!C.value},{default:s(()=>[o("p",tl,t(e(l)("models.visibilityHint")),1),o("div",al,t(r.value.length)+"/"+t(P.value.length)+" "+t(e(l)("models.count")),1),o("div",sl,[n(e(Xo),{value:r.value,"onUpdate:value":f[5]||(f[5]=h=>r.value=h)},{default:s(()=>[(u(!0),w(ue,null,ve(P.value,h=>(u(),D(e(Eo),{key:h,value:h,class:"visibility-model"},{default:s(()=>[o("code",null,t(X(h)),1),oe(h)?(u(),w("code",il,t(h),1)):F("",!0)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o("div",nl,[n(e(x),{size:"small",quaternary:"",disabled:C.value,onClick:we},{default:s(()=>[g(t(e(l)("models.showAllModels")),1)]),_:1},8,["disabled"]),n(e(x),{size:"small",quaternary:"",disabled:C.value,onClick:ke},{default:s(()=>[g(t(e(l)("models.clearVisibleModels")),1)]),_:1},8,["disabled"]),f[9]||(f[9]=o("div",{class:"visibility-action-spacer"},null,-1)),n(e(x),{size:"small",disabled:C.value,onClick:f[6]||(f[6]=h=>i.value=!1)},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1},8,["disabled"]),n(e(x),{size:"small",type:"primary",loading:C.value,onClick:ye},{default:s(()=>[g(t(e(l)("common.save")),1)]),_:1},8,["loading"])])]),_:1},8,["show","title","mask-closable"])]))}})})),st=S((()=>{})),Co,it=S((()=>{rl(),rl(),st(),W(),Co=j(bo,[["__scopeId","data-v-55751b5f"]])})),dl,ul,Mo,vl=S((()=>{R(),it(),fe(),Y(),dl={key:0,class:"empty-state"},ul={key:1,class:"providers-grid"},Mo=G({__name:"ProvidersPanel",setup(V){const{t:b}=J(),l=me();return(k,m)=>e(l).providers.length===0?(u(),w("div",dl,[m[0]||(m[0]=o("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[o("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),o("path",{d:"M2 17l10 5 10-5"}),o("path",{d:"M2 12l10 5 10-5"})],-1)),o("p",null,t(e(b)("models.noProviders")),1)])):(u(),w("div",ul,[(u(!0),w(ue,null,ve(e(l).providers,p=>(u(),D(Co,{key:p.provider,provider:p},null,8,["provider"]))),128))]))}})})),nt=S((()=>{})),$o,rt=S((()=>{vl(),vl(),nt(),W(),$o=j(Mo,[["__scopeId","data-v-76eec30b"]])}));async function dt(){return E("/api/hermes/auth/codex/start",{method:"POST"})}async function ut(V){return E(`/api/hermes/auth/codex/poll/${V}`)}var vt=S((()=>{pe()})),cl,_l,pl,ml,fl,hl,gl,yl,wl,kl,xl,Po,bl=S((()=>{R(),Z(),Y(),vt(),Me(),cl={class:"codex-login"},_l={key:0,class:"codex-login__state"},pl={key:1,class:"codex-login__state"},ml={class:"codex-login__hint"},fl={class:"codex-login__code-text"},hl={key:2,class:"codex-login__state codex-login__state--success"},gl={key:3,class:"codex-login__state"},yl={class:"codex-login__error"},wl={key:4,class:"codex-login__state"},kl={class:"codex-login__error"},xl={class:"modal-footer"},Po=G({__name:"CodexLoginModal",emits:["close","success"],setup(V,{emit:b}){const{t:l}=J(),k=b,m=ee(),p=c(!0),a=c("idle"),N=c(""),O=c(""),I=c(""),_=c("");let T=null;async function z(){a.value="loading",_.value="";try{const r=await dt();N.value=r.user_code,O.value=r.verification_url,I.value=r.session_id,a.value="waiting",L()}catch(r){a.value="error";const d=r.message||"";try{const P=d.match(/\{[\s\S]*\}$/);P?_.value=JSON.parse(P[0]).error||d:_.value=d}catch{_.value=d}m.error(_.value)}}function L(){B(),T=setTimeout(async()=>{try{const r=await ut(I.value);r.status==="pending"?L():r.status==="approved"?(a.value="approved",m.success(l("models.codexApproved")),setTimeout(()=>{p.value=!1,setTimeout(()=>k("success"),200)},1e3)):r.status==="expired"?a.value="expired":r.status==="error"&&(a.value="error",_.value=r.error||"Unknown error")}catch{L()}},3e3)}function B(){T&&(clearTimeout(T),T=null)}function $(){B(),p.value=!1,setTimeout(()=>k("close"),200)}async function y(){await $e(N.value)?m.success(l("models.codexCopyCode")):m.error(l("models.codexCopyCode")+" ✗")}function i(){window.open(O.value,"_blank")}function C(){a.value="idle",N.value="",O.value="",I.value="",_.value="",z()}return ce(()=>{B()}),z(),(r,d)=>{const P=Go("NSpin");return u(),D(e(K),{show:p.value,"onUpdate:show":d[0]||(d[0]=Q=>p.value=Q),preset:"card",title:e(l)("models.codexLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":a.value!=="waiting",onAfterLeave:d[1]||(d[1]=Q=>k("close"))},{footer:s(()=>[o("div",xl,[n(e(x),{disabled:a.value==="waiting",onClick:$},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:s(()=>[o("div",cl,[a.value==="idle"||a.value==="loading"?(u(),w("div",_l,[n(P,{size:"small"})])):a.value==="waiting"?(u(),w("div",pl,[o("p",ml,t(e(l)("models.codexWaiting")),1),o("div",{class:"codex-login__code",onClick:y},[o("span",fl,t(N.value),1),d[2]||(d[2]=o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),o("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),n(e(x),{type:"primary",block:"",onClick:i},{icon:s(()=>[...d[3]||(d[3]=[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),o("polyline",{points:"15 3 21 3 21 9"}),o("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:s(()=>[g(" "+t(e(l)("models.codexOpenLink")),1)]),_:1})])):a.value==="approved"?(u(),w("div",hl,[d[4]||(d[4]=o("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),o("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),o("p",null,t(e(l)("models.codexApproved")),1)])):a.value==="expired"?(u(),w("div",gl,[o("p",yl,t(e(l)("models.codexExpired")),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):a.value==="error"?(u(),w("div",wl,[o("p",kl,t(_.value),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):F("",!0)])]),_:1},8,["show","title","mask-closable"])}}})})),ct=S((()=>{})),Lo,_t=S((()=>{bl(),bl(),ct(),W(),Lo=j(Po,[["__scopeId","data-v-b8a659c8"]])}));async function pt(){return E("/api/hermes/auth/nous/start",{method:"POST"})}async function mt(V){return E(`/api/hermes/auth/nous/poll/${V}`)}var ft=S((()=>{pe()})),Cl,Ml,$l,Pl,Ll,Al,Sl,Tl,Ul,Nl,Ol,Ao,Il=S((()=>{R(),Z(),Y(),ft(),Me(),Cl={class:"nous-login"},Ml={key:0,class:"nous-login__state"},$l={key:1,class:"nous-login__state"},Pl={class:"nous-login__hint"},Ll={class:"nous-login__code-text"},Al={key:2,class:"nous-login__state nous-login__state--success"},Sl={key:3,class:"nous-login__state"},Tl={class:"nous-login__error"},Ul={key:4,class:"nous-login__state"},Nl={class:"nous-login__error"},Ol={class:"modal-footer"},Ao=G({__name:"NousLoginModal",emits:["close","success"],setup(V,{emit:b}){const{t:l}=J(),k=b,m=ee(),p=c(!0),a=c("idle"),N=c(""),O=c(""),I=c(""),_=c("");let T=null;async function z(){a.value="loading",_.value="";try{const r=await pt();N.value=r.user_code,O.value=r.verification_url,I.value=r.session_id,a.value="waiting",L()}catch(r){a.value="error";const d=r.message||"";try{const P=d.match(/\{[\s\S]*\}$/);P?_.value=JSON.parse(P[0]).error||d:_.value=d}catch{_.value=d}m.error(_.value)}}function L(){B(),T=setTimeout(async()=>{try{const r=await mt(I.value);r.status==="pending"?L():r.status==="approved"?(a.value="approved",m.success(l("models.nousApproved")),setTimeout(()=>{p.value=!1,setTimeout(()=>k("success"),200)},1e3)):r.status==="expired"?a.value="expired":r.status==="denied"?(a.value="error",_.value=l("models.nousDenied")):r.status==="error"&&(a.value="error",_.value=r.error||"Unknown error")}catch{L()}},3e3)}function B(){T&&(clearTimeout(T),T=null)}function $(){B(),p.value=!1,setTimeout(()=>k("close"),200)}async function y(){await $e(N.value)?m.success(l("models.nousCopyCode")):m.error(l("models.nousCopyCode")+" ✗")}function i(){window.open(O.value,"_blank")}function C(){a.value="idle",N.value="",O.value="",I.value="",_.value="",z()}return ce(()=>{B()}),z(),(r,d)=>(u(),D(e(K),{show:p.value,"onUpdate:show":d[0]||(d[0]=P=>p.value=P),preset:"card",title:e(l)("models.nousLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":a.value!=="waiting",onAfterLeave:d[1]||(d[1]=P=>k("close"))},{footer:s(()=>[o("div",Ol,[n(e(x),{disabled:a.value==="waiting",onClick:$},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:s(()=>[o("div",Cl,[a.value==="idle"||a.value==="loading"?(u(),w("div",Ml,[n(e(_e),{size:"small"})])):a.value==="waiting"?(u(),w("div",$l,[o("p",Pl,t(e(l)("models.nousWaiting")),1),o("div",{class:"nous-login__code",onClick:y},[o("span",Ll,t(N.value),1),d[2]||(d[2]=o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),o("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),n(e(x),{type:"primary",block:"",onClick:i},{icon:s(()=>[...d[3]||(d[3]=[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),o("polyline",{points:"15 3 21 3 21 9"}),o("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:s(()=>[g(" "+t(e(l)("models.nousOpenLink")),1)]),_:1})])):a.value==="approved"?(u(),w("div",Al,[d[4]||(d[4]=o("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),o("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),o("p",null,t(e(l)("models.nousApproved")),1)])):a.value==="expired"?(u(),w("div",Sl,[o("p",Tl,t(e(l)("models.nousExpired")),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):a.value==="error"?(u(),w("div",Ul,[o("p",Nl,t(_.value),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):F("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),ht=S((()=>{})),So,gt=S((()=>{Il(),Il(),ht(),W(),So=j(Ao,[["__scopeId","data-v-13765003"]])})),Vl,zl,Bl,Fl,Dl,ql,El,Xl,Hl,Kl,Rl,To,Gl=S((()=>{R(),Z(),Y(),he(),Me(),Vl={class:"copilot-login"},zl={key:0,class:"copilot-login__state"},Bl={key:1,class:"copilot-login__state"},Fl={class:"copilot-login__hint"},Dl={class:"copilot-login__code-text"},ql={key:2,class:"copilot-login__state copilot-login__state--success"},El={key:3,class:"copilot-login__state"},Xl={class:"copilot-login__error"},Hl={key:4,class:"copilot-login__state"},Kl={class:"copilot-login__error"},Rl={class:"modal-footer"},To=G({__name:"CopilotLoginModal",emits:["close","success"],setup(V,{emit:b}){const{t:l}=J(),k=b,m=ee(),p=c(!0),a=c("idle"),N=c(""),O=c(""),I=c(""),_=c("");let T=null;async function z(){a.value="loading",_.value="";try{const r=await lt();N.value=r.user_code,O.value=r.verification_url,I.value=r.session_id,a.value="waiting",L()}catch(r){a.value="error";const d=r?.message||"";try{const P=d.match(/\{[\s\S]*\}$/);P?_.value=JSON.parse(P[0]).error||d:_.value=d}catch{_.value=d}m.error(_.value)}}function L(){B(),T=setTimeout(async()=>{try{const r=await ot(I.value);r.status==="pending"?L():r.status==="approved"?(a.value="approved",m.success(l("models.copilotApproved")),setTimeout(()=>{p.value=!1,setTimeout(()=>k("success"),200)},1e3)):r.status==="expired"?a.value="expired":r.status==="denied"?(a.value="error",_.value=l("models.copilotDenied")):r.status==="error"&&(a.value="error",_.value=r.error||"Unknown error")}catch{L()}},3e3)}function B(){T&&(clearTimeout(T),T=null)}function $(){B(),p.value=!1,setTimeout(()=>k("close"),200)}async function y(){await $e(N.value)?m.success(l("models.copilotCopyCode")):m.error(l("models.copilotCopyCode")+" ✗")}function i(){window.open(O.value,"_blank")}function C(){a.value="idle",N.value="",O.value="",I.value="",_.value="",z()}return ce(()=>{B()}),z(),(r,d)=>(u(),D(e(K),{show:p.value,"onUpdate:show":d[0]||(d[0]=P=>p.value=P),preset:"card",title:e(l)("models.copilotLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":a.value!=="waiting",onAfterLeave:d[1]||(d[1]=P=>k("close"))},{footer:s(()=>[o("div",Rl,[n(e(x),{disabled:a.value==="waiting",onClick:$},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:s(()=>[o("div",Vl,[a.value==="idle"||a.value==="loading"?(u(),w("div",zl,[n(e(_e),{size:"small"})])):a.value==="waiting"?(u(),w("div",Bl,[o("p",Fl,t(e(l)("models.copilotWaiting")),1),o("div",{class:"copilot-login__code",onClick:y},[o("span",Dl,t(N.value),1),d[2]||(d[2]=o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),o("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),n(e(x),{type:"primary",block:"",onClick:i},{icon:s(()=>[...d[3]||(d[3]=[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),o("polyline",{points:"15 3 21 3 21 9"}),o("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:s(()=>[g(" "+t(e(l)("models.copilotOpenLink")),1)]),_:1})])):a.value==="approved"?(u(),w("div",ql,[d[4]||(d[4]=o("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),o("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),o("p",null,t(e(l)("models.copilotApproved")),1)])):a.value==="expired"?(u(),w("div",El,[o("p",Xl,t(e(l)("models.copilotExpired")),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):a.value==="error"?(u(),w("div",Hl,[o("p",Kl,t(_.value),1),n(e(x),{size:"small",onClick:C},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):F("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),yt=S((()=>{})),Uo,wt=S((()=>{Gl(),Gl(),yt(),W(),Uo=j(To,[["__scopeId","data-v-fe3fcc7e"]])}));async function kt(){return E("/api/hermes/auth/xai/start",{method:"POST"})}async function xt(V){return E(`/api/hermes/auth/xai/poll/${V}`)}var bt=S((()=>{pe()})),Yl,Jl,Wl,jl,Zl,Ql,eo,lo,oo,to,No,ao=S((()=>{R(),Z(),Y(),bt(),Yl={class:"xai-login"},Jl={key:0,class:"xai-login__state"},Wl={key:1,class:"xai-login__state"},jl={class:"xai-login__hint"},Zl={key:2,class:"xai-login__state xai-login__state--success"},Ql={key:3,class:"xai-login__state"},eo={class:"xai-login__error"},lo={key:4,class:"xai-login__state"},oo={class:"xai-login__error"},to={class:"modal-footer"},No=G({__name:"XaiOAuthLoginModal",emits:["close","success"],setup(V,{emit:b}){const{t:l}=J(),k=b,m=ee(),p=c(!0),a=c("idle"),N=c(""),O=c(""),I=c("");let _=null;async function T(){a.value="loading",I.value="";try{const i=await kt();N.value=i.authorization_url,O.value=i.session_id,a.value="waiting",window.open(N.value,"_blank"),z()}catch(i){a.value="error",I.value=i?.message||String(i),m.error(I.value)}}function z(){L(),_=setTimeout(async()=>{try{const i=await xt(O.value);i.status==="pending"?z():i.status==="approved"?(a.value="approved",m.success(l("models.xaiApproved")),setTimeout(()=>{p.value=!1,setTimeout(()=>k("success"),200)},1e3)):i.status==="expired"?a.value="expired":i.status==="error"&&(a.value="error",I.value=i.error||"Unknown error")}catch{z()}},2e3)}function L(){_&&clearTimeout(_),_=null}function B(){L(),p.value=!1,setTimeout(()=>k("close"),200)}function $(){window.open(N.value,"_blank")}function y(){a.value="idle",N.value="",O.value="",I.value="",T()}return ce(L),T(),(i,C)=>(u(),D(e(K),{show:p.value,"onUpdate:show":C[0]||(C[0]=r=>p.value=r),preset:"card",title:e(l)("models.xaiLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":a.value!=="waiting",onAfterLeave:C[1]||(C[1]=r=>k("close"))},{footer:s(()=>[o("div",to,[n(e(x),{disabled:a.value==="waiting",onClick:B},{default:s(()=>[g(t(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:s(()=>[o("div",Yl,[a.value==="idle"||a.value==="loading"?(u(),w("div",Jl,[n(e(_e),{size:"small"})])):a.value==="waiting"?(u(),w("div",Wl,[o("p",jl,t(e(l)("models.xaiWaiting")),1),n(e(x),{type:"primary",block:"",onClick:$},{default:s(()=>[g(t(e(l)("models.xaiOpenLink")),1)]),_:1})])):a.value==="approved"?(u(),w("div",Zl,[C[2]||(C[2]=o("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),o("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),o("p",null,t(e(l)("models.xaiApproved")),1)])):a.value==="expired"?(u(),w("div",Ql,[o("p",eo,t(e(l)("models.xaiExpired")),1),n(e(x),{size:"small",onClick:y},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):a.value==="error"?(u(),w("div",lo,[o("p",oo,t(I.value),1),n(e(x),{size:"small",onClick:y},{default:s(()=>[g(t(e(l)("common.retry")),1)]),_:1})])):F("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),Ct=S((()=>{})),Oo,Mt=S((()=>{ao(),ao(),Ct(),W(),Oo=j(No,[["__scopeId","data-v-13c9b241"]])})),so,io,no,ro,uo,vo,co,be,_o,Ce,po,Io,mo=S((()=>{R(),Z(),fe(),Y(),_t(),gt(),wt(),Mt(),he(),jo(),so={style:{display:"flex",gap:"12px"}},io={key:0,class:"fun-provider-hint"},no=["href"],ro={style:{display:"flex",gap:"8px",width:"100%"}},uo={class:"modal-footer"},vo="openai-codex",co="nous",be="copilot",_o="cliproxyapi",Ce="xai-oauth",po="alibaba-coding-plan",Io=G({__name:"ProviderFormModal",emits:["close","saved"],setup(V,{emit:b}){const{t:l}=J(),k=b,m=me(),p=ee(),a=ko(),N=c(!0),O=c(!1),I=c(!1),_=c(!1),T=c(!1),z=c(!1),L=c(!1),B=c(!1),$=c("preset"),y=c(null),i=c({name:"",base_url:"",api_key:"",model:"",context_length:null}),C=c([]),r={intl:"https://coding-intl.dashscope.aliyuncs.com/v1",cn:"https://coding.dashscope.aliyuncs.com/v1"},d=q(()=>y.value===vo),P=q(()=>y.value===co),Q=q(()=>y.value===be),ae=q(()=>y.value===_o),le=q(()=>y.value===Ce),oe=q(()=>y.value===po),X=c("intl"),se=q(()=>m.allProviders.map(M=>({label:M.label,value:M.provider}))),te={"fun-codex":"https://apikey.fun/register?aff=LIBAPI","fun-claude":"https://apikey.fun/register?aff=LIBAPI"},ie=q(()=>y.value&&te[y.value]||"");function ge(M){const v=M.replace(/^https?:\/\//,"").replace(/\/v1\/?$/,"").split("/")[0];return v.includes("localhost")||v.includes("127.0.0.1")?l("models.local",{host:v}):v.charAt(0).toUpperCase()+v.slice(1)}re(y,M=>{if(i.value.model="",X.value="intl",M){const v=m.allProviders.find(A=>A.provider===M);v&&(i.value.name=v.label,i.value.base_url=v.base_url,C.value=v.models.map(A=>({label:A,value:A})),v.models.length>0&&(i.value.model=v.models[0])),M===be?ne():M===Ce&&(L.value=!0)}}),re(X,M=>{oe.value&&(i.value.base_url=r[M])}),re(()=>i.value.base_url,M=>{$.value==="custom"&&M.trim()&&!i.value.name&&(i.value.name=ge(M.trim()))}),re($,()=>{C.value=[],i.value={name:"",base_url:"",api_key:"",model:"",context_length:null},y.value=null}),xo(()=>{m.providers.length===0&&m.fetchProviders()});async function ye(){const{base_url:M}=i.value;if(!M.trim()){p.warning(l("models.enterBaseUrl"));return}I.value=!0;try{C.value=(await Jo({base_url:M.trim(),api_key:i.value.api_key.trim()})).models.map(v=>({label:v,value:v})),C.value.length>0&&!i.value.model&&(i.value.model=C.value[0].value),p.success(l("models.foundModels",{count:C.value.length}))}catch(v){p.error(l("models.fetchFailed")+": "+v.message)}finally{I.value=!1}}async function we(){if($.value==="preset"&&!y.value){p.warning(l("models.selectProviderRequired"));return}if(d.value){_.value=!0;return}if(P.value){T.value=!0;return}if(Q.value){ne();return}if(le.value){L.value=!0;return}if(!i.value.base_url.trim()){p.warning(l("models.baseUrlRequired"));return}if(!i.value.api_key.trim()&&!ae.value&&!le.value){p.warning(l("models.apiKeyRequired"));return}if(!i.value.model){p.warning(l("models.modelRequired"));return}O.value=!0;try{const M=$.value==="preset"?y.value:null,v=i.value.context_length??void 0;await m.addProvider({name:i.value.name.trim(),base_url:i.value.base_url.trim(),api_key:i.value.api_key.trim(),model:i.value.model,context_length:v,providerKey:M}),p.success(l("models.providerAdded")),k("saved")}catch(M){p.error(M.message)}finally{O.value=!1}}async function ke(){_.value=!1,p.success(l("models.providerAdded")),k("saved")}async function xe(){T.value=!1,p.success(l("models.providerAdded")),k("saved")}async function U(){z.value=!1,p.success(l("models.providerAdded")),k("saved")}async function f(){L.value=!1,p.success(l("models.providerAdded")),k("saved")}function h(M){return M==="env"?l("models.copilotAddSourceEnv"):M==="gh-cli"?l("models.copilotAddSourceGhCli"):M==="apps-json"?l("models.copilotAddSourceAppsJson"):""}async function ne(){if(!B.value){B.value=!0;try{const M=await Pe();if(M.has_token){const v=h(M.source);a.success({title:l("models.copilotAddDetectedTitle"),content:v?`${l("models.copilotAddDetected")}
4
4
 
@@ -1 +1 @@
1
- import{n as C}from"./rolldown-runtime-BKwlnUi0.js";import{B as V,F as $,H as Ce,Nt as v,R as Pe,Rt as a,U as Ve,Vt as t,Z as N,_t as i,ct as xe,et as h,ht as Be,it as r,k as x,l as Me,nt as S,ot as o,rt as _,st as c,t as Te,tt as e,wt as p,y as ze,yt as U,z as B}from"./ui-vendor-CsTMg6zH.js";import{n as Ee,r as Fe}from"./vue-vendor-D8zSB7VM.js";import{c as Le,l as $e,n as Ne,t as Ue}from"./_plugin-vue_export-helper-ZIsfSgrY.js";async function qe(){return $e("/api/hermes/plugins")}var Ae=C((()=>{Le()})),q,A,O,R,I,j,H,D,K,Q,Z,G,J,W,X,Y,ee,ae,te,se,le,ne,ue,ie,re,oe,de,ce,ve,_e,pe=C((()=>{Ve(),Te(),Ee(),Ae(),q={class:"plugins-view"},A={class:"page-header"},O={class:"header-title"},R={class:"plugins-content"},I={class:"summary-grid"},j={class:"summary-card"},H={class:"summary-label"},D={class:"summary-card success"},K={class:"summary-label"},Q={class:"summary-card warning"},Z={class:"summary-label"},G={class:"summary-card error"},J={class:"summary-label"},W={class:"summary-card info"},X={class:"summary-label"},Y={class:"filter-row"},ee={key:0,class:"plugins-table-wrap"},ae={class:"plugins-table"},te={class:"plugin-name"},se={key:0},le={key:0,class:"description"},ne={key:1,class:"meta-line"},ue={key:0},ie={key:1},re={class:"config-status"},oe={class:"capability-list"},de={class:"path-cell"},ce={key:1,class:"muted"},ve={key:1,class:"metadata-panel"},_e=xe({__name:"PluginsView",setup(je){const{t:n,te:M}=Fe(),me=ze(),d=v([]),T=v([]),m=v(null),f=v(!1),y=v(""),P=v(""),b=v(null),k=v(null),w=v(null),fe=["enabled","auto-active","inactive","disabled","provider-managed"],ge=h(()=>fe.map(s=>({label:n(`plugins.status.${s}`),value:s}))),he=h(()=>E(d.value.map(s=>s.source))),ye=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})),z=h(()=>{const s=P.value.trim().toLowerCase();return d.value.filter(u=>b.value&&u.source!==b.value||k.value&&u.kind!==k.value||w.value&&u.effectiveStatus!==w.value?!1:s?[u.key,u.name,u.description,u.path,u.source,u.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function E(s){return Array.from(new Set(s.filter(Boolean))).sort((u,l)=>u.localeCompare(l)).map(u=>({label:u,value:u}))}async function F(){f.value=!0,y.value="";try{const s=await qe();d.value=s.plugins??[],T.value=s.warnings??[],m.value=s.metadata??null}catch(s){y.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function be(s){const u=`plugins.statusLabel.${s.effectiveStatus}`;return M(u)?n(u):s.effectiveStatus}function ke(s){const u=`plugins.configStatuses.${s.configStatus}`;return M(u)?n(u):s.configStatus}function we(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function L(s){const u=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${u}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${u}'`:""}async function Se(s){const u=L(s);u&&(await navigator.clipboard.writeText(u),me.success(n("plugins.commandCopied")))}return Be(F),(s,u)=>(i(),r("div",q,[e("header",A,[e("h2",O,t(a(n)("plugins.title")),1),c(a($),{size:"small",quaternary:"",loading:f.value,onClick:F},{default:p(()=>[o(t(a(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",R,[c(a(B),{type:"info",bordered:!1,class:"plugins-notice"},{default:p(()=>[o(t(a(n)("plugins.notice")),1)]),_:1}),y.value?(i(),S(a(B),{key:0,type:"error",class:"plugins-notice"},{default:p(()=>[o(t(y.value),1)]),_:1})):_("",!0),(i(!0),r(N,null,U(T.value,l=>(i(),S(a(B),{key:l,type:"warning",class:"plugins-notice"},{default:p(()=>[o(t(l),1)]),_:2},1024))),128)),e("div",I,[e("div",j,[e("span",H,t(a(n)("plugins.summary.total")),1),e("strong",null,t(g.value.total),1)]),e("div",D,[e("span",K,t(a(n)("plugins.summary.active")),1),e("strong",null,t(g.value.active),1)]),e("div",Q,[e("span",Z,t(a(n)("plugins.summary.inactive")),1),e("strong",null,t(g.value.inactive),1)]),e("div",G,[e("span",J,t(a(n)("plugins.summary.disabled")),1),e("strong",null,t(g.value.disabled),1)]),e("div",W,[e("span",X,t(a(n)("plugins.summary.providerManaged")),1),e("strong",null,t(g.value.providerManaged),1)])]),e("div",Y,[c(a(Pe),{value:P.value,"onUpdate:value":u[0]||(u[0]=l=>P.value=l),placeholder:a(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(a(x),{value:b.value,"onUpdate:value":u[1]||(u[1]=l=>b.value=l),options:he.value,placeholder:a(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(a(x),{value:k.value,"onUpdate:value":u[2]||(u[2]=l=>k.value=l),options:ye.value,placeholder:a(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(a(x),{value:w.value,"onUpdate:value":u[3]||(u[3]=l=>w.value=l),options:ge.value,placeholder:a(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(a(Me),{show:f.value&&d.value.length===0},{default:p(()=>[z.value.length?(i(),r("div",ee,[e("table",ae,[e("thead",null,[e("tr",null,[e("th",null,t(a(n)("plugins.table.plugin")),1),e("th",null,t(a(n)("plugins.table.status")),1),e("th",null,t(a(n)("plugins.table.source")),1),e("th",null,t(a(n)("plugins.table.kind")),1),e("th",null,t(a(n)("plugins.table.capabilities")),1),e("th",null,t(a(n)("plugins.table.path")),1),e("th",null,t(a(n)("plugins.table.cli")),1)])]),e("tbody",null,[(i(!0),r(N,null,U(z.value,l=>(i(),r("tr",{key:l.key},[e("td",null,[e("div",te,[e("strong",null,t(l.key),1),l.name!==l.key?(i(),r("span",se,t(l.name),1)):_("",!0)]),l.description?(i(),r("div",le,t(l.description),1)):_("",!0),l.version||l.author?(i(),r("div",ne,[l.version?(i(),r("span",ue,"v"+t(l.version),1)):_("",!0),l.author?(i(),r("span",ie,t(l.author),1)):_("",!0)])):_("",!0)]),e("td",null,[c(a(V),{size:"small",type:we(l)},{default:p(()=>[o(t(be(l)),1)]),_:2},1032,["type"]),e("div",re,t(a(n)("plugins.configStatus",{status:ke(l)})),1)]),e("td",null,[c(a(V),{size:"small",round:""},{default:p(()=>[o(t(l.source),1)]),_:2},1024)]),e("td",null,[c(a(V),{size:"small",round:""},{default:p(()=>[o(t(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",oe,[e("span",null,t(a(n)("plugins.capabilities.tools",{count:l.providesTools.length})),1),e("span",null,t(a(n)("plugins.capabilities.hooks",{count:l.providesHooks.length})),1),e("span",null,t(a(n)("plugins.capabilities.env",{count:l.requiresEnv.length})),1)])]),e("td",null,[e("code",de,t(l.path||a(n)("plugins.notAvailable")),1)]),e("td",null,[L(l)?(i(),S(a($),{key:0,size:"tiny",secondary:"",onClick:He=>Se(l)},{default:p(()=>[o(t(a(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(i(),r("span",ce,t(a(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?_("",!0):(i(),S(a(Ce),{key:1,description:a(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(i(),r("div",ve,[e("span",null,[o(t(a(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,t(m.value.hermesAgentRoot),1)]),e("span",null,[o(t(a(n)("plugins.metadata.python"))+": ",1),e("code",null,t(m.value.pythonExecutable),1)]),e("span",null,[o(t(a(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,t(m.value.cwd),1)]),e("span",null,[o(t(a(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,t(m.value.projectPluginsEnabled?a(n)("plugins.enabled"):a(n)("plugins.disabled")),1)])])):_("",!0)])]))}})})),Oe=C((()=>{})),Re,Ie=C((()=>{pe(),pe(),Oe(),Ne(),Re=Ue(_e,[["__scopeId","data-v-fa6beb89"]])}));Ie();export{Re as default};
1
+ import{n as C}from"./rolldown-runtime-BKwlnUi0.js";import{B as V,F as $,H as Ce,Nt as v,R as Pe,Rt as a,U as Ve,Vt as t,Z as N,_t as i,ct as xe,et as h,ht as Be,it as r,k as x,l as Me,nt as S,ot as o,rt as _,st as c,t as Te,tt as e,wt as p,y as ze,yt as U,z as B}from"./ui-vendor-CsTMg6zH.js";import{n as Ee,r as Fe}from"./vue-vendor-D8zSB7VM.js";import{c as Le,l as $e,n as Ne,t as Ue}from"./_plugin-vue_export-helper-CrLlP_D3.js";async function qe(){return $e("/api/hermes/plugins")}var Ae=C((()=>{Le()})),q,A,O,R,I,j,H,D,K,Q,Z,G,J,W,X,Y,ee,ae,te,se,le,ne,ue,ie,re,oe,de,ce,ve,_e,pe=C((()=>{Ve(),Te(),Ee(),Ae(),q={class:"plugins-view"},A={class:"page-header"},O={class:"header-title"},R={class:"plugins-content"},I={class:"summary-grid"},j={class:"summary-card"},H={class:"summary-label"},D={class:"summary-card success"},K={class:"summary-label"},Q={class:"summary-card warning"},Z={class:"summary-label"},G={class:"summary-card error"},J={class:"summary-label"},W={class:"summary-card info"},X={class:"summary-label"},Y={class:"filter-row"},ee={key:0,class:"plugins-table-wrap"},ae={class:"plugins-table"},te={class:"plugin-name"},se={key:0},le={key:0,class:"description"},ne={key:1,class:"meta-line"},ue={key:0},ie={key:1},re={class:"config-status"},oe={class:"capability-list"},de={class:"path-cell"},ce={key:1,class:"muted"},ve={key:1,class:"metadata-panel"},_e=xe({__name:"PluginsView",setup(je){const{t:n,te:M}=Fe(),me=ze(),d=v([]),T=v([]),m=v(null),f=v(!1),y=v(""),P=v(""),b=v(null),k=v(null),w=v(null),fe=["enabled","auto-active","inactive","disabled","provider-managed"],ge=h(()=>fe.map(s=>({label:n(`plugins.status.${s}`),value:s}))),he=h(()=>E(d.value.map(s=>s.source))),ye=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})),z=h(()=>{const s=P.value.trim().toLowerCase();return d.value.filter(u=>b.value&&u.source!==b.value||k.value&&u.kind!==k.value||w.value&&u.effectiveStatus!==w.value?!1:s?[u.key,u.name,u.description,u.path,u.source,u.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function E(s){return Array.from(new Set(s.filter(Boolean))).sort((u,l)=>u.localeCompare(l)).map(u=>({label:u,value:u}))}async function F(){f.value=!0,y.value="";try{const s=await qe();d.value=s.plugins??[],T.value=s.warnings??[],m.value=s.metadata??null}catch(s){y.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function be(s){const u=`plugins.statusLabel.${s.effectiveStatus}`;return M(u)?n(u):s.effectiveStatus}function ke(s){const u=`plugins.configStatuses.${s.configStatus}`;return M(u)?n(u):s.configStatus}function we(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function L(s){const u=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${u}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${u}'`:""}async function Se(s){const u=L(s);u&&(await navigator.clipboard.writeText(u),me.success(n("plugins.commandCopied")))}return Be(F),(s,u)=>(i(),r("div",q,[e("header",A,[e("h2",O,t(a(n)("plugins.title")),1),c(a($),{size:"small",quaternary:"",loading:f.value,onClick:F},{default:p(()=>[o(t(a(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",R,[c(a(B),{type:"info",bordered:!1,class:"plugins-notice"},{default:p(()=>[o(t(a(n)("plugins.notice")),1)]),_:1}),y.value?(i(),S(a(B),{key:0,type:"error",class:"plugins-notice"},{default:p(()=>[o(t(y.value),1)]),_:1})):_("",!0),(i(!0),r(N,null,U(T.value,l=>(i(),S(a(B),{key:l,type:"warning",class:"plugins-notice"},{default:p(()=>[o(t(l),1)]),_:2},1024))),128)),e("div",I,[e("div",j,[e("span",H,t(a(n)("plugins.summary.total")),1),e("strong",null,t(g.value.total),1)]),e("div",D,[e("span",K,t(a(n)("plugins.summary.active")),1),e("strong",null,t(g.value.active),1)]),e("div",Q,[e("span",Z,t(a(n)("plugins.summary.inactive")),1),e("strong",null,t(g.value.inactive),1)]),e("div",G,[e("span",J,t(a(n)("plugins.summary.disabled")),1),e("strong",null,t(g.value.disabled),1)]),e("div",W,[e("span",X,t(a(n)("plugins.summary.providerManaged")),1),e("strong",null,t(g.value.providerManaged),1)])]),e("div",Y,[c(a(Pe),{value:P.value,"onUpdate:value":u[0]||(u[0]=l=>P.value=l),placeholder:a(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(a(x),{value:b.value,"onUpdate:value":u[1]||(u[1]=l=>b.value=l),options:he.value,placeholder:a(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(a(x),{value:k.value,"onUpdate:value":u[2]||(u[2]=l=>k.value=l),options:ye.value,placeholder:a(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(a(x),{value:w.value,"onUpdate:value":u[3]||(u[3]=l=>w.value=l),options:ge.value,placeholder:a(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(a(Me),{show:f.value&&d.value.length===0},{default:p(()=>[z.value.length?(i(),r("div",ee,[e("table",ae,[e("thead",null,[e("tr",null,[e("th",null,t(a(n)("plugins.table.plugin")),1),e("th",null,t(a(n)("plugins.table.status")),1),e("th",null,t(a(n)("plugins.table.source")),1),e("th",null,t(a(n)("plugins.table.kind")),1),e("th",null,t(a(n)("plugins.table.capabilities")),1),e("th",null,t(a(n)("plugins.table.path")),1),e("th",null,t(a(n)("plugins.table.cli")),1)])]),e("tbody",null,[(i(!0),r(N,null,U(z.value,l=>(i(),r("tr",{key:l.key},[e("td",null,[e("div",te,[e("strong",null,t(l.key),1),l.name!==l.key?(i(),r("span",se,t(l.name),1)):_("",!0)]),l.description?(i(),r("div",le,t(l.description),1)):_("",!0),l.version||l.author?(i(),r("div",ne,[l.version?(i(),r("span",ue,"v"+t(l.version),1)):_("",!0),l.author?(i(),r("span",ie,t(l.author),1)):_("",!0)])):_("",!0)]),e("td",null,[c(a(V),{size:"small",type:we(l)},{default:p(()=>[o(t(be(l)),1)]),_:2},1032,["type"]),e("div",re,t(a(n)("plugins.configStatus",{status:ke(l)})),1)]),e("td",null,[c(a(V),{size:"small",round:""},{default:p(()=>[o(t(l.source),1)]),_:2},1024)]),e("td",null,[c(a(V),{size:"small",round:""},{default:p(()=>[o(t(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",oe,[e("span",null,t(a(n)("plugins.capabilities.tools",{count:l.providesTools.length})),1),e("span",null,t(a(n)("plugins.capabilities.hooks",{count:l.providesHooks.length})),1),e("span",null,t(a(n)("plugins.capabilities.env",{count:l.requiresEnv.length})),1)])]),e("td",null,[e("code",de,t(l.path||a(n)("plugins.notAvailable")),1)]),e("td",null,[L(l)?(i(),S(a($),{key:0,size:"tiny",secondary:"",onClick:He=>Se(l)},{default:p(()=>[o(t(a(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(i(),r("span",ce,t(a(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?_("",!0):(i(),S(a(Ce),{key:1,description:a(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(i(),r("div",ve,[e("span",null,[o(t(a(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,t(m.value.hermesAgentRoot),1)]),e("span",null,[o(t(a(n)("plugins.metadata.python"))+": ",1),e("code",null,t(m.value.pythonExecutable),1)]),e("span",null,[o(t(a(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,t(m.value.cwd),1)]),e("span",null,[o(t(a(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,t(m.value.projectPluginsEnabled?a(n)("plugins.enabled"):a(n)("plugins.disabled")),1)])])):_("",!0)])]))}})})),Oe=C((()=>{})),Re,Ie=C((()=>{pe(),pe(),Oe(),Ne(),Re=Ue(_e,[["__scopeId","data-v-fa6beb89"]])}));Ie();export{Re as default};
@@ -1,3 +1,3 @@
1
- import{n as y}from"./rolldown-runtime-BKwlnUi0.js";import{B as Ke,C as Oe,F as x,Nt as h,R as Re,Rt as e,S as Y,U as V,Vt as o,Z as Te,_t as m,c as Qe,ct as N,et as Xe,ht as el,i as q,it as $,l as Ue,m as Le,nt as b,ot as P,p as A,r as ll,rt as S,st as p,t as D,tt as a,wt as i,y as E,yt as al,zt as H}from"./ui-vendor-CsTMg6zH.js";import{n as F,r as B}from"./vue-vendor-D8zSB7VM.js";import{d as R,n as T,p as U,t as L}from"./_plugin-vue_export-helper-ZIsfSgrY.js";var W,Z,G,J,K,O,Q,X,ee,le,ae,te,oe,se,ie,re,ne,ue,de,fe,_e,pe,ce,ve,me,he,ye,je,ge=y((()=>{V(),D(),R(),F(),W={class:"card-header"},Z={class:"profile-name"},G={class:"card-body"},J={class:"info-row"},K={class:"info-label"},O={class:"info-value mono"},Q={class:"info-row"},X={class:"info-label"},ee={class:"info-value mono"},le={class:"toggle-text"},ae={key:0,class:"card-detail"},te={class:"info-row"},oe={class:"info-label"},se={class:"info-value"},ie={class:"info-row"},re={class:"info-label"},ne={class:"info-value mono detail-path"},ue={class:"info-row"},de={class:"info-label"},fe={class:"info-value"},_e={class:"info-row"},pe={class:"info-label"},ce={class:"info-value"},ve={class:"info-row"},me={class:"info-label"},he={class:"info-value"},ye={class:"card-actions"},je=N({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:k}){const d=C,{t:l}=B(),r=U(),n=E(),g=Oe(),_=h(!1),u=h(!1),c=h(!1),s=h(!1),v=h(null),I=Xe(()=>d.profile.name==="default");async function M(){if(_.value){_.value=!1;return}_.value=!0,u.value=!0;try{v.value=await r.fetchProfileDetail(d.profile.name)}finally{u.value=!1}}async function f(){s.value=!0;try{await r.switchProfile(d.profile.name)?(n.success(l("profiles.switchSuccess",{name:d.profile.name})),setTimeout(()=>window.location.reload(),500)):n.error(l("profiles.switchFailed"))}finally{s.value=!1}}function t(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:d.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await r.deleteProfile(d.profile.name)?n.success(l("profiles.deleteSuccess")):n.error(l("profiles.deleteFailed"))}})}async function w(){c.value=!0;try{await r.exportProfile(d.profile.name)?n.success(l("profiles.exportSuccess")):n.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,z)=>(m(),$("div",{class:H(["profile-card",{active:C.profile.active}])},[a("div",W,[a("h3",Z,o(C.profile.name),1),C.profile.active?(m(),b(e(Ke),{key:0,size:"tiny",type:"success",bordered:!1},{default:i(()=>[P(o(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",G,[a("div",J,[a("span",K,o(e(l)("profiles.model")),1),a("code",O,o(C.profile.model),1)]),a("div",Q,[a("span",X,o(e(l)("profiles.gateway")),1),a("code",ee,o(C.profile.gateway),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:H(["toggle-icon",{expanded:_.value}])},[...z[0]||(z[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",le,o(_.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),_.value?(m(),$("div",ae,[p(e(Ue),{show:u.value,size:"small"},{default:i(()=>[v.value?(m(),$(Te,{key:0},[a("div",te,[a("span",oe,o(e(l)("profiles.provider")),1),a("span",se,o(v.value.provider),1)]),a("div",ie,[a("span",re,o(e(l)("profiles.path")),1),a("code",ne,o(v.value.path),1)]),a("div",ue,[a("span",de,o(e(l)("profiles.skills")),1),a("span",fe,o(v.value.skills),1)]),a("div",_e,[a("span",pe,o(e(l)("profiles.hasEnv")),1),a("span",ce,o(v.value.hasEnv?"Yes":"No"),1)]),a("div",ve,[a("span",me,o(e(l)("profiles.hasSoulMd")),1),a("span",he,o(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",ye,[C.profile.active?S("",!0):(m(),b(e(x),{key:0,size:"tiny",loading:s.value,quaternary:"",type:"primary",onClick:f},{default:i(()=>[P(o(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),p(e(x),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:t},{default:i(()=>[P(o(e(l)("common.delete")),1)]),_:1},8,["disabled"]),p(e(x),{size:"tiny",quaternary:"",loading:c.value,onClick:w},{default:i(()=>[P(o(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),tl=y((()=>{})),De,ol=y((()=>{ge(),ge(),tl(),T(),De=L(je,[["__scopeId","data-v-24f97ba0"]])})),we,Pe,Ee,Ce=y((()=>{V(),ol(),R(),F(),we={key:0,class:"empty-state"},Pe={key:1,class:"profiles-grid"},Ee=N({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:k}=B(),d=U();return(l,r)=>e(d).profiles.length===0?(m(),$("div",we,[r[1]||(r[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,o(e(k)("profiles.noProfiles")),1)])):(m(),$("div",Pe,[(m(!0),$(Te,null,al(e(d).profiles,n=>(m(),b(De,{key:n.name,profile:n,onRename:r[0]||(r[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),qe,il=y((()=>{Ce(),Ce(),sl(),T(),qe=L(Ee,[["__scopeId","data-v-51e73d5a"]])})),ke,Ae,xe=y((()=>{V(),D(),R(),F(),ke={class:"modal-footer"},Ae=N({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:k}){const d=k,{t:l}=B(),r=U(),n=E(),g=h(!0),_=h(!1),u=h(""),c=h(!1),s=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?s.value=l("profiles.nameValidation"):s.value="",u.value=t}async function I(){if(!u.value){n.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(u.value)){n.error(l("profiles.nameValidation"));return}_.value=!0;try{const f=await r.createProfile(u.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],j=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||j.length>0)){const z=[];t.length>0&&z.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&z.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),j.length>0&&z.push(l("profiles.cloneStrippedConfigCredentials",{count:j.length,list:j.join(", ")})),n.info(`${l("profiles.createSuccess",{name:u.value.trim()})}
1
+ import{n as y}from"./rolldown-runtime-BKwlnUi0.js";import{B as Ke,C as Oe,F as x,Nt as h,R as Re,Rt as e,S as Y,U as V,Vt as o,Z as Te,_t as m,c as Qe,ct as N,et as Xe,ht as el,i as q,it as $,l as Ue,m as Le,nt as b,ot as P,p as A,r as ll,rt as S,st as p,t as D,tt as a,wt as i,y as E,yt as al,zt as H}from"./ui-vendor-CsTMg6zH.js";import{n as F,r as B}from"./vue-vendor-D8zSB7VM.js";import{d as R,n as T,p as U,t as L}from"./_plugin-vue_export-helper-CrLlP_D3.js";var W,Z,G,J,K,O,Q,X,ee,le,ae,te,oe,se,ie,re,ne,ue,de,fe,_e,pe,ce,ve,me,he,ye,je,ge=y((()=>{V(),D(),R(),F(),W={class:"card-header"},Z={class:"profile-name"},G={class:"card-body"},J={class:"info-row"},K={class:"info-label"},O={class:"info-value mono"},Q={class:"info-row"},X={class:"info-label"},ee={class:"info-value mono"},le={class:"toggle-text"},ae={key:0,class:"card-detail"},te={class:"info-row"},oe={class:"info-label"},se={class:"info-value"},ie={class:"info-row"},re={class:"info-label"},ne={class:"info-value mono detail-path"},ue={class:"info-row"},de={class:"info-label"},fe={class:"info-value"},_e={class:"info-row"},pe={class:"info-label"},ce={class:"info-value"},ve={class:"info-row"},me={class:"info-label"},he={class:"info-value"},ye={class:"card-actions"},je=N({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:k}){const d=C,{t:l}=B(),r=U(),n=E(),g=Oe(),_=h(!1),u=h(!1),c=h(!1),s=h(!1),v=h(null),I=Xe(()=>d.profile.name==="default");async function M(){if(_.value){_.value=!1;return}_.value=!0,u.value=!0;try{v.value=await r.fetchProfileDetail(d.profile.name)}finally{u.value=!1}}async function f(){s.value=!0;try{await r.switchProfile(d.profile.name)?(n.success(l("profiles.switchSuccess",{name:d.profile.name})),setTimeout(()=>window.location.reload(),500)):n.error(l("profiles.switchFailed"))}finally{s.value=!1}}function t(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:d.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await r.deleteProfile(d.profile.name)?n.success(l("profiles.deleteSuccess")):n.error(l("profiles.deleteFailed"))}})}async function w(){c.value=!0;try{await r.exportProfile(d.profile.name)?n.success(l("profiles.exportSuccess")):n.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,z)=>(m(),$("div",{class:H(["profile-card",{active:C.profile.active}])},[a("div",W,[a("h3",Z,o(C.profile.name),1),C.profile.active?(m(),b(e(Ke),{key:0,size:"tiny",type:"success",bordered:!1},{default:i(()=>[P(o(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",G,[a("div",J,[a("span",K,o(e(l)("profiles.model")),1),a("code",O,o(C.profile.model),1)]),a("div",Q,[a("span",X,o(e(l)("profiles.gateway")),1),a("code",ee,o(C.profile.gateway),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:H(["toggle-icon",{expanded:_.value}])},[...z[0]||(z[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",le,o(_.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),_.value?(m(),$("div",ae,[p(e(Ue),{show:u.value,size:"small"},{default:i(()=>[v.value?(m(),$(Te,{key:0},[a("div",te,[a("span",oe,o(e(l)("profiles.provider")),1),a("span",se,o(v.value.provider),1)]),a("div",ie,[a("span",re,o(e(l)("profiles.path")),1),a("code",ne,o(v.value.path),1)]),a("div",ue,[a("span",de,o(e(l)("profiles.skills")),1),a("span",fe,o(v.value.skills),1)]),a("div",_e,[a("span",pe,o(e(l)("profiles.hasEnv")),1),a("span",ce,o(v.value.hasEnv?"Yes":"No"),1)]),a("div",ve,[a("span",me,o(e(l)("profiles.hasSoulMd")),1),a("span",he,o(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",ye,[C.profile.active?S("",!0):(m(),b(e(x),{key:0,size:"tiny",loading:s.value,quaternary:"",type:"primary",onClick:f},{default:i(()=>[P(o(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),p(e(x),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:t},{default:i(()=>[P(o(e(l)("common.delete")),1)]),_:1},8,["disabled"]),p(e(x),{size:"tiny",quaternary:"",loading:c.value,onClick:w},{default:i(()=>[P(o(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),tl=y((()=>{})),De,ol=y((()=>{ge(),ge(),tl(),T(),De=L(je,[["__scopeId","data-v-24f97ba0"]])})),we,Pe,Ee,Ce=y((()=>{V(),ol(),R(),F(),we={key:0,class:"empty-state"},Pe={key:1,class:"profiles-grid"},Ee=N({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:k}=B(),d=U();return(l,r)=>e(d).profiles.length===0?(m(),$("div",we,[r[1]||(r[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,o(e(k)("profiles.noProfiles")),1)])):(m(),$("div",Pe,[(m(!0),$(Te,null,al(e(d).profiles,n=>(m(),b(De,{key:n.name,profile:n,onRename:r[0]||(r[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),qe,il=y((()=>{Ce(),Ce(),sl(),T(),qe=L(Ee,[["__scopeId","data-v-51e73d5a"]])})),ke,Ae,xe=y((()=>{V(),D(),R(),F(),ke={class:"modal-footer"},Ae=N({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:k}){const d=k,{t:l}=B(),r=U(),n=E(),g=h(!0),_=h(!1),u=h(""),c=h(!1),s=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?s.value=l("profiles.nameValidation"):s.value="",u.value=t}async function I(){if(!u.value){n.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(u.value)){n.error(l("profiles.nameValidation"));return}_.value=!0;try{const f=await r.createProfile(u.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],j=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||j.length>0)){const z=[];t.length>0&&z.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&z.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),j.length>0&&z.push(l("profiles.cloneStrippedConfigCredentials",{count:j.length,list:j.join(", ")})),n.info(`${l("profiles.createSuccess",{name:u.value.trim()})}
2
2
  ${z.join(`
3
3
  `)}`,{duration:6e3})}else n.success(l("profiles.createSuccess",{name:u.value.trim()}));d("saved")}else{const t=f.error||l("profiles.createFailed");n.error(t)}}finally{_.value=!1}}function M(){g.value=!1,setTimeout(()=>d("close"),200)}return(f,t)=>(m(),b(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":!_.value,onAfterLeave:t[3]||(t[3]=w=>d("close"))},{footer:i(()=>[a("div",ke,[p(e(x),{onClick:M},{default:i(()=>[P(o(e(l)("common.cancel")),1)]),_:1}),p(e(x),{type:"primary",loading:_.value,onClick:I},{default:i(()=>[P(o(e(l)("common.create")),1)]),_:1},8,["loading"])])]),default:i(()=>[p(e(Le),{"label-placement":"top"},{default:i(()=>[p(e(A),{label:e(l)("profiles.name"),required:""},{default:i(()=>[p(e(Re),{value:u.value,"onUpdate:value":t[0]||(t[0]=w=>u.value=w),placeholder:e(l)("profiles.namePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),s.value?(m(),b(e(q),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:i(()=>[P(o(s.value),1)]),_:1})):S("",!0),p(e(A),{label:e(l)("profiles.cloneFromCurrent")},{default:i(()=>[p(e(Qe),{value:c.value,"onUpdate:value":t[1]||(t[1]=w=>c.value=w)},null,8,["value"])]),_:1},8,["label"]),c.value?(m(),b(e(q),{key:1,depth:"3",style:{"font-size":"12px"}},{default:i(()=>[P(o(e(l)("profiles.cloneCleanupNotice")),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),rl=y((()=>{})),nl=y((()=>{})),Ye,ul=y((()=>{xe(),xe(),rl(),nl(),T(),Ye=L(Ae,[["__scopeId","data-v-06cc88f3"]])})),be,He,Me=y((()=>{V(),D(),R(),F(),be={class:"modal-footer"},He=N({__name:"ProfileRenameModal",props:{profileName:{}},emits:["close","saved"],setup(C,{emit:k}){const d=C,l=k,{t:r}=B(),n=U(),g=E(),_=h(!0),u=h(!1),c=h(""),s=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?s.value=r("profiles.nameValidation"):s.value="",c.value=t}async function I(){if(!c.value){g.warning(r("profiles.newNamePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(c.value)){g.error(r("profiles.nameValidation"));return}u.value=!0;try{await n.renameProfile(d.profileName,c.value.trim())?(g.success(r("profiles.renameSuccess")),l("saved")):g.error(r("profiles.renameFailed"))}finally{u.value=!1}}function M(){_.value=!1,setTimeout(()=>l("close"),200)}return(f,t)=>(m(),b(e(Y),{show:_.value,"onUpdate:show":t[1]||(t[1]=w=>_.value=w),preset:"card",title:e(r)("profiles.rename"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!u.value,onAfterLeave:t[2]||(t[2]=w=>l("close"))},{footer:i(()=>[a("div",be,[p(e(x),{onClick:M},{default:i(()=>[P(o(e(r)("common.cancel")),1)]),_:1}),p(e(x),{type:"primary",loading:u.value,onClick:I},{default:i(()=>[P(o(e(r)("common.confirm")),1)]),_:1},8,["loading"])])]),default:i(()=>[p(e(Le),{"label-placement":"top"},{default:i(()=>[p(e(A),{label:e(r)("profiles.newName"),required:""},{default:i(()=>[p(e(Re),{value:c.value,"onUpdate:value":t[0]||(t[0]=w=>c.value=w),placeholder:e(r)("profiles.newNamePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),s.value?(m(),b(e(q),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:i(()=>[P(o(s.value),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),dl=y((()=>{})),We,fl=y((()=>{Me(),Me(),dl(),T(),We=L(He,[["__scopeId","data-v-740612c1"]])})),Se,Ze,$e=y((()=>{V(),D(),R(),F(),Se={class:"modal-footer"},Ze=N({__name:"ProfileImportModal",emits:["close","saved"],setup(C,{emit:k}){const d=k,{t:l}=B(),r=U(),n=E(),g=h(!0),_=h(!1),u=h([]),c=[".tar.gz",".tgz",".gz",".zip"];function s({file:M}){const f=M.name?.toLowerCase()||"";return c.some(t=>f.endsWith(t))?!0:(n.warning(l("profiles.importInvalidFile")),!1)}async function v(){if(!u.value.length){n.warning(l("profiles.importSelectFile"));return}_.value=!0;try{const M=u.value[0].file;if(!M){n.error(l("profiles.importFailed"));return}await r.importProfile(M)?(n.success(l("profiles.importSuccess")),d("saved")):n.error(l("profiles.importFailed"))}finally{_.value=!1}}function I(){g.value=!1,setTimeout(()=>d("close"),200)}return(M,f)=>(m(),b(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":!_.value,onAfterLeave:f[2]||(f[2]=t=>d("close"))},{footer:i(()=>[a("div",Se,[p(e(x),{onClick:I},{default:i(()=>[P(o(e(l)("common.cancel")),1)]),_:1}),p(e(x),{type:"primary",loading:_.value,disabled:!u.value.length,onClick:v},{default:i(()=>[P(o(e(l)("common.confirm")),1)]),_:1},8,["loading","disabled"])])]),default:i(()=>[p(e(ll),{"file-list":u.value,"onUpdate:fileList":f[0]||(f[0]=t=>u.value=t),max:1,accept:c.join(","),disabled:_.value,onBeforeUpload:s},{default:i(()=>[p(e(x),null,{default:i(()=>[P(o(e(l)("profiles.importSelectFile")),1)]),_:1})]),_:1},8,["file-list","accept","disabled"])]),_:1},8,["show","title","mask-closable"]))}})})),_l=y((()=>{})),Ge,pl=y((()=>{$e(),$e(),_l(),T(),Ge=L(Ze,[["__scopeId","data-v-accddacf"]])})),Ie,ze,Ve,Ne,Fe,Je,Be=y((()=>{V(),D(),F(),il(),ul(),fl(),pl(),R(),Ie={class:"profiles-view"},ze={class:"page-header"},Ve={class:"header-title"},Ne={class:"header-actions"},Fe={class:"profiles-content"},Je=N({__name:"ProfilesView",setup(C){const{t:k}=B(),d=U(),l=h(!1),r=h(!1),n=h(null);el(()=>{d.fetchProfiles()});function g(){l.value=!1}function _(){n.value=null}function u(){r.value=!1}return(c,s)=>(m(),$("div",Ie,[a("header",ze,[a("h2",Ve,o(e(k)("profiles.title")),1),a("div",Ne,[p(e(x),{size:"small",onClick:s[0]||(s[0]=v=>r.value=!0)},{icon:i(()=>[...s[6]||(s[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:i(()=>[P(" "+o(e(k)("profiles.import")),1)]),_:1}),p(e(x),{type:"primary",size:"small",onClick:s[1]||(s[1]=v=>l.value=!0)},{icon:i(()=>[...s[7]||(s[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:i(()=>[P(" "+o(e(k)("profiles.create")),1)]),_:1})])]),a("div",Fe,[p(e(Ue),{show:e(d).loading&&e(d).profiles.length===0},{default:i(()=>[p(qe,{onRename:s[2]||(s[2]=v=>n.value=v)})]),_:1},8,["show"])]),l.value?(m(),b(Ye,{key:0,onClose:s[3]||(s[3]=v=>l.value=!1),onSaved:g})):S("",!0),n.value?(m(),b(We,{key:1,"profile-name":n.value,onClose:s[4]||(s[4]=v=>n.value=null),onSaved:_},null,8,["profile-name"])):S("",!0),r.value?(m(),b(Ge,{key:2,onClose:s[5]||(s[5]=v=>r.value=!1),onSaved:u})):S("",!0)]))}})})),cl=y((()=>{})),vl,ml=y((()=>{Be(),Be(),cl(),T(),vl=L(Je,[["__scopeId","data-v-fcdc8d6b"]])}));ml();export{vl as default};
@@ -1 +1 @@
1
- import{n as h}from"./rolldown-runtime-BKwlnUi0.js";import{N as X,Nt as R,Rt as m,U as Y,Vt as d,X as p,_t as n,ct as $,d as j,et as F,gt as O,it as r,nt as q,ot as k,rt as u,st as G,t as H,tt as s,wt as S,zt as J}from"./ui-vendor-CsTMg6zH.js";import{n as K,r as Q}from"./vue-vendor-D8zSB7VM.js";import{n as Z,t as ee}from"./app-BP-u-rQP.js";function le(e){return e?N[e]||e:""}function I(e){if(!e)return"";const o=new Date(e),a=new Date;return o.toDateString()===a.toDateString()?o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):o.toLocaleDateString([],{month:"short",day:"numeric"})}function re(e){return I(e*1e3)}var N,te=h((()=>{N={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"}})),M,_,x,y,w,b,C,T,B,L,E,D=h((()=>{Y(),H(),K(),ee(),te(),M=["aria-current"],_={key:0,class:"session-item-checkbox"},x={class:"session-item-content"},y={class:"session-item-title-row"},w={key:0,class:"session-item-pin","aria-hidden":"true"},b={class:"session-item-title"},C={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"},T={class:"session-item-meta"},B=["title"],L={class:"session-item-time"},E=$({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:o}){const a=e,l=o,{t:A}=Q(),P=Z(),g=F(()=>a.session.model?P.displayModelName(a.session.model,a.session.provider):"");let i=null;const c=R(!1);function V(f){c.value=!1,i=setTimeout(()=>{c.value=!0;const t=f.touches[0];l("contextmenu",new MouseEvent("contextmenu",{clientX:t.clientX,clientY:t.clientY,bubbles:!0}))},500)}function z(){i&&(clearTimeout(i),i=null)}function U(){i&&(clearTimeout(i),i=null)}function W(){if(c.value){c.value=!1;return}l("select")}return O(()=>{i&&clearTimeout(i)}),(f,t)=>(n(),r("button",{class:J(["session-item",{active:e.active,"batch-mode":e.selectable}]),"aria-current":e.active?"page":void 0,onClick:W,onContextmenu:t[3]||(t[3]=v=>l("contextmenu",v)),onTouchstart:V,onTouchend:z,onTouchmove:U},[e.selectable?(n(),r("div",_,[G(m(X),{checked:e.selected,onClick:t[0]||(t[0]=p(v=>l("toggle-select"),["stop"]))},null,8,["checked"])])):u("",!0),s("div",x,[s("span",y,[e.pinned?(n(),r("span",w,[...t[4]||(t[4]=[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)])])):u("",!0),s("span",b,[e.streaming?(n(),r("svg",C,[...t[5]||(t[5]=[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)])])):u("",!0),k(" "+d(e.session.title),1)])]),s("span",T,[g.value?(n(),r("span",{key:0,class:"session-item-model",title:e.session.model},d(g.value),9,B)):u("",!0),s("span",L,d(m(I)(e.session.createdAt)),1)])]),e.canDelete&&!e.selectable?(n(),q(m(j),{key:1,onPositiveClick:t[2]||(t[2]=v=>l("delete"))},{trigger:S(()=>[s("button",{class:"session-item-delete",onClick:t[1]||(t[1]=p(()=>{},["stop"]))},[...t[6]||(t[6]=[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(()=>[k(" "+d(m(A)("chat.deleteSession")),1)]),_:1})):u("",!0)],42,M))}})})),se,ue=h((()=>{D(),D(),se=E}));export{te as a,le as i,ue as n,re as r,se as t};
1
+ import{n as h}from"./rolldown-runtime-BKwlnUi0.js";import{N as X,Nt as R,Rt as m,U as Y,Vt as d,X as p,_t as n,ct as $,d as j,et as F,gt as O,it as r,nt as q,ot as k,rt as u,st as G,t as H,tt as s,wt as S,zt as J}from"./ui-vendor-CsTMg6zH.js";import{n as K,r as Q}from"./vue-vendor-D8zSB7VM.js";import{n as Z,t as ee}from"./app-CYaCGxZ_.js";function le(e){return e?N[e]||e:""}function I(e){if(!e)return"";const o=new Date(e),a=new Date;return o.toDateString()===a.toDateString()?o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):o.toLocaleDateString([],{month:"short",day:"numeric"})}function re(e){return I(e*1e3)}var N,te=h((()=>{N={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"}})),M,_,x,y,w,b,C,T,B,L,E,D=h((()=>{Y(),H(),K(),ee(),te(),M=["aria-current"],_={key:0,class:"session-item-checkbox"},x={class:"session-item-content"},y={class:"session-item-title-row"},w={key:0,class:"session-item-pin","aria-hidden":"true"},b={class:"session-item-title"},C={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"},T={class:"session-item-meta"},B=["title"],L={class:"session-item-time"},E=$({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:o}){const a=e,l=o,{t:A}=Q(),P=Z(),g=F(()=>a.session.model?P.displayModelName(a.session.model,a.session.provider):"");let i=null;const c=R(!1);function V(f){c.value=!1,i=setTimeout(()=>{c.value=!0;const t=f.touches[0];l("contextmenu",new MouseEvent("contextmenu",{clientX:t.clientX,clientY:t.clientY,bubbles:!0}))},500)}function z(){i&&(clearTimeout(i),i=null)}function U(){i&&(clearTimeout(i),i=null)}function W(){if(c.value){c.value=!1;return}l("select")}return O(()=>{i&&clearTimeout(i)}),(f,t)=>(n(),r("button",{class:J(["session-item",{active:e.active,"batch-mode":e.selectable}]),"aria-current":e.active?"page":void 0,onClick:W,onContextmenu:t[3]||(t[3]=v=>l("contextmenu",v)),onTouchstart:V,onTouchend:z,onTouchmove:U},[e.selectable?(n(),r("div",_,[G(m(X),{checked:e.selected,onClick:t[0]||(t[0]=p(v=>l("toggle-select"),["stop"]))},null,8,["checked"])])):u("",!0),s("div",x,[s("span",y,[e.pinned?(n(),r("span",w,[...t[4]||(t[4]=[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)])])):u("",!0),s("span",b,[e.streaming?(n(),r("svg",C,[...t[5]||(t[5]=[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)])])):u("",!0),k(" "+d(e.session.title),1)])]),s("span",T,[g.value?(n(),r("span",{key:0,class:"session-item-model",title:e.session.model},d(g.value),9,B)):u("",!0),s("span",L,d(m(I)(e.session.createdAt)),1)])]),e.canDelete&&!e.selectable?(n(),q(m(j),{key:1,onPositiveClick:t[2]||(t[2]=v=>l("delete"))},{trigger:S(()=>[s("button",{class:"session-item-delete",onClick:t[1]||(t[1]=p(()=>{},["stop"]))},[...t[6]||(t[6]=[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(()=>[k(" "+d(m(A)("chat.deleteSession")),1)]),_:1})):u("",!0)],42,M))}})})),se,ue=h((()=>{D(),D(),se=E}));export{te as a,le as i,ue as n,re as r,se as t};
@@ -1 +1 @@
1
- import{n as _}from"./rolldown-runtime-BKwlnUi0.js";import{U as c,Vt as i,_t as s,bt as g,ct as m,it as n,rt as h,tt as e}from"./ui-vendor-CsTMg6zH.js";import{n as b,t as f}from"./_plugin-vue_export-helper-ZIsfSgrY.js";var a,o,r,l,u,p,d=_((()=>{c(),a={class:"setting-row"},o={class:"setting-info"},r={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=m({__name:"SettingRow",props:{label:{},hint:{}},setup(t){return(v,y)=>(s(),n("div",a,[e("div",o,[e("label",r,i(t.label),1),t.hint?(s(),n("p",l,i(t.hint),1)):h("",!0)]),e("div",u,[g(v.$slots,"default",{},void 0,!0)])]))}})})),S=_((()=>{})),w,B=_((()=>{d(),d(),S(),b(),w=f(p,[["__scopeId","data-v-b81640b4"]])}));export{B as n,w as t};
1
+ import{n as _}from"./rolldown-runtime-BKwlnUi0.js";import{U as c,Vt as i,_t as s,bt as g,ct as m,it as n,rt as h,tt as e}from"./ui-vendor-CsTMg6zH.js";import{n as b,t as f}from"./_plugin-vue_export-helper-CrLlP_D3.js";var a,o,r,l,u,p,d=_((()=>{c(),a={class:"setting-row"},o={class:"setting-info"},r={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=m({__name:"SettingRow",props:{label:{},hint:{}},setup(t){return(v,y)=>(s(),n("div",a,[e("div",o,[e("label",r,i(t.label),1),t.hint?(s(),n("p",l,i(t.hint),1)):h("",!0)]),e("div",u,[g(v.$slots,"default",{},void 0,!0)])]))}})})),S=_((()=>{})),w,B=_((()=>{d(),d(),S(),b(),w=f(p,[["__scopeId","data-v-b81640b4"]])}));export{B as n,w as t};
@@ -1 +1 @@
1
- import{n as b}from"./rolldown-runtime-BKwlnUi0.js";import{F as N,H as Bt,Nt as U,R as x,Rt as e,S as le,U as A,Vt as p,Y as te,Z as j,_t as f,c as z,ct as T,d as ue,f as W,ht as Q,it as S,k as V,l as mt,m as ie,nt as ae,o as Lt,ot as k,p as E,rt as K,s as J,st as a,t as D,tt as g,u as re,wt as l,y as Y,yt as gt,zt as Ot}from"./ui-vendor-CsTMg6zH.js";import{n as $,r as I}from"./vue-vendor-D8zSB7VM.js";import{n as R,t as F}from"./_plugin-vue_export-helper-ZIsfSgrY.js";import{l as de,o as Et}from"./app-BP-u-rQP.js";import{C as Jt,S as Wt,o as G,s as X}from"./index-JI6E-cKo.js";import{a as Yt,c as jt,i as Gt,l as Xt,n as qt,r as Zt,s as Qt,t as ea,u as ta}from"./auth-CrqiXkJC.js";import{n as q,t as _}from"./SettingRow-5JNu2zcB.js";import{n as aa,t as sa}from"./session-browser-prefs-DPQy70mA.js";import{a as la,c as ia,i as na,n as oa,o as ua,r as ve,t as ce}from"./ttsHelpers-CaQY_kjb.js";import{n as ra,t as da}from"./models-BR4rntqB.js";var pe,ht,_e=b((()=>{A(),D(),$(),G(),Wt(),q(),pe={class:"settings-section"},ht=T({__name:"DisplaySettings",setup(B){const t=X(),s=Y(),{t:i}=I(),{brightness:o,setBrightness:v}=Jt(),w=[{label:i("settings.display.themeLight"),value:"light"},{label:i("settings.display.themeDark"),value:"dark"},{label:i("settings.display.themeSystem"),value:"system"}];async function r(u){try{await t.saveSection("display",u),s.success(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}}function c(u){const n=u;v(n),r({skin:n})}return(u,n)=>(f(),S("section",pe,[a(_,{label:e(i)("settings.display.theme"),hint:e(i)("settings.display.themeHint")},{default:l(()=>[a(e(V),{value:e(o),options:w,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.streaming"),hint:e(i)("settings.display.streamingHint")},{default:l(()=>[a(e(z),{value:e(t).display.streaming,"onUpdate:value":n[0]||(n[0]=d=>r({streaming:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.compact"),hint:e(i)("settings.display.compactHint")},{default:l(()=>[a(e(z),{value:e(t).display.compact,"onUpdate:value":n[1]||(n[1]=d=>r({compact:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.showReasoning"),hint:e(i)("settings.display.showReasoningHint")},{default:l(()=>[a(e(z),{value:e(t).display.show_reasoning,"onUpdate:value":n[2]||(n[2]=d=>r({show_reasoning:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.showCost"),hint:e(i)("settings.display.showCostHint")},{default:l(()=>[a(e(z),{value:e(t).display.show_cost,"onUpdate:value":n[3]||(n[3]=d=>r({show_cost:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.inlineDiffs"),hint:e(i)("settings.display.inlineDiffsHint")},{default:l(()=>[a(e(z),{value:e(t).display.inline_diffs,"onUpdate:value":n[4]||(n[4]=d=>r({inline_diffs:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.bellOnComplete"),hint:e(i)("settings.display.bellOnCompleteHint")},{default:l(()=>[a(e(z),{value:e(t).display.bell_on_complete,"onUpdate:value":n[5]||(n[5]=d=>r({bell_on_complete:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.busyInputMode"),hint:e(i)("settings.display.busyInputModeHint")},{default:l(()=>[a(e(z),{value:e(t).display.busy_input_mode==="interrupt","onUpdate:value":n[6]||(n[6]=d=>r({busy_input_mode:d?"interrupt":"off"}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),va=b((()=>{})),yt,ca=b((()=>{_e(),_e(),va(),R(),yt=F(ht,[["__scopeId","data-v-e5486815"]])})),me,ft,ge=b((()=>{A(),D(),$(),G(),q(),me={class:"settings-section"},ft=T({__name:"AgentSettings",setup(B){const t=X(),s=Y(),{t:i}=I(),o={};function v(r){t.updateLocal("agent",r),t.saveSection("agent",r).then(()=>{s.success(i("settings.saved"))}).catch(()=>{s.error(i("settings.saveFailed"))})}function w(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(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}},300)}return(r,c)=>(f(),S("section",me,[a(_,{label:e(i)("settings.agent.maxTurns"),hint:e(i)("settings.agent.maxTurnsHint")},{default:l(()=>[a(e(W),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":c[0]||(c[0]=u=>u!=null&&w("max_turns",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.gatewayTimeout"),hint:e(i)("settings.agent.gatewayTimeoutHint")},{default:l(()=>[a(e(W),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":c[1]||(c[1]=u=>u!=null&&w("gateway_timeout",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.restartDrainTimeout"),hint:e(i)("settings.agent.restartDrainTimeoutHint")},{default:l(()=>[a(e(W),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=u=>u!=null&&w("restart_drain_timeout",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.toolEnforcement"),hint:e(i)("settings.agent.toolEnforcementHint")},{default:l(()=>[a(e(V),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(i)("settings.agent.auto"),value:"auto"},{label:e(i)("settings.agent.always"),value:"always"},{label:e(i)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=u=>v({tool_use_enforcement:u}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),pa=b((()=>{})),bt,_a=b((()=>{ge(),ge(),pa(),R(),bt=F(ft,[["__scopeId","data-v-d06d83a7"]])})),he,wt,ye=b((()=>{A(),D(),$(),G(),q(),he={class:"settings-section"},wt=T({__name:"MemorySettings",setup(B){const t=X(),s=Y(),{t:i}=I(),o={};function v(r){t.updateLocal("memory",r),t.saveSection("memory",r).then(()=>{s.success(i("settings.saved"))}).catch(()=>{s.error(i("settings.saveFailed"))})}function w(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(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}},300)}return(r,c)=>(f(),S("section",he,[a(_,{label:e(i)("settings.memory.enabled"),hint:e(i)("settings.memory.enabledHint")},{default:l(()=>[a(e(z),{value:e(t).memory.memory_enabled,"onUpdate:value":c[0]||(c[0]=u=>v({memory_enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.userProfile"),hint:e(i)("settings.memory.userProfileHint")},{default:l(()=>[a(e(z),{value:e(t).memory.user_profile_enabled,"onUpdate:value":c[1]||(c[1]=u=>v({user_profile_enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.charLimit"),hint:e(i)("settings.memory.charLimitHint")},{default:l(()=>[a(e(W),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=u=>u!=null&&w("memory_char_limit",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.userCharLimit"),hint:e(i)("settings.memory.userCharLimitHint")},{default:l(()=>[a(e(W),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=u=>u!=null&&w("user_char_limit",u))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ma=b((()=>{})),St,ga=b((()=>{ye(),ye(),ma(),R(),St=F(wt,[["__scopeId","data-v-b2529605"]])})),fe,Ut,be=b((()=>{A(),D(),$(),G(),sa(),q(),fe={class:"settings-section"},Ut=T({__name:"SessionSettings",setup(B){const t=X(),s=aa(),i=Y(),{t:o}=I(),v={};function w(u){t.updateLocal("session_reset",u),t.saveSection("session_reset",u).then(()=>{i.success(o("settings.saved"))}).catch(()=>{i.error(o("settings.saveFailed"))})}function r(u,n){t.updateLocal("session_reset",{[u]:n}),v[u]&&clearTimeout(v[u]),v[u]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[u]:n}),i.success(o("settings.saved"))}catch{i.error(o("settings.saveFailed"))}},300)}async function c(u){try{await t.saveSection("approvals",{mode:u?"manual":"off"}),i.success(o("settings.saved"))}catch{i.error(o("settings.saveFailed"))}}return(u,n)=>(f(),S("section",fe,[a(_,{label:e(o)("settings.session.requireAuth"),hint:e(o)("settings.session.requireAuthHint")},{default:l(()=>[a(e(z),{value:e(t).approvals.mode==="manual","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.mode"),hint:e(o)("settings.session.modeHint")},{default:l(()=>[a(e(V),{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":n[0]||(n[0]=d=>w({mode:d}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.idleMinutes"),hint:e(o)("settings.session.idleMinutesHint")},{default:l(()=>[a(e(W),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=d=>d!=null&&r("idle_minutes",d))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.atHour"),hint:e(o)("settings.session.atHourHint")},{default:l(()=>[a(e(W),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=d=>d!=null&&r("at_hour",d))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.liveMonitorHumanOnly"),hint:e(o)("settings.session.liveMonitorHumanOnlyHint")},{default:l(()=>[a(e(z),{value:e(s).humanOnly,"onUpdate:value":n[3]||(n[3]=d=>e(s).setHumanOnly(d))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ha=b((()=>{})),Pt,ya=b((()=>{be(),be(),ha(),R(),Pt=F(Ut,[["__scopeId","data-v-a317c50b"]])})),we,kt,Se=b((()=>{A(),D(),$(),G(),q(),we={class:"settings-section"},kt=T({__name:"PrivacySettings",setup(B){const t=X(),s=Y(),{t:i}=I();async function o(v){try{await t.saveSection("privacy",v),s.success(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}}return(v,w)=>(f(),S("section",we,[a(_,{label:e(i)("settings.privacy.redactPii"),hint:e(i)("settings.privacy.redactPiiHint")},{default:l(()=>[a(e(z),{value:e(t).privacy.redact_pii,"onUpdate:value":w[0]||(w[0]=r=>o({redact_pii:r}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),fa=b((()=>{})),xt,ba=b((()=>{Se(),Se(),fa(),R(),xt=F(kt,[["__scopeId","data-v-43145f27"]])})),Ue,Pe,ke,xe,He,Ne,Ce,Me,Ht,ze=b((()=>{A(),D(),da(),Et(),$(),Ue={class:"settings-section"},Pe={key:0,class:"empty-hint"},ke={class:"provider-header"},xe={class:"provider-name"},He={key:0,class:"provider-fields"},Ne={class:"field-row"},Ce={key:1,class:"provider-fields"},Me={class:"field-row"},Ht=T({__name:"ModelSettings",setup(B){const{t}=I(),s=ra(),i=Y(),o=U(null),v=U({});Q(()=>{s.providers.length===0&&s.fetchProviders()});const w=n=>!s.providers.find(d=>d.provider===n)?.builtin&&n.startsWith("custom:");function r(n){if(!(n in v.value)){const d=s.providers.find(y=>y.provider===n);v.value[n]=d?.api_key||""}return v.value[n]}async function c(n){const d=r(n);if(!d.trim()){i.warning(t("settings.models.apiKeyPlaceholder"));return}o.value=n;try{await de(n,{api_key:d.trim()}),i.success(t("settings.models.saved")),await s.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{o.value=null}}async function u(n){const d=r(n);o.value=n;try{await de(n,{api_key:d.trim()}),i.success(t("settings.models.saved")),await s.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{o.value=null}}return(n,d)=>(f(),S("section",Ue,[a(e(mt),{show:e(s).loading},{default:l(()=>[e(s).providers.length===0?(f(),S("div",Pe,[a(e(Bt),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):K("",!0),(f(!0),S(j,null,gt(e(s).providers,y=>(f(),S("div",{key:y.provider,class:"provider-section"},[g("div",ke,[g("h4",xe,p(y.label),1),g("span",{class:Ot(["type-badge",w(y.provider)?"custom":"builtin"])},p(w(y.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),w(y.provider)?(f(),S("div",Ce,[g("div",Me,[a(e(x),{value:r(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":C=>v.value[y.provider]=C},null,8,["value","placeholder","onUpdate:value"]),a(e(N),{type:"primary",size:"small",loading:o.value===y.provider,onClick:C=>u(y.provider)},{default:l(()=>[k(p(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(f(),S("div",He,[g("div",Ne,[a(e(x),{value:r(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":C=>v.value[y.provider]=C},null,8,["value","placeholder","onUpdate:value"]),a(e(N),{type:"primary",size:"small",loading:o.value===y.provider,onClick:C=>c(y.provider)},{default:l(()=>[k(p(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),wa=b((()=>{})),Nt,Sa=b((()=>{ze(),ze(),wa(),R(),Nt=F(Ht,[["__scopeId","data-v-8cd750e1"]])})),Ve,Ke,Ae,Te,De,$e,Ie,Re,Fe,Be,Le,Oe,Ee,Je,We,Ye,je,Ge,Xe,Ct,qe=b((()=>{A(),D(),$(),Yt(),Ve={class:"account-settings"},Ke={class:"section-desc"},Ae={key:0,class:"action-row"},Te={class:"action-label"},De={key:1,class:"configured-section"},$e={class:"action-row"},Ie={class:"action-label"},Re={class:"action-buttons"},Fe={class:"locked-ips-section"},Be={class:"section-title"},Le={class:"action-row",style:{"margin-bottom":"12px"}},Oe={class:"action-label"},Ee={class:"action-buttons"},Je={key:0,class:"locked-list"},We={class:"locked-info"},Ye={class:"locked-ip"},je={class:"locked-badge"},Ge={class:"locked-ttl"},Xe={key:1,class:"empty-hint"},Ct=T({__name:"AccountSettings",setup(B){const{t}=I(),s=Y(),i=U(!1),o=U(null),v=U(!1),w=U(!1),r=U(""),c=U(""),u=U(""),n=U(!1),d=U(""),y=U(""),C=U(""),L=U(!1),H=U(""),M=U("");Q(async()=>{try{const P=await Zt();i.value=P.hasPasswordLogin,o.value=P.username}catch{}});async function O(){if(c.value!==u.value){s.error(t("login.passwordMismatch"));return}if(c.value.length<6){s.error(t("login.passwordTooShort"));return}v.value=!0;try{await jt(r.value,c.value),i.value=!0,o.value=r.value,w.value=!1,r.value="",c.value="",u.value="",s.success(t("login.setupSuccess"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function ne(){if(y.value!==C.value){s.error(t("login.passwordMismatch"));return}if(y.value.length<6){s.error(t("login.passwordTooShort"));return}v.value=!0;try{await ea(d.value,y.value),n.value=!1,d.value="",y.value="",C.value="",s.success(t("login.passwordChanged"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function oe(){if(M.value.trim().length<2){s.error(t("login.usernameTooShort"));return}v.value=!0;try{await qt(H.value,M.value.trim()),o.value=M.value.trim(),L.value=!1,H.value="",M.value="",s.success(t("login.usernameChanged"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function At(){v.value=!0;try{await Qt(),i.value=!1,o.value=null,s.success(t("login.passwordRemoved"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}function Tt(){r.value="",c.value="",u.value="",w.value=!0}function Dt(){d.value="",y.value="",C.value="",n.value=!0}function $t(){H.value="",M.value="",L.value=!0}const Z=U([]),se=U(!1);async function ee(){se.value=!0;try{Z.value=await Gt()}catch{}finally{se.value=!1}}async function It(P){try{await ta(P),s.success(t("settings.lockedIps.unlocked")),await ee()}catch(m){s.error(m.message||t("common.saveFailed"))}}async function Rt(){try{const P=await Xt();s.success(t("settings.lockedIps.allUnlocked",{count:P})),await ee()}catch(P){s.error(P.message||t("common.saveFailed"))}}function Ft(P){const m=Math.max(0,Math.round((P-Date.now())/6e4));return m>0?`${m} min`:t("common.expired")}return Q(()=>{ee()}),(P,m)=>(f(),S("div",Ve,[g("p",Ke,p(e(t)("login.setupDescription")),1),i.value?(f(),S("div",De,[g("div",$e,[g("span",Ie,p(e(t)("login.passwordLoginConfigured",{username:o.value})),1),g("div",Re,[a(e(N),{onClick:Dt},{default:l(()=>[k(p(e(t)("login.changePassword")),1)]),_:1}),a(e(N),{onClick:$t},{default:l(()=>[k(p(e(t)("login.changeUsername")),1)]),_:1}),a(e(ue),{onPositiveClick:At},{trigger:l(()=>[a(e(N),{type:"error",ghost:"",loading:v.value},{default:l(()=>[k(p(e(t)("login.removePasswordLogin")),1)]),_:1},8,["loading"])]),default:l(()=>[k(" "+p(e(t)("login.removeConfirm")),1)]),_:1})])])])):(f(),S("div",Ae,[g("span",Te,p(e(t)("login.passwordLoginNotConfigured")),1),a(e(N),{type:"primary",onClick:Tt},{default:l(()=>[k(p(e(t)("login.setupPassword")),1)]),_:1})])),g("div",Fe,[g("h3",Be,p(e(t)("settings.lockedIps.title")),1),g("div",Le,[g("span",Oe,p(e(t)("settings.lockedIps.count",{count:Z.value.length})),1),g("div",Ee,[a(e(N),{size:"small",loading:se.value,onClick:ee},{default:l(()=>[k(p(e(t)("common.retry")),1)]),_:1},8,["loading"]),Z.value.length>0?(f(),ae(e(ue),{key:0,onPositiveClick:Rt},{trigger:l(()=>[a(e(N),{size:"small",type:"warning"},{default:l(()=>[k(p(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:l(()=>[k(" "+p(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):K("",!0)])]),Z.value.length>0?(f(),S("div",Je,[(f(!0),S(j,null,gt(Z.value,h=>(f(),S("div",{key:h.ip+h.type,class:"locked-item"},[g("div",We,[g("span",Ye,p(h.ip),1),g("span",je,p(h.type),1),g("span",Ge,p(Ft(h.lockedUntil)),1)]),a(e(N),{size:"tiny",type:"error",ghost:"",onClick:Ma=>It(h.ip)},{default:l(()=>[k(p(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(f(),S("p",Xe,p(e(t)("settings.lockedIps.empty")),1))]),a(e(le),{show:w.value,"onUpdate:show":m[4]||(m[4]=h=>w.value=h),preset:"dialog",title:e(t)("login.setupPassword")},{action:l(()=>[a(e(N),{onClick:m[3]||(m[3]=h=>w.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:O},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.username")},{default:l(()=>[a(e(x),{value:r.value,"onUpdate:value":m[0]||(m[0]=h=>r.value=h),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newPassword")},{default:l(()=>[a(e(x),{value:c.value,"onUpdate:value":m[1]||(m[1]=h=>c.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.confirmPassword")},{default:l(()=>[a(e(x),{value:u.value,"onUpdate:value":m[2]||(m[2]=h=>u.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:te(O,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(le),{show:n.value,"onUpdate:show":m[9]||(m[9]=h=>n.value=h),preset:"dialog",title:e(t)("login.changePassword")},{action:l(()=>[a(e(N),{onClick:m[8]||(m[8]=h=>n.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:ne},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.currentPassword")},{default:l(()=>[a(e(x),{value:d.value,"onUpdate:value":m[5]||(m[5]=h=>d.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newPassword")},{default:l(()=>[a(e(x),{value:y.value,"onUpdate:value":m[6]||(m[6]=h=>y.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.confirmPassword")},{default:l(()=>[a(e(x),{value:C.value,"onUpdate:value":m[7]||(m[7]=h=>C.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:te(ne,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(le),{show:L.value,"onUpdate:show":m[13]||(m[13]=h=>L.value=h),preset:"dialog",title:e(t)("login.changeUsername")},{action:l(()=>[a(e(N),{onClick:m[12]||(m[12]=h=>L.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:oe},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.currentPassword")},{default:l(()=>[a(e(x),{value:H.value,"onUpdate:value":m[10]||(m[10]=h=>H.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newUsername")},{default:l(()=>[a(e(x),{value:M.value,"onUpdate:value":m[11]||(m[11]=h=>M.value=h),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:te(oe,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),Ua=b((()=>{})),Mt,Pa=b((()=>{qe(),qe(),Ua(),R(),Mt=F(Ct,[["__scopeId","data-v-74956266"]])})),Ze,Qe,et,tt,at,st,lt,it,nt,ot,ut,zt,rt=b((()=>{A(),D(),$(),na(),ua(),oa(),q(),Ze={class:"voice-settings"},Qe={class:"provider-hint"},et={class:"provider-hint"},tt={class:"slider-row"},at={class:"slider-value"},st={class:"slider-row"},lt={class:"slider-value"},it={class:"provider-hint"},nt={class:"test-section"},ot={class:"test-title"},ut={class:"test-row"},zt=T({__name:"VoiceSettings",setup(B){const{t}=I(),s=la(),i=ia(),o=U(t("settings.voice.testTextDefault")),v=U(!1),w=[{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"}],r=[{label:"tts-1",value:"tts-1"},{label:"tts-1-hd",value:"tts-1-hd"}],c=[{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"}],n=U([]);Q(()=>{if("speechSynthesis"in window){const H=window.speechSynthesis.getVoices();H.length&&(n.value=H),window.speechSynthesis.onvoiceschanged=()=>{n.value=window.speechSynthesis.getVoices()}}});const d=[{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"}],y=[{label:t("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:t("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"}],C=[{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"}];async function L(){const H=o.value.trim();if(H){v.value=!0;try{if(s.provider.value==="webspeech")i.stop(!1),i.speakViaBrowser("__test__",H,{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 i.openaiPlay("__test__",H,{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 i.openaiPlay("__test__",H,{baseUrl:s.customUrl.value,apiKey:s.customApiKey.value||void 0})}else if(s.provider.value==="edge")await i.openaiPlay("__test__",H,{baseUrl:"/api/tts/proxy",voice:s.edgeVoice.value,rate:ve(s.edgeRate.value),pitch:ce(s.edgePitchHz.value)});else if(s.provider.value==="mimo"){if(!s.mimoApiKey.value){console.warn("[VoiceSettings] MiMo API Key empty");return}await i.mimoPlay("__test__",H,{baseUrl:s.mimoBaseUrl.value,apiKey:s.mimoApiKey.value,model:s.mimoModel.value,voice:s.mimoVoice.value,voiceDesignDesc:s.mimoVoiceDesignDesc.value||void 0,stylePrompt:s.mimoStylePrompt.value||void 0})}}catch(M){console.error("[VoiceSettings] Test failed:",M)}finally{v.value=!1}}}return(H,M)=>(f(),S("div",Ze,[a(_,{label:e(t)("settings.voice.ttsProvider"),hint:e(t)("settings.voice.ttsProviderHint")},{default:l(()=>[a(e(V),{value:e(s).provider.value,options:w,size:"small",style:{width:"300px"},"onUpdate:value":e(s).setProvider},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).provider.value==="webspeech"?(f(),ae(_,{key:0,label:e(t)("settings.voice.webspeechVoice"),hint:e(t)("settings.voice.webspeechVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).webspeechVoice.value,size:"small",filterable:"",style:{width:"320px"},placeholder:e(t)("settings.voice.webspeechVoicePlaceholder"),"consistent-menu-width":!1,options:n.value.map(O=>({label:`${O.name} (${O.lang})`,value:O.name})),"onUpdate:value":e(s).setWebSpeechVoice},null,8,["value","placeholder","options","onUpdate:value"])]),_:1},8,["label","hint"])):K("",!0),e(s).provider.value==="openai"?(f(),S(j,{key:1},[a(_,{label:e(t)("settings.voice.openaiKey"),hint:e(t)("settings.voice.openaiKeyHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.openaiUrl"),hint:e(t)("settings.voice.openaiUrlHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.openaiModel"),hint:e(t)("settings.voice.openaiModelHint")},{default:l(()=>[a(e(V),{value:e(s).openaiModel.value,options:r,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.openaiVoice"),hint:e(t)("settings.voice.openaiVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).openaiVoice.value,options:c,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])],64)):K("",!0),e(s).provider.value==="custom"?(f(),S(j,{key:2},[g("div",Qe,p(e(t)("settings.voice.customHint")),1),a(_,{label:e(t)("settings.voice.customUrl"),hint:e(t)("settings.voice.customUrlHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.customApiKey"),hint:e(t)("settings.voice.customApiKeyHint")},{default:l(()=>[a(e(x),{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)):K("",!0),e(s).provider.value==="edge"?(f(),S(j,{key:3},[g("div",et,p(e(t)("settings.voice.edgeHint")),1),a(_,{label:e(t)("settings.voice.edgeVoice"),hint:e(t)("settings.voice.edgeVoiceHint")},{default:l(()=>[a(e(V),{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(_,{label:e(t)("settings.voice.edgeRate"),hint:e(t)("settings.voice.edgeRateHint")},{default:l(()=>[g("div",tt,[a(e(re),{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",at,p(e(s).edgeRate.value.toFixed(2))+"x ("+p(e(ve)(e(s).edgeRate.value))+")",1)])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.edgePitch"),hint:e(t)("settings.voice.edgePitchHint")},{default:l(()=>[g("div",st,[a(e(re),{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",lt,p(e(s).edgePitchHz.value>0?"+":"")+p(e(s).edgePitchHz.value)+" Hz ("+p(e(ce)(e(s).edgePitchHz.value))+")",1)])]),_:1},8,["label","hint"])],64)):K("",!0),e(s).provider.value==="mimo"?(f(),S(j,{key:4},[g("div",it,p(e(t)("settings.voice.mimoHint")),1),a(_,{label:e(t)("settings.voice.mimoApiKey"),hint:e(t)("settings.voice.mimoApiKeyHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.mimoBaseUrl"),hint:e(t)("settings.voice.mimoBaseUrlHint")},{default:l(()=>[a(e(V),{value:e(s).mimoBaseUrl.value,options:d,size:"small",filterable:"",tag:"",style:{width:"360px"},"onUpdate:value":e(s).setMimoBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.mimoModel"),hint:e(t)("settings.voice.mimoModelHint")},{default:l(()=>[a(e(V),{value:e(s).mimoModel.value,options:y,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"?(f(),ae(_,{key:0,label:e(t)("settings.voice.mimoVoice"),hint:e(t)("settings.voice.mimoVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).mimoVoice.value,options:C,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setMimoVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])):K("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voicedesign"?(f(),ae(_,{key:1,label:e(t)("settings.voice.mimoVoiceDesignPrompt"),hint:e(t)("settings.voice.mimoVoiceDesignPromptHint")},{default:l(()=>[a(e(x),{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"])):K("",!0),a(_,{label:e(t)("settings.voice.mimoStylePrompt"),hint:e(t)("settings.voice.mimoStylePromptHint")},{default:l(()=>[a(e(x),{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)):K("",!0),g("div",nt,[g("h4",ot,p(e(t)("settings.voice.testTitle")),1),g("div",ut,[a(e(x),{value:o.value,"onUpdate:value":M[0]||(M[0]=O=>o.value=O),size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.testTextPlaceholder"),disabled:v.value,onKeyup:te(L,["enter"])},null,8,["value","placeholder","disabled"]),a(e(N),{size:"small",type:"primary",loading:v.value,disabled:v.value,onClick:L},{default:l(()=>[k(p(v.value?e(t)("settings.voice.testButtonPlaying"):e(t)("settings.voice.testButton")),1)]),_:1},8,["loading","disabled"])])])]))}})})),ka=b((()=>{})),Vt,xa=b((()=>{rt(),rt(),ka(),R(),Vt=F(zt,[["__scopeId","data-v-9ae9034b"]])})),dt,vt,ct,pt,Kt,_t=b((()=>{A(),D(),$(),G(),ca(),_a(),ga(),ya(),ba(),Sa(),Pa(),xa(),dt={class:"settings-view"},vt={class:"page-header"},ct={class:"header-title"},pt={class:"settings-content"},Kt=T({__name:"SettingsView",setup(B){const t=X(),{t:s}=I();return Q(()=>{t.fetchSettings()}),(i,o)=>(f(),S("div",dt,[g("header",vt,[g("h2",ct,p(e(s)("settings.title")),1)]),g("div",pt,[a(e(mt),{show:e(t).loading||e(t).saving,size:"large",description:e(s)("common.loading")},{default:l(()=>[a(e(Lt),{type:"line",animated:""},{default:l(()=>[a(e(J),{name:"account",tab:e(s)("settings.tabs.account")},{default:l(()=>[a(Mt)]),_:1},8,["tab"]),a(e(J),{name:"display",tab:e(s)("settings.tabs.display")},{default:l(()=>[a(yt)]),_:1},8,["tab"]),a(e(J),{name:"agent",tab:e(s)("settings.tabs.agent")},{default:l(()=>[a(bt)]),_:1},8,["tab"]),a(e(J),{name:"memory",tab:e(s)("settings.tabs.memory")},{default:l(()=>[a(St)]),_:1},8,["tab"]),a(e(J),{name:"session",tab:e(s)("settings.tabs.session")},{default:l(()=>[a(Pt)]),_:1},8,["tab"]),a(e(J),{name:"privacy",tab:e(s)("settings.tabs.privacy")},{default:l(()=>[a(xt)]),_:1},8,["tab"]),a(e(J),{name:"models",tab:e(s)("settings.tabs.models")},{default:l(()=>[a(Nt)]),_:1},8,["tab"]),a(e(J),{name:"voice",tab:e(s)("settings.tabs.voice")},{default:l(()=>[a(Vt)]),_:1},8,["tab"])]),_:1})]),_:1},8,["show","description"])])]))}})})),Ha=b((()=>{})),Na,Ca=b((()=>{_t(),_t(),Ha(),R(),Na=F(Kt,[["__scopeId","data-v-f8d328ab"]])}));Ca();export{Na as default};
1
+ import{n as b}from"./rolldown-runtime-BKwlnUi0.js";import{F as N,H as Bt,Nt as U,R as x,Rt as e,S as le,U as A,Vt as p,Y as te,Z as j,_t as f,c as z,ct as T,d as ue,f as W,ht as Q,it as S,k as V,l as mt,m as ie,nt as ae,o as Lt,ot as k,p as E,rt as K,s as J,st as a,t as D,tt as g,u as re,wt as l,y as Y,yt as gt,zt as Ot}from"./ui-vendor-CsTMg6zH.js";import{n as $,r as I}from"./vue-vendor-D8zSB7VM.js";import{n as R,t as F}from"./_plugin-vue_export-helper-CrLlP_D3.js";import{l as de,o as Et}from"./app-CYaCGxZ_.js";import{C as Jt,S as Wt,o as G,s as X}from"./index-Bzb-xLYu.js";import{a as Yt,c as jt,i as Gt,l as Xt,n as qt,r as Zt,s as Qt,t as ea,u as ta}from"./auth-hbDI2OUF.js";import{n as q,t as _}from"./SettingRow-Cj9O4m9X.js";import{n as aa,t as sa}from"./session-browser-prefs-HIgWQY8T.js";import{a as la,c as ia,i as na,n as oa,o as ua,r as ve,t as ce}from"./ttsHelpers-CaQY_kjb.js";import{n as ra,t as da}from"./models-CDvVG-uE.js";var pe,ht,_e=b((()=>{A(),D(),$(),G(),Wt(),q(),pe={class:"settings-section"},ht=T({__name:"DisplaySettings",setup(B){const t=X(),s=Y(),{t:i}=I(),{brightness:o,setBrightness:v}=Jt(),w=[{label:i("settings.display.themeLight"),value:"light"},{label:i("settings.display.themeDark"),value:"dark"},{label:i("settings.display.themeSystem"),value:"system"}];async function r(u){try{await t.saveSection("display",u),s.success(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}}function c(u){const n=u;v(n),r({skin:n})}return(u,n)=>(f(),S("section",pe,[a(_,{label:e(i)("settings.display.theme"),hint:e(i)("settings.display.themeHint")},{default:l(()=>[a(e(V),{value:e(o),options:w,size:"small","consistent-menu-width":!1,class:"input-sm","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.streaming"),hint:e(i)("settings.display.streamingHint")},{default:l(()=>[a(e(z),{value:e(t).display.streaming,"onUpdate:value":n[0]||(n[0]=d=>r({streaming:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.compact"),hint:e(i)("settings.display.compactHint")},{default:l(()=>[a(e(z),{value:e(t).display.compact,"onUpdate:value":n[1]||(n[1]=d=>r({compact:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.showReasoning"),hint:e(i)("settings.display.showReasoningHint")},{default:l(()=>[a(e(z),{value:e(t).display.show_reasoning,"onUpdate:value":n[2]||(n[2]=d=>r({show_reasoning:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.showCost"),hint:e(i)("settings.display.showCostHint")},{default:l(()=>[a(e(z),{value:e(t).display.show_cost,"onUpdate:value":n[3]||(n[3]=d=>r({show_cost:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.inlineDiffs"),hint:e(i)("settings.display.inlineDiffsHint")},{default:l(()=>[a(e(z),{value:e(t).display.inline_diffs,"onUpdate:value":n[4]||(n[4]=d=>r({inline_diffs:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.bellOnComplete"),hint:e(i)("settings.display.bellOnCompleteHint")},{default:l(()=>[a(e(z),{value:e(t).display.bell_on_complete,"onUpdate:value":n[5]||(n[5]=d=>r({bell_on_complete:d}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.display.busyInputMode"),hint:e(i)("settings.display.busyInputModeHint")},{default:l(()=>[a(e(z),{value:e(t).display.busy_input_mode==="interrupt","onUpdate:value":n[6]||(n[6]=d=>r({busy_input_mode:d?"interrupt":"off"}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),va=b((()=>{})),yt,ca=b((()=>{_e(),_e(),va(),R(),yt=F(ht,[["__scopeId","data-v-e5486815"]])})),me,ft,ge=b((()=>{A(),D(),$(),G(),q(),me={class:"settings-section"},ft=T({__name:"AgentSettings",setup(B){const t=X(),s=Y(),{t:i}=I(),o={};function v(r){t.updateLocal("agent",r),t.saveSection("agent",r).then(()=>{s.success(i("settings.saved"))}).catch(()=>{s.error(i("settings.saveFailed"))})}function w(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(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}},300)}return(r,c)=>(f(),S("section",me,[a(_,{label:e(i)("settings.agent.maxTurns"),hint:e(i)("settings.agent.maxTurnsHint")},{default:l(()=>[a(e(W),{value:e(t).agent.max_turns,min:1,max:200,step:5,size:"small",class:"input-sm","onUpdate:value":c[0]||(c[0]=u=>u!=null&&w("max_turns",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.gatewayTimeout"),hint:e(i)("settings.agent.gatewayTimeoutHint")},{default:l(()=>[a(e(W),{value:e(t).agent.gateway_timeout,min:60,max:7200,step:60,size:"small",class:"input-sm","onUpdate:value":c[1]||(c[1]=u=>u!=null&&w("gateway_timeout",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.restartDrainTimeout"),hint:e(i)("settings.agent.restartDrainTimeoutHint")},{default:l(()=>[a(e(W),{value:e(t).agent.restart_drain_timeout,min:10,max:300,step:10,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=u=>u!=null&&w("restart_drain_timeout",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.agent.toolEnforcement"),hint:e(i)("settings.agent.toolEnforcementHint")},{default:l(()=>[a(e(V),{value:e(t).agent.tool_use_enforcement||"auto",options:[{label:e(i)("settings.agent.auto"),value:"auto"},{label:e(i)("settings.agent.always"),value:"always"},{label:e(i)("settings.agent.never"),value:"never"}],size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=u=>v({tool_use_enforcement:u}))},null,8,["value","options"])]),_:1},8,["label","hint"])]))}})})),pa=b((()=>{})),bt,_a=b((()=>{ge(),ge(),pa(),R(),bt=F(ft,[["__scopeId","data-v-d06d83a7"]])})),he,wt,ye=b((()=>{A(),D(),$(),G(),q(),he={class:"settings-section"},wt=T({__name:"MemorySettings",setup(B){const t=X(),s=Y(),{t:i}=I(),o={};function v(r){t.updateLocal("memory",r),t.saveSection("memory",r).then(()=>{s.success(i("settings.saved"))}).catch(()=>{s.error(i("settings.saveFailed"))})}function w(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(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}},300)}return(r,c)=>(f(),S("section",he,[a(_,{label:e(i)("settings.memory.enabled"),hint:e(i)("settings.memory.enabledHint")},{default:l(()=>[a(e(z),{value:e(t).memory.memory_enabled,"onUpdate:value":c[0]||(c[0]=u=>v({memory_enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.userProfile"),hint:e(i)("settings.memory.userProfileHint")},{default:l(()=>[a(e(z),{value:e(t).memory.user_profile_enabled,"onUpdate:value":c[1]||(c[1]=u=>v({user_profile_enabled:u}))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.charLimit"),hint:e(i)("settings.memory.charLimitHint")},{default:l(()=>[a(e(W),{value:e(t).memory.memory_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[2]||(c[2]=u=>u!=null&&w("memory_char_limit",u))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(i)("settings.memory.userCharLimit"),hint:e(i)("settings.memory.userCharLimitHint")},{default:l(()=>[a(e(W),{value:e(t).memory.user_char_limit,min:100,max:1e4,step:100,size:"small",class:"input-sm","onUpdate:value":c[3]||(c[3]=u=>u!=null&&w("user_char_limit",u))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ma=b((()=>{})),St,ga=b((()=>{ye(),ye(),ma(),R(),St=F(wt,[["__scopeId","data-v-b2529605"]])})),fe,Ut,be=b((()=>{A(),D(),$(),G(),sa(),q(),fe={class:"settings-section"},Ut=T({__name:"SessionSettings",setup(B){const t=X(),s=aa(),i=Y(),{t:o}=I(),v={};function w(u){t.updateLocal("session_reset",u),t.saveSection("session_reset",u).then(()=>{i.success(o("settings.saved"))}).catch(()=>{i.error(o("settings.saveFailed"))})}function r(u,n){t.updateLocal("session_reset",{[u]:n}),v[u]&&clearTimeout(v[u]),v[u]=setTimeout(async()=>{try{await t.saveSection("session_reset",{[u]:n}),i.success(o("settings.saved"))}catch{i.error(o("settings.saveFailed"))}},300)}async function c(u){try{await t.saveSection("approvals",{mode:u?"manual":"off"}),i.success(o("settings.saved"))}catch{i.error(o("settings.saveFailed"))}}return(u,n)=>(f(),S("section",fe,[a(_,{label:e(o)("settings.session.requireAuth"),hint:e(o)("settings.session.requireAuthHint")},{default:l(()=>[a(e(z),{value:e(t).approvals.mode==="manual","onUpdate:value":c},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.mode"),hint:e(o)("settings.session.modeHint")},{default:l(()=>[a(e(V),{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":n[0]||(n[0]=d=>w({mode:d}))},null,8,["value","options"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.idleMinutes"),hint:e(o)("settings.session.idleMinutesHint")},{default:l(()=>[a(e(W),{value:e(t).sessionReset.idle_minutes,min:10,max:10080,step:30,size:"small",class:"input-sm","onUpdate:value":n[1]||(n[1]=d=>d!=null&&r("idle_minutes",d))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.atHour"),hint:e(o)("settings.session.atHourHint")},{default:l(()=>[a(e(W),{value:e(t).sessionReset.at_hour,min:0,max:23,step:1,size:"small",class:"input-sm","onUpdate:value":n[2]||(n[2]=d=>d!=null&&r("at_hour",d))},null,8,["value"])]),_:1},8,["label","hint"]),a(_,{label:e(o)("settings.session.liveMonitorHumanOnly"),hint:e(o)("settings.session.liveMonitorHumanOnlyHint")},{default:l(()=>[a(e(z),{value:e(s).humanOnly,"onUpdate:value":n[3]||(n[3]=d=>e(s).setHumanOnly(d))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),ha=b((()=>{})),Pt,ya=b((()=>{be(),be(),ha(),R(),Pt=F(Ut,[["__scopeId","data-v-a317c50b"]])})),we,kt,Se=b((()=>{A(),D(),$(),G(),q(),we={class:"settings-section"},kt=T({__name:"PrivacySettings",setup(B){const t=X(),s=Y(),{t:i}=I();async function o(v){try{await t.saveSection("privacy",v),s.success(i("settings.saved"))}catch{s.error(i("settings.saveFailed"))}}return(v,w)=>(f(),S("section",we,[a(_,{label:e(i)("settings.privacy.redactPii"),hint:e(i)("settings.privacy.redactPiiHint")},{default:l(()=>[a(e(z),{value:e(t).privacy.redact_pii,"onUpdate:value":w[0]||(w[0]=r=>o({redact_pii:r}))},null,8,["value"])]),_:1},8,["label","hint"])]))}})})),fa=b((()=>{})),xt,ba=b((()=>{Se(),Se(),fa(),R(),xt=F(kt,[["__scopeId","data-v-43145f27"]])})),Ue,Pe,ke,xe,He,Ne,Ce,Me,Ht,ze=b((()=>{A(),D(),da(),Et(),$(),Ue={class:"settings-section"},Pe={key:0,class:"empty-hint"},ke={class:"provider-header"},xe={class:"provider-name"},He={key:0,class:"provider-fields"},Ne={class:"field-row"},Ce={key:1,class:"provider-fields"},Me={class:"field-row"},Ht=T({__name:"ModelSettings",setup(B){const{t}=I(),s=ra(),i=Y(),o=U(null),v=U({});Q(()=>{s.providers.length===0&&s.fetchProviders()});const w=n=>!s.providers.find(d=>d.provider===n)?.builtin&&n.startsWith("custom:");function r(n){if(!(n in v.value)){const d=s.providers.find(y=>y.provider===n);v.value[n]=d?.api_key||""}return v.value[n]}async function c(n){const d=r(n);if(!d.trim()){i.warning(t("settings.models.apiKeyPlaceholder"));return}o.value=n;try{await de(n,{api_key:d.trim()}),i.success(t("settings.models.saved")),await s.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{o.value=null}}async function u(n){const d=r(n);o.value=n;try{await de(n,{api_key:d.trim()}),i.success(t("settings.models.saved")),await s.fetchProviders()}catch(y){i.error(y.message||t("settings.models.saveFailed"))}finally{o.value=null}}return(n,d)=>(f(),S("section",Ue,[a(e(mt),{show:e(s).loading},{default:l(()=>[e(s).providers.length===0?(f(),S("div",Pe,[a(e(Bt),{description:e(t)("settings.models.noProviders")},null,8,["description"])])):K("",!0),(f(!0),S(j,null,gt(e(s).providers,y=>(f(),S("div",{key:y.provider,class:"provider-section"},[g("div",ke,[g("h4",xe,p(y.label),1),g("span",{class:Ot(["type-badge",w(y.provider)?"custom":"builtin"])},p(w(y.provider)?e(t)("models.customType"):e(t)("models.builtIn")),3)]),w(y.provider)?(f(),S("div",Ce,[g("div",Me,[a(e(x),{value:r(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":C=>v.value[y.provider]=C},null,8,["value","placeholder","onUpdate:value"]),a(e(N),{type:"primary",size:"small",loading:o.value===y.provider,onClick:C=>u(y.provider)},{default:l(()=>[k(p(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])])):(f(),S("div",He,[g("div",Ne,[a(e(x),{value:r(y.provider),type:"password","show-password-on":"click",placeholder:e(t)("settings.models.apiKeyPlaceholder"),autocomplete:"off","onUpdate:value":C=>v.value[y.provider]=C},null,8,["value","placeholder","onUpdate:value"]),a(e(N),{type:"primary",size:"small",loading:o.value===y.provider,onClick:C=>c(y.provider)},{default:l(()=>[k(p(e(t)("settings.models.save")),1)]),_:1},8,["loading","onClick"])])]))]))),128))]),_:1},8,["show"])]))}})})),wa=b((()=>{})),Nt,Sa=b((()=>{ze(),ze(),wa(),R(),Nt=F(Ht,[["__scopeId","data-v-8cd750e1"]])})),Ve,Ke,Ae,Te,De,$e,Ie,Re,Fe,Be,Le,Oe,Ee,Je,We,Ye,je,Ge,Xe,Ct,qe=b((()=>{A(),D(),$(),Yt(),Ve={class:"account-settings"},Ke={class:"section-desc"},Ae={key:0,class:"action-row"},Te={class:"action-label"},De={key:1,class:"configured-section"},$e={class:"action-row"},Ie={class:"action-label"},Re={class:"action-buttons"},Fe={class:"locked-ips-section"},Be={class:"section-title"},Le={class:"action-row",style:{"margin-bottom":"12px"}},Oe={class:"action-label"},Ee={class:"action-buttons"},Je={key:0,class:"locked-list"},We={class:"locked-info"},Ye={class:"locked-ip"},je={class:"locked-badge"},Ge={class:"locked-ttl"},Xe={key:1,class:"empty-hint"},Ct=T({__name:"AccountSettings",setup(B){const{t}=I(),s=Y(),i=U(!1),o=U(null),v=U(!1),w=U(!1),r=U(""),c=U(""),u=U(""),n=U(!1),d=U(""),y=U(""),C=U(""),L=U(!1),H=U(""),M=U("");Q(async()=>{try{const P=await Zt();i.value=P.hasPasswordLogin,o.value=P.username}catch{}});async function O(){if(c.value!==u.value){s.error(t("login.passwordMismatch"));return}if(c.value.length<6){s.error(t("login.passwordTooShort"));return}v.value=!0;try{await jt(r.value,c.value),i.value=!0,o.value=r.value,w.value=!1,r.value="",c.value="",u.value="",s.success(t("login.setupSuccess"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function ne(){if(y.value!==C.value){s.error(t("login.passwordMismatch"));return}if(y.value.length<6){s.error(t("login.passwordTooShort"));return}v.value=!0;try{await ea(d.value,y.value),n.value=!1,d.value="",y.value="",C.value="",s.success(t("login.passwordChanged"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function oe(){if(M.value.trim().length<2){s.error(t("login.usernameTooShort"));return}v.value=!0;try{await qt(H.value,M.value.trim()),o.value=M.value.trim(),L.value=!1,H.value="",M.value="",s.success(t("login.usernameChanged"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}async function At(){v.value=!0;try{await Qt(),i.value=!1,o.value=null,s.success(t("login.passwordRemoved"))}catch(P){s.error(P.message||t("common.saveFailed"))}finally{v.value=!1}}function Tt(){r.value="",c.value="",u.value="",w.value=!0}function Dt(){d.value="",y.value="",C.value="",n.value=!0}function $t(){H.value="",M.value="",L.value=!0}const Z=U([]),se=U(!1);async function ee(){se.value=!0;try{Z.value=await Gt()}catch{}finally{se.value=!1}}async function It(P){try{await ta(P),s.success(t("settings.lockedIps.unlocked")),await ee()}catch(m){s.error(m.message||t("common.saveFailed"))}}async function Rt(){try{const P=await Xt();s.success(t("settings.lockedIps.allUnlocked",{count:P})),await ee()}catch(P){s.error(P.message||t("common.saveFailed"))}}function Ft(P){const m=Math.max(0,Math.round((P-Date.now())/6e4));return m>0?`${m} min`:t("common.expired")}return Q(()=>{ee()}),(P,m)=>(f(),S("div",Ve,[g("p",Ke,p(e(t)("login.setupDescription")),1),i.value?(f(),S("div",De,[g("div",$e,[g("span",Ie,p(e(t)("login.passwordLoginConfigured",{username:o.value})),1),g("div",Re,[a(e(N),{onClick:Dt},{default:l(()=>[k(p(e(t)("login.changePassword")),1)]),_:1}),a(e(N),{onClick:$t},{default:l(()=>[k(p(e(t)("login.changeUsername")),1)]),_:1}),a(e(ue),{onPositiveClick:At},{trigger:l(()=>[a(e(N),{type:"error",ghost:"",loading:v.value},{default:l(()=>[k(p(e(t)("login.removePasswordLogin")),1)]),_:1},8,["loading"])]),default:l(()=>[k(" "+p(e(t)("login.removeConfirm")),1)]),_:1})])])])):(f(),S("div",Ae,[g("span",Te,p(e(t)("login.passwordLoginNotConfigured")),1),a(e(N),{type:"primary",onClick:Tt},{default:l(()=>[k(p(e(t)("login.setupPassword")),1)]),_:1})])),g("div",Fe,[g("h3",Be,p(e(t)("settings.lockedIps.title")),1),g("div",Le,[g("span",Oe,p(e(t)("settings.lockedIps.count",{count:Z.value.length})),1),g("div",Ee,[a(e(N),{size:"small",loading:se.value,onClick:ee},{default:l(()=>[k(p(e(t)("common.retry")),1)]),_:1},8,["loading"]),Z.value.length>0?(f(),ae(e(ue),{key:0,onPositiveClick:Rt},{trigger:l(()=>[a(e(N),{size:"small",type:"warning"},{default:l(()=>[k(p(e(t)("settings.lockedIps.unlockAll")),1)]),_:1})]),default:l(()=>[k(" "+p(e(t)("settings.lockedIps.unlockAllConfirm")),1)]),_:1})):K("",!0)])]),Z.value.length>0?(f(),S("div",Je,[(f(!0),S(j,null,gt(Z.value,h=>(f(),S("div",{key:h.ip+h.type,class:"locked-item"},[g("div",We,[g("span",Ye,p(h.ip),1),g("span",je,p(h.type),1),g("span",Ge,p(Ft(h.lockedUntil)),1)]),a(e(N),{size:"tiny",type:"error",ghost:"",onClick:Ma=>It(h.ip)},{default:l(()=>[k(p(e(t)("settings.lockedIps.unlock")),1)]),_:1},8,["onClick"])]))),128))])):(f(),S("p",Xe,p(e(t)("settings.lockedIps.empty")),1))]),a(e(le),{show:w.value,"onUpdate:show":m[4]||(m[4]=h=>w.value=h),preset:"dialog",title:e(t)("login.setupPassword")},{action:l(()=>[a(e(N),{onClick:m[3]||(m[3]=h=>w.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:O},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.username")},{default:l(()=>[a(e(x),{value:r.value,"onUpdate:value":m[0]||(m[0]=h=>r.value=h),placeholder:e(t)("login.usernamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newPassword")},{default:l(()=>[a(e(x),{value:c.value,"onUpdate:value":m[1]||(m[1]=h=>c.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.passwordPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.confirmPassword")},{default:l(()=>[a(e(x),{value:u.value,"onUpdate:value":m[2]||(m[2]=h=>u.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:te(O,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(le),{show:n.value,"onUpdate:show":m[9]||(m[9]=h=>n.value=h),preset:"dialog",title:e(t)("login.changePassword")},{action:l(()=>[a(e(N),{onClick:m[8]||(m[8]=h=>n.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:ne},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.currentPassword")},{default:l(()=>[a(e(x),{value:d.value,"onUpdate:value":m[5]||(m[5]=h=>d.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newPassword")},{default:l(()=>[a(e(x),{value:y.value,"onUpdate:value":m[6]||(m[6]=h=>y.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.newPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.confirmPassword")},{default:l(()=>[a(e(x),{value:C.value,"onUpdate:value":m[7]||(m[7]=h=>C.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.confirmPassword"),onKeyup:te(ne,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),a(e(le),{show:L.value,"onUpdate:show":m[13]||(m[13]=h=>L.value=h),preset:"dialog",title:e(t)("login.changeUsername")},{action:l(()=>[a(e(N),{onClick:m[12]||(m[12]=h=>L.value=!1)},{default:l(()=>[k(p(e(t)("common.cancel")),1)]),_:1}),a(e(N),{type:"primary",loading:v.value,onClick:oe},{default:l(()=>[k(p(e(t)("common.save")),1)]),_:1},8,["loading"])]),default:l(()=>[a(e(ie),{"label-placement":"top"},{default:l(()=>[a(e(E),{label:e(t)("login.currentPassword")},{default:l(()=>[a(e(x),{value:H.value,"onUpdate:value":m[10]||(m[10]=h=>H.value=h),type:"password","show-password-on":"click",placeholder:e(t)("login.currentPassword")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(e(E),{label:e(t)("login.newUsername")},{default:l(()=>[a(e(x),{value:M.value,"onUpdate:value":m[11]||(m[11]=h=>M.value=h),placeholder:e(t)("login.usernamePlaceholder"),onKeyup:te(oe,["enter"])},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])]))}})})),Ua=b((()=>{})),Mt,Pa=b((()=>{qe(),qe(),Ua(),R(),Mt=F(Ct,[["__scopeId","data-v-74956266"]])})),Ze,Qe,et,tt,at,st,lt,it,nt,ot,ut,zt,rt=b((()=>{A(),D(),$(),na(),ua(),oa(),q(),Ze={class:"voice-settings"},Qe={class:"provider-hint"},et={class:"provider-hint"},tt={class:"slider-row"},at={class:"slider-value"},st={class:"slider-row"},lt={class:"slider-value"},it={class:"provider-hint"},nt={class:"test-section"},ot={class:"test-title"},ut={class:"test-row"},zt=T({__name:"VoiceSettings",setup(B){const{t}=I(),s=la(),i=ia(),o=U(t("settings.voice.testTextDefault")),v=U(!1),w=[{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"}],r=[{label:"tts-1",value:"tts-1"},{label:"tts-1-hd",value:"tts-1-hd"}],c=[{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"}],n=U([]);Q(()=>{if("speechSynthesis"in window){const H=window.speechSynthesis.getVoices();H.length&&(n.value=H),window.speechSynthesis.onvoiceschanged=()=>{n.value=window.speechSynthesis.getVoices()}}});const d=[{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"}],y=[{label:t("settings.voice.mimoModelPreset"),value:"mimo-v2.5-tts"},{label:t("settings.voice.mimoModelVoiceDesign"),value:"mimo-v2.5-tts-voicedesign"}],C=[{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"}];async function L(){const H=o.value.trim();if(H){v.value=!0;try{if(s.provider.value==="webspeech")i.stop(!1),i.speakViaBrowser("__test__",H,{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 i.openaiPlay("__test__",H,{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 i.openaiPlay("__test__",H,{baseUrl:s.customUrl.value,apiKey:s.customApiKey.value||void 0})}else if(s.provider.value==="edge")await i.openaiPlay("__test__",H,{baseUrl:"/api/tts/proxy",voice:s.edgeVoice.value,rate:ve(s.edgeRate.value),pitch:ce(s.edgePitchHz.value)});else if(s.provider.value==="mimo"){if(!s.mimoApiKey.value){console.warn("[VoiceSettings] MiMo API Key empty");return}await i.mimoPlay("__test__",H,{baseUrl:s.mimoBaseUrl.value,apiKey:s.mimoApiKey.value,model:s.mimoModel.value,voice:s.mimoVoice.value,voiceDesignDesc:s.mimoVoiceDesignDesc.value||void 0,stylePrompt:s.mimoStylePrompt.value||void 0})}}catch(M){console.error("[VoiceSettings] Test failed:",M)}finally{v.value=!1}}}return(H,M)=>(f(),S("div",Ze,[a(_,{label:e(t)("settings.voice.ttsProvider"),hint:e(t)("settings.voice.ttsProviderHint")},{default:l(()=>[a(e(V),{value:e(s).provider.value,options:w,size:"small",style:{width:"300px"},"onUpdate:value":e(s).setProvider},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),e(s).provider.value==="webspeech"?(f(),ae(_,{key:0,label:e(t)("settings.voice.webspeechVoice"),hint:e(t)("settings.voice.webspeechVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).webspeechVoice.value,size:"small",filterable:"",style:{width:"320px"},placeholder:e(t)("settings.voice.webspeechVoicePlaceholder"),"consistent-menu-width":!1,options:n.value.map(O=>({label:`${O.name} (${O.lang})`,value:O.name})),"onUpdate:value":e(s).setWebSpeechVoice},null,8,["value","placeholder","options","onUpdate:value"])]),_:1},8,["label","hint"])):K("",!0),e(s).provider.value==="openai"?(f(),S(j,{key:1},[a(_,{label:e(t)("settings.voice.openaiKey"),hint:e(t)("settings.voice.openaiKeyHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.openaiUrl"),hint:e(t)("settings.voice.openaiUrlHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.openaiModel"),hint:e(t)("settings.voice.openaiModelHint")},{default:l(()=>[a(e(V),{value:e(s).openaiModel.value,options:r,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiModel},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.openaiVoice"),hint:e(t)("settings.voice.openaiVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).openaiVoice.value,options:c,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setOpenaiVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])],64)):K("",!0),e(s).provider.value==="custom"?(f(),S(j,{key:2},[g("div",Qe,p(e(t)("settings.voice.customHint")),1),a(_,{label:e(t)("settings.voice.customUrl"),hint:e(t)("settings.voice.customUrlHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.customApiKey"),hint:e(t)("settings.voice.customApiKeyHint")},{default:l(()=>[a(e(x),{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)):K("",!0),e(s).provider.value==="edge"?(f(),S(j,{key:3},[g("div",et,p(e(t)("settings.voice.edgeHint")),1),a(_,{label:e(t)("settings.voice.edgeVoice"),hint:e(t)("settings.voice.edgeVoiceHint")},{default:l(()=>[a(e(V),{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(_,{label:e(t)("settings.voice.edgeRate"),hint:e(t)("settings.voice.edgeRateHint")},{default:l(()=>[g("div",tt,[a(e(re),{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",at,p(e(s).edgeRate.value.toFixed(2))+"x ("+p(e(ve)(e(s).edgeRate.value))+")",1)])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.edgePitch"),hint:e(t)("settings.voice.edgePitchHint")},{default:l(()=>[g("div",st,[a(e(re),{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",lt,p(e(s).edgePitchHz.value>0?"+":"")+p(e(s).edgePitchHz.value)+" Hz ("+p(e(ce)(e(s).edgePitchHz.value))+")",1)])]),_:1},8,["label","hint"])],64)):K("",!0),e(s).provider.value==="mimo"?(f(),S(j,{key:4},[g("div",it,p(e(t)("settings.voice.mimoHint")),1),a(_,{label:e(t)("settings.voice.mimoApiKey"),hint:e(t)("settings.voice.mimoApiKeyHint")},{default:l(()=>[a(e(x),{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(_,{label:e(t)("settings.voice.mimoBaseUrl"),hint:e(t)("settings.voice.mimoBaseUrlHint")},{default:l(()=>[a(e(V),{value:e(s).mimoBaseUrl.value,options:d,size:"small",filterable:"",tag:"",style:{width:"360px"},"onUpdate:value":e(s).setMimoBaseUrl},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"]),a(_,{label:e(t)("settings.voice.mimoModel"),hint:e(t)("settings.voice.mimoModelHint")},{default:l(()=>[a(e(V),{value:e(s).mimoModel.value,options:y,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"?(f(),ae(_,{key:0,label:e(t)("settings.voice.mimoVoice"),hint:e(t)("settings.voice.mimoVoiceHint")},{default:l(()=>[a(e(V),{value:e(s).mimoVoice.value,options:C,size:"small",style:{width:"200px"},"onUpdate:value":e(s).setMimoVoice},null,8,["value","onUpdate:value"])]),_:1},8,["label","hint"])):K("",!0),e(s).mimoModel.value==="mimo-v2.5-tts-voicedesign"?(f(),ae(_,{key:1,label:e(t)("settings.voice.mimoVoiceDesignPrompt"),hint:e(t)("settings.voice.mimoVoiceDesignPromptHint")},{default:l(()=>[a(e(x),{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"])):K("",!0),a(_,{label:e(t)("settings.voice.mimoStylePrompt"),hint:e(t)("settings.voice.mimoStylePromptHint")},{default:l(()=>[a(e(x),{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)):K("",!0),g("div",nt,[g("h4",ot,p(e(t)("settings.voice.testTitle")),1),g("div",ut,[a(e(x),{value:o.value,"onUpdate:value":M[0]||(M[0]=O=>o.value=O),size:"small",style:{width:"360px"},placeholder:e(t)("settings.voice.testTextPlaceholder"),disabled:v.value,onKeyup:te(L,["enter"])},null,8,["value","placeholder","disabled"]),a(e(N),{size:"small",type:"primary",loading:v.value,disabled:v.value,onClick:L},{default:l(()=>[k(p(v.value?e(t)("settings.voice.testButtonPlaying"):e(t)("settings.voice.testButton")),1)]),_:1},8,["loading","disabled"])])])]))}})})),ka=b((()=>{})),Vt,xa=b((()=>{rt(),rt(),ka(),R(),Vt=F(zt,[["__scopeId","data-v-9ae9034b"]])})),dt,vt,ct,pt,Kt,_t=b((()=>{A(),D(),$(),G(),ca(),_a(),ga(),ya(),ba(),Sa(),Pa(),xa(),dt={class:"settings-view"},vt={class:"page-header"},ct={class:"header-title"},pt={class:"settings-content"},Kt=T({__name:"SettingsView",setup(B){const t=X(),{t:s}=I();return Q(()=>{t.fetchSettings()}),(i,o)=>(f(),S("div",dt,[g("header",vt,[g("h2",ct,p(e(s)("settings.title")),1)]),g("div",pt,[a(e(mt),{show:e(t).loading||e(t).saving,size:"large",description:e(s)("common.loading")},{default:l(()=>[a(e(Lt),{type:"line",animated:""},{default:l(()=>[a(e(J),{name:"account",tab:e(s)("settings.tabs.account")},{default:l(()=>[a(Mt)]),_:1},8,["tab"]),a(e(J),{name:"display",tab:e(s)("settings.tabs.display")},{default:l(()=>[a(yt)]),_:1},8,["tab"]),a(e(J),{name:"agent",tab:e(s)("settings.tabs.agent")},{default:l(()=>[a(bt)]),_:1},8,["tab"]),a(e(J),{name:"memory",tab:e(s)("settings.tabs.memory")},{default:l(()=>[a(St)]),_:1},8,["tab"]),a(e(J),{name:"session",tab:e(s)("settings.tabs.session")},{default:l(()=>[a(Pt)]),_:1},8,["tab"]),a(e(J),{name:"privacy",tab:e(s)("settings.tabs.privacy")},{default:l(()=>[a(xt)]),_:1},8,["tab"]),a(e(J),{name:"models",tab:e(s)("settings.tabs.models")},{default:l(()=>[a(Nt)]),_:1},8,["tab"]),a(e(J),{name:"voice",tab:e(s)("settings.tabs.voice")},{default:l(()=>[a(Vt)]),_:1},8,["tab"])]),_:1})]),_:1},8,["show","description"])])]))}})})),Ha=b((()=>{})),Na,Ca=b((()=>{_t(),_t(),Ha(),R(),Na=F(Kt,[["__scopeId","data-v-f8d328ab"]])}));Ca();export{Na as default};
@@ -1 +1 @@
1
- import{n as q}from"./rolldown-runtime-BKwlnUi0.js";import{Bt as f,F as E,Nt as p,Rt as i,U as ll,Vt as a,Z as m,_t as n,ct as sl,et as v,ht as al,it as r,ot as V,rt as F,st as H,t as tl,tt as e,wt as K,yt as b,zt as O}from"./ui-vendor-CsTMg6zH.js";import{n as il,r as ol}from"./vue-vendor-D8zSB7VM.js";import{n as nl,t as rl}from"./_plugin-vue_export-helper-ZIsfSgrY.js";import{i as ul,o as dl}from"./skills-BZYoszrI.js";var Z,j,G,J,Q,W,X,Y,ee,le,se,ae,te,ie,oe,ne,re,ue,de,ce,_e,ve,he,ke,me,pe,ge,ye,fe,be,Ue,Se,we,xe,Ve,Ce,Me,De,Fe,$e,Be,qe,ze,Ae,Le,Ne,Te,Ie,Pe,Re,$,B,He,Ee=q((()=>{ll(),il(),tl(),dl(),Z={class:"skills-usage-view"},j={class:"page-header"},G={class:"header-text"},J={class:"header-title"},Q={class:"header-subtitle"},W={class:"skills-usage-toolbar"},X=["aria-label"],Y={class:"skills-usage-content"},ee={key:0,class:"skills-usage-state error"},le={key:1,class:"skills-usage-state"},se={key:0,class:"inline-error"},ae={class:"overview-grid"},te={class:"panel-header"},ie={key:0,class:"skills-usage-state compact"},oe={class:"skill-bar-chart"},ne=["onMouseenter","onFocusin","onMouseleave","onFocusout"],re={class:"skill-bar-track"},ue=["data-skill"],de={class:"tooltip-date"},ce={class:"tooltip-row total"},_e={class:"bar-dates"},ve=["aria-label"],he={class:"summary-card primary"},ke={class:"summary-label"},me={class:"summary-value"},pe={class:"summary-card"},ge={class:"summary-label"},ye={class:"summary-value"},fe={class:"summary-card"},be={class:"summary-label"},Ue={class:"summary-value"},Se={class:"summary-card"},we={class:"summary-label"},xe={class:"summary-value"},Ve={class:"usage-panel"},Ce={class:"panel-header"},Me={key:0,class:"skills-usage-state compact"},De=["aria-label"],Fe={class:"skills-row table-head",role:"row"},$e={role:"columnheader"},Be={role:"columnheader"},qe={role:"columnheader"},ze={role:"columnheader"},Ae={role:"columnheader"},Le={class:"skill-name",role:"cell"},Ne={role:"cell"},Te={role:"cell"},Ie={class:"share-cell",role:"cell"},Pe={class:"share-bar"},Re={class:"last-used",role:"cell"},$=6,B="#5b6b84",He=sl({__name:"SkillsUsageView",setup(hl){const{t}=ol(),Ke=[7,30,90,365],z=["#2f6eea","#f26d3d","#f49a5c","#9aa7ff","#8f2c8f","#00c2d1"],h=p(7),g=p(!1),k=p(""),U=p({});let S=0;const A={},o=v(()=>U.value[h.value]??null),L=v(()=>(o.value?.summary.total_skill_actions??0)>0),Oe=v(()=>Math.max(...(o.value?.by_day??[]).map(s=>s.total_count),1)),Ze=v(()=>g.value&&!!o.value),w=p(null),x=p(null),y=v(()=>o.value?.by_day.find(s=>s.date===w.value)??null),je=v(()=>y.value?I(y.value):[]),Ge=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"}),C=v(()=>(o.value?.top_skills??[]).slice(0,$)),Je=v(()=>new Set(C.value.map(s=>s.skill)));function N(s){return`${s.toFixed(1)}%`}function Qe(s){return s?new Date(s*1e3).toLocaleString():"—"}function We(s){return`${Math.max(2,s/Oe.value*100)}%`}function Xe(s){return Math.max(s,0)}function T(s){return s.total_count||s.view_count+s.manage_count}function Ye(){const s=Math.max((o.value?.top_skills.length??0)-$,0);return s>0?`${t("skillsUsage.otherSkills")} (+${s})`:t("skillsUsage.otherSkills")}function M(s){const d=C.value.findIndex(l=>l.skill===s);return d>=0?z[d%z.length]:B}function I(s){const d=s.skills??[],l=new Map(d.map(u=>[u.skill,T(u)])),_=C.value.map(u=>({key:u.skill,label:u.skill,count:l.get(u.skill)??0,color:M(u.skill)})).filter(u=>u.count>0),c=d.filter(u=>!Je.value.has(u.skill)).reduce((u,el)=>u+T(el),0);return c>0&&_.push({key:"other-skills",label:Ye(),count:c,color:B}),_}function P(s,d){w.value=s.date,x.value=d}function R(s){w.value===s.date&&(w.value=null,x.value=null)}async function D(s=h.value,d=!1){h.value=s;const l=++S;A[s]=l,g.value=!0,(!U.value[s]||d)&&(k.value="");try{const _=await ul(s);A[s]===l&&(U.value={...U.value,[s]:_}),l===S&&(k.value="")}catch(_){l===S&&(k.value=_?.message||t("skillsUsage.loadFailed"))}finally{l===S&&(g.value=!1)}}return al(()=>{D(7)}),(s,d)=>(n(),r("div",Z,[e("header",j,[e("div",G,[e("h2",J,a(i(t)("skillsUsage.title")),1),e("p",Q,a(i(t)("skillsUsage.subtitle")),1)]),e("div",W,[e("div",{class:"period-selector",role:"group","aria-label":i(t)("skillsUsage.periodSelector")},[(n(),r(m,null,b(Ke,l=>H(i(E),{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:_=>D(l)},{default:K(()=>[V(a(i(t)("skillsUsage.periodLabel",{days:l})),1)]),_:2},1032,["secondary","quaternary","type","aria-pressed","onClick"])),64))],8,X),H(i(E),{size:"small",quaternary:"",loading:g.value,onClick:d[0]||(d[0]=l=>D(h.value,!0))},{default:K(()=>[V(a(i(t)("skillsUsage.refresh")),1)]),_:1},8,["loading"])])]),e("div",Y,[k.value&&!o.value?(n(),r("div",ee,a(k.value),1)):g.value&&!o.value?(n(),r("div",le,a(i(t)("common.loading")),1)):o.value?(n(),r(m,{key:2},[k.value?(n(),r("div",se,a(k.value),1)):F("",!0),e("section",ae,[e("div",{class:O(["usage-panel chart-panel",{"is-refreshing":Ze.value}]),"data-testid":"skills-usage-chart"},[e("div",te,[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?(n(),r(m,{key:1},[e("div",oe,[(n(!0),r(m,null,b(o.value.by_day,(l,_)=>(n(),r("div",{key:l.date,class:"skill-bar-col",tabindex:"0",onMouseenter:c=>P(l,_),onFocusin:c=>P(l,_),onMouseleave:c=>R(l),onFocusout:c=>R(l)},[e("div",re,[e("div",{class:"skill-bar-fill",style:f({height:We(l.total_count)})},[(n(!0),r(m,null,b(I(l),c=>(n(),r("div",{key:c.key,class:"skill-bar-segment","data-skill":c.key,style:f({flex:Xe(c.count),background:c.color})},null,12,ue))),128))],4)])],40,ne))),128))]),y.value?(n(),r("div",{key:0,class:O(["floating-tooltip",Ge.value])},[e("div",de,a(y.value.date),1),(n(!0),r(m,null,b(je.value,l=>(n(),r("div",{key:l.key,class:"tooltip-row"},[e("i",{class:"tooltip-dot",style:f({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)):F("",!0),e("div",_e,[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)):(n(),r("div",ie,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",he,[e("div",ke,a(i(t)("skillsUsage.totalActions")),1),e("div",me,a(o.value.summary.total_skill_actions),1)]),e("div",pe,[e("div",ge,a(i(t)("skillsUsage.loads")),1),e("div",ye,a(o.value.summary.total_skill_loads),1)]),e("div",fe,[e("div",be,a(i(t)("skillsUsage.edits")),1),e("div",Ue,a(o.value.summary.total_skill_edits),1)]),e("div",Se,[e("div",we,a(i(t)("skillsUsage.distinctSkills")),1),e("div",xe,a(o.value.summary.distinct_skills_used),1)])],8,ve)]),e("section",Ve,[e("div",Ce,[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?(n(),r("div",{key:1,class:"skills-table",role:"table","aria-label":i(t)("skillsUsage.topSkills")},[e("div",Fe,[e("span",$e,a(i(t)("skillsUsage.skill")),1),e("span",Be,a(i(t)("skillsUsage.loads")),1),e("span",qe,a(i(t)("skillsUsage.edits")),1),e("span",ze,a(i(t)("skillsUsage.share")),1),e("span",Ae,a(i(t)("skillsUsage.lastUsed")),1)]),(n(!0),r(m,null,b(o.value.top_skills,l=>(n(),r("div",{key:l.skill,class:"skills-row",role:"row"},[e("span",Le,[e("i",{class:"skill-color-dot",style:f({background:M(l.skill)})},null,4),V(" "+a(l.skill),1)]),e("span",Ne,a(l.view_count),1),e("span",Te,a(l.manage_count),1),e("span",Ie,[e("span",Pe,[e("span",{style:f({width:N(l.percentage),background:M(l.skill)})},null,4)]),V(" "+a(N(l.percentage)),1)]),e("span",Re,a(Qe(l.last_used_at)),1)]))),128))],8,De)):(n(),r("div",Me,a(i(t)("skillsUsage.noData")),1))])],64)):F("",!0)])]))}})})),cl=q((()=>{})),_l,vl=q((()=>{Ee(),Ee(),cl(),nl(),_l=rl(He,[["__scopeId","data-v-b676d455"]])}));vl();export{_l as default};
1
+ import{n as q}from"./rolldown-runtime-BKwlnUi0.js";import{Bt as f,F as E,Nt as p,Rt as i,U as ll,Vt as a,Z as m,_t as n,ct as sl,et as v,ht as al,it as r,ot as V,rt as F,st as H,t as tl,tt as e,wt as K,yt as b,zt as O}from"./ui-vendor-CsTMg6zH.js";import{n as il,r as ol}from"./vue-vendor-D8zSB7VM.js";import{n as nl,t as rl}from"./_plugin-vue_export-helper-CrLlP_D3.js";import{i as ul,o as dl}from"./skills-BCJOb_4y.js";var Z,j,G,J,Q,W,X,Y,ee,le,se,ae,te,ie,oe,ne,re,ue,de,ce,_e,ve,he,ke,me,pe,ge,ye,fe,be,Ue,Se,we,xe,Ve,Ce,Me,De,Fe,$e,Be,qe,ze,Ae,Le,Ne,Te,Ie,Pe,Re,$,B,He,Ee=q((()=>{ll(),il(),tl(),dl(),Z={class:"skills-usage-view"},j={class:"page-header"},G={class:"header-text"},J={class:"header-title"},Q={class:"header-subtitle"},W={class:"skills-usage-toolbar"},X=["aria-label"],Y={class:"skills-usage-content"},ee={key:0,class:"skills-usage-state error"},le={key:1,class:"skills-usage-state"},se={key:0,class:"inline-error"},ae={class:"overview-grid"},te={class:"panel-header"},ie={key:0,class:"skills-usage-state compact"},oe={class:"skill-bar-chart"},ne=["onMouseenter","onFocusin","onMouseleave","onFocusout"],re={class:"skill-bar-track"},ue=["data-skill"],de={class:"tooltip-date"},ce={class:"tooltip-row total"},_e={class:"bar-dates"},ve=["aria-label"],he={class:"summary-card primary"},ke={class:"summary-label"},me={class:"summary-value"},pe={class:"summary-card"},ge={class:"summary-label"},ye={class:"summary-value"},fe={class:"summary-card"},be={class:"summary-label"},Ue={class:"summary-value"},Se={class:"summary-card"},we={class:"summary-label"},xe={class:"summary-value"},Ve={class:"usage-panel"},Ce={class:"panel-header"},Me={key:0,class:"skills-usage-state compact"},De=["aria-label"],Fe={class:"skills-row table-head",role:"row"},$e={role:"columnheader"},Be={role:"columnheader"},qe={role:"columnheader"},ze={role:"columnheader"},Ae={role:"columnheader"},Le={class:"skill-name",role:"cell"},Ne={role:"cell"},Te={role:"cell"},Ie={class:"share-cell",role:"cell"},Pe={class:"share-bar"},Re={class:"last-used",role:"cell"},$=6,B="#5b6b84",He=sl({__name:"SkillsUsageView",setup(hl){const{t}=ol(),Ke=[7,30,90,365],z=["#2f6eea","#f26d3d","#f49a5c","#9aa7ff","#8f2c8f","#00c2d1"],h=p(7),g=p(!1),k=p(""),U=p({});let S=0;const A={},o=v(()=>U.value[h.value]??null),L=v(()=>(o.value?.summary.total_skill_actions??0)>0),Oe=v(()=>Math.max(...(o.value?.by_day??[]).map(s=>s.total_count),1)),Ze=v(()=>g.value&&!!o.value),w=p(null),x=p(null),y=v(()=>o.value?.by_day.find(s=>s.date===w.value)??null),je=v(()=>y.value?I(y.value):[]),Ge=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"}),C=v(()=>(o.value?.top_skills??[]).slice(0,$)),Je=v(()=>new Set(C.value.map(s=>s.skill)));function N(s){return`${s.toFixed(1)}%`}function Qe(s){return s?new Date(s*1e3).toLocaleString():"—"}function We(s){return`${Math.max(2,s/Oe.value*100)}%`}function Xe(s){return Math.max(s,0)}function T(s){return s.total_count||s.view_count+s.manage_count}function Ye(){const s=Math.max((o.value?.top_skills.length??0)-$,0);return s>0?`${t("skillsUsage.otherSkills")} (+${s})`:t("skillsUsage.otherSkills")}function M(s){const d=C.value.findIndex(l=>l.skill===s);return d>=0?z[d%z.length]:B}function I(s){const d=s.skills??[],l=new Map(d.map(u=>[u.skill,T(u)])),_=C.value.map(u=>({key:u.skill,label:u.skill,count:l.get(u.skill)??0,color:M(u.skill)})).filter(u=>u.count>0),c=d.filter(u=>!Je.value.has(u.skill)).reduce((u,el)=>u+T(el),0);return c>0&&_.push({key:"other-skills",label:Ye(),count:c,color:B}),_}function P(s,d){w.value=s.date,x.value=d}function R(s){w.value===s.date&&(w.value=null,x.value=null)}async function D(s=h.value,d=!1){h.value=s;const l=++S;A[s]=l,g.value=!0,(!U.value[s]||d)&&(k.value="");try{const _=await ul(s);A[s]===l&&(U.value={...U.value,[s]:_}),l===S&&(k.value="")}catch(_){l===S&&(k.value=_?.message||t("skillsUsage.loadFailed"))}finally{l===S&&(g.value=!1)}}return al(()=>{D(7)}),(s,d)=>(n(),r("div",Z,[e("header",j,[e("div",G,[e("h2",J,a(i(t)("skillsUsage.title")),1),e("p",Q,a(i(t)("skillsUsage.subtitle")),1)]),e("div",W,[e("div",{class:"period-selector",role:"group","aria-label":i(t)("skillsUsage.periodSelector")},[(n(),r(m,null,b(Ke,l=>H(i(E),{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:_=>D(l)},{default:K(()=>[V(a(i(t)("skillsUsage.periodLabel",{days:l})),1)]),_:2},1032,["secondary","quaternary","type","aria-pressed","onClick"])),64))],8,X),H(i(E),{size:"small",quaternary:"",loading:g.value,onClick:d[0]||(d[0]=l=>D(h.value,!0))},{default:K(()=>[V(a(i(t)("skillsUsage.refresh")),1)]),_:1},8,["loading"])])]),e("div",Y,[k.value&&!o.value?(n(),r("div",ee,a(k.value),1)):g.value&&!o.value?(n(),r("div",le,a(i(t)("common.loading")),1)):o.value?(n(),r(m,{key:2},[k.value?(n(),r("div",se,a(k.value),1)):F("",!0),e("section",ae,[e("div",{class:O(["usage-panel chart-panel",{"is-refreshing":Ze.value}]),"data-testid":"skills-usage-chart"},[e("div",te,[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?(n(),r(m,{key:1},[e("div",oe,[(n(!0),r(m,null,b(o.value.by_day,(l,_)=>(n(),r("div",{key:l.date,class:"skill-bar-col",tabindex:"0",onMouseenter:c=>P(l,_),onFocusin:c=>P(l,_),onMouseleave:c=>R(l),onFocusout:c=>R(l)},[e("div",re,[e("div",{class:"skill-bar-fill",style:f({height:We(l.total_count)})},[(n(!0),r(m,null,b(I(l),c=>(n(),r("div",{key:c.key,class:"skill-bar-segment","data-skill":c.key,style:f({flex:Xe(c.count),background:c.color})},null,12,ue))),128))],4)])],40,ne))),128))]),y.value?(n(),r("div",{key:0,class:O(["floating-tooltip",Ge.value])},[e("div",de,a(y.value.date),1),(n(!0),r(m,null,b(je.value,l=>(n(),r("div",{key:l.key,class:"tooltip-row"},[e("i",{class:"tooltip-dot",style:f({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)):F("",!0),e("div",_e,[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)):(n(),r("div",ie,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",he,[e("div",ke,a(i(t)("skillsUsage.totalActions")),1),e("div",me,a(o.value.summary.total_skill_actions),1)]),e("div",pe,[e("div",ge,a(i(t)("skillsUsage.loads")),1),e("div",ye,a(o.value.summary.total_skill_loads),1)]),e("div",fe,[e("div",be,a(i(t)("skillsUsage.edits")),1),e("div",Ue,a(o.value.summary.total_skill_edits),1)]),e("div",Se,[e("div",we,a(i(t)("skillsUsage.distinctSkills")),1),e("div",xe,a(o.value.summary.distinct_skills_used),1)])],8,ve)]),e("section",Ve,[e("div",Ce,[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?(n(),r("div",{key:1,class:"skills-table",role:"table","aria-label":i(t)("skillsUsage.topSkills")},[e("div",Fe,[e("span",$e,a(i(t)("skillsUsage.skill")),1),e("span",Be,a(i(t)("skillsUsage.loads")),1),e("span",qe,a(i(t)("skillsUsage.edits")),1),e("span",ze,a(i(t)("skillsUsage.share")),1),e("span",Ae,a(i(t)("skillsUsage.lastUsed")),1)]),(n(!0),r(m,null,b(o.value.top_skills,l=>(n(),r("div",{key:l.skill,class:"skills-row",role:"row"},[e("span",Le,[e("i",{class:"skill-color-dot",style:f({background:M(l.skill)})},null,4),V(" "+a(l.skill),1)]),e("span",Ne,a(l.view_count),1),e("span",Te,a(l.manage_count),1),e("span",Ie,[e("span",Pe,[e("span",{style:f({width:N(l.percentage),background:M(l.skill)})},null,4)]),V(" "+a(N(l.percentage)),1)]),e("span",Re,a(Qe(l.last_used_at)),1)]))),128))],8,De)):(n(),r("div",Me,a(i(t)("skillsUsage.noData")),1))])],64)):F("",!0)])]))}})})),cl=q((()=>{})),_l,vl=q((()=>{Ee(),Ee(),cl(),nl(),_l=rl(He,[["__scopeId","data-v-b676d455"]])}));vl();export{_l as default};