import{d as c,w as S}from"./DAj0p1rI.js";const H=200;function y(){const{subscribe:t,set:o,update:e}=S({connected:!1,events:[],lastHeartbeat:null,error:null});let n=null,l=null,d=0;function m(i){const u=i||(window.location.port==="5173"?`ws://${window.location.hostname}:3927/ws`:`ws://${window.location.host}/ws`);if((n==null?void 0:n.readyState)!==WebSocket.OPEN)try{n=new WebSocket(u),n.onopen=()=>{d=0,e(a=>({...a,connected:!0,error:null}))},n.onmessage=a=>{try{const s=JSON.parse(a.data);e(b=>{if(s.type==="Heartbeat")return{...b,lastHeartbeat:s};const v=[s,...b.events].slice(0,H);return{...b,events:v}})}catch(s){console.warn("[vestige] Failed to parse WebSocket message:",s)}},n.onclose=()=>{e(a=>({...a,connected:!1})),f(u)},n.onerror=()=>{e(a=>({...a,error:"WebSocket connection failed"}))}}catch(a){e(s=>({...s,error:String(a)}))}}function f(i){l&&clearTimeout(l);const u=Math.min(1e3*2**d,3e4);d++,l=setTimeout(()=>m(i),u)}function p(){l&&clearTimeout(l),n==null||n.close(),n=null,o({connected:!1,events:[],lastHeartbeat:null,error:null})}function w(){e(i=>({...i,events:[]}))}return{subscribe:t,connect:m,disconnect:p,clearEvents:w}}const r=y(),h=c(r,t=>t.connected),k=c(r,t=>t.events);c(r,t=>t.lastHeartbeat);const T=c(r,t=>{var o,e;return((e=(o=t.lastHeartbeat)==null?void 0:o.data)==null?void 0:e.memory_count)??0}),W=c(r,t=>{var o,e;return((e=(o=t.lastHeartbeat)==null?void 0:o.data)==null?void 0:e.avg_retention)??0}),E=c(r,t=>{var o,e;return((e=(o=t.lastHeartbeat)==null?void 0:o.data)==null?void 0:e.suppressed_count)??0});export{W as a,k as e,h as i,T as m,E as s,r as w};