hermes-web-ui 0.1.2 → 0.1.3

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 (49) hide show
  1. package/README.md +117 -408
  2. package/bin/hermes-web-ui.mjs +111 -97
  3. package/dist/assets/{ChatView-WnNeYrS7.js → ChatView-BBqtEbUW.js} +20 -20
  4. package/dist/assets/ChatView-DC6_7Uwg.css +1 -0
  5. package/dist/assets/JobsView-sQ8sqrxF.js +356 -0
  6. package/dist/assets/LogsView-BN_TkDPi.css +1 -0
  7. package/dist/assets/LogsView-DukKyFJt.js +1 -0
  8. package/dist/assets/Modal-oIDM0xXN.js +232 -0
  9. package/dist/assets/Spin-zWt--szS.js +476 -0
  10. package/dist/assets/Tooltip-BGvPCNBt.js +1 -0
  11. package/dist/assets/Warning-B9_T2nKK.js +1 -0
  12. package/dist/assets/_plugin-vue_export-helper-V8xgnEJh.js +231 -0
  13. package/dist/assets/chat-CGF6ipPC.js +5 -0
  14. package/dist/assets/fade-in-scale-up.cssr-DQYNrBys.js +45 -0
  15. package/dist/assets/index-BsLYVWlc.js +307 -0
  16. package/dist/assets/index-DDAe8BhJ.css +1 -0
  17. package/dist/assets/{jobs-Cuol6Mqb.js → jobs-QHXENDTQ.js} +1 -1
  18. package/dist/assets/use-message-42wmA96q.js +117 -0
  19. package/dist/index.html +8 -6
  20. package/dist/server/config.d.ts +7 -0
  21. package/dist/server/config.js +12 -0
  22. package/dist/server/index.d.ts +1 -0
  23. package/dist/server/index.js +154 -0
  24. package/dist/server/routes/logs.d.ts +2 -0
  25. package/dist/server/routes/logs.js +87 -0
  26. package/dist/server/routes/proxy-handler.d.ts +2 -0
  27. package/dist/server/routes/proxy-handler.js +82 -0
  28. package/dist/server/routes/proxy.d.ts +2 -0
  29. package/dist/server/routes/proxy.js +12 -0
  30. package/dist/server/routes/sessions.d.ts +2 -0
  31. package/dist/server/routes/sessions.js +69 -0
  32. package/dist/server/routes/upload.d.ts +2 -0
  33. package/dist/server/routes/upload.js +50 -0
  34. package/dist/server/routes/webhook.d.ts +2 -0
  35. package/dist/server/routes/webhook.js +33 -0
  36. package/dist/server/services/hermes-cli.d.ts +50 -0
  37. package/dist/server/services/hermes-cli.js +185 -0
  38. package/dist/server/services/hermes.d.ts +40 -0
  39. package/dist/server/services/hermes.js +118 -0
  40. package/package.json +19 -4
  41. package/dist/assets/ChatView-DrzZz5ex.css +0 -1
  42. package/dist/assets/JobsView-BF9wWdwU.js +0 -831
  43. package/dist/assets/Modal-CQVLL_Oc.js +0 -276
  44. package/dist/assets/_plugin-vue_export-helper-D5N3Hfca.js +0 -231
  45. package/dist/assets/chat-640V6r6N.js +0 -1
  46. package/dist/assets/index-4iFlrAYJ.js +0 -307
  47. package/dist/assets/index-CMJKLUKk.css +0 -1
  48. package/dist/assets/use-message-B8ClBznx.js +0 -117
  49. /package/dist/assets/{client-BxIiwrqC.js → client-ZYGCrm9m.js} +0 -0
@@ -0,0 +1,117 @@
1
+ import{$t as e,A as t,B as n,Bn as r,Cn as i,Ct as a,D as o,Dn as s,Dt as c,E as l,En as u,F as d,Ft as f,G as p,H as m,I as h,In as g,It as _,J as v,Jt as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as ee,Nn as E,Nt as te,O as D,On as ne,Ot as re,P as ie,Q as ae,Qn as O,Qt as oe,R as se,Rt as k,Sn as A,St as ce,Tt as le,U as j,Un as M,V as ue,Vn as de,W as fe,X as pe,Xt as me,Y as he,Yt as N,Z as ge,Zt as _e,_t as ve,an as ye,b as be,bt as xe,cn as Se,d as Ce,dt as we,fn as Te,j as Ee,jn as P,jt as De,k as Oe,l as ke,lt as Ae,mn as F,mt as je,n as Me,nr as I,nt as Ne,ot as Pe,pn as Fe,pt as L,q as Ie,rn as Le,rt as Re,tt as ze,u as Be,un as Ve,ut as He,w as Ue,wn as R,wt as We,x as Ge,xt as Ke,z as qe}from"./_plugin-vue_export-helper-V8xgnEJh.js";var z=[],Je=new WeakMap;function Ye(){z.forEach(e=>e(...Je.get(e))),z=[]}function Xe(e,...t){Je.set(e,t),!z.includes(e)&&z.push(e)===1&&requestAnimationFrame(Ye)}var Ze=f?document?.fonts?.ready:void 0,B=!1;Ze===void 0?B=!0:Ze.then(()=>{B=!0});function Qe(e){if(B)return;let t=!1;E(()=>{B||Ze?.then(()=>{t||e()})}),P(()=>{t=!0})}function $e(e,t){return r(e,e=>{e!==void 0&&(t.value=e)}),F(()=>e.value===void 0?t.value:e.value)}function et(e,t){return F(()=>{for(let n of t)if(e[n]!==void 0)return e[n];return e[t[t.length-1]]})}var tt=T(`n-internal-select-menu`),nt=T(`n-internal-select-menu-body`),rt=`__disabled__`;function V(e){let t=u(re,null),n=u(De,null),r=u(c,null),i=u(nt,null),a=O();if(typeof document<`u`){a.value=document.fullscreenElement;let e=()=>{a.value=document.fullscreenElement};E(()=>{k(`fullscreenchange`,document,e)}),P(()=>{C(`fullscreenchange`,document,e)})}return _(()=>{let{to:o}=e;return o===void 0?t?.value?t.value.$el??t.value:n?.value?n.value:r?.value?r.value:i?.value?i.value:o??(a.value||`body`):o===!1?rt:o===!0?a.value||`body`:o})}V.tdkey=rt,V.propTo={type:[String,Object,Boolean],default:void 0};var H=null;function it(){if(H===null&&(H=document.getElementById(`v-binder-view-measurer`),H===null)){H=document.createElement(`div`),H.id=`v-binder-view-measurer`;let{style:e}=H;e.position=`fixed`,e.left=`0`,e.right=`0`,e.top=`0`,e.bottom=`0`,e.pointerEvents=`none`,e.visibility=`hidden`,document.body.appendChild(H)}return H.getBoundingClientRect()}function at(e,t){let n=it();return{top:t,left:e,height:0,width:0,right:n.width-e,bottom:n.height-t}}function ot(e){let t=e.getBoundingClientRect(),n=it();return{left:t.left-n.left,top:t.top-n.top,bottom:n.height+n.top-t.bottom,right:n.width+n.left-t.right,width:t.width,height:t.height}}function st(e){return e.nodeType===9?null:e.parentNode}function ct(e){if(e===null)return null;let t=st(e);if(t===null)return null;if(t.nodeType===9)return document;if(t.nodeType===1){let{overflow:e,overflowX:n,overflowY:r}=getComputedStyle(t);if(/(auto|scroll|overlay)/.test(e+r+n))return t}return ct(t)}var lt=A({name:`Binder`,props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){g(`VBinder`,i()?.proxy);let t=u(`VBinder`,null),n=O(null),r=r=>{n.value=r,t&&e.syncTargetWithParent&&t.setTargetRef(r)},a=[],o=()=>{let e=n.value;for(;e=ct(e),e!==null;)a.push(e);for(let e of a)k(`scroll`,e,f,!0)},s=()=>{for(let e of a)C(`scroll`,e,f,!0);a=[]},c=new Set,l=e=>{c.size===0&&o(),c.has(e)||c.add(e)},d=e=>{c.has(e)&&c.delete(e),c.size===0&&s()},f=()=>{Xe(p)},p=()=>{c.forEach(e=>e())},m=new Set,h=e=>{m.size===0&&k(`resize`,window,v),m.has(e)||m.add(e)},_=e=>{m.has(e)&&m.delete(e),m.size===0&&C(`resize`,window,v)},v=()=>{m.forEach(e=>e())};return P(()=>{C(`resize`,window,v),s()}),{targetRef:n,setTargetRef:r,addScrollListener:l,removeScrollListener:d,addResizeListener:h,removeResizeListener:_}},render(){return le(`binder`,this.$slots)}}),ut=A({name:`Target`,setup(){let{setTargetRef:e,syncTarget:t}=u(`VBinder`);return{syncTarget:t,setTargetDirective:{mounted:e,updated:e}}},render(){let{syncTarget:e,setTargetDirective:t}=this;return e?M(We(`follower`,this.$slots),[[t]]):We(`follower`,this.$slots)}}),U=`@@mmoContext`,dt={mounted(e,{value:t}){e[U]={handler:void 0},typeof t==`function`&&(e[U].handler=t,k(`mousemoveoutside`,e,t))},updated(e,{value:t}){let n=e[U];typeof t==`function`?n.handler?n.handler!==t&&(C(`mousemoveoutside`,e,n.handler),n.handler=t,k(`mousemoveoutside`,e,t)):(e[U].handler=t,k(`mousemoveoutside`,e,t)):n.handler&&=(C(`mousemoveoutside`,e,n.handler),void 0)},unmounted(e){let{handler:t}=e[U];t&&C(`mousemoveoutside`,e,t),e[U].handler=void 0}},{c:W}=Le(),ft=`vueuc-style`,G={top:`bottom`,bottom:`top`,left:`right`,right:`left`},pt={start:`end`,center:`center`,end:`start`},mt={top:`height`,bottom:`height`,left:`width`,right:`width`},ht={"bottom-start":`top left`,bottom:`top center`,"bottom-end":`top right`,"top-start":`bottom left`,top:`bottom center`,"top-end":`bottom right`,"right-start":`top left`,right:`center left`,"right-end":`bottom left`,"left-start":`top right`,left:`center right`,"left-end":`bottom right`},gt={"bottom-start":`bottom left`,bottom:`bottom center`,"bottom-end":`bottom right`,"top-start":`top left`,top:`top center`,"top-end":`top right`,"right-start":`top right`,right:`center right`,"right-end":`bottom right`,"left-start":`top left`,left:`center left`,"left-end":`bottom left`},_t={"bottom-start":`right`,"bottom-end":`left`,"top-start":`right`,"top-end":`left`,"right-start":`bottom`,"right-end":`top`,"left-start":`bottom`,"left-end":`top`},vt={top:!0,bottom:!1,left:!0,right:!1},yt={top:`end`,bottom:`start`,left:`end`,right:`start`};function bt(e,t,n,r,i,a){if(!i||a)return{placement:e,top:0,left:0};let[o,s]=e.split(`-`),c=s??`center`,l={top:0,left:0},u=(e,i,a)=>{let o=0,s=0,c=n[e]-t[i]-t[e];return c>0&&r&&(a?s=vt[i]?c:-c:o=vt[i]?c:-c),{left:o,top:s}},d=o===`left`||o===`right`;if(c!==`center`){let r=_t[e],i=G[r],a=mt[r];if(n[a]>t[a]){if(t[r]+t[a]<n[a]){let e=(n[a]-t[a])/2;t[r]<e||t[i]<e?t[r]<t[i]?(c=pt[s],l=u(a,i,d)):l=u(a,r,d):c=`center`}}else n[a]<t[a]&&t[i]<0&&t[r]>t[i]&&(c=pt[s])}else{let e=o===`bottom`||o===`top`?`left`:`top`,r=G[e],i=mt[e],a=(n[i]-t[i])/2;(t[e]<a||t[r]<a)&&(t[e]>t[r]?(c=yt[e],l=u(i,e,d)):(c=yt[r],l=u(i,r,d)))}let f=o;return t[o]<n[mt[o]]&&t[o]<t[G[o]]&&(f=G[o]),{placement:c===`center`?f:`${f}-${c}`,left:l.left,top:l.top}}function xt(e,t){return t?gt[e]:ht[e]}function St(e,t,n,r,i,a){if(a)switch(e){case`bottom-start`:return{top:`${Math.round(n.top-t.top+n.height)}px`,left:`${Math.round(n.left-t.left)}px`,transform:`translateY(-100%)`};case`bottom-end`:return{top:`${Math.round(n.top-t.top+n.height)}px`,left:`${Math.round(n.left-t.left+n.width)}px`,transform:`translateX(-100%) translateY(-100%)`};case`top-start`:return{top:`${Math.round(n.top-t.top)}px`,left:`${Math.round(n.left-t.left)}px`,transform:``};case`top-end`:return{top:`${Math.round(n.top-t.top)}px`,left:`${Math.round(n.left-t.left+n.width)}px`,transform:`translateX(-100%)`};case`right-start`:return{top:`${Math.round(n.top-t.top)}px`,left:`${Math.round(n.left-t.left+n.width)}px`,transform:`translateX(-100%)`};case`right-end`:return{top:`${Math.round(n.top-t.top+n.height)}px`,left:`${Math.round(n.left-t.left+n.width)}px`,transform:`translateX(-100%) translateY(-100%)`};case`left-start`:return{top:`${Math.round(n.top-t.top)}px`,left:`${Math.round(n.left-t.left)}px`,transform:``};case`left-end`:return{top:`${Math.round(n.top-t.top+n.height)}px`,left:`${Math.round(n.left-t.left)}px`,transform:`translateY(-100%)`};case`top`:return{top:`${Math.round(n.top-t.top)}px`,left:`${Math.round(n.left-t.left+n.width/2)}px`,transform:`translateX(-50%)`};case`right`:return{top:`${Math.round(n.top-t.top+n.height/2)}px`,left:`${Math.round(n.left-t.left+n.width)}px`,transform:`translateX(-100%) translateY(-50%)`};case`left`:return{top:`${Math.round(n.top-t.top+n.height/2)}px`,left:`${Math.round(n.left-t.left)}px`,transform:`translateY(-50%)`};default:return{top:`${Math.round(n.top-t.top+n.height)}px`,left:`${Math.round(n.left-t.left+n.width/2)}px`,transform:`translateX(-50%) translateY(-100%)`}}switch(e){case`bottom-start`:return{top:`${Math.round(n.top-t.top+n.height+r)}px`,left:`${Math.round(n.left-t.left+i)}px`,transform:``};case`bottom-end`:return{top:`${Math.round(n.top-t.top+n.height+r)}px`,left:`${Math.round(n.left-t.left+n.width+i)}px`,transform:`translateX(-100%)`};case`top-start`:return{top:`${Math.round(n.top-t.top+r)}px`,left:`${Math.round(n.left-t.left+i)}px`,transform:`translateY(-100%)`};case`top-end`:return{top:`${Math.round(n.top-t.top+r)}px`,left:`${Math.round(n.left-t.left+n.width+i)}px`,transform:`translateX(-100%) translateY(-100%)`};case`right-start`:return{top:`${Math.round(n.top-t.top+r)}px`,left:`${Math.round(n.left-t.left+n.width+i)}px`,transform:``};case`right-end`:return{top:`${Math.round(n.top-t.top+n.height+r)}px`,left:`${Math.round(n.left-t.left+n.width+i)}px`,transform:`translateY(-100%)`};case`left-start`:return{top:`${Math.round(n.top-t.top+r)}px`,left:`${Math.round(n.left-t.left+i)}px`,transform:`translateX(-100%)`};case`left-end`:return{top:`${Math.round(n.top-t.top+n.height+r)}px`,left:`${Math.round(n.left-t.left+i)}px`,transform:`translateX(-100%) translateY(-100%)`};case`top`:return{top:`${Math.round(n.top-t.top+r)}px`,left:`${Math.round(n.left-t.left+n.width/2+i)}px`,transform:`translateY(-100%) translateX(-50%)`};case`right`:return{top:`${Math.round(n.top-t.top+n.height/2+r)}px`,left:`${Math.round(n.left-t.left+n.width+i)}px`,transform:`translateY(-50%)`};case`left`:return{top:`${Math.round(n.top-t.top+n.height/2+r)}px`,left:`${Math.round(n.left-t.left+i)}px`,transform:`translateY(-50%) translateX(-100%)`};default:return{top:`${Math.round(n.top-t.top+n.height+r)}px`,left:`${Math.round(n.left-t.left+n.width/2+i)}px`,transform:`translateX(-50%)`}}}var Ct=W([W(`.v-binder-follower-container`,{position:`absolute`,left:`0`,right:`0`,top:`0`,height:`0`,pointerEvents:`none`,zIndex:`auto`}),W(`.v-binder-follower-content`,{position:`absolute`,zIndex:`auto`},[W(`> *`,{pointerEvents:`all`})])]),wt=A({name:`Follower`,inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:`bottom`},syncTrigger:{type:Array,default:[`resize`,`scroll`]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){let t=u(`VBinder`),n=_(()=>e.enabled===void 0?e.show:e.enabled),i=O(null),a=O(null),o=()=>{let{syncTrigger:n}=e;n.includes(`scroll`)&&t.addScrollListener(l),n.includes(`resize`)&&t.addResizeListener(l)},s=()=>{t.removeScrollListener(l),t.removeResizeListener(l)};E(()=>{n.value&&(l(),o())});let c=Ke();Ct.mount({id:`vueuc/binder`,head:!0,anchorMetaName:ft,ssr:c}),P(()=>{s()}),Qe(()=>{n.value&&l()});let l=()=>{if(!n.value)return;let r=i.value;if(r===null)return;let o=t.targetRef,{x:s,y:c,overlap:l}=e,u=s!==void 0&&c!==void 0?at(s,c):ot(o);r.style.setProperty(`--v-target-width`,`${Math.round(u.width)}px`),r.style.setProperty(`--v-target-height`,`${Math.round(u.height)}px`);let{width:d,minWidth:f,placement:p,internalShift:m,flip:h}=e;r.setAttribute(`v-placement`,p),l?r.setAttribute(`v-overlap`,``):r.removeAttribute(`v-overlap`);let{style:g}=r;d===`target`?g.width=`${u.width}px`:d===void 0?g.width=``:g.width=d,f===`target`?g.minWidth=`${u.width}px`:f===void 0?g.minWidth=``:g.minWidth=f;let _=ot(r),v=ot(a.value),{left:y,top:b,placement:x}=bt(p,u,_,m,h,l),S=xt(x,l),{left:C,top:w,transform:T}=St(x,v,u,b,y,l);r.setAttribute(`v-placement`,x),r.style.setProperty(`--v-offset-left`,`${Math.round(y)}px`),r.style.setProperty(`--v-offset-top`,`${Math.round(b)}px`),r.style.transform=`translateX(${C}) translateY(${w}) ${T}`,r.style.setProperty(`--v-transform-origin`,S),r.style.transformOrigin=S};r(n,e=>{e?(o(),d()):s()});let d=()=>{ne().then(l).catch(e=>console.error(e))};[`placement`,`x`,`y`,`internalShift`,`flip`,`width`,`overlap`,`minWidth`].forEach(t=>{r(I(e,t),l)}),[`teleportDisabled`].forEach(t=>{r(I(e,t),d)}),r(I(e,`syncTrigger`),e=>{e.includes(`resize`)?t.addResizeListener(l):t.removeResizeListener(l),e.includes(`scroll`)?t.addScrollListener(l):t.removeScrollListener(l)});let f=te();return{VBinder:t,mergedEnabled:n,offsetContainerRef:a,followerRef:i,mergedTo:_(()=>{let{to:t}=e;if(t!==void 0)return t;f.value}),syncPosition:l}},render(){return R(xe,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e;let t=R(`div`,{class:[`v-binder-follower-container`,this.containerClass],ref:`offsetContainerRef`},[R(`div`,{class:`v-binder-follower-content`,ref:`followerRef`},(e=this.$slots).default?.call(e))]);return this.zindexable?M(t,[[ce,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):t}})}}),Tt=/^(\d|\.)+$/,Et=/(\d|\.)+/;function K(e,{c:t=1,offset:n=0,attachPx:r=!0}={}){if(typeof e==`number`){let r=(e+n)*t;return r===0?`0`:`${r}px`}else if(typeof e==`string`)if(Tt.test(e)){let i=(Number(e)+n)*t;return r?i===0?`0`:`${i}px`:`${i}`}else{let r=Et.exec(e);return r?e.replace(Et,String((Number(r[0])+n)*t)):e}return e}var Dt;function Ot(){return Dt===void 0&&(Dt=navigator.userAgent.includes(`Node.js`)||navigator.userAgent.includes(`jsdom`)),Dt}var kt={name:`en-US`,global:{undo:`Undo`,redo:`Redo`,confirm:`Confirm`,clear:`Clear`},Popconfirm:{positiveText:`Confirm`,negativeText:`Cancel`},Cascader:{placeholder:`Please Select`,loading:`Loading`,loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:`yyyy-MM-dd`,dateTimeFormat:`yyyy-MM-dd HH:mm:ss`},DatePicker:{yearFormat:`yyyy`,monthFormat:`MMM`,dayFormat:`eeeeee`,yearTypeFormat:`yyyy`,monthTypeFormat:`yyyy-MM`,dateFormat:`yyyy-MM-dd`,dateTimeFormat:`yyyy-MM-dd HH:mm:ss`,quarterFormat:`yyyy-qqq`,weekFormat:`YYYY-w`,clear:`Clear`,now:`Now`,confirm:`Confirm`,selectTime:`Select Time`,selectDate:`Select Date`,datePlaceholder:`Select Date`,datetimePlaceholder:`Select Date and Time`,monthPlaceholder:`Select Month`,yearPlaceholder:`Select Year`,quarterPlaceholder:`Select Quarter`,weekPlaceholder:`Select Week`,startDatePlaceholder:`Start Date`,endDatePlaceholder:`End Date`,startDatetimePlaceholder:`Start Date and Time`,endDatetimePlaceholder:`End Date and Time`,startMonthPlaceholder:`Start Month`,endMonthPlaceholder:`End Month`,monthBeforeYear:!0,firstDayOfWeek:6,today:`Today`},DataTable:{checkTableAll:`Select all in the table`,uncheckTableAll:`Unselect all in the table`,confirm:`Confirm`,clear:`Clear`},LegacyTransfer:{sourceTitle:`Source`,targetTitle:`Target`},Transfer:{selectAll:`Select all`,unselectAll:`Unselect all`,clearAll:`Clear`,total:e=>`Total ${e} items`,selected:e=>`${e} items selected`},Empty:{description:`No Data`},Select:{placeholder:`Please Select`},TimePicker:{placeholder:`Select Time`,positiveText:`OK`,negativeText:`Cancel`,now:`Now`,clear:`Clear`},Pagination:{goto:`Goto`,selectionSuffix:`page`},DynamicTags:{add:`Add`},Log:{loading:`Loading`},Input:{placeholder:`Please Input`},InputNumber:{placeholder:`Please Input`},DynamicInput:{create:`Create`},ThemeEditor:{title:`Theme Editor`,clearAllVars:`Clear All Variables`,clearSearch:`Clear Search`,filterCompName:`Filter Component Name`,filterVarName:`Filter Variable Name`,import:`Import`,export:`Export`,restore:`Reset to Default`},Image:{tipPrevious:`Previous picture (←)`,tipNext:`Next picture (→)`,tipCounterclockwise:`Counterclockwise`,tipClockwise:`Clockwise`,tipZoomOut:`Zoom out`,tipZoomIn:`Zoom in`,tipDownload:`Download`,tipClose:`Close (Esc)`,tipOriginalSize:`Zoom to original size`},Heatmap:{less:`less`,more:`more`,monthFormat:`MMM`,weekdayFormat:`eee`}};function At(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function q(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}function J(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?Mt(s,e=>e.test(o)):jt(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function jt(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Mt(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function Nt(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var Pt={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},Ft=(e,t,n)=>{let r,i=Pt[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r},It={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Lt=(e,t,n,r)=>It[e],Rt={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:q({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:q({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:q({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:q({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:q({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})},zt={ordinalNumber:Nt({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:J({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:J({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:J({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:J({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:J({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},Bt={name:`en-US`,locale:{code:`en-US`,formatDistance:Ft,formatLong:{date:At({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:At({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:At({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},formatRelative:Lt,localize:Rt,match:zt,options:{weekStartsOn:0,firstWeekContainsDate:1}}},Vt=m(ae,`WeakMap`),Ht=w(Object.keys,Object),Ut=Object.prototype.hasOwnProperty;function Wt(e){if(!S(e))return Ht(e);var t=[];for(var n in Object(e))Ut.call(e,n)&&n!=`constructor`&&t.push(n);return t}function Gt(e){return se(e)?ee(e):Wt(e)}var Kt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,qt=/^\w*$/;function Jt(e,t){if(b(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||v(e)?!0:qt.test(e)||!Kt.test(e)||t!=null&&e in Object(t)}var Yt=`Expected a function`;function Xt(e,n){if(typeof e!=`function`||n!=null&&typeof n!=`function`)throw TypeError(Yt);var r=function(){var t=arguments,i=n?n.apply(this,t):t[0],a=r.cache;if(a.has(i))return a.get(i);var o=e.apply(this,t);return r.cache=a.set(i,o)||a,o};return r.cache=new(Xt.Cache||t),r}Xt.Cache=t;var Zt=500;function Qt(e){var t=Xt(e,function(e){return n.size===Zt&&n.clear(),e}),n=t.cache;return t}var $t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,en=/\\(\\)?/g,tn=Qt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace($t,function(e,n,r,i){t.push(r?i.replace(en,`$1`):n||e)}),t});function nn(e,t){return b(e)?e:Jt(e,t)?[e]:tn(Oe(e))}var rn=1/0;function Y(e){if(typeof e==`string`||v(e))return e;var t=e+``;return t==`0`&&1/e==-rn?`-0`:t}function an(e,t){t=nn(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Y(t[n++])];return n&&n==r?e:void 0}function on(e,t,n){var r=e==null?void 0:an(e,t);return r===void 0?n:r}function sn(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}function cn(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function ln(){return[]}var un=Object.prototype.propertyIsEnumerable,dn=Object.getOwnPropertySymbols,fn=dn?function(e){return e==null?[]:(e=Object(e),cn(dn(e),function(t){return un.call(e,t)}))}:ln;function pn(e,t,n){var r=t(e);return b(e)?r:sn(r,n(e))}function mn(e){return pn(e,Gt,fn)}var hn=m(ae,`DataView`),gn=m(ae,`Promise`),_n=m(ae,`Set`),vn=`[object Map]`,yn=`[object Object]`,bn=`[object Promise]`,xn=`[object Set]`,Sn=`[object WeakMap]`,Cn=`[object DataView]`,wn=j(hn),Tn=j(Ee),En=j(gn),Dn=j(_n),On=j(Vt),X=pe;(hn&&X(new hn(new ArrayBuffer(1)))!=Cn||Ee&&X(new Ee)!=vn||gn&&X(gn.resolve())!=bn||_n&&X(new _n)!=xn||Vt&&X(new Vt)!=Sn)&&(X=function(e){var t=pe(e),n=t==yn?e.constructor:void 0,r=n?j(n):``;if(r)switch(r){case wn:return Cn;case Tn:return vn;case En:return bn;case Dn:return xn;case On:return Sn}return t});var kn=X,An=`__lodash_hash_undefined__`;function jn(e){return this.__data__.set(e,An),this}function Mn(e){return this.__data__.has(e)}function Nn(e){var n=-1,r=e==null?0:e.length;for(this.__data__=new t;++n<r;)this.add(e[n])}Nn.prototype.add=Nn.prototype.push=jn,Nn.prototype.has=Mn;function Pn(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function Fn(e,t){return e.has(t)}var In=1,Ln=2;function Rn(e,t,n,r,i,a){var o=n&In,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&Ln?new Nn:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var g=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(g!==void 0){if(g)continue;f=!1;break}if(p){if(!Pn(t,function(e,t){if(!Fn(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}function zn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function Bn(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var Vn=1,Hn=2,Un=`[object Boolean]`,Wn=`[object Date]`,Gn=`[object Error]`,Kn=`[object Map]`,qn=`[object Number]`,Jn=`[object RegExp]`,Yn=`[object Set]`,Xn=`[object String]`,Zn=`[object Symbol]`,Qn=`[object ArrayBuffer]`,$n=`[object DataView]`,er=ge?ge.prototype:void 0,tr=er?er.valueOf:void 0;function nr(e,t,r,i,a,s,c){switch(r){case $n:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Qn:return!(e.byteLength!=t.byteLength||!s(new o(e),new o(t)));case Un:case Wn:case qn:return n(+e,+t);case Gn:return e.name==t.name&&e.message==t.message;case Jn:case Xn:return e==t+``;case Kn:var l=zn;case Yn:var u=i&Vn;if(l||=Bn,e.size!=t.size&&!u)return!1;var d=c.get(e);if(d)return d==t;i|=Hn,c.set(e,t);var f=Rn(l(e),l(t),i,a,s,c);return c.delete(e),f;case Zn:if(tr)return tr.call(e)==tr.call(t)}return!1}var rr=1,ir=Object.prototype.hasOwnProperty;function ar(e,t,n,r,i,a){var o=n&rr,s=mn(e),c=s.length;if(c!=mn(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:ir.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],g=t[u];if(r)var _=o?r(g,h,u,t,e,a):r(h,g,u,e,t,a);if(!(_===void 0?h===g||i(h,g,n,r,a):_)){p=!1;break}m||=u==`constructor`}if(p&&!m){var v=e.constructor,y=t.constructor;v!=y&&`constructor`in e&&`constructor`in t&&!(typeof v==`function`&&v instanceof v&&typeof y==`function`&&y instanceof y)&&(p=!1)}return a.delete(e),a.delete(t),p}var or=1,sr=`[object Arguments]`,cr=`[object Array]`,lr=`[object Object]`,ur=Object.prototype.hasOwnProperty;function dr(e,t,n,r,i,a){var o=b(e),s=b(t),c=o?cr:kn(e),l=s?cr:kn(t);c=c==sr?lr:c,l=l==sr?lr:l;var u=c==lr,f=l==lr,p=c==l;if(p&&d(e)){if(!d(t))return!1;o=!0,u=!1}if(p&&!u)return a||=new D,o||ie(e)?Rn(e,t,n,r,i,a):nr(e,t,c,n,r,i,a);if(!(n&or)){var m=u&&ur.call(e,`__wrapped__`),h=f&&ur.call(t,`__wrapped__`);if(m||h){var g=m?e.value():e,_=h?t.value():t;return a||=new D,i(g,_,n,r,a)}}return p?(a||=new D,ar(e,t,n,r,i,a)):!1}function fr(e,t,n,r,i){return e===t?!0:e==null||t==null||!he(e)&&!he(t)?e!==e&&t!==t:dr(e,t,n,r,fr,i)}var pr=1,mr=2;function hr(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new D;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?fr(u,l,pr|mr,r,d):f))return!1}}return!0}function gr(e){return e===e&&!p(e)}function _r(e){for(var t=Gt(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,gr(i)]}return t}function vr(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function yr(e){var t=_r(e);return t.length==1&&t[0][2]?vr(t[0][0],t[0][1]):function(n){return n===e||hr(n,e,t)}}function br(e,t){return e!=null&&t in Object(e)}function xr(e,t,n){t=nn(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=Y(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&qe(i)&&ue(o,i)&&(b(e)||h(e)))}function Sr(e,t){return e!=null&&xr(e,t,br)}var Cr=1,wr=2;function Tr(e,t){return Jt(e)&&gr(t)?vr(Y(e),t):function(n){var r=on(n,e);return r===void 0&&r===t?Sr(n,e):fr(t,r,Cr|wr)}}function Er(e){return function(t){return t?.[e]}}function Dr(e){return function(t){return an(t,e)}}function Or(e){return Jt(e)?Er(Y(e)):Dr(e)}function kr(e){return typeof e==`function`?e:e==null?fe:typeof e==`object`?b(e)?Tr(e[0],e[1]):yr(e):Or(e)}function Ar(e,t){return e&&l(e,t,Gt)}function jr(e,t){return function(n,r){if(n==null)return n;if(!se(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var Mr=jr(Ar);function Nr(e,t){var n=-1,r=se(e)?Array(e.length):[];return Mr(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function Pr(e,t){return(b(e)?Ie:Nr)(e,kr(t,3))}function Fr(e){let{mergedLocaleRef:t,mergedDateLocaleRef:n}=u(Re,null)||{},r=F(()=>t?.value?.[e]??kt[e]);return{dateLocaleRef:F(()=>n?.value??Bt),localeRef:r}}var Ir={space:`6px`,spaceArrow:`10px`,arrowOffset:`10px`,arrowOffsetVertical:`10px`,arrowHeight:`6px`,padding:`8px 14px`};function Lr(e){let{boxShadow2:t,popoverColor:n,textColor2:r,borderRadius:i,fontSize:a,dividerColor:o}=e;return Object.assign(Object.assign({},Ir),{fontSize:a,borderRadius:i,color:n,dividerColor:o,textColor:r,boxShadow:t})}var Rr=be({name:`Popover`,common:Ce,peers:{Scrollbar:Be},self:Lr}),zr={top:`bottom`,bottom:`top`,left:`right`,right:`left`},Z=`var(--n-arrow-height) * 1.414`,Br=y([N(`popover`,`
2
+ transition:
3
+ box-shadow .3s var(--n-bezier),
4
+ background-color .3s var(--n-bezier),
5
+ color .3s var(--n-bezier);
6
+ position: relative;
7
+ font-size: var(--n-font-size);
8
+ color: var(--n-text-color);
9
+ box-shadow: var(--n-box-shadow);
10
+ word-break: break-word;
11
+ `,[y(`>`,[N(`scrollbar`,`
12
+ height: inherit;
13
+ max-height: inherit;
14
+ `)]),e(`raw`,`
15
+ background-color: var(--n-color);
16
+ border-radius: var(--n-border-radius);
17
+ `,[e(`scrollable`,[e(`show-header-or-footer`,`padding: var(--n-padding);`)])]),_e(`header`,`
18
+ padding: var(--n-padding);
19
+ border-bottom: 1px solid var(--n-divider-color);
20
+ transition: border-color .3s var(--n-bezier);
21
+ `),_e(`footer`,`
22
+ padding: var(--n-padding);
23
+ border-top: 1px solid var(--n-divider-color);
24
+ transition: border-color .3s var(--n-bezier);
25
+ `),oe(`scrollable, show-header-or-footer`,[_e(`content`,`
26
+ padding: var(--n-padding);
27
+ `)])]),N(`popover-shared`,`
28
+ transform-origin: inherit;
29
+ `,[N(`popover-arrow-wrapper`,`
30
+ position: absolute;
31
+ overflow: hidden;
32
+ pointer-events: none;
33
+ `,[N(`popover-arrow`,`
34
+ transition: background-color .3s var(--n-bezier);
35
+ position: absolute;
36
+ display: block;
37
+ width: calc(${Z});
38
+ height: calc(${Z});
39
+ box-shadow: 0 0 8px 0 rgba(0, 0, 0, .12);
40
+ transform: rotate(45deg);
41
+ background-color: var(--n-color);
42
+ pointer-events: all;
43
+ `)]),y(`&.popover-transition-enter-from, &.popover-transition-leave-to`,`
44
+ opacity: 0;
45
+ transform: scale(.85);
46
+ `),y(`&.popover-transition-enter-to, &.popover-transition-leave-from`,`
47
+ transform: scale(1);
48
+ opacity: 1;
49
+ `),y(`&.popover-transition-enter-active`,`
50
+ transition:
51
+ box-shadow .3s var(--n-bezier),
52
+ background-color .3s var(--n-bezier),
53
+ color .3s var(--n-bezier),
54
+ opacity .15s var(--n-bezier-ease-out),
55
+ transform .15s var(--n-bezier-ease-out);
56
+ `),y(`&.popover-transition-leave-active`,`
57
+ transition:
58
+ box-shadow .3s var(--n-bezier),
59
+ background-color .3s var(--n-bezier),
60
+ color .3s var(--n-bezier),
61
+ opacity .15s var(--n-bezier-ease-in),
62
+ transform .15s var(--n-bezier-ease-in);
63
+ `)]),$(`top-start`,`
64
+ top: calc(${Z} / -2);
65
+ left: calc(${Q(`top-start`)} - var(--v-offset-left));
66
+ `),$(`top`,`
67
+ top: calc(${Z} / -2);
68
+ transform: translateX(calc(${Z} / -2)) rotate(45deg);
69
+ left: 50%;
70
+ `),$(`top-end`,`
71
+ top: calc(${Z} / -2);
72
+ right: calc(${Q(`top-end`)} + var(--v-offset-left));
73
+ `),$(`bottom-start`,`
74
+ bottom: calc(${Z} / -2);
75
+ left: calc(${Q(`bottom-start`)} - var(--v-offset-left));
76
+ `),$(`bottom`,`
77
+ bottom: calc(${Z} / -2);
78
+ transform: translateX(calc(${Z} / -2)) rotate(45deg);
79
+ left: 50%;
80
+ `),$(`bottom-end`,`
81
+ bottom: calc(${Z} / -2);
82
+ right: calc(${Q(`bottom-end`)} + var(--v-offset-left));
83
+ `),$(`left-start`,`
84
+ left: calc(${Z} / -2);
85
+ top: calc(${Q(`left-start`)} - var(--v-offset-top));
86
+ `),$(`left`,`
87
+ left: calc(${Z} / -2);
88
+ transform: translateY(calc(${Z} / -2)) rotate(45deg);
89
+ top: 50%;
90
+ `),$(`left-end`,`
91
+ left: calc(${Z} / -2);
92
+ bottom: calc(${Q(`left-end`)} + var(--v-offset-top));
93
+ `),$(`right-start`,`
94
+ right: calc(${Z} / -2);
95
+ top: calc(${Q(`right-start`)} - var(--v-offset-top));
96
+ `),$(`right`,`
97
+ right: calc(${Z} / -2);
98
+ transform: translateY(calc(${Z} / -2)) rotate(45deg);
99
+ top: 50%;
100
+ `),$(`right-end`,`
101
+ right: calc(${Z} / -2);
102
+ bottom: calc(${Q(`right-end`)} + var(--v-offset-top));
103
+ `),...Pr({top:[`right-start`,`left-start`],right:[`top-end`,`bottom-end`],bottom:[`right-end`,`left-end`],left:[`top-start`,`bottom-start`]},(e,t)=>{let n=[`right`,`left`].includes(t),r=n?`width`:`height`;return e.map(e=>{let i=e.split(`-`)[1]===`end`,a=`calc((${`var(--v-target-${r}, 0px)`} - ${Z}) / 2)`,o=Q(e);return y(`[v-placement="${e}"] >`,[N(`popover-shared`,[oe(`center-arrow`,[N(`popover-arrow`,`${t}: calc(max(${a}, ${o}) ${i?`+`:`-`} var(--v-offset-${n?`left`:`top`}));`)])])])})})]);function Q(e){return[`top`,`bottom`].includes(e.split(`-`)[0])?`var(--n-arrow-offset)`:`var(--n-arrow-offset-vertical)`}function $(e,t){let n=e.split(`-`)[0],r=[`top`,`bottom`].includes(n)?`height: var(--n-space-arrow);`:`width: var(--n-space-arrow);`;return y(`[v-placement="${e}"] >`,[N(`popover-shared`,`
104
+ margin-${zr[n]}: var(--n-space);
105
+ `,[oe(`show-arrow`,`
106
+ margin-${zr[n]}: var(--n-space-arrow);
107
+ `),oe(`overlap`,`
108
+ margin: 0;
109
+ `),me(`popover-arrow-wrapper`,`
110
+ right: 0;
111
+ left: 0;
112
+ top: 0;
113
+ bottom: 0;
114
+ ${n}: 100%;
115
+ ${zr[n]}: auto;
116
+ ${r}
117
+ `,[N(`popover-arrow`,t)])])])}var Vr=Object.assign(Object.assign({},Ge.props),{to:V.propTo,show:Boolean,trigger:String,showArrow:Boolean,delay:Number,duration:Number,raw:Boolean,arrowPointToCenter:Boolean,arrowClass:String,arrowStyle:[String,Object],arrowWrapperClass:String,arrowWrapperStyle:[String,Object],displayDirective:String,x:Number,y:Number,flip:Boolean,overlap:Boolean,placement:String,width:[Number,String],keepAliveOnHover:Boolean,scrollable:Boolean,contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],internalDeactivateImmediately:Boolean,animated:Boolean,onClickoutside:Function,internalTrapFocus:Boolean,internalOnAfterLeave:Function,minWidth:Number,maxWidth:Number});function Hr({arrowClass:e,arrowStyle:t,arrowWrapperClass:n,arrowWrapperStyle:r,clsPrefix:i}){return R(`div`,{key:`__popover-arrow__`,style:r,class:[`${i}-popover-arrow-wrapper`,n]},R(`div`,{class:[`${i}-popover-arrow`,e],style:t}))}var Ur=A({name:`PopoverBody`,inheritAttrs:!1,props:Vr,setup(e,{slots:t,attrs:n}){let{namespaceRef:i,mergedClsPrefixRef:o,inlineThemeDisabled:l,mergedRtlRef:d}=Ne(e),f=Ge(`Popover`,`-popover`,Br,Rr,e,o),p=Ue(`Popover`,d,o),m=O(null),h=u(`NPopover`),_=O(null),v=O(e.show),y=O(!1);de(()=>{let{show:t}=e;t&&!Ot()&&!e.internalDeactivateImmediately&&(y.value=!0)});let b=F(()=>{let{trigger:t,onClickoutside:n}=e,r=[],{positionManuallyRef:{value:i}}=h;return i||(t===`click`&&!n&&r.push([a,D,void 0,{capture:!0}]),t===`hover`&&r.push([dt,te])),n&&r.push([a,D,void 0,{capture:!0}]),(e.displayDirective===`show`||e.animated&&y.value)&&r.push([Se,e.show]),r}),S=F(()=>{let{common:{cubicBezierEaseInOut:e,cubicBezierEaseIn:t,cubicBezierEaseOut:n},self:{space:r,spaceArrow:i,padding:a,fontSize:o,textColor:s,dividerColor:c,color:l,boxShadow:u,borderRadius:d,arrowHeight:p,arrowOffset:m,arrowOffsetVertical:h}}=f.value;return{"--n-box-shadow":u,"--n-bezier":e,"--n-bezier-ease-in":t,"--n-bezier-ease-out":n,"--n-font-size":o,"--n-text-color":s,"--n-color":l,"--n-divider-color":c,"--n-border-radius":d,"--n-arrow-height":p,"--n-arrow-offset":m,"--n-arrow-offset-vertical":h,"--n-padding":a,"--n-space":r,"--n-space-arrow":i}}),C=F(()=>{let t=e.width===`trigger`?void 0:K(e.width),n=[];t&&n.push({width:t});let{maxWidth:r,minWidth:i}=e;return r&&n.push({maxWidth:K(r)}),i&&n.push({maxWidth:K(i)}),l||n.push(S.value),n}),w=l?ze(`popover`,void 0,S,e):void 0;h.setBodyInstance({syncPosition:T}),P(()=>{h.setBodyInstance(null)}),r(I(e,`show`),t=>{e.animated||(t?v.value=!0:v.value=!1)});function T(){var e;(e=m.value)==null||e.syncPosition()}function ee(t){e.trigger===`hover`&&e.keepAliveOnHover&&e.show&&h.handleMouseEnter(t)}function E(t){e.trigger===`hover`&&e.keepAliveOnHover&&h.handleMouseLeave(t)}function te(t){e.trigger===`hover`&&!ne().contains(x(t))&&h.handleMouseMoveOutside(t)}function D(t){(e.trigger===`click`&&!ne().contains(x(t))||e.onClickoutside)&&h.handleClickOutside(t)}function ne(){return h.getTriggerElement()}g(c,_),g(De,null),g(re,null);function ie(){if(w?.onRender(),!(e.displayDirective===`show`||e.show||e.animated&&y.value))return null;let r,i=h.internalRenderBodyRef.value,{value:a}=o;if(i)r=i([`${a}-popover-shared`,p?.value&&`${a}-popover--rtl`,w?.themeClass.value,e.overlap&&`${a}-popover-shared--overlap`,e.showArrow&&`${a}-popover-shared--show-arrow`,e.arrowPointToCenter&&`${a}-popover-shared--center-arrow`],_,C.value,ee,E);else{let{value:i}=h.extraClassRef,{internalTrapFocus:o}=e,c=!Pe(t.header)||!Pe(t.footer),l=()=>{let n=c?R(Ve,null,Ae(t.header,t=>t?R(`div`,{class:[`${a}-popover__header`,e.headerClass],style:e.headerStyle},t):null),Ae(t.default,n=>n?R(`div`,{class:[`${a}-popover__content`,e.contentClass],style:e.contentStyle},t):null),Ae(t.footer,t=>t?R(`div`,{class:[`${a}-popover__footer`,e.footerClass],style:e.footerStyle},t):null)):e.scrollable?t.default?.call(t):R(`div`,{class:[`${a}-popover__content`,e.contentClass],style:e.contentStyle},t);return[e.scrollable?R(ke,{themeOverrides:f.value.peerOverrides.Scrollbar,theme:f.value.peers.Scrollbar,contentClass:c?void 0:`${a}-popover__content ${e.contentClass??``}`,contentStyle:c?void 0:e.contentStyle},{default:()=>n}):n,e.showArrow?Hr({arrowClass:e.arrowClass,arrowStyle:e.arrowStyle,arrowWrapperClass:e.arrowWrapperClass,arrowWrapperStyle:e.arrowWrapperStyle,clsPrefix:a}):null]};r=R(`div`,s({class:[`${a}-popover`,`${a}-popover-shared`,p?.value&&`${a}-popover--rtl`,w?.themeClass.value,i.map(e=>`${a}-${e}`),{[`${a}-popover--scrollable`]:e.scrollable,[`${a}-popover--show-header-or-footer`]:c,[`${a}-popover--raw`]:e.raw,[`${a}-popover-shared--overlap`]:e.overlap,[`${a}-popover-shared--show-arrow`]:e.showArrow,[`${a}-popover-shared--center-arrow`]:e.arrowPointToCenter}],ref:_,style:C.value,onKeydown:h.handleKeydown,onMouseenter:ee,onMouseleave:E},n),o?R(ve,{active:e.show,autoFocus:!0},{default:l}):l())}return M(r,b.value)}return{displayed:y,namespace:i,isMounted:h.isMountedRef,zIndex:h.zIndexRef,followerRef:m,adjustedTo:V(e),followerEnabled:v,renderContentNode:ie}},render(){return R(wt,{ref:`followerRef`,zIndex:this.zIndex,show:this.show,enabled:this.followerEnabled,to:this.adjustedTo,x:this.x,y:this.y,flip:this.flip,placement:this.placement,containerClass:this.namespace,overlap:this.overlap,width:this.width===`trigger`?`target`:void 0,teleportDisabled:this.adjustedTo===V.tdkey},{default:()=>this.animated?R(ye,{name:`popover-transition`,appear:this.isMounted,onEnter:()=>{this.followerEnabled=!0},onAfterLeave:()=>{var e;(e=this.internalOnAfterLeave)==null||e.call(this),this.followerEnabled=!1,this.displayed=!1}},{default:this.renderContentNode}):this.renderContentNode()})}}),Wr=Object.keys(Vr),Gr={focus:[`onFocus`,`onBlur`],click:[`onClick`],hover:[`onMouseenter`,`onMouseleave`],manual:[],nested:[`onFocus`,`onBlur`,`onMouseenter`,`onMouseleave`,`onClick`]};function Kr(e,t,n){Gr[t].forEach(t=>{e.props?e.props=Object.assign({},e.props):e.props={};let r=e.props[t],i=n[t];r?e.props[t]=(...e)=>{r(...e),i(...e)}:e.props[t]=i})}var qr={show:{type:Boolean,default:void 0},defaultShow:Boolean,showArrow:{type:Boolean,default:!0},trigger:{type:String,default:`hover`},delay:{type:Number,default:100},duration:{type:Number,default:100},raw:Boolean,placement:{type:String,default:`top`},x:Number,y:Number,arrowPointToCenter:Boolean,disabled:Boolean,getDisabled:Function,displayDirective:{type:String,default:`if`},arrowClass:String,arrowStyle:[String,Object],arrowWrapperClass:String,arrowWrapperStyle:[String,Object],flip:{type:Boolean,default:!0},animated:{type:Boolean,default:!0},width:{type:[Number,String],default:void 0},overlap:Boolean,keepAliveOnHover:{type:Boolean,default:!0},zIndex:Number,to:V.propTo,scrollable:Boolean,contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],onClickoutside:Function,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],internalDeactivateImmediately:Boolean,internalSyncTargetWithParent:Boolean,internalInheritedEventHandlers:{type:Array,default:()=>[]},internalTrapFocus:Boolean,internalExtraClass:{type:Array,default:()=>[]},onShow:[Function,Array],onHide:[Function,Array],arrow:{type:Boolean,default:void 0},minWidth:Number,maxWidth:Number},Jr=A({name:`Popover`,inheritAttrs:!1,props:Object.assign(Object.assign(Object.assign({},Ge.props),qr),{internalOnAfterLeave:Function,internalRenderBody:Function}),slots:Object,__popover__:!0,setup(e){let t=te(),n=O(null),r=F(()=>e.show),i=O(e.defaultShow),a=$e(r,i),o=_(()=>e.disabled?!1:a.value),s=()=>{if(e.disabled)return!0;let{getDisabled:t}=e;return!!t?.()},c=()=>s()?!1:a.value,l=et(e,[`arrow`,`showArrow`]),u=F(()=>e.overlap?!1:l.value),d=null,f=O(null),p=O(null),m=_(()=>e.x!==void 0&&e.y!==void 0);function h(t){let{"onUpdate:show":n,onUpdateShow:r,onShow:a,onHide:o}=e;i.value=t,n&&L(n,t),r&&L(r,t),t&&a&&L(a,!0),t&&o&&L(o,!1)}function v(){d&&d.syncPosition()}function y(){let{value:e}=f;e&&(window.clearTimeout(e),f.value=null)}function b(){let{value:e}=p;e&&(window.clearTimeout(e),p.value=null)}function x(){let t=s();if(e.trigger===`focus`&&!t){if(c())return;h(!0)}}function S(){let t=s();if(e.trigger===`focus`&&!t){if(!c())return;h(!1)}}function C(){let t=s();if(e.trigger===`hover`&&!t){if(b(),f.value!==null||c())return;let t=()=>{h(!0),f.value=null},{delay:n}=e;n===0?t():f.value=window.setTimeout(t,n)}}function w(){let t=s();if(e.trigger===`hover`&&!t){if(y(),p.value!==null||!c())return;let t=()=>{h(!1),p.value=null},{duration:n}=e;n===0?t():p.value=window.setTimeout(t,n)}}function T(){w()}function ee(t){var n;c()&&(e.trigger===`click`&&(y(),b(),h(!1)),(n=e.onClickoutside)==null||n.call(e,t))}function E(){e.trigger===`click`&&!s()&&(y(),b(),h(!c()))}function D(t){e.internalTrapFocus&&t.key===`Escape`&&(y(),b(),h(!1))}function ne(e){i.value=e}function re(){return n.value?.targetRef}function ie(e){d=e}return g(`NPopover`,{getTriggerElement:re,handleKeydown:D,handleMouseEnter:C,handleMouseLeave:w,handleClickOutside:ee,handleMouseMoveOutside:T,setBodyInstance:ie,positionManuallyRef:m,isMountedRef:t,zIndexRef:I(e,`zIndex`),extraClassRef:I(e,`internalExtraClass`),internalRenderBodyRef:I(e,`internalRenderBody`)}),de(()=>{a.value&&s()&&h(!1)}),{binderInstRef:n,positionManually:m,mergedShowConsideringDisabledProp:o,uncontrolledShow:i,mergedShowArrow:u,getMergedShow:c,setShow:ne,handleClick:E,handleMouseEnter:C,handleMouseLeave:w,handleFocus:x,handleBlur:S,syncPosition:v}},render(){let{positionManually:e,$slots:t}=this,n,r=!1;if(!e&&(n=we(t,`trigger`),n)){n=Fe(n),n=n.type===Te?R(`span`,[n]):n;let t={onClick:this.handleClick,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onFocus:this.handleFocus,onBlur:this.handleBlur};if(n.type?.__popover__)r=!0,n.props||={internalSyncTargetWithParent:!0,internalInheritedEventHandlers:[]},n.props.internalSyncTargetWithParent=!0,n.props.internalInheritedEventHandlers?n.props.internalInheritedEventHandlers=[t,...n.props.internalInheritedEventHandlers]:n.props.internalInheritedEventHandlers=[t];else{let{internalInheritedEventHandlers:r}=this,i=[t,...r];Kr(n,r?`nested`:e?`manual`:this.trigger,{onBlur:e=>{i.forEach(t=>{t.onBlur(e)})},onFocus:e=>{i.forEach(t=>{t.onFocus(e)})},onClick:e=>{i.forEach(t=>{t.onClick(e)})},onMouseenter:e=>{i.forEach(t=>{t.onMouseenter(e)})},onMouseleave:e=>{i.forEach(t=>{t.onMouseleave(e)})}})}}return R(lt,{ref:`binderInstRef`,syncTarget:!r,syncTargetWithParent:this.internalSyncTargetWithParent},{default:()=>{this.mergedShowConsideringDisabledProp;let t=this.getMergedShow();return[this.internalTrapFocus&&t?M(R(`div`,{style:{position:`fixed`,top:0,right:0,bottom:0,left:0}}),[[ce,{enabled:t,zIndex:this.zIndex}]]):null,e?null:R(ut,null,{default:()=>n}),R(Ur,He(this.$props,Wr,Object.assign(Object.assign({},this.$attrs),{showArrow:this.mergedShowArrow,show:t})),{default:()=>{var e;return(e=this.$slots).default?.call(e)},header:()=>{var e;return(e=this.$slots).header?.call(e)},footer:()=>{var e;return(e=this.$slots).footer?.call(e)}})]}})}});function Yr(){let e=u(Me,null);return e===null&&je(`use-message`,"No outer <n-message-provider /> founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A."),e}export{$e as _,Fr as a,wt as c,ut as d,lt as f,et as g,tt as h,Rr as i,W as l,nt as m,Jr as n,on as o,V as p,qr as r,K as s,Yr as t,ft as u,Xe as v};
package/dist/index.html CHANGED
@@ -6,12 +6,14 @@
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>Hermes</title>
9
- <script type="module" crossorigin src="/assets/index-4iFlrAYJ.js"></script>
10
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-D5N3Hfca.js">
11
- <link rel="modulepreload" crossorigin href="/assets/Modal-CQVLL_Oc.js">
12
- <link rel="modulepreload" crossorigin href="/assets/client-BxIiwrqC.js">
13
- <link rel="modulepreload" crossorigin href="/assets/chat-640V6r6N.js">
14
- <link rel="stylesheet" crossorigin href="/assets/index-CMJKLUKk.css">
9
+ <script type="module" crossorigin src="/assets/index-BsLYVWlc.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-V8xgnEJh.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/fade-in-scale-up.cssr-DQYNrBys.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/Warning-B9_T2nKK.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/Modal-oIDM0xXN.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/client-ZYGCrm9m.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/chat-CGF6ipPC.js">
16
+ <link rel="stylesheet" crossorigin href="/assets/index-DDAe8BhJ.css">
15
17
  </head>
16
18
 
17
19
  <body>
@@ -0,0 +1,7 @@
1
+ export declare const config: {
2
+ port: number;
3
+ upstream: string;
4
+ uploadDir: string;
5
+ dataDir: string;
6
+ corsOrigins: string;
7
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ const path_1 = require("path");
5
+ const os_1 = require("os");
6
+ exports.config = {
7
+ port: parseInt(process.env.PORT || '8648', 10),
8
+ upstream: process.env.UPSTREAM || 'http://127.0.0.1:8642',
9
+ uploadDir: process.env.UPLOAD_DIR || (0, path_1.resolve)((0, os_1.tmpdir)(), 'hermes-uploads'),
10
+ dataDir: (0, path_1.resolve)(__dirname, '..', 'data'),
11
+ corsOrigins: process.env.CORS_ORIGINS || '*',
12
+ };
@@ -0,0 +1 @@
1
+ export declare function bootstrap(): Promise<void>;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.bootstrap = bootstrap;
40
+ const koa_1 = __importDefault(require("koa"));
41
+ const cors_1 = __importDefault(require("@koa/cors"));
42
+ const bodyparser_1 = __importDefault(require("@koa/bodyparser"));
43
+ const koa_static_1 = __importDefault(require("koa-static"));
44
+ const koa_send_1 = __importDefault(require("koa-send"));
45
+ const path_1 = require("path");
46
+ const promises_1 = require("fs/promises");
47
+ const config_1 = require("./config");
48
+ const proxy_1 = require("./routes/proxy");
49
+ const upload_1 = require("./routes/upload");
50
+ const sessions_1 = require("./routes/sessions");
51
+ const webhook_1 = require("./routes/webhook");
52
+ const logs_1 = require("./routes/logs");
53
+ const hermesCli = __importStar(require("./services/hermes-cli"));
54
+ const { restartGateway } = hermesCli;
55
+ async function bootstrap() {
56
+ await (0, promises_1.mkdir)(config_1.config.uploadDir, { recursive: true });
57
+ await (0, promises_1.mkdir)(config_1.config.dataDir, { recursive: true });
58
+ await ensureApiServerConfig();
59
+ const app = new koa_1.default();
60
+ app.use((0, cors_1.default)({ origin: config_1.config.corsOrigins }));
61
+ app.use((0, bodyparser_1.default)());
62
+ app.use(webhook_1.webhookRoutes.routes());
63
+ app.use(logs_1.logRoutes.routes());
64
+ app.use(upload_1.uploadRoutes.routes());
65
+ app.use(sessions_1.sessionRoutes.routes());
66
+ // Health endpoint with version
67
+ app.use(async (ctx, next) => {
68
+ if (ctx.path === '/health') {
69
+ const raw = await hermesCli.getVersion();
70
+ const version = raw.split('\n')[0].replace('Hermes Agent ', '') || '';
71
+ ctx.body = { status: 'ok', platform: 'hermes-agent', version };
72
+ return;
73
+ }
74
+ await next();
75
+ });
76
+ app.use(proxy_1.proxyRoutes.routes());
77
+ // SPA fallback
78
+ const distDir = (0, path_1.resolve)(__dirname, '..');
79
+ app.use((0, koa_static_1.default)(distDir));
80
+ app.use(async (ctx) => {
81
+ if (!ctx.path.startsWith('/api') && !ctx.path.startsWith('/v1') && ctx.path !== '/health' && ctx.path !== '/upload' && ctx.path !== '/webhook') {
82
+ await (0, koa_send_1.default)(ctx, 'index.html', { root: distDir });
83
+ }
84
+ });
85
+ app.listen(config_1.config.port, '0.0.0.0', () => {
86
+ console.log(` ➜ Hermes BFF Server: http://localhost:${config_1.config.port}`);
87
+ console.log(` ➜ Upstream: ${config_1.config.upstream}`);
88
+ });
89
+ }
90
+ async function ensureApiServerConfig() {
91
+ const { homedir } = await Promise.resolve().then(() => __importStar(require('os')));
92
+ const { readFileSync, writeFileSync, existsSync } = await Promise.resolve().then(() => __importStar(require('fs')));
93
+ const configPath = (0, path_1.resolve)(homedir(), '.hermes/config.yaml');
94
+ try {
95
+ if (!existsSync(configPath)) {
96
+ console.log(' ✗ config.yaml not found, skipping');
97
+ return;
98
+ }
99
+ const content = readFileSync(configPath, 'utf-8');
100
+ // Case 1: api_server section exists, check if enabled is true
101
+ if (/api_server:/.test(content)) {
102
+ // Check specifically under api_server: look for a direct child `enabled: false`
103
+ // Match api_server block and find enabled at the correct indent level
104
+ const blockMatch = content.match(/api_server:\n((?:[ \t]+.*\n)*?)(?=\S|$)/);
105
+ if (blockMatch) {
106
+ const block = blockMatch[1];
107
+ if (/^([ \t]*)enabled:\s*true/m.test(block)) {
108
+ console.log(' ✓ api_server.enabled is true');
109
+ return;
110
+ }
111
+ if (/^([ \t]*)enabled:\s*false/m.test(block)) {
112
+ // Backup before modifying
113
+ const { copyFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
114
+ copyFileSync(configPath, configPath + '.bak');
115
+ const updated = content.replace(/(api_server:\n(?:[ \t]*.*\n)*?[ \t]*)enabled:\s*false/, '$1enabled: true');
116
+ writeFileSync(configPath, updated, 'utf-8');
117
+ console.log(' ✓ api_server.enabled changed to true (backup saved to config.yaml.bak)');
118
+ await restartGateway();
119
+ return;
120
+ }
121
+ }
122
+ // api_server exists but no enabled key — don't touch, assume default
123
+ console.log(' ✓ api_server section exists');
124
+ return;
125
+ }
126
+ // Case 2: api_server section exists and enabled is true (or missing but default true)
127
+ if (/api_server:/.test(content)) {
128
+ console.log(' ✓ api_server section exists');
129
+ return;
130
+ }
131
+ // Case 3: platforms section exists but no api_server — append api_server block
132
+ if (/platforms:/.test(content)) {
133
+ const { copyFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
134
+ copyFileSync(configPath, configPath + '.bak');
135
+ const append = `\n api_server:\n enabled: true\n host: "127.0.0.1"\n port: 8642\n key: ""\n cors_origins: "*"\n`;
136
+ const updated = content.replace(/(platforms:)/, '$1' + append);
137
+ writeFileSync(configPath, updated, 'utf-8');
138
+ console.log(' ✓ api_server block appended to platforms (backup saved to config.yaml.bak)');
139
+ await restartGateway();
140
+ return;
141
+ }
142
+ // Case 4: No platforms section at all — append at end of file
143
+ const { copyFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
144
+ copyFileSync(configPath, configPath + '.bak');
145
+ const append = `\nplatforms:\n api_server:\n enabled: true\n host: "127.0.0.1"\n port: 8642\n key: ""\n cors_origins: "*"\n`;
146
+ writeFileSync(configPath, content + append, 'utf-8');
147
+ console.log(' ✓ platforms.api_server block appended (backup saved to config.yaml.bak)');
148
+ await restartGateway();
149
+ }
150
+ catch (err) {
151
+ console.error(' ✗ Failed to update config:', err.message);
152
+ }
153
+ }
154
+ bootstrap();
@@ -0,0 +1,2 @@
1
+ import Router from '@koa/router';
2
+ export declare const logRoutes: Router<import("koa").DefaultState, import("koa").DefaultContext>;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.logRoutes = void 0;
40
+ const router_1 = __importDefault(require("@koa/router"));
41
+ const hermesCli = __importStar(require("../services/hermes-cli"));
42
+ exports.logRoutes = new router_1.default();
43
+ // List available log files
44
+ exports.logRoutes.get('/api/logs', async (ctx) => {
45
+ const files = await hermesCli.listLogFiles();
46
+ ctx.body = { files };
47
+ });
48
+ // Parse a single log line into structured entry
49
+ function parseLine(line) {
50
+ // Match: 2026-04-11 20:16:16,289 INFO aiohttp.access: message
51
+ const match = line.match(/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\s+(DEBUG|INFO|WARNING|ERROR|CRITICAL)\s+(\S+?):\s(.*)$/);
52
+ if (match) {
53
+ return {
54
+ timestamp: match[1],
55
+ level: match[2],
56
+ logger: match[3],
57
+ message: match[4],
58
+ raw: line,
59
+ };
60
+ }
61
+ // Unparseable line (e.g. traceback continuation)
62
+ return null;
63
+ }
64
+ // Read log lines (parsed)
65
+ exports.logRoutes.get('/api/logs/:name', async (ctx) => {
66
+ const logName = ctx.params.name;
67
+ const lines = ctx.query.lines ? parseInt(ctx.query.lines, 10) : 100;
68
+ const level = ctx.query.level || undefined;
69
+ const session = ctx.query.session || undefined;
70
+ const since = ctx.query.since || undefined;
71
+ try {
72
+ const content = await hermesCli.readLogs(logName, lines, level, session, since);
73
+ const rawLines = content.split('\n');
74
+ const entries = [];
75
+ for (const line of rawLines) {
76
+ // Skip header lines like "--- ~/.hermes/logs/agent.log (last 100) ---"
77
+ if (line.startsWith('---') || line.trim() === '')
78
+ continue;
79
+ entries.push(parseLine(line));
80
+ }
81
+ ctx.body = { entries };
82
+ }
83
+ catch (err) {
84
+ ctx.status = 500;
85
+ ctx.body = { error: err.message };
86
+ }
87
+ });
@@ -0,0 +1,2 @@
1
+ import type { Context } from 'koa';
2
+ export declare function proxy(ctx: Context): Promise<void>;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proxy = proxy;
4
+ const config_1 = require("../config");
5
+ async function proxy(ctx) {
6
+ const upstream = config_1.config.upstream.replace(/\/$/, '');
7
+ const url = `${upstream}${ctx.path}${ctx.search || ''}`;
8
+ console.log(`[PROXY] ${ctx.method} ${ctx.path} -> ${url}`);
9
+ // Build headers — forward most, strip browser-specific ones
10
+ const headers = {};
11
+ for (const [key, value] of Object.entries(ctx.headers)) {
12
+ if (value == null)
13
+ continue;
14
+ const lower = key.toLowerCase();
15
+ if (lower === 'host') {
16
+ headers['host'] = new URL(upstream).host;
17
+ }
18
+ else if (lower !== 'origin' && lower !== 'referer' && lower !== 'connection') {
19
+ const v = Array.isArray(value) ? value[0] : value;
20
+ if (v)
21
+ headers[key] = v;
22
+ }
23
+ }
24
+ // Add SSE-friendly headers
25
+ if (ctx.path.match(/\/events$/)) {
26
+ headers['x-accel-buffering'] = 'no';
27
+ headers['cache-control'] = 'no-cache';
28
+ }
29
+ try {
30
+ // Build request body from raw body
31
+ let body;
32
+ if (ctx.req.method !== 'GET' && ctx.req.method !== 'HEAD') {
33
+ body = ctx.request.rawBody;
34
+ }
35
+ const res = await fetch(url, {
36
+ method: ctx.req.method,
37
+ headers,
38
+ body,
39
+ });
40
+ // Set response headers
41
+ const resHeaders = {};
42
+ res.headers.forEach((value, key) => {
43
+ const lower = key.toLowerCase();
44
+ if (lower !== 'transfer-encoding' && lower !== 'connection') {
45
+ resHeaders[key] = value;
46
+ }
47
+ });
48
+ if (ctx.path.match(/\/events$/)) {
49
+ resHeaders['x-accel-buffering'] = 'no';
50
+ resHeaders['cache-control'] = 'no-cache';
51
+ }
52
+ ctx.status = res.status;
53
+ ctx.set(resHeaders);
54
+ // Stream response body
55
+ if (res.body) {
56
+ const reader = res.body.getReader();
57
+ const pump = async () => {
58
+ while (true) {
59
+ const { done, value } = await reader.read();
60
+ if (done)
61
+ break;
62
+ ctx.res.write(value);
63
+ }
64
+ ctx.res.end();
65
+ };
66
+ await pump();
67
+ }
68
+ else {
69
+ ctx.res.end();
70
+ }
71
+ }
72
+ catch (err) {
73
+ if (!ctx.res.headersSent) {
74
+ ctx.status = 502;
75
+ ctx.set('Content-Type', 'application/json');
76
+ ctx.body = { error: { message: `Proxy error: ${err.message}` } };
77
+ }
78
+ else {
79
+ ctx.res.end();
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,2 @@
1
+ import Router from '@koa/router';
2
+ export declare const proxyRoutes: Router<import("koa").DefaultState, import("koa").DefaultContext>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.proxyRoutes = void 0;
7
+ const router_1 = __importDefault(require("@koa/router"));
8
+ const proxy_handler_1 = require("./proxy-handler");
9
+ exports.proxyRoutes = new router_1.default();
10
+ // Proxy all /api/*, /v1/* to upstream Hermes API
11
+ exports.proxyRoutes.all('/api/(.*)', proxy_handler_1.proxy);
12
+ exports.proxyRoutes.all('/v1/(.*)', proxy_handler_1.proxy);
@@ -0,0 +1,2 @@
1
+ import Router from '@koa/router';
2
+ export declare const sessionRoutes: Router<import("koa").DefaultState, import("koa").DefaultContext>;