@wrongstack/webui-hq 0.313.0 → 0.313.1
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.
- package/dist/assets/{alerts-C9eBX9-8.js → alerts-CzK1JtaF.js} +1 -1
- package/dist/assets/{brain-CasQFLGW.js → brain-CBt2f8uV.js} +1 -1
- package/dist/assets/{cockpit-C-PXTlIf.js → cockpit-63s5Ql0L.js} +1 -1
- package/dist/assets/{control-BnJmaNmt.js → control-DnlNywus.js} +1 -1
- package/dist/assets/{cost-BHY6zEoU.js → cost-DoH4-5Mx.js} +1 -1
- package/dist/assets/{fleet-map-DG8O3br5.js → fleet-map-CQBMSYNo.js} +1 -1
- package/dist/assets/{fleet-topology-BupZawpq.js → fleet-topology-BL7yeQpX.js} +1 -1
- package/dist/assets/index-CP46V4nH.js +2 -0
- package/dist/assets/{kanban-FnVQHZcq.js → kanban-B3fgkTrj.js} +1 -1
- package/dist/assets/{live-console-D4fbGyJM.js → live-console-yYmob0Pd.js} +1 -1
- package/dist/assets/{mailbox-eWAmNL4x.js → mailbox-Cnt8P19k.js} +1 -1
- package/dist/assets/{settings-B62Hxx2p.js → settings-Bci_gRgp.js} +1 -1
- package/dist/assets/{trends-DenFCLQy.js → trends-D9BdT3BY.js} +1 -1
- package/dist/assets/{use-backfilled-events-CnQ_BlHx.js → use-backfilled-events-Coa2_1cC.js} +1 -1
- package/dist/assets/{worktree-B4kJFv93.js → worktree-C3jmVqm_.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +5 -5
- package/dist/assets/index-BYuL7DL0.js +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/webui-hq",
|
|
3
|
-
"version": "0.313.
|
|
3
|
+
"version": "0.313.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "HQ Command Center dashboard — offline React app for the cross-machine coordination surface (port 3499).",
|
|
6
6
|
"type": "module",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"remark-gfm": "^4.0.1",
|
|
24
24
|
"virtua": "^0.50.4",
|
|
25
25
|
"zustand": "5.0.15",
|
|
26
|
-
"@wrongstack/core": "0.313.
|
|
27
|
-
"@wrongstack/
|
|
28
|
-
"@wrongstack/
|
|
29
|
-
"@wrongstack/webui-protocol": "0.313.
|
|
26
|
+
"@wrongstack/core": "0.313.1",
|
|
27
|
+
"@wrongstack/webui-server": "0.313.1",
|
|
28
|
+
"@wrongstack/tools": "0.313.1",
|
|
29
|
+
"@wrongstack/webui-protocol": "0.313.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^26.2.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cockpit-C-PXTlIf.js","assets/rolldown-runtime-hePW80VL.js","assets/icons-Cxo3pc0p.js","assets/markdown-jMopG_H4.js","assets/fleet-map-DG8O3br5.js","assets/vendor-ClUhoD-_.js","assets/fleet-topology-BupZawpq.js","assets/live-console-D4fbGyJM.js","assets/mailbox-eWAmNL4x.js","assets/use-backfilled-events-CnQ_BlHx.js","assets/kanban-FnVQHZcq.js","assets/cost-BHY6zEoU.js","assets/brain-CasQFLGW.js","assets/worktree-B4kJFv93.js","assets/trends-DenFCLQy.js","assets/alerts-C9eBX9-8.js","assets/control-BnJmaNmt.js","assets/settings-B62Hxx2p.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,A as n,Ct as r,F as i,Ft as a,Gt as o,I as s,O as c,Pt as l,S as u,Tt as d,Ut as f,W as p,Xt as ee,Zt as m,a as te,bt as ne,d as re,h,i as ie,j as ae,kt as oe,l as g,n as se,nt as _,o as ce,qt as v,rt as y,ut as b,v as x,w as S,y as le,yt as ue,z as C}from"./icons-Cxo3pc0p.js";import{t as de}from"./vendor-ClUhoD-_.js";import{i as w}from"./markdown-jMopG_H4.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var T={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function E(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function fe(e){return e.stopped?e:{...e,phase:`connecting`}}function pe(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function D(e,t=Date.now()){return{...e,lastActivityAt:t}}function me(e){return{...e,phase:`closed`,stopped:!0}}function he(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}function O(e,t,n=Date.now()){return e.phase!==`open`||e.lastActivityAt===null||t.heartbeatIntervalMs<=0?!1:n-e.lastActivityAt>t.heartbeatIntervalMs+t.heartbeatTimeoutMs}var ge=`abort,ping,user_message,tool.confirm_result,topic.advice,completion.request,model.switch,model.refine,model.fallback_choice,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.inspect,session.new,session.rename,session.resume,session.rewind,session.save,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),_e=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.action`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],ve=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),ye=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,prompts.content,prompts.create,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),be=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),xe=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.rewind,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),Se=`files.create,files.delete,files.list,files.move,files.read,files.rename,files.skeleton,files.tree,files.write,git.changes,git.diff,git.info,projects.add,projects.list,projects.select,working_dir.set,worktree.cleanup,worktree.diff,worktree.merge,worktree.remove,worktree.scan,shell.open,process.kill,process.killAll,process.list,terminal.close,terminal.create,terminal.input,terminal.resize`.split(`,`),Ce=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.custom_models.remove,provider.custom_models.set,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),we=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,chimera.report_available,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.fallback_pending,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.inspect,session.rewound,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,topic.advice_result,tools.list,trust.persisted`.split(`,`),Te=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.action_result`,`mailbox.agent_registered`,`mailbox.agent_deregistered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],Ee=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),De=`mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,prompts.content,prompts.created,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),Oe=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),ke=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],Ae=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],je=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.created,files.deleted,files.list,files.moved,files.read,files.renamed,files.skeleton_result,files.tree,files.tree.changed,files.written,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),Me=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.auto_heal_status`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`],Ne=[...ge,..._e,...Se,...Ce,...be,...xe,...ve,...ye],Pe=[...we,...Te,...je,...Me,...Oe,...ke,...Ae,...Ee,...De];new Set(Ne),new Set(Pe);function k(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function A(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function Fe(e){return e===void 0||Array.isArray(e)}function Ie(e){return A(e.activeProjects)===e.activeProjects&&A(e.activeClients)===e.activeClients&&A(e.activeSessions)===e.activeSessions&&A(e.activeSubagents)===e.activeSubagents&&A(e.unreadMailboxMessages)===e.unreadMailboxMessages&&A(e.incompleteMailboxMessages)===e.incompleteMailboxMessages&&A(e.totalCostUsd)===e.totalCostUsd}function Le(e){if(e.type!==`hq.snapshot`)return null;let t=k(e.snapshot),n=t?k(t.totals):null;return!t||typeof t.generatedAt!=`string`||!Array.isArray(t.clients)||!Array.isArray(t.projects)||!Array.isArray(t.sessions)||!Array.isArray(t.fleets)||!Array.isArray(t.mailboxes)||!n||!Ie(n)||!Fe(t.machines)||!Fe(t.liveSessions)||!Fe(t.mcpServers)?null:{kind:`hq-snapshot`,snapshot:t}}function Re(e){if(e.type!==`hq.event`)return null;let t=k(e.event);return!t||typeof t.id!=`string`||typeof t.type!=`string`||typeof t.timestamp!=`string`||typeof t.clientId!=`string`||typeof t.projectId!=`string`||typeof t.seq!=`number`?null:{kind:`hq-event`,event:t}}function ze(e){return e.type!==`hq.alert`||typeof e.severity!=`string`||![`info`,`warn`,`error`].includes(e.severity)||typeof e.message!=`string`||typeof e.timestamp!=`string`?null:{kind:`hq-alert`,alert:e}}function Be(e){if(e.type!==`hq.command_status`)return null;let t=k(e.command);return!t||typeof t.commandId!=`string`||typeof t.type!=`string`||typeof t.clientId!=`string`||typeof t.enqueuedBy!=`string`||typeof t.enqueuedAt!=`string`||typeof t.status!=`string`||![`queued`,`delivered`,`acked`].includes(t.status)?null:{kind:`hq-command-status`,command:t}}var j=e(m(),1),Ve=de(),He=e=>Symbol.iterator in e,Ue=e=>`entries`in e,We=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},Ge=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function Ke(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:He(e)&&He(t)?Ue(e)&&Ue(t)?We(e,t):Ge(e,t):We({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function qe(e){let t=j.useRef(void 0);return n=>{let r=e(n);return Ke(t.current,r)?t.current:t.current=r}}var M=`wrongstack.hq.token.v1`;function Je(){if(typeof window>`u`)return null;try{let e=new URLSearchParams(window.location.search).get(`token`);return e!==null&&e.length>0?e:null}catch{return null}}function N(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function P(){if(typeof window>`u`)return null;try{return window.sessionStorage??null}catch{return null}}function F(){try{let e=N()?.getItem(M)??null;if(e!==null&&e.length>0)return e}catch{}return Ye()}function Ye(){try{let e=P()?.getItem(M)??null;if(e===null||e.length===0)return null;let t=!1;try{let n=N();n!==null&&(n.setItem(M,e),t=n.getItem(M)===e)}catch{}if(t)try{P()?.removeItem(M)}catch{}return e}catch{return null}}function I(e){try{N()?.setItem(M,e)}catch{}}function L(){try{N()?.removeItem(M)}catch{}try{P()?.removeItem(M)}catch{}}function Xe(){let e=Je();return e===null?F():(I(e),e)}function Ze(){if(typeof window>`u`)return;let e=Je();if(e!==null&&(I(e),F()===e))try{let e=new URL(window.location.href);e.searchParams.delete(`token`),window.history.replaceState(null,``,`${e.pathname}${e.search}${e.hash}`)}catch{}}function Qe(){let e=Xe();return e===null?{}:{Authorization:`Bearer ${e}`}}function R(e,t){let n={...t?.headers??{},...Qe()};return fetch(e,{...t,headers:n})}function $e(e){let t=e.trim();if(!/[?&]token=/.test(t))return t;try{let e=typeof window>`u`?`http://127.0.0.1/`:window.location.href;return new URL(t,e).searchParams.get(`token`)?.trim()||t}catch{return t}}async function et(e){return fetch(`/api/auth/upgrade`,{method:`POST`,headers:{Authorization:`Bearer ${e}`},credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})}async function tt(e){let t=$e(e);if(t.length===0)return{ok:!1,message:`Enter a browser token.`};try{let e=await et(t),n={};try{n=await e.json()}catch{}if(e.ok&&n.loggedIn===!0)return I(t),{ok:!0};let r=n.error;return{ok:!1,message:typeof r==`string`?r:typeof r?.message==`string`?r.message:e.status===401?`The browser token was rejected. It may be invalid, expired, or revoked.`:`HQ could not start a browser session with this token.`}}catch{return{ok:!1,message:`Could not reach the HQ server. Try again.`}}}function nt(){if(typeof window>`u`)return null;try{let e=window.location.hash;if(!e.startsWith(`#bootstrap=`))return null;let t=e.slice(11);return t.length>0?t:null}catch{return null}}function rt(){if(!(typeof window>`u`))try{let e=new URL(window.location.href);e.hash.startsWith(`#bootstrap=`)&&(e.hash=``,window.history.replaceState(null,``,`${e.pathname}${e.search}`))}catch{}}async function it(){let e=nt();if(e===null)return!1;try{return(await fetch(`/api/auth/bootstrap`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:e}),credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})).ok?(rt(),L(),!0):!1}catch{return!1}}async function at(){let e=F();if(e===null)return!1;try{let t=await et(e);return!(!t.ok||(await t.json()).loggedIn!==!0)}catch{return!1}}var ot=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},st=(e=>e?ot(e):ot),ct=e=>e;function lt(e,t=ct){let n=j.useSyncExternalStore(e.subscribe,j.useCallback(()=>t(e.getState()),[e,t]),j.useCallback(()=>t(e.getInitialState()),[e,t]));return j.useDebugValue(n),n}var ut=e=>{let t=st(e),n=e=>lt(t,e);return Object.assign(n,t),n},dt=(e=>e?ut(e):ut),ft=6e3,pt=0,mt=dt()(e=>({toasts:[],addToast:(t,n=`info`,r=ft,i)=>{let a=`toast-${++pt}-${Date.now()}`,o={id:a,message:t,severity:n,createdAt:Date.now(),ttlMs:r,action:i};e(e=>({toasts:[...e.toasts.slice(-4),o]})),r>0&&setTimeout(()=>{e(e=>({toasts:e.toasts.filter(e=>e.id!==a)}))},r)},removeToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),clearToasts:()=>e({toasts:[]})})),z=w(),ht={error:(0,z.jsx)(oe,{size:16,"aria-hidden":`true`}),warning:(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),info:(0,z.jsx)(_,{size:16,"aria-hidden":`true`}),success:(0,z.jsx)(a,{size:16,"aria-hidden":`true`})};function gt(){let{toasts:e,removeToast:t}=mt(qe(e=>({toasts:e.toasts,removeToast:e.removeToast})));return e.length===0?null:(0,z.jsx)(`div`,{className:`hq-toast-container`,role:`status`,"aria-live":`polite`,"aria-label":`Notifications`,children:e.map(e=>(0,z.jsxs)(`div`,{className:`hq-toast hq-toast--${e.severity}`,"data-severity":e.severity,children:[(0,z.jsx)(`span`,{className:`hq-toast-icon`,children:ht[e.severity]}),(0,z.jsx)(`span`,{className:`hq-toast-message`,children:e.message}),e.action?(0,z.jsx)(`span`,{className:`hq-toast-action`,children:e.action}):null,(0,z.jsx)(`button`,{type:`button`,className:`hq-toast-close`,"aria-label":`Dismiss notification`,onClick:()=>t(e.id),children:(0,z.jsx)(se,{size:12})})]},e.id))})}var _t=new Set([`graceful`,`crash`,`heartbeat-timeout`,`auth-revoked`]),B=`__hq_peer__`;function vt(e){return e===void 0||typeof e==`string`}function yt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt))||!vt(t.rehydrateHint)||t.rehydrateHint!==void 0&&t.rehydrateHint.length>280||!vt(t.rehydrateCommandId))}function bt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt)))}function xt(e,t){let n=t.liveSessions??[],r=e.selectedSessionId===null?void 0:n.find(t=>t.sessionId===e.selectedSessionId),i=e.selectedAgentId===null||r?.agents.some(t=>t.id===e.selectedAgentId)===!0,a=e.selectedClientId===null||t.clients.some(t=>t.clientId===e.selectedClientId);return{snapshot:t,...e.selectedSessionId!==null&&r===void 0?{selectedSessionId:null,selectedAgentId:null}:i?{}:{selectedAgentId:null},...a?{}:{selectedClientId:null}}}function St(e,t){return e.timestamp===t.timestamp&&e.severity===t.severity&&e.message===t.message}var V=dt()(e=>({snapshot:null,events:[],alerts:[],commandStatuses:[],activeView:`cockpit`,selectedSessionId:null,selectedAgentId:null,selectedClientId:null,connected:!1,authRequired:!1,resumeCursors:{},needsSnapshotRefresh:!1,peerRehydrate:null,setActiveView:t=>e({activeView:t}),selectSession:(t,n=null)=>e({selectedSessionId:t,selectedAgentId:n}),selectAgent:(t,n)=>e({selectedSessionId:t,selectedAgentId:n}),selectClient:t=>e({selectedClientId:t}),markAuthRequired:()=>e(e=>e.authRequired?{}:{authRequired:!0}),_hydrateSnapshot:t=>e(e=>e.snapshot===null?xt(e,t):{}),_onSnapshot:t=>e(e=>{let n=e.snapshot;return n!==null&&typeof n.generatedAt==`string`&&typeof t.generatedAt==`string`&&Date.parse(t.generatedAt)<Date.parse(n.generatedAt)?{}:{...xt(e,t),connected:!0}}),_resetResumeCursors:()=>e({resumeCursors:{}}),_onEvent:t=>e(e=>{let n=e.events.some(e=>e.id===t.id),r=n?{}:{events:[...e.events,t].slice(-500)},i=t.type===`peer.rehydrate`||t.type===`peer.lost`?e=>({}):n=>{let r=e.resumeCursors[n]??0,i=t.seq,a=r>0&&i>0&&i<=r/2&&t.type!==`client.hello`;return i>r||a?{resumeCursors:{...e.resumeCursors,[n]:i}}:{}};if(t.type===`peer.rehydrate`){if(!yt(t.payload))return r;let e={kind:`peer.rehydrate`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}if(t.type===`peer.lost`){if(!bt(t.payload))return r;let e={kind:`peer.lost`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}return{...r,...i(t.clientId)}}),_onAlert:t=>e(e=>e.alerts.some(e=>St(e,t))?{}:{alerts:[...e.alerts,t].slice(-100)}),_onCommandStatus:t=>e(e=>{let n=e.commandStatuses.findIndex(e=>e.commandId===t.commandId);if(n<0)return{commandStatuses:[...e.commandStatuses,t].slice(-200)};let r=[...e.commandStatuses];return r[n]=t,{commandStatuses:r}}),_setConnected:t=>e({connected:t}),_setNeedsSnapshotRefresh:t=>e(e=>e.needsSnapshotRefresh===t?{}:{needsSnapshotRefresh:t}),_dismissPeerRehydrate:()=>e({peerRehydrate:null})}));async function H(e){let t;try{t=await R(e)}catch{throw Error(`Network error fetching ${e}`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized fetching ${e} — browser token required`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);try{return await t.json()}catch{throw Error(`Invalid JSON response from ${e}: ${t.status}`)}}async function Ct(e){let t;try{t=await R(`/api/mailbox-send`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch{throw Error(`Network error sending mailbox message`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!t.ok){let e=await t.json().catch(()=>null),n=typeof e?.error==`string`?e.error:t.statusText||`HTTP ${t.status}`;throw Error(n)}try{return await t.json()}catch{throw Error(`Invalid JSON response from mailbox-send API`)}}async function wt(e,t,n){let r;try{r=await R(`/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientId:e,type:t,payload:n})})}catch{throw Error(`Network error sending command`)}if(r.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!r.ok){let e=(await r.json().catch(()=>null))?.error??(r.statusText||`HTTP ${r.status}`);throw Error(e)}try{return await r.json()}catch{throw Error(`Invalid JSON response from command API`)}}var Tt=`wrongstack.hq.local-prefs.v1`,U={appearance:{theme:`dark`},fleet:{scope:`all`,layout:`map`,machineId:``,projectId:``},console:{delivery:`steer`,subject:``,body:``},control:{cmdType:`steer`,abortTarget:`leader`,spawnRole:`bug-hunter`,spawnTask:``,steerTo:`leader`,steerSubject:``,steerBody:``,broadcastSubject:``,broadcastBody:``},mailbox:{query:``,types:[],priorities:[],includeCompleted:!0}},W=null,Et=new Set;function G(){for(let e of Et)e()}function K(e){return typeof structuredClone==`function`?structuredClone(e):JSON.parse(JSON.stringify(e))}function q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Dt(){if(typeof window>`u`||window.localStorage===void 0)return K(U);try{let e=window.localStorage.getItem(Tt);return e===null?K(U):Ot(JSON.parse(e))}catch{return K(U)}}function Ot(e){if(!q(e))return K(U);let t=q(e.appearance)?e.appearance:{},n=q(e.fleet)?e.fleet:{},r=q(e.console)?e.console:{},i=q(e.control)?e.control:{},a=q(e.mailbox)?e.mailbox:{};return{appearance:{theme:t.theme===`light`?`light`:`dark`},fleet:{scope:n.scope===`machine`||n.scope===`project`?n.scope:`all`,layout:n.layout===`compact`?`compact`:`map`,machineId:typeof n.machineId==`string`?n.machineId:``,projectId:typeof n.projectId==`string`?n.projectId:``},console:{delivery:r.delivery===`btw`||r.delivery===`queue`?r.delivery:`steer`,subject:typeof r.subject==`string`?r.subject:``,body:typeof r.body==`string`?r.body:``},control:{cmdType:i.cmdType===`btw`||i.cmdType===`queue`||i.cmdType===`abort`||i.cmdType===`spawn`||i.cmdType===`broadcast`||i.cmdType===`run-command`?i.cmdType:U.control.cmdType,abortTarget:i.abortTarget===`fleet`?`fleet`:`leader`,spawnRole:typeof i.spawnRole==`string`&&i.spawnRole.length>0?i.spawnRole:U.control.spawnRole,spawnTask:typeof i.spawnTask==`string`?i.spawnTask:U.control.spawnTask,steerTo:typeof i.steerTo==`string`?i.steerTo:U.control.steerTo,steerSubject:typeof i.steerSubject==`string`?i.steerSubject:U.control.steerSubject,steerBody:typeof i.steerBody==`string`?i.steerBody:U.control.steerBody,broadcastSubject:typeof i.broadcastSubject==`string`?i.broadcastSubject:U.control.broadcastSubject,broadcastBody:typeof i.broadcastBody==`string`?i.broadcastBody:U.control.broadcastBody},mailbox:{query:typeof a.query==`string`?a.query:U.mailbox.query,types:Array.isArray(a.types)?a.types.filter(e=>typeof e==`string`):[],priorities:Array.isArray(a.priorities)?a.priorities.filter(e=>typeof e==`string`):[],includeCompleted:typeof a.includeCompleted!=`boolean`||a.includeCompleted}}}function J(){return W===null&&(W=Dt()),W}function Y(e){if(!(typeof window>`u`||window.localStorage===void 0))try{window.localStorage.setItem(Tt,JSON.stringify(e))}catch{}}function kt(e){return Et.add(e),()=>Et.delete(e)}function At(){return J()}function jt(){return U}function Mt(){return(0,j.useSyncExternalStore)(kt,At,jt)}function Nt(e){let t=J();W={...t,control:{...t.control,...e}},Y(W),G()}function Pt(e){let t=J();W={...t,appearance:{...t.appearance,...e}},Y(W),G()}function Ft(e){let t=J();W={...t,fleet:{...t.fleet,...e}},Y(W),G()}function It(e){let t=J();W={...t,console:{...t.console,...e}},Y(W),G()}function Lt(e){let t=J();W={...t,mailbox:{...t.mailbox,...e}},Y(W),G()}function Rt({value:e,onChange:t,onKeyDown:n,inputRef:r,placeholder:i,autoComplete:a,minLength:o,maxLength:s,className:c,id:l}){let[u,d]=(0,j.useState)(!1);return(0,z.jsxs)(`div`,{className:`hq-password-input-wrapper`,children:[(0,z.jsx)(`input`,{ref:r,id:l,type:u?`text`:`password`,className:c??`hq-token-input`,placeholder:i,autoComplete:a,minLength:o,maxLength:s,value:e,onChange:e=>t(e.target.value),onKeyDown:n}),(0,z.jsx)(`button`,{type:`button`,className:`hq-password-toggle`,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e=>!e),"aria-label":u?`Hide password`:`Show password`,"aria-pressed":u,children:u?(0,z.jsx)(ne,{size:14}):(0,z.jsx)(ue,{size:14})})]})}function zt({hadToken:e,onAuthenticated:t=()=>window.location.reload()}){let[n,r]=(0,j.useState)(null),[i,a]=(0,j.useState)(null);(0,j.useEffect)(()=>{fetch(`/api/auth/status`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(r).catch(()=>a(`Could not load HQ auth status.`))},[]);let o=n?.tokenMode??!0,s=n?.passwordMode??!1,[c,l]=(0,j.useState)(null),u=c??(e&&o?`token`:s?`password`:`token`);return i?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Auth status unavailable`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:i})]})}):n?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),o&&s?(0,z.jsxs)(`div`,{className:`hq-token-tabs`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`token`?` active`:``),onClick:()=>l(`token`),children:`Browser token`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`password`?` active`:``),onClick:()=>l(`password`),children:`Password`})]}):null,u===`token`||!s?(0,z.jsx)(Bt,{hadToken:e,onAuthenticated:t}):(0,z.jsx)(Vt,{})]})}):(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Checking auth mode…`})]})})}function Bt({hadToken:e,onAuthenticated:t}){let[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(null),[o,s]=(0,j.useState)(!1),c=(0,j.useRef)(null),l=(0,j.useRef)(!1);(0,j.useEffect)(()=>{c.current?.focus()},[]);let u=async()=>{if(o||l.current||n.trim().length===0)return;l.current=!0,s(!0),a(null);let e=await tt(n);if(e.ok){t();return}a(e.message??`The browser token was rejected.`),l.current=!1,s(!1)};return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Browser token required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:e?`The saved token was rejected — it may have been revoked or the server was reset. Paste a current browser token.`:`This HQ server runs in token mode. Open a terminal and run wstack hq token create to mint a browser token, then paste the token value here. A complete legacy ?token= URL also works.`}),i?(0,z.jsx)(`p`,{className:`hq-token-error`,children:i}):null,(0,z.jsx)(Rt,{inputRef:c,value:n,onChange:r,onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`browser token`,autoComplete:`off`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void u(),disabled:n.trim().length===0||o,children:o?`Connecting…`:`Connect`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Open a terminal and run `,(0,z.jsx)(`code`,{children:`wstack hq token create`}),`, then paste the`,` `,(0,z.jsx)(`code`,{children:`token:`}),` value here. The secret is shown only once — it cannot be recovered from `,(0,z.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),` (only its hash is stored). Run`,` `,(0,z.jsx)(`code`,{children:`wstack hq help`}),` for all token commands.`]})]})}function Vt(){let[e,t]=(0,j.useState)(``),[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(!1),[o,s]=(0,j.useState)(null),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(null),d=(0,j.useRef)(null),f=(0,j.useRef)(!1),p=(0,j.useRef)(!1);(0,j.useEffect)(()=>{if(i){d.current?.focus();return}u.current?.focus()},[i]);let ee=async()=>{if(c||f.current)return;let t=e;if(t.length!==0){f.current=!0,l(!0),s(null);try{let e=await fetch(`/api/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})});if(!e.ok){let t=`Login failed.`;try{let n=(await e.json()).error;typeof n==`string`?t=n:typeof n?.message==`string`&&(t=n.message)}catch{}s(t),f.current=!1,l(!1);return}if((await e.json()).totpRequired){a(!0),f.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),f.current=!1,l(!1)}}},m=async()=>{if(c||p.current)return;let e=n.trim();if(e.length!==0){p.current=!0,l(!0),s(null);try{let t=e.includes(`-`)?{recoveryCode:e}:{code:e.replace(/\D/g,``).slice(0,6)},n=await fetch(`/api/login/verify`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=`Verification failed.`;try{let t=(await n.json()).error;typeof t==`string`?e=t:typeof t?.message==`string`&&(e=t.message)}catch{}s(e),p.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),p.current=!1,l(!1)}}};return i?(0,z.jsxs)(z.Fragment,{children:[o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(`label`,{className:`hq-token-label`,htmlFor:`hq-totp-code`,children:`Authenticator code`}),(0,z.jsx)(`input`,{ref:d,id:`hq-totp-code`,className:`hq-token-input`,type:`text`,autoComplete:`one-time-code`,placeholder:`000000 or recovery code`,value:n,onChange:e=>r(e.target.value.slice(0,32)),onKeyDown:e=>{e.key===`Enter`&&m()}}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void m(),disabled:n.trim().length===0||c,children:c?`Verifying…`:`Verify`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-hint`,onClick:()=>{a(!1),r(``),s(null)},children:`← Back to password`}),(0,z.jsx)(`p`,{className:`hq-token-hint`,children:`Enter the 6-digit code from your authenticator app, or paste a recovery code.`})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Password required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:`This HQ server is protected by a password. Enter it to open the dashboard.`}),o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(Rt,{inputRef:u,value:e,onChange:t,onKeyDown:e=>{e.key===`Enter`&&ee()},placeholder:`password`,autoComplete:`current-password`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void ee(),disabled:e.length===0||c,children:c?`Logging in…`:`Log in`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Set or change the password with `,(0,z.jsx)(`code`,{children:`wstack --hq --password <secret>`}),`.`]})]})}var Ht=`modulepreload`,Ut=function(e){return`/`+e},Wt={},X=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Ut(t,n),t=s(t),t in Wt)return;Wt[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Ht,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gt=216e5,Z=[{id:`cockpit`,label:`Cockpit`,eyebrow:`Fleet overview`,description:`Health, active work, alerts, cost and command shortcuts.`,group:`Operations`,icon:t,shortcut:1},{id:`fleet`,label:`Fleet Map`,eyebrow:`Topology`,description:`Machines, projects, terminals and agents in one live graph.`,group:`Operations`,icon:i,shortcut:2},{id:`console`,label:`Live Console`,eyebrow:`Transcripts`,description:`Stream and inspect session or agent conversations.`,group:`Operations`,icon:C,shortcut:3},{id:`mailbox`,label:`Mailbox`,eyebrow:`Coordination`,description:`Cross-project messages, unread work and direct delivery.`,group:`Operations`,icon:y,shortcut:4},{id:`kanban`,label:`Kanban`,eyebrow:`Project work`,description:`Read-only project boards synchronized across clones and machines.`,group:`Operations`,icon:d},{id:`alerts`,label:`Attention`,eyebrow:`Operator inbox`,description:`Alerts, waiting agents, governance warnings and failed commands.`,group:`Intelligence`,icon:v,shortcut:5},{id:`cost`,label:`Cost`,eyebrow:`Economics`,description:`Project, provider and model spending distribution.`,group:`Intelligence`,icon:l,shortcut:6},{id:`trends`,label:`Trends`,eyebrow:`Telemetry`,description:`Cost, token and tool activity over time.`,group:`Intelligence`,icon:f,shortcut:7},{id:`brain`,label:`Brain`,eyebrow:`Decisions`,description:`Autonomous decisions, escalations and interventions.`,group:`Intelligence`,icon:o,shortcut:8},{id:`worktree`,label:`Worktrees`,eyebrow:`Workspace`,description:`Distributed branches, worktrees and ownership state.`,group:`System`,icon:b,shortcut:9},{id:`control`,label:`Control`,eyebrow:`Command plane`,description:`Steer, queue, broadcast and audit remote commands.`,group:`System`,icon:c,shortcut:0},{id:`settings`,label:`Security`,eyebrow:`Access control`,description:`Manage the HQ browser password, authentication and active credentials.`,group:`System`,icon:x}],Kt=[`Operations`,`Intelligence`,`System`],qt={cockpit:(0,j.lazy)(()=>X(()=>import(`./cockpit-C-PXTlIf.js`).then(e=>({default:e.CockpitView})),__vite__mapDeps([0,1,2,3]))),fleet:(0,j.lazy)(()=>X(()=>import(`./fleet-map-DG8O3br5.js`).then(e=>({default:e.FleetMapView})),__vite__mapDeps([4,1,2,5,3,6]))),console:(0,j.lazy)(()=>X(()=>import(`./live-console-D4fbGyJM.js`).then(e=>({default:e.LiveConsoleView})),__vite__mapDeps([7,1,2,3,6,5]))),mailbox:(0,j.lazy)(()=>X(()=>import(`./mailbox-eWAmNL4x.js`).then(e=>({default:e.MailboxView})),__vite__mapDeps([8,1,2,3,9]))),kanban:(0,j.lazy)(()=>X(()=>import(`./kanban-FnVQHZcq.js`).then(e=>({default:e.KanbanView})),__vite__mapDeps([10,1,2,3]))),cost:(0,j.lazy)(()=>X(()=>import(`./cost-BHY6zEoU.js`).then(e=>({default:e.CostView})),__vite__mapDeps([11,1,2,3]))),brain:(0,j.lazy)(()=>X(()=>import(`./brain-CasQFLGW.js`).then(e=>({default:e.BrainView})),__vite__mapDeps([12,1,2,3,9]))),worktree:(0,j.lazy)(()=>X(()=>import(`./worktree-B4kJFv93.js`).then(e=>({default:e.WorktreeView})),__vite__mapDeps([13,1,2,3,9]))),trends:(0,j.lazy)(()=>X(()=>import(`./trends-DenFCLQy.js`).then(e=>({default:e.TrendsView})),__vite__mapDeps([14,1,2,3]))),alerts:(0,j.lazy)(()=>X(()=>import(`./alerts-C9eBX9-8.js`).then(e=>({default:e.AlertsView})),__vite__mapDeps([15,1,2,3]))),control:(0,j.lazy)(()=>X(()=>import(`./control-BnJmaNmt.js`).then(e=>({default:e.ControlView})),__vite__mapDeps([16,1,2,3]))),settings:(0,j.lazy)(()=>X(()=>import(`./settings-B62Hxx2p.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([17,1,2,3])))};function Jt(e){return Z.find(t=>t.id===e)??Z[0]}var Yt=class extends j.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e.message:String(e)}}componentDidUpdate(e){e.view!==this.props.view&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,z.jsxs)(`div`,{className:`hq-view-error`,role:`alert`,children:[(0,z.jsx)(h,{size:22}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`This HQ surface stopped safely.`}),(0,z.jsx)(`p`,{children:this.state.error})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,onClick:()=>this.setState({error:null}),children:[(0,z.jsx)(S,{size:13}),`Retry view`]})]})}};function Xt(){let{snapshot:e,alerts:t,commandStatuses:r,activeView:i,authRequired:a,connected:o,peerRehydrate:c}=V(qe(e=>({snapshot:e.snapshot,alerts:e.alerts,commandStatuses:e.commandStatuses,activeView:e.activeView,authRequired:e.authRequired,connected:e.connected,peerRehydrate:e.peerRehydrate}))),[d,f]=(0,j.useState)(()=>typeof window>`u`||window.innerWidth>=1180),[m,ne]=(0,j.useState)(null),[h,oe]=(0,j.useState)(null),[g,se]=(0,j.useState)(!1),[_,v]=(0,j.useState)(!1),[y,b]=(0,j.useState)(``),[x,S]=(0,j.useState)(0),ue=(0,j.useRef)(null),{theme:C}=Mt().appearance,de=(0,j.useRef)(!1),w=(0,j.useRef)(!1);(0,j.useEffect)(()=>{w.current&&o===!1?mt.getState().addToast(`Connection lost — reconnecting with backoff…`,`warning`,4e3):w.current&&de.current===!1&&o===!0&&mt.getState().addToast(`Reconnected to HQ server`,`success`,3e3),o&&(w.current=!0),de.current=o},[o]),(0,j.useEffect)(()=>(document.documentElement.dataset.hqTheme=C,()=>{delete document.documentElement.dataset.hqTheme}),[C]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/snapshot`).then(t=>{e||V.getState()._hydrateSnapshot(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/auth/status`).then(t=>{e||oe(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1,t=()=>{H(`/api/system/update`).then(t=>{e||ne(t)}).catch(()=>{})};t();let n=window.setInterval(t,Gt);return()=>{e=!0,window.clearInterval(n)}},[]),(0,j.useEffect)(()=>{_&&ue.current?.focus()},[_]),(0,j.useEffect)(()=>{let e=e=>{if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),v(e=>!e),b(``),S(0);return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`b`){e.preventDefault(),f(e=>!e);return}if(e.altKey&&/^\d$/.test(e.key)){let t=Number(e.key),n=Z.find(e=>e.shortcut===t);n&&(e.preventDefault(),V.getState().setActiveView(n.id));return}if(e.key===`Escape`&&_){e.preventDefault(),v(!1);return}e.key===`Escape`&&d&&window.innerWidth<900&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,d]);let T=(0,j.useMemo)(()=>{let e=y.trim().toLowerCase();return e.length===0?Z:Z.filter(t=>[t.label,t.eyebrow,t.description,t.group].join(` `).toLowerCase().includes(e))},[y]);if(a)return(0,z.jsx)(zt,{hadToken:Xe()!==null});let E=e?.totals,fe=E?.unreadMailboxMessages??0,pe=t.filter(e=>e.severity!==`info`).length+(e?.projects??[]).filter(e=>e.governance?.signal.level===`warning`||e.governance?.signal.level===`unavailable`).length+(e?.liveSessions??[]).flatMap(e=>e.agents??[]).filter(e=>e.status===`waiting_user`||e.status===`error`).length+(e?.clients??[]).filter(e=>!e.connected).length+r.filter(e=>e.ackStatus===`failed`||e.ackStatus===`rejected`).length,D=Jt(i),me=D.icon,he=qt[i],O=e=>{V.getState().setActiveView(e),v(!1),b(``),S(0),window.innerWidth<900&&f(!1)},ge=async()=>{se(!0);try{await R(`/api/logout`,{method:`POST`})}finally{L(),window.location.reload()}};return(0,z.jsxs)(`div`,{className:`hq-app`,"data-theme":C,"data-testid":`hq-workbench`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-sidebar-scrim`,"data-open":d,"aria-label":`Close HQ navigation`,onClick:()=>f(!1)}),(0,z.jsxs)(`aside`,{className:`hq-secondary-nav`,"data-open":d,"aria-label":`HQ navigation`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-header`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-brand`,children:[(0,z.jsx)(`img`,{src:`/wrongstack.svg`,alt:``,"aria-hidden":`true`,draggable:!1}),(0,z.jsxs)(`div`,{className:`hq-secondary-copy`,children:[(0,z.jsx)(`span`,{className:`hq-secondary-eyebrow`,children:`Command center`}),(0,z.jsx)(`strong`,{children:`WrongStack HQ`})]})]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-secondary-close`,"aria-label":`Collapse HQ navigation`,title:`Collapse navigation (Ctrl+B)`,onClick:()=>f(!1),children:(0,z.jsx)(ae,{size:16})})]}),(0,z.jsx)(`div`,{className:`hq-secondary-scroll`,children:Kt.map(e=>(0,z.jsxs)(`section`,{className:`hq-nav-group`,children:[(0,z.jsx)(`div`,{className:`hq-nav-group-label`,children:e}),Z.filter(t=>t.group===e).map(e=>{let t=e.icon,n=e.id===`mailbox`?fe:e.id===`alerts`?pe:0;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-nav-item`,"data-active":i===e.id,"aria-current":i===e.id?`page`:void 0,onClick:()=>O(e.id),children:[(0,z.jsx)(t,{size:15}),(0,z.jsx)(`span`,{children:e.label}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt+`,e.shortcut]}),n>0?(0,z.jsx)(`span`,{className:`hq-nav-badge`,children:n}):null]},e.id)})]},e))}),(0,z.jsxs)(`div`,{className:`hq-secondary-footer`,children:[(0,z.jsxs)(`div`,{className:`hq-link-state`,"data-live":o,children:[(0,z.jsx)(`span`,{className:`hq-link-dot`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:o?`Connected`:`Reconnecting`}),(0,z.jsxs)(`span`,{children:[E?.activeMachines??0,` machines · `,E?.activeClients??0,` clients`]})]})]}),(0,z.jsx)(`span`,{className:`hq-build-label`,children:`@wrongstack/webui-hq`})]})]}),(0,z.jsxs)(`section`,{className:`hq-workbench`,"data-update-available":m?.outdated===!0,children:[(0,z.jsxs)(`header`,{className:`hq-header`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-sidebar-toggle`,"aria-label":d?`Collapse HQ navigation`:`Expand HQ navigation`,"aria-expanded":d,title:`Toggle navigation (Ctrl+B)`,onClick:()=>f(e=>!e),children:d?(0,z.jsx)(ae,{size:17}):(0,z.jsx)(n,{size:17})}),(0,z.jsx)(`div`,{className:`hq-view-icon`,"aria-hidden":`true`,children:(0,z.jsx)(me,{size:18})}),(0,z.jsxs)(`div`,{className:`hq-view-identity`,children:[(0,z.jsx)(`span`,{children:D.eyebrow}),(0,z.jsx)(`h1`,{children:D.label}),(0,z.jsx)(`p`,{children:D.description})]}),(0,z.jsxs)(`div`,{className:`hq-top-metrics`,children:[(0,z.jsx)(Q,{icon:le,label:`Machines`,value:E?.activeMachines??0}),(0,z.jsx)(Q,{icon:ce,label:`Agents`,value:E?.activeAgents??0}),(0,z.jsx)(Q,{icon:ee,label:`Sessions`,value:E?.activeSessions??0}),(0,z.jsx)(Q,{icon:l,label:`Cost`,value:`$${(E?.totalCostUsd??0).toFixed(2)}`,accent:!0})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-trigger`,"aria-label":`Open HQ command palette`,"aria-expanded":_,onClick:()=>{v(!0),b(``),S(0)},children:[(0,z.jsx)(u,{size:14}),(0,z.jsx)(`span`,{children:`Jump to`}),(0,z.jsx)(`kbd`,{children:`Ctrl K`})]}),(0,z.jsxs)(`div`,{className:`hq-connection-pill`,"data-live":o,children:[o?(0,z.jsx)(ie,{size:13}):(0,z.jsx)(te,{size:13}),o?`Live`:`Reconnecting`]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-theme-toggle`,"aria-label":`Switch to ${C===`dark`?`light`:`dark`} mode`,title:`Switch to ${C===`dark`?`light`:`dark`} mode`,onClick:()=>Pt({theme:C===`dark`?`light`:`dark`}),children:C===`dark`?(0,z.jsx)(re,{size:16}):(0,z.jsx)(s,{size:16})}),h?.tokenMode||h?.passwordMode?(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button`,"aria-label":`Log out of HQ`,title:`Log out and clear this tab's HQ credentials`,disabled:g,onClick:()=>void ge(),children:(0,z.jsx)(p,{size:16})}):null]}),m?.outdated?(0,z.jsx)(Qt,{status:m}):null,c?(0,z.jsx)(Zt,{envelope:c}):null,(0,z.jsx)(`main`,{className:`hq-main`,id:`hq-main`,tabIndex:-1,children:(0,z.jsx)(Yt,{view:i,children:(0,z.jsx)(j.Suspense,{fallback:(0,z.jsx)($t,{label:D.label}),children:(0,z.jsx)(he,{})})})})]}),_?(0,z.jsxs)(`div`,{className:`hq-command-layer`,role:`presentation`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-command-scrim`,"aria-label":`Close HQ command palette`,onClick:()=>v(!1)}),(0,z.jsxs)(`dialog`,{open:!0,className:`hq-command-palette`,"aria-label":`HQ command palette`,children:[(0,z.jsxs)(`div`,{className:`hq-command-search`,children:[(0,z.jsx)(u,{size:17,"aria-hidden":`true`}),(0,z.jsx)(`input`,{ref:ue,type:`search`,value:y,"aria-label":`Search HQ views`,placeholder:`Search views, telemetry and controls…`,onChange:e=>{b(e.target.value),S(0)},onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),S(e=>T.length===0?0:(e+1)%T.length)):e.key===`ArrowUp`?(e.preventDefault(),S(e=>T.length===0?0:(e-1+T.length)%T.length)):e.key===`Enter`&&T[x]&&(e.preventDefault(),O(T[x].id))}}),(0,z.jsx)(`kbd`,{children:`Esc`})]}),(0,z.jsx)(`div`,{className:`hq-command-results`,role:`listbox`,"aria-label":`HQ destinations`,children:T.length===0?(0,z.jsxs)(`div`,{className:`hq-command-empty`,children:[`No HQ surface matches “`,y,`”.`]}):T.map((e,t)=>{let n=e.icon;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-result`,role:`option`,"aria-selected":x===t,"data-current":i===e.id,onMouseEnter:()=>S(t),onClick:()=>O(e.id),children:[(0,z.jsx)(`span`,{className:`hq-command-result-icon`,children:(0,z.jsx)(n,{size:16})}),(0,z.jsxs)(`span`,{className:`hq-command-result-copy`,children:[(0,z.jsx)(`strong`,{children:e.label}),(0,z.jsx)(`small`,{children:e.description})]}),(0,z.jsx)(`span`,{className:`hq-command-result-group`,children:e.group}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt `,e.shortcut]})]},e.id)})}),(0,z.jsxs)(`footer`,{className:`hq-command-footer`,children:[(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`↑↓`}),` select`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Enter`}),` open`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Esc`}),` close`]}),(0,z.jsxs)(`span`,{children:[T.length,` destinations`]})]})]})]}):null,(0,z.jsx)(gt,{})]})}function Zt({envelope:e}){let t=e.kind===`peer.rehydrate`?`Leader session lost — survivor clients can rehydrate`:`Leader session lost — no survivor clients reported`,n=e.kind===`peer.rehydrate`&&e.payload.rehydrateHint?e.payload.rehydrateHint:`${e.payload.previousLeaderHandle} on ${e.payload.machineId} ended (${e.payload.reason}).`;return(0,z.jsxs)(`aside`,{className:`hq-peer-rehydrate-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:t}),(0,z.jsx)(`span`,{children:n})]}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>V.getState()._dismissPeerRehydrate(),title:`Dismiss peer lifecycle notice`,children:`Dismiss`})]})}function Qt({status:e}){let[t,n]=(0,j.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e.command),n(!0),window.setTimeout(()=>n(!1),1500)}catch{n(!1)}};return(0,z.jsxs)(`aside`,{className:`hq-update-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`WrongStack update available`}),(0,z.jsxs)(`span`,{children:[`v`,e.current,` → v`,e.latest,`. Run `,(0,z.jsx)(`code`,{children:e.command}),` in your terminal, then restart HQ.`]})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:()=>void i(),title:`Copy update command`,children:[(0,z.jsx)(r,{size:13,"aria-hidden":`true`}),t?`Copied`:`Copy command`]})]})}function Q({icon:e,label:t,value:n,accent:r=!1}){return(0,z.jsxs)(`div`,{className:`hq-top-metric`,"data-accent":r,children:[(0,z.jsx)(e,{size:12}),(0,z.jsx)(`span`,{children:t}),(0,z.jsx)(`strong`,{children:n})]})}function $t({label:e}){return(0,z.jsxs)(`div`,{className:`hq-view-loading`,role:`status`,children:[(0,z.jsx)(c,{size:18}),(0,z.jsxs)(`span`,{children:[`Loading `,e,`…`]})]})}var en=25e3,tn=1e4,nn=3e4,rn=32;function an(e){let t=e.toLowerCase().replace(/^\[(.*)\]$/,`$1`);if(t===`localhost`)return!0;let n=t.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(n){if(n[1]!==`127`)return!1;for(let e of n.slice(1))if(Number(e)>255)return!1;return!0}return t===`::1`||t===`0:0:0:0:0:0:0:1`||t.startsWith(`::ffff:127.`)}function on(e){if(!Number.isFinite(e))return 0;let t=Math.max(0,Math.trunc(e));return Number.isSafeInteger(t)?t:0}var sn=class{ws=null;handlers=new Set;stateHandlers=new Set;reconnectAttempt=0;connectionState=E();reconnectTimer=null;heartbeatTimer=null;lastMessageAt=0;stopped=!1;_state=`disconnected`;_url;resumeCursor;maxRetries;heartbeatIntervalMs;heartbeatTimeoutMs;maxBackoffMs;constructor(e){if(this.maxRetries=e?.maxRetries??1/0,this.heartbeatIntervalMs=e?.heartbeatIntervalMs??en,this.heartbeatTimeoutMs=e?.heartbeatTimeoutMs??tn,this.maxBackoffMs=e?.maxBackoffMs??nn,this.resumeCursor=e?.resumeCursor??(()=>({})),e?.url)this._url=e.url;else{let e=typeof window<`u`?window.location:{host:`127.0.0.1:3499`,protocol:`http:`,hostname:`127.0.0.1`},t=e.protocol===`https:`?`wss:`:`ws:`,n=Xe(),r=an(e.hostname),i=`${t}//${e.host}/ws/browser`;this._url=n!==null&&r?`${i}?token=${encodeURIComponent(n)}`:i}}get url(){return this._url}get state(){return this._state}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}connect(){if(this.stopped||this.ws!==null)return;this.connectionState=fe(this.connectionState),this.emitState(`connecting`);let e;try{e=new WebSocket(this._url)}catch{this.scheduleReconnect();return}this.ws=e,e.onopen=()=>{this.ws===e&&(this.reconnectAttempt=0,this.connectionState=pe(this.connectionState),this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt),this.emitState(`connected`),this.sendResume(),this.startHeartbeat())},e.onmessage=t=>{if(this.ws===e){this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt);try{let e=JSON.parse(typeof t.data==`string`?t.data:``);for(let t of this.handlers)try{t(e)}catch{}}catch{}}},e.onclose=()=>this.handleClose(e,`close`),e.onerror=()=>this.handleClose(e,`error`)}close(){this.stopped=!0,this.connectionState=me(this.connectionState),this.stopHeartbeat(),this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws?.close(1e3,`client closed`),this.ws=null,this.emitState(`disconnected`)}setResumeCursorProvider(e){this.resumeCursor=e}on(e){return this.handlers.add(e),()=>this.handlers.delete(e)}onStateChange(e){return this.stateHandlers.add(e),e(this._state),()=>this.stateHandlers.delete(e)}handleClose(e,t){this.ws===e&&(this.ws=null,this.stopHeartbeat(),this.scheduleReconnect())}scheduleReconnect(){if(this.stopped||this.reconnectTimer!==null)return;let e=he(this.connectionState,{...T,maxReconnectAttempts:this.maxRetries,maxBackoffMs:this.maxBackoffMs,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs,jitterRatio:.5});if(this.connectionState=e.state,this.reconnectAttempt=e.state.reconnectAttempt,!e.plan){this.emitState(`disconnected`);return}this.emitState(`reconnecting`),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},e.plan.delayMs)}sendResume(){if(this.ws?.readyState===WebSocket.OPEN)try{for(let e of this.resumeFrames())this.ws.send(JSON.stringify(e))}catch{}}resumeFrames(){try{let e=this.resumeCursor(),t=typeof e.entries==`function`?e.entries():Object.entries(e),n=[];for(let[e,r]of t){if(typeof e!=`string`||e.length===0)continue;let t=on(r);n.push({clientId:e,lastSeqSeen:t})}n.sort((e,t)=>t.lastSeqSeen===e.lastSeqSeen?e.clientId.localeCompare(t.clientId):t.lastSeqSeen-e.lastSeqSeen);let r=n.find(({clientId:e})=>e===B),i=r===void 0?rn:31,a=n.filter(({clientId:e})=>e!==B).slice(0,i);return r!==void 0&&a.unshift(r),a.map(({clientId:e,lastSeqSeen:t})=>({type:`client.resume`,clientId:e,lastSeqSeen:t}))}catch{return[]}}get isHeartbeatTimedOut(){return this.ws===null||O(this.connectionState,{...T,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs})}startHeartbeat(){this.stopHeartbeat(),this.lastMessageAt=Date.now(),this.heartbeatTimer=setInterval(()=>{this.isHeartbeatTimedOut&&this.ws!==null&&(this.ws.close(4e3,`heartbeat timeout`),this.ws=null,this.scheduleReconnect())},this.heartbeatIntervalMs)}stopHeartbeat(){this.heartbeatTimer!==null&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}emitState(e){this._state=e;for(let t of this.stateHandlers)try{t(e)}catch{}}},$=null;function cn(e){if($===null)return $=new sn(e),$.connect(),$;if(e?.resumeCursor!==void 0&&$.setResumeCursorProvider(e.resumeCursor),e===void 0)return $;let t=[];return e.url!==void 0&&e.url!==$.url&&t.push(`url: ${e.url} vs ${$.url}`),e.heartbeatIntervalMs!==void 0&&e.heartbeatIntervalMs!==$.heartbeatIntervalMs&&t.push(`heartbeatIntervalMs: ${e.heartbeatIntervalMs} vs ${$.heartbeatIntervalMs}`),e.heartbeatTimeoutMs!==void 0&&e.heartbeatTimeoutMs!==$.heartbeatTimeoutMs&&t.push(`heartbeatTimeoutMs: ${e.heartbeatTimeoutMs} vs ${$.heartbeatTimeoutMs}`),e.maxBackoffMs!==void 0&&e.maxBackoffMs!==$.maxBackoffMs&&t.push(`maxBackoffMs: ${e.maxBackoffMs} vs ${$.maxBackoffMs}`),e.maxRetries!==void 0&&e.maxRetries!==$.maxRetries&&t.push(`maxRetries: ${e.maxRetries} vs ${$.maxRetries}`),t.length>0&&typeof console<`u`&&console.warn(`[hq-ws-client] getHqClient() called with options that conflict with the live singleton; ignoring: ${t.join(`, `)}. Call closeHqClient() first if you need to reconfigure.`),$}var ln=document.getElementById(`root`);ln!==null&&it().finally(()=>{Ze(),at();let e=cn({resumeCursor:()=>V.getState().resumeCursors});e.onStateChange(e=>{V.getState()._setConnected(e===`connected`)});let t=null,n=()=>{t===null&&(V.getState()._setNeedsSnapshotRefresh(!1),t=H(`/api/snapshot`).then(e=>{V.getState()._onSnapshot(e)}).catch(()=>void 0).finally(()=>{t=null}))};V.subscribe((e,t)=>{e.needsSnapshotRefresh&&!t.needsSnapshotRefresh&&n()}),e.on(e=>{if(e.type===`hq.snapshot`){let t=Le(e);t&&V.getState()._onSnapshot(t.snapshot)}else if(e.type===`hq.event`){let t=Re(e);t&&V.getState()._onEvent(t.event)}else if(e.type===`hq.alert`){let t=ze(e);t&&V.getState()._onAlert(t.alert)}else if(e.type===`hq.command_status`){let t=Be(e);t&&V.getState()._onCommandStatus(t.command)}else if(e.type===`hq.resume_gap`)for(let t of e.envelopes){let e=Re({type:`hq.event`,event:t});e&&V.getState()._onEvent(e.event)}else e.type===`hq.resume_reject`&&(V.getState()._resetResumeCursors(),V.getState()._setNeedsSnapshotRefresh(!0))}),(0,Ve.createRoot)(ln).render((0,z.jsx)(j.StrictMode,{children:(0,z.jsx)(Xt,{})}))});export{Lt as a,wt as c,R as d,L as f,Ft as i,Ct as l,It as n,Mt as o,qe as p,Nt as r,H as s,Rt as t,V as u};
|