hermes-web-ui 0.4.1 → 0.4.2

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 (67) hide show
  1. package/dist/client/assets/{Add-BpktEZsz.js → Add-COjp_zn3.js} +1 -1
  2. package/dist/client/assets/{Button-Cnfw-IjX.js → Button-pgPN7RfC.js} +1 -1
  3. package/dist/client/assets/{ChannelsView-8vPg4mUj.js → ChannelsView-qFMvJ9rS.js} +1 -1
  4. package/dist/client/assets/ChatView-DVQv3z6i.js +127 -0
  5. package/dist/client/assets/ChatView-w9DKSiie.css +1 -0
  6. package/dist/client/assets/{Close-U2JC-gNs.js → Close-CXC76d7R.js} +1 -1
  7. package/dist/client/assets/{FormItem-hNEKqj3O.js → FormItem-DIcSMjKz.js} +1 -1
  8. package/dist/client/assets/{GatewaysView-Y-OpJkmm.js → GatewaysView-BeaZvbdd.js} +1 -1
  9. package/dist/client/assets/{Input-DrKhBiZw.js → Input-CxMM68Q2.js} +1 -1
  10. package/dist/client/assets/{InputNumber-CpgDdt3i.js → InputNumber-Btyn8bQo.js} +1 -1
  11. package/dist/client/assets/{JobsView-DPWQMuXD.js → JobsView-DhosFF52.js} +2 -2
  12. package/dist/client/assets/{LoginView-i8prLGX4.js → LoginView-DrjDX7xD.js} +1 -1
  13. package/dist/client/assets/{LogsView-DKijLNKW.js → LogsView-BpW_vgEs.js} +1 -1
  14. package/dist/client/assets/{MarkdownRenderer-DENPDjvG.js → MarkdownRenderer-G4nly1xR.js} +1 -1
  15. package/dist/client/assets/{MemoryView-FsdXJHO2.js → MemoryView-CP3K8mDG.js} +1 -1
  16. package/dist/client/assets/{Modal-R2Z6-Zms.js → Modal-rKb1tfQv.js} +1 -1
  17. package/dist/client/assets/{ModelsView-CUhcDxQn.js → ModelsView-DdQUiiu6.js} +1 -1
  18. package/dist/client/assets/{Popconfirm-LcqynqV7.js → Popconfirm-DnYCLqNF.js} +1 -1
  19. package/dist/client/assets/{Popover-BMyFTs0l.js → Popover-DAXLiB78.js} +1 -1
  20. package/dist/client/assets/{ProfilesView-CeMhWRo4.js → ProfilesView-Bkhqt3QB.js} +1 -1
  21. package/dist/client/assets/{Select-DuDO62HK.js → Select-CpNY3UGb.js} +1 -1
  22. package/dist/client/assets/{SettingRow-Dqpk_Y1X.js → SettingRow-B4_BuJSm.js} +1 -1
  23. package/dist/client/assets/{SettingsView-C3sd8K0e.css → SettingsView-CX312EGG.css} +1 -1
  24. package/dist/client/assets/{SettingsView-C-Wmo-pf.js → SettingsView-ZwzxJZVc.js} +2 -2
  25. package/dist/client/assets/{SkillsView--XG2gvdt.js → SkillsView-B3X9y2kZ.js} +1 -1
  26. package/dist/client/assets/{Spin-CNthlR40.js → Spin-CAOjab_F.js} +1 -1
  27. package/dist/client/assets/{Suffix-CeHN3ihg.js → Suffix-DQWmhzzW.js} +1 -1
  28. package/dist/client/assets/{Switch-HUSzpquo.js → Switch-haCJAcVn.js} +1 -1
  29. package/dist/client/assets/{Tag-bcPrHTQq.js → Tag-CKzgX6hi.js} +1 -1
  30. package/dist/client/assets/{TerminalView-CxtsiKer.js → TerminalView-CmSON012.js} +1 -1
  31. package/dist/client/assets/{Tooltip-CsnrCUqC.js → Tooltip-U6DmMv6W.js} +1 -1
  32. package/dist/client/assets/{UsageView-w5xY3YK-.js → UsageView-rmIKdR1u.js} +1 -1
  33. package/dist/client/assets/{Warning-B-4ukuIo.js → Warning-B2AD2ulw.js} +1 -1
  34. package/dist/client/assets/{_plugin-vue_export-helper-DTysiCFw.js → _plugin-vue_export-helper-DXZ6IauR.js} +1 -1
  35. package/dist/client/assets/{app-Cj6XwFKm.js → app-Du5RZCLa.js} +1 -1
  36. package/dist/client/assets/app-lD2ZIoa4.js +1 -0
  37. package/dist/client/assets/{browser-DkMcmggy.js → browser-DcLLT85r.js} +1 -1
  38. package/dist/client/assets/chat-DJP53-h1.js +6 -0
  39. package/dist/client/assets/composables-CjmuafMO.js +1 -0
  40. package/dist/client/assets/{fade-in.cssr-CkQvzPci.js → fade-in.cssr-CkQxIGt5.js} +1 -1
  41. package/dist/client/assets/index-BqaBjme9.js +284 -0
  42. package/dist/client/assets/{jobs-B_aJckhl.js → jobs-BnXwbdOs.js} +1 -1
  43. package/dist/client/assets/{light-B5Gclu7u.js → light-BZfVIZ0W.js} +1 -1
  44. package/dist/client/assets/{light-UxDRH3KV.js → light-Bdfae2y3.js} +1 -1
  45. package/dist/client/assets/{light-CZF9XJcN.js → light-Dgzhn0jz.js} +1 -1
  46. package/dist/client/assets/{light-DSFGnDIn.js → light-Jn66LOmu.js} +1 -1
  47. package/dist/client/assets/{light-CwhS-d6R.js → light-ZuZhSzix.js} +1 -1
  48. package/dist/client/assets/{light-ZT7fg6Ar.js → light-ba4gwt1q.js} +1 -1
  49. package/dist/client/assets/{models-BVMLuhRp.js → models-mCQyOPuV.js} +1 -1
  50. package/dist/client/assets/{pinia-Cw7gKk_G.js → pinia-Jb4QOAzE.js} +1 -1
  51. package/dist/client/assets/{profiles-PYziKhyQ.js → profiles-PisKQKsd.js} +1 -1
  52. package/dist/client/assets/{router-DZ0K5mgk.js → router-qWVkGgap.js} +2 -2
  53. package/dist/client/assets/session-browser-prefs-Bh1and1f.js +1 -0
  54. package/dist/client/assets/{sessions-BmGawaJ1.js → sessions-smjenK_5.js} +1 -1
  55. package/dist/client/assets/{skills-D_FCqgt0.js → skills-BIFy9nXD.js} +1 -1
  56. package/dist/client/assets/{use-message-Cu2H6Jgg.js → use-message-Do_vF1fs.js} +1 -1
  57. package/dist/client/assets/{useTheme-CNjnv-8-.js → useTheme-BFm8wMmc.js} +1 -1
  58. package/dist/client/index.html +27 -27
  59. package/dist/server/index.js +456 -76
  60. package/dist/server/index.js.map +4 -4
  61. package/package.json +1 -1
  62. package/dist/client/assets/ChatView-BndkT9Ak.js +0 -127
  63. package/dist/client/assets/ChatView-Bp0GIJ5d.css +0 -1
  64. package/dist/client/assets/app-BPvkNIt-.js +0 -1
  65. package/dist/client/assets/chat-CJVCt7tU.js +0 -6
  66. package/dist/client/assets/composables-BVHKoSa5.js +0 -1
  67. package/dist/client/assets/index-6U3b19b2.js +0 -284
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermes-web-ui",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics & channel configuration (Telegram, Discord, Slack, WhatsApp)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,127 +0,0 @@
1
- import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,K as c,L as l,N as u,Q as d,R as f,T as p,U as m,V as h,W as g,X as _,_ as v,ct as y,d as b,dt as x,g as S,gt as C,j as w,k as T,m as E,mt as D,ot as O,pt as k,q as A,st as j,w as M,y as N}from"./router-DZ0K5mgk.js";import{r as P,t as F}from"./_plugin-vue_export-helper-DTysiCFw.js";import{t as I}from"./logo-Cd-t_oGE.js";import{$ as L,B as R,X as z,c as B,ct as V,dt as H,ft as U,pt as W,q as G,st as K,tt as q,ut as J,z as ee}from"./browser-DkMcmggy.js";import{C as te,E as ne,N as Y,S as re,T as X,c as Z,g as ie,k as ae,l as oe,m as se,n as ce,o as le,r as ue,t as de}from"./Popover-BMyFTs0l.js";import{r as fe,t as pe}from"./create-5zWq3BEB.js";import{d as me,f as he,p as ge,r as _e}from"./Suffix-CeHN3ihg.js";import{t as ve}from"./Modal-R2Z6-Zms.js";import{t as Q}from"./Button-Cnfw-IjX.js";import{t as ye}from"./Input-DrKhBiZw.js";import{i as be,n as xe,t as Se}from"./chat-CJVCt7tU.js";import{t as Ce}from"./Tooltip-CsnrCUqC.js";import{t as we}from"./use-message-Cu2H6Jgg.js";import{t as Te}from"./Popconfirm-LcqynqV7.js";import{t as Ee}from"./useTheme-CNjnv-8-.js";import{t as De}from"./app-Cj6XwFKm.js";import{t as Oe}from"./profiles-PYziKhyQ.js";import{i as ke}from"./sessions-BmGawaJ1.js";import{i as Ae,n as je,r as Me,t as Ne}from"./MarkdownRenderer-DENPDjvG.js";function Pe(e={},t){let r=O({ctrl:!1,command:!1,win:!1,shift:!1,tab:!1}),{keydown:i,keyup:a}=e,o=e=>{switch(e.key){case`Control`:r.ctrl=!0;break;case`Meta`:r.command=!0,r.win=!0;break;case`Shift`:r.shift=!0;break;case`Tab`:r.tab=!0;break}i!==void 0&&Object.keys(i).forEach(t=>{if(t!==e.key)return;let n=i[t];if(typeof n==`function`)n(e);else{let{stop:t=!1,prevent:r=!1}=n;t&&e.stopPropagation(),r&&e.preventDefault(),n.handler(e)}})},s=e=>{switch(e.key){case`Control`:r.ctrl=!1;break;case`Meta`:r.command=!1,r.win=!1;break;case`Shift`:r.shift=!1;break;case`Tab`:r.tab=!1;break}a!==void 0&&Object.keys(a).forEach(t=>{if(t!==e.key)return;let n=a[t];if(typeof n==`function`)n(e);else{let{stop:t=!1,prevent:r=!1}=n;t&&e.stopPropagation(),r&&e.preventDefault(),n.handler(e)}})},c=()=>{(t===void 0||t.value)&&(ge(`keydown`,document,o),ge(`keyup`,document,s)),t!==void 0&&_(t,e=>{e?(ge(`keydown`,document,o),ge(`keyup`,document,s)):(he(`keydown`,document,o),he(`keyup`,document,s))})};return Y()?(n(c),h(()=>{(t===void 0||t.value)&&(he(`keydown`,document,o),he(`keyup`,document,s))})):c(),j(r)}function Fe(e,t,n){if(!t)return e;let r=y(e.value),i=null;return _(e,e=>{i!==null&&window.clearTimeout(i),e===!0?n&&!n.value?r.value=!0:i=window.setTimeout(()=>{r.value=!0},t):r.value=!1}),r}function Ie(e){return t=>{t?e.value=t.$el:e.value=null}}var Le=w({name:`ChevronRight`,render(){return u(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},u(`path`,{d:`M5.64645 3.14645C5.45118 3.34171 5.45118 3.65829 5.64645 3.85355L9.79289 8L5.64645 12.1464C5.45118 12.3417 5.45118 12.6583 5.64645 12.8536C5.84171 13.0488 6.15829 13.0488 6.35355 12.8536L10.8536 8.35355C11.0488 8.15829 11.0488 7.84171 10.8536 7.64645L6.35355 3.14645C6.15829 2.95118 5.84171 2.95118 5.64645 3.14645Z`,fill:`currentColor`}))}}),Re=L(`n-dropdown-menu`),ze=L(`n-dropdown`),Be=L(`n-dropdown-option`),Ve=w({name:`DropdownDivider`,props:{clsPrefix:{type:String,required:!0}},render(){return u(`div`,{class:`${this.clsPrefix}-dropdown-divider`})}}),He=w({name:`DropdownGroupHeader`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){let{showIconRef:e,hasSubmenuRef:t}=o(Re),{renderLabelRef:n,labelFieldRef:r,nodePropsRef:i,renderOptionRef:a}=o(ze);return{labelField:r,showIcon:e,hasSubmenu:t,renderLabel:n,nodeProps:i,renderOption:a}},render(){let{clsPrefix:e,hasSubmenu:t,showIcon:n,nodeProps:r,renderLabel:i,renderOption:a}=this,{rawNode:o}=this.tmNode,s=u(`div`,Object.assign({class:`${e}-dropdown-option`},r?.(o)),u(`div`,{class:`${e}-dropdown-option-body ${e}-dropdown-option-body--group`},u(`div`,{"data-dropdown-option":!0,class:[`${e}-dropdown-option-body__prefix`,n&&`${e}-dropdown-option-body__prefix--show-icon`]},Z(o.icon)),u(`div`,{class:`${e}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(o):Z(o.title??o[this.labelField])),u(`div`,{class:[`${e}-dropdown-option-body__suffix`,t&&`${e}-dropdown-option-body__suffix--has-submenu`],"data-dropdown-option":!0})));return a?a({node:s,option:o}):s}}),Ue=V(`icon`,`
2
- height: 1em;
3
- width: 1em;
4
- line-height: 1em;
5
- text-align: center;
6
- display: inline-block;
7
- position: relative;
8
- fill: currentColor;
9
- `,[H(`color-transition`,{transition:`color .3s var(--n-bezier)`}),H(`depth`,{color:`var(--n-color)`},[K(`svg`,{opacity:`var(--n-opacity)`,transition:`opacity .3s var(--n-bezier)`})]),K(`svg`,{height:`1em`,width:`1em`})]),We=w({_n_icon__:!0,name:`Icon`,inheritAttrs:!1,props:Object.assign(Object.assign({},B.props),{depth:[String,Number],size:[Number,String],color:String,component:[Object,Function]}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n}=R(e),i=B(`Icon`,`-icon`,Ue,xe,e,t),a=r(()=>{let{depth:t}=e,{common:{cubicBezierEaseInOut:n},self:r}=i.value;if(t!==void 0){let{color:e,[`opacity${t}Depth`]:i}=r;return{"--n-bezier":n,"--n-color":e,"--n-opacity":i}}return{"--n-bezier":n,"--n-color":``,"--n-opacity":``}}),o=n?ee(`icon`,r(()=>`${e.depth||`d`}`),a,e):void 0;return{mergedClsPrefix:t,mergedStyle:r(()=>{let{size:t,color:n}=e;return{fontSize:se(t),color:n}}),cssVars:n?void 0:a,themeClass:o?.themeClass,onRender:o?.onRender}},render(){let{$parent:e,depth:t,mergedClsPrefix:n,component:r,onRender:i,themeClass:a}=this;return e?.$options?._n_icon__&&z(`icon`,"don't wrap `n-icon` inside `n-icon`"),i?.(),u(`i`,l(this.$attrs,{role:`img`,class:[`${n}-icon`,a,{[`${n}-icon--depth`]:t,[`${n}-icon--color-transition`]:t!==void 0}],style:[this.cssVars,this.mergedStyle]}),r?u(r):this.$slots)}});function Ge(e,t){return e.type===`submenu`||e.type===void 0&&e[t]!==void 0}function Ke(e){return e.type===`group`}function qe(e){return e.type===`divider`}function Je(e){return e.type===`render`}var Ye=w({name:`DropdownOption`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null},placement:{type:String,default:`right-start`},props:Object,scrollable:Boolean},setup(e){let t=o(ze),{hoverKeyRef:n,keyboardKeyRef:i,lastToggledSubmenuKeyRef:a,pendingKeyPathRef:s,activeKeyPathRef:l,animatedRef:u,mergedShowRef:d,renderLabelRef:f,renderIconRef:p,labelFieldRef:m,childrenFieldRef:h,renderOptionRef:g,nodePropsRef:_,menuPropsRef:v}=t,b=o(Be,null),x=o(Re),S=o(X),C=r(()=>e.tmNode.rawNode),w=r(()=>{let{value:t}=h;return Ge(e.tmNode.rawNode,t)}),T=r(()=>{let{disabled:t}=e.tmNode;return t}),E=Fe(r(()=>{if(!w.value)return!1;let{key:t,disabled:r}=e.tmNode;if(r)return!1;let{value:o}=n,{value:c}=i,{value:l}=a,{value:u}=s;return o===null?c===null?l===null?!1:u.includes(t):u.includes(t)&&u[u.length-1]!==t:u.includes(t)}),300,r(()=>i.value===null&&!u.value)),D=r(()=>!!b?.enteringSubmenuRef.value),O=y(!1);c(Be,{enteringSubmenuRef:O});function k(){O.value=!0}function A(){O.value=!1}function j(){let{parentKey:t,tmNode:r}=e;r.disabled||d.value&&(a.value=t,i.value=null,n.value=r.key)}function M(){let{tmNode:t}=e;t.disabled||d.value&&n.value!==t.key&&j()}function N(t){if(e.tmNode.disabled||!d.value)return;let{relatedTarget:r}=t;r&&!fe({target:r},`dropdownOption`)&&!fe({target:r},`scrollbarRail`)&&(n.value=null)}function P(){let{value:n}=w,{tmNode:r}=e;d.value&&!n&&!r.disabled&&(t.doSelect(r.key,r.rawNode),t.doUpdateShow(!1))}return{labelField:m,renderLabel:f,renderIcon:p,siblingHasIcon:x.showIconRef,siblingHasSubmenu:x.hasSubmenuRef,menuProps:v,popoverBody:S,animated:u,mergedShowSubmenu:r(()=>E.value&&!D.value),rawNode:C,hasSubmenu:w,pending:q(()=>{let{value:t}=s,{key:n}=e.tmNode;return t.includes(n)}),childActive:q(()=>{let{value:t}=l,{key:n}=e.tmNode,r=t.findIndex(e=>n===e);return r===-1?!1:r<t.length-1}),active:q(()=>{let{value:t}=l,{key:n}=e.tmNode,r=t.findIndex(e=>n===e);return r===-1?!1:r===t.length-1}),mergedDisabled:T,renderOption:g,nodeProps:_,handleClick:P,handleMouseMove:M,handleMouseEnter:j,handleMouseLeave:N,handleSubmenuBeforeEnter:k,handleSubmenuAfterEnter:A}},render(){let{animated:e,rawNode:t,mergedShowSubmenu:n,clsPrefix:r,siblingHasIcon:i,siblingHasSubmenu:a,renderLabel:o,renderIcon:s,renderOption:c,nodeProps:d,props:f,scrollable:p}=this,m=null;if(n){let e=this.menuProps?.call(this,t,t.children);m=u(Qe,Object.assign({},e,{clsPrefix:r,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}let h={class:[`${r}-dropdown-option-body`,this.pending&&`${r}-dropdown-option-body--pending`,this.active&&`${r}-dropdown-option-body--active`,this.childActive&&`${r}-dropdown-option-body--child-active`,this.mergedDisabled&&`${r}-dropdown-option-body--disabled`],onMousemove:this.handleMouseMove,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onClick:this.handleClick},g=d?.(t),_=u(`div`,Object.assign({class:[`${r}-dropdown-option`,g?.class],"data-dropdown-option":!0},g),u(`div`,l(h,f),[u(`div`,{class:[`${r}-dropdown-option-body__prefix`,i&&`${r}-dropdown-option-body__prefix--show-icon`]},[s?s(t):Z(t.icon)]),u(`div`,{"data-dropdown-option":!0,class:`${r}-dropdown-option-body__label`},o?o(t):Z(t[this.labelField]??t.title)),u(`div`,{"data-dropdown-option":!0,class:[`${r}-dropdown-option-body__suffix`,a&&`${r}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?u(We,null,{default:()=>u(Le,null)}):null)]),this.hasSubmenu?u(te,null,{default:()=>[u(re,null,{default:()=>u(`div`,{class:`${r}-dropdown-offset-container`},u(ie,{show:this.mergedShowSubmenu,placement:this.placement,to:p&&this.popoverBody||void 0,teleportDisabled:!p},{default:()=>u(`div`,{class:`${r}-dropdown-menu-wrapper`},e?u(b,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:`fade-in-scale-up-transition`,appear:!0},{default:()=>m}):m)}))})]}):null);return c?c({node:_,option:t}):_}}),Xe=w({name:`NDropdownGroup`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null}},render(){let{tmNode:e,parentKey:t,clsPrefix:n}=this,{children:r}=e;return u(N,null,u(He,{clsPrefix:n,tmNode:e,key:e.key}),r?.map(e=>{let{rawNode:r}=e;return r.show===!1?null:qe(r)?u(Ve,{clsPrefix:n,key:e.key}):e.isGroup?(z(`dropdown`,"`group` node is not allowed to be put in `group` node."),null):u(Ye,{clsPrefix:n,tmNode:e,parentKey:t,key:e.key})}))}}),Ze=w({name:`DropdownRenderOption`,props:{tmNode:{type:Object,required:!0}},render(){let{rawNode:{render:e,props:t}}=this.tmNode;return u(`div`,t,[e?.()])}}),Qe=w({name:`DropdownMenu`,props:{scrollable:Boolean,showArrow:Boolean,arrowStyle:[String,Object],clsPrefix:{type:String,required:!0},tmNodes:{type:Array,default:()=>[]},parentKey:{type:[String,Number],default:null}},setup(e){let{renderIconRef:t,childrenFieldRef:n}=o(ze);c(Re,{showIconRef:r(()=>{let n=t.value;return e.tmNodes.some(e=>{if(e.isGroup)return e.children?.some(({rawNode:e})=>n?n(e):e.icon);let{rawNode:t}=e;return n?n(t):t.icon})}),hasSubmenuRef:r(()=>{let{value:t}=n;return e.tmNodes.some(e=>{if(e.isGroup)return e.children?.some(({rawNode:e})=>Ge(e,t));let{rawNode:n}=e;return Ge(n,t)})})});let i=y(null);return c(ne,null),c(ae,null),c(X,i),{bodyRef:i}},render(){let{parentKey:e,clsPrefix:t,scrollable:n}=this,r=this.tmNodes.map(r=>{let{rawNode:i}=r;return i.show===!1?null:Je(i)?u(Ze,{tmNode:r,key:r.key}):qe(i)?u(Ve,{clsPrefix:t,key:r.key}):Ke(i)?u(Xe,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):u(Ye,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return u(`div`,{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:`bodyRef`},n?u(_e,{contentClass:`${t}-dropdown-menu__content`},{default:()=>r}):r,this.showArrow?ue({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),$e=V(`dropdown-menu`,`
10
- transform-origin: var(--v-transform-origin);
11
- background-color: var(--n-color);
12
- border-radius: var(--n-border-radius);
13
- box-shadow: var(--n-box-shadow);
14
- position: relative;
15
- transition:
16
- background-color .3s var(--n-bezier),
17
- box-shadow .3s var(--n-bezier);
18
- `,[le(),V(`dropdown-option`,`
19
- position: relative;
20
- `,[K(`a`,`
21
- text-decoration: none;
22
- color: inherit;
23
- outline: none;
24
- `,[K(`&::before`,`
25
- content: "";
26
- position: absolute;
27
- left: 0;
28
- right: 0;
29
- top: 0;
30
- bottom: 0;
31
- `)]),V(`dropdown-option-body`,`
32
- display: flex;
33
- cursor: pointer;
34
- position: relative;
35
- height: var(--n-option-height);
36
- line-height: var(--n-option-height);
37
- font-size: var(--n-font-size);
38
- color: var(--n-option-text-color);
39
- transition: color .3s var(--n-bezier);
40
- `,[K(`&::before`,`
41
- content: "";
42
- position: absolute;
43
- top: 0;
44
- bottom: 0;
45
- left: 4px;
46
- right: 4px;
47
- transition: background-color .3s var(--n-bezier);
48
- border-radius: var(--n-border-radius);
49
- `),U(`disabled`,[H(`pending`,`
50
- color: var(--n-option-text-color-hover);
51
- `,[J(`prefix, suffix`,`
52
- color: var(--n-option-text-color-hover);
53
- `),K(`&::before`,`background-color: var(--n-option-color-hover);`)]),H(`active`,`
54
- color: var(--n-option-text-color-active);
55
- `,[J(`prefix, suffix`,`
56
- color: var(--n-option-text-color-active);
57
- `),K(`&::before`,`background-color: var(--n-option-color-active);`)]),H(`child-active`,`
58
- color: var(--n-option-text-color-child-active);
59
- `,[J(`prefix, suffix`,`
60
- color: var(--n-option-text-color-child-active);
61
- `)])]),H(`disabled`,`
62
- cursor: not-allowed;
63
- opacity: var(--n-option-opacity-disabled);
64
- `),H(`group`,`
65
- font-size: calc(var(--n-font-size) - 1px);
66
- color: var(--n-group-header-text-color);
67
- `,[J(`prefix`,`
68
- width: calc(var(--n-option-prefix-width) / 2);
69
- `,[H(`show-icon`,`
70
- width: calc(var(--n-option-icon-prefix-width) / 2);
71
- `)])]),J(`prefix`,`
72
- width: var(--n-option-prefix-width);
73
- display: flex;
74
- justify-content: center;
75
- align-items: center;
76
- color: var(--n-prefix-color);
77
- transition: color .3s var(--n-bezier);
78
- z-index: 1;
79
- `,[H(`show-icon`,`
80
- width: var(--n-option-icon-prefix-width);
81
- `),V(`icon`,`
82
- font-size: var(--n-option-icon-size);
83
- `)]),J(`label`,`
84
- white-space: nowrap;
85
- flex: 1;
86
- z-index: 1;
87
- `),J(`suffix`,`
88
- box-sizing: border-box;
89
- flex-grow: 0;
90
- flex-shrink: 0;
91
- display: flex;
92
- justify-content: flex-end;
93
- align-items: center;
94
- min-width: var(--n-option-suffix-width);
95
- padding: 0 8px;
96
- transition: color .3s var(--n-bezier);
97
- color: var(--n-suffix-color);
98
- z-index: 1;
99
- `,[H(`has-submenu`,`
100
- width: var(--n-option-icon-suffix-width);
101
- `),V(`icon`,`
102
- font-size: var(--n-option-icon-size);
103
- `)]),V(`dropdown-menu`,`pointer-events: all;`)]),V(`dropdown-offset-container`,`
104
- pointer-events: none;
105
- position: absolute;
106
- left: 0;
107
- right: 0;
108
- top: -4px;
109
- bottom: -4px;
110
- `)]),V(`dropdown-divider`,`
111
- transition: background-color .3s var(--n-bezier);
112
- background-color: var(--n-divider-color);
113
- height: 1px;
114
- margin: 4px 0;
115
- `),V(`dropdown-menu-wrapper`,`
116
- transform-origin: var(--v-transform-origin);
117
- width: fit-content;
118
- `),K(`>`,[V(`scrollbar`,`
119
- height: inherit;
120
- max-height: inherit;
121
- `)]),U(`scrollable`,`
122
- padding: var(--n-padding);
123
- `),H(`scrollable`,[J(`content`,`
124
- padding: var(--n-padding);
125
- `)])]),et={animated:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},size:String,inverted:Boolean,placement:{type:String,default:`bottom`},onSelect:[Function,Array],options:{type:Array,default:()=>[]},menuProps:Function,showArrow:Boolean,renderLabel:Function,renderIcon:Function,renderOption:Function,nodeProps:Function,labelField:{type:String,default:`label`},keyField:{type:String,default:`key`},childrenField:{type:String,default:`children`},value:[String,Number]},tt=Object.keys(ce),nt=w({name:`Dropdown`,inheritAttrs:!1,props:Object.assign(Object.assign(Object.assign({},ce),et),B.props),setup(e){let t=y(!1),n=me(x(e,`show`),t),i=r(()=>{let{keyField:t,childrenField:n}=e;return pe(e.options,{getKey(e){return e[t]},getDisabled(e){return e.disabled===!0},getIgnored(e){return e.type===`divider`||e.type===`render`},getChildren(e){return e[n]}})}),a=r(()=>i.value.treeNodes),o=y(null),s=y(null),l=y(null),u=r(()=>o.value??s.value??l.value??null),d=r(()=>i.value.getPath(u.value).keyPath),f=r(()=>i.value.getPath(e.value).keyPath),p=q(()=>e.keyboard&&n.value);Pe({keydown:{ArrowUp:{prevent:!0,handler:O},ArrowRight:{prevent:!0,handler:D},ArrowDown:{prevent:!0,handler:k},ArrowLeft:{prevent:!0,handler:E},Enter:{prevent:!0,handler:A},Escape:T}},p);let{mergedClsPrefixRef:m,inlineThemeDisabled:h,mergedComponentPropsRef:g}=R(e),v=r(()=>e.size||g?.value?.Dropdown?.size||`medium`),b=B(`Dropdown`,`-dropdown`,$e,be,e,m);c(ze,{labelFieldRef:x(e,`labelField`),childrenFieldRef:x(e,`childrenField`),renderLabelRef:x(e,`renderLabel`),renderIconRef:x(e,`renderIcon`),hoverKeyRef:o,keyboardKeyRef:s,lastToggledSubmenuKeyRef:l,pendingKeyPathRef:d,activeKeyPathRef:f,animatedRef:x(e,`animated`),mergedShowRef:n,nodePropsRef:x(e,`nodeProps`),renderOptionRef:x(e,`renderOption`),menuPropsRef:x(e,`menuProps`),doSelect:S,doUpdateShow:C}),_(n,t=>{!e.animated&&!t&&w()});function S(t,n){let{onSelect:r}=e;r&&G(r,t,n)}function C(n){let{"onUpdate:show":r,onUpdateShow:i}=e;r&&G(r,n),i&&G(i,n),t.value=n}function w(){o.value=null,s.value=null,l.value=null}function T(){C(!1)}function E(){M(`left`)}function D(){M(`right`)}function O(){M(`up`)}function k(){M(`down`)}function A(){let e=j();e?.isLeaf&&n.value&&(S(e.key,e.rawNode),C(!1))}function j(){let{value:e}=i,{value:t}=u;return!e||t===null?null:e.getNode(t)??null}function M(e){let{value:t}=u,{value:{getFirstAvailableNode:n}}=i,r=null;if(t===null){let e=n();e!==null&&(r=e.key)}else{let t=j();if(t){let n;switch(e){case`down`:n=t.getNext();break;case`up`:n=t.getPrev();break;case`right`:n=t.getChild();break;case`left`:n=t.getParent();break}n&&(r=n.key)}}r!==null&&(o.value=null,s.value=r)}let N=r(()=>{let{inverted:t}=e,n=v.value,{common:{cubicBezierEaseInOut:r},self:i}=b.value,{padding:a,dividerColor:o,borderRadius:s,optionOpacityDisabled:c,[W(`optionIconSuffixWidth`,n)]:l,[W(`optionSuffixWidth`,n)]:u,[W(`optionIconPrefixWidth`,n)]:d,[W(`optionPrefixWidth`,n)]:f,[W(`fontSize`,n)]:p,[W(`optionHeight`,n)]:m,[W(`optionIconSize`,n)]:h}=i,g={"--n-bezier":r,"--n-font-size":p,"--n-padding":a,"--n-border-radius":s,"--n-option-height":m,"--n-option-prefix-width":f,"--n-option-icon-prefix-width":d,"--n-option-suffix-width":u,"--n-option-icon-suffix-width":l,"--n-option-icon-size":h,"--n-divider-color":o,"--n-option-opacity-disabled":c};return t?(g[`--n-color`]=i.colorInverted,g[`--n-option-color-hover`]=i.optionColorHoverInverted,g[`--n-option-color-active`]=i.optionColorActiveInverted,g[`--n-option-text-color`]=i.optionTextColorInverted,g[`--n-option-text-color-hover`]=i.optionTextColorHoverInverted,g[`--n-option-text-color-active`]=i.optionTextColorActiveInverted,g[`--n-option-text-color-child-active`]=i.optionTextColorChildActiveInverted,g[`--n-prefix-color`]=i.prefixColorInverted,g[`--n-suffix-color`]=i.suffixColorInverted,g[`--n-group-header-text-color`]=i.groupHeaderTextColorInverted):(g[`--n-color`]=i.color,g[`--n-option-color-hover`]=i.optionColorHover,g[`--n-option-color-active`]=i.optionColorActive,g[`--n-option-text-color`]=i.optionTextColor,g[`--n-option-text-color-hover`]=i.optionTextColorHover,g[`--n-option-text-color-active`]=i.optionTextColorActive,g[`--n-option-text-color-child-active`]=i.optionTextColorChildActive,g[`--n-prefix-color`]=i.prefixColor,g[`--n-suffix-color`]=i.suffixColor,g[`--n-group-header-text-color`]=i.groupHeaderTextColor),g}),P=h?ee(`dropdown`,r(()=>`${v.value[0]}${e.inverted?`i`:``}`),N,e):void 0;return{mergedClsPrefix:m,mergedTheme:b,mergedSize:v,tmNodes:a,mergedShow:n,handleAfterLeave:()=>{e.animated&&w()},doUpdateShow:C,cssVars:h?void 0:N,themeClass:P?.themeClass,onRender:P?.onRender}},render(){let e=(e,t,n,r,i)=>{var a;let{mergedClsPrefix:o,menuProps:s}=this;(a=this.onRender)==null||a.call(this);let c=s?.(void 0,this.tmNodes.map(e=>e.rawNode))||{},d={ref:Ie(t),class:[e,`${o}-dropdown`,`${o}-dropdown--${this.mergedSize}-size`,this.themeClass],clsPrefix:o,tmNodes:this.tmNodes,style:[...n,this.cssVars],showArrow:this.showArrow,arrowStyle:this.arrowStyle,scrollable:this.scrollable,onMouseenter:r,onMouseleave:i};return u(Qe,l(this.$attrs,d,c))},{mergedTheme:t}=this,n={show:this.mergedShow,theme:t.peers.Popover,themeOverrides:t.peerOverrides.Popover,internalOnAfterLeave:this.handleAfterLeave,internalRenderBody:e,onUpdateShow:this.doUpdateShow,"onUpdate:show":void 0};return u(de,Object.assign({},oe(this.$props,tt),n),{trigger:()=>{var e;return(e=this.$slots).default?.call(e)}})}}),rt={class:`chat-input-area`},it={key:0,class:`attachment-previews`},at=[`src`,`alt`],ot={key:1,class:`attachment-file`},st={class:`file-name`},ct={class:`file-size`},lt=[`onClick`],ut=[`placeholder`],dt={class:`input-actions`},ft=F(w({__name:`ChatInput`,setup(n){let o=Se(),{t:c}=P(),l=y(``),u=y(),f=y(),m=y([]),h=y(!1),g=y(0),_=y(!1),v=r(()=>l.value.trim()||m.value.length>0);function b(e){if(m.value.find(t=>t.name===e.name))return;let t=Date.now().toString(36)+Math.random().toString(36).slice(2,8),n=URL.createObjectURL(e);m.value.push({id:t,name:e.name,type:e.type,size:e.size,url:n,file:e})}function x(){f.value?.click()}function S(e){let t=e.target;if(t.files){for(let e of t.files)b(e);t.value=``}}function w(e){let t=Array.from(e.clipboardData?.items||[]).filter(e=>e.type.startsWith(`image/`));if(t.length){e.preventDefault();for(let e of t){let t=e.getAsFile();if(!t)continue;let n=e.type.split(`/`)[1]||`png`;b(new File([t],`pasted-${Date.now()}.${n}`,{type:e.type}))}}}function O(e){e.preventDefault()}function j(e){e.preventDefault(),e.dataTransfer?.types.includes(`Files`)&&(g.value++,h.value=!0)}function F(){g.value--,g.value<=0&&(g.value=0,h.value=!1)}function I(e){e.preventDefault(),g.value=0,h.value=!1;let t=Array.from(e.dataTransfer?.files||[]);if(t.length){for(let e of t)b(e);u.value?.focus()}}function L(){let e=l.value.trim();!e&&m.value.length===0||(o.sendMessage(e,m.value.length>0?m.value:void 0),l.value=``,m.value=[],u.value&&(u.value.style.height=`auto`))}function R(){_.value=!0}function z(){requestAnimationFrame(()=>{_.value=!1})}function B(e){return _.value||e.isComposing||e.keyCode===229}function V(e){e.key!==`Enter`||e.shiftKey||B(e)||(e.preventDefault(),L())}function H(e){let t=e.target;t.style.height=`auto`,t.style.height=Math.min(t.scrollHeight,100)+`px`}function U(e){let t=m.value.findIndex(t=>t.id===e);t!==-1&&(URL.revokeObjectURL(m.value[t].url),m.value.splice(t,1))}function W(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function G(e){return e.startsWith(`image/`)}return(n,r)=>(s(),i(`div`,rt,[m.value.length>0?(s(),i(`div`,it,[(s(!0),i(N,null,A(m.value,e=>(s(),i(`div`,{key:e.id,class:D([`attachment-preview`,{image:G(e.type)}])},[G(e.type)?(s(),i(`img`,{key:0,src:e.url,alt:e.name,class:`attachment-thumb`},null,8,at)):(s(),i(`div`,ot,[r[2]||=M(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[M(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),M(`polyline`,{points:`14 2 14 8 20 8`})],-1),M(`span`,st,C(e.name),1),M(`span`,ct,C(W(e.size)),1)])),M(`button`,{class:`attachment-remove`,onClick:t=>U(e.id)},[...r[3]||=[M(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),M(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,lt)],2))),128))])):a(``,!0),M(`div`,{class:D([`input-wrapper`,{"drag-over":h.value}]),onDragover:O,onDragenter:j,onDragleave:F,onDrop:I},[M(`input`,{ref_key:`fileInputRef`,ref:f,type:`file`,multiple:``,class:`file-input-hidden`,onChange:S},null,544),e(M(`textarea`,{ref_key:`textareaRef`,ref:u,"onUpdate:modelValue":r[0]||=e=>l.value=e,class:`input-textarea`,placeholder:k(c)(`chat.inputPlaceholder`),rows:`1`,onKeydown:V,onCompositionstart:R,onCompositionend:z,onInput:H,onPaste:w},null,40,ut),[[E,l.value]]),M(`div`,dt,[t(k(Ce),{trigger:`hover`},{trigger:d(()=>[t(k(Q),{quaternary:``,size:`small`,onClick:x,circle:``},{icon:d(()=>[...r[4]||=[M(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[M(`path`,{d:`M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48`})],-1)]]),_:1})]),default:d(()=>[T(` `+C(k(c)(`chat.attachFiles`)),1)]),_:1}),k(o).isStreaming?(s(),p(k(Q),{key:0,size:`small`,type:`error`,onClick:r[1]||=e=>k(o).stopStreaming()},{default:d(()=>[T(C(k(c)(`chat.stop`)),1)]),_:1})):a(``,!0),t(k(Q),{size:`small`,type:`primary`,disabled:!v.value||k(o).isStreaming,onClick:L},{icon:d(()=>[...r[5]||=[M(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`22`,y1:`2`,x2:`11`,y2:`13`}),M(`polygon`,{points:`22 2 15 22 11 13 2 9 22 2`})],-1)]]),default:d(()=>[T(` `+C(k(c)(`chat.send`)),1)]),_:1},8,[`disabled`])])],34)]))}}),[[`__scopeId`,`data-v-4c2b3ca2`]]),pt={key:1,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-icon`},mt={class:`tool-name`},ht={key:2,class:`tool-preview`},gt={key:3,class:`tool-spinner`},_t={key:4,class:`tool-error-badge`},vt={key:0,class:`tool-detail-section`,"data-copy-source":`tool-args`},yt={class:`tool-detail-label`},bt=[`innerHTML`],xt={key:1,class:`tool-detail-section`,"data-copy-source":`tool-result`},St={class:`tool-detail-label`},Ct=[`innerHTML`],wt={key:1,class:`msg-body`},Tt={key:0,src:I,alt:`Hermes`,class:`msg-avatar`},Et={key:0,class:`msg-attachments`},Dt=[`src`,`alt`],Ot={key:1,class:`msg-attachment-file`},kt={class:`att-name`},At={class:`att-size`},jt={key:2,class:`streaming-dots`},Mt={class:`message-time`},$=2e3,Nt=F(w({__name:`MessageItem`,props:{message:{}},setup(e){let t=e,{t:n}=P(),o=r(()=>t.message.role===`system`),c=y(!1),l=r(()=>new Date(t.message.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}));function u(e){return e.startsWith(`image/`)}function d(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function f(e){if(!e)return{full:``,display:``};try{let t=JSON.stringify(JSON.parse(e),null,2);return{full:t,display:t.length>$?t.slice(0,$)+`
126
- `+n(`chat.truncated`):t,language:`json`}}catch{return{full:e,display:e.length>$?e.slice(0,$)+`
127
- `+n(`chat.truncated`):e}}}function m(e,t){return Ae(e,t,n(`common.copy`),{maxHighlightLength:$})}async function h(e){let t=e.target;if(!(t instanceof HTMLElement))return;let n=t.closest(`[data-copy-code="true"]`);if(!n)return;e.preventDefault();let r=n.closest(`[data-copy-source]`)?.dataset.copySource;if(r===`tool-args`&&x.value){await je(x.value);return}if(r===`tool-result`&&w.value){await je(w.value);return}await Me(e)}let g=r(()=>(t.message.attachments?.length??0)>0),_=r(()=>!!(t.message.toolArgs||t.message.toolResult)),v=r(()=>f(t.message.toolArgs)),b=r(()=>f(t.message.toolResult)),x=r(()=>v.value.full),S=r(()=>v.value.display),w=r(()=>b.value.full),T=r(()=>b.value.display),E=r(()=>S.value?m(S.value,v.value.language):``),O=r(()=>T.value?m(T.value,b.value.language):``);return(t,r)=>(s(),i(`div`,{class:D([`message`,[e.message.role]])},[e.message.role===`tool`?(s(),i(N,{key:0},[M(`div`,{class:D([`tool-line`,{expandable:_.value}]),onClick:r[0]||=e=>_.value&&(c.value=!c.value)},[_.value?(s(),i(`svg`,{key:0,width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:D([`tool-chevron`,{rotated:c.value}])},[...r[1]||=[M(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)):(s(),i(`svg`,pt,[...r[2]||=[M(`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`},null,-1)]])),M(`span`,mt,C(e.message.toolName),1),e.message.toolPreview&&!c.value?(s(),i(`span`,ht,C(e.message.toolPreview),1)):a(``,!0),e.message.toolStatus===`running`?(s(),i(`span`,gt)):a(``,!0),e.message.toolStatus===`error`?(s(),i(`span`,_t,C(k(n)(`chat.error`)),1)):a(``,!0)],2),c.value&&_.value?(s(),i(`div`,{key:0,class:`tool-details`,onClick:h},[S.value?(s(),i(`div`,vt,[M(`div`,yt,C(k(n)(`chat.arguments`)),1),M(`div`,{class:`tool-detail-code-block`,innerHTML:E.value},null,8,bt)])):a(``,!0),T.value?(s(),i(`div`,xt,[M(`div`,St,C(k(n)(`chat.result`)),1),M(`div`,{class:`tool-detail-code-block`,innerHTML:O.value},null,8,Ct)])):a(``,!0)])):a(``,!0)],64)):(s(),i(`div`,wt,[e.message.role===`assistant`?(s(),i(`img`,Tt)):a(``,!0),M(`div`,{class:D([`msg-content`,e.message.role])},[M(`div`,{class:D([`message-bubble`,{system:o.value}])},[g.value?(s(),i(`div`,Et,[(s(!0),i(N,null,A(e.message.attachments,e=>(s(),i(`div`,{key:e.id,class:D([`msg-attachment`,{image:u(e.type)}])},[u(e.type)&&e.url?(s(),i(`img`,{key:0,src:e.url,alt:e.name,class:`msg-attachment-thumb`},null,8,Dt)):(s(),i(`div`,Ot,[r[3]||=M(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[M(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),M(`polyline`,{points:`14 2 14 8 20 8`})],-1),M(`span`,kt,C(e.name),1),M(`span`,At,C(d(e.size)),1)]))],2))),128))])):a(``,!0),e.message.content?(s(),p(Ne,{key:1,content:e.message.content},null,8,[`content`])):a(``,!0),e.message.isStreaming&&!e.message.content?(s(),i(`span`,jt,[...r[4]||=[M(`span`,null,null,-1),M(`span`,null,null,-1),M(`span`,null,null,-1)]])):a(``,!0)],2),M(`div`,Mt,C(l.value),1)],2)]))],2))}}),[[`__scopeId`,`data-v-c3211247`]]),Pt=`/assets/thinking-light-BjeGd2gJ.mp4`,Ft=`/assets/thinking-dark-yYkYRZLs.mp4`,It={key:0,class:`empty-state`},Lt={key:0,class:`streaming-indicator`},Rt=[`src`],zt={key:0,class:`tool-calls-panel`},Bt={class:`tool-call-name`},Vt={key:0,class:`tool-call-preview`},Ht={key:1,class:`tool-call-spinner`},Ut={key:2,class:`tool-call-error`},Wt=F(w({__name:`MessageList`,setup(e){let n=Se(),{t:o}=P(),{isDark:c}=Ee(),l=y(),u=r(()=>n.messages.filter(e=>e.role!==`tool`)),m=r(()=>{let e=n.messages,t=-1;for(let n=e.length-1;n>=0;n--)if(e[n].role===`user`){t=n;break}return[...e.filter((e,n)=>e.role===`tool`&&n>t)].reverse()});function h(e=200){let t=l.value;return t?t.scrollHeight-t.scrollTop-t.clientHeight<e:!0}function g(){f(()=>{l.value&&(l.value.scrollTop=l.value.scrollHeight)})}return _(()=>n.activeSessionId,e=>{e&&g()},{immediate:!0}),_(()=>n.isRunActive,e=>{e&&g()}),_(()=>n.messages[n.messages.length-1]?.content,()=>{if(!n.isStreaming){g();return}h()&&g()}),_(m,()=>{if(!n.isStreaming){g();return}h()&&g()}),(e,r)=>(s(),i(`div`,{ref_key:`listRef`,ref:l,class:`message-list`},[k(n).messages.length===0?(s(),i(`div`,It,[r[0]||=M(`img`,{src:`/logo.png`,alt:`Hermes`,class:`empty-logo`},null,-1),M(`p`,null,C(k(o)(`chat.emptyState`)),1)])):a(``,!0),(s(!0),i(N,null,A(u.value,e=>(s(),p(Nt,{key:e.id,message:e},null,8,[`message`]))),128)),t(b,{name:`fade`},{default:d(()=>[k(n).isRunActive?(s(),i(`div`,Lt,[M(`video`,{src:k(c)?k(Ft):k(Pt),autoplay:``,loop:``,muted:``,playsinline:``,class:`thinking-video`},null,8,Rt),m.value.length>0?(s(),i(`div`,zt,[(s(!0),i(N,null,A(m.value,e=>(s(),i(`div`,{key:e.id,class:`tool-call-item`},[r[1]||=M(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-call-icon`},[M(`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`})],-1),M(`span`,Bt,C(e.toolName),1),e.toolPreview?(s(),i(`span`,Vt,C(e.toolPreview),1)):a(``,!0),e.toolStatus===`running`?(s(),i(`span`,Ht)):a(``,!0),e.toolStatus===`error`?(s(),i(`span`,Ut,C(k(o)(`chat.error`)),1)):a(``,!0)]))),128))])):a(``,!0)])):a(``,!0)]),_:1})],512))}}),[[`__scopeId`,`data-v-9cc7b1be`]]),Gt={class:`chat-panel`},Kt={class:`session-list-header`},qt={key:0,class:`session-list-title`},Jt={class:`session-list-actions`},Yt={key:0,class:`session-items`},Xt={key:0,class:`session-loading`},Zt={key:1,class:`session-empty`},Qt=[`onClick`],$t={class:`session-group-label`},en={class:`session-group-count`},tn=[`onClick`,`onContextmenu`],nn={class:`session-item-content`},rn={class:`session-item-title-row`},an={key:0,class:`session-item-active-indicator`,"aria-hidden":`true`},on={class:`session-item-title`},sn={class:`session-item-meta`},cn={key:0,class:`session-item-model`},ln={class:`session-item-time`},un={class:`chat-main`},dn={class:`chat-header`},fn={class:`header-left`},pn={class:`header-session-title`},mn={key:0,class:`source-badge`},hn={class:`header-actions`},gn={key:0,class:`context-info`},_n=F(w({__name:`ChatPanel`,setup(e){let n=Se(),o=we(),{t:c}=P(),l=y(typeof window>`u`||!window.matchMedia(`(max-width: 768px)`).matches),u=null;function h(e){n.switchSession(e),u?.matches&&(l.value=!1)}function b(e){e.matches&&l.value&&(l.value=!1)}m(()=>{u=window.matchMedia(`(max-width: 768px)`),b(u),u.addEventListener(`change`,b)}),g(()=>{u?.removeEventListener(`change`,b)});let x=y(!1),w=y(``),E=y(null),O=y(null),j=y(new Set(JSON.parse(localStorage.getItem(`hermes_collapsed_groups`)||`[]`))),F={telegram:`Telegram`,api_server:`API Server`,cli:`CLI`,discord:`Discord`,slack:`Slack`,matrix:`Matrix`,whatsapp:`WhatsApp`,signal:`Signal`,email:`Email`,sms:`SMS`,dingtalk:`DingTalk`,feishu:`Feishu`,wecom:`WeCom`,weixin:`WeChat`,bluebubbles:`iMessage`,mattermost:`Mattermost`,cron:`Cron`};function I(e){return e?F[e]||e:``}function L(e){return e===`api_server`?-1:e===`cron`?999:0}function R(e){return[...e].sort((e,t)=>{let r=n.isSessionLive(e.id);return r===n.isSessionLive(t.id)?(t.updatedAt||0)-(e.updatedAt||0):r?-1:1})}let z=r(()=>{let e=new Map;for(let t of n.sessions){let n=t.source||``;e.has(n)||e.set(n,[]),e.get(n).push(t)}return[...e.keys()].sort((t,r)=>{let i=e.get(t)?.some(e=>n.isSessionLive(e.id))||!1;if(i!==(e.get(r)?.some(e=>n.isSessionLive(e.id))||!1))return i?-1:1;let a=L(t),o=L(r);return a===o?t.localeCompare(r):a-o}).map(t=>({source:t,label:t?I(t):c(`chat.other`),sessions:R(e.get(t))}))});function B(e){if(!j.value.has(e))j.value=new Set([...j.value,e]);else{j.value=new Set(z.value.map(e=>e.source).filter(t=>t!==e));let t=z.value.find(t=>t.source===e);t?.sessions.length&&n.switchSession(t.sessions[0].id)}localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...j.value]))}_(z,e=>{if(localStorage.getItem(`hermes_collapsed_groups`)!==null){let e=n.activeSession?.source;e&&j.value.has(e)&&(j.value=new Set([...j.value].filter(t=>t!==e)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...j.value])));return}j.value=new Set(e.slice(1).map(e=>e.source)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...j.value]))},{once:!0});let V=r(()=>n.activeSession?.title||c(`chat.newChat`)),H=r(()=>(n.activeSession?.inputTokens??0)+(n.activeSession?.outputTokens??0)),U={"claude-opus-4":2e5,"claude-sonnet-4":2e5,"claude-haiku-4":2e5,"claude-3.5-sonnet":2e5,"claude-3.5-haiku":2e5,"claude-3-opus":2e5,"claude-3-sonnet":2e5,"claude-3-haiku":2e5,"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,o1:2e5,"o1-mini":128e3,o3:2e5,"o3-mini":2e5,"o4-mini":2e5,"deepseek-chat":65536,"deepseek-reasoner":65536,"gemini-2.5-pro":1e6,"gemini-2.5-flash":1e6,"gemini-2.0-flash":1e6,"glm-4-plus":128e3,"glm-4":128e3,"qwen-max":128e3,"qwen-plus":128e3,"qwen-turbo":128e3},W=r(()=>{let e=n.activeSession?.model||``;for(let[t,n]of Object.entries(U))if(e.includes(t))return n;return null});function G(e){return e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`k`:String(e)}let K=r(()=>n.activeSession?.source||``);function q(){n.newChat()}function J(e){let t=e||n.activeSessionId;t&&(navigator.clipboard.writeText(t),o.success(c(`common.copied`)))}function ee(e){n.deleteSession(e),o.success(c(`chat.sessionDeleted`))}function te(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})}let ne=r(()=>[{label:c(`chat.rename`),key:`rename`},{label:c(`chat.copySessionId`),key:`copy-id`}]),Y=y(null);function re(e,t){e.preventDefault(),Y.value=t,X.value=!0,Z.value=e.clientX,ie.value=e.clientY}let X=y(!1),Z=y(0),ie=y(0);function ae(e){if(X.value=!1,Y.value){if(e===`copy-id`)J(Y.value);else if(e===`rename`){let e=n.sessions.find(e=>e.id===Y.value);E.value=Y.value,w.value=e?.title||``,x.value=!0,f(()=>{O.value?.focus()})}}}function oe(){X.value=!1}async function se(){if(!(!E.value||!w.value.trim())){if(await ke(E.value,w.value.trim())){let e=n.sessions.find(e=>e.id===E.value);e&&(e.title=w.value.trim()),n.activeSession?.id===E.value&&(n.activeSession.title=w.value.trim()),o.success(c(`chat.renamed`))}else o.error(c(`chat.renameFailed`));x.value=!1}}return(e,r)=>(s(),i(`div`,Gt,[M(`div`,{class:D([`session-backdrop`,{active:l.value}]),onClick:r[0]||=e=>l.value=!1},null,2),M(`aside`,{class:D([`session-list`,{collapsed:!l.value}])},[M(`div`,Kt,[l.value?(s(),i(`span`,qt,C(k(c)(`chat.sessions`)),1)):a(``,!0),M(`div`,Jt,[M(`button`,{class:`session-close-btn`,onClick:r[1]||=e=>l.value=!1},[...r[7]||=[M(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),M(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]]),t(k(Q),{quaternary:``,size:`tiny`,onClick:q,circle:``},{icon:d(()=>[...r[8]||=[M(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),M(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),_:1})])]),l.value?(s(),i(`div`,Yt,[k(n).isLoadingSessions&&k(n).sessions.length===0?(s(),i(`div`,Xt,C(k(c)(`common.loading`)),1)):k(n).sessions.length===0?(s(),i(`div`,Zt,C(k(c)(`chat.noSessions`)),1)):a(``,!0),(s(!0),i(N,null,A(z.value,e=>(s(),i(N,{key:e.source},[M(`div`,{class:`session-group-header`,onClick:t=>B(e.source)},[(s(),i(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:D([`group-chevron`,{collapsed:j.value.has(e.source)}])},[...r[9]||=[M(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),M(`span`,$t,C(e.label),1),M(`span`,en,C(e.sessions.length),1)],8,Qt),j.value.has(e.source)?a(``,!0):(s(!0),i(N,{key:0},A(e.sessions,e=>(s(),i(`button`,{key:e.id,class:D([`session-item`,{active:e.id===k(n).activeSessionId,live:k(n).isSessionLive(e.id)}]),onClick:t=>h(e.id),onContextmenu:t=>re(t,e.id)},[M(`div`,nn,[M(`span`,rn,[k(n).isSessionLive(e.id)?(s(),i(`span`,an,[...r[10]||=[M(`svg`,{class:`session-item-active-spinner`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[M(`circle`,{cx:`12`,cy:`12`,r:`8`,opacity:`0.2`}),M(`path`,{d:`M20 12a8 8 0 0 0-8-8`})],-1)]])):a(``,!0),M(`span`,on,C(e.title),1)]),M(`span`,sn,[e.model?(s(),i(`span`,cn,C(e.model),1)):a(``,!0),M(`span`,ln,C(te(e.createdAt)),1)])]),e.id!==k(n).activeSessionId||k(n).sessions.length>1?(s(),p(k(Te),{key:0,onPositiveClick:t=>ee(e.id)},{trigger:d(()=>[M(`button`,{class:`session-item-delete`,onClick:r[2]||=v(()=>{},[`stop`])},[...r[11]||=[M(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),M(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])]),default:d(()=>[T(` `+C(k(c)(`chat.deleteSession`)),1)]),_:1},8,[`onPositiveClick`])):a(``,!0)],42,tn))),128))],64))),128))])):a(``,!0)],2),t(k(nt),{placement:`bottom-start`,trigger:`manual`,x:Z.value,y:ie.value,options:ne.value,show:X.value,onSelect:ae,onClickoutside:oe},null,8,[`x`,`y`,`options`,`show`]),t(k(ve),{show:x.value,"onUpdate:show":r[4]||=e=>x.value=e,preset:`dialog`,title:k(c)(`chat.renameSession`),"positive-text":k(c)(`common.ok`),"negative-text":k(c)(`common.cancel`),onPositiveClick:se},{default:d(()=>[t(k(ye),{ref_key:`renameInputRef`,ref:O,value:w.value,"onUpdate:value":r[3]||=e=>w.value=e,placeholder:k(c)(`chat.enterNewTitle`),onKeydown:S(se,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`show`,`title`,`positive-text`,`negative-text`]),M(`div`,un,[M(`header`,dn,[M(`div`,fn,[t(k(Q),{quaternary:``,size:`small`,onClick:r[5]||=e=>l.value=!l.value,circle:``},{icon:d(()=>[...r[12]||=[M(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[M(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`}),M(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`}),M(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`}),M(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`})],-1)]]),_:1}),M(`span`,pn,C(V.value),1),K.value?(s(),i(`span`,mn,C(I(K.value)),1)):a(``,!0)]),M(`div`,hn,[t(k(Ce),{trigger:`hover`},{trigger:d(()=>[t(k(Q),{quaternary:``,size:`small`,onClick:r[6]||=e=>J(),circle:``},{icon:d(()=>[...r[13]||=[M(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[M(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),M(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1)]]),_:1})]),default:d(()=>[T(` `+C(k(c)(`chat.copySessionId`)),1)]),_:1}),t(k(Q),{size:`small`,onClick:q},{icon:d(()=>[...r[14]||=[M(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[M(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),M(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),default:d(()=>[T(` `+C(k(c)(`chat.newChat`)),1)]),_:1})])]),t(Wt),W.value===null?a(``,!0):(s(),i(`div`,gn,[M(`span`,null,C(G(H.value))+` / `+C(G(W.value)),1)])),t(ft)])]))}}),[[`__scopeId`,`data-v-775e3686`]]),vn={class:`chat-view`},yn=F(w({__name:`ChatView`,setup(e){let n=De(),r=Se(),a=Oe();return m(async()=>{n.loadModels(),await a.fetchProfiles(),r.loadSessions()}),(e,n)=>(s(),i(`div`,vn,[t(_n)]))}}),[[`__scopeId`,`data-v-6dae3628`]]);export{yn as default};
@@ -1 +0,0 @@
1
- [data-v-4c2b3ca2]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#333;--accent-hover:#1a1a1a;--accent-muted:#888;--text-primary:#1a1a1a;--text-secondary:#666;--text-muted:#999;--success:#2e7d32;--error:#c62828;--warning:#f57f17;--msg-user-bg:#f5f5f5;--msg-assistant-bg:#f5f5f5;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#4a90d9;--accent-primary-rgb:51, 51, 51;--accent-hover-rgb:26, 26, 26;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:46, 125, 50;--error-rgb:198, 40, 40;--warning-rgb:245, 127, 23;--accent-info-rgb:74, 144, 217}.dark[data-v-4c2b3ca2]{--bg-primary:#1a1a1a;--bg-secondary:#252525;--bg-sidebar:#202020;--bg-card:#333;--bg-card-hover:#333;--bg-input:#2a2a2a;--border-color:#3a3a3a;--border-light:#333;--accent-primary:#e0e0e0;--accent-hover:#f5f5f5;--accent-muted:#888;--text-primary:#f0f0f0;--text-secondary:silver;--text-muted:#888;--success:#66bb6a;--error:#ef5350;--warning:#ffb74d;--msg-user-bg:#252525;--msg-assistant-bg:#252525;--msg-system-border:#555;--code-bg:#1e1e1e;--text-on-accent:#1a1a1a;--text-on-overlay:#fff;--accent-info:#6ba3d6;--accent-primary-rgb:240, 240, 240;--accent-hover-rgb:245, 245, 245;--text-primary-rgb:240, 240, 240;--text-muted-rgb:136, 136, 136;--success-rgb:102, 187, 106;--error-rgb:239, 83, 80;--warning-rgb:255, 183, 77;--accent-info-rgb:107, 163, 214}.chat-input-area[data-v-4c2b3ca2]{border-top:1px solid var(--border-color);flex-shrink:0;padding:12px 20px 16px}.attachment-previews[data-v-4c2b3ca2]{flex-wrap:wrap;gap:8px;padding:0 0 10px;display:flex}.attachment-preview[data-v-4c2b3ca2]{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;position:relative;overflow:hidden}.attachment-preview.image[data-v-4c2b3ca2]{width:64px;height:64px}.attachment-thumb[data-v-4c2b3ca2]{object-fit:cover;width:100%;height:100%}.attachment-file[data-v-4c2b3ca2]{min-width:80px;max-width:140px;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:8px 12px;display:flex}.attachment-file .file-name[data-v-4c2b3ca2]{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;overflow:hidden}.attachment-file .file-size[data-v-4c2b3ca2]{color:var(--text-muted);font-size:10px}.attachment-remove[data-v-4c2b3ca2]{width:18px;height:18px;color:var(--text-on-overlay);cursor:pointer;opacity:0;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;top:2px;right:2px}.attachment-preview:hover .attachment-remove[data-v-4c2b3ca2]{opacity:1}.file-input-hidden[data-v-4c2b3ca2]{display:none}.input-wrapper[data-v-4c2b3ca2]{background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;transition:border-color .15s,background-color .15s;display:flex}.input-wrapper[data-v-4c2b3ca2]:focus-within{border-color:var(--accent-primary)}.dark .input-wrapper[data-v-4c2b3ca2]{background-color:#333}.input-textarea[data-v-4c2b3ca2]{color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:20px;max-height:100px;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;overflow-y:auto}.input-textarea[data-v-4c2b3ca2]::placeholder{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.input-actions[data-v-4c2b3ca2]{flex-shrink:0;align-items:center;gap:6px;display:flex}.input-wrapper.drag-over[data-v-4c2b3ca2]{border-color:var(--accent-info);background-color:rgba(var(--accent-info-rgb), .04);border-style:dashed}[data-v-c3211247]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#333;--accent-hover:#1a1a1a;--accent-muted:#888;--text-primary:#1a1a1a;--text-secondary:#666;--text-muted:#999;--success:#2e7d32;--error:#c62828;--warning:#f57f17;--msg-user-bg:#f5f5f5;--msg-assistant-bg:#f5f5f5;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#4a90d9;--accent-primary-rgb:51, 51, 51;--accent-hover-rgb:26, 26, 26;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:46, 125, 50;--error-rgb:198, 40, 40;--warning-rgb:245, 127, 23;--accent-info-rgb:74, 144, 217}.dark[data-v-c3211247]{--bg-primary:#1a1a1a;--bg-secondary:#252525;--bg-sidebar:#202020;--bg-card:#333;--bg-card-hover:#333;--bg-input:#2a2a2a;--border-color:#3a3a3a;--border-light:#333;--accent-primary:#e0e0e0;--accent-hover:#f5f5f5;--accent-muted:#888;--text-primary:#f0f0f0;--text-secondary:silver;--text-muted:#888;--success:#66bb6a;--error:#ef5350;--warning:#ffb74d;--msg-user-bg:#252525;--msg-assistant-bg:#252525;--msg-system-border:#555;--code-bg:#1e1e1e;--text-on-accent:#1a1a1a;--text-on-overlay:#fff;--accent-info:#6ba3d6;--accent-primary-rgb:240, 240, 240;--accent-hover-rgb:245, 245, 245;--text-primary-rgb:240, 240, 240;--text-muted-rgb:136, 136, 136;--success-rgb:102, 187, 106;--error-rgb:239, 83, 80;--warning-rgb:255, 183, 77;--accent-info-rgb:107, 163, 214}.message[data-v-c3211247]{flex-direction:column;display:flex}.message.user[data-v-c3211247]{align-items:flex-end}.message.user .msg-body[data-v-c3211247]{max-width:75%}.message.user .msg-content.user[data-v-c3211247]{align-items:flex-end}.message.user .message-bubble[data-v-c3211247]{background-color:var(--msg-user-bg);border-radius:10px}.message.assistant[data-v-c3211247]{flex-direction:row;align-items:flex-start;gap:8px}.message.assistant .msg-body[data-v-c3211247]{max-width:80%}.message.assistant .msg-avatar[data-v-c3211247]{flex-shrink:0;width:40px;height:40px;margin-top:2px}.message.assistant .message-bubble[data-v-c3211247]{background-color:var(--msg-assistant-bg);border-radius:10px}.message.tool[data-v-c3211247],.message.system[data-v-c3211247]{align-items:flex-start}.message.system .message-bubble.system[data-v-c3211247]{border-left:3px solid var(--warning);background-color:rgba(var(--warning-rgb), .06);border-radius:6px;max-width:80%}.msg-body[data-v-c3211247]{align-items:flex-start;gap:8px;max-width:85%;display:flex}.msg-content[data-v-c3211247]{flex-direction:column;min-width:0;display:flex}.message-bubble[data-v-c3211247]{word-break:break-word;border-radius:10px;padding:10px 14px;font-size:14px;line-height:1.65}.msg-attachments[data-v-c3211247]{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.msg-attachment[data-v-c3211247]{border:1px solid var(--border-light);background-color:#0000000a;border-radius:6px;overflow:hidden}.msg-attachment.image[data-v-c3211247]{max-width:200px}.msg-attachment-thumb[data-v-c3211247]{object-fit:contain;max-width:200px;max-height:160px;display:block}.msg-attachment-file[data-v-c3211247]{color:var(--text-secondary);align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.msg-attachment-file .att-name[data-v-c3211247]{white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}.msg-attachment-file .att-size[data-v-c3211247]{color:var(--text-muted);flex-shrink:0;font-size:11px}.message-time[data-v-c3211247]{color:var(--text-muted);margin-top:4px;padding:0 4px;font-size:11px}.dark .message-time[data-v-c3211247]{color:#999}.tool-line[data-v-c3211247]{color:var(--text-muted);border-radius:6px;align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.tool-line.expandable[data-v-c3211247]{cursor:pointer}.tool-line.expandable[data-v-c3211247]:hover{background:#00000008}.tool-line .tool-name[data-v-c3211247]{flex-shrink:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.tool-line .tool-preview[data-v-c3211247]{text-overflow:ellipsis;white-space:nowrap;max-width:400px;overflow:hidden}.tool-chevron[data-v-c3211247]{flex-shrink:0;transition:transform .15s}.tool-chevron.rotated[data-v-c3211247]{transform:rotate(90deg)}.tool-spinner[data-v-c3211247]{border:1.5px solid var(--text-muted);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite spin-c3211247}.tool-error-badge[data-v-c3211247]{color:var(--error);background:rgba(var(--error-rgb), .08);border-radius:3px;padding:0 4px;font-size:9px;line-height:14px}.tool-details[data-v-c3211247]{border-left:2px solid var(--border-light);margin-top:2px;margin-left:16px;padding-left:10px}.tool-detail-section[data-v-c3211247]{margin-bottom:6px}.tool-detail-label[data-v-c3211247]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:10px;font-weight:600}.tool-detail-code-block[data-v-c3211247] .hljs-code-block{margin:0}.tool-detail-code-block[data-v-c3211247] .code-header{background:#00000005}.tool-detail-code-block[data-v-c3211247] code.hljs{white-space:pre-wrap;word-break:break-word;max-height:300px;font-size:11px;overflow-y:auto}@keyframes spin-c3211247{to{transform:rotate(360deg)}}.streaming-cursor[data-v-c3211247]{background-color:var(--text-muted);vertical-align:text-bottom;width:2px;height:1em;margin-left:2px;animation:.8s infinite blink-c3211247;display:inline-block}.streaming-dots[data-v-c3211247]{gap:4px;padding:4px 0;display:flex}.streaming-dots span[data-v-c3211247]{background-color:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite pulse-c3211247}.streaming-dots span[data-v-c3211247]:nth-child(2){animation-delay:.2s}.streaming-dots span[data-v-c3211247]:nth-child(3){animation-delay:.4s}@keyframes blink-c3211247{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes pulse-c3211247{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (width<=768px){.message.user .msg-body[data-v-c3211247],.message.assistant .msg-body[data-v-c3211247],.message.system .msg-body[data-v-c3211247]{max-width:100%}}[data-v-9cc7b1be]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#333;--accent-hover:#1a1a1a;--accent-muted:#888;--text-primary:#1a1a1a;--text-secondary:#666;--text-muted:#999;--success:#2e7d32;--error:#c62828;--warning:#f57f17;--msg-user-bg:#f5f5f5;--msg-assistant-bg:#f5f5f5;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#4a90d9;--accent-primary-rgb:51, 51, 51;--accent-hover-rgb:26, 26, 26;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:46, 125, 50;--error-rgb:198, 40, 40;--warning-rgb:245, 127, 23;--accent-info-rgb:74, 144, 217}.dark[data-v-9cc7b1be]{--bg-primary:#1a1a1a;--bg-secondary:#252525;--bg-sidebar:#202020;--bg-card:#333;--bg-card-hover:#333;--bg-input:#2a2a2a;--border-color:#3a3a3a;--border-light:#333;--accent-primary:#e0e0e0;--accent-hover:#f5f5f5;--accent-muted:#888;--text-primary:#f0f0f0;--text-secondary:silver;--text-muted:#888;--success:#66bb6a;--error:#ef5350;--warning:#ffb74d;--msg-user-bg:#252525;--msg-assistant-bg:#252525;--msg-system-border:#555;--code-bg:#1e1e1e;--text-on-accent:#1a1a1a;--text-on-overlay:#fff;--accent-info:#6ba3d6;--accent-primary-rgb:240, 240, 240;--accent-hover-rgb:245, 245, 245;--text-primary-rgb:240, 240, 240;--text-muted-rgb:136, 136, 136;--success-rgb:102, 187, 106;--error-rgb:239, 83, 80;--warning-rgb:255, 183, 77;--accent-info-rgb:107, 163, 214}.message-list[data-v-9cc7b1be]{background-color:var(--bg-card);flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.dark .message-list[data-v-9cc7b1be]{background-color:#333}.empty-state[data-v-9cc7b1be]{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.empty-state .empty-logo[data-v-9cc7b1be]{opacity:.25;width:48px;height:48px}.empty-state p[data-v-9cc7b1be]{font-size:14px}.fade-enter-active[data-v-9cc7b1be],.fade-leave-active[data-v-9cc7b1be]{transition:opacity .4s}.fade-enter-from[data-v-9cc7b1be],.fade-leave-to[data-v-9cc7b1be]{opacity:0}.streaming-indicator[data-v-9cc7b1be]{align-items:flex-start;gap:12px;padding:4px;display:flex}.streaming-indicator .thinking-video[data-v-9cc7b1be]{object-fit:contain;border-radius:10px;flex-shrink:0;width:120px;height:213px}.tool-calls-panel[data-v-9cc7b1be]{scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;gap:4px;max-height:213px;padding-top:4px;display:flex;overflow-y:auto}.tool-calls-panel[data-v-9cc7b1be]::-webkit-scrollbar{display:none}.tool-call-item[data-v-9cc7b1be]{color:var(--text-secondary);background:#00000008;border-radius:6px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;display:flex}.dark .tool-call-item[data-v-9cc7b1be]{background:#ffffff0f}.tool-call-item .tool-call-icon[data-v-9cc7b1be]{color:var(--text-muted);flex-shrink:0}.tool-call-item .tool-call-name[data-v-9cc7b1be]{flex-shrink:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.tool-call-item .tool-call-preview[data-v-9cc7b1be]{text-overflow:ellipsis;white-space:nowrap;max-width:300px;color:var(--text-muted);overflow:hidden}.tool-call-spinner[data-v-9cc7b1be]{border:1.5px solid var(--text-muted);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite spin-9cc7b1be}.tool-call-error[data-v-9cc7b1be]{color:var(--error);background:rgba(var(--error), .08);border-radius:3px;padding:0 4px;font-size:9px;line-height:14px}@keyframes spin-9cc7b1be{to{transform:rotate(360deg)}}[data-v-775e3686]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#333;--accent-hover:#1a1a1a;--accent-muted:#888;--text-primary:#1a1a1a;--text-secondary:#666;--text-muted:#999;--success:#2e7d32;--error:#c62828;--warning:#f57f17;--msg-user-bg:#f5f5f5;--msg-assistant-bg:#f5f5f5;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#4a90d9;--accent-primary-rgb:51, 51, 51;--accent-hover-rgb:26, 26, 26;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:46, 125, 50;--error-rgb:198, 40, 40;--warning-rgb:245, 127, 23;--accent-info-rgb:74, 144, 217}.dark[data-v-775e3686]{--bg-primary:#1a1a1a;--bg-secondary:#252525;--bg-sidebar:#202020;--bg-card:#333;--bg-card-hover:#333;--bg-input:#2a2a2a;--border-color:#3a3a3a;--border-light:#333;--accent-primary:#e0e0e0;--accent-hover:#f5f5f5;--accent-muted:#888;--text-primary:#f0f0f0;--text-secondary:silver;--text-muted:#888;--success:#66bb6a;--error:#ef5350;--warning:#ffb74d;--msg-user-bg:#252525;--msg-assistant-bg:#252525;--msg-system-border:#555;--code-bg:#1e1e1e;--text-on-accent:#1a1a1a;--text-on-overlay:#fff;--accent-info:#6ba3d6;--accent-primary-rgb:240, 240, 240;--accent-hover-rgb:245, 245, 245;--text-primary-rgb:240, 240, 240;--text-muted-rgb:136, 136, 136;--success-rgb:102, 187, 106;--error-rgb:239, 83, 80;--warning-rgb:255, 183, 77;--accent-info-rgb:107, 163, 214}.chat-panel[data-v-775e3686]{height:100%;display:flex;position:relative}.session-list[data-v-775e3686]{border-right:1px solid var(--border-color);flex-direction:column;flex-shrink:0;width:220px;transition:width .25s,opacity .25s;display:flex;overflow:hidden}.session-list.collapsed[data-v-775e3686]{opacity:0;pointer-events:none;border-right:none;width:0}@media (width<=768px){.session-list[data-v-775e3686]{z-index:10;background:var(--bg-card);width:280px;height:100%;position:absolute;top:0;left:0;box-shadow:2px 0 8px #0000001a}.session-list.collapsed[data-v-775e3686]{opacity:0;transform:translate(-100%)}.session-close-btn[data-v-775e3686]{display:flex}.session-backdrop[data-v-775e3686]{z-index:9;opacity:0;pointer-events:none;background:#0006;transition:opacity .15s;position:absolute;inset:0}.session-backdrop.active[data-v-775e3686]{opacity:1;pointer-events:auto}}.session-list-header[data-v-775e3686]{flex-shrink:0;justify-content:space-between;align-items:center;padding:12px;display:flex}.session-list-actions[data-v-775e3686]{align-items:center;gap:4px;display:flex}.session-close-btn[data-v-775e3686]{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;padding:4px;display:none}.session-close-btn[data-v-775e3686]:hover{background:rgba(var(--accent-primary), .06)}.session-list-title[data-v-775e3686]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.session-group-header[data-v-775e3686]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:6px 10px 4px;display:flex}.group-chevron[data-v-775e3686]{flex-shrink:0;transition:transform .15s;transform:rotate(90deg)}.group-chevron.collapsed[data-v-775e3686]{transform:rotate(0)}.session-group-label[data-v-775e3686]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:600}.session-group-count[data-v-775e3686]{color:var(--text-muted);font-size:10px;font-weight:400}.session-items[data-v-775e3686]{flex:1;padding:0 6px 12px;overflow-y:auto}.session-loading[data-v-775e3686],.session-empty[data-v-775e3686]{color:var(--text-muted);text-align:center;padding:16px 10px;font-size:12px}.session-item[data-v-775e3686]{cursor:pointer;text-align:left;width:100%;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:2px;padding:8px 10px;transition:all .15s;display:flex}.session-item[data-v-775e3686]:hover{background:rgba(var(--accent-primary), .06);color:var(--text-primary)}.session-item:hover .session-item-delete[data-v-775e3686]{opacity:1}.session-item.active[data-v-775e3686]{background:rgba(var(--accent-primary-rgb), .12);color:var(--text-primary);font-weight:500}.session-item.active .session-item-title[data-v-775e3686],.session-item.live .session-item-title[data-v-775e3686]{color:var(--accent-primary)}.session-item-content[data-v-775e3686]{flex:1;overflow:hidden}.session-item-title-row[data-v-775e3686]{align-items:center;gap:6px;min-width:0;display:flex}.session-item-title[data-v-775e3686]{white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.session-item-active-indicator[data-v-775e3686]{color:var(--accent-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.session-item-active-spinner[data-v-775e3686]{filter:drop-shadow(0 0 6px rgba(var(--accent-primary-rgb), .35));animation:1.1s linear infinite session-spin-775e3686}.session-item-time[data-v-775e3686]{color:var(--text-muted);font-size:11px}.session-item-meta[data-v-775e3686]{align-items:center;gap:6px;margin-top:2px;display:flex}.session-item-model[data-v-775e3686]{color:var(--accent-primary);background:rgba(var(--accent-primary), .08);text-overflow:ellipsis;white-space:nowrap;border-radius:3px;flex-shrink:0;max-width:100px;padding:0 5px;font-size:10px;line-height:16px;overflow:hidden}.session-item-delete[data-v-775e3686]{opacity:.5;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:2px;transition:all .15s}.session-item-delete[data-v-775e3686]:hover{color:var(--error);background:rgba(var(--error), .1)}@keyframes session-spin-775e3686{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.chat-main[data-v-775e3686]{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.chat-header[data-v-775e3686]{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:21px 20px;display:flex}.header-left[data-v-775e3686]{flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.header-session-title[data-v-775e3686]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;overflow:hidden}.source-badge[data-v-775e3686]{color:var(--text-muted);background:rgba(var(--text-muted), .12);white-space:nowrap;border-radius:8px;flex-shrink:0;padding:1px 7px;font-size:10px;line-height:16px}.header-actions[data-v-775e3686]{flex-shrink:0;align-items:center;gap:4px;display:flex}.context-info[data-v-775e3686]{color:var(--text-muted);flex-shrink:0;padding:0 20px 4px;font-size:11px}@media (width<=768px){.chat-header[data-v-775e3686]{padding:16px 12px 16px 52px}.context-info[data-v-775e3686]{padding:0 12px 4px}}.chat-view[data-v-6dae3628]{height:calc(100 * var(--vh));flex-direction:column;display:flex}
@@ -1 +0,0 @@
1
- import{t as e}from"./app-Cj6XwFKm.js";export{e as useAppStore};
@@ -1,6 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-BPvkNIt-.js","assets/app-Cj6XwFKm.js","assets/router-DZ0K5mgk.js","assets/pinia-Cw7gKk_G.js"])))=>i.map(i=>d[i]);
2
- import{C as e,ct as t,i as n,n as r,o as i,r as a}from"./router-DZ0K5mgk.js";import{n as o}from"./pinia-Cw7gKk_G.js";import{n as s,nt as c,s as l}from"./browser-DkMcmggy.js";import{i as u}from"./Popover-BMyFTs0l.js";import{t as d}from"./app-Cj6XwFKm.js";import{t as f}from"./profiles-PYziKhyQ.js";import{n as p,r as m,t as h}from"./sessions-BmGawaJ1.js";var g={padding:`4px 0`,optionIconSizeSmall:`14px`,optionIconSizeMedium:`16px`,optionIconSizeLarge:`16px`,optionIconSizeHuge:`18px`,optionSuffixWidthSmall:`14px`,optionSuffixWidthMedium:`14px`,optionSuffixWidthLarge:`16px`,optionSuffixWidthHuge:`16px`,optionIconSuffixWidthSmall:`32px`,optionIconSuffixWidthMedium:`32px`,optionIconSuffixWidthLarge:`36px`,optionIconSuffixWidthHuge:`36px`,optionPrefixWidthSmall:`14px`,optionPrefixWidthMedium:`14px`,optionPrefixWidthLarge:`16px`,optionPrefixWidthHuge:`16px`,optionIconPrefixWidthSmall:`36px`,optionIconPrefixWidthMedium:`36px`,optionIconPrefixWidthLarge:`40px`,optionIconPrefixWidthHuge:`40px`};function _(e){let{primaryColor:t,textColor2:n,dividerColor:r,hoverColor:i,popoverColor:a,invertedColor:o,borderRadius:s,fontSizeSmall:l,fontSizeMedium:u,fontSizeLarge:d,fontSizeHuge:f,heightSmall:p,heightMedium:m,heightLarge:h,heightHuge:_,textColor3:v,opacityDisabled:y}=e;return Object.assign(Object.assign({},g),{optionHeightSmall:p,optionHeightMedium:m,optionHeightLarge:h,optionHeightHuge:_,borderRadius:s,fontSizeSmall:l,fontSizeMedium:u,fontSizeLarge:d,fontSizeHuge:f,optionTextColor:n,optionTextColorHover:n,optionTextColorActive:t,optionTextColorChildActive:t,color:a,dividerColor:r,suffixColor:n,prefixColor:n,optionColorHover:i,optionColorActive:c(t,{alpha:.1}),groupHeaderTextColor:v,optionTextColorInverted:`#BBB`,optionTextColorHoverInverted:`#FFF`,optionTextColorActiveInverted:`#FFF`,optionTextColorChildActiveInverted:`#FFF`,colorInverted:o,dividerColorInverted:`#BBB`,suffixColorInverted:`#BBB`,prefixColorInverted:`#BBB`,optionColorHoverInverted:t,optionColorActiveInverted:t,groupHeaderTextColorInverted:`#AAA`,optionOpacityDisabled:y})}var v=l({name:`Dropdown`,common:s,peers:{Popover:u},self:_});function y(e){let{textColorBase:t,opacity1:n,opacity2:r,opacity3:i,opacity4:a,opacity5:o}=e;return{color:t,opacity1Depth:n,opacity2Depth:r,opacity3Depth:i,opacity4Depth:a,opacity5Depth:o}}var b={name:`Icon`,common:s,self:y};async function x(e){return i(`/api/hermes/v1/runs`,{method:`POST`,body:JSON.stringify(e)})}function S(e,t,r,i){let o=n(),s=a(),c=localStorage.getItem(`hermes_active_profile_name`),l=new URLSearchParams;s&&l.set(`token`,s),c&&c!==`default`&&l.set(`profile`,c);let u=l.toString(),d=`${o}/api/hermes/v1/runs/${e}/events${u?`?${u}`:``}`,f=!1,p=new EventSource(d);return p.onmessage=e=>{if(!f)try{let n=JSON.parse(e.data);t(n),(n.event===`run.completed`||n.event===`run.failed`)&&(f=!0,p.close(),r())}catch{t({event:`message`,delta:e.data})}},p.onerror=()=>{f||(f=!0,p.close(),i(Error(`SSE connection error`)))},{abort:()=>{f||(f=!0,p.close())}}}function C(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}async function w(e){if(e.length===0)return[];let t=new FormData;for(let n of e)n.file&&t.append(`file`,n.file,n.name);let n=localStorage.getItem(`hermes_api_key`)||``,r=await fetch(`/upload`,{method:`POST`,body:t,headers:n?{Authorization:`Bearer ${n}`}:{}});if(!r.ok)throw Error(`Upload failed: ${r.status}`);return(await r.json()).files}function T(e){let t=new Map,n=new Map;for(let r of e)if(r.role===`assistant`&&r.tool_calls)for(let e of r.tool_calls)e.id&&(e.function?.name&&t.set(e.id,e.function.name),e.function?.arguments&&n.set(e.id,e.function.arguments));let r=[];for(let i of e){if(i.role===`assistant`&&i.tool_calls?.length&&!i.content?.trim()){for(let e of i.tool_calls)r.push({id:String(i.id)+`_`+e.id,role:`tool`,content:``,timestamp:Math.round(i.timestamp*1e3),toolName:e.function?.name||`tool`,toolArgs:e.function?.arguments||void 0,toolStatus:`done`});continue}if(i.role===`tool`){let e=i.tool_call_id||``,a=i.tool_name||t.get(e)||`tool`,o=n.get(e)||void 0,s=``;if(i.content)try{let e=JSON.parse(i.content);s=e.url||e.title||e.preview||e.summary||``}catch{s=i.content.slice(0,80)}let c=r.findIndex(t=>t.role===`tool`&&t.toolName===a&&!t.toolResult&&t.id.includes(`_`+e));c!==-1&&r.splice(c,1),r.push({id:String(i.id),role:`tool`,content:``,timestamp:Math.round(i.timestamp*1e3),toolName:a,toolArgs:o,toolPreview:typeof s==`string`&&s.slice(0,100)||void 0,toolResult:i.content||void 0,toolStatus:`done`});continue}r.push({id:String(i.id),role:i.role,content:i.content||``,timestamp:Math.round(i.timestamp*1e3)})}return r}function E(e){return{id:e.id,title:e.title||``,source:e.source||void 0,messages:[],createdAt:Math.round(e.started_at*1e3),updatedAt:Math.round((e.last_active||e.ended_at||e.started_at)*1e3),model:e.model,provider:e.billing_provider||``,messageCount:e.message_count,inputTokens:e.input_tokens,outputTokens:e.output_tokens}}var D=`hermes_active_session_`,O=`hermes_sessions_cache_v1_`,k=900*1e3,A=2e3,j=3;function M(){try{return f().activeProfileName||`default`}catch{return`default`}}function N(){return D+M()}function P(){return O+M()}function F(e){return`hermes_session_msgs_v1_${M()}_${e}_`}function I(e){return`hermes_in_flight_v1_${M()}_${e}`}function L(e){try{let t=localStorage.getItem(e);return t?JSON.parse(t):null}catch{return null}}function R(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function z(e){try{localStorage.removeItem(e)}catch{}}function ee(e){return e.map(e=>e.attachments?.length?{...e,attachments:e.attachments.map(e=>({id:e.id,name:e.name,type:e.type,size:e.size,url:e.url}))}:e)}var B=o(`chat`,()=>{let n=t([]),i=t(null),a=t(new Map),o=e(()=>i.value!=null&&a.value.has(i.value)),s=t(!1),c=t(!1),l=t(new Set),u=e(()=>o.value||i.value!=null&&l.value.has(i.value)),f=new Map,g=new Map,_=t(null),v=e(()=>_.value?.messages||[]);function y(e){return a.value.has(e)||l.value.has(e)}function b(){R(P(),n.value.map(e=>({...e,messages:[]})))}function D(){let e=i.value;if(!e)return;let t=n.value.find(t=>t.id===e);t&&R(F(e),ee(t.messages))}function O(e,t){R(I(e),{runId:t,startedAt:Date.now()})}function M(e){z(I(e))}function B(e){let t=L(I(e));return t?Date.now()-t.startedAt>k?(z(I(e)),null):t:null}function V(e){let t=f.get(e);t&&(clearInterval(t),f.delete(e)),g.delete(e),l.value=new Set([...l.value].filter(t=>t!==e))}function H(e){if(f.has(e))return;l.value=new Set([...l.value,e]);let t=setInterval(async()=>{if(a.value.has(e)){V(e);return}if(!B(e)){V(e);return}try{let t=await p(e);if(!t)return;let r=T(t.messages||[]),a=n.value.find(t=>t.id===e);if(!a)return;let o=a.messages,s=[...o].reverse().find(e=>e.role===`assistant`),c=[...r].reverse().find(e=>e.role===`assistant`),l=s?.content?.length??0,u=c?.content?.length??0,d=o.filter(e=>e.role===`user`).length,f=r.filter(e=>e.role===`user`).length,m=f>=d;if((f>d||f===d&&u>=l)&&(a.messages=r,a.inputTokens=t.input_tokens,a.outputTokens=t.output_tokens,t.title&&!a.title&&(a.title=t.title),e===i.value&&D()),!m)g.delete(e);else{let n=r[r.length-1],o=`${r.length}|${n?.content?.slice(-40)||``}|${n?.toolStatus||``}`,s=g.get(e);s&&s.sig===o?(s.stableTicks+=1,s.stableTicks>=j&&(a.messages=r,a.inputTokens=t.input_tokens,a.outputTokens=t.output_tokens,t.title&&(a.title=t.title),e===i.value&&D(),M(e),V(e))):g.set(e,{sig:o,stableTicks:0})}}catch{}},A);f.set(e,t)}async function U(){s.value=!0;try{let e=L(P());if(e?.length){n.value=e;let t=localStorage.getItem(N());if(t){let n=e.find(e=>e.id===t)||null;if(n){let e=L(F(t));e&&(n.messages=e),_.value=n,i.value=t}}}let t=(await m()).map(E),r=new Set(t.map(e=>e.id)),a=new Map(n.value.map(e=>[e.id,e.messages]));for(let e of t){let t=a.get(e.id);t&&t.length&&(e.messages=t)}n.value=[...n.value.filter(e=>!r.has(e.id)),...t],b();let o=i.value,s=o&&n.value.some(e=>e.id===o)?o:n.value[0]?.id;s&&await K(s)}catch(e){console.error(`Failed to load sessions:`,e)}finally{s.value=!1}}async function W(){let e=i.value;if(!e)return!1;try{let t=await p(e);if(!t)return!1;let r=n.value.find(t=>t.id===e);return r?(r.messages=T(t.messages||[]),r.inputTokens=t.input_tokens,r.outputTokens=t.output_tokens,t.title&&(r.title=t.title),D(),!0):!1}catch(e){return console.error(`Failed to refresh active session:`,e),!1}}function G(){let e={id:C(),title:``,source:`api_server`,messages:[],createdAt:Date.now(),updatedAt:Date.now()};return n.value.unshift(e),b(),e}async function K(e){if(i.value=e,localStorage.setItem(N(),e),_.value=n.value.find(t=>t.id===e)||null,_.value){if(!(_.value.messages.length>0)){let t=L(F(e));t?.length&&(_.value.messages=t)}_.value.messages.length===0&&(c.value=!0);try{let t=await p(e);if(t&&t.messages){let e=T(t.messages),n=_.value.messages,r=[...n].reverse().find(e=>e.role===`assistant`),i=[...e].reverse().find(e=>e.role===`assistant`),a=r?.content?.length??0,o=i?.content?.length??0,s=n.filter(e=>e.role===`user`).length,c=e.filter(e=>e.role===`user`).length;if((c>s||c===s&&o>=a)&&(_.value.messages=e),_.value.inputTokens=t.input_tokens,_.value.outputTokens=t.output_tokens,t.title)_.value.title=t.title;else if(!_.value.title){let e=_.value.messages.find(e=>e.role===`user`);if(e){let t=e.content.slice(0,40);_.value.title=t+(e.content.length>40?`...`:``)}}D()}}catch(e){console.error(`Failed to load session messages:`,e)}finally{c.value=!1}B(e)&&!a.value.has(e)&&H(e)}}function q(){if(o.value)return;let e=G();e.model=d().selectedModel||void 0,K(e.id)}async function J(e,t){if(_.value&&(_.value.model=e,_.value.provider=t||``,t)){let{useAppStore:n}=await r(async()=>{let{useAppStore:e}=await import(`./app-BPvkNIt-.js`);return{useAppStore:e}},__vite__mapDeps([0,1,2,3]));await n().switchModel(e,t)}}async function Y(e){await h(e),n.value=n.value.filter(t=>t.id!==e),z(F(e)),b(),i.value===e&&(n.value.length>0?await K(n.value[0].id):K(G().id))}function X(e){return n.value.find(t=>t.id===e)?.messages||[]}function Z(e,t){let r=n.value.find(t=>t.id===e);r&&r.messages.push(t)}function Q(e,t,r){let i=n.value.find(t=>t.id===e);if(!i)return;let a=i.messages.findIndex(e=>e.id===t);a!==-1&&(i.messages[a]={...i.messages[a],...r})}function $(e){let t=n.value.find(t=>t.id===e);if(t){if(!t.title){let e=t.messages.find(e=>e.role===`user`);if(e){let n=e.attachments?.length?e.attachments.map(e=>e.name).join(`, `):e.content;t.title=n.slice(0,40)+(n.length>40?`...`:``)}}t.updatedAt=Date.now()}}async function te(e,t){if(!e.trim()&&!(t&&t.length>0)||o.value)return;_.value||K(G().id);let n=i.value;Z(n,{id:C(),role:`user`,content:e.trim(),timestamp:Date.now(),attachments:t&&t.length>0?t:void 0}),$(n),n===i.value&&(D(),b());try{let r=X(n).filter(e=>(e.role===`user`||e.role===`assistant`)&&e.content.trim()).map(e=>({role:e.role,content:e.content})),o=e.trim();if(t&&t.length>0){let e=(await w(t)).map(e=>`[File: ${e.name}](${e.path})`);o=o?o+`
3
-
4
- `+e.join(`
5
- `):e.join(`
6
- `)}let s=d(),c=_.value?.model||s.selectedModel,l=await x({input:o,conversation_history:r,session_id:n,model:c||void 0}),u=l.run_id||l.id;if(!u){Z(n,{id:C(),role:`system`,content:`Error: startRun returned no run ID. Response: ${JSON.stringify(l)}`,timestamp:Date.now()});return}O(n,u),V(n);let f=()=>{a.value.delete(n),p&&=(clearTimeout(p),null)},p=null,m=()=>{n!==i.value||p||(p=setTimeout(()=>{p=null,D()},800))},h=S(u,e=>{switch(e.event){case`run.started`:break;case`message.delta`:{let t=X(n),r=t[t.length-1];r?.role===`assistant`&&r.isStreaming?r.content+=e.delta||``:Z(n,{id:C(),role:`assistant`,content:e.delta||``,timestamp:Date.now(),isStreaming:!0}),m();break}case`tool.started`:{let t=X(n),r=t[t.length-1];r?.isStreaming&&Q(n,r.id,{isStreaming:!1}),Z(n,{id:C(),role:`tool`,content:``,timestamp:Date.now(),toolName:e.tool||e.name,toolPreview:e.preview,toolStatus:`running`}),m();break}case`tool.completed`:{let e=X(n).filter(e=>e.role===`tool`&&e.toolStatus===`running`);if(e.length>0){let t=e[e.length-1];Q(n,t.id,{toolStatus:`done`})}m();break}case`run.completed`:{let e=X(n),t=e[e.length-1];t?.isStreaming&&Q(n,t.id,{isStreaming:!1}),f(),$(n),n===i.value&&D(),M(n),V(n);break}case`run.failed`:{let t=X(n),r=t[t.length-1];r?.isStreaming?Q(n,r.id,{isStreaming:!1,content:e.error?`Error: ${e.error}`:`Run failed`,role:`system`}):Z(n,{id:C(),role:`system`,content:e.error?`Error: ${e.error}`:`Run failed`,timestamp:Date.now()}),t.forEach((e,n)=>{e.role===`tool`&&e.toolStatus===`running`&&(t[n]={...e,toolStatus:`error`})}),f(),n===i.value&&D(),M(n),V(n);break}}},()=>{let e=X(n),t=e[e.length-1];t?.isStreaming&&Q(n,t.id,{isStreaming:!1}),f(),$(n)},e=>{console.warn(`SSE connection dropped, resyncing from server:`,e.message);let t=X(n),r=t[t.length-1];r?.isStreaming&&Q(n,r.id,{isStreaming:!1}),t.forEach((e,n)=>{e.role===`tool`&&e.toolStatus===`running`&&(t[n]={...e,toolStatus:`done`})}),f(),n===i.value&&W(),B(n)&&H(n)});a.value.set(n,h)}catch(e){Z(n,{id:C(),role:`system`,content:`Error: ${e.message}`,timestamp:Date.now()})}}function ne(){let e=i.value;if(!e)return;let t=a.value.get(e);if(t){t.abort();let n=X(e),r=n[n.length-1];r?.isStreaming&&Q(e,r.id,{isStreaming:!1}),a.value.delete(e),M(e),V(e)}}return typeof document<`u`&&document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&i.value&&!o.value&&(W(),B(i.value)&&H(i.value))}),{sessions:n,activeSessionId:i,activeSession:_,messages:v,isStreaming:o,isRunActive:u,isSessionLive:y,isLoadingSessions:s,isLoadingMessages:c,newChat:q,switchSession:K,switchSessionModel:J,deleteSession:Y,sendMessage:te,stopStreaming:ne,loadSessions:U,refreshActiveSession:W}});export{_ as a,v as i,b as n,y as r,B as t};
@@ -1 +0,0 @@
1
- import{F as e}from"./router-DZ0K5mgk.js";import{Y as t}from"./browser-DkMcmggy.js";import{s as n}from"./Modal-R2Z6-Zms.js";function r(){let r=e(n,null);return r===null&&t(`use-dialog`,`No outer <n-dialog-provider /> founded.`),r}export{r as t};