hermes-web-ui 0.3.1 → 0.3.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 (84) hide show
  1. package/dist/client/assets/{Add-cXqy3eJz.js → Add-CIZmky1Q.js} +1 -1
  2. package/dist/client/assets/{Button-BeWnBoDR.js → Button-Cpfqx5bj.js} +1 -1
  3. package/dist/client/assets/{ChannelsView-Do43S3tP.css → ChannelsView-CSo2o-P4.css} +1 -1
  4. package/dist/client/assets/ChannelsView-CqgEMY6f.js +1 -0
  5. package/dist/client/assets/{ChatView-CqA3Wo54.js → ChatView-o_KHRYai.js} +1 -1
  6. package/dist/client/assets/{Close-ySsuLJTC.js → Close-Dx71Ggz9.js} +1 -1
  7. package/dist/client/assets/{FormItem-EcbFnIOF.js → FormItem-D0pABOgK.js} +1 -1
  8. package/dist/client/assets/{Input-DP5LDvGa.js → Input-DmGT4Mu3.js} +1 -1
  9. package/dist/client/assets/{InputNumber-CU7XKbbt.js → InputNumber-CQVOZP6a.js} +1 -1
  10. package/dist/client/assets/JobsView-BwxWBXo3.js +2 -0
  11. package/dist/client/assets/{JobsView-CvuV9mZY.css → JobsView-CVx2Yv-y.css} +1 -1
  12. package/dist/client/assets/{LoginView-CDJXoOEZ.js → LoginView-C4Id2mSY.js} +1 -1
  13. package/dist/client/assets/{LogsView-DS_E9xkh.js → LogsView-H_gfkSSN.js} +1 -1
  14. package/dist/client/assets/{MarkdownRenderer-BntkPd0f.js → MarkdownRenderer-DJK1b6T2.js} +1 -1
  15. package/dist/client/assets/{MemoryView-CCCXW1tv.js → MemoryView-DO4Y2le5.js} +1 -1
  16. package/dist/client/assets/{Modal-D_vF9k8c.js → Modal-fhZL63EZ.js} +1 -1
  17. package/dist/client/assets/ModelsView-9CSt8tCa.js +1 -0
  18. package/dist/client/assets/{ModelsView-BhNEZwC0.css → ModelsView-D1p_2trx.css} +1 -1
  19. package/dist/client/assets/{Popconfirm-IKYJxM7n.js → Popconfirm-CLvbZW3I.js} +1 -1
  20. package/dist/client/assets/{Popover-BLBLYanQ.js → Popover-Dwi5NArH.js} +1 -1
  21. package/dist/client/assets/{ProfilesView-qt3NXito.js → ProfilesView-R_u1mtsl.js} +1 -1
  22. package/dist/client/assets/{Scrollbar-DZGif2x4.js → Scrollbar-zYdleApO.js} +1 -1
  23. package/dist/client/assets/{Select-3KS3TLPL.js → Select-0jFWg4Lf.js} +1 -1
  24. package/dist/client/assets/{SettingRow-D26AUezg.js → SettingRow-LTP_cMLl.js} +1 -1
  25. package/dist/client/assets/{SettingsView-30x1265A.js → SettingsView-5o2GfsQf.js} +2 -2
  26. package/dist/client/assets/{SettingsView-C78xbLXK.css → SettingsView-BIEQOPzq.css} +1 -1
  27. package/dist/client/assets/{SkillsView-qq8Oz7fo.js → SkillsView-Cez6jHIn.js} +1 -1
  28. package/dist/client/assets/{Spin-C9izy3tZ.js → Spin-CfKqXT5a.js} +1 -1
  29. package/dist/client/assets/{Suffix-CIX5CF-j.js → Suffix-jKQO068E.js} +1 -1
  30. package/dist/client/assets/{Switch-D9x35tOv.js → Switch-tk7Pkw6L.js} +1 -1
  31. package/dist/client/assets/{TerminalView-zaRNn2aX.js → TerminalView-C-oFmyFh.js} +1 -1
  32. package/dist/client/assets/{Tooltip-A5--U35v.js → Tooltip-Dc4tc92D.js} +1 -1
  33. package/dist/client/assets/{UsageView-DQ3t8CHE.js → UsageView-SSxSWAFO.js} +1 -1
  34. package/dist/client/assets/{Warning-BZfjWCrB.js → Warning-BPlnDrmx.js} +1 -1
  35. package/dist/client/assets/{_plugin-vue_export-helper-B4hqCVU_.js → _plugin-vue_export-helper-CcX4e_Is.js} +1 -1
  36. package/dist/client/assets/{app-DG_zFxqi.js → app-CcLe99Xa.js} +1 -1
  37. package/dist/client/assets/app-ML9hRyDO.js +1 -0
  38. package/dist/client/assets/{browser-BanYmQkE.js → browser-BfJIjfY3.js} +1 -1
  39. package/dist/client/assets/{chat-C6pq-bYQ.js → chat-CuVG21Hv.js} +2 -2
  40. package/dist/client/assets/composables-BTIEu8ZB.js +1 -0
  41. package/dist/client/assets/{fade-in-scale-up.cssr-B100njI2.js → fade-in-scale-up.cssr-e30I2JjN.js} +1 -1
  42. package/dist/client/assets/index-XufFb2mL.js +284 -0
  43. package/dist/client/assets/{jobs-DK_GVjqW.js → jobs-LBrAH2Mz.js} +1 -1
  44. package/dist/client/assets/{light-B8HxMQKs.js → light-BF--Dz10.js} +1 -1
  45. package/dist/client/assets/{light-BT2gqEar.js → light-BJ4xZyd0.js} +1 -1
  46. package/dist/client/assets/{light-CDN7aXQb.js → light-BLbGAFtS.js} +1 -1
  47. package/dist/client/assets/{light-Dav3NshO.js → light-CCZMDqco.js} +1 -1
  48. package/dist/client/assets/{light-BfPLur6t.js → light-CDuRPTUd.js} +1 -1
  49. package/dist/client/assets/{light-CeMZM90j.js → light-DTBcb4qq.js} +1 -1
  50. package/dist/client/assets/{pinia-DEKB7D30.js → pinia-D2g49IcO.js} +1 -1
  51. package/dist/client/assets/{profiles-BSAOLUpt.js → profiles-DbCu_blp.js} +1 -1
  52. package/dist/client/assets/{router-Zpu1Tghg.js → router-0X4x3p8e.js} +2 -2
  53. package/dist/client/assets/{sessions-1rFjfO8M.js → sessions-SzjWXR9A.js} +1 -1
  54. package/dist/client/assets/{skills-Bu5JdqX-.js → skills-CsjvGVsY.js} +1 -1
  55. package/dist/client/assets/use-compitable-DY4l-k3U.js +1 -0
  56. package/dist/client/assets/{use-message-CFWjMwGX.js → use-message-4kASja7X.js} +1 -1
  57. package/dist/client/assets/{useTheme-CHkzsMnk.js → useTheme-Dh7NTo_V.js} +1 -1
  58. package/dist/client/index.html +27 -27
  59. package/dist/server/index.js +2 -2
  60. package/dist/server/routes/hermes/codex-auth.d.ts +2 -0
  61. package/dist/server/routes/hermes/codex-auth.js +302 -0
  62. package/dist/server/routes/hermes/config.js +15 -3
  63. package/dist/server/routes/hermes/filesystem.js +92 -18
  64. package/dist/server/routes/hermes/index.js +2 -0
  65. package/dist/server/routes/hermes/logs.js +1 -1
  66. package/dist/server/routes/hermes/profiles.js +1 -1
  67. package/dist/server/routes/hermes/sessions.js +1 -1
  68. package/dist/server/routes/hermes/weixin.js +2 -2
  69. package/dist/server/routes/webhook.js +1 -1
  70. package/dist/server/services/hermes/hermes-cli.d.ts +125 -0
  71. package/dist/server/services/hermes/hermes-cli.js +488 -0
  72. package/dist/server/services/hermes/hermes-profile.d.ts +22 -0
  73. package/dist/server/services/hermes/hermes-profile.js +60 -0
  74. package/dist/server/services/hermes/hermes.d.ts +40 -0
  75. package/dist/server/services/hermes/hermes.js +118 -0
  76. package/dist/server/shared/providers.js +64 -20
  77. package/package.json +4 -1
  78. package/dist/client/assets/ChannelsView-tUAkDoSF.js +0 -1
  79. package/dist/client/assets/JobsView-g3zcs8_m.js +0 -2
  80. package/dist/client/assets/ModelsView-C8rPRq6p.js +0 -1
  81. package/dist/client/assets/app-DVQEsGHs.js +0 -1
  82. package/dist/client/assets/composables-xsQwqT-T.js +0 -1
  83. package/dist/client/assets/index-DtDTIaVj.js +0 -284
  84. package/dist/client/assets/use-compitable-Dl0AqAGv.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-DVQEsGHs.js","assets/app-DG_zFxqi.js","assets/router-Zpu1Tghg.js","assets/pinia-DEKB7D30.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-Zpu1Tghg.js";import{n as o}from"./pinia-DEKB7D30.js";import{n as s,nt as c,s as l}from"./browser-BanYmQkE.js";import{i as u}from"./Popover-BLBLYanQ.js";import{t as d}from"./app-DG_zFxqi.js";import{n as f,r as p,t as m}from"./sessions-1rFjfO8M.js";var h={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 g(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:g,heightHuge:_,textColor3:v,opacityDisabled:y}=e;return Object.assign(Object.assign({},h),{optionHeightSmall:p,optionHeightMedium:m,optionHeightLarge:g,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 _=l({name:`Dropdown`,common:s,peers:{Popover:u},self:g});function v(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 y={name:`Icon`,common:s,self:v};async function b(e){return i(`/api/hermes/v1/runs`,{method:`POST`,body:JSON.stringify(e)})}function x(e,t,r,i){let o=n(),s=a(),c=`${o}/api/hermes/v1/runs/${e}/events${s?`?token=${encodeURIComponent(s)}`:``}`,l=!1,u=new EventSource(c);return u.onmessage=e=>{if(!l)try{let n=JSON.parse(e.data);t(n),(n.event===`run.completed`||n.event===`run.failed`)&&(l=!0,u.close(),r())}catch{t({event:`message`,delta:e.data})}},u.onerror=()=>{l||(l=!0,u.close(),i(Error(`SSE connection error`)))},{abort:()=>{l||(l=!0,u.close())}}}function S(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}async function C(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 w(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 T(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.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 E=o(`chat`,()=>{let n=`hermes_active_session`,i=t([]),a=t(localStorage.getItem(n)),o=t(new Map),s=e(()=>a.value!=null&&o.value.has(a.value)),c=t(!1),l=t(!1),u=t(null),h=e(()=>u.value?.messages||[]);async function g(){c.value=!0;try{i.value=(await p()).map(T);let e=a.value,t=e&&i.value.some(t=>t.id===e)?e:i.value[0]?.id;t&&await v(t)}catch(e){console.error(`Failed to load sessions:`,e)}finally{c.value=!1}}function _(){let e={id:S(),title:``,source:`api_server`,messages:[],createdAt:Date.now(),updatedAt:Date.now()};return i.value.unshift(e),e}async function v(e){if(a.value=e,localStorage.setItem(n,e),u.value=i.value.find(t=>t.id===e)||null,u.value&&u.value.messages.length===0){l.value=!0;try{let t=await f(e);if(t&&t.messages){let e=w(t.messages);if(u.value.messages=e,u.value.inputTokens=t.input_tokens,u.value.outputTokens=t.output_tokens,t.title)u.value.title=t.title;else{let t=e.find(e=>e.role===`user`);if(t){let e=t.content.slice(0,40);u.value.title=e+(t.content.length>40?`...`:``)}}}}catch(e){console.error(`Failed to load session messages:`,e)}finally{l.value=!1}}}function y(){if(s.value)return;let e=_();e.model=d().selectedModel||void 0,v(e.id)}async function E(e,t){if(u.value&&(u.value.model=e,u.value.provider=t||``,t)){let{useAppStore:n}=await r(async()=>{let{useAppStore:e}=await import(`./app-DVQEsGHs.js`);return{useAppStore:e}},__vite__mapDeps([0,1,2,3]));await n().switchModel(e,t)}}async function D(e){await m(e),i.value=i.value.filter(t=>t.id!==e),a.value===e&&(i.value.length>0?await v(i.value[0].id):v(_().id))}function O(e){return i.value.find(t=>t.id===e)?.messages||[]}function k(e,t){let n=i.value.find(t=>t.id===e);n&&n.messages.push(t)}function A(e,t,n){let r=i.value.find(t=>t.id===e);if(!r)return;let a=r.messages.findIndex(e=>e.id===t);a!==-1&&(r.messages[a]={...r.messages[a],...n})}function j(e){let t=i.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 M(e,t){if(!e.trim()&&!(t&&t.length>0)||s.value)return;u.value||v(_().id);let n=a.value;k(n,{id:S(),role:`user`,content:e.trim(),timestamp:Date.now(),attachments:t&&t.length>0?t:void 0}),j(n);try{let r=O(n).filter(e=>(e.role===`user`||e.role===`assistant`)&&e.content.trim()).map(e=>({role:e.role,content:e.content})),i=e.trim();if(t&&t.length>0){let e=(await C(t)).map(e=>`[File: ${e.name}](${e.path})`);i=i?i+`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-ML9hRyDO.js","assets/app-CcLe99Xa.js","assets/router-0X4x3p8e.js","assets/pinia-D2g49IcO.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-0X4x3p8e.js";import{n as o}from"./pinia-D2g49IcO.js";import{n as s,nt as c,s as l}from"./browser-BfJIjfY3.js";import{i as u}from"./Popover-Dwi5NArH.js";import{t as d}from"./app-CcLe99Xa.js";import{n as f,r as p,t as m}from"./sessions-SzjWXR9A.js";var h={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 g(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:g,heightHuge:_,textColor3:v,opacityDisabled:y}=e;return Object.assign(Object.assign({},h),{optionHeightSmall:p,optionHeightMedium:m,optionHeightLarge:g,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 _=l({name:`Dropdown`,common:s,peers:{Popover:u},self:g});function v(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 y={name:`Icon`,common:s,self:v};async function b(e){return i(`/api/hermes/v1/runs`,{method:`POST`,body:JSON.stringify(e)})}function x(e,t,r,i){let o=n(),s=a(),c=`${o}/api/hermes/v1/runs/${e}/events${s?`?token=${encodeURIComponent(s)}`:``}`,l=!1,u=new EventSource(c);return u.onmessage=e=>{if(!l)try{let n=JSON.parse(e.data);t(n),(n.event===`run.completed`||n.event===`run.failed`)&&(l=!0,u.close(),r())}catch{t({event:`message`,delta:e.data})}},u.onerror=()=>{l||(l=!0,u.close(),i(Error(`SSE connection error`)))},{abort:()=>{l||(l=!0,u.close())}}}function S(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}async function C(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 w(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 T(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.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 E=o(`chat`,()=>{let n=`hermes_active_session`,i=t([]),a=t(localStorage.getItem(n)),o=t(new Map),s=e(()=>a.value!=null&&o.value.has(a.value)),c=t(!1),l=t(!1),u=t(null),h=e(()=>u.value?.messages||[]);async function g(){c.value=!0;try{i.value=(await p()).map(T);let e=a.value,t=e&&i.value.some(t=>t.id===e)?e:i.value[0]?.id;t&&await v(t)}catch(e){console.error(`Failed to load sessions:`,e)}finally{c.value=!1}}function _(){let e={id:S(),title:``,source:`api_server`,messages:[],createdAt:Date.now(),updatedAt:Date.now()};return i.value.unshift(e),e}async function v(e){if(a.value=e,localStorage.setItem(n,e),u.value=i.value.find(t=>t.id===e)||null,u.value&&u.value.messages.length===0){l.value=!0;try{let t=await f(e);if(t&&t.messages){let e=w(t.messages);if(u.value.messages=e,u.value.inputTokens=t.input_tokens,u.value.outputTokens=t.output_tokens,t.title)u.value.title=t.title;else{let t=e.find(e=>e.role===`user`);if(t){let e=t.content.slice(0,40);u.value.title=e+(t.content.length>40?`...`:``)}}}}catch(e){console.error(`Failed to load session messages:`,e)}finally{l.value=!1}}}function y(){if(s.value)return;let e=_();e.model=d().selectedModel||void 0,v(e.id)}async function E(e,t){if(u.value&&(u.value.model=e,u.value.provider=t||``,t)){let{useAppStore:n}=await r(async()=>{let{useAppStore:e}=await import(`./app-ML9hRyDO.js`);return{useAppStore:e}},__vite__mapDeps([0,1,2,3]));await n().switchModel(e,t)}}async function D(e){await m(e),i.value=i.value.filter(t=>t.id!==e),a.value===e&&(i.value.length>0?await v(i.value[0].id):v(_().id))}function O(e){return i.value.find(t=>t.id===e)?.messages||[]}function k(e,t){let n=i.value.find(t=>t.id===e);n&&n.messages.push(t)}function A(e,t,n){let r=i.value.find(t=>t.id===e);if(!r)return;let a=r.messages.findIndex(e=>e.id===t);a!==-1&&(r.messages[a]={...r.messages[a],...n})}function j(e){let t=i.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 M(e,t){if(!e.trim()&&!(t&&t.length>0)||s.value)return;u.value||v(_().id);let n=a.value;k(n,{id:S(),role:`user`,content:e.trim(),timestamp:Date.now(),attachments:t&&t.length>0?t:void 0}),j(n);try{let r=O(n).filter(e=>(e.role===`user`||e.role===`assistant`)&&e.content.trim()).map(e=>({role:e.role,content:e.content})),i=e.trim();if(t&&t.length>0){let e=(await C(t)).map(e=>`[File: ${e.name}](${e.path})`);i=i?i+`
3
3
 
4
4
  `+e.join(`
5
5
  `):e.join(`
@@ -0,0 +1 @@
1
+ import{F as e}from"./router-0X4x3p8e.js";import{Y as t}from"./browser-BfJIjfY3.js";import{s as n}from"./Modal-fhZL63EZ.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};
@@ -1 +1 @@
1
- import{k as e}from"./router-Zpu1Tghg.js";import{st as t,u as n}from"./browser-BanYmQkE.js";var r=new WeakSet;function i(e){r.add(e)}function a(e){return!r.has(e)}function o(t,...n){return typeof t==`function`?t(...n):typeof t==`string`?e(t):typeof t==`number`?e(String(t)):null}var{cubicBezierEaseIn:s,cubicBezierEaseOut:c}=n;function l({transformOrigin:e=`inherit`,duration:n=`.2s`,enterScale:r=`.9`,originalTransform:i=``,originalTransition:a=``}={}){return[t(`&.fade-in-scale-up-transition-leave-active`,{transformOrigin:e,transition:`opacity ${n} ${s}, transform ${n} ${s} ${a&&`,${a}`}`}),t(`&.fade-in-scale-up-transition-enter-active`,{transformOrigin:e,transition:`opacity ${n} ${c}, transform ${n} ${c} ${a&&`,${a}`}`}),t(`&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to`,{opacity:0,transform:`${i} scale(${r})`}),t(`&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to`,{opacity:1,transform:`${i} scale(1)`})]}export{i,o as n,a as r,l as t};
1
+ import{k as e}from"./router-0X4x3p8e.js";import{st as t,u as n}from"./browser-BfJIjfY3.js";var r=new WeakSet;function i(e){r.add(e)}function a(e){return!r.has(e)}function o(t,...n){return typeof t==`function`?t(...n):typeof t==`string`?e(t):typeof t==`number`?e(String(t)):null}var{cubicBezierEaseIn:s,cubicBezierEaseOut:c}=n;function l({transformOrigin:e=`inherit`,duration:n=`.2s`,enterScale:r=`.9`,originalTransform:i=``,originalTransition:a=``}={}){return[t(`&.fade-in-scale-up-transition-leave-active`,{transformOrigin:e,transition:`opacity ${n} ${s}, transform ${n} ${s} ${a&&`,${a}`}`}),t(`&.fade-in-scale-up-transition-enter-active`,{transformOrigin:e,transition:`opacity ${n} ${c}, transform ${n} ${c} ${a&&`,${a}`}`}),t(`&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to`,{opacity:0,transform:`${i} scale(${r})`}),t(`&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to`,{opacity:1,transform:`${i} scale(1)`})]}export{i,o as n,a as r,l as t};