@quanthermes/hermes-web-ui 0.6.16 → 0.6.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/client/assets/js/{ChannelsView-C3g3StjL.js → ChannelsView-BwP8wsUV.js} +1 -1
  2. package/dist/client/assets/js/{ChatView-tIA9-kE6.js → ChatView-Mf_KaepB.js} +1 -1
  3. package/dist/client/assets/js/{CodingAgentsView-BjVUaZEX.js → CodingAgentsView-C0OyfzpB.js} +1 -1
  4. package/dist/client/assets/js/{DevicesView-CrHv1Mcc.js → DevicesView-Cfk24oSi.js} +1 -1
  5. package/dist/client/assets/js/{FileRenameModal-BmQIUMYK.js → FileRenameModal-DhB_Oy1Y.js} +1 -1
  6. package/dist/client/assets/js/{FilesView-BSJjUAhT.js → FilesView-CL3bT4UM.js} +1 -1
  7. package/dist/client/assets/js/{GroupChatView-DtWcdFAL.js → GroupChatView-DhNycaZ-.js} +1 -1
  8. package/dist/client/assets/js/{HistoryMessageList-L-9SSk3K.js → HistoryMessageList-C9ywhLVB.js} +1 -1
  9. package/dist/client/assets/js/{HistoryView-DWEeHcuC.js → HistoryView-CB4oqwnG.js} +1 -1
  10. package/dist/client/assets/js/{JobsView-BgofNKg-.js → JobsView-DrZUX1TJ.js} +1 -1
  11. package/dist/client/assets/js/{KanbanView-QPxTlH-J.js → KanbanView-B-rpBbt3.js} +1 -1
  12. package/dist/client/assets/js/{LoginView-McUee9pQ.js → LoginView-Ca6fECMY.js} +1 -1
  13. package/dist/client/assets/js/{LogsView-BT-4Df4G.js → LogsView-IjXDeQ1e.js} +1 -1
  14. package/dist/client/assets/js/{MarkdownRenderer-Jwbx4dOP.js → MarkdownRenderer-BlxKlSHX.js} +1 -1
  15. package/dist/client/assets/js/{McpManagerView-DLDPI-_O.js → McpManagerView-D-oJeFHz.js} +1 -1
  16. package/dist/client/assets/js/{MemoryView-Dq3pEc1S.js → MemoryView-BSlKBKzI.js} +1 -1
  17. package/dist/client/assets/js/{MessageItem-Dr5idUZb.js → MessageItem-Di7V6T5S.js} +1 -1
  18. package/dist/client/assets/js/{ModelsView-sfHqVERI.js → ModelsView-qxOq5hFg.js} +1 -1
  19. package/dist/client/assets/js/{OutlinePanel-BddtVbQw.js → OutlinePanel-D62oj0V9.js} +1 -1
  20. package/dist/client/assets/js/{PerformanceView-BYMIVkGl.js → PerformanceView-Coa_4sVf.js} +1 -1
  21. package/dist/client/assets/js/{PluginsView-Be878n_l.js → PluginsView-BHOXiJZv.js} +1 -1
  22. package/dist/client/assets/js/{ProfilesView-B6TQX72B.js → ProfilesView-DjODeu2z.js} +1 -1
  23. package/dist/client/assets/js/{SettingRow-vaeYDW5h.js → SettingRow-DWprXoV4.js} +1 -1
  24. package/dist/client/assets/js/{SettingsView-ClBbruK3.js → SettingsView-D5QX2BHT.js} +1 -1
  25. package/dist/client/assets/js/{SkillsUsageView-cAHh5inD.js → SkillsUsageView-CgpixSYd.js} +1 -1
  26. package/dist/client/assets/js/{SkillsView-DFxNT1UO.js → SkillsView-DVA_LzFa.js} +1 -1
  27. package/dist/client/assets/js/{TerminalPanel-Bwa-6ai-.js → TerminalPanel-DhnPxJTG.js} +1 -1
  28. package/dist/client/assets/js/{TerminalView-KMAVVfPx.js → TerminalView-tgOY8x6C.js} +1 -1
  29. package/dist/client/assets/js/{UsageView-DQUEWEZR.js → UsageView-DDvy4JWs.js} +1 -1
  30. package/dist/client/assets/js/{VersionPreviewView-BD_8pfy6.js → VersionPreviewView-DoYv9yy6.js} +1 -1
  31. package/dist/client/assets/js/{VirtualMessageList-BNu9wFPU.js → VirtualMessageList-CfXQfWcE.js} +1 -1
  32. package/dist/client/assets/js/{_plugin-vue_export-helper-uEMLHKI8.js → _plugin-vue_export-helper-CwNymSRn.js} +2 -2
  33. package/dist/client/assets/js/{index-1yNqMnGv.js → index-DW8M4rjb.js} +1 -1
  34. package/dist/client/assets/js/{models-B67JDoKt.js → models-BDUkz58x.js} +1 -1
  35. package/dist/client/assets/js/{session-browser-prefs-BMKJzhU0.js → session-browser-prefs-DjzuPSf7.js} +1 -1
  36. package/dist/client/assets/js/{skills-oOSUGydJ.js → skills-kS4Wy1_s.js} +1 -1
  37. package/dist/client/assets/js/{system-ClONwY0c.js → system-DaAaRr9k.js} +1 -1
  38. package/dist/client/assets/js/{useSttSettings-BAlyngwO.js → useSttSettings-DnVfL8DF.js} +1 -1
  39. package/dist/client/index.html +3 -3
  40. package/dist/server/index.js +3 -3
  41. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{n as F}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as ce,A as ko,Cn as Ue,Dn as _e,E as Oe,Et as Co,K as Y,Mn as re,O as oe,Ot as T,Pn as n,Pt as pe,Qn as e,Tn as c,V as te,Wn as y,Wt as j,Y as Ya,Zt as Mo,an as D,ct as Po,dn as J,er as Fe,g as ve,in as R,kn as $o,ln as M,mt as he,nn as q,on as C,rn as a,rr as o,t as se,un as u,ut as ze,wn as ge,wt as To,yn as Be}from"./ui-vendor-dYn1tJGA.js";import{c as Q,l as Z}from"./vue-vendor-DZ4A_GHn.js";import{f as H,n as ee,t as le,u as xe}from"./_plugin-vue_export-helper-uEMLHKI8.js";import{c as So,u as Lo}from"./system-ClONwY0c.js";import{E as Ao,O as Ie,Q as Oo,X as ja,Y as Ja,Z as Uo,_ as Eo,v as No,w as Fo}from"./index-1yNqMnGv.js";import{n as we,t as be}from"./clipboard-1NPxC3YL.js";import{n as me,t as fe}from"./models-B67JDoKt.js";var Ve,De,Ke,qe,Re,Xe,Ge,He,We,Ye,je,Je,Qa,Qe=F((()=>{j(),se(),Q(),Ao(),fe(),Ja(),Ve={class:"auxiliary-panel"},De={class:"auxiliary-header"},Ke={class:"auxiliary-table"},qe={class:"auxiliary-row auxiliary-row-head"},Re={class:"task-name"},Xe={class:"task-config"},Ge={class:"task-timeout"},He={class:"task-actions"},We={class:"auxiliary-form"},Ye={key:0},je={class:"extra-body-field"},Je={class:"auxiliary-modal-actions"},Qa=J({__name:"AuxiliaryModelsPanel",setup(V){const{t}=Z(),l=te(),P=me(),g=ja(),h=y(!1),s=y(!1),z=y([]),A=y({}),O=y(!1),f=y(null),U=y(!1),p=y({provider:"",model:"",timeout:null,download_timeout:null,extra_body:""}),B=q(()=>{const i=new Set,r=[{label:t("models.auxiliaryProviderAuto"),value:"auto"},{label:t("models.auxiliaryProviderMain"),value:"main"}];for(const x of P.providers)!x.provider||i.has(x.provider)||(i.add(x.provider),r.push({label:x.label||x.provider,value:x.provider}));return r}),K=q(()=>{const i=p.value.provider.trim();return!i||i==="auto"||i==="main"?[]:b(i).map(r=>({label:r,value:r}))}),$=q(()=>f.value?.key==="vision");function b(i){return P.providers.find(r=>r.provider===i)?.models||[]}function v(i){return!i||i==="auto"||i==="main"?!0:P.providers.some(r=>r.provider===i)}function w(i){switch(i.key){case"compression":return t("models.auxiliaryTaskCompression");case"vision":return t("models.auxiliaryTaskVision");case"web_extract":return t("models.auxiliaryTaskWebExtract");case"skills_hub":return t("models.auxiliaryTaskSkillsHub");case"approval":return t("models.auxiliaryTaskApproval");case"mcp":return t("models.auxiliaryTaskMcp");case"title_generation":return t("models.auxiliaryTaskTitleGeneration");case"triage_specifier":return t("models.auxiliaryTaskTriageSpecifier");case"kanban_decomposer":return t("models.auxiliaryTaskKanbanDecomposer");case"profile_describer":return t("models.auxiliaryTaskProfileDescriber");case"curator":return t("models.auxiliaryTaskCurator");case"session_search":return t("models.auxiliaryTaskSessionSearch");case"flush_memories":return t("models.auxiliaryTaskFlushMemories");default:return i.label||i.key}}function _(i){if(!i||Object.keys(i).length===0)return t("models.auxiliaryProviderAuto");const r=i.provider||(i.base_url?t("models.auxiliaryCustomEndpoint"):t("models.auxiliaryDefault"));return i.model?`${r} / ${i.model}`:r}function m(i,r){const x=r?.timeout??i.default_timeout,X=i.key==="vision"?r?.download_timeout??i.default_download_timeout:void 0;if(!x&&!X)return t("models.auxiliaryDefault");const ie=[];return x&&ie.push(`${x}s`),X&&ie.push(`${t("models.auxiliaryDownloadShort")} ${X}s`),ie.join(" / ")}async function E(){h.value=!0;try{const i=await Fo();z.value=i.tasks,A.value=i.auxiliary}catch(i){l.error(i.message||t("models.auxiliaryLoadFailed"))}finally{h.value=!1}}function G(i){const r=A.value[i.key]||{},x=v(r.provider||"")&&r.provider||"auto",X=(x==="auto"||x==="main"||b(x).includes(r.model||""))&&r.model||"";f.value=i,U.value=!0,p.value={provider:x,model:X,timeout:r.timeout??i.default_timeout??null,download_timeout:i.key==="vision"?r.download_timeout??i.default_download_timeout??null:null,extra_body:r.extra_body?JSON.stringify(r.extra_body,null,2):""},U.value=!1,O.value=!0}function ue(){const i=p.value.extra_body.trim();if(!i)return;let r;try{r=JSON.parse(i)}catch{throw new Error(t("models.auxiliaryInvalidExtraBody"))}if(!r||typeof r!="object"||Array.isArray(r))throw new Error(t("models.auxiliaryInvalidExtraBody"));return r}function de(){const i={},r=p.value.provider.trim();if(r==="auto")return i.provider="auto",p.value.timeout&&(i.timeout=p.value.timeout),$.value&&p.value.download_timeout&&(i.download_timeout=p.value.download_timeout),i;const x=ue(),X=p.value.model.trim();if(r&&(i.provider=r),r&&r!=="auto"&&r!=="main"&&!X)throw new Error(t("models.modelRequired"));return X&&(i.model=X),p.value.timeout&&(i.timeout=p.value.timeout),$.value&&p.value.download_timeout&&(i.download_timeout=p.value.download_timeout),x&&Object.keys(x).length>0&&(i.extra_body=x),Object.keys(i).length===0&&(i.provider="auto"),i}async function W(){if(!f.value)return;let i;try{i=de()}catch(r){l.error(r.message);return}s.value=!0;try{const r={...A.value};Object.keys(i).length>0?r[f.value.key]=i:delete r[f.value.key],A.value=(await Ie(r)).auxiliary,O.value=!1,l.success(t("models.auxiliarySaved"))}catch(r){l.error(r.message||t("models.auxiliarySaveFailed"))}finally{s.value=!1}}async function ae(i){s.value=!0;try{const r={...A.value};r[i.key]={provider:"auto",...i.default_timeout?{timeout:i.default_timeout}:{},...i.key==="vision"&&i.default_download_timeout?{download_timeout:i.default_download_timeout}:{}},A.value=(await Ie(r)).auxiliary,l.success(t("models.auxiliarySaved"))}catch(r){l.error(r.message||t("models.auxiliarySaveFailed"))}finally{s.value=!1}}return Ue(()=>{E()}),re(()=>g.activeProfileName,()=>{E()}),re(()=>p.value.provider,i=>{if(!U.value){if(!i||i==="auto"||i==="main"){p.value.model="",i==="auto"&&(p.value.extra_body="");return}b(i).includes(p.value.model)||(p.value.model="")}},{flush:"sync"}),(i,r)=>(c(),C("section",Ve,[a("div",De,[a("div",null,[a("h3",null,o(e(t)("models.auxiliaryTitle")),1),a("p",null,o(e(t)("models.auxiliarySubtitle")),1)]),u(e(T),{size:"small",quaternary:"",loading:h.value,onClick:E},{default:n(()=>[M(o(e(t)("models.auxiliaryRefresh")),1)]),_:1},8,["loading"])]),u(e(ve),{show:h.value},{default:n(()=>[a("div",Ke,[a("div",qe,[a("span",null,o(e(t)("models.auxiliaryTask")),1),a("span",null,o(e(t)("models.provider"))+" / "+o(e(t)("models.defaultModel")),1),a("span",null,o(e(t)("models.auxiliaryTimeout")),1),a("span",null,o(e(t)("models.auxiliaryActions")),1)]),(c(!0),C(ce,null,_e(z.value,x=>(c(),C("div",{key:x.key,class:"auxiliary-row"},[a("span",Re,o(w(x)),1),a("span",Xe,o(_(A.value[x.key])),1),a("span",Ge,o(m(x,A.value[x.key])),1),a("span",He,[u(e(T),{size:"tiny",quaternary:"",onClick:X=>G(x)},{default:n(()=>[M(o(e(t)("common.edit")),1)]),_:1},8,["onClick"]),u(e(T),{size:"tiny",quaternary:"",disabled:s.value,onClick:X=>ae(x)},{default:n(()=>[M(o(e(t)("models.auxiliaryClear")),1)]),_:1},8,["disabled","onClick"])])]))),128))])]),_:1},8,["show"]),u(e(Y),{show:O.value,"onUpdate:show":r[6]||(r[6]=x=>O.value=x),preset:"card",title:f.value?w(f.value):e(t)("models.auxiliaryTitle"),style:{width:"min(620px, calc(100vw - 32px))"},"mask-closable":!s.value},{footer:n(()=>[a("div",Je,[u(e(T),{disabled:s.value,onClick:r[5]||(r[5]=x=>O.value=!1)},{default:n(()=>[M(o(e(t)("common.cancel")),1)]),_:1},8,["disabled"]),u(e(T),{type:"primary",loading:s.value,onClick:W},{default:n(()=>[M(o(e(t)("common.save")),1)]),_:1},8,["loading"])])]),default:n(()=>[a("div",We,[a("label",null,[a("span",null,o(e(t)("models.provider")),1),u(e(he),{value:p.value.provider,"onUpdate:value":r[0]||(r[0]=x=>p.value.provider=x),options:B.value,placeholder:e(t)("models.chooseProvider"),filterable:"",clearable:""},null,8,["value","options","placeholder"])]),a("label",null,[a("span",null,o(e(t)("models.defaultModel")),1),u(e(he),{value:p.value.model,"onUpdate:value":r[1]||(r[1]=x=>p.value.model=x),options:K.value,placeholder:e(t)("models.selectModel"),disabled:!p.value.provider||p.value.provider==="auto"||p.value.provider==="main",filterable:"",clearable:""},null,8,["value","options","placeholder","disabled"])]),a("label",null,[a("span",null,o(e(t)("models.auxiliaryTimeout")),1),u(e(Oe),{value:p.value.timeout,"onUpdate:value":r[2]||(r[2]=x=>p.value.timeout=x),min:1,precision:0,clearable:""},null,8,["value"])]),$.value?(c(),C("label",Ye,[a("span",null,o(e(t)("models.auxiliaryDownloadTimeout")),1),u(e(Oe),{value:p.value.download_timeout,"onUpdate:value":r[3]||(r[3]=x=>p.value.download_timeout=x),min:1,precision:0,clearable:""},null,8,["value"])])):D("",!0),a("label",je,[a("span",null,o(e(t)("models.auxiliaryExtraBody")),1),u(e(pe),{value:p.value.extra_body,"onUpdate:value":r[4]||(r[4]=x=>p.value.extra_body=x),type:"textarea",autosize:{minRows:4,maxRows:8}},null,8,["value"])])])]),_:1},8,["show","title","mask-closable"])]))}})})),zo=F((()=>{})),Za,Bo=F((()=>{Qe(),Qe(),zo(),ee(),Za=le(Qa,[["__scopeId","data-v-a3a2e478"]])}));async function Io(){return H("/api/hermes/auth/copilot/start",{method:"POST"})}async function Vo(V){return H(`/api/hermes/auth/copilot/poll/${V}`)}async function Ee(){return H("/api/hermes/auth/copilot/check-token")}async function Do(){return H("/api/hermes/auth/copilot/enable",{method:"POST"})}async function Ko(){return H("/api/hermes/auth/copilot/disable",{method:"POST"})}var ke=F((()=>{xe()})),Ze,el,ll,al,ol,tl,sl,il,nl,rl,ul,dl,vl,cl,_l,pl,ml,fl,yl,hl,gl,xl,wl,bl,kl,Cl,Ml,Pl,$l,Tl,Sl,Ll,Al,Ol,Ul,El,eo,Nl=F((()=>{j(),se(),fe(),Uo(),Eo(),ke(),Q(),Ze={class:"provider-card"},el={class:"card-header"},ll={class:"provider-name"},al={class:"provider-badges"},ol={key:0,class:"type-badge default"},tl={class:"card-body"},sl={class:"info-row"},il={class:"info-label"},nl={class:"info-value mono"},rl={class:"info-row"},ul={class:"info-label"},dl={class:"info-value mono"},vl={class:"info-row models-row"},cl={class:"info-label"},_l={class:"info-value models-count"},pl={class:"models-list"},ml=["title","onClick"],fl={class:"model-tag-name"},yl={key:0,class:"model-tag-default"},hl={key:1,class:"model-tag-id"},gl={key:0,class:"model-tag model-tag-more"},xl={class:"card-actions"},wl={class:"alias-list-hint"},bl={class:"alias-list"},kl={class:"alias-row-text"},Cl={class:"alias-row-name"},Ml={key:0,class:"alias-row-default"},Pl={class:"alias-row-id"},$l={key:0,class:"model-alias-canonical"},Tl={class:"model-alias-hint"},Sl={class:"model-alias-actions"},Ll={class:"visibility-hint"},Al={class:"visibility-count"},Ol={class:"visibility-list"},Ul={key:0,class:"visibility-model-id"},El={class:"visibility-actions"},eo=J({__name:"ProviderCard",props:{provider:{}},setup(V){const t=V,{t:l}=Z(),P=me(),g=Oo(),h=No(),s=te(),z=Ya(),A=q(()=>!t.provider.builtin&&t.provider.provider.startsWith("custom:")),O=q(()=>t.provider.provider==="copilot"),f=q(()=>t.provider.label),U=y(!1),p=y(!1),B=y(!1),K=y(""),$=y(""),b=y(""),v=y(!1),w=y(!1),_=y([]),m=q(()=>P.allProviders.find(I=>I.provider===t.provider.provider)),E=q(()=>t.provider.available_models?.length?t.provider.available_models:m.value?.models?.length?m.value.models:t.provider.models),G=q(()=>g.getProviderVisibility(t.provider.provider)),ue=q(()=>G.value.mode==="include"),de=q(()=>`${t.provider.models.length}/${E.value.length}`),W=q(()=>P.defaultProvider===t.provider.provider);function ae(I){return W.value&&P.defaultModel===I}function i(I){return g.getModelAlias(I,t.provider.provider)}function r(I){return g.displayModelName(I,t.provider.provider)}function x(I){K.value=t.provider.provider,$.value=I,b.value=g.getModelAlias(I,t.provider.provider),B.value=!0}async function X(){if(!(!$.value||!K.value))try{await g.setModelAlias($.value,K.value,b.value),B.value=!1}catch(I){s.error(I.message||l("models.aliasSaveFailed"))}}async function ie(){b.value="",await X()}function Ce(){const I=g.getProviderVisibility(t.provider.provider);_.value=I.mode==="include"?E.value.filter(L=>I.models.includes(L)):[...E.value],v.value=!0}async function Me(){if(_.value.length===0){s.error(l("models.visibilitySelectOne"));return}w.value=!0;try{const I=_.value.filter(S=>E.value.includes(S)),L=I.length===E.value.length?"all":"include";await g.setModelVisibility(t.provider.provider,{mode:L,models:I}),await P.fetchProviders(),v.value=!1,s.success(l("models.visibilitySaved"))}catch(I){s.error(I.message||l("models.visibilitySaveFailed"))}finally{w.value=!1}}function Pe(){_.value=[...E.value]}function ye(){_.value=[]}async function $e(){let I="";if(O.value)try{const L=await Ee();L.source==="env"?I=l("models.copilotDeleteHintEnv"):L.source==="gh-cli"?I=l("models.copilotDeleteHintGhCli"):L.source==="apps-json"&&(I=l("models.copilotDeleteHintAppsJson"))}catch{}z.warning({title:l("models.deleteProvider"),content:O.value&&I?`${l("models.deleteConfirm",{name:f.value})}
1
+ import{n as F}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as ce,A as ko,Cn as Ue,Dn as _e,E as Oe,Et as Co,K as Y,Mn as re,O as oe,Ot as T,Pn as n,Pt as pe,Qn as e,Tn as c,V as te,Wn as y,Wt as j,Y as Ya,Zt as Mo,an as D,ct as Po,dn as J,er as Fe,g as ve,in as R,kn as $o,ln as M,mt as he,nn as q,on as C,rn as a,rr as o,t as se,un as u,ut as ze,wn as ge,wt as To,yn as Be}from"./ui-vendor-dYn1tJGA.js";import{c as Q,l as Z}from"./vue-vendor-DZ4A_GHn.js";import{f as H,n as ee,t as le,u as xe}from"./_plugin-vue_export-helper-CwNymSRn.js";import{c as So,u as Lo}from"./system-DaAaRr9k.js";import{E as Ao,O as Ie,Q as Oo,X as ja,Y as Ja,Z as Uo,_ as Eo,v as No,w as Fo}from"./index-DW8M4rjb.js";import{n as we,t as be}from"./clipboard-1NPxC3YL.js";import{n as me,t as fe}from"./models-BDUkz58x.js";var Ve,De,Ke,qe,Re,Xe,Ge,He,We,Ye,je,Je,Qa,Qe=F((()=>{j(),se(),Q(),Ao(),fe(),Ja(),Ve={class:"auxiliary-panel"},De={class:"auxiliary-header"},Ke={class:"auxiliary-table"},qe={class:"auxiliary-row auxiliary-row-head"},Re={class:"task-name"},Xe={class:"task-config"},Ge={class:"task-timeout"},He={class:"task-actions"},We={class:"auxiliary-form"},Ye={key:0},je={class:"extra-body-field"},Je={class:"auxiliary-modal-actions"},Qa=J({__name:"AuxiliaryModelsPanel",setup(V){const{t}=Z(),l=te(),P=me(),g=ja(),h=y(!1),s=y(!1),z=y([]),A=y({}),O=y(!1),f=y(null),U=y(!1),p=y({provider:"",model:"",timeout:null,download_timeout:null,extra_body:""}),B=q(()=>{const i=new Set,r=[{label:t("models.auxiliaryProviderAuto"),value:"auto"},{label:t("models.auxiliaryProviderMain"),value:"main"}];for(const x of P.providers)!x.provider||i.has(x.provider)||(i.add(x.provider),r.push({label:x.label||x.provider,value:x.provider}));return r}),K=q(()=>{const i=p.value.provider.trim();return!i||i==="auto"||i==="main"?[]:b(i).map(r=>({label:r,value:r}))}),$=q(()=>f.value?.key==="vision");function b(i){return P.providers.find(r=>r.provider===i)?.models||[]}function v(i){return!i||i==="auto"||i==="main"?!0:P.providers.some(r=>r.provider===i)}function w(i){switch(i.key){case"compression":return t("models.auxiliaryTaskCompression");case"vision":return t("models.auxiliaryTaskVision");case"web_extract":return t("models.auxiliaryTaskWebExtract");case"skills_hub":return t("models.auxiliaryTaskSkillsHub");case"approval":return t("models.auxiliaryTaskApproval");case"mcp":return t("models.auxiliaryTaskMcp");case"title_generation":return t("models.auxiliaryTaskTitleGeneration");case"triage_specifier":return t("models.auxiliaryTaskTriageSpecifier");case"kanban_decomposer":return t("models.auxiliaryTaskKanbanDecomposer");case"profile_describer":return t("models.auxiliaryTaskProfileDescriber");case"curator":return t("models.auxiliaryTaskCurator");case"session_search":return t("models.auxiliaryTaskSessionSearch");case"flush_memories":return t("models.auxiliaryTaskFlushMemories");default:return i.label||i.key}}function _(i){if(!i||Object.keys(i).length===0)return t("models.auxiliaryProviderAuto");const r=i.provider||(i.base_url?t("models.auxiliaryCustomEndpoint"):t("models.auxiliaryDefault"));return i.model?`${r} / ${i.model}`:r}function m(i,r){const x=r?.timeout??i.default_timeout,X=i.key==="vision"?r?.download_timeout??i.default_download_timeout:void 0;if(!x&&!X)return t("models.auxiliaryDefault");const ie=[];return x&&ie.push(`${x}s`),X&&ie.push(`${t("models.auxiliaryDownloadShort")} ${X}s`),ie.join(" / ")}async function E(){h.value=!0;try{const i=await Fo();z.value=i.tasks,A.value=i.auxiliary}catch(i){l.error(i.message||t("models.auxiliaryLoadFailed"))}finally{h.value=!1}}function G(i){const r=A.value[i.key]||{},x=v(r.provider||"")&&r.provider||"auto",X=(x==="auto"||x==="main"||b(x).includes(r.model||""))&&r.model||"";f.value=i,U.value=!0,p.value={provider:x,model:X,timeout:r.timeout??i.default_timeout??null,download_timeout:i.key==="vision"?r.download_timeout??i.default_download_timeout??null:null,extra_body:r.extra_body?JSON.stringify(r.extra_body,null,2):""},U.value=!1,O.value=!0}function ue(){const i=p.value.extra_body.trim();if(!i)return;let r;try{r=JSON.parse(i)}catch{throw new Error(t("models.auxiliaryInvalidExtraBody"))}if(!r||typeof r!="object"||Array.isArray(r))throw new Error(t("models.auxiliaryInvalidExtraBody"));return r}function de(){const i={},r=p.value.provider.trim();if(r==="auto")return i.provider="auto",p.value.timeout&&(i.timeout=p.value.timeout),$.value&&p.value.download_timeout&&(i.download_timeout=p.value.download_timeout),i;const x=ue(),X=p.value.model.trim();if(r&&(i.provider=r),r&&r!=="auto"&&r!=="main"&&!X)throw new Error(t("models.modelRequired"));return X&&(i.model=X),p.value.timeout&&(i.timeout=p.value.timeout),$.value&&p.value.download_timeout&&(i.download_timeout=p.value.download_timeout),x&&Object.keys(x).length>0&&(i.extra_body=x),Object.keys(i).length===0&&(i.provider="auto"),i}async function W(){if(!f.value)return;let i;try{i=de()}catch(r){l.error(r.message);return}s.value=!0;try{const r={...A.value};Object.keys(i).length>0?r[f.value.key]=i:delete r[f.value.key],A.value=(await Ie(r)).auxiliary,O.value=!1,l.success(t("models.auxiliarySaved"))}catch(r){l.error(r.message||t("models.auxiliarySaveFailed"))}finally{s.value=!1}}async function ae(i){s.value=!0;try{const r={...A.value};r[i.key]={provider:"auto",...i.default_timeout?{timeout:i.default_timeout}:{},...i.key==="vision"&&i.default_download_timeout?{download_timeout:i.default_download_timeout}:{}},A.value=(await Ie(r)).auxiliary,l.success(t("models.auxiliarySaved"))}catch(r){l.error(r.message||t("models.auxiliarySaveFailed"))}finally{s.value=!1}}return Ue(()=>{E()}),re(()=>g.activeProfileName,()=>{E()}),re(()=>p.value.provider,i=>{if(!U.value){if(!i||i==="auto"||i==="main"){p.value.model="",i==="auto"&&(p.value.extra_body="");return}b(i).includes(p.value.model)||(p.value.model="")}},{flush:"sync"}),(i,r)=>(c(),C("section",Ve,[a("div",De,[a("div",null,[a("h3",null,o(e(t)("models.auxiliaryTitle")),1),a("p",null,o(e(t)("models.auxiliarySubtitle")),1)]),u(e(T),{size:"small",quaternary:"",loading:h.value,onClick:E},{default:n(()=>[M(o(e(t)("models.auxiliaryRefresh")),1)]),_:1},8,["loading"])]),u(e(ve),{show:h.value},{default:n(()=>[a("div",Ke,[a("div",qe,[a("span",null,o(e(t)("models.auxiliaryTask")),1),a("span",null,o(e(t)("models.provider"))+" / "+o(e(t)("models.defaultModel")),1),a("span",null,o(e(t)("models.auxiliaryTimeout")),1),a("span",null,o(e(t)("models.auxiliaryActions")),1)]),(c(!0),C(ce,null,_e(z.value,x=>(c(),C("div",{key:x.key,class:"auxiliary-row"},[a("span",Re,o(w(x)),1),a("span",Xe,o(_(A.value[x.key])),1),a("span",Ge,o(m(x,A.value[x.key])),1),a("span",He,[u(e(T),{size:"tiny",quaternary:"",onClick:X=>G(x)},{default:n(()=>[M(o(e(t)("common.edit")),1)]),_:1},8,["onClick"]),u(e(T),{size:"tiny",quaternary:"",disabled:s.value,onClick:X=>ae(x)},{default:n(()=>[M(o(e(t)("models.auxiliaryClear")),1)]),_:1},8,["disabled","onClick"])])]))),128))])]),_:1},8,["show"]),u(e(Y),{show:O.value,"onUpdate:show":r[6]||(r[6]=x=>O.value=x),preset:"card",title:f.value?w(f.value):e(t)("models.auxiliaryTitle"),style:{width:"min(620px, calc(100vw - 32px))"},"mask-closable":!s.value},{footer:n(()=>[a("div",Je,[u(e(T),{disabled:s.value,onClick:r[5]||(r[5]=x=>O.value=!1)},{default:n(()=>[M(o(e(t)("common.cancel")),1)]),_:1},8,["disabled"]),u(e(T),{type:"primary",loading:s.value,onClick:W},{default:n(()=>[M(o(e(t)("common.save")),1)]),_:1},8,["loading"])])]),default:n(()=>[a("div",We,[a("label",null,[a("span",null,o(e(t)("models.provider")),1),u(e(he),{value:p.value.provider,"onUpdate:value":r[0]||(r[0]=x=>p.value.provider=x),options:B.value,placeholder:e(t)("models.chooseProvider"),filterable:"",clearable:""},null,8,["value","options","placeholder"])]),a("label",null,[a("span",null,o(e(t)("models.defaultModel")),1),u(e(he),{value:p.value.model,"onUpdate:value":r[1]||(r[1]=x=>p.value.model=x),options:K.value,placeholder:e(t)("models.selectModel"),disabled:!p.value.provider||p.value.provider==="auto"||p.value.provider==="main",filterable:"",clearable:""},null,8,["value","options","placeholder","disabled"])]),a("label",null,[a("span",null,o(e(t)("models.auxiliaryTimeout")),1),u(e(Oe),{value:p.value.timeout,"onUpdate:value":r[2]||(r[2]=x=>p.value.timeout=x),min:1,precision:0,clearable:""},null,8,["value"])]),$.value?(c(),C("label",Ye,[a("span",null,o(e(t)("models.auxiliaryDownloadTimeout")),1),u(e(Oe),{value:p.value.download_timeout,"onUpdate:value":r[3]||(r[3]=x=>p.value.download_timeout=x),min:1,precision:0,clearable:""},null,8,["value"])])):D("",!0),a("label",je,[a("span",null,o(e(t)("models.auxiliaryExtraBody")),1),u(e(pe),{value:p.value.extra_body,"onUpdate:value":r[4]||(r[4]=x=>p.value.extra_body=x),type:"textarea",autosize:{minRows:4,maxRows:8}},null,8,["value"])])])]),_:1},8,["show","title","mask-closable"])]))}})})),zo=F((()=>{})),Za,Bo=F((()=>{Qe(),Qe(),zo(),ee(),Za=le(Qa,[["__scopeId","data-v-a3a2e478"]])}));async function Io(){return H("/api/hermes/auth/copilot/start",{method:"POST"})}async function Vo(V){return H(`/api/hermes/auth/copilot/poll/${V}`)}async function Ee(){return H("/api/hermes/auth/copilot/check-token")}async function Do(){return H("/api/hermes/auth/copilot/enable",{method:"POST"})}async function Ko(){return H("/api/hermes/auth/copilot/disable",{method:"POST"})}var ke=F((()=>{xe()})),Ze,el,ll,al,ol,tl,sl,il,nl,rl,ul,dl,vl,cl,_l,pl,ml,fl,yl,hl,gl,xl,wl,bl,kl,Cl,Ml,Pl,$l,Tl,Sl,Ll,Al,Ol,Ul,El,eo,Nl=F((()=>{j(),se(),fe(),Uo(),Eo(),ke(),Q(),Ze={class:"provider-card"},el={class:"card-header"},ll={class:"provider-name"},al={class:"provider-badges"},ol={key:0,class:"type-badge default"},tl={class:"card-body"},sl={class:"info-row"},il={class:"info-label"},nl={class:"info-value mono"},rl={class:"info-row"},ul={class:"info-label"},dl={class:"info-value mono"},vl={class:"info-row models-row"},cl={class:"info-label"},_l={class:"info-value models-count"},pl={class:"models-list"},ml=["title","onClick"],fl={class:"model-tag-name"},yl={key:0,class:"model-tag-default"},hl={key:1,class:"model-tag-id"},gl={key:0,class:"model-tag model-tag-more"},xl={class:"card-actions"},wl={class:"alias-list-hint"},bl={class:"alias-list"},kl={class:"alias-row-text"},Cl={class:"alias-row-name"},Ml={key:0,class:"alias-row-default"},Pl={class:"alias-row-id"},$l={key:0,class:"model-alias-canonical"},Tl={class:"model-alias-hint"},Sl={class:"model-alias-actions"},Ll={class:"visibility-hint"},Al={class:"visibility-count"},Ol={class:"visibility-list"},Ul={key:0,class:"visibility-model-id"},El={class:"visibility-actions"},eo=J({__name:"ProviderCard",props:{provider:{}},setup(V){const t=V,{t:l}=Z(),P=me(),g=Oo(),h=No(),s=te(),z=Ya(),A=q(()=>!t.provider.builtin&&t.provider.provider.startsWith("custom:")),O=q(()=>t.provider.provider==="copilot"),f=q(()=>t.provider.label),U=y(!1),p=y(!1),B=y(!1),K=y(""),$=y(""),b=y(""),v=y(!1),w=y(!1),_=y([]),m=q(()=>P.allProviders.find(I=>I.provider===t.provider.provider)),E=q(()=>t.provider.available_models?.length?t.provider.available_models:m.value?.models?.length?m.value.models:t.provider.models),G=q(()=>g.getProviderVisibility(t.provider.provider)),ue=q(()=>G.value.mode==="include"),de=q(()=>`${t.provider.models.length}/${E.value.length}`),W=q(()=>P.defaultProvider===t.provider.provider);function ae(I){return W.value&&P.defaultModel===I}function i(I){return g.getModelAlias(I,t.provider.provider)}function r(I){return g.displayModelName(I,t.provider.provider)}function x(I){K.value=t.provider.provider,$.value=I,b.value=g.getModelAlias(I,t.provider.provider),B.value=!0}async function X(){if(!(!$.value||!K.value))try{await g.setModelAlias($.value,K.value,b.value),B.value=!1}catch(I){s.error(I.message||l("models.aliasSaveFailed"))}}async function ie(){b.value="",await X()}function Ce(){const I=g.getProviderVisibility(t.provider.provider);_.value=I.mode==="include"?E.value.filter(L=>I.models.includes(L)):[...E.value],v.value=!0}async function Me(){if(_.value.length===0){s.error(l("models.visibilitySelectOne"));return}w.value=!0;try{const I=_.value.filter(S=>E.value.includes(S)),L=I.length===E.value.length?"all":"include";await g.setModelVisibility(t.provider.provider,{mode:L,models:I}),await P.fetchProviders(),v.value=!1,s.success(l("models.visibilitySaved"))}catch(I){s.error(I.message||l("models.visibilitySaveFailed"))}finally{w.value=!1}}function Pe(){_.value=[...E.value]}function ye(){_.value=[]}async function $e(){let I="";if(O.value)try{const L=await Ee();L.source==="env"?I=l("models.copilotDeleteHintEnv"):L.source==="gh-cli"?I=l("models.copilotDeleteHintGhCli"):L.source==="apps-json"&&(I=l("models.copilotDeleteHintAppsJson"))}catch{}z.warning({title:l("models.deleteProvider"),content:O.value&&I?`${l("models.deleteConfirm",{name:f.value})}
2
2
 
3
3
  ${I}`:l("models.deleteConfirm",{name:f.value}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{U.value=!0;try{if(O.value?(await Ko(),h.clearProviderFromSessions("copilot"),await P.fetchProviders()):await P.removeProvider(t.provider.provider),!g.selectedModel&&g.modelGroups.length>0){const L=g.modelGroups.find(S=>S.models.length>0);L&&await g.switchModel(L.models[0],L.provider)}s.success(l("models.providerDeleted"))}catch(L){s.error(L.message)}finally{U.value=!1}}})}return(I,L)=>(c(),C("div",Ze,[a("div",el,[a("h3",ll,o(f.value),1),a("div",al,[W.value?(c(),C("span",ol,o(e(l)("models.currentDefault")),1)):D("",!0),a("span",{class:Fe(["type-badge",A.value?"custom":"builtin"])},o(A.value?e(l)("models.customType"):e(l)("models.builtIn")),3)])]),a("div",tl,[a("div",sl,[a("span",il,o(e(l)("models.provider")),1),a("code",nl,o(V.provider.provider),1)]),a("div",rl,[a("span",ul,o(e(l)("models.baseUrl")),1),a("code",dl,o(V.provider.base_url),1)]),a("div",vl,[a("span",cl,o(e(l)("models.models")),1),a("span",_l,o(ue.value?de.value:V.provider.models.length)+" "+o(e(l)("models.count")),1)]),a("div",pl,[(c(!0),C(ce,null,_e(V.provider.models.slice(0,20),S=>(c(),C("button",{key:S,class:Fe(["model-tag model-tag-button",{default:ae(S)}]),type:"button",title:e(l)("models.aliasTitleFor",{model:S}),onClick:Te=>x(S)},[a("span",fl,o(r(S)),1),ae(S)?(c(),C("span",yl,o(e(l)("models.defaultShort")),1)):D("",!0),i(S)?(c(),C("span",hl,o(S),1)):D("",!0)],10,ml))),128)),V.provider.models.length>20?(c(),C("span",gl," +"+o(V.provider.models.length-20)+" "+o(e(l)("models.more")),1)):D("",!0)])]),a("div",xl,[u(e(T),{size:"tiny",quaternary:"",onClick:L[0]||(L[0]=S=>p.value=!0)},{default:n(()=>[M(o(e(l)("models.aliasManage")),1)]),_:1}),u(e(T),{size:"tiny",quaternary:"",onClick:Ce},{default:n(()=>[M(o(e(l)("models.manageVisibleModels")),1)]),_:1}),u(e(T),{size:"tiny",quaternary:"",type:"error",loading:U.value,onClick:$e},{default:n(()=>[M(o(e(l)("common.delete")),1)]),_:1},8,["loading"])]),u(e(Y),{show:p.value,"onUpdate:show":L[1]||(L[1]=S=>p.value=S),preset:"card",title:e(l)("models.aliasManageFor",{provider:f.value}),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!0},{default:n(()=>[a("div",wl,o(e(l)("models.aliasHint")),1),a("div",bl,[(c(!0),C(ce,null,_e(V.provider.models,S=>(c(),C("div",{key:S,class:"alias-row"},[a("div",kl,[a("span",Cl,o(r(S)),1),ae(S)?(c(),C("span",Ml,o(e(l)("models.defaultShort")),1)):D("",!0),a("code",Pl,o(S),1)]),u(e(T),{size:"tiny",quaternary:"",onClick:Te=>x(S)},{default:n(()=>[M(o(e(l)("models.aliasEdit")),1)]),_:1},8,["onClick"])]))),128))])]),_:1},8,["show","title"]),u(e(Y),{show:B.value,"onUpdate:show":L[4]||(L[4]=S=>B.value=S),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:n(()=>[a("div",Sl,[u(e(T),{quaternary:"",disabled:!e(g).getModelAlias($.value,K.value),onClick:ie},{default:n(()=>[M(o(e(l)("models.aliasUseOriginal")),1)]),_:1},8,["disabled"]),L[8]||(L[8]=a("div",{class:"model-alias-spacer"},null,-1)),u(e(T),{onClick:L[3]||(L[3]=S=>B.value=!1)},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1}),u(e(T),{type:"primary",onClick:X},{default:n(()=>[M(o(e(l)("common.save")),1)]),_:1})])]),default:n(()=>[u(e(pe),{value:b.value,"onUpdate:value":L[2]||(L[2]=S=>b.value=S),placeholder:e(l)("models.aliasPlaceholder"),clearable:"",onKeydown:Mo(X,["enter"])},null,8,["value","placeholder"]),$.value?(c(),C("div",$l,o(e(l)("models.aliasCanonical",{model:$.value})),1)):D("",!0),a("div",Tl,o(e(l)("models.aliasHint")),1)]),_:1},8,["show","title"]),u(e(Y),{show:v.value,"onUpdate:show":L[7]||(L[7]=S=>v.value=S),preset:"card",title:e(l)("models.manageVisibleModelsFor",{name:f.value}),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!w.value},{default:n(()=>[a("p",Ll,o(e(l)("models.visibilityHint")),1),a("div",Al,o(_.value.length)+"/"+o(E.value.length)+" "+o(e(l)("models.count")),1),a("div",Ol,[u(e(Co),{value:_.value,"onUpdate:value":L[5]||(L[5]=S=>_.value=S)},{default:n(()=>[(c(!0),C(ce,null,_e(E.value,S=>(c(),R(e(To),{key:S,value:S,class:"visibility-model"},{default:n(()=>[a("code",null,o(r(S)),1),i(S)?(c(),C("code",Ul,o(S),1)):D("",!0)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a("div",El,[u(e(T),{size:"small",quaternary:"",disabled:w.value,onClick:Pe},{default:n(()=>[M(o(e(l)("models.showAllModels")),1)]),_:1},8,["disabled"]),u(e(T),{size:"small",quaternary:"",disabled:w.value,onClick:ye},{default:n(()=>[M(o(e(l)("models.clearVisibleModels")),1)]),_:1},8,["disabled"]),L[9]||(L[9]=a("div",{class:"visibility-action-spacer"},null,-1)),u(e(T),{size:"small",disabled:w.value,onClick:L[6]||(L[6]=S=>v.value=!1)},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1},8,["disabled"]),u(e(T),{size:"small",type:"primary",loading:w.value,onClick:Me},{default:n(()=>[M(o(e(l)("common.save")),1)]),_:1},8,["loading"])])]),_:1},8,["show","title","mask-closable"])]))}})})),qo=F((()=>{})),lo,Ro=F((()=>{Nl(),Nl(),qo(),ee(),lo=le(eo,[["__scopeId","data-v-4aed95c5"]])})),Fl,zl,ao,Bl=F((()=>{j(),Ro(),fe(),Q(),Fl={key:0,class:"empty-state"},zl={key:1,class:"providers-grid"},ao=J({__name:"ProvidersPanel",setup(V){const{t}=Z(),l=me();return(P,g)=>e(l).providers.length===0?(c(),C("div",Fl,[g[0]||(g[0]=a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[a("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),a("path",{d:"M2 17l10 5 10-5"}),a("path",{d:"M2 12l10 5 10-5"})],-1)),a("p",null,o(e(t)("models.noProviders")),1)])):(c(),C("div",zl,[(c(!0),C(ce,null,_e(e(l).providers,h=>(c(),R(lo,{key:h.provider,provider:h},null,8,["provider"]))),128))]))}})})),Xo=F((()=>{})),oo,Go=F((()=>{Bl(),Bl(),Xo(),ee(),oo=le(ao,[["__scopeId","data-v-76eec30b"]])}));async function Ho(){return H("/api/hermes/auth/codex/start",{method:"POST"})}async function Wo(V){return H(`/api/hermes/auth/codex/poll/${V}`)}var Yo=F((()=>{xe()})),Il,Vl,Dl,Kl,ql,Rl,Xl,Gl,Hl,Wl,Yl,to,jl=F((()=>{j(),se(),Q(),Yo(),we(),Il={class:"codex-login"},Vl={key:0,class:"codex-login__state"},Dl={key:1,class:"codex-login__state"},Kl={class:"codex-login__hint"},ql={class:"codex-login__code-text"},Rl={key:2,class:"codex-login__state codex-login__state--success"},Xl={key:3,class:"codex-login__state"},Gl={class:"codex-login__error"},Hl={key:4,class:"codex-login__state"},Wl={class:"codex-login__error"},Yl={class:"modal-footer"},to=J({__name:"CodexLoginModal",emits:["close","success"],setup(V,{emit:t}){const{t:l}=Z(),P=t,g=te(),h=y(!0),s=y("idle"),z=y(""),A=y(""),O=y(""),f=y("");let U=null;async function p(){s.value="loading",f.value="";try{const _=await Ho();z.value=_.user_code,A.value=_.verification_url,O.value=_.session_id,s.value="waiting",B()}catch(_){s.value="error";const m=_.message||"";try{const E=m.match(/\{[\s\S]*\}$/);E?f.value=JSON.parse(E[0]).error||m:f.value=m}catch{f.value=m}g.error(f.value)}}function B(){K(),U=setTimeout(async()=>{try{const _=await Wo(O.value);_.status==="pending"?B():_.status==="approved"?(s.value="approved",g.success(l("models.codexApproved")),setTimeout(()=>{h.value=!1,setTimeout(()=>P("success"),200)},1e3)):_.status==="expired"?s.value="expired":_.status==="error"&&(s.value="error",f.value=_.error||"Unknown error")}catch{B()}},3e3)}function K(){U&&(clearTimeout(U),U=null)}function $(){K(),h.value=!1,setTimeout(()=>P("close"),200)}async function b(){await be(z.value)?g.success(l("models.codexCopyCode")):g.error(l("models.codexCopyCode")+" ✗")}function v(){window.open(A.value,"_blank")}function w(){s.value="idle",z.value="",A.value="",O.value="",f.value="",p()}return ge(()=>{K()}),p(),(_,m)=>{const E=$o("NSpin");return c(),R(e(Y),{show:h.value,"onUpdate:show":m[0]||(m[0]=G=>h.value=G),preset:"card",title:e(l)("models.codexLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":s.value!=="waiting",onAfterLeave:m[1]||(m[1]=G=>P("close"))},{footer:n(()=>[a("div",Yl,[u(e(T),{disabled:s.value==="waiting",onClick:$},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:n(()=>[a("div",Il,[s.value==="idle"||s.value==="loading"?(c(),C("div",Vl,[u(E,{size:"small"})])):s.value==="waiting"?(c(),C("div",Dl,[a("p",Kl,o(e(l)("models.codexWaiting")),1),a("div",{class:"codex-login__code",onClick:b},[a("span",ql,o(z.value),1),m[2]||(m[2]=a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),a("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),u(e(T),{type:"primary",block:"",onClick:v},{icon:n(()=>[...m[3]||(m[3]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),a("polyline",{points:"15 3 21 3 21 9"}),a("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:n(()=>[M(" "+o(e(l)("models.codexOpenLink")),1)]),_:1})])):s.value==="approved"?(c(),C("div",Rl,[m[4]||(m[4]=a("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),a("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),a("p",null,o(e(l)("models.codexApproved")),1)])):s.value==="expired"?(c(),C("div",Xl,[a("p",Gl,o(e(l)("models.codexExpired")),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):s.value==="error"?(c(),C("div",Hl,[a("p",Wl,o(f.value),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):D("",!0)])]),_:1},8,["show","title","mask-closable"])}}})})),jo=F((()=>{})),so,Jo=F((()=>{jl(),jl(),jo(),ee(),so=le(to,[["__scopeId","data-v-b8a659c8"]])}));async function Qo(){return H("/api/hermes/auth/nous/start",{method:"POST"})}async function Zo(V){return H(`/api/hermes/auth/nous/poll/${V}`)}var et=F((()=>{xe()})),Jl,Ql,Zl,ea,la,aa,oa,ta,sa,ia,na,io,ra=F((()=>{j(),se(),Q(),et(),we(),Jl={class:"nous-login"},Ql={key:0,class:"nous-login__state"},Zl={key:1,class:"nous-login__state"},ea={class:"nous-login__hint"},la={class:"nous-login__code-text"},aa={key:2,class:"nous-login__state nous-login__state--success"},oa={key:3,class:"nous-login__state"},ta={class:"nous-login__error"},sa={key:4,class:"nous-login__state"},ia={class:"nous-login__error"},na={class:"modal-footer"},io=J({__name:"NousLoginModal",emits:["close","success"],setup(V,{emit:t}){const{t:l}=Z(),P=t,g=te(),h=y(!0),s=y("idle"),z=y(""),A=y(""),O=y(""),f=y("");let U=null;async function p(){s.value="loading",f.value="";try{const _=await Qo();z.value=_.user_code,A.value=_.verification_url,O.value=_.session_id,s.value="waiting",B()}catch(_){s.value="error";const m=_.message||"";try{const E=m.match(/\{[\s\S]*\}$/);E?f.value=JSON.parse(E[0]).error||m:f.value=m}catch{f.value=m}g.error(f.value)}}function B(){K(),U=setTimeout(async()=>{try{const _=await Zo(O.value);_.status==="pending"?B():_.status==="approved"?(s.value="approved",g.success(l("models.nousApproved")),setTimeout(()=>{h.value=!1,setTimeout(()=>P("success"),200)},1e3)):_.status==="expired"?s.value="expired":_.status==="denied"?(s.value="error",f.value=l("models.nousDenied")):_.status==="error"&&(s.value="error",f.value=_.error||"Unknown error")}catch{B()}},3e3)}function K(){U&&(clearTimeout(U),U=null)}function $(){K(),h.value=!1,setTimeout(()=>P("close"),200)}async function b(){await be(z.value)?g.success(l("models.nousCopyCode")):g.error(l("models.nousCopyCode")+" ✗")}function v(){window.open(A.value,"_blank")}function w(){s.value="idle",z.value="",A.value="",O.value="",f.value="",p()}return ge(()=>{K()}),p(),(_,m)=>(c(),R(e(Y),{show:h.value,"onUpdate:show":m[0]||(m[0]=E=>h.value=E),preset:"card",title:e(l)("models.nousLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":s.value!=="waiting",onAfterLeave:m[1]||(m[1]=E=>P("close"))},{footer:n(()=>[a("div",na,[u(e(T),{disabled:s.value==="waiting",onClick:$},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:n(()=>[a("div",Jl,[s.value==="idle"||s.value==="loading"?(c(),C("div",Ql,[u(e(ve),{size:"small"})])):s.value==="waiting"?(c(),C("div",Zl,[a("p",ea,o(e(l)("models.nousWaiting")),1),a("div",{class:"nous-login__code",onClick:b},[a("span",la,o(z.value),1),m[2]||(m[2]=a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),a("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),u(e(T),{type:"primary",block:"",onClick:v},{icon:n(()=>[...m[3]||(m[3]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),a("polyline",{points:"15 3 21 3 21 9"}),a("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:n(()=>[M(" "+o(e(l)("models.nousOpenLink")),1)]),_:1})])):s.value==="approved"?(c(),C("div",aa,[m[4]||(m[4]=a("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),a("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),a("p",null,o(e(l)("models.nousApproved")),1)])):s.value==="expired"?(c(),C("div",oa,[a("p",ta,o(e(l)("models.nousExpired")),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):s.value==="error"?(c(),C("div",sa,[a("p",ia,o(f.value),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):D("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),lt=F((()=>{})),no,at=F((()=>{ra(),ra(),lt(),ee(),no=le(io,[["__scopeId","data-v-13765003"]])})),ua,da,va,ca,_a,pa,ma,fa,ya,ha,ga,ro,xa=F((()=>{j(),se(),Q(),ke(),we(),ua={class:"copilot-login"},da={key:0,class:"copilot-login__state"},va={key:1,class:"copilot-login__state"},ca={class:"copilot-login__hint"},_a={class:"copilot-login__code-text"},pa={key:2,class:"copilot-login__state copilot-login__state--success"},ma={key:3,class:"copilot-login__state"},fa={class:"copilot-login__error"},ya={key:4,class:"copilot-login__state"},ha={class:"copilot-login__error"},ga={class:"modal-footer"},ro=J({__name:"CopilotLoginModal",emits:["close","success"],setup(V,{emit:t}){const{t:l}=Z(),P=t,g=te(),h=y(!0),s=y("idle"),z=y(""),A=y(""),O=y(""),f=y("");let U=null;async function p(){s.value="loading",f.value="";try{const _=await Io();z.value=_.user_code,A.value=_.verification_url,O.value=_.session_id,s.value="waiting",B()}catch(_){s.value="error";const m=_?.message||"";try{const E=m.match(/\{[\s\S]*\}$/);E?f.value=JSON.parse(E[0]).error||m:f.value=m}catch{f.value=m}g.error(f.value)}}function B(){K(),U=setTimeout(async()=>{try{const _=await Vo(O.value);_.status==="pending"?B():_.status==="approved"?(s.value="approved",g.success(l("models.copilotApproved")),setTimeout(()=>{h.value=!1,setTimeout(()=>P("success"),200)},1e3)):_.status==="expired"?s.value="expired":_.status==="denied"?(s.value="error",f.value=l("models.copilotDenied")):_.status==="error"&&(s.value="error",f.value=_.error||"Unknown error")}catch{B()}},3e3)}function K(){U&&(clearTimeout(U),U=null)}function $(){K(),h.value=!1,setTimeout(()=>P("close"),200)}async function b(){await be(z.value)?g.success(l("models.copilotCopyCode")):g.error(l("models.copilotCopyCode")+" ✗")}function v(){window.open(A.value,"_blank")}function w(){s.value="idle",z.value="",A.value="",O.value="",f.value="",p()}return ge(()=>{K()}),p(),(_,m)=>(c(),R(e(Y),{show:h.value,"onUpdate:show":m[0]||(m[0]=E=>h.value=E),preset:"card",title:e(l)("models.copilotLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":s.value!=="waiting",onAfterLeave:m[1]||(m[1]=E=>P("close"))},{footer:n(()=>[a("div",ga,[u(e(T),{disabled:s.value==="waiting",onClick:$},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:n(()=>[a("div",ua,[s.value==="idle"||s.value==="loading"?(c(),C("div",da,[u(e(ve),{size:"small"})])):s.value==="waiting"?(c(),C("div",va,[a("p",ca,o(e(l)("models.copilotWaiting")),1),a("div",{class:"copilot-login__code",onClick:b},[a("span",_a,o(z.value),1),m[2]||(m[2]=a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),a("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1))]),u(e(T),{type:"primary",block:"",onClick:v},{icon:n(()=>[...m[3]||(m[3]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"}),a("polyline",{points:"15 3 21 3 21 9"}),a("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])]),default:n(()=>[M(" "+o(e(l)("models.copilotOpenLink")),1)]),_:1})])):s.value==="approved"?(c(),C("div",pa,[m[4]||(m[4]=a("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),a("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),a("p",null,o(e(l)("models.copilotApproved")),1)])):s.value==="expired"?(c(),C("div",ma,[a("p",fa,o(e(l)("models.copilotExpired")),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):s.value==="error"?(c(),C("div",ya,[a("p",ha,o(f.value),1),u(e(T),{size:"small",onClick:w},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):D("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),ot=F((()=>{})),uo,tt=F((()=>{xa(),xa(),ot(),ee(),uo=le(ro,[["__scopeId","data-v-fe3fcc7e"]])}));async function st(){return H("/api/hermes/auth/xai/start",{method:"POST"})}async function it(V){return H(`/api/hermes/auth/xai/poll/${V}`)}var nt=F((()=>{xe()})),wa,ba,ka,Ca,Ma,Pa,$a,Ta,Sa,La,vo,Aa=F((()=>{j(),se(),Q(),nt(),we(),wa={class:"xai-login"},ba={key:0,class:"xai-login__state"},ka={key:1,class:"xai-login__state"},Ca={class:"xai-login__hint"},Ma={key:2,class:"xai-login__state xai-login__state--success"},Pa={key:3,class:"xai-login__state"},$a={class:"xai-login__error"},Ta={key:4,class:"xai-login__state"},Sa={class:"xai-login__error"},La={class:"modal-footer"},vo=J({__name:"XaiOAuthLoginModal",emits:["close","success"],setup(V,{emit:t}){const{t:l}=Z(),P=t,g=te(),h=y(!0),s=y("idle"),z=y(""),A=y(""),O=y("");let f=null;async function U(){s.value="loading",O.value="";try{const w=await st();z.value=w.authorization_url,A.value=w.session_id,s.value="waiting",window.open(z.value,"_blank"),p()}catch(w){s.value="error",O.value=w?.message||String(w),g.error(O.value)}}function p(){B(),f=setTimeout(async()=>{try{const w=await it(A.value);w.status==="pending"?p():w.status==="approved"?(s.value="approved",g.success(l("models.xaiApproved")),setTimeout(()=>{h.value=!1,setTimeout(()=>P("success"),200)},1e3)):w.status==="expired"?s.value="expired":w.status==="error"&&(s.value="error",O.value=w.error||"Unknown error")}catch{p()}},2e3)}function B(){f&&clearTimeout(f),f=null}function K(){B(),h.value=!1,setTimeout(()=>P("close"),200)}function $(){window.open(z.value,"_blank")}async function b(){await be(z.value)?g.success(l("common.copied")):g.error(l("chat.copyFailed"))}function v(){s.value="idle",z.value="",A.value="",O.value="",U()}return ge(B),U(),(w,_)=>(c(),R(e(Y),{show:h.value,"onUpdate:show":_[0]||(_[0]=m=>h.value=m),preset:"card",title:e(l)("models.xaiLoginTitle"),style:{width:"min(440px, calc(100vw - 32px))"},"mask-closable":s.value!=="waiting",onAfterLeave:_[1]||(_[1]=m=>P("close"))},{footer:n(()=>[a("div",La,[u(e(T),{disabled:s.value==="waiting",onClick:K},{default:n(()=>[M(o(e(l)("common.cancel")),1)]),_:1},8,["disabled"])])]),default:n(()=>[a("div",wa,[s.value==="idle"||s.value==="loading"?(c(),C("div",ba,[u(e(ve),{size:"small"})])):s.value==="waiting"?(c(),C("div",ka,[a("p",Ca,o(e(l)("models.xaiWaiting")),1),u(e(T),{type:"primary",block:"",onClick:$},{default:n(()=>[M(o(e(l)("models.xaiOpenLink")),1)]),_:1}),u(e(T),{block:"",onClick:b},{default:n(()=>[M(o(e(l)("models.xaiCopyLink")),1)]),_:1})])):s.value==="approved"?(c(),C("div",Ma,[_[2]||(_[2]=a("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),a("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),a("p",null,o(e(l)("models.xaiApproved")),1)])):s.value==="expired"?(c(),C("div",Pa,[a("p",$a,o(e(l)("models.xaiExpired")),1),u(e(T),{size:"small",onClick:v},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):s.value==="error"?(c(),C("div",Ta,[a("p",Sa,o(O.value),1),u(e(T),{size:"small",onClick:v},{default:n(()=>[M(o(e(l)("common.retry")),1)]),_:1})])):D("",!0)])]),_:1},8,["show","title","mask-closable"]))}})})),rt=F((()=>{})),co,ut=F((()=>{Aa(),Aa(),rt(),ee(),co=le(vo,[["__scopeId","data-v-73a4b1b7"]])}));function Oa(V){const t=V.trim();if(!t)return!1;try{const l=new URL(t).hostname.toLowerCase();return l==="apikey.fun"||l.endsWith(".apikey.fun")}catch{return/^(?:https?:\/\/)?(?:[a-z0-9-]+\.)*apikey\.fun(?:\/|$)/i.test(t)}}function Ua(V){const t=V.trim().toLowerCase();return t?t.startsWith("claude")?"fun-claude":t.startsWith("gpt")||t.includes("codex")?"fun-codex":null:null}var dt=F((()=>{})),Ea,Na,Fa,za,Ba,Le,Ia,Ae,Va,_o,Da=F((()=>{j(),se(),fe(),Q(),Jo(),at(),tt(),ut(),ke(),Lo(),dt(),Ea={style:{display:"flex",gap:"12px"}},Na={style:{display:"flex",gap:"8px",width:"100%"}},Fa={class:"modal-footer"},za="openai-codex",Ba="nous",Le="copilot",Ia="cliproxyapi",Ae="xai-oauth",Va="alibaba-coding-plan",_o=J({__name:"ProviderFormModal",emits:["close","saved"],setup(V,{emit:t}){const{t:l}=Z(),P=t,g=me(),h=te(),s=Ya(),z=y(!0),A=y(!1),O=y(!1),f=y(!1),U=y(!1),p=y(!1),B=y(!1),K=y(!1),$=y("preset"),b=y(null),v=y({name:"",base_url:"",api_key:"",model:"",context_length:null}),w=y([]),_=new Set(["fun-codex","fun-claude"]),m={intl:"https://coding-intl.dashscope.aliyuncs.com/v1",cn:"https://coding.dashscope.aliyuncs.com/v1"},E=q(()=>b.value===za),G=q(()=>b.value===Ba),ue=q(()=>b.value===Le),de=q(()=>b.value===Ia),W=q(()=>b.value===Ae),ae=q(()=>b.value===Va),i=y("intl"),r=q(()=>g.allProviders.map(k=>({label:k.label,value:k.provider}))),x=q(()=>b.value?g.allProviders.find(k=>k.provider===b.value):null),X=q(()=>!!x.value?.base_url_env),ie=q(()=>!!v.value.base_url.trim()&&($.value==="custom"||$.value==="preset"&&!E.value&&!G.value&&!ue.value&&!W.value));async function Ce(k,d){const N=v.value.api_key,ne=v.value.context_length;$.value="preset",await Be(),b.value=k,await Be(),v.value.api_key=N,v.value.context_length=ne,d&&(w.value.some(Se=>Se.value===d)||(w.value=[{label:d,value:d},...w.value]),v.value.model=d)}async function Me(k){if($.value!=="custom"||!Oa(v.value.base_url))return;const d=Ua(k);d&&await Ce(d,k)}function Pe(k){const d=k.replace(/^https?:\/\//,"").replace(/\/v1\/?$/,"").split("/")[0];return d.includes("localhost")||d.includes("127.0.0.1")?l("models.local",{host:d}):d.charAt(0).toUpperCase()+d.slice(1)}function ye(k){return`custom:${k.trim().toLowerCase().replace(/ /g,"-")}`}re(b,k=>{if(v.value.model="",i.value="intl",k){const d=x.value;d&&(v.value.name=d.label,v.value.base_url=d.base_url,w.value=d.models.map(N=>({label:N,value:N})),d.models.length>0&&(v.value.model=d.models[0])),k===Le?Ne():k===Ae&&(B.value=!0)}}),re(i,k=>{ae.value&&(v.value.base_url=m[k])}),re(()=>v.value.base_url,k=>{$.value==="custom"&&k.trim()&&!v.value.name&&(v.value.name=Pe(k.trim()))}),re(()=>v.value.model,k=>{Me(k)}),re($,()=>{w.value=[],v.value={name:"",base_url:"",api_key:"",model:"",context_length:null},b.value=null}),Ue(()=>{g.providers.length===0&&g.fetchProviders()});async function $e(){const{base_url:k}=v.value;if(!k.trim()){h.warning(l("models.enterBaseUrl"));return}O.value=!0;try{const d=$.value==="preset"?b.value&&_.has(b.value)?ye(b.value):b.value||void 0:v.value.name.trim()?ye(v.value.name):void 0,N=$.value==="preset"?x.value?.label||d:v.value.name.trim()||d;w.value=(await So({base_url:k.trim(),api_key:v.value.api_key.trim(),provider:d,label:N,update_cache:!!d})).models.map(ne=>({label:ne,value:ne})),w.value.length>0&&!v.value.model&&(v.value.model=w.value[0].value),h.success(l("models.foundModels",{count:w.value.length}))}catch(d){h.error(l("models.fetchFailed")+": "+d.message)}finally{O.value=!1}}async function I(){if($.value==="preset"&&!b.value){h.warning(l("models.selectProviderRequired"));return}if(E.value){f.value=!0;return}if(G.value){U.value=!0;return}if(ue.value){Ne();return}if(W.value){B.value=!0;return}if(!v.value.base_url.trim()){h.warning(l("models.baseUrlRequired"));return}if(!v.value.api_key.trim()&&!de.value&&!W.value){h.warning(l("models.apiKeyRequired"));return}if(!v.value.model){h.warning(l("models.modelRequired"));return}A.value=!0;try{const k=v.value.context_length??void 0,d=$.value==="custom"&&Oa(v.value.base_url)?Ua(v.value.model):null,N=$.value==="preset"?b.value:d,ne=d?g.allProviders.find(bo=>bo.provider===d):null,Se=ne?.base_url||v.value.base_url.trim(),wo=ne?.label||v.value.name.trim();await g.addProvider({name:wo,base_url:Se,api_key:v.value.api_key.trim(),model:v.value.model,context_length:k,providerKey:N}),h.success(l("models.providerAdded")),P("saved")}catch(k){h.error(k.message)}finally{A.value=!1}}async function L(){f.value=!1,h.success(l("models.providerAdded")),P("saved")}async function S(){U.value=!1,h.success(l("models.providerAdded")),P("saved")}async function Te(){p.value=!1,h.success(l("models.providerAdded")),P("saved")}async function fo(){B.value=!1,h.success(l("models.providerAdded")),P("saved")}function yo(k){return k==="env"?l("models.copilotAddSourceEnv"):k==="gh-cli"?l("models.copilotAddSourceGhCli"):k==="apps-json"?l("models.copilotAddSourceAppsJson"):""}async function Ne(){if(!K.value){K.value=!0;try{const k=await Ee();if(k.has_token){const d=yo(k.source);s.success({title:l("models.copilotAddDetectedTitle"),content:d?`${l("models.copilotAddDetected")}
4
4
 
@@ -1,3 +1,3 @@
1
- import{n as k}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as A,An as be,Dn as xe,Pn as C,Qn as p,Qt as I,Tn as u,Wn as Me,Wt as ue,an as f,dn as ce,er as de,in as L,ln as D,nn as y,on as m,ot as $e,rn as s,rr as d,t as Ce,un as N,w as we,wn as Se,wt as Te}from"./ui-vendor-dYn1tJGA.js";import{c as me,l as _e}from"./vue-vendor-DZ4A_GHn.js";import{n as he,t as pe}from"./_plugin-vue_export-helper-uEMLHKI8.js";import{J as Pe,Q as Be,X as Ie,Y as Le,Z as De,q as Ae}from"./index-1yNqMnGv.js";function je(e){return e?ve[e]||e:""}function ge(e){if(!e)return"";const g=new Date(e),r=new Date;return g.toDateString()===r.toDateString()?g.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):g.toLocaleDateString([],{month:"short",day:"numeric"})}function Ze(e){return ge(e*1e3)}var ve,Ne=k((()=>{ve={telegram:"Telegram",api_server:"API Server",cli:"CLI",coding_agent:"Coding Agent",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"}})),E,O,Q,W,q,K,U,V,z,H,X,Y,F,G,fe,J=k((()=>{ue(),Ce(),me(),De(),Le(),Pe(),Ne(),E={key:0,class:"session-item-checkbox"},O={class:"session-item-content"},Q={class:"session-item-title-row"},W={key:0,class:"session-item-pin","aria-hidden":"true"},q={class:"session-item-title"},K={key:0,class:"session-item-streaming",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},U={class:"session-item-agent-row"},V=["src","alt"],z={class:"session-item-agent-name"},H={class:"session-item-meta"},X=["title"],Y={class:"session-item-time"},F={key:0,class:"session-item-profile"},G={class:"session-item-profile-name"},fe=ce({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean},showProfile:{type:Boolean,default:!0},to:{}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:g}){const r=e,v=g,{t:b}=_e(),x=Be(),P=Ie(),M=y(()=>r.session.model?x.displayModelName(r.session.model,r.session.provider):""),_=y(()=>r.session.profile||"default"),c=y(()=>P.profiles.find(o=>o.name===_.value)?.avatar),t=y(()=>!!x.profileModelGroups.find(o=>o.profile===_.value)?.groups?.some(o=>o.models.length>0)),n=y(()=>x.profileModelGroups.length>0&&!t.value),a=y(()=>r.session.source==="coding_agent"?r.session.codingAgentId==="codex"||r.session.agent==="codex"?{label:"Codex",src:"/coding-agents/codex-openai.png"}:{label:"Claude Code",src:"/coding-agents/claude-code.svg"}:{label:"Hermes",src:"/coding-agents/hermes.png"});let i=null;const h=Me(!1);function $(o){h.value=!1,i=setTimeout(()=>{h.value=!0;const l=o.touches[0];v("contextmenu",new MouseEvent("contextmenu",{clientX:l.clientX,clientY:l.clientY,bubbles:!0}))},500)}function w(){i&&(clearTimeout(i),i=null)}function S(){i&&(clearTimeout(i),i=null)}function T(o){return!!o&&(o.metaKey||o.ctrlKey||o.shiftKey||o.altKey||o.button!==0)}function ke(o){if(h.value){h.value=!1,o?.preventDefault();return}T(o)||(r.to&&!r.selectable&&o?.preventDefault(),v("select"))}return Se(()=>{i&&clearTimeout(i)}),(o,l)=>(u(),L(be(e.selectable||!e.to?"button":"a"),{class:de(["session-item",{active:e.active,"batch-mode":e.selectable,"missing-models":n.value}]),"aria-current":e.active?"page":void 0,href:e.selectable?void 0:e.to,type:e.selectable||!e.to?"button":void 0,onClick:ke,onContextmenu:l[4]||(l[4]=B=>v("contextmenu",B)),onTouchstart:$,onTouchend:w,onTouchmove:S},{default:C(()=>[e.selectable?(u(),m("div",E,[N(p(Te),{checked:e.selected,onClick:l[0]||(l[0]=I(B=>v("toggle-select"),["stop"]))},null,8,["checked"])])):f("",!0),s("div",O,[s("span",Q,[e.pinned?(u(),m("span",W,[...l[5]||(l[5]=[s("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M12 17v5"}),s("path",{d:"M5 8l14 0"}),s("path",{d:"M8 3l8 0 0 5 3 5-14 0 3-5z"})],-1)])])):f("",!0),s("span",q,[e.streaming?(u(),m("svg",K,[...l[6]||(l[6]=[s("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"},null,-1)])])):f("",!0),D(" "+d(e.session.title),1)]),n.value?(u(),L(p($e),{key:1,trigger:"click",placement:"top"},{trigger:C(()=>[s("button",{class:"session-item-warning",type:"button",onClick:l[1]||(l[1]=I(()=>{},["stop","prevent"]))}," ! ")]),default:C(()=>[D(" "+d(p(b)("chat.profileMissingModelsTip",{profile:_.value})),1)]),_:1})):f("",!0)]),s("span",U,[s("img",{class:"session-item-agent-logo",src:a.value.src,alt:a.value.label},null,8,V),s("span",z,d(a.value.label),1)]),s("span",H,[M.value?(u(),m("span",{key:0,class:"session-item-model",title:e.session.model},d(M.value),9,X)):f("",!0),s("span",Y,d(p(ge)(e.session.createdAt)),1)]),r.showProfile?(u(),m("span",F,[N(Ae,{class:"session-item-profile-avatar",name:_.value,avatar:c.value,size:16},null,8,["name","avatar"]),s("span",G,d(_.value),1)])):f("",!0)]),e.canDelete&&!e.selectable?(u(),L(p(we),{key:1,onPositiveClick:l[3]||(l[3]=B=>v("delete"))},{trigger:C(()=>[s("button",{class:"session-item-delete",onClick:l[2]||(l[2]=I(()=>{},["stop","prevent"]))},[...l[7]||(l[7]=[s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:C(()=>[D(" "+d(p(b)("chat.deleteSession")),1)]),_:1})):f("",!0)]),_:1},40,["class","aria-current","href","type"]))}})})),Ee=k((()=>{})),Oe,et=k((()=>{J(),J(),Ee(),he(),Oe=pe(fe,[["__scopeId","data-v-8f9d4864"]])})),R,j,Z,ee,te,se,ne,ie,oe,le,ae,ye,re=k((()=>{ue(),me(),R={class:"outline-panel"},j={class:"outline-header"},Z={class:"outline-title"},ee={class:"outline-content"},te=["onClick"],se={class:"user-question"},ne={class:"q-text"},ie=["onClick"],oe={class:"heading-item"},le={class:"heading-text"},ae={key:1,class:"outline-empty"},ye=ce({__name:"OutlinePanel",props:{messages:{}},emits:["navigate"],setup(e,{emit:g}){const r=e,v=g,{t:b}=_e();function x(c,t){const n=[],a=c.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
1
+ import{n as k}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as A,An as be,Dn as xe,Pn as C,Qn as p,Qt as I,Tn as u,Wn as Me,Wt as ue,an as f,dn as ce,er as de,in as L,ln as D,nn as y,on as m,ot as $e,rn as s,rr as d,t as Ce,un as N,w as we,wn as Se,wt as Te}from"./ui-vendor-dYn1tJGA.js";import{c as me,l as _e}from"./vue-vendor-DZ4A_GHn.js";import{n as he,t as pe}from"./_plugin-vue_export-helper-CwNymSRn.js";import{J as Pe,Q as Be,X as Ie,Y as Le,Z as De,q as Ae}from"./index-DW8M4rjb.js";function je(e){return e?ve[e]||e:""}function ge(e){if(!e)return"";const g=new Date(e),r=new Date;return g.toDateString()===r.toDateString()?g.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):g.toLocaleDateString([],{month:"short",day:"numeric"})}function Ze(e){return ge(e*1e3)}var ve,Ne=k((()=>{ve={telegram:"Telegram",api_server:"API Server",cli:"CLI",coding_agent:"Coding Agent",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"}})),E,O,Q,W,q,K,U,V,z,H,X,Y,F,G,fe,J=k((()=>{ue(),Ce(),me(),De(),Le(),Pe(),Ne(),E={key:0,class:"session-item-checkbox"},O={class:"session-item-content"},Q={class:"session-item-title-row"},W={key:0,class:"session-item-pin","aria-hidden":"true"},q={class:"session-item-title"},K={key:0,class:"session-item-streaming",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},U={class:"session-item-agent-row"},V=["src","alt"],z={class:"session-item-agent-name"},H={class:"session-item-meta"},X=["title"],Y={class:"session-item-time"},F={key:0,class:"session-item-profile"},G={class:"session-item-profile-name"},fe=ce({__name:"SessionListItem",props:{session:{},active:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean},streaming:{type:Boolean},selectable:{type:Boolean},selected:{type:Boolean},showProfile:{type:Boolean,default:!0},to:{}},emits:["select","contextmenu","delete","toggle-select"],setup(e,{emit:g}){const r=e,v=g,{t:b}=_e(),x=Be(),P=Ie(),M=y(()=>r.session.model?x.displayModelName(r.session.model,r.session.provider):""),_=y(()=>r.session.profile||"default"),c=y(()=>P.profiles.find(o=>o.name===_.value)?.avatar),t=y(()=>!!x.profileModelGroups.find(o=>o.profile===_.value)?.groups?.some(o=>o.models.length>0)),n=y(()=>x.profileModelGroups.length>0&&!t.value),a=y(()=>r.session.source==="coding_agent"?r.session.codingAgentId==="codex"||r.session.agent==="codex"?{label:"Codex",src:"/coding-agents/codex-openai.png"}:{label:"Claude Code",src:"/coding-agents/claude-code.svg"}:{label:"Hermes",src:"/coding-agents/hermes.png"});let i=null;const h=Me(!1);function $(o){h.value=!1,i=setTimeout(()=>{h.value=!0;const l=o.touches[0];v("contextmenu",new MouseEvent("contextmenu",{clientX:l.clientX,clientY:l.clientY,bubbles:!0}))},500)}function w(){i&&(clearTimeout(i),i=null)}function S(){i&&(clearTimeout(i),i=null)}function T(o){return!!o&&(o.metaKey||o.ctrlKey||o.shiftKey||o.altKey||o.button!==0)}function ke(o){if(h.value){h.value=!1,o?.preventDefault();return}T(o)||(r.to&&!r.selectable&&o?.preventDefault(),v("select"))}return Se(()=>{i&&clearTimeout(i)}),(o,l)=>(u(),L(be(e.selectable||!e.to?"button":"a"),{class:de(["session-item",{active:e.active,"batch-mode":e.selectable,"missing-models":n.value}]),"aria-current":e.active?"page":void 0,href:e.selectable?void 0:e.to,type:e.selectable||!e.to?"button":void 0,onClick:ke,onContextmenu:l[4]||(l[4]=B=>v("contextmenu",B)),onTouchstart:$,onTouchend:w,onTouchmove:S},{default:C(()=>[e.selectable?(u(),m("div",E,[N(p(Te),{checked:e.selected,onClick:l[0]||(l[0]=I(B=>v("toggle-select"),["stop"]))},null,8,["checked"])])):f("",!0),s("div",O,[s("span",Q,[e.pinned?(u(),m("span",W,[...l[5]||(l[5]=[s("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M12 17v5"}),s("path",{d:"M5 8l14 0"}),s("path",{d:"M8 3l8 0 0 5 3 5-14 0 3-5z"})],-1)])])):f("",!0),s("span",q,[e.streaming?(u(),m("svg",K,[...l[6]||(l[6]=[s("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"},null,-1)])])):f("",!0),D(" "+d(e.session.title),1)]),n.value?(u(),L(p($e),{key:1,trigger:"click",placement:"top"},{trigger:C(()=>[s("button",{class:"session-item-warning",type:"button",onClick:l[1]||(l[1]=I(()=>{},["stop","prevent"]))}," ! ")]),default:C(()=>[D(" "+d(p(b)("chat.profileMissingModelsTip",{profile:_.value})),1)]),_:1})):f("",!0)]),s("span",U,[s("img",{class:"session-item-agent-logo",src:a.value.src,alt:a.value.label},null,8,V),s("span",z,d(a.value.label),1)]),s("span",H,[M.value?(u(),m("span",{key:0,class:"session-item-model",title:e.session.model},d(M.value),9,X)):f("",!0),s("span",Y,d(p(ge)(e.session.createdAt)),1)]),r.showProfile?(u(),m("span",F,[N(Ae,{class:"session-item-profile-avatar",name:_.value,avatar:c.value,size:16},null,8,["name","avatar"]),s("span",G,d(_.value),1)])):f("",!0)]),e.canDelete&&!e.selectable?(u(),L(p(we),{key:1,onPositiveClick:l[3]||(l[3]=B=>v("delete"))},{trigger:C(()=>[s("button",{class:"session-item-delete",onClick:l[2]||(l[2]=I(()=>{},["stop","prevent"]))},[...l[7]||(l[7]=[s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:C(()=>[D(" "+d(p(b)("chat.deleteSession")),1)]),_:1})):f("",!0)]),_:1},40,["class","aria-current","href","type"]))}})})),Ee=k((()=>{})),Oe,et=k((()=>{J(),J(),Ee(),he(),Oe=pe(fe,[["__scopeId","data-v-8f9d4864"]])})),R,j,Z,ee,te,se,ne,ie,oe,le,ae,ye,re=k((()=>{ue(),me(),R={class:"outline-panel"},j={class:"outline-header"},Z={class:"outline-title"},ee={class:"outline-content"},te=["onClick"],se={class:"user-question"},ne={class:"q-text"},ie=["onClick"],oe={class:"heading-item"},le={class:"heading-text"},ae={key:1,class:"outline-empty"},ye=ce({__name:"OutlinePanel",props:{messages:{}},emits:["navigate"],setup(e,{emit:g}){const r=e,v=g,{t:b}=_e();function x(c,t){const n=[],a=c.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
2
2
  `);let i=0;for(const h of a){const $=h.trim(),w=$.match(/^#\s+(.+)/),S=$.match(/^##\s+(.+)/),T=$.match(/^###\s+(.+)/);w?(i++,n.push({id:`outline-${t}-h${i}`,type:"outline",content:w[1].trim(),messageId:t,level:1,anchorId:`msg-${t}-heading-${i}`})):S?(i++,n.push({id:`outline-${t}-h${i}`,type:"outline",content:S[1].trim(),messageId:t,level:2,anchorId:`msg-${t}-heading-${i}`})):T&&(i++,n.push({id:`outline-${t}-h${i}`,type:"outline",content:T[1].trim(),messageId:t,level:3,anchorId:`msg-${t}-heading-${i}`}))}return n}function P(c){const t=c.replace(/<think>[\s\S]*?<\/think>/g,"").split(`
3
3
  `)[0]||"";return t.length>50?t.slice(0,50)+"...":t||b("chat.outlineUserQuestion")}const M=y(()=>{const c=[];let t=0;const n=r.messages.filter(a=>a.role==="user"||a.role==="assistant");for(;t<n.length;){const a=n[t];if(a.role==="user"){for(c.push({id:`user-${a.id}`,type:"user",content:P(a.content||""),messageId:a.id,level:0,anchorId:`message-${a.id}`}),t++;t<n.length&&n[t].role!=="assistant";)t++;if(t<n.length){const i=n[t],h=x(i.content||"",i.id);c.push(...h)}}t++}return c});function _(c){v("navigate",{messageId:c.messageId,anchorId:c.anchorId})}return(c,t)=>(u(),m("div",R,[s("div",j,[s("span",Z,d(p(b)("chat.outlineTitle")),1)]),s("div",ee,[M.value.length>0?(u(!0),m(A,{key:0},xe(M.value,n=>(u(),m(A,{key:n.id},[n.type==="user"?(u(),m("div",{key:0,class:"outline-item user-item",onClick:a=>_(n)},[s("div",se,[t[0]||(t[0]=s("span",{class:"q-label"},"Q:",-1)),s("span",ne,d(n.content),1)])],8,te)):(u(),m("div",{key:1,class:de(["outline-item outline-heading-item",`level-${n.level}`]),onClick:a=>_(n)},[s("div",oe,[s("span",le,d(n.content),1)])],10,ie))],64))),128)):(u(),m("div",ae,d(p(b)("chat.outlineEmpty")),1))])]))}})})),Qe=k((()=>{})),We,tt=k((()=>{re(),re(),Qe(),he(),We=pe(ye,[["__scopeId","data-v-5fd5256e"]])}));export{Ze as a,et as i,tt as n,je as o,Oe as r,Ne as s,We as t};
@@ -1 +1 @@
1
- import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as C,Cn as ge,Dn as M,Ot as $,Pn as w,Qn as a,Tn as u,V as be,Wn as P,Wt as we,an as h,dn as Pe,er as S,g as ke,ln as x,nn as y,nr as R,on as m,rn as e,rr as s,t as Be,un as k,xn as Ce}from"./ui-vendor-dYn1tJGA.js";import{c as Me,l as $e}from"./vue-vendor-DZ4A_GHn.js";import{f as Se,n as xe,t as Re,u as Ve}from"./_plugin-vue_export-helper-uEMLHKI8.js";async function Ie(){return Se("/api/hermes/performance/runtime")}var De=g((()=>{Ve()})),V,I,D,F,N,U,W,T,z,A,O,L,j,q,E,G,K,Q,H,J,X,Y,Z,ee,se,ne,te,re,ae,le,ie,oe,ue,ce,me=g((()=>{we(),Be(),Me(),De(),V={class:"performance-view"},I={class:"page-header"},D={class:"header-title"},F={class:"header-actions"},N={key:0,class:"performance-content"},U={class:"summary-grid"},W={class:"summary-item"},T={class:"summary-label"},z={class:"meter"},A={class:"summary-item"},O={class:"summary-label"},L={class:"meter"},j={class:"summary-item"},q={class:"summary-label"},E={class:"summary-item"},G={class:"summary-label"},K={class:"runtime-section"},Q={class:"section-header"},H={class:"process-grid"},J={class:"process-row"},X={class:"status running"},Y={class:"process-row"},Z={key:0,class:"runtime-error"},ee={class:"runtime-section"},se={class:"section-header"},ne={class:"worker-table-wrap"},te={class:"worker-table"},re={key:0},ae={colspan:"7",class:"empty-cell"},le={class:"runtime-section"},ie={class:"section-header"},oe={class:"session-list"},ue={key:0,class:"session-empty"},ce=Pe({__name:"PerformanceView",setup(We){const{t:r}=$e(),de=be(),n=P(null),p=P(!1),f=P(!0);let c;const _e=y(()=>n.value?.bridge.broker.process?.memoryRssBytes??null),pe=y(()=>n.value?.web.memory.rss??null),fe=y(()=>n.value?.bridge.workers.length??0),ve=y(()=>n.value?.bridge.workers.filter(t=>t.running).length??0);function d(t){if(t==null||!Number.isFinite(t))return"-";const i=["B","KB","MB","GB","TB"];let l=t,o=0;for(;l>=1024&&o<i.length-1;)l/=1024,o+=1;return`${l.toFixed(o===0?0:1)} ${i[o]}`}function _(t){return t==null||!Number.isFinite(t)?"-":`${t.toFixed(1)}%`}function he(t){if(t==null||!Number.isFinite(t))return"-";const i=Math.floor(t/86400),l=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return i>0?`${i}d ${l}h`:l>0?`${l}h ${o}m`:`${o}m`}function ye(t){return t?new Date(t*1e3).toLocaleString():"-"}function v(t){return r(t?"performance.running":"performance.stopped")}async function b(t=!0){p.value=!0;try{n.value=await Ie()}catch(i){t&&de.error(i?.message||r("performance.loadFailed"))}finally{p.value=!1}}function B(t){f.value=t,c&&(clearInterval(c),c=void 0),t&&(c=setInterval(()=>b(!1),5e3))}return ge(()=>{b(),B(!0)}),Ce(()=>{c&&clearInterval(c)}),(t,i)=>(u(),m("div",V,[e("header",I,[e("h2",D,s(a(r)("performance.title")),1),e("div",F,[k(a($),{size:"small",type:f.value?"primary":"default",secondary:"",onClick:i[0]||(i[0]=l=>B(!f.value))},{default:w(()=>[x(s(f.value?a(r)("performance.autoRefreshOn"):a(r)("performance.autoRefreshOff")),1)]),_:1},8,["type"]),k(a($),{size:"small",loading:p.value,onClick:i[1]||(i[1]=l=>b())},{default:w(()=>[x(s(a(r)("performance.refresh")),1)]),_:1},8,["loading"])])]),k(a(ke),{show:p.value&&!n.value,class:"performance-spin"},{default:w(()=>[n.value?(u(),m("main",N,[e("section",U,[e("div",W,[e("span",T,s(a(r)("performance.systemCpu")),1),e("strong",null,s(_(n.value.system.cpuPercent)),1),e("div",z,[e("span",{style:R({width:`${n.value.system.cpuPercent||0}%`})},null,4)])]),e("div",A,[e("span",O,s(a(r)("performance.systemMemory")),1),e("strong",null,s(_(n.value.system.memoryPercent)),1),e("small",null,s(d(n.value.system.usedMemoryBytes))+" / "+s(d(n.value.system.totalMemoryBytes)),1),e("div",L,[e("span",{style:R({width:`${n.value.system.memoryPercent||0}%`})},null,4)])]),e("div",j,[e("span",q,s(a(r)("performance.activeSessions")),1),e("strong",null,s(n.value.sessions.active),1),e("small",null,s(a(r)("performance.runningSessions",{count:n.value.sessions.running})),1)]),e("div",E,[e("span",G,s(a(r)("performance.workers")),1),e("strong",null,s(ve.value)+" / "+s(fe.value),1),e("small",null,s(a(r)("performance.totalWorkerMemory"))+" "+s(d(n.value.bridge.totalWorkerMemoryRssBytes)),1)])]),e("section",K,[e("div",Q,[e("h3",null,s(a(r)("performance.processes")),1),e("span",null,s(n.value.system.platform)+" "+s(n.value.system.arch)+" · "+s(n.value.system.cpuCount)+" CPU · "+s(a(r)("performance.uptime"))+" "+s(he(n.value.system.uptimeSeconds)),1)]),e("div",H,[e("div",J,[e("div",null,[i[2]||(i[2]=e("strong",null,"Web UI",-1)),e("span",null,"PID "+s(n.value.web.pid),1)]),e("span",null,s(_(n.value.web.cpuPercent)),1),e("span",null,s(d(pe.value)),1),e("span",X,s(v(!0)),1)]),e("div",Y,[e("div",null,[i[3]||(i[3]=e("strong",null,"Bridge Broker",-1)),e("span",null,s(n.value.bridge.endpoint),1)]),e("span",null,s(_(n.value.bridge.broker.process?.cpuPercent)),1),e("span",null,s(d(_e.value)),1),e("span",{class:S(["status",{running:n.value.bridge.reachable&&n.value.bridge.broker.running}])},s(n.value.bridge.reachable&&n.value.bridge.broker.running?v(!0):v(!1)),3)])]),n.value.bridge.error?(u(),m("div",Z,s(n.value.bridge.error),1)):h("",!0)]),e("section",ee,[e("div",se,[e("h3",null,s(a(r)("performance.workerMemory")),1),e("span",null,s(a(r)("performance.lastUpdated"))+" "+s(new Date(n.value.timestamp).toLocaleTimeString()),1)]),e("div",ne,[e("table",te,[e("thead",null,[e("tr",null,[e("th",null,s(a(r)("performance.profile")),1),i[4]||(i[4]=e("th",null,"PID",-1)),i[5]||(i[5]=e("th",null,"CPU",-1)),e("th",null,s(a(r)("performance.memory")),1),e("th",null,s(a(r)("performance.runningActiveSessions")),1),e("th",null,s(a(r)("performance.lastUsed")),1),e("th",null,s(a(r)("performance.status")),1)])]),e("tbody",null,[n.value.bridge.workers.length===0?(u(),m("tr",re,[e("td",ae,s(a(r)("performance.noWorkers")),1)])):h("",!0),(u(!0),m(C,null,M(n.value.bridge.workers,l=>(u(),m("tr",{key:l.profile||l.pid},[e("td",null,s(l.profile||"-"),1),e("td",null,s(l.pid||"-"),1),e("td",null,s(_(l.cpuPercent)),1),e("td",null,s(d(l.memoryRssBytes)),1),e("td",null,s(l.runningSessionCount)+" / "+s(l.sessionCount),1),e("td",null,s(ye(l.lastUsedAt)),1),e("td",null,[e("span",{class:S(["status",{running:l.running}])},s(v(l.running)),3)])]))),128))])])])]),e("section",le,[e("div",ie,[e("h3",null,s(a(r)("performance.sessionsByProfile")),1)]),e("div",oe,[Object.keys(n.value.sessions.byProfile).length===0?(u(),m("div",ue,s(a(r)("performance.noActiveSessions")),1)):h("",!0),(u(!0),m(C,null,M(n.value.sessions.byProfile,(l,o)=>(u(),m("div",{key:o,class:"session-row"},[e("span",null,s(o),1),e("strong",null,s(l),1)]))),128))])])])):h("",!0)]),_:1},8,["show"])]))}})})),Fe=g((()=>{})),Ne,Ue=g((()=>{me(),me(),Fe(),xe(),Ne=Re(ce,[["__scopeId","data-v-0ce2fc3a"]])}));Ue();export{Ne as default};
1
+ import{n as g}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as C,Cn as ge,Dn as M,Ot as $,Pn as w,Qn as a,Tn as u,V as be,Wn as P,Wt as we,an as h,dn as Pe,er as S,g as ke,ln as x,nn as y,nr as R,on as m,rn as e,rr as s,t as Be,un as k,xn as Ce}from"./ui-vendor-dYn1tJGA.js";import{c as Me,l as $e}from"./vue-vendor-DZ4A_GHn.js";import{f as Se,n as xe,t as Re,u as Ve}from"./_plugin-vue_export-helper-CwNymSRn.js";async function Ie(){return Se("/api/hermes/performance/runtime")}var De=g((()=>{Ve()})),V,I,D,F,N,U,W,T,z,A,O,L,j,q,E,G,K,Q,H,J,X,Y,Z,ee,se,ne,te,re,ae,le,ie,oe,ue,ce,me=g((()=>{we(),Be(),Me(),De(),V={class:"performance-view"},I={class:"page-header"},D={class:"header-title"},F={class:"header-actions"},N={key:0,class:"performance-content"},U={class:"summary-grid"},W={class:"summary-item"},T={class:"summary-label"},z={class:"meter"},A={class:"summary-item"},O={class:"summary-label"},L={class:"meter"},j={class:"summary-item"},q={class:"summary-label"},E={class:"summary-item"},G={class:"summary-label"},K={class:"runtime-section"},Q={class:"section-header"},H={class:"process-grid"},J={class:"process-row"},X={class:"status running"},Y={class:"process-row"},Z={key:0,class:"runtime-error"},ee={class:"runtime-section"},se={class:"section-header"},ne={class:"worker-table-wrap"},te={class:"worker-table"},re={key:0},ae={colspan:"7",class:"empty-cell"},le={class:"runtime-section"},ie={class:"section-header"},oe={class:"session-list"},ue={key:0,class:"session-empty"},ce=Pe({__name:"PerformanceView",setup(We){const{t:r}=$e(),de=be(),n=P(null),p=P(!1),f=P(!0);let c;const _e=y(()=>n.value?.bridge.broker.process?.memoryRssBytes??null),pe=y(()=>n.value?.web.memory.rss??null),fe=y(()=>n.value?.bridge.workers.length??0),ve=y(()=>n.value?.bridge.workers.filter(t=>t.running).length??0);function d(t){if(t==null||!Number.isFinite(t))return"-";const i=["B","KB","MB","GB","TB"];let l=t,o=0;for(;l>=1024&&o<i.length-1;)l/=1024,o+=1;return`${l.toFixed(o===0?0:1)} ${i[o]}`}function _(t){return t==null||!Number.isFinite(t)?"-":`${t.toFixed(1)}%`}function he(t){if(t==null||!Number.isFinite(t))return"-";const i=Math.floor(t/86400),l=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return i>0?`${i}d ${l}h`:l>0?`${l}h ${o}m`:`${o}m`}function ye(t){return t?new Date(t*1e3).toLocaleString():"-"}function v(t){return r(t?"performance.running":"performance.stopped")}async function b(t=!0){p.value=!0;try{n.value=await Ie()}catch(i){t&&de.error(i?.message||r("performance.loadFailed"))}finally{p.value=!1}}function B(t){f.value=t,c&&(clearInterval(c),c=void 0),t&&(c=setInterval(()=>b(!1),5e3))}return ge(()=>{b(),B(!0)}),Ce(()=>{c&&clearInterval(c)}),(t,i)=>(u(),m("div",V,[e("header",I,[e("h2",D,s(a(r)("performance.title")),1),e("div",F,[k(a($),{size:"small",type:f.value?"primary":"default",secondary:"",onClick:i[0]||(i[0]=l=>B(!f.value))},{default:w(()=>[x(s(f.value?a(r)("performance.autoRefreshOn"):a(r)("performance.autoRefreshOff")),1)]),_:1},8,["type"]),k(a($),{size:"small",loading:p.value,onClick:i[1]||(i[1]=l=>b())},{default:w(()=>[x(s(a(r)("performance.refresh")),1)]),_:1},8,["loading"])])]),k(a(ke),{show:p.value&&!n.value,class:"performance-spin"},{default:w(()=>[n.value?(u(),m("main",N,[e("section",U,[e("div",W,[e("span",T,s(a(r)("performance.systemCpu")),1),e("strong",null,s(_(n.value.system.cpuPercent)),1),e("div",z,[e("span",{style:R({width:`${n.value.system.cpuPercent||0}%`})},null,4)])]),e("div",A,[e("span",O,s(a(r)("performance.systemMemory")),1),e("strong",null,s(_(n.value.system.memoryPercent)),1),e("small",null,s(d(n.value.system.usedMemoryBytes))+" / "+s(d(n.value.system.totalMemoryBytes)),1),e("div",L,[e("span",{style:R({width:`${n.value.system.memoryPercent||0}%`})},null,4)])]),e("div",j,[e("span",q,s(a(r)("performance.activeSessions")),1),e("strong",null,s(n.value.sessions.active),1),e("small",null,s(a(r)("performance.runningSessions",{count:n.value.sessions.running})),1)]),e("div",E,[e("span",G,s(a(r)("performance.workers")),1),e("strong",null,s(ve.value)+" / "+s(fe.value),1),e("small",null,s(a(r)("performance.totalWorkerMemory"))+" "+s(d(n.value.bridge.totalWorkerMemoryRssBytes)),1)])]),e("section",K,[e("div",Q,[e("h3",null,s(a(r)("performance.processes")),1),e("span",null,s(n.value.system.platform)+" "+s(n.value.system.arch)+" · "+s(n.value.system.cpuCount)+" CPU · "+s(a(r)("performance.uptime"))+" "+s(he(n.value.system.uptimeSeconds)),1)]),e("div",H,[e("div",J,[e("div",null,[i[2]||(i[2]=e("strong",null,"Web UI",-1)),e("span",null,"PID "+s(n.value.web.pid),1)]),e("span",null,s(_(n.value.web.cpuPercent)),1),e("span",null,s(d(pe.value)),1),e("span",X,s(v(!0)),1)]),e("div",Y,[e("div",null,[i[3]||(i[3]=e("strong",null,"Bridge Broker",-1)),e("span",null,s(n.value.bridge.endpoint),1)]),e("span",null,s(_(n.value.bridge.broker.process?.cpuPercent)),1),e("span",null,s(d(_e.value)),1),e("span",{class:S(["status",{running:n.value.bridge.reachable&&n.value.bridge.broker.running}])},s(n.value.bridge.reachable&&n.value.bridge.broker.running?v(!0):v(!1)),3)])]),n.value.bridge.error?(u(),m("div",Z,s(n.value.bridge.error),1)):h("",!0)]),e("section",ee,[e("div",se,[e("h3",null,s(a(r)("performance.workerMemory")),1),e("span",null,s(a(r)("performance.lastUpdated"))+" "+s(new Date(n.value.timestamp).toLocaleTimeString()),1)]),e("div",ne,[e("table",te,[e("thead",null,[e("tr",null,[e("th",null,s(a(r)("performance.profile")),1),i[4]||(i[4]=e("th",null,"PID",-1)),i[5]||(i[5]=e("th",null,"CPU",-1)),e("th",null,s(a(r)("performance.memory")),1),e("th",null,s(a(r)("performance.runningActiveSessions")),1),e("th",null,s(a(r)("performance.lastUsed")),1),e("th",null,s(a(r)("performance.status")),1)])]),e("tbody",null,[n.value.bridge.workers.length===0?(u(),m("tr",re,[e("td",ae,s(a(r)("performance.noWorkers")),1)])):h("",!0),(u(!0),m(C,null,M(n.value.bridge.workers,l=>(u(),m("tr",{key:l.profile||l.pid},[e("td",null,s(l.profile||"-"),1),e("td",null,s(l.pid||"-"),1),e("td",null,s(_(l.cpuPercent)),1),e("td",null,s(d(l.memoryRssBytes)),1),e("td",null,s(l.runningSessionCount)+" / "+s(l.sessionCount),1),e("td",null,s(ye(l.lastUsedAt)),1),e("td",null,[e("span",{class:S(["status",{running:l.running}])},s(v(l.running)),3)])]))),128))])])])]),e("section",le,[e("div",ie,[e("h3",null,s(a(r)("performance.sessionsByProfile")),1)]),e("div",oe,[Object.keys(n.value.sessions.byProfile).length===0?(u(),m("div",ue,s(a(r)("performance.noActiveSessions")),1)):h("",!0),(u(!0),m(C,null,M(n.value.sessions.byProfile,(l,o)=>(u(),m("div",{key:o,class:"session-row"},[e("span",null,s(o),1),e("strong",null,s(l),1)]))),128))])])])):h("",!0)]),_:1},8,["show"])]))}})})),Fe=g((()=>{})),Ne,Ue=g((()=>{me(),me(),Fe(),xe(),Ne=Re(ce,[["__scopeId","data-v-0ce2fc3a"]])}));Ue();export{Ne as default};
@@ -1 +1 @@
1
- import{n as C}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as N,Dn as A,Ht as Ce,It as T,Mn as Ve,Ot as I,Pn as v,Pt as xe,Qn as a,Rt as B,Tn as u,V as Te,Wn as _,Wt as Be,an as p,dn as $e,g as Ee,in as P,ln as r,mt as $,nn as h,on as o,rn as e,rr as t,t as Le,un as c}from"./ui-vendor-dYn1tJGA.js";import{c as Me,l as ze}from"./vue-vendor-DZ4A_GHn.js";import{f as Fe,n as Ne,t as Ae,u as Ie}from"./_plugin-vue_export-helper-uEMLHKI8.js";import{X as Oe,Y as Ue}from"./index-1yNqMnGv.js";async function qe(){return Fe("/api/hermes/plugins")}var Re=C((()=>{Ie()})),O,U,q,R,j,D,H,Q,W,K,X,Y,G,J,Z,ee,ae,te,se,le,ne,ie,ue,re,oe,de,ce,ve,_e,me,pe=C((()=>{Be(),Le(),Me(),Re(),Ue(),O={class:"plugins-view"},U={class:"page-header"},q={class:"header-title"},R={class:"plugins-content"},j={class:"summary-grid"},D={class:"summary-card"},H={class:"summary-label"},Q={class:"summary-card success"},W={class:"summary-label"},K={class:"summary-card warning"},X={class:"summary-label"},Y={class:"summary-card error"},G={class:"summary-label"},J={class:"summary-card info"},Z={class:"summary-label"},ee={class:"filter-row"},ae={key:0,class:"plugins-table-wrap"},te={class:"plugins-table"},se={class:"plugin-name"},le={key:0},ne={key:0,class:"description"},ie={key:1,class:"meta-line"},ue={key:0},re={key:1},oe={class:"config-status"},de={class:"capability-list"},ce={class:"path-cell"},ve={key:1,class:"muted"},_e={key:1,class:"metadata-panel"},me=$e({__name:"PluginsView",setup(Qe){const{t:n,te:E}=ze(),fe=Te(),y=Oe(),d=_([]),V=_([]),m=_(null),f=_(!1),b=_(""),x=_(""),k=_(null),w=_(null),S=_(null),ge=["enabled","auto-active","inactive","disabled","provider-managed"],he=h(()=>ge.map(s=>({label:n(`plugins.status.${s}`),value:s}))),ye=h(()=>M(d.value.map(s=>s.source))),be=h(()=>M(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})),L=h(()=>{const s=x.value.trim().toLowerCase();return d.value.filter(i=>k.value&&i.source!==k.value||w.value&&i.kind!==w.value||S.value&&i.effectiveStatus!==S.value?!1:s?[i.key,i.name,i.description,i.path,i.source,i.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function M(s){return Array.from(new Set(s.filter(Boolean))).sort((i,l)=>i.localeCompare(l)).map(i=>({label:i,value:i}))}async function z(){f.value=!0,b.value="";try{(!y.activeProfileName||y.profiles.length===0)&&await y.fetchProfiles();const s=await qe();d.value=s.plugins??[],V.value=s.warnings??[],m.value=s.metadata??null}catch(s){b.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function ke(s){const i=`plugins.statusLabel.${s.effectiveStatus}`;return E(i)?n(i):s.effectiveStatus}function we(s){const i=`plugins.configStatuses.${s.configStatus}`;return E(i)?n(i):s.configStatus}function Se(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function F(s){const i=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${i}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${i}'`:""}async function Pe(s){const i=F(s);i&&(await navigator.clipboard.writeText(i),fe.success(n("plugins.commandCopied")))}return Ve(()=>y.activeProfileName||"default",()=>{d.value=[],V.value=[],m.value=null,z()},{immediate:!0}),(s,i)=>(u(),o("div",O,[e("header",U,[e("h2",q,t(a(n)("plugins.title")),1),c(a(I),{size:"small",quaternary:"",loading:f.value,onClick:z},{default:v(()=>[r(t(a(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",R,[c(a(T),{type:"info",bordered:!1,class:"plugins-notice"},{default:v(()=>[r(t(a(n)("plugins.notice")),1)]),_:1}),b.value?(u(),P(a(T),{key:0,type:"error",class:"plugins-notice"},{default:v(()=>[r(t(b.value),1)]),_:1})):p("",!0),(u(!0),o(N,null,A(V.value,l=>(u(),P(a(T),{key:l,type:"warning",class:"plugins-notice"},{default:v(()=>[r(t(l),1)]),_:2},1024))),128)),e("div",j,[e("div",D,[e("span",H,t(a(n)("plugins.summary.total")),1),e("strong",null,t(g.value.total),1)]),e("div",Q,[e("span",W,t(a(n)("plugins.summary.active")),1),e("strong",null,t(g.value.active),1)]),e("div",K,[e("span",X,t(a(n)("plugins.summary.inactive")),1),e("strong",null,t(g.value.inactive),1)]),e("div",Y,[e("span",G,t(a(n)("plugins.summary.disabled")),1),e("strong",null,t(g.value.disabled),1)]),e("div",J,[e("span",Z,t(a(n)("plugins.summary.providerManaged")),1),e("strong",null,t(g.value.providerManaged),1)])]),e("div",ee,[c(a(xe),{value:x.value,"onUpdate:value":i[0]||(i[0]=l=>x.value=l),placeholder:a(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(a($),{value:k.value,"onUpdate:value":i[1]||(i[1]=l=>k.value=l),options:ye.value,placeholder:a(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(a($),{value:w.value,"onUpdate:value":i[2]||(i[2]=l=>w.value=l),options:be.value,placeholder:a(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(a($),{value:S.value,"onUpdate:value":i[3]||(i[3]=l=>S.value=l),options:he.value,placeholder:a(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(a(Ee),{show:f.value&&d.value.length===0},{default:v(()=>[L.value.length?(u(),o("div",ae,[e("table",te,[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,[(u(!0),o(N,null,A(L.value,l=>(u(),o("tr",{key:l.key},[e("td",null,[e("div",se,[e("strong",null,t(l.key),1),l.name!==l.key?(u(),o("span",le,t(l.name),1)):p("",!0)]),l.description?(u(),o("div",ne,t(l.description),1)):p("",!0),l.version||l.author?(u(),o("div",ie,[l.version?(u(),o("span",ue,"v"+t(l.version),1)):p("",!0),l.author?(u(),o("span",re,t(l.author),1)):p("",!0)])):p("",!0)]),e("td",null,[c(a(B),{size:"small",type:Se(l)},{default:v(()=>[r(t(ke(l)),1)]),_:2},1032,["type"]),e("div",oe,t(a(n)("plugins.configStatus",{status:we(l)})),1)]),e("td",null,[c(a(B),{size:"small",round:""},{default:v(()=>[r(t(l.source),1)]),_:2},1024)]),e("td",null,[c(a(B),{size:"small",round:""},{default:v(()=>[r(t(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",de,[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",ce,t(l.path||a(n)("plugins.notAvailable")),1)]),e("td",null,[F(l)?(u(),P(a(I),{key:0,size:"tiny",secondary:"",onClick:We=>Pe(l)},{default:v(()=>[r(t(a(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(u(),o("span",ve,t(a(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?p("",!0):(u(),P(a(Ce),{key:1,description:a(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(u(),o("div",_e,[e("span",null,[r(t(a(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,t(m.value.hermesAgentRoot),1)]),e("span",null,[r(t(a(n)("plugins.metadata.python"))+": ",1),e("code",null,t(m.value.pythonExecutable),1)]),e("span",null,[r(t(a(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,t(m.value.cwd),1)]),e("span",null,[r(t(a(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,t(m.value.projectPluginsEnabled?a(n)("plugins.enabled"):a(n)("plugins.disabled")),1)])])):p("",!0)])]))}})})),je=C((()=>{})),De,He=C((()=>{pe(),pe(),je(),Ne(),De=Ae(me,[["__scopeId","data-v-4d517283"]])}));He();export{De as default};
1
+ import{n as C}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as N,Dn as A,Ht as Ce,It as T,Mn as Ve,Ot as I,Pn as v,Pt as xe,Qn as a,Rt as B,Tn as u,V as Te,Wn as _,Wt as Be,an as p,dn as $e,g as Ee,in as P,ln as r,mt as $,nn as h,on as o,rn as e,rr as t,t as Le,un as c}from"./ui-vendor-dYn1tJGA.js";import{c as Me,l as ze}from"./vue-vendor-DZ4A_GHn.js";import{f as Fe,n as Ne,t as Ae,u as Ie}from"./_plugin-vue_export-helper-CwNymSRn.js";import{X as Oe,Y as Ue}from"./index-DW8M4rjb.js";async function qe(){return Fe("/api/hermes/plugins")}var Re=C((()=>{Ie()})),O,U,q,R,j,D,H,Q,W,K,X,Y,G,J,Z,ee,ae,te,se,le,ne,ie,ue,re,oe,de,ce,ve,_e,me,pe=C((()=>{Be(),Le(),Me(),Re(),Ue(),O={class:"plugins-view"},U={class:"page-header"},q={class:"header-title"},R={class:"plugins-content"},j={class:"summary-grid"},D={class:"summary-card"},H={class:"summary-label"},Q={class:"summary-card success"},W={class:"summary-label"},K={class:"summary-card warning"},X={class:"summary-label"},Y={class:"summary-card error"},G={class:"summary-label"},J={class:"summary-card info"},Z={class:"summary-label"},ee={class:"filter-row"},ae={key:0,class:"plugins-table-wrap"},te={class:"plugins-table"},se={class:"plugin-name"},le={key:0},ne={key:0,class:"description"},ie={key:1,class:"meta-line"},ue={key:0},re={key:1},oe={class:"config-status"},de={class:"capability-list"},ce={class:"path-cell"},ve={key:1,class:"muted"},_e={key:1,class:"metadata-panel"},me=$e({__name:"PluginsView",setup(Qe){const{t:n,te:E}=ze(),fe=Te(),y=Oe(),d=_([]),V=_([]),m=_(null),f=_(!1),b=_(""),x=_(""),k=_(null),w=_(null),S=_(null),ge=["enabled","auto-active","inactive","disabled","provider-managed"],he=h(()=>ge.map(s=>({label:n(`plugins.status.${s}`),value:s}))),ye=h(()=>M(d.value.map(s=>s.source))),be=h(()=>M(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})),L=h(()=>{const s=x.value.trim().toLowerCase();return d.value.filter(i=>k.value&&i.source!==k.value||w.value&&i.kind!==w.value||S.value&&i.effectiveStatus!==S.value?!1:s?[i.key,i.name,i.description,i.path,i.source,i.kind].some(l=>String(l||"").toLowerCase().includes(s)):!0)});function M(s){return Array.from(new Set(s.filter(Boolean))).sort((i,l)=>i.localeCompare(l)).map(i=>({label:i,value:i}))}async function z(){f.value=!0,b.value="";try{(!y.activeProfileName||y.profiles.length===0)&&await y.fetchProfiles();const s=await qe();d.value=s.plugins??[],V.value=s.warnings??[],m.value=s.metadata??null}catch(s){b.value=s?.message||n("plugins.loadFailed")}finally{f.value=!1}}function ke(s){const i=`plugins.statusLabel.${s.effectiveStatus}`;return E(i)?n(i):s.effectiveStatus}function we(s){const i=`plugins.configStatuses.${s.configStatus}`;return E(i)?n(i):s.configStatus}function Se(s){switch(s.effectiveStatus){case"enabled":case"auto-active":return"success";case"disabled":return"error";case"provider-managed":return"info";default:return"warning"}}function F(s){const i=s.key.replace(/'/g,"'\\''");return s.effectiveStatus==="disabled"||s.effectiveStatus==="inactive"?`hermes plugins enable '${i}'`:s.effectiveStatus==="enabled"?`hermes plugins disable '${i}'`:""}async function Pe(s){const i=F(s);i&&(await navigator.clipboard.writeText(i),fe.success(n("plugins.commandCopied")))}return Ve(()=>y.activeProfileName||"default",()=>{d.value=[],V.value=[],m.value=null,z()},{immediate:!0}),(s,i)=>(u(),o("div",O,[e("header",U,[e("h2",q,t(a(n)("plugins.title")),1),c(a(I),{size:"small",quaternary:"",loading:f.value,onClick:z},{default:v(()=>[r(t(a(n)("plugins.refresh")),1)]),_:1},8,["loading"])]),e("div",R,[c(a(T),{type:"info",bordered:!1,class:"plugins-notice"},{default:v(()=>[r(t(a(n)("plugins.notice")),1)]),_:1}),b.value?(u(),P(a(T),{key:0,type:"error",class:"plugins-notice"},{default:v(()=>[r(t(b.value),1)]),_:1})):p("",!0),(u(!0),o(N,null,A(V.value,l=>(u(),P(a(T),{key:l,type:"warning",class:"plugins-notice"},{default:v(()=>[r(t(l),1)]),_:2},1024))),128)),e("div",j,[e("div",D,[e("span",H,t(a(n)("plugins.summary.total")),1),e("strong",null,t(g.value.total),1)]),e("div",Q,[e("span",W,t(a(n)("plugins.summary.active")),1),e("strong",null,t(g.value.active),1)]),e("div",K,[e("span",X,t(a(n)("plugins.summary.inactive")),1),e("strong",null,t(g.value.inactive),1)]),e("div",Y,[e("span",G,t(a(n)("plugins.summary.disabled")),1),e("strong",null,t(g.value.disabled),1)]),e("div",J,[e("span",Z,t(a(n)("plugins.summary.providerManaged")),1),e("strong",null,t(g.value.providerManaged),1)])]),e("div",ee,[c(a(xe),{value:x.value,"onUpdate:value":i[0]||(i[0]=l=>x.value=l),placeholder:a(n)("plugins.searchPlaceholder"),clearable:""},null,8,["value","placeholder"]),c(a($),{value:k.value,"onUpdate:value":i[1]||(i[1]=l=>k.value=l),options:ye.value,placeholder:a(n)("plugins.source"),clearable:""},null,8,["value","options","placeholder"]),c(a($),{value:w.value,"onUpdate:value":i[2]||(i[2]=l=>w.value=l),options:be.value,placeholder:a(n)("plugins.kind"),clearable:""},null,8,["value","options","placeholder"]),c(a($),{value:S.value,"onUpdate:value":i[3]||(i[3]=l=>S.value=l),options:he.value,placeholder:a(n)("plugins.statusTitle"),clearable:""},null,8,["value","options","placeholder"])]),c(a(Ee),{show:f.value&&d.value.length===0},{default:v(()=>[L.value.length?(u(),o("div",ae,[e("table",te,[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,[(u(!0),o(N,null,A(L.value,l=>(u(),o("tr",{key:l.key},[e("td",null,[e("div",se,[e("strong",null,t(l.key),1),l.name!==l.key?(u(),o("span",le,t(l.name),1)):p("",!0)]),l.description?(u(),o("div",ne,t(l.description),1)):p("",!0),l.version||l.author?(u(),o("div",ie,[l.version?(u(),o("span",ue,"v"+t(l.version),1)):p("",!0),l.author?(u(),o("span",re,t(l.author),1)):p("",!0)])):p("",!0)]),e("td",null,[c(a(B),{size:"small",type:Se(l)},{default:v(()=>[r(t(ke(l)),1)]),_:2},1032,["type"]),e("div",oe,t(a(n)("plugins.configStatus",{status:we(l)})),1)]),e("td",null,[c(a(B),{size:"small",round:""},{default:v(()=>[r(t(l.source),1)]),_:2},1024)]),e("td",null,[c(a(B),{size:"small",round:""},{default:v(()=>[r(t(l.kind),1)]),_:2},1024)]),e("td",null,[e("div",de,[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",ce,t(l.path||a(n)("plugins.notAvailable")),1)]),e("td",null,[F(l)?(u(),P(a(I),{key:0,size:"tiny",secondary:"",onClick:We=>Pe(l)},{default:v(()=>[r(t(a(n)("plugins.copyCommand")),1)]),_:1},8,["onClick"])):(u(),o("span",ve,t(a(n)("plugins.managedElsewhere")),1))])]))),128))])])])):f.value?p("",!0):(u(),P(a(Ce),{key:1,description:a(n)("plugins.noMatch")},null,8,["description"]))]),_:1},8,["show"]),m.value?(u(),o("div",_e,[e("span",null,[r(t(a(n)("plugins.metadata.agentRoot"))+": ",1),e("code",null,t(m.value.hermesAgentRoot),1)]),e("span",null,[r(t(a(n)("plugins.metadata.python"))+": ",1),e("code",null,t(m.value.pythonExecutable),1)]),e("span",null,[r(t(a(n)("plugins.metadata.scanCwd"))+": ",1),e("code",null,t(m.value.cwd),1)]),e("span",null,[r(t(a(n)("plugins.metadata.projectPlugins"))+": ",1),e("code",null,t(m.value.projectPluginsEnabled?a(n)("plugins.enabled"):a(n)("plugins.disabled")),1)])])):p("",!0)])]))}})})),je=C((()=>{})),De,He=C((()=>{pe(),pe(),je(),Ne(),De=Ae(me,[["__scopeId","data-v-4d517283"]])}));He();export{De as default};
@@ -1,3 +1,3 @@
1
- import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as Ne,A as Be,Cn as Ke,Dn as Qe,K as H,O as A,Ot as x,Pn as s,Pt as Re,Qn as e,Rt as Xe,Tn as m,V as q,Wn as h,Wt as F,Y as Ge,an as S,dn as T,er as W,g as Ue,i as Ze,in as b,ln as P,m as el,nn as ll,on as $,rn as a,rr as i,s as E,t as D,un as _}from"./ui-vendor-dYn1tJGA.js";import{c as V,l as N}from"./vue-vendor-DZ4A_GHn.js";import{n as B,t as R}from"./_plugin-vue_export-helper-uEMLHKI8.js";import{J as al,X as U,Y as L,q as tl}from"./index-1yNqMnGv.js";var J,O,K,Q,X,G,Z,ee,le,ae,te,oe,ie,se,ne,re,ue,de,fe,_e,pe,ce,ve,me,he,Le,ge=y((()=>{F(),D(),L(),V(),al(),J={class:"card-header"},O={class:"profile-title"},K={class:"profile-name"},Q={class:"card-body"},X={class:"info-row"},G={class:"info-label"},Z={class:"info-value mono"},ee={class:"toggle-text"},le={key:0,class:"card-detail"},ae={class:"info-row"},te={class:"info-label"},oe={class:"info-value"},ie={class:"info-row"},se={class:"info-label"},ne={class:"info-value mono detail-path"},re={class:"info-row"},ue={class:"info-label"},de={class:"info-value"},fe={class:"info-row"},_e={class:"info-label"},pe={class:"info-value"},ce={class:"info-row"},ve={class:"info-label"},me={class:"info-value"},he={class:"card-actions"},Le=T({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:k}){const u=C,{t:l}=N(),n=U(),r=q(),g=Ge(),p=h(!1),d=h(!1),c=h(!1),o=h(!1),v=h(null),I=ll(()=>u.profile.name==="default");async function M(){if(p.value){p.value=!1;return}p.value=!0,d.value=!0;try{v.value=await n.fetchProfileDetail(u.profile.name)}finally{d.value=!1}}async function f(){g.warning({title:l("profiles.switchTo"),content:l("profiles.switchConfirm",{name:u.profile.name}),positiveText:l("profiles.switchTo"),negativeText:l("common.cancel"),onPositiveClick:t})}async function t(){o.value=!0;try{await n.switchHermesProfile(u.profile.name)?(r.success(l("profiles.switchSuccess",{name:u.profile.name})),setTimeout(()=>window.location.reload(),500)):r.error(l("profiles.switchFailed"))}finally{o.value=!1}}function w(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:u.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await n.deleteProfile(u.profile.name)?r.success(l("profiles.deleteSuccess")):r.error(l("profiles.deleteFailed"))}})}async function z(){c.value=!0;try{await n.exportProfile(u.profile.name)?r.success(l("profiles.exportSuccess")):r.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,Y)=>(m(),$("div",{class:W(["profile-card",{active:C.profile.active}])},[a("div",J,[a("div",O,[_(tl,{name:C.profile.name,avatar:C.profile.avatar,size:28},null,8,["name","avatar"]),a("h3",K,i(C.profile.name),1)]),C.profile.active?(m(),b(e(Xe),{key:0,size:"tiny",type:"success",bordered:!1},{default:s(()=>[P(i(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",Q,[a("div",X,[a("span",G,i(e(l)("profiles.model")),1),a("code",Z,i(C.profile.model),1)])]),a("div",{class:"card-detail-toggle",onClick:M},[(m(),$("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:W(["toggle-icon",{expanded:p.value}])},[...Y[0]||(Y[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",ee,i(p.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),p.value?(m(),$("div",le,[_(e(Ue),{show:d.value,size:"small"},{default:s(()=>[v.value?(m(),$(Ne,{key:0},[a("div",ae,[a("span",te,i(e(l)("profiles.provider")),1),a("span",oe,i(v.value.provider),1)]),a("div",ie,[a("span",se,i(e(l)("profiles.path")),1),a("code",ne,i(v.value.path),1)]),a("div",re,[a("span",ue,i(e(l)("profiles.skills")),1),a("span",de,i(v.value.skills),1)]),a("div",fe,[a("span",_e,i(e(l)("profiles.hasEnv")),1),a("span",pe,i(v.value.hasEnv?"Yes":"No"),1)]),a("div",ce,[a("span",ve,i(e(l)("profiles.hasSoulMd")),1),a("span",me,i(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",he,[C.profile.active?S("",!0):(m(),b(e(x),{key:0,size:"tiny",loading:o.value,quaternary:"",type:"primary",onClick:f},{default:s(()=>[P(i(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),_(e(x),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:w},{default:s(()=>[P(i(e(l)("common.delete")),1)]),_:1},8,["disabled"]),_(e(x),{size:"tiny",quaternary:"",loading:c.value,onClick:z},{default:s(()=>[P(i(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),ol=y((()=>{})),je,il=y((()=>{ge(),ge(),ol(),B(),je=R(Le,[["__scopeId","data-v-6cae06e2"]])})),ye,we,De,Pe=y((()=>{F(),il(),L(),V(),ye={key:0,class:"empty-state"},we={key:1,class:"profiles-grid"},De=T({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:k}=N(),u=U();return(l,n)=>e(u).profiles.length===0?(m(),$("div",ye,[n[1]||(n[1]=a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[a("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),a("circle",{cx:"12",cy:"7",r:"4"})],-1)),a("p",null,i(e(k)("profiles.noProfiles")),1)])):(m(),$("div",we,[(m(!0),$(Ne,null,Qe(e(u).profiles,r=>(m(),b(je,{key:r.name,profile:r,onRename:n[0]||(n[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),qe,nl=y((()=>{Pe(),Pe(),sl(),B(),qe=R(De,[["__scopeId","data-v-51e73d5a"]])})),Ce,Ae,ke=y((()=>{F(),D(),L(),V(),Ce={class:"modal-footer"},Ae=T({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:k}){const u=k,{t:l}=N(),n=U(),r=q(),g=h(!0),p=h(!1),d=h(""),c=h(!1),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=l("profiles.nameValidation"):o.value="",d.value=t}async function I(){if(!d.value){r.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(d.value)){r.error(l("profiles.nameValidation"));return}p.value=!0;try{const f=await n.createProfile(d.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],z=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||z.length>0)){const j=[];t.length>0&&j.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&j.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),z.length>0&&j.push(l("profiles.cloneStrippedConfigCredentials",{count:z.length,list:z.join(", ")})),r.info(`${l("profiles.createSuccess",{name:d.value.trim()})}
1
+ import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as Ne,A as Be,Cn as Ke,Dn as Qe,K as H,O as A,Ot as x,Pn as s,Pt as Re,Qn as e,Rt as Xe,Tn as m,V as q,Wn as h,Wt as F,Y as Ge,an as S,dn as T,er as W,g as Ue,i as Ze,in as b,ln as P,m as el,nn as ll,on as $,rn as a,rr as i,s as E,t as D,un as _}from"./ui-vendor-dYn1tJGA.js";import{c as V,l as N}from"./vue-vendor-DZ4A_GHn.js";import{n as B,t as R}from"./_plugin-vue_export-helper-CwNymSRn.js";import{J as al,X as U,Y as L,q as tl}from"./index-DW8M4rjb.js";var J,O,K,Q,X,G,Z,ee,le,ae,te,oe,ie,se,ne,re,ue,de,fe,_e,pe,ce,ve,me,he,Le,ge=y((()=>{F(),D(),L(),V(),al(),J={class:"card-header"},O={class:"profile-title"},K={class:"profile-name"},Q={class:"card-body"},X={class:"info-row"},G={class:"info-label"},Z={class:"info-value mono"},ee={class:"toggle-text"},le={key:0,class:"card-detail"},ae={class:"info-row"},te={class:"info-label"},oe={class:"info-value"},ie={class:"info-row"},se={class:"info-label"},ne={class:"info-value mono detail-path"},re={class:"info-row"},ue={class:"info-label"},de={class:"info-value"},fe={class:"info-row"},_e={class:"info-label"},pe={class:"info-value"},ce={class:"info-row"},ve={class:"info-label"},me={class:"info-value"},he={class:"card-actions"},Le=T({__name:"ProfileCard",props:{profile:{}},setup(C,{emit:k}){const u=C,{t:l}=N(),n=U(),r=q(),g=Ge(),p=h(!1),d=h(!1),c=h(!1),o=h(!1),v=h(null),I=ll(()=>u.profile.name==="default");async function M(){if(p.value){p.value=!1;return}p.value=!0,d.value=!0;try{v.value=await n.fetchProfileDetail(u.profile.name)}finally{d.value=!1}}async function f(){g.warning({title:l("profiles.switchTo"),content:l("profiles.switchConfirm",{name:u.profile.name}),positiveText:l("profiles.switchTo"),negativeText:l("common.cancel"),onPositiveClick:t})}async function t(){o.value=!0;try{await n.switchHermesProfile(u.profile.name)?(r.success(l("profiles.switchSuccess",{name:u.profile.name})),setTimeout(()=>window.location.reload(),500)):r.error(l("profiles.switchFailed"))}finally{o.value=!1}}function w(){g.warning({title:l("profiles.delete"),content:l("profiles.deleteConfirm",{name:u.profile.name}),positiveText:l("common.delete"),negativeText:l("common.cancel"),onPositiveClick:async()=>{await n.deleteProfile(u.profile.name)?r.success(l("profiles.deleteSuccess")):r.error(l("profiles.deleteFailed"))}})}async function z(){c.value=!0;try{await n.exportProfile(u.profile.name)?r.success(l("profiles.exportSuccess")):r.error(l("profiles.exportFailed"))}finally{c.value=!1}}return(j,Y)=>(m(),$("div",{class:W(["profile-card",{active:C.profile.active}])},[a("div",J,[a("div",O,[_(tl,{name:C.profile.name,avatar:C.profile.avatar,size:28},null,8,["name","avatar"]),a("h3",K,i(C.profile.name),1)]),C.profile.active?(m(),b(e(Xe),{key:0,size:"tiny",type:"success",bordered:!1},{default:s(()=>[P(i(e(l)("profiles.active")),1)]),_:1})):S("",!0)]),a("div",Q,[a("div",X,[a("span",G,i(e(l)("profiles.model")),1),a("code",Z,i(C.profile.model),1)])]),a("div",{class:"card-detail-toggle",onClick:M},[(m(),$("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:W(["toggle-icon",{expanded:p.value}])},[...Y[0]||(Y[0]=[a("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),a("span",ee,i(p.value?e(l)("common.collapse"):e(l)("common.expand")),1)]),p.value?(m(),$("div",le,[_(e(Ue),{show:d.value,size:"small"},{default:s(()=>[v.value?(m(),$(Ne,{key:0},[a("div",ae,[a("span",te,i(e(l)("profiles.provider")),1),a("span",oe,i(v.value.provider),1)]),a("div",ie,[a("span",se,i(e(l)("profiles.path")),1),a("code",ne,i(v.value.path),1)]),a("div",re,[a("span",ue,i(e(l)("profiles.skills")),1),a("span",de,i(v.value.skills),1)]),a("div",fe,[a("span",_e,i(e(l)("profiles.hasEnv")),1),a("span",pe,i(v.value.hasEnv?"Yes":"No"),1)]),a("div",ce,[a("span",ve,i(e(l)("profiles.hasSoulMd")),1),a("span",me,i(v.value.hasSoulMd?"Yes":"No"),1)])],64)):S("",!0)]),_:1},8,["show"])])):S("",!0),a("div",he,[C.profile.active?S("",!0):(m(),b(e(x),{key:0,size:"tiny",loading:o.value,quaternary:"",type:"primary",onClick:f},{default:s(()=>[P(i(e(l)("profiles.switchTo")),1)]),_:1},8,["loading"])),_(e(x),{size:"tiny",quaternary:"",type:"error",disabled:I.value||C.profile.active,onClick:w},{default:s(()=>[P(i(e(l)("common.delete")),1)]),_:1},8,["disabled"]),_(e(x),{size:"tiny",quaternary:"",loading:c.value,onClick:z},{default:s(()=>[P(i(e(l)("profiles.export")),1)]),_:1},8,["loading"])])],2))}})})),ol=y((()=>{})),je,il=y((()=>{ge(),ge(),ol(),B(),je=R(Le,[["__scopeId","data-v-6cae06e2"]])})),ye,we,De,Pe=y((()=>{F(),il(),L(),V(),ye={key:0,class:"empty-state"},we={key:1,class:"profiles-grid"},De=T({__name:"ProfilesPanel",emits:["rename"],setup(C){const{t:k}=N(),u=U();return(l,n)=>e(u).profiles.length===0?(m(),$("div",ye,[n[1]||(n[1]=a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",class:"empty-icon"},[a("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),a("circle",{cx:"12",cy:"7",r:"4"})],-1)),a("p",null,i(e(k)("profiles.noProfiles")),1)])):(m(),$("div",we,[(m(!0),$(Ne,null,Qe(e(u).profiles,r=>(m(),b(je,{key:r.name,profile:r,onRename:n[0]||(n[0]=g=>l.$emit("rename",g))},null,8,["profile"]))),128))]))}})})),sl=y((()=>{})),qe,nl=y((()=>{Pe(),Pe(),sl(),B(),qe=R(De,[["__scopeId","data-v-51e73d5a"]])})),Ce,Ae,ke=y((()=>{F(),D(),L(),V(),Ce={class:"modal-footer"},Ae=T({__name:"ProfileCreateModal",emits:["close","saved"],setup(C,{emit:k}){const u=k,{t:l}=N(),n=U(),r=q(),g=h(!0),p=h(!1),d=h(""),c=h(!1),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=l("profiles.nameValidation"):o.value="",d.value=t}async function I(){if(!d.value){r.warning(l("profiles.namePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(d.value)){r.error(l("profiles.nameValidation"));return}p.value=!0;try{const f=await n.createProfile(d.value.trim(),c.value);if(f.success){const t=f.strippedCredentials??[],w=f.disabledPlatforms??[],z=f.strippedConfigCredentials??[];if(c.value&&(t.length>0||w.length>0||z.length>0)){const j=[];t.length>0&&j.push(l("profiles.cloneStrippedCredentials",{count:t.length,list:t.join(", ")})),w.length>0&&j.push(l("profiles.cloneDisabledPlatforms",{count:w.length,list:w.join(", ")})),z.length>0&&j.push(l("profiles.cloneStrippedConfigCredentials",{count:z.length,list:z.join(", ")})),r.info(`${l("profiles.createSuccess",{name:d.value.trim()})}
2
2
  ${j.join(`
3
3
  `)}`,{duration:6e3})}else r.success(l("profiles.createSuccess",{name:d.value.trim()}));u("saved")}else{const t=f.error||l("profiles.createFailed");r.error(t)}}finally{p.value=!1}}function M(){g.value=!1,setTimeout(()=>u("close"),200)}return(f,t)=>(m(),b(e(H),{show:g.value,"onUpdate:show":t[2]||(t[2]=w=>g.value=w),preset:"card",title:e(l)("profiles.create"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!p.value,onAfterLeave:t[3]||(t[3]=w=>u("close"))},{footer:s(()=>[a("div",Ce,[_(e(x),{onClick:M},{default:s(()=>[P(i(e(l)("common.cancel")),1)]),_:1}),_(e(x),{type:"primary",loading:p.value,onClick:I},{default:s(()=>[P(i(e(l)("common.create")),1)]),_:1},8,["loading"])])]),default:s(()=>[_(e(Be),{"label-placement":"top"},{default:s(()=>[_(e(A),{label:e(l)("profiles.name"),required:""},{default:s(()=>[_(e(Re),{value:d.value,"onUpdate:value":t[0]||(t[0]=w=>d.value=w),placeholder:e(l)("profiles.namePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),o.value?(m(),b(e(E),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:s(()=>[P(i(o.value),1)]),_:1})):S("",!0),_(e(A),{label:e(l)("profiles.cloneFromCurrent")},{default:s(()=>[_(e(el),{value:c.value,"onUpdate:value":t[1]||(t[1]=w=>c.value=w)},null,8,["value"])]),_:1},8,["label"]),c.value?(m(),b(e(E),{key:1,depth:"3",style:{"font-size":"12px"}},{default:s(()=>[P(i(e(l)("profiles.cloneCleanupNotice")),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),rl=y((()=>{})),ul=y((()=>{})),Ee,dl=y((()=>{ke(),ke(),rl(),ul(),B(),Ee=R(Ae,[["__scopeId","data-v-06cc88f3"]])})),xe,He,be=y((()=>{F(),D(),L(),V(),xe={class:"modal-footer"},He=T({__name:"ProfileRenameModal",props:{profileName:{}},emits:["close","saved"],setup(C,{emit:k}){const u=C,l=k,{t:n}=N(),r=U(),g=q(),p=h(!0),d=h(!1),c=h(""),o=h("");function v(f){const t=f.toLowerCase().replace(/[^a-z0-9_-]/g,"");t!==f?o.value=n("profiles.nameValidation"):o.value="",c.value=t}async function I(){if(!c.value){g.warning(n("profiles.newNamePlaceholder"));return}if(!/^[a-z0-9_-]+$/.test(c.value)){g.error(n("profiles.nameValidation"));return}d.value=!0;try{await r.renameProfile(u.profileName,c.value.trim())?(g.success(n("profiles.renameSuccess")),l("saved")):g.error(n("profiles.renameFailed"))}finally{d.value=!1}}function M(){p.value=!1,setTimeout(()=>l("close"),200)}return(f,t)=>(m(),b(e(H),{show:p.value,"onUpdate:show":t[1]||(t[1]=w=>p.value=w),preset:"card",title:e(n)("profiles.rename"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!d.value,onAfterLeave:t[2]||(t[2]=w=>l("close"))},{footer:s(()=>[a("div",xe,[_(e(x),{onClick:M},{default:s(()=>[P(i(e(n)("common.cancel")),1)]),_:1}),_(e(x),{type:"primary",loading:d.value,onClick:I},{default:s(()=>[P(i(e(n)("common.confirm")),1)]),_:1},8,["loading"])])]),default:s(()=>[_(e(Be),{"label-placement":"top"},{default:s(()=>[_(e(A),{label:e(n)("profiles.newName"),required:""},{default:s(()=>[_(e(Re),{value:c.value,"onUpdate:value":t[0]||(t[0]=w=>c.value=w),placeholder:e(n)("profiles.newNamePlaceholder"),onInput:v},null,8,["value","placeholder"])]),_:1},8,["label"]),o.value?(m(),b(e(E),{key:0,depth:"3",type:"warning",style:{"font-size":"12px"}},{default:s(()=>[P(i(o.value),1)]),_:1})):S("",!0)]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),fl=y((()=>{})),Ye,_l=y((()=>{be(),be(),fl(),B(),Ye=R(He,[["__scopeId","data-v-740612c1"]])})),Me,We,Se=y((()=>{F(),D(),L(),V(),Me={class:"modal-footer"},We=T({__name:"ProfileImportModal",emits:["close","saved"],setup(C,{emit:k}){const u=k,{t:l}=N(),n=U(),r=q(),g=h(!0),p=h(!1),d=h([]),c=[".tar.gz",".tgz",".gz",".zip"];function o({file:M}){const f=M.name?.toLowerCase()||"";return c.some(t=>f.endsWith(t))?!0:(r.warning(l("profiles.importInvalidFile")),!1)}async function v(){if(!d.value.length){r.warning(l("profiles.importSelectFile"));return}p.value=!0;try{const M=d.value[0].file;if(!M){r.error(l("profiles.importFailed"));return}await n.importProfile(M)?(r.success(l("profiles.importSuccess")),u("saved")):r.error(l("profiles.importFailed"))}finally{p.value=!1}}function I(){g.value=!1,setTimeout(()=>u("close"),200)}return(M,f)=>(m(),b(e(H),{show:g.value,"onUpdate:show":f[1]||(f[1]=t=>g.value=t),preset:"card",title:e(l)("profiles.import"),style:{width:"min(420px, calc(100vw - 32px))"},"mask-closable":!p.value,onAfterLeave:f[2]||(f[2]=t=>u("close"))},{footer:s(()=>[a("div",Me,[_(e(x),{onClick:I},{default:s(()=>[P(i(e(l)("common.cancel")),1)]),_:1}),_(e(x),{type:"primary",loading:p.value,disabled:!d.value.length,onClick:v},{default:s(()=>[P(i(e(l)("common.confirm")),1)]),_:1},8,["loading","disabled"])])]),default:s(()=>[_(e(Ze),{"file-list":d.value,"onUpdate:fileList":f[0]||(f[0]=t=>d.value=t),max:1,accept:c.join(","),disabled:p.value,onBeforeUpload:o},{default:s(()=>[_(e(x),null,{default:s(()=>[P(i(e(l)("profiles.importSelectFile")),1)]),_:1})]),_:1},8,["file-list","accept","disabled"])]),_:1},8,["show","title","mask-closable"]))}})})),pl=y((()=>{})),Je,cl=y((()=>{Se(),Se(),pl(),B(),Je=R(We,[["__scopeId","data-v-accddacf"]])})),$e,Ie,ze,Fe,Te,Oe,Ve=y((()=>{F(),D(),V(),nl(),dl(),_l(),cl(),L(),$e={class:"profiles-view"},Ie={class:"page-header"},ze={class:"header-title"},Fe={class:"header-actions"},Te={class:"profiles-content"},Oe=T({__name:"ProfilesView",setup(C){const{t:k}=N(),u=U(),l=h(!1),n=h(!1),r=h(null);Ke(()=>{u.fetchHermesProfiles()});function g(){l.value=!1}function p(){r.value=null}function d(){n.value=!1}return(c,o)=>(m(),$("div",$e,[a("header",Ie,[a("h2",ze,i(e(k)("profiles.title")),1),a("div",Fe,[_(e(x),{size:"small",onClick:o[0]||(o[0]=v=>n.value=!0)},{icon:s(()=>[...o[6]||(o[6]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[a("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),a("polyline",{points:"17 8 12 3 7 8"}),a("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)])]),default:s(()=>[P(" "+i(e(k)("profiles.import")),1)]),_:1}),_(e(x),{type:"primary",size:"small",onClick:o[1]||(o[1]=v=>l.value=!0)},{icon:s(()=>[...o[7]||(o[7]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[a("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),a("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:s(()=>[P(" "+i(e(k)("profiles.create")),1)]),_:1})])]),a("div",Te,[_(e(Ue),{show:e(u).loading&&e(u).profiles.length===0},{default:s(()=>[_(qe,{onRename:o[2]||(o[2]=v=>r.value=v)})]),_:1},8,["show"])]),l.value?(m(),b(Ee,{key:0,onClose:o[3]||(o[3]=v=>l.value=!1),onSaved:g})):S("",!0),r.value?(m(),b(Ye,{key:1,"profile-name":r.value,onClose:o[4]||(o[4]=v=>r.value=null),onSaved:p},null,8,["profile-name"])):S("",!0),n.value?(m(),b(Je,{key:2,onClose:o[5]||(o[5]=v=>n.value=!1),onSaved:d})):S("",!0)]))}})})),vl=y((()=>{})),ml,hl=y((()=>{Ve(),Ve(),vl(),B(),ml=R(Oe,[["__scopeId","data-v-4b884a5a"]])}));hl();export{ml as default};
@@ -1 +1 @@
1
- import{n as _}from"./rolldown-runtime-M0oDzQ_3.js";import{On as c,Tn as n,Wt as g,an as m,dn as h,on as i,rn as t,rr as s}from"./ui-vendor-dYn1tJGA.js";import{n as b,t as f}from"./_plugin-vue_export-helper-uEMLHKI8.js";var a,r,o,l,u,p,d=_((()=>{g(),a={class:"setting-row"},r={class:"setting-info"},o={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=h({__name:"SettingRow",props:{label:{},hint:{}},setup(e){return(v,y)=>(n(),i("div",a,[t("div",r,[t("label",o,s(e.label),1),e.hint?(n(),i("p",l,s(e.hint),1)):m("",!0)]),t("div",u,[c(v.$slots,"default",{},void 0,!0)])]))}})})),S=_((()=>{})),w,N=_((()=>{d(),d(),S(),b(),w=f(p,[["__scopeId","data-v-b81640b4"]])}));export{N as n,w as t};
1
+ import{n as _}from"./rolldown-runtime-M0oDzQ_3.js";import{On as c,Tn as n,Wt as g,an as m,dn as h,on as i,rn as t,rr as s}from"./ui-vendor-dYn1tJGA.js";import{n as b,t as f}from"./_plugin-vue_export-helper-CwNymSRn.js";var a,r,o,l,u,p,d=_((()=>{g(),a={class:"setting-row"},r={class:"setting-info"},o={class:"setting-label"},l={key:0,class:"setting-hint"},u={class:"setting-control"},p=h({__name:"SettingRow",props:{label:{},hint:{}},setup(e){return(v,y)=>(n(),i("div",a,[t("div",r,[t("label",o,s(e.label),1),e.hint?(n(),i("p",l,s(e.hint),1)):m("",!0)]),t("div",u,[c(v.$slots,"default",{},void 0,!0)])]))}})})),S=_((()=>{})),w,N=_((()=>{d(),d(),S(),b(),w=f(p,[["__scopeId","data-v-b81640b4"]])}));export{N as n,w as t};