@hivemagnus/magnus-ui 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/app/apps/dashboard/.next/BUILD_ID +1 -1
  2. package/dist/app/apps/dashboard/.next/build-manifest.json +3 -3
  3. package/dist/app/apps/dashboard/.next/prerender-manifest.json +3 -3
  4. package/dist/app/apps/dashboard/.next/required-server-files.json +2 -1
  5. package/dist/app/apps/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -1
  6. package/dist/app/apps/dashboard/.next/server/app/_global-error.html +1 -1
  7. package/dist/app/apps/dashboard/.next/server/app/_global-error.rsc +1 -1
  8. package/dist/app/apps/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/dist/app/apps/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/dist/app/apps/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/dist/app/apps/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/dist/app/apps/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/dist/app/apps/dashboard/.next/server/app/anomalies/[anomalyId]/page.js.nft.json +1 -1
  14. package/dist/app/apps/dashboard/.next/server/app/anomalies/[anomalyId]/page_client-reference-manifest.js +1 -1
  15. package/dist/app/apps/dashboard/.next/server/app/anomalies/page.js.nft.json +1 -1
  16. package/dist/app/apps/dashboard/.next/server/app/anomalies/page_client-reference-manifest.js +1 -1
  17. package/dist/app/apps/dashboard/.next/server/app/anomalies/remediation/page.js.nft.json +1 -1
  18. package/dist/app/apps/dashboard/.next/server/app/anomalies/remediation/page_client-reference-manifest.js +1 -1
  19. package/dist/app/apps/dashboard/.next/server/app/api-docs/page.js.nft.json +1 -1
  20. package/dist/app/apps/dashboard/.next/server/app/api-docs/page_client-reference-manifest.js +1 -1
  21. package/dist/app/apps/dashboard/.next/server/app/application-operations/page.js.nft.json +1 -1
  22. package/dist/app/apps/dashboard/.next/server/app/application-operations/page_client-reference-manifest.js +1 -1
  23. package/dist/app/apps/dashboard/.next/server/app/ardent/installations/page.js.nft.json +1 -1
  24. package/dist/app/apps/dashboard/.next/server/app/ardent/installations/page_client-reference-manifest.js +1 -1
  25. package/dist/app/apps/dashboard/.next/server/app/ardent/page.js.nft.json +1 -1
  26. package/dist/app/apps/dashboard/.next/server/app/ardent/page_client-reference-manifest.js +1 -1
  27. package/dist/app/apps/dashboard/.next/server/app/ardent/profiles/[id]/page.js.nft.json +1 -1
  28. package/dist/app/apps/dashboard/.next/server/app/ardent/profiles/[id]/page_client-reference-manifest.js +1 -1
  29. package/dist/app/apps/dashboard/.next/server/app/ardent/profiles/page.js.nft.json +1 -1
  30. package/dist/app/apps/dashboard/.next/server/app/ardent/profiles/page_client-reference-manifest.js +1 -1
  31. package/dist/app/apps/dashboard/.next/server/app/audit/page.js.nft.json +1 -1
  32. package/dist/app/apps/dashboard/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  33. package/dist/app/apps/dashboard/.next/server/app/codex/installations/page.js.nft.json +1 -1
  34. package/dist/app/apps/dashboard/.next/server/app/codex/installations/page_client-reference-manifest.js +1 -1
  35. package/dist/app/apps/dashboard/.next/server/app/codex/page.js.nft.json +1 -1
  36. package/dist/app/apps/dashboard/.next/server/app/codex/page_client-reference-manifest.js +1 -1
  37. package/dist/app/apps/dashboard/.next/server/app/commands/page.js.nft.json +1 -1
  38. package/dist/app/apps/dashboard/.next/server/app/commands/page_client-reference-manifest.js +1 -1
  39. package/dist/app/apps/dashboard/.next/server/app/cron/page/server-reference-manifest.json +1 -1
  40. package/dist/app/apps/dashboard/.next/server/app/cron/page.js.nft.json +1 -1
  41. package/dist/app/apps/dashboard/.next/server/app/cron/page_client-reference-manifest.js +1 -1
  42. package/dist/app/apps/dashboard/.next/server/app/files/page.js.nft.json +1 -1
  43. package/dist/app/apps/dashboard/.next/server/app/files/page_client-reference-manifest.js +1 -1
  44. package/dist/app/apps/dashboard/.next/server/app/fleet-map/page.js.nft.json +1 -1
  45. package/dist/app/apps/dashboard/.next/server/app/fleet-map/page_client-reference-manifest.js +1 -1
  46. package/dist/app/apps/dashboard/.next/server/app/fleet-readiness/page.js.nft.json +1 -1
  47. package/dist/app/apps/dashboard/.next/server/app/fleet-readiness/page_client-reference-manifest.js +1 -1
  48. package/dist/app/apps/dashboard/.next/server/app/fleet-timeline/page.js.nft.json +1 -1
  49. package/dist/app/apps/dashboard/.next/server/app/fleet-timeline/page_client-reference-manifest.js +1 -1
  50. package/dist/app/apps/dashboard/.next/server/app/governor/operations/page.js.nft.json +1 -1
  51. package/dist/app/apps/dashboard/.next/server/app/governor/operations/page_client-reference-manifest.js +1 -1
  52. package/dist/app/apps/dashboard/.next/server/app/governor/share/[token]/page.js.nft.json +1 -1
  53. package/dist/app/apps/dashboard/.next/server/app/governor/share/[token]/page_client-reference-manifest.js +1 -1
  54. package/dist/app/apps/dashboard/.next/server/app/hermes-drift/page.js.nft.json +1 -1
  55. package/dist/app/apps/dashboard/.next/server/app/hermes-drift/page_client-reference-manifest.js +1 -1
  56. package/dist/app/apps/dashboard/.next/server/app/hermes-security/page.js.nft.json +1 -1
  57. package/dist/app/apps/dashboard/.next/server/app/hermes-security/page_client-reference-manifest.js +1 -1
  58. package/dist/app/apps/dashboard/.next/server/app/incidents/page.js.nft.json +1 -1
  59. package/dist/app/apps/dashboard/.next/server/app/incidents/page_client-reference-manifest.js +1 -1
  60. package/dist/app/apps/dashboard/.next/server/app/library/page.js.nft.json +1 -1
  61. package/dist/app/apps/dashboard/.next/server/app/library/page_client-reference-manifest.js +1 -1
  62. package/dist/app/apps/dashboard/.next/server/app/login/page.js.nft.json +1 -1
  63. package/dist/app/apps/dashboard/.next/server/app/login/page_client-reference-manifest.js +1 -1
  64. package/dist/app/apps/dashboard/.next/server/app/logs/page.js.nft.json +1 -1
  65. package/dist/app/apps/dashboard/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  66. package/dist/app/apps/dashboard/.next/server/app/mission-control/page.js.nft.json +1 -1
  67. package/dist/app/apps/dashboard/.next/server/app/mission-control/page_client-reference-manifest.js +1 -1
  68. package/dist/app/apps/dashboard/.next/server/app/nodes/[nodeId]/page.js.nft.json +1 -1
  69. package/dist/app/apps/dashboard/.next/server/app/nodes/[nodeId]/page_client-reference-manifest.js +1 -1
  70. package/dist/app/apps/dashboard/.next/server/app/nodes/page.js.nft.json +1 -1
  71. package/dist/app/apps/dashboard/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  72. package/dist/app/apps/dashboard/.next/server/app/notifications/page.js.nft.json +1 -1
  73. package/dist/app/apps/dashboard/.next/server/app/notifications/page_client-reference-manifest.js +1 -1
  74. package/dist/app/apps/dashboard/.next/server/app/orchestra/installations/page.js.nft.json +1 -1
  75. package/dist/app/apps/dashboard/.next/server/app/orchestra/installations/page_client-reference-manifest.js +1 -1
  76. package/dist/app/apps/dashboard/.next/server/app/orchestra/page.js.nft.json +1 -1
  77. package/dist/app/apps/dashboard/.next/server/app/orchestra/page_client-reference-manifest.js +1 -1
  78. package/dist/app/apps/dashboard/.next/server/app/orchestra/profiles/page.js.nft.json +1 -1
  79. package/dist/app/apps/dashboard/.next/server/app/orchestra/profiles/page_client-reference-manifest.js +1 -1
  80. package/dist/app/apps/dashboard/.next/server/app/orchestra/web-gateway/page.js.nft.json +1 -1
  81. package/dist/app/apps/dashboard/.next/server/app/orchestra/web-gateway/page_client-reference-manifest.js +1 -1
  82. package/dist/app/apps/dashboard/.next/server/app/page.js.nft.json +1 -1
  83. package/dist/app/apps/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/dist/app/apps/dashboard/.next/server/app/retention/page.js.nft.json +1 -1
  85. package/dist/app/apps/dashboard/.next/server/app/retention/page_client-reference-manifest.js +1 -1
  86. package/dist/app/apps/dashboard/.next/server/app/roles/page.js.nft.json +1 -1
  87. package/dist/app/apps/dashboard/.next/server/app/roles/page_client-reference-manifest.js +1 -1
  88. package/dist/app/apps/dashboard/.next/server/app/rollouts/page.js.nft.json +1 -1
  89. package/dist/app/apps/dashboard/.next/server/app/rollouts/page_client-reference-manifest.js +1 -1
  90. package/dist/app/apps/dashboard/.next/server/app/security-fusion/cases/[caseId]/page.js.nft.json +1 -1
  91. package/dist/app/apps/dashboard/.next/server/app/security-fusion/cases/[caseId]/page_client-reference-manifest.js +1 -1
  92. package/dist/app/apps/dashboard/.next/server/app/security-fusion/cases/page.js.nft.json +1 -1
  93. package/dist/app/apps/dashboard/.next/server/app/security-fusion/cases/page_client-reference-manifest.js +1 -1
  94. package/dist/app/apps/dashboard/.next/server/app/security-fusion/entities/page.js.nft.json +1 -1
  95. package/dist/app/apps/dashboard/.next/server/app/security-fusion/entities/page_client-reference-manifest.js +1 -1
  96. package/dist/app/apps/dashboard/.next/server/app/security-fusion/events/page.js.nft.json +1 -1
  97. package/dist/app/apps/dashboard/.next/server/app/security-fusion/events/page_client-reference-manifest.js +1 -1
  98. package/dist/app/apps/dashboard/.next/server/app/security-fusion/evidence/page.js.nft.json +1 -1
  99. package/dist/app/apps/dashboard/.next/server/app/security-fusion/evidence/page_client-reference-manifest.js +1 -1
  100. package/dist/app/apps/dashboard/.next/server/app/security-fusion/page.js.nft.json +1 -1
  101. package/dist/app/apps/dashboard/.next/server/app/security-fusion/page_client-reference-manifest.js +1 -1
  102. package/dist/app/apps/dashboard/.next/server/app/security-fusion/policies/page.js.nft.json +1 -1
  103. package/dist/app/apps/dashboard/.next/server/app/security-fusion/policies/page_client-reference-manifest.js +1 -1
  104. package/dist/app/apps/dashboard/.next/server/app/security-fusion/sources/page.js.nft.json +1 -1
  105. package/dist/app/apps/dashboard/.next/server/app/security-fusion/sources/page_client-reference-manifest.js +1 -1
  106. package/dist/app/apps/dashboard/.next/server/app/skills/page/server-reference-manifest.json +1 -1
  107. package/dist/app/apps/dashboard/.next/server/app/skills/page.js.nft.json +1 -1
  108. package/dist/app/apps/dashboard/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  109. package/dist/app/apps/dashboard/.next/server/app/webhooks/[id]/page.js.nft.json +1 -1
  110. package/dist/app/apps/dashboard/.next/server/app/webhooks/[id]/page_client-reference-manifest.js +1 -1
  111. package/dist/app/apps/dashboard/.next/server/app/webhooks/new/page.js.nft.json +1 -1
  112. package/dist/app/apps/dashboard/.next/server/app/webhooks/new/page_client-reference-manifest.js +1 -1
  113. package/dist/app/apps/dashboard/.next/server/app/webhooks/page.js.nft.json +1 -1
  114. package/dist/app/apps/dashboard/.next/server/app/webhooks/page_client-reference-manifest.js +1 -1
  115. package/dist/app/apps/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0z6dblsnzx20l._.js +1 -1
  116. package/dist/app/apps/dashboard/.next/server/chunks/ssr/[root-of-the-server]__10vlrswrzvf4x._.js +1 -1
  117. package/dist/app/apps/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1cnr5ucuq-tas._.js +1 -1
  118. package/dist/app/apps/dashboard/.next/server/chunks/ssr/_033mw4lb6hg5v._.js +1 -1
  119. package/dist/app/apps/dashboard/.next/server/chunks/ssr/_1jqprfuo67y8g._.js +3 -0
  120. package/dist/app/apps/dashboard/.next/server/chunks/ssr/_1l5vqoevjbpvy._.js +3 -0
  121. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_0gs_s688kgg1i._.js +2 -2
  122. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_app_cron_page_tsx_1i3duyygc0_tg._.js +1 -1
  123. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_app_nodes_[nodeId]_page_tsx_1q7fqu18oklzc._.js +1 -1
  124. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_app_nodes_nodes-client_tsx_0pt4iarhpqbgn._.js +2 -2
  125. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_app_skills_page_tsx_0n5zp4xad38in._.js +1 -1
  126. package/dist/app/apps/dashboard/.next/server/chunks/ssr/apps_dashboard_src_lib_api-client_ts_0tho-kkk5ez7h._.js +1 -1
  127. package/dist/app/apps/dashboard/.next/server/chunks/ssr/{node_modules_@xterm_0igvl11h9lkh1._.js → node_modules_@xterm_0grwztx1w6mu2._.js} +1 -1
  128. package/dist/app/apps/dashboard/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_06-0f_j6s36av._.js +3 -0
  129. package/dist/app/apps/dashboard/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_1x5ty7vktr96t._.js +3 -0
  130. package/dist/app/apps/dashboard/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_refresh-ccw-dot_1bka5q1p8_fx4.js +1 -1
  131. package/dist/app/apps/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
  132. package/dist/app/apps/dashboard/.next/server/middleware-build-manifest.js +3 -3
  133. package/dist/app/apps/dashboard/.next/server/pages/500.html +1 -1
  134. package/dist/app/apps/dashboard/.next/server/preview-props.json +3 -3
  135. package/dist/app/apps/dashboard/.next/server/server-reference-manifest.js +1 -1
  136. package/dist/app/apps/dashboard/.next/server/server-reference-manifest.json +3 -3
  137. package/dist/app/apps/dashboard/.next/static/chunks/{0akep08qly94l.js → 0ipsr3u6u9pis.js} +1 -1
  138. package/dist/app/apps/dashboard/.next/static/chunks/{36hoxd3zs7thr.js → 0lqlei0iz2_b9.js} +2 -2
  139. package/dist/app/apps/dashboard/.next/static/chunks/148qc2-xospl5.js +1 -0
  140. package/dist/app/apps/dashboard/.next/static/chunks/{2zfns6xyegode.js → 1_lr8opl_iiee.js} +1 -1
  141. package/dist/app/apps/dashboard/.next/static/chunks/{07pjhg_to7dzv.js → 3hmz5ulftjx63.js} +1 -1
  142. package/dist/app/apps/dashboard/.next/static/chunks/{230jc2e9pxyrn.js → 3vb0dg3il6-rb.js} +2 -2
  143. package/dist/app/apps/dashboard/.next/static/chunks/3vkc9tvc198l6.js +15 -0
  144. package/dist/app/apps/dashboard/.next/static/chunks/3yd0r2ej3c-ik.css +2 -0
  145. package/dist/app/apps/dashboard/.next/static/chunks/41tadp-109c8d.js +1 -0
  146. package/dist/app/apps/dashboard/.next/static/chunks/{28q140y6b7-89.js → 42ywc2wwm-x4l.js} +1 -1
  147. package/dist/app/apps/dashboard/package.json +2 -2
  148. package/dist/app/apps/dashboard/server.js +1 -1
  149. package/package.json +2 -2
  150. package/dist/app/apps/dashboard/.next/server/chunks/ssr/_0pgm38c_ix0jk._.js +0 -3
  151. package/dist/app/apps/dashboard/.next/server/chunks/ssr/_0rq9vgq3rqnck._.js +0 -3
  152. package/dist/app/apps/dashboard/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_1lvt5_w9b2yub._.js +0 -3
  153. package/dist/app/apps/dashboard/.next/static/chunks/0u4hpe9c52_j7.js +0 -1
  154. package/dist/app/apps/dashboard/.next/static/chunks/1ka4ptby_22zq.js +0 -15
  155. package/dist/app/apps/dashboard/.next/static/chunks/2ozv9yvcjlzfc.css +0 -2
  156. package/dist/app/apps/dashboard/.next/static/chunks/44mo0k1w960a-.js +0 -1
  157. /package/dist/app/apps/dashboard/.next/static/{UZn0mscl5hk5YJtZnvSnK → UVwgQCUayw2aahATR0vXc}/_buildManifest.js +0 -0
  158. /package/dist/app/apps/dashboard/.next/static/{UZn0mscl5hk5YJtZnvSnK → UVwgQCUayw2aahATR0vXc}/_clientMiddlewareManifest.js +0 -0
  159. /package/dist/app/apps/dashboard/.next/static/{UZn0mscl5hk5YJtZnvSnK → UVwgQCUayw2aahATR0vXc}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57108,e=>{var r=e.i(43476),t=e.i(46670);e.s(["f",0,function({configuration:e}){if(e?.memoryProvider!=="hivemem")return null;let a=e.hiveMemToken,s=a?.status??"unknown";return(0,r.jsxs)("span",{className:"flex flex-wrap items-center gap-1.5",children:[(0,r.jsxs)(t.t,{variant:"valid"===s?"success":"expiring"===s||"unreachable"===s||"unknown"===s?"warning":"danger",children:["Token ",s]}),a?.expiresAt&&(0,r.jsxs)("time",{dateTime:a.expiresAt,title:"HiveMem token expiration",children:["expires ",new Date(a.expiresAt).toLocaleString()]}),a?.checkedAt&&(0,r.jsxs)("time",{dateTime:a.checkedAt,className:"text-text-muted/70",title:"Last HiveMem authentication check",children:["checked ",new Date(a.checkedAt).toLocaleString()]})]})}])},46670,e=>{var r=e.i(43476),t=e.i(78571);let a={default:"border-border text-text-muted",success:"border-success/40 text-success bg-success/5 shadow-[0_0_6px_rgba(0,255,65,0.15)]",warning:"border-warning/40 text-warning bg-warning/5 shadow-[0_0_6px_rgba(255,179,0,0.15)]",danger:"border-danger/40 text-danger bg-danger/5 shadow-[0_0_6px_rgba(255,23,68,0.15)]",info:"border-info/40 text-info bg-info/5 shadow-[0_0_6px_rgba(0,176,255,0.15)]"},s={default:"bg-text-muted",success:"bg-success",warning:"bg-warning",danger:"bg-danger",info:"bg-info"};e.s(["t",0,function({children:e,variant:n="default",className:l,dot:i=!1,pulse:o=!1}){return(0,r.jsxs)("span",{className:(0,t.f)("inline-flex items-center gap-1.5 rounded-chip border px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider",a[n],l),children:[i&&(0,r.jsxs)("span",{"aria-hidden":"true",className:"relative inline-flex h-1.5 w-1.5",children:[o&&(0,r.jsx)("span",{className:(0,t.f)("absolute inset-0 rounded-full animate-halo",s[n])}),(0,r.jsx)("span",{className:(0,t.f)("relative inline-flex h-1.5 w-1.5 rounded-full",s[n])})]}),e]})},"k",0,function(e){switch(e.toUpperCase()){case"ONLINE":case"COMPLETED":case"ACTIVE":case"RUNNING":case"INSTALLED":case"HEALTHY":return"success";case"DEGRADED":case"PAUSED":case"QUEUED":case"PENDING":case"INSTALLING":return"warning";case"OFFLINE":case"FAILED":case"ERROR":case"TIMEOUT":case"CANCELLED":case"DECOMMISSIONED":case"CRITICAL":return"danger";case"PROVISIONING":case"UPDATING":return"info";default:return"default"}}])},93999,51196,55427,e=>{var r=e.i(43476);let t=(0,e.i(75254).f)("ArrowDownRight",[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]]);var a=e.i(15057),s=e.i(78571),n=e.i(3062),l=e.i(35084);let i={warning:"shadow-[0_0_6px_var(--color-warning)]",danger:"shadow-[0_0_8px_var(--color-danger)]",accent:"shadow-[0_0_6px_var(--color-accent)]",primary:"shadow-[0_0_6px_var(--color-primary)]"},o={xs:"h-1",sm:"h-1.5",md:"h-2"};function c({value:e,max:t=100,tone:a,thresholds:n=l.q,label:d,size:u="xs",showValue:x=!1,valueLabel:h,glow:f,className:m,testId:p}){let g="number"==typeof e&&Number.isFinite(e),v=g?Math.max(0,Math.min(100,e/(t||1)*100)):0,b=a??(g?(0,l.Z)(v,n):"muted"),j=f||!a&&g&&v>=n.warn,y=h??(g?`${v.toFixed(+(v<10&&v>0))}%`:"—");return(0,r.jsxs)("div",{className:(0,s.f)("flex min-w-0 items-center gap-2",m),"data-testid":p,children:[(0,r.jsx)("div",{role:"meter","aria-label":d,"aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":g?e:void 0,"aria-valuetext":y,className:(0,s.f)("relative flex-1 overflow-hidden rounded-full bg-border/70",o[u]),children:(0,r.jsx)("div",{style:{"--meter":`${v}%`},className:(0,s.f)("h-full w-(--meter) rounded-full transition-[width] duration-700 ease-out-expo starting:w-0",l.H[b],j&&i[b])})}),x&&(0,r.jsx)("span",{className:(0,s.f)("num w-11 shrink-0 text-right text-[11px]",g?l.T[b]:"text-text-muted"),children:y})]})}e.s(["f",0,c],51196);var d=e.i(71645);function u({values:e,tone:t="primary",width:a=160,height:n=32,area:i=!0,max:o,percent:c=!1,threshold:x,live:h=!0,emptyLabel:f="not enough data",className:m,testId:p,label:g,stretch:v=!1}){let b=`spark${(0,d.useId)().replace(/:/g,"")}`;if(e.length<2)return(0,r.jsx)("div",{className:(0,s.f)("flex h-8 items-center text-xs italic text-text-muted",m),"data-testid":p,children:f});let j=l.v[t],y=o??(c?Math.max(100,...e):Math.max(...e,x??0)||1),N=n-4,w=a/(e.length-1),k=e=>2+N-Math.max(0,e)/y*N,_=e.map((e,r)=>[r*w,k(e)]),M=_.map(([e,r])=>`${e.toFixed(1)},${r.toFixed(1)}`).join(" "),S=_[_.length-1];return(0,r.jsxs)("svg",{width:v?"100%":a,height:n,viewBox:`0 0 ${a} ${n}`,preserveAspectRatio:v?"none":void 0,className:(0,s.f)("block overflow-visible",m),"data-testid":p,role:g?"img":void 0,"aria-label":g,"aria-hidden":!g||void 0,children:[i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("defs",{children:(0,r.jsxs)("linearGradient",{id:b,x1:"0",x2:"0",y1:"0",y2:"1",children:[(0,r.jsx)("stop",{offset:"0%",stopColor:j,stopOpacity:.35}),(0,r.jsx)("stop",{offset:"100%",stopColor:j,stopOpacity:0})]})}),(0,r.jsx)("polygon",{points:`0,${n} ${M} ${a},${n}`,fill:`url(#${b})`})]}),void 0!==x&&(0,r.jsx)("line",{x1:0,x2:a,y1:k(x),y2:k(x),stroke:"var(--color-warning)",strokeOpacity:.5,strokeDasharray:"3 3",strokeWidth:1}),(0,r.jsx)("polyline",{fill:"none",stroke:j,strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round",strokeLinecap:"round",points:M}),h&&!v&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:S[0],cy:S[1],r:2.5,fill:j,className:"origin-center animate-halo [transform-box:fill-box]"}),(0,r.jsx)("circle",{cx:S[0],cy:S[1],r:2,fill:j})]})]})}e.s(["f",0,u],55427),e.s(["N",0,function({title:e,description:t,children:a,className:s,action:l,tone:i,corners:o=!1,...c}){return(0,r.jsx)(n.f,{...c,tone:i,corners:o,title:e,description:t,action:l,className:s,children:a})},"n",0,function({label:e,value:i,icon:o,trend:d,spark:x,meter:h,delta:f,tone:m="primary",className:p,testId:g}){let v=!f||f.value>=0===(f.positiveIsGood??!0);return(0,r.jsxs)(n.f,{tone:m,className:(0,s.f)("overflow-hidden",p),testId:g,children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-[0.15em] text-text-muted",children:e}),o&&(0,r.jsx)("span",{className:"text-primary/60",children:o})]}),(0,r.jsxs)("div",{className:"mt-2 flex items-end justify-between gap-2",children:[(0,r.jsx)("div",{className:(0,s.f)("num text-2xl font-bold","primary"===m?"text-primary neon-text":l.T[m]),children:i}),f&&0!==f.value&&(0,r.jsxs)("span",{className:(0,s.f)("num mb-1 inline-flex items-center gap-0.5 text-[11px]",v?"text-success":"text-danger"),children:[f.value>0?(0,r.jsx)(a.f,{className:"h-3 w-3"}):(0,r.jsx)(t,{className:"h-3 w-3"}),Math.abs(f.value).toFixed(+!Number.isInteger(f.value)),f.unit]})]}),d&&(0,r.jsx)("div",{className:(0,s.f)("mt-1 text-[11px]",d.positive?"text-success":"text-danger"),children:d.value}),void 0!==h&&(0,r.jsx)(c,{value:h,className:"mt-3",label:e}),x&&x.length>1&&(0,r.jsx)("div",{className:"-mx-5 -mb-5 mt-3 opacity-80",children:(0,r.jsx)(u,{values:x,tone:m,width:240,height:28,stretch:!0,live:!1})})]})}],93999)},54149,21176,e=>{var r=e.i(43476),t=e.i(71645),a=e.i(78571),s=e.i(35084);e.s(["f",0,function({value:e,max:n=100,label:l,sublabel:i,tone:o,thresholds:c=s.q,higherIsBetter:d=!1,size:u=140,display:x,ticks:h=!0,hideLabel:f=!1,className:m,testId:p}){let g=(0,t.useId)().replace(/:/g,""),v="number"==typeof e&&Number.isFinite(e),b=v?Math.max(0,Math.min(100,e/(n||1)*100)):0,j=o??(v?d?(0,s.Z)(100-b,c):(0,s.Z)(b,c):"muted"),y=Math.max(4,Math.round(u/16)),N=50-y/2-4,w=2*Math.PI*N,k=.75*w,_=k*b/100,M=u>=140,S=x??(v?`${Math.round(b)}%`:"—"),C=h?Array.from({length:11},(e,t)=>{let a=(135+270*t/10)*Math.PI/180,s=50-(t%5==0?4:2.5);return(0,r.jsx)("line",{x1:50+48.5*Math.cos(a),y1:50+48.5*Math.sin(a),x2:50+s*Math.cos(a),y2:50+s*Math.sin(a),stroke:"var(--color-border-strong)",strokeWidth:.8},t)}):null;return(0,r.jsxs)("div",{role:"img","aria-label":`${l}: ${S}`,"data-testid":p,className:(0,a.f)("relative inline-flex flex-col items-center",m),style:{width:u},children:[(0,r.jsxs)("svg",{viewBox:"0 0 100 100",width:u,height:u,"aria-hidden":"true",className:"overflow-visible",children:[M&&(0,r.jsx)("defs",{children:(0,r.jsxs)("filter",{id:`g${g}`,x:"-30%",y:"-30%",width:"160%",height:"160%",children:[(0,r.jsx)("feGaussianBlur",{stdDeviation:"2.2",result:"blur"}),(0,r.jsxs)("feMerge",{children:[(0,r.jsx)("feMergeNode",{in:"blur"}),(0,r.jsx)("feMergeNode",{in:"SourceGraphic"})]})]})}),C,(0,r.jsx)("circle",{cx:50,cy:50,r:N,fill:"none",stroke:"var(--color-border)",strokeWidth:y,strokeLinecap:"round",strokeDasharray:`${k} ${w}`,transform:"rotate(135 50 50)"}),(0,r.jsx)("circle",{cx:50,cy:50,r:N,fill:"none",stroke:s.v[j],strokeWidth:y,strokeLinecap:"round",transform:"rotate(135 50 50)",filter:M?`url(#g${g})`:void 0,style:{"--dash":`${_} ${w}`},className:"[stroke-dasharray:var(--dash)] transition-[stroke-dasharray] duration-1000 ease-out-expo starting:[stroke-dasharray:0_1000]"})]}),(0,r.jsxs)("div",{className:"pointer-events-none absolute inset-0 flex flex-col items-center justify-center",style:{height:u},children:[(0,r.jsx)("span",{className:(0,a.f)("num font-bold leading-none",s.T[j],M&&s.z[j]),style:{fontSize:Math.max(12,.2*u)},children:S}),i&&(0,r.jsx)("span",{className:"num mt-1 text-text-muted",style:{fontSize:Math.max(9,.075*u)},children:i})]}),!f&&(0,r.jsx)("span",{className:"-mt-[10%] text-center text-[10px] font-medium uppercase tracking-[0.15em] text-text-muted",children:l})]})}],54149);var n=e.i(70703),l=e.i(65369);let i=(0,n.default)(()=>e.A(1321),{loadableGenerated:{modules:[69944]},ssr:!1,loading:()=>(0,r.jsx)(l.l,{className:"h-[180px] w-full"})});e.s(["f",0,i],21176)},3062,e=>{var r=e.i(43476),t=e.i(78571),a=e.i(35084);let s={primary:"[--panel-corner-color:color-mix(in_srgb,var(--color-primary)_60%,transparent)]",accent:"[--panel-corner-color:color-mix(in_srgb,var(--color-accent)_70%,transparent)]",success:"[--panel-corner-color:color-mix(in_srgb,var(--color-success)_60%,transparent)]",warning:"[--panel-corner-color:color-mix(in_srgb,var(--color-warning)_70%,transparent)]",danger:"[--panel-corner-color:color-mix(in_srgb,var(--color-danger)_70%,transparent)]",info:"[--panel-corner-color:color-mix(in_srgb,var(--color-info)_60%,transparent)]",muted:"[--panel-corner-color:var(--color-border-strong)]"},n={primary:"[--glow-hover-color:var(--color-glow)]",accent:"[--glow-hover-color:var(--color-glow-accent)]",success:"[--glow-hover-color:var(--color-glow-success)]",warning:"[--glow-hover-color:var(--color-glow-warning)]",danger:"[--glow-hover-color:var(--color-glow-danger)]",info:"[--glow-hover-color:var(--color-glow)]",muted:"[--glow-hover-color:var(--color-glow)]"},l={primary:"hover:border-primary/30",accent:"hover:border-accent/40",success:"hover:border-success/30",warning:"hover:border-warning/40",danger:"hover:border-danger/40",info:"hover:border-info/30",muted:"hover:border-border-strong"},i={none:"",sm:"p-3",md:"p-5",lg:"p-6"};e.s(["f",0,function({tone:e="primary",corners:o=!0,interactive:c=!0,hero:d=!1,title:u,description:x,icon:h,action:f,as:m="div",padding:p="md",testId:g,className:v,children:b,...j}){return(0,r.jsxs)(m,{...j,"data-testid":g??j["data-testid"],className:(0,t.f)("relative rounded-panel border border-border bg-surface transition-colors duration-300",i[p],o&&"panel-corners",o&&s[e],c&&"glow-hover",c&&n[e],c&&l[e],d&&"grid-bg overflow-hidden bg-surface/80",v),children:[(u||f||h)&&(0,r.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[h&&(0,r.jsx)("span",{className:(0,t.f)("mt-0.5 shrink-0",a.T[e]),children:h}),(0,r.jsxs)("div",{className:"min-w-0",children:[u&&(0,r.jsx)("h3",{className:"text-xs font-bold uppercase tracking-wider",children:u}),x&&(0,r.jsx)("p",{className:"mt-0.5 text-[11px] text-text-muted",children:x})]})]}),f]}),b]})}])},65369,e=>{var r=e.i(43476),t=e.i(78571);function a({className:e}){return(0,r.jsx)("div",{"aria-hidden":"true",className:(0,t.f)("skeleton h-3 w-full",e)})}e.s(["l",0,a,"g",0,function({count:e=4,className:s}){return(0,r.jsx)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("grid gap-4 sm:grid-cols-2 lg:grid-cols-4",s),children:Array.from({length:e},(e,t)=>(0,r.jsxs)("div",{className:"panel-corners rounded-panel border border-border bg-surface p-5",children:[(0,r.jsx)(a,{className:"h-2 w-1/2"}),(0,r.jsx)(a,{className:"mt-4 h-7 w-2/3"}),(0,r.jsx)(a,{className:"mt-3 h-1 w-full opacity-60"})]},t))})},"F",0,function({rows:e=5,cols:s=4,className:n}){return(0,r.jsxs)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("overflow-hidden rounded-panel border border-border",n),children:[(0,r.jsx)("div",{className:"flex gap-4 border-b border-border bg-surface px-4 py-3",children:Array.from({length:s},(e,t)=>(0,r.jsx)(a,{className:"h-2 flex-1 opacity-60"},t))}),Array.from({length:e},(e,n)=>(0,r.jsx)("div",{className:"flex gap-4 border-b border-border/50 px-4 py-3 last:border-0",children:Array.from({length:s},(e,s)=>(0,r.jsx)(a,{className:(0,t.f)("h-3 flex-1",(n+s)%3==0&&"max-w-[60%]")},s))},n))]})},"Q",0,function({lines:e=3,className:s}){let n=["w-full","w-11/12","w-4/5","w-2/3","w-3/4"];return(0,r.jsx)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("space-y-2",s),children:Array.from({length:e},(e,t)=>(0,r.jsx)(a,{className:n[t%n.length]},t))})}])},75723,e=>{var r=e.i(43476),t=e.i(78571),a=e.i(46670);let s={success:"bg-success shadow-[0_0_6px_var(--color-success)]",warning:"bg-warning shadow-[0_0_6px_var(--color-warning)]",danger:"bg-danger shadow-[0_0_6px_var(--color-danger)]",info:"bg-info shadow-[0_0_6px_var(--color-info)]",default:"bg-text-muted"},n={success:"bg-success",warning:"bg-warning",danger:"bg-danger",info:"bg-info",default:"bg-text-muted"},l=new Set(["ONLINE","RUNNING","ACTIVE","HEALTHY","CRITICAL","UPDATING","PROVISIONING"]);e.s(["f",0,function({status:e,pulse:i,size:o="sm",className:c,label:d}){let u=(0,a.k)(e),x=i??l.has(e.toUpperCase()),h="xs"===o?"h-1.5 w-1.5":"h-2 w-2";return(0,r.jsxs)("span",{className:(0,t.f)("relative inline-flex shrink-0",h,c),role:d?"img":void 0,"aria-label":d,"aria-hidden":!d||void 0,children:[x&&(0,r.jsx)("span",{className:(0,t.f)("absolute inset-0 rounded-full animate-halo",n[u])}),(0,r.jsx)("span",{className:(0,t.f)("relative inline-flex rounded-full",h,s[u])})]})}])},71417,e=>{e.s(["L",0,function(e){if(0===e)return"0 B";let r=Math.floor(Math.log(e)/Math.log(1024));return`${parseFloat((e/Math.pow(1024,r)).toFixed(1))} ${["B","KB","MB","GB","TB"][r]}`},"C",0,function(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"—"}])},21218,e=>{let r=(0,e.i(75254).f)("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"}]]);e.s(["f",0,r],21218)},71689,e=>{let r=(0,e.i(75254).f)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["f",0,r],71689)},15057,e=>{let r=(0,e.i(75254).f)("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);e.s(["f",0,r],15057)},78917,e=>{let r=(0,e.i(75254).f)("ExternalLink",[["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"}]]);e.s(["f",0,r],78917)},81203,e=>{let r=(0,e.i(75254).f)("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);e.s(["f",0,r],81203)},12181,14098,e=>{let r=(0,e.i(75254).f)("RefreshCcwDot",[["path",{d:"M3 2v6h6",key:"18ldww"}],["path",{d:"M21 12A9 9 0 0 0 6 5.3L3 8",key:"1pbrqz"}],["path",{d:"M21 22v-6h-6",key:"usdfbe"}],["path",{d:"M3 12a9 9 0 0 0 15 6.7l3-2.7",key:"1hosoe"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);e.s(["f",0,r],12181);var t=e.i(43476),a=e.i(71645),s=e.i(68759),n=e.i(32568),l=e.i(82983),i=e.i(18393),o=e.i(31278);e.s(["E",0,function({open:e,node:r,onClose:c,onSaved:d}){let[u,x]=(0,a.useState)([]),[h,f]=(0,a.useState)(""),[m,p]=(0,a.useState)(!0),[g,v]=(0,a.useState)(!1),[b,j]=(0,a.useState)(""),[y,N]=(0,a.useState)(!1);(0,a.useEffect)(()=>{e&&(j(""),f(r?.role?.id??""),p(!0),N(!0),(async()=>{try{let e=await l.f.roles.list();x(e.data??[])}catch{j("Failed to load roles")}finally{N(!1)}})())},[e,r?.role?.id]);let w=async()=>{if(r){v(!0),j("");try{let e=r.role?.id;e&&e!==h&&await l.f.roles.unassign(e,{nodeIds:[r.id]}),h&&await l.f.roles.assign(h,{nodeIds:[r.id],defer:!m});let t=h?u.find(e=>e.id===h)??null:null;d(t),c()}catch(e){j(e instanceof Error?e.message:"Failed to assign role")}finally{v(!1)}}},k=async()=>{if(r?.role){v(!0),j("");try{await l.f.roles.unassign(r.role.id,{nodeIds:[r.id]}),d(null),c()}catch(e){j(e instanceof Error?e.message:"Failed to unassign role")}finally{v(!1)}}},_=()=>{j(""),v(!1),c()};return(0,t.jsx)(n.n,{open:e,onClose:_,title:r?.role?"Change Role":"Assign Role",description:r?`Node: ${r.name}`:"",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[y?(0,t.jsxs)("div",{className:"flex items-center gap-2 py-4 text-xs text-text-muted",children:[(0,t.jsx)(o.f,{className:"h-4 w-4 animate-spin"}),"Loading roles…"]}):0===u.length?(0,t.jsx)("p",{className:"text-xs text-text-muted py-4",children:"No roles found. Create a role first on the Roles page."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.G,{label:"Role",children:(0,t.jsxs)("select",{value:h,onChange:e=>f(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"",children:"— No role —"}),u.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]})}),h&&(0,t.jsxs)("label",{className:"flex items-center gap-2 text-xs cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>p(e.target.checked),className:"rounded border-border"}),"Apply role immediately"]})]}),b&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:b}),(0,t.jsxs)("div",{className:"flex justify-between pt-2",children:[(0,t.jsx)("div",{children:r?.role&&(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:()=>void k(),disabled:g,children:"Unassign Role"})}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:_,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void w(),disabled:g||!h||0===u.length,icon:g?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:g?"Saving…":r?.role?"Change Role":"Assign Role"})]})]})]})})},"F",0,function({open:e,node:r,onClose:c,onSaved:d}){let[u,x]=(0,a.useState)(""),[h,f]=(0,a.useState)(""),[m,p]=(0,a.useState)(""),[g,v]=(0,a.useState)(!1),[b,j]=(0,a.useState)("");(0,a.useEffect)(()=>{if(r){x(r.name);try{let e=JSON.parse(r.tags);f(e.join(", "))}catch{f("")}p(r.status),j("")}},[r]);let y=async()=>{if(r&&u.trim()){v(!0),j("");try{let e=h.split(",").map(e=>e.trim()).filter(Boolean);await l.f.nodes.update(r.id,{name:u.trim(),tags:e,status:m.toUpperCase()}),d(),c()}catch(e){j(e instanceof Error?e.message:"Failed to update node")}finally{v(!1)}}},N=()=>{j(""),v(!1),c()};return(0,t.jsx)(n.n,{open:e,onClose:N,title:"Edit Node",description:r?`${r.hostname}`:"",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(n.G,{label:"Name",required:!0,children:(0,t.jsx)("input",{type:"text",value:u,onChange:e=>x(e.target.value),className:n.W})}),(0,t.jsx)(n.G,{label:"Status",children:(0,t.jsxs)("select",{value:m,onChange:e=>p(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"ONLINE",children:"ONLINE"}),(0,t.jsx)("option",{value:"OFFLINE",children:"OFFLINE"}),(0,t.jsx)("option",{value:"DEGRADED",children:"DEGRADED"}),(0,t.jsx)("option",{value:"PROVISIONING",children:"PROVISIONING"}),(0,t.jsx)("option",{value:"MAINTENANCE",children:"MAINTENANCE"})]})}),(0,t.jsxs)(n.G,{label:"Tags",children:[(0,t.jsx)("input",{type:"text",value:h,onChange:e=>f(e.target.value),placeholder:"web, production, us-east",className:n.W}),(0,t.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Comma-separated list of tags"})]}),b&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:b}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:N,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void y(),disabled:g||!u.trim(),icon:g?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:g?"Saving…":"Save Changes"})]})]})})},"M",0,function({open:e,onClose:r,onRegistered:c}){let[d,u]=(0,a.useState)(""),[x,h]=(0,a.useState)(""),[f,m]=(0,a.useState)("4100"),[p,g]=(0,a.useState)("linux"),[v,b]=(0,a.useState)("x86_64"),[j,y]=(0,a.useState)(""),[N,w]=(0,a.useState)(!1),[k,_]=(0,a.useState)(""),M=async()=>{if(d.trim()&&x.trim()){w(!0),_("");try{let e=j.split(",").map(e=>e.trim()).filter(Boolean);await l.f.nodes.register({name:d.trim(),hostname:x.trim(),ipAddress:x.trim(),port:Number(f)||4100,os:p,arch:v,tags:e,agentVersion:"1.0.2"}),c(),S()}catch(e){_(e instanceof Error?e.message:"Failed to register node")}finally{w(!1)}}},S=()=>{u(""),h(""),m("4100"),g("linux"),b("x86_64"),y(""),_(""),w(!1),r()};return(0,t.jsx)(n.n,{open:e,onClose:S,title:"Register Node",description:"Manually register a node already running the agent",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(n.G,{label:"Node Name",required:!0,children:(0,t.jsx)("input",{type:"text",value:d,onChange:e=>u(e.target.value),placeholder:"web-server-01",className:n.W,autoFocus:!0})}),(0,t.jsx)(n.G,{label:"FQDN / Hostname",required:!0,children:(0,t.jsx)("input",{type:"text",value:x,onChange:e=>h(e.target.value),placeholder:"node-1.example.com",className:n.W})}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,t.jsx)(n.G,{label:"Port",children:(0,t.jsx)("input",{type:"number",value:f,onChange:e=>m(e.target.value),className:n.W})}),(0,t.jsx)(n.G,{label:"OS",children:(0,t.jsxs)("select",{value:p,onChange:e=>g(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"linux",children:"Linux"}),(0,t.jsx)("option",{value:"darwin",children:"macOS"}),(0,t.jsx)("option",{value:"windows",children:"Windows"})]})}),(0,t.jsx)(n.G,{label:"Architecture",children:(0,t.jsxs)("select",{value:v,onChange:e=>b(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"x86_64",children:"x86_64"}),(0,t.jsx)("option",{value:"aarch64",children:"aarch64"}),(0,t.jsx)("option",{value:"arm",children:"arm"})]})})]}),(0,t.jsxs)(n.G,{label:"Tags",children:[(0,t.jsx)("input",{type:"text",value:j,onChange:e=>y(e.target.value),placeholder:"web, production, us-east",className:n.W}),(0,t.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Comma-separated"})]}),k&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:k}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:S,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void M(),disabled:N||!d.trim()||!x.trim(),icon:N?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:N?"Registering…":"Register Node"})]})]})})}],14098)},91810,e=>{let r=(0,e.i(75254).f)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]);e.s(["f",0,r],91810)},90317,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a={bindSnapshot:function(){return d},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return u},getOrCreateGlobalAsyncLocalStorage:function(){return c}};for(var s in a)Object.defineProperty(t,s,{enumerable:!0,get:a[s]});let n=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class l{disable(){throw n}getStore(){}run(){throw n}exit(){throw n}enterWith(){throw n}static bind(e){return e}}let i="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return i?new i:new l}function c(e){let r=Symbol.for(`@next/${e}@16.4.3`),t=globalThis;return t[r]??=o()}function d(e){return i?i.bind(e):l.bind(e)}function u(){return i?i.snapshot():function(e,...r){return e(...r)}}},42344,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return a}});let a=(0,e.r(90317).getOrCreateGlobalAsyncLocalStorage)("work-async-storage")},63599,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return a.workAsyncStorageInstance}});let a=e.r(42344)},70703,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let a=e.r(55682)._(e.r(69093));function s(e,r){let t={};"function"==typeof e&&(t.loader=e);let s={...t,...r};return(0,a.default)({...s,modules:s.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},9885,(e,r,t)=>{function a(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return a}})},67585,(e,r,t)=>{e.i(47167),Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSRForNextDynamic",{enumerable:!0,get:function(){return l}});let a=e.r(71645),s=e.r(74080);e.r(32061);let n=e.r(49354).createReactBrowserBailoutReason.bind(null,"next/dynamic");function l({children:e}){return(0,a.use)((0,s.browser)(n)),e}},69093,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let a=e.r(43476),s=e.r(71645),n=e.r(67585),l=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},c=function(e){let r={...o,...e},t=(0,s.lazy)(()=>r.loader().then(i)),c=r.loading;function d(e){let i=c?(0,a.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,o=!r.ssr||!!r.loading,d=o?s.Suspense:s.Fragment,u=r.ssr?(0,a.jsxs)(a.Fragment,{children:["u"<typeof window?(0,a.jsx)(l.PreloadChunks,{moduleIds:r.modules}):null,(0,a.jsx)(t,{...e})]}):(0,a.jsx)(n.BailoutToCSRForNextDynamic,{children:(0,a.jsx)(t,{...e})});return(0,a.jsx)(d,{...o?{fallback:i}:{},children:u})}return d.displayName="LoadableComponent",d}},52157,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return o}});let a=e.r(43476),s=e.r(74080),n=e.r(63599),l=e.r(9885),i=e.r(43369);function o({moduleIds:e}){if("u">typeof window)return null;let r=n.workAsyncStorage.getStore();if(void 0===r)return null;let t=[];if(r.reactLoadableManifest&&e){let a=r.reactLoadableManifest;for(let r of e){if(!a[r])continue;let e=a[r].files;t.push(...e)}}if(0===t.length)return null;let c=(0,i.getAssetTokenQuery)();return(0,a.jsx)(a.Fragment,{children:t.map(e=>{let t=`${r.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,a.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style",nonce:r.nonce},e):((0,s.preload)(t,{as:"script",fetchPriority:"low",nonce:r.nonce}),null)})})}},49354,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a={createReactBrowserBailoutReason:function(){return l},getReactBrowserBailoutReason:function(){return i},isNextBrowserBailoutError:function(){return o}};for(var s in a)Object.defineProperty(t,s,{enumerable:!0,get:a[s]});let n=Symbol.for("next.browser-bailout-reason");function l(e){return{$$typeof:n,reason:e}}function i(e){let r=e?.cause;return r?.$$typeof===n?r.reason:void 0}function o(e){return void 0!==i(e)}}])})();
1
+ (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57108,e=>{var r=e.i(43476),t=e.i(46670);e.s(["f",0,function({configuration:e}){if(e?.memoryProvider!=="hivemem")return null;let a=e.hiveMemToken,s=a?.status??"unknown";return(0,r.jsxs)("span",{className:"flex flex-wrap items-center gap-1.5",children:[(0,r.jsxs)(t.t,{variant:"valid"===s?"success":"expiring"===s||"unreachable"===s||"unknown"===s?"warning":"danger",children:["Token ",s]}),a?.expiresAt&&(0,r.jsxs)("time",{dateTime:a.expiresAt,title:"HiveMem token expiration",children:["expires ",new Date(a.expiresAt).toLocaleString()]}),a?.checkedAt&&(0,r.jsxs)("time",{dateTime:a.checkedAt,className:"text-text-muted/70",title:"Last HiveMem authentication check",children:["checked ",new Date(a.checkedAt).toLocaleString()]})]})}])},46670,e=>{var r=e.i(43476),t=e.i(78571);let a={default:"border-border text-text-muted",success:"border-success/40 text-success bg-success/5 shadow-[0_0_6px_rgba(0,255,65,0.15)]",warning:"border-warning/40 text-warning bg-warning/5 shadow-[0_0_6px_rgba(255,179,0,0.15)]",danger:"border-danger/40 text-danger bg-danger/5 shadow-[0_0_6px_rgba(255,23,68,0.15)]",info:"border-info/40 text-info bg-info/5 shadow-[0_0_6px_rgba(0,176,255,0.15)]"},s={default:"bg-text-muted",success:"bg-success",warning:"bg-warning",danger:"bg-danger",info:"bg-info"};e.s(["t",0,function({children:e,variant:n="default",className:l,dot:i=!1,pulse:o=!1}){return(0,r.jsxs)("span",{className:(0,t.f)("inline-flex items-center gap-1.5 rounded-chip border px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider",a[n],l),children:[i&&(0,r.jsxs)("span",{"aria-hidden":"true",className:"relative inline-flex h-1.5 w-1.5",children:[o&&(0,r.jsx)("span",{className:(0,t.f)("absolute inset-0 rounded-full animate-halo",s[n])}),(0,r.jsx)("span",{className:(0,t.f)("relative inline-flex h-1.5 w-1.5 rounded-full",s[n])})]}),e]})},"k",0,function(e){switch(e.toUpperCase()){case"ONLINE":case"COMPLETED":case"ACTIVE":case"RUNNING":case"INSTALLED":case"HEALTHY":return"success";case"DEGRADED":case"PAUSED":case"QUEUED":case"PENDING":case"INSTALLING":return"warning";case"OFFLINE":case"FAILED":case"ERROR":case"TIMEOUT":case"CANCELLED":case"DECOMMISSIONED":case"CRITICAL":return"danger";case"PROVISIONING":case"UPDATING":return"info";default:return"default"}}])},93999,51196,55427,e=>{var r=e.i(43476);let t=(0,e.i(75254).f)("ArrowDownRight",[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]]);var a=e.i(15057),s=e.i(78571),n=e.i(3062),l=e.i(35084);let i={warning:"shadow-[0_0_6px_var(--color-warning)]",danger:"shadow-[0_0_8px_var(--color-danger)]",accent:"shadow-[0_0_6px_var(--color-accent)]",primary:"shadow-[0_0_6px_var(--color-primary)]"},o={xs:"h-1",sm:"h-1.5",md:"h-2"};function c({value:e,max:t=100,tone:a,thresholds:n=l.q,label:d,size:u="xs",showValue:x=!1,valueLabel:h,glow:f,className:m,testId:p}){let g="number"==typeof e&&Number.isFinite(e),v=g?Math.max(0,Math.min(100,e/(t||1)*100)):0,b=a??(g?(0,l.Z)(v,n):"muted"),j=f||!a&&g&&v>=n.warn,y=h??(g?`${v.toFixed(+(v<10&&v>0))}%`:"—");return(0,r.jsxs)("div",{className:(0,s.f)("flex min-w-0 items-center gap-2",m),"data-testid":p,children:[(0,r.jsx)("div",{role:"meter","aria-label":d,"aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":g?e:void 0,"aria-valuetext":y,className:(0,s.f)("relative flex-1 overflow-hidden rounded-full bg-border/70",o[u]),children:(0,r.jsx)("div",{style:{"--meter":`${v}%`},className:(0,s.f)("h-full w-(--meter) rounded-full transition-[width] duration-700 ease-out-expo starting:w-0",l.H[b],j&&i[b])})}),x&&(0,r.jsx)("span",{className:(0,s.f)("num w-11 shrink-0 text-right text-[11px]",g?l.T[b]:"text-text-muted"),children:y})]})}e.s(["f",0,c],51196);var d=e.i(71645);function u({values:e,tone:t="primary",width:a=160,height:n=32,area:i=!0,max:o,percent:c=!1,threshold:x,live:h=!0,emptyLabel:f="not enough data",className:m,testId:p,label:g,stretch:v=!1}){let b=`spark${(0,d.useId)().replace(/:/g,"")}`;if(e.length<2)return(0,r.jsx)("div",{className:(0,s.f)("flex h-8 items-center text-xs italic text-text-muted",m),"data-testid":p,children:f});let j=l.v[t],y=o??(c?Math.max(100,...e):Math.max(...e,x??0)||1),N=n-4,w=a/(e.length-1),k=e=>2+N-Math.max(0,e)/y*N,_=e.map((e,r)=>[r*w,k(e)]),M=_.map(([e,r])=>`${e.toFixed(1)},${r.toFixed(1)}`).join(" "),S=_[_.length-1];return(0,r.jsxs)("svg",{width:v?"100%":a,height:n,viewBox:`0 0 ${a} ${n}`,preserveAspectRatio:v?"none":void 0,className:(0,s.f)("block overflow-visible",m),"data-testid":p,role:g?"img":void 0,"aria-label":g,"aria-hidden":!g||void 0,children:[i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("defs",{children:(0,r.jsxs)("linearGradient",{id:b,x1:"0",x2:"0",y1:"0",y2:"1",children:[(0,r.jsx)("stop",{offset:"0%",stopColor:j,stopOpacity:.35}),(0,r.jsx)("stop",{offset:"100%",stopColor:j,stopOpacity:0})]})}),(0,r.jsx)("polygon",{points:`0,${n} ${M} ${a},${n}`,fill:`url(#${b})`})]}),void 0!==x&&(0,r.jsx)("line",{x1:0,x2:a,y1:k(x),y2:k(x),stroke:"var(--color-warning)",strokeOpacity:.5,strokeDasharray:"3 3",strokeWidth:1}),(0,r.jsx)("polyline",{fill:"none",stroke:j,strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round",strokeLinecap:"round",points:M}),h&&!v&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:S[0],cy:S[1],r:2.5,fill:j,className:"origin-center animate-halo [transform-box:fill-box]"}),(0,r.jsx)("circle",{cx:S[0],cy:S[1],r:2,fill:j})]})]})}e.s(["f",0,u],55427),e.s(["N",0,function({title:e,description:t,children:a,className:s,action:l,tone:i,corners:o=!1,...c}){return(0,r.jsx)(n.f,{...c,tone:i,corners:o,title:e,description:t,action:l,className:s,children:a})},"n",0,function({label:e,value:i,icon:o,trend:d,spark:x,meter:h,delta:f,tone:m="primary",className:p,testId:g}){let v=!f||f.value>=0===(f.positiveIsGood??!0);return(0,r.jsxs)(n.f,{tone:m,className:(0,s.f)("overflow-hidden",p),testId:g,children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-[0.15em] text-text-muted",children:e}),o&&(0,r.jsx)("span",{className:"text-primary/60",children:o})]}),(0,r.jsxs)("div",{className:"mt-2 flex items-end justify-between gap-2",children:[(0,r.jsx)("div",{className:(0,s.f)("num text-2xl font-bold","primary"===m?"text-primary neon-text":l.T[m]),children:i}),f&&0!==f.value&&(0,r.jsxs)("span",{className:(0,s.f)("num mb-1 inline-flex items-center gap-0.5 text-[11px]",v?"text-success":"text-danger"),children:[f.value>0?(0,r.jsx)(a.f,{className:"h-3 w-3"}):(0,r.jsx)(t,{className:"h-3 w-3"}),Math.abs(f.value).toFixed(+!Number.isInteger(f.value)),f.unit]})]}),d&&(0,r.jsx)("div",{className:(0,s.f)("mt-1 text-[11px]",d.positive?"text-success":"text-danger"),children:d.value}),void 0!==h&&(0,r.jsx)(c,{value:h,className:"mt-3",label:e}),x&&x.length>1&&(0,r.jsx)("div",{className:"-mx-5 -mb-5 mt-3 opacity-80",children:(0,r.jsx)(u,{values:x,tone:m,width:240,height:28,stretch:!0,live:!1})})]})}],93999)},54149,21176,e=>{var r=e.i(43476),t=e.i(71645),a=e.i(78571),s=e.i(35084);e.s(["f",0,function({value:e,max:n=100,label:l,sublabel:i,tone:o,thresholds:c=s.q,higherIsBetter:d=!1,size:u=140,display:x,ticks:h=!0,hideLabel:f=!1,className:m,testId:p}){let g=(0,t.useId)().replace(/:/g,""),v="number"==typeof e&&Number.isFinite(e),b=v?Math.max(0,Math.min(100,e/(n||1)*100)):0,j=o??(v?d?(0,s.Z)(100-b,c):(0,s.Z)(b,c):"muted"),y=Math.max(4,Math.round(u/16)),N=50-y/2-4,w=2*Math.PI*N,k=.75*w,_=k*b/100,M=u>=140,S=x??(v?`${Math.round(b)}%`:"—"),C=h?Array.from({length:11},(e,t)=>{let a=(135+270*t/10)*Math.PI/180,s=50-(t%5==0?4:2.5);return(0,r.jsx)("line",{x1:50+48.5*Math.cos(a),y1:50+48.5*Math.sin(a),x2:50+s*Math.cos(a),y2:50+s*Math.sin(a),stroke:"var(--color-border-strong)",strokeWidth:.8},t)}):null;return(0,r.jsxs)("div",{role:"img","aria-label":`${l}: ${S}`,"data-testid":p,className:(0,a.f)("relative inline-flex flex-col items-center",m),style:{width:u},children:[(0,r.jsxs)("svg",{viewBox:"0 0 100 100",width:u,height:u,"aria-hidden":"true",className:"overflow-visible",children:[M&&(0,r.jsx)("defs",{children:(0,r.jsxs)("filter",{id:`g${g}`,x:"-30%",y:"-30%",width:"160%",height:"160%",children:[(0,r.jsx)("feGaussianBlur",{stdDeviation:"2.2",result:"blur"}),(0,r.jsxs)("feMerge",{children:[(0,r.jsx)("feMergeNode",{in:"blur"}),(0,r.jsx)("feMergeNode",{in:"SourceGraphic"})]})]})}),C,(0,r.jsx)("circle",{cx:50,cy:50,r:N,fill:"none",stroke:"var(--color-border)",strokeWidth:y,strokeLinecap:"round",strokeDasharray:`${k} ${w}`,transform:"rotate(135 50 50)"}),(0,r.jsx)("circle",{cx:50,cy:50,r:N,fill:"none",stroke:s.v[j],strokeWidth:y,strokeLinecap:"round",transform:"rotate(135 50 50)",filter:M?`url(#g${g})`:void 0,style:{"--dash":`${_} ${w}`},className:"[stroke-dasharray:var(--dash)] transition-[stroke-dasharray] duration-1000 ease-out-expo starting:[stroke-dasharray:0_1000]"})]}),(0,r.jsxs)("div",{className:"pointer-events-none absolute inset-0 flex flex-col items-center justify-center",style:{height:u},children:[(0,r.jsx)("span",{className:(0,a.f)("num font-bold leading-none",s.T[j],M&&s.z[j]),style:{fontSize:Math.max(12,.2*u)},children:S}),i&&(0,r.jsx)("span",{className:"num mt-1 text-text-muted",style:{fontSize:Math.max(9,.075*u)},children:i})]}),!f&&(0,r.jsx)("span",{className:"-mt-[10%] text-center text-[10px] font-medium uppercase tracking-[0.15em] text-text-muted",children:l})]})}],54149);var n=e.i(70703),l=e.i(65369);let i=(0,n.default)(()=>e.A(1321),{loadableGenerated:{modules:[69944]},ssr:!1,loading:()=>(0,r.jsx)(l.l,{className:"h-[180px] w-full"})});e.s(["f",0,i],21176)},3062,e=>{var r=e.i(43476),t=e.i(78571),a=e.i(35084);let s={primary:"[--panel-corner-color:color-mix(in_srgb,var(--color-primary)_60%,transparent)]",accent:"[--panel-corner-color:color-mix(in_srgb,var(--color-accent)_70%,transparent)]",success:"[--panel-corner-color:color-mix(in_srgb,var(--color-success)_60%,transparent)]",warning:"[--panel-corner-color:color-mix(in_srgb,var(--color-warning)_70%,transparent)]",danger:"[--panel-corner-color:color-mix(in_srgb,var(--color-danger)_70%,transparent)]",info:"[--panel-corner-color:color-mix(in_srgb,var(--color-info)_60%,transparent)]",muted:"[--panel-corner-color:var(--color-border-strong)]"},n={primary:"[--glow-hover-color:var(--color-glow)]",accent:"[--glow-hover-color:var(--color-glow-accent)]",success:"[--glow-hover-color:var(--color-glow-success)]",warning:"[--glow-hover-color:var(--color-glow-warning)]",danger:"[--glow-hover-color:var(--color-glow-danger)]",info:"[--glow-hover-color:var(--color-glow)]",muted:"[--glow-hover-color:var(--color-glow)]"},l={primary:"hover:border-primary/30",accent:"hover:border-accent/40",success:"hover:border-success/30",warning:"hover:border-warning/40",danger:"hover:border-danger/40",info:"hover:border-info/30",muted:"hover:border-border-strong"},i={none:"",sm:"p-3",md:"p-5",lg:"p-6"};e.s(["f",0,function({tone:e="primary",corners:o=!0,interactive:c=!0,hero:d=!1,title:u,description:x,icon:h,action:f,as:m="div",padding:p="md",testId:g,className:v,children:b,...j}){return(0,r.jsxs)(m,{...j,"data-testid":g??j["data-testid"],className:(0,t.f)("relative rounded-panel border border-border bg-surface transition-colors duration-300",i[p],o&&"panel-corners",o&&s[e],c&&"glow-hover",c&&n[e],c&&l[e],d&&"grid-bg overflow-hidden bg-surface/80",v),children:[(u||f||h)&&(0,r.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[h&&(0,r.jsx)("span",{className:(0,t.f)("mt-0.5 shrink-0",a.T[e]),children:h}),(0,r.jsxs)("div",{className:"min-w-0",children:[u&&(0,r.jsx)("h3",{className:"text-xs font-bold uppercase tracking-wider",children:u}),x&&(0,r.jsx)("p",{className:"mt-0.5 text-[11px] text-text-muted",children:x})]})]}),f]}),b]})}])},65369,e=>{var r=e.i(43476),t=e.i(78571);function a({className:e}){return(0,r.jsx)("div",{"aria-hidden":"true",className:(0,t.f)("skeleton h-3 w-full",e)})}e.s(["l",0,a,"g",0,function({count:e=4,className:s}){return(0,r.jsx)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("grid gap-4 sm:grid-cols-2 lg:grid-cols-4",s),children:Array.from({length:e},(e,t)=>(0,r.jsxs)("div",{className:"panel-corners rounded-panel border border-border bg-surface p-5",children:[(0,r.jsx)(a,{className:"h-2 w-1/2"}),(0,r.jsx)(a,{className:"mt-4 h-7 w-2/3"}),(0,r.jsx)(a,{className:"mt-3 h-1 w-full opacity-60"})]},t))})},"F",0,function({rows:e=5,cols:s=4,className:n}){return(0,r.jsxs)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("overflow-hidden rounded-panel border border-border",n),children:[(0,r.jsx)("div",{className:"flex gap-4 border-b border-border bg-surface px-4 py-3",children:Array.from({length:s},(e,t)=>(0,r.jsx)(a,{className:"h-2 flex-1 opacity-60"},t))}),Array.from({length:e},(e,n)=>(0,r.jsx)("div",{className:"flex gap-4 border-b border-border/50 px-4 py-3 last:border-0",children:Array.from({length:s},(e,s)=>(0,r.jsx)(a,{className:(0,t.f)("h-3 flex-1",(n+s)%3==0&&"max-w-[60%]")},s))},n))]})},"Q",0,function({lines:e=3,className:s}){let n=["w-full","w-11/12","w-4/5","w-2/3","w-3/4"];return(0,r.jsx)("div",{role:"status","aria-label":"Loading",className:(0,t.f)("space-y-2",s),children:Array.from({length:e},(e,t)=>(0,r.jsx)(a,{className:n[t%n.length]},t))})}])},75723,e=>{var r=e.i(43476),t=e.i(78571),a=e.i(46670);let s={success:"bg-success shadow-[0_0_6px_var(--color-success)]",warning:"bg-warning shadow-[0_0_6px_var(--color-warning)]",danger:"bg-danger shadow-[0_0_6px_var(--color-danger)]",info:"bg-info shadow-[0_0_6px_var(--color-info)]",default:"bg-text-muted"},n={success:"bg-success",warning:"bg-warning",danger:"bg-danger",info:"bg-info",default:"bg-text-muted"},l=new Set(["ONLINE","RUNNING","ACTIVE","HEALTHY","CRITICAL","UPDATING","PROVISIONING"]);e.s(["f",0,function({status:e,pulse:i,size:o="sm",className:c,label:d}){let u=(0,a.k)(e),x=i??l.has(e.toUpperCase()),h="xs"===o?"h-1.5 w-1.5":"h-2 w-2";return(0,r.jsxs)("span",{className:(0,t.f)("relative inline-flex shrink-0",h,c),role:d?"img":void 0,"aria-label":d,"aria-hidden":!d||void 0,children:[x&&(0,r.jsx)("span",{className:(0,t.f)("absolute inset-0 rounded-full animate-halo",n[u])}),(0,r.jsx)("span",{className:(0,t.f)("relative inline-flex rounded-full",h,s[u])})]})}])},71417,e=>{e.s(["L",0,function(e){if(0===e)return"0 B";let r=Math.floor(Math.log(e)/Math.log(1024));return`${parseFloat((e/Math.pow(1024,r)).toFixed(1))} ${["B","KB","MB","GB","TB"][r]}`},"C",0,function(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"—"}])},21218,e=>{let r=(0,e.i(75254).f)("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"}]]);e.s(["f",0,r],21218)},71689,e=>{let r=(0,e.i(75254).f)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["f",0,r],71689)},15057,e=>{let r=(0,e.i(75254).f)("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);e.s(["f",0,r],15057)},78917,e=>{let r=(0,e.i(75254).f)("ExternalLink",[["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"}]]);e.s(["f",0,r],78917)},81203,e=>{let r=(0,e.i(75254).f)("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);e.s(["f",0,r],81203)},12181,14098,e=>{let r=(0,e.i(75254).f)("RefreshCcwDot",[["path",{d:"M3 2v6h6",key:"18ldww"}],["path",{d:"M21 12A9 9 0 0 0 6 5.3L3 8",key:"1pbrqz"}],["path",{d:"M21 22v-6h-6",key:"usdfbe"}],["path",{d:"M3 12a9 9 0 0 0 15 6.7l3-2.7",key:"1hosoe"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);e.s(["f",0,r],12181);var t=e.i(43476),a=e.i(71645),s=e.i(68759),n=e.i(32568),l=e.i(82983),i=e.i(18393),o=e.i(31278);e.s(["E",0,function({open:e,node:r,onClose:c,onSaved:d}){let[u,x]=(0,a.useState)([]),[h,f]=(0,a.useState)(""),[m,p]=(0,a.useState)(!0),[g,v]=(0,a.useState)(!1),[b,j]=(0,a.useState)(""),[y,N]=(0,a.useState)(!1);(0,a.useEffect)(()=>{e&&(j(""),f(r?.role?.id??""),p(!0),N(!0),(async()=>{try{let e=await l.f.roles.list();x(e.data??[])}catch{j("Failed to load roles")}finally{N(!1)}})())},[e,r?.role?.id]);let w=async()=>{if(r){v(!0),j("");try{let e=r.role?.id;e&&e!==h&&await l.f.roles.unassign(e,{nodeIds:[r.id]}),h&&await l.f.roles.assign(h,{nodeIds:[r.id],defer:!m});let t=h?u.find(e=>e.id===h)??null:null;d(t),c()}catch(e){j(e instanceof Error?e.message:"Failed to assign role")}finally{v(!1)}}},k=async()=>{if(r?.role){v(!0),j("");try{await l.f.roles.unassign(r.role.id,{nodeIds:[r.id]}),d(null),c()}catch(e){j(e instanceof Error?e.message:"Failed to unassign role")}finally{v(!1)}}},_=()=>{j(""),v(!1),c()};return(0,t.jsx)(n.n,{open:e,onClose:_,title:r?.role?"Change Role":"Assign Role",description:r?`Node: ${r.name}`:"",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[y?(0,t.jsxs)("div",{className:"flex items-center gap-2 py-4 text-xs text-text-muted",children:[(0,t.jsx)(o.f,{className:"h-4 w-4 animate-spin"}),"Loading roles…"]}):0===u.length?(0,t.jsx)("p",{className:"text-xs text-text-muted py-4",children:"No roles found. Create a role first on the Roles page."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.G,{label:"Role",children:(0,t.jsxs)("select",{value:h,onChange:e=>f(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"",children:"— No role —"}),u.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]})}),h&&(0,t.jsxs)("label",{className:"flex items-center gap-2 text-xs cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>p(e.target.checked),className:"rounded border-border"}),"Apply role immediately"]})]}),b&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:b}),(0,t.jsxs)("div",{className:"flex justify-between pt-2",children:[(0,t.jsx)("div",{children:r?.role&&(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:()=>void k(),disabled:g,children:"Unassign Role"})}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:_,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void w(),disabled:g||!h||0===u.length,icon:g?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:g?"Saving…":r?.role?"Change Role":"Assign Role"})]})]})]})})},"F",0,function({open:e,node:r,onClose:c,onSaved:d}){let[u,x]=(0,a.useState)(""),[h,f]=(0,a.useState)(""),[m,p]=(0,a.useState)(""),[g,v]=(0,a.useState)(!1),[b,j]=(0,a.useState)("");(0,a.useEffect)(()=>{if(r){x(r.name);try{let e=JSON.parse(r.tags);f(e.join(", "))}catch{f("")}p(r.status),j("")}},[r]);let y=async()=>{if(r&&u.trim()){v(!0),j("");try{let e=h.split(",").map(e=>e.trim()).filter(Boolean);await l.f.nodes.update(r.id,{name:u.trim(),tags:e,status:m.toUpperCase()}),d(),c()}catch(e){j(e instanceof Error?e.message:"Failed to update node")}finally{v(!1)}}},N=()=>{j(""),v(!1),c()};return(0,t.jsx)(n.n,{open:e,onClose:N,title:"Edit Node",description:r?`${r.hostname}`:"",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(n.G,{label:"Name",required:!0,children:(0,t.jsx)("input",{type:"text",value:u,onChange:e=>x(e.target.value),className:n.W})}),(0,t.jsx)(n.G,{label:"Status",children:(0,t.jsxs)("select",{value:m,onChange:e=>p(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"ONLINE",children:"ONLINE"}),(0,t.jsx)("option",{value:"OFFLINE",children:"OFFLINE"}),(0,t.jsx)("option",{value:"DEGRADED",children:"DEGRADED"}),(0,t.jsx)("option",{value:"PROVISIONING",children:"PROVISIONING"}),(0,t.jsx)("option",{value:"MAINTENANCE",children:"MAINTENANCE"})]})}),(0,t.jsxs)(n.G,{label:"Tags",children:[(0,t.jsx)("input",{type:"text",value:h,onChange:e=>f(e.target.value),placeholder:"web, production, us-east",className:n.W}),(0,t.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Comma-separated list of tags"})]}),b&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:b}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:N,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void y(),disabled:g||!u.trim(),icon:g?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:g?"Saving…":"Save Changes"})]})]})})},"M",0,function({open:e,onClose:r,onRegistered:c}){let[d,u]=(0,a.useState)(""),[x,h]=(0,a.useState)(""),[f,m]=(0,a.useState)("4100"),[p,g]=(0,a.useState)("linux"),[v,b]=(0,a.useState)("x86_64"),[j,y]=(0,a.useState)(""),[N,w]=(0,a.useState)(!1),[k,_]=(0,a.useState)(""),M=async()=>{if(d.trim()&&x.trim()){w(!0),_("");try{let e=j.split(",").map(e=>e.trim()).filter(Boolean);await l.f.nodes.register({name:d.trim(),hostname:x.trim(),ipAddress:x.trim(),port:Number(f)||4100,os:p,arch:v,tags:e,agentVersion:"1.1.0"}),c(),S()}catch(e){_(e instanceof Error?e.message:"Failed to register node")}finally{w(!1)}}},S=()=>{u(""),h(""),m("4100"),g("linux"),b("x86_64"),y(""),_(""),w(!1),r()};return(0,t.jsx)(n.n,{open:e,onClose:S,title:"Register Node",description:"Manually register a node already running the agent",icon:(0,t.jsx)(i.f,{className:"h-5 w-5 text-primary"}),children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(n.G,{label:"Node Name",required:!0,children:(0,t.jsx)("input",{type:"text",value:d,onChange:e=>u(e.target.value),placeholder:"web-server-01",className:n.W,autoFocus:!0})}),(0,t.jsx)(n.G,{label:"FQDN / Hostname",required:!0,children:(0,t.jsx)("input",{type:"text",value:x,onChange:e=>h(e.target.value),placeholder:"node-1.example.com",className:n.W})}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,t.jsx)(n.G,{label:"Port",children:(0,t.jsx)("input",{type:"number",value:f,onChange:e=>m(e.target.value),className:n.W})}),(0,t.jsx)(n.G,{label:"OS",children:(0,t.jsxs)("select",{value:p,onChange:e=>g(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"linux",children:"Linux"}),(0,t.jsx)("option",{value:"darwin",children:"macOS"}),(0,t.jsx)("option",{value:"windows",children:"Windows"})]})}),(0,t.jsx)(n.G,{label:"Architecture",children:(0,t.jsxs)("select",{value:v,onChange:e=>b(e.target.value),className:n.N,children:[(0,t.jsx)("option",{value:"x86_64",children:"x86_64"}),(0,t.jsx)("option",{value:"aarch64",children:"aarch64"}),(0,t.jsx)("option",{value:"arm",children:"arm"})]})})]}),(0,t.jsxs)(n.G,{label:"Tags",children:[(0,t.jsx)("input",{type:"text",value:j,onChange:e=>y(e.target.value),placeholder:"web, production, us-east",className:n.W}),(0,t.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Comma-separated"})]}),k&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",children:k}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,t.jsx)(s.K,{variant:"secondary",size:"sm",onClick:S,children:"Cancel"}),(0,t.jsx)(s.K,{size:"sm",onClick:()=>void M(),disabled:N||!d.trim()||!x.trim(),icon:N?(0,t.jsx)(o.f,{className:"h-3.5 w-3.5 animate-spin"}):void 0,children:N?"Registering…":"Register Node"})]})]})})}],14098)},91810,e=>{let r=(0,e.i(75254).f)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]);e.s(["f",0,r],91810)},90317,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a={bindSnapshot:function(){return d},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return u},getOrCreateGlobalAsyncLocalStorage:function(){return c}};for(var s in a)Object.defineProperty(t,s,{enumerable:!0,get:a[s]});let n=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class l{disable(){throw n}getStore(){}run(){throw n}exit(){throw n}enterWith(){throw n}static bind(e){return e}}let i="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return i?new i:new l}function c(e){let r=Symbol.for(`@next/${e}@16.4.3`),t=globalThis;return t[r]??=o()}function d(e){return i?i.bind(e):l.bind(e)}function u(){return i?i.snapshot():function(e,...r){return e(...r)}}},42344,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return a}});let a=(0,e.r(90317).getOrCreateGlobalAsyncLocalStorage)("work-async-storage")},63599,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return a.workAsyncStorageInstance}});let a=e.r(42344)},70703,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let a=e.r(55682)._(e.r(69093));function s(e,r){let t={};"function"==typeof e&&(t.loader=e);let s={...t,...r};return(0,a.default)({...s,modules:s.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},9885,(e,r,t)=>{function a(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return a}})},67585,(e,r,t)=>{e.i(47167),Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSRForNextDynamic",{enumerable:!0,get:function(){return l}});let a=e.r(71645),s=e.r(74080);e.r(32061);let n=e.r(49354).createReactBrowserBailoutReason.bind(null,"next/dynamic");function l({children:e}){return(0,a.use)((0,s.browser)(n)),e}},69093,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let a=e.r(43476),s=e.r(71645),n=e.r(67585),l=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},c=function(e){let r={...o,...e},t=(0,s.lazy)(()=>r.loader().then(i)),c=r.loading;function d(e){let i=c?(0,a.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,o=!r.ssr||!!r.loading,d=o?s.Suspense:s.Fragment,u=r.ssr?(0,a.jsxs)(a.Fragment,{children:["u"<typeof window?(0,a.jsx)(l.PreloadChunks,{moduleIds:r.modules}):null,(0,a.jsx)(t,{...e})]}):(0,a.jsx)(n.BailoutToCSRForNextDynamic,{children:(0,a.jsx)(t,{...e})});return(0,a.jsx)(d,{...o?{fallback:i}:{},children:u})}return d.displayName="LoadableComponent",d}},52157,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return o}});let a=e.r(43476),s=e.r(74080),n=e.r(63599),l=e.r(9885),i=e.r(43369);function o({moduleIds:e}){if("u">typeof window)return null;let r=n.workAsyncStorage.getStore();if(void 0===r)return null;let t=[];if(r.reactLoadableManifest&&e){let a=r.reactLoadableManifest;for(let r of e){if(!a[r])continue;let e=a[r].files;t.push(...e)}}if(0===t.length)return null;let c=(0,i.getAssetTokenQuery)();return(0,a.jsx)(a.Fragment,{children:t.map(e=>{let t=`${r.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,a.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style",nonce:r.nonce},e):((0,s.preload)(t,{as:"script",fetchPriority:"low",nonce:r.nonce}),null)})})}},49354,(e,r,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var a={createReactBrowserBailoutReason:function(){return l},getReactBrowserBailoutReason:function(){return i},isNextBrowserBailoutError:function(){return o}};for(var s in a)Object.defineProperty(t,s,{enumerable:!0,get:a[s]});let n=Symbol.for("next.browser-bailout-reason");function l(e){return{$$typeof:n,reason:e}}function i(e){let r=e?.cause;return r?.$$typeof===n?r.reason:void 0}function o(e){return void 0!==i(e)}}])})();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hivemagnus/magnus-ui",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Magnus UI: web console for the Magnus fleet control plane, shipped as a prebuilt Next.js server with the magnus-ui CLI",
5
5
  "keywords": [
6
6
  "magnus",
@@ -64,7 +64,7 @@
64
64
  "ws": "^8.22.0"
65
65
  },
66
66
  "devDependencies": {
67
- "@hivemagnus/magnus-contracts": "1.0.2",
67
+ "@hivemagnus/magnus-contracts": "1.1.0",
68
68
  "@playwright/test": "^1.64.1",
69
69
  "@tailwindcss/postcss": "^4.0.0",
70
70
  "@types/node": "^22.20.5",
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{"NEXT_PUBLIC_API_URL":"https://localhost:4000","NEXT_PUBLIC_AGENT_VERSION":"1.0.2"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":true,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/opt/magnus-ui-build","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"deprecated":{},"experimental":{"agentUpgrade":"security","agentFeedback":false,"coldCacheBadge":false,"collapseAdapterRoutes":true,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"parallelRouteMetadata":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"reactBrowserBailout":true,"useOffline":false,"varyParams":true,"optimisticRouting":true,"concurrentRouterQueue":false,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptMozjpeg":true,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"useCacheStaticRootParamTracking":false,"globalNotFound":false,"explicitParallelRouteChildren":true,"strictRouteMatching":true,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"disableResumeDataCacheCompression":false,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"exposeRuntimeErrorsToHMR":false,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackStaleOutputMaxAge":604800000,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackSharedRuntime":true,"serverActions":{"bodySizeLimit":"2mb"},"turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","serverExternalPackages":["ssh2"],"turbopack":{"root":"/opt/magnus-ui-build"},"repoRoot":"/opt/magnus-ui-build","distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/dashboard-plugins/:path*","destination":"/api/hermes/dashboard/dashboard-plugins/:path*"},{"source":"/kanban","destination":"/api/hermes/dashboard/kanban"}],"fallback":[]},"_originalRedirects":[{"source":"/hermes","destination":"/orchestra/installations","permanent":true},{"source":"/hermes/installations","destination":"/orchestra/installations","permanent":true},{"source":"/hermes/profiles","destination":"/orchestra/profiles","permanent":true},{"source":"/orchestra/agents","destination":"/orchestra/installations","permanent":true}]}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_API_URL":"https://localhost:4000","NEXT_PUBLIC_AGENT_VERSION":"1.1.0","NEXT_PUBLIC_MAGNUS_VERSION":"1.1.0"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":true,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/opt/magnus-ui-build","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"deprecated":{},"experimental":{"agentUpgrade":"security","agentFeedback":false,"coldCacheBadge":false,"collapseAdapterRoutes":true,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"parallelRouteMetadata":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"reactBrowserBailout":true,"useOffline":false,"varyParams":true,"optimisticRouting":true,"concurrentRouterQueue":false,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptMozjpeg":true,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"useCacheStaticRootParamTracking":false,"globalNotFound":false,"explicitParallelRouteChildren":true,"strictRouteMatching":true,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"disableResumeDataCacheCompression":false,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"exposeRuntimeErrorsToHMR":false,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackStaleOutputMaxAge":604800000,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackSharedRuntime":true,"serverActions":{"bodySizeLimit":"2mb"},"turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","serverExternalPackages":["ssh2"],"turbopack":{"root":"/opt/magnus-ui-build"},"repoRoot":"/opt/magnus-ui-build","distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/dashboard-plugins/:path*","destination":"/api/hermes/dashboard/dashboard-plugins/:path*"},{"source":"/kanban","destination":"/api/hermes/dashboard/kanban"}],"fallback":[]},"_originalRedirects":[{"source":"/hermes","destination":"/orchestra/installations","permanent":true},{"source":"/hermes/installations","destination":"/orchestra/installations","permanent":true},{"source":"/hermes/profiles","destination":"/orchestra/profiles","permanent":true},{"source":"/orchestra/agents","destination":"/orchestra/installations","permanent":true}]}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hivemagnus/magnus-ui",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Magnus UI: web console for the Magnus fleet control plane, shipped as a prebuilt Next.js server with the magnus-ui CLI",
5
5
  "keywords": [
6
6
  "magnus",
@@ -64,7 +64,7 @@
64
64
  "ws": "^8.22.0"
65
65
  },
66
66
  "devDependencies": {
67
- "@hivemagnus/magnus-contracts": "1.0.2",
67
+ "@hivemagnus/magnus-contracts": "1.1.0",
68
68
  "@playwright/test": "^1.64.1",
69
69
  "@tailwindcss/postcss": "^4.0.0",
70
70
  "@types/node": "^22.20.5",
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[8884,a=>{async function b(a){if(!a||"object"!=typeof a)return null;if("data"in a&&void 0!==a.data)return a.data;if("response"in a&&a.response instanceof Response&&!a.response.bodyUsed){let b=await a.response.clone().text().catch(()=>"");if(!b)return null;try{return JSON.parse(b)}catch{return b}}return null}a.s(["R",0,function(a){if(!a||"object"!=typeof a||!("error"in a))return;let b=a.error;if(b&&"object"==typeof b&&"message"in b&&"string"==typeof b.message)return b.message},"O",0,b])},32860,a=>{let b=(0,a.i(70106).f)("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["f",0,b],32860)},53722,a=>{let b=(0,a.i(70106).f)("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["f",0,b],53722)},33441,a=>{let b=(0,a.i(70106).f)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["f",0,b],33441)},5784,a=>{let b=(0,a.i(70106).f)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["f",0,b],5784)},50522,a=>{let b=(0,a.i(70106).f)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["f",0,b],50522)},68790,a=>{let b=(0,a.i(70106).f)("CircleArrowUp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);a.s(["f",0,b],68790)},53254,a=>{let b=(0,a.i(70106).f)("CodeXml",[["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"}]]);a.s(["f",0,b],53254)},20494,a=>{let b=(0,a.i(70106).f)("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"}]]);a.s(["f",0,b],20494)},96641,a=>{let b=(0,a.i(70106).f)("Earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["f",0,b],96641)},4720,a=>{let b=(0,a.i(70106).f)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["f",0,b],4720)},37047,a=>{let b=(0,a.i(70106).f)("KeyRound",[["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"}]]);a.s(["f",0,b],37047)},9347,a=>{let b=(0,a.i(70106).f)("Library",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]]);a.s(["f",0,b],9347)},24552,a=>{let b=(0,a.i(70106).f)("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);a.s(["f",0,b],24552)},99464,a=>{let b=(0,a.i(70106).f)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["f",0,b],99464)},15618,a=>{let b=(0,a.i(70106).f)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["f",0,b],15618)},71727,a=>{let b=(0,a.i(70106).f)("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);a.s(["f",0,b],71727)},87654,a=>{let b=(0,a.i(70106).f)("RotateCcw",[["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"}]]);a.s(["f",0,b],87654)},4416,a=>{let b=(0,a.i(70106).f)("ShieldCheck",[["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"}]]);a.s(["f",0,b],4416)},96737,a=>{let b=(0,a.i(70106).f)("Siren",[["path",{d:"M7 18v-6a5 5 0 1 1 10 0v6",key:"pcx96s"}],["path",{d:"M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z",key:"1b4s83"}],["path",{d:"M21 12h1",key:"jtio3y"}],["path",{d:"M18.5 4.5 18 5",key:"g5sp9y"}],["path",{d:"M2 12h1",key:"1uaihz"}],["path",{d:"M12 2v1",key:"11qlp1"}],["path",{d:"m4.929 4.929.707.707",key:"1i51kw"}],["path",{d:"M12 12v6",key:"3ahymv"}]]);a.s(["f",0,b],96737)},72162,a=>{let b=(0,a.i(70106).f)("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);a.s(["f",0,b],72162)},81560,a=>{let b=(0,a.i(70106).f)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);a.s(["f",0,b],81560)},60246,a=>{let b=(0,a.i(70106).f)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);a.s(["f",0,b],60246)},59407,a=>{let b=(0,a.i(70106).f)("Webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]);a.s(["f",0,b],59407)},1027,a=>{let b=(0,a.i(70106).f)("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"}]]);a.s(["f",0,b],1027)}]})();
2
-
3
- //# sourceMappingURL=_0pgm38c_ix0jk._.js.map
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[68415,a=>{var b=a.i(87924),c=a.i(8387);let d={primary:"border border-primary/60 bg-primary/10 text-primary hover:bg-primary/20 hover:border-primary hover:shadow-[0_0_12px_var(--color-glow)]",secondary:"border border-border bg-surface text-text-muted hover:border-primary/40 hover:text-text hover:shadow-[0_0_8px_var(--color-glow)]",danger:"border border-danger/60 bg-danger/10 text-danger hover:bg-danger/20 hover:border-danger hover:shadow-[0_0_12px_rgba(255,23,68,0.3)]",success:"border border-success/60 bg-success/10 text-success hover:bg-success/20 hover:border-success hover:shadow-[0_0_12px_rgba(0,230,118,0.3)]",ghost:"text-text-muted hover:text-accent hover:drop-shadow-[0_0_6px_var(--color-glow-accent)]"},e={sm:"h-8 px-3 text-[11px]",md:"h-9 px-4 text-xs",lg:"h-10 px-5 text-xs"};function f(a="primary",b="md",g){return(0,c.f)("inline-flex items-center justify-center gap-2 rounded-chip font-medium uppercase tracking-wider transition-all duration-200 disabled:opacity-50 disabled:pointer-events-none",d[a],e[b],g)}a.s(["K",0,function({variant:a="primary",size:c="md",icon:d,children:e,className:g,...h}){return(0,b.jsxs)("button",{className:f(a,c,g),...h,children:[d,e]})},"R",0,f])},84505,a=>{let b=(0,a.i(70106).f)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);a.s(["f",0,b],84505)},96221,a=>{let b=(0,a.i(70106).f)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["f",0,b],96221)},69520,a=>{let b=(0,a.i(70106).f)("RefreshCw",[["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"}]]);a.s(["f",0,b],69520)},35125,a=>{let b=(0,a.i(70106).f)("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"}]]);a.s(["f",0,b],35125)},21161,a=>{let b=(0,a.i(70106).f)("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["f",0,b],21161)},33508,a=>{let b=(0,a.i(70106).f)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",0,b],33508)}]})();
2
-
3
- //# sourceMappingURL=_0rq9vgq3rqnck._.js.map
@@ -1,3 +0,0 @@
1
- (()=>{"use strict";module.exports=[95174,a=>{let b=(0,a.i(70106).f)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["f",0,b])},92e3,a=>{var b=a.i(95174);a.s(["f",()=>b.f])},67453,62722,a=>{var b=a.i(70106);let c=(0,b.f)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["f",0,c],67453);let d=(0,b.f)("CircleX",[["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"}]]);a.s(["f",0,d],62722)},41710,a=>{let b=(0,a.i(70106).f)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);a.s(["f",0,b],41710)},97651,a=>{let b=(0,a.i(70106).f)("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);a.s(["f",0,b],97651)},64519,a=>{let b=(0,a.i(70106).f)("Puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]);a.s(["f",0,b],64519)},82478,a=>{let b=(0,a.i(70106).f)("Rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);a.s(["f",0,b],82478)},87532,a=>{let b=(0,a.i(70106).f)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);a.s(["f",0,b],87532)},3314,a=>{let b=(0,a.i(70106).f)("Shield",[["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"}]]);a.s(["f",0,b],3314)},8406,a=>{let b=(0,a.i(70106).f)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);a.s(["f",0,b],8406)},80386,a=>{let b=(0,a.i(70106).f)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);a.s(["f",0,b],80386)},73570,a=>{let b=(0,a.i(70106).f)("TriangleAlert",[["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"}]]);a.s(["f",0,b],73570)}]})();
2
-
3
- //# sourceMappingURL=node_modules_lucide-react_dist_esm_icons_1lvt5_w9b2yub._.js.map
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,[35673,e=>{var t=e.i(43476),r=e.i(64971),a=e.i(71645),n=e.i(18393),s=e.i(40160),i=e.i(32568),l=e.i(4050),o=e.i(39430),c=e.i(82983),d=e.i(58814),u=e.i(31278),p=e.i(53475);let f=(0,e.i(75254).f)("WifiOff",[["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"}]]);var h=e.i(68759);function m({formMode:e,name:r,setName:a,apiSecret:n,setApiSecret:s,hasStoredApiSecret:l,hostname:o,setHostname:c,controlApiPort:d,setControlApiPort:y,url:x,setUrl:g,saving:v,testResult:k,onTestConnection:b,onSave:w,onCancel:j}){return(0,t.jsxs)("div",{className:"space-y-4",children:["create"===e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.G,{label:"Hostname",required:!0,children:(0,t.jsx)("input",{type:"text",className:i.W,placeholder:"e.g. magnus.example.com",value:o,onChange:e=>c(e.target.value)})}),(0,t.jsx)(i.G,{label:"Name",children:(0,t.jsx)("input",{type:"text",className:i.W,placeholder:o.trim()||"Defaults to hostname",value:r,onChange:e=>a(e.target.value)})}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-3",children:(0,t.jsx)(i.G,{label:"Control Port",children:(0,t.jsx)("input",{type:"text",className:i.W,placeholder:"4000",value:d,onChange:e=>y(e.target.value)})})}),o.trim()&&(0,t.jsxs)("div",{className:"rounded border border-border bg-bg/50 px-3 py-2 text-xs text-text-muted",children:["URL:"," ",(0,t.jsxs)("span",{className:"text-text",children:["https://",o.trim(),":",parseInt(d,10)||4e3]})]}),(0,t.jsx)(i.G,{label:"Control API Credential",children:(0,t.jsx)("input",{type:"password",className:i.W,placeholder:l?"Leave blank to keep stored credential":"Dedicated Control API credential",value:n,onChange:e=>s(e.target.value)})}),(0,t.jsx)("div",{className:"rounded border border-border bg-bg p-3 text-xs text-text-muted",children:"This registers an already deployed Control API. Provision hosts with the reviewed key-only release runbook."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.G,{label:"Name",required:!0,children:(0,t.jsx)("input",{type:"text",className:i.W,placeholder:"e.g. Production East",value:r,onChange:e=>a(e.target.value)})}),(0,t.jsx)(i.G,{label:"URL",required:!0,children:(0,t.jsx)("input",{type:"text",className:i.W,placeholder:"e.g. https://magnus.example.com:4000",value:x,onChange:e=>{g(e.target.value)}})}),(0,t.jsx)(i.G,{label:"Control API Credential",children:(0,t.jsx)("input",{type:"password",className:i.W,placeholder:l?"Leave blank to keep stored credential":"Dedicated Control API credential",value:n,onChange:e=>s(e.target.value)})})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsx)(h.K,{variant:"ghost",size:"sm",onClick:b,disabled:"testing"===k||("create"===e?!o.trim():!x),icon:"testing"===k?(0,t.jsx)(u.f,{className:"h-3.5 w-3.5 animate-spin"}):"ok"===k?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 text-success"}):"fail"===k?(0,t.jsx)(f,{className:"h-3.5 w-3.5 text-danger"}):(0,t.jsx)(p.f,{className:"h-3.5 w-3.5"}),children:"testing"===k?"Testing…":"ok"===k?"Connected":"fail"===k?"Failed":"Test Connection"})}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2 border-t border-border",children:[(0,t.jsx)(h.K,{variant:"secondary",size:"md",onClick:j,children:"Cancel"}),(0,t.jsx)(h.K,{variant:"primary",size:"md",onClick:w,disabled:v,icon:v?(0,t.jsx)(u.f,{className:"h-4 w-4 animate-spin"}):void 0,children:v?"Saving…":"create"===e?"Add Node":"Save Changes"})]})]})}var y=e.i(16715),x=e.i(67240),g=e.i(55716);function v({updateStatus:e,updateCheck:r,updateLoading:a,updateResult:n,onCheckUpdates:i,onApplyUpdate:l,onRestart:o,onBack:c}){return(0,t.jsxs)("div",{className:"space-y-4",children:[e&&(0,t.jsxs)("div",{className:"rounded border border-border bg-bg p-3 space-y-2 text-[11px]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-text-muted",children:"Control API"}),(0,t.jsxs)("span",{className:"text-xs",children:["v",e.controlApiVersion]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-text-muted",children:"Agent Version"}),(0,t.jsxs)("span",{className:"text-xs",children:["v",e.agentVersion]})]}),e.gitBranch&&(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-text-muted flex items-center gap-1.5",children:[(0,t.jsx)(g.f,{className:"h-3.5 w-3.5"})," Branch"]}),(0,t.jsx)("span",{className:"text-xs",children:e.gitBranch})]}),e.gitCommit&&(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-text-muted",children:"Commit"}),(0,t.jsx)("span",{className:"text-xs",children:e.gitCommit})]}),e.lastChecked&&(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-text-muted",children:"Last Checked"}),(0,t.jsx)("span",{className:"text-xs",children:new Date(e.lastChecked).toLocaleString()})]})]}),e&&!1===e.isGitRepo&&(0,t.jsxs)("div",{className:"rounded border border-primary/30 bg-primary/10 px-3 py-2 text-[11px] text-text-muted",children:[(0,t.jsx)("span",{className:"font-bold text-primary",children:"Tarball deployment"}),(0,t.jsxs)("span",{className:"ml-1",children:["— Git-based self-update is not available. Use ",(0,t.jsx)("strong",{children:"Deploy"})," from another control node to push updates."]})]}),r&&r.available&&(0,t.jsxs)("div",{className:"rounded border border-warning/30 bg-warning/10 px-3 py-2 text-[11px]",children:[(0,t.jsx)("span",{className:"font-bold text-warning",children:"Update available"}),(0,t.jsxs)("span",{className:"text-text-muted ml-1",children:["— ",r.behindBy," commit",1!==r.behindBy?"s":""," behind (",r.currentCommit," → ",r.remoteCommit,")"]})]}),n&&(0,t.jsx)("div",{className:"rounded border border-success/30 bg-success/10 px-3 py-2 text-[11px] text-success",children:n}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[e?.isGitRepo!==!1&&(0,t.jsx)(h.K,{variant:"secondary",size:"md",onClick:i,disabled:"idle"!==a,icon:"checking"===a?(0,t.jsx)(u.f,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(y.f,{className:"h-4 w-4"}),children:"checking"===a?"Checking…":"Check for Updates"}),r?.available&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(h.K,{variant:"primary",size:"md",onClick:()=>l(!1),disabled:"idle"!==a,icon:"applying"===a?(0,t.jsx)(u.f,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(s.f,{className:"h-4 w-4"}),children:"applying"===a?"Updating…":"Pull & Build"}),(0,t.jsx)(h.K,{variant:"primary",size:"md",onClick:()=>l(!0),disabled:"idle"!==a,icon:"applying"===a?(0,t.jsx)(u.f,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(x.f,{className:"h-4 w-4"}),children:"applying"===a?"Updating…":"Pull, Build & Restart"})]}),(0,t.jsx)(h.K,{variant:"ghost",size:"md",onClick:o,disabled:"idle"!==a,icon:"restarting"===a?(0,t.jsx)(u.f,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(x.f,{className:"h-4 w-4"}),children:"restarting"===a?"Restarting…":"Restart Only"})]}),(0,t.jsx)("div",{className:"flex justify-start pt-2 border-t border-border",children:(0,t.jsx)(h.K,{variant:"ghost",size:"md",onClick:c,children:"← Back to list"})})]})}e.s(["f",0,function({open:e,onClose:u,editNodeId:p,createMode:f}){let{nodes:h,addNode:y,updateNode:x,removeNode:g,switchNode:k,activeNode:b}=(0,l.l)(),[w,j]=(0,a.useState)("list"),[N,C]=(0,a.useState)("create"),[M,S]=(0,a.useState)(null),[_,A]=(0,a.useState)(""),[E,z]=(0,a.useState)(""),[P,R]=(0,a.useState)(""),[L,T]=(0,a.useState)(""),[U,q]=(0,a.useState)("4000"),[O,I]=(0,a.useState)(!1),[$,F]=(0,a.useState)(null),[B,V]=(0,a.useState)("idle"),D=(0,a.useRef)(h);function H(){A(""),z(""),R(""),T(""),q("4000"),F(null),V("idle")}function K(){R(""),F(null),I(!1),V("idle"),u()}async function W(e){try{await g(e)}catch(e){F(e instanceof Error?e.message:"Failed to delete")}}async function G(){let e=L.trim(),t="create"===N?`https://${e}:${parseInt(U,10)||4e3}`:E;if(!t||"create"===N&&!e)return void F("Hostname/URL is required to test connection");V("testing"),F(null);try{let e=(0,o.L)(t),r=await fetch("/api/proxy/health",{method:"GET",headers:e,signal:AbortSignal.timeout(1e4)});r.ok?V("ok"):(V("fail"),F(`Connection failed: HTTP ${r.status}`))}catch(e){V("fail"),F(e instanceof Error?e.message:"Connection failed")}}async function J(){let e="create"===N?_.trim()||L.trim():_.trim(),t="create"===N?`https://${L.trim()}:${parseInt(U,10)||4e3}`:E.trim();if("create"===N&&!L.trim())return void F("Hostname is required");if("edit"===N&&!_.trim())return void F("Name is required");if("edit"===N&&!E.trim())return void F("URL is required");I(!0),F(null),R("");try{if("create"===N){let r=await y({name:e,url:t,...P?{apiSecret:P}:{}});k(r.id)}else M&&await x(M,{name:_.trim(),url:E.trim(),...P?{apiSecret:P}:{}});I(!1),0===h.length&&"create"===N?K():j("list")}catch(e){F(e instanceof Error?e.message:"Failed to save"),I(!1)}}D.current=h,(0,a.useEffect)(()=>{if(e)if(F(null),V("idle"),f)j("form"),C("create"),S(null),H();else if(p){let e=D.current.find(e=>e.id===p);e&&(j("form"),C("edit"),S(e.id),A(e.name),z(e.url),R(""))}else j("list")},[e,f,p]);let[Z,X]=(0,a.useState)(null),[Q,Y]=(0,a.useState)(null),[ee,et]=(0,a.useState)("idle"),[er,ea]=(0,a.useState)(null);async function en(){et("checking"),F(null),ea(null);try{let e=await c.f.selfUpdate.check();e.success&&(Y(e.data??null),e.data.error?F(e.data.error):e.data.available||ea("Already up to date."))}catch(t){let e="Failed to check for updates";if(t&&"object"==typeof t&&"response"in t)try{let a=(0,r.R)(await (0,r.O)(t));a&&(e=a)}catch{}else t instanceof Error&&(e=t.message);F(e)}finally{et("idle")}}async function es(e){et("applying"),F(null),ea(null);try{let t=await c.f.selfUpdate.apply(e);if(t.success){let e=t.data;if(!e)return;e.updated?ea(`Updated from v${e.previousVersion} → v${e.currentVersion}`+(e.restart?.scheduled?`. Restarting via ${e.restart.method}…`:". Restart manually to apply.")):ea("Code pulled but no version change detected."),Y(null);let r=await c.f.selfUpdate.status();r.success&&X(r.data??null)}}catch(e){F(e instanceof Error?e.message:"Update failed")}finally{et("idle")}}async function ei(){et("restarting"),F(null);try{let e=await c.f.selfUpdate.restart();e.success&&ea(`Restart scheduled via ${e.data.method}. Reconnecting shortly…`)}catch(e){F(e instanceof Error?e.message:"Restart failed")}finally{et("idle")}}if(!e)return null;let el="list"===w?"Manage remote Control API endpoints":"update"===w?`Update the active Control Node (${b.name})`:"create"===N?"Connect to a remote Control API instance":"Update control node settings",eo="update"===w?(0,t.jsx)(s.f,{className:"h-5 w-5 text-primary"}):(0,t.jsx)(n.f,{className:"h-5 w-5 text-primary"});return(0,t.jsxs)(i.n,{open:e,onClose:K,title:"list"===w?"Control Nodes":"update"===w?"Update Control Node":"create"===N?"Add Control Node":"Edit Control Node",description:el,icon:eo,className:"max-w-xl",children:[$&&(0,t.jsx)("div",{className:"mb-4 rounded border border-danger/30 bg-danger/10 px-3 py-2 text-[11px] text-danger",children:$}),"list"===w&&(0,t.jsx)(d.f,{nodes:h,activeNodeId:b.id,onEdit:function(e){j("form"),C("edit"),S(e.id),A(e.name),z(e.url),R(""),F(null),V("idle")},onDelete:e=>void W(e),onAdd:function(){j("form"),C("create"),S(null),H()},onUpdate:function(){j("update"),F(null),Y(null),ea(null),et("idle"),(async()=>{try{let e=await c.f.selfUpdate.status();e.success&&X(e.data??null)}catch{}})()}}),"form"===w&&(0,t.jsx)(m,{formMode:N,name:_,setName:A,apiSecret:P,setApiSecret:R,hasStoredApiSecret:!!(M&&h.find(e=>e.id===M)?.hasApiSecret),hostname:L,setHostname:T,controlApiPort:U,setControlApiPort:q,url:E,setUrl:e=>{z(e),V("idle")},saving:O,testResult:B,onTestConnection:()=>void G(),onSave:()=>void J(),onCancel:()=>{h.length>0?(R(""),j("list"),F(null)):K()}}),"update"===w&&(0,t.jsx)(v,{activeNodeName:b.name,updateStatus:Z,updateCheck:Q,updateLoading:ee,updateResult:er,onCheckUpdates:()=>void en(),onApplyUpdate:e=>void es(e),onRestart:()=>void ei(),onBack:()=>j("list")})]})}],35673)},58814,e=>{var t=e.i(43476),r=e.i(18393),a=e.i(88699),n=e.i(27612),s=e.i(7233),i=e.i(40160),l=e.i(68759);e.s(["f",0,function({nodes:e,activeNodeId:o,onEdit:c,onDelete:d,onAdd:u,onUpdate:p}){return(0,t.jsxs)("div",{className:"space-y-3",children:[0===e.length?(0,t.jsx)("div",{className:"rounded border border-border bg-bg p-6 text-center text-[11px] text-text-muted",children:"No control nodes configured. Add one to connect to a remote Control API."}):(0,t.jsx)("div",{className:"space-y-2 max-h-80 overflow-y-auto",children:e.map(e=>(0,t.jsxs)("div",{className:`flex items-center justify-between rounded border px-3 py-2.5 ${e.id===o?"border-primary/50 bg-primary/5":"border-border bg-bg"}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)(r.f,{className:"h-4 w-4 shrink-0 text-text-muted"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-[11px] font-bold truncate",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-text-muted truncate",children:e.url})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 ml-2 shrink-0",children:[e.id===o&&(0,t.jsx)("span",{className:"mr-1 rounded-full bg-primary/20 px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider text-primary",children:"Active"}),(0,t.jsx)("button",{onClick:()=>c(e),className:"rounded-md p-1.5 text-text-muted hover:bg-surface-hover hover:text-text transition-all",title:"Edit",children:(0,t.jsx)(a.f,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{onClick:()=>d(e.id),className:"rounded-md p-1.5 text-text-muted hover:bg-danger/10 hover:text-danger transition-all",title:"Delete",children:(0,t.jsx)(n.f,{className:"h-3.5 w-3.5"})})]})]},e.id))}),(0,t.jsx)(l.K,{variant:"secondary",size:"md",onClick:u,icon:(0,t.jsx)(s.f,{className:"h-4 w-4"}),className:"w-full",children:"Add Control Node"}),(0,t.jsx)(l.K,{variant:"ghost",size:"md",onClick:p,icon:(0,t.jsx)(i.f,{className:"h-4 w-4"}),className:"w-full",children:"Check for Updates"})]})}])},1092,16141,e=>{var t=e.i(43476),r=e.i(71645),a=e.i(63639),n=e.i(78571);let s={connected:!1,entries:[]},i=1,l=new Set;function o(e){for(let t of(s=e,l))t()}let c={subscribe:e=>(l.add(e),()=>l.delete(e)),getSnapshot:()=>s,getServerSnapshot:()=>d,push(e){let t={...e,id:i++,at:e.at??Date.now()};o({...s,entries:[t,...s.entries].slice(0,50)})},setConnected(e){s.connected!==e&&o({...s,connected:e})}},d={connected:!1,entries:[]};e.s(["f",0,c],16141);var u=e.i(72603),p=e.i(2067);let f={info:"text-primary",success:"text-success",warning:"text-warning",error:"text-danger"},h={info:"bg-primary",success:"bg-success",warning:"bg-warning",error:"bg-danger"};function m(){return(0,r.useSyncExternalStore)(c.subscribe,c.getSnapshot,c.getServerSnapshot)}function y(e){return new Date(e).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function x({entry:e}){return(0,t.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-2 px-4",children:[(0,t.jsx)("span",{className:(0,n.f)("h-1.5 w-1.5 rounded-full",h[e.severity])}),(0,t.jsx)("span",{className:"num text-text-muted/70",children:y(e.at)}),(0,t.jsx)("span",{className:f[e.severity],children:e.title}),e.message&&(0,t.jsx)("span",{className:"text-text-muted",children:e.message})]})}e.s(["J",0,function({className:e}){let{entries:r}=m(),a=(0,u.p)();if(0===r.length)return null;let s=r.slice(0,8),i=s[0];return(0,t.jsxs)("div",{className:(0,n.f)("relative min-w-0 overflow-hidden text-[10px] uppercase tracking-wider",e),children:[(0,t.jsxs)("span",{className:"sr-only","aria-live":"polite",children:["Latest event: ",i.title]}),(0,t.jsx)("div",{"aria-hidden":"true",className:"[mask-image:linear-gradient(90deg,transparent,black_8%,black_92%,transparent)]",children:a||s.length<2?(0,t.jsx)(x,{entry:i}):(0,t.jsx)("div",{className:"flex w-max animate-ticker hover:[animation-play-state:paused]",children:[...s,...s].map((e,r)=>(0,t.jsx)(x,{entry:e},`${e.id}-${r}`))})})]})},"d",0,function({limit:e=8,className:r}){let{entries:s,connected:i}=m();return 0===s.length?(0,t.jsx)(p.f,{compact:!0,icon:(0,t.jsx)(a.f,{className:"h-4 w-4"}),tone:i?"primary":"muted",title:i?"Listening for fleet events":"Event stream connecting",description:"Deploys, upgrades, command results and alerts appear here as they happen.",className:r}):(0,t.jsx)("ul",{className:(0,n.f)("space-y-1.5",r),"aria-live":"off",children:s.slice(0,e).map(e=>(0,t.jsxs)("li",{className:"scan-sweep flex items-center gap-2.5 rounded-chip border border-border/60 bg-surface-raised/60 px-3 py-2 text-[11px]",children:[(0,t.jsx)("span",{className:(0,n.f)("h-1.5 w-1.5 shrink-0 rounded-full shadow-[0_0_6px_currentColor]",h[e.severity],f[e.severity])}),(0,t.jsxs)("span",{className:(0,n.f)("min-w-0 flex-1 truncate",f[e.severity]),children:[e.title,e.message&&(0,t.jsx)("span",{className:"ml-2 text-text-muted",children:e.message})]}),(0,t.jsx)("span",{className:"num shrink-0 text-[10px] text-text-muted",children:y(e.at)})]},e.id))})}],1092)},68759,e=>{var t=e.i(43476),r=e.i(78571);let a={primary:"border border-primary/60 bg-primary/10 text-primary hover:bg-primary/20 hover:border-primary hover:shadow-[0_0_12px_var(--color-glow)]",secondary:"border border-border bg-surface text-text-muted hover:border-primary/40 hover:text-text hover:shadow-[0_0_8px_var(--color-glow)]",danger:"border border-danger/60 bg-danger/10 text-danger hover:bg-danger/20 hover:border-danger hover:shadow-[0_0_12px_rgba(255,23,68,0.3)]",success:"border border-success/60 bg-success/10 text-success hover:bg-success/20 hover:border-success hover:shadow-[0_0_12px_rgba(0,230,118,0.3)]",ghost:"text-text-muted hover:text-accent hover:drop-shadow-[0_0_6px_var(--color-glow-accent)]"},n={sm:"h-8 px-3 text-[11px]",md:"h-9 px-4 text-xs",lg:"h-10 px-5 text-xs"};function s(e="primary",t="md",i){return(0,r.f)("inline-flex items-center justify-center gap-2 rounded-chip font-medium uppercase tracking-wider transition-all duration-200 disabled:opacity-50 disabled:pointer-events-none",a[e],n[t],i)}e.s(["K",0,function({variant:e="primary",size:r="md",icon:a,children:n,className:i,...l}){return(0,t.jsxs)("button",{className:s(e,r,i),...l,children:[a,n]})},"R",0,s])},2067,e=>{var t=e.i(43476),r=e.i(78571),a=e.i(35084);let n={primary:"border-primary/40 shadow-[0_0_16px_var(--color-glow)]",accent:"border-accent/40 shadow-[0_0_16px_var(--color-glow-accent)]",success:"border-success/40 shadow-[0_0_16px_var(--color-glow-success)]",warning:"border-warning/40 shadow-[0_0_16px_var(--color-glow-warning)]",danger:"border-danger/40 shadow-[0_0_16px_var(--color-glow-danger)]",info:"border-info/40 shadow-[0_0_16px_var(--color-glow)]",muted:"border-border-strong"},s={primary:"border-primary/20",accent:"border-accent/25",success:"border-success/20",warning:"border-warning/25",danger:"border-danger/25",info:"border-info/20",muted:"border-border"};e.s(["f",0,function({title:e,description:i,icon:l,action:o,tone:c="muted",compact:d=!1,className:u,testId:p}){return(0,t.jsxs)("div",{"data-testid":p,role:"danger"===c||"warning"===c?"alert":void 0,className:(0,r.f)("flex flex-col items-center justify-center rounded-panel border border-dashed bg-surface/40 text-center",s[c],d?"gap-2 px-4 py-5":"gap-3 px-6 py-10",u),children:[l&&(0,t.jsx)("span",{className:(0,r.f)("flex items-center justify-center rounded-full border bg-bg",d?"h-8 w-8":"h-12 w-12",n[c],"muted"===c?"text-text-muted":a.T[c]),children:l}),(0,t.jsx)("p",{className:(0,r.f)("font-bold uppercase tracking-wider",d?"text-[11px]":"text-xs","muted"===c?"text-text":a.T[c]),children:e}),i&&(0,t.jsx)("p",{className:"max-w-md text-[11px] leading-relaxed text-text-muted",children:i}),o&&(0,t.jsx)("div",{className:"mt-1",children:o})]})}])},72603,e=>{var t=e.i(71645);let r="(prefers-reduced-motion: reduce)";function a(){return window.matchMedia(r).matches||"low"===document.documentElement.dataset.fx}function n(e){let t=window.matchMedia(r);t.addEventListener("change",e);let a=new MutationObserver(e);return a.observe(document.documentElement,{attributes:!0,attributeFilter:["data-fx"]}),()=>{t.removeEventListener("change",e),a.disconnect()}}let s="magnus:fx";e.s(["P",0,function(){try{let e=window.localStorage.getItem(s);"low"===e?document.documentElement.dataset.fx="low":delete document.documentElement.dataset.fx}catch{}},"d",0,a,"W",0,function(){let e="low"===document.documentElement.dataset.fx?"normal":"low";"low"===e?document.documentElement.dataset.fx="low":delete document.documentElement.dataset.fx;try{window.localStorage.setItem(s,e)}catch{}return e},"p",0,function(){return(0,t.useSyncExternalStore)(n,a,()=>!1)}])},4050,15e3,e=>{var t=e.i(43476),r=e.i(71645);let a={id:"local",name:"Local",url:"",hasApiSecret:!1,apiSecretFingerprint:null,hasToken:!1,tokenFingerprint:null,createdAt:new Date().toISOString()};e.s(["f",0,a],15e3);var n=e.i(82983);let s=(0,r.createContext)(null),i="magnus_active_control_node",l="magnus_active_control_node_cache";function o(e){try{localStorage.setItem(l,JSON.stringify(e))}catch{}}e.s(["v",0,function({children:e}){let[c,d]=(0,r.useState)([]),[u,p]=(0,r.useState)(()=>localStorage.getItem(i)??"local"),[f,h]=(0,r.useState)(!0),m=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/control-nodes"),t=await e.json();if(t.success)if(0===t.data.length){let e=await fetch("/api/control-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,url:a.url})}),t=await e.json();t.success&&(d([t.data]),p(t.data.id),localStorage.setItem(i,t.data.id))}else d(t.data)}catch{}finally{h(!1)}},[]);(0,r.useEffect)(()=>{localStorage.removeItem("magnus_token"),m()},[m]);let y=(0,r.useMemo)(()=>{let e=c.find(e=>e.id===u);if(e)return e;let t=function(){try{let e=localStorage.getItem(l);if(!e)return null;let t=JSON.parse(e);if("string"!=typeof t.id||"string"!=typeof t.name||"string"!=typeof t.url||"string"!=typeof t.createdAt)return null;let r={id:t.id,name:t.name,url:t.url,hasApiSecret:!0===t.hasApiSecret,apiSecretFingerprint:"string"==typeof t.apiSecretFingerprint?t.apiSecretFingerprint:null,hasToken:!0===t.hasToken,tokenFingerprint:"string"==typeof t.tokenFingerprint?t.tokenFingerprint:null,createdAt:t.createdAt};return localStorage.setItem(l,JSON.stringify(r)),r}catch{return null}}();return t&&t.id===u?t:a},[c,u]),x=(0,r.useRef)(null);"local"!==y.id&&x.current!==y.id&&(o(y),x.current=y.id);let g=(0,r.useRef)(null);g.current!==y.id&&(document.cookie=`magnus_active_node_id=${encodeURIComponent(y.id)}; path=/; max-age=31536000; samesite=lax`,g.current=y.id);let v=(0,r.useRef)(null);v.current!==y.id&&(n.f.reconfigure("local"===y.id?"":y.url),v.current=y.id);let k=(0,r.useCallback)(e=>{p(e);{localStorage.setItem(i,e),document.cookie=`magnus_active_node_id=${encodeURIComponent(e)}; path=/; max-age=31536000; samesite=lax`;let t=c.find(t=>t.id===e);t&&o(t)}},[c]),b=(0,r.useCallback)(async e=>{let t=await fetch("/api/control-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=await t.json();if(!r.success)throw Error(r.error??"Failed to add node");return d(e=>[...e,r.data]),r.data},[]),w=(0,r.useCallback)(async(e,t)=>{let r=await fetch(`/api/control-nodes/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await r.json();if(!a.success)throw Error(a.error??"Failed to update node");return d(t=>t.map(t=>t.id===e?a.data:t)),a.data},[]),j=(0,r.useCallback)(async e=>{let t=await fetch(`/api/control-nodes/${e}`,{method:"DELETE"}),r=await t.json();if(!r.success)throw Error(r.error??"Failed to delete node");d(t=>t.filter(t=>t.id!==e)),p(t=>t===e?"local":t)},[]),N=(0,r.useCallback)(async()=>{await m()},[m]),C=(0,r.useMemo)(()=>({nodes:c,activeNode:y,loading:f,switchNode:k,addNode:b,updateNode:w,removeNode:j,refreshNodes:N}),[c,y,f,k,b,w,j,N]);return(0,t.jsx)(s.Provider,{value:C,children:e})},"l",0,function(){let e=(0,r.useContext)(s);if(!e)throw Error("useControlNode must be used within <ControlNodeProvider>");return e}],4050)},64971,e=>{async function t(e){if(!e||"object"!=typeof e)return null;if("data"in e&&void 0!==e.data)return e.data;if("response"in e&&e.response instanceof Response&&!e.response.bodyUsed){let t=await e.response.clone().text().catch(()=>"");if(!t)return null;try{return JSON.parse(t)}catch{return t}}return null}e.s(["R",0,function(e){if(!e||"object"!=typeof e||!("error"in e))return;let t=e.error;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message},"O",0,t])},39430,e=>{function t(e){return(e?.trim().replace(/\/+$/,"")??"")||null}e.s(["K",0,t,"L",0,function(e){let r=t(e);return r?{"x-proxy-target":r}:{}}])},35084,e=>{let t={warn:70,crit:90},r={bg:"#000000",surface:"#06060d",border:"#1a1a2e",text:"#e0e0ec",textMuted:"#8a8aab",primary:"#00e5ff",accent:"#ff006e",success:"#00ff41",warning:"#ffb300",danger:"#ff1744",info:"#00b0ff"};e.s(["q",0,t,"H",0,{primary:"bg-primary",accent:"bg-accent",success:"bg-success",warning:"bg-warning",danger:"bg-danger",info:"bg-info",muted:"bg-text-muted"},"z",0,{primary:"glow-text-primary",accent:"glow-text-accent",success:"glow-text-success",warning:"glow-text-warning",danger:"glow-text-danger",info:"glow-text-primary",muted:""},"T",0,{primary:"text-primary",accent:"text-accent",success:"text-success",warning:"text-warning",danger:"text-danger",info:"text-info",muted:"text-text-muted"},"v",0,{primary:"var(--color-primary)",accent:"var(--color-accent)",success:"var(--color-success)",warning:"var(--color-warning)",danger:"var(--color-danger)",info:"var(--color-info)",muted:"var(--color-text-muted)"},"f",0,function(e){return e>=100?"danger":e>=20?"warning":"success"},"s",0,function(){if("u"<typeof document)return r;let e=getComputedStyle(document.documentElement),t=(t,r)=>e.getPropertyValue(t).trim()||r;return{bg:t("--color-bg",r.bg),surface:t("--color-surface",r.surface),border:t("--color-border",r.border),text:t("--color-text",r.text),textMuted:t("--color-text-muted",r.textMuted),primary:t("--color-primary",r.primary),accent:t("--color-accent",r.accent),success:t("--color-success",r.success),warning:t("--color-warning",r.warning),danger:t("--color-danger",r.danger),info:t("--color-info",r.info)}},"Z",0,function(e,r=t){return e>=r.crit?"danger":e>=r.warn?"warning":"success"}])},7670,e=>{e.s(["f",0,function(){for(var e,t,r=0,a="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=function e(t){var r,a,n="";if("string"==typeof t||"number"==typeof t)n+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(r=0;r<s;r++)t[r]&&(a=e(t[r]))&&(n&&(n+=" "),n+=a)}else for(a in t)t[a]&&(n&&(n+=" "),n+=a);return n}(e))&&(a&&(a+=" "),a+=t);return a}])},75254,e=>{var t=e.i(71645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var a={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"};let n=(0,t.forwardRef)(({color:e="currentColor",size:n=24,strokeWidth:s=2,absoluteStrokeWidth:i,className:l="",children:o,iconNode:c,...d},u)=>(0,t.createElement)("svg",{ref:u,...a,width:n,height:n,stroke:e,strokeWidth:i?24*Number(s)/Number(n):s,className:r("lucide",l),...d},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(o)?o:[o]]));e.s(["f",0,(e,a)=>{let s=(0,t.forwardRef)(({className:s,...i},l)=>(0,t.createElement)(n,{ref:l,iconNode:a,className:r(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,s),...i}));return s.displayName=`${e}`,s}],75254)},72520,e=>{let t=(0,e.i(75254).f)("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["f",0,t],72520)},10980,e=>{let t=(0,e.i(75254).f)("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["f",0,t],10980)},31245,e=>{let t=(0,e.i(75254).f)("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"}]]);e.s(["f",0,t],31245)},43531,e=>{let t=(0,e.i(75254).f)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["f",0,t],43531)},64659,e=>{let t=(0,e.i(75254).f)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["f",0,t],64659)},63059,e=>{let t=(0,e.i(75254).f)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["f",0,t],63059)},61653,e=>{let t=(0,e.i(75254).f)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["f",0,t])},63032,e=>{var t=e.i(61653);e.s(["f",()=>t.f])},43034,e=>{let t=(0,e.i(75254).f)("CircleArrowUp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);e.s(["f",0,t],43034)},95468,73884,e=>{var t=e.i(75254);let r=(0,t.f)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["f",0,r],95468);let a=(0,t.f)("CircleX",[["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"}]]);e.s(["f",0,a],73884)},3116,e=>{let t=(0,e.i(75254).f)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);e.s(["f",0,t],3116)},97625,e=>{let t=(0,e.i(75254).f)("CodeXml",[["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"}]]);e.s(["f",0,t],97625)},58041,e=>{let t=(0,e.i(75254).f)("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"}]]);e.s(["f",0,t],58041)},40160,e=>{let t=(0,e.i(75254).f)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["f",0,t],40160)},65157,e=>{let t=(0,e.i(75254).f)("Earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["f",0,t],65157)},78583,e=>{let t=(0,e.i(75254).f)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["f",0,t],78583)},94827,e=>{let t=(0,e.i(75254).f)("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);e.s(["f",0,t],94827)},55716,e=>{let t=(0,e.i(75254).f)("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["f",0,t],55716)},52571,e=>{let t=(0,e.i(75254).f)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["f",0,t],52571)},65261,e=>{let t=(0,e.i(75254).f)("KeyRound",[["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"}]]);e.s(["f",0,t],65261)},7866,e=>{let t=(0,e.i(75254).f)("Library",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]]);e.s(["f",0,t],7866)},31278,e=>{let t=(0,e.i(75254).f)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["f",0,t],31278)},92270,e=>{let t=(0,e.i(75254).f)("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);e.s(["f",0,t],92270)},88699,e=>{let t=(0,e.i(75254).f)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["f",0,t],88699)},7233,e=>{let t=(0,e.i(75254).f)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["f",0,t],7233)},77754,e=>{let t=(0,e.i(75254).f)("Puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]);e.s(["f",0,t],77754)},34981,e=>{let t=(0,e.i(75254).f)("Radar",[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]]);e.s(["f",0,t],34981)},63639,e=>{let t=(0,e.i(75254).f)("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);e.s(["f",0,t],63639)},16715,e=>{let t=(0,e.i(75254).f)("RefreshCw",[["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"}]]);e.s(["f",0,t],16715)},9912,e=>{let t=(0,e.i(75254).f)("Rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);e.s(["f",0,t],9912)},67240,e=>{let t=(0,e.i(75254).f)("RotateCcw",[["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"}]]);e.s(["f",0,t],67240)},55436,e=>{let t=(0,e.i(75254).f)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);e.s(["f",0,t],55436)},18393,e=>{let t=(0,e.i(75254).f)("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"}]]);e.s(["f",0,t],18393)},39616,e=>{let t=(0,e.i(75254).f)("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["f",0,t],39616)},81418,e=>{let t=(0,e.i(75254).f)("ShieldCheck",[["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"}]]);e.s(["f",0,t],81418)},98919,e=>{let t=(0,e.i(75254).f)("Shield",[["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"}]]);e.s(["f",0,t],98919)},62421,e=>{let t=(0,e.i(75254).f)("Siren",[["path",{d:"M7 18v-6a5 5 0 1 1 10 0v6",key:"pcx96s"}],["path",{d:"M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z",key:"1b4s83"}],["path",{d:"M21 12h1",key:"jtio3y"}],["path",{d:"M18.5 4.5 18 5",key:"g5sp9y"}],["path",{d:"M2 12h1",key:"1uaihz"}],["path",{d:"M12 2v1",key:"11qlp1"}],["path",{d:"m4.929 4.929.707.707",key:"1i51kw"}],["path",{d:"M12 12v6",key:"3ahymv"}]]);e.s(["f",0,t],62421)},49582,e=>{let t=(0,e.i(75254).f)("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);e.s(["f",0,t],49582)},83086,e=>{let t=(0,e.i(75254).f)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);e.s(["f",0,t],83086)},68054,e=>{let t=(0,e.i(75254).f)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);e.s(["f",0,t],68054)},27612,e=>{let t=(0,e.i(75254).f)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["f",0,t],27612)},78894,e=>{let t=(0,e.i(75254).f)("TriangleAlert",[["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"}]]);e.s(["f",0,t],78894)},61911,e=>{let t=(0,e.i(75254).f)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);e.s(["f",0,t],61911)},53305,e=>{let t=(0,e.i(75254).f)("Webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]);e.s(["f",0,t],53305)},53475,e=>{let t=(0,e.i(75254).f)("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"}]]);e.s(["f",0,t],53475)},37727,e=>{let t=(0,e.i(75254).f)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],37727)},39312,e=>{let t=(0,e.i(75254).f)("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"}]]);e.s(["f",0,t],39312)},22016,(e,t,r)=>{e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return x},useLinkStatus:function(){return v}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=e.r(90809),i=e.r(43476),l=s._(e.r(71645)),o=e.r(95057),c=e.r(8372),d=e.r(18581),u=e.r(18967),p=e.r(5550),f=e.r(88540),h=e.r(91949),m=e.r(73668),y=e.r(9396);function x(t){var r;let a,n,s,[x,v]=(0,l.useOptimistic)(h.IDLE_LINK_STATUS),k=(0,l.useRef)(null),{href:b,as:w,children:j,prefetch:N=null,passHref:C,replace:M,shallow:S,scroll:_,onClick:A,onMouseEnter:E,onTouchStart:z,legacyBehavior:P=!1,onNavigate:R,transitionTypes:L,ref:T,unstable_dynamicOnHover:U,...q}=t;a=j,P&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let O=l.default.useContext(c.AppRouterContext),I=!1!==N,$=!1===N?"none":!0===N?"full":"auto",F="none"!==$?"auto"===$?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,B="string"==typeof(r=w||b)?r:(0,o.formatUrl)(r);if(P){if(a?.$$typeof===Symbol.for("react.lazy"))throw Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag.");n=l.default.Children.only(a)}let V=P?n&&"object"==typeof n&&n.ref:T,D,H=l.default.useCallback(e=>(null!==O&&(k.current=(0,h.mountLinkInstance)(e,B,O,F,I,v,D)),()=>{k.current&&((0,h.unmountLinkForCurrentNavigation)(k.current),k.current=null),(0,h.unmountPrefetchableInstance)(e)}),[I,B,O,F,v,D]),K={ref:(0,d.useMergedRef)(H,V),onClick(t){P||"function"!=typeof A||A(t),P&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!O||t.defaultPrevented||function(t,r,a,n,s,i,l,o="none"){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{navigate:u}=e.r(32916);u(r,n?"replace":"push",!1===s?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,a.current,l,o)}}(t,B,k,M,_,R,L,$)},onMouseEnter(e){P||"function"!=typeof E||E(e),P&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),O&&I&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){P||"function"!=typeof z||z(e),P&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),O&&I&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,u.isAbsoluteUrl)(B)?K.href=B:P&&!C&&("a"!==n.type||"href"in n.props)||(K.href=(0,p.addBasePath)(B)),s=P?l.default.cloneElement(n,K):(0,i.jsx)("a",{...q,...K,children:a}),(0,i.jsx)(g.Provider,{value:x,children:s})}let g=(0,l.createContext)(h.IDLE_LINK_STATUS),v=()=>(0,l.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18581,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=e.r(71645);function n(e,t){let r=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=s(e,a)),t&&(n.current=s(t,a))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},95057,(e,t,r)=>{e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return l},formatWithValidation:function(){return c},urlObjectKeys:function(){return o}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=e.r(90809)._(e.r(98183)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,a=e.protocol||"",n=e.pathname||"",l=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(s.urlQueryToSearchParams(o)));let d=e.search||o&&`?${o}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||i.test(a))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),l&&"#"!==l[0]&&(l="#"+l),d&&"?"!==d[0]&&(d="?"+d),n=n.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${a}${c}${n}${d}${l}`}let o=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return l(e)}},73668,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let a=e.r(18967),n=e.r(52817);function s(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},18967,(e,t,r)=>{e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return x},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return k},NormalizeError:function(){return g},PageNotFoundError:function(){return v},SP:function(){return m},ST:function(){return y},WEB_VITALS:function(){return s},execOnce:function(){return i},getDisplayName:function(){return u},getLocationOrigin:function(){return c},getURL:function(){return d},isAbsoluteUrl:function(){return o},isResSent:function(){return p},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return w}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=["CLS","FCP","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,o=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&l.test(e)};function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function d(){let{href:e}=window.location,t=c();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function p(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&p(r))return a;if(!a)throw Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`);return a}let m="u">typeof performance,y=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class x extends Error{}class g extends Error{}class v extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class k extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function w(e){return JSON.stringify({message:e.message,stack:e.stack})}}],18566,(e,t,r)=>{t.exports=e.r(76562)}]);
@@ -1,15 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,86421,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(93999),a=e.i(46670),n=e.i(68759),i=e.i(71417),l=e.i(82983),c=e.i(4050),d=e.i(7233),o=e.i(16715),m=e.i(88699),u=e.i(27612),x=e.i(53475),p=e.i(31278),h=e.i(63032),f=e.i(78894),g=e.i(81418),j=e.i(68054),b=e.i(12181),y=e.i(81203),N=e.i(18393);let v=["/boot","/snap","/var/lib/docker/","/var/lib/containers/"],w=new Set(["iso9660","squashfs"]);var k=e.i(22016),C=e.i(14098),S=e.i(64971),R=e.i(40160),E=e.i(67240),P=e.i(55716);let z=(0,e.i(75254).f)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var A=e.i(43034),U=e.i(39616),$=e.i(35673),O=e.i(39430);function I(){let{activeNode:e,removeNode:r}=(0,c.l)(),[i,d]=(0,s.useState)("checking"),m=(0,s.useRef)(null),[x,h]=(0,s.useState)(null),[f,g]=(0,s.useState)(!1),[j,b]=(0,s.useState)(null),[y,v]=(0,s.useState)(null),[w,k]=(0,s.useState)("idle"),[C,I]=(0,s.useState)(null),[_,T]=(0,s.useState)(null),[F,K]=(0,s.useState)(!1),[B,D]=(0,s.useState)(null),[L,V]=(0,s.useState)(!1),G=(0,s.useCallback)(async()=>{try{let t=(0,O.L)(e.url),s=await fetch("/api/proxy/health",{method:"GET",headers:t,signal:AbortSignal.timeout(8e3)});d(s.ok?"online":"offline")}catch{d("offline")}},[e.url]),q=(0,s.useCallback)(async()=>{try{let e=await l.f.selfUpdate.version();e.success&&h(e.data??null)}catch{}},[]);(0,s.useEffect)(()=>(d("checking"),h(null),g(!1),v(null),I(null),T(null),G(),q(),m.current=setInterval(()=>{G()},3e4),()=>{m.current&&(clearInterval(m.current),m.current=null)}),[e.id,G,q]);let M=async()=>{k("checking"),T(null),I(null);try{let e=await l.f.selfUpdate.status();e.success&&b(e.data??null);let t=await l.f.selfUpdate.check();t.success&&(v(t.data??null),t.data.error?T(t.data.error):t.data.available||I("Already up to date."))}catch(t){let e="Failed to check for updates";if(t&&"object"==typeof t&&"response"in t)try{let s=(0,S.R)(await (0,S.O)(t));s&&(e=s)}catch{}else t instanceof Error&&(e=t.message);T(e)}finally{k("idle")}},J=async e=>{k("applying"),T(null),I(null);try{let t=await l.f.selfUpdate.apply(e);if(t.success){let e=t.data;if(!e)return;e.updated?I(`Updated from v${e.previousVersion} → v${e.currentVersion}`+(e.restart?.scheduled?`. Restarting via ${e.restart.method}…`:". Restart manually to apply.")):I("Code pulled but no version change detected."),v(null),q();let s=await l.f.selfUpdate.status();s.success&&b(s.data??null)}}catch(e){T(e instanceof Error?e.message:"Update failed")}finally{k("idle")}},H=async()=>{k("restarting"),T(null);try{let e=await l.f.selfUpdate.restart();e.success&&I(`Restart scheduled via ${e.data.method}. Reconnecting shortly…`)}catch(e){T(e instanceof Error?e.message:"Restart failed")}finally{k("idle")}},W=async()=>{if(confirm(`Delete control node "${e.name}"? You'll be switched to another node.`))try{await r(e.id)}catch{}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"rounded border border-border bg-surface",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-5 py-3",children:[(0,t.jsx)("div",{className:"flex items-center gap-4 min-w-0",children:(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsx)(N.f,{className:"h-4.5 w-4.5 text-primary shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 rounded border border-border bg-bg px-2.5 py-1 text-xs font-bold min-w-0",children:[(0,t.jsx)(N.f,{className:"h-3.5 w-3.5 shrink-0 text-text-muted"}),(0,t.jsx)("span",{className:"truncate",children:e.name})]}),(0,t.jsx)("button",{onClick:()=>{D(e.id),V(!1),K(!0)},className:"rounded border border-border bg-bg p-1.5 text-text-muted transition-all hover:bg-surface-hover hover:text-text hover:border-primary/30 hover:shadow-[0_0_20px_var(--color-glow)]",title:"Control Node Settings",children:(0,t.jsx)(U.f,{className:"h-3.5 w-3.5"})}),(()=>{switch(i){case"checking":return(0,t.jsxs)(a.t,{variant:"info",children:[(0,t.jsx)(p.f,{className:"mr-1 h-3 w-3 animate-spin"}),"Checking"]});case"online":return(0,t.jsx)(a.t,{variant:"success",children:"Online"});case"offline":return(0,t.jsx)(a.t,{variant:"danger",children:"Offline"})}})()]}),(0,t.jsxs)("div",{className:"text-xs text-text-muted truncate mt-0.5",children:[e.url,x&&(0,t.jsxs)("span",{className:"ml-2",children:["v",x.controlApiVersion]})]})]})]})}),(0,t.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,t.jsxs)(n.K,{variant:"ghost",size:"sm",title:"Check for updates",onClick:()=>{f?g(!1):(g(!0),(async()=>{try{let e=await l.f.selfUpdate.status();e.success&&(b(e.data??null),e.data?.isGitRepo&&M())}catch{M()}})())},children:[(0,t.jsx)(A.f,{className:"h-3.5 w-3.5 text-primary"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:"Update"})]}),(0,t.jsx)(n.K,{variant:"ghost",size:"sm",title:"Delete control node",onClick:()=>void W(),children:(0,t.jsx)(u.f,{className:"h-3.5 w-3.5 text-danger"})}),(0,t.jsx)(n.K,{variant:"ghost",size:"sm",title:"Refresh status",onClick:()=>{d("checking"),G(),q()},children:(0,t.jsx)(o.f,{className:"h-3.5 w-3.5"})})]})]}),f&&(0,t.jsxs)("div",{className:"border-t border-border px-5 py-3 space-y-3",children:[_&&(0,t.jsx)("div",{className:"rounded border border-danger/30 bg-danger/10 p-3 text-xs text-danger",children:_}),C&&(0,t.jsx)("div",{className:"rounded border border-success/30 bg-success/10 p-3 text-xs text-success",children:C}),j&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-x-6 gap-y-1 text-[11px] text-text-muted",children:[(0,t.jsxs)("span",{children:["Control API: ",(0,t.jsxs)("span",{className:"text-text",children:["v",j.controlApiVersion]})]}),(0,t.jsxs)("span",{children:["Agent: ",(0,t.jsxs)("span",{className:"text-text",children:["v",j.agentVersion]})]}),j.gitBranch&&(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)(P.f,{className:"h-3 w-3"}),(0,t.jsx)("span",{className:"text-text",children:j.gitBranch})]}),j.gitCommit&&(0,t.jsxs)("span",{children:["Commit: ",(0,t.jsx)("span",{className:"text-text",children:j.gitCommit})]}),j.lastChecked&&(0,t.jsxs)("span",{children:["Checked: ",new Date(j.lastChecked).toLocaleString()]})]}),j&&!1===j.isGitRepo&&(0,t.jsxs)("div",{className:"rounded border border-primary/30 bg-primary/10 p-3 text-xs text-text-muted",children:[(0,t.jsx)("span",{className:"font-bold text-primary",children:"Tarball deployment"}),(0,t.jsx)("span",{className:"ml-1",children:"— Git-based self-update is not available. Use Deploy from another control node to push updates."})]}),y?.available&&(0,t.jsxs)("div",{className:"rounded border border-warning/30 bg-warning/10 p-3 text-xs",children:[(0,t.jsx)("span",{className:"font-bold text-warning uppercase tracking-wider",children:"Update available"}),(0,t.jsxs)("span",{className:"text-text-muted ml-1",children:["— ",y.behindBy," commit",1!==y.behindBy?"s":""," behind (",y.currentCommit," → ",y.remoteCommit,")"]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[j?.isGitRepo!==!1&&(0,t.jsx)(n.K,{variant:"secondary",size:"sm",onClick:()=>void M(),disabled:"idle"!==w,icon:"checking"===w?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o.f,{className:"h-3.5 w-3.5"}),children:"checking"===w?"Checking…":"Check for Updates"}),y?.available&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.K,{variant:"primary",size:"sm",onClick:()=>void J(!1),disabled:"idle"!==w,icon:"applying"===w?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(R.f,{className:"h-3.5 w-3.5"}),children:"applying"===w?"Updating…":"Pull & Build"}),(0,t.jsx)(n.K,{variant:"primary",size:"sm",onClick:()=>void J(!0),disabled:"idle"!==w,icon:"applying"===w?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(E.f,{className:"h-3.5 w-3.5"}),children:"applying"===w?"Updating…":"Pull, Build & Restart"})]}),(0,t.jsx)(n.K,{variant:"ghost",size:"sm",onClick:()=>void H(),disabled:"idle"!==w,icon:"restarting"===w?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(E.f,{className:"h-3.5 w-3.5"}),children:"restarting"===w?"Restarting…":"Restart Only"}),(0,t.jsx)("div",{className:"ml-auto",children:(0,t.jsx)(n.K,{variant:"ghost",size:"sm",onClick:()=>g(!1),icon:(0,t.jsx)(z,{className:"h-3.5 w-3.5"}),children:"Close"})})]})]})]}),(0,t.jsx)($.f,{open:F,onClose:()=>{K(!1),D(null),V(!1),G(),q()},editNodeId:B,createMode:L})]})}var _=e.i(32568);function T({open:r,onClose:a,node:n}){let i=(0,s.useRef)(null),l=(0,s.useRef)(null),c=(0,s.useRef)(null),d=(0,s.useRef)(null),o=(0,s.useRef)(!1),m=(0,s.useRef)(null),[u,x]=(0,s.useState)("connecting"),p=(0,s.useRef)(""),h=(0,s.useRef)(null),f=(0,s.useCallback)(()=>{h.current=null;let e=p.current;e&&d.current&&(p.current="",fetch("/api/terminal/input",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:d.current,data:e})}).catch(()=>{}))},[]),g=(0,s.useCallback)(()=>{if(!o.current){o.current=!0,h.current&&(clearTimeout(h.current),h.current=null),m.current?.abort(),m.current=null,d.current&&(fetch("/api/terminal/close",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:d.current})}).catch(()=>{}),d.current=null);try{l.current?.dispose()}catch{}l.current=null,c.current=null}},[]);(0,s.useEffect)(()=>{if(!r||!n||!i.current)return;o.current=!1,x("connecting");let t=!1;(async()=>{let s,{Terminal:r}=await e.A(37138),{FitAddon:a}=await e.A(59439);if(!document.getElementById("xterm-css")){let e=document.createElement("style");e.id="xterm-css",e.textContent=`
2
- .xterm { position: relative; user-select: none; }
3
- .xterm.focus, .xterm:focus { outline: none; }
4
- .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
5
- .xterm .xterm-helper-textarea { padding: 0; border: 0; margin: 0; position: absolute; opacity: 0; left: -9999em; top: 0; width: 0; height: 0; z-index: -5; white-space: nowrap; overflow: hidden; resize: none; }
6
- .xterm .composition-view { display: none; position: absolute; white-space: nowrap; z-index: 1; }
7
- .xterm .xterm-viewport { background-color: transparent !important; overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; scrollbar-width: thin; scrollbar-color: #5a5a7a transparent; }
8
- .xterm .xterm-screen { position: relative; }
9
- .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
10
- .xterm .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
11
- .xterm .xterm-decoration-top-layer { z-index: 7; position: relative; }
12
- `,document.head.appendChild(e)}if(t||o.current)return;let u=new r({cursorBlink:!0,scrollback:1e3,fontFamily:'"JetBrains Mono", "Fira Code", "Cascadia Code", monospace',fontSize:13,theme:{background:"#06060d",foreground:"#e0e0ec",cursor:"#00e5ff",cursorAccent:"#06060d",selectionBackground:"#00e5ff33",black:"#06060d",red:"#ff1744",green:"#00ff41",yellow:"#ffb300",blue:"#00b0ff",magenta:"#ff006e",cyan:"#00e5ff",white:"#e0e0ec",brightBlack:"#5a5a7a",brightRed:"#ff5252",brightGreen:"#69f0ae",brightYellow:"#ffd740",brightBlue:"#40c4ff",brightMagenta:"#ff4081",brightCyan:"#18ffff",brightWhite:"#ffffff"}}),g=new a;if(u.loadAddon(g),l.current=u,c.current=g,i.current&&(u.open(i.current),requestAnimationFrame(()=>{o.current||g.fit()})),t||o.current)return;let j=g.proposeDimensions(),b=j?.cols??120,y=j?.rows??30,N=n.hostname||n.ipAddress;u.write(`\x1b[38;2;138;138;171mConnecting to ${N} as ${N===n.hostname?n.hostname:n.ipAddress}...\x1b[0m\r
13
- `);try{let e=await fetch("/api/terminal/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({host:N,cols:b,rows:y})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`HTTP ${e.status}`)}d.current=s=(await e.json()).sessionId}catch(s){if(t||o.current)return;let e=s instanceof Error?s.message:"Unknown error";u.write(`\r
14
- \x1b[31mFailed to open session: ${e}\x1b[0m\r
15
- `),x("error");return}if(t||o.current)return;x("connected");let v=new AbortController;m.current=v,(async()=>{try{let e=await fetch(`/api/terminal/stream?sessionId=${encodeURIComponent(s)}`,{signal:v.signal});if(!e.ok||!e.body){t||o.current||(u.write("\r\n\x1b[31mFailed to connect output stream\x1b[0m\r\n"),x("error"));return}let r=e.body.getReader();for(;;){let{done:e,value:s}=await r.read();if(e||t||o.current)break;s&&u.write(s)}}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return}t||o.current||(x("closed"),u.write("\r\n\x1b[38;2;138;138;171m── Session ended ──\x1b[0m\r\n"))})(),u.onData(e=>{!o.current&&d.current&&(p.current+=e,h.current||(h.current=setTimeout(f,16)))}),u.onResize(({cols:e,rows:t})=>{!o.current&&d.current&&fetch("/api/terminal/resize",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:d.current,cols:e,rows:t})}).catch(()=>{})})})();let s=()=>{c.current&&!o.current&&c.current.fit()};return window.addEventListener("resize",s),()=>{t=!0,window.removeEventListener("resize",s),g()}},[r,n,g,f]);let b=(0,s.useCallback)(()=>{g(),a()},[g,a]);return n?(0,t.jsx)(_.n,{open:r,onClose:b,title:`Terminal: ${n.name}`,description:"Interactive SSH session",icon:(0,t.jsx)(j.f,{className:"h-5 w-5 text-primary"}),className:"max-w-5xl",children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"absolute top-0 right-0 z-10 flex items-center gap-1.5 px-2 py-1",children:[(0,t.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${"connected"===u?"bg-success":"connecting"===u?"bg-warning animate-pulse":"error"===u?"bg-danger":"bg-text-muted"}`}),(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-wider text-text-muted",children:u})]}),(0,t.jsx)("div",{ref:i,className:"h-[65vh] w-full rounded border border-border/50 bg-[#06060d] p-1 overflow-hidden"})]})}):null}var F=e.i(63376),K=e.i(67683),B=e.i(73404),D=e.i(51196),L=e.i(75723),V=e.i(2067),G=e.i(65369);function q(e){try{let t=JSON.parse(e);if("string"==typeof t.deployError)return{label:"Deploy failed",message:t.deployError};if("string"==typeof t.upgradeError)return{label:"Upgrade failed",message:t.upgradeError};return null}catch{return null}}e.s(["default",0,function({initialNodes:e,initialTailscaleSummary:S}){let R,E,{activeNode:P}=(0,c.l)(),[z,A]=(0,s.useState)(e),[U,$]=(0,s.useState)((!!e.length||void 0===e)&&!1),[O,_]=(0,s.useState)(null),[M,J]=(0,s.useState)(!1),[H,W]=(0,s.useState)(null),[Y,Q]=(0,s.useState)(null),[X,Z]=(0,s.useState)(!1),[ee,et]=(0,s.useState)([]),[es,er]=(0,s.useState)(null),[ea,en]=(0,s.useState)({}),[ei,el]=(0,s.useState)(null),[ec,ed]=(0,s.useState)(S),eo=(0,s.useRef)(null),em=(0,s.useRef)({}),[eu,ex]=(0,s.useState)(e.length>0),ep=(0,s.useCallback)(async(e=!1)=>{try{e||$(!0),_(null);let[t,s,r]=await Promise.all([l.f.nodes.list(),l.f.nodes.systemUpdatesSummary().catch(()=>null),l.f.nodes.tailscaleSummary().catch(()=>null)]),a=t.data.map(e=>{if(e.role)return delete em.current[e.id],e;let t=em.current[e.id];return void 0!==t?{...e,role:t}:e});A(a),el(s?.data??null),ed(r?.data??null);let n=await Promise.all(a.map(async e=>{try{let t=await l.f.nodes.health(e.id);return[e.id,t.data]}catch{return[e.id,null]}}));en(Object.fromEntries(n.filter(e=>null!==e[1])))}catch(r){let t=r instanceof Error?r.message:String(r),s="Failed to fetch"===t||t.includes("TypeError")||t.includes("NetworkError")||t.includes("ECONNREFUSED")||t.includes("timeout");e||_(s?`Control node unreachable (${P.name})`:t)}finally{e||$(!1)}},[P.name]);(0,s.useEffect)(()=>{if(eu){ex(!1),(async()=>{e.length>0&&en(Object.fromEntries((await Promise.all(e.map(async e=>{try{let t=await l.f.nodes.health(e.id);return[e.id,t.data]}catch{return[e.id,null]}}))).filter(e=>null!==e[1])));try{let e=await l.f.nodes.systemUpdatesSummary();el(e.data)}catch{el(null)}try{let e=await l.f.nodes.tailscaleSummary();ed(e.data??null)}catch{ed(null)}})();return}A([]),_(null),et([]),en({}),el(null),ed(null),em.current={},ep()},[P.id]),(0,s.useEffect)(()=>{let e=z.some(e=>"PROVISIONING"===e.status||e.agent?.status==="UPDATING");return e&&!eo.current?eo.current=setInterval(()=>{ep(!0)},4e3):!e&&eo.current&&(clearInterval(eo.current),eo.current=null),()=>{eo.current&&(clearInterval(eo.current),eo.current=null)}},[z,ep]);let eh=async e=>{if(confirm(`Delete node "${e.name}"? This will permanently remove it and all associated data.`))try{await l.f.nodes.delete(e.id),ep()}catch{}},ef=async()=>{Z(!0),et([]);try{let e=await l.f.discovery.scan(5e3);e.success&&Array.isArray(e.data)&&et(e.data)}catch{}finally{Z(!1)}};return(0,t.jsxs)(F.U,{className:"space-y-6",children:[(0,t.jsx)(F.z,{children:(0,t.jsx)(B.f,{title:"Nodes",eyebrow:"Fleet",description:"Manage your Magnus fleet nodes",status:z.length>0?(0,t.jsxs)("span",{className:"flex items-center gap-3 text-[10px] uppercase tracking-wider text-text-muted",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(L.f,{status:"ONLINE",size:"xs"}),(0,t.jsx)("span",{className:"num",children:z.filter(e=>"ONLINE"===e.status).length})," online"]}),(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(L.f,{status:"OFFLINE",size:"xs",pulse:!1}),(0,t.jsx)("span",{className:"num",children:z.filter(e=>"OFFLINE"===e.status).length})," offline"]})]}):void 0,actions:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.K,{variant:"secondary",size:"sm",icon:(0,t.jsx)(o.f,{className:"h-3.5 w-3.5"}),onClick:()=>void ep(),children:"Refresh"}),(0,t.jsx)(n.K,{variant:"secondary",size:"sm",icon:(0,t.jsx)(d.f,{className:"h-3.5 w-3.5"}),onClick:()=>J(!0),children:"Register Node"})]})})}),(0,t.jsx)(F.z,{children:(0,t.jsx)(I,{})}),ec&&(0,t.jsx)(F.z,{children:(0,t.jsx)(K.f,{summary:ec,showAction:!1})}),ei&&(0,t.jsx)(F.z,{children:(0,t.jsx)("section",{className:"panel-corners overflow-hidden rounded-panel border border-border bg-surface","aria-label":"System update readiness",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 divide-x divide-y divide-border/60 sm:grid-cols-4 sm:divide-y-0",children:[(0,t.jsxs)("div",{className:"col-span-2 flex items-center gap-3 px-4 py-3 sm:col-span-1",children:[(0,t.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-panel border border-primary/30 bg-primary/10 text-primary shadow-[0_0_10px_var(--color-glow)]",children:(0,t.jsx)(b.f,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-[0.16em] text-text-muted",children:"Auto-update coverage"}),(0,t.jsxs)("p",{className:"num mt-0.5 text-sm font-semibold",children:[ei.enabled," / ",ei.reporting," enabled"]}),(0,t.jsx)(D.f,{className:"mt-1.5",value:ei.reporting>0?ei.enabled/ei.reporting*100:null,tone:ei.enabled===ei.reporting?"success":"warning",label:"Auto-update coverage"})]})]}),(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-[0.16em] text-text-muted",children:"Action needed"}),(0,t.jsx)("p",{className:`num mt-1 text-lg font-bold ${ei.actionNeeded?"text-warning glow-text-warning":"text-success"}`,children:ei.actionNeeded})]}),(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-[0.16em] text-text-muted",children:"Reboot debt"}),(0,t.jsxs)("p",{className:`num mt-1 flex items-center gap-1.5 text-lg font-bold ${ei.rebootRequired?"text-danger glow-text-danger":"text-success"}`,children:[ei.rebootRequired?(0,t.jsx)(y.f,{className:"h-4 w-4"}):null,ei.rebootRequired]})]}),(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-[0.16em] text-text-muted",children:"Reporting"}),(0,t.jsxs)("p",{className:"num mt-1 text-lg font-bold",children:[ei.reporting," / ",ei.total]})]})]})})}),(0,t.jsx)(F.z,{children:(0,t.jsx)(r.N,{children:O?O.startsWith("Control node unreachable")?(0,t.jsx)(V.f,{tone:"warning",icon:(0,t.jsx)(x.f,{className:"h-5 w-5"}),title:O,description:"Cannot connect to this Control Node. Verify it is running and reachable.",action:(0,t.jsx)(n.K,{variant:"secondary",size:"sm",onClick:()=>void ep(),children:"Retry"})}):(0,t.jsx)(V.f,{tone:"danger",icon:(0,t.jsx)(h.f,{className:"h-5 w-5"}),title:"Error loading nodes",description:O,action:(0,t.jsx)(n.K,{variant:"secondary",size:"sm",onClick:()=>void ep(),children:"Retry"})}):U?(0,t.jsx)(G.F,{rows:6,cols:9,className:"border-0"}):0===z.length?(0,t.jsx)(V.f,{tone:"primary",icon:(0,t.jsx)(N.f,{className:"h-5 w-5"}),title:"No nodes registered",description:"Register your first Magnus node to get started.",action:(0,t.jsx)(n.K,{size:"sm",icon:(0,t.jsx)(d.f,{className:"h-3.5 w-3.5"}),onClick:()=>J(!0),children:"Register Node"})}):(0,t.jsx)("div",{className:"max-h-[70vh] overflow-auto",children:(0,t.jsxs)("table",{className:"w-full text-[11px]",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"sticky top-0 z-10 border-b border-primary/30 bg-surface/95 text-left text-[10px] font-bold uppercase tracking-[0.15em] text-text-muted shadow-[0_1px_0_var(--color-primary),0_4px_12px_-6px_var(--color-glow)] backdrop-blur-sm",children:[(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Name"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Host"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Address"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Status"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Agent"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Role"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"CPU"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Memory"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Persistent Disk"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Updates"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Tailscale key"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Last Heartbeat"}),(0,t.jsx)("th",{className:"pb-3",children:"Actions"})]})}),(0,t.jsx)("tbody",{className:"divide-y divide-border/50",children:z.map(e=>{var s;let r=ea[e.id],l=(function(e){if(Array.isArray(e))return e;if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}})(r?.disks).filter(e=>"/"===e.mountPoint||"/home"===e.mountPoint||e.mountPoint.startsWith("/home/")||e.mountPoint.startsWith("/mnt/")||e.mountPoint.startsWith("/srv/")).filter(e=>!v.some(t=>e.mountPoint===t||e.mountPoint.startsWith(t))).filter(e=>!w.has((e.filesystemType??"").toLowerCase())).sort((e,t)=>t.usagePercent-e.usagePercent)[0]??null,c=l?(s=l.usagePercent)>=95?"critical":s>=80?"warning":"normal":null,d=ei?.nodes.find(t=>t.id===e.id)?.systemUpdates??null,o=ec?.nodes.find(t=>t.id===e.id)?.tailscale??null;return(0,t.jsxs)("tr",{className:"group/row relative transition-colors hover:bg-primary/[0.03] [&>td:first-child]:shadow-[inset_2px_0_0_transparent] hover:[&>td:first-child]:shadow-[inset_2px_0_0_var(--color-primary)]",children:[(0,t.jsx)("td",{className:"py-3 pl-2 pr-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(L.f,{status:e.status,size:"xs"}),"ONLINE"===e.status&&(0,t.jsx)("button",{onClick:()=>er(e),title:`Open terminal on ${e.name}`,className:"flex h-6 w-6 items-center justify-center rounded border border-border/50 text-text-muted hover:text-primary hover:border-primary/40 transition-colors",children:(0,t.jsx)(j.f,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(k.default,{href:`/nodes/${e.id}`,className:"font-medium text-primary hover:text-primary-hover transition-colors",children:e.name})]})}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:e.hostname}),(0,t.jsxs)("td",{className:"py-3 pr-4 text-text-muted",children:[e.ipAddress,":",e.port]}),(0,t.jsx)("td",{className:"py-3 pr-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(a.t,{variant:(0,a.k)(e.status),children:e.status}),("DEGRADED"===e.status||e.agent?.status==="ERROR")&&q(e.metadata)&&(0,t.jsx)("span",{title:`${q(e.metadata).label}: ${q(e.metadata).message}`,children:(0,t.jsx)(h.f,{className:"h-3.5 w-3.5 text-danger cursor-help"})}),"PROVISIONING"===e.status&&(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 text-info animate-spin"})]})}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[e.agent?`v${e.agent.version}`:"—",e.agent?.status==="UPDATING"&&(0,t.jsx)(p.f,{className:"h-3 w-3 text-info animate-spin"})]})}),(0,t.jsx)("td",{className:"py-3 pr-4",children:e.role?(0,t.jsxs)("button",{className:"inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/5 px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider text-primary hover:bg-primary/10 hover:border-primary/50 transition-all cursor-pointer",onClick:()=>Q(e),title:"Change role",children:[(0,t.jsx)(g.f,{className:"h-3 w-3"}),e.role.name]}):(0,t.jsx)("button",{className:"text-[10px] text-text-muted hover:text-primary transition-colors cursor-pointer uppercase tracking-wider",onClick:()=>Q(e),children:"+ Assign"})}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:r?(0,t.jsx)(D.f,{value:r.cpuUsagePercent,label:`${e.name} CPU`,valueLabel:`${r.cpuUsagePercent.toFixed(1)}%`,showValue:!0,className:"w-28"}):"—"}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:r?(0,t.jsxs)("div",{className:"w-36",children:[(0,t.jsx)(D.f,{value:r.memoryPercent,label:`${e.name} memory`,showValue:!0}),(0,t.jsxs)("span",{className:"num mt-0.5 block text-[10px] text-text-muted/80",children:[(r.memoryUsedBytes/0x40000000).toFixed(1)," / ",(r.memoryTotalBytes/0x40000000).toFixed(1)," GB"]})]}):"—"}),(0,t.jsx)("td",{className:"py-3 pr-4",children:l?(0,t.jsxs)("span",{className:"flex w-36 flex-col gap-0.5",title:`${l.mountPoint} filesystem is ${l.usagePercent}% used${"normal"===c?"":" — disk usage anomaly"}`,children:[(0,t.jsx)(D.f,{value:l.usagePercent,tone:"critical"===c?"danger":"warning"===c?"warning":"success",label:`${e.name} ${l.mountPoint} disk`,valueLabel:`${l.usagePercent.toFixed(0)}%`,glow:"normal"!==c,showValue:!0}),(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-text-muted",children:["normal"!==c&&(0,t.jsx)(f.f,{"aria-label":`${c} disk usage anomaly`,className:"critical"===c?"h-3 w-3 text-danger":"h-3 w-3 text-warning"}),l.mountPoint]})]}):(0,t.jsx)("span",{className:"text-text-muted",children:"—"})}),(0,t.jsx)("td",{className:"py-3 pr-4",children:d?d.rebootRequired?(0,t.jsx)(a.t,{variant:"danger",children:"reboot required"}):"enabled"===d.automaticUpdates?(0,t.jsx)(a.t,{variant:"success",children:"automatic"}):"unsupported"===d.automaticUpdates?(0,t.jsx)(a.t,{variant:"default",children:"unsupported"}):(0,t.jsx)(a.t,{variant:"warning",children:"enable updates"}):(0,t.jsx)(a.t,{variant:"default",children:"awaiting agent"})}),(0,t.jsx)("td",{className:"py-3 pr-4",title:o?.keyExpiry?`Expires ${o.keyExpiry}`:void 0,children:o?o.expiryEnabled?o.expired?(0,t.jsx)(a.t,{variant:"danger",children:"expired"}):null===o.daysRemaining?(0,t.jsx)(a.t,{variant:"default",children:"unknown"}):o.requiresRenewal?(0,t.jsxs)(a.t,{variant:"warning",children:[o.daysRemaining,"d"]}):(0,t.jsxs)(a.t,{variant:"success",children:[o.daysRemaining,"d"]}):(0,t.jsx)(a.t,{variant:"success",children:"no expiry"}):(0,t.jsx)(a.t,{variant:"default",children:"awaiting agent"})}),(0,t.jsx)("td",{className:"num py-3 pr-4 text-text-muted",children:(0,i.C)(e.lastHeartbeatAt)}),(0,t.jsx)("td",{className:"py-3",children:(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)(k.default,{href:`/nodes/${e.id}`,children:(0,t.jsx)(n.K,{variant:"ghost",size:"sm",children:"View"})}),(0,t.jsx)(n.K,{variant:"ghost",size:"sm",onClick:()=>W(e),children:(0,t.jsx)(m.f,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(n.K,{variant:"ghost",size:"sm",onClick:()=>void eh(e),children:(0,t.jsx)(u.f,{className:"h-3.5 w-3.5 text-danger"})})]})})]},e.id)})})]})})})}),(0,t.jsx)(F.z,{children:(0,t.jsxs)(r.N,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(x.f,{className:"h-4 w-4 text-primary"}),(0,t.jsx)("h2",{className:"text-xs font-bold uppercase tracking-wider",children:"Network Discovery"}),(0,t.jsx)("span",{className:"text-[11px] text-text-muted",children:"— Unadopted agents found on the local network"})]}),(0,t.jsx)(n.K,{variant:"secondary",size:"sm",icon:X?(0,t.jsx)(p.f,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(x.f,{className:"h-3.5 w-3.5"}),onClick:()=>void ef(),disabled:X,children:X?"Scanning…":"Scan Network"})]}),0===ee.length?X?(0,t.jsxs)("div",{className:"flex flex-col items-center gap-3 py-6",children:[(0,t.jsxs)("div",{className:"relative h-16 w-16 overflow-hidden rounded-full border border-primary/30 shadow-[0_0_16px_var(--color-glow)]",children:[(0,t.jsx)("div",{className:"absolute inset-0 animate-sweep rounded-full bg-[conic-gradient(from_0deg,transparent_0deg,transparent_280deg,var(--color-primary)_360deg)] opacity-60"}),(0,t.jsx)("div",{className:"absolute inset-[30%] rounded-full border border-primary/20"})]}),(0,t.jsx)("p",{className:"text-[11px] uppercase tracking-wider text-primary",children:"Broadcasting discovery probe…"})]}):(0,t.jsx)(V.f,{compact:!0,icon:(0,t.jsx)(x.f,{className:"h-4 w-4"}),title:"No scan results yet",description:'Click "Scan Network" to discover unadopted agents on your network.'}):(R=ee.filter(e=>!e.registered),E=ee.filter(e=>e.registered),0===R.length?(0,t.jsxs)("div",{className:"py-6 text-center text-[11px] text-text-muted",children:["All ",E.length," discovered agent",1!==E.length?"s":""," already registered. No new nodes to adopt."]}):(0,t.jsxs)("div",{className:"overflow-x-auto",children:[(0,t.jsxs)("table",{className:"w-full text-[11px]",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"border-b border-primary/20 text-left text-[10px] font-bold uppercase tracking-[0.15em] text-text-muted",children:[(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Hostname"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"IP Address"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Port"}),(0,t.jsx)("th",{className:"pb-3 pr-4",children:"Agent Version"}),(0,t.jsx)("th",{className:"pb-3",children:"Registration"})]})}),(0,t.jsx)("tbody",{className:"divide-y divide-border/50",children:R.map(e=>(0,t.jsxs)("tr",{className:"hover:bg-surface-hover transition-colors",children:[(0,t.jsx)("td",{className:"py-3 pr-4 font-medium",children:e.fqdn||e.hostname}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:e.ip}),(0,t.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:e.port}),(0,t.jsxs)("td",{className:"py-3 pr-4 text-text-muted",children:["v",e.version]}),(0,t.jsx)("td",{className:"py-3 text-text-muted",children:"Use the reviewed key-only agent deploy runbook, then register the authenticated heartbeat."})]},`${e.ip}:${e.port}`))})]}),E.length>0&&(0,t.jsxs)("p",{className:"mt-3 text-xs text-text-muted",children:[E.length," already-registered agent",1!==E.length?"s":""," ","hidden from this list."]})]}))]})}),(0,t.jsx)(C.M,{open:M,onClose:()=>J(!1),onRegistered:()=>void ep()}),(0,t.jsx)(C.F,{open:!!H,node:H,onClose:()=>W(null),onSaved:()=>void ep()}),(0,t.jsx)(C.E,{open:!!Y,node:Y,onClose:()=>Q(null),onSaved:e=>{Y&&(em.current[Y.id]=e,A(t=>t.map(t=>t.id===Y.id?{...t,role:e}:t))),ep()}}),(0,t.jsx)(T,{open:!!es,onClose:()=>er(null),node:es})]})}],86421)}]);