@wrongstack/webui-hq 0.305.0 → 0.305.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-c5Z3RmRO.js +1 -0
- package/dist/assets/{brain-Dwu_CxB0.js → brain-yFwqzSQm.js} +1 -1
- package/dist/assets/cockpit-DYI1Mtmj.js +1 -0
- package/dist/assets/control-DgiLstey.js +1 -0
- package/dist/assets/{cost-BfO45Z4b.js → cost-CjUmg7Cz.js} +1 -1
- package/dist/assets/{fleet-map-DVCcQRlq.js → fleet-map-DPFffNsC.js} +2 -2
- package/dist/assets/{fleet-topology-GCNPUAxv.js → fleet-topology-DGriqRY0.js} +7 -7
- package/dist/assets/icons-C4ljWs50.js +1 -0
- package/dist/assets/index-BlKmioWF.js +2 -0
- package/dist/assets/index-C0hFBKGu.css +1 -0
- package/dist/assets/{kanban-B1QOUG8G.js → kanban-xZUo4Rvz.js} +1 -1
- package/dist/assets/live-console-oOSsUGsT.js +1 -0
- package/dist/assets/mailbox-DyoU-DxV.js +1 -0
- package/dist/assets/{markdown-mWU1fYYi.js → markdown--Y3iks7c.js} +1 -1
- package/dist/assets/{settings-B37plfuB.js → settings-OX1daA1q.js} +2 -2
- package/dist/assets/{trends-BqZY3rkH.js → trends-BPRMod5a.js} +1 -1
- package/dist/assets/{use-backfilled-events-jhv9zwHj.js → use-backfilled-events-BGysB4Zn.js} +1 -1
- package/dist/assets/{vendor-5Eg_tZuH.js → vendor-BwY1EM_9.js} +1 -1
- package/dist/assets/{worktree-hlgRokq_.js → worktree-CYeNZBRN.js} +1 -1
- package/dist/index.html +5 -5
- package/package.json +4 -4
- package/dist/assets/alerts-CeRcla80.js +0 -1
- package/dist/assets/cockpit-CBmd0m77.js +0 -1
- package/dist/assets/control-Cbqqueg6.js +0 -1
- package/dist/assets/icons-kYa9YuNu.js +0 -1
- package/dist/assets/index-2juseZBv.js +0 -2
- package/dist/assets/index-QlgSKp-e.css +0 -1
- package/dist/assets/live-console-BfoREDy_.js +0 -1
- package/dist/assets/mailbox-BxKyFuHW.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/webui-hq",
|
|
3
|
-
"version": "0.305.
|
|
3
|
+
"version": "0.305.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,9 +23,9 @@
|
|
|
23
23
|
"remark-gfm": "^4.0.1",
|
|
24
24
|
"virtua": "^0.49.3",
|
|
25
25
|
"zustand": "5.0.14",
|
|
26
|
-
"@wrongstack/
|
|
27
|
-
"@wrongstack/
|
|
28
|
-
"@wrongstack/
|
|
26
|
+
"@wrongstack/tools": "0.305.1",
|
|
27
|
+
"@wrongstack/core": "0.305.1",
|
|
28
|
+
"@wrongstack/webui-server": "0.305.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^26.1.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Wt as t}from"./icons-kYa9YuNu.js";import{i as n}from"./markdown-mWU1fYYi.js";import{p as r,s as i,u as a}from"./index-2juseZBv.js";var o=e(t(),1),s=n();function c(){let e=a(r(e=>e.alerts)),[t,n]=(0,o.useState)([]),[c,u]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=!1,t=()=>{i(`/api/alerts`).then(t=>{e||(n(t.active),u(t.history))}).catch(()=>{})};t();let r=setInterval(t,15e3);return()=>{e=!0,clearInterval(r)}},[]);let d=e.slice(-50).reverse(),f=t.filter(e=>e.severity===`error`).length,p=t.filter(e=>e.severity===`warn`).length,m=t.length===0&&d.length===0;return(0,s.jsxs)(`div`,{className:`hq-screen hq-alerts-screen`,children:[(0,s.jsxs)(`section`,{className:`hq-screen-hero hq-alerts-hero`,"aria-label":`Alert command summary`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`span`,{className:`hq-section-kicker`,children:`Attention rail`}),(0,s.jsx)(`h2`,{children:m?`Fleet quiet`:`Fleet requires review`}),(0,s.jsx)(`p`,{children:`Active rules, live envelopes and historical transitions are separated so urgent alerts stay above routine telemetry.`})]}),(0,s.jsxs)(`div`,{className:`hq-hero-metrics`,children:[(0,s.jsx)(l,{label:`active`,value:t.length,tone:t.length>0?`warn`:`ok`}),(0,s.jsx)(l,{label:`errors`,value:f,tone:f>0?`error`:`ok`}),(0,s.jsx)(l,{label:`warnings`,value:p,tone:p>0?`warn`:`ok`}),(0,s.jsx)(l,{label:`live feed`,value:d.length})]})]}),(0,s.jsxs)(`section`,{className:`hq-priority-section`,"aria-label":`Active alerts`,children:[(0,s.jsxs)(`div`,{className:`hq-section-head`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`span`,{className:`hq-section-kicker`,children:`Now`}),(0,s.jsxs)(`h3`,{children:[`Active Alerts (`,t.length,`)`]})]}),t.length>0?(0,s.jsx)(`span`,{className:`hq-pill warn`,children:`operator attention`}):null]}),t.length>0?(0,s.jsx)(`div`,{className:`hq-alert-priority-grid`,children:t.map(e=>(0,s.jsxs)(`div`,{className:`hq-card hq-alert-card hq-card-severity `+e.severity,children:[(0,s.jsxs)(`div`,{className:`hq-row`,children:[(0,s.jsx)(`span`,{className:`hq-pill `+e.severity,children:e.severity}),(0,s.jsx)(`span`,{className:`hq-text-bright`,children:e.ruleId}),(0,s.jsxs)(`span`,{className:`hq-mono hq-ml-auto hq-text-dim`,children:[`since `,new Date(e.firstFiredAt).toLocaleTimeString()]})]}),(0,s.jsx)(`div`,{className:`hq-row-detail`,children:e.message})]},e.id))}):(0,s.jsx)(`div`,{className:`hq-empty hq-empty-ornate`,children:`No active alert rules are firing. The live feed below will wake this rail when cost, stale-session or failure thresholds trip.`})]}),(0,s.jsxs)(`div`,{className:`hq-two-column hq-alerts-columns`,children:[(0,s.jsxs)(`section`,{children:[(0,s.jsxs)(`div`,{className:`hq-section-head compact`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`span`,{className:`hq-section-kicker`,children:`Signal stream`}),(0,s.jsx)(`h3`,{children:`Live Alert Feed`})]}),(0,s.jsxs)(`span`,{className:`hq-mono hq-row-subtle`,children:[`last `,d.length]})]}),d.length===0?(0,s.jsx)(`div`,{className:`hq-empty hq-pad-md`,children:`No live alerts. Alerts fire when fleet rules trigger.`}):(0,s.jsx)(`div`,{className:`hq-card hq-alert-feed-card`,children:d.map(e=>(0,s.jsxs)(`div`,{className:`hq-row hq-alert-feed-row`,children:[(0,s.jsx)(`span`,{className:`hq-pill `+e.severity,children:e.severity}),(0,s.jsx)(`span`,{className:`hq-text-muted`,children:e.message}),(0,s.jsx)(`span`,{className:`hq-mono hq-ml-auto hq-text-dim`,children:new Date(e.timestamp).toLocaleTimeString()})]},e.timestamp))})]}),(0,s.jsxs)(`section`,{children:[(0,s.jsxs)(`div`,{className:`hq-section-head compact`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`span`,{className:`hq-section-kicker`,children:`Archive`}),(0,s.jsx)(`h3`,{children:`Alert History`})]}),(0,s.jsxs)(`span`,{className:`hq-mono hq-row-subtle`,children:[c.length,` total`]})]}),(0,s.jsx)(`div`,{className:`hq-card hq-alert-history-card`,children:c.length===0?(0,s.jsx)(`div`,{className:`hq-empty hq-pad-md`,children:`No historical alerts.`}):c.slice(-30).reverse().map(e=>(0,s.jsxs)(`div`,{className:`hq-row hq-alert-history-row`,children:[(0,s.jsx)(`span`,{className:`hq-pill `+e.severity,children:e.severity}),(0,s.jsx)(`span`,{className:`hq-mono`,children:e.ruleId}),(0,s.jsx)(`span`,{className:`hq-text-muted`,children:e.message}),(0,s.jsx)(`span`,{className:`hq-mono hq-ml-auto hq-text-dim`,children:new Date(e.lastFiredAt).toLocaleTimeString()})]},e.id))})]})]})]})}function l({label:e,value:t,tone:n}){return(0,s.jsxs)(`div`,{className:`hq-hero-metric`,"data-tone":n,children:[(0,s.jsx)(`strong`,{children:t}),(0,s.jsx)(`span`,{children:e})]})}export{c as AlertsView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Wt as t,v as n}from"./icons-kYa9YuNu.js";import{i as r}from"./markdown-mWU1fYYi.js";import{c as i,p as a,s as o,u as s}from"./index-2juseZBv.js";var c=e(t(),1),l=r();function u(){let{snapshot:e,alerts:t,selectedClientId:r,connected:u}=s(a(e=>({snapshot:e.snapshot,alerts:e.alerts,selectedClientId:e.selectedClientId,connected:e.connected}))),g=e,_=g?.totals,v=g?.machines??[],y=g?.projects??[],b=g?.clients??[],x=g?.liveSessions??[],S=y.filter(e=>e.governance!==void 0),C=S.filter(e=>e.governance?.signal.level===`warning`||e.governance?.signal.level===`unavailable`),w=b.filter(e=>e.capabilities.includes(`control.receive`)),T=r??w[0]?.clientId??null,E=w.find(e=>e.clientId===T)??w[0]??null,[D,O]=(0,c.useState)([]),[k,A]=(0,c.useState)([]),[j,M]=(0,c.useState)(null),[N,P]=(0,c.useState)(null),[F,I]=(0,c.useState)(null),[L,R]=(0,c.useState)(null),[z,B]=(0,c.useState)(null),[V,H]=(0,c.useState)(null);(0,c.useEffect)(()=>{let e=!1,t=()=>{o(`/api/system/health`).then(t=>{e||(B(t),H(null))}).catch(t=>{e||H(t instanceof Error?t.message:String(t))})};t();let n=setInterval(t,3e4);return()=>{e=!0,clearInterval(n)}},[]),(0,c.useEffect)(()=>{let e=!1,t=()=>{o(`/api/alerts`).then(t=>{e||(O(t.active),A(t.history),M(null))}).catch(t=>{e||M(t instanceof Error?t.message:String(t))})};t();let n=setInterval(t,15e3);return()=>{e=!0,clearInterval(n)}},[]);let U=(0,c.useMemo)(()=>{let e=t.slice(-30).reverse().map(e=>({severity:typeof e.severity==`string`?e.severity:`info`,ruleId:e.type??`hq.alert`,message:typeof e.message==`string`?e.message:`Alert envelope received`,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString()})),n=[...D??[],...k??[]].slice(-30).reverse().map(e=>({severity:typeof e.severity==`string`?e.severity:`info`,ruleId:typeof e.ruleId==`string`?e.ruleId:`alert`,message:typeof e.message==`string`?e.message:``,timestamp:typeof e.lastFiredAt==`string`?e.lastFiredAt:typeof e.firstFiredAt==`string`?e.firstFiredAt:new Date().toISOString()})),r=[...e,...n],i=new Set,a=[];for(let e of r){let t=`${e.ruleId}|${e.message}|${e.timestamp}`;if(!i.has(t)&&(i.add(t),a.push(e),a.length>=12))break}return a},[t,D,k]),W=(0,c.useMemo)(()=>{let e=0,t=0,n=0,r=0,i=0;for(let a of x){a.status===`active`&&(i+=1);for(let i of a.agents??[])e+=1,i.status===`running`||i.status===`streaming`?t+=1:i.status===`waiting_user`?n+=1:i.status===`error`&&(r+=1)}return{total:e,busy:t,waiting:n,errored:r,activeSessions:i}},[x]),G=(0,c.useMemo)(()=>[...y].sort((e,t)=>t.totalCostUsd-e.totalCostUsd).slice(0,4),[y]);async function K(e){if(E!==null){P(e),I(null),R(null);try{let t=e===`pause-noisy`?{subject:`HQ quick action: pause noisy agents`,body:`HQ operator requests: pause non-critical/noisy agent work, reduce chatter, and keep only essential status updates until resumed.`,priority:`high`}:{subject:`HQ quick action: status request`,body:`HQ operator requests a concise status broadcast from active agents: current task, blocker if any, and next expected action.`,priority:`normal`},n=await i(E.clientId,`broadcast`,t);I(`queued ${n.commandId}`)}catch(e){R(e instanceof Error?e.message:String(e))}finally{P(null)}}}let q=g?.fleets??[],J=(0,c.useMemo)(()=>{let e=0,t=0,n=0,r=0,i=0;for(let a of q)typeof a.usedSpawns==`number`&&typeof a.maxSpawns==`number`&&(r+=1,e+=a.usedSpawns,Number.isFinite(a.maxSpawns)&&(t+=a.maxSpawns),typeof a.remainingSpawns==`number`&&Number.isFinite(a.remainingSpawns)&&(n+=a.remainingSpawns),a.ceilingMismatch&&(i+=1));return r>0?{used:e,max:t,remaining:n,known:r,mismatch:i}:null},[q]),Y=[{title:`Fleet`,view:`fleet`,cta:`open fleet`,body:(0,l.jsxs)(`div`,{className:`hq-cockpit-grid`,children:[(0,l.jsx)(d,{label:`machines`,value:v.length}),(0,l.jsx)(d,{label:`clients`,value:b.length}),(0,l.jsx)(d,{label:`sessions`,value:W.activeSessions,accent:W.activeSessions>0?`green`:void 0}),(0,l.jsx)(d,{label:`agents`,value:W.total}),(0,l.jsx)(d,{label:`busy`,value:W.busy,accent:W.busy>0?`green`:void 0}),(0,l.jsx)(d,{label:`waiting`,value:W.waiting,accent:W.waiting>0?`warn`:void 0}),(0,l.jsx)(d,{label:`errored`,value:W.errored,accent:W.errored>0?`error`:void 0}),(0,l.jsx)(d,{label:`cost $`,value:(_?.totalCostUsd??0).toFixed(2),accent:`green`}),J&&(0,l.jsx)(d,{label:`spawns`,value:`${J.used}/${Number.isFinite(J.max)?J.max:`∞`}`,accent:J.mismatch>0?`warn`:void 0}),J&&(0,l.jsx)(d,{label:`spawns left`,value:Number.isFinite(J.remaining)?J.remaining:`∞`,accent:J.remaining===0?`error`:void 0})]})}],X={title:`Auth Tokens`,view:`settings`,cta:`open settings`,body:(0,l.jsx)(f,{tokenStats:_?.tokenStats})},Z={title:`Governance Advisory`,view:`fleet`,cta:`open fleet`,body:S.length===0?(0,l.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:`No project governance snapshots yet.`}):(0,l.jsx)(`div`,{className:`hq-cockpit-alert-list`,children:S.map(e=>{let t=e.governance;return t===void 0?null:(0,l.jsxs)(`div`,{className:`hq-cockpit-alert-row`,children:[(0,l.jsx)(`span`,{className:`hq-pill ${t.signal.level===`healthy`?`green`:t.signal.level===`notice`?`warn`:`error`}`,children:t.signal.level}),(0,l.jsx)(`span`,{children:e.projectName}),(0,l.jsx)(`span`,{className:`hq-mono hq-cockpit-alert-msg`,children:t.signal.code}),(0,l.jsx)(`span`,{className:`hq-mono hq-text-dim hq-ml-auto`,children:t.signal.executionDisposition})]},e.projectId)})})},Q={title:`Alerts`,view:`alerts`,cta:`open alerts`,body:U.length===0?(0,l.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:`No alerts in the last few minutes.`}):(0,l.jsx)(`div`,{className:`hq-cockpit-alert-list`,children:U.map((e,t)=>(0,l.jsxs)(`div`,{className:`hq-cockpit-alert-row`,children:[(0,l.jsx)(`span`,{className:`hq-pill `+h(e.severity),children:e.severity}),(0,l.jsx)(`span`,{className:`hq-mono`,children:e.ruleId}),(0,l.jsx)(`span`,{className:`hq-cockpit-alert-msg`,children:e.message}),(0,l.jsx)(`span`,{className:`hq-mono hq-text-dim hq-ml-auto`,children:m(e.timestamp)})]},`${e.ruleId}-${e.timestamp}-${t}`))})},$={title:`Cost`,view:`cost`,cta:`open cost`,body:G.length===0?(0,l.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:`No cost data yet — connect some clients.`}):(0,l.jsx)(`div`,{className:`hq-cockpit-cost-list`,children:G.map(e=>{let t=(_?.totalCostUsd??0)>0?e.totalCostUsd/_.totalCostUsd*100:0;return(0,l.jsxs)(`div`,{className:`hq-cockpit-cost-row`,children:[(0,l.jsxs)(`div`,{className:`hq-cockpit-cost-line`,children:[(0,l.jsx)(`span`,{className:`hq-cockpit-cost-name`,children:e.projectName}),(0,l.jsx)(`span`,{className:`hq-mono hq-text-dim`,children:e.projectId}),(0,l.jsxs)(`span`,{className:`hq-mono hq-cockpit-cost-amount hq-ml-auto`,children:[`$`,e.totalCostUsd.toFixed(4)]}),(0,l.jsxs)(`span`,{className:`hq-mono hq-text-dim`,children:[t.toFixed(1),`%`]})]}),(0,l.jsx)(`div`,{className:`hq-cockpit-cost-bar`,role:`progressbar`,"aria-label":`${e.projectName} share of fleet cost`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Number(t.toFixed(1)),children:(0,l.jsx)(`span`,{style:{width:`${Math.max(2,t)}%`}})}),(0,l.jsxs)(`div`,{className:`hq-cockpit-cost-meta`,children:[(0,l.jsxs)(`span`,{children:[e.activeSessions,` sessions`]}),(0,l.jsxs)(`span`,{children:[e.activeSubagents,` subagents`]}),(0,l.jsxs)(`span`,{children:[e.activeClients,` clients`]})]})]},e.projectId)})})};return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`hq-card-title`,children:`Cockpit`}),(0,l.jsxs)(`div`,{className:`hq-card hq-cockpit-summary`,children:[(0,l.jsxs)(`div`,{className:`hq-row`,children:[(0,l.jsx)(`span`,{className:`hq-pill info`,children:u?`connected`:`reconnecting`}),(0,l.jsxs)(`span`,{className:`hq-pill`,children:[_?.activeMachines??0,` machines`]}),(0,l.jsxs)(`span`,{className:`hq-pill`,children:[_?.activeSessions??0,` sessions`]}),(0,l.jsxs)(`span`,{className:`hq-pill`,children:[_?.activeAgents??0,` agents`]}),(0,l.jsxs)(`span`,{className:`hq-pill green`,children:[`$`,(_?.totalCostUsd??0).toFixed(2)]}),(D?.length??0)>0&&(0,l.jsxs)(`span`,{className:`hq-pill error`,children:[D?.length??0,` active alerts`]}),C.length>0&&(0,l.jsxs)(`span`,{className:`hq-pill error`,children:[C.length,` governance advisories`]}),j!==null&&(0,l.jsx)(`span`,{className:`hq-pill error`,children:j}),(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary hq-ml-auto`,onClick:()=>s.getState().setActiveView(`fleet`),children:`Open Fleet`})]}),(0,l.jsxs)(`section`,{className:`hq-cockpit-actions`,"aria-label":`Cockpit quick actions`,children:[(0,l.jsxs)(`div`,{className:`hq-cockpit-actions-copy`,children:[(0,l.jsx)(`span`,{className:`hq-cockpit-section-title`,children:`Quick Actions`}),(0,l.jsx)(`span`,{className:`hq-mono`,children:E===null?`no controllable client connected`:`target ${p(E.clientId)}`})]}),(0,l.jsxs)(`div`,{className:`hq-cockpit-actions-buttons`,children:[(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:E===null||N!==null,onClick:()=>void K(`pause-noisy`),children:N===`pause-noisy`?`Queuing…`:`Pause noisy agents`}),(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:E===null||N!==null,onClick:()=>void K(`status-request`),children:N===`status-request`?`Queuing…`:`Broadcast status request`}),(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,onClick:()=>s.getState().setActiveView(`control`),children:`Open Control`})]}),F!==null&&(0,l.jsx)(`span`,{className:`hq-pill info`,children:F}),L!==null&&(0,l.jsx)(`span`,{className:`hq-pill error`,children:L})]})]}),z!==null||V!==null?(0,l.jsxs)(`div`,{className:`hq-card hq-cockpit-section`,children:[(0,l.jsxs)(`div`,{className:`hq-row`,children:[(0,l.jsxs)(`span`,{className:`hq-cockpit-section-title`,children:[(0,l.jsx)(n,{size:14,style:{marginRight:`0.375rem`}}),`System Health`]}),(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary hq-ml-auto`,onClick:()=>s.getState().setActiveView(`settings`),children:`open settings`})]}),V===null?z===null?null:(0,l.jsxs)(`div`,{className:`hq-cockpit-grid`,children:[(0,l.jsx)(d,{label:`status`,value:z.status,accent:z.status===`healthy`?`green`:`error`}),(0,l.jsx)(d,{label:`event log`,value:z.uptime.eventLogSize}),(0,l.jsx)(d,{label:`connections`,value:z.connections.total}),(0,l.jsx)(d,{label:`active`,value:z.connections.active,accent:z.connections.active>0?`green`:void 0}),(0,l.jsx)(d,{label:`stale`,value:z.connections.stale,accent:z.connections.stale>3?`warn`:void 0})]}):(0,l.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:V})]}):null,[...Y,Z,X,Q,$].map(e=>(0,l.jsxs)(`div`,{className:`hq-card hq-cockpit-section`,children:[(0,l.jsxs)(`div`,{className:`hq-row`,children:[(0,l.jsx)(`span`,{className:`hq-cockpit-section-title`,children:e.title}),(0,l.jsx)(`button`,{type:`button`,className:`hq-btn secondary hq-ml-auto`,onClick:()=>s.getState().setActiveView(e.view),children:e.cta})]}),e.body]},e.title))]})}function d({label:e,value:t,accent:n}){return(0,l.jsxs)(`div`,{className:`hq-stat`+(n?` ${n}`:``),children:[(0,l.jsx)(`span`,{className:`hq-stat-num`,children:t}),(0,l.jsx)(`span`,{className:`hq-stat-label`,children:e})]})}function f({tokenStats:e}){if(e===void 0)return(0,l.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:`Token expiry stats unavailable on this HQ version.`});let{browserTotal:t,clientTotal:n,expired:r,expiringSoon:i}=e,a=t+n;return(0,l.jsxs)(`fieldset`,{className:`hq-cockpit-grid`,"aria-label":`Auth token stats`,style:{border:0,margin:0,padding:0},children:[(0,l.jsx)(d,{label:`browser`,value:t}),(0,l.jsx)(d,{label:`client`,value:n}),(0,l.jsx)(d,{label:`total`,value:a}),(0,l.jsx)(d,{label:`expired`,value:r,accent:r>0?`error`:void 0}),(0,l.jsx)(d,{label:`expiring soon`,value:i,accent:i>0?`warn`:void 0})]})}function p(e){return e.length<=18?e:`${e.slice(0,9)}…${e.slice(-6)}`}function m(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function h(e){return e===`critical`||e===`error`||e===`high`?`error`:e===`warn`||e===`warning`||e===`medium`?`warn`:e===`info`||e===`low`?`info`:`idle`}export{u as CockpitView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Bt as t,F as n,L as r,W as i,Wt as a,c as ee,d as o,k as s,t as c}from"./icons-kYa9YuNu.js";import{i as l}from"./markdown-mWU1fYYi.js";import{c as te,o as ne,p as re,r as u,s as d,u as f}from"./index-2juseZBv.js";var p=e(a(),1),m=l(),h={steer:{label:`steer`,icon:(0,m.jsx)(c,{size:13}),desc:`High-priority course correction — interrupts the agent at the next turn.`},btw:{label:`btw`,icon:(0,m.jsx)(n,{size:13}),desc:`Non-urgent FYI — rides alongside the run without interrupting it.`},queue:{label:`queue`,icon:(0,m.jsx)(i,{size:13}),desc:`Queue a prompt — picked up after the current run finishes.`},abort:{label:`abort`,icon:(0,m.jsx)(s,{size:13}),desc:`Stop the leader run or every subagent on the client. Destructive.`,danger:!0},spawn:{label:`spawn`,icon:(0,m.jsx)(t,{size:13}),desc:`Launch a role subagent (bug-hunter, critic, …) with an optional task.`},broadcast:{label:`broadcast`,icon:(0,m.jsx)(r,{size:13}),desc:`Mailbox message to every agent in the client’s project.`},"run-command":{label:`run-command`,icon:(0,m.jsx)(o,{size:13}),desc:`Route a shell command to the client. RCE-gated (--hq-allow-exec + control.execute).`,danger:!0}};function g(){let{snapshot:e,selectedClientId:t,commandStatuses:n}=f(re(e=>({snapshot:e.snapshot,selectedClientId:e.selectedClientId,commandStatuses:e.commandStatuses}))),r=(e?.clients??[]).filter(e=>e.capabilities.includes(`control.receive`)),i=r.some(e=>e.clientId===t)?t:r[0]?.clientId??null,a=r.find(e=>e.clientId===i)??null,o=a===null?void 0:(e?.liveSessions??[]).find(e=>e.clientId===a.clientId||e.machineId===a.machineId&&e.projectId===a.projectId&&e.pid!==void 0&&e.pid===a.pid),s=ne().control,[c,l]=(0,p.useState)(s.cmdType),[g,b]=(0,p.useState)(`compose`),[x,oe]=(0,p.useState)(s.steerTo),[S,se]=(0,p.useState)(s.steerSubject),[C,w]=(0,p.useState)(s.steerBody),[T,ce]=(0,p.useState)(s.spawnRole),[E,le]=(0,p.useState)(s.spawnTask),[D,O]=(0,p.useState)(s.abortTarget),[k,ue]=(0,p.useState)(s.broadcastSubject),[A,de]=(0,p.useState)(s.broadcastBody),[j,fe]=(0,p.useState)(``),[M,pe]=(0,p.useState)(``),[N,P]=(0,p.useState)(``),[F,I]=(0,p.useState)(null),[L,R]=(0,p.useState)(null),[z,B]=(0,p.useState)(!1),[V,H]=(0,p.useState)([]),[me,U]=(0,p.useState)(!1),[W,G]=(0,p.useState)(null),[he,ge]=(0,p.useState)(null),K=(0,p.useMemo)(()=>ve(),[c,x,S,C,T,E,D,k,A,j,M]),q=K.risk===`danger`,J=c===`run-command`?`RUN`:`ABORT`,Y=i!==null&&K.disabledReason===null&&(!q||N===J),X=K.disabledReason===null&&i!==null;function Z(){b(`compose`),P(``),R(null),I(null)}function _e(e){l(e),u({cmdType:e}),Z()}async function Q(){U(!0),G(null);try{let e=await d(`/api/commands?limit=25`);H(e.commands.slice().reverse())}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}}(0,p.useEffect)(()=>{Q();let e=setInterval(()=>{document.hidden||Q()},15e3);return()=>clearInterval(e)},[]),(0,p.useEffect)(()=>{n.length!==0&&H(e=>{let t=new Map(e.map(e=>[e.commandId,e]));for(let e of n)t.set(e.commandId,e);return[...t.values()].sort((e,t)=>t.enqueuedAt.localeCompare(e.enqueuedAt)).slice(0,25)})},[n]);async function $(){if(!(i===null||!Y)){B(!0),R(null),I(null);try{let e=await te(i,K.type,K.payload);I(`queued ${K.type} command ${e.commandId}`),ge(e.commandId),b(`compose`),P(``),Q()}catch(e){R(e instanceof Error?e.message:String(e))}finally{B(!1)}}}(0,p.useEffect)(()=>{let e=e=>{e.key!==`Enter`||!(e.ctrlKey||e.metaKey)||(e.preventDefault(),g===`compose`&&X?(b(`preview`),I(null),R(null)):g===`preview`&&Y&&!z&&$())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});function ve(){if(c===`steer`||c===`btw`||c===`queue`){let e=C.trim(),t=c===`steer`?`Send high-priority steer to`:c===`btw`?`Post a non-urgent FYI (btw) to`:`Queue a prompt for`;return{type:c,payload:{to:x||`leader`,subject:S||`HQ ${c}`,body:C,priority:c===`steer`?`high`:`normal`},disabledReason:e.length===0?`Message body is required.`:null,risk:`normal`,summary:`${t} ${x||`leader`}.`}}if(c===`run-command`){let e=j.trim();return{type:`run-command`,payload:{command:j,...M.trim()?{cwd:M.trim()}:{}},disabledReason:e.length===0?`Command is required.`:null,risk:`danger`,summary:`Route a shell command to the client (requires --hq-allow-exec + control.execute; delivered as a steer, the agent’s permission policy still applies).`}}if(c===`abort`)return{type:`abort`,payload:{target:D},disabledReason:null,risk:`danger`,summary:D===`fleet`?`Abort all subagents on the selected client.`:`Abort the selected target on the selected client.`};if(c===`spawn`){let e=E.trim();return{type:`spawn`,payload:{role:T,...e?{task:e}:{}},disabledReason:T.trim().length===0?`Role is required.`:null,risk:`normal`,summary:`Spawn a ${T} subagent${e?` with an initial task`:``}.`}}let e=A.trim();return{type:`broadcast`,payload:{subject:k||`HQ broadcast`,body:A,priority:`normal`},disabledReason:e.length===0?`Broadcast body is required.`:null,risk:`normal`,summary:`Broadcast a normal-priority mailbox message to the selected client project.`}}return r.length===0?(0,m.jsxs)(`div`,{className:`hq-empty`,children:[`No controllable clients connected. Clients must advertise the `,(0,m.jsx)(`code`,{children:`control.receive`}),` `,`capability (CLI/TUI/WebUI surfaces do this automatically when connected to HQ).`]}):(0,m.jsxs)(`div`,{className:`hq-control-grid`,children:[(0,m.jsxs)(`div`,{className:`hq-control-composer`,children:[(0,m.jsx)(`div`,{className:`hq-card-title`,children:`Command Target`}),(0,m.jsxs)(`div`,{className:`hq-card hq-control-target`,children:[(0,m.jsx)(`label`,{className:`hq-label`,htmlFor:`hq-control-client`,children:`Client`}),(0,m.jsx)(`select`,{id:`hq-control-client`,className:`hq-select`,value:i??``,onChange:e=>{f.getState().selectClient(e.target.value),Z()},children:r.map(t=>(0,m.jsx)(`option`,{value:t.clientId,children:ie(t,e)},t.clientId))}),a!==null&&(0,m.jsxs)(`div`,{className:`hq-control-meta`,children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`kind`}),` `,a.kind]}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`host`}),` `,a.hostname??`unknown`]}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`project`}),` `,a.projectId]}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`client`}),` `,_(a.clientId)]}),o!==void 0&&(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`session`}),` `,_(o.sessionId),` ·`,` `,o.agentCount,` agents`]})]})]}),(0,m.jsx)(`div`,{className:`hq-card-title`,children:`Command Type`}),(0,m.jsxs)(`fieldset`,{className:`hq-control-steps`,"aria-label":`Control command stages`,children:[(0,m.jsx)(`span`,{className:`hq-step active`,children:`1 compose`}),(0,m.jsx)(`span`,{className:`hq-step`+(g===`preview`?` active`:``),children:`2 preview`}),(0,m.jsx)(`span`,{className:`hq-step`+(F===null?``:` active`),children:`3 queued`})]}),(0,m.jsx)(`div`,{className:`hq-control-types`,children:Object.keys(h).map(e=>{let t=h[e];return(0,m.jsxs)(`button`,{type:`button`,title:t.desc,className:`hq-control-type`+(c===e?` selected`:``)+(t.danger===!0?` danger`:``),onClick:()=>_e(e),children:[t.icon,t.label]},e)})}),(0,m.jsxs)(`div`,{className:`hq-control-typedesc`,children:[h[c].danger===!0&&(0,m.jsx)(ee,{size:12}),h[c].desc]}),(0,m.jsxs)(`div`,{className:`hq-mt-12`,children:[(c===`steer`||c===`btw`||c===`queue`)&&(0,m.jsxs)(`div`,{className:`hq-card`,children:[(0,m.jsxs)(`label`,{className:`hq-label`,htmlFor:`hq-control-recipient`,children:[`To (agent address — e.g. `,(0,m.jsx)(`code`,{children:`leader`}),`, `,(0,m.jsx)(`code`,{children:`leader@sessionTag`}),`, or a subagent id)`]}),(0,m.jsx)(`input`,{id:`hq-control-recipient`,className:`hq-input`,value:x,onChange:e=>{oe(e.target.value),u({steerTo:e.target.value})},placeholder:`leader`}),(0,m.jsx)(`label`,{className:`hq-label hq-mt-8`,htmlFor:`hq-control-subject`,children:`Subject`}),(0,m.jsx)(`input`,{id:`hq-control-subject`,className:`hq-input`,value:S,onChange:e=>{se(e.target.value),u({steerSubject:e.target.value})}}),(0,m.jsx)(`label`,{className:`hq-label hq-mt-8`,htmlFor:`hq-control-body`,children:`Body`}),(0,m.jsx)(`textarea`,{id:`hq-control-body`,className:`hq-textarea`,value:C,onChange:e=>{w(e.target.value),u({steerBody:e.target.value})}})]}),c===`abort`&&(0,m.jsxs)(`div`,{className:`hq-card hq-card-danger`,children:[(0,m.jsx)(`label`,{className:`hq-label`,htmlFor:`hq-control-abort-target`,children:`Target`}),(0,m.jsxs)(`select`,{id:`hq-control-abort-target`,className:`hq-select`,value:D,onChange:e=>{O(e.target.value),u({abortTarget:e.target.value})},children:[(0,m.jsx)(`option`,{value:`leader`,children:`leader (session leader)`}),(0,m.jsx)(`option`,{value:`fleet`,children:`fleet (all subagents)`})]}),(0,m.jsxs)(`div`,{className:`hq-control-warning`,children:[`Abort is destructive. Preview requires typing `,(0,m.jsx)(`strong`,{children:`ABORT`}),` before dispatch.`]})]}),c===`spawn`&&(0,m.jsxs)(`div`,{className:`hq-card`,children:[(0,m.jsx)(`label`,{className:`hq-label`,htmlFor:`hq-control-spawn-role`,children:`Role`}),(0,m.jsxs)(`select`,{id:`hq-control-spawn-role`,className:`hq-select`,value:T,onChange:e=>{ce(e.target.value),u({spawnRole:e.target.value})},children:[(0,m.jsx)(`option`,{value:`bug-hunter`,children:`bug-hunter`}),(0,m.jsx)(`option`,{value:`refactor-planner`,children:`refactor-planner`}),(0,m.jsx)(`option`,{value:`critic`,children:`critic`}),(0,m.jsx)(`option`,{value:`security-scanner`,children:`security-scanner`}),(0,m.jsx)(`option`,{value:`code-reviewer`,children:`code-reviewer`})]}),(0,m.jsx)(`label`,{className:`hq-label hq-mt-8`,htmlFor:`hq-control-spawn-task`,children:`Task (optional)`}),(0,m.jsx)(`textarea`,{id:`hq-control-spawn-task`,className:`hq-textarea`,value:E,onChange:e=>{le(e.target.value),u({spawnTask:e.target.value})},placeholder:`Describe the task…`})]}),c===`run-command`&&(0,m.jsxs)(`div`,{className:`hq-card hq-card-danger`,children:[(0,m.jsx)(`label`,{className:`hq-label`,htmlFor:`hq-control-run-command`,children:`Shell command`}),(0,m.jsx)(`textarea`,{id:`hq-control-run-command`,className:`hq-textarea`,value:j,onChange:e=>fe(e.target.value),placeholder:`pnpm test`}),(0,m.jsx)(`label`,{className:`hq-label hq-mt-8`,htmlFor:`hq-control-run-cwd`,children:`Working directory (optional — defaults to the agent's project root)`}),(0,m.jsx)(`input`,{id:`hq-control-run-cwd`,className:`hq-input`,value:M,onChange:e=>pe(e.target.value),placeholder:``}),(0,m.jsxs)(`div`,{className:`hq-control-warning`,children:[`RCE-gated: the client must run with `,(0,m.jsx)(`code`,{children:`--hq-allow-exec`}),` and your token needs the `,(0,m.jsx)(`code`,{children:`control.execute`}),` capability — otherwise the server rejects this. Preview requires typing `,(0,m.jsx)(`strong`,{children:`RUN`}),` before dispatch.`]})]}),c===`broadcast`&&(0,m.jsxs)(`div`,{className:`hq-card`,children:[(0,m.jsx)(`label`,{className:`hq-label`,htmlFor:`hq-control-broadcast-subject`,children:`Subject`}),(0,m.jsx)(`input`,{id:`hq-control-broadcast-subject`,className:`hq-input`,value:k,onChange:e=>{ue(e.target.value),u({broadcastSubject:e.target.value})}}),(0,m.jsx)(`label`,{className:`hq-label hq-mt-8`,htmlFor:`hq-control-broadcast-body`,children:`Body`}),(0,m.jsx)(`textarea`,{id:`hq-control-broadcast-body`,className:`hq-textarea`,value:A,onChange:e=>{de(e.target.value),u({broadcastBody:e.target.value})}})]})]}),(0,m.jsx)(`div`,{className:`hq-card-title`,children:`Dispatch Gate`}),(0,m.jsxs)(`div`,{className:`hq-card hq-command-preview`+(K.risk===`danger`?` hq-card-danger`:``),children:[(0,m.jsxs)(`div`,{className:`hq-row`,children:[(0,m.jsx)(`span`,{className:`hq-pill `+(K.risk===`danger`?`error`:`info`),children:K.risk}),(0,m.jsx)(`span`,{children:K.summary}),K.disabledReason!==null&&(0,m.jsx)(`span`,{className:`hq-pill warn`,children:K.disabledReason})]}),g===`preview`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{className:`hq-msg-sublabel`,children:`payload preview`}),(0,m.jsx)(`pre`,{className:`hq-msg-pre`,children:JSON.stringify({clientId:i,type:K.type,payload:K.payload},null,2)}),q&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`label`,{className:`hq-label hq-mt-12`,htmlFor:`hq-control-confirm`,children:`Confirm destructive dispatch`}),(0,m.jsx)(`input`,{id:`hq-control-confirm`,className:`hq-input`,value:N,onChange:e=>P(e.target.value),placeholder:`Type ${J}`})]}),(0,m.jsxs)(`div`,{className:`hq-row hq-mt-12`,children:[(0,m.jsx)(`button`,{type:`button`,className:`hq-btn`,disabled:z||!Y,onClick:()=>void $(),title:`Ctrl+Enter`,children:z?`Dispatching…`:`Dispatch Command`}),(0,m.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:z,onClick:Z,children:`Back to Compose`})]})]}):(0,m.jsx)(`button`,{type:`button`,className:`hq-btn`,disabled:!X,onClick:()=>{b(`preview`),I(null),R(null)},title:`Ctrl+Enter`,children:`Preview Command`})]}),F&&(0,m.jsx)(`div`,{className:`hq-pill active hq-mt-12`,children:F}),L&&(0,m.jsx)(`div`,{className:`hq-pill error hq-mt-12`,children:L})]}),(0,m.jsxs)(`div`,{className:`hq-control-audit`,children:[(0,m.jsx)(`div`,{className:`hq-card-title`,children:`Command Audit`}),(0,m.jsxs)(`div`,{className:`hq-card hq-command-audit`,children:[(0,m.jsxs)(`div`,{className:`hq-row`,children:[(0,m.jsxs)(`span`,{className:`hq-pill info`,children:[`recent `,V.length]}),me&&(0,m.jsx)(`span`,{className:`hq-pill idle`,children:`refreshing`}),W!==null&&(0,m.jsx)(`span`,{className:`hq-pill error`,children:W}),(0,m.jsx)(`button`,{type:`button`,className:`hq-btn secondary hq-ml-auto`,onClick:()=>void Q(),children:`Refresh`})]}),V.length===0?(0,m.jsx)(`div`,{className:`hq-empty hq-cockpit-empty`,children:`No command audit entries yet.`}):(0,m.jsx)(`div`,{className:`hq-audit-list`,children:V.map(e=>(0,m.jsxs)(`div`,{className:`hq-audit-row`+(e.commandId===he?` just-dispatched`:``)+(i!==null&&e.clientId===i?``:` other-client`),children:[(0,m.jsxs)(`div`,{className:`hq-audit-main`,children:[(0,m.jsx)(`span`,{className:`hq-pill `+ae(e),children:e.status}),(0,m.jsx)(`span`,{className:`hq-pill info`,children:e.type}),(0,m.jsx)(`span`,{className:`hq-mono`,children:_(e.commandId)}),e.ackStatus!==void 0&&(0,m.jsxs)(`span`,{className:`hq-pill `+y(e.ackStatus),children:[`ack `,e.ackStatus]})]}),(0,m.jsxs)(`div`,{className:`hq-audit-meta`,children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`client`}),` `,_(e.clientId)]}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`by`}),` `,e.enqueuedBy]}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`queued`}),` `,v(e.enqueuedAt)]}),e.ackedAt!==void 0&&(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:`acked`}),` `,v(e.ackedAt)]})]}),e.ackMessage!==void 0&&e.ackMessage.length>0&&(0,m.jsx)(`div`,{className:`hq-audit-message`,children:e.ackMessage})]},e.commandId))})]})]})]})}function _(e){return e.length>18?`${e.slice(0,10)}…${e.slice(-6)}`:e}function ie(e,t){let n=t?.projects.find(t=>t.projectId===e.projectId),r=(t?.liveSessions??[]).find(t=>t.clientId===e.clientId||t.machineId===e.machineId&&t.projectId===e.projectId&&t.pid!==void 0&&t.pid===e.pid);return`${e.hostname??e.machineId} › ${n?.projectName??e.projectId} › ${`${e.kind.toUpperCase()}${e.pid===void 0?``:` · pid ${e.pid}`}`} › ${_(r?.sessionId??e.clientId)}`}function v(e,t=Date.now()){let n=new Date(e);if(Number.isNaN(n.getTime()))return e;let r=Math.max(0,t-n.getTime());return r<6e4?`${Math.floor(r/1e3)}s ago`:r<36e5?`${Math.floor(r/6e4)}m ago`:n.toLocaleTimeString()}function ae(e){return e.ackStatus===`failed`||e.ackStatus===`rejected`?`error`:e.status===`acked`?`active`:e.status===`delivered`?`info`:e.status===`queued`?`warn`:`idle`}function y(e){return e===`failed`||e===`rejected`?`error`:e===`completed`?`active`:`info`}export{g as ControlView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./rolldown-runtime-QTnfLwEv.js";var n=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function P(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function F(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},L={map:P,forEach:function(e,t,n){P(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return P(e,function(){t++}),t},toArray:function(e){return P(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=L,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:F}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,I)}catch(e){I(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),r=t(((e,t)=>{t.exports=n()})),i=e(r(),1),a=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),o=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),s=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),c=e=>{let t=s(e);return t.charAt(0).toUpperCase()+t.slice(1)},l={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},u=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},d=(0,i.createContext)({}),f=()=>(0,i.useContext)(d),p=(0,i.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:o=``,children:s,iconNode:c,...d},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=f()??{},y=r??g?Number(n??h)*24/Number(t??m):n??h;return(0,i.createElement)(`svg`,{ref:p,...l,width:t??m??l.width,height:t??m??l.height,stroke:e??_,strokeWidth:y,className:a(`lucide`,v,o),...!s&&!u(d)&&{"aria-hidden":`true`},...d},[...c.map(([e,t])=>(0,i.createElement)(e,t)),...Array.isArray(s)?s:[s]])}),m=(e,t)=>{let n=(0,i.forwardRef)(({className:n,...r},s)=>(0,i.createElement)(p,{ref:s,iconNode:t,className:a(`lucide-${o(c(e))}`,`lucide-${e}`,n),...r}));return n.displayName=c(e),n},h=m(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),g=m(`arrow-down-to-line`,[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]),_=m(`bell-ring`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]),v=m(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),y=m(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),b=m(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),x=m(`chart-no-axes-combined`,[[`path`,{d:`M12 16v5`,key:`zza2cw`}],[`path`,{d:`M16 14.639V21`,key:`1s85h0`}],[`path`,{d:`M20 10.656V21`,key:`q45596`}],[`path`,{d:`m22 3-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15`,key:`1fw8x9`}],[`path`,{d:`M4 18.463V21`,key:`1otddq`}],[`path`,{d:`M8 14.656V21`,key:`1t2idw`}]]),S=m(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),C=m(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),w=m(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),T=m(`chevrons-down`,[[`path`,{d:`m7 6 5 5 5-5`,key:`1lc07p`}],[`path`,{d:`m7 13 5 5 5-5`,key:`1d48rs`}]]),E=m(`chevrons-up`,[[`path`,{d:`m17 11-5-5-5 5`,key:`e8nh98`}],[`path`,{d:`m17 18-5-5-5 5`,key:`2avn1x`}]]),D=m(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),O=m(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),k=m(`circle-dollar-sign`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`,key:`1h4pet`}],[`path`,{d:`M12 18V6`,key:`zqpxq5`}]]),A=m(`circle-pause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),j=m(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),M=m(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),N=m(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]),P=m(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),F=m(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),I=m(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),L=m(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),ee=m(`columns-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),te=m(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),R=m(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),z=m(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),B=m(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),V=m(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),H=m(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),U=m(`file-pen`,[[`path`,{d:`M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34`,key:`o6klzx`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z`,key:`zhnas1`}]]),W=m(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),G=m(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),K=m(`folder-git-2`,[[`path`,{d:`M18 19a5 5 0 0 1-5-5v8`,key:`sz5oeg`}],[`path`,{d:`M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5`,key:`1w6njk`}],[`circle`,{cx:`13`,cy:`12`,r:`2`,key:`1j92g6`}],[`circle`,{cx:`20`,cy:`19`,r:`2`,key:`1obnsp`}]]),q=m(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),J=m(`folder-tree`,[[`path`,{d:`M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z`,key:`hod4my`}],[`path`,{d:`M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z`,key:`w4yl2u`}],[`path`,{d:`M3 5a2 2 0 0 0 2 2h3`,key:`f2jnh7`}],[`path`,{d:`M3 3v13a2 2 0 0 0 2 2h3`,key:`k8epm1`}]]),Y=m(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),X=m(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Z=m(`git-compare`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]),Q=m(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),ne=m(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),re=m(`hammer`,[[`path`,{d:`m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9`,key:`1hayfq`}],[`path`,{d:`m18 15 4-4`,key:`16gjal`}],[`path`,{d:`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`,key:`15ts47`}]]),ie=m(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),ae=m(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),oe=m(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),se=m(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),ce=m(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),le=m(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),ue=m(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),de=m(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),fe=m(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),pe=m(`life-buoy`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]),me=m(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),he=m(`list-plus`,[[`path`,{d:`M16 5H3`,key:`m91uny`}],[`path`,{d:`M11 12H3`,key:`51ecnj`}],[`path`,{d:`M16 19H3`,key:`zzsher`}],[`path`,{d:`M18 9v6`,key:`1twb98`}],[`path`,{d:`M21 12h-6`,key:`bt1uis`}]]),ge=m(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),_e=m(`list-tree`,[[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`M3 10a2 2 0 0 0 2 2h3`,key:`1npucw`}],[`path`,{d:`M3 5v12a2 2 0 0 0 2 2h3`,key:`x1gjn2`}]]),ve=m(`lock-keyhole`,[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]),ye=m(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),be=m(`mail-plus`,[[`path`,{d:`M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8`,key:`12jkf8`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M19 16v6`,key:`tddt3s`}],[`path`,{d:`M16 19h6`,key:`xwg31i`}]]),xe=m(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Se=m(`megaphone`,[[`path`,{d:`M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z`,key:`q8bfy3`}],[`path`,{d:`M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14`,key:`1853fq`}],[`path`,{d:`M8 6v8`,key:`15ugcq`}]]),Ce=m(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),we=m(`message-square-text`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]),Te=m(`monitor-smartphone`,[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]),Ee=m(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),De=m(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Oe=m(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),ke=m(`notebook-pen`,[[`path`,{d:`M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4`,key:`re6nr2`}],[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`path`,{d:`M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`pqwjuv`}]]),Ae=m(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),je=m(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Me=m(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Ne=m(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),Pe=m(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Fe=m(`radio-tower`,[[`path`,{d:`M4.9 16.1C1 12.2 1 5.8 4.9 1.9`,key:`s0qx1y`}],[`path`,{d:`M7.8 4.7a6.14 6.14 0 0 0-.8 7.5`,key:`1idnkw`}],[`circle`,{cx:`12`,cy:`9`,r:`2`,key:`1092wv`}],[`path`,{d:`M16.2 4.8c2 2 2.26 5.11.8 7.47`,key:`ojru2q`}],[`path`,{d:`M19.1 1.9a9.96 9.96 0 0 1 0 14.1`,key:`rhi7fg`}],[`path`,{d:`M9.5 18h5`,key:`mfy3pd`}],[`path`,{d:`m8 22 4-11 4 11`,key:`25yftu`}]]),Ie=m(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Le=m(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Re=m(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),ze=m(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Be=m(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),Ve=m(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),He=m(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Ue=m(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),We=m(`shell`,[[`path`,{d:`M14 11a2 2 0 1 1-4 0 4 4 0 0 1 8 0 6 6 0 0 1-12 0 8 8 0 0 1 16 0 10 10 0 1 1-20 0 11.93 11.93 0 0 1 2.42-7.22 2 2 0 1 1 3.16 2.44`,key:`1cn552`}]]),Ge=m(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Ke=m(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),qe=m(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),Je=m(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),$=m(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Ye=m(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Xe=m(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ze=m(`user-round`,[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]]),Qe=m(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),$e=m(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),et=m(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]),tt=m(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),nt=m(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),rt=m(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{oe as $,ke as A,O as At,ye as B,v as Bt,Ie as C,F as Ct,Me as D,j as Dt,Ne as E,M as Et,we as F,C as Ft,me as G,_e as H,g as Ht,Ce as I,S as It,de as J,pe as K,Se as L,x as Lt,De as M,E as Mt,Ee as N,T as Nt,je as O,A as Ot,Te as P,w as Pt,se as Q,xe as R,b as Rt,Le as S,I as St,Pe as T,N as Tt,ge as U,h as Ut,ve as V,_ as Vt,he as W,r as Wt,le as X,ue as Y,ce as Z,He as _,z as _t,$e as a,Z as at,ze as b,ee as bt,Xe as c,J as ct,Je as d,G as dt,ae as et,qe as f,W as ft,Ue as g,B as gt,We as h,V as ht,et as i,Q as it,Oe as j,D as jt,Ae as k,k as kt,Ye as l,q as lt,Ge as m,H as mt,nt as n,re as nt,Qe as o,X as ot,Ke as p,U as pt,fe as q,tt as r,ne as rt,Ze as s,Y as st,rt as t,ie as tt,$ as u,K as ut,Ve as v,R as vt,Fe as w,P as wt,Re as x,L as xt,Be as y,te as yt,be as z,y as zt};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cockpit-CBmd0m77.js","assets/rolldown-runtime-QTnfLwEv.js","assets/icons-kYa9YuNu.js","assets/markdown-mWU1fYYi.js","assets/fleet-map-DVCcQRlq.js","assets/vendor-5Eg_tZuH.js","assets/fleet-topology-GCNPUAxv.js","assets/live-console-BfoREDy_.js","assets/mailbox-BxKyFuHW.js","assets/use-backfilled-events-jhv9zwHj.js","assets/kanban-B1QOUG8G.js","assets/cost-BfO45Z4b.js","assets/brain-Dwu_CxB0.js","assets/worktree-hlgRokq_.js","assets/trends-BqZY3rkH.js","assets/alerts-CeRcla80.js","assets/control-Cbqqueg6.js","assets/settings-B37plfuB.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{At as t,B as n,D as r,E as i,F as a,J as o,Lt as s,M as c,Q as l,S as u,Ut as d,Vt as f,Wt as p,Z as m,_ as h,a as ee,bt as te,c as g,gt as ne,ht as _,i as re,j as v,kt as ie,m as y,n as b,o as ae,ot as oe,u as se,v as ce,w as x,wt as S,yt as le,zt as ue}from"./icons-kYa9YuNu.js";import{t as de}from"./vendor-5Eg_tZuH.js";import{i as fe}from"./markdown-mWU1fYYi.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),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var pe={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function me(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function he(e){return e.stopped?e:{...e,phase:`connecting`}}function ge(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function _e(e,t=Date.now()){return{...e,lastActivityAt:t}}function ve(e){return{...e,phase:`closed`,stopped:!0}}function ye(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 be(e,t,n=Date.now()){return e.phase!==`open`||e.lastActivityAt===null||t.heartbeatIntervalMs<=0?!1:n-e.lastActivityAt>t.heartbeatIntervalMs+t.heartbeatTimeoutMs}var xe=`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(`,`),Se=[`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`],Ce=`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.update`.split(`,`),we=`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.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),Te=`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(`,`),Ee=`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.start,specs.get,specs.list,specs.taskStatus`.split(`,`),De=[`files.list`,`files.read`,`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`],Oe=`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(`,`),ke=`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(`,`),Ae=[`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`],je=`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.update`.split(`,`),Me=`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.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),Ne=`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(`,`),Pe=[`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`],Fe=[`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`],Ie=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.list,files.read,files.tree,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(`,`),Le=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`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`],Re=[...xe,...Se,...De,...Oe,...Te,...Ee,...Ce,...we],ze=[...ke,...Ae,...Ie,...Le,...Ne,...Pe,...Fe,...je,...Me];new Set(Re),new Set(ze);function C(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function w(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function T(e){return e===void 0||Array.isArray(e)}function Be(e){return w(e.activeProjects)===e.activeProjects&&w(e.activeClients)===e.activeClients&&w(e.activeSessions)===e.activeSessions&&w(e.activeSubagents)===e.activeSubagents&&w(e.unreadMailboxMessages)===e.unreadMailboxMessages&&w(e.incompleteMailboxMessages)===e.incompleteMailboxMessages&&w(e.totalCostUsd)===e.totalCostUsd}function Ve(e){if(e.type!==`hq.snapshot`)return null;let t=C(e.snapshot),n=t?C(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||!Be(n)||!T(t.machines)||!T(t.liveSessions)||!T(t.mcpServers)?null:{kind:`hq-snapshot`,snapshot:t}}function He(e){if(e.type!==`hq.event`)return null;let t=C(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 Ue(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 We(e){if(e.type!==`hq.command_status`)return null;let t=C(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 E=e(p(),1),Ge=de(),Ke=e=>Symbol.iterator in e,qe=e=>`entries`in e,Je=(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},Ye=(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 Xe(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:Ke(e)&&Ke(t)?qe(e)&&qe(t)?Je(e,t):Ye(e,t):Je({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function D(e){let t=E.useRef(void 0);return n=>{let r=e(n);return Xe(t.current,r)?t.current:t.current=r}}var O=`wrongstack.hq.token.v1`;function Ze(){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 k(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function A(){if(typeof window>`u`)return null;try{return window.sessionStorage??null}catch{return null}}function j(){try{let e=k()?.getItem(O)??null;if(e!==null&&e.length>0)return e}catch{}return Qe()}function Qe(){try{let e=A()?.getItem(O)??null;if(e===null||e.length===0)return null;let t=!1;try{let n=k();n!==null&&(n.setItem(O,e),t=n.getItem(O)===e)}catch{}if(t)try{A()?.removeItem(O)}catch{}return e}catch{return null}}function M(e){try{k()?.setItem(O,e)}catch{}}function N(){try{k()?.removeItem(O)}catch{}try{A()?.removeItem(O)}catch{}}function P(){let e=Ze();return e===null?j():(M(e),e)}function $e(){if(typeof window>`u`)return;let e=Ze();if(e!==null&&(M(e),j()===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 et(){let e=P();return e===null?{}:{Authorization:`Bearer ${e}`}}function F(e,t){let n={...t?.headers??{},...et()};return fetch(e,{...t,headers:n})}function tt(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 nt(e){return fetch(`/api/auth/upgrade`,{method:`POST`,headers:{Authorization:`Bearer ${e}`},credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})}async function rt(e){let t=tt(e);if(t.length===0)return{ok:!1,message:`Enter a browser token.`};try{let e=await nt(t),n={};try{n=await e.json()}catch{}if(e.ok&&n.loggedIn===!0)return M(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 it(){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 at(){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 ot(){let e=it();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?(at(),N(),!0):!1}catch{return!1}}async function st(){let e=j();if(e===null)return!1;try{let t=await nt(e);return!(!t.ok||(await t.json()).loggedIn!==!0)}catch{return!1}}var ct=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},lt=(e=>e?ct(e):ct),ut=e=>e;function dt(e,t=ut){let n=E.useSyncExternalStore(e.subscribe,E.useCallback(()=>t(e.getState()),[e,t]),E.useCallback(()=>t(e.getInitialState()),[e,t]));return E.useDebugValue(n),n}var ft=e=>{let t=lt(e),n=e=>dt(t,e);return Object.assign(n,t),n},pt=(e=>e?ft(e):ft),mt=6e3,ht=0,I=pt()(e=>({toasts:[],addToast:(t,n=`info`,r=mt,i)=>{let a=`toast-${++ht}-${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:[]})})),L=fe(),gt={error:(0,L.jsx)(S,{size:16,"aria-hidden":`true`}),warning:(0,L.jsx)(g,{size:16,"aria-hidden":`true`}),info:(0,L.jsx)(m,{size:16,"aria-hidden":`true`}),success:(0,L.jsx)(t,{size:16,"aria-hidden":`true`})};function _t(){let{toasts:e,removeToast:t}=I(D(e=>({toasts:e.toasts,removeToast:e.removeToast})));return e.length===0?null:(0,L.jsx)(`div`,{className:`hq-toast-container`,role:`status`,"aria-live":`polite`,"aria-label":`Notifications`,children:e.map(e=>(0,L.jsxs)(`div`,{className:`hq-toast hq-toast--${e.severity}`,"data-severity":e.severity,children:[(0,L.jsx)(`span`,{className:`hq-toast-icon`,children:gt[e.severity]}),(0,L.jsx)(`span`,{className:`hq-toast-message`,children:e.message}),e.action?(0,L.jsx)(`span`,{className:`hq-toast-action`,children:e.action}):null,(0,L.jsx)(`button`,{type:`button`,className:`hq-toast-close`,"aria-label":`Dismiss notification`,onClick:()=>t(e.id),children:(0,L.jsx)(b,{size:12})})]},e.id))})}var vt=new Set([`graceful`,`crash`,`heartbeat-timeout`,`auth-revoked`]),R=`__hq_peer__`;function yt(e){return e===void 0||typeof e==`string`}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`||!vt.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt))||!yt(t.rehydrateHint)||t.rehydrateHint!==void 0&&t.rehydrateHint.length>280||!yt(t.rehydrateCommandId))}function xt(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`||!vt.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt)))}function St(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 Ct(e,t){return e.timestamp===t.timestamp&&e.severity===t.severity&&e.message===t.message}var z=pt()(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?St(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)?{}:{...St(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(!bt(t.payload))return r;let e={kind:`peer.rehydrate`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(R),...n?{}:{peerRehydrate:e}}}if(t.type===`peer.lost`){if(!xt(t.payload))return r;let e={kind:`peer.lost`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(R),...n?{}:{peerRehydrate:e}}}return{...r,...i(t.clientId)}}),_onAlert:t=>e(e=>e.alerts.some(e=>Ct(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 B(e){let t;try{t=await F(e)}catch{throw Error(`Network error fetching ${e}`)}if(t.status===401)throw z.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 wt(e){let t;try{t=await F(`/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 z.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 Tt(e,t,n){let r;try{r=await F(`/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 z.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 Et=`wrongstack.hq.local-prefs.v1`,V={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}},H=null,U=new Set;function W(){for(let e of U)e()}function G(e){return typeof structuredClone==`function`?structuredClone(e):JSON.parse(JSON.stringify(e))}function K(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Dt(){if(typeof window>`u`||window.localStorage===void 0)return G(V);try{let e=window.localStorage.getItem(Et);return e===null?G(V):Ot(JSON.parse(e))}catch{return G(V)}}function Ot(e){if(!K(e))return G(V);let t=K(e.appearance)?e.appearance:{},n=K(e.fleet)?e.fleet:{},r=K(e.console)?e.console:{},i=K(e.control)?e.control:{},a=K(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:V.control.cmdType,abortTarget:i.abortTarget===`fleet`?`fleet`:`leader`,spawnRole:typeof i.spawnRole==`string`&&i.spawnRole.length>0?i.spawnRole:V.control.spawnRole,spawnTask:typeof i.spawnTask==`string`?i.spawnTask:V.control.spawnTask,steerTo:typeof i.steerTo==`string`?i.steerTo:V.control.steerTo,steerSubject:typeof i.steerSubject==`string`?i.steerSubject:V.control.steerSubject,steerBody:typeof i.steerBody==`string`?i.steerBody:V.control.steerBody,broadcastSubject:typeof i.broadcastSubject==`string`?i.broadcastSubject:V.control.broadcastSubject,broadcastBody:typeof i.broadcastBody==`string`?i.broadcastBody:V.control.broadcastBody},mailbox:{query:typeof a.query==`string`?a.query:V.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 q(){return H===null&&(H=Dt()),H}function J(e){if(!(typeof window>`u`||window.localStorage===void 0))try{window.localStorage.setItem(Et,JSON.stringify(e))}catch{}}function kt(e){return U.add(e),()=>U.delete(e)}function At(){return q()}function jt(){return V}function Mt(){return(0,E.useSyncExternalStore)(kt,At,jt)}function Nt(e){let t=q();H={...t,control:{...t.control,...e}},J(H),W()}function Pt(e){let t=q();H={...t,appearance:{...t.appearance,...e}},J(H),W()}function Ft(e){let t=q();H={...t,fleet:{...t.fleet,...e}},J(H),W()}function It(e){let t=q();H={...t,console:{...t.console,...e}},J(H),W()}function Lt(e){let t=q();H={...t,mailbox:{...t.mailbox,...e}},J(H),W()}function Y({value:e,onChange:t,onKeyDown:n,inputRef:r,placeholder:i,autoComplete:a,minLength:o,maxLength:s,className:c,id:l}){let[u,d]=(0,E.useState)(!1);return(0,L.jsxs)(`div`,{className:`hq-password-input-wrapper`,children:[(0,L.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,L.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,L.jsx)(ne,{size:14}):(0,L.jsx)(_,{size:14})})]})}function Rt({hadToken:e,onAuthenticated:t=()=>window.location.reload()}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(null);(0,E.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,E.useState)(null),u=c??(e&&o?`token`:s?`password`:`token`);return i?(0,L.jsx)(`div`,{className:`hq-token-gate`,children:(0,L.jsxs)(`div`,{className:`hq-token-card`,children:[(0,L.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,L.jsx)(`div`,{className:`hq-token-title`,children:`Auth status unavailable`}),(0,L.jsx)(`p`,{className:`hq-token-text`,children:i})]})}):n?(0,L.jsx)(`div`,{className:`hq-token-gate`,children:(0,L.jsxs)(`div`,{className:`hq-token-card`,children:[(0,L.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),o&&s?(0,L.jsxs)(`div`,{className:`hq-token-tabs`,children:[(0,L.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`token`?` active`:``),onClick:()=>l(`token`),children:`Browser token`}),(0,L.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`password`?` active`:``),onClick:()=>l(`password`),children:`Password`})]}):null,u===`token`||!s?(0,L.jsx)(zt,{hadToken:e,onAuthenticated:t}):(0,L.jsx)(Bt,{})]})}):(0,L.jsx)(`div`,{className:`hq-token-gate`,children:(0,L.jsxs)(`div`,{className:`hq-token-card`,children:[(0,L.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,L.jsx)(`div`,{className:`hq-token-title`,children:`Checking auth mode…`})]})})}function zt({hadToken:e,onAuthenticated:t}){let[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(!1),c=(0,E.useRef)(null),l=(0,E.useRef)(!1);(0,E.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 rt(n);if(e.ok){t();return}a(e.message??`The browser token was rejected.`),l.current=!1,s(!1)};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`hq-token-title`,children:`Browser token required`}),(0,L.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. Paste the browser token from wstack hq token create. A complete legacy ?token= URL also works.`}),i?(0,L.jsx)(`p`,{className:`hq-token-error`,children:i}):null,(0,L.jsx)(Y,{inputRef:c,value:n,onChange:r,onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`browser token`,autoComplete:`off`}),(0,L.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void u(),disabled:n.trim().length===0||o,children:o?`Connecting…`:`Connect`}),(0,L.jsxs)(`p`,{className:`hq-token-hint`,children:[`Manage tokens with `,(0,L.jsx)(`code`,{children:`wstack hq token list`}),` / `,(0,L.jsx)(`code`,{children:`wstack hq token create`}),` — they live in `,(0,L.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),`.`]})]})}function Bt(){let[e,t]=(0,E.useState)(``),[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(null),[c,l]=(0,E.useState)(!1),u=(0,E.useRef)(null),d=(0,E.useRef)(null),f=(0,E.useRef)(!1),p=(0,E.useRef)(!1);(0,E.useEffect)(()=>{if(i){d.current?.focus();return}u.current?.focus()},[i]);let m=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}N(),window.location.reload()}catch{s(`Network error.`),f.current=!1,l(!1)}}},h=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}N(),window.location.reload()}catch{s(`Network error.`),p.current=!1,l(!1)}}};return i?(0,L.jsxs)(L.Fragment,{children:[o?(0,L.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,L.jsx)(`label`,{className:`hq-token-label`,htmlFor:`hq-totp-code`,children:`Authenticator code`}),(0,L.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`&&h()}}),(0,L.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void h(),disabled:n.trim().length===0||c,children:c?`Verifying…`:`Verify`}),(0,L.jsx)(`button`,{type:`button`,className:`hq-token-hint`,onClick:()=>{a(!1),r(``),s(null)},children:`← Back to password`}),(0,L.jsx)(`p`,{className:`hq-token-hint`,children:`Enter the 6-digit code from your authenticator app, or paste a recovery code.`})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`hq-token-title`,children:`Password required`}),(0,L.jsx)(`p`,{className:`hq-token-text`,children:`This HQ server is protected by a password. Enter it to open the dashboard.`}),o?(0,L.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,L.jsx)(Y,{inputRef:u,value:e,onChange:t,onKeyDown:e=>{e.key===`Enter`&&m()},placeholder:`password`,autoComplete:`current-password`}),(0,L.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void m(),disabled:e.length===0||c,children:c?`Logging in…`:`Log in`}),(0,L.jsxs)(`p`,{className:`hq-token-hint`,children:[`Set or change the password with `,(0,L.jsx)(`code`,{children:`wstack --hq --password <secret>`}),`.`]})]})}var Vt=`modulepreload`,Ht=function(e){return`/`+e},Ut={},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=Ht(t,n),t=s(t),t in Ut)return;Ut[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`:Vt,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)})},Wt=360*60*1e3,Z=[{id:`cockpit`,label:`Cockpit`,eyebrow:`Fleet overview`,description:`Health, active work, alerts, cost and command shortcuts.`,group:`Operations`,icon:o,shortcut:1},{id:`fleet`,label:`Fleet Map`,eyebrow:`Topology`,description:`Machines, projects, terminals and agents in one live graph.`,group:`Operations`,icon:v,shortcut:2},{id:`console`,label:`Live Console`,eyebrow:`Transcripts`,description:`Stream and inspect session or agent conversations.`,group:`Operations`,icon:a,shortcut:3},{id:`mailbox`,label:`Mailbox`,eyebrow:`Coordination`,description:`Cross-project messages, unread work and direct delivery.`,group:`Operations`,icon:l,shortcut:4},{id:`kanban`,label:`Kanban`,eyebrow:`Project work`,description:`Read-only project boards synchronized across clones and machines.`,group:`Operations`,icon:te},{id:`alerts`,label:`Alerts`,eyebrow:`Attention`,description:`Active fleet warnings and alert transition history.`,group:`Intelligence`,icon:f,shortcut:5},{id:`cost`,label:`Cost`,eyebrow:`Economics`,description:`Project, provider and model spending distribution.`,group:`Intelligence`,icon:ie,shortcut:6},{id:`trends`,label:`Trends`,eyebrow:`Telemetry`,description:`Cost, token and tool activity over time.`,group:`Intelligence`,icon:s,shortcut:7},{id:`brain`,label:`Brain`,eyebrow:`Decisions`,description:`Autonomous decisions, escalations and interventions.`,group:`Intelligence`,icon:ue,shortcut:8},{id:`worktree`,label:`Worktrees`,eyebrow:`Workspace`,description:`Distributed branches, worktrees and ownership state.`,group:`System`,icon:oe,shortcut:9},{id:`control`,label:`Control`,eyebrow:`Command plane`,description:`Steer, queue, broadcast and audit remote commands.`,group:`System`,icon:x,shortcut:0},{id:`settings`,label:`Security`,eyebrow:`Access control`,description:`Manage the HQ browser password, authentication and active credentials.`,group:`System`,icon:h}],Gt=[`Operations`,`Intelligence`,`System`],Kt={cockpit:(0,E.lazy)(()=>X(()=>import(`./cockpit-CBmd0m77.js`).then(e=>({default:e.CockpitView})),__vite__mapDeps([0,1,2,3]))),fleet:(0,E.lazy)(()=>X(()=>import(`./fleet-map-DVCcQRlq.js`).then(e=>({default:e.FleetMapView})),__vite__mapDeps([4,1,2,5,3,6]))),console:(0,E.lazy)(()=>X(()=>import(`./live-console-BfoREDy_.js`).then(e=>({default:e.LiveConsoleView})),__vite__mapDeps([7,1,2,3,6,5]))),mailbox:(0,E.lazy)(()=>X(()=>import(`./mailbox-BxKyFuHW.js`).then(e=>({default:e.MailboxView})),__vite__mapDeps([8,1,2,3,9]))),kanban:(0,E.lazy)(()=>X(()=>import(`./kanban-B1QOUG8G.js`).then(e=>({default:e.KanbanView})),__vite__mapDeps([10,1,2,3]))),cost:(0,E.lazy)(()=>X(()=>import(`./cost-BfO45Z4b.js`).then(e=>({default:e.CostView})),__vite__mapDeps([11,1,2,3]))),brain:(0,E.lazy)(()=>X(()=>import(`./brain-Dwu_CxB0.js`).then(e=>({default:e.BrainView})),__vite__mapDeps([12,1,2,3,9]))),worktree:(0,E.lazy)(()=>X(()=>import(`./worktree-hlgRokq_.js`).then(e=>({default:e.WorktreeView})),__vite__mapDeps([13,1,2,3,9]))),trends:(0,E.lazy)(()=>X(()=>import(`./trends-BqZY3rkH.js`).then(e=>({default:e.TrendsView})),__vite__mapDeps([14,1,2,3]))),alerts:(0,E.lazy)(()=>X(()=>import(`./alerts-CeRcla80.js`).then(e=>({default:e.AlertsView})),__vite__mapDeps([15,1,2,3]))),control:(0,E.lazy)(()=>X(()=>import(`./control-Cbqqueg6.js`).then(e=>({default:e.ControlView})),__vite__mapDeps([16,1,2,3]))),settings:(0,E.lazy)(()=>X(()=>import(`./settings-B37plfuB.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([17,1,2,3])))};function qt(e){return Z.find(t=>t.id===e)??Z[0]}var Jt=class extends E.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,L.jsxs)(`div`,{className:`hq-view-error`,role:`alert`,children:[(0,L.jsx)(y,{size:22}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:`This HQ surface stopped safely.`}),(0,L.jsx)(`p`,{children:this.state.error})]}),(0,L.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,onClick:()=>this.setState({error:null}),children:[(0,L.jsx)(u,{size:13}),`Retry view`]})]})}};function Yt(){let{snapshot:e,alerts:t,activeView:a,authRequired:o,connected:s,peerRehydrate:l}=z(D(e=>({snapshot:e.snapshot,alerts:e.alerts,activeView:e.activeView,authRequired:e.authRequired,connected:e.connected,peerRehydrate:e.peerRehydrate}))),[u,f]=(0,E.useState)(()=>typeof window>`u`||window.innerWidth>=1180),[p,m]=(0,E.useState)(null),[h,te]=(0,E.useState)(null),[g,ne]=(0,E.useState)(!1),{theme:_}=Mt().appearance,v=(0,E.useRef)(!1),y=(0,E.useRef)(!1);if((0,E.useEffect)(()=>{y.current&&s===!1?I.getState().addToast(`Connection lost — reconnecting with backoff…`,`warning`,4e3):y.current&&v.current===!1&&s===!0&&I.getState().addToast(`Reconnected to HQ server`,`success`,3e3),s&&(y.current=!0),v.current=s},[s]),(0,E.useEffect)(()=>(document.documentElement.dataset.hqTheme=_,()=>{delete document.documentElement.dataset.hqTheme}),[_]),(0,E.useEffect)(()=>{let e=!1;return B(`/api/snapshot`).then(t=>{e||z.getState()._hydrateSnapshot(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,E.useEffect)(()=>{let e=!1;return B(`/api/auth/status`).then(t=>{e||te(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,E.useEffect)(()=>{let e=!1,t=()=>{B(`/api/system/update`).then(t=>{e||m(t)}).catch(()=>{})};t();let n=window.setInterval(t,Wt);return()=>{e=!0,window.clearInterval(n)}},[]),(0,E.useEffect)(()=>{let e=e=>{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(),z.getState().setActiveView(n.id));return}e.key===`Escape`&&u&&window.innerWidth<900&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u]),o)return(0,L.jsx)(Rt,{hadToken:P()!==null});let b=e?.totals,oe=b?.unreadMailboxMessages??0,x=t.filter(e=>e.severity!==`info`).length,S=qt(a),le=S.icon,ue=Kt[a],de=e=>{z.getState().setActiveView(e),window.innerWidth<900&&f(!1)},fe=async()=>{ne(!0);try{await F(`/api/logout`,{method:`POST`})}finally{N(),window.location.reload()}};return(0,L.jsxs)(`div`,{className:`hq-app`,"data-theme":_,"data-testid":`hq-workbench`,children:[(0,L.jsx)(`button`,{type:`button`,className:`hq-sidebar-scrim`,"data-open":u,"aria-label":`Close HQ navigation`,onClick:()=>f(!1)}),(0,L.jsxs)(`aside`,{className:`hq-secondary-nav`,"data-open":u,"aria-label":`HQ navigation`,children:[(0,L.jsxs)(`div`,{className:`hq-secondary-header`,children:[(0,L.jsxs)(`div`,{className:`hq-secondary-brand`,children:[(0,L.jsx)(`img`,{src:`/wrongstack.svg`,alt:``,"aria-hidden":`true`,draggable:!1}),(0,L.jsxs)(`div`,{className:`hq-secondary-copy`,children:[(0,L.jsx)(`span`,{className:`hq-secondary-eyebrow`,children:`Command center`}),(0,L.jsx)(`strong`,{children:`WrongStack HQ`})]})]}),(0,L.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,L.jsx)(r,{size:16})})]}),(0,L.jsx)(`div`,{className:`hq-secondary-scroll`,children:Gt.map(e=>(0,L.jsxs)(`section`,{className:`hq-nav-group`,children:[(0,L.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`?oe:e.id===`alerts`?x:0;return(0,L.jsxs)(`button`,{type:`button`,className:`hq-nav-item`,"data-active":a===e.id,"aria-current":a===e.id?`page`:void 0,onClick:()=>de(e.id),children:[(0,L.jsx)(t,{size:15}),(0,L.jsx)(`span`,{children:e.label}),e.shortcut===void 0?null:(0,L.jsxs)(`kbd`,{children:[`Alt+`,e.shortcut]}),n>0?(0,L.jsx)(`span`,{className:`hq-nav-badge`,children:n}):null]},e.id)})]},e))}),(0,L.jsxs)(`div`,{className:`hq-secondary-footer`,children:[(0,L.jsxs)(`div`,{className:`hq-link-state`,"data-live":s,children:[(0,L.jsx)(`span`,{className:`hq-link-dot`}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:s?`Connected`:`Reconnecting`}),(0,L.jsxs)(`span`,{children:[b?.activeMachines??0,` machines · `,b?.activeClients??0,` clients`]})]})]}),(0,L.jsx)(`span`,{className:`hq-build-label`,children:`@wrongstack/webui-hq`})]})]}),(0,L.jsxs)(`section`,{className:`hq-workbench`,"data-update-available":p?.outdated===!0,children:[(0,L.jsxs)(`header`,{className:`hq-header`,children:[(0,L.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-sidebar-toggle`,"aria-label":u?`Collapse HQ navigation`:`Expand HQ navigation`,"aria-expanded":u,title:`Toggle navigation (Ctrl+B)`,onClick:()=>f(e=>!e),children:u?(0,L.jsx)(r,{size:17}):(0,L.jsx)(i,{size:17})}),(0,L.jsx)(`div`,{className:`hq-view-icon`,"aria-hidden":`true`,children:(0,L.jsx)(le,{size:18})}),(0,L.jsxs)(`div`,{className:`hq-view-identity`,children:[(0,L.jsx)(`span`,{children:S.eyebrow}),(0,L.jsx)(`h1`,{children:S.label}),(0,L.jsx)(`p`,{children:S.description})]}),(0,L.jsxs)(`div`,{className:`hq-top-metrics`,children:[(0,L.jsx)(Q,{icon:ce,label:`Machines`,value:b?.activeMachines??0}),(0,L.jsx)(Q,{icon:ae,label:`Agents`,value:b?.activeAgents??0}),(0,L.jsx)(Q,{icon:d,label:`Sessions`,value:b?.activeSessions??0}),(0,L.jsx)(Q,{icon:ie,label:`Cost`,value:`$${(b?.totalCostUsd??0).toFixed(2)}`,accent:!0})]}),(0,L.jsxs)(`div`,{className:`hq-connection-pill`,"data-live":s,children:[s?(0,L.jsx)(re,{size:13}):(0,L.jsx)(ee,{size:13}),s?`Live`:`Reconnecting`]}),(0,L.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-theme-toggle`,"aria-label":`Switch to ${_===`dark`?`light`:`dark`} mode`,title:`Switch to ${_===`dark`?`light`:`dark`} mode`,onClick:()=>Pt({theme:_===`dark`?`light`:`dark`}),children:_===`dark`?(0,L.jsx)(se,{size:16}):(0,L.jsx)(c,{size:16})}),h?.tokenMode||h?.passwordMode?(0,L.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 fe(),children:(0,L.jsx)(n,{size:16})}):null]}),p?.outdated?(0,L.jsx)(Zt,{status:p}):null,l?(0,L.jsx)(Xt,{envelope:l}):null,(0,L.jsx)(`main`,{className:`hq-main`,id:`hq-main`,tabIndex:-1,children:(0,L.jsx)(Jt,{view:a,children:(0,L.jsx)(E.Suspense,{fallback:(0,L.jsx)(Qt,{label:S.label}),children:(0,L.jsx)(ue,{})})})})]}),(0,L.jsx)(_t,{})]})}function Xt({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,L.jsxs)(`aside`,{className:`hq-peer-rehydrate-notice`,role:`status`,"aria-live":`polite`,children:[(0,L.jsx)(g,{size:16,"aria-hidden":`true`}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:t}),(0,L.jsx)(`span`,{children:n})]}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>z.getState()._dismissPeerRehydrate(),title:`Dismiss peer lifecycle notice`,children:`Dismiss`})]})}function Zt({status:e}){let[t,n]=(0,E.useState)(!1),r=async()=>{try{await navigator.clipboard.writeText(e.command),n(!0),window.setTimeout(()=>n(!1),1500)}catch{n(!1)}};return(0,L.jsxs)(`aside`,{className:`hq-update-notice`,role:`status`,"aria-live":`polite`,children:[(0,L.jsx)(g,{size:16,"aria-hidden":`true`}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:`WrongStack update available`}),(0,L.jsxs)(`span`,{children:[`v`,e.current,` → v`,e.latest,`. Run `,(0,L.jsx)(`code`,{children:e.command}),` in your terminal, then restart HQ.`]})]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>void r(),title:`Copy update command`,children:[(0,L.jsx)(le,{size:13,"aria-hidden":`true`}),t?`Copied`:`Copy command`]})]})}function Q({icon:e,label:t,value:n,accent:r=!1}){return(0,L.jsxs)(`div`,{className:`hq-top-metric`,"data-accent":r,children:[(0,L.jsx)(e,{size:12}),(0,L.jsx)(`span`,{children:t}),(0,L.jsx)(`strong`,{children:n})]})}function Qt({label:e}){return(0,L.jsxs)(`div`,{className:`hq-view-loading`,role:`status`,children:[(0,L.jsx)(x,{size:18}),(0,L.jsxs)(`span`,{children:[`Loading `,e,`…`]})]})}var $t=25e3,en=1e4,tn=3e4,nn=32;function rn(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 an(e){if(!Number.isFinite(e))return 0;let t=Math.max(0,Math.trunc(e));return Number.isSafeInteger(t)?t:0}var on=class{ws=null;handlers=new Set;stateHandlers=new Set;reconnectAttempt=0;connectionState=me();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??$t,this.heartbeatTimeoutMs=e?.heartbeatTimeoutMs??en,this.maxBackoffMs=e?.maxBackoffMs??tn,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=P(),r=rn(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=he(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=ge(this.connectionState),this.lastMessageAt=Date.now(),this.connectionState=_e(this.connectionState,this.lastMessageAt),this.emitState(`connected`),this.sendResume(),this.startHeartbeat())},e.onmessage=t=>{if(this.ws===e){this.lastMessageAt=Date.now(),this.connectionState=_e(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=ve(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=ye(this.connectionState,{...pe,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=an(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===R),i=r===void 0?nn:nn-1,a=n.filter(({clientId:e})=>e!==R).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||be(this.connectionState,{...pe,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 sn(e){if($===null)return $=new on(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 cn=document.getElementById(`root`);cn!==null&&ot().finally(()=>{$e(),st();let e=sn({resumeCursor:()=>z.getState().resumeCursors});e.onStateChange(e=>{z.getState()._setConnected(e===`connected`)});let t=null,n=()=>{t===null&&(z.getState()._setNeedsSnapshotRefresh(!1),t=B(`/api/snapshot`).then(e=>{z.getState()._onSnapshot(e)}).catch(()=>void 0).finally(()=>{t=null}))};z.subscribe((e,t)=>{e.needsSnapshotRefresh&&!t.needsSnapshotRefresh&&n()}),e.on(e=>{if(e.type===`hq.snapshot`){let t=Ve(e);t&&z.getState()._onSnapshot(t.snapshot)}else if(e.type===`hq.event`){let t=He(e);t&&z.getState()._onEvent(t.event)}else if(e.type===`hq.alert`){let t=Ue(e);t&&z.getState()._onAlert(t.alert)}else if(e.type===`hq.command_status`){let t=We(e);t&&z.getState()._onCommandStatus(t.command)}else if(e.type===`hq.resume_gap`)for(let t of e.envelopes){let e=He({type:`hq.event`,event:t});e&&z.getState()._onEvent(e.event)}else e.type===`hq.resume_reject`&&(z.getState()._resetResumeCursors(),z.getState()._setNeedsSnapshotRefresh(!0))}),(0,Ge.createRoot)(cn).render((0,L.jsx)(E.StrictMode,{children:(0,L.jsx)(Yt,{})}))});export{Lt as a,Tt as c,F as d,N as f,Ft as i,wt as l,It as n,Mt as o,D as p,Nt as r,B as s,Y as t,z as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAn4ABMAAAAAEwQAAAmOAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGjQbgnQcLj9IVkFSgQEGYD9TVEFUgQIAgQovahEICok0h0ULIAAwhzoBNgIkAzwEIAWHJgeBDgwHG6QQUdRKTmoBFD8K42bniObKrG3LZFcMWZzFmrjTFhQ6TVTqPJcInrfrvzq3b2PGn1wwMiNYGTy9ViREYARlL1zAGcPdPqBt3gNWrfKthv4xnM+b9caw+wmjgEUVRjHXhS6jgCK6zf5HiWQacJpGdAgdrbV6g/Rf1BfxRqZVQnrxRVWSJb6RLFnyu0elilmjeoSQCKnxsmwLaddUMjnksriSYuuPl06EAl7KfAiWQjCUETz0zNZ3EII94CDQtzkMfZ/9IkkY8tZRZTDky5ZVwBAM+GYpdd4ZVAWYImnLkiTg48l79gGx3D+VBtLeyg8u7bJAd4uo0pFuQBFysE9C95l0W4Fkiao6GfrDbu77lVU7wk9cV3uqOsXmQiMkhVKl1ugjzUAJBSIkkVWHijkpkVSyUFsgVBuJMA0N+ZnXtyUv5yMigGdfQRmwL1AAjQ3YXG6iIFNSUdPQo8+AISPGAltBMDQRAtyf4ZspLlZkpyOVoMZPvFGWzvk8p5SUC/NWPMj6T2/Yas2EdlON5GkfdkeFwVGjta825H89NIenlLWAPAp5h1KDtRhCaAQWMsFKtEvOKpIhgLHlXPARokkgEGEOAkqxJRQpKYq4ezahIiLHP6hZpqMbV0pUF2vdvEimLEQ/iIUYLgYWs0VXGVlLTOPdaPmFfCC/XrtzqVo1ez7vz6+Kd2+7o11ZJ+4MreLbB5BKVGxobAq4jZYalZ5aX2CKJiwUuc9GNJyi4M8bGyKcdjSRrG4JohdF8buJfmQefbYYREnMFsOoiNliFDVxmRgL0XUmUMLqzW0A4gCQAhWGYCQpFNukwXhIkPMsbRI19ewtw8Cp2Wj/Ro5cM2OTAbJAvZ/L4opBXb9+UHscYuOKM/W8isgwN26Exexjizmfnlp9dE3hOSqdZ/F5QqbckIlPb+oKfXxd6hftJ7Sm/uyPYpONza84CRlMNk/uhOrLpyf53982++zRkXNu3g3VF8qFbx1+7fbHZ9DrB3VXWNSmhnT2vrwS1+1Z+kHGBaZIhnnvuLBTNDeA340D1DWu5/jEa9pVfl6+Jij+yo3EELNixXCLjr173Q5eDP7Y7/L4iQFHbjpaJLFoP4cCsYP6sAPL7gMHNg53yYjqxqTDrYqLDl5DzW/eTLjYxCvucprjI3yl2ykKowKUC2Ox2FJLFo6Fa1HBWLC2jMCIIBEmklkYhmkpmBhTm/LCvJAH5oGcMKcgFEP1xUdho8ANPa6RFD99/PN60fjj9eXy2Eex4B5MpmRapXidzFk1p4uLk3+hn6jAP9ovJcXPPwk8o/0ltizbdbnTprvx4PSxT0VZ3Xc772aN7RflgbXRYwc3hLNO+k878nxGwfuVM8m8Gs7WEoVGWLHwSpx4vNSHBCMNqJ4m15Kp/TfHHVkQd++eY7PGN4W5byTs+6Ft8Ozvb/D60btv37de8ER0mS3P/0sLW84qGjEVkwztPzz06eGUWwKLwPb0D/WFd3vltl2aP276KpM0JNz6AfnAnZ5ADlF2zVyZ2OkxHSMxWPMnSZLbbDR3F1UjPVqp4d68da13F1YZujdWw7271iecO2l9+/4p47Oztjck355/75wFOI+VdGDqbNGs+ISgxg3iB2jb2r+b0CWsNLHIM4sdv8SDSFBP/Oromz6FNCWw2iMTxV0R8QLyBTkpe0j5+pSSJOOTB5Mck/gh3IopuNQnhKj02t3FL80gGbEh89SZcwTxcYt5cZT/nMnB3uXfPy8BSpVMBuRx+ZhACGzDBmwHsJRAjhotOnzuj2wDz3ug2wOUAY2NgZln9/TK/enG/oE4rO1wxvGUFMAxsZ0qNjRC7hl9d17e7imbgDt6uJXhUobDg7v3RX/yRCKxgMhfyiKcZfbpk0wmCcdQlIAOHeakXLvCNt++WfKiozNqSZxxJotn+c0a7DdPsx7DPYgKIDxwwYUZDg9aJbxocTjcwovr9WAsVV32mQoiiIOCHc60Oltst9qCQYuCqN1yHo0Kj60OgI2OqmiuBUWrNA0NDhYCDcdpmMrs1fZZ0xdTzMr1HdPtIHstYhqaPDDA5YxUDx7J4fJiisBSDI/L6G/bn34GNy8Q2g044ZTulAdFLb0tI6NNxfj3DzLjWiNGxje1pz7aXOcNV68lDPEd2SXl6VfBuwmHzdf1gxFy1HvA7pD8I2BnnmyGw852Cg5XbgIdEEGE5UCzen5jTlG6JCU5iajlxVcsXvbcS0SAcg1dcesWJLVK8+hYHOYQ+Pjy+EyVGXP0aPTFagrV9E03hCQvYx+g47KGq+1GsLj8uBIyihNw33YUe8PNC4BOJ3Lm1AglLV3nCuvUdIP+v15tVGbWIwgxLVpPkfpthCGpTKG+oA/DQfsKKvxhScqaN6FuElAUtTKv2UYgOmQegsN/n7njHUju8wM4VTcm+Q8xfX9SFwjTzdVqu95UOWSIGOabH8OGBEba//8Yxl3GcPdP/dMBOoSX/0z5SZmBoLbaPs+9asaMpb36yknKaw6FqWZa6A5vDa02mhkOba1q6KtLV208xrkwmW5C4VD6n2fvRjADy2qDYYnNy+H10Fq0LMbNzS863gkO7iQ8eC48/Ny5m59tOcEso3u7Qg3yrqDL6eKXwJAuWnhylfbWrRObe66rzX59+XDtzusnL66dI/86ArmtLlzED860Ef3bFPV78OX/zFTA11fcBn2Vntb7qiGBSgLBHyuv/uEaqqoTgSpOyjlzh86me1Vriv7i9rLPLvtghWmSnblRbAsBJL/4dScSQTBxOivHMO5QvBBY0iheJvfwWLxLOGzYKZyM4zVc2Cll46zEpeUV4MqGEWZj22SdOxhGAjgs9AEnfT+RoiMfcDb0GS5NncKVxju4Nt/mRk13O9Gz3FLct5oCD6wkwUNrCfHIUg6SMf8LwQGyVaBUqpLPW5BaMpRshEpl8nS1qw5dgnzlik8QBXmdy5UrIH74heTKZKMSilQso4hsRiGraQZRzxpNGqlEJMsXuAU7GlcR8mWSykUpVkWGyIf0a8v4qEQp5CtGsMiZa+4ESYQy+WilCiguHzxMXO54ogShooTV2bj2z1zL6DYSoImoQ8lFUWxMLBNQQgLkV2tHYgUoIbkuREz+fJHKxxWBcnvu3KQppFCxLkguB1NyVSp/TknRvNwYlCdbblWu3ze6owHdWluhE5tgQ6ej2SV65CijijoaRfSiH4Nqz1OpfEW+WeI/oU0ly60zkV9YzOQSYtZVEGYmrysTZAJkY4qZtIBD9/LYTIK7Nww3vMiYBwA=)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}:root{color-scheme:dark;--bg:#1b1c1a;--bg2:color-mix(in srgb, var(--bg) 92%, var(--panel));--panel:#22231f;--panel2:color-mix(in srgb, var(--panel) 88%, var(--text));--inset:var(--bg);--border:color-mix(in srgb, var(--primary) 46%, var(--panel));--border2:color-mix(in srgb, var(--accent2) 40%, var(--text));--text:#f5f2e9;--bright:#fffdf8;--muted:#b6b2a8;--dim:color-mix(in srgb, var(--muted) 70%, var(--bg));--primary:#fe2e5f;--primary-dim:color-mix(in srgb, var(--primary) 68%, var(--bg));--accent2:#fd9f02;--cyan:var(--primary);--green:#2ac075;--amber:var(--accent2);--red:#df4949;--purple:#a685f4;--accent:var(--amber);--chart-1:var(--primary);--chart-2:var(--accent2);--chart-3:var(--green);--flow-node-bg:color-mix(in srgb, var(--panel) 86%, var(--bg));--flow-node-shadow:0 8px 24px #12121059;--flow-machine-border:color-mix(in srgb, var(--primary) 52%, transparent);--flow-project-border:color-mix(in srgb, var(--accent2) 50%, transparent);--flow-terminal-border:color-mix(in srgb, var(--text) 36%, transparent);--flow-agent-border:color-mix(in srgb, var(--green) 38%, transparent);--flow-selected-ring:color-mix(in srgb, var(--primary) 30%, transparent);--flow-selected-shadow:color-mix(in srgb, var(--primary) 24%, transparent);--flow-edge:color-mix(in srgb, var(--primary) 46%, transparent);--flow-edge-live:color-mix(in srgb, var(--green) 75%, transparent);--flow-grid:color-mix(in srgb, var(--text) 12%, transparent);--fg:var(--text);--surface:var(--panel);--danger:var(--red);--ring:var(--accent2);--radius:0;--radius-sm:0;--radius-md:0;--radius-lg:0;--radius-xl:0;--radius-full:0;--font-sans:"Manrope Variable", "Manrope", "Segoe UI", system-ui, -apple-system, sans-serif;--font-display:"Space Grotesk Variable", "Space Grotesk", "Manrope Variable", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "JetBrains Mono", Consolas, "Cascadia Mono", monospace;--shadow:0 1px 2px #12121080, 0 4px 16px #12121059}:root[data-hq-theme=light]{color-scheme:light;--bg:#f8f6f0;--bg2:color-mix(in srgb, var(--bg) 92%, var(--fg));--panel:#fffdf8;--panel2:color-mix(in srgb, var(--panel) 90%, var(--fg));--inset:color-mix(in srgb, var(--bg) 88%, var(--fg));--border:color-mix(in srgb, var(--primary) 52%, var(--panel));--border2:color-mix(in srgb, var(--accent2) 42%, var(--fg));--text:#171714;--bright:#171714;--muted:#646159;--dim:color-mix(in srgb, var(--muted) 78%, var(--panel));--primary:#d51f4d;--primary-dim:color-mix(in srgb, var(--primary) 72%, var(--bg));--accent2:#d97706;--cyan:var(--primary);--green:#18864f;--amber:var(--accent2);--red:#c02626;--purple:#5f37be;--accent:var(--amber);--chart-1:var(--primary);--chart-2:var(--accent2);--chart-3:var(--green);--flow-node-bg:color-mix(in srgb, var(--panel) 98%, transparent);--flow-node-shadow:0 8px 24px color-mix(in srgb, var(--fg) 16%, transparent);--flow-machine-border:color-mix(in srgb, var(--primary) 52%, transparent);--flow-project-border:color-mix(in srgb, var(--accent2) 56%, transparent);--flow-terminal-border:color-mix(in srgb, var(--text) 38%, transparent);--flow-agent-border:color-mix(in srgb, var(--green) 42%, transparent);--flow-selected-ring:color-mix(in srgb, var(--primary) 24%, transparent);--flow-selected-shadow:color-mix(in srgb, var(--primary) 14%, transparent);--flow-edge:color-mix(in srgb, var(--primary) 52%, transparent);--flow-edge-live:color-mix(in srgb, var(--green) 72%, transparent);--flow-grid:color-mix(in srgb, var(--text) 14%, transparent);--shadow:0 1px 2px color-mix(in srgb, var(--fg) 12%, transparent), 0 8px 24px color-mix(in srgb, var(--fg) 12%, transparent)}*,:before,:after{box-sizing:border-box;border-radius:var(--radius)}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;letter-spacing:-.012em;font-size:13.5px;line-height:1.5;overflow:hidden}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:1px}::selection{background:#fe2e5f4d}a{color:var(--primary)}.hq-app{background:var(--bg);grid-template-columns:auto minmax(0,1fr);height:100vh;display:grid;overflow:hidden}.hq-sidebar-scrim{display:none}.hq-secondary-nav{z-index:20;border-right:1px solid var(--border);background:var(--bg2);flex-direction:column;width:232px;min-width:0;min-height:0;transition:width .15s;display:flex;position:relative;overflow:hidden}.hq-secondary-nav[data-open=false]{border-right-width:0;width:0}.hq-secondary-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:10px;width:232px;min-height:70px;padding:12px 10px 10px 14px;display:flex}.hq-secondary-brand{flex-direction:row;align-items:center;gap:9px;min-width:0;display:flex}.hq-secondary-brand>img{border:1px solid var(--border);object-fit:cover;width:40px;height:40px;image-rendering:pixelated;user-select:none;flex:0 0 40px;display:block}.hq-secondary-copy{flex-direction:column;min-width:0;display:flex}.hq-secondary-header strong,.hq-brand{color:var(--bright);font-family:var(--font-display);letter-spacing:-.02em;white-space:nowrap;font-size:15px;font-weight:650}.hq-secondary-eyebrow{color:var(--primary);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-size:9px;font-weight:700}.hq-icon-button{border:1px solid var(--border);background:var(--inset);width:30px;height:30px;color:var(--muted);cursor:pointer;flex:0 0 30px;place-items:center;display:inline-grid}.hq-icon-button:hover{border-color:var(--border2);background:var(--panel2);color:var(--bright)}.hq-secondary-scroll{scrollbar-color:var(--border2) transparent;scrollbar-width:thin;flex:1;width:232px;min-height:0;padding:10px 8px 14px;overflow-y:auto}.hq-nav-group+.hq-nav-group{margin-top:14px}.hq-nav-group-label{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;padding:0 6px 5px;font-size:9px;font-weight:700}.hq-nav-item{width:100%;min-height:34px;color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;grid-template-columns:18px minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:5px 7px;display:grid}.hq-nav-item:hover{border-color:var(--border);background:var(--panel);color:var(--bright)}.hq-nav-item[data-active=true]{color:var(--bright);background:#fe2e5f1a;border-color:#fe2e5f73}.hq-nav-item:where([data-active=true])>svg{color:var(--primary)}.hq-nav-item>span:first-of-type{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:600;overflow:hidden}.hq-nav-item kbd{color:var(--dim);font-family:var(--font-mono);font-size:8px}.hq-nav-badge{background:var(--amber);color:#171714;min-width:17px;font-family:var(--font-mono);text-align:center;padding:0 4px;font-size:9px;font-weight:700;line-height:16px}.hq-secondary-footer{border-top:1px solid var(--border);width:232px;padding:10px 12px}.hq-link-state{align-items:center;gap:8px;display:flex}.hq-link-dot{background:var(--red);flex:0 0 7px;width:7px;height:7px}.hq-link-state[data-live=true] .hq-link-dot{background:var(--green)}.hq-link-state>div{flex-direction:column;min-width:0;display:flex}.hq-link-state strong{color:var(--text);font-size:10px}.hq-link-state span{color:var(--dim);font-family:var(--font-mono);font-size:8px}.hq-build-label{color:var(--dim);font-family:var(--font-mono);margin-top:7px;font-size:8px;display:block}.hq-workbench{flex-direction:column;min-width:0;min-height:0;display:flex}.hq-header{z-index:10;border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:10px;min-height:70px;padding:9px 14px;display:flex;position:relative}.hq-update-notice,.hq-peer-rehydrate-notice{border-bottom:1px solid color-mix(in srgb, var(--amber) 55%, var(--border));background:color-mix(in srgb, var(--amber) 10%, var(--panel));min-height:42px;color:var(--amber);align-items:center;gap:10px;padding:7px 14px;display:flex}.hq-peer-rehydrate-notice{border-bottom-color:color-mix(in srgb, var(--primary) 60%, var(--border));background:color-mix(in srgb, var(--primary) 12%, var(--panel));color:var(--primary)}.hq-update-notice>div,.hq-peer-rehydrate-notice>div{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.hq-update-notice strong,.hq-peer-rehydrate-notice strong{color:var(--bright);white-space:nowrap;font-size:11px}.hq-update-notice span,.hq-peer-rehydrate-notice span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.hq-update-notice code{color:var(--bright);font-family:var(--font-mono)}.hq-update-notice button,.hq-peer-rehydrate-notice button{border:1px solid color-mix(in srgb, var(--amber) 55%, var(--border));background:var(--inset);color:var(--bright);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;flex:none;align-items:center;gap:6px;padding:5px 8px;font-size:9px;font-weight:700;display:inline-flex}.hq-peer-rehydrate-notice button{border-color:color-mix(in srgb, var(--primary) 60%, var(--border))}.hq-update-notice button:hover{border-color:var(--amber)}.hq-peer-rehydrate-notice button:hover{border-color:var(--primary)}.hq-sidebar-toggle{display:inline-grid}.hq-view-icon{border:1px solid var(--border);background:var(--bg2);width:34px;height:34px;color:var(--primary);flex:0 0 34px;place-items:center;display:grid}.hq-view-identity{gap:0;min-width:190px;display:grid}.hq-view-identity>span{color:var(--primary);letter-spacing:.14em;text-transform:uppercase;font-size:8px;font-weight:700}.hq-view-identity h1{color:var(--bright);margin:0;font-size:15px;font-weight:650;line-height:1.2}.hq-view-identity p{max-width:350px;color:var(--dim);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:10px;overflow:hidden}.hq-top-metrics{border:1px solid var(--border);align-items:stretch;gap:0;min-width:0;margin-left:auto;display:flex}.hq-top-metric{border-right:1px solid var(--border);background:var(--inset);grid-template-columns:auto 1fr;align-content:center;gap:0 5px;min-width:88px;padding:6px 10px;display:grid}.hq-top-metric:last-child{border-right:0}.hq-top-metric svg{color:var(--dim);grid-row:1/span 2;align-self:center}.hq-top-metric>span{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:8px;font-weight:700;line-height:1.1}.hq-top-metric>strong{color:var(--bright);font-family:var(--font-mono);font-size:13px;line-height:1.2}.hq-top-metric[data-accent=true]>strong{color:var(--green)}.hq-connection-pill{height:30px;color:var(--red);font-family:var(--font-mono);text-transform:uppercase;background:#e2535314;border:1px solid #e2535373;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:9px;font-weight:600;display:inline-flex}.hq-connection-pill[data-live=true]{color:var(--green);background:#22c77a14;border-color:#22c77a66}.hq-stat{text-align:right;background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:72px;padding:4px 12px}.hq-stat-num{color:var(--bright);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:600;line-height:1.15;display:block}.hq-stat.green .hq-stat-num{color:var(--green)}.hq-stat-label{color:var(--dim);letter-spacing:.04em;font-size:10px;display:block}.hq-main{scrollbar-width:thin;scrollbar-color:var(--border2) transparent;flex:1;min-height:0;padding:16px;overflow:auto}.hq-main>div{max-width:1480px;margin:0 auto}.hq-empty{color:var(--muted);text-align:center;border:1px dashed var(--border);border-radius:var(--radius);background:var(--panel);padding:48px 20px;font-size:13px}.hq-view-loading,.hq-view-error{border:1px solid var(--border);background:var(--panel);min-height:150px;color:var(--muted);justify-content:center;align-items:center;gap:10px;display:flex}.hq-view-loading svg{color:var(--primary);animation:1.2s ease-in-out infinite hq-loader-pulse}@keyframes hq-loader-pulse{50%{opacity:.35}}.hq-view-error{color:var(--red);border-color:#e2535373;justify-content:flex-start;padding:18px}.hq-view-error>div{flex:1;min-width:0}.hq-view-error strong{color:var(--bright)}.hq-view-error p{color:var(--muted);word-break:break-word;margin:3px 0 0}.hq-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:14px 16px}.hq-card-title{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin:14px 0 8px;font-size:11px;font-weight:600}.hq-card-title:first-child{margin-top:0}.hq-row{align-items:center;gap:10px;min-width:0;padding:5px 0;display:flex}.hq-row-click{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;padding:5px 8px}.hq-row-click:hover{background:var(--panel2)}.hq-row-time{color:var(--dim);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:11px}.hq-row-subtle{color:var(--dim);font-size:11.5px}.hq-row-detail{color:var(--text);word-break:break-word;margin-top:4px;font-size:12.5px}.hq-row-error{color:var(--red);word-break:break-word;font-size:12px}.hq-pill{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);color:var(--muted);white-space:nowrap;align-items:center;gap:4px;padding:1px 8px;font-size:11px;font-weight:500;line-height:1.6;display:inline-flex}.hq-pill.running,.hq-pill.active,.hq-pill.streaming,.hq-pill.streamed{color:var(--green);background:#2ac0751f;border-color:#2ac07573}.hq-pill.idle{color:var(--muted)}.hq-pill.error,.hq-pill.failed,.hq-pill.stopped,.hq-pill.critical,.hq-pill.high{color:var(--red);background:#df49491f;border-color:#df494973}.hq-pill.warn,.hq-pill.medium,.hq-pill.waiting_user{color:var(--amber);background:#f9af2f1a;border-color:#f9af2f73}.hq-pill.info,.hq-pill.low{color:var(--primary);background:#fe2e5f1a;border-color:#fe2e5f66}.hq-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:12px}.hq-cost-amount{color:var(--green);font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:12px;font-weight:600}.hq-kind-icon{flex-shrink:0}.hq-kind-icon.active{color:var(--green)}.hq-kind-icon.info{color:var(--primary)}.hq-kind-icon.warn{color:var(--amber)}.hq-kind-icon.error{color:var(--red)}.hq-kind-icon.idle{color:var(--dim)}.hq-lane-head{border-bottom:1px solid var(--border);margin-bottom:4px;padding-bottom:8px}.hq-diffstat{font-size:11.5px}.hq-btn{border-radius:var(--radius-sm);background:var(--primary);color:#131316;cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;padding:7px 14px;font-size:12.5px;font-weight:600;display:inline-flex}.hq-btn:hover{filter:brightness(1.08)}.hq-btn:disabled{opacity:.45;cursor:default}.hq-btn.danger{background:var(--red);color:var(--bright)}.hq-btn.secondary{background:var(--inset);color:var(--text);border-color:var(--border)}.hq-btn.secondary:hover{border-color:var(--border2);color:var(--bright);filter:none}.hq-btn.secondary.hq-btn-selected{border-color:var(--primary);color:var(--primary)}.hq-security-page{gap:14px;max-width:980px;display:grid}.hq-security-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.hq-security-card{border:1px solid var(--border);background:var(--panel);grid-template-columns:auto 1fr;gap:1px 9px;min-width:0;padding:12px 14px;display:grid}.hq-security-card>svg{color:var(--primary);grid-row:1/span 2;align-self:center}.hq-security-card span,.hq-security-panel-head span{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:700}.hq-security-card strong{color:var(--bright);font-family:var(--font-mono);font-size:12px}.hq-security-copy{width:max-content;color:var(--primary);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:2px 0 0;font-size:9px;font-weight:700;display:inline-flex}.hq-security-copy:hover{color:var(--bright)}.hq-security-panel{border:1px solid var(--border);background:var(--panel);padding:18px}.hq-security-panel.danger-zone{border-color:color-mix(in srgb, var(--red) 36%, var(--border))}.hq-security-panel-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:14px;display:flex}.hq-security-panel-head>div{min-width:0}.hq-security-panel-head>svg{color:var(--primary);flex:none}.hq-security-panel.danger-zone .hq-security-panel-head>svg{color:var(--red)}.hq-security-panel-head h2{color:var(--bright);margin:2px 0 3px;font-size:17px}.hq-security-panel-head p{max-width:700px;color:var(--muted);margin:0;font-size:11px}.hq-security-message{border:1px solid color-mix(in srgb, var(--green) 45%, var(--border));background:color-mix(in srgb, var(--green) 8%, var(--inset));color:var(--green);margin-top:14px;padding:8px 10px;font-size:11px}.hq-security-message[data-tone=error]{border-color:color-mix(in srgb, var(--red) 50%, var(--border));background:color-mix(in srgb, var(--red) 8%, var(--inset));color:var(--red)}.hq-security-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:620px;padding-top:16px;display:grid}.hq-security-form label{min-width:0;color:var(--text);gap:5px;font-size:11px;font-weight:600;display:grid}.hq-security-form label:first-child:nth-last-child(4){grid-column:1/-1}.hq-security-form input{border:1px solid var(--border);background:var(--inset);width:100%;color:var(--bright);font-family:var(--font-mono);padding:8px 10px}.hq-security-form input:focus{border-color:var(--primary)}.hq-security-form small{color:var(--dim);font-size:9px;font-weight:400}.hq-security-form small[data-error]{color:var(--red)}.hq-security-actions{grid-column:1/-1;align-items:center;gap:8px;padding-top:4px;display:flex}.hq-security-actions.split{justify-content:space-between;padding-top:16px}.hq-security-confirm-remove{justify-content:flex-end;align-items:center;gap:8px;display:flex}.hq-security-confirm-remove>span{color:var(--red);font-size:10px;font-weight:650}.hq-input,.hq-textarea,.hq-select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);width:100%;color:var(--text);padding:7px 10px;font-size:12.5px}.hq-input::placeholder,.hq-textarea::placeholder{color:var(--dim)}.hq-textarea{resize:vertical;min-height:78px;line-height:1.5;font-family:var(--font-mono);font-size:12px}.hq-label{color:var(--muted);margin-bottom:5px;font-size:11.5px;font-weight:500;display:block}.hq-grid{gap:12px;display:grid}.hq-tree-node{cursor:pointer;border-radius:var(--radius-sm);border-left:2px solid #0000;align-items:center;gap:8px;min-width:0;padding:5px 9px;display:flex}.hq-tree-node:hover{background:var(--panel2)}.hq-tree-node.sel{border-left-color:var(--primary);background:#fe2e5f14}.hq-spark{color:var(--primary);font-family:var(--font-mono);letter-spacing:-1px;font-size:12px}.hq-flow-shell{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);height:calc(100vh - 150px);min-height:520px;box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.hq-flow-toolbar{border-bottom:1px solid var(--border);background:var(--panel2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.hq-flow-scope{border-top:1px solid var(--border);flex-wrap:wrap;flex:100%;align-items:center;gap:6px;padding-top:9px;display:flex}.hq-flow-scope-buttons,.hq-flow-layout{align-items:center;gap:6px;display:inline-flex}.hq-flow-layout .hq-btn{align-items:center;gap:5px;display:inline-flex}.hq-flow-scope .hq-btn.active{border-color:var(--primary);color:var(--bright);background:#fe2e5f1f}.hq-flow-scope-select{width:min(360px,42vw);margin-left:4px}.hq-flow-toolbar-spacer{flex:20px}.hq-flow-search{min-width:min(100%,270px);color:var(--dim);align-items:center;gap:6px;display:flex}.hq-flow-search .hq-input{width:min(340px,38vw)}.hq-flow-stats,.hq-flow-legend{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hq-flow-canvas{background:radial-gradient(circle at 20% 10%, #fe2e5f14, transparent 28%), linear-gradient(180deg, var(--inset), var(--bg));flex:1;min-height:0;position:relative}.hq-flow-arrange{z-index:5;align-items:center;gap:6px;font-size:12px;display:inline-flex;position:absolute;top:10px;right:10px}.hq-fleet-list{border-collapse:collapse;background:var(--inset);flex:1;width:100%;min-height:0;display:block;overflow:auto}.hq-fleet-list>thead,.hq-fleet-list>tbody{display:block}.hq-fleet-list th,.hq-fleet-list td{text-align:left;min-width:0;padding:0}.hq-fleet-list-header,.hq-fleet-list-row{grid-template-columns:minmax(260px,1.2fr) minmax(160px,1fr) 105px minmax(240px,1.3fr);align-items:center;gap:10px;min-width:900px;display:grid}.hq-fleet-list-header{z-index:2;border-bottom:1px solid var(--border2);background:var(--panel2);color:var(--dim);letter-spacing:.08em;text-transform:uppercase;padding:7px 12px;font-size:10px;font-weight:700;position:sticky;top:0}.hq-fleet-list-row{border:0;border-bottom:1px solid var(--border);background:var(--panel);width:100%;color:var(--text);font:inherit;text-align:left;padding:5px 12px}.hq-fleet-list-row.machine{background:var(--panel2)}.hq-fleet-list-row.project{background:color-mix(in srgb, var(--panel2) 58%, var(--panel))}.hq-fleet-list-row.clickable{cursor:pointer}.hq-fleet-list-row.clickable:hover,.hq-fleet-list-row.clickable:focus-visible{box-shadow:inset 3px 0 0 var(--primary);background:#fe2e5f17;outline:none}.hq-fleet-list-member{align-items:center;gap:8px;min-width:0;display:flex}.hq-fleet-list-member>span:last-child{min-width:0;display:grid}.hq-fleet-list-member strong,.hq-fleet-list-member small,.hq-fleet-list-context{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hq-fleet-list-member strong{font-size:11.5px}.hq-fleet-list-member small{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.hq-fleet-list-context{color:var(--muted);font-family:var(--font-mono);font-size:10px}.hq-fleet-list-chips{align-items:center;gap:5px;min-width:0;display:flex;overflow:hidden}.hq-fleet-list-empty{flex:1}@media (width<=760px){.hq-flow-search,.hq-flow-search .hq-input{width:100%}.hq-flow-toolbar-spacer{display:none}}.hq-fleet-drawer-layer{z-index:6;pointer-events:none;position:absolute;inset:0}.hq-fleet-drawer-scrim{background:0 0;border:0;width:100%;height:100%;padding:0;display:none;position:absolute;inset:0}.hq-fleet-drawer{pointer-events:auto;background:var(--panel);border-left:1px solid var(--border);flex-direction:column;width:min(440px,88%);animation:.16s ease-out hq-drawer-in;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-18px 0 44px #06060973}@keyframes hq-drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.hq-fleet-drawer-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.hq-fleet-drawer-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.hq-fleet-drawer-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:inline-flex}.hq-fleet-drawer-actions .hq-btn{align-items:center;gap:5px;padding:4px 8px;font-size:11.5px;display:inline-flex}.hq-fleet-drawer-stats{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;display:flex}.hq-fleet-drawer-body{border:0;border-radius:0;flex:1;min-height:0}@media (width<=900px){.hq-fleet-drawer-scrim{pointer-events:auto;background:#00000080;display:block}.hq-fleet-drawer{width:min(440px,100% - 24px)}}.hq-flow-node{background:var(--flow-node-bg);border:1px solid var(--border2);border-radius:var(--radius);width:220px;min-height:104px;box-shadow:var(--flow-node-shadow);color:var(--text);padding:11px 12px}.hq-flow-node.machine{border-color:var(--flow-machine-border)}.hq-flow-node.project{border-color:var(--flow-project-border)}.hq-flow-node.terminal{border-color:var(--flow-terminal-border)}.hq-flow-node.agent{border-color:var(--flow-agent-border)}.hq-flow-node.clickable{cursor:pointer}.hq-flow-node.clickable:hover,.react-flow__node.selected .hq-flow-node,.hq-flow-node.selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--flow-selected-ring), 0 10px 28px var(--flow-selected-shadow)}.hq-flow-title{min-width:0;color:var(--bright);align-items:center;gap:8px;font-weight:700;display:flex}.hq-flow-label,.hq-flow-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hq-flow-sub{color:var(--muted);font-family:var(--font-mono);margin-top:5px;font-size:11px}.hq-flow-chips{flex-wrap:wrap;gap:5px;margin-top:10px;display:flex}.hq-flow-chips .hq-pill{text-overflow:ellipsis;max-width:92px;overflow:hidden}.hq-flow-dot{border-radius:var(--radius-sm);background:var(--dim);flex-shrink:0;width:9px;height:9px;transform:rotate(45deg)}.hq-flow-dot.active{background:var(--green)}.hq-flow-dot.warn{background:var(--amber)}.hq-flow-dot.error{background:var(--red)}.hq-flow-handle{border:1px solid var(--primary);background:var(--inset);width:8px;height:8px}.hq-flow-edge .react-flow__edge-path{stroke:var(--flow-edge);stroke-width:1.6px}.hq-flow-edge.live .react-flow__edge-path{stroke:var(--flow-edge-live);stroke-width:2px}.hq-flow-canvas .react-flow__minimap.hq-flow-minimap{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm)}.hq-flow-canvas .react-flow__controls.hq-flow-controls{border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);overflow:hidden}.hq-flow-canvas .react-flow__controls.hq-flow-controls button{background:var(--panel);border-bottom-color:var(--border);color:var(--text)}.hq-flow-legend{border-top:1px solid var(--border);color:var(--muted);background:var(--panel2);padding:8px 12px;font-size:11px}.hq-flow-legend span{align-items:center;gap:4px;display:inline-flex}.hq-fleet-node-icon{color:var(--muted);flex-shrink:0}.hq-fleet-agent-dot{color:var(--dim)}.hq-fleet-agent-dot.running,.hq-fleet-agent-dot.streaming{color:var(--green)}.hq-fleet-agent-dot.waiting_user{color:var(--amber)}.hq-fleet-agent-dot.error{color:var(--red)}.hq-kpi-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:14px;display:grid}.hq-kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.hq-kpi-value{color:var(--bright);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600;line-height:1.15;display:block}.hq-kpi.hero .hq-kpi-value{font-size:34px}.hq-kpi-value.accent-cost{color:var(--green)}.hq-kpi-label{color:var(--dim);letter-spacing:.05em;text-transform:uppercase;margin-top:3px;font-size:11px;display:block}.hq-share-track{background:var(--inset);border-radius:var(--radius-sm);height:5px;margin-top:6px;overflow:hidden}.hq-share-fill{border-radius:var(--radius-sm);background:var(--chart-1);height:100%}.hq-filter-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px;display:flex}.hq-filter-chip{cursor:pointer}.hq-filter-chip.selected{border-color:var(--primary);color:var(--primary);background:#fe2e5f1a}.hq-chart{position:relative}.hq-chart-svg{width:100%;height:auto;display:block}.hq-chart-grid{stroke:var(--border);stroke-width:1px;stroke-dasharray:2 4}.hq-chart-axis{stroke:var(--border2);stroke-width:1px}.hq-chart-ytick,.hq-chart-xtick{fill:var(--dim);font-family:var(--font-mono);font-size:10px}.hq-chart-tooltip{background:var(--panel2);border:1px solid var(--border2);border-radius:var(--radius-sm);box-shadow:var(--shadow);pointer-events:none;align-items:center;gap:8px;padding:4px 10px;font-size:12px;display:inline-flex;position:absolute;top:4px;right:8px}.hq-chart-tooltip-swatch{border-radius:var(--radius-sm);width:8px;height:8px}.hq-chart-tooltip-value{color:var(--bright);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.hq-chart-tooltip-time{color:var(--dim);font-variant-numeric:tabular-nums}.hq-chart-empty{color:var(--dim);text-align:center;padding:24px;font-size:12px}.hq-toggle{width:24px;height:24px;color:var(--muted);background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:inline-flex}.hq-toggle:hover{color:var(--bright);border-color:var(--border2)}.hq-msg-list{border-top:1px solid var(--border);flex-direction:column;gap:7px;padding-top:10px;display:flex}.hq-msg{background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 11px}.hq-msg:hover{border-color:var(--border2)}.hq-msg.done{opacity:.6}.hq-msg-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hq-msg-head>.hq-msg-toggle{margin-left:4px}.hq-msg-icon{display:none}.hq-msg-subject{min-width:120px;color:var(--bright);text-overflow:ellipsis;white-space:nowrap;flex:180px;font-weight:600;overflow:hidden}.hq-msg-route,.hq-msg-time,.hq-msg-id{color:var(--dim);font-size:11px}.hq-msg-flag{font-size:11px;font-weight:600}.hq-msg-flag.open{color:var(--amber)}.hq-msg-flag.done{color:var(--green)}.hq-msg-body{background:var(--panel2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:9px;padding:10px 12px}.hq-msg-pre{color:var(--text);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:0 0;margin:0;padding:0;font-size:12px;line-height:1.5}.hq-msg-sublabel{color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin:10px 0 4px;font-size:10.5px;font-weight:600}.hq-msg-meta{border-top:1px dashed var(--border);color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:10px;padding-top:8px;font-size:11px;display:flex}.hq-msg-meta strong{color:var(--text);margin-right:4px;font-weight:600}.hq-mailbox-modebar{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.hq-mailbox-filterbar{gap:12px;display:grid}.hq-filter-section{gap:6px;display:grid}.hq-filter-chip-row{flex-wrap:wrap;gap:6px;display:flex}.hq-check{color:var(--muted);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:inline-flex}.hq-check input{accent-color:var(--primary)}.hq-live-feed{border-top:0;padding-top:0}.hq-control-target{gap:10px;display:grid}.hq-control-meta{color:var(--muted);flex-wrap:wrap;gap:10px;font-size:11.5px;display:flex}.hq-control-meta strong{color:var(--text);margin-right:4px}.hq-control-steps{border:0;flex-wrap:wrap;gap:6px;margin:0 0 10px;padding:0;display:flex}.hq-step{border:1px solid var(--border);background:var(--inset);color:var(--dim);border-radius:var(--radius-sm);padding:3px 9px;font-size:11px;font-weight:500}.hq-step.active{color:var(--primary);background:#fe2e5f14;border-color:#fe2e5f80}.hq-card-danger{border-color:#df494980}.hq-control-warning{color:var(--amber);border-radius:var(--radius-sm);background:#f9af2f0f;border:1px dashed #f9af2f80;margin-top:10px;padding:8px 10px;font-size:12px}.hq-command-preview,.hq-command-audit{gap:10px;display:grid}.hq-audit-list{gap:8px;display:grid}.hq-audit-row{border:1px solid var(--border);background:var(--inset);border-radius:var(--radius-sm);gap:7px;padding:9px 11px;display:grid}.hq-audit-row.other-client{opacity:.55}.hq-audit-row.just-dispatched{border-color:#fe2e5fb3;animation:1.6s ease-out hq-audit-flash}@keyframes hq-audit-flash{0%{background:#fe2e5f38}to{background:var(--inset)}}.hq-control-grid{grid-template-columns:minmax(0,1fr) minmax(280px,380px);align-items:start;gap:18px;display:grid}@media (width<=1100px){.hq-control-grid{grid-template-columns:minmax(0,1fr)}}.hq-control-types{flex-wrap:wrap;gap:8px;display:flex}.hq-control-type{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);color:var(--muted);cursor:pointer;align-items:center;gap:6px;padding:6px 11px;font-size:12.5px;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.hq-control-type:hover{color:var(--text);border-color:#fe2e5f80}.hq-control-type.selected{color:var(--text);background:#fe2e5f1f;border-color:#fe2e5fcc}.hq-control-type.danger{border-color:#dd3c3c59}.hq-control-type.danger:hover,.hq-control-type.danger.selected{color:var(--text);background:#dd3c3c1a;border-color:#dd3c3cbf}.hq-control-typedesc{color:var(--muted);align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.hq-audit-main,.hq-audit-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hq-audit-meta{color:var(--muted);font-size:11px}.hq-audit-meta strong{color:var(--text);margin-right:4px}.hq-audit-message{color:var(--text);border-top:1px dashed var(--border);white-space:pre-wrap;word-break:break-word;padding-top:7px;font-size:12px}.hq-cockpit-summary,.hq-cockpit-section{gap:10px;display:grid}.hq-cockpit-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;display:grid}.hq-cockpit-actions{border-top:1px dashed var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding-top:10px;display:flex}.hq-cockpit-actions-copy{gap:4px;min-width:180px;display:grid}.hq-cockpit-actions-buttons{flex-wrap:wrap;flex:360px;gap:8px;display:flex}.hq-cockpit-alert-list,.hq-cockpit-cost-list{gap:8px;display:grid}.hq-cockpit-alert-row{border:1px solid var(--border);background:var(--inset);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.hq-cockpit-alert-msg{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:220px;min-width:0;overflow:hidden}.hq-cockpit-cost-row{border:1px solid var(--border);background:var(--inset);border-radius:var(--radius-sm);gap:5px;padding:9px 11px;display:grid}.hq-cockpit-cost-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hq-cockpit-cost-name{font-weight:600}.hq-cockpit-cost-bar{background:var(--bg);border-radius:var(--radius-sm);height:5px;position:relative;overflow:hidden}.hq-cockpit-cost-bar>span{border-radius:var(--radius-sm);background:var(--chart-1);height:100%;display:block}.hq-cockpit-cost-meta{color:var(--muted);flex-wrap:wrap;gap:8px;font-size:11px;display:flex}.hq-console-shell{grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:14px;height:calc(100vh - 132px);min-height:320px;display:grid}.hq-workbench[data-update-available=true] .hq-console-shell{height:calc(100vh - 174px)}@media (width<=900px){.hq-console-shell{grid-template-columns:minmax(0,1fr)}.hq-fleetnav{max-height:220px}}.hq-console{flex-direction:column;min-width:0;min-height:0;display:flex}.hq-fleetnav{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg2);padding:6px;display:block;overflow-y:auto}.hq-nav-row{text-align:left;border-radius:var(--radius-sm);width:100%;color:var(--text);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;min-width:0;padding:4px 6px;font-size:12.5px;display:flex}.hq-nav-row:hover{background:var(--inset)}.hq-nav-row:disabled{cursor:wait;opacity:.58}.hq-nav-row:disabled:hover{background:0 0}.hq-nav-row.machine{font-weight:600}.hq-nav-row.project{color:var(--muted)}.hq-nav-row.client.selected,.hq-nav-row.agent.selected{color:var(--text);background:#fe2e5f29}.hq-nav-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hq-nav-count{color:var(--muted);background:var(--inset);border-radius:var(--radius-sm);flex-shrink:0;padding:0 6px;font-size:10px;line-height:15px}.hq-nav-caret{color:var(--muted);flex-shrink:0;transition:transform .12s}.hq-nav-caret.open{transform:rotate(90deg)}.hq-nav-caretbtn{cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;width:16px;padding:0;display:inline-flex}.hq-nav-project,.hq-nav-client{padding-left:12px}.hq-nav-clientrow{align-items:center;display:flex}.hq-nav-client .hq-nav-row.agent{padding-left:28px}.hq-nav-dot{border-radius:var(--radius-sm);background:var(--muted);flex-shrink:0;width:7px;height:7px;transform:rotate(45deg)}.hq-nav-dot.active{background:#2ac075;box-shadow:0 0 5px #2ac075b3}.hq-nav-dot.warn{background:#f9af2f}.hq-nav-dot.error{background:#dd3c3c}.hq-chat-header{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;margin-bottom:10px;display:flex}.hq-chat-header-icon{color:var(--primary)}.hq-chat-picker{flex:0 auto;width:auto;min-width:260px;max-width:46vw}.hq-chat-sid{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:46vw;font-size:11px;overflow:hidden}.hq-chat-counts{align-items:center;gap:6px;margin-left:auto;display:flex}.hq-chat-fullbtn{padding:3px 10px;font-size:11px}.hq-chat-scroll{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg2);flex:1;min-height:0;position:relative;overflow:hidden}.hq-chat-vlist{scrollbar-width:thin;scrollbar-color:var(--border2) transparent;height:100%;padding:10px 14px}.hq-chat-rowpad{padding:5px 0}.hq-chat-jump{border-radius:var(--radius-sm);border:1px solid var(--border2);background:var(--panel2);width:34px;height:34px;color:var(--bright);cursor:pointer;box-shadow:var(--shadow);justify-content:center;align-items:center;display:inline-flex;position:absolute;bottom:14px;right:18px}.hq-chat-jump:hover{border-color:var(--primary);color:var(--primary)}.hq-console-composer{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);flex:none;gap:7px;margin-top:9px;padding:9px;display:grid}.hq-console-composer-head,.hq-console-compose-row,.hq-console-compose-foot{align-items:center;gap:7px;display:flex}.hq-console-composer-head{color:var(--muted);justify-content:space-between;font-size:11px}.hq-console-composer-head>span:first-child{align-items:center;gap:6px;min-width:0;display:inline-flex}.hq-console-composer-head strong{color:var(--bright);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hq-console-delivery{flex:0 0 132px;width:132px}.hq-console-subject{flex:1;min-width:0}.hq-console-interrupt{flex:none}.hq-console-message-row{align-items:stretch}.hq-textarea.hq-console-message{resize:vertical;min-height:54px;max-height:150px;font-family:var(--font-sans)}.hq-console-send{justify-content:center;min-width:86px}.hq-console-compose-foot{min-width:0;color:var(--dim);justify-content:space-between;font-size:10px}.hq-console-status{text-align:right;text-overflow:ellipsis;white-space:nowrap;max-width:62%;overflow:hidden}.hq-console-status.ok{color:var(--green)}.hq-console-status.error{color:var(--red)}.hq-confirm-layer{z-index:100;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.hq-confirm-scrim{cursor:default;background:#0a0a09ad;border:0;position:absolute;inset:0}.hq-confirm-dialog{border:1px solid var(--red);background:var(--panel);grid-template-columns:auto minmax(0,1fr);gap:12px;width:min(460px,100vw - 32px);padding:18px;display:grid;position:relative;box-shadow:0 22px 70px #00000073}.hq-confirm-danger{color:var(--red)}.hq-confirm-dialog h2{color:var(--bright);margin:0;font-size:16px}.hq-confirm-dialog p{color:var(--muted);margin:4px 0 0;font-size:12px}.hq-confirm-check,.hq-confirm-actions{grid-column:1/-1}.hq-confirm-check{border:1px solid var(--border);background:var(--inset);color:var(--text);cursor:pointer;align-items:center;gap:8px;padding:9px 10px;font-size:12px;display:flex}.hq-confirm-check input{accent-color:var(--red)}.hq-confirm-actions{justify-content:flex-end;gap:8px;display:flex}.hq-chat-turn{flex-direction:column;display:flex}.hq-chat-turn.user{align-items:flex-end}.hq-chat-turn.assistant,.hq-chat-turn.error{align-items:flex-start}.hq-chat-bubble{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);max-width:min(88%,940px);padding:9px 13px}.hq-chat-bubble.user{background:#fe2e5f12;border-color:#fe2e5f59}.hq-chat-bubble.assistant{background:var(--panel)}.hq-chat-bubble.error{background:#df49490f;border-color:#df494980}.hq-chat-role{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:5px;font-size:10.5px;font-weight:600;display:flex}.hq-chat-role.err{color:var(--red)}.hq-chat-clock{color:var(--dim);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:400}.hq-chat-prose{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.55}.hq-chat-turn.system{align-items:center}.hq-command-turn .hq-pill{letter-spacing:0;text-transform:lowercase}.hq-command-turn .hq-chat-role .hq-pill{margin-left:2px}.hq-chat-system-line{color:var(--dim);border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--panel);align-items:center;gap:10px;padding:2px 12px;font-size:11.5px;display:inline-flex}.hq-command-turn .hq-chat-system-line{border-color:#fe2e5f47}.hq-md{color:var(--text);word-break:break-word;font-size:13px;line-height:1.6}.hq-md>:first-child{margin-top:0}.hq-md>:last-child{margin-bottom:0}.hq-md p{margin:.5em 0}.hq-md h1,.hq-md h2,.hq-md h3,.hq-md h4{color:var(--bright);margin:.9em 0 .4em;line-height:1.3}.hq-md h1{font-size:1.25em}.hq-md h2{font-size:1.15em}.hq-md h3{font-size:1.05em}.hq-md h4{font-size:1em}.hq-md ul,.hq-md ol{margin:.4em 0;padding-left:1.4em}.hq-md li{margin:.15em 0}.hq-md li>ul,.hq-md li>ol{margin:.1em 0}.hq-md blockquote{border-left:3px solid var(--border2);color:var(--muted);margin:.5em 0;padding:2px 12px}.hq-md hr{border:0;border-top:1px solid var(--border);margin:.9em 0}.hq-md code{font-family:var(--font-mono);background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.05em .35em;font-size:.92em}.hq-md pre code{background:0 0;border:0;padding:0;font-size:12px}.hq-md-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);margin:.6em 0;overflow-x:auto}.hq-md table{border-collapse:collapse;width:100%;font-size:12.5px}.hq-md th,.hq-md td{border-bottom:1px solid var(--border);text-align:left;padding:5px 10px}.hq-md th{color:var(--muted);background:var(--inset);font-weight:600}.hq-md tr:last-child td{border-bottom:0}.hq-md-code{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);margin:.6em 0;overflow:hidden}.hq-md-code-bar{border-bottom:1px solid var(--border);background:var(--panel2);align-items:center;gap:10px;padding:3px 10px;display:flex}.hq-md-code-lang{color:var(--primary);font-family:var(--font-mono);font-size:10.5px;font-weight:600}.hq-md-code-meta{color:var(--dim);margin-right:auto;font-size:10.5px}.hq-md-code pre{max-height:40rem;font-family:var(--font-mono);scrollbar-width:thin;scrollbar-color:var(--border2) transparent;margin:0;padding:10px 12px;font-size:12px;line-height:1.55;overflow-x:auto}.hq-chat-turn.thinking{align-items:stretch}.hq-thinking-head{width:100%;color:var(--muted);text-align:left;cursor:pointer;border:1px dashed var(--border);border-radius:var(--radius-sm);background:0 0;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:flex}.hq-thinking-head:hover{border-color:var(--border2);color:var(--text)}.hq-thinking-icon{color:var(--purple);flex-shrink:0}.hq-thinking-label{letter-spacing:.08em;text-transform:uppercase;flex-shrink:0;font-size:10.5px;font-weight:600}.hq-thinking-peek{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-style:italic;overflow:hidden}.hq-thinking-body{border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--muted);border-top:0;padding:8px 12px;font-style:italic}.hq-chat-turn.tool{align-items:stretch}.hq-tool-head{width:100%;color:var(--text);text-align:left;cursor:pointer;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:6px 10px;display:flex}.hq-chat-turn.tool.err .hq-tool-head{border-color:#df494980}.hq-tool-head:hover{border-color:var(--border2);background:var(--panel2)}.hq-tool-caret{color:var(--dim);flex-shrink:0;display:inline-flex}.hq-tool-icon{flex-shrink:0;display:inline-flex}.hq-tool-dot{border-radius:var(--radius-sm);background:var(--green);flex-shrink:0;width:7px;height:7px;transform:rotate(45deg)}.hq-tool-dot.err{background:var(--red)}.hq-tool-name{color:var(--bright);flex-shrink:0;font-size:12.5px;font-weight:600}.hq-tool-summary{color:var(--muted);font-size:12px;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.hq-tool-dur{color:var(--dim);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:11px}.hq-tool-status{flex-shrink:0;align-items:center;display:inline-flex}.hq-status-ok{color:var(--green)}.hq-status-err{color:var(--red)}.hq-tool-running-dot{border-radius:var(--radius-sm);background:var(--amber);width:8px;height:8px;animation:1.2s ease-in-out infinite hq-pulse;transform:rotate(45deg)}@keyframes hq-pulse{0%,to{opacity:1}50%{opacity:.6}}.hq-tool-body{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);border-top:0;flex-direction:column;gap:10px;padding:10px 12px;display:flex}.hq-tool-section{flex-direction:column;gap:4px;display:flex}.hq-tool-section-label{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:600}.hq-tool-section-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.hq-tool-pre{background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);max-height:360px;color:var(--text);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;scrollbar-width:thin;scrollbar-color:var(--border2) transparent;margin:0;padding:8px 10px;font-size:11.5px;line-height:1.5;overflow:auto}.hq-tool-pre.term{border-left:2px solid var(--green)}.hq-tool-pre.err{color:var(--red);border-color:#df494980}.hq-tool-result-note{color:var(--muted);font-size:11.5px}.hq-tool-empty{color:var(--dim);font-size:11.5px;font-style:italic}.hq-result{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);overflow:hidden}.hq-result.bare{background:0 0;border:0;border-radius:0}.hq-result.err-frame{border-color:#df494980}.hq-result-pre{max-height:24rem;color:var(--text);font-family:var(--font-mono);scrollbar-width:thin;scrollbar-color:var(--border2) transparent;margin:0;padding:8px 10px;font-size:11.5px;line-height:1.5;overflow:auto}.hq-result-pre.wrap{white-space:pre-wrap;word-break:break-word}.hq-result-pre.nowrap{white-space:pre}.hq-result-pre.err{color:var(--red)}.hq-result-toggle{border:0;border-top:1px solid var(--border);background:var(--panel2);width:100%;color:var(--muted);cursor:pointer;justify-content:center;align-items:center;gap:5px;padding:4px 8px;font-size:11px;display:flex}.hq-result-toggle:hover{color:var(--bright)}.hq-result-jsonbar{border:0;border-bottom:1px solid var(--border);background:var(--panel2);width:100%;color:var(--muted);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:4px 10px;font-size:11px;display:flex}.hq-result-jsonbar:hover{color:var(--bright)}.hq-result-jsonbar-left{font-family:var(--font-mono);align-items:center;gap:5px;display:inline-flex}.hq-result-bash{flex-direction:column;display:flex}.hq-result-exit{border-top:1px solid var(--border);background:var(--panel2);color:var(--muted);font-size:11px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;align-items:center;gap:12px;padding:4px 10px;display:flex}.hq-result-exit.bad{color:var(--red)}.hq-diff{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);overflow:hidden}.hq-diff-stat{border-bottom:1px solid var(--border);background:var(--panel2);font-variant-numeric:tabular-nums;gap:10px;padding:4px 10px;font-size:11px;font-weight:600;display:flex}.hq-diff-add-count{color:var(--green)}.hq-diff-del-count{color:var(--red)}.hq-diff-body{max-height:360px;font-family:var(--font-mono);scrollbar-width:thin;scrollbar-color:var(--border2) transparent;margin:0;padding:6px 0;font-size:11.5px;line-height:1.5;overflow:auto}.hq-diff-line{white-space:pre-wrap;word-break:break-word;padding:0 10px 0 0;display:block}.hq-diff-line.add{color:#90dfb8;background:#2ac07521}.hq-diff-line.del{color:#f19d9d;background:#df49491f}.hq-diff-line.ctx{color:var(--muted)}.hq-diff-line.meta{color:var(--primary);opacity:.8}.hq-diff-gutter{text-align:center;width:20px;color:var(--dim);user-select:none;display:inline-block}.hq-diff-path{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:60%;margin-right:auto;font-weight:500;overflow:hidden}.hq-todo-list{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);margin:0;padding:0;list-style:none;overflow:hidden}.hq-todo{border-bottom:1px solid var(--border);align-items:baseline;gap:8px;padding:5px 10px;font-size:12.5px;display:flex}.hq-todo:last-child{border-bottom:0}.hq-todo-mark{text-align:center;flex-shrink:0;width:14px;font-weight:700}.hq-todo-text{color:var(--text);word-break:break-word}.hq-todo.completed .hq-todo-mark{color:var(--green)}.hq-todo.completed .hq-todo-text{color:var(--dim);text-decoration:line-through}.hq-todo.in_progress .hq-todo-mark{color:var(--amber)}.hq-todo.in_progress .hq-todo-text{color:var(--bright);font-weight:600}.hq-todo.pending .hq-todo-mark{color:var(--dim)}.hq-copy-btn{border:1px solid var(--border);background:var(--inset);color:var(--muted);border-radius:var(--radius-sm);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:600;line-height:1.5;display:inline-flex}.hq-copy-btn:hover{color:var(--bright);border-color:var(--border2)}@media (width<=1280px){.hq-view-identity p{display:none}.hq-top-metric{min-width:76px;padding-inline:8px}}@media (width<=1080px){.hq-top-metric:first-child,.hq-top-metric:nth-child(2){display:none}}@media (width<=900px){.hq-app{grid-template-columns:minmax(0,1fr)}.hq-workbench{grid-column:1}.hq-secondary-nav,.hq-secondary-nav[data-open=false]{z-index:50;border-right:1px solid var(--border);visibility:hidden;pointer-events:none;width:264px;transition:transform .15s,visibility 0s linear .15s;position:fixed;inset:0 auto 0 0;transform:translate(-105%);box-shadow:12px 0 30px #00000057}.hq-secondary-nav[data-open=true]{visibility:visible;pointer-events:auto;transition-delay:0s;transform:translate(0)}.hq-secondary-header,.hq-secondary-scroll,.hq-secondary-footer{width:264px}.hq-sidebar-scrim{z-index:40;opacity:0;pointer-events:none;background:#00000085;border:0;transition:opacity .15s;display:block;position:fixed;inset:0}.hq-sidebar-scrim[data-open=true]{opacity:1;pointer-events:auto}.hq-header{min-height:62px;padding:7px 9px}.hq-main{padding:10px}.hq-main .hq-grid{grid-template-columns:1fr}.hq-row{flex-wrap:wrap}.hq-chat-picker{flex:100%;min-width:0;max-width:100%}.hq-console{height:calc(100vh - 168px)}.hq-security-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=620px){.hq-security-summary,.hq-security-form{grid-template-columns:1fr}.hq-security-form label:first-child:nth-last-child(4){grid-column:auto}.hq-security-panel{padding:14px}.hq-security-actions.split,.hq-security-confirm-remove{flex-direction:column;align-items:stretch}.hq-update-notice{align-items:flex-start;padding:7px 9px}.hq-update-notice>div{gap:1px;display:grid}.hq-update-notice span{white-space:normal}.hq-update-notice button{padding-inline:6px}.hq-update-notice button:not(:focus-visible){gap:0;font-size:0}.hq-view-icon,.hq-top-metrics{display:none}.hq-view-identity{min-width:0}.hq-view-identity h1{font-size:14px}.hq-connection-pill{margin-left:auto}.hq-main{padding:8px}.hq-console-compose-row{flex-wrap:wrap}.hq-console-delivery{flex-basis:120px;width:120px}.hq-console-interrupt{margin-left:auto}.hq-console-message{flex-basis:100%}.hq-console-send{margin-left:auto}}@media (prefers-reduced-motion:reduce){.hq-fleet-drawer,.hq-audit-row.just-dispatched,.hq-alert-live,.hq-tool-running-dot,.hq-view-loading svg{animation:none}.hq-control-type,.hq-toggle,.hq-nav-caret,.hq-secondary-nav,.hq-sidebar-scrim{transition:none}}.hq-composer-bar{align-items:center;gap:8px;margin:8px 0;display:flex}.hq-composer{flex-direction:column;gap:8px;margin:8px 0;display:flex}.hq-composer-hint{color:var(--dim);font-size:12px}.hq-composer-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.hq-composer-field{flex-direction:column;gap:4px;display:flex}.hq-composer-field>span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.hq-composer-body{resize:vertical;font-family:var(--font-sans)}.hq-composer-status{text-overflow:ellipsis;white-space:nowrap;max-width:420px;font-size:12px;overflow:hidden}.hq-composer-status.ok{color:var(--green)}.hq-composer-status.err{color:var(--red)}.hq-msg-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding-top:8px;display:flex}.hq-msg-action-error{color:var(--red);text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-size:12px;overflow:hidden}.hq-token-gate{background:var(--bg);justify-content:center;align-items:center;height:100%;display:flex}.hq-token-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:min(440px,100vw - 32px);box-shadow:var(--shadow);flex-direction:column;gap:12px;padding:28px 28px 22px;display:flex}.hq-token-title{color:var(--bright);font-size:16px;font-weight:600}.hq-token-text{color:var(--muted);margin:0}.hq-token-input{background:var(--inset);border:1px solid var(--border2);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-mono);padding:8px 10px}.hq-token-submit{background:var(--primary-dim);border:1px solid var(--primary);border-radius:var(--radius-sm);color:var(--bright);cursor:pointer;padding:8px 10px}.hq-token-submit:disabled{opacity:.5;cursor:default}.hq-token-hint{color:var(--dim);margin:4px 0 0;font-size:12px}.hq-token-hint code{font-family:var(--font-mono);color:var(--muted)}.hq-token-tabs{border-bottom:1px solid var(--border);gap:8px;margin-bottom:4px;display:flex}.hq-token-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:8px 4px;font-size:13px}.hq-token-tab.active{color:var(--bright);border-bottom-color:var(--primary)}.hq-token-error{color:var(--red);margin:0;font-size:13px}.hq-token-label{color:var(--muted);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.hq-security-panel-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.hq-security-panel-head>div:first-child{flex:1;min-width:0}.hq-security-panel-head h2{color:var(--bright);margin:0;font-size:15px;font-weight:600}.hq-security-panel-head p{color:var(--muted);margin:4px 0 0;font-size:13px;line-height:1.4}.hq-security-message{border:1px solid var(--border);border-radius:var(--radius-sm);margin:8px 0;padding:8px 10px;font-size:13px}.hq-security-message[data-tone=ok]{color:var(--bright);border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, transparent)}.hq-security-message[data-tone=error]{color:var(--red);border-color:var(--red);background:color-mix(in srgb, var(--red) 8%, transparent)}.hq-security-hint{color:var(--dim);margin:8px 0;font-size:13px}.hq-security-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hq-totp-qr{background:var(--bright);border:1px solid var(--border);justify-content:center;width:fit-content;margin:0 auto 8px;padding:12px;display:flex}.hq-totp-qr img{width:200px;height:200px;display:block}.hq-totp-secret{background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;margin:8px 0;padding:8px 10px;display:flex}.hq-totp-secret span{color:var(--muted);white-space:nowrap;font-size:12px}.hq-totp-secret code{font-family:var(--font-mono);color:var(--bright);word-break:break-all;font-size:13px}.hq-totp-uri-hint{margin:0 0 8px}.hq-totp-uri-hint small{color:var(--dim);font-size:12px}.hq-sessions-list{flex-direction:column;gap:6px;display:flex}.hq-session-row{background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.hq-session-info{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.hq-session-id{font-family:var(--font-mono);color:var(--bright);font-size:12px;font-weight:600}.hq-session-kind{text-transform:uppercase;letter-spacing:.05em;color:var(--accent2);font-size:11px;font-weight:600}.hq-session-age,.hq-session-idle{color:var(--dim);font-size:12px}.hq-password-input-wrapper{align-items:center;display:flex;position:relative}.hq-password-input-wrapper input{width:100%;padding-right:32px}.hq-password-toggle{cursor:pointer;color:var(--muted);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.hq-password-toggle:hover{color:var(--bright)}.hq-btn.small{padding:4px 8px;font-size:12px}.hq-security-recovery-info{background:var(--inset);border:1px solid var(--border);border-left:3px solid var(--accent2);border-radius:var(--radius-sm);margin:8px 0 12px;padding:10px 12px;font-size:13px;line-height:1.5}.hq-security-recovery-info strong{color:var(--bright);margin-bottom:4px;display:block}.hq-security-recovery-info p{color:var(--muted);margin:4px 0}.hq-security-recovery-info ol{color:var(--muted);margin:6px 0;padding-left:20px}.hq-security-recovery-info li{margin:3px 0}.hq-security-recovery-info code{font-family:var(--font-mono);color:var(--accent2);font-size:12px}.hq-audit-list{flex-direction:column;gap:4px;max-height:300px;display:flex;overflow-y:auto}.hq-audit-row{background:var(--inset);border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 10px;display:flex}.hq-audit-kind{color:var(--bright);font-size:12px;font-weight:600}.hq-audit-scope{text-transform:uppercase;letter-spacing:.05em;color:var(--accent2);font-size:11px}.hq-audit-token{font-family:var(--font-mono);color:var(--muted);font-size:11px}.hq-audit-actor{color:var(--dim);font-size:11px}.hq-audit-time{color:var(--dim);margin-left:auto;font-size:11px}.hq-password-strength{align-items:center;gap:8px;margin:-4px 0 4px;display:flex}.hq-password-strength-bar{background:var(--inset);border:1px solid var(--border);flex:1;height:4px;overflow:hidden}.hq-password-strength-fill{height:100%;transition:width .2s}.hq-password-strength[data-level=weak] .hq-password-strength-fill{background:var(--red)}.hq-password-strength[data-level=fair] .hq-password-strength-fill{background:var(--accent2)}.hq-password-strength[data-level=good] .hq-password-strength-fill{background:var(--primary)}.hq-password-strength[data-level=strong] .hq-password-strength-fill{background:var(--bright)}.hq-password-strength-label{text-transform:uppercase;letter-spacing:.05em;text-align:right;min-width:48px;font-size:11px;font-weight:600}.hq-password-strength[data-level=weak] .hq-password-strength-label{color:var(--red)}.hq-password-strength[data-level=fair] .hq-password-strength-label{color:var(--accent2)}.hq-password-strength[data-level=good] .hq-password-strength-label{color:var(--primary)}.hq-password-strength[data-level=strong] .hq-password-strength-label{color:var(--bright)}.hq-card-severity{border-left:3px solid var(--border)}.hq-card-severity.warn{border-left-color:var(--amber)}.hq-card-severity.error,.hq-card-severity.critical{border-left-color:var(--red)}.hq-card-severity.info{border-left-color:var(--primary)}.hq-stat-block{background:var(--panel2);border:1px solid var(--border);flex-direction:column;gap:2px;min-width:0;padding:10px 14px;display:flex}.hq-stat-block-label{text-transform:uppercase;letter-spacing:.04em;color:var(--dim);font-size:10.5px}.hq-stat-block-value{font-variant-numeric:tabular-nums;color:var(--bright);font-size:18px;font-weight:700}.hq-stat-block-value.accent-cost{color:var(--chart-1)}.hq-stat-block-value.accent-tokens{color:var(--chart-2)}.hq-stat-block-value.accent-tools{color:var(--chart-3)}.hq-stat-block-sub{color:var(--dim);font-variant-numeric:tabular-nums;font-size:11px}.hq-stat-row{flex-wrap:wrap;gap:10px;display:flex}.hq-text-dim{color:var(--dim)}.hq-text-muted{color:var(--muted)}.hq-text-bright{color:var(--bright);font-weight:700}.hq-ml-auto{margin-left:auto}.hq-mt-8{margin-top:8px}.hq-mt-12{margin-top:12px}.hq-row-baseline{align-items:baseline}.hq-text-center{text-align:center}.hq-card-title.hq-title-inline,.hq-title-inline{margin:0}.hq-empty.hq-pad-sm{padding:8px;font-size:12px}.hq-empty.hq-pad-md{padding:16px;font-size:12px}.hq-cockpit-empty{padding:14px;font-size:12px}.hq-cockpit-section-title{color:var(--bright);margin:0;font-size:13px;font-weight:700}.hq-cockpit-cost-amount{color:var(--green)}.hq-screen{gap:16px;display:grid}.hq-screen-hero{border:1px solid var(--border);background:linear-gradient(135deg, #fe2e5f1f, transparent 46%), linear-gradient(315deg, #fd9f021a, transparent 40%), var(--panel);grid-template-columns:minmax(0,1fr) minmax(260px,430px);align-items:stretch;gap:18px;padding:18px;display:grid;position:relative;overflow:hidden}.hq-screen-hero:before,.hq-screen-hero:after{content:"";pointer-events:none;position:absolute}.hq-screen-hero:before{border:1px solid color-mix(in srgb, var(--border2) 42%, transparent);inset:7px}.hq-screen-hero:after{border-top:1px solid var(--border2);border-right:1px solid var(--border2);width:42px;height:42px;top:15px;right:18px}.hq-screen-hero>*{z-index:1;position:relative}.hq-screen-hero h2,.hq-section-head h3{color:var(--bright);margin:0;line-height:1.12}.hq-screen-hero h2{letter-spacing:-.04em;margin-top:4px;font-size:clamp(24px,4vw,42px)}.hq-screen-hero p{max-width:720px;color:var(--muted);margin:8px 0 0}.hq-section-kicker{color:var(--primary);letter-spacing:.16em;text-transform:uppercase;font-size:9px;font-weight:800}.hq-section-kicker:before{content:"◆";color:var(--accent2);margin-right:6px}.hq-hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr));align-content:stretch;gap:8px;display:grid}.hq-hero-metric{border:1px solid var(--border);background:color-mix(in srgb, var(--inset) 78%, transparent);gap:2px;min-width:0;padding:10px 12px;display:grid}.hq-hero-metric strong{color:var(--bright);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:22px;overflow:hidden}.hq-hero-metric span{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:700}.hq-hero-metric[data-tone=ok] strong{color:var(--green)}.hq-hero-metric[data-tone=warn] strong{color:var(--amber)}.hq-hero-metric[data-tone=error] strong{color:var(--red)}.hq-section-head{justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:10px;display:flex}.hq-section-head.compact{margin-bottom:8px}.hq-section-head h3{margin-top:2px;font-size:16px}.hq-priority-section{gap:0;display:grid}.hq-two-column{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.hq-empty-ornate{position:relative;overflow:hidden}.hq-empty-ornate:before{content:"◆";color:var(--accent2);letter-spacing:.18em;margin-bottom:8px;font-size:16px;display:block}.hq-alert-priority-grid,.hq-cost-rank-list,.hq-worktree-lanes,.hq-decision-timeline{gap:10px;display:grid}.hq-alert-card{background:linear-gradient(90deg, color-mix(in srgb, var(--primary) 8%, transparent), transparent 28%), var(--panel)}.hq-alert-feed-card,.hq-alert-history-card,.hq-breakdown-card,.hq-cost-session-card{gap:7px;display:grid}.hq-alert-feed-row,.hq-alert-history-row,.hq-breakdown-row,.hq-cost-session-row{border-bottom:1px dashed var(--border);min-width:0;padding-bottom:7px}.hq-alert-feed-row:last-child,.hq-alert-history-row:last-child,.hq-breakdown-row:last-child,.hq-cost-session-row:last-child{border-bottom:0;padding-bottom:0}.hq-decision-timeline{padding-left:18px;position:relative}.hq-decision-timeline:before{content:"";border-left:1px solid var(--border2);position:absolute;top:0;bottom:0;left:7px}.hq-decision-card{grid-template-columns:28px minmax(0,1fr);gap:10px;display:grid;position:relative}.hq-decision-card.warn{border-left:3px solid var(--amber)}.hq-decision-card.error{border-left:3px solid var(--red)}.hq-decision-card.active{border-left:3px solid var(--green)}.hq-decision-marker{border:1px solid var(--border);background:var(--inset);place-items:center;width:28px;height:28px;display:grid;transform:rotate(45deg)}.hq-decision-marker>svg{transform:rotate(-45deg)}.hq-decision-body{gap:6px;min-width:0;display:grid}.hq-worktree-lane{gap:10px;display:grid}.hq-worktree-event-list{border-left:1px solid var(--border);gap:7px;padding-left:12px;display:grid}.hq-worktree-event-line{position:relative}.hq-worktree-event-line:before{content:"";border:1px solid var(--border2);background:var(--panel);width:8px;height:8px;position:absolute;left:-17px;transform:rotate(45deg)}.hq-cost-project-card{grid-template-columns:52px minmax(0,1fr);align-items:stretch;gap:12px;display:grid}.hq-cost-rank{border:1px solid var(--border2);background:var(--inset);color:var(--primary);font-family:var(--font-mono);place-items:center;font-size:15px;font-weight:700;display:grid}.hq-cost-project-main{gap:7px;min-width:0;display:grid}.hq-chart-gallery{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:14px;display:grid}.hq-chart-card.primary{grid-row:span 2}.hq-chart-card{min-width:0}.hq-trends-filter-row{border:1px solid var(--border);background:var(--panel);padding:8px 10px}@media (width<=980px){.hq-screen-hero,.hq-two-column,.hq-chart-gallery{grid-template-columns:minmax(0,1fr)}.hq-chart-card.primary{grid-row:auto}}@media (width<=620px){.hq-hero-metrics,.hq-cost-project-card,.hq-decision-card{grid-template-columns:minmax(0,1fr)}.hq-section-head{flex-direction:column;align-items:flex-start}.hq-decision-timeline{padding-left:0}.hq-decision-timeline:before{display:none}}.hq-kanban-view{flex-direction:column;gap:12px;min-width:0;display:flex}.hq-kanban-toolbar{border:1px solid var(--border);background:var(--panel);align-items:flex-end;gap:10px;min-width:0;padding:10px;display:flex}.hq-kanban-toolbar label{gap:4px;min-width:210px;display:grid}.hq-kanban-toolbar label>span{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:700}.hq-kanban-toolbar .hq-select{width:100%}.hq-kanban-sync{min-width:0;color:var(--dim);font-family:var(--font-mono);align-items:center;gap:10px;margin-left:auto;font-size:10px;display:flex}.hq-kanban-sync button,.hq-kanban-error button{border:1px solid var(--border2);background:var(--inset);color:var(--bright);cursor:pointer;align-items:center;gap:6px;padding:6px 9px;display:inline-flex}.hq-kanban-sync button:hover,.hq-kanban-error button:hover{border-color:var(--primary)}.hq-kanban-sync button:disabled{opacity:.55;cursor:default}.hq-kanban-sync .is-spinning{animation:.9s linear infinite hq-kanban-spin}@keyframes hq-kanban-spin{to{transform:rotate(360deg)}}.hq-kanban-error{color:var(--red);background:#e2535314;border:1px solid #e2535373;align-items:center;gap:8px;padding:9px 10px;display:flex}.hq-kanban-error span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hq-kanban-summary{border:1px solid var(--border);background:var(--panel);padding:14px 16px}.hq-kanban-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.hq-kanban-heading>div:first-child{min-width:0}.hq-kanban-heading>div:first-child>span{color:var(--primary);letter-spacing:.12em;text-transform:uppercase;font-size:9px;font-weight:700}.hq-kanban-heading h2{color:var(--bright);margin:2px 0 0;font-size:20px}.hq-kanban-heading p{max-width:760px;color:var(--muted);margin:5px 0 0}.hq-kanban-board-meta{color:var(--dim);flex:none;align-items:center;gap:8px;font-size:10px;display:flex}.hq-kanban-tags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.hq-kanban-stats{border:1px solid var(--border);grid-template-columns:repeat(5,minmax(80px,1fr));margin-top:14px;display:grid}.hq-kanban-stat{border-right:1px solid var(--border);background:var(--inset);align-items:baseline;gap:7px;min-width:0;padding:7px 10px;display:flex}.hq-kanban-stat:last-child{border-right:0}.hq-kanban-stat strong{color:var(--bright);font-family:var(--font-mono);font-size:17px}.hq-kanban-stat span{color:var(--dim);letter-spacing:.06em;text-transform:uppercase;font-size:9px}.hq-kanban-stat[data-tone=active] strong{color:var(--amber)}.hq-kanban-stat[data-tone=blocked] strong{color:var(--red)}.hq-kanban-stat[data-tone=done] strong{color:var(--green)}.hq-kanban-board{grid-template-columns:repeat(var(--hq-kanban-columns), minmax(270px, 1fr));scrollbar-width:thin;scrollbar-color:var(--border2) transparent;align-items:start;gap:10px;min-width:0;padding-bottom:8px;display:grid;overflow-x:auto}.hq-kanban-column{border:1px solid var(--border);background:var(--panel);min-width:270px}.hq-kanban-column[data-over-limit=true]{border-color:color-mix(in srgb, var(--red) 55%, var(--border))}.hq-kanban-column>header{border-top:2px solid var(--border2);border-bottom:1px solid var(--border);background:var(--panel2);justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:8px 10px;display:flex}.hq-kanban-column>header>div{min-width:0;display:grid}.hq-kanban-column>header strong{color:var(--bright);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.hq-kanban-column>header span{color:var(--dim);font-family:var(--font-mono);font-size:9px}.hq-kanban-column>header .hq-kanban-column-count{border:1px solid var(--border);background:var(--inset);min-width:24px;height:24px;color:var(--bright);place-items:center;display:grid}.hq-kanban-column-body{flex-direction:column;gap:8px;min-height:84px;padding:8px;display:flex}.hq-kanban-column-empty{color:var(--dim);text-align:center;padding:24px 8px;font-size:11px}.hq-kanban-task{border:1px solid var(--border);border-left:3px solid var(--border2);background:var(--inset);cursor:pointer;padding:9px 10px;position:relative}.hq-kanban-task[data-priority=critical],.hq-kanban-task[data-priority=high]{border-left-color:var(--red)}.hq-kanban-task[data-priority=medium]{border-left-color:var(--amber)}.hq-kanban-task[data-priority=low]{border-left-color:var(--green)}.hq-kanban-task-topline{justify-content:space-between;align-items:center;gap:8px;display:flex}.hq-kanban-task .hq-pill{text-transform:uppercase;padding:0 6px;font-size:9px}.hq-kanban-task .hq-pill.completed{color:var(--green);background:#2ac0751f;border-color:#2ac07573}.hq-kanban-task .hq-pill.in_progress,.hq-kanban-task .hq-pill.review,.hq-kanban-task .hq-pill.ready{color:var(--amber);background:#fd9f021a;border-color:#fd9f0273}.hq-kanban-task .hq-pill.blocked,.hq-kanban-task .hq-pill.failed{color:var(--red);background:#df49491f;border-color:#df494973}.hq-kanban-priority{color:var(--dim);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:8px}.hq-kanban-priority.critical,.hq-kanban-priority.high{color:var(--red)}.hq-kanban-priority.medium{color:var(--amber)}.hq-kanban-priority.low{color:var(--green)}.hq-kanban-task h3{color:var(--bright);font-family:var(--font-sans);margin:8px 0 0;font-size:12.5px;line-height:1.35}.hq-kanban-task p{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:5px 0 0;font-size:10.5px;display:-webkit-box;overflow:hidden}.hq-kanban-task-labels{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.hq-kanban-task-labels span{border:1px solid var(--border);color:var(--muted);padding:1px 5px;font-size:8.5px}.hq-kanban-task footer{border-top:1px solid var(--border);min-height:18px;color:var(--dim);font-family:var(--font-mono);align-items:center;gap:9px;margin-top:9px;padding-top:7px;font-size:9px;display:flex}.hq-kanban-task footer span{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;min-width:0;display:inline-flex;overflow:hidden}.hq-kanban-task footer .is-done{color:var(--green);margin-left:auto}@media (width<=760px){.hq-kanban-toolbar{flex-direction:column;align-items:stretch}.hq-kanban-toolbar label{min-width:0}.hq-kanban-sync{justify-content:space-between;margin-left:0}.hq-kanban-heading{flex-direction:column}.hq-kanban-board-meta{flex-wrap:wrap}.hq-kanban-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.hq-kanban-stat{border-bottom:1px solid var(--border)}}.hq-toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:.5rem;max-width:28rem;display:flex;position:fixed;bottom:1rem;right:1rem}.hq-toast{border-radius:var(--radius-md,.25rem);border:1px solid var(--border);background:var(--panel2);box-shadow:var(--shadow,0 1px 3px #0003);pointer-events:auto;align-items:center;gap:.5rem;padding:.625rem .75rem;animation:.2s ease-out hq-toast-in;display:flex}.hq-toast-icon{flex-shrink:0;align-items:center;line-height:0;display:flex}.hq-toast--error{border-left:3px solid var(--red)}.hq-toast--error .hq-toast-icon{color:var(--red)}.hq-toast--warning{border-left:3px solid var(--amber)}.hq-toast--warning .hq-toast-icon{color:var(--amber)}.hq-toast--info{border-left:3px solid var(--primary)}.hq-toast--info .hq-toast-icon{color:var(--primary)}.hq-toast--success{border-left:3px solid var(--green)}.hq-toast--success .hq-toast-icon{color:var(--green)}.hq-toast-message{color:var(--text);flex:1;font-size:.8125rem;line-height:1.35}.hq-toast-action{color:var(--primary);cursor:pointer;font-size:.75rem}.hq-toast-close{border-radius:var(--radius-sm);width:1.25rem;height:1.25rem;color:var(--muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.hq-toast-close:hover{color:var(--text);background:var(--inset)}@keyframes hq-toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}.hq-connection-pill{border-radius:var(--radius-full);white-space:nowrap;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--border);align-items:center;gap:.375rem;padding:.25rem .625rem;font-size:.6875rem;font-weight:600;line-height:1;transition:background .2s,border-color .2s;display:inline-flex}.hq-connection-pill[data-live=true]{background:color-mix(in srgb, var(--green) 12%, transparent);border-color:color-mix(in srgb, var(--green) 30%, transparent);color:var(--green)}.hq-connection-pill[data-live=false]{background:color-mix(in srgb, var(--amber) 12%, transparent);border-color:color-mix(in srgb, var(--amber) 30%, transparent);color:var(--amber);animation:2s ease-in-out infinite hq-pulse}.hq-link-state[data-live=false] .hq-link-dot{animation:2s ease-in-out infinite hq-pulse}.hq-sidebar-footer-badge{color:var(--muted);align-items:center;gap:.25rem;padding:0 .375rem;font-size:.6875rem;display:inline-flex}.hq-kanban-task[data-selected=true]{outline:2px solid var(--primary,#dd1342);outline-offset:-1px;cursor:pointer}.hq-kanban-task[role=button]{cursor:pointer}.hq-kanban-main{flex:1;gap:0;min-height:0;display:flex}.hq-kanban-board{flex:1;min-width:0}.hq-kanban-inspector{border-left:1px solid var(--border);background:var(--inset);flex-direction:column;gap:12px;width:340px;min-width:340px;padding:16px;display:flex;overflow-y:auto}.hq-kanban-inspector-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.hq-kanban-inspector-header>div:first-child{align-items:center;gap:6px;display:flex}.hq-inspector-close{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.hq-inspector-close:hover{color:var(--text)}.hq-kanban-inspector-title{margin:0;font-size:16px;font-weight:700;line-height:1.3}.hq-kanban-inspector-id{opacity:.5;font-size:10px}.hq-kanban-inspector-section{flex-direction:column;gap:6px;display:flex}.hq-kanban-inspector-section h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);align-items:center;gap:4px;margin:0;font-size:11px;display:flex}.hq-kanban-inspector-description{white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}.hq-kanban-inspector-details{flex-direction:column;gap:8px;margin:0;display:flex}.hq-kanban-inspector-row{align-items:center;gap:8px;font-size:12px;display:flex}.hq-kanban-inspector-row dt{color:var(--muted);align-items:center;gap:4px;min-width:80px;display:flex}.hq-kanban-inspector-row dd{flex:1;margin:0}.hq-kanban-inspector-labels{flex-wrap:wrap;gap:4px;display:flex}.hq-kanban-inspector-deps{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.hq-kanban-inspector-deps li{background:var(--surface,#ffffff08);align-items:center;gap:6px;padding:4px 6px;font-size:12px;display:flex}.hq-kanban-inspector-deps li .hq-mono{opacity:.6;min-width:64px;font-size:10px}.hq-kanban-inspector-alert{border-left:3px solid var(--red,#dc2828);background:#df20201a;align-items:center;gap:6px;padding:8px 10px;font-size:12px;display:flex}.hq-kanban-inspector-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:12px}.hq-kanban-queue-health{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:6px 12px;font-size:11px;display:flex}.hq-kanban-qh-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.hq-kanban-qh-pill{align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-flex}.hq-kanban-qh-pill.ready{color:#25a766}.hq-kanban-qh-pill.running{color:#30abe8}.hq-kanban-qh-pill.review{color:#ad5cd6}.hq-kanban-qh-pill.blocked{color:#f2b90d}.hq-kanban-qh-pill.failed{color:#df3a3a}.hq-kanban-qh-pill.healthy{color:#25a766}.hljs{color:var(--text);background:0 0}.hljs-comment,.hljs-quote{color:color-mix(in oklab, var(--muted) 60%, transparent);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-type,.hljs-literal{color:#f28dbc}.hljs-string,.hljs-attr,.hljs-template-tag,.hljs-template-variable{color:#64d488}.hljs-number,.hljs-symbol,.hljs-bullet{color:var(--primary)}.hljs-function .hljs-keyword,.hljs-title.function_,.hljs-title.class_,.hljs-title.class_.inherited__{color:#6cb6ff}.hljs-variable,.hljs-params{color:var(--text)}.hljs-tag,.hljs-name{color:#f47a95}.hljs-attribute,.hljs-property{color:#ffb055}.hljs-regexp{color:#49d3c5}.hljs-punctuation,.hljs-operator{color:color-mix(in oklab, var(--muted) 80%, var(--text))}.hljs-meta,.hljs-doctag,.hljs-section{color:var(--muted)}.hljs-addition{color:#64d488;background:#27915c1f}.hljs-deletion{color:#ff7a7a;background:#d322221f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:600}.hljs-link{color:var(--primary);text-decoration:underline}:root[data-hq-theme=light] .hljs-keyword,:root[data-hq-theme=light] .hljs-selector-tag,:root[data-hq-theme=light] .hljs-type,:root[data-hq-theme=light] .hljs-literal{color:#9f2862}:root[data-hq-theme=light] .hljs-string,:root[data-hq-theme=light] .hljs-attr,:root[data-hq-theme=light] .hljs-template-tag,:root[data-hq-theme=light] .hljs-template-variable,:root[data-hq-theme=light] .hljs-addition{color:#146b39}:root[data-hq-theme=light] .hljs-function .hljs-keyword,:root[data-hq-theme=light] .hljs-title.function_,:root[data-hq-theme=light] .hljs-title.class_,:root[data-hq-theme=light] .hljs-title.class_.inherited__{color:#175aa3}:root[data-hq-theme=light] .hljs-tag,:root[data-hq-theme=light] .hljs-name,:root[data-hq-theme=light] .hljs-deletion{color:#b32947}:root[data-hq-theme=light] .hljs-attribute,:root[data-hq-theme=light] .hljs-property{color:#8b4b00}:root[data-hq-theme=light] .hljs-regexp{color:#08746c}
|