hermes-web-ui 0.3.7 → 0.4.0

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 (85) hide show
  1. package/README.md +28 -12
  2. package/dist/client/assets/{Add-Cc7cgBoB.js → Add-BChxDDdy.js} +1 -1
  3. package/dist/client/assets/{Button-EoeZgIFH.js → Button-uvjCWO-i.js} +1 -1
  4. package/dist/client/assets/{ChannelsView-Bfbq3w7n.js → ChannelsView-D3a0g0rb.js} +1 -1
  5. package/dist/client/assets/{ChatView-Vfi_jEpI.css → ChatView-DI3XN8vz.css} +1 -1
  6. package/dist/client/assets/ChatView-T8LH7dwU.js +127 -0
  7. package/dist/client/assets/{Close-CKHcXisf.js → Close-DbXijZpL.js} +1 -1
  8. package/dist/client/assets/{FormItem-CvZvjrtr.js → FormItem-BRiLD3TC.js} +1 -1
  9. package/dist/client/assets/{GatewaysView-Dp4-TFPE.js → GatewaysView-rfzh1nqy.js} +1 -1
  10. package/dist/client/assets/{Input-Bk7XdoG-.js → Input-CjlUbV0M.js} +1 -1
  11. package/dist/client/assets/{InputNumber-Dn0EHi-K.js → InputNumber-CPEjoOAv.js} +1 -1
  12. package/dist/client/assets/{JobsView-D4JN73Zz.js → JobsView-D6AFr9Xe.js} +2 -2
  13. package/dist/client/assets/{LoginView--hy5CI5O.js → LoginView-DJB_TSHN.js} +1 -1
  14. package/dist/client/assets/{LogsView-Dz2ZeYad.js → LogsView-Ul8pAp42.js} +1 -1
  15. package/dist/client/assets/{MarkdownRenderer-BbedVxvo.js → MarkdownRenderer-CY7d2L7Z.js} +1 -1
  16. package/dist/client/assets/{MemoryView-D2EHM35l.js → MemoryView-BR5Dl_fa.js} +1 -1
  17. package/dist/client/assets/{Modal-C5-Iw50K.js → Modal-DDUFP8vh.js} +1 -1
  18. package/dist/client/assets/{ModelsView-CtrRf4vK.js → ModelsView-DAi9Jdmk.js} +1 -1
  19. package/dist/client/assets/{Popconfirm-C-M2anVL.js → Popconfirm-Cnb_uQVo.js} +1 -1
  20. package/dist/client/assets/{Popover-mIRPCy7U.js → Popover-DiVI0l6E.js} +1 -1
  21. package/dist/client/assets/{ProfilesView-Dy9PivgB.js → ProfilesView-BB0Zrfhi.js} +1 -1
  22. package/dist/client/assets/{Select-uZBC8HC2.js → Select-BqUA1wxE.js} +1 -1
  23. package/dist/client/assets/{SettingRow-D9R65bDj.js → SettingRow-CK0bHtaz.js} +1 -1
  24. package/dist/client/assets/{SettingsView-DWEEXqSY.js → SettingsView-BKKk44FG.js} +1 -1
  25. package/dist/client/assets/{SkillsView-CdZSRy9_.js → SkillsView-whSlyc23.js} +1 -1
  26. package/dist/client/assets/{Spin-ChbFBUOD.js → Spin-DwHJdgNz.js} +1 -1
  27. package/dist/client/assets/{Suffix-DgzfIwzx.js → Suffix-D6x-7akR.js} +1 -1
  28. package/dist/client/assets/{Switch--HhY1uSh.js → Switch-BvHRSSqt.js} +1 -1
  29. package/dist/client/assets/{Tag-B2zrHMmZ.js → Tag-BMMlXaEi.js} +1 -1
  30. package/dist/client/assets/{TerminalView-BwfnH803.js → TerminalView-el6o2Q0a.js} +1 -1
  31. package/dist/client/assets/{Tooltip-9tdvSKGi.js → Tooltip-BM4wl764.js} +1 -1
  32. package/dist/client/assets/{UsageView-zL3a7F86.js → UsageView-DQ_YKoEV.js} +1 -1
  33. package/dist/client/assets/{Warning-CXXqHzLa.js → Warning-CEC7rgvY.js} +1 -1
  34. package/dist/client/assets/{_plugin-vue_export-helper-Cnn0Z73x.js → _plugin-vue_export-helper-DgUZPfuZ.js} +1 -1
  35. package/dist/client/assets/app-DPUhLGXq.js +1 -0
  36. package/dist/client/assets/{app-BMobzABI.js → app-DUt8TNq3.js} +1 -1
  37. package/dist/client/assets/{browser-CQRjhbaB.js → browser-vxCOMmsq.js} +1 -1
  38. package/dist/client/assets/chat-i_Ge_Lfr.js +6 -0
  39. package/dist/client/assets/composables-jrQPIjcq.js +1 -0
  40. package/dist/client/assets/{fade-in.cssr-lwO9nLky.js → fade-in.cssr-DVg2CkO3.js} +1 -1
  41. package/dist/client/assets/{index-Tg6M43Om.js → index-COwJ2oY0.js} +1 -1
  42. package/dist/client/assets/{jobs-Z2HS0j2d.js → jobs-Czr1RcSG.js} +1 -1
  43. package/dist/client/assets/{light-DgIst23O.js → light-3rSjNeC-.js} +1 -1
  44. package/dist/client/assets/{light-oE8MEiWL.js → light-CKDlpgGU.js} +1 -1
  45. package/dist/client/assets/{light-Dx6qj2pM.js → light-CiIDFs7y.js} +1 -1
  46. package/dist/client/assets/{light-DZ0Ns16h.js → light-CoJqT8Vu.js} +1 -1
  47. package/dist/client/assets/{light-CjCy-Dkn.js → light-DPRJ1OEN.js} +1 -1
  48. package/dist/client/assets/{light-DzpNsLai.js → light-vTpJevRf.js} +1 -1
  49. package/dist/client/assets/{models-DLQiHB7r.js → models-BzEeJuoO.js} +1 -1
  50. package/dist/client/assets/{pinia-Dp_b1vdW.js → pinia-BoNLlsLy.js} +1 -1
  51. package/dist/client/assets/{profiles-CNTHYFZE.js → profiles-B-DFTmc2.js} +1 -1
  52. package/dist/client/assets/{router-Dj-Nmg7q.js → router-HHMeDEaP.js} +2 -2
  53. package/dist/client/assets/{sessions-C0kvgvBm.js → sessions-BmxS_BoH.js} +1 -1
  54. package/dist/client/assets/{skills-G7EoEvdS.js → skills-Be8Mzr1r.js} +1 -1
  55. package/dist/client/assets/{use-message-BgToAqhv.js → use-message-DBTY4945.js} +1 -1
  56. package/dist/client/assets/{useTheme-BUShiwRu.js → useTheme-D58Cg7k2.js} +1 -1
  57. package/dist/client/index.html +27 -27
  58. package/dist/server/index.js +19 -194
  59. package/dist/server/routes/health.d.ts +4 -0
  60. package/dist/server/routes/health.js +109 -0
  61. package/dist/server/routes/hermes/group-chat.d.ts +4 -0
  62. package/dist/server/routes/hermes/group-chat.js +146 -0
  63. package/dist/server/routes/update.d.ts +2 -0
  64. package/dist/server/routes/update.js +69 -0
  65. package/dist/server/routes/upload.js +41 -11
  66. package/dist/server/services/auth.js +1 -1
  67. package/dist/server/services/gateway-bootstrap.d.ts +2 -0
  68. package/dist/server/services/gateway-bootstrap.js +51 -0
  69. package/dist/server/services/group-chat/coordinator.d.ts +14 -0
  70. package/dist/server/services/group-chat/coordinator.js +230 -0
  71. package/dist/server/services/group-chat/index.d.ts +5 -0
  72. package/dist/server/services/group-chat/index.js +115 -0
  73. package/dist/server/services/group-chat/rooms-db.d.ts +56 -0
  74. package/dist/server/services/group-chat/rooms-db.js +199 -0
  75. package/dist/server/services/hermes/group-chat/agent-clients.d.ts +133 -0
  76. package/dist/server/services/hermes/group-chat/agent-clients.js +364 -0
  77. package/dist/server/services/hermes/group-chat/index.d.ts +72 -0
  78. package/dist/server/services/hermes/group-chat/index.js +307 -0
  79. package/dist/server/services/shutdown.d.ts +1 -0
  80. package/dist/server/services/shutdown.js +37 -0
  81. package/package.json +1 -1
  82. package/dist/client/assets/ChatView-CDdyTo72.js +0 -127
  83. package/dist/client/assets/app-Bqu9Uz-1.js +0 -1
  84. package/dist/client/assets/chat-BIdq6ZXF.js +0 -6
  85. package/dist/client/assets/composables-ClIU-Ad1.js +0 -1
@@ -1,6 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-Bqu9Uz-1.js","assets/app-BMobzABI.js","assets/router-Dj-Nmg7q.js","assets/pinia-Dp_b1vdW.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-Dj-Nmg7q.js";import{n as o}from"./pinia-Dp_b1vdW.js";import{n as s,nt as c,s as l}from"./browser-CQRjhbaB.js";import{i as u}from"./Popover-mIRPCy7U.js";import{t as d}from"./app-BMobzABI.js";import{t as f}from"./profiles-CNTHYFZE.js";import{n as p,r as m,t as h}from"./sessions-C0kvgvBm.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.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 B(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 V=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(){R(P(),n.value.map(e=>({...e,messages:[]})))}function b(){let e=i.value;if(!e)return;let t=n.value.find(t=>t.id===e);t&&R(F(e),B(t.messages))}function D(e,t){R(I(e),{runId:t,startedAt:Date.now()})}function O(e){z(I(e))}function M(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(!M(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&&b()),!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&&b(),O(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],y();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),b(),!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),y(),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?`...`:``)}}b()}}catch(e){console.error(`Failed to load session messages:`,e)}finally{c.value=!1}M(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-Bqu9Uz-1.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)),y(),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 ee(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&&(b(),y());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}D(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,b()},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&&b(),O(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&&b(),O(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(),M(n)&&H(n)});a.value.set(n,h)}catch(e){Z(n,{id:C(),role:`system`,content:`Error: ${e.message}`,timestamp:Date.now()})}}function te(){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),O(e),V(e)}}return typeof document<`u`&&document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&i.value&&!o.value&&(W(),M(i.value)&&H(i.value))}),{sessions:n,activeSessionId:i,activeSession:_,messages:v,isStreaming:o,isRunActive:u,isLoadingSessions:s,isLoadingMessages:c,newChat:q,switchSession:K,switchSessionModel:J,deleteSession:Y,sendMessage:ee,stopStreaming:te,loadSessions:U,refreshActiveSession:W}});export{_ as a,v as i,b as n,y as r,V as t};
@@ -1 +0,0 @@
1
- import{F as e}from"./router-Dj-Nmg7q.js";import{Y as t}from"./browser-CQRjhbaB.js";import{s as n}from"./Modal-C5-Iw50K.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};