@quanthermes/hermes-web-ui 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/bin/hermes-web-ui.mjs +7 -0
  2. package/dist/client/assets/js/{ChannelsView-BAbGxkKW.js → ChannelsView-BduiL1-M.js} +1 -1
  3. package/dist/client/assets/js/{ChatView-hdWG7dhS.js → ChatView-C-84i0a3.js} +1 -1
  4. package/dist/client/assets/js/{CodingAgentsView-BB79rLb_.js → CodingAgentsView-Cu5bfdCo.js} +1 -1
  5. package/dist/client/assets/js/{DevicesView-DEdHwkrV.js → DevicesView-BwVqTyuH.js} +1 -1
  6. package/dist/client/assets/js/{FileRenameModal-CdKXqr0a.js → FileRenameModal-DMqVjoLN.js} +1 -1
  7. package/dist/client/assets/js/{FilesView-C49jsfxy.js → FilesView-Ce30F1_8.js} +1 -1
  8. package/dist/client/assets/js/{GroupChatView-DwL-zIjT.js → GroupChatView-BQqM5noE.js} +1 -1
  9. package/dist/client/assets/js/{HistoryMessageList-B1ORl6-d.js → HistoryMessageList-B3TsU-9g.js} +1 -1
  10. package/dist/client/assets/js/{HistoryView-CdlRAUh5.js → HistoryView-qhTXEU5G.js} +1 -1
  11. package/dist/client/assets/js/{JobsView-BPZ4Wv0y.js → JobsView-BszCmau_.js} +1 -1
  12. package/dist/client/assets/js/{KanbanView-UHzayv3c.js → KanbanView-BMa_FMqS.js} +1 -1
  13. package/dist/client/assets/js/{LoginView-BYrZGFRC.js → LoginView-v4Lvgu2R.js} +1 -1
  14. package/dist/client/assets/js/{LogsView-CyfCeIeY.js → LogsView-CuwioOCX.js} +1 -1
  15. package/dist/client/assets/js/{MarkdownRenderer-D-IgakCO.js → MarkdownRenderer-2bwbBjlK.js} +1 -1
  16. package/dist/client/assets/js/{McpManagerView-DMbmKtiH.js → McpManagerView-BDJSjkHx.js} +1 -1
  17. package/dist/client/assets/js/{MemoryView-iYE-K13x.js → MemoryView-rYoZbfMb.js} +1 -1
  18. package/dist/client/assets/js/{MessageItem-Be7fqF3P.js → MessageItem-OSBjfS2l.js} +1 -1
  19. package/dist/client/assets/js/{ModelsView-XRIIk2f7.js → ModelsView-DGPA2heM.js} +1 -1
  20. package/dist/client/assets/js/{OutlinePanel-BSPx9YaI.js → OutlinePanel-CN0TVZ0B.js} +1 -1
  21. package/dist/client/assets/js/{PerformanceView-m3deuRba.js → PerformanceView-0GmZ2GXR.js} +1 -1
  22. package/dist/client/assets/js/{PluginsView-BBrFPfSn.js → PluginsView-D6XEulKx.js} +1 -1
  23. package/dist/client/assets/js/{ProfilesView-G_eYB34O.js → ProfilesView-CCPI-DaB.js} +1 -1
  24. package/dist/client/assets/js/{SettingRow-wqcLQ0FL.js → SettingRow-B0WJ-Iqa.js} +1 -1
  25. package/dist/client/assets/js/{SettingsView-DMOWr41T.js → SettingsView-BaZ_P8Wu.js} +1 -1
  26. package/dist/client/assets/js/{SkillsUsageView-fn3jivrH.js → SkillsUsageView-BJVHpo4D.js} +1 -1
  27. package/dist/client/assets/js/{SkillsView-CXDdZj7R.js → SkillsView-vhxQVIz8.js} +1 -1
  28. package/dist/client/assets/js/{TerminalPanel-CqIASgSb.js → TerminalPanel-C50X3--t.js} +1 -1
  29. package/dist/client/assets/js/{TerminalView-ycEOrgth.js → TerminalView-1qIvfZKj.js} +1 -1
  30. package/dist/client/assets/js/{UsageView-BhNclgOH.js → UsageView-CLUP9AqF.js} +1 -1
  31. package/dist/client/assets/js/{VersionPreviewView-DoG0hdD2.js → VersionPreviewView-C9I3ZH13.js} +1 -1
  32. package/dist/client/assets/js/{VirtualMessageList-B_teFrlt.js → VirtualMessageList-D6BvQLbe.js} +1 -1
  33. package/dist/client/assets/js/{_plugin-vue_export-helper-D4mtpdbl.js → _plugin-vue_export-helper-CtZk2OSc.js} +2 -2
  34. package/dist/client/assets/js/{index-BHU-82RO.js → index-DyLZQAQu.js} +1 -1
  35. package/dist/client/assets/js/{models-BX7pr_Gd.js → models-CjHxxDse.js} +1 -1
  36. package/dist/client/assets/js/{session-browser-prefs-OR-qaA1z.js → session-browser-prefs-kGpZZDQo.js} +1 -1
  37. package/dist/client/assets/js/{skills-fBzB8FGc.js → skills-CDjYTDMo.js} +1 -1
  38. package/dist/client/assets/js/{system-vQTkarwT.js → system-Pg8JEuA6.js} +1 -1
  39. package/dist/client/index.html +3 -3
  40. package/dist/server/index.js +3 -3
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- import{n as H}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as r,$t as e,An as T,At as ne,Bn as _,Bt as Z,Cn as G,Jn as l,Jt as ie,On as Kl,Qt as K,W as Yl,Xn as U,Yt as j,an as I,bn as nt,en as A,i as ot,in as rt,m as oe,nn as n,on as R,ot as dt,q as ut,sn as J,t as N,tn as F,ut as re,wt as W,xn as t,yn as Zl,z as se}from"./ui-vendor-DNWaqYj5.js";import{c as X,l as O}from"./vue-vendor-VX6KvV1_.js";import{n as ee,t as le}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{X as ct,Y as vt}from"./index-BHU-82RO.js";import{n as Jl,t as ae}from"./MarkdownRenderer-D-IgakCO.js";import{a as ht,c as pt,d as kt,i as de,l as te,n as _t,p as ft,s as mt,t as gt,u as yt}from"./skills-fBzB8FGc.js";var ue,ce,ve,he,pe,ke,_e,fe,me,ge,ye,we,$e,be,Ce,xe,Se,Me,De,Fe,Le,ze,Be,Ie,Pe,Te,Re,Ue,Ve,Ee,He,qe,Qe,je,Ae,We,Nl,Ge=H((()=>{Z(),N(),te(),X(),ue={class:"skill-list"},ce={key:0,class:"skill-empty"},ve=["title","onClick"],he={class:"path-header-text"},pe={class:"category-count"},ke={key:0,class:"path-group-body"},_e=["onClick"],fe={class:"category-name"},me={class:"category-count"},ge={key:0,class:"category-skills"},ye=["onClick"],we={class:"skill-info"},$e={class:"skill-name"},be=["title"],Ce=["title"],xe={key:0,class:"skill-desc"},Se=["onClick"],Me={class:"category-name"},De={class:"category-count"},Fe={key:0,class:"category-skills"},Le=["onClick"],ze={class:"skill-info"},Be={class:"skill-name"},Ie=["title"],Pe=["title"],Te={key:0,class:"skill-desc"},Re=["title","disabled","onClick"],Ue={key:3,class:"skill-category archive-section"},Ve={class:"category-name"},Ee={class:"category-count"},He={key:0,class:"category-skills"},qe=["onClick"],Qe={class:"skill-info"},je={class:"skill-name"},Ae=["title"],We={key:0,class:"skill-desc"},Nl=J({__name:"SkillList",props:{categories:{},archived:{},selectedSkill:{},searchQuery:{},sourceFilter:{}},emits:["select","deleted"],setup(S,{emit:z}){const{t:p}=O(),u=se(),y=ut(),$=S,f=z,v=_(new Set),h=_(!0),D=_(new Set),C=_(new Set),P=K(()=>{let o=$.archived;if($.sourceFilter&&$.sourceFilter!=="modified"&&(o=o.filter(i=>(i.source||"local")===$.sourceFilter)),$.searchQuery){const i=$.searchQuery.toLowerCase();o=o.filter(s=>s.name.toLowerCase().includes(i)||s.description.toLowerCase().includes(i))}return o}),E=K(()=>{let o=$.categories;if($.sourceFilter&&(o=o.map(i=>({...i,skills:i.skills.filter(s=>$.sourceFilter==="modified"?s.modified:(s.source||"local")===$.sourceFilter)})).filter(i=>i.skills.length>0)),$.searchQuery){const i=$.searchQuery.toLowerCase();o=o.map(s=>({...s,skills:s.skills.filter(d=>d.name.toLowerCase().includes(i)||d.description.toLowerCase().includes(i))})).filter(s=>s.skills.length>0||s.name.toLowerCase().includes(i))}return o}),q=K(()=>{if($.sourceFilter!=="external")return null;const o=new Map,i=[],s=new Map;for(const d of E.value)for(const m of d.skills){const Q=m.sourcePath||"";o.has(Q)||(o.set(Q,new Map),i.push(Q),s.set(Q,[]));const g=o.get(Q);g.has(d.name)||(g.set(d.name,[]),s.get(Q).push(d.name)),g.get(d.name).push(m)}return i.map(d=>({path:d,categories:s.get(d).map(m=>({name:m,skills:o.get(d).get(m)}))}))}),V=_(new Set);function w(o){V.value.has(o)?V.value.delete(o):V.value.add(o)}function B(o){return o||"(unknown)"}function k(o){v.value.has(o)?v.value.delete(o):v.value.add(o)}function c(o,i){f("select",o,i)}function x(o,i){return`${o}/${i.name}`}async function M(o,i,s){if(!D.value.has(i)){D.value.add(i);try{await ft(i,s);const d=$.categories.find(m=>m.name===o)?.skills.find(m=>m.name===i);d&&(d.enabled=s)}catch(d){u.error(p("skills.toggleFailed")+`: ${d.message}`)}finally{D.value.delete(i)}}}function b(o,i){C.value.has(i)||y.warning({title:p("skills.delete"),content:p("skills.deleteConfirm",{name:i}),positiveText:p("common.delete"),negativeText:p("common.cancel"),onPositiveClick:async()=>{C.value.add(i);try{await gt(o,i),u.success(p("skills.deleteSuccess")),u.info(p("skills.reloadHint"),{duration:6e3}),f("deleted",o,i)}catch(s){u.error(p("skills.deleteFailed")+`: ${s.message}`)}finally{C.value.delete(i)}}})}return(o,i)=>(t(),n("div",ue,[E.value.length===0?(t(),n("div",ce,r(S.searchQuery?l(p)("skills.noMatch"):l(p)("skills.noSkills")),1)):F("",!0),q.value?(t(!0),n(j,{key:1},G(q.value,s=>(t(),n("div",{key:s.path||"__unknown__",class:"skill-path-group"},[e("button",{class:"path-header",title:s.path||"",onClick:d=>w(s.path)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:V.value.has(s.path)}])},[...i[3]||(i[3]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),i[4]||(i[4]=e("span",{class:"path-header-icon"},[e("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})])],-1)),e("span",he,r(B(s.path)),1),e("span",pe,r(s.categories.reduce((d,m)=>d+m.skills.length,0)),1)],8,ve),V.value.has(s.path)?F("",!0):(t(),n("div",ke,[(t(!0),n(j,null,G(s.categories,d=>(t(),n("div",{key:d.name,class:"skill-category"},[e("button",{class:"category-header sub",onClick:m=>k(s.path+"::"+d.name)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:v.value.has(s.path+"::"+d.name)}])},[...i[5]||(i[5]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",fe,r(d.name),1),e("span",me,r(d.skills.length),1)],8,_e),v.value.has(s.path+"::"+d.name)?F("",!0):(t(),n("div",ge,[(t(!0),n(j,null,G(d.skills,m=>(t(),n("button",{key:x(d.name,m),class:U(["skill-item",[{active:S.selectedSkill===x(d.name,m)},`source-${m.source||"local"}`]]),onClick:Q=>c(d.name,m.name)},[e("div",we,[e("span",$e,[e("span",{class:U(["source-dot",`dot-${m.source||"local"}`]),title:l(p)(`skills.source.${m.source||"local"}`)},null,10,be),I(" "+r(m.name)+" ",1),m.modified?(t(),n("span",{key:0,class:"modified-badge",title:l(p)("skills.modified")},"✎",8,Ce)):F("",!0)]),m.description?(t(),n("span",xe,r(m.description),1)):F("",!0)]),R(l(oe),{size:"small",value:m.enabled!==!1,loading:D.value.has(m.name),"onUpdate:value":Q=>M(d.name,m.name,Q),onClick:i[0]||(i[0]=ie(()=>{},["stop"]))},null,8,["value","loading","onUpdate:value"])],10,ye))),128))]))]))),128))]))]))),128)):(t(!0),n(j,{key:2},G(E.value,s=>(t(),n("div",{key:s.name,class:"skill-category"},[e("button",{class:"category-header",onClick:d=>k(s.name)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:v.value.has(s.name)}])},[...i[6]||(i[6]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",Me,r(s.name),1),e("span",De,r(s.skills.length),1)],8,Se),v.value.has(s.name)?F("",!0):(t(),n("div",Fe,[(t(!0),n(j,null,G(s.skills,d=>(t(),n("button",{key:x(s.name,d),class:U(["skill-item",[{active:S.selectedSkill===x(s.name,d)},`source-${d.source||"local"}`]]),onClick:m=>c(s.name,d.name)},[e("div",ze,[e("span",Be,[e("span",{class:U(["source-dot",`dot-${d.source||"local"}`]),title:l(p)(`skills.source.${d.source||"local"}`)},null,10,Ie),I(" "+r(d.name)+" ",1),d.modified?(t(),n("span",{key:0,class:"modified-badge",title:l(p)("skills.modified")},"✎",8,Pe)):F("",!0)]),d.description?(t(),n("span",Te,r(d.description),1)):F("",!0)]),(d.source??"local")==="local"?(t(),n("button",{key:0,class:"skill-action-btn",title:l(p)("skills.delete"),disabled:C.value.has(d.name),onClick:ie(m=>b(s.name,d.name),["stop"])},[...i[7]||(i[7]=[rt('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-d16f70a7><polyline points="3 6 5 6 21 6" data-v-d16f70a7></polyline><path d="M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6" data-v-d16f70a7></path><path d="M10 11v6" data-v-d16f70a7></path><path d="M14 11v6" data-v-d16f70a7></path><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2" data-v-d16f70a7></path></svg>',1)])],8,Re)):F("",!0),R(l(oe),{size:"small",value:d.enabled!==!1,loading:D.value.has(d.name),"onUpdate:value":m=>M(s.name,d.name,m),onClick:i[1]||(i[1]=ie(()=>{},["stop"]))},null,8,["value","loading","onUpdate:value"])],10,Le))),128))]))]))),128)),P.value.length>0||S.archived.length>0?(t(),n("div",Ue,[e("button",{class:"category-header archive-header",onClick:i[2]||(i[2]=s=>h.value=!h.value)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:h.value}])},[...i[8]||(i[8]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",Ve,r(l(p)("skills.archived")),1),e("span",Ee,r(S.archived.length),1)]),h.value?F("",!0):(t(),n("div",He,[(t(!0),n(j,null,G(P.value,s=>(t(),n("button",{key:x(".archive",s),class:U(["skill-item skill-archived",{active:S.selectedSkill===x(".archive",s)}]),onClick:d=>c(".archive",s.name)},[e("div",Qe,[e("span",je,[e("span",{class:U(["source-dot",`dot-${s.source||"local"}`]),title:l(p)(`skills.source.${s.source||"local"}`)},null,10,Ae),I(" "+r(s.name),1)]),s.description?(t(),n("span",We,r(s.description),1)):F("",!0)])],10,qe))),128))]))])):F("",!0)]))}})})),wt=H((()=>{})),Xl,$t=H((()=>{Ge(),Ge(),wt(),ee(),Xl=le(Nl,[["__scopeId","data-v-d16f70a7"]])})),Ke,Ye,Ze,Je,Ne,Xe,Oe,el,ll,tl,sl,il,al,nl,ol,rl,dl,ul,Ol,cl=H((()=>{Z(),Jl(),te(),X(),N(),Ke={class:"skill-detail"},Ye={class:"detail-title"},Ze={class:"detail-category"},Je={class:"detail-name"},Ne={class:"usage-stats"},Xe=["disabled","title"],Oe=["fill"],el={key:0,class:"usage-stat",title:"Views"},ll={key:1,class:"usage-stat",title:"Uses"},tl={key:2,class:"usage-stat",title:"Patches"},sl={key:0,class:"detail-loading"},il={key:0,class:"detail-breadcrumb"},al={class:"breadcrumb-path"},nl={class:"detail-content"},ol={key:1,class:"detail-files"},rl={class:"files-header"},dl={class:"files-list"},ul=["onClick"],Ol=J({__name:"SkillDetail",props:{category:{},skill:{},skillName:{},patchCount:{},useCount:{},viewCount:{},pinned:{type:Boolean}},emits:["pinToggled"],setup(S,{emit:z}){const{t:p}=O(),u=se(),y=S,$=z,f=_(""),v=_([]),h=_(!1),D=_(""),C=_(null),P=_(!1);async function E(){h.value=!0,C.value=null,D.value="",v.value=[],f.value="";try{const k=`${y.category}/${y.skill}/SKILL.md`,[c,x]=await Promise.all([de(k),ht(y.category,y.skill)]);f.value=c,v.value=x.filter(M=>!M.isDir&&M.path!=="SKILL.md")}catch(k){f.value=p("skills.loadFailed")+`: ${k.message}`}finally{h.value=!1}}async function q(k){P.value=!0,C.value=k;try{const c=`${y.category}/${y.skill}/`;let x=k;if(k.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(k)){const M=k.replace(/\\/g,"/").split(/(?:^|\/)(?:\.hermes|hermes)\/skills\//)[1];M&&(x=M.split("/").slice(2).join("/"))}D.value=await de(`${c}${x}`)}catch(c){D.value=p("skills.fileLoadFailed")+`: ${c.message}`}finally{P.value=!1}}function V(){C.value=null,D.value=""}const w=_(!1);async function B(){if(!w.value){w.value=!0;try{const k=!y.pinned;await yt(y.skillName,k),$("pinToggled",y.skillName,k)}catch(k){u.error(p("skills.pinFailed")+`: ${k.message}`)}finally{w.value=!1}}}return Kl(()=>`${y.category}/${y.skill}`,E,{immediate:!0}),(k,c)=>(t(),n("div",Ke,[e("div",Ye,[e("span",Ze,r(S.category),1),c[4]||(c[4]=e("span",{class:"detail-separator"},"/",-1)),e("span",Je,r(S.skill),1),e("div",Ne,[e("button",{class:U(["pin-toggle",{active:S.pinned}]),disabled:w.value,title:S.pinned?l(p)("skills.unpin"):l(p)("skills.pin"),onClick:B},[(t(),n("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:S.pinned?"currentColor":"none",stroke:"currentColor","stroke-width":"2"},[...c[0]||(c[0]=[e("path",{d:"M16 12V4h1V2H7v2h1v8l-2 2v2h5.2v6h1.6v-6H18v-2l-2-2z"},null,-1)])],8,Oe))],10,Xe),S.viewCount!=null?(t(),n("span",el,[c[1]||(c[1]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)),I(" "+r(S.viewCount),1)])):F("",!0),S.useCount!=null?(t(),n("span",ll,[c[2]||(c[2]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})],-1)),I(" "+r(S.useCount),1)])):F("",!0),S.patchCount!=null?(t(),n("span",tl,[c[3]||(c[3]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12 20h9"}),e("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"})],-1)),I(" "+r(S.patchCount),1)])):F("",!0)])]),h.value&&!f.value?(t(),n("div",sl,r(l(p)("common.loading")),1)):(t(),n(j,{key:1},[C.value?(t(),n("div",il,[e("button",{class:"back-btn",onClick:V},[c[5]||(c[5]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)),I(" "+r(l(p)("skills.backTo"))+" "+r(S.skill),1)]),e("span",al,r(C.value),1)])):F("",!0),e("div",nl,[C.value?(t(),A(ae,{key:0,content:D.value},null,8,["content"])):(t(),A(ae,{key:1,content:f.value},null,8,["content"]))]),!C.value&&v.value.length>0?(t(),n("div",ol,[e("div",rl,r(l(p)("skills.attachedFiles")),1),e("div",dl,[(t(!0),n(j,null,G(v.value,x=>(t(),n("button",{key:x.path,class:"file-item",onClick:M=>q(x.path)},[c[6]||(c[6]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e("polyline",{points:"14 2 14 8 20 8"})],-1)),e("span",null,r(x.path),1)],8,ul))),128))])])):F("",!0)],64))]))}})})),bt=H((()=>{})),et,Ct=H((()=>{cl(),cl(),bt(),ee(),et=le(Ol,[["__scopeId","data-v-e1b89b0f"]])})),vl,hl,pl,kl,_l,fl,ml,gl,lt,yl=H((()=>{Z(),N(),te(),X(),vl={class:"form-row"},hl={class:"hint"},pl={class:"form-row"},kl={class:"field-label"},_l={class:"form-row"},fl={key:1,class:"folder-picker"},ml={key:0,class:"folder-info"},gl={class:"modal-footer"},lt=J({__name:"SkillImportModal",emits:["close","saved"],setup(S,{emit:z}){const p=z,{t:u}=O(),y=se(),$=_(!0),f=_(!1),v=_("folder"),h=_([]),D=_([]),C=_(""),P=_(""),E=_(null),q=K(()=>v.value==="zip"?h.value.length>0:D.value.length>0);function V(){h.value=[],D.value=[],C.value=""}function w({file:M}){return(M.name?.toLowerCase()||"").endsWith(".zip")?!0:(y.warning(u("skills.importInvalidFile")),!1)}function B(){E.value?.click()}function k(M){const b=M.target.files;if(!b||b.length===0)return;const o=[];for(let s=0;s<b.length;s++)o.push(b[s]);D.value=o;const i=o[0].webkitRelativePath;C.value=i?i.split("/")[0]:""}async function c(){if(!q.value){y.warning(u("skills.importNoSelection"));return}let M=[];if(v.value==="zip")for(const b of h.value)b.file&&M.push(b.file);else M=D.value;if(M.length===0){y.error(u("skills.importFailed"));return}f.value=!0;try{const b=await pt(M,P.value.trim()||void 0);y.success(u("skills.importSuccess")+(b?.name?`: ${b.name}`:"")),y.info(u("skills.reloadHint"),{duration:6e3}),p("saved")}catch(b){y.error(u("skills.importFailed")+`: ${b.message}`)}finally{f.value=!1}}function x(){f.value||($.value=!1,setTimeout(()=>p("close"),200))}return(M,b)=>(t(),A(l(Yl),{show:$.value,"onUpdate:show":b[3]||(b[3]=o=>$.value=o),preset:"card",title:l(u)("skills.importTitle"),style:{width:"min(480px, calc(100vw - 32px))"},"mask-closable":!f.value,onAfterLeave:b[4]||(b[4]=o=>p("close"))},{footer:T(()=>[e("div",gl,[R(l(W),{disabled:f.value,onClick:x},{default:T(()=>[I(r(l(u)("common.cancel")),1)]),_:1},8,["disabled"]),R(l(W),{type:"primary",loading:f.value,disabled:!q.value,onClick:c},{default:T(()=>[I(r(l(u)("common.confirm")),1)]),_:1},8,["loading","disabled"])])]),default:T(()=>[e("div",vl,[R(l(dt),{value:v.value,"onUpdate:value":[b[0]||(b[0]=o=>v.value=o),V],size:"small",disabled:f.value},{default:T(()=>[R(l(re),{value:"folder"},{default:T(()=>[I(r(l(u)("skills.importModeFolder")),1)]),_:1}),R(l(re),{value:"zip"},{default:T(()=>[I(r(l(u)("skills.importModeZip")),1)]),_:1})]),_:1},8,["value","disabled"]),e("p",hl,r(v.value==="zip"?l(u)("skills.importHintZip"):l(u)("skills.importHintFolder")),1)]),e("div",pl,[e("label",kl,r(l(u)("skills.importTargetCategory")),1),R(l(ne),{value:P.value,"onUpdate:value":b[1]||(b[1]=o=>P.value=o),size:"small",placeholder:l(u)("skills.importTargetCategoryPlaceholder"),disabled:f.value},null,8,["value","placeholder","disabled"])]),e("div",_l,[v.value==="zip"?(t(),A(l(ot),{key:0,"file-list":h.value,"onUpdate:fileList":b[2]||(b[2]=o=>h.value=o),max:1,accept:".zip","default-upload":!1,disabled:f.value,onBeforeUpload:w},{default:T(()=>[R(l(W),{disabled:f.value},{default:T(()=>[I(r(l(u)("skills.importSelectFile")),1)]),_:1},8,["disabled"])]),_:1},8,["file-list","disabled"])):(t(),n("div",fl,[e("input",{ref_key:"folderInputRef",ref:E,type:"file",webkitdirectory:"",multiple:"",style:{display:"none"},onChange:k},null,544),R(l(W),{disabled:f.value,onClick:B},{default:T(()=>[I(r(l(u)("skills.importSelectFolder")),1)]),_:1},8,["disabled"]),C.value?(t(),n("span",ml,r(C.value)+" ("+r(D.value.length)+" "+r(l(u)("skills.importFileCount"))+") ",1)):F("",!0)]))])]),_:1},8,["show","title","mask-closable"]))}})})),xt=H((()=>{})),tt,St=H((()=>{yl(),yl(),xt(),ee(),tt=le(lt,[["__scopeId","data-v-6cc6068d"]])})),wl,$l,bl,Cl,xl,Sl,Ml,Dl,Fl,st,Ll=H((()=>{Z(),N(),X(),te(),wl={class:"hint"},$l={key:0,class:"state-row"},bl={key:1,class:"state-row empty"},Cl={key:2,class:"dir-list"},xl={class:"dir-input-wrap"},Sl={key:0,class:"hint-tag broken"},Ml={key:1,class:"hint-tag broken"},Dl=["title","disabled","onClick"],Fl={class:"modal-footer"},st=J({__name:"SkillExternalDirsModal",emits:["close","saved"],setup(S,{emit:z}){const p=z,{t:u}=O(),y=se(),$=_(!0),f=_(!1),v=_(!0),h=_([]);function D(w){return w.exists?w.isDir?{raw:w.raw,hint:null}:{raw:w.raw,hint:"notdir"}:{raw:w.raw,hint:"missing"}}Zl(async()=>{try{h.value=(await _t()).map(D)}catch(w){y.error(u("skills.externalDirs.loadFailed")+`: ${w.message}`)}finally{v.value=!1}});function C(){h.value.push({raw:"",hint:null})}function P(w){h.value.splice(w,1)}function E(w){h.value[w]&&(h.value[w].hint=null)}async function q(){const w=[],B=new Set;for(const k of h.value){const c=k.raw.trim();c&&(B.has(c)||(B.add(c),w.push(c)))}f.value=!0;try{await kt(w),y.success(u("skills.externalDirs.saveSuccess")),p("saved")}catch(k){y.error(u("skills.externalDirs.saveFailed")+`: ${k.message}`)}finally{f.value=!1}}function V(){f.value||($.value=!1,setTimeout(()=>p("close"),200))}return(w,B)=>(t(),A(l(Yl),{show:$.value,"onUpdate:show":B[0]||(B[0]=k=>$.value=k),preset:"card",title:l(u)("skills.externalDirs.title"),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!f.value,onAfterLeave:B[1]||(B[1]=k=>p("close"))},{footer:T(()=>[e("div",Fl,[R(l(W),{disabled:f.value,onClick:V},{default:T(()=>[I(r(l(u)("common.cancel")),1)]),_:1},8,["disabled"]),R(l(W),{type:"primary",loading:f.value,disabled:v.value,onClick:q},{default:T(()=>[I(r(l(u)("common.save")),1)]),_:1},8,["loading","disabled"])])]),default:T(()=>[e("p",wl,r(l(u)("skills.externalDirs.hint")),1),v.value?(t(),n("div",$l,r(l(u)("common.loading")),1)):h.value.length===0?(t(),n("div",bl,r(l(u)("skills.externalDirs.empty")),1)):(t(),n("ul",Cl,[(t(!0),n(j,null,G(h.value,(k,c)=>(t(),n("li",{key:c,class:"dir-row"},[e("div",xl,[R(l(ne),{value:k.raw,"onUpdate:value":[x=>k.raw=x,x=>E(c)],size:"small",placeholder:l(u)("skills.externalDirs.placeholder"),disabled:f.value},null,8,["value","onUpdate:value","placeholder","disabled"]),k.hint==="missing"?(t(),n("span",Sl,r(l(u)("skills.externalDirs.missing")),1)):k.hint==="notdir"?(t(),n("span",Ml,r(l(u)("skills.externalDirs.notDir")),1)):F("",!0)]),e("button",{class:"row-remove",title:l(u)("skills.externalDirs.removeRow"),disabled:f.value,onClick:x=>P(c)},[...B[2]||(B[2]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Dl)]))),128))])),R(l(W),{size:"small",disabled:f.value,onClick:C},{icon:T(()=>[...B[3]||(B[3]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:T(()=>[I(" "+r(l(u)("skills.externalDirs.add")),1)]),_:1},8,["disabled"])]),_:1},8,["show","title","mask-closable"]))}})})),Mt=H((()=>{})),it,Dt=H((()=>{Ll(),Ll(),Mt(),ee(),it=le(st,[["__scopeId","data-v-134aef16"]])})),zl,Bl,Il,Pl,Tl,Rl,Ul,Vl,El,Hl,ql,Ql,jl,Al,Wl,at,Gl=H((()=>{Z(),N(),X(),$t(),Ct(),St(),Dt(),Jl(),te(),vt(),zl={class:"skills-view"},Bl={class:"page-header"},Il={style:{display:"flex","align-items":"center",gap:"8px"}},Pl={class:"header-title"},Tl={class:"source-legend"},Rl={class:"header-actions"},Ul={class:"header-action-label"},Vl={class:"header-action-label"},El={class:"skills-content"},Hl={key:0,class:"skills-loading"},ql={key:1,class:"skills-layout"},Ql={key:0,class:"skills-sidebar"},jl={class:"skills-main"},Al={key:1,class:"recommendations-panel"},Wl={key:1,class:"empty-detail"},at=J({__name:"SkillsView",setup(S){const{t:z,locale:p}=O(),u=ct(),y=_([]),$=_([]),f=_(!1),v=_(""),h=_(""),D=_(""),C=_(!0),P=_(null),E=_(""),q=_(!1),V=_(!1);let w=null,B=0;const k=K(()=>String(p.value).startsWith("zh")?"/skill-recommendations.zh.md":"/skill-recommendations.en.md"),c=K(()=>!v.value||!h.value?null:v.value===".archive"?$.value.find(g=>g.name===h.value)??null:y.value.find(g=>g.name===v.value)?.skills.find(g=>g.name===h.value)??null);function x(g){C.value=!g.matches}Zl(()=>{w=window.matchMedia("(max-width: 768px)"),x(w),w.addEventListener("change",x),M(),b()}),nt(()=>{w?.removeEventListener("change",x)});async function M(){f.value=!0;try{(!u.activeProfileName||u.profiles.length===0)&&await u.fetchProfiles();const g=await mt();y.value=g.categories,$.value=g.archived}catch(g){console.error("Failed to load skills:",g)}finally{f.value=!1}}async function b(){const g=++B;try{const a=await fetch(k.value);if(!a.ok)throw new Error(`HTTP ${a.status}`);const L=await a.text();if(/^\s*<!doctype html/i.test(L)||/^\s*<html[\s>]/i.test(L))throw new Error("Skill recommendations file was not found");g===B&&(E.value=L)}catch(a){g===B&&(E.value=""),console.error("Failed to load skill recommendations:",a)}}Kl(k,b);function o(g){P.value=P.value===g?null:g}function i(g,a){if(v.value===g&&h.value===a){v.value="",h.value="";return}v.value=g,h.value=a,window.innerWidth<=768&&(C.value=!1)}function s(g,a){v.value===g&&h.value===a&&(v.value="",h.value=""),M()}function d(){q.value=!1,M()}function m(){V.value=!1,M()}function Q(g,a){if(v.value===".archive"){const L=$.value.find(Y=>Y.name===g);L&&(L.pinned=a)}else{const L=y.value.find(Y=>Y.name===v.value)?.skills.find(Y=>Y.name===g);L&&(L.pinned=a)}}return(g,a)=>(t(),n("div",zl,[e("header",Bl,[e("div",Il,[e("h2",Pl,r(l(z)("skills.title")),1),C.value?F("",!0):(t(),n("button",{key:0,class:"sidebar-toggle",onClick:a[0]||(a[0]=L=>C.value=!0)},[...a[12]||(a[12]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),e("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),e("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]))]),e("div",Tl,[e("button",{class:U(["legend-item",{active:P.value==="builtin"}]),onClick:a[1]||(a[1]=L=>o("builtin"))},[a[13]||(a[13]=e("span",{class:"legend-dot dot-builtin"},null,-1)),I(r(l(z)("skills.source.builtin")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="hub"}]),onClick:a[2]||(a[2]=L=>o("hub"))},[a[14]||(a[14]=e("span",{class:"legend-dot dot-hub"},null,-1)),I(r(l(z)("skills.source.hub")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="local"}]),onClick:a[3]||(a[3]=L=>o("local"))},[a[15]||(a[15]=e("span",{class:"legend-dot dot-local"},null,-1)),I(r(l(z)("skills.source.local")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="external"}]),onClick:a[4]||(a[4]=L=>o("external"))},[a[16]||(a[16]=e("span",{class:"legend-dot dot-external"},null,-1)),I(r(l(z)("skills.source.external")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="modified"}]),onClick:a[5]||(a[5]=L=>o("modified"))},[a[17]||(a[17]=e("span",{class:"modified-icon"},"✎",-1)),I(r(l(z)("skills.modified")),1)],2)]),e("div",Rl,[R(l(W),{class:"header-action-btn",size:"small",title:l(z)("skills.import"),onClick:a[6]||(a[6]=L=>q.value=!0)},{icon:T(()=>[...a[18]||(a[18]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("polyline",{points:"17 8 12 3 7 8"}),e("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)])]),default:T(()=>[e("span",Ul,r(l(z)("skills.import")),1)]),_:1},8,["title"]),R(l(W),{class:"header-action-btn",size:"small",title:l(z)("skills.externalDirs.manage"),onClick:a[7]||(a[7]=L=>V.value=!0)},{icon:T(()=>[...a[19]||(a[19]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1)])]),default:T(()=>[e("span",Vl,r(l(z)("skills.externalDirs.manage")),1)]),_:1},8,["title"]),R(l(ne),{value:D.value,"onUpdate:value":a[8]||(a[8]=L=>D.value=L),placeholder:l(z)("skills.searchPlaceholder"),size:"small",clearable:"",style:{width:"160px"}},null,8,["value","placeholder"])])]),q.value?(t(),A(tt,{key:0,onClose:a[9]||(a[9]=L=>q.value=!1),onSaved:d})):F("",!0),V.value?(t(),A(it,{key:1,onClose:a[10]||(a[10]=L=>V.value=!1),onSaved:m})):F("",!0),e("div",El,[f.value&&y.value.length===0?(t(),n("div",Hl,r(l(z)("common.loading")),1)):(t(),n("div",ql,[e("div",{class:U(["mobile-backdrop",{active:C.value}]),onClick:a[11]||(a[11]=L=>C.value=!1)},null,2),C.value?(t(),n("div",Ql,[R(Xl,{categories:y.value,archived:$.value,"selected-skill":v.value&&h.value?`${v.value}/${h.value}`:null,"search-query":D.value,"source-filter":P.value,onSelect:i,onDeleted:s},null,8,["categories","archived","selected-skill","search-query","source-filter"])])):F("",!0),e("div",jl,[v.value&&h.value?(t(),A(et,{key:0,category:v.value,skill:h.value,"skill-name":c.value?.name||h.value,"patch-count":c.value?.patchCount,"use-count":c.value?.useCount,"view-count":c.value?.viewCount,pinned:c.value?.pinned,onPinToggled:Q},null,8,["category","skill","skill-name","patch-count","use-count","view-count","pinned"])):(t(),n("div",Al,[E.value?(t(),A(ae,{key:0,content:E.value},null,8,["content"])):(t(),n("div",Wl,[a[20]||(a[20]=e("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",opacity:"0.2"},[e("polygon",{points:"12 2 2 7 12 12 22 7 12 2"}),e("polyline",{points:"2 17 12 22 22 17"}),e("polyline",{points:"2 12 12 17 22 12"})],-1)),e("span",null,r(l(z)("skills.noMatch")),1)]))]))])]))])]))}})})),Ft=H((()=>{})),Lt,zt=H((()=>{Gl(),Gl(),Ft(),ee(),Lt=le(at,[["__scopeId","data-v-f3601ac9"]])}));zt();export{Lt as default};
1
+ import{n as H}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as r,$t as e,An as T,At as ne,Bn as _,Bt as Z,Cn as G,Jn as l,Jt as ie,On as Kl,Qt as K,W as Yl,Xn as U,Yt as j,an as I,bn as nt,en as A,i as ot,in as rt,m as oe,nn as n,on as R,ot as dt,q as ut,sn as J,t as N,tn as F,ut as re,wt as W,xn as t,yn as Zl,z as se}from"./ui-vendor-DNWaqYj5.js";import{c as X,l as O}from"./vue-vendor-VX6KvV1_.js";import{n as ee,t as le}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{X as ct,Y as vt}from"./index-DyLZQAQu.js";import{n as Jl,t as ae}from"./MarkdownRenderer-2bwbBjlK.js";import{a as ht,c as pt,d as kt,i as de,l as te,n as _t,p as ft,s as mt,t as gt,u as yt}from"./skills-CDjYTDMo.js";var ue,ce,ve,he,pe,ke,_e,fe,me,ge,ye,we,$e,be,Ce,xe,Se,Me,De,Fe,Le,ze,Be,Ie,Pe,Te,Re,Ue,Ve,Ee,He,qe,Qe,je,Ae,We,Nl,Ge=H((()=>{Z(),N(),te(),X(),ue={class:"skill-list"},ce={key:0,class:"skill-empty"},ve=["title","onClick"],he={class:"path-header-text"},pe={class:"category-count"},ke={key:0,class:"path-group-body"},_e=["onClick"],fe={class:"category-name"},me={class:"category-count"},ge={key:0,class:"category-skills"},ye=["onClick"],we={class:"skill-info"},$e={class:"skill-name"},be=["title"],Ce=["title"],xe={key:0,class:"skill-desc"},Se=["onClick"],Me={class:"category-name"},De={class:"category-count"},Fe={key:0,class:"category-skills"},Le=["onClick"],ze={class:"skill-info"},Be={class:"skill-name"},Ie=["title"],Pe=["title"],Te={key:0,class:"skill-desc"},Re=["title","disabled","onClick"],Ue={key:3,class:"skill-category archive-section"},Ve={class:"category-name"},Ee={class:"category-count"},He={key:0,class:"category-skills"},qe=["onClick"],Qe={class:"skill-info"},je={class:"skill-name"},Ae=["title"],We={key:0,class:"skill-desc"},Nl=J({__name:"SkillList",props:{categories:{},archived:{},selectedSkill:{},searchQuery:{},sourceFilter:{}},emits:["select","deleted"],setup(S,{emit:z}){const{t:p}=O(),u=se(),y=ut(),$=S,f=z,v=_(new Set),h=_(!0),D=_(new Set),C=_(new Set),P=K(()=>{let o=$.archived;if($.sourceFilter&&$.sourceFilter!=="modified"&&(o=o.filter(i=>(i.source||"local")===$.sourceFilter)),$.searchQuery){const i=$.searchQuery.toLowerCase();o=o.filter(s=>s.name.toLowerCase().includes(i)||s.description.toLowerCase().includes(i))}return o}),E=K(()=>{let o=$.categories;if($.sourceFilter&&(o=o.map(i=>({...i,skills:i.skills.filter(s=>$.sourceFilter==="modified"?s.modified:(s.source||"local")===$.sourceFilter)})).filter(i=>i.skills.length>0)),$.searchQuery){const i=$.searchQuery.toLowerCase();o=o.map(s=>({...s,skills:s.skills.filter(d=>d.name.toLowerCase().includes(i)||d.description.toLowerCase().includes(i))})).filter(s=>s.skills.length>0||s.name.toLowerCase().includes(i))}return o}),q=K(()=>{if($.sourceFilter!=="external")return null;const o=new Map,i=[],s=new Map;for(const d of E.value)for(const m of d.skills){const Q=m.sourcePath||"";o.has(Q)||(o.set(Q,new Map),i.push(Q),s.set(Q,[]));const g=o.get(Q);g.has(d.name)||(g.set(d.name,[]),s.get(Q).push(d.name)),g.get(d.name).push(m)}return i.map(d=>({path:d,categories:s.get(d).map(m=>({name:m,skills:o.get(d).get(m)}))}))}),V=_(new Set);function w(o){V.value.has(o)?V.value.delete(o):V.value.add(o)}function B(o){return o||"(unknown)"}function k(o){v.value.has(o)?v.value.delete(o):v.value.add(o)}function c(o,i){f("select",o,i)}function x(o,i){return`${o}/${i.name}`}async function M(o,i,s){if(!D.value.has(i)){D.value.add(i);try{await ft(i,s);const d=$.categories.find(m=>m.name===o)?.skills.find(m=>m.name===i);d&&(d.enabled=s)}catch(d){u.error(p("skills.toggleFailed")+`: ${d.message}`)}finally{D.value.delete(i)}}}function b(o,i){C.value.has(i)||y.warning({title:p("skills.delete"),content:p("skills.deleteConfirm",{name:i}),positiveText:p("common.delete"),negativeText:p("common.cancel"),onPositiveClick:async()=>{C.value.add(i);try{await gt(o,i),u.success(p("skills.deleteSuccess")),u.info(p("skills.reloadHint"),{duration:6e3}),f("deleted",o,i)}catch(s){u.error(p("skills.deleteFailed")+`: ${s.message}`)}finally{C.value.delete(i)}}})}return(o,i)=>(t(),n("div",ue,[E.value.length===0?(t(),n("div",ce,r(S.searchQuery?l(p)("skills.noMatch"):l(p)("skills.noSkills")),1)):F("",!0),q.value?(t(!0),n(j,{key:1},G(q.value,s=>(t(),n("div",{key:s.path||"__unknown__",class:"skill-path-group"},[e("button",{class:"path-header",title:s.path||"",onClick:d=>w(s.path)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:V.value.has(s.path)}])},[...i[3]||(i[3]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),i[4]||(i[4]=e("span",{class:"path-header-icon"},[e("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})])],-1)),e("span",he,r(B(s.path)),1),e("span",pe,r(s.categories.reduce((d,m)=>d+m.skills.length,0)),1)],8,ve),V.value.has(s.path)?F("",!0):(t(),n("div",ke,[(t(!0),n(j,null,G(s.categories,d=>(t(),n("div",{key:d.name,class:"skill-category"},[e("button",{class:"category-header sub",onClick:m=>k(s.path+"::"+d.name)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:v.value.has(s.path+"::"+d.name)}])},[...i[5]||(i[5]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",fe,r(d.name),1),e("span",me,r(d.skills.length),1)],8,_e),v.value.has(s.path+"::"+d.name)?F("",!0):(t(),n("div",ge,[(t(!0),n(j,null,G(d.skills,m=>(t(),n("button",{key:x(d.name,m),class:U(["skill-item",[{active:S.selectedSkill===x(d.name,m)},`source-${m.source||"local"}`]]),onClick:Q=>c(d.name,m.name)},[e("div",we,[e("span",$e,[e("span",{class:U(["source-dot",`dot-${m.source||"local"}`]),title:l(p)(`skills.source.${m.source||"local"}`)},null,10,be),I(" "+r(m.name)+" ",1),m.modified?(t(),n("span",{key:0,class:"modified-badge",title:l(p)("skills.modified")},"✎",8,Ce)):F("",!0)]),m.description?(t(),n("span",xe,r(m.description),1)):F("",!0)]),R(l(oe),{size:"small",value:m.enabled!==!1,loading:D.value.has(m.name),"onUpdate:value":Q=>M(d.name,m.name,Q),onClick:i[0]||(i[0]=ie(()=>{},["stop"]))},null,8,["value","loading","onUpdate:value"])],10,ye))),128))]))]))),128))]))]))),128)):(t(!0),n(j,{key:2},G(E.value,s=>(t(),n("div",{key:s.name,class:"skill-category"},[e("button",{class:"category-header",onClick:d=>k(s.name)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:v.value.has(s.name)}])},[...i[6]||(i[6]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",Me,r(s.name),1),e("span",De,r(s.skills.length),1)],8,Se),v.value.has(s.name)?F("",!0):(t(),n("div",Fe,[(t(!0),n(j,null,G(s.skills,d=>(t(),n("button",{key:x(s.name,d),class:U(["skill-item",[{active:S.selectedSkill===x(s.name,d)},`source-${d.source||"local"}`]]),onClick:m=>c(s.name,d.name)},[e("div",ze,[e("span",Be,[e("span",{class:U(["source-dot",`dot-${d.source||"local"}`]),title:l(p)(`skills.source.${d.source||"local"}`)},null,10,Ie),I(" "+r(d.name)+" ",1),d.modified?(t(),n("span",{key:0,class:"modified-badge",title:l(p)("skills.modified")},"✎",8,Pe)):F("",!0)]),d.description?(t(),n("span",Te,r(d.description),1)):F("",!0)]),(d.source??"local")==="local"?(t(),n("button",{key:0,class:"skill-action-btn",title:l(p)("skills.delete"),disabled:C.value.has(d.name),onClick:ie(m=>b(s.name,d.name),["stop"])},[...i[7]||(i[7]=[rt('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-d16f70a7><polyline points="3 6 5 6 21 6" data-v-d16f70a7></polyline><path d="M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6" data-v-d16f70a7></path><path d="M10 11v6" data-v-d16f70a7></path><path d="M14 11v6" data-v-d16f70a7></path><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2" data-v-d16f70a7></path></svg>',1)])],8,Re)):F("",!0),R(l(oe),{size:"small",value:d.enabled!==!1,loading:D.value.has(d.name),"onUpdate:value":m=>M(s.name,d.name,m),onClick:i[1]||(i[1]=ie(()=>{},["stop"]))},null,8,["value","loading","onUpdate:value"])],10,Le))),128))]))]))),128)),P.value.length>0||S.archived.length>0?(t(),n("div",Ue,[e("button",{class:"category-header archive-header",onClick:i[2]||(i[2]=s=>h.value=!h.value)},[(t(),n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:U(["category-arrow",{collapsed:h.value}])},[...i[8]||(i[8]=[e("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),e("span",Ve,r(l(p)("skills.archived")),1),e("span",Ee,r(S.archived.length),1)]),h.value?F("",!0):(t(),n("div",He,[(t(!0),n(j,null,G(P.value,s=>(t(),n("button",{key:x(".archive",s),class:U(["skill-item skill-archived",{active:S.selectedSkill===x(".archive",s)}]),onClick:d=>c(".archive",s.name)},[e("div",Qe,[e("span",je,[e("span",{class:U(["source-dot",`dot-${s.source||"local"}`]),title:l(p)(`skills.source.${s.source||"local"}`)},null,10,Ae),I(" "+r(s.name),1)]),s.description?(t(),n("span",We,r(s.description),1)):F("",!0)])],10,qe))),128))]))])):F("",!0)]))}})})),wt=H((()=>{})),Xl,$t=H((()=>{Ge(),Ge(),wt(),ee(),Xl=le(Nl,[["__scopeId","data-v-d16f70a7"]])})),Ke,Ye,Ze,Je,Ne,Xe,Oe,el,ll,tl,sl,il,al,nl,ol,rl,dl,ul,Ol,cl=H((()=>{Z(),Jl(),te(),X(),N(),Ke={class:"skill-detail"},Ye={class:"detail-title"},Ze={class:"detail-category"},Je={class:"detail-name"},Ne={class:"usage-stats"},Xe=["disabled","title"],Oe=["fill"],el={key:0,class:"usage-stat",title:"Views"},ll={key:1,class:"usage-stat",title:"Uses"},tl={key:2,class:"usage-stat",title:"Patches"},sl={key:0,class:"detail-loading"},il={key:0,class:"detail-breadcrumb"},al={class:"breadcrumb-path"},nl={class:"detail-content"},ol={key:1,class:"detail-files"},rl={class:"files-header"},dl={class:"files-list"},ul=["onClick"],Ol=J({__name:"SkillDetail",props:{category:{},skill:{},skillName:{},patchCount:{},useCount:{},viewCount:{},pinned:{type:Boolean}},emits:["pinToggled"],setup(S,{emit:z}){const{t:p}=O(),u=se(),y=S,$=z,f=_(""),v=_([]),h=_(!1),D=_(""),C=_(null),P=_(!1);async function E(){h.value=!0,C.value=null,D.value="",v.value=[],f.value="";try{const k=`${y.category}/${y.skill}/SKILL.md`,[c,x]=await Promise.all([de(k),ht(y.category,y.skill)]);f.value=c,v.value=x.filter(M=>!M.isDir&&M.path!=="SKILL.md")}catch(k){f.value=p("skills.loadFailed")+`: ${k.message}`}finally{h.value=!1}}async function q(k){P.value=!0,C.value=k;try{const c=`${y.category}/${y.skill}/`;let x=k;if(k.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(k)){const M=k.replace(/\\/g,"/").split(/(?:^|\/)(?:\.hermes|hermes)\/skills\//)[1];M&&(x=M.split("/").slice(2).join("/"))}D.value=await de(`${c}${x}`)}catch(c){D.value=p("skills.fileLoadFailed")+`: ${c.message}`}finally{P.value=!1}}function V(){C.value=null,D.value=""}const w=_(!1);async function B(){if(!w.value){w.value=!0;try{const k=!y.pinned;await yt(y.skillName,k),$("pinToggled",y.skillName,k)}catch(k){u.error(p("skills.pinFailed")+`: ${k.message}`)}finally{w.value=!1}}}return Kl(()=>`${y.category}/${y.skill}`,E,{immediate:!0}),(k,c)=>(t(),n("div",Ke,[e("div",Ye,[e("span",Ze,r(S.category),1),c[4]||(c[4]=e("span",{class:"detail-separator"},"/",-1)),e("span",Je,r(S.skill),1),e("div",Ne,[e("button",{class:U(["pin-toggle",{active:S.pinned}]),disabled:w.value,title:S.pinned?l(p)("skills.unpin"):l(p)("skills.pin"),onClick:B},[(t(),n("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:S.pinned?"currentColor":"none",stroke:"currentColor","stroke-width":"2"},[...c[0]||(c[0]=[e("path",{d:"M16 12V4h1V2H7v2h1v8l-2 2v2h5.2v6h1.6v-6H18v-2l-2-2z"},null,-1)])],8,Oe))],10,Xe),S.viewCount!=null?(t(),n("span",el,[c[1]||(c[1]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)),I(" "+r(S.viewCount),1)])):F("",!0),S.useCount!=null?(t(),n("span",ll,[c[2]||(c[2]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})],-1)),I(" "+r(S.useCount),1)])):F("",!0),S.patchCount!=null?(t(),n("span",tl,[c[3]||(c[3]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12 20h9"}),e("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"})],-1)),I(" "+r(S.patchCount),1)])):F("",!0)])]),h.value&&!f.value?(t(),n("div",sl,r(l(p)("common.loading")),1)):(t(),n(j,{key:1},[C.value?(t(),n("div",il,[e("button",{class:"back-btn",onClick:V},[c[5]||(c[5]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)),I(" "+r(l(p)("skills.backTo"))+" "+r(S.skill),1)]),e("span",al,r(C.value),1)])):F("",!0),e("div",nl,[C.value?(t(),A(ae,{key:0,content:D.value},null,8,["content"])):(t(),A(ae,{key:1,content:f.value},null,8,["content"]))]),!C.value&&v.value.length>0?(t(),n("div",ol,[e("div",rl,r(l(p)("skills.attachedFiles")),1),e("div",dl,[(t(!0),n(j,null,G(v.value,x=>(t(),n("button",{key:x.path,class:"file-item",onClick:M=>q(x.path)},[c[6]||(c[6]=e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e("polyline",{points:"14 2 14 8 20 8"})],-1)),e("span",null,r(x.path),1)],8,ul))),128))])])):F("",!0)],64))]))}})})),bt=H((()=>{})),et,Ct=H((()=>{cl(),cl(),bt(),ee(),et=le(Ol,[["__scopeId","data-v-e1b89b0f"]])})),vl,hl,pl,kl,_l,fl,ml,gl,lt,yl=H((()=>{Z(),N(),te(),X(),vl={class:"form-row"},hl={class:"hint"},pl={class:"form-row"},kl={class:"field-label"},_l={class:"form-row"},fl={key:1,class:"folder-picker"},ml={key:0,class:"folder-info"},gl={class:"modal-footer"},lt=J({__name:"SkillImportModal",emits:["close","saved"],setup(S,{emit:z}){const p=z,{t:u}=O(),y=se(),$=_(!0),f=_(!1),v=_("folder"),h=_([]),D=_([]),C=_(""),P=_(""),E=_(null),q=K(()=>v.value==="zip"?h.value.length>0:D.value.length>0);function V(){h.value=[],D.value=[],C.value=""}function w({file:M}){return(M.name?.toLowerCase()||"").endsWith(".zip")?!0:(y.warning(u("skills.importInvalidFile")),!1)}function B(){E.value?.click()}function k(M){const b=M.target.files;if(!b||b.length===0)return;const o=[];for(let s=0;s<b.length;s++)o.push(b[s]);D.value=o;const i=o[0].webkitRelativePath;C.value=i?i.split("/")[0]:""}async function c(){if(!q.value){y.warning(u("skills.importNoSelection"));return}let M=[];if(v.value==="zip")for(const b of h.value)b.file&&M.push(b.file);else M=D.value;if(M.length===0){y.error(u("skills.importFailed"));return}f.value=!0;try{const b=await pt(M,P.value.trim()||void 0);y.success(u("skills.importSuccess")+(b?.name?`: ${b.name}`:"")),y.info(u("skills.reloadHint"),{duration:6e3}),p("saved")}catch(b){y.error(u("skills.importFailed")+`: ${b.message}`)}finally{f.value=!1}}function x(){f.value||($.value=!1,setTimeout(()=>p("close"),200))}return(M,b)=>(t(),A(l(Yl),{show:$.value,"onUpdate:show":b[3]||(b[3]=o=>$.value=o),preset:"card",title:l(u)("skills.importTitle"),style:{width:"min(480px, calc(100vw - 32px))"},"mask-closable":!f.value,onAfterLeave:b[4]||(b[4]=o=>p("close"))},{footer:T(()=>[e("div",gl,[R(l(W),{disabled:f.value,onClick:x},{default:T(()=>[I(r(l(u)("common.cancel")),1)]),_:1},8,["disabled"]),R(l(W),{type:"primary",loading:f.value,disabled:!q.value,onClick:c},{default:T(()=>[I(r(l(u)("common.confirm")),1)]),_:1},8,["loading","disabled"])])]),default:T(()=>[e("div",vl,[R(l(dt),{value:v.value,"onUpdate:value":[b[0]||(b[0]=o=>v.value=o),V],size:"small",disabled:f.value},{default:T(()=>[R(l(re),{value:"folder"},{default:T(()=>[I(r(l(u)("skills.importModeFolder")),1)]),_:1}),R(l(re),{value:"zip"},{default:T(()=>[I(r(l(u)("skills.importModeZip")),1)]),_:1})]),_:1},8,["value","disabled"]),e("p",hl,r(v.value==="zip"?l(u)("skills.importHintZip"):l(u)("skills.importHintFolder")),1)]),e("div",pl,[e("label",kl,r(l(u)("skills.importTargetCategory")),1),R(l(ne),{value:P.value,"onUpdate:value":b[1]||(b[1]=o=>P.value=o),size:"small",placeholder:l(u)("skills.importTargetCategoryPlaceholder"),disabled:f.value},null,8,["value","placeholder","disabled"])]),e("div",_l,[v.value==="zip"?(t(),A(l(ot),{key:0,"file-list":h.value,"onUpdate:fileList":b[2]||(b[2]=o=>h.value=o),max:1,accept:".zip","default-upload":!1,disabled:f.value,onBeforeUpload:w},{default:T(()=>[R(l(W),{disabled:f.value},{default:T(()=>[I(r(l(u)("skills.importSelectFile")),1)]),_:1},8,["disabled"])]),_:1},8,["file-list","disabled"])):(t(),n("div",fl,[e("input",{ref_key:"folderInputRef",ref:E,type:"file",webkitdirectory:"",multiple:"",style:{display:"none"},onChange:k},null,544),R(l(W),{disabled:f.value,onClick:B},{default:T(()=>[I(r(l(u)("skills.importSelectFolder")),1)]),_:1},8,["disabled"]),C.value?(t(),n("span",ml,r(C.value)+" ("+r(D.value.length)+" "+r(l(u)("skills.importFileCount"))+") ",1)):F("",!0)]))])]),_:1},8,["show","title","mask-closable"]))}})})),xt=H((()=>{})),tt,St=H((()=>{yl(),yl(),xt(),ee(),tt=le(lt,[["__scopeId","data-v-6cc6068d"]])})),wl,$l,bl,Cl,xl,Sl,Ml,Dl,Fl,st,Ll=H((()=>{Z(),N(),X(),te(),wl={class:"hint"},$l={key:0,class:"state-row"},bl={key:1,class:"state-row empty"},Cl={key:2,class:"dir-list"},xl={class:"dir-input-wrap"},Sl={key:0,class:"hint-tag broken"},Ml={key:1,class:"hint-tag broken"},Dl=["title","disabled","onClick"],Fl={class:"modal-footer"},st=J({__name:"SkillExternalDirsModal",emits:["close","saved"],setup(S,{emit:z}){const p=z,{t:u}=O(),y=se(),$=_(!0),f=_(!1),v=_(!0),h=_([]);function D(w){return w.exists?w.isDir?{raw:w.raw,hint:null}:{raw:w.raw,hint:"notdir"}:{raw:w.raw,hint:"missing"}}Zl(async()=>{try{h.value=(await _t()).map(D)}catch(w){y.error(u("skills.externalDirs.loadFailed")+`: ${w.message}`)}finally{v.value=!1}});function C(){h.value.push({raw:"",hint:null})}function P(w){h.value.splice(w,1)}function E(w){h.value[w]&&(h.value[w].hint=null)}async function q(){const w=[],B=new Set;for(const k of h.value){const c=k.raw.trim();c&&(B.has(c)||(B.add(c),w.push(c)))}f.value=!0;try{await kt(w),y.success(u("skills.externalDirs.saveSuccess")),p("saved")}catch(k){y.error(u("skills.externalDirs.saveFailed")+`: ${k.message}`)}finally{f.value=!1}}function V(){f.value||($.value=!1,setTimeout(()=>p("close"),200))}return(w,B)=>(t(),A(l(Yl),{show:$.value,"onUpdate:show":B[0]||(B[0]=k=>$.value=k),preset:"card",title:l(u)("skills.externalDirs.title"),style:{width:"min(560px, calc(100vw - 32px))"},"mask-closable":!f.value,onAfterLeave:B[1]||(B[1]=k=>p("close"))},{footer:T(()=>[e("div",Fl,[R(l(W),{disabled:f.value,onClick:V},{default:T(()=>[I(r(l(u)("common.cancel")),1)]),_:1},8,["disabled"]),R(l(W),{type:"primary",loading:f.value,disabled:v.value,onClick:q},{default:T(()=>[I(r(l(u)("common.save")),1)]),_:1},8,["loading","disabled"])])]),default:T(()=>[e("p",wl,r(l(u)("skills.externalDirs.hint")),1),v.value?(t(),n("div",$l,r(l(u)("common.loading")),1)):h.value.length===0?(t(),n("div",bl,r(l(u)("skills.externalDirs.empty")),1)):(t(),n("ul",Cl,[(t(!0),n(j,null,G(h.value,(k,c)=>(t(),n("li",{key:c,class:"dir-row"},[e("div",xl,[R(l(ne),{value:k.raw,"onUpdate:value":[x=>k.raw=x,x=>E(c)],size:"small",placeholder:l(u)("skills.externalDirs.placeholder"),disabled:f.value},null,8,["value","onUpdate:value","placeholder","disabled"]),k.hint==="missing"?(t(),n("span",Sl,r(l(u)("skills.externalDirs.missing")),1)):k.hint==="notdir"?(t(),n("span",Ml,r(l(u)("skills.externalDirs.notDir")),1)):F("",!0)]),e("button",{class:"row-remove",title:l(u)("skills.externalDirs.removeRow"),disabled:f.value,onClick:x=>P(c)},[...B[2]||(B[2]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Dl)]))),128))])),R(l(W),{size:"small",disabled:f.value,onClick:C},{icon:T(()=>[...B[3]||(B[3]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:T(()=>[I(" "+r(l(u)("skills.externalDirs.add")),1)]),_:1},8,["disabled"])]),_:1},8,["show","title","mask-closable"]))}})})),Mt=H((()=>{})),it,Dt=H((()=>{Ll(),Ll(),Mt(),ee(),it=le(st,[["__scopeId","data-v-134aef16"]])})),zl,Bl,Il,Pl,Tl,Rl,Ul,Vl,El,Hl,ql,Ql,jl,Al,Wl,at,Gl=H((()=>{Z(),N(),X(),$t(),Ct(),St(),Dt(),Jl(),te(),vt(),zl={class:"skills-view"},Bl={class:"page-header"},Il={style:{display:"flex","align-items":"center",gap:"8px"}},Pl={class:"header-title"},Tl={class:"source-legend"},Rl={class:"header-actions"},Ul={class:"header-action-label"},Vl={class:"header-action-label"},El={class:"skills-content"},Hl={key:0,class:"skills-loading"},ql={key:1,class:"skills-layout"},Ql={key:0,class:"skills-sidebar"},jl={class:"skills-main"},Al={key:1,class:"recommendations-panel"},Wl={key:1,class:"empty-detail"},at=J({__name:"SkillsView",setup(S){const{t:z,locale:p}=O(),u=ct(),y=_([]),$=_([]),f=_(!1),v=_(""),h=_(""),D=_(""),C=_(!0),P=_(null),E=_(""),q=_(!1),V=_(!1);let w=null,B=0;const k=K(()=>String(p.value).startsWith("zh")?"/skill-recommendations.zh.md":"/skill-recommendations.en.md"),c=K(()=>!v.value||!h.value?null:v.value===".archive"?$.value.find(g=>g.name===h.value)??null:y.value.find(g=>g.name===v.value)?.skills.find(g=>g.name===h.value)??null);function x(g){C.value=!g.matches}Zl(()=>{w=window.matchMedia("(max-width: 768px)"),x(w),w.addEventListener("change",x),M(),b()}),nt(()=>{w?.removeEventListener("change",x)});async function M(){f.value=!0;try{(!u.activeProfileName||u.profiles.length===0)&&await u.fetchProfiles();const g=await mt();y.value=g.categories,$.value=g.archived}catch(g){console.error("Failed to load skills:",g)}finally{f.value=!1}}async function b(){const g=++B;try{const a=await fetch(k.value);if(!a.ok)throw new Error(`HTTP ${a.status}`);const L=await a.text();if(/^\s*<!doctype html/i.test(L)||/^\s*<html[\s>]/i.test(L))throw new Error("Skill recommendations file was not found");g===B&&(E.value=L)}catch(a){g===B&&(E.value=""),console.error("Failed to load skill recommendations:",a)}}Kl(k,b);function o(g){P.value=P.value===g?null:g}function i(g,a){if(v.value===g&&h.value===a){v.value="",h.value="";return}v.value=g,h.value=a,window.innerWidth<=768&&(C.value=!1)}function s(g,a){v.value===g&&h.value===a&&(v.value="",h.value=""),M()}function d(){q.value=!1,M()}function m(){V.value=!1,M()}function Q(g,a){if(v.value===".archive"){const L=$.value.find(Y=>Y.name===g);L&&(L.pinned=a)}else{const L=y.value.find(Y=>Y.name===v.value)?.skills.find(Y=>Y.name===g);L&&(L.pinned=a)}}return(g,a)=>(t(),n("div",zl,[e("header",Bl,[e("div",Il,[e("h2",Pl,r(l(z)("skills.title")),1),C.value?F("",!0):(t(),n("button",{key:0,class:"sidebar-toggle",onClick:a[0]||(a[0]=L=>C.value=!0)},[...a[12]||(a[12]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),e("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),e("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]))]),e("div",Tl,[e("button",{class:U(["legend-item",{active:P.value==="builtin"}]),onClick:a[1]||(a[1]=L=>o("builtin"))},[a[13]||(a[13]=e("span",{class:"legend-dot dot-builtin"},null,-1)),I(r(l(z)("skills.source.builtin")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="hub"}]),onClick:a[2]||(a[2]=L=>o("hub"))},[a[14]||(a[14]=e("span",{class:"legend-dot dot-hub"},null,-1)),I(r(l(z)("skills.source.hub")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="local"}]),onClick:a[3]||(a[3]=L=>o("local"))},[a[15]||(a[15]=e("span",{class:"legend-dot dot-local"},null,-1)),I(r(l(z)("skills.source.local")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="external"}]),onClick:a[4]||(a[4]=L=>o("external"))},[a[16]||(a[16]=e("span",{class:"legend-dot dot-external"},null,-1)),I(r(l(z)("skills.source.external")),1)],2),e("button",{class:U(["legend-item",{active:P.value==="modified"}]),onClick:a[5]||(a[5]=L=>o("modified"))},[a[17]||(a[17]=e("span",{class:"modified-icon"},"✎",-1)),I(r(l(z)("skills.modified")),1)],2)]),e("div",Rl,[R(l(W),{class:"header-action-btn",size:"small",title:l(z)("skills.import"),onClick:a[6]||(a[6]=L=>q.value=!0)},{icon:T(()=>[...a[18]||(a[18]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("polyline",{points:"17 8 12 3 7 8"}),e("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)])]),default:T(()=>[e("span",Ul,r(l(z)("skills.import")),1)]),_:1},8,["title"]),R(l(W),{class:"header-action-btn",size:"small",title:l(z)("skills.externalDirs.manage"),onClick:a[7]||(a[7]=L=>V.value=!0)},{icon:T(()=>[...a[19]||(a[19]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1)])]),default:T(()=>[e("span",Vl,r(l(z)("skills.externalDirs.manage")),1)]),_:1},8,["title"]),R(l(ne),{value:D.value,"onUpdate:value":a[8]||(a[8]=L=>D.value=L),placeholder:l(z)("skills.searchPlaceholder"),size:"small",clearable:"",style:{width:"160px"}},null,8,["value","placeholder"])])]),q.value?(t(),A(tt,{key:0,onClose:a[9]||(a[9]=L=>q.value=!1),onSaved:d})):F("",!0),V.value?(t(),A(it,{key:1,onClose:a[10]||(a[10]=L=>V.value=!1),onSaved:m})):F("",!0),e("div",El,[f.value&&y.value.length===0?(t(),n("div",Hl,r(l(z)("common.loading")),1)):(t(),n("div",ql,[e("div",{class:U(["mobile-backdrop",{active:C.value}]),onClick:a[11]||(a[11]=L=>C.value=!1)},null,2),C.value?(t(),n("div",Ql,[R(Xl,{categories:y.value,archived:$.value,"selected-skill":v.value&&h.value?`${v.value}/${h.value}`:null,"search-query":D.value,"source-filter":P.value,onSelect:i,onDeleted:s},null,8,["categories","archived","selected-skill","search-query","source-filter"])])):F("",!0),e("div",jl,[v.value&&h.value?(t(),A(et,{key:0,category:v.value,skill:h.value,"skill-name":c.value?.name||h.value,"patch-count":c.value?.patchCount,"use-count":c.value?.useCount,"view-count":c.value?.viewCount,pinned:c.value?.pinned,onPinToggled:Q},null,8,["category","skill","skill-name","patch-count","use-count","view-count","pinned"])):(t(),n("div",Al,[E.value?(t(),A(ae,{key:0,content:E.value},null,8,["content"])):(t(),n("div",Wl,[a[20]||(a[20]=e("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1",opacity:"0.2"},[e("polygon",{points:"12 2 2 7 12 12 22 7 12 2"}),e("polyline",{points:"2 17 12 22 22 17"}),e("polyline",{points:"2 12 12 17 22 12"})],-1)),e("span",null,r(l(z)("skills.noMatch")),1)]))]))])]))])]))}})})),Ft=H((()=>{})),Lt,zt=H((()=>{Gl(),Gl(),Ft(),ee(),Lt=le(at,[["__scopeId","data-v-f3601ac9"]])}));zt();export{Lt as default};
@@ -1,3 +1,3 @@
1
- import{n as D}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as i,An as m,Bn as b,Bt as Pe,Cn as Re,Jn as a,Jt as Oe,On as ze,Qn as Ne,Qt as I,S as Ie,Xn as X,Yt as W,an as v,bn as We,en as Ye,ft as Le,it as De,nn as u,on as k,sn as Ue,t as Ge,tn as E,wt as $,xn as r,z as Fe}from"./ui-vendor-DNWaqYj5.js";import{c as Ve,l as He}from"./vue-vendor-VX6KvV1_.js";import{l as Je,n as Xe,o as je,s as Ke,t as Qe}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{a as qe,i as Ze,n as et,o as tt,r as nt,s as it,t as at}from"./xterm-CraVE7U3.js";var j,K,Q,q,Z,ee,te,ne,ie,ae,le,se,oe,re,ce,ue,de,fe,Y,me,L,be,he=D((()=>{Pe(),it(),Ze(),nt(),at(),Je(),Ge(),Ve(),j={class:"terminal-panel-drawer"},K={class:"sidebar-header"},Q={class:"sidebar-title"},q={class:"session-list"},Z={key:0,class:"session-error"},ee={key:1,class:"session-empty"},te=["onClick"],ne={class:"session-item-content"},ie={class:"session-item-title"},ae={class:"session-item-meta"},le={class:"session-item-shell"},se={key:0,class:"session-item-status"},oe={key:1,class:"session-item-time"},re={class:"terminal-main"},ce={class:"terminal-header"},ue={key:0,class:"header-session-title"},de={class:"header-actions"},fe={class:"terminal-container"},Y="hermes_terminal_theme",me=3,L=18,be=Ue({__name:"TerminalPanel",props:{visible:{type:Boolean},initialCommand:{}},setup(_e){const{t:o}=He(),ve=Fe(),U=_e,S={default:{label:"Default",theme:{background:"#1a1a2e",foreground:"#e0e0e0",cursor:"#4cc9f0",cursorAccent:"#1a1a2e",selectionBackground:"rgba(76, 201, 240, 0.3)",black:"#000000",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"solarized-dark":{label:"Solarized Dark",theme:{background:"#002b36",foreground:"#839496",cursor:"#93a1a1",cursorAccent:"#002b36",selectionBackground:"rgba(147, 161, 161, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},"tokyo-night":{label:"Tokyo Night",theme:{background:"#1a1b26",foreground:"#a9b1d6",cursor:"#c0caf5",cursorAccent:"#1a1b26",selectionBackground:"rgba(192, 202, 245, 0.2)",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}},"github-dark":{label:"GitHub Dark",theme:{background:"#0d1117",foreground:"#c9d1d9",cursor:"#58a6ff",cursorAccent:"#0d1117",selectionBackground:"rgba(88, 166, 255, 0.25)",black:"#484f58",red:"#ff7b72",green:"#7ee787",yellow:"#ffa657",blue:"#79c0ff",magenta:"#d2a8ff",cyan:"#a5d6ff",white:"#c9d1d9",brightBlack:"#6e7681",brightRed:"#ffa198",brightGreen:"#56d364",brightYellow:"#e3b341",brightBlue:"#58a6ff",brightMagenta:"#bc8cff",brightCyan:"#79c0ff",brightWhite:"#f0f6fc"}}},g=b(null),c=b([]),d=b(null),B=b(localStorage.getItem(Y)||"default"),_=b(null),w=b(!1),C=b(!1);let l=null;const h=new Map;let f=null,x=null,M=null,P=0,p=null,y=0;const G=b(!1),F=I(()=>c.value.find(e=>e.id===d.value)||null),ge=I(()=>Object.entries(S).map(([e,t])=>({label:t.label,value:e}))),pe=I(()=>S[B.value]?.theme.background??"#1a1a2e");function ye(){const e=je(),t=Ke(),n=t?t.startsWith("https")?"wss:":"ws:":location.protocol==="https:"?"wss:":"ws:";return t?`${n}//${new URL(t).host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`:`${n}//${location.host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`}function R(){if(P>=me){_.value=o("terminal.connectionFailed"),w.value=!1;return}const e=ye();_.value=null,w.value=!0,P++,l=new WebSocket(e),l.onopen=()=>{w.value=!1,_.value=null},l.onmessage=t=>{const n=typeof t.data=="string"?t.data:"";if(n.charCodeAt(0)===123)try{ke(JSON.parse(n))}catch{}else f?.write(n)},l.onclose=t=>{if(w.value=!1,t.code===1e3||t.code===1003||t.code===1008){_.value=o("terminal.connectionClosed");return}setTimeout(R,3e3)},l.onerror=t=>{console.error("[Terminal] WebSocket error:",t),_.value=o("terminal.connectionError")}}function T(e){!l||l.readyState!==WebSocket.OPEN||l.send(typeof e=="string"?e:JSON.stringify(e))}function ke(e){switch(e.type){case"created":P=0,c.value.push({id:e.id,shell:e.shell,pid:e.pid,title:`${e.shell} #${c.value.length+1}`,createdAt:Date.now(),exited:!1}),z(e.id),we();break;case"exited":{const t=c.value.find(n=>n.id===e.id);t&&(t.exited=!0,d.value===e.id&&f?.write(`\r
1
+ import{n as D}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as i,An as m,Bn as b,Bt as Pe,Cn as Re,Jn as a,Jt as Oe,On as ze,Qn as Ne,Qt as I,S as Ie,Xn as X,Yt as W,an as v,bn as We,en as Ye,ft as Le,it as De,nn as u,on as k,sn as Ue,t as Ge,tn as E,wt as $,xn as r,z as Fe}from"./ui-vendor-DNWaqYj5.js";import{c as Ve,l as He}from"./vue-vendor-VX6KvV1_.js";import{l as Je,n as Xe,o as je,s as Ke,t as Qe}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{a as qe,i as Ze,n as et,o as tt,r as nt,s as it,t as at}from"./xterm-CraVE7U3.js";var j,K,Q,q,Z,ee,te,ne,ie,ae,le,se,oe,re,ce,ue,de,fe,Y,me,L,be,he=D((()=>{Pe(),it(),Ze(),nt(),at(),Je(),Ge(),Ve(),j={class:"terminal-panel-drawer"},K={class:"sidebar-header"},Q={class:"sidebar-title"},q={class:"session-list"},Z={key:0,class:"session-error"},ee={key:1,class:"session-empty"},te=["onClick"],ne={class:"session-item-content"},ie={class:"session-item-title"},ae={class:"session-item-meta"},le={class:"session-item-shell"},se={key:0,class:"session-item-status"},oe={key:1,class:"session-item-time"},re={class:"terminal-main"},ce={class:"terminal-header"},ue={key:0,class:"header-session-title"},de={class:"header-actions"},fe={class:"terminal-container"},Y="hermes_terminal_theme",me=3,L=18,be=Ue({__name:"TerminalPanel",props:{visible:{type:Boolean},initialCommand:{}},setup(_e){const{t:o}=He(),ve=Fe(),U=_e,S={default:{label:"Default",theme:{background:"#1a1a2e",foreground:"#e0e0e0",cursor:"#4cc9f0",cursorAccent:"#1a1a2e",selectionBackground:"rgba(76, 201, 240, 0.3)",black:"#000000",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"solarized-dark":{label:"Solarized Dark",theme:{background:"#002b36",foreground:"#839496",cursor:"#93a1a1",cursorAccent:"#002b36",selectionBackground:"rgba(147, 161, 161, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},"tokyo-night":{label:"Tokyo Night",theme:{background:"#1a1b26",foreground:"#a9b1d6",cursor:"#c0caf5",cursorAccent:"#1a1b26",selectionBackground:"rgba(192, 202, 245, 0.2)",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}},"github-dark":{label:"GitHub Dark",theme:{background:"#0d1117",foreground:"#c9d1d9",cursor:"#58a6ff",cursorAccent:"#0d1117",selectionBackground:"rgba(88, 166, 255, 0.25)",black:"#484f58",red:"#ff7b72",green:"#7ee787",yellow:"#ffa657",blue:"#79c0ff",magenta:"#d2a8ff",cyan:"#a5d6ff",white:"#c9d1d9",brightBlack:"#6e7681",brightRed:"#ffa198",brightGreen:"#56d364",brightYellow:"#e3b341",brightBlue:"#58a6ff",brightMagenta:"#bc8cff",brightCyan:"#79c0ff",brightWhite:"#f0f6fc"}}},g=b(null),c=b([]),d=b(null),B=b(localStorage.getItem(Y)||"default"),_=b(null),w=b(!1),C=b(!1);let l=null;const h=new Map;let f=null,x=null,M=null,P=0,p=null,y=0;const G=b(!1),F=I(()=>c.value.find(e=>e.id===d.value)||null),ge=I(()=>Object.entries(S).map(([e,t])=>({label:t.label,value:e}))),pe=I(()=>S[B.value]?.theme.background??"#1a1a2e");function ye(){const e=je(),t=Ke(),n=t?t.startsWith("https")?"wss:":"ws:":location.protocol==="https:"?"wss:":"ws:";return t?`${n}//${new URL(t).host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`:`${n}//${location.host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`}function R(){if(P>=me){_.value=o("terminal.connectionFailed"),w.value=!1;return}const e=ye();_.value=null,w.value=!0,P++,l=new WebSocket(e),l.onopen=()=>{w.value=!1,_.value=null},l.onmessage=t=>{const n=typeof t.data=="string"?t.data:"";if(n.charCodeAt(0)===123)try{ke(JSON.parse(n))}catch{}else f?.write(n)},l.onclose=t=>{if(w.value=!1,t.code===1e3||t.code===1003||t.code===1008){_.value=o("terminal.connectionClosed");return}setTimeout(R,3e3)},l.onerror=t=>{console.error("[Terminal] WebSocket error:",t),_.value=o("terminal.connectionError")}}function T(e){!l||l.readyState!==WebSocket.OPEN||l.send(typeof e=="string"?e:JSON.stringify(e))}function ke(e){switch(e.type){case"created":P=0,c.value.push({id:e.id,shell:e.shell,pid:e.pid,title:`${e.shell} #${c.value.length+1}`,createdAt:Date.now(),exited:!1}),z(e.id),we();break;case"exited":{const t=c.value.find(n=>n.id===e.id);t&&(t.exited=!0,d.value===e.id&&f?.write(`\r
2
2
  \x1B[90m[${o("terminal.processExited",{code:e.exitCode})}]\x1B[0m\r
3
3
  `));break}case"error":ve.error(e.message);break}}function O(){T({type:"create"})}function we(){const e=U.initialCommand?.trim();!e||G.value||(G.value=!0,setTimeout(()=>{T(`${e}\r`)},100))}function Ce(e){let t=h.get(e);if(!t){const n=new tt({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',theme:{...S[B.value].theme}}),A=new qe;n.loadAddon(A),n.loadAddon(new et),n.onData(Me=>{l?.readyState===WebSocket.OPEN&&l.send(Me)}),t={term:n,fitAddon:A,opened:!1},h.set(e,t)}return t}function z(e){if(d.value===e)return;d.value=e;const t=Ce(e);f=t.term,x=t.fitAddon,Te(),T({type:"switch",sessionId:e})}function xe(e){T({type:"close",sessionId:e}),c.value=c.value.filter(n=>n.id!==e);const t=h.get(e);t&&(t.term.dispose(),h.delete(e)),d.value===e&&(d.value=c.value.length>0?c.value[0].id:null,f=null,x=null,d.value?z(d.value):(V(),O()))}function Te(){if(!g.value)return;const e=g.value;for(;e.firstChild;)e.removeChild(e.firstChild);const t=h.get(d.value);if(t){if(!t.opened)t.term.open(e),t.opened=!0;else{const n=t.term.element;n&&e.appendChild(n)}M?.disconnect(),M=new ResizeObserver(()=>{N(),Se()}),M.observe(g.value),setTimeout(()=>N(),50),setTimeout(()=>N(),200)}}function V(){if(!g.value)return;const e=g.value;for(;e.firstChild;)e.removeChild(e.firstChild)}function N(){if(x)try{x.fit()}catch{}}function Se(){if(!(!f||!l||l.readyState!==WebSocket.OPEN))try{T({type:"resize",cols:f.cols,rows:f.rows})}catch{}}function Be(e){if(e.touches.length!==1){p=null,y=0;return}p=e.touches[0].clientY,y=0}function Ae(e){if(!f||e.touches.length!==1||p===null)return;const t=e.touches[0].clientY;y+=p-t,p=t;const n=Math.trunc(y/L);n!==0&&(f.scrollLines(n),y-=n*L,e.preventDefault())}function H(){p=null,y=0}function Ee(e){B.value=e,localStorage.setItem(Y,e);const t=S[e]?.theme;if(t)for(const n of h.values())n.term.options.theme={...t}}function $e(e){return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}let J=!1;return ze(()=>U.visible,e=>{e&&!J&&!l&&(J=!0,R())},{immediate:!0}),We(()=>{V();for(const e of h.values())e.term.dispose();h.clear(),f=null,x=null,l?.close(),l=null}),(e,t)=>(r(),u("div",j,[C.value?(r(),u("div",{key:0,class:"sidebar-overlay",onClick:t[0]||(t[0]=n=>C.value=!1)})):E("",!0),i("div",{class:X(["terminal-sidebar",{"mobile-visible":C.value}])},[i("div",K,[i("span",Q,s(a(o)("terminal.sessions")),1),k(a(De),{trigger:"hover"},{trigger:m(()=>[k(a($),{quaternary:"",size:"tiny",onClick:O,circle:""},{icon:m(()=>[...t[3]||(t[3]=[i("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),i("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),_:1})]),default:m(()=>[v(" "+s(a(o)("terminal.newTab")),1)]),_:1})]),i("div",q,[_.value?(r(),u("div",Z,[t[4]||(t[4]=i("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("circle",{cx:"12",cy:"12",r:"10"}),i("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),i("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})],-1)),i("span",null,s(_.value),1),k(a($),{size:"tiny",onClick:R},{default:m(()=>[v(s(a(o)("common.retry")),1)]),_:1})])):c.value.length===0?(r(),u("div",ee,[w.value?(r(),u(W,{key:0},[v(s(a(o)("common.loading")),1)],64)):(r(),u(W,{key:1},[v(s(a(o)("terminal.noSessions")),1)],64))])):E("",!0),(r(!0),u(W,null,Re(c.value,n=>(r(),u("button",{key:n.id,class:X(["session-item",{active:n.id===d.value,exited:n.exited}]),onClick:A=>z(n.id)},[i("div",ne,[i("span",ie,s(n.title),1),i("span",ae,[i("span",le,s(n.shell),1),n.exited?(r(),u("span",se,s(a(o)("terminal.sessionExited")),1)):(r(),u("span",oe,s($e(n.createdAt)),1))])]),c.value.length>1?(r(),Ye(a(Ie),{key:0,onPositiveClick:A=>xe(n.id)},{trigger:m(()=>[i("button",{class:"session-item-delete",onClick:t[1]||(t[1]=Oe(()=>{},["stop"]))},[...t[5]||(t[5]=[i("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),i("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:m(()=>[v(" "+s(a(o)("terminal.closeSession")),1)]),_:1},8,["onPositiveClick"])):E("",!0)],10,te))),128))])],2),i("div",re,[i("header",ce,[F.value?(r(),u("span",ue,s(F.value.title),1)):E("",!0),i("div",de,[k(a($),{size:"small",onClick:t[2]||(t[2]=n=>C.value=!C.value),class:"sidebar-toggle"},{icon:m(()=>[...t[6]||(t[6]=[i("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),i("line",{x1:"9",y1:"3",x2:"9",y2:"21"})],-1)])]),default:m(()=>[v(" "+s(a(o)("terminal.sessions")),1)]),_:1}),k(a(Le),{value:B.value,options:ge.value,size:"small","consistent-menu-width":!1,class:"theme-select","onUpdate:value":Ee},null,8,["value","options"]),k(a($),{size:"small",onClick:O},{icon:m(()=>[...t[7]||(t[7]=[i("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),i("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:m(()=>[v(" "+s(a(o)("terminal.newTab")),1)]),_:1})])]),i("div",fe,[i("div",{ref_key:"terminalRef",ref:g,class:"terminal-xterm",style:Ne({backgroundColor:pe.value}),onTouchstart:Be,onTouchmove:Ae,onTouchend:H,onTouchcancel:H},null,36)])])]))}})})),lt=D((()=>{})),st,kt=D((()=>{he(),he(),lt(),Xe(),st=Qe(be,[["__scopeId","data-v-86f83565"]])}));export{kt as n,st as t};
@@ -1,3 +1,3 @@
1
- import{n as M}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as f,$t as r,An as h,Bn as w,Bt as xe,Cn as Te,Jn as i,Jt as Se,Qn as Me,Qt as E,S as Ae,Xn as L,Yt as Re,an as $,bn as We,en as Ye,ft as Ge,it as Ee,nn as b,on as p,sn as Le,t as $e,tn as B,wt as z,xn as d,yn as ze,z as Oe}from"./ui-vendor-DNWaqYj5.js";import{c as Ne,l as Ve}from"./vue-vendor-VX6KvV1_.js";import{l as De,n as Ie,o as Pe,s as Ue,t as He}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{a as Fe,i as Je,n as Qe,o as Xe,r as je,s as qe,t as Ke}from"./xterm-CraVE7U3.js";var U,H,F,J,Q,X,j,q,K,Z,ee,te,ae,re,ne,ie,le,oe,ce,O,N,fe,se=M((()=>{xe(),qe(),Je(),je(),Ke(),De(),$e(),Ne(),U={class:"terminal-panel"},H={class:"session-list-header"},F={key:0,class:"session-list-title"},J={class:"session-list-actions"},Q={key:0,class:"session-items"},X={key:0,class:"session-empty"},j=["onClick"],q={class:"session-item-content"},K={class:"session-item-title"},Z={class:"session-item-meta"},ee={class:"session-item-shell"},te={key:0,class:"session-item-status"},ae={key:1,class:"session-item-time"},re={class:"terminal-main"},ne={class:"terminal-header"},ie={class:"header-left"},le={key:0,class:"header-session-title"},oe={class:"header-actions"},ce={class:"terminal-container"},O="hermes_terminal_theme",N=18,fe=Le({__name:"TerminalView",setup(rt){const{t:g}=Ve(),de=Oe(),C={default:{label:"Default",theme:{background:"#1a1a2e",foreground:"#e0e0e0",cursor:"#4cc9f0",cursorAccent:"#1a1a2e",selectionBackground:"rgba(76, 201, 240, 0.3)",black:"#000000",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"solarized-dark":{label:"Solarized Dark",theme:{background:"#002b36",foreground:"#839496",cursor:"#93a1a1",cursorAccent:"#002b36",selectionBackground:"rgba(147, 161, 161, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},"solarized-light":{label:"Solarized Light",theme:{background:"#fdf6e3",foreground:"#657b83",cursor:"#586e75",cursorAccent:"#fdf6e3",selectionBackground:"rgba(88, 110, 117, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},monokai:{label:"Monokai",theme:{background:"#272822",foreground:"#f8f8f2",cursor:"#f8f8f0",cursorAccent:"#272822",selectionBackground:"rgba(248, 248, 242, 0.2)",black:"#272822",red:"#f92672",green:"#a6e22e",yellow:"#f4bf75",blue:"#66d9ef",magenta:"#ae81ff",cyan:"#a1efe4",white:"#f8f8f2",brightBlack:"#75715e",brightRed:"#fd971f",brightGreen:"#a6e22e",brightYellow:"#e6db74",brightBlue:"#66d9ef",brightMagenta:"#ae81ff",brightCyan:"#a1efe4",brightWhite:"#f9f8f5"}},dracula:{label:"Dracula",theme:{background:"#282a36",foreground:"#f8f8f2",cursor:"#f8f8f2",cursorAccent:"#282a36",selectionBackground:"rgba(248, 248, 242, 0.2)",black:"#21222c",red:"#ff5555",green:"#50fa7b",yellow:"#f1fa8c",blue:"#bd93f9",magenta:"#ff79c6",cyan:"#8be9fd",white:"#f8f8f2",brightBlack:"#6272a4",brightRed:"#ff6e6e",brightGreen:"#69ff94",brightYellow:"#ffffa5",brightBlue:"#d6acff",brightMagenta:"#ff92df",brightCyan:"#a4ffff",brightWhite:"#ffffff"}},nord:{label:"Nord",theme:{background:"#2e3440",foreground:"#d8dee9",cursor:"#d8dee9",cursorAccent:"#2e3440",selectionBackground:"rgba(216, 222, 233, 0.2)",black:"#3b4252",red:"#bf616a",green:"#a3be8c",yellow:"#ebcb8b",blue:"#81a1c1",magenta:"#b48ead",cyan:"#88c0d0",white:"#e5e9f0",brightBlack:"#4c566a",brightRed:"#bf616a",brightGreen:"#a3be8c",brightYellow:"#ebcb8b",brightBlue:"#81a1c1",brightMagenta:"#b48ead",brightCyan:"#8fbcbb",brightWhite:"#eceff4"}},"one-dark":{label:"One Dark",theme:{background:"#282c34",foreground:"#abb2bf",cursor:"#528bff",cursorAccent:"#282c34",selectionBackground:"rgba(82, 139, 255, 0.25)",black:"#282c34",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"github-dark":{label:"GitHub Dark",theme:{background:"#0d1117",foreground:"#c9d1d9",cursor:"#58a6ff",cursorAccent:"#0d1117",selectionBackground:"rgba(88, 166, 255, 0.25)",black:"#484f58",red:"#ff7b72",green:"#7ee787",yellow:"#ffa657",blue:"#79c0ff",magenta:"#d2a8ff",cyan:"#a5d6ff",white:"#c9d1d9",brightBlack:"#6e7681",brightRed:"#ffa198",brightGreen:"#56d364",brightYellow:"#e3b341",brightBlue:"#58a6ff",brightMagenta:"#bc8cff",brightCyan:"#79c0ff",brightWhite:"#f0f6fc"}},"tokyo-night":{label:"Tokyo Night",theme:{background:"#1a1b26",foreground:"#a9b1d6",cursor:"#c0caf5",cursorAccent:"#1a1b26",selectionBackground:"rgba(192, 202, 245, 0.2)",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}},"github-light":{label:"GitHub Light",theme:{background:"#ffffff",foreground:"#24292f",cursor:"#0969da",cursorAccent:"#ffffff",selectionBackground:"rgba(9, 105, 218, 0.2)",black:"#24292f",red:"#cf222e",green:"#116329",yellow:"#4d2d00",blue:"#0969da",magenta:"#8250df",cyan:"#1b7c83",white:"#57606a",brightBlack:"#57606a",brightRed:"#a40e26",brightGreen:"#1a7f37",brightYellow:"#633c01",brightBlue:"#218bff",brightMagenta:"#a475f4",brightCyan:"#3192aa",brightWhite:"#8c959f"}},"catppuccin-latte":{label:"Catppuccin Latte",theme:{background:"#eff1f5",foreground:"#4c4f69",cursor:"#dc8a78",cursorAccent:"#eff1f5",selectionBackground:"rgba(220, 138, 120, 0.2)",black:"#5c5f77",red:"#d20f39",green:"#40a02b",yellow:"#df8e1d",blue:"#1e66f5",magenta:"#ea76cb",cyan:"#179299",white:"#4c4f69",brightBlack:"#6c6f85",brightRed:"#d20f39",brightGreen:"#40a02b",brightYellow:"#df8e1d",brightBlue:"#1e66f5",brightMagenta:"#ea76cb",brightCyan:"#179299",brightWhite:"#bcc0cc"}},"alabaster-light":{label:"Alabaster",theme:{background:"#f7f7f7",foreground:"#434343",cursor:"#528bff",cursorAccent:"#f7f7f7",selectionBackground:"rgba(82, 139, 255, 0.2)",black:"#000000",red:"#aa3731",green:"#448c27",yellow:"#cb9000",blue:"#325cc0",magenta:"#7a3e9d",cyan:"#0083b2",white:"#434343",brightBlack:"#777777",brightRed:"#f05050",brightGreen:"#60cb00",brightYellow:"#ffbc5d",brightBlue:"#0070ea",brightMagenta:"#ca64e2",brightCyan:"#00aacb",brightWhite:"#999999"}},"xterm-light":{label:"XTerm Light",theme:{background:"#fafafa",foreground:"#383a42",cursor:"#526fff",cursorAccent:"#fafafa",selectionBackground:"rgba(82, 111, 255, 0.2)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"one-light":{label:"One Light",theme:{background:"#fafafa",foreground:"#383a42",cursor:"#526eff",cursorAccent:"#fafafa",selectionBackground:"rgba(82, 110, 255, 0.2)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"gruvbox-light":{label:"Gruvbox Light",theme:{background:"#fbf1c7",foreground:"#3c3836",cursor:"#9d0006",cursorAccent:"#fbf1c7",selectionBackground:"rgba(157, 0, 6, 0.15)",black:"#fbf1c7",red:"#cc241d",green:"#98971a",yellow:"#d79921",blue:"#458588",magenta:"#b16286",cyan:"#689d6a",white:"#504945",brightBlack:"#928374",brightRed:"#9d0006",brightGreen:"#79740e",brightYellow:"#b57614",brightBlue:"#076678",brightMagenta:"#8f3f71",brightCyan:"#427b58",brightWhite:"#3c3836"}}},m=w(null),o=w(!0),l=w([]),c=w(null),x=w(localStorage.getItem(O)||"default");let n=null;const u=new Map;let s=null,v=null,A=null,y=null,_=null,k=0;const V=E(()=>l.value.find(e=>e.id===c.value)||null),be=E(()=>Object.entries(C).map(([e,t])=>({label:t.label,value:e}))),ue=E(()=>C[x.value]?.theme.background??"#1a1a2e");function he(){const e=Pe(),t=Ue(),a=t?t.startsWith("https")?"wss:":"ws:":location.protocol==="https:"?"wss:":"ws:";return t?`${a}//${new URL(t).host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`:`${a}//${location.host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`}function D(){const e=he();n=new WebSocket(e),n.onopen=()=>{},n.onmessage=t=>{const a=typeof t.data=="string"?t.data:"";if(a.charCodeAt(0)===123)try{ge(JSON.parse(a))}catch{}else s?.write(a)},n.onopen=()=>{},n.onclose=()=>{setTimeout(D,3e3)},n.onerror=()=>{}}function T(e){!n||n.readyState!==WebSocket.OPEN||n.send(typeof e=="string"?e:JSON.stringify(e))}function ge(e){switch(e.type){case"created":l.value.push({id:e.id,shell:e.shell,pid:e.pid,title:`${e.shell} #${l.value.length+1}`,createdAt:Date.now(),exited:!1}),W(e.id);break;case"switched":break;case"exited":{const t=l.value.find(a=>a.id===e.id);t&&(t.exited=!0,c.value===e.id&&s?.write(`\r
1
+ import{n as M}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as f,$t as r,An as h,Bn as w,Bt as xe,Cn as Te,Jn as i,Jt as Se,Qn as Me,Qt as E,S as Ae,Xn as L,Yt as Re,an as $,bn as We,en as Ye,ft as Ge,it as Ee,nn as b,on as p,sn as Le,t as $e,tn as B,wt as z,xn as d,yn as ze,z as Oe}from"./ui-vendor-DNWaqYj5.js";import{c as Ne,l as Ve}from"./vue-vendor-VX6KvV1_.js";import{l as De,n as Ie,o as Pe,s as Ue,t as He}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{a as Fe,i as Je,n as Qe,o as Xe,r as je,s as qe,t as Ke}from"./xterm-CraVE7U3.js";var U,H,F,J,Q,X,j,q,K,Z,ee,te,ae,re,ne,ie,le,oe,ce,O,N,fe,se=M((()=>{xe(),qe(),Je(),je(),Ke(),De(),$e(),Ne(),U={class:"terminal-panel"},H={class:"session-list-header"},F={key:0,class:"session-list-title"},J={class:"session-list-actions"},Q={key:0,class:"session-items"},X={key:0,class:"session-empty"},j=["onClick"],q={class:"session-item-content"},K={class:"session-item-title"},Z={class:"session-item-meta"},ee={class:"session-item-shell"},te={key:0,class:"session-item-status"},ae={key:1,class:"session-item-time"},re={class:"terminal-main"},ne={class:"terminal-header"},ie={class:"header-left"},le={key:0,class:"header-session-title"},oe={class:"header-actions"},ce={class:"terminal-container"},O="hermes_terminal_theme",N=18,fe=Le({__name:"TerminalView",setup(rt){const{t:g}=Ve(),de=Oe(),C={default:{label:"Default",theme:{background:"#1a1a2e",foreground:"#e0e0e0",cursor:"#4cc9f0",cursorAccent:"#1a1a2e",selectionBackground:"rgba(76, 201, 240, 0.3)",black:"#000000",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"solarized-dark":{label:"Solarized Dark",theme:{background:"#002b36",foreground:"#839496",cursor:"#93a1a1",cursorAccent:"#002b36",selectionBackground:"rgba(147, 161, 161, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},"solarized-light":{label:"Solarized Light",theme:{background:"#fdf6e3",foreground:"#657b83",cursor:"#586e75",cursorAccent:"#fdf6e3",selectionBackground:"rgba(88, 110, 117, 0.3)",black:"#073642",red:"#dc322f",green:"#859900",yellow:"#b58900",blue:"#268bd2",magenta:"#d33682",cyan:"#2aa198",white:"#eee8d5",brightBlack:"#002b36",brightRed:"#cb4b16",brightGreen:"#586e75",brightYellow:"#657b83",brightBlue:"#839496",brightMagenta:"#6c71c4",brightCyan:"#93a1a1",brightWhite:"#fdf6e3"}},monokai:{label:"Monokai",theme:{background:"#272822",foreground:"#f8f8f2",cursor:"#f8f8f0",cursorAccent:"#272822",selectionBackground:"rgba(248, 248, 242, 0.2)",black:"#272822",red:"#f92672",green:"#a6e22e",yellow:"#f4bf75",blue:"#66d9ef",magenta:"#ae81ff",cyan:"#a1efe4",white:"#f8f8f2",brightBlack:"#75715e",brightRed:"#fd971f",brightGreen:"#a6e22e",brightYellow:"#e6db74",brightBlue:"#66d9ef",brightMagenta:"#ae81ff",brightCyan:"#a1efe4",brightWhite:"#f9f8f5"}},dracula:{label:"Dracula",theme:{background:"#282a36",foreground:"#f8f8f2",cursor:"#f8f8f2",cursorAccent:"#282a36",selectionBackground:"rgba(248, 248, 242, 0.2)",black:"#21222c",red:"#ff5555",green:"#50fa7b",yellow:"#f1fa8c",blue:"#bd93f9",magenta:"#ff79c6",cyan:"#8be9fd",white:"#f8f8f2",brightBlack:"#6272a4",brightRed:"#ff6e6e",brightGreen:"#69ff94",brightYellow:"#ffffa5",brightBlue:"#d6acff",brightMagenta:"#ff92df",brightCyan:"#a4ffff",brightWhite:"#ffffff"}},nord:{label:"Nord",theme:{background:"#2e3440",foreground:"#d8dee9",cursor:"#d8dee9",cursorAccent:"#2e3440",selectionBackground:"rgba(216, 222, 233, 0.2)",black:"#3b4252",red:"#bf616a",green:"#a3be8c",yellow:"#ebcb8b",blue:"#81a1c1",magenta:"#b48ead",cyan:"#88c0d0",white:"#e5e9f0",brightBlack:"#4c566a",brightRed:"#bf616a",brightGreen:"#a3be8c",brightYellow:"#ebcb8b",brightBlue:"#81a1c1",brightMagenta:"#b48ead",brightCyan:"#8fbcbb",brightWhite:"#eceff4"}},"one-dark":{label:"One Dark",theme:{background:"#282c34",foreground:"#abb2bf",cursor:"#528bff",cursorAccent:"#282c34",selectionBackground:"rgba(82, 139, 255, 0.25)",black:"#282c34",red:"#e06c75",green:"#98c379",yellow:"#e5c07b",blue:"#61afef",magenta:"#c678dd",cyan:"#56b6c2",white:"#abb2bf",brightBlack:"#5c6370",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"github-dark":{label:"GitHub Dark",theme:{background:"#0d1117",foreground:"#c9d1d9",cursor:"#58a6ff",cursorAccent:"#0d1117",selectionBackground:"rgba(88, 166, 255, 0.25)",black:"#484f58",red:"#ff7b72",green:"#7ee787",yellow:"#ffa657",blue:"#79c0ff",magenta:"#d2a8ff",cyan:"#a5d6ff",white:"#c9d1d9",brightBlack:"#6e7681",brightRed:"#ffa198",brightGreen:"#56d364",brightYellow:"#e3b341",brightBlue:"#58a6ff",brightMagenta:"#bc8cff",brightCyan:"#79c0ff",brightWhite:"#f0f6fc"}},"tokyo-night":{label:"Tokyo Night",theme:{background:"#1a1b26",foreground:"#a9b1d6",cursor:"#c0caf5",cursorAccent:"#1a1b26",selectionBackground:"rgba(192, 202, 245, 0.2)",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}},"github-light":{label:"GitHub Light",theme:{background:"#ffffff",foreground:"#24292f",cursor:"#0969da",cursorAccent:"#ffffff",selectionBackground:"rgba(9, 105, 218, 0.2)",black:"#24292f",red:"#cf222e",green:"#116329",yellow:"#4d2d00",blue:"#0969da",magenta:"#8250df",cyan:"#1b7c83",white:"#57606a",brightBlack:"#57606a",brightRed:"#a40e26",brightGreen:"#1a7f37",brightYellow:"#633c01",brightBlue:"#218bff",brightMagenta:"#a475f4",brightCyan:"#3192aa",brightWhite:"#8c959f"}},"catppuccin-latte":{label:"Catppuccin Latte",theme:{background:"#eff1f5",foreground:"#4c4f69",cursor:"#dc8a78",cursorAccent:"#eff1f5",selectionBackground:"rgba(220, 138, 120, 0.2)",black:"#5c5f77",red:"#d20f39",green:"#40a02b",yellow:"#df8e1d",blue:"#1e66f5",magenta:"#ea76cb",cyan:"#179299",white:"#4c4f69",brightBlack:"#6c6f85",brightRed:"#d20f39",brightGreen:"#40a02b",brightYellow:"#df8e1d",brightBlue:"#1e66f5",brightMagenta:"#ea76cb",brightCyan:"#179299",brightWhite:"#bcc0cc"}},"alabaster-light":{label:"Alabaster",theme:{background:"#f7f7f7",foreground:"#434343",cursor:"#528bff",cursorAccent:"#f7f7f7",selectionBackground:"rgba(82, 139, 255, 0.2)",black:"#000000",red:"#aa3731",green:"#448c27",yellow:"#cb9000",blue:"#325cc0",magenta:"#7a3e9d",cyan:"#0083b2",white:"#434343",brightBlack:"#777777",brightRed:"#f05050",brightGreen:"#60cb00",brightYellow:"#ffbc5d",brightBlue:"#0070ea",brightMagenta:"#ca64e2",brightCyan:"#00aacb",brightWhite:"#999999"}},"xterm-light":{label:"XTerm Light",theme:{background:"#fafafa",foreground:"#383a42",cursor:"#526fff",cursorAccent:"#fafafa",selectionBackground:"rgba(82, 111, 255, 0.2)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"one-light":{label:"One Light",theme:{background:"#fafafa",foreground:"#383a42",cursor:"#526eff",cursorAccent:"#fafafa",selectionBackground:"rgba(82, 110, 255, 0.2)",black:"#383a42",red:"#e45649",green:"#50a14f",yellow:"#c18401",blue:"#4078f2",magenta:"#a626a4",cyan:"#0184bc",white:"#a0a1a7",brightBlack:"#4f525e",brightRed:"#e06c75",brightGreen:"#98c379",brightYellow:"#e5c07b",brightBlue:"#61afef",brightMagenta:"#c678dd",brightCyan:"#56b6c2",brightWhite:"#ffffff"}},"gruvbox-light":{label:"Gruvbox Light",theme:{background:"#fbf1c7",foreground:"#3c3836",cursor:"#9d0006",cursorAccent:"#fbf1c7",selectionBackground:"rgba(157, 0, 6, 0.15)",black:"#fbf1c7",red:"#cc241d",green:"#98971a",yellow:"#d79921",blue:"#458588",magenta:"#b16286",cyan:"#689d6a",white:"#504945",brightBlack:"#928374",brightRed:"#9d0006",brightGreen:"#79740e",brightYellow:"#b57614",brightBlue:"#076678",brightMagenta:"#8f3f71",brightCyan:"#427b58",brightWhite:"#3c3836"}}},m=w(null),o=w(!0),l=w([]),c=w(null),x=w(localStorage.getItem(O)||"default");let n=null;const u=new Map;let s=null,v=null,A=null,y=null,_=null,k=0;const V=E(()=>l.value.find(e=>e.id===c.value)||null),be=E(()=>Object.entries(C).map(([e,t])=>({label:t.label,value:e}))),ue=E(()=>C[x.value]?.theme.background??"#1a1a2e");function he(){const e=Pe(),t=Ue(),a=t?t.startsWith("https")?"wss:":"ws:":location.protocol==="https:"?"wss:":"ws:";return t?`${a}//${new URL(t).host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`:`${a}//${location.host}/api/hermes/terminal${e?`?token=${encodeURIComponent(e)}`:""}`}function D(){const e=he();n=new WebSocket(e),n.onopen=()=>{},n.onmessage=t=>{const a=typeof t.data=="string"?t.data:"";if(a.charCodeAt(0)===123)try{ge(JSON.parse(a))}catch{}else s?.write(a)},n.onopen=()=>{},n.onclose=()=>{setTimeout(D,3e3)},n.onerror=()=>{}}function T(e){!n||n.readyState!==WebSocket.OPEN||n.send(typeof e=="string"?e:JSON.stringify(e))}function ge(e){switch(e.type){case"created":l.value.push({id:e.id,shell:e.shell,pid:e.pid,title:`${e.shell} #${l.value.length+1}`,createdAt:Date.now(),exited:!1}),W(e.id);break;case"switched":break;case"exited":{const t=l.value.find(a=>a.id===e.id);t&&(t.exited=!0,c.value===e.id&&s?.write(`\r
2
2
  \x1B[90m[${g("terminal.processExited",{code:e.exitCode})}]\x1B[0m\r
3
3
  `));break}case"error":de.error(e.message);break}}function R(){T({type:"create"})}function me(e){let t=u.get(e);if(!t){const a=new Xe({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',theme:{...C[x.value].theme}}),S=new Fe;a.loadAddon(S),a.loadAddon(new Qe),a.onData(Ce=>{n?.readyState===WebSocket.OPEN&&n.send(Ce)}),t={term:a,fitAddon:S,opened:!1},u.set(e,t)}return t}function W(e){if(c.value===e)return;c.value=e;const t=me(e);s=t.term,v=t.fitAddon,ke(),T({type:"switch",sessionId:e}),y?.matches&&(o.value=!1)}function _e(e){T({type:"close",sessionId:e}),l.value=l.value.filter(a=>a.id!==e);const t=u.get(e);t&&(t.term.dispose(),u.delete(e)),c.value===e&&(c.value=l.value.length>0?l.value[0].id:null,s=null,v=null,c.value?W(c.value):(I(),R()))}function ke(){if(!m.value)return;const e=m.value;for(;e.firstChild;)e.removeChild(e.firstChild);const t=u.get(c.value);if(t){if(!t.opened)t.term.open(e),t.opened=!0;else{const a=t.term.element;a&&e.appendChild(a)}A?.disconnect(),A=new ResizeObserver(()=>{Y(),ve()}),A.observe(m.value),setTimeout(()=>Y(),50),setTimeout(()=>Y(),200)}}function I(){if(!m.value)return;const e=m.value;for(;e.firstChild;)e.removeChild(e.firstChild)}function Y(){if(v)try{v.fit()}catch{}}function ve(){if(!(!s||!n||n.readyState!==WebSocket.OPEN))try{T({type:"resize",cols:s.cols,rows:s.rows})}catch{}}function ye(e){if(e.touches.length!==1){_=null,k=0;return}_=e.touches[0].clientY,k=0}function we(e){if(!s||e.touches.length!==1||_===null)return;const t=e.touches[0].clientY;k+=_-t,_=t;const a=Math.trunc(k/N);a!==0&&(s.scrollLines(a),k-=a*N,e.preventDefault())}function P(){_=null,k=0}function pe(e){x.value=e,localStorage.setItem(O,e);const t=C[e]?.theme;if(t)for(const a of u.values())a.term.options.theme={...t}}function Be(e){return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function G(e){e.matches&&o.value&&(o.value=!1)}return ze(()=>{y=window.matchMedia("(max-width: 768px)"),G(y),y.addEventListener("change",G),D()}),We(()=>{y?.removeEventListener("change",G),I();for(const e of u.values())e.term.dispose();u.clear(),s=null,v=null,n?.close(),n=null}),(e,t)=>(d(),b("div",U,[r("div",{class:L(["session-backdrop",{active:o.value}]),onClick:t[0]||(t[0]=a=>o.value=!1)},null,2),r("aside",{class:L(["session-list",{collapsed:!o.value}])},[r("div",H,[o.value?(d(),b("span",F,f(i(g)("terminal.sessions")),1)):B("",!0),r("div",J,[p(i(Ee),{trigger:"hover"},{trigger:h(()=>[p(i(z),{quaternary:"",size:"tiny",onClick:R,circle:""},{icon:h(()=>[...t[3]||(t[3]=[r("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[r("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),r("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),_:1})]),default:h(()=>[$(" "+f(i(g)("terminal.newTab")),1)]),_:1})])]),o.value?(d(),b("div",Q,[l.value.length===0?(d(),b("div",X,f(i(g)("common.loading")),1)):B("",!0),(d(!0),b(Re,null,Te(l.value,a=>(d(),b("button",{key:a.id,class:L(["session-item",{active:a.id===c.value,exited:a.exited}]),onClick:S=>W(a.id)},[r("div",q,[r("span",K,f(a.title),1),r("span",Z,[r("span",ee,f(a.shell),1),a.exited?(d(),b("span",te,f(i(g)("terminal.sessionExited")),1)):(d(),b("span",ae,f(Be(a.createdAt)),1))])]),l.value.length>1?(d(),Ye(i(Ae),{key:0,onPositiveClick:S=>_e(a.id)},{trigger:h(()=>[r("button",{class:"session-item-delete",onClick:t[1]||(t[1]=Se(()=>{},["stop"]))},[...t[4]||(t[4]=[r("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[r("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),r("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),default:h(()=>[$(" "+f(i(g)("terminal.closeSession")),1)]),_:1},8,["onPositiveClick"])):B("",!0)],10,j))),128))])):B("",!0)],2),r("div",re,[r("header",ne,[r("div",ie,[p(i(z),{quaternary:"",size:"small",onClick:t[2]||(t[2]=a=>o.value=!o.value),circle:""},{icon:h(()=>[...t[5]||(t[5]=[r("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[r("rect",{x:"3",y:"3",width:"7",height:"7"}),r("rect",{x:"14",y:"3",width:"7",height:"7"}),r("rect",{x:"3",y:"14",width:"7",height:"7"}),r("rect",{x:"14",y:"14",width:"7",height:"7"})],-1)])]),_:1}),V.value?(d(),b("span",le,f(V.value.title),1)):B("",!0)]),r("div",oe,[p(i(Ge),{value:x.value,options:be.value,size:"small","consistent-menu-width":!1,class:"theme-select","onUpdate:value":pe},null,8,["value","options"]),p(i(z),{size:"small",onClick:R},{icon:h(()=>[...t[6]||(t[6]=[r("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[r("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),r("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:h(()=>[$(" "+f(i(g)("terminal.newTab")),1)]),_:1})])]),r("div",ce,[r("div",{ref_key:"terminalRef",ref:m,class:"terminal-xterm",style:Me({backgroundColor:ue.value}),onTouchstart:ye,onTouchmove:we,onTouchend:P,onTouchcancel:P},null,36)])])]))}})})),Ze=M((()=>{})),et=M((()=>{})),tt,at=M((()=>{se(),se(),Ze(),et(),Ie(),tt=He(fe,[["__scopeId","data-v-33848db6"]])}));at();export{tt as default};
@@ -1 +1 @@
1
- import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as t,$t as e,An as z,Bn as I,Bt as C,Cn as M,Jn as s,Qn as m,Qt as k,Yt as S,an as T,nn as c,on as x,sn as R,t as st,tn as b,wt as N,xn as p,yn as at}from"./ui-vendor-DNWaqYj5.js";import{_ as nt,c as D,g as ot,l as B}from"./vue-vendor-VX6KvV1_.js";import{n as F,t as H}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{H as lt,W as it,X as ut,Y as rt}from"./index-BHU-82RO.js";function Qe(_){return(_||"").trim()||"unknown"}function w(_,a){return a<=0?0:_/a*100}function W(_){const a=Qe(_);let n=0;for(let d=0;d<a.length;d+=1)n=(n<<5)-n+a.charCodeAt(d),n|=0;return L[Math.abs(n)%L.length]}var L,P,V=y((()=>{it(),nt(),C(),L=["#4fd1c5","#63b3ed","#f6ad55","#b794f4","#68d391","#fc8181","#f687b3","#90cdf4","#fbd38d","#9ae6b4"],P=ot("usage",()=>{const _=I(null),a=I(!1);let n=0;async function d(u=30){const v=++n;a.value=!0;try{const $=await lt(u);v===n&&(_.value=$)}catch($){v===n&&console.error("Failed to load usage stats:",$)}finally{v===n&&(a.value=!1)}}const g=k(()=>!!_.value&&_.value.total_sessions>0),r=k(()=>_.value?.total_input_tokens??0),h=k(()=>_.value?.total_output_tokens??0),i=k(()=>r.value+h.value),o=k(()=>_.value?.total_sessions??0),l=k(()=>_.value?.total_cache_read_tokens??0),f=k(()=>{const u=r.value+l.value;return u===0?null:l.value/u*100}),O=k(()=>_.value?.total_cost??0),q=k(()=>_.value?_.value.model_usage.map(u=>{const v=Qe(u.model),$=u.input_tokens+u.output_tokens,U=$+u.cache_read_tokens;return{model:v,inputTokens:u.input_tokens,outputTokens:u.output_tokens,cacheTokens:u.cache_read_tokens,cacheWriteTokens:u.cache_write_tokens,totalTokens:$,visualTokens:U,sessions:u.sessions,color:W(v),inputPercent:w(u.input_tokens,U),outputPercent:w(u.output_tokens,U),cachePercent:w(u.cache_read_tokens,U)}}).sort((u,v)=>v.visualTokens-u.visualTokens):[]);return{stats:_,isLoading:a,hasData:g,loadSessions:d,totalInputTokens:r,totalOutputTokens:h,totalTokens:i,totalSessions:o,totalCacheTokens:l,cacheHitRate:f,estimatedCost:O,modelUsage:q,modelLegend:k(()=>{const u=new Set;return q.value.filter(v=>u.has(v.model)?!1:(u.add(v.model),!0)).map(v=>({model:v.model,color:v.color}))}),dailyUsage:k(()=>(_.value?.daily_usage??[]).map(u=>{const v=u.input_tokens+u.output_tokens+u.cache_read_tokens;return{...u,visualTokens:v,inputPercent:w(u.input_tokens,v),outputPercent:w(u.output_tokens,v),cachePercent:w(u.cache_read_tokens,v)}})),avgSessionsPerDay:k(()=>{if(!_.value||_.value.daily_usage.length===0)return 0;const u=_.value.daily_usage.filter($=>$.sessions>0).length,v=Math.max(1,u);return o.value/v}),getModelColor:W}})})),A,K,Y,E,Q,J,X,j,G,Z,ee,te,se,ae,ne,oe,Je,le=y((()=>{C(),D(),V(),A={class:"stat-cards"},K={class:"stat-card"},Y={class:"stat-label"},E={class:"stat-value"},Q={class:"stat-sub"},J={class:"stat-card"},X={class:"stat-label"},j={class:"stat-value"},G={class:"stat-sub"},Z={class:"stat-card"},ee={class:"stat-label"},te={class:"stat-value"},se={class:"stat-card"},ae={class:"stat-label"},ne={class:"stat-value"},oe={key:0,class:"stat-sub"},Je=R({__name:"StatCards",setup(_){const{t:a}=B(),n=P();function d(r){return r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":String(r)}function g(r){return r===0?"$0.00":r<.01?"<$0.01":"$"+r.toFixed(2)}return(r,h)=>(p(),c("div",A,[e("div",K,[e("div",Y,t(s(a)("usage.totalTokens")),1),e("div",E,t(d(s(n).totalTokens)),1),e("div",Q,t(d(s(n).totalInputTokens))+" "+t(s(a)("usage.inputTokens"))+" / "+t(d(s(n).totalOutputTokens))+" "+t(s(a)("usage.outputTokens")),1)]),e("div",J,[e("div",X,t(s(a)("usage.totalSessions")),1),e("div",j,t(s(n).totalSessions),1),e("div",G,t(s(a)("usage.avgPerDay",{n:s(n).avgSessionsPerDay.toFixed(1)})),1)]),e("div",Z,[e("div",ee,t(s(a)("usage.estimatedCost")),1),e("div",te,t(g(s(n).estimatedCost)),1)]),e("div",se,[e("div",ae,t(s(a)("usage.cacheHitRate")),1),e("div",ne,t(s(n).cacheHitRate!==null?s(n).cacheHitRate.toFixed(1)+"%":"--"),1),s(n).cacheHitRate!==null?(p(),c("div",oe,t(d(s(n).totalCacheTokens))+" "+t(s(a)("usage.tokens")),1)):b("",!0)])]))}})})),_t=y((()=>{})),Xe,dt=y((()=>{le(),le(),_t(),F(),Xe=H(Je,[["__scopeId","data-v-3a594781"]])})),ie,ue,re,_e,de,ce,pe,ve,he,ge,ke,je,ye=y((()=>{C(),D(),V(),ie={class:"model-breakdown"},ue={class:"section-title"},re={class:"model-legend","aria-label":"Token type legend"},_e={class:"legend-item"},de={class:"legend-item"},ce={class:"legend-item"},pe={class:"model-list"},ve=["title"],he={class:"model-bar-wrap"},ge=["title"],ke={key:0},je=R({__name:"ModelBreakdown",setup(_){const{t:a}=B(),n=P(),d=k(()=>Math.max(...n.modelUsage.map(h=>h.visualTokens),1));function g(h){return h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":String(h)}function r(h){const i=h.inputTokens+h.cacheTokens;return i===0?"--":(h.cacheTokens/i*100).toFixed(1)+"%"}return(h,i)=>(p(),c("div",ie,[e("h3",ue,t(s(a)("usage.modelBreakdown")),1),e("div",re,[e("div",_e,[i[0]||(i[0]=e("span",{class:"legend-swatch input"},null,-1)),T(t(s(a)("usage.inputTokens")),1)]),e("div",de,[i[1]||(i[1]=e("span",{class:"legend-swatch output"},null,-1)),T(t(s(a)("usage.outputTokens")),1)]),e("div",ce,[i[2]||(i[2]=e("span",{class:"legend-swatch cache"},null,-1)),T(t(s(a)("usage.cacheRead")),1)])]),e("div",pe,[(p(!0),c(S,null,M(s(n).modelUsage,o=>(p(),c("div",{key:o.model,class:"model-row"},[e("span",{class:"model-swatch",style:m({background:o.color})},null,4),e("span",{class:"model-name",title:o.model},t(o.model),9,ve),e("div",he,[e("div",{class:"model-bar",style:m({width:o.visualTokens/d.value*100+"%"})},[o.inputTokens>0?(p(),c("div",{key:0,class:"model-bar-segment input",style:m({width:o.inputPercent+"%"})},null,4)):b("",!0),o.outputTokens>0?(p(),c("div",{key:1,class:"model-bar-segment output",style:m({width:o.outputPercent+"%"})},null,4)):b("",!0),o.cacheTokens>0?(p(),c("div",{key:2,class:"model-bar-segment cache",style:m({width:o.cachePercent+"%"})},null,4)):b("",!0)],4)]),e("span",{class:"model-tokens",title:`${s(a)("usage.inputTokens")}: ${g(o.inputTokens)} · ${s(a)("usage.outputTokens")}: ${g(o.outputTokens)} · ${s(a)("usage.cacheRead")}: ${g(o.cacheTokens)} · ${s(a)("usage.cacheHitRate")}: ${r(o)}`},[T(t(g(o.totalTokens))+" ",1),o.cacheTokens>0?(p(),c("small",ke,"+"+t(g(o.cacheTokens)),1)):b("",!0)],8,ge)]))),128))])]))}})})),ct=y((()=>{})),Ge,pt=y((()=>{ye(),ye(),ct(),F(),Ge=H(je,[["__scopeId","data-v-692258ec"]])})),fe,me,Te,$e,be,we,xe,Se,Ce,Pe,Ue,Me,Re,De,Be,Fe,He,Ve,Ie,Ze,Le=y((()=>{C(),D(),V(),fe={class:"daily-trend"},me={class:"section-title"},Te={class:"bar-chart"},$e={class:"bar-track"},be={class:"bar-tooltip"},we={class:"tooltip-date"},xe={class:"tooltip-row"},Se={class:"tooltip-row"},Ce={class:"tooltip-row"},Pe={class:"tooltip-row"},Ue={class:"tooltip-row"},Me={class:"tooltip-row"},Re={class:"tooltip-row"},De={class:"bar-dates"},Be={class:"chart-legend","aria-label":"Token type legend"},Fe={class:"legend-item"},He={class:"legend-item"},Ve={class:"legend-item"},Ie={class:"trend-table"},Ze=R({__name:"DailyTrend",setup(_){const{t:a}=B(),n=P();function d(i){return i>=1e6?(i/1e6).toFixed(1)+"M":i>=1e3?(i/1e3).toFixed(1)+"K":String(i)}function g(i){return i===0?"$0.00":i<.01?"<$0.01":"$"+i.toFixed(2)}function r(i){const o=i.input_tokens+i.cache_read_tokens;return o===0?"--":(i.cache_read_tokens/o*100).toFixed(1)+"%"}const h=k(()=>Math.max(...n.dailyUsage.map(i=>i.visualTokens),1));return(i,o)=>(p(),c("div",fe,[e("h3",me,t(s(a)("usage.dailyTrend")),1),e("div",Te,[(p(!0),c(S,null,M(s(n).dailyUsage,l=>(p(),c("div",{key:l.date,class:"bar-col"},[e("div",$e,[e("div",{class:"bar-stack",style:m({height:l.visualTokens/h.value*100+"%"})},[l.output_tokens>0?(p(),c("div",{key:0,class:"bar-segment output",style:m({height:l.outputPercent+"%"})},null,4)):b("",!0),l.input_tokens>0?(p(),c("div",{key:1,class:"bar-segment input",style:m({height:l.inputPercent+"%"})},null,4)):b("",!0),l.cache_read_tokens>0?(p(),c("div",{key:2,class:"bar-segment cache",style:m({height:l.cachePercent+"%"})},null,4)):b("",!0)],4)]),e("div",be,[e("div",we,t(l.date),1),e("div",xe,t(s(a)("usage.inputTokens"))+": "+t(d(l.input_tokens)),1),e("div",Se,t(s(a)("usage.outputTokens"))+": "+t(d(l.output_tokens)),1),e("div",Ce,t(s(a)("usage.cacheRead"))+": "+t(d(l.cache_read_tokens)),1),e("div",Pe,t(s(a)("usage.cacheWrite"))+": "+t(d(l.cache_write_tokens)),1),e("div",Ue,t(s(a)("usage.cacheHitRate"))+": "+t(r(l)),1),e("div",Me,t(s(a)("usage.sessions"))+": "+t(l.sessions),1),e("div",Re,t(s(a)("usage.cost"))+": "+t(g(l.cost)),1)])]))),128))]),e("div",De,[e("span",null,t(s(n).dailyUsage[0]?.date.slice(5)),1),e("span",null,t(s(n).dailyUsage[s(n).dailyUsage.length-1]?.date.slice(5)),1)]),e("div",Be,[e("div",Fe,[o[0]||(o[0]=e("span",{class:"legend-swatch input"},null,-1)),T(t(s(a)("usage.inputTokens")),1)]),e("div",He,[o[1]||(o[1]=e("span",{class:"legend-swatch output"},null,-1)),T(t(s(a)("usage.outputTokens")),1)]),e("div",Ve,[o[2]||(o[2]=e("span",{class:"legend-swatch cache"},null,-1)),T(t(s(a)("usage.cacheRead")),1)])]),e("div",Ie,[e("table",null,[e("thead",null,[e("tr",null,[e("th",null,t(s(a)("usage.date")),1),e("th",null,t(s(a)("usage.inputTokens")),1),e("th",null,t(s(a)("usage.outputTokens")),1),e("th",null,t(s(a)("usage.cacheRead")),1),e("th",null,t(s(a)("usage.cacheWrite")),1),e("th",null,t(s(a)("usage.cacheHitRate")),1),e("th",null,t(s(a)("usage.sessions")),1),e("th",null,t(s(a)("usage.cost")),1)])]),e("tbody",null,[(p(!0),c(S,null,M([...s(n).dailyUsage].reverse(),l=>(p(),c("tr",{key:l.date},[e("td",null,t(l.date),1),e("td",null,t(d(l.input_tokens)),1),e("td",null,t(d(l.output_tokens)),1),e("td",null,t(d(l.cache_read_tokens)),1),e("td",null,t(d(l.cache_write_tokens)),1),e("td",null,t(r(l)),1),e("td",null,t(l.sessions),1),e("td",null,t(g(l.cost)),1)]))),128))])])])]))}})})),vt=y((()=>{})),et,ht=y((()=>{Le(),Le(),vt(),F(),et=H(Ze,[["__scopeId","data-v-9eb202e8"]])})),Oe,qe,ze,Ne,We,Ae,Ke,Ye,tt,Ee=y((()=>{C(),st(),D(),V(),rt(),dt(),pt(),ht(),Oe={class:"usage-view"},qe={class:"page-header"},ze={class:"header-title"},Ne={class:"usage-toolbar"},We={class:"period-selector",role:"group","aria-label":"Usage statistics period"},Ae={class:"usage-content"},Ke={key:0,class:"usage-loading"},Ye={key:2,class:"usage-empty"},tt=R({__name:"UsageView",setup(_){const{t:a}=B(),n=P(),d=ut(),g=[{label:"7d",days:7},{label:"30d",days:30},{label:"90d",days:90},{label:"365d",days:365}],r=I(30);async function h(){(!d.activeProfileName||d.profiles.length===0)&&await d.fetchProfiles()}async function i(o=r.value){r.value=o,await h(),await n.loadSessions(o)}return at(()=>{i(30)}),(o,l)=>(p(),c("div",Oe,[e("header",qe,[e("h2",ze,t(s(a)("usage.title")),1),e("div",Ne,[e("div",We,[(p(),c(S,null,M(g,f=>x(s(N),{key:f.days,class:"period-option",size:"small",type:r.value===f.days?"primary":"default",secondary:r.value===f.days,quaternary:r.value!==f.days,"aria-pressed":r.value===f.days,onClick:O=>i(f.days)},{default:z(()=>[T(t(f.label),1)]),_:2},1032,["type","secondary","quaternary","aria-pressed","onClick"])),64))]),x(s(N),{class:"refresh-button",size:"small",quaternary:"",loading:s(n).isLoading,onClick:l[0]||(l[0]=f=>i())},{default:z(()=>[T(t(s(a)("usage.refresh")),1)]),_:1},8,["loading"])])]),e("div",Ae,[s(n).isLoading&&!s(n).hasData?(p(),c("div",Ke,t(s(a)("common.loading")),1)):s(n).hasData?(p(),c(S,{key:1},[x(Xe),x(Ge),x(et)],64)):(p(),c("div",Ye,t(s(a)("usage.noData")),1))])]))}})})),gt=y((()=>{})),kt,yt=y((()=>{Ee(),Ee(),gt(),F(),kt=H(tt,[["__scopeId","data-v-b6148568"]])}));yt();export{kt as default};
1
+ import{n as y}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as t,$t as e,An as z,Bn as I,Bt as C,Cn as M,Jn as s,Qn as m,Qt as k,Yt as S,an as T,nn as c,on as x,sn as R,t as st,tn as b,wt as N,xn as p,yn as at}from"./ui-vendor-DNWaqYj5.js";import{_ as nt,c as D,g as ot,l as B}from"./vue-vendor-VX6KvV1_.js";import{n as F,t as H}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{H as lt,W as it,X as ut,Y as rt}from"./index-DyLZQAQu.js";function Qe(_){return(_||"").trim()||"unknown"}function w(_,a){return a<=0?0:_/a*100}function W(_){const a=Qe(_);let n=0;for(let d=0;d<a.length;d+=1)n=(n<<5)-n+a.charCodeAt(d),n|=0;return L[Math.abs(n)%L.length]}var L,P,V=y((()=>{it(),nt(),C(),L=["#4fd1c5","#63b3ed","#f6ad55","#b794f4","#68d391","#fc8181","#f687b3","#90cdf4","#fbd38d","#9ae6b4"],P=ot("usage",()=>{const _=I(null),a=I(!1);let n=0;async function d(u=30){const v=++n;a.value=!0;try{const $=await lt(u);v===n&&(_.value=$)}catch($){v===n&&console.error("Failed to load usage stats:",$)}finally{v===n&&(a.value=!1)}}const g=k(()=>!!_.value&&_.value.total_sessions>0),r=k(()=>_.value?.total_input_tokens??0),h=k(()=>_.value?.total_output_tokens??0),i=k(()=>r.value+h.value),o=k(()=>_.value?.total_sessions??0),l=k(()=>_.value?.total_cache_read_tokens??0),f=k(()=>{const u=r.value+l.value;return u===0?null:l.value/u*100}),O=k(()=>_.value?.total_cost??0),q=k(()=>_.value?_.value.model_usage.map(u=>{const v=Qe(u.model),$=u.input_tokens+u.output_tokens,U=$+u.cache_read_tokens;return{model:v,inputTokens:u.input_tokens,outputTokens:u.output_tokens,cacheTokens:u.cache_read_tokens,cacheWriteTokens:u.cache_write_tokens,totalTokens:$,visualTokens:U,sessions:u.sessions,color:W(v),inputPercent:w(u.input_tokens,U),outputPercent:w(u.output_tokens,U),cachePercent:w(u.cache_read_tokens,U)}}).sort((u,v)=>v.visualTokens-u.visualTokens):[]);return{stats:_,isLoading:a,hasData:g,loadSessions:d,totalInputTokens:r,totalOutputTokens:h,totalTokens:i,totalSessions:o,totalCacheTokens:l,cacheHitRate:f,estimatedCost:O,modelUsage:q,modelLegend:k(()=>{const u=new Set;return q.value.filter(v=>u.has(v.model)?!1:(u.add(v.model),!0)).map(v=>({model:v.model,color:v.color}))}),dailyUsage:k(()=>(_.value?.daily_usage??[]).map(u=>{const v=u.input_tokens+u.output_tokens+u.cache_read_tokens;return{...u,visualTokens:v,inputPercent:w(u.input_tokens,v),outputPercent:w(u.output_tokens,v),cachePercent:w(u.cache_read_tokens,v)}})),avgSessionsPerDay:k(()=>{if(!_.value||_.value.daily_usage.length===0)return 0;const u=_.value.daily_usage.filter($=>$.sessions>0).length,v=Math.max(1,u);return o.value/v}),getModelColor:W}})})),A,K,Y,E,Q,J,X,j,G,Z,ee,te,se,ae,ne,oe,Je,le=y((()=>{C(),D(),V(),A={class:"stat-cards"},K={class:"stat-card"},Y={class:"stat-label"},E={class:"stat-value"},Q={class:"stat-sub"},J={class:"stat-card"},X={class:"stat-label"},j={class:"stat-value"},G={class:"stat-sub"},Z={class:"stat-card"},ee={class:"stat-label"},te={class:"stat-value"},se={class:"stat-card"},ae={class:"stat-label"},ne={class:"stat-value"},oe={key:0,class:"stat-sub"},Je=R({__name:"StatCards",setup(_){const{t:a}=B(),n=P();function d(r){return r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":String(r)}function g(r){return r===0?"$0.00":r<.01?"<$0.01":"$"+r.toFixed(2)}return(r,h)=>(p(),c("div",A,[e("div",K,[e("div",Y,t(s(a)("usage.totalTokens")),1),e("div",E,t(d(s(n).totalTokens)),1),e("div",Q,t(d(s(n).totalInputTokens))+" "+t(s(a)("usage.inputTokens"))+" / "+t(d(s(n).totalOutputTokens))+" "+t(s(a)("usage.outputTokens")),1)]),e("div",J,[e("div",X,t(s(a)("usage.totalSessions")),1),e("div",j,t(s(n).totalSessions),1),e("div",G,t(s(a)("usage.avgPerDay",{n:s(n).avgSessionsPerDay.toFixed(1)})),1)]),e("div",Z,[e("div",ee,t(s(a)("usage.estimatedCost")),1),e("div",te,t(g(s(n).estimatedCost)),1)]),e("div",se,[e("div",ae,t(s(a)("usage.cacheHitRate")),1),e("div",ne,t(s(n).cacheHitRate!==null?s(n).cacheHitRate.toFixed(1)+"%":"--"),1),s(n).cacheHitRate!==null?(p(),c("div",oe,t(d(s(n).totalCacheTokens))+" "+t(s(a)("usage.tokens")),1)):b("",!0)])]))}})})),_t=y((()=>{})),Xe,dt=y((()=>{le(),le(),_t(),F(),Xe=H(Je,[["__scopeId","data-v-3a594781"]])})),ie,ue,re,_e,de,ce,pe,ve,he,ge,ke,je,ye=y((()=>{C(),D(),V(),ie={class:"model-breakdown"},ue={class:"section-title"},re={class:"model-legend","aria-label":"Token type legend"},_e={class:"legend-item"},de={class:"legend-item"},ce={class:"legend-item"},pe={class:"model-list"},ve=["title"],he={class:"model-bar-wrap"},ge=["title"],ke={key:0},je=R({__name:"ModelBreakdown",setup(_){const{t:a}=B(),n=P(),d=k(()=>Math.max(...n.modelUsage.map(h=>h.visualTokens),1));function g(h){return h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":String(h)}function r(h){const i=h.inputTokens+h.cacheTokens;return i===0?"--":(h.cacheTokens/i*100).toFixed(1)+"%"}return(h,i)=>(p(),c("div",ie,[e("h3",ue,t(s(a)("usage.modelBreakdown")),1),e("div",re,[e("div",_e,[i[0]||(i[0]=e("span",{class:"legend-swatch input"},null,-1)),T(t(s(a)("usage.inputTokens")),1)]),e("div",de,[i[1]||(i[1]=e("span",{class:"legend-swatch output"},null,-1)),T(t(s(a)("usage.outputTokens")),1)]),e("div",ce,[i[2]||(i[2]=e("span",{class:"legend-swatch cache"},null,-1)),T(t(s(a)("usage.cacheRead")),1)])]),e("div",pe,[(p(!0),c(S,null,M(s(n).modelUsage,o=>(p(),c("div",{key:o.model,class:"model-row"},[e("span",{class:"model-swatch",style:m({background:o.color})},null,4),e("span",{class:"model-name",title:o.model},t(o.model),9,ve),e("div",he,[e("div",{class:"model-bar",style:m({width:o.visualTokens/d.value*100+"%"})},[o.inputTokens>0?(p(),c("div",{key:0,class:"model-bar-segment input",style:m({width:o.inputPercent+"%"})},null,4)):b("",!0),o.outputTokens>0?(p(),c("div",{key:1,class:"model-bar-segment output",style:m({width:o.outputPercent+"%"})},null,4)):b("",!0),o.cacheTokens>0?(p(),c("div",{key:2,class:"model-bar-segment cache",style:m({width:o.cachePercent+"%"})},null,4)):b("",!0)],4)]),e("span",{class:"model-tokens",title:`${s(a)("usage.inputTokens")}: ${g(o.inputTokens)} · ${s(a)("usage.outputTokens")}: ${g(o.outputTokens)} · ${s(a)("usage.cacheRead")}: ${g(o.cacheTokens)} · ${s(a)("usage.cacheHitRate")}: ${r(o)}`},[T(t(g(o.totalTokens))+" ",1),o.cacheTokens>0?(p(),c("small",ke,"+"+t(g(o.cacheTokens)),1)):b("",!0)],8,ge)]))),128))])]))}})})),ct=y((()=>{})),Ge,pt=y((()=>{ye(),ye(),ct(),F(),Ge=H(je,[["__scopeId","data-v-692258ec"]])})),fe,me,Te,$e,be,we,xe,Se,Ce,Pe,Ue,Me,Re,De,Be,Fe,He,Ve,Ie,Ze,Le=y((()=>{C(),D(),V(),fe={class:"daily-trend"},me={class:"section-title"},Te={class:"bar-chart"},$e={class:"bar-track"},be={class:"bar-tooltip"},we={class:"tooltip-date"},xe={class:"tooltip-row"},Se={class:"tooltip-row"},Ce={class:"tooltip-row"},Pe={class:"tooltip-row"},Ue={class:"tooltip-row"},Me={class:"tooltip-row"},Re={class:"tooltip-row"},De={class:"bar-dates"},Be={class:"chart-legend","aria-label":"Token type legend"},Fe={class:"legend-item"},He={class:"legend-item"},Ve={class:"legend-item"},Ie={class:"trend-table"},Ze=R({__name:"DailyTrend",setup(_){const{t:a}=B(),n=P();function d(i){return i>=1e6?(i/1e6).toFixed(1)+"M":i>=1e3?(i/1e3).toFixed(1)+"K":String(i)}function g(i){return i===0?"$0.00":i<.01?"<$0.01":"$"+i.toFixed(2)}function r(i){const o=i.input_tokens+i.cache_read_tokens;return o===0?"--":(i.cache_read_tokens/o*100).toFixed(1)+"%"}const h=k(()=>Math.max(...n.dailyUsage.map(i=>i.visualTokens),1));return(i,o)=>(p(),c("div",fe,[e("h3",me,t(s(a)("usage.dailyTrend")),1),e("div",Te,[(p(!0),c(S,null,M(s(n).dailyUsage,l=>(p(),c("div",{key:l.date,class:"bar-col"},[e("div",$e,[e("div",{class:"bar-stack",style:m({height:l.visualTokens/h.value*100+"%"})},[l.output_tokens>0?(p(),c("div",{key:0,class:"bar-segment output",style:m({height:l.outputPercent+"%"})},null,4)):b("",!0),l.input_tokens>0?(p(),c("div",{key:1,class:"bar-segment input",style:m({height:l.inputPercent+"%"})},null,4)):b("",!0),l.cache_read_tokens>0?(p(),c("div",{key:2,class:"bar-segment cache",style:m({height:l.cachePercent+"%"})},null,4)):b("",!0)],4)]),e("div",be,[e("div",we,t(l.date),1),e("div",xe,t(s(a)("usage.inputTokens"))+": "+t(d(l.input_tokens)),1),e("div",Se,t(s(a)("usage.outputTokens"))+": "+t(d(l.output_tokens)),1),e("div",Ce,t(s(a)("usage.cacheRead"))+": "+t(d(l.cache_read_tokens)),1),e("div",Pe,t(s(a)("usage.cacheWrite"))+": "+t(d(l.cache_write_tokens)),1),e("div",Ue,t(s(a)("usage.cacheHitRate"))+": "+t(r(l)),1),e("div",Me,t(s(a)("usage.sessions"))+": "+t(l.sessions),1),e("div",Re,t(s(a)("usage.cost"))+": "+t(g(l.cost)),1)])]))),128))]),e("div",De,[e("span",null,t(s(n).dailyUsage[0]?.date.slice(5)),1),e("span",null,t(s(n).dailyUsage[s(n).dailyUsage.length-1]?.date.slice(5)),1)]),e("div",Be,[e("div",Fe,[o[0]||(o[0]=e("span",{class:"legend-swatch input"},null,-1)),T(t(s(a)("usage.inputTokens")),1)]),e("div",He,[o[1]||(o[1]=e("span",{class:"legend-swatch output"},null,-1)),T(t(s(a)("usage.outputTokens")),1)]),e("div",Ve,[o[2]||(o[2]=e("span",{class:"legend-swatch cache"},null,-1)),T(t(s(a)("usage.cacheRead")),1)])]),e("div",Ie,[e("table",null,[e("thead",null,[e("tr",null,[e("th",null,t(s(a)("usage.date")),1),e("th",null,t(s(a)("usage.inputTokens")),1),e("th",null,t(s(a)("usage.outputTokens")),1),e("th",null,t(s(a)("usage.cacheRead")),1),e("th",null,t(s(a)("usage.cacheWrite")),1),e("th",null,t(s(a)("usage.cacheHitRate")),1),e("th",null,t(s(a)("usage.sessions")),1),e("th",null,t(s(a)("usage.cost")),1)])]),e("tbody",null,[(p(!0),c(S,null,M([...s(n).dailyUsage].reverse(),l=>(p(),c("tr",{key:l.date},[e("td",null,t(l.date),1),e("td",null,t(d(l.input_tokens)),1),e("td",null,t(d(l.output_tokens)),1),e("td",null,t(d(l.cache_read_tokens)),1),e("td",null,t(d(l.cache_write_tokens)),1),e("td",null,t(r(l)),1),e("td",null,t(l.sessions),1),e("td",null,t(g(l.cost)),1)]))),128))])])])]))}})})),vt=y((()=>{})),et,ht=y((()=>{Le(),Le(),vt(),F(),et=H(Ze,[["__scopeId","data-v-9eb202e8"]])})),Oe,qe,ze,Ne,We,Ae,Ke,Ye,tt,Ee=y((()=>{C(),st(),D(),V(),rt(),dt(),pt(),ht(),Oe={class:"usage-view"},qe={class:"page-header"},ze={class:"header-title"},Ne={class:"usage-toolbar"},We={class:"period-selector",role:"group","aria-label":"Usage statistics period"},Ae={class:"usage-content"},Ke={key:0,class:"usage-loading"},Ye={key:2,class:"usage-empty"},tt=R({__name:"UsageView",setup(_){const{t:a}=B(),n=P(),d=ut(),g=[{label:"7d",days:7},{label:"30d",days:30},{label:"90d",days:90},{label:"365d",days:365}],r=I(30);async function h(){(!d.activeProfileName||d.profiles.length===0)&&await d.fetchProfiles()}async function i(o=r.value){r.value=o,await h(),await n.loadSessions(o)}return at(()=>{i(30)}),(o,l)=>(p(),c("div",Oe,[e("header",qe,[e("h2",ze,t(s(a)("usage.title")),1),e("div",Ne,[e("div",We,[(p(),c(S,null,M(g,f=>x(s(N),{key:f.days,class:"period-option",size:"small",type:r.value===f.days?"primary":"default",secondary:r.value===f.days,quaternary:r.value!==f.days,"aria-pressed":r.value===f.days,onClick:O=>i(f.days)},{default:z(()=>[T(t(f.label),1)]),_:2},1032,["type","secondary","quaternary","aria-pressed","onClick"])),64))]),x(s(N),{class:"refresh-button",size:"small",quaternary:"",loading:s(n).isLoading,onClick:l[0]||(l[0]=f=>i())},{default:z(()=>[T(t(s(a)("usage.refresh")),1)]),_:1},8,["loading"])])]),e("div",Ae,[s(n).isLoading&&!s(n).hasData?(p(),c("div",Ke,t(s(a)("common.loading")),1)):s(n).hasData?(p(),c(S,{key:1},[x(Xe),x(Ge),x(et)],64)):(p(),c("div",Ye,t(s(a)("usage.noData")),1))])]))}})})),gt=y((()=>{})),kt,yt=y((()=>{Ee(),Ee(),gt(),F(),kt=H(tt,[["__scopeId","data-v-b6148568"]])}));yt();export{kt as default};
@@ -1 +1 @@
1
- import{n as f}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as r,A as Ve,An as n,Bn as g,Bt as ee,J as d,Jn as e,Mt as Te,On as D,Pt as B,Qt as b,X as ke,an as v,bn as Ce,en as Be,ft as Ie,nn as te,on as l,sn as ae,t as Ne,tn as Le,wt as P,xn as I,yn as Oe,z as $e}from"./ui-vendor-DNWaqYj5.js";import{c as ie,l as se}from"./vue-vendor-VX6KvV1_.js";import{n as le,t as ne}from"./_plugin-vue_export-helper-D4mtpdbl.js";import{d as Ae,g as De,h as Ge,l as Me,o as je,s as ze,u as Re}from"./system-vQTkarwT.js";var G,M,j,z,R,E,J,F,H,K,U,ue,Y=f((()=>{ee(),Ne(),ie(),Me(),G={class:"github-preview-settings"},M={class:"settings-section"},j={class:"control-row"},z={class:"section-description"},R=["href"],E={class:"log-output"},J={class:"log-output-header"},F={class:"log-box"},H={class:"log-title"},K={class:"log-box"},U={class:"log-title"},ue=ae({__name:"GithubPreviewSettings",setup(ce){const{t}=se(),p=$e(),m=g(!1),y=g(!1),S=g(""),x=g([]),_=g(""),a=g(null),V=g(""),N=g(!1);let h=null;const _e=b(()=>x.value.map(i=>({label:i.name,value:i.name}))),ve=b(()=>a.value?.action_log||""),de=b(()=>a.value?.dev_log||""),w=b(()=>S.value||a.value?.active_action||""),T=b(()=>!!w.value),ge={prepare:"githubPreview.prepareSuccess",install:"githubPreview.installSuccess",start:"githubPreview.startSuccess",stop:"githubPreview.stopSuccess"};function pe(i){const o=String(i?.message||""),c=o.indexOf("{");if(!(c<0))try{const u=JSON.parse(o.slice(c));u&&typeof u=="object"&&"preview_dir"in u&&(a.value=u)}catch{}}function C(i,o){return i==="node_environment_missing"?t("githubPreview.nodeEnvironmentMissing"):o||t("githubPreview.actionFailed")}function fe(i){const o=String(i?.message||""),c=o.indexOf("{");if(c<0)return null;try{const u=JSON.parse(o.slice(c));return u&&typeof u=="object"?u:null}catch{return null}}async function L(){a.value=await je(),!_.value&&a.value.current_tag&&(_.value=a.value.current_tag)}async function he(){y.value=!0;try{x.value=(await ze()).tags,!_.value&&x.value[0]&&(_.value=x.value[0].name)}finally{y.value=!1}}async function O(){m.value=!0;try{await Promise.all([L(),he()])}finally{m.value=!1}}async function k(i,o,c){S.value=i;try{const u=await o();if(a.value=u,u.success===!1){p.warning(C(u.code,u.message));return}!u.accepted&&!u.active_action&&p.success(t(c))}catch(u){pe(u);const A=fe(u);p.error(C(A?.code,A?.message||u?.message))}finally{S.value=""}}async function we(){try{await L()}catch{}}function be(){h||(h=window.setInterval(()=>{we()},2e3))}function $(){h&&(window.clearInterval(h),h=null)}function Pe(){return _.value?_.value:(p.warning(t("githubPreview.selectTag")),null)}async function me(){const i=Pe();i&&await k("prepare",()=>Ae(i),"githubPreview.prepareSuccess")}async function ye(){await k("install",async()=>{const i=await Re();return i.success!==!1&&!i.accepted&&!i.active_action&&!i.installed?{...i,success:!1,message:i.message||t("githubPreview.actionFailed")}:i},"githubPreview.installSuccess")}async function Se(){await k("start",()=>Ge(_.value||void 0),"githubPreview.startSuccess")}async function xe(){await k("stop",De,"githubPreview.stopSuccess")}return Oe(async()=>{await O(),V.value=a.value?.last_action_completed_at||"",N.value=!0}),Ce(()=>{$()}),D(()=>a.value?.active_action||"",i=>{i?be():$()}),D(()=>a.value?.last_action_completed_at||"",i=>{if(!i)return;if(!N.value){V.value=i;return}if(i===V.value||S.value)return;V.value=i;const o=a.value?.last_action||"";if(a.value?.last_action_success===!1){p.error(C(a.value.last_action_code,a.value.last_action_message));return}const c=ge[o];c&&p.success(t(c))}),(i,o)=>(I(),te("div",G,[r("div",M,[r("div",j,[l(e(Ie),{value:_.value,"onUpdate:value":o[0]||(o[0]=c=>_.value=c),class:"tag-select",filterable:"",loading:y.value,options:_e.value,placeholder:e(t)("githubPreview.selectTag")},null,8,["value","loading","options","placeholder"]),l(e(Ve),null,{default:n(()=>[l(e(P),{type:"primary",loading:w.value==="prepare",disabled:T.value||!_.value,onClick:me},{default:n(()=>[v(s(e(t)("githubPreview.prepare")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:w.value==="install",disabled:T.value||!a.value?.has_package,onClick:ye},{default:n(()=>[v(s(e(t)("githubPreview.install")),1)]),_:1},8,["loading","disabled"]),l(e(P),{type:"success",loading:w.value==="start",disabled:T.value||!a.value?.installed,onClick:Se},{default:n(()=>[v(s(e(t)("githubPreview.start")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:w.value==="stop",disabled:T.value||!a.value?.running,onClick:xe},{default:n(()=>[v(s(e(t)("githubPreview.stop")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:m.value||y.value,onClick:O},{default:n(()=>[v(s(e(t)("githubPreview.refresh")),1)]),_:1},8,["loading"])]),_:1})]),r("p",z,s(e(t)("githubPreview.description")),1),l(e(Te),{type:"info",bordered:!1,class:"preview-note"},{default:n(()=>[v(s(e(t)("githubPreview.note")),1)]),_:1}),a.value?(I(),Be(e(ke),{key:0,column:1,bordered:"",size:"small",class:"status-table"},{default:n(()=>[l(e(d),{label:e(t)("githubPreview.path")},{default:n(()=>[r("code",null,s(a.value.preview_dir),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.webuiHome")},{default:n(()=>[r("code",null,s(a.value.webui_home),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.currentTag")},{default:n(()=>[v(s(a.value.current_tag||"-"),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.repoReady")},{default:n(()=>[l(e(B),{size:"small",type:a.value.has_package?"success":"default"},{default:n(()=>[v(s(a.value.has_package?e(t)("githubPreview.yes"):e(t)("githubPreview.no")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.dependencies")},{default:n(()=>[l(e(B),{size:"small",type:a.value.installed?"success":"warning"},{default:n(()=>[v(s(a.value.installed?e(t)("githubPreview.yes"):e(t)("githubPreview.no")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.running")},{default:n(()=>[l(e(B),{size:"small",type:a.value.running?"success":"default"},{default:n(()=>[v(s(a.value.running?`PID ${a.value.pid}`:e(t)("githubPreview.notRunning")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.open")},{default:n(()=>[r("a",{href:a.value.frontend_url,target:"_blank",rel:"noopener noreferrer"},s(a.value.frontend_url),9,R)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.log")},{default:n(()=>[r("code",null,s(a.value.action_log_path),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.devLog")},{default:n(()=>[r("code",null,s(a.value.dev_log_path),1)]),_:1},8,["label"])]),_:1})):Le("",!0),r("div",E,[r("div",J,s(e(t)("githubPreview.logOutput")),1),r("div",F,[r("div",H,s(e(t)("githubPreview.actionLog")),1),r("pre",null,s(ve.value||"-"),1)]),r("div",K,[r("div",U,s(e(t)("githubPreview.devLog")),1),r("pre",null,s(de.value||"-"),1)])])])]))}})})),Ee=f((()=>{})),re,Je=f((()=>{Y(),Y(),Ee(),le(),re=ne(ue,[["__scopeId","data-v-721cf76a"]])})),q,Q,X,Z,oe,W=f((()=>{ee(),ie(),Je(),q={class:"version-preview-view"},Q={class:"page-header"},X={class:"header-title"},Z={class:"page-content"},oe=ae({__name:"VersionPreviewView",setup(ce){const{t}=se();return(p,m)=>(I(),te("div",q,[r("header",Q,[r("h2",X,s(e(t)("githubPreview.title")),1)]),r("div",Z,[l(re)])]))}})})),Fe=f((()=>{})),He,Ke=f((()=>{W(),W(),Fe(),le(),He=ne(oe,[["__scopeId","data-v-1447333d"]])}));Ke();export{He as default};
1
+ import{n as f}from"./rolldown-runtime-M0oDzQ_3.js";import{$n as s,$t as r,A as Ve,An as n,Bn as g,Bt as ee,J as d,Jn as e,Mt as Te,On as D,Pt as B,Qt as b,X as ke,an as v,bn as Ce,en as Be,ft as Ie,nn as te,on as l,sn as ae,t as Ne,tn as Le,wt as P,xn as I,yn as Oe,z as $e}from"./ui-vendor-DNWaqYj5.js";import{c as ie,l as se}from"./vue-vendor-VX6KvV1_.js";import{n as le,t as ne}from"./_plugin-vue_export-helper-CtZk2OSc.js";import{d as Ae,g as De,h as Ge,l as Me,o as je,s as ze,u as Re}from"./system-Pg8JEuA6.js";var G,M,j,z,R,E,J,F,H,K,U,ue,Y=f((()=>{ee(),Ne(),ie(),Me(),G={class:"github-preview-settings"},M={class:"settings-section"},j={class:"control-row"},z={class:"section-description"},R=["href"],E={class:"log-output"},J={class:"log-output-header"},F={class:"log-box"},H={class:"log-title"},K={class:"log-box"},U={class:"log-title"},ue=ae({__name:"GithubPreviewSettings",setup(ce){const{t}=se(),p=$e(),m=g(!1),y=g(!1),S=g(""),x=g([]),_=g(""),a=g(null),V=g(""),N=g(!1);let h=null;const _e=b(()=>x.value.map(i=>({label:i.name,value:i.name}))),ve=b(()=>a.value?.action_log||""),de=b(()=>a.value?.dev_log||""),w=b(()=>S.value||a.value?.active_action||""),T=b(()=>!!w.value),ge={prepare:"githubPreview.prepareSuccess",install:"githubPreview.installSuccess",start:"githubPreview.startSuccess",stop:"githubPreview.stopSuccess"};function pe(i){const o=String(i?.message||""),c=o.indexOf("{");if(!(c<0))try{const u=JSON.parse(o.slice(c));u&&typeof u=="object"&&"preview_dir"in u&&(a.value=u)}catch{}}function C(i,o){return i==="node_environment_missing"?t("githubPreview.nodeEnvironmentMissing"):o||t("githubPreview.actionFailed")}function fe(i){const o=String(i?.message||""),c=o.indexOf("{");if(c<0)return null;try{const u=JSON.parse(o.slice(c));return u&&typeof u=="object"?u:null}catch{return null}}async function L(){a.value=await je(),!_.value&&a.value.current_tag&&(_.value=a.value.current_tag)}async function he(){y.value=!0;try{x.value=(await ze()).tags,!_.value&&x.value[0]&&(_.value=x.value[0].name)}finally{y.value=!1}}async function O(){m.value=!0;try{await Promise.all([L(),he()])}finally{m.value=!1}}async function k(i,o,c){S.value=i;try{const u=await o();if(a.value=u,u.success===!1){p.warning(C(u.code,u.message));return}!u.accepted&&!u.active_action&&p.success(t(c))}catch(u){pe(u);const A=fe(u);p.error(C(A?.code,A?.message||u?.message))}finally{S.value=""}}async function we(){try{await L()}catch{}}function be(){h||(h=window.setInterval(()=>{we()},2e3))}function $(){h&&(window.clearInterval(h),h=null)}function Pe(){return _.value?_.value:(p.warning(t("githubPreview.selectTag")),null)}async function me(){const i=Pe();i&&await k("prepare",()=>Ae(i),"githubPreview.prepareSuccess")}async function ye(){await k("install",async()=>{const i=await Re();return i.success!==!1&&!i.accepted&&!i.active_action&&!i.installed?{...i,success:!1,message:i.message||t("githubPreview.actionFailed")}:i},"githubPreview.installSuccess")}async function Se(){await k("start",()=>Ge(_.value||void 0),"githubPreview.startSuccess")}async function xe(){await k("stop",De,"githubPreview.stopSuccess")}return Oe(async()=>{await O(),V.value=a.value?.last_action_completed_at||"",N.value=!0}),Ce(()=>{$()}),D(()=>a.value?.active_action||"",i=>{i?be():$()}),D(()=>a.value?.last_action_completed_at||"",i=>{if(!i)return;if(!N.value){V.value=i;return}if(i===V.value||S.value)return;V.value=i;const o=a.value?.last_action||"";if(a.value?.last_action_success===!1){p.error(C(a.value.last_action_code,a.value.last_action_message));return}const c=ge[o];c&&p.success(t(c))}),(i,o)=>(I(),te("div",G,[r("div",M,[r("div",j,[l(e(Ie),{value:_.value,"onUpdate:value":o[0]||(o[0]=c=>_.value=c),class:"tag-select",filterable:"",loading:y.value,options:_e.value,placeholder:e(t)("githubPreview.selectTag")},null,8,["value","loading","options","placeholder"]),l(e(Ve),null,{default:n(()=>[l(e(P),{type:"primary",loading:w.value==="prepare",disabled:T.value||!_.value,onClick:me},{default:n(()=>[v(s(e(t)("githubPreview.prepare")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:w.value==="install",disabled:T.value||!a.value?.has_package,onClick:ye},{default:n(()=>[v(s(e(t)("githubPreview.install")),1)]),_:1},8,["loading","disabled"]),l(e(P),{type:"success",loading:w.value==="start",disabled:T.value||!a.value?.installed,onClick:Se},{default:n(()=>[v(s(e(t)("githubPreview.start")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:w.value==="stop",disabled:T.value||!a.value?.running,onClick:xe},{default:n(()=>[v(s(e(t)("githubPreview.stop")),1)]),_:1},8,["loading","disabled"]),l(e(P),{loading:m.value||y.value,onClick:O},{default:n(()=>[v(s(e(t)("githubPreview.refresh")),1)]),_:1},8,["loading"])]),_:1})]),r("p",z,s(e(t)("githubPreview.description")),1),l(e(Te),{type:"info",bordered:!1,class:"preview-note"},{default:n(()=>[v(s(e(t)("githubPreview.note")),1)]),_:1}),a.value?(I(),Be(e(ke),{key:0,column:1,bordered:"",size:"small",class:"status-table"},{default:n(()=>[l(e(d),{label:e(t)("githubPreview.path")},{default:n(()=>[r("code",null,s(a.value.preview_dir),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.webuiHome")},{default:n(()=>[r("code",null,s(a.value.webui_home),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.currentTag")},{default:n(()=>[v(s(a.value.current_tag||"-"),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.repoReady")},{default:n(()=>[l(e(B),{size:"small",type:a.value.has_package?"success":"default"},{default:n(()=>[v(s(a.value.has_package?e(t)("githubPreview.yes"):e(t)("githubPreview.no")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.dependencies")},{default:n(()=>[l(e(B),{size:"small",type:a.value.installed?"success":"warning"},{default:n(()=>[v(s(a.value.installed?e(t)("githubPreview.yes"):e(t)("githubPreview.no")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.running")},{default:n(()=>[l(e(B),{size:"small",type:a.value.running?"success":"default"},{default:n(()=>[v(s(a.value.running?`PID ${a.value.pid}`:e(t)("githubPreview.notRunning")),1)]),_:1},8,["type"])]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.open")},{default:n(()=>[r("a",{href:a.value.frontend_url,target:"_blank",rel:"noopener noreferrer"},s(a.value.frontend_url),9,R)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.log")},{default:n(()=>[r("code",null,s(a.value.action_log_path),1)]),_:1},8,["label"]),l(e(d),{label:e(t)("githubPreview.devLog")},{default:n(()=>[r("code",null,s(a.value.dev_log_path),1)]),_:1},8,["label"])]),_:1})):Le("",!0),r("div",E,[r("div",J,s(e(t)("githubPreview.logOutput")),1),r("div",F,[r("div",H,s(e(t)("githubPreview.actionLog")),1),r("pre",null,s(ve.value||"-"),1)]),r("div",K,[r("div",U,s(e(t)("githubPreview.devLog")),1),r("pre",null,s(de.value||"-"),1)])])])]))}})})),Ee=f((()=>{})),re,Je=f((()=>{Y(),Y(),Ee(),le(),re=ne(ue,[["__scopeId","data-v-721cf76a"]])})),q,Q,X,Z,oe,W=f((()=>{ee(),ie(),Je(),q={class:"version-preview-view"},Q={class:"page-header"},X={class:"header-title"},Z={class:"page-content"},oe=ae({__name:"VersionPreviewView",setup(ce){const{t}=se();return(p,m)=>(I(),te("div",q,[r("header",Q,[r("h2",X,s(e(t)("githubPreview.title")),1)]),r("div",Z,[l(re)])]))}})})),Fe=f((()=>{})),He,Ke=f((()=>{W(),W(),Fe(),le(),He=ne(oe,[["__scopeId","data-v-1447333d"]])}));Ke();export{He as default};
@@ -1 +1 @@
1
- import{n as B}from"./rolldown-runtime-M0oDzQ_3.js";import{An as x,Bn as S,Bt as W,Jn as C,On as ve,Qn as Te,Qt as O,_n as ye,hn as h,nn as Y,on as G,sn as Se,tn as M,wn as H,xn as K,yn as be}from"./ui-vendor-DNWaqYj5.js";import{a as we,n as Ae,r as xe,t as Me}from"./vue-vendor-VX6KvV1_.js";import{n as He,t as Be}from"./_plugin-vue_export-helper-D4mtpdbl.js";function ke(){try{return localStorage.getItem(E)!=="false"}catch{return!0}}function J(o){k.value=o;try{localStorage.setItem(E,String(o))}catch{}}function Fe(){J(!k.value)}function Ce(){return{toolTraceVisible:k,setToolTraceVisible:J,toggleToolTraceVisible:Fe}}var E,k,Oe=B((()=>{W(),E="hermes_show_tool_calls",k=S(ke())})),Q,j,U=B((()=>{W(),Ae(),Me(),Q={key:0,class:"virtual-message-list-empty"},j=Se({__name:"VirtualMessageList",props:{messages:{},estimatedItemHeight:{default:180},overscan:{default:8},rowGap:{default:16},padding:{default:"20px"},topThreshold:{default:120}},emits:["scroll","topReach"],setup(o,{expose:X,emit:Z}){const m=o,z=Z,$=S(null),T=S(null),b=S(0),ee=S(0);let w=0,c=null,f=0,p=0,q=0,g=!1,i=null,F=0,d=null,u=null;const te=O(()=>m.messages.map(le)),ne=O(()=>Math.max(m.estimatedItemHeight,m.estimatedItemHeight*m.overscan));function le(e){return String(e.id)}function s(){return $.value?.querySelector(".virtual-message-list")??null}function a(){const e=s();e&&(b.value=e.scrollTop,ee.value=e.clientHeight)}function y(e=120){q=Date.now()+e}function re(){return Date.now()<q}function A(){w=0,c!=null&&(cancelAnimationFrame(c),c=null),f=0,p=0}function oe(){const e=b.value;a(),re()||(b.value-e<-1?g=!0:v(32)&&(g=!1),(g||!v(96))&&A()),z("scroll"),b.value<=m.topThreshold&&z("topReach")}function ie(e){e.deltaY<-1&&(g=!0,A())}function D(){a(),(Date.now()<w||v(64))&&L(2),d&&R(d.token,4)}function v(e=200){const t=s();return t?t.scrollHeight-t.scrollTop-t.clientHeight<e:!0}function se(e=200){return!g&&v(e)}function ae(e={}){const t=typeof e=="number"?e:e.frames??2,n=typeof e=="number"?400:e.keepAliveMs??400;g=!1,w=Date.now()+n,h(()=>{L(t)})}function ce(){const e=s();return y(),T.value?.scrollToBottom(),e?(e.scrollTop=Math.max(0,e.scrollHeight-e.clientHeight),a(),!0):!1}function L(e=1){if(f=Math.max(f,e),c!=null)return;const t=()=>{if(ce()?(p=0,f-=1):p+=1,f<=0&&Date.now()>=w){c=null,f=0,p=0;return}if(p>30){c=null,f=0,p=0;return}c=requestAnimationFrame(t)};c=requestAnimationFrame(t)}function ue(e,t){const n=s();if(!n)return null;const r=document.getElementById(t);if(r instanceof HTMLElement&&n.contains(r))return r;const l=document.getElementById(`message-${e}`);return l instanceof HTMLElement&&n.contains(l)?l:null}function me(e,t){const n=s();if(!n)return;const r=n.getBoundingClientRect(),l=e.getBoundingClientRect(),_=t==="center"?l.top+l.height/2-(r.top+r.height/2):l.top-r.top-24;Math.abs(_)>1&&(y(),n.scrollTop=Math.max(0,n.scrollTop+_)),a()}function V(e,t){y(),T.value?.scrollToItem(e,t),a()}function R(e,t=1){i!=null&&cancelAnimationFrame(i);const n=r=>{const l=d;if(!l||l.token!==e){i=null;return}const _=ue(l.messageId,l.anchorId);if(_?me(_,l.align):V(l.index,{align:l.align,offset:l.align==="start"?-24:0}),r<=1){i=null,d=null;return}i=requestAnimationFrame(()=>n(r-1))};i=requestAnimationFrame(()=>n(t))}function I(){F+=1,d=null,i!=null&&(cancelAnimationFrame(i),i=null)}function fe(e){const t=m.messages.findIndex(r=>String(r.id)===e);if(t<0)return;I();const n=F;d={token:n,index:t,messageId:e,anchorId:`message-${e}`,align:"center"},h(()=>{V(t,{align:"center"}),R(n,8)})}function ge(e,t){const n=m.messages.findIndex(l=>String(l.id)===e);if(n<0)return;I();const r=F;d={token:r,index:n,messageId:e,anchorId:t,align:"start"},h(()=>{V(n,{align:"start",offset:-24}),R(r,10)})}function de(){const e=s();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function _e(e){e&&h(()=>{const t=s();if(!t)return;const n=Math.max(0,t.scrollHeight-e.scrollHeight+e.scrollTop);y(),T.value?.scrollToPosition(n),t.scrollTop=n,a()})}function he(){const e=s();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight,wasNearBottom:v(64)}:null}function pe(e,t=4){e&&(A(),g=!e.wasNearBottom,u!=null&&cancelAnimationFrame(u),h(()=>{let n=t;const r=()=>{const l=s();if(!l){u=null;return}const _=Math.max(0,l.scrollHeight-l.clientHeight),N=Math.min(_,Math.max(0,e.scrollTop));if(y(),T.value?.scrollToPosition(N),l.scrollTop=N,a(),n-=1,n<=0){u=null;return}u=requestAnimationFrame(r)};u=requestAnimationFrame(r)}))}let P=null;return be(()=>{h(()=>{a();const e=s();e&&typeof ResizeObserver<"u"&&(P=new ResizeObserver(D),P.observe(e))})}),ye(()=>{A(),i!=null&&cancelAnimationFrame(i),u!=null&&cancelAnimationFrame(u),P?.disconnect()}),ve(te,()=>{I(),h(a)}),X({isNearBottom:v,shouldAutoFollowBottom:se,scrollToBottom:ae,scrollToMessage:fe,scrollToAnchor:ge,captureScrollPosition:de,restoreScrollPosition:_e,captureViewportPosition:he,restoreViewportPosition:pe}),(e,t)=>(K(),Y("div",{ref_key:"hostRef",ref:$,class:"virtual-message-list-host",style:Te({"--virtual-row-gap":`${o.rowGap}px`,"--virtual-list-padding":o.padding})},[G(C(we),{ref_key:"scrollerRef",ref:T,class:"virtual-message-list",items:o.messages,"key-field":"id","min-item-size":o.estimatedItemHeight,buffer:ne.value,"flow-mode":!0,prerender:o.overscan,onScrollPassive:oe,onWheelPassive:ie,onResize:D,onVisible:a},{before:x(()=>[o.messages.length>0?H(e.$slots,"before",{key:0},void 0,!0):M("",!0)]),default:x(({item:n,index:r,active:l})=>[G(C(xe),{item:n,index:r,active:l,class:"virtual-row"},{default:x(()=>[l?H(e.$slots,"item",{key:0,message:n},void 0,!0):M("",!0)]),_:2},1032,["item","index","active"])]),after:x(()=>[o.messages.length>0?H(e.$slots,"after",{key:0},void 0,!0):M("",!0)]),_:3},8,["items","min-item-size","buffer","prerender"]),o.messages.length===0&&e.$slots.empty?(K(),Y("div",Q,[H(e.$slots,"empty",{},void 0,!0)])):M("",!0)],4))}})})),Ve=B((()=>{})),Re,Ye=B((()=>{U(),U(),Ve(),He(),Re=Be(j,[["__scopeId","data-v-c2c35ff4"]])}));export{Ce as i,Ye as n,Oe as r,Re as t};
1
+ import{n as B}from"./rolldown-runtime-M0oDzQ_3.js";import{An as x,Bn as S,Bt as W,Jn as C,On as ve,Qn as Te,Qt as O,_n as ye,hn as h,nn as Y,on as G,sn as Se,tn as M,wn as H,xn as K,yn as be}from"./ui-vendor-DNWaqYj5.js";import{a as we,n as Ae,r as xe,t as Me}from"./vue-vendor-VX6KvV1_.js";import{n as He,t as Be}from"./_plugin-vue_export-helper-CtZk2OSc.js";function ke(){try{return localStorage.getItem(E)!=="false"}catch{return!0}}function J(o){k.value=o;try{localStorage.setItem(E,String(o))}catch{}}function Fe(){J(!k.value)}function Ce(){return{toolTraceVisible:k,setToolTraceVisible:J,toggleToolTraceVisible:Fe}}var E,k,Oe=B((()=>{W(),E="hermes_show_tool_calls",k=S(ke())})),Q,j,U=B((()=>{W(),Ae(),Me(),Q={key:0,class:"virtual-message-list-empty"},j=Se({__name:"VirtualMessageList",props:{messages:{},estimatedItemHeight:{default:180},overscan:{default:8},rowGap:{default:16},padding:{default:"20px"},topThreshold:{default:120}},emits:["scroll","topReach"],setup(o,{expose:X,emit:Z}){const m=o,z=Z,$=S(null),T=S(null),b=S(0),ee=S(0);let w=0,c=null,f=0,p=0,q=0,g=!1,i=null,F=0,d=null,u=null;const te=O(()=>m.messages.map(le)),ne=O(()=>Math.max(m.estimatedItemHeight,m.estimatedItemHeight*m.overscan));function le(e){return String(e.id)}function s(){return $.value?.querySelector(".virtual-message-list")??null}function a(){const e=s();e&&(b.value=e.scrollTop,ee.value=e.clientHeight)}function y(e=120){q=Date.now()+e}function re(){return Date.now()<q}function A(){w=0,c!=null&&(cancelAnimationFrame(c),c=null),f=0,p=0}function oe(){const e=b.value;a(),re()||(b.value-e<-1?g=!0:v(32)&&(g=!1),(g||!v(96))&&A()),z("scroll"),b.value<=m.topThreshold&&z("topReach")}function ie(e){e.deltaY<-1&&(g=!0,A())}function D(){a(),(Date.now()<w||v(64))&&L(2),d&&R(d.token,4)}function v(e=200){const t=s();return t?t.scrollHeight-t.scrollTop-t.clientHeight<e:!0}function se(e=200){return!g&&v(e)}function ae(e={}){const t=typeof e=="number"?e:e.frames??2,n=typeof e=="number"?400:e.keepAliveMs??400;g=!1,w=Date.now()+n,h(()=>{L(t)})}function ce(){const e=s();return y(),T.value?.scrollToBottom(),e?(e.scrollTop=Math.max(0,e.scrollHeight-e.clientHeight),a(),!0):!1}function L(e=1){if(f=Math.max(f,e),c!=null)return;const t=()=>{if(ce()?(p=0,f-=1):p+=1,f<=0&&Date.now()>=w){c=null,f=0,p=0;return}if(p>30){c=null,f=0,p=0;return}c=requestAnimationFrame(t)};c=requestAnimationFrame(t)}function ue(e,t){const n=s();if(!n)return null;const r=document.getElementById(t);if(r instanceof HTMLElement&&n.contains(r))return r;const l=document.getElementById(`message-${e}`);return l instanceof HTMLElement&&n.contains(l)?l:null}function me(e,t){const n=s();if(!n)return;const r=n.getBoundingClientRect(),l=e.getBoundingClientRect(),_=t==="center"?l.top+l.height/2-(r.top+r.height/2):l.top-r.top-24;Math.abs(_)>1&&(y(),n.scrollTop=Math.max(0,n.scrollTop+_)),a()}function V(e,t){y(),T.value?.scrollToItem(e,t),a()}function R(e,t=1){i!=null&&cancelAnimationFrame(i);const n=r=>{const l=d;if(!l||l.token!==e){i=null;return}const _=ue(l.messageId,l.anchorId);if(_?me(_,l.align):V(l.index,{align:l.align,offset:l.align==="start"?-24:0}),r<=1){i=null,d=null;return}i=requestAnimationFrame(()=>n(r-1))};i=requestAnimationFrame(()=>n(t))}function I(){F+=1,d=null,i!=null&&(cancelAnimationFrame(i),i=null)}function fe(e){const t=m.messages.findIndex(r=>String(r.id)===e);if(t<0)return;I();const n=F;d={token:n,index:t,messageId:e,anchorId:`message-${e}`,align:"center"},h(()=>{V(t,{align:"center"}),R(n,8)})}function ge(e,t){const n=m.messages.findIndex(l=>String(l.id)===e);if(n<0)return;I();const r=F;d={token:r,index:n,messageId:e,anchorId:t,align:"start"},h(()=>{V(n,{align:"start",offset:-24}),R(r,10)})}function de(){const e=s();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function _e(e){e&&h(()=>{const t=s();if(!t)return;const n=Math.max(0,t.scrollHeight-e.scrollHeight+e.scrollTop);y(),T.value?.scrollToPosition(n),t.scrollTop=n,a()})}function he(){const e=s();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight,wasNearBottom:v(64)}:null}function pe(e,t=4){e&&(A(),g=!e.wasNearBottom,u!=null&&cancelAnimationFrame(u),h(()=>{let n=t;const r=()=>{const l=s();if(!l){u=null;return}const _=Math.max(0,l.scrollHeight-l.clientHeight),N=Math.min(_,Math.max(0,e.scrollTop));if(y(),T.value?.scrollToPosition(N),l.scrollTop=N,a(),n-=1,n<=0){u=null;return}u=requestAnimationFrame(r)};u=requestAnimationFrame(r)}))}let P=null;return be(()=>{h(()=>{a();const e=s();e&&typeof ResizeObserver<"u"&&(P=new ResizeObserver(D),P.observe(e))})}),ye(()=>{A(),i!=null&&cancelAnimationFrame(i),u!=null&&cancelAnimationFrame(u),P?.disconnect()}),ve(te,()=>{I(),h(a)}),X({isNearBottom:v,shouldAutoFollowBottom:se,scrollToBottom:ae,scrollToMessage:fe,scrollToAnchor:ge,captureScrollPosition:de,restoreScrollPosition:_e,captureViewportPosition:he,restoreViewportPosition:pe}),(e,t)=>(K(),Y("div",{ref_key:"hostRef",ref:$,class:"virtual-message-list-host",style:Te({"--virtual-row-gap":`${o.rowGap}px`,"--virtual-list-padding":o.padding})},[G(C(we),{ref_key:"scrollerRef",ref:T,class:"virtual-message-list",items:o.messages,"key-field":"id","min-item-size":o.estimatedItemHeight,buffer:ne.value,"flow-mode":!0,prerender:o.overscan,onScrollPassive:oe,onWheelPassive:ie,onResize:D,onVisible:a},{before:x(()=>[o.messages.length>0?H(e.$slots,"before",{key:0},void 0,!0):M("",!0)]),default:x(({item:n,index:r,active:l})=>[G(C(xe),{item:n,index:r,active:l,class:"virtual-row"},{default:x(()=>[l?H(e.$slots,"item",{key:0,message:n},void 0,!0):M("",!0)]),_:2},1032,["item","index","active"])]),after:x(()=>[o.messages.length>0?H(e.$slots,"after",{key:0},void 0,!0):M("",!0)]),_:3},8,["items","min-item-size","buffer","prerender"]),o.messages.length===0&&e.$slots.empty?(K(),Y("div",Q,[H(e.$slots,"empty",{},void 0,!0)])):M("",!0)],4))}})})),Ve=B((()=>{})),Re,Ye=B((()=>{U(),U(),Ve(),He(),Re=Be(j,[["__scopeId","data-v-c2c35ff4"]])}));export{Ce as i,Ye as n,Oe as r,Re as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/LoginView-BYrZGFRC.js","assets/js/rolldown-runtime-M0oDzQ_3.js","assets/js/index-BHU-82RO.js","assets/js/ui-vendor-DNWaqYj5.js","assets/js/mermaid-CWQI515T.js","assets/js/vendor-B1Lfatlz.js","assets/css/vendor-DX3NCGtF.css","assets/js/vue-vendor-VX6KvV1_.js","assets/css/vue-vendor-WE_HbAyV.css","assets/js/system-vQTkarwT.js","assets/css/index-C56zktda.css","assets/css/LoginView-IIrJ_GoG.css","assets/js/ChatView-hdWG7dhS.js","assets/js/FileRenameModal-CdKXqr0a.js","assets/js/monaco-editor-YM0cdSGX.js","assets/css/monaco-editor-DPqmyJk4.css","assets/js/MarkdownRenderer-D-IgakCO.js","assets/js/clipboard-1NPxC3YL.js","assets/css/MarkdownRenderer-CX-Aroaj.css","assets/css/FileRenameModal-BX7mWp0s.css","assets/js/MessageItem-Be7fqF3P.js","assets/js/ttsHelpers-CVcFKmJR.js","assets/css/MessageItem-CpfQTn3M.css","assets/js/OutlinePanel-BSPx9YaI.js","assets/css/OutlinePanel-DFQWZ-vQ.css","assets/js/TerminalPanel-CqIASgSb.js","assets/js/xterm-CraVE7U3.js","assets/css/xterm-sLQPUA_C.css","assets/css/TerminalPanel-CcHVz_7H.css","assets/js/VirtualMessageList-B_teFrlt.js","assets/css/VirtualMessageList-CcNUGYX2.css","assets/js/session-browser-prefs-OR-qaA1z.js","assets/css/ChatView-gHIQ2LAY.css","assets/js/HistoryView-CdlRAUh5.js","assets/js/HistoryMessageList-B1ORl6-d.js","assets/css/HistoryMessageList-CclLeIKr.css","assets/css/HistoryView-Xczi6ZUK.css","assets/js/JobsView-BPZ4Wv0y.js","assets/css/JobsView-Cee7ajYc.css","assets/js/KanbanView-UHzayv3c.js","assets/css/KanbanView-CO7EQ2St.css","assets/js/ModelsView-XRIIk2f7.js","assets/js/models-BX7pr_Gd.js","assets/css/ModelsView-bY11vK7a.css","assets/js/ProfilesView-G_eYB34O.js","assets/css/ProfilesView-CoEv7kNy.css","assets/js/LogsView-CyfCeIeY.js","assets/css/LogsView-CMxhihg_.css","assets/js/UsageView-BhNclgOH.js","assets/css/UsageView-Bynio95y.css","assets/js/PerformanceView-m3deuRba.js","assets/css/PerformanceView-Dn2GtW7Y.css","assets/js/SkillsUsageView-fn3jivrH.js","assets/js/skills-fBzB8FGc.js","assets/css/SkillsUsageView-DI5G1isc.css","assets/js/SkillsView-CXDdZj7R.js","assets/css/SkillsView-BkR9Cpj7.css","assets/js/PluginsView-BBrFPfSn.js","assets/css/PluginsView-Ba01BGn6.css","assets/js/MemoryView-iYE-K13x.js","assets/css/MemoryView-D4KbI4DT.css","assets/js/SettingsView-DMOWr41T.js","assets/js/SettingRow-wqcLQ0FL.js","assets/css/SettingRow-BU_KTQ5j.css","assets/css/SettingsView-CcPUM1iS.css","assets/js/ChannelsView-BAbGxkKW.js","assets/css/ChannelsView-CNjHdgx7.css","assets/js/TerminalView-ycEOrgth.js","assets/css/TerminalView-k1bjf-Lu.css","assets/js/DevicesView-DEdHwkrV.js","assets/css/DevicesView-CiCqCSDe.css","assets/js/GroupChatView-DwL-zIjT.js","assets/css/GroupChatView-BKdY6pWY.css","assets/js/FilesView-C49jsfxy.js","assets/css/FilesView-DKhQkHBw.css","assets/js/CodingAgentsView-BB79rLb_.js","assets/css/CodingAgentsView-Cunkbjh-.css","assets/js/VersionPreviewView-DoG0hdD2.js","assets/css/VersionPreviewView-BZm7MZcY.css","assets/js/McpManagerView-DMbmKtiH.js","assets/css/McpManagerView-k-CYIs7F.css"])))=>i.map(i=>d[i]);
2
- import{n as p}from"./rolldown-runtime-M0oDzQ_3.js";import{d as A,f as I,u as P}from"./vue-vendor-VX6KvV1_.js";import{B as R,z as r}from"./mermaid-CWQI515T.js";function D(){return typeof window<"u"&&window.hermesDesktop?.isDesktop===!0}function g(){return D()?_:localStorage.getItem("hermes_server_url")||_}function h(){return localStorage.getItem("hermes_api_key")||""}function q(e){localStorage.setItem("hermes_api_key",e)}function f(){localStorage.removeItem("hermes_api_key")}function E(){return!!h()}function L(){const e=h().split(".")[1];if(!e)return null;try{const s=e.replace(/-/g,"+").replace(/_/g,"/"),t=s.padEnd(Math.ceil(s.length/4)*4,"="),n=JSON.parse(atob(t));return n.role==="super_admin"||n.role==="admin"?n.role:null}catch{return null}}function v(){return L()==="super_admin"}function O(){return localStorage.getItem("hermes_active_profile_name")}function T(e){if(typeof e!="string")return!1;try{const s=JSON.parse(e);return typeof s?.profile=="string"&&s.profile.trim().length>0}catch{return!1}}function y(e,s){try{const t=new URL(e,"http://hermes.local");if(t.searchParams.has("profile")||t.pathname.startsWith("/api/hermes/profiles")||d(t.pathname))return!1}catch{if(e.startsWith("/api/hermes/profiles")||d(e.split("?")[0]||e))return!1}return!T(s.body)}function d(e){return e==="/api/hermes/sessions"||e==="/api/hermes/sessions/batch-delete"||e==="/api/hermes/search/sessions"||e==="/api/hermes/sessions/search"||e==="/api/hermes/sessions/conversations"}function m(e){typeof window>"u"||window.dispatchEvent(new CustomEvent("hermes-auth-notice",{detail:{kind:e}}))}async function B(e,s={}){const t=`${g()}${e}`,n={"Content-Type":"application/json",...s.headers},a=h();a&&(n.Authorization=`Bearer ${a}`);const c=O();c&&y(e,s)&&(n["X-Hermes-Profile"]=c);const o=await fetch(t,{...s,headers:n}),l=!e.startsWith("/api/hermes/v1/")&&!e.startsWith("/v1/");if(o.status===401&&l)throw f(),m("expired"),i.currentRoute.value.name!=="login"&&i.replace({name:"login"}),new Error("Unauthorized");if(!o.ok){const u=await o.text().catch(()=>"");throw o.status===403&&l&&(u.includes("User is disabled or does not exist")?(f(),m("expired"),i.currentRoute.value.name!=="login"&&i.replace({name:"login"})):m("forbidden")),new Error(`API Error ${o.status}: ${u||o.statusText}`)}return o.json()}function W(){return g()}var _,V=p((()=>{S(),_=""})),i,S=p((()=>{I(),V(),R(),i=P({history:A(),routes:[{path:"/",name:"login",component:()=>r(()=>import("./LoginView-BYrZGFRC.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),meta:{public:!0}},{path:"/hermes/chat",name:"hermes.chat",component:()=>r(()=>import("./ChatView-hdWG7dhS.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))},{path:"/hermes/session/:sessionId",name:"hermes.session",component:()=>r(()=>import("./ChatView-hdWG7dhS.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))},{path:"/hermes/history",name:"hermes.history",component:()=>r(()=>import("./HistoryView-CdlRAUh5.js"),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,23,24,31,36]))},{path:"/hermes/history/session/:sessionId",name:"hermes.historySession",component:()=>r(()=>import("./HistoryView-CdlRAUh5.js"),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,23,24,31,36]))},{path:"/hermes/jobs",name:"hermes.jobs",component:()=>r(()=>import("./JobsView-BPZ4Wv0y.js"),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,10,16,17,18,38]))},{path:"/hermes/kanban",name:"hermes.kanban",component:()=>r(()=>import("./KanbanView-UHzayv3c.js"),__vite__mapDeps([39,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,40]))},{path:"/hermes/models",name:"hermes.models",component:()=>r(()=>import("./ModelsView-XRIIk2f7.js"),__vite__mapDeps([41,1,2,3,4,5,6,7,8,9,10,42,17,43]))},{path:"/hermes/profiles",name:"hermes.profiles",component:()=>r(()=>import("./ProfilesView-G_eYB34O.js"),__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,45])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/logs",name:"hermes.logs",component:()=>r(()=>import("./LogsView-CyfCeIeY.js"),__vite__mapDeps([46,1,3,4,7,5,6,8,47]))},{path:"/hermes/usage",name:"hermes.usage",component:()=>r(()=>import("./UsageView-BhNclgOH.js"),__vite__mapDeps([48,1,2,3,4,5,6,7,8,9,10,49]))},{path:"/hermes/performance",name:"hermes.performance",component:()=>r(()=>import("./PerformanceView-m3deuRba.js"),__vite__mapDeps([50,1,3,4,7,5,6,8,51])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/skills-usage",name:"hermes.skillsUsage",component:()=>r(()=>import("./SkillsUsageView-fn3jivrH.js"),__vite__mapDeps([52,1,2,3,4,5,6,7,8,9,10,53,54]))},{path:"/hermes/skills",name:"hermes.skills",component:()=>r(()=>import("./SkillsView-CXDdZj7R.js"),__vite__mapDeps([55,1,2,3,4,5,6,7,8,9,10,53,16,17,18,56]))},{path:"/hermes/plugins",name:"hermes.plugins",component:()=>r(()=>import("./PluginsView-BBrFPfSn.js"),__vite__mapDeps([57,1,2,3,4,5,6,7,8,9,10,58]))},{path:"/hermes/memory",name:"hermes.memory",component:()=>r(()=>import("./MemoryView-iYE-K13x.js"),__vite__mapDeps([59,1,2,3,4,5,6,7,8,9,10,53,16,17,18,60]))},{path:"/hermes/settings",name:"hermes.settings",component:()=>r(()=>import("./SettingsView-DMOWr41T.js"),__vite__mapDeps([61,1,2,3,4,5,6,7,8,9,10,21,62,63,42,31,64]))},{path:"/hermes/channels",name:"hermes.channels",component:()=>r(()=>import("./ChannelsView-BAbGxkKW.js"),__vite__mapDeps([65,1,2,3,4,5,6,7,8,9,10,62,63,66]))},{path:"/hermes/terminal",name:"hermes.terminal",component:()=>r(()=>import("./TerminalView-ycEOrgth.js"),__vite__mapDeps([67,1,3,4,26,27,7,5,6,8,68]))},{path:"/hermes/devices",name:"hermes.devices",component:()=>r(()=>import("./DevicesView-DEdHwkrV.js"),__vite__mapDeps([69,1,3,4,7,5,6,8,70]))},{path:"/hermes/group-chat",name:"hermes.groupChat",component:()=>r(()=>import("./GroupChatView-DwL-zIjT.js"),__vite__mapDeps([71,1,2,3,4,5,6,7,8,9,10,21,16,17,18,29,30,72]))},{path:"/hermes/group-chat/room/:roomId",name:"hermes.groupChatRoom",component:()=>r(()=>import("./GroupChatView-DwL-zIjT.js"),__vite__mapDeps([71,1,2,3,4,5,6,7,8,9,10,21,16,17,18,29,30,72]))},{path:"/hermes/files",name:"hermes.files",component:()=>r(()=>import("./FilesView-C49jsfxy.js"),__vite__mapDeps([73,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,74]))},{path:"/hermes/coding-agents",name:"hermes.codingAgents",component:()=>r(()=>import("./CodingAgentsView-BB79rLb_.js"),__vite__mapDeps([75,1,2,3,4,5,6,7,8,9,10,25,26,27,28,76]))},{path:"/hermes/version-preview",name:"hermes.versionPreview",component:()=>r(()=>import("./VersionPreviewView-DoG0hdD2.js"),__vite__mapDeps([77,1,3,4,7,5,6,8,9,78])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/mcp",name:"hermes.mcp",component:()=>r(()=>import("./McpManagerView-DMbmKtiH.js"),__vite__mapDeps([79,1,3,4,5,6,7,8,80])),meta:{requiresSuperAdmin:!0}}]}),i.beforeEach((e,s,t)=>{if(e.meta.public){if(e.name==="login"&&E()){t({path:"/hermes/chat"});return}t();return}if(!E()){t({name:"login"});return}if(e.meta.requiresSuperAdmin&&!v()){t({name:"hermes.chat"});return}t()})})),w,x=p((()=>{w=(e,s)=>{const t=e.__vccOpts||e;for(const[n,a]of s)t[n]=a;return t}}));export{O as a,E as c,B as d,q as f,i,V as l,x as n,h as o,S as r,W as s,w as t,v as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/LoginView-v4Lvgu2R.js","assets/js/rolldown-runtime-M0oDzQ_3.js","assets/js/index-DyLZQAQu.js","assets/js/ui-vendor-DNWaqYj5.js","assets/js/mermaid-CWQI515T.js","assets/js/vendor-B1Lfatlz.js","assets/css/vendor-DX3NCGtF.css","assets/js/vue-vendor-VX6KvV1_.js","assets/css/vue-vendor-WE_HbAyV.css","assets/js/system-Pg8JEuA6.js","assets/css/index-C56zktda.css","assets/css/LoginView-IIrJ_GoG.css","assets/js/ChatView-C-84i0a3.js","assets/js/FileRenameModal-DMqVjoLN.js","assets/js/monaco-editor-YM0cdSGX.js","assets/css/monaco-editor-DPqmyJk4.css","assets/js/MarkdownRenderer-2bwbBjlK.js","assets/js/clipboard-1NPxC3YL.js","assets/css/MarkdownRenderer-CX-Aroaj.css","assets/css/FileRenameModal-BX7mWp0s.css","assets/js/MessageItem-OSBjfS2l.js","assets/js/ttsHelpers-CVcFKmJR.js","assets/css/MessageItem-CpfQTn3M.css","assets/js/OutlinePanel-CN0TVZ0B.js","assets/css/OutlinePanel-DFQWZ-vQ.css","assets/js/TerminalPanel-C50X3--t.js","assets/js/xterm-CraVE7U3.js","assets/css/xterm-sLQPUA_C.css","assets/css/TerminalPanel-CcHVz_7H.css","assets/js/VirtualMessageList-D6BvQLbe.js","assets/css/VirtualMessageList-CcNUGYX2.css","assets/js/session-browser-prefs-kGpZZDQo.js","assets/css/ChatView-gHIQ2LAY.css","assets/js/HistoryView-qhTXEU5G.js","assets/js/HistoryMessageList-B3TsU-9g.js","assets/css/HistoryMessageList-CclLeIKr.css","assets/css/HistoryView-Xczi6ZUK.css","assets/js/JobsView-BszCmau_.js","assets/css/JobsView-Cee7ajYc.css","assets/js/KanbanView-BMa_FMqS.js","assets/css/KanbanView-CO7EQ2St.css","assets/js/ModelsView-DGPA2heM.js","assets/js/models-CjHxxDse.js","assets/css/ModelsView-bY11vK7a.css","assets/js/ProfilesView-CCPI-DaB.js","assets/css/ProfilesView-CoEv7kNy.css","assets/js/LogsView-CuwioOCX.js","assets/css/LogsView-CMxhihg_.css","assets/js/UsageView-CLUP9AqF.js","assets/css/UsageView-Bynio95y.css","assets/js/PerformanceView-0GmZ2GXR.js","assets/css/PerformanceView-Dn2GtW7Y.css","assets/js/SkillsUsageView-BJVHpo4D.js","assets/js/skills-CDjYTDMo.js","assets/css/SkillsUsageView-DI5G1isc.css","assets/js/SkillsView-vhxQVIz8.js","assets/css/SkillsView-BkR9Cpj7.css","assets/js/PluginsView-D6XEulKx.js","assets/css/PluginsView-Ba01BGn6.css","assets/js/MemoryView-rYoZbfMb.js","assets/css/MemoryView-D4KbI4DT.css","assets/js/SettingsView-BaZ_P8Wu.js","assets/js/SettingRow-B0WJ-Iqa.js","assets/css/SettingRow-BU_KTQ5j.css","assets/css/SettingsView-CcPUM1iS.css","assets/js/ChannelsView-BduiL1-M.js","assets/css/ChannelsView-CNjHdgx7.css","assets/js/TerminalView-1qIvfZKj.js","assets/css/TerminalView-k1bjf-Lu.css","assets/js/DevicesView-BwVqTyuH.js","assets/css/DevicesView-CiCqCSDe.css","assets/js/GroupChatView-BQqM5noE.js","assets/css/GroupChatView-BKdY6pWY.css","assets/js/FilesView-Ce30F1_8.js","assets/css/FilesView-DKhQkHBw.css","assets/js/CodingAgentsView-Cu5bfdCo.js","assets/css/CodingAgentsView-Cunkbjh-.css","assets/js/VersionPreviewView-C9I3ZH13.js","assets/css/VersionPreviewView-BZm7MZcY.css","assets/js/McpManagerView-BDJSjkHx.js","assets/css/McpManagerView-k-CYIs7F.css"])))=>i.map(i=>d[i]);
2
+ import{n as p}from"./rolldown-runtime-M0oDzQ_3.js";import{d as A,f as I,u as P}from"./vue-vendor-VX6KvV1_.js";import{B as R,z as r}from"./mermaid-CWQI515T.js";function D(){return typeof window<"u"&&window.hermesDesktop?.isDesktop===!0}function g(){return D()?_:localStorage.getItem("hermes_server_url")||_}function h(){return localStorage.getItem("hermes_api_key")||""}function q(e){localStorage.setItem("hermes_api_key",e)}function f(){localStorage.removeItem("hermes_api_key")}function E(){return!!h()}function L(){const e=h().split(".")[1];if(!e)return null;try{const s=e.replace(/-/g,"+").replace(/_/g,"/"),t=s.padEnd(Math.ceil(s.length/4)*4,"="),n=JSON.parse(atob(t));return n.role==="super_admin"||n.role==="admin"?n.role:null}catch{return null}}function v(){return L()==="super_admin"}function O(){return localStorage.getItem("hermes_active_profile_name")}function T(e){if(typeof e!="string")return!1;try{const s=JSON.parse(e);return typeof s?.profile=="string"&&s.profile.trim().length>0}catch{return!1}}function y(e,s){try{const t=new URL(e,"http://hermes.local");if(t.searchParams.has("profile")||t.pathname.startsWith("/api/hermes/profiles")||d(t.pathname))return!1}catch{if(e.startsWith("/api/hermes/profiles")||d(e.split("?")[0]||e))return!1}return!T(s.body)}function d(e){return e==="/api/hermes/sessions"||e==="/api/hermes/sessions/batch-delete"||e==="/api/hermes/search/sessions"||e==="/api/hermes/sessions/search"||e==="/api/hermes/sessions/conversations"}function m(e){typeof window>"u"||window.dispatchEvent(new CustomEvent("hermes-auth-notice",{detail:{kind:e}}))}async function B(e,s={}){const t=`${g()}${e}`,n={"Content-Type":"application/json",...s.headers},a=h();a&&(n.Authorization=`Bearer ${a}`);const c=O();c&&y(e,s)&&(n["X-Hermes-Profile"]=c);const o=await fetch(t,{...s,headers:n}),l=!e.startsWith("/api/hermes/v1/")&&!e.startsWith("/v1/");if(o.status===401&&l)throw f(),m("expired"),i.currentRoute.value.name!=="login"&&i.replace({name:"login"}),new Error("Unauthorized");if(!o.ok){const u=await o.text().catch(()=>"");throw o.status===403&&l&&(u.includes("User is disabled or does not exist")?(f(),m("expired"),i.currentRoute.value.name!=="login"&&i.replace({name:"login"})):m("forbidden")),new Error(`API Error ${o.status}: ${u||o.statusText}`)}return o.json()}function W(){return g()}var _,V=p((()=>{S(),_=""})),i,S=p((()=>{I(),V(),R(),i=P({history:A(),routes:[{path:"/",name:"login",component:()=>r(()=>import("./LoginView-v4Lvgu2R.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),meta:{public:!0}},{path:"/hermes/chat",name:"hermes.chat",component:()=>r(()=>import("./ChatView-C-84i0a3.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))},{path:"/hermes/session/:sessionId",name:"hermes.session",component:()=>r(()=>import("./ChatView-C-84i0a3.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))},{path:"/hermes/history",name:"hermes.history",component:()=>r(()=>import("./HistoryView-qhTXEU5G.js"),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,23,24,31,36]))},{path:"/hermes/history/session/:sessionId",name:"hermes.historySession",component:()=>r(()=>import("./HistoryView-qhTXEU5G.js"),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,23,24,31,36]))},{path:"/hermes/jobs",name:"hermes.jobs",component:()=>r(()=>import("./JobsView-BszCmau_.js"),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,10,16,17,18,38]))},{path:"/hermes/kanban",name:"hermes.kanban",component:()=>r(()=>import("./KanbanView-BMa_FMqS.js"),__vite__mapDeps([39,1,2,3,4,5,6,7,8,9,10,34,20,21,16,17,18,22,29,30,35,40]))},{path:"/hermes/models",name:"hermes.models",component:()=>r(()=>import("./ModelsView-DGPA2heM.js"),__vite__mapDeps([41,1,2,3,4,5,6,7,8,9,10,42,17,43]))},{path:"/hermes/profiles",name:"hermes.profiles",component:()=>r(()=>import("./ProfilesView-CCPI-DaB.js"),__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,45])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/logs",name:"hermes.logs",component:()=>r(()=>import("./LogsView-CuwioOCX.js"),__vite__mapDeps([46,1,3,4,7,5,6,8,47]))},{path:"/hermes/usage",name:"hermes.usage",component:()=>r(()=>import("./UsageView-CLUP9AqF.js"),__vite__mapDeps([48,1,2,3,4,5,6,7,8,9,10,49]))},{path:"/hermes/performance",name:"hermes.performance",component:()=>r(()=>import("./PerformanceView-0GmZ2GXR.js"),__vite__mapDeps([50,1,3,4,7,5,6,8,51])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/skills-usage",name:"hermes.skillsUsage",component:()=>r(()=>import("./SkillsUsageView-BJVHpo4D.js"),__vite__mapDeps([52,1,2,3,4,5,6,7,8,9,10,53,54]))},{path:"/hermes/skills",name:"hermes.skills",component:()=>r(()=>import("./SkillsView-vhxQVIz8.js"),__vite__mapDeps([55,1,2,3,4,5,6,7,8,9,10,53,16,17,18,56]))},{path:"/hermes/plugins",name:"hermes.plugins",component:()=>r(()=>import("./PluginsView-D6XEulKx.js"),__vite__mapDeps([57,1,2,3,4,5,6,7,8,9,10,58]))},{path:"/hermes/memory",name:"hermes.memory",component:()=>r(()=>import("./MemoryView-rYoZbfMb.js"),__vite__mapDeps([59,1,2,3,4,5,6,7,8,9,10,53,16,17,18,60]))},{path:"/hermes/settings",name:"hermes.settings",component:()=>r(()=>import("./SettingsView-BaZ_P8Wu.js"),__vite__mapDeps([61,1,2,3,4,5,6,7,8,9,10,21,62,63,42,31,64]))},{path:"/hermes/channels",name:"hermes.channels",component:()=>r(()=>import("./ChannelsView-BduiL1-M.js"),__vite__mapDeps([65,1,2,3,4,5,6,7,8,9,10,62,63,66]))},{path:"/hermes/terminal",name:"hermes.terminal",component:()=>r(()=>import("./TerminalView-1qIvfZKj.js"),__vite__mapDeps([67,1,3,4,26,27,7,5,6,8,68]))},{path:"/hermes/devices",name:"hermes.devices",component:()=>r(()=>import("./DevicesView-BwVqTyuH.js"),__vite__mapDeps([69,1,3,4,7,5,6,8,70]))},{path:"/hermes/group-chat",name:"hermes.groupChat",component:()=>r(()=>import("./GroupChatView-BQqM5noE.js"),__vite__mapDeps([71,1,2,3,4,5,6,7,8,9,10,21,16,17,18,29,30,72]))},{path:"/hermes/group-chat/room/:roomId",name:"hermes.groupChatRoom",component:()=>r(()=>import("./GroupChatView-BQqM5noE.js"),__vite__mapDeps([71,1,2,3,4,5,6,7,8,9,10,21,16,17,18,29,30,72]))},{path:"/hermes/files",name:"hermes.files",component:()=>r(()=>import("./FilesView-Ce30F1_8.js"),__vite__mapDeps([73,1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,74]))},{path:"/hermes/coding-agents",name:"hermes.codingAgents",component:()=>r(()=>import("./CodingAgentsView-Cu5bfdCo.js"),__vite__mapDeps([75,1,2,3,4,5,6,7,8,9,10,25,26,27,28,76]))},{path:"/hermes/version-preview",name:"hermes.versionPreview",component:()=>r(()=>import("./VersionPreviewView-C9I3ZH13.js"),__vite__mapDeps([77,1,3,4,7,5,6,8,9,78])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/mcp",name:"hermes.mcp",component:()=>r(()=>import("./McpManagerView-BDJSjkHx.js"),__vite__mapDeps([79,1,3,4,5,6,7,8,80])),meta:{requiresSuperAdmin:!0}}]}),i.beforeEach((e,s,t)=>{if(e.meta.public){if(e.name==="login"&&E()){t({path:"/hermes/chat"});return}t();return}if(!E()){t({name:"login"});return}if(e.meta.requiresSuperAdmin&&!v()){t({name:"hermes.chat"});return}t()})})),w,x=p((()=>{w=(e,s)=>{const t=e.__vccOpts||e;for(const[n,a]of s)t[n]=a;return t}}));export{O as a,E as c,B as d,q as f,i,V as l,x as n,h as o,S as r,W as s,w as t,v as u};