@omnitron-dev/omnitron 0.3.3 → 0.3.5

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 (179) hide show
  1. package/bin/pnpmfile-sdk.mjs +6 -1
  2. package/bin/sdk.mjs +6 -2
  3. package/dist/BUILD.json +2 -2
  4. package/dist/cli/omnitron.js +54 -14
  5. package/dist/cli/omnitron.js.map +1 -1
  6. package/dist/commands/infra.d.ts +8 -2
  7. package/dist/commands/infra.d.ts.map +1 -1
  8. package/dist/commands/infra.js +52 -59
  9. package/dist/commands/infra.js.map +1 -1
  10. package/dist/commands/node.d.ts.map +1 -1
  11. package/dist/commands/node.js +8 -1
  12. package/dist/commands/node.js.map +1 -1
  13. package/dist/commands/release-store.d.ts.map +1 -1
  14. package/dist/commands/release-store.js +6 -9
  15. package/dist/commands/release-store.js.map +1 -1
  16. package/dist/commands/release.d.ts +4 -1
  17. package/dist/commands/release.d.ts.map +1 -1
  18. package/dist/commands/release.js +125 -5
  19. package/dist/commands/release.js.map +1 -1
  20. package/dist/commands/stack.d.ts +1 -1
  21. package/dist/commands/stack.d.ts.map +1 -1
  22. package/dist/commands/stack.js +19 -9
  23. package/dist/commands/stack.js.map +1 -1
  24. package/dist/config/saved.d.ts +3 -0
  25. package/dist/config/saved.d.ts.map +1 -1
  26. package/dist/config/saved.js +1 -0
  27. package/dist/config/saved.js.map +1 -1
  28. package/dist/config/types.d.ts +4 -0
  29. package/dist/config/types.d.ts.map +1 -1
  30. package/dist/daemon/daemon.d.ts.map +1 -1
  31. package/dist/daemon/daemon.js +30 -6
  32. package/dist/daemon/daemon.js.map +1 -1
  33. package/dist/daemon/daemon.rpc-service.d.ts +0 -26
  34. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  35. package/dist/daemon/daemon.rpc-service.js +23 -114
  36. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  37. package/dist/daemon/execution-client.d.ts +1 -1
  38. package/dist/daemon/execution-client.d.ts.map +1 -1
  39. package/dist/daemon/execution-client.js +17 -13
  40. package/dist/daemon/execution-client.js.map +1 -1
  41. package/dist/daemon/startup-config.d.ts +1 -0
  42. package/dist/daemon/startup-config.d.ts.map +1 -1
  43. package/dist/infrastructure/container-runtime.d.ts +8 -0
  44. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  45. package/dist/infrastructure/container-runtime.js +5 -0
  46. package/dist/infrastructure/container-runtime.js.map +1 -1
  47. package/dist/infrastructure/infrastructure.service.d.ts +5 -0
  48. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  49. package/dist/infrastructure/infrastructure.service.js +18 -8
  50. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  51. package/dist/infrastructure/presets/postgres.js +1 -1
  52. package/dist/infrastructure/presets/postgres.js.map +1 -1
  53. package/dist/infrastructure/presets/registry.d.ts.map +1 -1
  54. package/dist/infrastructure/presets/registry.js +11 -19
  55. package/dist/infrastructure/presets/registry.js.map +1 -1
  56. package/dist/infrastructure/stack-infra-manager.d.ts +4 -0
  57. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  58. package/dist/infrastructure/stack-infra-manager.js +38 -4
  59. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  60. package/dist/mcp/tool-groups/infra.tools.d.ts.map +1 -1
  61. package/dist/mcp/tool-groups/infra.tools.js +4 -1
  62. package/dist/mcp/tool-groups/infra.tools.js.map +1 -1
  63. package/dist/orchestrator/app-name.d.ts +33 -0
  64. package/dist/orchestrator/app-name.d.ts.map +1 -0
  65. package/dist/orchestrator/app-name.js +68 -0
  66. package/dist/orchestrator/app-name.js.map +1 -0
  67. package/dist/orchestrator/orchestrator.service.d.ts +1 -26
  68. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  69. package/dist/orchestrator/orchestrator.service.js +10 -89
  70. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  71. package/dist/project/stack-diagnosis.d.ts.map +1 -1
  72. package/dist/project/stack-diagnosis.js +2 -3
  73. package/dist/project/stack-diagnosis.js.map +1 -1
  74. package/dist/release/artifact-store.d.ts +42 -7
  75. package/dist/release/artifact-store.d.ts.map +1 -1
  76. package/dist/release/artifact-store.js +176 -62
  77. package/dist/release/artifact-store.js.map +1 -1
  78. package/dist/release/configured-store.d.ts +6 -0
  79. package/dist/release/configured-store.d.ts.map +1 -0
  80. package/dist/release/configured-store.js +54 -0
  81. package/dist/release/configured-store.js.map +1 -0
  82. package/dist/release/load.d.ts +3 -0
  83. package/dist/release/load.d.ts.map +1 -1
  84. package/dist/release/load.js +8 -2
  85. package/dist/release/load.js.map +1 -1
  86. package/dist/services/infrastructure.rpc-service.d.ts +6 -2
  87. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  88. package/dist/services/infrastructure.rpc-service.js +43 -12
  89. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  90. package/dist/services/node-deploy-lease.d.ts +4 -1
  91. package/dist/services/node-deploy-lease.d.ts.map +1 -1
  92. package/dist/services/node-deploy-lease.js +29 -4
  93. package/dist/services/node-deploy-lease.js.map +1 -1
  94. package/dist/services/node-manager.service.d.ts +5 -25
  95. package/dist/services/node-manager.service.d.ts.map +1 -1
  96. package/dist/services/node-manager.service.js +150 -139
  97. package/dist/services/node-manager.service.js.map +1 -1
  98. package/dist/services/project.service.d.ts +6 -0
  99. package/dist/services/project.service.d.ts.map +1 -1
  100. package/dist/services/project.service.js +89 -9
  101. package/dist/services/project.service.js.map +1 -1
  102. package/dist/services/release.rpc-service.d.ts +2 -1
  103. package/dist/services/release.rpc-service.d.ts.map +1 -1
  104. package/dist/services/release.rpc-service.js +19 -3
  105. package/dist/services/release.rpc-service.js.map +1 -1
  106. package/dist/services/release.service.d.ts +24 -11
  107. package/dist/services/release.service.d.ts.map +1 -1
  108. package/dist/services/release.service.js +162 -39
  109. package/dist/services/release.service.js.map +1 -1
  110. package/dist/services/remote-deployer.service.d.ts +1 -1
  111. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  112. package/dist/services/remote-deployer.service.js.map +1 -1
  113. package/dist/services/secrets.service.d.ts +6 -0
  114. package/dist/services/secrets.service.d.ts.map +1 -1
  115. package/dist/services/secrets.service.js +95 -51
  116. package/dist/services/secrets.service.js.map +1 -1
  117. package/dist/shared/dto/nodes.d.ts +2 -0
  118. package/dist/shared/dto/nodes.d.ts.map +1 -1
  119. package/dist/shared/dto/project.d.ts +1 -1
  120. package/dist/shared/dto/project.d.ts.map +1 -1
  121. package/dist/shared/dto/releases.d.ts +8 -1
  122. package/dist/shared/dto/releases.d.ts.map +1 -1
  123. package/dist/shared/dto/services.d.ts +18 -1
  124. package/dist/shared/dto/services.d.ts.map +1 -1
  125. package/dist/shared/dto/services.js.map +1 -1
  126. package/dist/shared/release-reading.d.ts +6 -0
  127. package/dist/shared/release-reading.d.ts.map +1 -1
  128. package/dist/shared/release-reading.js +42 -0
  129. package/dist/shared/release-reading.js.map +1 -1
  130. package/package.json +16 -16
  131. package/webapp/dist/BUILD.json +2 -2
  132. package/webapp/dist/assets/{access-48hkC2-P.js → access-BvKK9dEv.js} +1 -1
  133. package/webapp/dist/assets/{access-jWkHxGc7.js → access-DUjabwNX.js} +1 -1
  134. package/webapp/dist/assets/{alerts-CuPQ9YQJ.js → alerts-CzN6OqX5.js} +1 -1
  135. package/webapp/dist/assets/{apps-Drio028B.js → apps-G_Lm6m4F.js} +1 -1
  136. package/webapp/dist/assets/{audit-npSFJECe.js → audit-CLMpdBzG.js} +1 -1
  137. package/webapp/dist/assets/{containers-Bl8gAyZX.js → containers-BsFwprq4.js} +1 -1
  138. package/webapp/dist/assets/{dashboard-UHlet3H9.js → dashboard-BN7rKE5n.js} +1 -1
  139. package/webapp/dist/assets/{dashboard-builder-67PZFqhE.js → dashboard-builder-BXFxWjXP.js} +1 -1
  140. package/webapp/dist/assets/deploy-progress-CUUwlYtQ.js +1 -0
  141. package/webapp/dist/assets/deploy-release-dialog-58lGZDNk.js +1 -0
  142. package/webapp/dist/assets/deployments-DEzjHerg.js +1 -0
  143. package/webapp/dist/assets/detail-CBn9pjJU.js +2 -0
  144. package/webapp/dist/assets/{detail-CYS81K6Y.js → detail-Dj3gxaH0.js} +1 -1
  145. package/webapp/dist/assets/{detail-B4TiBfxU.js → detail-pXPk4O0E.js} +1 -1
  146. package/webapp/dist/assets/index-Bo9An3pJ.js +1 -0
  147. package/webapp/dist/assets/{logs-BqHOufk8.js → logs-DrsBbLfb.js} +1 -1
  148. package/webapp/dist/assets/{metrics-QIQaF7iS.js → metrics-D5cDZTEo.js} +1 -1
  149. package/webapp/dist/assets/{mui-y44PQOfG.js → mui-59N0OVRa.js} +1 -1
  150. package/webapp/dist/assets/{mui-C_hromOc.js → mui-D5m7fDCh.js} +1 -1
  151. package/webapp/dist/assets/{mui-BIz4LSVs.js → mui-Db5J-QUd.js} +1 -1
  152. package/webapp/dist/assets/{mui-B1jrje6Z.js → mui-dLCwWoMw.js} +1 -1
  153. package/webapp/dist/assets/{nodes-BJPk02vv.js → nodes-CwwZZuu4.js} +1 -1
  154. package/webapp/dist/assets/{pipelines-T6Ch9LTw.js → pipelines-BrfTjf6Y.js} +1 -1
  155. package/webapp/dist/assets/project.store-DuCgv6Eq.js +1 -0
  156. package/webapp/dist/assets/{projects-YoBzcQ24.js → projects-TBAdpCeX.js} +1 -1
  157. package/webapp/dist/assets/{realtime.store-CBDO4Abj.js → realtime.store-hfxZD2DU.js} +1 -1
  158. package/webapp/dist/assets/release-bits-BJ6i23y0.js +1 -0
  159. package/webapp/dist/assets/release-build-panel-BNXkwNE1.js +1 -0
  160. package/webapp/dist/assets/release-deployment-state-gN8ZT3aq.js +1 -0
  161. package/webapp/dist/assets/releases-CXXKUh-v.js +2 -0
  162. package/webapp/dist/assets/{stack-start-notice-BVnMOwRQ.js → stack-start-notice-D-AH_bzn.js} +1 -1
  163. package/webapp/dist/assets/{stacks-IZ1mfizi.js → stacks-WY_ynkON.js} +1 -1
  164. package/webapp/dist/assets/{system-info-BFKNM-hf.js → system-info-DXMwo6gl.js} +1 -1
  165. package/webapp/dist/assets/{topology-CPey5dP6.js → topology-C_Qp1RqW.js} +1 -1
  166. package/webapp/dist/assets/{use-stack-context-UkBsF-l7.js → use-stack-context-8yaHaN8L.js} +1 -1
  167. package/webapp/dist/assets/{webapp-D-UhjFhS.js → webapp-BO_WoB_z.js} +3 -3
  168. package/webapp/dist/console-version.json +1 -1
  169. package/webapp/dist/index.html +12 -12
  170. package/webapp/dist/assets/deploy-release-dialog-BOXcD5Wo.js +0 -1
  171. package/webapp/dist/assets/deployments-qV20Ak0P.js +0 -1
  172. package/webapp/dist/assets/detail-B85-Wees.js +0 -2
  173. package/webapp/dist/assets/index-uq8Dkk4c.js +0 -1
  174. package/webapp/dist/assets/project.store--G5pIF-J.js +0 -1
  175. package/webapp/dist/assets/release-bits-B2a_wbft.js +0 -1
  176. package/webapp/dist/assets/release-build-panel-BQmIdKW9.js +0 -1
  177. package/webapp/dist/assets/release-deployment-state-DRrEI2pP.js +0 -1
  178. package/webapp/dist/assets/release-wire-f2VuBoBF.js +0 -1
  179. package/webapp/dist/assets/releases-Bp3CDgmo.js +0 -2
@@ -1 +1 @@
1
- import{i as e,n as t}from"./rolldown-runtime-CNOWq4Kh.js";import{i as n,t as r}from"./react-BN8qLIAi.js";import{a as i,i as a}from"./services-BddvcFi8.js";import{Bt as o,F as s,Ft as c,G as l,I as u,It as d,K as f,_ as p,an as m,dn as h,fn as g,g as _,gn as v,hn as y,in as b,it as x,mn as S,pn as C,rt as w,xt as T,zt as ee}from"./mui-BTN91yBK.js";import{Ft as E,It as D,_n as O,a as te,dn as k,gn as A,o as j,un as M}from"./mui-CdB_p2lt.js";import{J as ne,q as N}from"./mui-BXSXx9c9.js";import{B as P,z as F}from"./mui-Cd711nOk.js";import{i as I,n as L,t as R}from"./dayjs.min-DHwAvH5f.js";import{n as z,t as B}from"./mui-6ssfcZcz.js";import{a as re,i as ie,n as ae,o as oe,r as se}from"./webapp-D-UhjFhS.js";import{A as ce,B as le,C as ue,D as V,E as H,F as de,G as U,H as W,I as fe,J as pe,K as me,L as he,M as ge,N as _e,O as ve,S as G,T as ye,V as be,W as xe,X as Se,Y as Ce,Z as we,b as Te,d as Ee,et as De,f as Oe,h as ke,i as Ae,k as je,m as Me,n as Ne,p as Pe,q as Fe,r as Ie,t as Le,tt as Re,u as ze,v as Be,w as Ve,x as He,y as Ue,z as We}from"./mui-C_hromOc.js";import{D as Ge,E as Ke,S as K,a as qe,b as Je,c as Ye,h as Xe,i as Ze,n as Qe,o as $e,p as et,r as tt,s as nt,t as rt,w as q,x as it}from"./mui-BIz4LSVs.js";import{d as at,f as ot,n as st,o as ct,r as lt,s as ut,t as dt}from"./mui-y44PQOfG.js";import{a as ft,i as pt,o as mt,r as ht}from"./apps-Drio028B.js";var gt,_t,vt,yt,bt;function xt(){return(xt=t((()=>{z(),gt=e(n(),1),E(),_t=r(),vt=[`localeText`],yt=gt.createContext(null),bt=function(e){let{localeText:t}=e,n=L(e,vt),{adapter:r,localeText:i}=gt.useContext(yt)??{adapter:void 0,localeText:void 0},{children:a,dateAdapter:o,dateFormats:s,dateLibInstance:c,adapterLocale:l,localeText:u}=D({props:n,name:`MuiLocalizationProvider`}),d=gt.useMemo(()=>I({},u,i,t),[u,i,t]),f=gt.useMemo(()=>{if(!o)return r||null;let e=new o({locale:l,formats:s,instance:c});if(!e.isMUIAdapter)throw Error(B(143));return e},[o,l,s,c,r]),p=gt.useMemo(()=>f?{minDate:f.date(`1900-01-01T00:00:00.000`),maxDate:f.date(`2099-12-31T00:00:00.000`)}:null,[f]),m=gt.useMemo(()=>({adapter:f,defaultDates:p,localeText:d}),[p,f,d]);return(0,_t.jsx)(yt.Provider,{value:m,children:a})}})))()}function St(){throw Error(B(138))}function Ct(){throw Error(B(139))}var J,wt,Tt,Et,Dt,Ot,kt,At,jt;function Mt(){return(Mt=t((()=>{z(),J=e(R(),1),wt=e(oe(),1),Tt=e(re(),1),Et=e(ie(),1),Dt=e(se(),1),Ot=e(ae(),1),J.default.extend(Et.default),J.default.extend(wt.default),J.default.extend(Dt.default),J.default.extend(Ot.default),kt={YY:`year`,YYYY:{sectionType:`year`,contentType:`digit`,maxLength:4},M:{sectionType:`month`,contentType:`digit`,maxLength:2},MM:`month`,MMM:{sectionType:`month`,contentType:`letter`},MMMM:{sectionType:`month`,contentType:`letter`},D:{sectionType:`day`,contentType:`digit`,maxLength:2},DD:`day`,Do:{sectionType:`day`,contentType:`digit-with-letter`},d:{sectionType:`weekDay`,contentType:`digit`,maxLength:2},dd:{sectionType:`weekDay`,contentType:`letter`},ddd:{sectionType:`weekDay`,contentType:`letter`},dddd:{sectionType:`weekDay`,contentType:`letter`},A:`meridiem`,a:`meridiem`,H:{sectionType:`hours`,contentType:`digit`,maxLength:2},HH:`hours`,h:{sectionType:`hours`,contentType:`digit`,maxLength:2},hh:`hours`,m:{sectionType:`minutes`,contentType:`digit`,maxLength:2},mm:`minutes`,s:{sectionType:`seconds`,contentType:`digit`,maxLength:2},ss:`seconds`},At={year:`YYYY`,month:`MMMM`,monthShort:`MMM`,dayOfMonth:`D`,dayOfMonthFull:`Do`,weekday:`dddd`,weekdayShort:`dd`,hours24h:`HH`,hours12h:`hh`,meridiem:`A`,minutes:`mm`,seconds:`ss`,fullDate:`ll`,keyboardDate:`L`,shortDate:`MMM D`,normalDate:`D MMMM`,normalDateWithWeekday:`ddd, MMM D`,fullTime12h:`hh:mm A`,fullTime24h:`HH:mm`,keyboardDateTime12h:`L hh:mm A`,keyboardDateTime24h:`L HH:mm`},jt=class{isMUIAdapter=!0;isTimezoneCompatible=!0;lib=`dayjs`;escapedCharacters={start:`[`,end:`]`};formatTokenMap=kt;constructor({locale:e,formats:t}={}){this.locale=e,this.formats=I({},At,t),J.default.extend(Tt.default)}setLocaleToValue=e=>{let t=this.getCurrentLocaleCode();return t===e.locale()?e:e.locale(t)};hasUTCPlugin=()=>J.default.utc!==void 0;hasTimezonePlugin=()=>J.default.tz!==void 0;isSame=(e,t,n)=>{let r=this.setTimezone(t,this.getTimezone(e));return e.format(n)===r.format(n)};cleanTimezone=e=>{switch(e){case`default`:return;case`system`:return J.default.tz.guess();default:return e}};createSystemDate=e=>this.setLocaleToValue((0,J.default)(e));createUTCDate=e=>(this.hasUTCPlugin()||St(),this.setLocaleToValue(J.default.utc(e)));createTZDate=(e,t)=>{this.hasUTCPlugin()||St(),this.hasTimezonePlugin()||Ct();let n=e!==void 0&&!e.endsWith(`Z`);return this.setLocaleToValue((0,J.default)(e).tz(this.cleanTimezone(t),n))};getLocaleFormats=()=>{let e=J.default.Ls,t=e[this.locale||`en`];return t===void 0&&(t=e.en),t.formats};adjustOffset=e=>{if(!this.hasTimezonePlugin())return e;let t=this.getTimezone(e);if(t===`UTC`||t===`system`&&e.$offset===void 0)return e;if(t!==`system`&&e.isValid())return this.getWallTimeValue(this.getWallTime(e),t,e.utcOffset()).locale(e.locale());let n=e.tz(this.cleanTimezone(t),!0);return(n.$offset??0)!==(e.$offset??0)&&(e.$offset=n.$offset),e};getWallTime=e=>{let t=new Date(0);return t.setUTCFullYear(e.year(),e.month(),e.date()),t.setUTCHours(e.hour(),e.minute(),e.second(),e.millisecond()),t.getTime()};toTimezone=(e,t)=>{let n=(e%1e3+1e3)%1e3;return this.setTimezone((0,J.default)(e-n),t).add(n,`millisecond`)};getWallTimeValue=(e,t,n)=>{let r=n=>this.toTimezone(e-n*6e4,t);if(n!==void 0){let t=r(n);if(this.getWallTime(t)===e)return t}let i=r(this.toTimezone(e-864e5,t).utcOffset());if(this.getWallTime(i)===e)return i;let a=r(this.toTimezone(e+864e5,t).utcOffset());return this.getWallTime(a)===e?a:i};addTime=(e,t,n)=>{if(!this.hasTimezonePlugin())return this.adjustOffset(e.add(t,n));let r=(0,J.default)(e.valueOf()).add(t,n).valueOf();return this.toTimezone(r,this.getTimezone(e)).locale(e.locale())};isAffectedByLocalMeanTime=e=>{let t=e.$x?.$timezone;return this.hasUTCPlugin()&&this.hasTimezonePlugin()&&!!t};getDaysInMonthFromFields=e=>{let t=new Date(0);return t.setUTCFullYear(e.year(),e.month()+1,0),t.getUTCDate()};restoreDayOfMonth=(e,t)=>{if(!this.isAffectedByLocalMeanTime(e)||!e.isValid())return e;let n=Math.min(t.date(),this.getDaysInMonthFromFields(e));return e.date()===n?e:e.set(`date`,n)};date=(e,t=`default`)=>e===null?null:t===`UTC`?this.createUTCDate(e):t===`system`||t==="default"&&!this.hasTimezonePlugin()?this.createSystemDate(e):this.createTZDate(e,t);getInvalidDate=()=>(0,J.default)(new Date(`Invalid date`));getTimezone=e=>{if(this.hasTimezonePlugin()){let t=e.$x?.$timezone;if(t)return t}return this.hasUTCPlugin()&&e.isUTC()?`UTC`:`system`};setTimezone=(e,t)=>{if(this.getTimezone(e)===t)return e;if(t===`UTC`)return this.hasUTCPlugin()||St(),e.utc();if(t===`system`)return e.local();if(!this.hasTimezonePlugin()){if(t==="default")return e;Ct()}return this.setLocaleToValue(J.default.tz(e,this.cleanTimezone(t)))};toJsDate=e=>e.toDate();parse=(e,t)=>e===``?null:(0,J.default)(e,t,this.locale,!0);getCurrentLocaleCode=()=>this.locale||`en`;is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||``);expandFormat=e=>{let t=this.getLocaleFormats(),n=e=>e.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(e,t,n)=>t||n.slice(1));return e.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(e,r,i)=>{let a=i&&i.toUpperCase();return r||t[i]||n(t[a])})};isValid=e=>e!=null&&e.isValid();format=(e,t)=>this.formatByString(e,this.formats[t]);formatByString=(e,t)=>this.setLocaleToValue(e).format(t);formatNumber=e=>e;isEqual=(e,t)=>e===null&&t===null?!0:e===null||t===null?!1:e.toDate().getTime()===t.toDate().getTime();isSameYear=(e,t)=>this.isSame(e,t,`YYYY`);isSameMonth=(e,t)=>this.isSame(e,t,`YYYY-MM`);isSameDay=(e,t)=>this.isSame(e,t,`YYYY-MM-DD`);isSameHour=(e,t)=>e.isSame(t,`hour`);isAfter=(e,t)=>e>t;isAfterYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()>t.utc():e.isAfter(t,`year`);isAfterDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()>t.utc():e.isAfter(t,`day`);isBefore=(e,t)=>e<t;isBeforeYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()<t.utc():e.isBefore(t,`year`);isBeforeDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()<t.utc():e.isBefore(t,`day`);isWithinRange=(e,[t,n])=>e>=t&&e<=n;startOfYear=e=>this.adjustOffset(e.startOf(`year`));startOfMonth=e=>this.adjustOffset(e.startOf(`month`));startOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).startOf(`week`));startOfDay=e=>{let t=this.getTimezone(e);if(t===`UTC`||!this.hasTimezonePlugin()||!e.isValid())return this.adjustOffset(e.startOf(`day`));if(t===`system`)return(0,J.default)(e.valueOf()).startOf(`day`).locale(e.locale());let n=new Date(this.getWallTime(e));return n.setUTCHours(0,0,0,0),this.getWallTimeValue(n.getTime(),t).locale(e.locale())};endOfYear=e=>this.adjustOffset(e.endOf(`year`));endOfMonth=e=>this.adjustOffset(e.endOf(`month`));endOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).endOf(`week`));endOfDay=e=>this.adjustOffset(e.endOf(`day`));addYears=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.add(t,`year`),e));addMonths=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.add(t,`month`),e));addWeeks=(e,t)=>this.adjustOffset(e.add(t,`week`));addDays=(e,t)=>this.adjustOffset(e.add(t,`day`));addHours=(e,t)=>this.addTime(e,t,`hour`);addMinutes=(e,t)=>this.addTime(e,t,`minute`);addSeconds=(e,t)=>this.addTime(e,t,`second`);getYear=e=>e.year();getMonth=e=>e.month();getDate=e=>e.date();getHours=e=>e.hour();getMinutes=e=>e.minute();getSeconds=e=>e.second();getMilliseconds=e=>e.millisecond();setYear=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.set(`year`,t),e));setMonth=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.set(`month`,t),e));setDate=(e,t)=>this.adjustOffset(e.set(`date`,t));setHours=(e,t)=>this.adjustOffset(e.set(`hour`,t));setMinutes=(e,t)=>this.adjustOffset(e.set(`minute`,t));setSeconds=(e,t)=>this.adjustOffset(e.set(`second`,t));setMilliseconds=(e,t)=>this.adjustOffset(e.set(`millisecond`,t));getDaysInMonth=e=>this.isAffectedByLocalMeanTime(e)?this.getDaysInMonthFromFields(e):e.daysInMonth();getWeekArray=e=>{let t=this.startOfWeek(this.startOfMonth(e)),n=this.endOfWeek(this.endOfMonth(e)),r=0,i=t,a=[];for(;i<n;){let e=Math.floor(r/7);a[e]=a[e]||[],a[e].push(i),i=this.addDays(i,1),r+=1}return a};getWeekNumber=e=>e.week();getDayOfWeek(e){return e.day()+1}getYearRange=([e,t])=>{let n=this.startOfYear(e),r=this.endOfYear(t),i=[],a=n;for(;this.isBefore(a,r);)i.push(a),a=this.addYears(a,1);return i}}})))()}function Nt(e){return y(`MuiDatePickerToolbar`,e)}function Pt(){return(Pt=t((()=>{v(),S(),C(`MuiDatePickerToolbar`,[`root`,`title`])})))()}var Ft,It,Lt,Rt,zt,Bt,Vt;function Ht(){return(Ht=t((()=>{Ft=e(n(),1),i(),P(),M(),E(),Fe(),K(),Ke(),Je(),Pt(),W(),pe(),It=r(),Lt=[`toolbarFormat`,`toolbarPlaceholder`,`className`,`classes`],Rt=e=>T({root:[`root`],title:[`title`]},Nt,e),zt=k(me,{name:`MuiDatePickerToolbar`,slot:`Root`})({}),Bt=k(F,{name:`MuiDatePickerToolbar`,slot:`Title`})({variants:[{props:{pickerOrientation:`landscape`},style:{margin:`auto 16px auto auto`}}]}),Vt=Ft.forwardRef(function(e,t){let n=D({props:e,name:`MuiDatePickerToolbar`}),{toolbarFormat:r,toolbarPlaceholder:i=`––`,className:o,classes:s}=n,c=L(n,Lt),l=q(),{value:u,views:d,orientation:f}=Ge(),p=it(),m=Ce(),h=Rt(s),g=Ft.useMemo(()=>{if(!l.isValid(u))return i;let e=U(l,{format:r,views:d},!0);return l.formatByString(u,e)},[u,r,i,l,d]);return(0,It.jsx)(zt,I({ref:t,toolbarTitle:p.datePickerToolbarTitle,className:a(h.root,o)},c,{children:(0,It.jsx)(Bt,{variant:`h4`,align:f===`landscape`?`left`:`center`,ownerState:m,className:h.title,children:g})}))})})))()}function Ut(e,t){let n=D({props:e,name:t}),r=st(n),i=Wt.useMemo(()=>n.localeText?.toolbarTitle==null?n.localeText:I({},n.localeText,{datePickerToolbarTitle:n.localeText.toolbarTitle}),[n.localeText]);return I({},n,r,{localeText:i},De({views:n.views,openTo:n.openTo,defaultViews:[`year`,`day`],defaultOpenTo:`day`}),{slots:I({toolbar:Vt},n.slots)})}var Wt;function Gt(){return(Gt=t((()=>{Wt=e(n(),1),E(),Re(),Ht(),dt()})))()}var Kt;function qt(){return(qt=t((()=>{Be(),dt(),Kt=e=>{let t=lt();return Ue({manager:t,props:e})}})))()}var Jt,Yt,Xt,Zt;function Qt(){return(Qt=t((()=>{Jt=e(n(),1),E(),qt(),Me(),Xe(),Yt=r(),Xt=[`slots`,`slotProps`],Zt=Jt.forwardRef(function(e,t){let n=D({props:e,name:`MuiDateField`}),{slots:r,slotProps:i}=n,a=L(n,Xt),o=ke({slotProps:i,ref:t,externalForwardedProps:a}),s=Kt(o);return(0,Yt.jsx)(Pe,{slots:r,slotProps:i,inputRef:a.inputRef,children:(0,Yt.jsx)(Oe,{fieldResponse:s,defaultOpenPickerIcon:et})})})})))()}var $t,en;function tn(){return(tn=t((()=>{$t=e(n(),1),ct(),K(),en=({shouldDisableDate:e,shouldDisableMonth:t,shouldDisableYear:n,minDate:r,maxDate:i,disableFuture:a,disablePast:o,timezone:s})=>{let c=q();return $t.useCallback(l=>ut({adapter:c,value:l,timezone:s,props:{shouldDisableDate:e,shouldDisableMonth:t,shouldDisableYear:n,minDate:r,maxDate:i,disableFuture:a,disablePast:o}})!==null,[c,e,t,n,r,i,a,o,s])}})))()}var nn,rn,an;function on(){return(on=t((()=>{nn=e(n(),1),w(),tn(),_e(),he(),W(),K(),rn=(e,t)=>(n,r)=>{switch(r.type){case`setVisibleDate`:return I({},n,{slideDirection:r.direction,currentMonth:r.month,isMonthSwitchingAnimating:!t.isSameMonth(r.month,n.currentMonth)&&!e&&!r.skipAnimation,focusedDay:r.focusedDay});case`changeMonthTimezone`:{let e=r.newTimezone;if(t.getTimezone(n.currentMonth)===e)return n;let i=t.setTimezone(n.currentMonth,e);return t.getMonth(i)!==t.getMonth(n.currentMonth)&&(i=t.setMonth(i,t.getMonth(n.currentMonth))),I({},n,{currentMonth:i})}case`finishMonthSwitchingAnimation`:return I({},n,{isMonthSwitchingAnimating:!1});default:throw Error(`missing support`)}},an=e=>{let{value:t,referenceDate:n,disableFuture:r,disablePast:i,maxDate:a,minDate:o,onMonthChange:s,onYearChange:c,reduceAnimations:l,shouldDisableDate:u,timezone:d,getCurrentMonthFromVisibleDate:f}=e,p=q(),m=nn.useRef(rn(!!l,p)).current,h=nn.useMemo(()=>de.getInitialReferenceValue({value:t,adapter:p,timezone:d,props:e,referenceDate:n,granularity:fe.day}),[n,d]),[g,_]=nn.useReducer(m,{isMonthSwitchingAnimating:!1,focusedDay:h,currentMonth:p.setDate(h,1),slideDirection:`left`}),v=nn.useRef(g.focusedDay),y=en({shouldDisableDate:u,minDate:o,maxDate:a,disableFuture:r,disablePast:i,timezone:d});return nn.useEffect(()=>{_({type:`changeMonthTimezone`,newTimezone:p.getTimezone(h)})},[h,p]),{referenceDate:h,calendarState:g,setVisibleDate:x(({target:e,reason:t})=>{if(t===`cell-interaction`&&v.current!=null&&p.isSameDay(e,v.current))return;let n=t===`cell-interaction`,l,u;if(t===`cell-interaction`)l=f(e,g.currentMonth),u=e;else if(l=p.isSameMonth(e,g.currentMonth)?g.currentMonth:p.startOfMonth(e),u=e,y(u)){let t=p.startOfMonth(e),n=p.endOfMonth(e);u=We({adapter:p,date:u,minDate:p.isBefore(o,t)?t:o,maxDate:p.isAfter(a,n)?n:a,disablePast:i,disableFuture:r,isDateDisabled:y,timezone:d})}let m=!p.isSameMonth(g.currentMonth,l),h=!p.isSameYear(g.currentMonth,l);m&&s?.(l),h&&c?.(p.startOfYear(l)),v.current=g.focusedDay!=null&&u!=null&&p.isSameDay(u,g.focusedDay)?g.focusedDay:u,_({type:`setVisibleDate`,month:l,direction:p.isAfterDay(l,g.currentMonth)?`left`:`right`,focusedDay:v.current,skipAnimation:n})}),isDateDisabled:y,onMonthSwitchingAnimationEnd:nn.useCallback(()=>{_({type:`finishMonthSwitchingAnimation`})},[])}}})))()}var sn;function cn(){return(cn=t((()=>{v(),S(),sn=e=>y(`MuiPickersFadeTransitionGroup`,e),C(`MuiPickersFadeTransitionGroup`,[`root`])})))()}function ln(e){let t=D({props:e,name:`MuiPickersFadeTransitionGroup`}),{className:n,reduceAnimations:r,transKey:i,classes:o}=t,{children:s}=t,c=L(t,dn),l=fn(o),u=O();return r?s:(0,un.jsx)(pn,{className:a(l.root,n),ownerState:c,children:(0,un.jsx)(N,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,exit:!1,timeout:{appear:u.transitions.duration.enteringScreen,enter:u.transitions.duration.enteringScreen},children:s},i)})}var un,dn,fn,pn;function mn(){return(mn=t((()=>{n(),i(),pt(),ne(),M(),A(),E(),cn(),un=r(),dn=[`children`],fn=e=>T({root:[`root`]},sn,e),pn=k(ht,{name:`MuiPickersFadeTransitionGroup`,slot:`Root`})({display:`block`,position:`relative`})})))()}var hn,Y;function gn(){return(gn=t((()=>{v(),S(),hn=e=>y(`MuiPickersSlideTransition`,e),Y=C(`MuiPickersSlideTransition`,[`root`,`slideEnter-left`,`slideEnter-right`,`slideEnterActive`,`slideExit`,`slideExitActiveLeft-left`,`slideExitActiveLeft-right`])})))()}function _n(e){let t=D({props:e,name:`MuiPickersSlideTransition`}),{children:n,className:r,reduceAnimations:i,slideDirection:o,transKey:s,classes:c}=t,l=L(t,bn),{ownerState:u}=we(),d=I({},u,{slideDirection:o}),f=xn(c,d),p=O();if(i)return(0,yn.jsx)(`div`,{role:`none`,className:a(f.root,r),children:n});let m={exit:f.exit,enterActive:f.enterActive,enter:f.enter,exitActive:f.exitActive};return(0,yn.jsx)(Cn,{className:a(f.root,r),childFactory:e=>vn.cloneElement(e,{classNames:m}),role:`none`,ownerState:d,children:(0,yn.jsx)(ft,I({mountOnEnter:!0,unmountOnExit:!0,timeout:p.transitions.duration.complex,classNames:m},l,{children:n}),s)})}var vn,yn,bn,xn,Sn,Cn;function wn(){return(wn=t((()=>{vn=e(n(),1),i(),M(),A(),E(),mt(),pt(),gn(),Se(),yn=r(),bn=[`children`,`className`,`reduceAnimations`,`slideDirection`,`transKey`,`classes`],xn=(e,t)=>{let{slideDirection:n}=t,r={root:[`root`],exit:[`slideExit`],enterActive:[`slideEnterActive`],enter:[`slideEnter-${n}`],exitActive:[`slideExitActiveLeft-${n}`]};return T(r,hn,e)},Sn=[`slideEnter-left`,`slideEnter-right`,`slideEnterActive`,`slideExit`,`slideExitActiveLeft-left`,`slideExitActiveLeft-right`],Cn=k(ht,{name:`MuiPickersSlideTransition`,slot:`Root`,overridesResolver:(e,t)=>Sn.reduce((e,n)=>(e.push({[`.${Y[n]}`]:t[n]}),e),[t.root])})(({theme:e})=>{let t=e.transitions.create(`transform`,{duration:e.transitions.duration.complex,easing:`cubic-bezier(0.35, 0.8, 0.4, 1)`});return{display:`block`,position:`relative`,overflowX:`hidden`,"& > *":{position:`absolute`,top:0,right:0,left:0},[`& .${Y[`slideEnter-left`]}`]:{willChange:`transform`,transform:`translate(100%)`,zIndex:1},[`& .${Y[`slideEnter-right`]}`]:{willChange:`transform`,transform:`translate(-100%)`,zIndex:1},[`& .${Y.slideEnterActive}`]:{transform:`translate(0%)`,transition:t},[`& .${Y.slideExit}`]:{transform:`translate(0%)`},[`& .${Y[`slideExitActiveLeft-left`]}`]:{willChange:`transform`,transform:`translate(-100%)`,transition:t,zIndex:0},[`& .${Y[`slideExitActiveLeft-right`]}`]:{willChange:`transform`,transform:`translate(100%)`,transition:t,zIndex:0}}})})))()}var Tn;function En(){return(En=t((()=>{v(),S(),Tn=e=>y(`MuiDayCalendar`,e),C(`MuiDayCalendar`,[`root`,`header`,`weekDayLabel`,`loadingContainer`,`slideTransition`,`monthContainer`,`weekContainer`,`weekNumberLabel`,`weekNumber`])})))()}function Dn(e){let{parentProps:t,day:n,focusedDay:r,selectedDays:i,isDateDisabled:a,currentMonthNumber:o,isViewFocused:s}=e,c=L(e,kn),{currentMonth:l,disabled:u,disableHighlightToday:d,isMonthSwitchingAnimating:f,showDaysOutsideCurrentMonth:m,slots:h,slotProps:g,timezone:_}=t,v=q(),y=ge(_),b=r!=null&&v.isSameDay(n,r),x=s&&b,S=i.some(e=>v.isSameDay(e,n)),C=v.isSameDay(n,y),w=X.useMemo(()=>u||a(n),[u,a,n]),T=X.useMemo(()=>v.getMonth(n)!==o,[v,n,o]),ee=Ee({day:n,selected:S,disabled:w,today:C,outsideCurrentMonth:T,disableHighlightToday:d,showDaysOutsideCurrentMonth:m}),E=h?.day??nt,D=p({elementType:E,externalSlotProps:g?.day,additionalProps:I({disableHighlightToday:d,showDaysOutsideCurrentMonth:m,role:`gridcell`,isAnimating:f,"data-timestamp":v.toJsDate(n).valueOf()},c),ownerState:I({},ee,{day:n,isDayDisabled:w,isDaySelected:S})}),O=L(D,An),te=X.useMemo(()=>{let e=v.startOfMonth(l);return m?v.isSameDay(n,v.startOfWeek(e)):v.isSameDay(n,e)},[l,n,m,v]),k=X.useMemo(()=>{let e=v.endOfMonth(l);return m?v.isSameDay(n,v.endOfWeek(e)):v.isSameDay(n,e)},[l,n,m,v]);return(0,Z.jsx)(E,I({},O,{day:n,disabled:w,autoFocus:!T&&x,today:C,outsideCurrentMonth:T,isFirstVisibleCell:te,isLastVisibleCell:k,selected:S,tabIndex:b?0:-1,"aria-selected":S,"aria-current":C?`date`:void 0}))}function On(e){let t=D({props:e,name:`MuiDayCalendar`}),n=q(),{onFocusedDayChange:r,className:i,classes:s,currentMonth:c,selectedDays:l,focusedDay:u,loading:d,onSelectedDaysChange:f,onMonthSwitchingAnimationEnd:p,readOnly:m,reduceAnimations:h,renderLoading:g=()=>(0,Z.jsx)(`span`,{children:`…`}),slideDirection:_,TransitionProps:v,disablePast:y,disableFuture:b,minDate:S,maxDate:C,shouldDisableDate:w,shouldDisableMonth:T,shouldDisableYear:ee,dayOfWeekFormatter:E=e=>n.format(e,`weekdayShort`).charAt(0).toUpperCase(),hasFocus:O,onFocusedViewChange:te,gridLabelId:k,displayWeekNumber:A,fixedWeekNumber:j,timezone:M}=t,ne=ge(M),N=jn(s),P=o(),F=+!!A,L=en({shouldDisableDate:w,shouldDisableMonth:T,shouldDisableYear:ee,minDate:S,maxDate:C,disablePast:y,disableFuture:b,timezone:M}),R=it(),z=x(e=>{m||f(e)}),B=e=>{L(e)||(r(e),te?.(!0))},re=x((e,t)=>{switch(e.key){case`ArrowUp`:B(n.addDays(t,-7)),e.preventDefault();break;case`ArrowDown`:B(n.addDays(t,7)),e.preventDefault();break;case`ArrowLeft`:{let r=n.addDays(t,P?1:-1),i=n.addMonths(t,P?1:-1),a=We({adapter:n,date:r,minDate:P?r:n.startOfMonth(i),maxDate:P?n.endOfMonth(i):r,isDateDisabled:L,timezone:M});B(a||r),e.preventDefault();break}case`ArrowRight`:{let r=n.addDays(t,P?-1:1),i=n.addMonths(t,P?-1:1),a=We({adapter:n,date:r,minDate:P?n.startOfMonth(i):r,maxDate:P?r:n.endOfMonth(i),isDateDisabled:L,timezone:M});B(a||r),e.preventDefault();break}case`Home`:B(n.startOfWeek(t)),e.preventDefault();break;case`End`:B(n.endOfWeek(t)),e.preventDefault();break;case`PageUp`:B(n.addMonths(t,1)),e.preventDefault();break;case`PageDown`:B(n.addMonths(t,-1)),e.preventDefault();break;case`Enter`:case` `:z(t),e.preventDefault()}}),ie=x((e,t)=>B(t)),ae=x((e,t)=>{u!=null&&n.isSameDay(u,t)&&te?.(!1)}),oe=n.getMonth(c),se=n.getYear(c),ce=X.useMemo(()=>l.filter(e=>!!e).map(e=>n.startOfDay(e)),[n,l]),le=`${se}-${oe}`,ue=X.useMemo(()=>X.createRef(),[le]),V=X.useMemo(()=>{let e=n.getWeekArray(c),t=n.addMonths(c,1);for(;j&&e.length<j;){let r=n.getWeekArray(t),i=n.isSameDay(e[e.length-1][0],r[0][0]);r.slice(+!!i).forEach(t=>{e.length<j&&e.push(t)}),t=n.addMonths(t,1)}return e},[c,j,n]);return(0,Z.jsxs)(Nn,{role:`grid`,"aria-labelledby":k,"aria-colcount":F+7,"aria-rowcount":V.length+1,className:N.root,children:[(0,Z.jsxs)(Pn,{role:`row`,"aria-rowindex":1,className:N.header,children:[A&&(0,Z.jsx)(In,{variant:`caption`,role:`columnheader`,"aria-colindex":1,"aria-label":R.calendarWeekNumberHeaderLabel,className:N.weekNumberLabel,children:R.calendarWeekNumberHeaderText}),be(n,ne).map((e,t)=>(0,Z.jsx)(Fn,{variant:`caption`,role:`columnheader`,"aria-colindex":F+t+1,"aria-label":n.format(e,`weekday`),className:N.weekDayLabel,children:E(e)},t.toString()))]}),d?(0,Z.jsx)(Rn,{className:N.loadingContainer,children:g()}):(0,Z.jsx)(zn,I({transKey:le,onExited:p,reduceAnimations:h,slideDirection:_,className:a(i,N.slideTransition)},v,{nodeRef:ue,children:(0,Z.jsx)(Bn,{ref:ue,role:`rowgroup`,className:N.monthContainer,children:V.map((e,r)=>(0,Z.jsxs)(Vn,{role:`row`,className:N.weekContainer,"aria-rowindex":r+2,children:[A&&(0,Z.jsx)(Ln,{className:N.weekNumber,role:`rowheader`,"aria-colindex":1,"aria-label":R.calendarWeekNumberAriaLabelText(n.getWeekNumber(e[0])),children:R.calendarWeekNumberText(n.getWeekNumber(e[0]))}),e.map((e,n)=>(0,Z.jsx)(Dn,{parentProps:t,day:e,selectedDays:ce,isViewFocused:O,focusedDay:u,onKeyDown:re,onFocus:ie,onBlur:ae,onDaySelect:z,isDateDisabled:L,currentMonthNumber:oe,"aria-colindex":F+n+1},e.toString()))]},`week-${e[0]}`))})}))]})}var X,Z,kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn;function Hn(){return(Hn=t((()=>{X=e(n(),1),w(),P(),_(),ee(),M(),E(),i(),Ye(),K(),Je(),ce(),wn(),tn(),W(),En(),ze(),Z=r(),kn=[`parentProps`,`day`,`focusedDay`,`selectedDays`,`isDateDisabled`,`currentMonthNumber`,`isViewFocused`],An=[`ownerState`],jn=e=>T({root:[`root`],header:[`header`],weekDayLabel:[`weekDayLabel`],loadingContainer:[`loadingContainer`],slideTransition:[`slideTransition`],monthContainer:[`monthContainer`],weekContainer:[`weekContainer`],weekNumberLabel:[`weekNumberLabel`],weekNumber:[`weekNumber`]},Tn,e),Mn=240,Nn=k(`div`,{name:`MuiDayCalendar`,slot:`Root`})({}),Pn=k(`div`,{name:`MuiDayCalendar`,slot:`Header`})({display:`flex`,justifyContent:`center`,alignItems:`center`}),Fn=k(F,{name:`MuiDayCalendar`,slot:`WeekDayLabel`})(({theme:e})=>({width:36,height:40,margin:`0 2px`,textAlign:`center`,display:`flex`,justifyContent:`center`,alignItems:`center`,color:(e.vars||e).palette.text.secondary})),In=k(F,{name:`MuiDayCalendar`,slot:`WeekNumberLabel`})(({theme:e})=>({width:36,height:40,margin:`0 2px`,textAlign:`center`,display:`flex`,justifyContent:`center`,alignItems:`center`,color:(e.vars||e).palette.text.disabled})),Ln=k(F,{name:`MuiDayCalendar`,slot:`WeekNumber`})(({theme:e})=>I({},e.typography.caption,{width:36,height:36,padding:0,margin:`0 2px`,color:(e.vars||e).palette.text.disabled,fontSize:`0.75rem`,alignItems:`center`,justifyContent:`center`,display:`inline-flex`})),Rn=k(`div`,{name:`MuiDayCalendar`,slot:`LoadingContainer`})({display:`flex`,justifyContent:`center`,alignItems:`center`,minHeight:Mn}),zn=k(_n,{name:`MuiDayCalendar`,slot:`SlideTransition`})({minHeight:Mn}),Bn=k(`div`,{name:`MuiDayCalendar`,slot:`MonthContainer`})({overflow:`hidden`}),Vn=k(`div`,{name:`MuiDayCalendar`,slot:`WeekContainer`})({margin:`2px 0`,display:`flex`,justifyContent:`center`})})))()}function Un(e){return y(`MuiMonthCalendar`,e)}var Wn;function Gn(){return(Gn=t((()=>{v(),S(),Wn=C(`MuiMonthCalendar`,[`root`,`button`,`disabled`,`selected`])})))()}var Kn,qn,Jn,Yn,Xn,Zn;function Qn(){return(Qn=t((()=>{Kn=e(n(),1),M(),_(),b(),Se(),Gn(),qn=r(),Jn=[`autoFocus`,`classes`,`disabled`,`selected`,`value`,`onClick`,`onKeyDown`,`onFocus`,`onBlur`,`slots`,`slotProps`],Yn=(e,t)=>{let n={button:[`button`,t.isMonthDisabled&&`disabled`,t.isMonthSelected&&`selected`]};return T(n,Un,e)},Xn=k(`button`,{name:`MuiMonthCalendar`,slot:`Button`,overridesResolver:(e,t)=>[t.button,{[`&.${Wn.disabled}`]:t.disabled},{[`&.${Wn.selected}`]:t.selected}]})(({theme:e})=>I({color:`unset`,backgroundColor:`transparent`,border:0,outline:0},e.typography.subtitle1,{height:36,width:72,borderRadius:18,cursor:`pointer`,"&:focus":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)},"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)},"&:disabled":{cursor:`auto`,pointerEvents:`none`},[`&.${Wn.disabled}`]:{color:(e.vars||e).palette.text.secondary},[`&.${Wn.selected}`]:{color:(e.vars||e).palette.primary.contrastText,backgroundColor:(e.vars||e).palette.primary.main,"&:focus, &:hover":{backgroundColor:(e.vars||e).palette.primary.dark}}})),Zn=Kn.memo(function(e){let{autoFocus:t,classes:n,disabled:r,selected:i,value:a,onClick:o,onKeyDown:s,onFocus:c,onBlur:l,slots:u,slotProps:d}=e,f=L(e,Jn),h=Kn.useRef(null),{ownerState:g}=we(),_=I({},g,{isMonthDisabled:r,isMonthSelected:i}),v=Yn(n,_);m(()=>{t&&h.current?.focus()},[t]);let y=u?.monthButton??Xn,b=p({elementType:y,externalSlotProps:d?.monthButton,externalForwardedProps:f,additionalProps:{disabled:r,ref:h,type:`button`,role:`radio`,"aria-checked":i,onClick:e=>o(e,a),onKeyDown:e=>s(e,a),onFocus:e=>c(e,a),onBlur:e=>l(e,a)},ownerState:_,className:v.button});return(0,qn.jsx)(y,I({},b))})})))()}function $n(e,t){let n=D({props:e,name:t}),r=st(n);return I({},n,r,{monthsPerRow:n.monthsPerRow??3})}var Q,er,tr,nr,rr,ir,ar;function or(){return(or=t((()=>{Q=e(n(),1),i(),ee(),h(),M(),E(),l(),w(),Qn(),ce(),Gn(),W(),_e(),he(),G(),Se(),dt(),K(),er=r(),tr=[`autoFocus`,`className`,`currentMonth`,`classes`,`value`,`defaultValue`,`referenceDate`,`disabled`,`disableFuture`,`disablePast`,`maxDate`,`minDate`,`onChange`,`shouldDisableMonth`,`readOnly`,`disableHighlightToday`,`onMonthFocus`,`hasFocus`,`onFocusedViewChange`,`monthsPerRow`,`timezone`,`gridLabelId`,`slots`,`slotProps`],nr=e=>T({root:[`root`]},Un,e),rr=(e,t,n,r,i)=>!!(e===t&&r&&i.isSameYear(n,r)),ir=k(`div`,{name:`MuiMonthCalendar`,slot:`Root`,shouldForwardProp:e=>g(e)&&e!==`monthsPerRow`})({display:`flex`,flexWrap:`wrap`,justifyContent:`space-evenly`,rowGap:16,padding:`8px 0`,width:320,boxSizing:`border-box`,variants:[{props:{monthsPerRow:3},style:{columnGap:24}},{props:{monthsPerRow:4},style:{columnGap:0}}]}),ar=Q.forwardRef(function(e,t){let n=$n(e,`MuiMonthCalendar`),{autoFocus:r,className:i,currentMonth:s,classes:c,value:l,defaultValue:u,referenceDate:d,disabled:p,disableFuture:m,disablePast:h,maxDate:g,minDate:_,onChange:v,shouldDisableMonth:y,readOnly:b,onMonthFocus:S,hasFocus:C,onFocusedViewChange:w,monthsPerRow:T,timezone:ee,gridLabelId:E,slots:D,slotProps:O}=n,te=L(n,tr),{value:k,handleValueChange:A,timezone:j}=ue({name:`MonthCalendar`,timezone:ee,value:l,defaultValue:u,referenceDate:d,onChange:v,valueManager:de}),M=ge(j),ne=o(),N=q(),{ownerState:P}=we(),F=Q.useMemo(()=>de.getInitialReferenceValue({value:k,adapter:N,props:n,timezone:j,referenceDate:d,granularity:fe.month}),[]),R=nr(c),z=Q.useMemo(()=>N.getMonth(M),[N,M]),B=Q.useMemo(()=>k==null?null:N.getMonth(k),[k,N]),[re,ie]=Q.useState(()=>B||N.getMonth(F)),[ae,oe]=f({name:`MonthCalendar`,state:`hasFocus`,controlled:C,default:r??!1}),se=x(e=>{oe(e),w&&w(e)}),ce=Q.useCallback(e=>{let t=N.startOfMonth(h&&N.isAfter(M,_)?M:_),n=N.startOfMonth(m&&N.isBefore(M,g)?M:g),r=N.startOfMonth(e);return N.isBefore(r,t)||N.isAfter(r,n)?!0:y?y(r):!1},[m,h,g,_,M,y,N]),V=x((e,t)=>{if(b)return;let n=(k&&s&&!N.isSameYear(k,s)?N.setYear(k,N.getYear(s)):k)??s??F,r=N.setMonth(n,t);A(r)}),H=x(e=>{ce(N.setMonth(k??s??F,e))||(ie(e),se(!0),S&&S(e))});Q.useEffect(()=>{ie(e=>B!==null&&e!==B?B:e)},[B]);let U=x((e,t)=>{switch(e.key){case`ArrowUp`:H((12+t-T)%12),e.preventDefault();break;case`ArrowDown`:H((12+t+T)%12),e.preventDefault();break;case`ArrowLeft`:H((12+t+(ne?1:-1))%12),e.preventDefault();break;case`ArrowRight`:H((12+t+(ne?-1:1))%12),e.preventDefault();break;case`Enter`:case` `:V(e,t),e.preventDefault()}}),W=x((e,t)=>{H(t)}),pe=x((e,t)=>{re===t&&se(!1)});return(0,er.jsx)(ir,I({ref:t,className:a(R.root,i),ownerState:P,role:`radiogroup`,"aria-labelledby":E,monthsPerRow:T},te,{children:le(N,s??k??F).map(e=>{let t=N.getMonth(e),n=N.format(e,`monthShort`),r=N.format(e,`month`),i=rr(t,B,e,k,N),a=p||ce(e);return(0,er.jsx)(Zn,{selected:i,value:t,onClick:V,onKeyDown:U,autoFocus:ae&&t===re,disabled:a,tabIndex:t===re&&!a?0:-1,onFocus:W,onBlur:pe,"aria-current":rr(t,z,e,M,N)?`date`:void 0,"aria-label":r,slots:D,slotProps:O,classes:c,children:n},n)})}))})})))()}var sr,cr;function lr(){return(lr=t((()=>{v(),S(),sr=e=>y(`MuiDateCalendar`,e),cr=C(`MuiDateCalendar`,[`root`,`viewTransitionContainer`])})))()}function ur(e,t){let n=D({props:e,name:t}),r=V(n.reduceAnimations),i=st(n);return I({},n,i,{loading:n.loading??!1,openTo:n.openTo??`day`,views:n.views??[`year`,`day`],reduceAnimations:r,renderLoading:n.renderLoading??(()=>(0,$.jsx)(`span`,{children:`…`}))})}var dr,$,fr,pr,mr,hr,gr;function _r(){return(_r=t((()=>{dr=e(n(),1),i(),_(),M(),E(),c(),w(),on(),mn(),Hn(),or(),$e(),Ve(),Ze(),W(),Ae(),H(),lr(),G(),_e(),Se(),dt(),K(),$=r(),fr=`autoFocus.onViewChange.value.defaultValue.referenceDate.disableFuture.disablePast.onChange.onYearChange.onMonthChange.reduceAnimations.shouldDisableDate.shouldDisableMonth.shouldDisableYear.view.views.openTo.className.classes.disabled.readOnly.minDate.maxDate.disableHighlightToday.focusedView.onFocusedViewChange.showDaysOutsideCurrentMonth.fixedWeekNumber.dayOfWeekFormatter.slots.slotProps.loading.renderLoading.displayWeekNumber.yearsOrder.yearsPerRow.monthsPerRow.timezone`.split(`.`),pr=e=>T({root:[`root`],viewTransitionContainer:[`viewTransitionContainer`]},sr,e),mr=k(Ie,{name:`MuiDateCalendar`,slot:`Root`})({display:`flex`,flexDirection:`column`,height:336}),hr=k(ln,{name:`MuiDateCalendar`,slot:`ViewTransitionContainer`})({}),gr=dr.forwardRef(function(e,t){let n=q(),{ownerState:r}=we(),i=d(),o=ur(e,`MuiDateCalendar`),{autoFocus:s,onViewChange:c,value:l,defaultValue:u,referenceDate:f,disableFuture:m,disablePast:h,onChange:g,onYearChange:_,onMonthChange:v,reduceAnimations:y,shouldDisableDate:b,shouldDisableMonth:S,shouldDisableYear:C,view:w,views:T,openTo:ee,className:E,classes:D,disabled:O,readOnly:te,minDate:k,maxDate:A,disableHighlightToday:j,focusedView:M,onFocusedViewChange:ne,showDaysOutsideCurrentMonth:N,fixedWeekNumber:P,dayOfWeekFormatter:F,slots:R,slotProps:z,loading:B,renderLoading:re,displayWeekNumber:ie,yearsOrder:ae,yearsPerRow:oe,monthsPerRow:se,timezone:ce}=o,le=L(o,fr),{value:V,handleValueChange:H,timezone:U}=ue({name:`DateCalendar`,timezone:ce,value:l,defaultValue:u,referenceDate:f,onChange:g,valueManager:de}),{view:W,setView:fe,focusedView:pe,setFocusedView:me,goToNextView:he,setValueAndGoToNextView:ge}=ye({view:w,views:T,openTo:ee,onChange:H,onViewChange:c,autoFocus:s,focusedView:M,onFocusedViewChange:ne}),{referenceDate:_e,calendarState:ve,setVisibleDate:G,isDateDisabled:be,onMonthSwitchingAnimationEnd:Se}=an({value:V,referenceDate:f,reduceAnimations:y,onMonthChange:v,onYearChange:_,minDate:k,maxDate:A,shouldDisableDate:b,disablePast:h,disableFuture:m,timezone:U,getCurrentMonthFromVisibleDate:(e,t)=>n.isSameMonth(e,t)?t:n.startOfMonth(e)}),Ce=O&&V||k,Te=O&&V||A,Ee=`${i}-grid-label`,De=pe!==null,Oe=R?.calendarHeader??tt,ke=p({elementType:Oe,externalSlotProps:z?.calendarHeader,additionalProps:{views:T,view:W,currentMonth:ve.currentMonth,onViewChange:fe,onMonthChange:e=>G({target:e,reason:`header-navigation`}),minDate:Ce,maxDate:Te,disabled:O,disablePast:h,disableFuture:m,reduceAnimations:y,timezone:U,labelId:Ee},ownerState:r}),Ae=x(e=>{let t=n.startOfMonth(e),r=n.endOfMonth(e),i=be(e)?We({adapter:n,date:e,minDate:n.isBefore(k,t)?t:k,maxDate:n.isAfter(A,r)?r:A,disablePast:h,disableFuture:m,isDateDisabled:be,timezone:U}):e;i?(ge(i,`finish`),G({target:i,reason:`cell-interaction`})):(he(),G({target:t,reason:`cell-interaction`}))}),je=x(e=>{let t=n.startOfYear(e),r=n.endOfYear(e),i=be(e)?We({adapter:n,date:e,minDate:n.isBefore(k,t)?t:k,maxDate:n.isAfter(A,r)?r:A,disablePast:h,disableFuture:m,isDateDisabled:be,timezone:U}):e;i?(ge(i,`finish`),G({target:i,reason:`cell-interaction`})):(he(),G({target:t,reason:`cell-interaction`}))}),Me=x(e=>H(e&&xe(n,e,V??_e),`finish`,W));dr.useEffect(()=>{n.isValid(V)&&G({target:V,reason:`controlled-value-change`})},[V]);let Ne=pr(D),Pe={disablePast:h,disableFuture:m,maxDate:A,minDate:k},Fe={disableHighlightToday:j,readOnly:te,disabled:O,timezone:U,gridLabelId:Ee,slots:R,slotProps:z},Ie=dr.useRef(W);dr.useEffect(()=>{Ie.current!==W&&(pe===Ie.current&&me(W,!0),Ie.current=W)},[pe,me,W]);let Le=dr.useMemo(()=>[V],[V]);return(0,$.jsxs)(mr,I({ref:t,className:a(Ne.root,E),ownerState:r},le,{children:[(0,$.jsx)(Oe,I({},ke,{slots:R,slotProps:z})),(0,$.jsx)(hr,{reduceAnimations:y,className:Ne.viewTransitionContainer,transKey:W,ownerState:r,children:(0,$.jsxs)(`div`,{children:[W===`year`&&(0,$.jsx)(qe,I({},Pe,Fe,{value:V,onChange:je,shouldDisableYear:C,hasFocus:De,onFocusedViewChange:e=>me(`year`,e),yearsOrder:ae,yearsPerRow:oe,referenceDate:_e})),W===`month`&&(0,$.jsx)(ar,I({},Pe,Fe,{currentMonth:ve.currentMonth,hasFocus:De,className:E,value:V,onChange:Ae,shouldDisableMonth:S,onFocusedViewChange:e=>me(`month`,e),monthsPerRow:se,referenceDate:_e})),W===`day`&&(0,$.jsx)(On,I({},ve,Pe,Fe,{onMonthSwitchingAnimationEnd:Se,hasFocus:De,onFocusedDayChange:e=>G({target:e,reason:`cell-interaction`}),reduceAnimations:y,selectedDays:Le,onSelectedDaysChange:Me,shouldDisableDate:b,shouldDisableMonth:S,shouldDisableYear:C,onFocusedViewChange:e=>me(`day`,e),showDaysOutsideCurrentMonth:N,fixedWeekNumber:P,dayOfWeekFormatter:F,displayWeekNumber:ie,loading:B,renderLoading:re}))]})})]}))})})))()}var vr,yr;function br(){return(br=t((()=>{vr=e(n(),1),s(),Gt(),K(),ot(),Te(),Qt(),rt(),W(),dt(),yr=vr.forwardRef(function(e,t){let n=q(),r=lt(),i=Ut(e,`MuiDesktopDatePicker`),a=I({day:Qe,month:Qe,year:Qe},i.viewRenderers),o=I({},i,{closeOnSelect:i.closeOnSelect??!0,viewRenderers:a,format:U(n,i,!1),yearsPerRow:i.yearsPerRow??4,slots:I({field:Zt},i.slots),slotProps:I({},i.slotProps,{field:e=>I({},u(i.slotProps?.field,e),at(i)),toolbar:I({hidden:!0},i.slotProps?.toolbar)})}),{renderPicker:s}=He({ref:t,props:o,manager:r,steps:null});return s()})})))()}var xr,Sr;function Cr(){return(Cr=t((()=>{xr=e(n(),1),s(),Le(),Gt(),K(),ot(),Qt(),rt(),W(),dt(),Sr=xr.forwardRef(function(e,t){let n=q(),r=lt(),i=Ut(e,`MuiMobileDatePicker`),a=I({day:Qe,month:Qe,year:Qe},i.viewRenderers),o=I({},i,{viewRenderers:a,format:U(n,i,!1),slots:I({field:Zt},i.slots),slotProps:I({},i.slotProps,{field:e=>I({},u(i.slotProps?.field,e),at(i)),toolbar:I({hidden:!1},i.slotProps?.toolbar)})}),{renderPicker:s}=Ne({ref:t,props:o,manager:r,steps:null});return s()})})))()}var wr,Tr,Er,Dr;function Or(){return(Or=t((()=>{wr=e(n(),1),te(),E(),br(),Cr(),je(),Tr=r(),Er=[`desktopModeMediaQuery`],Dr=wr.forwardRef(function(e,t){let n=D({props:e,name:`MuiDatePicker`}),{desktopModeMediaQuery:r=ve}=n,i=L(n,Er);return j(r,{defaultMatches:!0})?(0,Tr.jsx)(yr,I({ref:t},i)):(0,Tr.jsx)(Sr,I({ref:t},i))})})))()}export{cr as a,mn as c,bt as d,yt as f,_r as i,jt as l,Or as n,lr as o,xt as p,gr as r,ln as s,Dr as t,Mt as u};
1
+ import{i as e,n as t}from"./rolldown-runtime-CNOWq4Kh.js";import{i as n,t as r}from"./react-BN8qLIAi.js";import{a as i,i as a}from"./services-BddvcFi8.js";import{Bt as o,F as s,Ft as c,G as l,I as u,It as d,K as f,_ as p,an as m,dn as h,fn as g,g as _,gn as v,hn as y,in as b,it as x,mn as S,pn as C,rt as w,xt as T,zt as ee}from"./mui-BTN91yBK.js";import{Ft as E,It as D,_n as O,a as te,dn as k,gn as A,o as j,un as M}from"./mui-CdB_p2lt.js";import{J as ne,q as N}from"./mui-BXSXx9c9.js";import{B as P,z as F}from"./mui-Cd711nOk.js";import{i as I,n as L,t as R}from"./dayjs.min-DHwAvH5f.js";import{n as z,t as B}from"./mui-6ssfcZcz.js";import{a as re,i as ie,n as ae,o as oe,r as se}from"./webapp-BO_WoB_z.js";import{A as ce,B as le,C as ue,D as V,E as H,F as de,G as U,H as W,I as fe,J as pe,K as me,L as he,M as ge,N as _e,O as ve,S as G,T as ye,V as be,W as xe,X as Se,Y as Ce,Z as we,b as Te,d as Ee,et as De,f as Oe,h as ke,i as Ae,k as je,m as Me,n as Ne,p as Pe,q as Fe,r as Ie,t as Le,tt as Re,u as ze,v as Be,w as Ve,x as He,y as Ue,z as We}from"./mui-D5m7fDCh.js";import{D as Ge,E as Ke,S as K,a as qe,b as Je,c as Ye,h as Xe,i as Ze,n as Qe,o as $e,p as et,r as tt,s as nt,t as rt,w as q,x as it}from"./mui-Db5J-QUd.js";import{d as at,f as ot,n as st,o as ct,r as lt,s as ut,t as dt}from"./mui-59N0OVRa.js";import{a as ft,i as pt,o as mt,r as ht}from"./apps-G_Lm6m4F.js";var gt,_t,vt,yt,bt;function xt(){return(xt=t((()=>{z(),gt=e(n(),1),E(),_t=r(),vt=[`localeText`],yt=gt.createContext(null),bt=function(e){let{localeText:t}=e,n=L(e,vt),{adapter:r,localeText:i}=gt.useContext(yt)??{adapter:void 0,localeText:void 0},{children:a,dateAdapter:o,dateFormats:s,dateLibInstance:c,adapterLocale:l,localeText:u}=D({props:n,name:`MuiLocalizationProvider`}),d=gt.useMemo(()=>I({},u,i,t),[u,i,t]),f=gt.useMemo(()=>{if(!o)return r||null;let e=new o({locale:l,formats:s,instance:c});if(!e.isMUIAdapter)throw Error(B(143));return e},[o,l,s,c,r]),p=gt.useMemo(()=>f?{minDate:f.date(`1900-01-01T00:00:00.000`),maxDate:f.date(`2099-12-31T00:00:00.000`)}:null,[f]),m=gt.useMemo(()=>({adapter:f,defaultDates:p,localeText:d}),[p,f,d]);return(0,_t.jsx)(yt.Provider,{value:m,children:a})}})))()}function St(){throw Error(B(138))}function Ct(){throw Error(B(139))}var J,wt,Tt,Et,Dt,Ot,kt,At,jt;function Mt(){return(Mt=t((()=>{z(),J=e(R(),1),wt=e(oe(),1),Tt=e(re(),1),Et=e(ie(),1),Dt=e(se(),1),Ot=e(ae(),1),J.default.extend(Et.default),J.default.extend(wt.default),J.default.extend(Dt.default),J.default.extend(Ot.default),kt={YY:`year`,YYYY:{sectionType:`year`,contentType:`digit`,maxLength:4},M:{sectionType:`month`,contentType:`digit`,maxLength:2},MM:`month`,MMM:{sectionType:`month`,contentType:`letter`},MMMM:{sectionType:`month`,contentType:`letter`},D:{sectionType:`day`,contentType:`digit`,maxLength:2},DD:`day`,Do:{sectionType:`day`,contentType:`digit-with-letter`},d:{sectionType:`weekDay`,contentType:`digit`,maxLength:2},dd:{sectionType:`weekDay`,contentType:`letter`},ddd:{sectionType:`weekDay`,contentType:`letter`},dddd:{sectionType:`weekDay`,contentType:`letter`},A:`meridiem`,a:`meridiem`,H:{sectionType:`hours`,contentType:`digit`,maxLength:2},HH:`hours`,h:{sectionType:`hours`,contentType:`digit`,maxLength:2},hh:`hours`,m:{sectionType:`minutes`,contentType:`digit`,maxLength:2},mm:`minutes`,s:{sectionType:`seconds`,contentType:`digit`,maxLength:2},ss:`seconds`},At={year:`YYYY`,month:`MMMM`,monthShort:`MMM`,dayOfMonth:`D`,dayOfMonthFull:`Do`,weekday:`dddd`,weekdayShort:`dd`,hours24h:`HH`,hours12h:`hh`,meridiem:`A`,minutes:`mm`,seconds:`ss`,fullDate:`ll`,keyboardDate:`L`,shortDate:`MMM D`,normalDate:`D MMMM`,normalDateWithWeekday:`ddd, MMM D`,fullTime12h:`hh:mm A`,fullTime24h:`HH:mm`,keyboardDateTime12h:`L hh:mm A`,keyboardDateTime24h:`L HH:mm`},jt=class{isMUIAdapter=!0;isTimezoneCompatible=!0;lib=`dayjs`;escapedCharacters={start:`[`,end:`]`};formatTokenMap=kt;constructor({locale:e,formats:t}={}){this.locale=e,this.formats=I({},At,t),J.default.extend(Tt.default)}setLocaleToValue=e=>{let t=this.getCurrentLocaleCode();return t===e.locale()?e:e.locale(t)};hasUTCPlugin=()=>J.default.utc!==void 0;hasTimezonePlugin=()=>J.default.tz!==void 0;isSame=(e,t,n)=>{let r=this.setTimezone(t,this.getTimezone(e));return e.format(n)===r.format(n)};cleanTimezone=e=>{switch(e){case`default`:return;case`system`:return J.default.tz.guess();default:return e}};createSystemDate=e=>this.setLocaleToValue((0,J.default)(e));createUTCDate=e=>(this.hasUTCPlugin()||St(),this.setLocaleToValue(J.default.utc(e)));createTZDate=(e,t)=>{this.hasUTCPlugin()||St(),this.hasTimezonePlugin()||Ct();let n=e!==void 0&&!e.endsWith(`Z`);return this.setLocaleToValue((0,J.default)(e).tz(this.cleanTimezone(t),n))};getLocaleFormats=()=>{let e=J.default.Ls,t=e[this.locale||`en`];return t===void 0&&(t=e.en),t.formats};adjustOffset=e=>{if(!this.hasTimezonePlugin())return e;let t=this.getTimezone(e);if(t===`UTC`||t===`system`&&e.$offset===void 0)return e;if(t!==`system`&&e.isValid())return this.getWallTimeValue(this.getWallTime(e),t,e.utcOffset()).locale(e.locale());let n=e.tz(this.cleanTimezone(t),!0);return(n.$offset??0)!==(e.$offset??0)&&(e.$offset=n.$offset),e};getWallTime=e=>{let t=new Date(0);return t.setUTCFullYear(e.year(),e.month(),e.date()),t.setUTCHours(e.hour(),e.minute(),e.second(),e.millisecond()),t.getTime()};toTimezone=(e,t)=>{let n=(e%1e3+1e3)%1e3;return this.setTimezone((0,J.default)(e-n),t).add(n,`millisecond`)};getWallTimeValue=(e,t,n)=>{let r=n=>this.toTimezone(e-n*6e4,t);if(n!==void 0){let t=r(n);if(this.getWallTime(t)===e)return t}let i=r(this.toTimezone(e-864e5,t).utcOffset());if(this.getWallTime(i)===e)return i;let a=r(this.toTimezone(e+864e5,t).utcOffset());return this.getWallTime(a)===e?a:i};addTime=(e,t,n)=>{if(!this.hasTimezonePlugin())return this.adjustOffset(e.add(t,n));let r=(0,J.default)(e.valueOf()).add(t,n).valueOf();return this.toTimezone(r,this.getTimezone(e)).locale(e.locale())};isAffectedByLocalMeanTime=e=>{let t=e.$x?.$timezone;return this.hasUTCPlugin()&&this.hasTimezonePlugin()&&!!t};getDaysInMonthFromFields=e=>{let t=new Date(0);return t.setUTCFullYear(e.year(),e.month()+1,0),t.getUTCDate()};restoreDayOfMonth=(e,t)=>{if(!this.isAffectedByLocalMeanTime(e)||!e.isValid())return e;let n=Math.min(t.date(),this.getDaysInMonthFromFields(e));return e.date()===n?e:e.set(`date`,n)};date=(e,t=`default`)=>e===null?null:t===`UTC`?this.createUTCDate(e):t===`system`||t==="default"&&!this.hasTimezonePlugin()?this.createSystemDate(e):this.createTZDate(e,t);getInvalidDate=()=>(0,J.default)(new Date(`Invalid date`));getTimezone=e=>{if(this.hasTimezonePlugin()){let t=e.$x?.$timezone;if(t)return t}return this.hasUTCPlugin()&&e.isUTC()?`UTC`:`system`};setTimezone=(e,t)=>{if(this.getTimezone(e)===t)return e;if(t===`UTC`)return this.hasUTCPlugin()||St(),e.utc();if(t===`system`)return e.local();if(!this.hasTimezonePlugin()){if(t==="default")return e;Ct()}return this.setLocaleToValue(J.default.tz(e,this.cleanTimezone(t)))};toJsDate=e=>e.toDate();parse=(e,t)=>e===``?null:(0,J.default)(e,t,this.locale,!0);getCurrentLocaleCode=()=>this.locale||`en`;is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||``);expandFormat=e=>{let t=this.getLocaleFormats(),n=e=>e.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(e,t,n)=>t||n.slice(1));return e.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(e,r,i)=>{let a=i&&i.toUpperCase();return r||t[i]||n(t[a])})};isValid=e=>e!=null&&e.isValid();format=(e,t)=>this.formatByString(e,this.formats[t]);formatByString=(e,t)=>this.setLocaleToValue(e).format(t);formatNumber=e=>e;isEqual=(e,t)=>e===null&&t===null?!0:e===null||t===null?!1:e.toDate().getTime()===t.toDate().getTime();isSameYear=(e,t)=>this.isSame(e,t,`YYYY`);isSameMonth=(e,t)=>this.isSame(e,t,`YYYY-MM`);isSameDay=(e,t)=>this.isSame(e,t,`YYYY-MM-DD`);isSameHour=(e,t)=>e.isSame(t,`hour`);isAfter=(e,t)=>e>t;isAfterYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()>t.utc():e.isAfter(t,`year`);isAfterDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()>t.utc():e.isAfter(t,`day`);isBefore=(e,t)=>e<t;isBeforeYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()<t.utc():e.isBefore(t,`year`);isBeforeDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()<t.utc():e.isBefore(t,`day`);isWithinRange=(e,[t,n])=>e>=t&&e<=n;startOfYear=e=>this.adjustOffset(e.startOf(`year`));startOfMonth=e=>this.adjustOffset(e.startOf(`month`));startOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).startOf(`week`));startOfDay=e=>{let t=this.getTimezone(e);if(t===`UTC`||!this.hasTimezonePlugin()||!e.isValid())return this.adjustOffset(e.startOf(`day`));if(t===`system`)return(0,J.default)(e.valueOf()).startOf(`day`).locale(e.locale());let n=new Date(this.getWallTime(e));return n.setUTCHours(0,0,0,0),this.getWallTimeValue(n.getTime(),t).locale(e.locale())};endOfYear=e=>this.adjustOffset(e.endOf(`year`));endOfMonth=e=>this.adjustOffset(e.endOf(`month`));endOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).endOf(`week`));endOfDay=e=>this.adjustOffset(e.endOf(`day`));addYears=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.add(t,`year`),e));addMonths=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.add(t,`month`),e));addWeeks=(e,t)=>this.adjustOffset(e.add(t,`week`));addDays=(e,t)=>this.adjustOffset(e.add(t,`day`));addHours=(e,t)=>this.addTime(e,t,`hour`);addMinutes=(e,t)=>this.addTime(e,t,`minute`);addSeconds=(e,t)=>this.addTime(e,t,`second`);getYear=e=>e.year();getMonth=e=>e.month();getDate=e=>e.date();getHours=e=>e.hour();getMinutes=e=>e.minute();getSeconds=e=>e.second();getMilliseconds=e=>e.millisecond();setYear=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.set(`year`,t),e));setMonth=(e,t)=>this.adjustOffset(this.restoreDayOfMonth(e.set(`month`,t),e));setDate=(e,t)=>this.adjustOffset(e.set(`date`,t));setHours=(e,t)=>this.adjustOffset(e.set(`hour`,t));setMinutes=(e,t)=>this.adjustOffset(e.set(`minute`,t));setSeconds=(e,t)=>this.adjustOffset(e.set(`second`,t));setMilliseconds=(e,t)=>this.adjustOffset(e.set(`millisecond`,t));getDaysInMonth=e=>this.isAffectedByLocalMeanTime(e)?this.getDaysInMonthFromFields(e):e.daysInMonth();getWeekArray=e=>{let t=this.startOfWeek(this.startOfMonth(e)),n=this.endOfWeek(this.endOfMonth(e)),r=0,i=t,a=[];for(;i<n;){let e=Math.floor(r/7);a[e]=a[e]||[],a[e].push(i),i=this.addDays(i,1),r+=1}return a};getWeekNumber=e=>e.week();getDayOfWeek(e){return e.day()+1}getYearRange=([e,t])=>{let n=this.startOfYear(e),r=this.endOfYear(t),i=[],a=n;for(;this.isBefore(a,r);)i.push(a),a=this.addYears(a,1);return i}}})))()}function Nt(e){return y(`MuiDatePickerToolbar`,e)}function Pt(){return(Pt=t((()=>{v(),S(),C(`MuiDatePickerToolbar`,[`root`,`title`])})))()}var Ft,It,Lt,Rt,zt,Bt,Vt;function Ht(){return(Ht=t((()=>{Ft=e(n(),1),i(),P(),M(),E(),Fe(),K(),Ke(),Je(),Pt(),W(),pe(),It=r(),Lt=[`toolbarFormat`,`toolbarPlaceholder`,`className`,`classes`],Rt=e=>T({root:[`root`],title:[`title`]},Nt,e),zt=k(me,{name:`MuiDatePickerToolbar`,slot:`Root`})({}),Bt=k(F,{name:`MuiDatePickerToolbar`,slot:`Title`})({variants:[{props:{pickerOrientation:`landscape`},style:{margin:`auto 16px auto auto`}}]}),Vt=Ft.forwardRef(function(e,t){let n=D({props:e,name:`MuiDatePickerToolbar`}),{toolbarFormat:r,toolbarPlaceholder:i=`––`,className:o,classes:s}=n,c=L(n,Lt),l=q(),{value:u,views:d,orientation:f}=Ge(),p=it(),m=Ce(),h=Rt(s),g=Ft.useMemo(()=>{if(!l.isValid(u))return i;let e=U(l,{format:r,views:d},!0);return l.formatByString(u,e)},[u,r,i,l,d]);return(0,It.jsx)(zt,I({ref:t,toolbarTitle:p.datePickerToolbarTitle,className:a(h.root,o)},c,{children:(0,It.jsx)(Bt,{variant:`h4`,align:f===`landscape`?`left`:`center`,ownerState:m,className:h.title,children:g})}))})})))()}function Ut(e,t){let n=D({props:e,name:t}),r=st(n),i=Wt.useMemo(()=>n.localeText?.toolbarTitle==null?n.localeText:I({},n.localeText,{datePickerToolbarTitle:n.localeText.toolbarTitle}),[n.localeText]);return I({},n,r,{localeText:i},De({views:n.views,openTo:n.openTo,defaultViews:[`year`,`day`],defaultOpenTo:`day`}),{slots:I({toolbar:Vt},n.slots)})}var Wt;function Gt(){return(Gt=t((()=>{Wt=e(n(),1),E(),Re(),Ht(),dt()})))()}var Kt;function qt(){return(qt=t((()=>{Be(),dt(),Kt=e=>{let t=lt();return Ue({manager:t,props:e})}})))()}var Jt,Yt,Xt,Zt;function Qt(){return(Qt=t((()=>{Jt=e(n(),1),E(),qt(),Me(),Xe(),Yt=r(),Xt=[`slots`,`slotProps`],Zt=Jt.forwardRef(function(e,t){let n=D({props:e,name:`MuiDateField`}),{slots:r,slotProps:i}=n,a=L(n,Xt),o=ke({slotProps:i,ref:t,externalForwardedProps:a}),s=Kt(o);return(0,Yt.jsx)(Pe,{slots:r,slotProps:i,inputRef:a.inputRef,children:(0,Yt.jsx)(Oe,{fieldResponse:s,defaultOpenPickerIcon:et})})})})))()}var $t,en;function tn(){return(tn=t((()=>{$t=e(n(),1),ct(),K(),en=({shouldDisableDate:e,shouldDisableMonth:t,shouldDisableYear:n,minDate:r,maxDate:i,disableFuture:a,disablePast:o,timezone:s})=>{let c=q();return $t.useCallback(l=>ut({adapter:c,value:l,timezone:s,props:{shouldDisableDate:e,shouldDisableMonth:t,shouldDisableYear:n,minDate:r,maxDate:i,disableFuture:a,disablePast:o}})!==null,[c,e,t,n,r,i,a,o,s])}})))()}var nn,rn,an;function on(){return(on=t((()=>{nn=e(n(),1),w(),tn(),_e(),he(),W(),K(),rn=(e,t)=>(n,r)=>{switch(r.type){case`setVisibleDate`:return I({},n,{slideDirection:r.direction,currentMonth:r.month,isMonthSwitchingAnimating:!t.isSameMonth(r.month,n.currentMonth)&&!e&&!r.skipAnimation,focusedDay:r.focusedDay});case`changeMonthTimezone`:{let e=r.newTimezone;if(t.getTimezone(n.currentMonth)===e)return n;let i=t.setTimezone(n.currentMonth,e);return t.getMonth(i)!==t.getMonth(n.currentMonth)&&(i=t.setMonth(i,t.getMonth(n.currentMonth))),I({},n,{currentMonth:i})}case`finishMonthSwitchingAnimation`:return I({},n,{isMonthSwitchingAnimating:!1});default:throw Error(`missing support`)}},an=e=>{let{value:t,referenceDate:n,disableFuture:r,disablePast:i,maxDate:a,minDate:o,onMonthChange:s,onYearChange:c,reduceAnimations:l,shouldDisableDate:u,timezone:d,getCurrentMonthFromVisibleDate:f}=e,p=q(),m=nn.useRef(rn(!!l,p)).current,h=nn.useMemo(()=>de.getInitialReferenceValue({value:t,adapter:p,timezone:d,props:e,referenceDate:n,granularity:fe.day}),[n,d]),[g,_]=nn.useReducer(m,{isMonthSwitchingAnimating:!1,focusedDay:h,currentMonth:p.setDate(h,1),slideDirection:`left`}),v=nn.useRef(g.focusedDay),y=en({shouldDisableDate:u,minDate:o,maxDate:a,disableFuture:r,disablePast:i,timezone:d});return nn.useEffect(()=>{_({type:`changeMonthTimezone`,newTimezone:p.getTimezone(h)})},[h,p]),{referenceDate:h,calendarState:g,setVisibleDate:x(({target:e,reason:t})=>{if(t===`cell-interaction`&&v.current!=null&&p.isSameDay(e,v.current))return;let n=t===`cell-interaction`,l,u;if(t===`cell-interaction`)l=f(e,g.currentMonth),u=e;else if(l=p.isSameMonth(e,g.currentMonth)?g.currentMonth:p.startOfMonth(e),u=e,y(u)){let t=p.startOfMonth(e),n=p.endOfMonth(e);u=We({adapter:p,date:u,minDate:p.isBefore(o,t)?t:o,maxDate:p.isAfter(a,n)?n:a,disablePast:i,disableFuture:r,isDateDisabled:y,timezone:d})}let m=!p.isSameMonth(g.currentMonth,l),h=!p.isSameYear(g.currentMonth,l);m&&s?.(l),h&&c?.(p.startOfYear(l)),v.current=g.focusedDay!=null&&u!=null&&p.isSameDay(u,g.focusedDay)?g.focusedDay:u,_({type:`setVisibleDate`,month:l,direction:p.isAfterDay(l,g.currentMonth)?`left`:`right`,focusedDay:v.current,skipAnimation:n})}),isDateDisabled:y,onMonthSwitchingAnimationEnd:nn.useCallback(()=>{_({type:`finishMonthSwitchingAnimation`})},[])}}})))()}var sn;function cn(){return(cn=t((()=>{v(),S(),sn=e=>y(`MuiPickersFadeTransitionGroup`,e),C(`MuiPickersFadeTransitionGroup`,[`root`])})))()}function ln(e){let t=D({props:e,name:`MuiPickersFadeTransitionGroup`}),{className:n,reduceAnimations:r,transKey:i,classes:o}=t,{children:s}=t,c=L(t,dn),l=fn(o),u=O();return r?s:(0,un.jsx)(pn,{className:a(l.root,n),ownerState:c,children:(0,un.jsx)(N,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,exit:!1,timeout:{appear:u.transitions.duration.enteringScreen,enter:u.transitions.duration.enteringScreen},children:s},i)})}var un,dn,fn,pn;function mn(){return(mn=t((()=>{n(),i(),pt(),ne(),M(),A(),E(),cn(),un=r(),dn=[`children`],fn=e=>T({root:[`root`]},sn,e),pn=k(ht,{name:`MuiPickersFadeTransitionGroup`,slot:`Root`})({display:`block`,position:`relative`})})))()}var hn,Y;function gn(){return(gn=t((()=>{v(),S(),hn=e=>y(`MuiPickersSlideTransition`,e),Y=C(`MuiPickersSlideTransition`,[`root`,`slideEnter-left`,`slideEnter-right`,`slideEnterActive`,`slideExit`,`slideExitActiveLeft-left`,`slideExitActiveLeft-right`])})))()}function _n(e){let t=D({props:e,name:`MuiPickersSlideTransition`}),{children:n,className:r,reduceAnimations:i,slideDirection:o,transKey:s,classes:c}=t,l=L(t,bn),{ownerState:u}=we(),d=I({},u,{slideDirection:o}),f=xn(c,d),p=O();if(i)return(0,yn.jsx)(`div`,{role:`none`,className:a(f.root,r),children:n});let m={exit:f.exit,enterActive:f.enterActive,enter:f.enter,exitActive:f.exitActive};return(0,yn.jsx)(Cn,{className:a(f.root,r),childFactory:e=>vn.cloneElement(e,{classNames:m}),role:`none`,ownerState:d,children:(0,yn.jsx)(ft,I({mountOnEnter:!0,unmountOnExit:!0,timeout:p.transitions.duration.complex,classNames:m},l,{children:n}),s)})}var vn,yn,bn,xn,Sn,Cn;function wn(){return(wn=t((()=>{vn=e(n(),1),i(),M(),A(),E(),mt(),pt(),gn(),Se(),yn=r(),bn=[`children`,`className`,`reduceAnimations`,`slideDirection`,`transKey`,`classes`],xn=(e,t)=>{let{slideDirection:n}=t,r={root:[`root`],exit:[`slideExit`],enterActive:[`slideEnterActive`],enter:[`slideEnter-${n}`],exitActive:[`slideExitActiveLeft-${n}`]};return T(r,hn,e)},Sn=[`slideEnter-left`,`slideEnter-right`,`slideEnterActive`,`slideExit`,`slideExitActiveLeft-left`,`slideExitActiveLeft-right`],Cn=k(ht,{name:`MuiPickersSlideTransition`,slot:`Root`,overridesResolver:(e,t)=>Sn.reduce((e,n)=>(e.push({[`.${Y[n]}`]:t[n]}),e),[t.root])})(({theme:e})=>{let t=e.transitions.create(`transform`,{duration:e.transitions.duration.complex,easing:`cubic-bezier(0.35, 0.8, 0.4, 1)`});return{display:`block`,position:`relative`,overflowX:`hidden`,"& > *":{position:`absolute`,top:0,right:0,left:0},[`& .${Y[`slideEnter-left`]}`]:{willChange:`transform`,transform:`translate(100%)`,zIndex:1},[`& .${Y[`slideEnter-right`]}`]:{willChange:`transform`,transform:`translate(-100%)`,zIndex:1},[`& .${Y.slideEnterActive}`]:{transform:`translate(0%)`,transition:t},[`& .${Y.slideExit}`]:{transform:`translate(0%)`},[`& .${Y[`slideExitActiveLeft-left`]}`]:{willChange:`transform`,transform:`translate(-100%)`,transition:t,zIndex:0},[`& .${Y[`slideExitActiveLeft-right`]}`]:{willChange:`transform`,transform:`translate(100%)`,transition:t,zIndex:0}}})})))()}var Tn;function En(){return(En=t((()=>{v(),S(),Tn=e=>y(`MuiDayCalendar`,e),C(`MuiDayCalendar`,[`root`,`header`,`weekDayLabel`,`loadingContainer`,`slideTransition`,`monthContainer`,`weekContainer`,`weekNumberLabel`,`weekNumber`])})))()}function Dn(e){let{parentProps:t,day:n,focusedDay:r,selectedDays:i,isDateDisabled:a,currentMonthNumber:o,isViewFocused:s}=e,c=L(e,kn),{currentMonth:l,disabled:u,disableHighlightToday:d,isMonthSwitchingAnimating:f,showDaysOutsideCurrentMonth:m,slots:h,slotProps:g,timezone:_}=t,v=q(),y=ge(_),b=r!=null&&v.isSameDay(n,r),x=s&&b,S=i.some(e=>v.isSameDay(e,n)),C=v.isSameDay(n,y),w=X.useMemo(()=>u||a(n),[u,a,n]),T=X.useMemo(()=>v.getMonth(n)!==o,[v,n,o]),ee=Ee({day:n,selected:S,disabled:w,today:C,outsideCurrentMonth:T,disableHighlightToday:d,showDaysOutsideCurrentMonth:m}),E=h?.day??nt,D=p({elementType:E,externalSlotProps:g?.day,additionalProps:I({disableHighlightToday:d,showDaysOutsideCurrentMonth:m,role:`gridcell`,isAnimating:f,"data-timestamp":v.toJsDate(n).valueOf()},c),ownerState:I({},ee,{day:n,isDayDisabled:w,isDaySelected:S})}),O=L(D,An),te=X.useMemo(()=>{let e=v.startOfMonth(l);return m?v.isSameDay(n,v.startOfWeek(e)):v.isSameDay(n,e)},[l,n,m,v]),k=X.useMemo(()=>{let e=v.endOfMonth(l);return m?v.isSameDay(n,v.endOfWeek(e)):v.isSameDay(n,e)},[l,n,m,v]);return(0,Z.jsx)(E,I({},O,{day:n,disabled:w,autoFocus:!T&&x,today:C,outsideCurrentMonth:T,isFirstVisibleCell:te,isLastVisibleCell:k,selected:S,tabIndex:b?0:-1,"aria-selected":S,"aria-current":C?`date`:void 0}))}function On(e){let t=D({props:e,name:`MuiDayCalendar`}),n=q(),{onFocusedDayChange:r,className:i,classes:s,currentMonth:c,selectedDays:l,focusedDay:u,loading:d,onSelectedDaysChange:f,onMonthSwitchingAnimationEnd:p,readOnly:m,reduceAnimations:h,renderLoading:g=()=>(0,Z.jsx)(`span`,{children:`…`}),slideDirection:_,TransitionProps:v,disablePast:y,disableFuture:b,minDate:S,maxDate:C,shouldDisableDate:w,shouldDisableMonth:T,shouldDisableYear:ee,dayOfWeekFormatter:E=e=>n.format(e,`weekdayShort`).charAt(0).toUpperCase(),hasFocus:O,onFocusedViewChange:te,gridLabelId:k,displayWeekNumber:A,fixedWeekNumber:j,timezone:M}=t,ne=ge(M),N=jn(s),P=o(),F=+!!A,L=en({shouldDisableDate:w,shouldDisableMonth:T,shouldDisableYear:ee,minDate:S,maxDate:C,disablePast:y,disableFuture:b,timezone:M}),R=it(),z=x(e=>{m||f(e)}),B=e=>{L(e)||(r(e),te?.(!0))},re=x((e,t)=>{switch(e.key){case`ArrowUp`:B(n.addDays(t,-7)),e.preventDefault();break;case`ArrowDown`:B(n.addDays(t,7)),e.preventDefault();break;case`ArrowLeft`:{let r=n.addDays(t,P?1:-1),i=n.addMonths(t,P?1:-1),a=We({adapter:n,date:r,minDate:P?r:n.startOfMonth(i),maxDate:P?n.endOfMonth(i):r,isDateDisabled:L,timezone:M});B(a||r),e.preventDefault();break}case`ArrowRight`:{let r=n.addDays(t,P?-1:1),i=n.addMonths(t,P?-1:1),a=We({adapter:n,date:r,minDate:P?n.startOfMonth(i):r,maxDate:P?r:n.endOfMonth(i),isDateDisabled:L,timezone:M});B(a||r),e.preventDefault();break}case`Home`:B(n.startOfWeek(t)),e.preventDefault();break;case`End`:B(n.endOfWeek(t)),e.preventDefault();break;case`PageUp`:B(n.addMonths(t,1)),e.preventDefault();break;case`PageDown`:B(n.addMonths(t,-1)),e.preventDefault();break;case`Enter`:case` `:z(t),e.preventDefault()}}),ie=x((e,t)=>B(t)),ae=x((e,t)=>{u!=null&&n.isSameDay(u,t)&&te?.(!1)}),oe=n.getMonth(c),se=n.getYear(c),ce=X.useMemo(()=>l.filter(e=>!!e).map(e=>n.startOfDay(e)),[n,l]),le=`${se}-${oe}`,ue=X.useMemo(()=>X.createRef(),[le]),V=X.useMemo(()=>{let e=n.getWeekArray(c),t=n.addMonths(c,1);for(;j&&e.length<j;){let r=n.getWeekArray(t),i=n.isSameDay(e[e.length-1][0],r[0][0]);r.slice(+!!i).forEach(t=>{e.length<j&&e.push(t)}),t=n.addMonths(t,1)}return e},[c,j,n]);return(0,Z.jsxs)(Nn,{role:`grid`,"aria-labelledby":k,"aria-colcount":F+7,"aria-rowcount":V.length+1,className:N.root,children:[(0,Z.jsxs)(Pn,{role:`row`,"aria-rowindex":1,className:N.header,children:[A&&(0,Z.jsx)(In,{variant:`caption`,role:`columnheader`,"aria-colindex":1,"aria-label":R.calendarWeekNumberHeaderLabel,className:N.weekNumberLabel,children:R.calendarWeekNumberHeaderText}),be(n,ne).map((e,t)=>(0,Z.jsx)(Fn,{variant:`caption`,role:`columnheader`,"aria-colindex":F+t+1,"aria-label":n.format(e,`weekday`),className:N.weekDayLabel,children:E(e)},t.toString()))]}),d?(0,Z.jsx)(Rn,{className:N.loadingContainer,children:g()}):(0,Z.jsx)(zn,I({transKey:le,onExited:p,reduceAnimations:h,slideDirection:_,className:a(i,N.slideTransition)},v,{nodeRef:ue,children:(0,Z.jsx)(Bn,{ref:ue,role:`rowgroup`,className:N.monthContainer,children:V.map((e,r)=>(0,Z.jsxs)(Vn,{role:`row`,className:N.weekContainer,"aria-rowindex":r+2,children:[A&&(0,Z.jsx)(Ln,{className:N.weekNumber,role:`rowheader`,"aria-colindex":1,"aria-label":R.calendarWeekNumberAriaLabelText(n.getWeekNumber(e[0])),children:R.calendarWeekNumberText(n.getWeekNumber(e[0]))}),e.map((e,n)=>(0,Z.jsx)(Dn,{parentProps:t,day:e,selectedDays:ce,isViewFocused:O,focusedDay:u,onKeyDown:re,onFocus:ie,onBlur:ae,onDaySelect:z,isDateDisabled:L,currentMonthNumber:oe,"aria-colindex":F+n+1},e.toString()))]},`week-${e[0]}`))})}))]})}var X,Z,kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn;function Hn(){return(Hn=t((()=>{X=e(n(),1),w(),P(),_(),ee(),M(),E(),i(),Ye(),K(),Je(),ce(),wn(),tn(),W(),En(),ze(),Z=r(),kn=[`parentProps`,`day`,`focusedDay`,`selectedDays`,`isDateDisabled`,`currentMonthNumber`,`isViewFocused`],An=[`ownerState`],jn=e=>T({root:[`root`],header:[`header`],weekDayLabel:[`weekDayLabel`],loadingContainer:[`loadingContainer`],slideTransition:[`slideTransition`],monthContainer:[`monthContainer`],weekContainer:[`weekContainer`],weekNumberLabel:[`weekNumberLabel`],weekNumber:[`weekNumber`]},Tn,e),Mn=240,Nn=k(`div`,{name:`MuiDayCalendar`,slot:`Root`})({}),Pn=k(`div`,{name:`MuiDayCalendar`,slot:`Header`})({display:`flex`,justifyContent:`center`,alignItems:`center`}),Fn=k(F,{name:`MuiDayCalendar`,slot:`WeekDayLabel`})(({theme:e})=>({width:36,height:40,margin:`0 2px`,textAlign:`center`,display:`flex`,justifyContent:`center`,alignItems:`center`,color:(e.vars||e).palette.text.secondary})),In=k(F,{name:`MuiDayCalendar`,slot:`WeekNumberLabel`})(({theme:e})=>({width:36,height:40,margin:`0 2px`,textAlign:`center`,display:`flex`,justifyContent:`center`,alignItems:`center`,color:(e.vars||e).palette.text.disabled})),Ln=k(F,{name:`MuiDayCalendar`,slot:`WeekNumber`})(({theme:e})=>I({},e.typography.caption,{width:36,height:36,padding:0,margin:`0 2px`,color:(e.vars||e).palette.text.disabled,fontSize:`0.75rem`,alignItems:`center`,justifyContent:`center`,display:`inline-flex`})),Rn=k(`div`,{name:`MuiDayCalendar`,slot:`LoadingContainer`})({display:`flex`,justifyContent:`center`,alignItems:`center`,minHeight:Mn}),zn=k(_n,{name:`MuiDayCalendar`,slot:`SlideTransition`})({minHeight:Mn}),Bn=k(`div`,{name:`MuiDayCalendar`,slot:`MonthContainer`})({overflow:`hidden`}),Vn=k(`div`,{name:`MuiDayCalendar`,slot:`WeekContainer`})({margin:`2px 0`,display:`flex`,justifyContent:`center`})})))()}function Un(e){return y(`MuiMonthCalendar`,e)}var Wn;function Gn(){return(Gn=t((()=>{v(),S(),Wn=C(`MuiMonthCalendar`,[`root`,`button`,`disabled`,`selected`])})))()}var Kn,qn,Jn,Yn,Xn,Zn;function Qn(){return(Qn=t((()=>{Kn=e(n(),1),M(),_(),b(),Se(),Gn(),qn=r(),Jn=[`autoFocus`,`classes`,`disabled`,`selected`,`value`,`onClick`,`onKeyDown`,`onFocus`,`onBlur`,`slots`,`slotProps`],Yn=(e,t)=>{let n={button:[`button`,t.isMonthDisabled&&`disabled`,t.isMonthSelected&&`selected`]};return T(n,Un,e)},Xn=k(`button`,{name:`MuiMonthCalendar`,slot:`Button`,overridesResolver:(e,t)=>[t.button,{[`&.${Wn.disabled}`]:t.disabled},{[`&.${Wn.selected}`]:t.selected}]})(({theme:e})=>I({color:`unset`,backgroundColor:`transparent`,border:0,outline:0},e.typography.subtitle1,{height:36,width:72,borderRadius:18,cursor:`pointer`,"&:focus":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)},"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)},"&:disabled":{cursor:`auto`,pointerEvents:`none`},[`&.${Wn.disabled}`]:{color:(e.vars||e).palette.text.secondary},[`&.${Wn.selected}`]:{color:(e.vars||e).palette.primary.contrastText,backgroundColor:(e.vars||e).palette.primary.main,"&:focus, &:hover":{backgroundColor:(e.vars||e).palette.primary.dark}}})),Zn=Kn.memo(function(e){let{autoFocus:t,classes:n,disabled:r,selected:i,value:a,onClick:o,onKeyDown:s,onFocus:c,onBlur:l,slots:u,slotProps:d}=e,f=L(e,Jn),h=Kn.useRef(null),{ownerState:g}=we(),_=I({},g,{isMonthDisabled:r,isMonthSelected:i}),v=Yn(n,_);m(()=>{t&&h.current?.focus()},[t]);let y=u?.monthButton??Xn,b=p({elementType:y,externalSlotProps:d?.monthButton,externalForwardedProps:f,additionalProps:{disabled:r,ref:h,type:`button`,role:`radio`,"aria-checked":i,onClick:e=>o(e,a),onKeyDown:e=>s(e,a),onFocus:e=>c(e,a),onBlur:e=>l(e,a)},ownerState:_,className:v.button});return(0,qn.jsx)(y,I({},b))})})))()}function $n(e,t){let n=D({props:e,name:t}),r=st(n);return I({},n,r,{monthsPerRow:n.monthsPerRow??3})}var Q,er,tr,nr,rr,ir,ar;function or(){return(or=t((()=>{Q=e(n(),1),i(),ee(),h(),M(),E(),l(),w(),Qn(),ce(),Gn(),W(),_e(),he(),G(),Se(),dt(),K(),er=r(),tr=[`autoFocus`,`className`,`currentMonth`,`classes`,`value`,`defaultValue`,`referenceDate`,`disabled`,`disableFuture`,`disablePast`,`maxDate`,`minDate`,`onChange`,`shouldDisableMonth`,`readOnly`,`disableHighlightToday`,`onMonthFocus`,`hasFocus`,`onFocusedViewChange`,`monthsPerRow`,`timezone`,`gridLabelId`,`slots`,`slotProps`],nr=e=>T({root:[`root`]},Un,e),rr=(e,t,n,r,i)=>!!(e===t&&r&&i.isSameYear(n,r)),ir=k(`div`,{name:`MuiMonthCalendar`,slot:`Root`,shouldForwardProp:e=>g(e)&&e!==`monthsPerRow`})({display:`flex`,flexWrap:`wrap`,justifyContent:`space-evenly`,rowGap:16,padding:`8px 0`,width:320,boxSizing:`border-box`,variants:[{props:{monthsPerRow:3},style:{columnGap:24}},{props:{monthsPerRow:4},style:{columnGap:0}}]}),ar=Q.forwardRef(function(e,t){let n=$n(e,`MuiMonthCalendar`),{autoFocus:r,className:i,currentMonth:s,classes:c,value:l,defaultValue:u,referenceDate:d,disabled:p,disableFuture:m,disablePast:h,maxDate:g,minDate:_,onChange:v,shouldDisableMonth:y,readOnly:b,onMonthFocus:S,hasFocus:C,onFocusedViewChange:w,monthsPerRow:T,timezone:ee,gridLabelId:E,slots:D,slotProps:O}=n,te=L(n,tr),{value:k,handleValueChange:A,timezone:j}=ue({name:`MonthCalendar`,timezone:ee,value:l,defaultValue:u,referenceDate:d,onChange:v,valueManager:de}),M=ge(j),ne=o(),N=q(),{ownerState:P}=we(),F=Q.useMemo(()=>de.getInitialReferenceValue({value:k,adapter:N,props:n,timezone:j,referenceDate:d,granularity:fe.month}),[]),R=nr(c),z=Q.useMemo(()=>N.getMonth(M),[N,M]),B=Q.useMemo(()=>k==null?null:N.getMonth(k),[k,N]),[re,ie]=Q.useState(()=>B||N.getMonth(F)),[ae,oe]=f({name:`MonthCalendar`,state:`hasFocus`,controlled:C,default:r??!1}),se=x(e=>{oe(e),w&&w(e)}),ce=Q.useCallback(e=>{let t=N.startOfMonth(h&&N.isAfter(M,_)?M:_),n=N.startOfMonth(m&&N.isBefore(M,g)?M:g),r=N.startOfMonth(e);return N.isBefore(r,t)||N.isAfter(r,n)?!0:y?y(r):!1},[m,h,g,_,M,y,N]),V=x((e,t)=>{if(b)return;let n=(k&&s&&!N.isSameYear(k,s)?N.setYear(k,N.getYear(s)):k)??s??F,r=N.setMonth(n,t);A(r)}),H=x(e=>{ce(N.setMonth(k??s??F,e))||(ie(e),se(!0),S&&S(e))});Q.useEffect(()=>{ie(e=>B!==null&&e!==B?B:e)},[B]);let U=x((e,t)=>{switch(e.key){case`ArrowUp`:H((12+t-T)%12),e.preventDefault();break;case`ArrowDown`:H((12+t+T)%12),e.preventDefault();break;case`ArrowLeft`:H((12+t+(ne?1:-1))%12),e.preventDefault();break;case`ArrowRight`:H((12+t+(ne?-1:1))%12),e.preventDefault();break;case`Enter`:case` `:V(e,t),e.preventDefault()}}),W=x((e,t)=>{H(t)}),pe=x((e,t)=>{re===t&&se(!1)});return(0,er.jsx)(ir,I({ref:t,className:a(R.root,i),ownerState:P,role:`radiogroup`,"aria-labelledby":E,monthsPerRow:T},te,{children:le(N,s??k??F).map(e=>{let t=N.getMonth(e),n=N.format(e,`monthShort`),r=N.format(e,`month`),i=rr(t,B,e,k,N),a=p||ce(e);return(0,er.jsx)(Zn,{selected:i,value:t,onClick:V,onKeyDown:U,autoFocus:ae&&t===re,disabled:a,tabIndex:t===re&&!a?0:-1,onFocus:W,onBlur:pe,"aria-current":rr(t,z,e,M,N)?`date`:void 0,"aria-label":r,slots:D,slotProps:O,classes:c,children:n},n)})}))})})))()}var sr,cr;function lr(){return(lr=t((()=>{v(),S(),sr=e=>y(`MuiDateCalendar`,e),cr=C(`MuiDateCalendar`,[`root`,`viewTransitionContainer`])})))()}function ur(e,t){let n=D({props:e,name:t}),r=V(n.reduceAnimations),i=st(n);return I({},n,i,{loading:n.loading??!1,openTo:n.openTo??`day`,views:n.views??[`year`,`day`],reduceAnimations:r,renderLoading:n.renderLoading??(()=>(0,$.jsx)(`span`,{children:`…`}))})}var dr,$,fr,pr,mr,hr,gr;function _r(){return(_r=t((()=>{dr=e(n(),1),i(),_(),M(),E(),c(),w(),on(),mn(),Hn(),or(),$e(),Ve(),Ze(),W(),Ae(),H(),lr(),G(),_e(),Se(),dt(),K(),$=r(),fr=`autoFocus.onViewChange.value.defaultValue.referenceDate.disableFuture.disablePast.onChange.onYearChange.onMonthChange.reduceAnimations.shouldDisableDate.shouldDisableMonth.shouldDisableYear.view.views.openTo.className.classes.disabled.readOnly.minDate.maxDate.disableHighlightToday.focusedView.onFocusedViewChange.showDaysOutsideCurrentMonth.fixedWeekNumber.dayOfWeekFormatter.slots.slotProps.loading.renderLoading.displayWeekNumber.yearsOrder.yearsPerRow.monthsPerRow.timezone`.split(`.`),pr=e=>T({root:[`root`],viewTransitionContainer:[`viewTransitionContainer`]},sr,e),mr=k(Ie,{name:`MuiDateCalendar`,slot:`Root`})({display:`flex`,flexDirection:`column`,height:336}),hr=k(ln,{name:`MuiDateCalendar`,slot:`ViewTransitionContainer`})({}),gr=dr.forwardRef(function(e,t){let n=q(),{ownerState:r}=we(),i=d(),o=ur(e,`MuiDateCalendar`),{autoFocus:s,onViewChange:c,value:l,defaultValue:u,referenceDate:f,disableFuture:m,disablePast:h,onChange:g,onYearChange:_,onMonthChange:v,reduceAnimations:y,shouldDisableDate:b,shouldDisableMonth:S,shouldDisableYear:C,view:w,views:T,openTo:ee,className:E,classes:D,disabled:O,readOnly:te,minDate:k,maxDate:A,disableHighlightToday:j,focusedView:M,onFocusedViewChange:ne,showDaysOutsideCurrentMonth:N,fixedWeekNumber:P,dayOfWeekFormatter:F,slots:R,slotProps:z,loading:B,renderLoading:re,displayWeekNumber:ie,yearsOrder:ae,yearsPerRow:oe,monthsPerRow:se,timezone:ce}=o,le=L(o,fr),{value:V,handleValueChange:H,timezone:U}=ue({name:`DateCalendar`,timezone:ce,value:l,defaultValue:u,referenceDate:f,onChange:g,valueManager:de}),{view:W,setView:fe,focusedView:pe,setFocusedView:me,goToNextView:he,setValueAndGoToNextView:ge}=ye({view:w,views:T,openTo:ee,onChange:H,onViewChange:c,autoFocus:s,focusedView:M,onFocusedViewChange:ne}),{referenceDate:_e,calendarState:ve,setVisibleDate:G,isDateDisabled:be,onMonthSwitchingAnimationEnd:Se}=an({value:V,referenceDate:f,reduceAnimations:y,onMonthChange:v,onYearChange:_,minDate:k,maxDate:A,shouldDisableDate:b,disablePast:h,disableFuture:m,timezone:U,getCurrentMonthFromVisibleDate:(e,t)=>n.isSameMonth(e,t)?t:n.startOfMonth(e)}),Ce=O&&V||k,Te=O&&V||A,Ee=`${i}-grid-label`,De=pe!==null,Oe=R?.calendarHeader??tt,ke=p({elementType:Oe,externalSlotProps:z?.calendarHeader,additionalProps:{views:T,view:W,currentMonth:ve.currentMonth,onViewChange:fe,onMonthChange:e=>G({target:e,reason:`header-navigation`}),minDate:Ce,maxDate:Te,disabled:O,disablePast:h,disableFuture:m,reduceAnimations:y,timezone:U,labelId:Ee},ownerState:r}),Ae=x(e=>{let t=n.startOfMonth(e),r=n.endOfMonth(e),i=be(e)?We({adapter:n,date:e,minDate:n.isBefore(k,t)?t:k,maxDate:n.isAfter(A,r)?r:A,disablePast:h,disableFuture:m,isDateDisabled:be,timezone:U}):e;i?(ge(i,`finish`),G({target:i,reason:`cell-interaction`})):(he(),G({target:t,reason:`cell-interaction`}))}),je=x(e=>{let t=n.startOfYear(e),r=n.endOfYear(e),i=be(e)?We({adapter:n,date:e,minDate:n.isBefore(k,t)?t:k,maxDate:n.isAfter(A,r)?r:A,disablePast:h,disableFuture:m,isDateDisabled:be,timezone:U}):e;i?(ge(i,`finish`),G({target:i,reason:`cell-interaction`})):(he(),G({target:t,reason:`cell-interaction`}))}),Me=x(e=>H(e&&xe(n,e,V??_e),`finish`,W));dr.useEffect(()=>{n.isValid(V)&&G({target:V,reason:`controlled-value-change`})},[V]);let Ne=pr(D),Pe={disablePast:h,disableFuture:m,maxDate:A,minDate:k},Fe={disableHighlightToday:j,readOnly:te,disabled:O,timezone:U,gridLabelId:Ee,slots:R,slotProps:z},Ie=dr.useRef(W);dr.useEffect(()=>{Ie.current!==W&&(pe===Ie.current&&me(W,!0),Ie.current=W)},[pe,me,W]);let Le=dr.useMemo(()=>[V],[V]);return(0,$.jsxs)(mr,I({ref:t,className:a(Ne.root,E),ownerState:r},le,{children:[(0,$.jsx)(Oe,I({},ke,{slots:R,slotProps:z})),(0,$.jsx)(hr,{reduceAnimations:y,className:Ne.viewTransitionContainer,transKey:W,ownerState:r,children:(0,$.jsxs)(`div`,{children:[W===`year`&&(0,$.jsx)(qe,I({},Pe,Fe,{value:V,onChange:je,shouldDisableYear:C,hasFocus:De,onFocusedViewChange:e=>me(`year`,e),yearsOrder:ae,yearsPerRow:oe,referenceDate:_e})),W===`month`&&(0,$.jsx)(ar,I({},Pe,Fe,{currentMonth:ve.currentMonth,hasFocus:De,className:E,value:V,onChange:Ae,shouldDisableMonth:S,onFocusedViewChange:e=>me(`month`,e),monthsPerRow:se,referenceDate:_e})),W===`day`&&(0,$.jsx)(On,I({},ve,Pe,Fe,{onMonthSwitchingAnimationEnd:Se,hasFocus:De,onFocusedDayChange:e=>G({target:e,reason:`cell-interaction`}),reduceAnimations:y,selectedDays:Le,onSelectedDaysChange:Me,shouldDisableDate:b,shouldDisableMonth:S,shouldDisableYear:C,onFocusedViewChange:e=>me(`day`,e),showDaysOutsideCurrentMonth:N,fixedWeekNumber:P,dayOfWeekFormatter:F,displayWeekNumber:ie,loading:B,renderLoading:re}))]})})]}))})})))()}var vr,yr;function br(){return(br=t((()=>{vr=e(n(),1),s(),Gt(),K(),ot(),Te(),Qt(),rt(),W(),dt(),yr=vr.forwardRef(function(e,t){let n=q(),r=lt(),i=Ut(e,`MuiDesktopDatePicker`),a=I({day:Qe,month:Qe,year:Qe},i.viewRenderers),o=I({},i,{closeOnSelect:i.closeOnSelect??!0,viewRenderers:a,format:U(n,i,!1),yearsPerRow:i.yearsPerRow??4,slots:I({field:Zt},i.slots),slotProps:I({},i.slotProps,{field:e=>I({},u(i.slotProps?.field,e),at(i)),toolbar:I({hidden:!0},i.slotProps?.toolbar)})}),{renderPicker:s}=He({ref:t,props:o,manager:r,steps:null});return s()})})))()}var xr,Sr;function Cr(){return(Cr=t((()=>{xr=e(n(),1),s(),Le(),Gt(),K(),ot(),Qt(),rt(),W(),dt(),Sr=xr.forwardRef(function(e,t){let n=q(),r=lt(),i=Ut(e,`MuiMobileDatePicker`),a=I({day:Qe,month:Qe,year:Qe},i.viewRenderers),o=I({},i,{viewRenderers:a,format:U(n,i,!1),slots:I({field:Zt},i.slots),slotProps:I({},i.slotProps,{field:e=>I({},u(i.slotProps?.field,e),at(i)),toolbar:I({hidden:!1},i.slotProps?.toolbar)})}),{renderPicker:s}=Ne({ref:t,props:o,manager:r,steps:null});return s()})})))()}var wr,Tr,Er,Dr;function Or(){return(Or=t((()=>{wr=e(n(),1),te(),E(),br(),Cr(),je(),Tr=r(),Er=[`desktopModeMediaQuery`],Dr=wr.forwardRef(function(e,t){let n=D({props:e,name:`MuiDatePicker`}),{desktopModeMediaQuery:r=ve}=n,i=L(n,Er);return j(r,{defaultMatches:!0})?(0,Tr.jsx)(yr,I({ref:t},i)):(0,Tr.jsx)(Sr,I({ref:t},i))})})))()}export{cr as a,mn as c,bt as d,yt as f,_r as i,jt as l,Or as n,lr as o,xt as p,gr as r,ln as s,Dr as t,Mt as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{P as r,U as i,c as a,h as o,l as s,y as c,z as l}from"./client-DFnuv2z3.js";import{a as u,o as d}from"./mui-agG5dued.js";import{Vt as f,Yt as p}from"./mui-BTN91yBK.js";import{_n as m,gn as h}from"./mui-CdB_p2lt.js";import{C as g,D as _,F as v,H as y,I as b,M as x,O as S,Q as C,V as w,X as T,Y as E,Z as D,_t as O,at as k,c as A,ct as ee,d as te,f as ne,g as re,gt as ie,h as ae,ht as oe,i as j,j as M,lt as N,m as se,ot as P,p as ce,r as F,s as le,st as ue,ut as I,vt as de,w as fe}from"./mui-BXSXx9c9.js";import{A as L,B as pe,C as R,D as me,F as z,I as he,O as ge,a as B,b as _e,d as ve,f as ye,k as V,o as be,w as xe,y as Se,z as H}from"./mui-Cd711nOk.js";import{B as Ce,D as we,E as Te,G as U,K as Ee,O as De,T as Oe,U as ke,W as Ae,it as je,l as W,rt as Me,u as Ne,z as Pe}from"./mui-AnEgAVjz.js";import{C as Fe,_ as G,v as Ie,w as Le}from"./mui-BwsIrivo.js";import{n as Re,r as ze}from"./alert-uBG6r9NW.js";import{n as Be,r as Ve}from"./snackbar-DSPmjMyi.js";import{c as He,n as K,s as Ue}from"./access-48hkC2-P.js";import{n as We,r as Ge,t as Ke}from"./use-polled-resource-B22hhr5L.js";import{n as qe,t as Je}from"./realtime.store-CBDO4Abj.js";import{A as Ye,E as Xe,G as Ze,L as Qe,M as $e,g as et,m as tt,p as nt,s as rt,z as it}from"./icons-OboZgWSt.js";import{n as at,t as ot}from"./operation-status-Bm1x1wTz.js";import{n as st,t as ct}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as lt,t as ut}from"./skeleton-BmWDJWF9.js";import{n as dt,t as ft}from"./empty-content-7jOFhG4C.js";import{r as pt,t as mt}from"./daemon-memory-BiEtr9jr.js";import{r as ht,t as gt}from"./log-location-DuBjh6HQ.js";import{p as _t,u as vt}from"./release-bits-B2a_wbft.js";import{a as yt,c as bt,i as xt,o as St,r as Ct,s as wt,t as Tt}from"./sync-reading-CN0jPKAg.js";function Et(e){let t=e.relay;if(!e.reachable||!t)return{state:`unknown`,label:`unavailable`,detail:e.error??`No relay measurement was returned; check node connectivity and access.`};if(t.state===`not-applicable`)return{state:`neutral`,label:`not applicable`,detail:`Worker logs and metrics use the durable replication outbox. Delivery evidence is reported under Replication.`};let n=t.stats;if(!n||typeof n.started!=`boolean`||!n.destination)return{state:`unknown`,label:`unavailable`,detail:`The node did not report relay lifecycle and destination; update its backend.`};let r=n.buffer.totalDropped>0||!!n.lastError;return{state:n.started&&(n.destination===`aggregator`||n.destination===`transport`&&n.transportConnected)&&!r?`healthy`:`degraded`,label:n.started?n.destination===`aggregator`?`local database`:n.destination===`transport`?n.transportConnected?`transport up`:`transport down`:`no destination`:`stopped`,detail:`${n.buffer.size} buffered · ${n.totalSent} sent · ${n.totalFailed} failed${n.lastError?` · ${n.lastError}`:``}`,dropped:n.buffer.totalDropped}}function Dt({receipt:e}){let t=e.targets.filter(e=>e.state===`succeeded`||e.state===`current`).length,n=e.state===`planning`,r=n?e.targets.filter(e=>e.state!==`pending`).length:t;return(0,J.jsxs)(G,{spacing:1.25,sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(D,{size:`small`,color:At[e.state],label:e.state}),(0,J.jsxs)(H,{variant:`body2`,"aria-live":`polite`,children:[r,`/`,e.targets.length,` `,n?`nodes checked`:`on target`]}),(0,J.jsxs)(H,{variant:`caption`,color:`text.secondary`,children:[`Updated `,_t(e.updatedAt)]})]}),(0,J.jsxs)(H,{variant:`caption`,color:`text.secondary`,component:`div`,children:[`Commit `,(0,J.jsx)(`code`,{children:e.commit}),(0,J.jsx)(`br`,{}),`Plan `,(0,J.jsx)(`code`,{children:e.id})]}),(n||e.state===`running`)&&(0,J.jsx)(Oe,{"aria-label":n?`Node preflight checks completed`:`Nodes confirmed on the target build`,variant:`determinate`,value:r/Math.max(1,e.targets.length)*100}),e.reason&&(0,J.jsx)(k,{severity:e.state===`failed`?`error`:`warning`,children:e.reason}),e.state===`uncertain`&&(0,J.jsx)(H,{variant:`body2`,children:`Reconciliation reads the recorded node outcome without replaying activation. Inspect its owner and rollback target before planning another update.`}),(0,J.jsx)(G,{component:`ol`,spacing:1,sx:{m:0,pl:0,listStyle:`none`},children:e.targets.map((e,t)=>(0,J.jsxs)(w,{component:`li`,sx:{minWidth:0,borderTop:1,borderColor:`divider`,pt:1},children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,J.jsxs)(H,{variant:`body2`,sx:{fontWeight:600},children:[t+1,`. `,e.name]}),(0,J.jsx)(D,{size:`small`,variant:`outlined`,color:At[e.state],label:e.state})]}),e.reason&&(0,J.jsx)(H,{variant:`body2`,children:e.reason}),(0,J.jsxs)(w,{component:`details`,open:[`blocked`,`failed`,`rolled-back`,`uncertain`].includes(e.state),sx:{typography:`caption`,color:`text.secondary`,"& summary":{cursor:`pointer`}},children:[(0,J.jsx)(`summary`,{children:`Owner and rollback details`}),`Node `,(0,J.jsx)(`code`,{children:e.nodeId}),` · Owner `,(0,J.jsx)(`code`,{children:e.ownerId??`unconfirmed`}),e.ownerPid!==null&&(0,J.jsxs)(J.Fragment,{children:[` · PID `,e.ownerPid]}),(0,J.jsx)(`br`,{}),`Rollback target `,(0,J.jsx)(`code`,{children:e.previous??`unconfirmed`}),(0,J.jsx)(`br`,{}),`Candidate `,(0,J.jsx)(`code`,{children:e.candidate??`unconfirmed`})]})]},e.nodeId))})]})}function Ot({nodes:e,close:t,review:n}){let[r,i]=(0,q.useState)(``),[o,s]=(0,q.useState)([]),[l,u]=(0,q.useState)(!1),[d,f]=(0,q.useState)(!1),{can:p}=He(),m=p(`OmnitronDaemon.status`),h=p(`OmnitronNodes.listKernelBuilds`),_=We(()=>c.listKernelBuilds(),{enabled:h,paused:!0,intervalMs:3e4,resourceKey:String(h)}),y=(0,q.useMemo)(()=>{let e=new Map;for(let t of h?_.data??[]:[]){let n=e.get(t.commit)??[];n.push(`${t.platform}/${t.arch} · Node ${t.nodeVersion}`),e.set(t.commit,n)}return e},[h,_.data]),b=We(async()=>{let{build:e}=await a.status();return e?.dirty===!1&&/^[a-f0-9]{40}$/.test(e.commit)?e.commit:null},{enabled:m,paused:!0,intervalMs:3e4,resourceKey:String(m)}),[x,S]=(0,q.useState)(!1),[C,T]=(0,q.useState)(null),D=(0,q.useRef)(!1),O=(0,q.useRef)(null);(0,q.useEffect)(()=>(D.current=!0,()=>{D.current=!1}),[]);let A=r.trim().toLowerCase(),ee=/^[a-f0-9]{40}$/.test(A)&&(d||o.length>0),ne=async()=>{if(ee&&!x){S(!0),T(null);try{let e={commit:A,...o.length?{nodeIds:o.map(e=>e.id)}:{},...l&&{stage:!0}},t=JSON.stringify(e);O.current&&O.current.inputs===t||(O.current={inputs:t,id:crypto.randomUUID()});let r=await c.planKernelRollout({...e,requestId:O.current.id});if(r.id!==O.current.id)throw Error(`Controller returned a different request ID.`);D.current&&n(r.id)}catch(e){T(e instanceof Error?e.message:String(e))}finally{S(!1)}}};return(0,J.jsxs)(ae,{open:!0,fullWidth:!0,maxWidth:`sm`,onClose:()=>{x||t()},"aria-labelledby":`kernel-plan-title`,children:[(0,J.jsx)(le,{id:`kernel-plan-title`,children:`Plan backend update`}),(0,J.jsxs)(w,{component:`form`,onSubmit:e=>{e.preventDefault(),ne()},children:[(0,J.jsx)(te,{children:(0,J.jsxs)(G,{spacing:2,children:[(0,J.jsx)(E,{freeSolo:!0,disabled:x,options:[...y.keys()],loading:h&&_.loading,inputValue:r,onInputChange:(e,t)=>i(t),renderOption:({key:e,...t},n)=>(0,J.jsx)(w,{component:`li`,...t,children:(0,J.jsxs)(w,{sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,J.jsx)(`code`,{children:n}),(0,J.jsx)(H,{component:`div`,variant:`caption`,children:y.get(n)?.join(`, `)})]})},e),renderInput:e=>(0,J.jsx)(B,{...e,label:`Target commit`,autoFocus:!0,required:!0,fullWidth:!0,helperText:_.error?`Catalog unavailable. Enter the commit manually. ${_.error}`:`Choose a catalog build or enter the full 40-character Git commit.`})}),m&&b.data&&(0,J.jsxs)(v,{size:`small`,sx:{alignSelf:`flex-start`},disabled:x,onClick:()=>i(b.data),children:[`Use controller commit `,b.data.slice(0,12)]}),(0,J.jsx)(E,{multiple:!0,disabled:x||d,options:e.filter(e=>!e.isLocal),value:o,getOptionLabel:e=>e.name+` · `+e.host,getOptionKey:e=>e.id,isOptionEqualToValue:(e,t)=>e.id===t.id,onChange:(e,t)=>s(t),renderInput:e=>(0,J.jsx)(B,{...e,label:`Target nodes`,helperText:`Select nodes in update order, or explicitly choose all registered remote nodes.`})}),(0,J.jsx)(ke,{control:(0,J.jsx)(g,{checked:d,disabled:x,onChange:e=>{f(e.target.checked),e.target.checked&&s([])}}),label:`All registered remote nodes`}),(0,J.jsx)(ke,{control:(0,J.jsx)(g,{checked:l,disabled:x,onChange:e=>u(e.target.checked)}),label:`Stage from controller catalog`}),l&&(0,J.jsx)(H,{variant:`caption`,color:`text.secondary`,children:`Preparation transfers missing runtimes from the controller and installs them for native checks. Applying the reviewed plan activates them.`}),C&&(0,J.jsx)(k,{severity:`warning`,action:O.current&&(0,J.jsx)(v,{size:`small`,color:`inherit`,onClick:()=>n(O.current.id),children:`Check last request`}),children:C})]})}),(0,J.jsxs)(ce,{children:[(0,J.jsx)(v,{onClick:t,disabled:x,children:`Cancel`}),(0,J.jsx)(v,{type:`submit`,variant:`contained`,loading:x,disabled:!ee,children:`Prepare plan`})]})]})]})}function kt({nodes:e,canPlan:t,canApply:n,canReconcile:r}){let[a,o]=i(),s=a.get(`rollout`),[l,u]=(0,q.useState)(!1),[d,f]=(0,q.useState)(!1),[p,m]=(0,q.useState)(null),[h,g]=(0,q.useState)(null),[y,b]=(0,q.useReducer)(e=>e+1,0),[x,S]=(0,q.useState)(!1),{data:C,error:T,loading:E}=We(async()=>{let e=await c.getKernelRollout(s?{id:s}:{});if(s&&e&&e.id!==s)throw Error(`Controller returned another rollout receipt.`);return e},{intervalMs:x?3e3:2e4,resourceKey:JSON.stringify([s,y])}),D=h?.id===s&&([`succeeded`,`failed`,`blocked`].includes(h.state)||!C||C.id===h.id&&C.state===`planned`&&h.state===`running`)?h:C;(0,q.useEffect)(()=>{S(D?.state===`running`||D?.state===`planning`)},[D?.state]);let O=e=>{m(null),g(null),o(t=>{let n=new URLSearchParams(t);return e?n.set(`rollout`,e):n.delete(`rollout`),n})},A=async e=>{if(!(d||T||!D||D.id!==s)&&!(e===`apply`?!n||D.state!==`planned`:!r||D.state!==`uncertain`)){f(!0),m(null);try{let t=e===`apply`?await c.startKernelRollout({id:D.id}):await c.reconcileKernelRollout({id:D.id});if(t.id!==D.id)throw Error(`Controller returned another rollout receipt.`);g(t)}catch(e){m(`Request was not confirmed. Check the controller receipt. `+(e instanceof Error?e.message:String(e)))}finally{f(!1),b()}}};return(0,J.jsxs)(M,{variant:`outlined`,component:`section`,"aria-label":`Managed backend updates`,sx:{minWidth:0},children:[(0,J.jsx)(_,{children:(0,J.jsxs)(G,{spacing:1.5,children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(H,{variant:`subtitle2`,sx:{flex:`1 1 auto`},children:`Managed backend updates`}),s&&(0,J.jsx)(v,{size:`small`,disabled:d,onClick:()=>O(null),children:`Latest rollout`}),t&&(0,J.jsx)(v,{size:`small`,variant:`outlined`,disabled:d||D?.state===`running`||D?.state===`planning`,onClick:()=>u(!0),children:`Plan update…`})]}),E&&(0,J.jsx)(Oe,{"aria-label":`Reading rollout receipt`}),T&&(0,J.jsxs)(k,{severity:`warning`,action:(0,J.jsx)(v,{color:`inherit`,size:`small`,onClick:b,children:`Retry`}),children:[`Could not read the rollout receipt. `,T]}),p&&(0,J.jsx)(k,{severity:`warning`,children:p}),D?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Dt,{receipt:D}),n&&D.state===`planned`&&(0,J.jsx)(w,{children:D.id===s?(0,J.jsx)(v,{color:`primary`,variant:`contained`,loading:d,disabled:!!T||E,onClick:()=>void A(`apply`),children:`Apply reviewed plan`}):(0,J.jsx)(v,{variant:`outlined`,disabled:!!T,onClick:()=>O(D.id),children:`Review plan`})}),r&&D.state===`uncertain`&&(0,J.jsx)(w,{children:D.id===s?(0,J.jsx)(v,{variant:`outlined`,loading:d,disabled:!!T||E,onClick:()=>void A(`reconcile`),children:`Reconcile node status`}):(0,J.jsx)(v,{variant:`outlined`,disabled:!!T,onClick:()=>O(D.id),children:`Inspect uncertain rollout`})})]}):!E&&!T&&(0,J.jsx)(H,{variant:`body2`,color:`text.secondary`,children:s?`The controller has no receipt for this rollout.`:`No managed backend update has been planned.`})]})}),t&&l&&(0,J.jsx)(Ot,{nodes:e,close:()=>u(!1),review:e=>{O(e),u(!1),b()}})]})}var q,J,At;function jt(){return(jt=e((()=>{q=t(),l(),P(),T(),y(),b(),x(),S(),fe(),C(),re(),se(),ne(),A(),Ae(),Te(),Ie(),be(),pe(),Ke(),o(),Ue(),vt(),J=n(),At={pending:`default`,planning:`info`,planned:`default`,ready:`info`,running:`info`,succeeded:`success`,current:`success`,blocked:`warning`,uncertain:`warning`,failed:`error`,"rolled-back":`warning`}})))()}function Mt(e){return s.invoke(`daemon`,`OmnitronNodes`,`planUpgrade`,[{...e,build:!0}],{timeout:18e4})}function Nt(e){return e!==`done`&&e!==`failed`&&e!==`refused`}function Pt({nodes:e}){let{can:t,snapshot:n}=He(),[r,i]=(0,Y.useState)(!1),a=t(`OmnitronNodes.planKernelRollout`),o=t(`OmnitronNodes.startKernelRollout`),s=t(`OmnitronNodes.reconcileKernelRollout`);return(0,X.jsxs)(G,{spacing:1,children:[t(`OmnitronNodes.getKernelRollout`)&&(0,X.jsx)(kt,{nodes:e,canPlan:a,canApply:o,canReconcile:s},JSON.stringify([n?.userId,a,o,s])),t(`OmnitronNodes.getUpgradeProgress`)&&(0,X.jsxs)(w,{component:`details`,onToggle:e=>i(e.currentTarget.open),children:[(0,X.jsx)(H,{component:`summary`,variant:`caption`,color:`text.secondary`,sx:{cursor:`pointer`,py:1},children:`Advanced · workspace source bundle upgrades`}),r&&(0,X.jsx)(Ft,{nodes:e},n?.userId)]})]})}function Ft({nodes:e}){let{can:t}=He(),n=t(`OmnitronNodes.planUpgrade`)&&t(`OmnitronNodes.upgradeNodes`),[r,i]=(0,Y.useState)(!1),[a,o]=(0,Y.useState)(null),[s,l]=(0,Y.useState)(!1),{data:u,refresh:d,error:f,loading:p}=We(async()=>{let e=await c.getUpgradeProgress();return l(e.some(e=>Nt(e.phase))),e},{intervalMs:s?3e3:2e4}),m=u??[],h=m.filter(e=>Nt(e.phase)),g=(0,Y.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]),y=(0,Y.useCallback)(async e=>{try{let t=await c.cancelUpgrade({nodeId:e});o(t.stopped?null:t.because),await d()}catch(e){o(e.message)}},[d]);return(0,X.jsxs)(M,{variant:`outlined`,children:[(0,X.jsxs)(_,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,flexWrap:`wrap`,mb:h.length>0||m.length>0?1.5:0},children:[(0,X.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Workspace source bundle upgrade`}),h.length>0&&(0,X.jsx)(D,{size:`small`,color:`info`,label:`${h.length} of ${m.length} in flight`,sx:{height:20,fontSize:11}}),(0,X.jsx)(w,{sx:{flex:1}}),n&&(0,X.jsx)(v,{size:`small`,variant:`contained`,startIcon:(0,X.jsx)(tt,{}),onClick:()=>i(!0),children:`Upgrade nodes…`})]}),a&&(0,X.jsx)(k,{severity:`warning`,variant:`outlined`,sx:{mb:1.5},onClose:()=>o(null),children:a}),p&&(0,X.jsx)(Oe,{"aria-label":`Reading source bundle upgrade progress`}),f&&(0,X.jsxs)(k,{severity:`warning`,children:[`Could not refresh source bundle upgrades. `,f]}),m.length===0&&!p&&!f?(0,X.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`No upgrade has been run from this master since it started.`}):(0,X.jsx)(G,{spacing:1,children:m.map(e=>{let t=g.get(e.nodeId);return(0,X.jsxs)(w,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,X.jsx)(H,{variant:`body2`,sx:{fontWeight:600,minWidth:140},children:t?.name??e.nodeId}),(0,X.jsx)(D,{size:`small`,color:Lt[e.phase],label:e.phase,sx:{height:20,fontSize:11}}),e.phase===`queued`&&e.position!=null&&(0,X.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[`#`,e.position,` in the queue`]}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:e.message}),e.version&&(0,X.jsx)(H,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:e.version}),(0,X.jsx)(w,{sx:{flex:1}}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`},children:_t(e.at)}),Nt(e.phase)&&(0,X.jsx)(K,{permission:`OmnitronNodes.cancelUpgrade`,children:(0,X.jsx)(z,{title:e.phase===`queued`?`Drop this node from the queue`:`A node already installing is not interrupted — the daemon will say so`,arrow:!0,children:(0,X.jsx)(`span`,{children:(0,X.jsx)(v,{size:`small`,color:`warning`,startIcon:(0,X.jsx)(it,{}),onClick:()=>void y(e.nodeId),children:`Cancel`})})})})]}),Nt(e.phase)&&e.phase!==`queued`&&(0,X.jsx)(Oe,{variant:`determinate`,value:e.percent,sx:{mt:.5,height:4,borderRadius:2}})]},e.nodeId)})})]}),n&&(0,X.jsx)(It,{open:r,onClose:()=>i(!1),nodes:e,onStarted:()=>{l(!0),d()}})]})}function It({open:e,onClose:t,nodes:n,onStarted:r}){let[i,a]=(0,Y.useState)(new Set),[o,s]=(0,Y.useState)(null),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(!1),[p,m]=(0,Y.useState)(1),[h,_]=(0,Y.useState)(null),[y,b]=(0,Y.useState)(null),x=(0,Y.useMemo)(()=>n.filter(e=>!e.isLocal),[n]),S=(0,Y.useMemo)(()=>new Map(n.map(e=>[e.id,e])),[n]),C=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),s(null),n}),T=i.size>0&&i.size===x.length,E=(0,Y.useCallback)(async e=>{u(!0),_(null);let t=i.size>0?{nodeIds:[...i]}:{};try{s(e?await Mt(t):await c.planUpgrade(t))}catch(e){_(e.message),s(null)}finally{u(!1)}},[i]),O=o?.rows.filter(e=>e.action===`upgrade`)??[];return(0,X.jsxs)(ae,{open:e,onClose:d?void 0:t,maxWidth:`md`,fullWidth:!0,children:[(0,X.jsx)(le,{children:`Upgrade nodes`}),(0,X.jsx)(te,{children:(0,X.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,X.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`The master builds one bundle and installs it on each node in turn. The rollout runs in the daemon — closing this window does not stop it.`}),(0,X.jsxs)(w,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:.5},children:[(0,X.jsx)(g,{size:`small`,checked:T,indeterminate:i.size>0&&!T,onChange:()=>{s(null),a(T?new Set:new Set(x.map(e=>e.id)))}}),(0,X.jsx)(H,{variant:`body2`,children:i.size===0?`every node`:`${i.size} of ${x.length} selected`})]}),(0,X.jsx)(w,{sx:{maxHeight:220,overflowY:`auto`},children:(0,X.jsx)(V,{size:`small`,children:(0,X.jsx)(me,{children:x.map(e=>(0,X.jsxs)(ve,{hover:!0,onClick:()=>C(e.id),sx:{cursor:`pointer`},children:[(0,X.jsx)(R,{padding:`checkbox`,children:(0,X.jsx)(g,{size:`small`,checked:i.has(e.id)})}),(0,X.jsx)(R,{sx:{fontWeight:600},children:e.name}),(0,X.jsxs)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:[e.host,`:`,e.sshPort]}),(0,X.jsx)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:e.status?.omnitronVersion??`—`}),(0,X.jsx)(R,{children:(0,X.jsx)(D,{size:`small`,label:e.status?.pingReachable?`reachable`:`not reachable`,color:e.status?.pingReachable?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:10}})})]},e.id))})})})]}),(0,X.jsxs)(G,{direction:`row`,spacing:1.5,sx:{alignItems:`center`},children:[(0,X.jsx)(v,{size:`small`,variant:`outlined`,onClick:()=>void E(!1),disabled:l||d,children:l?`Planning…`:`Plan`}),(0,X.jsx)(z,{title:`Builds the bundle so each node can be compared to it. It runs on the master's own thread and stops it answering anything else for a minute or two.`,arrow:!0,children:(0,X.jsx)(`span`,{children:(0,X.jsx)(v,{size:`small`,onClick:()=>void E(!0),disabled:l||d,children:`Compare versions`})})}),l&&(0,X.jsx)(ue,{size:16}),(0,X.jsx)(B,{select:!0,label:`At once`,size:`small`,value:p,onChange:e=>m(Number(e.target.value)),sx:{width:120},disabled:d,children:[1,2,3,4,6,8].map(e=>(0,X.jsx)(W,{value:e,children:e},e))}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:l?`The master is building the bundle so the plan can name a target version — up to a few minutes.`:`An upgrade restarts the node's daemon, so one at a time is the safe default.`})]}),o&&(0,X.jsxs)(w,{children:[o.refusal&&(0,X.jsx)(k,{severity:`error`,sx:{mb:1},children:(0,X.jsx)(H,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:o.refusal})}),o.compared?(0,X.jsxs)(H,{variant:`body2`,sx:{mb:1},children:[`Target `,(0,X.jsx)(`strong`,{style:{fontFamily:`monospace`},children:o.targetVersion}),` —`,` `,O.length,` would be upgraded, `,o.rows.filter(e=>e.action===`skip`).length,` already there,`,` `,o.rows.filter(e=>e.action===`refuse`).length,` refused.`]}):(0,X.jsxs)(w,{sx:{mb:1},children:[(0,X.jsxs)(H,{variant:`body2`,children:[O.length,` would be attempted, `,o.rows.filter(e=>e.action===`refuse`).length,` refused —`,` `,(0,X.jsx)(`strong`,{children:`nothing was compared`}),`.`]}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:`No bundle has been built, so no row can say «already on the target version». Twelve rows reading «upgrade» here mean twelve nodes that would be touched, not twelve that are out of date.`})]}),(0,X.jsxs)(V,{size:`small`,children:[(0,X.jsx)(Se,{children:(0,X.jsxs)(ve,{children:[(0,X.jsx)(R,{children:`Node`}),(0,X.jsx)(R,{children:o.compared?`Now → target`:`Now`}),(0,X.jsx)(R,{children:`Action`}),(0,X.jsx)(R,{children:`Why`})]})}),(0,X.jsx)(me,{children:o.rows.map(e=>(0,X.jsxs)(ve,{children:[(0,X.jsxs)(R,{children:[(0,X.jsx)(H,{variant:`body2`,sx:{fontWeight:600},children:e.label}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.host??`no address`})]}),(0,X.jsxs)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:[e.currentVersion??`—`,o.compared&&e.targetVersion&&e.targetVersion!==e.currentVersion&&(0,X.jsxs)(H,{component:`span`,variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:[` → `,e.targetVersion]})]}),(0,X.jsx)(R,{children:(0,X.jsx)(D,{size:`small`,label:e.action,color:e.action===`upgrade`?`info`:e.action===`skip`?`success`:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})}),(0,X.jsx)(R,{children:(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:e.because})})]},e.nodeId))})]})]}),y&&(0,X.jsxs)(w,{children:[(0,X.jsx)(F,{sx:{mb:1.5}}),(0,X.jsxs)(k,{severity:y.refused.length>0?`warning`:`success`,children:[`Queued `,y.accepted.length,` node`,y.accepted.length===1?``:`s`,y.refused.length>0?`; ${y.refused.length} not taken`:``,`.`]}),y.refused.map(e=>(0,X.jsxs)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.secondary`},children:[(0,X.jsx)(`strong`,{children:S.get(e.nodeId)?.name??e.nodeId}),` — `,e.because]},e.nodeId))]}),h&&(0,X.jsxs)(k,{severity:`error`,children:[(0,X.jsx)(H,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:h}),/^(HTTP 50\d|Request timeout)/.test(h)&&(0,X.jsxs)(H,{variant:`caption`,sx:{display:`block`,mt:.5},children:[`The plan builds the bundle first — that is how it can say «already on the target version» instead of listing every node as an upgrade — and the request outlived the gateway's 120-second deadline. The master is still building; the CLI (`,(0,X.jsx)(`code`,{children:`omnitron fleet upgrade --dry-run`}),`) has no such deadline.`]})]})]})}),(0,X.jsxs)(ce,{children:[(0,X.jsx)(v,{onClick:t,size:`small`,disabled:d,children:y?`Close`:`Cancel`}),(0,X.jsx)(v,{variant:`contained`,size:`small`,startIcon:d?(0,X.jsx)(ue,{size:14,color:`inherit`}):(0,X.jsx)(tt,{}),disabled:d||!o||O.length===0||!!o.refusal||y!==null,onClick:async()=>{f(!0),_(null);try{let e=await c.upgradeNodes({nodeIds:O.map(e=>e.nodeId),concurrency:p});b(e),r()}catch(e){_(e.message)}finally{f(!1)}},children:d?`Queueing…`:`Start rollout (${O.length})`})]})]})}var Y,X,Lt;function Rt(){return(Rt=e((()=>{Ue(),jt(),Y=t(),P(),y(),b(),x(),S(),fe(),C(),ee(),re(),se(),ne(),A(),j(),Te(),Ne(),Ie(),L(),ge(),xe(),_e(),ye(),be(),he(),pe(),Ze(),Ke(),o(),vt(),X=n(),Lt={queued:`default`,building:`info`,transferring:`info`,activating:`warning`,done:`success`,failed:`error`,refused:`error`}})))()}function zt(e){if(!e||typeof e!=`object`)return!1;let t=e;return!!(t.event&&typeof t.event.id==`string`&&typeof t.event.title==`string`&&Array.isArray(t.event.evidence)&&t.event.evidence.every(e=>typeof e==`string`)&&(t.event.remedy===void 0||typeof t.event.remedy==`string`)&&typeof t.occurrences==`number`)}function Bt({active:e,nodeName:t}){let n=Array.isArray(e)?e.filter(zt).slice(0,100):[];return n.length?(0,Z.jsxs)(O,{disableGutters:!0,elevation:0,sx:{minWidth:0,mt:1,"&:before":{display:`none`}},children:[(0,Z.jsx)(N,{"aria-label":`Runtime diagnostic evidence`,children:(0,Z.jsxs)(H,{variant:`body2`,children:[`Evidence and recovery · `,n.length]})}),(0,Z.jsx)(oe,{children:(0,Z.jsxs)(G,{spacing:2,sx:{minWidth:0,overflowWrap:`anywhere`},children:[n.map(({event:e,occurrences:t})=>(0,Z.jsxs)(G,{spacing:.5,children:[(0,Z.jsx)(H,{variant:`body2`,sx:{fontWeight:600},children:e.title}),(0,Z.jsxs)(H,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:[e.id,` · `,t,` occurrence(s)`]}),e.evidence.map((e,t)=>(0,Z.jsx)(H,{variant:`body2`,children:e},t)),e.remedy&&(0,Z.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:e.remedy})]},e.id)),(0,Z.jsx)(v,{component:r,to:ht(`omnitron`,t),size:`small`,sx:{alignSelf:`flex-start`},children:`Open daemon logs`})]})})]}):null}var Z;function Vt(){return(Vt=e((()=>{l(),de(),I(),ie(),b(),Ie(),pe(),gt(),Z=n()})))()}function Ht(e){if(e.omnitronConnected===!0)return`running`;let t=e.omnitronError??``;return t.startsWith(`omnitron: command not found`)?`not-installed`:e.sshConnected===!1?`unreachable`:e.omnitronConnected===!1&&t===`omnitron status reported no running daemon`?`not-running`:`unread`}function Ut(){return(Ut=e((()=>{})))()}function Wt(e,t){return e==null?t?`failed`:`unmeasured`:e?`ok`:`failed`}function Gt(e){let t=Ht({sshConnected:e.sshConnected??null,omnitronConnected:e.omnitronConnected??null,omnitronError:e.omnitronError??null});switch(t){case`running`:return`ok`;case`not-running`:case`not-installed`:return`failed`;case`unreachable`:return`unmeasured`;case`unread`:return e.omnitronConnected==null&&!e.omnitronError?`unmeasured`:`unknown`;default:return t}}function Kt(e){return e.pingError??e.sshError??e.omnitronError??null}function qt(e){return e.participant===`controller`||!e.participant&&(`leaderId`in e||typeof e.state==`string`)}function Jt(e){let t=e.cluster;if(!e.reachable||!t)return e.error||`Cluster participation unavailable`;if(t.participant===`standalone`)return`Standalone`;if(t.participant!==`worker`&&!qt(t))return`Cluster participation unreported`;let n=[t.participant===`worker`?`Worker`:`Controller`];return typeof t.clusterId==`string`&&n.push(t.clusterId),typeof t.state==`string`&&n.push(t.state),(typeof t.term==`string`||typeof t.term==`number`)&&n.push(`epoch ${t.term}`),t.fencedOperations?.length&&n.push(t.fencedOperations.join(`, `)),n.join(` · `)}function Yt(e){return e.flatMap(e=>{let t=e.cluster;return!e.reachable||!t||t.coordination!==`postgres-lease`||![`unavailable`,`expired`,`stopped`].includes(String(t.authority))?[]:[{nodeId:e.nodeId,reason:typeof t.reason==`string`&&t.reason?t.reason:`Cluster authority is ${String(t.authority)}`}]})}function Xt(e){let t=new Map;for(let n of e){if(!n.reachable||!n.cluster||!qt(n.cluster))continue;let e=typeof n.cluster.clusterId==`string`?n.cluster.clusterId:`legacy`;t.set(e,[...t.get(e)??[],n])}for(let[e,n]of t){let t=Zt(n,e);if(t.kind!==`none`)return t}return{kind:`none`}}function Zt(e,t){if(e.length<2)return{kind:`none`};let n=new Map,r=new Set;for(let t of e){let e=typeof t.cluster.leaderId==`string`?t.cluster.leaderId:`(none)`;n.has(e)||n.set(e,[]),n.get(e).push(t.nodeId);let i=t.cluster.term;typeof i==`string`&&/^[1-9][0-9]{0,18}$/.test(i)?r.add(i):typeof i==`number`&&Number.isSafeInteger(i)&&i>=0&&r.add(String(i))}return n.size>1?{kind:`leaders`,clusterId:t,answered:e.length,groups:[...n]}:r.size>1?{kind:`terms`,clusterId:t,answered:e.length,terms:[...r].sort((e,t)=>BigInt(e)<BigInt(t)?-1:1)}:{kind:`none`}}function Qt(){return(Qt=e((()=>{Ut()})))()}function $t(e,t){let n=e*864e5;return Math.max(1,Math.min(400,Math.ceil(n/Math.max(1,t))))}function en(e){if(!e)return`never`;let t=Date.now()-Date.parse(e);if(!Number.isFinite(t))return`never`;if(t<6e4)return`just now`;let n=Math.floor(t/6e4);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function tn(e){if(!e)return!0;let t=Date.parse(e);return!Number.isFinite(t)||Date.now()-t>Nn}function nn({state:e,label:t,tooltip:n}){return(0,$.jsx)(z,{title:n??{online:`Connected`,offline:`Offline`,unknown:`Unknown`,unchecked:`Not checked`,checking:`Checking...`,"not-installed":`Not installed`}[e],arrow:!0,children:(0,$.jsxs)(G,{direction:`row`,spacing:.5,sx:{alignItems:`center`},children:[(0,$.jsx)(w,{sx:{width:8,height:8,borderRadius:`50%`,bgcolor:{online:`success.main`,offline:`error.main`,unknown:`warning.light`,unchecked:`text.disabled`,checking:`warning.main`,"not-installed":`text.disabled`}[e],flexShrink:0,...e===`checking`&&{animation:`${Fn} 1s ease-in-out infinite`},...e===`not-installed`&&{border:`1px dashed`,borderColor:`text.disabled`,bgcolor:`transparent`}}}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`},children:t})]})})}function rn(e,t,n){if(e<0)return n===`absent`?f(t.palette.info.main,.35):n===`unreachable`?f(t.palette.warning.main,.3):n===`unread`?f(t.palette.text.disabled,.25):t.palette.action.disabledBackground;let r=an(t.palette.success.main),i=an(t.palette.error.main),a=i[0]+(r[0]-i[0])*e,o=i[1]+(r[1]-i[1])*e,s=i[2]+(r[2]-i[2])*e;return`hsl(${Math.round(a)}, ${Math.round(o)}%, ${Math.round(s)}%)`}function an(e){let t=e.replace(`#`,``),n=parseInt(t.slice(0,2),16)/255,r=parseInt(t.slice(2,4),16)/255,i=parseInt(t.slice(4,6),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)return[0,0,s*100];let c=a-o,l=s>.5?c/(2-a-o):c/(a+o),u;return u=a===n?(r-i)/c+(r<i?6:0):a===r?(i-n)/c+2:(n-r)/c+4,u*=60,[u,l*100,s*100]}function on({data:e,metric:t,label:n,segWidth:r=6,gap:i=4,height:a=10,lastCheckAt:o}){let s=m(),c=(0,Q.useRef)(null),[l,u]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let e=c.current;if(!e)return;let t=()=>{let t=e.clientWidth;u(Math.max(1,Math.floor((t+i)/(r+i))))};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[r,i]);let d=[];if(l>0){let n=e.slice(-l);for(let e=0;e<l-n.length;e++)d.push({val:-1,time:``});for(let e of n){let n=e[t],r=e.t?new Date(e.t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``;d.push({val:n,time:r,...e.t?{iso:e.t}:{},checks:e.checks,unmeasured:e.omnitronUnmeasured})}}let f=d.filter(e=>e.val>=0),p=f.length>0?Math.round(f.reduce((e,t)=>e+t.val,0)/f.length*100):-1,h=p<0&&d.some(e=>e.unmeasured===`absent`),g=p>=0&&o&&Date.now()-new Date(o).getTime()>3e5?Date.now()-new Date(o).getTime():null,_=o?{time:new Date(o).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}:null,v=g==null?null:g>=36e5?`${Math.round(g/36e5)}h`:`${Math.max(1,Math.round(g/6e4))}m`;return(0,$.jsxs)(G,{spacing:.25,children:[(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:9,textTransform:`uppercase`,letterSpacing:.5},children:n}),v?(0,$.jsx)(z,{title:`Nothing has been recorded for ${v} — the last check was at ${_?.time}. The strip shows what was measured before that, not the node now.`,arrow:!0,children:(0,$.jsxs)(H,{variant:`caption`,sx:{fontSize:9,color:`warning.main`},children:[`no checks for `,v]})}):p>=0?(0,$.jsxs)(H,{variant:`caption`,sx:{fontSize:9,color:p>=95?`success.main`:p>=50?`warning.main`:`error.main`},children:[p,`%`]}):h?(0,$.jsx)(H,{variant:`caption`,sx:{fontSize:9,color:`info.main`},children:`not installed`}):null]}),(0,$.jsx)(G,{ref:c,direction:`row`,sx:{height:a,gap:`${i}px`},children:d.map((e,t)=>{let n=rn(e.val,s,e.unmeasured),i=e.checks==null?``:` (${e.checks} checks)`,a=e.val<0?e.unmeasured===`absent`?`${e.time} — omnitron not installed${i}`:e.unmeasured===`unreachable`?`${e.time} — could not reach the node${i}`:e.unmeasured===`unread`?`${e.time} — not measured: the node was reached and nothing could be read${i}`:e.time?`${e.time} — no data`:`No data`:`${e.time} — ${Math.round(e.val*100)}% up${i}`;return(0,$.jsx)(z,{title:a,arrow:!0,children:(0,$.jsx)(w,{sx:{width:r,minWidth:r,height:`100%`,bgcolor:n,borderRadius:`2px`,transition:`opacity 0.15s`,"&:hover":{opacity:.6}}})},t)})})]})}function sn(e){return/\+local\.[0-9a-zA-Z]+\.(\d{12})$/.exec(e??``)?.[1]??null}function cn(e,t){if(!e||!t)return`unknown`;if(e===t)return`current`;let n=sn(e),r=sn(t);return n&&r?n<r?`behind`:`current`:`differs`}function ln(e){let t,n=``;for(let r of e){if(!r)continue;let e=sn(r);e?e>n&&(n=e,t=r):t??=r}return t}function un(e,t){if(!e)return{state:`unchecked`,tooltip:`Not checked`};if(t)return e.omnitronConnected?{state:`online`,tooltip:`v${e.omnitronVersion??`?`} PID ${e.omnitronPid??`?`}`}:{state:`offline`,tooltip:e.omnitronError??`Not running`};let n=Ht(e);switch(n){case`running`:return{state:`online`,tooltip:`v${e.omnitronVersion??`?`} (${e.omnitronRole??`?`})`};case`not-running`:return{state:`offline`,tooltip:e.omnitronError??`Not running`};case`not-installed`:return{state:`not-installed`,tooltip:`Not installed on this node`};case`unreachable`:return{state:`unchecked`,tooltip:e.sshError?`SSH refused: ${e.sshError}`:`SSH refused`};case`unread`:return e.omnitronError?{state:`unknown`,tooltip:`Unknown — ${e.omnitronError}`}:{state:`unchecked`,tooltip:`Not checked yet`};default:return{state:`unchecked`,tooltip:String(n)}}}function dn({label:e,verdict:t,latencyMs:n,error:r,detail:i}){return(0,$.jsxs)(w,{sx:{py:1},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{fontWeight:600,minWidth:96},children:e}),(0,$.jsx)(D,{size:`small`,label:Vn[t],color:Bn[t],variant:Hn(t)?`outlined`:`filled`,sx:{height:20,fontSize:11}}),n!=null&&(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[n,`ms`]}),i&&(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`},children:i})]}),r&&(0,$.jsx)(H,{variant:`caption`,component:`pre`,sx:{mt:.5,ml:`104px`,p:1,borderRadius:1,bgcolor:e=>f(e.palette.error.main,.08),color:`error.main`,fontFamily:`monospace`,fontSize:11,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:r})]})}function fn({row:e,isLocal:t}){let n=Wt(e.pingReachable,e.pingError),r=Wt(e.sshConnected,e.sshError),i=Gt(e),a=Kt(e),o=t?[[`OMNITRON`,i]]:[[`PING`,n],[`SSH`,r],[`OMNITRON`,i]];return(0,$.jsxs)(w,{sx:{py:.75,borderBottom:e=>`1px solid ${e.palette.divider}`},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{fontFamily:`monospace`,minWidth:148,color:`text.secondary`},children:new Date(e.checkedAt).toLocaleString()}),o.map(([e,t])=>(0,$.jsx)(D,{size:`small`,label:e,color:Bn[t],variant:Hn(t)?`outlined`:`filled`,sx:{height:18,fontSize:10}},e)),(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.disabled`,ml:`auto`},children:[e.checkDurationMs,`ms`]})]}),a&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.25,ml:`156px`,color:`error.main`,fontFamily:`monospace`,fontSize:11,wordBreak:`break-word`},children:a})]})}function pn({data:e,health:t}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable||!e.answer)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`not asked`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`no reason given`})]});let n=e.answer;if(n.apps.length===0)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`The node answered and is running no applications.`});let i=e=>e===`online`?`success`:e===`starting`?`warning`:e===`stopped`?`default`:`error`;return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,mb:1,color:`text.secondary`},children:[n.apps.length,` app(s) · `,n.totalCpu.toFixed(1),`% CPU ·`,` `,(mt(n)/1024/1024).toFixed(0),` MB`]}),n.apps.map(n=>(0,$.jsxs)(w,{children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.5,alignItems:`baseline`,flexWrap:`wrap`},children:[(0,$.jsx)(D,{size:`small`,label:n.status,color:i(n.status),sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`body2`,sx:{fontFamily:`monospace`},children:n.name}),(0,$.jsx)(v,{component:r,to:ht(n.name,e.nodeId===`local`?void 0:e.nodeId),size:`small`,"aria-label":`View logs for ${n.name}`,children:`Logs`}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:[n.pid?`pid ${n.pid}`:null,n.port?`:${n.port}`:null,n.uptime>0?`up ${En(n.uptime)}`:null,n.restarts>0?`${n.restarts} restarts`:null].filter(Boolean).join(` · `)})]},n.name),(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`Health: `,t?.answer?.apps[n.name]?.status??`not read`,t?.error?` — ${t.error}`:``]}),t?.answer?.apps[n.name]?.checks.map(e=>(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,pl:1,color:e.status===`fail`?`error.main`:e.status===`warn`?`warning.main`:`text.secondary`},children:[e.status,` · `,e.name,e.message?` — ${e.message}`:``]},e.name))]},n.name))]})}function mn({data:e}){let t=e.phase===`done`?`success`:e.phase===`failed`||e.phase===`refused`?`error`:`warning`,n=e.phase!==`done`&&e.phase!==`failed`&&e.phase!==`refused`;return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(D,{size:`small`,label:e.phase,color:t,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`body2`,children:e.message})]}),e.version&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.secondary`,fontFamily:`monospace`},children:e.version}),n&&(0,$.jsx)(Oe,{variant:`determinate`,value:e.percent,sx:{mt:1,height:4,borderRadius:2}}),(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.disabled`},children:new Date(e.at).toLocaleString()})]})}function hn({data:e,nodeName:t}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`not asked`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`no reason given`})]});let n=Object.entries(e.indicators??{});if(n.length===0)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`The node answered and registered no indicators.`});let r=e=>e===`healthy`?`success`:e===`degraded`?`warning`:e===`unhealthy`?`error`:`default`;return(0,$.jsxs)(w,{sx:{py:.5},children:[e.status&&(0,$.jsx)(D,{size:`small`,label:`overall: ${e.status}`,color:r(e.status),sx:{height:20,fontSize:11,mb:1}}),n.map(([e,t])=>(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.4,alignItems:`baseline`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{minWidth:120,fontWeight:500},children:e}),(0,$.jsx)(D,{size:`small`,label:t?.status??`unknown`,color:r(t?.status),variant:t?.status?`filled`:`outlined`,sx:{height:18,fontSize:10}}),t?.message&&(0,$.jsx)(H,{variant:`caption`,sx:{color:t.status===`healthy`?`text.secondary`:`error.main`},children:t.message})]},e)),(0,$.jsx)(Bt,{active:n.find(([e])=>e===`runtime-diagnostics`)?.[1].details?.active,nodeName:t})]})}function gn({data:e}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable||!e.sync)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`unavailable`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`No replication reading was returned.`})]});let t=e.sync,n=yt(t);return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:.5},children:[(0,$.jsx)(D,{size:`small`,label:n.state===`unknown`?`delivery active`:n.state===`pulling`?`keeping up`:n.state===`synced`?`in sync`:n.state.replace(`-`,` `),color:wt(n),sx:{height:20,fontSize:11}}),(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[bt(n),` · `,t.bufferSizeAccuracy!==`measured`&&`~`,Math.round(t.bufferSize/1024),` KB pending · last release`,` `,t.lastSyncAt?en(new Date(t.lastSyncAgeMs==null?t.lastSyncAt:Date.now()-t.lastSyncAgeMs).toISOString()):`not recorded`,t.deliveryRatePerSecond!==void 0&&` · ${t.deliveryRatePerSecond.toFixed(1)} entries/s (60 s)`]}),t.failedAttempts>0&&(0,$.jsx)(D,{size:`small`,color:`error`,label:`${t.failedAttempts} failed attempts`,sx:{height:18,fontSize:10}})]}),t.evidence&&(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`,overflowWrap:`anywhere`,fontVariantNumeric:`tabular-nums`},children:[St(t.evidence),`. Released entries may include losses; evidence began `,new Date(t.evidence.since).toLocaleString(),`.`]}),t.lastError&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,color:`error.main`,fontFamily:`monospace`,fontSize:11,wordBreak:`break-word`},children:t.lastError}),!!t.history?.length&&(0,$.jsxs)(w,{component:`details`,sx:{mt:1,minWidth:0,"& summary":{cursor:`pointer`,typography:`caption`,color:`text.secondary`}},children:[(0,$.jsx)(`summary`,{children:`History before receipts · coverage and gaps`}),(0,$.jsx)(G,{spacing:1,sx:{pt:1},children:t.history.map(e=>(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:Tt(e)},e.sourceId))})]})]})}function _n({states:e}){let t=Object.values(e),n=Xt(t),r=Yt(t);return n.kind===`none`&&r.length===0?null:(0,$.jsxs)(G,{spacing:1,children:[r.map(e=>(0,$.jsxs)(Re,{severity:`warning`,children:[e.nodeId.slice(0,8),` · `,e.reason]},e.nodeId)),n.kind!==`none`&&(0,$.jsx)(Re,{severity:`warning`,children:n.kind===`leaders`?`${n.clusterId}: ${n.answered} controller observations name different leaders: `+n.groups.map(([e,t])=>`${e} (${t.length})`).join(`, `):`${n.clusterId}: ${n.answered} controller observations have different epochs: ${n.terms.join(`, `)}`})]})}function vn({data:e}){if(!e)return null;let t=Et(e);return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.5,alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{minWidth:96,color:`text.secondary`},children:`telemetry`}),(0,$.jsx)(D,{size:`small`,label:t.label,color:t.state===`healthy`?`success`:t.state===`degraded`?`warning`:`default`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:t.detail}),`dropped`in t&&t.dropped>0&&(0,$.jsx)(D,{size:`small`,color:`error`,label:`${t.dropped} DROPPED`,sx:{height:18,fontSize:10}})]})}function yn(e){return(0,$.jsx)(bn,{...e},e.open?e.node?.id??`none`:`closed`)}function bn({open:e,onClose:t,node:n,cluster:r}){let[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(null),[p,m]=(0,Q.useState)(null),[h,g]=(0,Q.useState)(null),[_,y]=(0,Q.useState)(50),[b,x]=(0,Q.useState)(null),[S,C]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(null),[O,k]=(0,Q.useState)(!1),[A,ee]=(0,Q.useState)(!0),[ne,re]=(0,Q.useState)(!1),[ie,oe]=(0,Q.useState)(null),j=Ve(),M=(0,Q.useRef)(0),N=(0,Q.useCallback)(async(e,t)=>{let n=++M.current;ee(!0),oe(null);try{let[r,i,o,l,d,p,h,_,v]=await Promise.allSettled([c.getCheckHistory({nodeId:e,limit:t}),c.getNodeIndicators({nodeId:e}),c.getNodeSyncStatus({nodeId:e}),c.getNodeRelayStats({nodeId:e}),c.getNodeHealthSummaries(),c.getNodeDaemonStatus({nodeId:e}),c.getUpgradeProgress(),c.getNodeDaemonHealth({nodeId:e}),c.getMeshStatus()]);if(n!==M.current)return;if(f(v.status===`fulfilled`?v.value.find(t=>t.nodeId===e)??null:null),C(_.status===`fulfilled`?_.value:{nodeId:e,reachable:!1,answer:null,error:`Application health could not be read`}),x(p.status===`fulfilled`?p.value:null),E(h.status===`fulfilled`?h.value.find(t=>t.nodeId===e)??null:null),s(i.status===`fulfilled`?i.value:null),u(o.status===`fulfilled`?o.value:{nodeId:e,reachable:!1,sync:null,error:o.reason instanceof Error?o.reason.message:String(o.reason)}),m(l.status===`fulfilled`?l.value:null),g(d.status===`fulfilled`?d.value.find(t=>t.nodeId===e)??null:null),r.status===`rejected`)throw r.reason;a(r.value)}catch(e){if(n!==M.current)return;oe(e instanceof Error?e.message:String(e)),a([])}finally{n===M.current&&ee(!1)}},[]);(0,Q.useEffect)(()=>{let t=M;return e&&n&&N(n.id,_),()=>{t.current++}},[e,n,_,N]);let se=T!==null&&T.phase!==`done`&&T.phase!==`failed`&&T.phase!==`refused`;Ge(()=>{e&&n&&!A&&N(n.id,_)},{intervalMs:5e3,enabled:e});let P=(0,Q.useCallback)(async()=>{if(n){k(!0);try{let e=await c.upgradeNode({nodeId:n.id});if(!e.started){j.warning(e.reason??`The daemon refused to start an upgrade`);return}j.info(`Building a bundle — this takes a few minutes`),await N(n.id,_)}catch(e){j.error(e instanceof Error?e.message:`Could not start the upgrade`)}finally{k(!1)}}},[n,_,N,j]),ue=(0,Q.useCallback)(async()=>{if(n){re(!0);try{await c.triggerNodeCheck({nodeId:n.id}),await N(n.id,_),j.success(`Check complete`)}catch(e){j.error(e instanceof Error?e.message:`Check failed`)}finally{re(!1)}}},[n,_,N,j]);if(!n)return null;let I=n.status,de=n.isLocal;return(0,$.jsxs)(ae,{open:e,onClose:t,maxWidth:`md`,fullWidth:!0,children:[(0,$.jsx)(le,{children:(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,$.jsxs)(w,{component:`span`,children:[`Diagnostics — `,n.name]}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:de?`this daemon`:`${n.host}:${n.daemonPort}`})]})}),(0,$.jsxs)(te,{dividers:!0,children:[A&&(0,$.jsx)(Oe,{"aria-label":`Loading node diagnostics`,sx:{mb:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Last check`}),h&&(h.consecutiveFailures>0||h.lastSeenOnline)&&(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{mb:1,alignItems:`center`,flexWrap:`wrap`},children:[h.consecutiveFailures>0&&(0,$.jsx)(D,{size:`small`,color:h.consecutiveFailures>3?`error`:`warning`,label:`${h.consecutiveFailures} consecutive failures`,sx:{height:20,fontSize:11}}),h.lastSeenOnline&&(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[`last seen online `,en(h.lastSeenOnline)]})]}),I?(0,$.jsxs)(w,{sx:{mb:2},children:[!de&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(dn,{label:`PING`,verdict:Wt(I.pingReachable,I.pingError),latencyMs:I.pingLatencyMs,error:I.pingError??null}),(0,$.jsx)(dn,{label:`SSH`,verdict:Wt(I.sshConnected,I.sshError),latencyMs:I.sshLatencyMs,error:I.sshError??null,detail:I.sshConnected==null&&!I.sshError?`this check reaches the node over Netron`:void 0})]}),(0,$.jsx)(dn,{label:`OMNITRON`,verdict:Gt(I),error:I.omnitronError??null,detail:I.omnitronConnected?[I.omnitronVersion&&`v${I.omnitronVersion}`,I.omnitronPid&&`pid ${I.omnitronPid}`,I.omnitronUptime!=null&&I.omnitronUptime>0&&`up ${En(I.omnitronUptime)}`].filter(Boolean).join(` · `):void 0}),(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:1,color:`text.disabled`},children:I.checkedAt?`Taken ${new Date(I.checkedAt).toLocaleString()}`:`Never checked`})]}):(0,$.jsx)(H,{variant:`body2`,sx:{mb:2,color:`text.secondary`},children:`This node has never been checked.`}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Indicators, from the node's own titan-health`}),(0,$.jsx)(hn,{data:o,nodeName:n.name}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Running on this node`}),(0,$.jsx)(pn,{data:b,health:S}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Replication`}),!n.isLocal&&d&&(0,$.jsxs)(w,{sx:{py:1,overflowWrap:`anywhere`},children:[(0,$.jsx)(H,{variant:`body2`,children:xt(d).connection}),xt(d).error&&(0,$.jsx)(H,{variant:`caption`,color:`error.main`,children:xt(d).error}),!(l?.reachable&&l.sync)&&(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`Replication: `,xt(d).replication]})]}),r&&(0,$.jsxs)(H,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:[`Cluster · `,Jt(r)]}),(0,$.jsx)(gn,{data:l}),(0,$.jsx)(vn,{data:p}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,mb:1},children:[(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`History`}),(0,$.jsx)(U,{size:`small`,sx:{ml:`auto`,minWidth:120},children:(0,$.jsx)(Fe,{value:_,inputProps:{"aria-label":`History entries`},onChange:e=>y(Number(e.target.value)),sx:{height:30,fontSize:12},children:zn.map(e=>(0,$.jsxs)(W,{value:e,sx:{fontSize:12},children:[`last `,e,` checks`]},e))})})]}),ie&&(0,$.jsx)(Re,{onClose:()=>oe(null),children:ie}),A&&i.length===0?(0,$.jsx)(ut,{height:120}):i.length===0&&!ie?(0,$.jsx)(H,{variant:`body2`,sx:{py:2,color:`text.secondary`},children:`No checks recorded. History is kept by the daemon that runs the health worker.`}):(0,$.jsx)(w,{sx:{maxHeight:360,overflowY:`auto`},children:i.map(e=>(0,$.jsx)(fn,{row:e,isLocal:de},`${e.nodeId}-${e.checkedAt}`))}),T&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Workspace source bundle upgrade`}),(0,$.jsx)(mn,{data:T})]})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(K,{permission:`OmnitronNodes.triggerNodeCheck`,children:(0,$.jsx)(v,{onClick:ue,disabled:ne,startIcon:(0,$.jsx)($e,{sx:{fontSize:16}}),children:ne?`Checking…`:`Check now`})}),!de&&(0,$.jsx)(K,{permission:`OmnitronNodes.upgradeNode`,children:(0,$.jsxs)(w,{component:`details`,children:[(0,$.jsx)(H,{component:`summary`,variant:`caption`,sx:{cursor:`pointer`},children:`Advanced · workspace source bundle`}),(0,$.jsx)(v,{onClick:P,disabled:O||se,startIcon:(0,$.jsx)(tt,{sx:{fontSize:16}}),children:se?`Upgrading…`:`Install source bundle`})]})}),(0,$.jsx)(w,{sx:{flexGrow:1}}),(0,$.jsx)(v,{onClick:t,children:`Close`})]})]})}function xn({node:e,onEdit:t,onRemove:n,onCheckSsh:i,onDiagnose:a,checking:o,uptimeData:s,lastCheckAt:c,newest:l,mesh:u}){let{status:d}=e,f=un(d,e.isLocal),p=d?.pingReachable==null?`unchecked`:d.pingReachable?`online`:`offline`,m=!e.isLocal&&tn(d?.checkedAt);return(0,$.jsx)(M,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,transition:`box-shadow 0.2s`,"&:hover":{boxShadow:e=>e.shadows[8]}},children:(0,$.jsxs)(_,{sx:{pb:`12px !important`,flexGrow:1,display:`flex`,flexDirection:`column`},children:[(0,$.jsxs)(G,{direction:`row`,sx:{alignItems:`flex-start`,justifyContent:`space-between`,flexWrap:`wrap`,gap:1,mb:1.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,minWidth:0},children:[e.isLocal?(0,$.jsx)(rt,{sx:{fontSize:24,color:`primary.main`,flexShrink:0}}):(0,$.jsx)(Xe,{sx:{fontSize:24,color:`text.secondary`,flexShrink:0}}),(0,$.jsxs)(w,{sx:{minWidth:0},children:[(0,$.jsx)(H,{variant:`subtitle2`,noWrap:!0,children:e.name}),(0,$.jsxs)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.disabled`},children:[e.host,e.isLocal?``:`:${e.sshPort}`]})]})]}),(0,$.jsxs)(G,{direction:`row`,spacing:.5,useFlexGap:!0,sx:{flexWrap:`wrap`,justifyContent:`flex-end`,flexShrink:0,maxWidth:`100%`},children:[!e.isLocal&&(0,$.jsx)(K,{permission:`OmnitronNodes.removeNode`,children:(0,$.jsx)(z,{title:`Remove`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Remove node ${e.name}`,onClick:()=>n(e.id),color:`error`,sx:{marginInlineEnd:1},children:(0,$.jsx)(nt,{sx:{fontSize:18}})})})}),!e.isLocal&&(0,$.jsx)(K,{permission:`OmnitronTerminal.open`,children:(0,$.jsx)(v,{component:r,to:`/terminal?${new URLSearchParams({node:e.id})}`,size:`small`,children:`SSH`})}),!e.isLocal&&(0,$.jsx)(z,{title:o?`Checking...`:`Check SSH connection`,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(K,{permission:`OmnitronNodes.checkNodeStatus`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Check SSH connection`,onClick:()=>i(e.id),disabled:o,children:(0,$.jsx)($e,{sx:{fontSize:18,...o&&{animation:`${Pn} 1s linear infinite`}}})})})})}),(0,$.jsx)(z,{title:`Diagnostics`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Diagnostics for ${e.name}`,onClick:()=>a(e),children:(0,$.jsx)(et,{sx:{fontSize:18}})})}),!e.isLocal&&(0,$.jsx)($.Fragment,{children:(0,$.jsx)(K,{permission:`OmnitronNodes.updateNode`,children:(0,$.jsx)(z,{title:`Edit`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Edit node ${e.name}`,onClick:()=>t(e),children:(0,$.jsx)(Qe,{sx:{fontSize:18}})})})})})]})]}),(0,$.jsxs)(G,{direction:`row`,spacing:2,sx:{mb:1.5,alignItems:`center`},children:[e.isLocal?(0,$.jsx)(nn,{state:f.state,label:`OMNITRON`,tooltip:f.tooltip}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(nn,{state:p,label:`PING`,tooltip:d?.pingReachable?`${d.pingLatencyMs??`?`}ms`:d?.pingError??`Not checked`}),(0,$.jsx)(nn,{state:f.state,label:`OMNITRON`,tooltip:f.tooltip})]}),(0,$.jsx)(z,{arrow:!0,title:d?.checkedAt?`Last checked ${new Date(d.checkedAt).toLocaleString()}`:`This node has never been checked`,children:(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{ml:`auto`,fontSize:10,color:m?`warning.main`:`text.disabled`},children:en(d?.checkedAt)})})]}),(0,$.jsx)(F,{sx:{mb:1.5}}),(0,$.jsxs)(G,{spacing:.5,children:[d?.omnitronVersion&&(0,$.jsx)(wn,{version:d.omnitronVersion,standing:cn(d.omnitronVersion,l)}),(0,$.jsx)(Tn,{label:`Runtime`,value:e.runtime}),(0,$.jsx)(Tn,{label:`Daemon Port`,value:String(e.daemonPort)}),!e.isLocal&&(0,$.jsx)(Tn,{label:`SSH User`,value:e.sshUser}),d?.os&&(0,$.jsx)(Tn,{label:`OS`,value:`${d.os.platform} ${d.os.arch}`}),d?.omnitronUptime!=null&&d.omnitronUptime>0&&(0,$.jsx)(Tn,{label:`Uptime`,value:En(d.omnitronUptime)}),!e.isLocal&&(0,$.jsx)(Cn,{mesh:u})]}),e.tags.length>0&&(0,$.jsx)(G,{direction:`row`,spacing:.5,useFlexGap:!0,sx:{mt:1.5,flexWrap:`wrap`},children:e.tags.map(e=>(0,$.jsx)(D,{label:e,size:`small`,variant:`outlined`,sx:{height:22,fontSize:11}},e))}),!e.isLocal&&(0,$.jsx)(w,{sx:{mt:`auto`,pt:1.5},children:(0,$.jsxs)(G,{spacing:.75,children:[(0,$.jsx)(on,{data:s,metric:`ping`,label:`PING`,segWidth:In,gap:Ln,height:Rn,lastCheckAt:c}),(0,$.jsx)(on,{data:s,metric:`omnitron`,label:`OMNITRON`,segWidth:In,gap:Ln,height:Rn,lastCheckAt:c})]})})]})})}function Sn(e){let t=xt(e),n=[t.connection,t.error,`Replication: ${t.replication}`].filter(Boolean).join(` `);switch(t.state){case`not-joined`:return{text:`not joined`,tone:`idle`,tooltip:n};case`reconnecting`:return{text:e.reconnectAt==null?`disconnected`:`retrying`,tone:`bad`,tooltip:n};case`connecting`:return{text:`joining`,tone:`quiet`,tooltip:n};case`stale`:return{text:`stale heartbeat`,tone:`warn`,tooltip:n};case`unauthenticated`:return{text:`unauthenticated`,tone:`warn`,tooltip:n};case`connected`:return e.via===`ssh-tunnel`?{text:`over SSH`,tone:`info`,tooltip:n}:{text:`direct`,tone:`good`,tooltip:n};default:return{text:`disconnected`,tone:`bad`,tooltip:`RPC state is unavailable.`}}}function Cn({mesh:e}){if(!e)return null;let t=Sn(e);return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:`Mesh`}),(0,$.jsx)(z,{arrow:!0,title:t.tooltip,children:(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{fontSize:11,color:Un[t.tone],maxWidth:190},children:t.text})})]})}function wn({version:e,standing:t}){let[n,r]=e.split(`+`),i=r?.split(`.`)[1],a=i?`${n} · ${i.slice(0,7)}`:n,o=t===`behind`?{text:`behind`,color:`warning.main`}:t===`differs`?{text:`differs`,color:`info.main`}:null;return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:`Version`}),(0,$.jsx)(z,{arrow:!0,title:e,children:(0,$.jsxs)(G,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[o&&(0,$.jsx)(H,{variant:`caption`,sx:{fontSize:10,color:o.color},children:o.text}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{fontSize:11,maxWidth:190},children:a})]})})]})}function Tn({label:e,value:t}){return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`},children:e}),(0,$.jsx)(H,{variant:`caption`,sx:{fontWeight:500},children:t})]})}function En(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function Dn({open:e,onClose:t,onSubmit:n,editNode:r,sshKeys:i,loading:a,error:o,onDismissError:s}){let[c,l]=(0,Q.useState)(Wn);(0,Q.useEffect)(()=>{e&&l(r?{name:r.name,host:r.host,sshPort:r.sshPort,sshUser:r.sshUser,sshAuthMethod:r.sshAuthMethod,sshPrivateKey:r.sshPrivateKey??``,sshPassphrase:``,sshPassword:``,runtime:r.runtime,daemonPort:r.daemonPort,tags:r.tags.join(`, `)}:{...Wn,sshPrivateKey:i[0]?.path??``})},[r,i,e]);let u=(e,t)=>l(n=>({...n,[e]:t})),d=!!r,f=c.name.trim()&&c.host.trim();return(0,$.jsxs)(ae,{open:e,onClose:t,maxWidth:`sm`,fullWidth:!0,children:[(0,$.jsx)(le,{children:d?`Edit "${r.name}"`:`Add Node`}),(0,$.jsxs)(te,{children:[o&&(0,$.jsx)(Re,{onClose:s,children:o}),(0,$.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,$.jsx)(B,{label:`Name`,value:c.name,onChange:e=>u(`name`,e.target.value),fullWidth:!0,placeholder:`production-server-1`,autoFocus:!0}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsx)(B,{label:`Host`,value:c.host,onChange:e=>u(`host`,e.target.value),fullWidth:!0,placeholder:`192.168.1.100`}),(0,$.jsx)(B,{label:`SSH Port`,value:c.sshPort,onChange:e=>u(`sshPort`,parseInt(e.target.value,10)||22),sx:{width:{xs:`100%`,sm:120},flexShrink:0},type:`number`})]}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsx)(B,{label:`SSH User`,value:c.sshUser,onChange:e=>u(`sshUser`,e.target.value),fullWidth:!0}),(0,$.jsxs)(U,{sx:{minWidth:160},children:[(0,$.jsx)(we,{children:`Auth Method`}),(0,$.jsxs)(Fe,{value:c.sshAuthMethod,label:`Auth Method`,inputProps:{"aria-label":`Auth Method`},onChange:e=>u(`sshAuthMethod`,e.target.value),children:[(0,$.jsx)(W,{value:`key`,children:`SSH Key`}),(0,$.jsx)(W,{value:`password`,children:`Password`})]})]})]}),c.sshAuthMethod===`key`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(U,{fullWidth:!0,children:[(0,$.jsx)(we,{children:`SSH Private Key`}),(0,$.jsxs)(Fe,{value:c.sshPrivateKey,label:`SSH Private Key`,inputProps:{"aria-label":`SSH Private Key`},onChange:e=>u(`sshPrivateKey`,e.target.value),children:[i.map(e=>(0,$.jsx)(W,{value:e.path,children:(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{fontWeight:500},children:e.name}),(0,$.jsx)(D,{label:e.type,size:`small`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.disabled`,ml:`auto`},children:e.path})]})},e.path)),i.length===0&&(0,$.jsx)(W,{disabled:!0,children:(0,$.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`No SSH keys found`})})]})]}),(0,$.jsx)(B,{label:`Key Passphrase`,value:c.sshPassphrase,onChange:e=>u(`sshPassphrase`,e.target.value),fullWidth:!0,type:`password`,placeholder:r?.hasPassphrase?`Encrypted — leave empty to keep`:`Leave empty if key is not encrypted`,size:`small`,helperText:r?.hasPassphrase?`Passphrase is stored encrypted. Enter new value to change.`:void 0})]}):(0,$.jsx)(B,{label:`SSH Password`,value:c.sshPassword,onChange:e=>u(`sshPassword`,e.target.value),fullWidth:!0,type:`password`,placeholder:r?.hasPassword?`Stored — leave empty to keep`:``,helperText:r?.hasPassword?`Password is stored encrypted. Enter a new value to change it.`:void 0}),(0,$.jsx)(F,{}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsxs)(U,{sx:{minWidth:140},children:[(0,$.jsx)(we,{children:`Runtime`}),(0,$.jsxs)(Fe,{value:c.runtime,label:`Runtime`,inputProps:{"aria-label":`Runtime`},onChange:e=>u(`runtime`,e.target.value),children:[(0,$.jsx)(W,{value:`node`,children:`Node.js`}),(0,$.jsx)(W,{value:`bun`,children:`Bun`})]})]}),(0,$.jsx)(B,{label:`Daemon Port`,value:c.daemonPort,onChange:e=>u(`daemonPort`,parseInt(e.target.value,10)||9700),sx:{width:{xs:`100%`,sm:140},flexShrink:0},type:`number`}),(0,$.jsx)(B,{label:`Tags`,value:c.tags,onChange:e=>u(`tags`,e.target.value),fullWidth:!0,placeholder:`production, gpu`,helperText:`Comma-separated`})]})]})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:t,color:`inherit`,children:`Cancel`}),(0,$.jsx)(v,{variant:`contained`,loading:a,onClick:()=>n(c),disabled:!f||a,children:d?`Save`:`Add Node`})]})]})}function On({open:e,onClose:t,onSaved:n}){let[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)(!1),[s,l]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{e&&(l(null),c.getCheckConfig().then(e=>i(e)).catch(e=>l(e?.message??`Could not read the current settings`)))},[e]);let u=(e,t)=>i(n=>n&&{...n,[e]:t});return(0,$.jsxs)(ae,{open:e,onClose:a?void 0:t,maxWidth:`xs`,fullWidth:!0,children:[(0,$.jsx)(le,{children:`Check Settings`}),(0,$.jsxs)(te,{children:[s&&(0,$.jsx)(Re,{onClose:()=>l(null),children:s}),r?(0,$.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,$.jsxs)(U,{fullWidth:!0,children:[(0,$.jsx)(we,{children:`ICMP Ping`}),(0,$.jsxs)(Fe,{value:r.pingEnabled?`on`:`off`,label:`ICMP Ping`,inputProps:{"aria-label":`ICMP Ping`},onChange:e=>u(`pingEnabled`,e.target.value===`on`),children:[(0,$.jsx)(W,{value:`on`,children:`Enabled`}),(0,$.jsx)(W,{value:`off`,children:`Disabled`})]})]}),(0,$.jsx)(B,{label:`Ping timeout (ms)`,type:`number`,fullWidth:!0,value:r.pingTimeout,onChange:e=>u(`pingTimeout`,parseInt(e.target.value,10)||0),helperText:`250-60000`,disabled:!r.pingEnabled}),(0,$.jsx)(B,{label:`SSH timeout (ms)`,type:`number`,fullWidth:!0,value:r.sshTimeout,onChange:e=>u(`sshTimeout`,parseInt(e.target.value,10)||0),helperText:`1000-120000`}),(0,$.jsx)(B,{label:`Omnitron probe timeout (ms)`,type:`number`,fullWidth:!0,value:r.omnitronCheckTimeout,onChange:e=>u(`omnitronCheckTimeout`,parseInt(e.target.value,10)||0),helperText:`1000-120000`}),(0,$.jsx)(B,{label:`Concurrent checks`,type:`number`,fullWidth:!0,value:r.concurrency,onChange:e=>u(`concurrency`,parseInt(e.target.value,10)||0),helperText:`1-100 - how many nodes are checked at once`})]}):(0,$.jsx)(ut,{variant:`rounded`,height:220})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:t,color:`inherit`,disabled:a,children:`Cancel`}),(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(v,{variant:`contained`,onClick:async()=>{if(r){o(!0),l(null);try{n(await c.setCheckConfig(r)),t()}catch(e){l(e?.message??`Failed to save settings.`)}finally{o(!1)}}},disabled:!r||a,children:a?`Saving...`:`Save`})})]})]})}function kn(){let{can:e}=He(),t=e(`OmnitronNodes.listSshKeys`),[n,r]=(0,Q.useState)([]),[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(!0),[l,u]=(0,Q.useState)(!1),d=(0,Q.useRef)(!1),[f,p]=(0,Q.useState)(null),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(null),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)({}),[D,O]=(0,Q.useState)({}),[k,A]=(0,Q.useState)(null),[ee,ne]=(0,Q.useState)(!1),[re,ie]=(0,Q.useState)({uptimeIntervalMs:An,retentionDays:jn}),oe=(0,Q.useRef)(re);oe.current=re;let[j,M]=(0,Q.useState)(null),[N,se]=(0,Q.useState)(null),P=(0,Q.useRef)([]);P.current=n;let[F,ue]=(0,Q.useState)({}),I=(0,Q.useRef)(0),[de,fe]=(0,Q.useState)({}),L=(0,Q.useCallback)(async()=>{try{let e=await c.listNodes();r(e),A(null);let t=await Promise.allSettled(e.map(async e=>({id:e.id,at:(await c.getCheckHistory({nodeId:e.id,limit:1}))[0]?.checkedAt??null}))),n={},i=null;for(let e of t)e.status===`fulfilled`?n[e.value.id]=e.value.at:i??=e.reason?.message??`Could not read the latest recorded checks`;return O(e=>({...e,...n})),se(i),e}catch(e){return A(e?.message??`Could not reach the daemon`),P.current}finally{s(!1)}},[]),pe=(0,Q.useCallback)(async()=>{try{let e=await c.getMeshStatus();ue(Object.fromEntries(e.map(e=>[e.nodeId,e])))}catch{}},[]),R=(0,Q.useCallback)(async e=>{let t=++I.current,n=await Promise.allSettled(e.map(async e=>c.getNodeClusterState({nodeId:e.id}))),r={};n.forEach((t,n)=>{let i=e[n].id;r[i]=t.status===`fulfilled`&&t.value?.nodeId===i?t.value:{nodeId:i,reachable:!1,cluster:null,error:t.status===`rejected`&&t.reason instanceof Error?t.reason.message:`Cluster participation unavailable`}}),t===I.current&&fe(r)},[]),me=(0,Q.useCallback)(async e=>{let t={},n=null;await Promise.allSettled(e.map(async e=>{try{let{uptimeIntervalMs:n,retentionDays:r}=oe.current;t[e.id]=await c.getUptimeBar({nodeId:e.id,bucketCount:$t(r,n),intervalMs:n})}catch(e){n??=e?.message??`Could not load uptime history`}})),E(e=>({...e,...t})),M(n)},[]),he=(0,Q.useCallback)(async()=>{if(!t)a([]);else try{a(await c.listSshKeys())}catch{}},[t]),ge=qe(e=>e.connected),B=qe(e=>e.lastNodeEvent),_e=qe(e=>e.initialize);(0,Q.useEffect)(()=>_e(),[_e]),Ge(()=>void L(),{intervalMs:ge?12e4:3e4}),Ge(()=>void pe(),{intervalMs:15e3}),Ge(()=>R(P.current),{intervalMs:6e4}),(0,Q.useEffect)(()=>{B&&L()},[B,L]),Ge(()=>void(async()=>{await me(P.current)})(),{intervalMs:Mn});let ve=n.map(e=>e.id).sort().join(`,`);(0,Q.useEffect)(()=>{R(P.current),ve&&me(P.current)},[ve,R,me]),(0,Q.useEffect)(()=>{he()},[he]),(0,Q.useEffect)(()=>{Promise.resolve().then(()=>c.getHistoryConfig()).then(e=>ie(e)).catch(()=>{})},[]);let ye=(0,Q.useMemo)(()=>ln(n.map(e=>e.status?.omnitronVersion)),[n]),V=Ve(),be=(0,Q.useCallback)(async e=>{let t=n.find(t=>t.id===e)?.name??e;p(e);try{let n=await c.checkNodeStatus({id:e});if(n.sshConnected){let e=n.sshLatencyMs==null?``:` (${n.sshLatencyMs}ms)`;V.success(`${t}: SSH connected${e}`)}else n.sshConnected===!1?V.error(`${t}: SSH failed — ${n.sshError??`Connection refused`}`):V.warning(`${t}: this check did not use SSH — ${n.omnitronConnected?`omnitron answered on its Netron port`:n.omnitronError??`no answer on the Netron port`}`)}catch(e){V.error(`${t}: ${e?.message??`Check failed`}`)}finally{p(null)}},[n,V]),[xe,Se]=(0,Q.useState)(null),[Ce,we]=(0,Q.useState)(!1),[Te,U]=(0,Q.useState)(null),Ee=(0,Q.useRef)(!1),De=n.find(e=>e.id===xe),Oe=(0,Q.useCallback)(async()=>{if(xe&&!Ee.current){Ee.current=!0,we(!0),U(null);try{await c.removeNode({id:xe}),await L(),Se(null)}catch(e){U(e?.message??`Failed to remove node.`)}finally{Ee.current=!1,we(!1)}}},[xe,L]),ke=(0,Q.useCallback)(()=>{Ee.current||(Se(null),U(null))},[]),Ae=(0,Q.useCallback)(()=>{_(null),w(null),h(!0)},[]),je=(0,Q.useCallback)(e=>{_(e),w(null),h(!0)},[]),W=(0,Q.useCallback)(()=>{h(!1),_(null),w(null)},[]),Ne=(0,Q.useCallback)(async e=>{S(!0),w(null);try{let t={name:e.name.trim(),host:e.host.trim(),sshPort:e.sshPort,sshUser:e.sshUser.trim(),sshAuthMethod:e.sshAuthMethod,sshPrivateKey:e.sshAuthMethod===`key`?e.sshPrivateKey:void 0,sshPassphrase:e.sshAuthMethod===`key`&&e.sshPassphrase?e.sshPassphrase:void 0,sshPassword:e.sshAuthMethod===`password`&&e.sshPassword?e.sshPassword:void 0,runtime:e.runtime,daemonPort:e.daemonPort,tags:e.tags.split(`,`).map(e=>e.trim()).filter(Boolean)};g?await c.updateNode({id:g.id,...t}):await c.addNode(t),W(),await L()}catch(e){w(e?.message??`Failed to save node.`)}finally{S(!1)}},[g,L,W]),Fe=[...n].sort((e,t)=>e.isLocal===t.isLocal?e.name.localeCompare(t.name):e.isLocal?-1:1);return(0,$.jsxs)(G,{spacing:3,children:[(0,$.jsx)(ct,{links:[{name:`Nodes`}],action:(0,$.jsxs)(G,{direction:`row`,spacing:1,children:[(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(v,{variant:`outlined`,size:`small`,startIcon:(0,$.jsx)(Qe,{sx:{fontSize:18}}),onClick:()=>ne(!0),children:`Check Settings`})}),(0,$.jsx)(z,{title:`Refresh`,children:(0,$.jsx)(Me,{"data-console-command":`refresh`,size:`small`,"aria-label":`Refresh`,loading:l,onClick:async()=>{if(!d.current){d.current=!0,u(!0);try{let e=await L();await Promise.all([me(e),pe(),R(e)])}finally{d.current=!1,u(!1)}}},children:(0,$.jsx)($e,{sx:{fontSize:18}})})}),(0,$.jsx)(K,{permission:`OmnitronNodes.addNode`,children:(0,$.jsx)(v,{variant:`contained`,size:`small`,startIcon:(0,$.jsx)(Ye,{sx:{fontSize:18}}),onClick:Ae,children:`Add Node`})})]})}),(0,$.jsx)(ot,{active:l,label:`Refreshing node status`,detail:`Reading fleet, replication and uptime observations`}),(0,$.jsx)(_n,{states:de}),(0,$.jsx)(Pt,{nodes:n}),k&&(0,$.jsxs)(Re,{severity:`warning`,onClose:()=>A(null),children:[`Could not refresh the node list — `,k,`. The cards below are the last state the daemon reported.`]}),(j||N)&&(0,$.jsxs)(Re,{severity:`warning`,onClose:()=>{M(null),se(null)},children:[`Could not refresh the uptime history — `,j||N,`. The strips below are the last aggregation that arrived, and may be behind the cards.`]}),o?(0,$.jsx)(Pe,{container:!0,spacing:3,children:[1,2,3].map(e=>(0,$.jsx)(Pe,{size:{xs:12,sm:6,md:4},children:(0,$.jsx)(ut,{variant:`rounded`,height:300})},e))}):Fe.length===0?(0,$.jsx)(ft,{title:k?`No nodes to show`:`No nodes registered`,description:k?`The list could not be refreshed, so this may not be the whole picture.`:`Add a node to manage a remote host from here.`}):(0,$.jsx)(Pe,{container:!0,spacing:3,children:Fe.map(e=>(0,$.jsx)(Pe,{size:{xs:12,sm:6,md:4},children:(0,$.jsx)(xn,{node:e,onEdit:je,onRemove:Se,onCheckSsh:be,onDiagnose:b,checking:f===e.id,uptimeData:T[e.id]??[],lastCheckAt:D[e.id]??null,newest:ye,mesh:F[e.id]})},e.id))}),(0,$.jsx)(yn,{cluster:y?de[y.id]:void 0,open:!!y,onClose:()=>b(null),node:y?n.find(e=>e.id===y.id)??y:null}),(0,$.jsxs)(ae,{open:!!xe,onClose:ke,maxWidth:`xs`,fullWidth:!0,children:[(0,$.jsx)(le,{children:`Remove Node`}),(0,$.jsxs)(te,{children:[(0,$.jsxs)(H,{variant:`body2`,children:[`Remove `,(0,$.jsx)(`strong`,{children:De?.name??xe}),`? This cannot be undone.`]}),Te&&(0,$.jsx)(Re,{onClose:()=>U(null),children:Te})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:ke,color:`inherit`,disabled:Ce,children:`Cancel`}),(0,$.jsx)(K,{permission:`OmnitronNodes.removeNode`,children:(0,$.jsx)(v,{onClick:Oe,color:`error`,variant:`contained`,disabled:Ce,children:Ce?`Removing…`:`Remove`})})]})]}),(0,$.jsx)(K,{permission:g?`OmnitronNodes.updateNode`:`OmnitronNodes.addNode`,children:(0,$.jsx)(Dn,{open:m,onClose:W,onSubmit:Ne,editNode:g,sshKeys:i,loading:x,error:C,onDismissError:()=>w(null)})}),(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(On,{open:ee,onClose:()=>ne(!1),onSaved:e=>{V.success(`Check settings saved — ping ${e.pingEnabled?`on`:`off`}, SSH timeout ${e.sshTimeout}ms`),L()}})})]})}var Q,$,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn;function Gn(){return(Gn=e((()=>{at(),Ue(),Q=t(),l(),y(),x(),S(),Ce(),pe(),b(),je(),he(),C(),Ie(),re(),A(),ne(),se(),be(),Ne(),Le(),Ee(),De(),j(),Te(),p(),u(),h(),st(),dt(),ze(),lt(),Be(),Rt(),Vt(),o(),Ke(),Qt(),Ut(),Ct(),pt(),gt(),Je(),Ze(),$=n(),An=864e5,jn=90,Mn=3e5,Nn=3e5,Pn=d`
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{P as r,U as i,c as a,h as o,l as s,y as c,z as l}from"./client-DFnuv2z3.js";import{a as u,o as d}from"./mui-agG5dued.js";import{Vt as f,Yt as p}from"./mui-BTN91yBK.js";import{_n as m,gn as h}from"./mui-CdB_p2lt.js";import{C as g,D as _,F as v,H as y,I as b,M as x,O as S,Q as C,V as w,X as T,Y as E,Z as D,_t as O,at as k,c as A,ct as ee,d as te,f as ne,g as re,gt as ie,h as ae,ht as oe,i as j,j as M,lt as N,m as se,ot as P,p as ce,r as F,s as le,st as ue,ut as I,vt as de,w as fe}from"./mui-BXSXx9c9.js";import{A as L,B as pe,C as R,D as me,F as z,I as he,O as ge,a as B,b as _e,d as ve,f as ye,k as V,o as be,w as xe,y as Se,z as H}from"./mui-Cd711nOk.js";import{B as Ce,D as we,E as Te,G as U,K as Ee,O as De,T as Oe,U as ke,W as Ae,it as je,l as W,rt as Me,u as Ne,z as Pe}from"./mui-AnEgAVjz.js";import{C as Fe,_ as G,v as Ie,w as Le}from"./mui-BwsIrivo.js";import{n as Re,r as ze}from"./alert-uBG6r9NW.js";import{n as Be,r as Ve}from"./snackbar-DSPmjMyi.js";import{c as He,n as K,s as Ue}from"./access-BvKK9dEv.js";import{n as We,r as Ge,t as Ke}from"./use-polled-resource-B22hhr5L.js";import{n as qe,t as Je}from"./realtime.store-hfxZD2DU.js";import{A as Ye,E as Xe,G as Ze,L as Qe,M as $e,g as et,m as tt,p as nt,s as rt,z as it}from"./icons-OboZgWSt.js";import{n as at,t as ot}from"./operation-status-Bm1x1wTz.js";import{n as st,t as ct}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as lt,t as ut}from"./skeleton-BmWDJWF9.js";import{n as dt,t as ft}from"./empty-content-7jOFhG4C.js";import{r as pt,t as mt}from"./daemon-memory-BiEtr9jr.js";import{r as ht,t as gt}from"./log-location-DuBjh6HQ.js";import{p as _t,u as vt}from"./release-bits-BJ6i23y0.js";import{a as yt,c as bt,i as xt,o as St,r as Ct,s as wt,t as Tt}from"./sync-reading-CN0jPKAg.js";function Et(e){let t=e.relay;if(!e.reachable||!t)return{state:`unknown`,label:`unavailable`,detail:e.error??`No relay measurement was returned; check node connectivity and access.`};if(t.state===`not-applicable`)return{state:`neutral`,label:`not applicable`,detail:`Worker logs and metrics use the durable replication outbox. Delivery evidence is reported under Replication.`};let n=t.stats;if(!n||typeof n.started!=`boolean`||!n.destination)return{state:`unknown`,label:`unavailable`,detail:`The node did not report relay lifecycle and destination; update its backend.`};let r=n.buffer.totalDropped>0||!!n.lastError;return{state:n.started&&(n.destination===`aggregator`||n.destination===`transport`&&n.transportConnected)&&!r?`healthy`:`degraded`,label:n.started?n.destination===`aggregator`?`local database`:n.destination===`transport`?n.transportConnected?`transport up`:`transport down`:`no destination`:`stopped`,detail:`${n.buffer.size} buffered · ${n.totalSent} sent · ${n.totalFailed} failed${n.lastError?` · ${n.lastError}`:``}`,dropped:n.buffer.totalDropped}}function Dt({receipt:e}){let t=e.targets.filter(e=>e.state===`succeeded`||e.state===`current`).length,n=e.state===`planning`,r=n?e.targets.filter(e=>e.state!==`pending`).length:t;return(0,J.jsxs)(G,{spacing:1.25,sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(D,{size:`small`,color:At[e.state],label:e.state}),(0,J.jsxs)(H,{variant:`body2`,"aria-live":`polite`,children:[r,`/`,e.targets.length,` `,n?`nodes checked`:`on target`]}),(0,J.jsxs)(H,{variant:`caption`,color:`text.secondary`,children:[`Updated `,_t(e.updatedAt)]})]}),(0,J.jsxs)(H,{variant:`caption`,color:`text.secondary`,component:`div`,children:[`Commit `,(0,J.jsx)(`code`,{children:e.commit}),(0,J.jsx)(`br`,{}),`Plan `,(0,J.jsx)(`code`,{children:e.id})]}),(n||e.state===`running`)&&(0,J.jsx)(Oe,{"aria-label":n?`Node preflight checks completed`:`Nodes confirmed on the target build`,variant:`determinate`,value:r/Math.max(1,e.targets.length)*100}),e.reason&&(0,J.jsx)(k,{severity:e.state===`failed`?`error`:`warning`,children:e.reason}),e.state===`uncertain`&&(0,J.jsx)(H,{variant:`body2`,children:`Reconciliation reads the recorded node outcome without replaying activation. Inspect its owner and rollback target before planning another update.`}),(0,J.jsx)(G,{component:`ol`,spacing:1,sx:{m:0,pl:0,listStyle:`none`},children:e.targets.map((e,t)=>(0,J.jsxs)(w,{component:`li`,sx:{minWidth:0,borderTop:1,borderColor:`divider`,pt:1},children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,J.jsxs)(H,{variant:`body2`,sx:{fontWeight:600},children:[t+1,`. `,e.name]}),(0,J.jsx)(D,{size:`small`,variant:`outlined`,color:At[e.state],label:e.state})]}),e.reason&&(0,J.jsx)(H,{variant:`body2`,children:e.reason}),(0,J.jsxs)(w,{component:`details`,open:[`blocked`,`failed`,`rolled-back`,`uncertain`].includes(e.state),sx:{typography:`caption`,color:`text.secondary`,"& summary":{cursor:`pointer`}},children:[(0,J.jsx)(`summary`,{children:`Owner and rollback details`}),`Node `,(0,J.jsx)(`code`,{children:e.nodeId}),` · Owner `,(0,J.jsx)(`code`,{children:e.ownerId??`unconfirmed`}),e.ownerPid!==null&&(0,J.jsxs)(J.Fragment,{children:[` · PID `,e.ownerPid]}),(0,J.jsx)(`br`,{}),`Rollback target `,(0,J.jsx)(`code`,{children:e.previous??`unconfirmed`}),(0,J.jsx)(`br`,{}),`Candidate `,(0,J.jsx)(`code`,{children:e.candidate??`unconfirmed`})]})]},e.nodeId))})]})}function Ot({nodes:e,close:t,review:n}){let[r,i]=(0,q.useState)(``),[o,s]=(0,q.useState)([]),[l,u]=(0,q.useState)(!1),[d,f]=(0,q.useState)(!1),{can:p}=He(),m=p(`OmnitronDaemon.status`),h=p(`OmnitronNodes.listKernelBuilds`),_=We(()=>c.listKernelBuilds(),{enabled:h,paused:!0,intervalMs:3e4,resourceKey:String(h)}),y=(0,q.useMemo)(()=>{let e=new Map;for(let t of h?_.data??[]:[]){let n=e.get(t.commit)??[];n.push(`${t.platform}/${t.arch} · Node ${t.nodeVersion}`),e.set(t.commit,n)}return e},[h,_.data]),b=We(async()=>{let{build:e}=await a.status();return e?.dirty===!1&&/^[a-f0-9]{40}$/.test(e.commit)?e.commit:null},{enabled:m,paused:!0,intervalMs:3e4,resourceKey:String(m)}),[x,S]=(0,q.useState)(!1),[C,T]=(0,q.useState)(null),D=(0,q.useRef)(!1),O=(0,q.useRef)(null);(0,q.useEffect)(()=>(D.current=!0,()=>{D.current=!1}),[]);let A=r.trim().toLowerCase(),ee=/^[a-f0-9]{40}$/.test(A)&&(d||o.length>0),ne=async()=>{if(ee&&!x){S(!0),T(null);try{let e={commit:A,...o.length?{nodeIds:o.map(e=>e.id)}:{},...l&&{stage:!0}},t=JSON.stringify(e);O.current&&O.current.inputs===t||(O.current={inputs:t,id:crypto.randomUUID()});let r=await c.planKernelRollout({...e,requestId:O.current.id});if(r.id!==O.current.id)throw Error(`Controller returned a different request ID.`);D.current&&n(r.id)}catch(e){T(e instanceof Error?e.message:String(e))}finally{S(!1)}}};return(0,J.jsxs)(ae,{open:!0,fullWidth:!0,maxWidth:`sm`,onClose:()=>{x||t()},"aria-labelledby":`kernel-plan-title`,children:[(0,J.jsx)(le,{id:`kernel-plan-title`,children:`Plan backend update`}),(0,J.jsxs)(w,{component:`form`,onSubmit:e=>{e.preventDefault(),ne()},children:[(0,J.jsx)(te,{children:(0,J.jsxs)(G,{spacing:2,children:[(0,J.jsx)(E,{freeSolo:!0,disabled:x,options:[...y.keys()],loading:h&&_.loading,inputValue:r,onInputChange:(e,t)=>i(t),renderOption:({key:e,...t},n)=>(0,J.jsx)(w,{component:`li`,...t,children:(0,J.jsxs)(w,{sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,J.jsx)(`code`,{children:n}),(0,J.jsx)(H,{component:`div`,variant:`caption`,children:y.get(n)?.join(`, `)})]})},e),renderInput:e=>(0,J.jsx)(B,{...e,label:`Target commit`,autoFocus:!0,required:!0,fullWidth:!0,helperText:_.error?`Catalog unavailable. Enter the commit manually. ${_.error}`:`Choose a catalog build or enter the full 40-character Git commit.`})}),m&&b.data&&(0,J.jsxs)(v,{size:`small`,sx:{alignSelf:`flex-start`},disabled:x,onClick:()=>i(b.data),children:[`Use controller commit `,b.data.slice(0,12)]}),(0,J.jsx)(E,{multiple:!0,disabled:x||d,options:e.filter(e=>!e.isLocal),value:o,getOptionLabel:e=>e.name+` · `+e.host,getOptionKey:e=>e.id,isOptionEqualToValue:(e,t)=>e.id===t.id,onChange:(e,t)=>s(t),renderInput:e=>(0,J.jsx)(B,{...e,label:`Target nodes`,helperText:`Select nodes in update order, or explicitly choose all registered remote nodes.`})}),(0,J.jsx)(ke,{control:(0,J.jsx)(g,{checked:d,disabled:x,onChange:e=>{f(e.target.checked),e.target.checked&&s([])}}),label:`All registered remote nodes`}),(0,J.jsx)(ke,{control:(0,J.jsx)(g,{checked:l,disabled:x,onChange:e=>u(e.target.checked)}),label:`Stage from controller catalog`}),l&&(0,J.jsx)(H,{variant:`caption`,color:`text.secondary`,children:`Preparation transfers missing runtimes from the controller and installs them for native checks. Applying the reviewed plan activates them.`}),C&&(0,J.jsx)(k,{severity:`warning`,action:O.current&&(0,J.jsx)(v,{size:`small`,color:`inherit`,onClick:()=>n(O.current.id),children:`Check last request`}),children:C})]})}),(0,J.jsxs)(ce,{children:[(0,J.jsx)(v,{onClick:t,disabled:x,children:`Cancel`}),(0,J.jsx)(v,{type:`submit`,variant:`contained`,loading:x,disabled:!ee,children:`Prepare plan`})]})]})]})}function kt({nodes:e,canPlan:t,canApply:n,canReconcile:r}){let[a,o]=i(),s=a.get(`rollout`),[l,u]=(0,q.useState)(!1),[d,f]=(0,q.useState)(!1),[p,m]=(0,q.useState)(null),[h,g]=(0,q.useState)(null),[y,b]=(0,q.useReducer)(e=>e+1,0),[x,S]=(0,q.useState)(!1),{data:C,error:T,loading:E}=We(async()=>{let e=await c.getKernelRollout(s?{id:s}:{});if(s&&e&&e.id!==s)throw Error(`Controller returned another rollout receipt.`);return e},{intervalMs:x?3e3:2e4,resourceKey:JSON.stringify([s,y])}),D=h?.id===s&&([`succeeded`,`failed`,`blocked`].includes(h.state)||!C||C.id===h.id&&C.state===`planned`&&h.state===`running`)?h:C;(0,q.useEffect)(()=>{S(D?.state===`running`||D?.state===`planning`)},[D?.state]);let O=e=>{m(null),g(null),o(t=>{let n=new URLSearchParams(t);return e?n.set(`rollout`,e):n.delete(`rollout`),n})},A=async e=>{if(!(d||T||!D||D.id!==s)&&!(e===`apply`?!n||D.state!==`planned`:!r||D.state!==`uncertain`)){f(!0),m(null);try{let t=e===`apply`?await c.startKernelRollout({id:D.id}):await c.reconcileKernelRollout({id:D.id});if(t.id!==D.id)throw Error(`Controller returned another rollout receipt.`);g(t)}catch(e){m(`Request was not confirmed. Check the controller receipt. `+(e instanceof Error?e.message:String(e)))}finally{f(!1),b()}}};return(0,J.jsxs)(M,{variant:`outlined`,component:`section`,"aria-label":`Managed backend updates`,sx:{minWidth:0},children:[(0,J.jsx)(_,{children:(0,J.jsxs)(G,{spacing:1.5,children:[(0,J.jsxs)(G,{direction:`row`,useFlexGap:!0,spacing:1,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(H,{variant:`subtitle2`,sx:{flex:`1 1 auto`},children:`Managed backend updates`}),s&&(0,J.jsx)(v,{size:`small`,disabled:d,onClick:()=>O(null),children:`Latest rollout`}),t&&(0,J.jsx)(v,{size:`small`,variant:`outlined`,disabled:d||D?.state===`running`||D?.state===`planning`,onClick:()=>u(!0),children:`Plan update…`})]}),E&&(0,J.jsx)(Oe,{"aria-label":`Reading rollout receipt`}),T&&(0,J.jsxs)(k,{severity:`warning`,action:(0,J.jsx)(v,{color:`inherit`,size:`small`,onClick:b,children:`Retry`}),children:[`Could not read the rollout receipt. `,T]}),p&&(0,J.jsx)(k,{severity:`warning`,children:p}),D?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Dt,{receipt:D}),n&&D.state===`planned`&&(0,J.jsx)(w,{children:D.id===s?(0,J.jsx)(v,{color:`primary`,variant:`contained`,loading:d,disabled:!!T||E,onClick:()=>void A(`apply`),children:`Apply reviewed plan`}):(0,J.jsx)(v,{variant:`outlined`,disabled:!!T,onClick:()=>O(D.id),children:`Review plan`})}),r&&D.state===`uncertain`&&(0,J.jsx)(w,{children:D.id===s?(0,J.jsx)(v,{variant:`outlined`,loading:d,disabled:!!T||E,onClick:()=>void A(`reconcile`),children:`Reconcile node status`}):(0,J.jsx)(v,{variant:`outlined`,disabled:!!T,onClick:()=>O(D.id),children:`Inspect uncertain rollout`})})]}):!E&&!T&&(0,J.jsx)(H,{variant:`body2`,color:`text.secondary`,children:s?`The controller has no receipt for this rollout.`:`No managed backend update has been planned.`})]})}),t&&l&&(0,J.jsx)(Ot,{nodes:e,close:()=>u(!1),review:e=>{O(e),u(!1),b()}})]})}var q,J,At;function jt(){return(jt=e((()=>{q=t(),l(),P(),T(),y(),b(),x(),S(),fe(),C(),re(),se(),ne(),A(),Ae(),Te(),Ie(),be(),pe(),Ke(),o(),Ue(),vt(),J=n(),At={pending:`default`,planning:`info`,planned:`default`,ready:`info`,running:`info`,succeeded:`success`,current:`success`,blocked:`warning`,uncertain:`warning`,failed:`error`,"rolled-back":`warning`}})))()}function Mt(e){return s.invoke(`daemon`,`OmnitronNodes`,`planUpgrade`,[{...e,build:!0}],{timeout:18e4})}function Nt(e){return e!==`done`&&e!==`failed`&&e!==`refused`}function Pt({nodes:e}){let{can:t,snapshot:n}=He(),[r,i]=(0,Y.useState)(!1),a=t(`OmnitronNodes.planKernelRollout`),o=t(`OmnitronNodes.startKernelRollout`),s=t(`OmnitronNodes.reconcileKernelRollout`);return(0,X.jsxs)(G,{spacing:1,children:[t(`OmnitronNodes.getKernelRollout`)&&(0,X.jsx)(kt,{nodes:e,canPlan:a,canApply:o,canReconcile:s},JSON.stringify([n?.userId,a,o,s])),t(`OmnitronNodes.getUpgradeProgress`)&&(0,X.jsxs)(w,{component:`details`,onToggle:e=>i(e.currentTarget.open),children:[(0,X.jsx)(H,{component:`summary`,variant:`caption`,color:`text.secondary`,sx:{cursor:`pointer`,py:1},children:`Advanced · workspace source bundle upgrades`}),r&&(0,X.jsx)(Ft,{nodes:e},n?.userId)]})]})}function Ft({nodes:e}){let{can:t}=He(),n=t(`OmnitronNodes.planUpgrade`)&&t(`OmnitronNodes.upgradeNodes`),[r,i]=(0,Y.useState)(!1),[a,o]=(0,Y.useState)(null),[s,l]=(0,Y.useState)(!1),{data:u,refresh:d,error:f,loading:p}=We(async()=>{let e=await c.getUpgradeProgress();return l(e.some(e=>Nt(e.phase))),e},{intervalMs:s?3e3:2e4}),m=u??[],h=m.filter(e=>Nt(e.phase)),g=(0,Y.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]),y=(0,Y.useCallback)(async e=>{try{let t=await c.cancelUpgrade({nodeId:e});o(t.stopped?null:t.because),await d()}catch(e){o(e.message)}},[d]);return(0,X.jsxs)(M,{variant:`outlined`,children:[(0,X.jsxs)(_,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,flexWrap:`wrap`,mb:h.length>0||m.length>0?1.5:0},children:[(0,X.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Workspace source bundle upgrade`}),h.length>0&&(0,X.jsx)(D,{size:`small`,color:`info`,label:`${h.length} of ${m.length} in flight`,sx:{height:20,fontSize:11}}),(0,X.jsx)(w,{sx:{flex:1}}),n&&(0,X.jsx)(v,{size:`small`,variant:`contained`,startIcon:(0,X.jsx)(tt,{}),onClick:()=>i(!0),children:`Upgrade nodes…`})]}),a&&(0,X.jsx)(k,{severity:`warning`,variant:`outlined`,sx:{mb:1.5},onClose:()=>o(null),children:a}),p&&(0,X.jsx)(Oe,{"aria-label":`Reading source bundle upgrade progress`}),f&&(0,X.jsxs)(k,{severity:`warning`,children:[`Could not refresh source bundle upgrades. `,f]}),m.length===0&&!p&&!f?(0,X.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`No upgrade has been run from this master since it started.`}):(0,X.jsx)(G,{spacing:1,children:m.map(e=>{let t=g.get(e.nodeId);return(0,X.jsxs)(w,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,X.jsx)(H,{variant:`body2`,sx:{fontWeight:600,minWidth:140},children:t?.name??e.nodeId}),(0,X.jsx)(D,{size:`small`,color:Lt[e.phase],label:e.phase,sx:{height:20,fontSize:11}}),e.phase===`queued`&&e.position!=null&&(0,X.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[`#`,e.position,` in the queue`]}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:e.message}),e.version&&(0,X.jsx)(H,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:e.version}),(0,X.jsx)(w,{sx:{flex:1}}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`},children:_t(e.at)}),Nt(e.phase)&&(0,X.jsx)(K,{permission:`OmnitronNodes.cancelUpgrade`,children:(0,X.jsx)(z,{title:e.phase===`queued`?`Drop this node from the queue`:`A node already installing is not interrupted — the daemon will say so`,arrow:!0,children:(0,X.jsx)(`span`,{children:(0,X.jsx)(v,{size:`small`,color:`warning`,startIcon:(0,X.jsx)(it,{}),onClick:()=>void y(e.nodeId),children:`Cancel`})})})})]}),Nt(e.phase)&&e.phase!==`queued`&&(0,X.jsx)(Oe,{variant:`determinate`,value:e.percent,sx:{mt:.5,height:4,borderRadius:2}})]},e.nodeId)})})]}),n&&(0,X.jsx)(It,{open:r,onClose:()=>i(!1),nodes:e,onStarted:()=>{l(!0),d()}})]})}function It({open:e,onClose:t,nodes:n,onStarted:r}){let[i,a]=(0,Y.useState)(new Set),[o,s]=(0,Y.useState)(null),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(!1),[p,m]=(0,Y.useState)(1),[h,_]=(0,Y.useState)(null),[y,b]=(0,Y.useState)(null),x=(0,Y.useMemo)(()=>n.filter(e=>!e.isLocal),[n]),S=(0,Y.useMemo)(()=>new Map(n.map(e=>[e.id,e])),[n]),C=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),s(null),n}),T=i.size>0&&i.size===x.length,E=(0,Y.useCallback)(async e=>{u(!0),_(null);let t=i.size>0?{nodeIds:[...i]}:{};try{s(e?await Mt(t):await c.planUpgrade(t))}catch(e){_(e.message),s(null)}finally{u(!1)}},[i]),O=o?.rows.filter(e=>e.action===`upgrade`)??[];return(0,X.jsxs)(ae,{open:e,onClose:d?void 0:t,maxWidth:`md`,fullWidth:!0,children:[(0,X.jsx)(le,{children:`Upgrade nodes`}),(0,X.jsx)(te,{children:(0,X.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,X.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`The master builds one bundle and installs it on each node in turn. The rollout runs in the daemon — closing this window does not stop it.`}),(0,X.jsxs)(w,{children:[(0,X.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:.5},children:[(0,X.jsx)(g,{size:`small`,checked:T,indeterminate:i.size>0&&!T,onChange:()=>{s(null),a(T?new Set:new Set(x.map(e=>e.id)))}}),(0,X.jsx)(H,{variant:`body2`,children:i.size===0?`every node`:`${i.size} of ${x.length} selected`})]}),(0,X.jsx)(w,{sx:{maxHeight:220,overflowY:`auto`},children:(0,X.jsx)(V,{size:`small`,children:(0,X.jsx)(me,{children:x.map(e=>(0,X.jsxs)(ve,{hover:!0,onClick:()=>C(e.id),sx:{cursor:`pointer`},children:[(0,X.jsx)(R,{padding:`checkbox`,children:(0,X.jsx)(g,{size:`small`,checked:i.has(e.id)})}),(0,X.jsx)(R,{sx:{fontWeight:600},children:e.name}),(0,X.jsxs)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:[e.host,`:`,e.sshPort]}),(0,X.jsx)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:e.status?.omnitronVersion??`—`}),(0,X.jsx)(R,{children:(0,X.jsx)(D,{size:`small`,label:e.status?.pingReachable?`reachable`:`not reachable`,color:e.status?.pingReachable?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:10}})})]},e.id))})})})]}),(0,X.jsxs)(G,{direction:`row`,spacing:1.5,sx:{alignItems:`center`},children:[(0,X.jsx)(v,{size:`small`,variant:`outlined`,onClick:()=>void E(!1),disabled:l||d,children:l?`Planning…`:`Plan`}),(0,X.jsx)(z,{title:`Builds the bundle so each node can be compared to it. It runs on the master's own thread and stops it answering anything else for a minute or two.`,arrow:!0,children:(0,X.jsx)(`span`,{children:(0,X.jsx)(v,{size:`small`,onClick:()=>void E(!0),disabled:l||d,children:`Compare versions`})})}),l&&(0,X.jsx)(ue,{size:16}),(0,X.jsx)(B,{select:!0,label:`At once`,size:`small`,value:p,onChange:e=>m(Number(e.target.value)),sx:{width:120},disabled:d,children:[1,2,3,4,6,8].map(e=>(0,X.jsx)(W,{value:e,children:e},e))}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:l?`The master is building the bundle so the plan can name a target version — up to a few minutes.`:`An upgrade restarts the node's daemon, so one at a time is the safe default.`})]}),o&&(0,X.jsxs)(w,{children:[o.refusal&&(0,X.jsx)(k,{severity:`error`,sx:{mb:1},children:(0,X.jsx)(H,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:o.refusal})}),o.compared?(0,X.jsxs)(H,{variant:`body2`,sx:{mb:1},children:[`Target `,(0,X.jsx)(`strong`,{style:{fontFamily:`monospace`},children:o.targetVersion}),` —`,` `,O.length,` would be upgraded, `,o.rows.filter(e=>e.action===`skip`).length,` already there,`,` `,o.rows.filter(e=>e.action===`refuse`).length,` refused.`]}):(0,X.jsxs)(w,{sx:{mb:1},children:[(0,X.jsxs)(H,{variant:`body2`,children:[O.length,` would be attempted, `,o.rows.filter(e=>e.action===`refuse`).length,` refused —`,` `,(0,X.jsx)(`strong`,{children:`nothing was compared`}),`.`]}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:`No bundle has been built, so no row can say «already on the target version». Twelve rows reading «upgrade» here mean twelve nodes that would be touched, not twelve that are out of date.`})]}),(0,X.jsxs)(V,{size:`small`,children:[(0,X.jsx)(Se,{children:(0,X.jsxs)(ve,{children:[(0,X.jsx)(R,{children:`Node`}),(0,X.jsx)(R,{children:o.compared?`Now → target`:`Now`}),(0,X.jsx)(R,{children:`Action`}),(0,X.jsx)(R,{children:`Why`})]})}),(0,X.jsx)(me,{children:o.rows.map(e=>(0,X.jsxs)(ve,{children:[(0,X.jsxs)(R,{children:[(0,X.jsx)(H,{variant:`body2`,sx:{fontWeight:600},children:e.label}),(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.host??`no address`})]}),(0,X.jsxs)(R,{sx:{fontFamily:`monospace`,fontSize:12},children:[e.currentVersion??`—`,o.compared&&e.targetVersion&&e.targetVersion!==e.currentVersion&&(0,X.jsxs)(H,{component:`span`,variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:[` → `,e.targetVersion]})]}),(0,X.jsx)(R,{children:(0,X.jsx)(D,{size:`small`,label:e.action,color:e.action===`upgrade`?`info`:e.action===`skip`?`success`:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})}),(0,X.jsx)(R,{children:(0,X.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:e.because})})]},e.nodeId))})]})]}),y&&(0,X.jsxs)(w,{children:[(0,X.jsx)(F,{sx:{mb:1.5}}),(0,X.jsxs)(k,{severity:y.refused.length>0?`warning`:`success`,children:[`Queued `,y.accepted.length,` node`,y.accepted.length===1?``:`s`,y.refused.length>0?`; ${y.refused.length} not taken`:``,`.`]}),y.refused.map(e=>(0,X.jsxs)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.secondary`},children:[(0,X.jsx)(`strong`,{children:S.get(e.nodeId)?.name??e.nodeId}),` — `,e.because]},e.nodeId))]}),h&&(0,X.jsxs)(k,{severity:`error`,children:[(0,X.jsx)(H,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:h}),/^(HTTP 50\d|Request timeout)/.test(h)&&(0,X.jsxs)(H,{variant:`caption`,sx:{display:`block`,mt:.5},children:[`The plan builds the bundle first — that is how it can say «already on the target version» instead of listing every node as an upgrade — and the request outlived the gateway's 120-second deadline. The master is still building; the CLI (`,(0,X.jsx)(`code`,{children:`omnitron fleet upgrade --dry-run`}),`) has no such deadline.`]})]})]})}),(0,X.jsxs)(ce,{children:[(0,X.jsx)(v,{onClick:t,size:`small`,disabled:d,children:y?`Close`:`Cancel`}),(0,X.jsx)(v,{variant:`contained`,size:`small`,startIcon:d?(0,X.jsx)(ue,{size:14,color:`inherit`}):(0,X.jsx)(tt,{}),disabled:d||!o||O.length===0||!!o.refusal||y!==null,onClick:async()=>{f(!0),_(null);try{let e=await c.upgradeNodes({nodeIds:O.map(e=>e.nodeId),concurrency:p});b(e),r()}catch(e){_(e.message)}finally{f(!1)}},children:d?`Queueing…`:`Start rollout (${O.length})`})]})]})}var Y,X,Lt;function Rt(){return(Rt=e((()=>{Ue(),jt(),Y=t(),P(),y(),b(),x(),S(),fe(),C(),ee(),re(),se(),ne(),A(),j(),Te(),Ne(),Ie(),L(),ge(),xe(),_e(),ye(),be(),he(),pe(),Ze(),Ke(),o(),vt(),X=n(),Lt={queued:`default`,building:`info`,transferring:`info`,activating:`warning`,done:`success`,failed:`error`,refused:`error`}})))()}function zt(e){if(!e||typeof e!=`object`)return!1;let t=e;return!!(t.event&&typeof t.event.id==`string`&&typeof t.event.title==`string`&&Array.isArray(t.event.evidence)&&t.event.evidence.every(e=>typeof e==`string`)&&(t.event.remedy===void 0||typeof t.event.remedy==`string`)&&typeof t.occurrences==`number`)}function Bt({active:e,nodeName:t}){let n=Array.isArray(e)?e.filter(zt).slice(0,100):[];return n.length?(0,Z.jsxs)(O,{disableGutters:!0,elevation:0,sx:{minWidth:0,mt:1,"&:before":{display:`none`}},children:[(0,Z.jsx)(N,{"aria-label":`Runtime diagnostic evidence`,children:(0,Z.jsxs)(H,{variant:`body2`,children:[`Evidence and recovery · `,n.length]})}),(0,Z.jsx)(oe,{children:(0,Z.jsxs)(G,{spacing:2,sx:{minWidth:0,overflowWrap:`anywhere`},children:[n.map(({event:e,occurrences:t})=>(0,Z.jsxs)(G,{spacing:.5,children:[(0,Z.jsx)(H,{variant:`body2`,sx:{fontWeight:600},children:e.title}),(0,Z.jsxs)(H,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:[e.id,` · `,t,` occurrence(s)`]}),e.evidence.map((e,t)=>(0,Z.jsx)(H,{variant:`body2`,children:e},t)),e.remedy&&(0,Z.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:e.remedy})]},e.id)),(0,Z.jsx)(v,{component:r,to:ht(`omnitron`,t),size:`small`,sx:{alignSelf:`flex-start`},children:`Open daemon logs`})]})})]}):null}var Z;function Vt(){return(Vt=e((()=>{l(),de(),I(),ie(),b(),Ie(),pe(),gt(),Z=n()})))()}function Ht(e){if(e.omnitronConnected===!0)return`running`;let t=e.omnitronError??``;return t.startsWith(`omnitron: command not found`)?`not-installed`:e.sshConnected===!1?`unreachable`:e.omnitronConnected===!1&&t===`omnitron status reported no running daemon`?`not-running`:`unread`}function Ut(){return(Ut=e((()=>{})))()}function Wt(e,t){return e==null?t?`failed`:`unmeasured`:e?`ok`:`failed`}function Gt(e){let t=Ht({sshConnected:e.sshConnected??null,omnitronConnected:e.omnitronConnected??null,omnitronError:e.omnitronError??null});switch(t){case`running`:return`ok`;case`not-running`:case`not-installed`:return`failed`;case`unreachable`:return`unmeasured`;case`unread`:return e.omnitronConnected==null&&!e.omnitronError?`unmeasured`:`unknown`;default:return t}}function Kt(e){return e.pingError??e.sshError??e.omnitronError??null}function qt(e){return e.participant===`controller`||!e.participant&&(`leaderId`in e||typeof e.state==`string`)}function Jt(e){let t=e.cluster;if(!e.reachable||!t)return e.error||`Cluster participation unavailable`;if(t.participant===`standalone`)return`Standalone`;if(t.participant!==`worker`&&!qt(t))return`Cluster participation unreported`;let n=[t.participant===`worker`?`Worker`:`Controller`];return typeof t.clusterId==`string`&&n.push(t.clusterId),typeof t.state==`string`&&n.push(t.state),(typeof t.term==`string`||typeof t.term==`number`)&&n.push(`epoch ${t.term}`),t.fencedOperations?.length&&n.push(t.fencedOperations.join(`, `)),n.join(` · `)}function Yt(e){return e.flatMap(e=>{let t=e.cluster;return!e.reachable||!t||t.coordination!==`postgres-lease`||![`unavailable`,`expired`,`stopped`].includes(String(t.authority))?[]:[{nodeId:e.nodeId,reason:typeof t.reason==`string`&&t.reason?t.reason:`Cluster authority is ${String(t.authority)}`}]})}function Xt(e){let t=new Map;for(let n of e){if(!n.reachable||!n.cluster||!qt(n.cluster))continue;let e=typeof n.cluster.clusterId==`string`?n.cluster.clusterId:`legacy`;t.set(e,[...t.get(e)??[],n])}for(let[e,n]of t){let t=Zt(n,e);if(t.kind!==`none`)return t}return{kind:`none`}}function Zt(e,t){if(e.length<2)return{kind:`none`};let n=new Map,r=new Set;for(let t of e){let e=typeof t.cluster.leaderId==`string`?t.cluster.leaderId:`(none)`;n.has(e)||n.set(e,[]),n.get(e).push(t.nodeId);let i=t.cluster.term;typeof i==`string`&&/^[1-9][0-9]{0,18}$/.test(i)?r.add(i):typeof i==`number`&&Number.isSafeInteger(i)&&i>=0&&r.add(String(i))}return n.size>1?{kind:`leaders`,clusterId:t,answered:e.length,groups:[...n]}:r.size>1?{kind:`terms`,clusterId:t,answered:e.length,terms:[...r].sort((e,t)=>BigInt(e)<BigInt(t)?-1:1)}:{kind:`none`}}function Qt(){return(Qt=e((()=>{Ut()})))()}function $t(e,t){let n=e*864e5;return Math.max(1,Math.min(400,Math.ceil(n/Math.max(1,t))))}function en(e){if(!e)return`never`;let t=Date.now()-Date.parse(e);if(!Number.isFinite(t))return`never`;if(t<6e4)return`just now`;let n=Math.floor(t/6e4);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function tn(e){if(!e)return!0;let t=Date.parse(e);return!Number.isFinite(t)||Date.now()-t>Nn}function nn({state:e,label:t,tooltip:n}){return(0,$.jsx)(z,{title:n??{online:`Connected`,offline:`Offline`,unknown:`Unknown`,unchecked:`Not checked`,checking:`Checking...`,"not-installed":`Not installed`}[e],arrow:!0,children:(0,$.jsxs)(G,{direction:`row`,spacing:.5,sx:{alignItems:`center`},children:[(0,$.jsx)(w,{sx:{width:8,height:8,borderRadius:`50%`,bgcolor:{online:`success.main`,offline:`error.main`,unknown:`warning.light`,unchecked:`text.disabled`,checking:`warning.main`,"not-installed":`text.disabled`}[e],flexShrink:0,...e===`checking`&&{animation:`${Fn} 1s ease-in-out infinite`},...e===`not-installed`&&{border:`1px dashed`,borderColor:`text.disabled`,bgcolor:`transparent`}}}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`},children:t})]})})}function rn(e,t,n){if(e<0)return n===`absent`?f(t.palette.info.main,.35):n===`unreachable`?f(t.palette.warning.main,.3):n===`unread`?f(t.palette.text.disabled,.25):t.palette.action.disabledBackground;let r=an(t.palette.success.main),i=an(t.palette.error.main),a=i[0]+(r[0]-i[0])*e,o=i[1]+(r[1]-i[1])*e,s=i[2]+(r[2]-i[2])*e;return`hsl(${Math.round(a)}, ${Math.round(o)}%, ${Math.round(s)}%)`}function an(e){let t=e.replace(`#`,``),n=parseInt(t.slice(0,2),16)/255,r=parseInt(t.slice(2,4),16)/255,i=parseInt(t.slice(4,6),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)return[0,0,s*100];let c=a-o,l=s>.5?c/(2-a-o):c/(a+o),u;return u=a===n?(r-i)/c+(r<i?6:0):a===r?(i-n)/c+2:(n-r)/c+4,u*=60,[u,l*100,s*100]}function on({data:e,metric:t,label:n,segWidth:r=6,gap:i=4,height:a=10,lastCheckAt:o}){let s=m(),c=(0,Q.useRef)(null),[l,u]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let e=c.current;if(!e)return;let t=()=>{let t=e.clientWidth;u(Math.max(1,Math.floor((t+i)/(r+i))))};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[r,i]);let d=[];if(l>0){let n=e.slice(-l);for(let e=0;e<l-n.length;e++)d.push({val:-1,time:``});for(let e of n){let n=e[t],r=e.t?new Date(e.t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``;d.push({val:n,time:r,...e.t?{iso:e.t}:{},checks:e.checks,unmeasured:e.omnitronUnmeasured})}}let f=d.filter(e=>e.val>=0),p=f.length>0?Math.round(f.reduce((e,t)=>e+t.val,0)/f.length*100):-1,h=p<0&&d.some(e=>e.unmeasured===`absent`),g=p>=0&&o&&Date.now()-new Date(o).getTime()>3e5?Date.now()-new Date(o).getTime():null,_=o?{time:new Date(o).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}:null,v=g==null?null:g>=36e5?`${Math.round(g/36e5)}h`:`${Math.max(1,Math.round(g/6e4))}m`;return(0,$.jsxs)(G,{spacing:.25,children:[(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:9,textTransform:`uppercase`,letterSpacing:.5},children:n}),v?(0,$.jsx)(z,{title:`Nothing has been recorded for ${v} — the last check was at ${_?.time}. The strip shows what was measured before that, not the node now.`,arrow:!0,children:(0,$.jsxs)(H,{variant:`caption`,sx:{fontSize:9,color:`warning.main`},children:[`no checks for `,v]})}):p>=0?(0,$.jsxs)(H,{variant:`caption`,sx:{fontSize:9,color:p>=95?`success.main`:p>=50?`warning.main`:`error.main`},children:[p,`%`]}):h?(0,$.jsx)(H,{variant:`caption`,sx:{fontSize:9,color:`info.main`},children:`not installed`}):null]}),(0,$.jsx)(G,{ref:c,direction:`row`,sx:{height:a,gap:`${i}px`},children:d.map((e,t)=>{let n=rn(e.val,s,e.unmeasured),i=e.checks==null?``:` (${e.checks} checks)`,a=e.val<0?e.unmeasured===`absent`?`${e.time} — omnitron not installed${i}`:e.unmeasured===`unreachable`?`${e.time} — could not reach the node${i}`:e.unmeasured===`unread`?`${e.time} — not measured: the node was reached and nothing could be read${i}`:e.time?`${e.time} — no data`:`No data`:`${e.time} — ${Math.round(e.val*100)}% up${i}`;return(0,$.jsx)(z,{title:a,arrow:!0,children:(0,$.jsx)(w,{sx:{width:r,minWidth:r,height:`100%`,bgcolor:n,borderRadius:`2px`,transition:`opacity 0.15s`,"&:hover":{opacity:.6}}})},t)})})]})}function sn(e){return/\+local\.[0-9a-zA-Z]+\.(\d{12})$/.exec(e??``)?.[1]??null}function cn(e,t){if(!e||!t)return`unknown`;if(e===t)return`current`;let n=sn(e),r=sn(t);return n&&r?n<r?`behind`:`current`:`differs`}function ln(e){let t,n=``;for(let r of e){if(!r)continue;let e=sn(r);e?e>n&&(n=e,t=r):t??=r}return t}function un(e,t){if(!e)return{state:`unchecked`,tooltip:`Not checked`};if(t)return e.omnitronConnected?{state:`online`,tooltip:`v${e.omnitronVersion??`?`} PID ${e.omnitronPid??`?`}`}:{state:`offline`,tooltip:e.omnitronError??`Not running`};let n=Ht(e);switch(n){case`running`:return{state:`online`,tooltip:`v${e.omnitronVersion??`?`} (${e.omnitronRole??`?`})`};case`not-running`:return{state:`offline`,tooltip:e.omnitronError??`Not running`};case`not-installed`:return{state:`not-installed`,tooltip:`Not installed on this node`};case`unreachable`:return{state:`unchecked`,tooltip:e.sshError?`SSH refused: ${e.sshError}`:`SSH refused`};case`unread`:return e.omnitronError?{state:`unknown`,tooltip:`Unknown — ${e.omnitronError}`}:{state:`unchecked`,tooltip:`Not checked yet`};default:return{state:`unchecked`,tooltip:String(n)}}}function dn({label:e,verdict:t,latencyMs:n,error:r,detail:i}){return(0,$.jsxs)(w,{sx:{py:1},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{fontWeight:600,minWidth:96},children:e}),(0,$.jsx)(D,{size:`small`,label:Vn[t],color:Bn[t],variant:Hn(t)?`outlined`:`filled`,sx:{height:20,fontSize:11}}),n!=null&&(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[n,`ms`]}),i&&(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`},children:i})]}),r&&(0,$.jsx)(H,{variant:`caption`,component:`pre`,sx:{mt:.5,ml:`104px`,p:1,borderRadius:1,bgcolor:e=>f(e.palette.error.main,.08),color:`error.main`,fontFamily:`monospace`,fontSize:11,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:r})]})}function fn({row:e,isLocal:t}){let n=Wt(e.pingReachable,e.pingError),r=Wt(e.sshConnected,e.sshError),i=Gt(e),a=Kt(e),o=t?[[`OMNITRON`,i]]:[[`PING`,n],[`SSH`,r],[`OMNITRON`,i]];return(0,$.jsxs)(w,{sx:{py:.75,borderBottom:e=>`1px solid ${e.palette.divider}`},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{fontFamily:`monospace`,minWidth:148,color:`text.secondary`},children:new Date(e.checkedAt).toLocaleString()}),o.map(([e,t])=>(0,$.jsx)(D,{size:`small`,label:e,color:Bn[t],variant:Hn(t)?`outlined`:`filled`,sx:{height:18,fontSize:10}},e)),(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.disabled`,ml:`auto`},children:[e.checkDurationMs,`ms`]})]}),a&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.25,ml:`156px`,color:`error.main`,fontFamily:`monospace`,fontSize:11,wordBreak:`break-word`},children:a})]})}function pn({data:e,health:t}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable||!e.answer)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`not asked`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`no reason given`})]});let n=e.answer;if(n.apps.length===0)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`The node answered and is running no applications.`});let i=e=>e===`online`?`success`:e===`starting`?`warning`:e===`stopped`?`default`:`error`;return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,mb:1,color:`text.secondary`},children:[n.apps.length,` app(s) · `,n.totalCpu.toFixed(1),`% CPU ·`,` `,(mt(n)/1024/1024).toFixed(0),` MB`]}),n.apps.map(n=>(0,$.jsxs)(w,{children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.5,alignItems:`baseline`,flexWrap:`wrap`},children:[(0,$.jsx)(D,{size:`small`,label:n.status,color:i(n.status),sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`body2`,sx:{fontFamily:`monospace`},children:n.name}),(0,$.jsx)(v,{component:r,to:ht(n.name,e.nodeId===`local`?void 0:e.nodeId),size:`small`,"aria-label":`View logs for ${n.name}`,children:`Logs`}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:[n.pid?`pid ${n.pid}`:null,n.port?`:${n.port}`:null,n.uptime>0?`up ${En(n.uptime)}`:null,n.restarts>0?`${n.restarts} restarts`:null].filter(Boolean).join(` · `)})]},n.name),(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`Health: `,t?.answer?.apps[n.name]?.status??`not read`,t?.error?` — ${t.error}`:``]}),t?.answer?.apps[n.name]?.checks.map(e=>(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,pl:1,color:e.status===`fail`?`error.main`:e.status===`warn`?`warning.main`:`text.secondary`},children:[e.status,` · `,e.name,e.message?` — ${e.message}`:``]},e.name))]},n.name))]})}function mn({data:e}){let t=e.phase===`done`?`success`:e.phase===`failed`||e.phase===`refused`?`error`:`warning`,n=e.phase!==`done`&&e.phase!==`failed`&&e.phase!==`refused`;return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(D,{size:`small`,label:e.phase,color:t,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`body2`,children:e.message})]}),e.version&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.secondary`,fontFamily:`monospace`},children:e.version}),n&&(0,$.jsx)(Oe,{variant:`determinate`,value:e.percent,sx:{mt:1,height:4,borderRadius:2}}),(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:.5,color:`text.disabled`},children:new Date(e.at).toLocaleString()})]})}function hn({data:e,nodeName:t}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`not asked`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`no reason given`})]});let n=Object.entries(e.indicators??{});if(n.length===0)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`The node answered and registered no indicators.`});let r=e=>e===`healthy`?`success`:e===`degraded`?`warning`:e===`unhealthy`?`error`:`default`;return(0,$.jsxs)(w,{sx:{py:.5},children:[e.status&&(0,$.jsx)(D,{size:`small`,label:`overall: ${e.status}`,color:r(e.status),sx:{height:20,fontSize:11,mb:1}}),n.map(([e,t])=>(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.4,alignItems:`baseline`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{minWidth:120,fontWeight:500},children:e}),(0,$.jsx)(D,{size:`small`,label:t?.status??`unknown`,color:r(t?.status),variant:t?.status?`filled`:`outlined`,sx:{height:18,fontSize:10}}),t?.message&&(0,$.jsx)(H,{variant:`caption`,sx:{color:t.status===`healthy`?`text.secondary`:`error.main`},children:t.message})]},e)),(0,$.jsx)(Bt,{active:n.find(([e])=>e===`runtime-diagnostics`)?.[1].details?.active,nodeName:t})]})}function gn({data:e}){if(!e)return(0,$.jsx)(H,{variant:`body2`,sx:{py:1,color:`text.secondary`},children:`Not read.`});if(!e.reachable||!e.sync)return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:1,alignItems:`baseline`},children:[(0,$.jsx)(D,{size:`small`,label:`unavailable`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.error??`No replication reading was returned.`})]});let t=e.sync,n=yt(t);return(0,$.jsxs)(w,{sx:{py:.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:.5},children:[(0,$.jsx)(D,{size:`small`,label:n.state===`unknown`?`delivery active`:n.state===`pulling`?`keeping up`:n.state===`synced`?`in sync`:n.state.replace(`-`,` `),color:wt(n),sx:{height:20,fontSize:11}}),(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[bt(n),` · `,t.bufferSizeAccuracy!==`measured`&&`~`,Math.round(t.bufferSize/1024),` KB pending · last release`,` `,t.lastSyncAt?en(new Date(t.lastSyncAgeMs==null?t.lastSyncAt:Date.now()-t.lastSyncAgeMs).toISOString()):`not recorded`,t.deliveryRatePerSecond!==void 0&&` · ${t.deliveryRatePerSecond.toFixed(1)} entries/s (60 s)`]}),t.failedAttempts>0&&(0,$.jsx)(D,{size:`small`,color:`error`,label:`${t.failedAttempts} failed attempts`,sx:{height:18,fontSize:10}})]}),t.evidence&&(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`,overflowWrap:`anywhere`,fontVariantNumeric:`tabular-nums`},children:[St(t.evidence),`. Released entries may include losses; evidence began `,new Date(t.evidence.since).toLocaleString(),`.`]}),t.lastError&&(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,color:`error.main`,fontFamily:`monospace`,fontSize:11,wordBreak:`break-word`},children:t.lastError}),!!t.history?.length&&(0,$.jsxs)(w,{component:`details`,sx:{mt:1,minWidth:0,"& summary":{cursor:`pointer`,typography:`caption`,color:`text.secondary`}},children:[(0,$.jsx)(`summary`,{children:`History before receipts · coverage and gaps`}),(0,$.jsx)(G,{spacing:1,sx:{pt:1},children:t.history.map(e=>(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:Tt(e)},e.sourceId))})]})]})}function _n({states:e}){let t=Object.values(e),n=Xt(t),r=Yt(t);return n.kind===`none`&&r.length===0?null:(0,$.jsxs)(G,{spacing:1,children:[r.map(e=>(0,$.jsxs)(Re,{severity:`warning`,children:[e.nodeId.slice(0,8),` · `,e.reason]},e.nodeId)),n.kind!==`none`&&(0,$.jsx)(Re,{severity:`warning`,children:n.kind===`leaders`?`${n.clusterId}: ${n.answered} controller observations name different leaders: `+n.groups.map(([e,t])=>`${e} (${t.length})`).join(`, `):`${n.clusterId}: ${n.answered} controller observations have different epochs: ${n.terms.join(`, `)}`})]})}function vn({data:e}){if(!e)return null;let t=Et(e);return(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{py:.5,alignItems:`center`,flexWrap:`wrap`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{minWidth:96,color:`text.secondary`},children:`telemetry`}),(0,$.jsx)(D,{size:`small`,label:t.label,color:t.state===`healthy`?`success`:t.state===`degraded`?`warning`:`default`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:t.detail}),`dropped`in t&&t.dropped>0&&(0,$.jsx)(D,{size:`small`,color:`error`,label:`${t.dropped} DROPPED`,sx:{height:18,fontSize:10}})]})}function yn(e){return(0,$.jsx)(bn,{...e},e.open?e.node?.id??`none`:`closed`)}function bn({open:e,onClose:t,node:n,cluster:r}){let[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(null),[p,m]=(0,Q.useState)(null),[h,g]=(0,Q.useState)(null),[_,y]=(0,Q.useState)(50),[b,x]=(0,Q.useState)(null),[S,C]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(null),[O,k]=(0,Q.useState)(!1),[A,ee]=(0,Q.useState)(!0),[ne,re]=(0,Q.useState)(!1),[ie,oe]=(0,Q.useState)(null),j=Ve(),M=(0,Q.useRef)(0),N=(0,Q.useCallback)(async(e,t)=>{let n=++M.current;ee(!0),oe(null);try{let[r,i,o,l,d,p,h,_,v]=await Promise.allSettled([c.getCheckHistory({nodeId:e,limit:t}),c.getNodeIndicators({nodeId:e}),c.getNodeSyncStatus({nodeId:e}),c.getNodeRelayStats({nodeId:e}),c.getNodeHealthSummaries(),c.getNodeDaemonStatus({nodeId:e}),c.getUpgradeProgress(),c.getNodeDaemonHealth({nodeId:e}),c.getMeshStatus()]);if(n!==M.current)return;if(f(v.status===`fulfilled`?v.value.find(t=>t.nodeId===e)??null:null),C(_.status===`fulfilled`?_.value:{nodeId:e,reachable:!1,answer:null,error:`Application health could not be read`}),x(p.status===`fulfilled`?p.value:null),E(h.status===`fulfilled`?h.value.find(t=>t.nodeId===e)??null:null),s(i.status===`fulfilled`?i.value:null),u(o.status===`fulfilled`?o.value:{nodeId:e,reachable:!1,sync:null,error:o.reason instanceof Error?o.reason.message:String(o.reason)}),m(l.status===`fulfilled`?l.value:null),g(d.status===`fulfilled`?d.value.find(t=>t.nodeId===e)??null:null),r.status===`rejected`)throw r.reason;a(r.value)}catch(e){if(n!==M.current)return;oe(e instanceof Error?e.message:String(e)),a([])}finally{n===M.current&&ee(!1)}},[]);(0,Q.useEffect)(()=>{let t=M;return e&&n&&N(n.id,_),()=>{t.current++}},[e,n,_,N]);let se=T!==null&&T.phase!==`done`&&T.phase!==`failed`&&T.phase!==`refused`;Ge(()=>{e&&n&&!A&&N(n.id,_)},{intervalMs:5e3,enabled:e});let P=(0,Q.useCallback)(async()=>{if(n){k(!0);try{let e=await c.upgradeNode({nodeId:n.id});if(!e.started){j.warning(e.reason??`The daemon refused to start an upgrade`);return}j.info(`Building a bundle — this takes a few minutes`),await N(n.id,_)}catch(e){j.error(e instanceof Error?e.message:`Could not start the upgrade`)}finally{k(!1)}}},[n,_,N,j]),ue=(0,Q.useCallback)(async()=>{if(n){re(!0);try{await c.triggerNodeCheck({nodeId:n.id}),await N(n.id,_),j.success(`Check complete`)}catch(e){j.error(e instanceof Error?e.message:`Check failed`)}finally{re(!1)}}},[n,_,N,j]);if(!n)return null;let I=n.status,de=n.isLocal;return(0,$.jsxs)(ae,{open:e,onClose:t,maxWidth:`md`,fullWidth:!0,children:[(0,$.jsx)(le,{children:(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,$.jsxs)(w,{component:`span`,children:[`Diagnostics — `,n.name]}),(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.secondary`},children:de?`this daemon`:`${n.host}:${n.daemonPort}`})]})}),(0,$.jsxs)(te,{dividers:!0,children:[A&&(0,$.jsx)(Oe,{"aria-label":`Loading node diagnostics`,sx:{mb:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Last check`}),h&&(h.consecutiveFailures>0||h.lastSeenOnline)&&(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{mb:1,alignItems:`center`,flexWrap:`wrap`},children:[h.consecutiveFailures>0&&(0,$.jsx)(D,{size:`small`,color:h.consecutiveFailures>3?`error`:`warning`,label:`${h.consecutiveFailures} consecutive failures`,sx:{height:20,fontSize:11}}),h.lastSeenOnline&&(0,$.jsxs)(H,{variant:`caption`,sx:{color:`text.secondary`},children:[`last seen online `,en(h.lastSeenOnline)]})]}),I?(0,$.jsxs)(w,{sx:{mb:2},children:[!de&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(dn,{label:`PING`,verdict:Wt(I.pingReachable,I.pingError),latencyMs:I.pingLatencyMs,error:I.pingError??null}),(0,$.jsx)(dn,{label:`SSH`,verdict:Wt(I.sshConnected,I.sshError),latencyMs:I.sshLatencyMs,error:I.sshError??null,detail:I.sshConnected==null&&!I.sshError?`this check reaches the node over Netron`:void 0})]}),(0,$.jsx)(dn,{label:`OMNITRON`,verdict:Gt(I),error:I.omnitronError??null,detail:I.omnitronConnected?[I.omnitronVersion&&`v${I.omnitronVersion}`,I.omnitronPid&&`pid ${I.omnitronPid}`,I.omnitronUptime!=null&&I.omnitronUptime>0&&`up ${En(I.omnitronUptime)}`].filter(Boolean).join(` · `):void 0}),(0,$.jsx)(H,{variant:`caption`,sx:{display:`block`,mt:1,color:`text.disabled`},children:I.checkedAt?`Taken ${new Date(I.checkedAt).toLocaleString()}`:`Never checked`})]}):(0,$.jsx)(H,{variant:`body2`,sx:{mb:2,color:`text.secondary`},children:`This node has never been checked.`}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Indicators, from the node's own titan-health`}),(0,$.jsx)(hn,{data:o,nodeName:n.name}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Running on this node`}),(0,$.jsx)(pn,{data:b,health:S}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Replication`}),!n.isLocal&&d&&(0,$.jsxs)(w,{sx:{py:1,overflowWrap:`anywhere`},children:[(0,$.jsx)(H,{variant:`body2`,children:xt(d).connection}),xt(d).error&&(0,$.jsx)(H,{variant:`caption`,color:`error.main`,children:xt(d).error}),!(l?.reachable&&l.sync)&&(0,$.jsxs)(H,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`Replication: `,xt(d).replication]})]}),r&&(0,$.jsxs)(H,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:[`Cluster · `,Jt(r)]}),(0,$.jsx)(gn,{data:l}),(0,$.jsx)(vn,{data:p}),(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,mb:1},children:[(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`History`}),(0,$.jsx)(U,{size:`small`,sx:{ml:`auto`,minWidth:120},children:(0,$.jsx)(Fe,{value:_,inputProps:{"aria-label":`History entries`},onChange:e=>y(Number(e.target.value)),sx:{height:30,fontSize:12},children:zn.map(e=>(0,$.jsxs)(W,{value:e,sx:{fontSize:12},children:[`last `,e,` checks`]},e))})})]}),ie&&(0,$.jsx)(Re,{onClose:()=>oe(null),children:ie}),A&&i.length===0?(0,$.jsx)(ut,{height:120}):i.length===0&&!ie?(0,$.jsx)(H,{variant:`body2`,sx:{py:2,color:`text.secondary`},children:`No checks recorded. History is kept by the daemon that runs the health worker.`}):(0,$.jsx)(w,{sx:{maxHeight:360,overflowY:`auto`},children:i.map(e=>(0,$.jsx)(fn,{row:e,isLocal:de},`${e.nodeId}-${e.checkedAt}`))}),T&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(F,{sx:{my:2}}),(0,$.jsx)(H,{variant:`overline`,sx:{color:`text.secondary`},children:`Workspace source bundle upgrade`}),(0,$.jsx)(mn,{data:T})]})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(K,{permission:`OmnitronNodes.triggerNodeCheck`,children:(0,$.jsx)(v,{onClick:ue,disabled:ne,startIcon:(0,$.jsx)($e,{sx:{fontSize:16}}),children:ne?`Checking…`:`Check now`})}),!de&&(0,$.jsx)(K,{permission:`OmnitronNodes.upgradeNode`,children:(0,$.jsxs)(w,{component:`details`,children:[(0,$.jsx)(H,{component:`summary`,variant:`caption`,sx:{cursor:`pointer`},children:`Advanced · workspace source bundle`}),(0,$.jsx)(v,{onClick:P,disabled:O||se,startIcon:(0,$.jsx)(tt,{sx:{fontSize:16}}),children:se?`Upgrading…`:`Install source bundle`})]})}),(0,$.jsx)(w,{sx:{flexGrow:1}}),(0,$.jsx)(v,{onClick:t,children:`Close`})]})]})}function xn({node:e,onEdit:t,onRemove:n,onCheckSsh:i,onDiagnose:a,checking:o,uptimeData:s,lastCheckAt:c,newest:l,mesh:u}){let{status:d}=e,f=un(d,e.isLocal),p=d?.pingReachable==null?`unchecked`:d.pingReachable?`online`:`offline`,m=!e.isLocal&&tn(d?.checkedAt);return(0,$.jsx)(M,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,transition:`box-shadow 0.2s`,"&:hover":{boxShadow:e=>e.shadows[8]}},children:(0,$.jsxs)(_,{sx:{pb:`12px !important`,flexGrow:1,display:`flex`,flexDirection:`column`},children:[(0,$.jsxs)(G,{direction:`row`,sx:{alignItems:`flex-start`,justifyContent:`space-between`,flexWrap:`wrap`,gap:1,mb:1.5},children:[(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,minWidth:0},children:[e.isLocal?(0,$.jsx)(rt,{sx:{fontSize:24,color:`primary.main`,flexShrink:0}}):(0,$.jsx)(Xe,{sx:{fontSize:24,color:`text.secondary`,flexShrink:0}}),(0,$.jsxs)(w,{sx:{minWidth:0},children:[(0,$.jsx)(H,{variant:`subtitle2`,noWrap:!0,children:e.name}),(0,$.jsxs)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.disabled`},children:[e.host,e.isLocal?``:`:${e.sshPort}`]})]})]}),(0,$.jsxs)(G,{direction:`row`,spacing:.5,useFlexGap:!0,sx:{flexWrap:`wrap`,justifyContent:`flex-end`,flexShrink:0,maxWidth:`100%`},children:[!e.isLocal&&(0,$.jsx)(K,{permission:`OmnitronNodes.removeNode`,children:(0,$.jsx)(z,{title:`Remove`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Remove node ${e.name}`,onClick:()=>n(e.id),color:`error`,sx:{marginInlineEnd:1},children:(0,$.jsx)(nt,{sx:{fontSize:18}})})})}),!e.isLocal&&(0,$.jsx)(K,{permission:`OmnitronTerminal.open`,children:(0,$.jsx)(v,{component:r,to:`/terminal?${new URLSearchParams({node:e.id})}`,size:`small`,children:`SSH`})}),!e.isLocal&&(0,$.jsx)(z,{title:o?`Checking...`:`Check SSH connection`,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(K,{permission:`OmnitronNodes.checkNodeStatus`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Check SSH connection`,onClick:()=>i(e.id),disabled:o,children:(0,$.jsx)($e,{sx:{fontSize:18,...o&&{animation:`${Pn} 1s linear infinite`}}})})})})}),(0,$.jsx)(z,{title:`Diagnostics`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Diagnostics for ${e.name}`,onClick:()=>a(e),children:(0,$.jsx)(et,{sx:{fontSize:18}})})}),!e.isLocal&&(0,$.jsx)($.Fragment,{children:(0,$.jsx)(K,{permission:`OmnitronNodes.updateNode`,children:(0,$.jsx)(z,{title:`Edit`,children:(0,$.jsx)(Me,{size:`small`,"aria-label":`Edit node ${e.name}`,onClick:()=>t(e),children:(0,$.jsx)(Qe,{sx:{fontSize:18}})})})})})]})]}),(0,$.jsxs)(G,{direction:`row`,spacing:2,sx:{mb:1.5,alignItems:`center`},children:[e.isLocal?(0,$.jsx)(nn,{state:f.state,label:`OMNITRON`,tooltip:f.tooltip}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(nn,{state:p,label:`PING`,tooltip:d?.pingReachable?`${d.pingLatencyMs??`?`}ms`:d?.pingError??`Not checked`}),(0,$.jsx)(nn,{state:f.state,label:`OMNITRON`,tooltip:f.tooltip})]}),(0,$.jsx)(z,{arrow:!0,title:d?.checkedAt?`Last checked ${new Date(d.checkedAt).toLocaleString()}`:`This node has never been checked`,children:(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{ml:`auto`,fontSize:10,color:m?`warning.main`:`text.disabled`},children:en(d?.checkedAt)})})]}),(0,$.jsx)(F,{sx:{mb:1.5}}),(0,$.jsxs)(G,{spacing:.5,children:[d?.omnitronVersion&&(0,$.jsx)(wn,{version:d.omnitronVersion,standing:cn(d.omnitronVersion,l)}),(0,$.jsx)(Tn,{label:`Runtime`,value:e.runtime}),(0,$.jsx)(Tn,{label:`Daemon Port`,value:String(e.daemonPort)}),!e.isLocal&&(0,$.jsx)(Tn,{label:`SSH User`,value:e.sshUser}),d?.os&&(0,$.jsx)(Tn,{label:`OS`,value:`${d.os.platform} ${d.os.arch}`}),d?.omnitronUptime!=null&&d.omnitronUptime>0&&(0,$.jsx)(Tn,{label:`Uptime`,value:En(d.omnitronUptime)}),!e.isLocal&&(0,$.jsx)(Cn,{mesh:u})]}),e.tags.length>0&&(0,$.jsx)(G,{direction:`row`,spacing:.5,useFlexGap:!0,sx:{mt:1.5,flexWrap:`wrap`},children:e.tags.map(e=>(0,$.jsx)(D,{label:e,size:`small`,variant:`outlined`,sx:{height:22,fontSize:11}},e))}),!e.isLocal&&(0,$.jsx)(w,{sx:{mt:`auto`,pt:1.5},children:(0,$.jsxs)(G,{spacing:.75,children:[(0,$.jsx)(on,{data:s,metric:`ping`,label:`PING`,segWidth:In,gap:Ln,height:Rn,lastCheckAt:c}),(0,$.jsx)(on,{data:s,metric:`omnitron`,label:`OMNITRON`,segWidth:In,gap:Ln,height:Rn,lastCheckAt:c})]})})]})})}function Sn(e){let t=xt(e),n=[t.connection,t.error,`Replication: ${t.replication}`].filter(Boolean).join(` `);switch(t.state){case`not-joined`:return{text:`not joined`,tone:`idle`,tooltip:n};case`reconnecting`:return{text:e.reconnectAt==null?`disconnected`:`retrying`,tone:`bad`,tooltip:n};case`connecting`:return{text:`joining`,tone:`quiet`,tooltip:n};case`stale`:return{text:`stale heartbeat`,tone:`warn`,tooltip:n};case`unauthenticated`:return{text:`unauthenticated`,tone:`warn`,tooltip:n};case`connected`:return e.via===`ssh-tunnel`?{text:`over SSH`,tone:`info`,tooltip:n}:{text:`direct`,tone:`good`,tooltip:n};default:return{text:`disconnected`,tone:`bad`,tooltip:`RPC state is unavailable.`}}}function Cn({mesh:e}){if(!e)return null;let t=Sn(e);return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:`Mesh`}),(0,$.jsx)(z,{arrow:!0,title:t.tooltip,children:(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{fontSize:11,color:Un[t.tone],maxWidth:190},children:t.text})})]})}function wn({version:e,standing:t}){let[n,r]=e.split(`+`),i=r?.split(`.`)[1],a=i?`${n} · ${i.slice(0,7)}`:n,o=t===`behind`?{text:`behind`,color:`warning.main`}:t===`differs`?{text:`differs`,color:`info.main`}:null;return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:`Version`}),(0,$.jsx)(z,{arrow:!0,title:e,children:(0,$.jsxs)(G,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[o&&(0,$.jsx)(H,{variant:`caption`,sx:{fontSize:10,color:o.color},children:o.text}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{fontSize:11,maxWidth:190},children:a})]})})]})}function Tn({label:e,value:t}){return(0,$.jsxs)(G,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(H,{variant:`caption`,sx:{color:`text.disabled`},children:e}),(0,$.jsx)(H,{variant:`caption`,sx:{fontWeight:500},children:t})]})}function En(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function Dn({open:e,onClose:t,onSubmit:n,editNode:r,sshKeys:i,loading:a,error:o,onDismissError:s}){let[c,l]=(0,Q.useState)(Wn);(0,Q.useEffect)(()=>{e&&l(r?{name:r.name,host:r.host,sshPort:r.sshPort,sshUser:r.sshUser,sshAuthMethod:r.sshAuthMethod,sshPrivateKey:r.sshPrivateKey??``,sshPassphrase:``,sshPassword:``,runtime:r.runtime,daemonPort:r.daemonPort,tags:r.tags.join(`, `)}:{...Wn,sshPrivateKey:i[0]?.path??``})},[r,i,e]);let u=(e,t)=>l(n=>({...n,[e]:t})),d=!!r,f=c.name.trim()&&c.host.trim();return(0,$.jsxs)(ae,{open:e,onClose:t,maxWidth:`sm`,fullWidth:!0,children:[(0,$.jsx)(le,{children:d?`Edit "${r.name}"`:`Add Node`}),(0,$.jsxs)(te,{children:[o&&(0,$.jsx)(Re,{onClose:s,children:o}),(0,$.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,$.jsx)(B,{label:`Name`,value:c.name,onChange:e=>u(`name`,e.target.value),fullWidth:!0,placeholder:`production-server-1`,autoFocus:!0}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsx)(B,{label:`Host`,value:c.host,onChange:e=>u(`host`,e.target.value),fullWidth:!0,placeholder:`192.168.1.100`}),(0,$.jsx)(B,{label:`SSH Port`,value:c.sshPort,onChange:e=>u(`sshPort`,parseInt(e.target.value,10)||22),sx:{width:{xs:`100%`,sm:120},flexShrink:0},type:`number`})]}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsx)(B,{label:`SSH User`,value:c.sshUser,onChange:e=>u(`sshUser`,e.target.value),fullWidth:!0}),(0,$.jsxs)(U,{sx:{minWidth:160},children:[(0,$.jsx)(we,{children:`Auth Method`}),(0,$.jsxs)(Fe,{value:c.sshAuthMethod,label:`Auth Method`,inputProps:{"aria-label":`Auth Method`},onChange:e=>u(`sshAuthMethod`,e.target.value),children:[(0,$.jsx)(W,{value:`key`,children:`SSH Key`}),(0,$.jsx)(W,{value:`password`,children:`Password`})]})]})]}),c.sshAuthMethod===`key`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(U,{fullWidth:!0,children:[(0,$.jsx)(we,{shrink:r?.hasPrivateKey||void 0,children:`SSH Private Key`}),(0,$.jsxs)(Fe,{value:c.sshPrivateKey,label:`SSH Private Key`,displayEmpty:!!r?.hasPrivateKey,inputProps:{"aria-label":`SSH Private Key`},onChange:e=>u(`sshPrivateKey`,e.target.value),children:[r?.hasPrivateKey&&(0,$.jsx)(W,{value:``,children:`Keep stored key`}),i.map(e=>(0,$.jsx)(W,{value:e.path,children:(0,$.jsxs)(G,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,$.jsx)(H,{variant:`body2`,sx:{fontWeight:500},children:e.name}),(0,$.jsx)(D,{label:e.type,size:`small`,sx:{height:20,fontSize:11}}),(0,$.jsx)(H,{variant:`caption`,noWrap:!0,sx:{color:`text.disabled`,ml:`auto`},children:e.path})]})},e.path)),i.length===0&&(0,$.jsx)(W,{disabled:!0,children:(0,$.jsx)(H,{variant:`body2`,sx:{color:`text.secondary`},children:`No SSH keys found`})})]})]}),(0,$.jsx)(B,{label:`Key Passphrase`,value:c.sshPassphrase,onChange:e=>u(`sshPassphrase`,e.target.value),fullWidth:!0,type:`password`,placeholder:r?.hasPassphrase?`Encrypted — leave empty to keep`:`Leave empty if key is not encrypted`,size:`small`,helperText:r?.hasPassphrase?`Passphrase is stored encrypted. Enter new value to change.`:void 0})]}):(0,$.jsx)(B,{label:`SSH Password`,value:c.sshPassword,onChange:e=>u(`sshPassword`,e.target.value),fullWidth:!0,type:`password`,placeholder:r?.hasPassword?`Stored — leave empty to keep`:``,helperText:r?.hasPassword?`Password is stored encrypted. Enter a new value to change it.`:void 0}),(0,$.jsx)(F,{}),(0,$.jsxs)(G,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,$.jsxs)(U,{sx:{minWidth:140},children:[(0,$.jsx)(we,{children:`Runtime`}),(0,$.jsxs)(Fe,{value:c.runtime,label:`Runtime`,inputProps:{"aria-label":`Runtime`},onChange:e=>u(`runtime`,e.target.value),children:[(0,$.jsx)(W,{value:`node`,children:`Node.js`}),(0,$.jsx)(W,{value:`bun`,children:`Bun`})]})]}),(0,$.jsx)(B,{label:`Daemon Port`,value:c.daemonPort,onChange:e=>u(`daemonPort`,parseInt(e.target.value,10)||9700),sx:{width:{xs:`100%`,sm:140},flexShrink:0},type:`number`}),(0,$.jsx)(B,{label:`Tags`,value:c.tags,onChange:e=>u(`tags`,e.target.value),fullWidth:!0,placeholder:`production, gpu`,helperText:`Comma-separated`})]})]})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:t,color:`inherit`,children:`Cancel`}),(0,$.jsx)(v,{variant:`contained`,loading:a,onClick:()=>n(c),disabled:!f||a,children:d?`Save`:`Add Node`})]})]})}function On({open:e,onClose:t,onSaved:n}){let[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)(!1),[s,l]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{e&&(l(null),c.getCheckConfig().then(e=>i(e)).catch(e=>l(e?.message??`Could not read the current settings`)))},[e]);let u=(e,t)=>i(n=>n&&{...n,[e]:t});return(0,$.jsxs)(ae,{open:e,onClose:a?void 0:t,maxWidth:`xs`,fullWidth:!0,children:[(0,$.jsx)(le,{children:`Check Settings`}),(0,$.jsxs)(te,{children:[s&&(0,$.jsx)(Re,{onClose:()=>l(null),children:s}),r?(0,$.jsxs)(G,{spacing:2.5,sx:{mt:1},children:[(0,$.jsxs)(U,{fullWidth:!0,children:[(0,$.jsx)(we,{children:`ICMP Ping`}),(0,$.jsxs)(Fe,{value:r.pingEnabled?`on`:`off`,label:`ICMP Ping`,inputProps:{"aria-label":`ICMP Ping`},onChange:e=>u(`pingEnabled`,e.target.value===`on`),children:[(0,$.jsx)(W,{value:`on`,children:`Enabled`}),(0,$.jsx)(W,{value:`off`,children:`Disabled`})]})]}),(0,$.jsx)(B,{label:`Ping timeout (ms)`,type:`number`,fullWidth:!0,value:r.pingTimeout,onChange:e=>u(`pingTimeout`,parseInt(e.target.value,10)||0),helperText:`250-60000`,disabled:!r.pingEnabled}),(0,$.jsx)(B,{label:`SSH timeout (ms)`,type:`number`,fullWidth:!0,value:r.sshTimeout,onChange:e=>u(`sshTimeout`,parseInt(e.target.value,10)||0),helperText:`1000-120000`}),(0,$.jsx)(B,{label:`Omnitron probe timeout (ms)`,type:`number`,fullWidth:!0,value:r.omnitronCheckTimeout,onChange:e=>u(`omnitronCheckTimeout`,parseInt(e.target.value,10)||0),helperText:`1000-120000`}),(0,$.jsx)(B,{label:`Concurrent checks`,type:`number`,fullWidth:!0,value:r.concurrency,onChange:e=>u(`concurrency`,parseInt(e.target.value,10)||0),helperText:`1-100 - how many nodes are checked at once`})]}):(0,$.jsx)(ut,{variant:`rounded`,height:220})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:t,color:`inherit`,disabled:a,children:`Cancel`}),(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(v,{variant:`contained`,onClick:async()=>{if(r){o(!0),l(null);try{n(await c.setCheckConfig(r)),t()}catch(e){l(e?.message??`Failed to save settings.`)}finally{o(!1)}}},disabled:!r||a,children:a?`Saving...`:`Save`})})]})]})}function kn(){let{can:e}=He(),t=e(`OmnitronNodes.listSshKeys`),[n,r]=(0,Q.useState)([]),[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(!0),[l,u]=(0,Q.useState)(!1),d=(0,Q.useRef)(!1),[f,p]=(0,Q.useState)(null),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(null),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)({}),[D,O]=(0,Q.useState)({}),[k,A]=(0,Q.useState)(null),[ee,ne]=(0,Q.useState)(!1),[re,ie]=(0,Q.useState)({uptimeIntervalMs:An,retentionDays:jn}),oe=(0,Q.useRef)(re);oe.current=re;let[j,M]=(0,Q.useState)(null),[N,se]=(0,Q.useState)(null),P=(0,Q.useRef)([]);P.current=n;let[F,ue]=(0,Q.useState)({}),I=(0,Q.useRef)(0),[de,fe]=(0,Q.useState)({}),L=(0,Q.useCallback)(async()=>{try{let e=await c.listNodes();r(e),A(null);let t=await Promise.allSettled(e.map(async e=>({id:e.id,at:(await c.getCheckHistory({nodeId:e.id,limit:1}))[0]?.checkedAt??null}))),n={},i=null;for(let e of t)e.status===`fulfilled`?n[e.value.id]=e.value.at:i??=e.reason?.message??`Could not read the latest recorded checks`;return O(e=>({...e,...n})),se(i),e}catch(e){return A(e?.message??`Could not reach the daemon`),P.current}finally{s(!1)}},[]),pe=(0,Q.useCallback)(async()=>{try{let e=await c.getMeshStatus();ue(Object.fromEntries(e.map(e=>[e.nodeId,e])))}catch{}},[]),R=(0,Q.useCallback)(async e=>{let t=++I.current,n=await Promise.allSettled(e.map(async e=>c.getNodeClusterState({nodeId:e.id}))),r={};n.forEach((t,n)=>{let i=e[n].id;r[i]=t.status===`fulfilled`&&t.value?.nodeId===i?t.value:{nodeId:i,reachable:!1,cluster:null,error:t.status===`rejected`&&t.reason instanceof Error?t.reason.message:`Cluster participation unavailable`}}),t===I.current&&fe(r)},[]),me=(0,Q.useCallback)(async e=>{let t={},n=null;await Promise.allSettled(e.map(async e=>{try{let{uptimeIntervalMs:n,retentionDays:r}=oe.current;t[e.id]=await c.getUptimeBar({nodeId:e.id,bucketCount:$t(r,n),intervalMs:n})}catch(e){n??=e?.message??`Could not load uptime history`}})),E(e=>({...e,...t})),M(n)},[]),he=(0,Q.useCallback)(async()=>{if(!t)a([]);else try{a(await c.listSshKeys())}catch{}},[t]),ge=qe(e=>e.connected),B=qe(e=>e.lastNodeEvent),_e=qe(e=>e.initialize);(0,Q.useEffect)(()=>_e(),[_e]),Ge(()=>void L(),{intervalMs:ge?12e4:3e4}),Ge(()=>void pe(),{intervalMs:15e3}),Ge(()=>R(P.current),{intervalMs:6e4}),(0,Q.useEffect)(()=>{B&&L()},[B,L]),Ge(()=>void(async()=>{await me(P.current)})(),{intervalMs:Mn});let ve=n.map(e=>e.id).sort().join(`,`);(0,Q.useEffect)(()=>{R(P.current),ve&&me(P.current)},[ve,R,me]),(0,Q.useEffect)(()=>{he()},[he]),(0,Q.useEffect)(()=>{Promise.resolve().then(()=>c.getHistoryConfig()).then(e=>ie(e)).catch(()=>{})},[]);let ye=(0,Q.useMemo)(()=>ln(n.map(e=>e.status?.omnitronVersion)),[n]),V=Ve(),be=(0,Q.useCallback)(async e=>{let t=n.find(t=>t.id===e)?.name??e;p(e);try{let n=await c.checkNodeStatus({id:e});if(n.sshConnected){let e=n.sshLatencyMs==null?``:` (${n.sshLatencyMs}ms)`;V.success(`${t}: SSH connected${e}`)}else n.sshConnected===!1?V.error(`${t}: SSH failed — ${n.sshError??`Connection refused`}`):V.warning(`${t}: this check did not use SSH — ${n.omnitronConnected?`omnitron answered on its Netron port`:n.omnitronError??`no answer on the Netron port`}`)}catch(e){V.error(`${t}: ${e?.message??`Check failed`}`)}finally{p(null)}},[n,V]),[xe,Se]=(0,Q.useState)(null),[Ce,we]=(0,Q.useState)(!1),[Te,U]=(0,Q.useState)(null),Ee=(0,Q.useRef)(!1),De=n.find(e=>e.id===xe),Oe=(0,Q.useCallback)(async()=>{if(xe&&!Ee.current){Ee.current=!0,we(!0),U(null);try{await c.removeNode({id:xe}),await L(),Se(null)}catch(e){U(e?.message??`Failed to remove node.`)}finally{Ee.current=!1,we(!1)}}},[xe,L]),ke=(0,Q.useCallback)(()=>{Ee.current||(Se(null),U(null))},[]),Ae=(0,Q.useCallback)(()=>{_(null),w(null),h(!0)},[]),je=(0,Q.useCallback)(e=>{_(e),w(null),h(!0)},[]),W=(0,Q.useCallback)(()=>{h(!1),_(null),w(null)},[]),Ne=(0,Q.useCallback)(async e=>{S(!0),w(null);try{let t={name:e.name.trim(),host:e.host.trim(),sshPort:e.sshPort,sshUser:e.sshUser.trim(),sshAuthMethod:e.sshAuthMethod,sshPrivateKey:e.sshAuthMethod===`key`&&e.sshPrivateKey?e.sshPrivateKey:void 0,sshPassphrase:e.sshAuthMethod===`key`&&e.sshPassphrase?e.sshPassphrase:void 0,sshPassword:e.sshAuthMethod===`password`&&e.sshPassword?e.sshPassword:void 0,runtime:e.runtime,daemonPort:e.daemonPort,tags:e.tags.split(`,`).map(e=>e.trim()).filter(Boolean)};g?await c.updateNode({id:g.id,...t}):await c.addNode(t),W(),await L()}catch(e){w(e?.message??`Failed to save node.`)}finally{S(!1)}},[g,L,W]),Fe=[...n].sort((e,t)=>e.isLocal===t.isLocal?e.name.localeCompare(t.name):e.isLocal?-1:1);return(0,$.jsxs)(G,{spacing:3,children:[(0,$.jsx)(ct,{links:[{name:`Nodes`}],action:(0,$.jsxs)(G,{direction:`row`,spacing:1,children:[(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(v,{variant:`outlined`,size:`small`,startIcon:(0,$.jsx)(Qe,{sx:{fontSize:18}}),onClick:()=>ne(!0),children:`Check Settings`})}),(0,$.jsx)(z,{title:`Refresh`,children:(0,$.jsx)(Me,{"data-console-command":`refresh`,size:`small`,"aria-label":`Refresh`,loading:l,onClick:async()=>{if(!d.current){d.current=!0,u(!0);try{let e=await L();await Promise.all([me(e),pe(),R(e)])}finally{d.current=!1,u(!1)}}},children:(0,$.jsx)($e,{sx:{fontSize:18}})})}),(0,$.jsx)(K,{permission:`OmnitronNodes.addNode`,children:(0,$.jsx)(v,{variant:`contained`,size:`small`,startIcon:(0,$.jsx)(Ye,{sx:{fontSize:18}}),onClick:Ae,children:`Add Node`})})]})}),(0,$.jsx)(ot,{active:l,label:`Refreshing node status`,detail:`Reading fleet, replication and uptime observations`}),(0,$.jsx)(_n,{states:de}),(0,$.jsx)(Pt,{nodes:n}),k&&(0,$.jsxs)(Re,{severity:`warning`,onClose:()=>A(null),children:[`Could not refresh the node list — `,k,`. The cards below are the last state the daemon reported.`]}),(j||N)&&(0,$.jsxs)(Re,{severity:`warning`,onClose:()=>{M(null),se(null)},children:[`Could not refresh the uptime history — `,j||N,`. The strips below are the last aggregation that arrived, and may be behind the cards.`]}),o?(0,$.jsx)(Pe,{container:!0,spacing:3,children:[1,2,3].map(e=>(0,$.jsx)(Pe,{size:{xs:12,sm:6,md:4},children:(0,$.jsx)(ut,{variant:`rounded`,height:300})},e))}):Fe.length===0?(0,$.jsx)(ft,{title:k?`No nodes to show`:`No nodes registered`,description:k?`The list could not be refreshed, so this may not be the whole picture.`:`Add a node to manage a remote host from here.`}):(0,$.jsx)(Pe,{container:!0,spacing:3,children:Fe.map(e=>(0,$.jsx)(Pe,{size:{xs:12,sm:6,md:4},children:(0,$.jsx)(xn,{node:e,onEdit:je,onRemove:Se,onCheckSsh:be,onDiagnose:b,checking:f===e.id,uptimeData:T[e.id]??[],lastCheckAt:D[e.id]??null,newest:ye,mesh:F[e.id]})},e.id))}),(0,$.jsx)(yn,{cluster:y?de[y.id]:void 0,open:!!y,onClose:()=>b(null),node:y?n.find(e=>e.id===y.id)??y:null}),(0,$.jsxs)(ae,{open:!!xe,onClose:ke,maxWidth:`xs`,fullWidth:!0,children:[(0,$.jsx)(le,{children:`Remove Node`}),(0,$.jsxs)(te,{children:[(0,$.jsxs)(H,{variant:`body2`,children:[`Remove `,(0,$.jsx)(`strong`,{children:De?.name??xe}),`? This cannot be undone.`]}),Te&&(0,$.jsx)(Re,{onClose:()=>U(null),children:Te})]}),(0,$.jsxs)(ce,{children:[(0,$.jsx)(v,{onClick:ke,color:`inherit`,disabled:Ce,children:`Cancel`}),(0,$.jsx)(K,{permission:`OmnitronNodes.removeNode`,children:(0,$.jsx)(v,{onClick:Oe,color:`error`,variant:`contained`,disabled:Ce,children:Ce?`Removing…`:`Remove`})})]})]}),(0,$.jsx)(K,{permission:g?`OmnitronNodes.updateNode`:`OmnitronNodes.addNode`,children:(0,$.jsx)(Dn,{open:m,onClose:W,onSubmit:Ne,editNode:g,sshKeys:i,loading:x,error:C,onDismissError:()=>w(null)})}),(0,$.jsx)(K,{permission:`OmnitronNodes.setCheckConfig`,children:(0,$.jsx)(On,{open:ee,onClose:()=>ne(!1),onSaved:e=>{V.success(`Check settings saved — ping ${e.pingEnabled?`on`:`off`}, SSH timeout ${e.sshTimeout}ms`),L()}})})]})}var Q,$,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn;function Gn(){return(Gn=e((()=>{at(),Ue(),Q=t(),l(),y(),x(),S(),Ce(),pe(),b(),je(),he(),C(),Ie(),re(),A(),ne(),se(),be(),Ne(),Le(),Ee(),De(),j(),Te(),p(),u(),h(),st(),dt(),ze(),lt(),Be(),Rt(),Vt(),o(),Ke(),Qt(),Ut(),Ct(),pt(),gt(),Je(),Ze(),$=n(),An=864e5,jn=90,Mn=3e5,Nn=3e5,Pn=d`
2
2
  from { transform: rotate(0deg); }
3
3
  to { transform: rotate(360deg); }
4
4
  `,Fn=d`
@@ -1,3 +1,3 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{b as r,h as i,y as a}from"./client-DFnuv2z3.js";import{F as o,H as s,I as c,Q as l,V as u,Z as d,c as f,d as p,f as m,g as h,h as ee,m as g,n as _,p as te,s as ne,t as v}from"./mui-BXSXx9c9.js";import{B as y,a as b,o as x,z as S}from"./mui-Cd711nOk.js";import{E as C,T as w,it as T,l as E,rt as D,u as O}from"./mui-AnEgAVjz.js";import{_ as k,v as A}from"./mui-BwsIrivo.js";import{r as j,t as M}from"./alert-uBG6r9NW.js";import{n as N,s as P}from"./access-48hkC2-P.js";import{n as F,t as I}from"./use-polled-resource-B22hhr5L.js";import{A as L,G as R,M as re,k as ie,l as ae}from"./icons-OboZgWSt.js";import{n as z,t as B}from"./operation-status-Bm1x1wTz.js";import{n as V,t as oe}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as H,t as se}from"./admin-data-table-BKSDI8sU.js";import{n as U,t as ce}from"./confirm-dialog-BbGsAz7_.js";import{r as le,t as ue}from"./formatters-RnRy4bXm.js";import{n as de,t as W}from"./settled-pair-B-wgSZl6.js";import{n as fe,r as G}from"./tabs-k5NPGLnJ.js";function pe({definition:e,onClose:t,onSaved:n}){let[i,s]=(0,K.useState)(e?.name??``),[c,l]=(0,K.useState)(e?.description??``),[d,f]=(0,K.useState)(e?.steps??[{name:`inspect`,kind:`xec`,run:J}]),[m,h]=(0,K.useState)(`0`),[g,_]=(0,K.useState)(!1),[v,y]=(0,K.useState)(``),[x,C]=(0,K.useState)(null),[w,T]=(0,K.useState)(!1),[D,O]=(0,K.useState)(!1),[A,j]=(0,K.useState)(!1),N=F(()=>a.listNodes(),{intervalMs:3e4}),P=Number(m),I=d[P],L=e=>{f(t=>t.map((t,n)=>n===P?{...t,...e}:t)),O(!0)},R=()=>{w||(D?j(!0):t())};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(ee,{open:!0,onClose:R,maxWidth:`lg`,fullWidth:!0,slotProps:{paper:{sx:{maxHeight:`calc(100dvh - 32px)`,m:2,width:`calc(100% - 32px)`}}},children:[(0,q.jsx)(ne,{children:e?`Edit automation`:`New automation`}),(0,q.jsxs)(p,{dividers:!0,sx:{minWidth:0},children:[(0,q.jsx)(B,{active:w,label:`Saving automation definition`}),(0,q.jsxs)(k,{spacing:2,children:[x&&(0,q.jsx)(M,{severity:`error`,variant:`outlined`,children:x}),(0,q.jsxs)(k,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,q.jsx)(b,{autoFocus:!0,label:`Name`,size:`small`,value:i,fullWidth:!0,onChange:e=>{s(e.target.value),O(!0)}}),(0,q.jsx)(b,{label:`Description`,size:`small`,value:c,fullWidth:!0,onChange:e=>{l(e.target.value),O(!0)}})]}),(0,q.jsxs)(k,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,flexWrap:`wrap`,gap:1},children:[(0,q.jsx)(S,{variant:`caption`,color:`text.secondary`,children:`Save a definition, then review its target before running.`}),(0,q.jsx)(o,{size:`small`,onClick:()=>{if(!g)y(JSON.stringify(d,null,2)),_(!0);else try{let e=JSON.parse(v);if(!Array.isArray(e)||!e.length||e.some(e=>typeof e?.name!=`string`||typeof e?.run!=`string`))throw Error(`A non-empty array of named steps is required`);f(e),h(`0`),_(!1),C(null)}catch(e){C(String(e))}},children:g?`Step editor`:`Advanced JSON`})]}),g?(0,q.jsx)(b,{label:`Steps JSON`,multiline:!0,minRows:14,maxRows:28,fullWidth:!0,value:v,onChange:e=>{y(e.target.value),O(!0)},slotProps:{input:{sx:{fontFamily:`monospace`,fontSize:13}},htmlInput:{spellCheck:!1}}}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(fe,{value:m,onChange:h,variant:`scrollable`,scrollButtons:`auto`,"aria-label":`Automation steps`,tabs:d.map((e,t)=>({value:String(t),label:e.name||`Step ${t+1}`,closable:d.length>1})),onClose:e=>{let t=Number(e);f(e=>e.filter((e,n)=>n!==t)),h(String(Math.max(0,Math.min(P-+(t<P),d.length-2)))),O(!0)},action:(0,q.jsx)(o,{size:`small`,disabled:d.length>=32,onClick:()=>{f(e=>[...e,{name:`step-${e.length+1}`,kind:`xec`,run:J}]),h(String(d.length)),O(!0)},children:`Add step`})}),(0,q.jsxs)(u,{sx:{display:`grid`,gap:2,gridTemplateColumns:{xs:`1fr`,md:`minmax(0, 1fr) 260px`},minWidth:0},children:[(0,q.jsx)(b,{label:I.kind===`xec`?`Xec · TypeScript`:`Shell command`,multiline:!0,minRows:13,maxRows:26,fullWidth:!0,value:I.run,onChange:e=>L({run:e.target.value}),helperText:I.kind===`xec`?`$ runs locally · $target uses the selected node · params contains run input`:`Parameters are JSON in OMNITRON_PARAMS; shell interpolation is disabled`,slotProps:{input:{sx:{fontFamily:`monospace`,fontSize:13,lineHeight:1.7}},htmlInput:{spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`}}}),(0,q.jsxs)(k,{spacing:2,children:[(0,q.jsx)(b,{label:`Step name`,size:`small`,value:I.name,onChange:e=>L({name:e.target.value})}),(0,q.jsxs)(b,{select:!0,label:`Executor`,size:`small`,value:I.kind??`shell`,onChange:e=>L({kind:e.target.value}),children:[(0,q.jsx)(E,{value:`xec`,children:`Xec · TypeScript`}),(0,q.jsx)(E,{value:`shell`,children:`Shell`})]}),(0,q.jsxs)(b,{select:!0,label:`Target`,size:`small`,value:I.nodeId??`local`,onChange:e=>L({nodeId:e.target.value}),children:[(0,q.jsx)(E,{value:`local`,children:`Local daemon host`}),(N.data??[]).filter(e=>!e.isLocal).map(e=>(0,q.jsx)(E,{value:e.id,children:e.name},e.id)),I.nodeId&&I.nodeId!==`local`&&!N.data?.some(e=>e.id===I.nodeId)&&(0,q.jsxs)(E,{value:I.nodeId,children:[`Unavailable · `,I.nodeId]})]}),N.error&&(0,q.jsxs)(M,{severity:`warning`,variant:`outlined`,children:[`Node list unavailable: `,N.error]}),(0,q.jsx)(b,{label:`Working directory`,size:`small`,value:I.cwd??``,placeholder:`Daemon working directory`,onChange:e=>L({cwd:e.target.value||void 0})}),(0,q.jsx)(b,{label:`Timeout (seconds)`,type:`number`,size:`small`,value:(I.timeout??3e5)/1e3,onChange:e=>L({timeout:Number(e.target.value)*1e3})}),(0,q.jsx)(b,{label:`Depends on`,size:`small`,value:(I.dependsOn??[]).join(`, `),helperText:`Step names, separated by commas`,onChange:e=>L({dependsOn:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})]})]}),(0,q.jsx)(S,{variant:`caption`,color:`text.secondary`,children:`Scripts run with the daemon host's OS permissions. Remote targets require a trusted SSH host key. Use only reviewed code.`})]})]})]}),(0,q.jsxs)(te,{children:[(0,q.jsx)(o,{onClick:R,disabled:w,children:`Cancel`}),(0,q.jsx)(o,{variant:`contained`,loading:w,onClick:async()=>{T(!0),C(null);try{let a={name:i,description:c,steps:g?JSON.parse(v):d,triggers:e?.triggers??[]};if(e){if(!e.conditionalUpdates)throw Error(`Update the daemon to support conditional pipeline edits`);await r.updatePipeline({id:e.id,definition:a,expectedRevision:e.revision})}else await r.createPipeline(a);n(),t()}catch(e){C(e instanceof Error?e.message:`Could not save the pipeline`)}finally{T(!1)}},disabled:w||!i.trim(),children:w?`Saving…`:`Save definition`})]})]}),(0,q.jsx)(ce,{open:A,onClose:()=>j(!1),onConfirm:t,title:`Discard edits?`,content:`Your unsaved automation changes will be lost.`,confirmLabel:`Discard`,confirmColor:`error`})]})}var K,q,J;function me(){return(me=e((()=>{z(),K=t(),s(),c(),h(),g(),m(),f(),O(),A(),x(),y(),G(),j(),U(),i(),I(),q=n(),J=`const result = await $target\`uname -s\`;
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{b as r,h as i,y as a}from"./client-DFnuv2z3.js";import{F as o,H as s,I as c,Q as l,V as u,Z as d,c as f,d as p,f as m,g as h,h as ee,m as g,n as _,p as te,s as ne,t as v}from"./mui-BXSXx9c9.js";import{B as y,a as b,o as x,z as S}from"./mui-Cd711nOk.js";import{E as C,T as w,it as T,l as E,rt as D,u as O}from"./mui-AnEgAVjz.js";import{_ as k,v as A}from"./mui-BwsIrivo.js";import{r as j,t as M}from"./alert-uBG6r9NW.js";import{n as N,s as P}from"./access-BvKK9dEv.js";import{n as F,t as I}from"./use-polled-resource-B22hhr5L.js";import{A as L,G as R,M as re,k as ie,l as ae}from"./icons-OboZgWSt.js";import{n as z,t as B}from"./operation-status-Bm1x1wTz.js";import{n as V,t as oe}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as H,t as se}from"./admin-data-table-BKSDI8sU.js";import{n as U,t as ce}from"./confirm-dialog-BbGsAz7_.js";import{r as le,t as ue}from"./formatters-RnRy4bXm.js";import{n as de,t as W}from"./settled-pair-B-wgSZl6.js";import{n as fe,r as G}from"./tabs-k5NPGLnJ.js";function pe({definition:e,onClose:t,onSaved:n}){let[i,s]=(0,K.useState)(e?.name??``),[c,l]=(0,K.useState)(e?.description??``),[d,f]=(0,K.useState)(e?.steps??[{name:`inspect`,kind:`xec`,run:J}]),[m,h]=(0,K.useState)(`0`),[g,_]=(0,K.useState)(!1),[v,y]=(0,K.useState)(``),[x,C]=(0,K.useState)(null),[w,T]=(0,K.useState)(!1),[D,O]=(0,K.useState)(!1),[A,j]=(0,K.useState)(!1),N=F(()=>a.listNodes(),{intervalMs:3e4}),P=Number(m),I=d[P],L=e=>{f(t=>t.map((t,n)=>n===P?{...t,...e}:t)),O(!0)},R=()=>{w||(D?j(!0):t())};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(ee,{open:!0,onClose:R,maxWidth:`lg`,fullWidth:!0,slotProps:{paper:{sx:{maxHeight:`calc(100dvh - 32px)`,m:2,width:`calc(100% - 32px)`}}},children:[(0,q.jsx)(ne,{children:e?`Edit automation`:`New automation`}),(0,q.jsxs)(p,{dividers:!0,sx:{minWidth:0},children:[(0,q.jsx)(B,{active:w,label:`Saving automation definition`}),(0,q.jsxs)(k,{spacing:2,children:[x&&(0,q.jsx)(M,{severity:`error`,variant:`outlined`,children:x}),(0,q.jsxs)(k,{direction:{xs:`column`,sm:`row`},spacing:2,children:[(0,q.jsx)(b,{autoFocus:!0,label:`Name`,size:`small`,value:i,fullWidth:!0,onChange:e=>{s(e.target.value),O(!0)}}),(0,q.jsx)(b,{label:`Description`,size:`small`,value:c,fullWidth:!0,onChange:e=>{l(e.target.value),O(!0)}})]}),(0,q.jsxs)(k,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,flexWrap:`wrap`,gap:1},children:[(0,q.jsx)(S,{variant:`caption`,color:`text.secondary`,children:`Save a definition, then review its target before running.`}),(0,q.jsx)(o,{size:`small`,onClick:()=>{if(!g)y(JSON.stringify(d,null,2)),_(!0);else try{let e=JSON.parse(v);if(!Array.isArray(e)||!e.length||e.some(e=>typeof e?.name!=`string`||typeof e?.run!=`string`))throw Error(`A non-empty array of named steps is required`);f(e),h(`0`),_(!1),C(null)}catch(e){C(String(e))}},children:g?`Step editor`:`Advanced JSON`})]}),g?(0,q.jsx)(b,{label:`Steps JSON`,multiline:!0,minRows:14,maxRows:28,fullWidth:!0,value:v,onChange:e=>{y(e.target.value),O(!0)},slotProps:{input:{sx:{fontFamily:`monospace`,fontSize:13}},htmlInput:{spellCheck:!1}}}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(fe,{value:m,onChange:h,variant:`scrollable`,scrollButtons:`auto`,"aria-label":`Automation steps`,tabs:d.map((e,t)=>({value:String(t),label:e.name||`Step ${t+1}`,closable:d.length>1})),onClose:e=>{let t=Number(e);f(e=>e.filter((e,n)=>n!==t)),h(String(Math.max(0,Math.min(P-+(t<P),d.length-2)))),O(!0)},action:(0,q.jsx)(o,{size:`small`,disabled:d.length>=32,onClick:()=>{f(e=>[...e,{name:`step-${e.length+1}`,kind:`xec`,run:J}]),h(String(d.length)),O(!0)},children:`Add step`})}),(0,q.jsxs)(u,{sx:{display:`grid`,gap:2,gridTemplateColumns:{xs:`1fr`,md:`minmax(0, 1fr) 260px`},minWidth:0},children:[(0,q.jsx)(b,{label:I.kind===`xec`?`Xec · TypeScript`:`Shell command`,multiline:!0,minRows:13,maxRows:26,fullWidth:!0,value:I.run,onChange:e=>L({run:e.target.value}),helperText:I.kind===`xec`?`$ runs locally · $target uses the selected node · params contains run input`:`Parameters are JSON in OMNITRON_PARAMS; shell interpolation is disabled`,slotProps:{input:{sx:{fontFamily:`monospace`,fontSize:13,lineHeight:1.7}},htmlInput:{spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`}}}),(0,q.jsxs)(k,{spacing:2,children:[(0,q.jsx)(b,{label:`Step name`,size:`small`,value:I.name,onChange:e=>L({name:e.target.value})}),(0,q.jsxs)(b,{select:!0,label:`Executor`,size:`small`,value:I.kind??`shell`,onChange:e=>L({kind:e.target.value}),children:[(0,q.jsx)(E,{value:`xec`,children:`Xec · TypeScript`}),(0,q.jsx)(E,{value:`shell`,children:`Shell`})]}),(0,q.jsxs)(b,{select:!0,label:`Target`,size:`small`,value:I.nodeId??`local`,onChange:e=>L({nodeId:e.target.value}),children:[(0,q.jsx)(E,{value:`local`,children:`Local daemon host`}),(N.data??[]).filter(e=>!e.isLocal).map(e=>(0,q.jsx)(E,{value:e.id,children:e.name},e.id)),I.nodeId&&I.nodeId!==`local`&&!N.data?.some(e=>e.id===I.nodeId)&&(0,q.jsxs)(E,{value:I.nodeId,children:[`Unavailable · `,I.nodeId]})]}),N.error&&(0,q.jsxs)(M,{severity:`warning`,variant:`outlined`,children:[`Node list unavailable: `,N.error]}),(0,q.jsx)(b,{label:`Working directory`,size:`small`,value:I.cwd??``,placeholder:`Daemon working directory`,onChange:e=>L({cwd:e.target.value||void 0})}),(0,q.jsx)(b,{label:`Timeout (seconds)`,type:`number`,size:`small`,value:(I.timeout??3e5)/1e3,onChange:e=>L({timeout:Number(e.target.value)*1e3})}),(0,q.jsx)(b,{label:`Depends on`,size:`small`,value:(I.dependsOn??[]).join(`, `),helperText:`Step names, separated by commas`,onChange:e=>L({dependsOn:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})]})]}),(0,q.jsx)(S,{variant:`caption`,color:`text.secondary`,children:`Scripts run with the daemon host's OS permissions. Remote targets require a trusted SSH host key. Use only reviewed code.`})]})]})]}),(0,q.jsxs)(te,{children:[(0,q.jsx)(o,{onClick:R,disabled:w,children:`Cancel`}),(0,q.jsx)(o,{variant:`contained`,loading:w,onClick:async()=>{T(!0),C(null);try{let a={name:i,description:c,steps:g?JSON.parse(v):d,triggers:e?.triggers??[]};if(e){if(!e.conditionalUpdates)throw Error(`Update the daemon to support conditional pipeline edits`);await r.updatePipeline({id:e.id,definition:a,expectedRevision:e.revision})}else await r.createPipeline(a);n(),t()}catch(e){C(e instanceof Error?e.message:`Could not save the pipeline`)}finally{T(!1)}},disabled:w||!i.trim(),children:w?`Saving…`:`Save definition`})]})]}),(0,q.jsx)(ce,{open:A,onClose:()=>j(!1),onConfirm:t,title:`Discard edits?`,content:`Your unsaved automation changes will be lost.`,confirmLabel:`Discard`,confirmColor:`error`})]})}var K,q,J;function me(){return(me=e((()=>{z(),K=t(),s(),c(),h(),g(),m(),f(),O(),A(),x(),y(),G(),j(),U(),i(),I(),q=n(),J=`const result = await $target\`uname -s\`;
2
2
  console.log(result.stdout);
3
3
  `})))()}function he({run:e,targetLabel:t=e=>e??`Local daemon host`}){return(0,X.jsxs)(k,{spacing:2,sx:{minWidth:0},children:[(0,X.jsxs)(k,{direction:`row`,sx:{flexWrap:`wrap`,gap:1,alignItems:`center`},children:[(0,X.jsx)(d,{size:`small`,label:e.status,color:Z[e.status]??`default`}),(0,X.jsxs)(S,{variant:`caption`,children:[ue(e.startedAt),` · `,e.triggeredBy]})]}),(0,X.jsx)(S,{variant:`caption`,sx:{fontFamily:`monospace`,overflowWrap:`anywhere`},children:e.id}),Q(e)&&(0,X.jsx)(w,{"aria-label":`Automation in progress`}),e.status===`interrupted`&&(0,X.jsx)(M,{severity:`warning`,variant:`outlined`,children:`The executor stopped before recording completion. Inspect effects before starting another run.`}),e.steps.map(e=>(0,X.jsxs)(u,{sx:{border:1,borderColor:`divider`,borderRadius:1,p:1.5,minWidth:0},children:[(0,X.jsxs)(k,{direction:`row`,sx:{flexWrap:`wrap`,alignItems:`center`,gap:1,mb:1},children:[(0,X.jsx)(S,{variant:`subtitle2`,sx:{flex:1,overflowWrap:`anywhere`},children:e.name}),(0,X.jsx)(d,{size:`small`,label:e.status,color:Z[e.status]??`default`}),(0,X.jsxs)(S,{variant:`caption`,color:`text.secondary`,children:[le(e.duration),e.attempts?` · attempt ${e.attempts}`:``,e.exitCode!==void 0&&` · exit ${e.exitCode}`]})]}),(0,X.jsxs)(S,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mb:1,overflowWrap:`anywhere`},children:[e.kind??`shell`,` · `,t(e.nodeId)]}),e.error&&(0,X.jsx)(M,{severity:`error`,variant:`outlined`,sx:{mb:1,overflowWrap:`anywhere`},children:e.error}),e.output&&(0,X.jsx)(u,{component:`pre`,"aria-label":`${e.name} stdout`,tabIndex:0,sx:$,children:e.output}),e.stderr&&(0,X.jsx)(u,{component:`pre`,"aria-label":`${e.name} stderr`,tabIndex:0,sx:{...$,mt:1},children:e.stderr}),e.outputTruncated&&(0,X.jsx)(S,{variant:`caption`,color:`warning.main`,children:`Output retention limit reached; earlier content was omitted.`}),e.sourceHash&&(0,X.jsxs)(S,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mt:1,overflowWrap:`anywhere`,fontFamily:`monospace`},children:[`SHA-256 `,e.sourceHash]})]},e.name))]})}function ge(){let[e,t]=(0,Y.useState)(null),[n,i]=(0,Y.useState)(`definitions`),[s,c]=(0,Y.useState)(null),[l,f]=(0,Y.useState)(null),[m,h]=(0,Y.useState)(`{}`),[g,_]=(0,Y.useState)(null),[y,x]=(0,Y.useState)(!1),[C,w]=(0,Y.useState)(null),[T,E]=(0,Y.useState)(0),[O,A]=(0,Y.useState)(25),j=F(()=>a.listNodes(),{intervalMs:3e4,enabled:!!(l||s)}),P=e=>!e||e===`local`?`Local daemon host`:j.data?.find(t=>t.id===e)?.name??e,{data:I,loading:R,error:z,refresh:B}=F(async()=>{let e=await de([r.listPipelines(),r.listRuns({limit:100})],[[],[]]);return{definitions:e.first,runs:e.second,partialFailure:e.partialFailure}},{intervalMs:3e3}),V=I?.definitions??[],H=I?.runs??[],U=F(()=>r.getRunStatus({runId:s}),{intervalMs:3e3,enabled:!!s,resourceKey:s}),W=U.data?.id===s?U.data:null,G=async e=>{x(!0),_(null);try{await e(),await B()}catch(e){_(_e(e))}finally{x(!1)}};return(0,X.jsxs)(k,{spacing:2,sx:{minWidth:0},children:[(0,X.jsx)(oe,{links:[{name:`Pipelines`}],action:(0,X.jsxs)(k,{direction:`row`,spacing:1,children:[(0,X.jsx)(D,{"data-console-command":`refresh`,size:`small`,title:`Refresh pipelines`,onClick:B,children:(0,X.jsx)(re,{})}),(0,X.jsx)(N,{permission:`OmnitronPipelines.createPipeline`,children:(0,X.jsx)(o,{size:`small`,variant:`contained`,startIcon:(0,X.jsx)(L,{}),onClick:()=>t(`new`),children:`New automation`})})]})}),(z||I?.partialFailure||g)&&(0,X.jsxs)(M,{severity:`warning`,variant:`outlined`,children:[g??z??I?.partialFailure,` · Displayed run state may be stale.`]}),(0,X.jsx)(fe,{value:n,onChange:e=>{i(e),E(0)},"aria-label":`Pipeline views`,tabs:[{value:`definitions`,label:`Automations · ${V.length}`},{value:`runs`,label:`Runs · ${H.length}`}]}),n===`definitions`?(0,X.jsx)(se,{data:V.slice(T*O,(T+1)*O),columns:[{key:`name`,header:`Automation`,render:e=>(0,X.jsx)(o,{size:`small`,onClick:()=>t(e),sx:{textAlign:`left`},children:e.name})},{key:`description`,header:`Description`,render:e=>e.description||`—`},{key:`steps`,header:`Steps`,render:e=>e.steps.length},{key:`actions`,header:``,align:`right`,render:e=>(0,X.jsxs)(k,{direction:`row`,sx:{justifyContent:`flex-end`,gap:1},children:[(0,X.jsx)(N,{permission:`OmnitronPipelines.executePipeline`,children:(0,X.jsx)(o,{size:`small`,startIcon:(0,X.jsx)(ie,{}),disabled:y,onClick:()=>{f(e),h(`{}`),_(null)},children:`Run`})}),(0,X.jsx)(N,{permission:`OmnitronPipelines.deletePipeline`,children:(0,X.jsx)(D,{size:`small`,title:`Delete ${e.name}`,disabled:y,onClick:()=>w(e),children:(0,X.jsx)(ae,{})})})]})}],rowKey:e=>e.id,total:V.length,page:T,pageSize:O,onPageChange:E,onPageSizeChange:e=>{A(e),E(0)},loading:R,loadError:z??I?.partialFailure,emptyMessage:`Create an automation to run Xec scripts and shell steps.`,minWidth:560,scrollLabel:`Automation definitions`,dense:!0}):(0,X.jsx)(se,{data:H.slice(T*O,(T+1)*O),columns:[{key:`name`,header:`Automation`,render:e=>(0,X.jsx)(o,{size:`small`,onClick:()=>c(e.id),children:V.find(t=>t.id===e.pipelineId)?.name??e.pipelineId.slice(0,8)})},{key:`status`,header:`Status`,render:e=>(0,X.jsx)(d,{size:`small`,label:e.status,color:Z[e.status]??`default`})},{key:`startedAt`,header:`Started`,render:e=>ue(e.startedAt)},{key:`duration`,header:`Duration`,render:e=>le(Date.parse(e.completedAt??new Date().toISOString())-Date.parse(e.startedAt))},{key:`triggeredBy`,header:`Actor`,render:e=>e.triggeredBy}],rowKey:e=>e.id,total:H.length,page:T,pageSize:O,onPageChange:E,onPageSizeChange:e=>{A(e),E(0)},loading:R,loadError:z??I?.partialFailure,emptyMessage:`No automation runs yet.`,minWidth:620,scrollLabel:`Automation run history`,dense:!0}),e&&(0,X.jsx)(pe,{...e===`new`?{}:{definition:e},onClose:()=>t(null),onSaved:()=>{B()}}),(0,X.jsxs)(ee,{open:!!l,onClose:()=>{y||f(null)},maxWidth:`md`,fullWidth:!0,children:[(0,X.jsxs)(ne,{children:[`Run `,l?.name]}),(0,X.jsx)(p,{dividers:!0,children:(0,X.jsxs)(k,{spacing:2,children:[g&&(0,X.jsx)(M,{severity:`error`,variant:`outlined`,children:g}),j.error&&(0,X.jsx)(M,{severity:`warning`,variant:`outlined`,children:`Node names unavailable; verify target IDs below.`}),l?.steps.map(e=>(0,X.jsxs)(u,{component:`details`,children:[(0,X.jsxs)(u,{component:`summary`,sx:{cursor:`pointer`,fontSize:13},children:[e.name,` · `,e.kind??`shell`,` · `,P(e.nodeId),` · `,(e.timeout??3e5)/1e3,`s`]}),(0,X.jsx)(u,{component:`pre`,sx:{...$,mt:1},children:e.run}),(0,X.jsx)(u,{component:`pre`,"aria-label":`${e.name} execution settings`,sx:{...$,mt:1},children:JSON.stringify({targetId:e.nodeId??`local`,cwd:e.cwd??`Daemon working directory`,dependsOn:e.dependsOn??[],retries:e.retries??0,condition:e.condition??null,env:e.env??{}},null,2)})]},e.name)),(0,X.jsx)(b,{label:`Parameters (JSON)`,value:m,onChange:e=>h(e.target.value),multiline:!0,minRows:3,fullWidth:!0,helperText:`Values are passed as data and are not stored in run history.`,slotProps:{input:{sx:{fontFamily:`monospace`,fontSize:13}}}})]})}),(0,X.jsxs)(te,{children:[(0,X.jsx)(o,{disabled:y,onClick:()=>f(null),children:`Cancel`}),(0,X.jsx)(o,{disabled:y,variant:`contained`,onClick:()=>G(async()=>{let e=await r.executePipeline({id:l.id,expectedRevision:l.revision,params:JSON.parse(m)});c(e.id),i(`runs`),E(0),f(null)}),children:y?`Starting…`:`Run automation`})]})]}),(0,X.jsxs)(v,{anchor:`right`,open:!!s,onClose:()=>c(null),slotProps:{paper:{sx:{width:{xs:`100%`,sm:640},maxWidth:`100vw`,p:2,boxSizing:`border-box`}}},children:[(0,X.jsxs)(k,{direction:`row`,sx:{alignItems:`center`,justifyContent:`space-between`,mb:2},children:[(0,X.jsx)(S,{variant:`subtitle2`,children:`Run details`}),(0,X.jsx)(D,{title:`Close run details`,onClick:()=>c(null),children:(0,X.jsx)(ae,{})})]}),U.error&&(0,X.jsx)(M,{severity:`warning`,variant:`outlined`,children:`Updates unavailable. The displayed state may be stale.`}),g&&(0,X.jsx)(M,{severity:`error`,variant:`outlined`,sx:{mb:2},children:g}),W?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(he,{run:W,targetLabel:P}),(0,X.jsx)(N,{permission:`OmnitronPipelines.cancelRun`,children:Q(W)&&(0,X.jsx)(o,{sx:{mt:2},color:`warning`,variant:`outlined`,disabled:y||W.status===`cancelling`,onClick:()=>G(async()=>{await r.cancelRun({runId:W.id}),await U.refresh()}),children:`Cancel run`})})]}):(0,X.jsx)(M,{severity:`info`,variant:`outlined`,children:U.loading?`Loading run state…`:`Run state is unavailable.`})]}),(0,X.jsx)(ce,{open:!!C,onClose:()=>{y||w(null)},onConfirm:()=>G(async()=>{await r.deletePipeline({id:C.id}),w(null)}),title:`Delete automation?`,content:`${C?.name??``} and its run history will be removed. Active runs must be stopped first.`,confirmLabel:`Delete`,confirmColor:`error`})]})}var Y,X,Z,Q,_e,$;function ve(){return(ve=e((()=>{Y=t(),s(),c(),l(),h(),g(),m(),f(),_(),T(),C(),A(),x(),y(),G(),H(),j(),U(),P(),R(),V(),me(),i(),I(),W(),X=n(),Z={success:`success`,failed:`error`,running:`info`,pending:`default`,cancelling:`warning`,interrupted:`warning`,cancelled:`default`},Q=e=>[`pending`,`running`,`cancelling`].includes(e.status),_e=e=>e instanceof Error?e.message:String(e),$={m:0,p:1.5,borderRadius:1,bgcolor:`action.hover`,fontFamily:`monospace`,fontSize:12,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`,maxHeight:320,overflow:`auto`,minWidth:0}})))()}ve();export{he as PipelineRunDetail,ge as default};