@omnitron-dev/omnitron 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/cli/omnitron.js +32 -1
  2. package/dist/cli/omnitron.js.map +1 -1
  3. package/dist/cluster/leader-election.d.ts.map +1 -1
  4. package/dist/cluster/leader-election.js +0 -2
  5. package/dist/cluster/leader-election.js.map +1 -1
  6. package/dist/commands/env.d.ts.map +1 -1
  7. package/dist/commands/env.js +10 -2
  8. package/dist/commands/env.js.map +1 -1
  9. package/dist/commands/health.d.ts.map +1 -1
  10. package/dist/commands/health.js +10 -2
  11. package/dist/commands/health.js.map +1 -1
  12. package/dist/commands/inspect-graph.d.ts +20 -0
  13. package/dist/commands/inspect-graph.d.ts.map +1 -0
  14. package/dist/commands/inspect-graph.js +78 -0
  15. package/dist/commands/inspect-graph.js.map +1 -0
  16. package/dist/commands/inspect.d.ts.map +1 -1
  17. package/dist/commands/inspect.js +10 -2
  18. package/dist/commands/inspect.js.map +1 -1
  19. package/dist/commands/list.d.ts.map +1 -1
  20. package/dist/commands/list.js +11 -1
  21. package/dist/commands/list.js.map +1 -1
  22. package/dist/commands/logs.d.ts.map +1 -1
  23. package/dist/commands/logs.js +17 -3
  24. package/dist/commands/logs.js.map +1 -1
  25. package/dist/commands/metrics.d.ts.map +1 -1
  26. package/dist/commands/metrics.js +10 -2
  27. package/dist/commands/metrics.js.map +1 -1
  28. package/dist/commands/monit.d.ts.map +1 -1
  29. package/dist/commands/monit.js +9 -0
  30. package/dist/commands/monit.js.map +1 -1
  31. package/dist/commands/output.d.ts +35 -0
  32. package/dist/commands/output.d.ts.map +1 -0
  33. package/dist/commands/output.js +63 -0
  34. package/dist/commands/output.js.map +1 -0
  35. package/dist/commands/stack.d.ts.map +1 -1
  36. package/dist/commands/stack.js +22 -7
  37. package/dist/commands/stack.js.map +1 -1
  38. package/dist/commands/status.d.ts.map +1 -1
  39. package/dist/commands/status.js +17 -0
  40. package/dist/commands/status.js.map +1 -1
  41. package/dist/commands/tor.d.ts +13 -0
  42. package/dist/commands/tor.d.ts.map +1 -0
  43. package/dist/commands/tor.js +100 -0
  44. package/dist/commands/tor.js.map +1 -0
  45. package/dist/commands/up.js +1 -1
  46. package/dist/commands/up.js.map +1 -1
  47. package/dist/config/loader.d.ts.map +1 -1
  48. package/dist/config/loader.js +29 -5
  49. package/dist/config/loader.js.map +1 -1
  50. package/dist/config/types.d.ts +14 -0
  51. package/dist/config/types.d.ts.map +1 -1
  52. package/dist/daemon/daemon-client.d.ts +14 -0
  53. package/dist/daemon/daemon-client.d.ts.map +1 -1
  54. package/dist/daemon/daemon-client.js +4 -0
  55. package/dist/daemon/daemon-client.js.map +1 -1
  56. package/dist/daemon/daemon-entry.js +17 -23
  57. package/dist/daemon/daemon-entry.js.map +1 -1
  58. package/dist/daemon/daemon.d.ts +2 -0
  59. package/dist/daemon/daemon.d.ts.map +1 -1
  60. package/dist/daemon/daemon.js +118 -7
  61. package/dist/daemon/daemon.js.map +1 -1
  62. package/dist/daemon/daemon.module.d.ts.map +1 -1
  63. package/dist/daemon/daemon.module.js +41 -14
  64. package/dist/daemon/daemon.module.js.map +1 -1
  65. package/dist/daemon/daemon.rpc-service.d.ts +19 -0
  66. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  67. package/dist/daemon/daemon.rpc-service.js +14 -0
  68. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  69. package/dist/daemon/pid-manager.d.ts +55 -4
  70. package/dist/daemon/pid-manager.d.ts.map +1 -1
  71. package/dist/daemon/pid-manager.js +123 -16
  72. package/dist/daemon/pid-manager.js.map +1 -1
  73. package/dist/daemon/state-store.d.ts.map +1 -1
  74. package/dist/daemon/state-store.js +43 -1
  75. package/dist/daemon/state-store.js.map +1 -1
  76. package/dist/infrastructure/container-runtime.d.ts +10 -0
  77. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  78. package/dist/infrastructure/container-runtime.js +111 -36
  79. package/dist/infrastructure/container-runtime.js.map +1 -1
  80. package/dist/infrastructure/infrastructure.service.d.ts +41 -0
  81. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  82. package/dist/infrastructure/infrastructure.service.js +157 -8
  83. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  84. package/dist/infrastructure/phantom-endpoint-janitor.d.ts +72 -0
  85. package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -0
  86. package/dist/infrastructure/phantom-endpoint-janitor.js +149 -0
  87. package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -0
  88. package/dist/infrastructure/presets/index.d.ts.map +1 -1
  89. package/dist/infrastructure/presets/index.js +2 -0
  90. package/dist/infrastructure/presets/index.js.map +1 -1
  91. package/dist/infrastructure/presets/postgres.d.ts.map +1 -1
  92. package/dist/infrastructure/presets/postgres.js +9 -3
  93. package/dist/infrastructure/presets/postgres.js.map +1 -1
  94. package/dist/infrastructure/presets/redis.d.ts.map +1 -1
  95. package/dist/infrastructure/presets/redis.js +10 -4
  96. package/dist/infrastructure/presets/redis.js.map +1 -1
  97. package/dist/infrastructure/presets/registry.d.ts.map +1 -1
  98. package/dist/infrastructure/presets/registry.js +12 -0
  99. package/dist/infrastructure/presets/registry.js.map +1 -1
  100. package/dist/infrastructure/presets/tor.d.ts +74 -0
  101. package/dist/infrastructure/presets/tor.d.ts.map +1 -0
  102. package/dist/infrastructure/presets/tor.js +176 -0
  103. package/dist/infrastructure/presets/tor.js.map +1 -0
  104. package/dist/infrastructure/service-resolver.d.ts +31 -0
  105. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  106. package/dist/infrastructure/service-resolver.js +60 -9
  107. package/dist/infrastructure/service-resolver.js.map +1 -1
  108. package/dist/infrastructure/stack-infra-manager.d.ts +1 -1
  109. package/dist/infrastructure/stack-infra-manager.js +1 -1
  110. package/dist/infrastructure/types.d.ts +17 -0
  111. package/dist/infrastructure/types.d.ts.map +1 -1
  112. package/dist/observability/index.d.ts +4 -0
  113. package/dist/observability/index.d.ts.map +1 -0
  114. package/dist/observability/index.js +3 -0
  115. package/dist/observability/index.js.map +1 -0
  116. package/dist/observability/metrics-bridge.d.ts +87 -0
  117. package/dist/observability/metrics-bridge.d.ts.map +1 -0
  118. package/dist/observability/metrics-bridge.js +295 -0
  119. package/dist/observability/metrics-bridge.js.map +1 -0
  120. package/dist/observability/metrics-server.d.ts +68 -0
  121. package/dist/observability/metrics-server.d.ts.map +1 -0
  122. package/dist/observability/metrics-server.js +146 -0
  123. package/dist/observability/metrics-server.js.map +1 -0
  124. package/dist/orchestrator/app-handle.d.ts +13 -1
  125. package/dist/orchestrator/app-handle.d.ts.map +1 -1
  126. package/dist/orchestrator/app-handle.js +12 -0
  127. package/dist/orchestrator/app-handle.js.map +1 -1
  128. package/dist/orchestrator/bootstrap-process.d.ts +49 -0
  129. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  130. package/dist/orchestrator/bootstrap-process.js +167 -0
  131. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  132. package/dist/orchestrator/build-service.d.ts +50 -3
  133. package/dist/orchestrator/build-service.d.ts.map +1 -1
  134. package/dist/orchestrator/build-service.js +357 -85
  135. package/dist/orchestrator/build-service.js.map +1 -1
  136. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  137. package/dist/orchestrator/file-watcher.js +60 -38
  138. package/dist/orchestrator/file-watcher.js.map +1 -1
  139. package/dist/orchestrator/orchestrator.service.d.ts +176 -3
  140. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  141. package/dist/orchestrator/orchestrator.service.js +587 -56
  142. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  143. package/dist/orchestrator/process-janitor.d.ts +153 -0
  144. package/dist/orchestrator/process-janitor.d.ts.map +1 -0
  145. package/dist/orchestrator/process-janitor.js +279 -0
  146. package/dist/orchestrator/process-janitor.js.map +1 -0
  147. package/dist/project/config-resolver.d.ts.map +1 -1
  148. package/dist/project/config-resolver.js +38 -12
  149. package/dist/project/config-resolver.js.map +1 -1
  150. package/dist/project/registry.d.ts +1 -0
  151. package/dist/project/registry.d.ts.map +1 -1
  152. package/dist/project/registry.js +30 -0
  153. package/dist/project/registry.js.map +1 -1
  154. package/dist/services/auth.service.d.ts.map +1 -1
  155. package/dist/services/auth.service.js +9 -2
  156. package/dist/services/auth.service.js.map +1 -1
  157. package/dist/services/netron-telemetry-transport.d.ts.map +1 -1
  158. package/dist/services/netron-telemetry-transport.js +0 -4
  159. package/dist/services/netron-telemetry-transport.js.map +1 -1
  160. package/dist/services/node-manager.service.js +1 -1
  161. package/dist/services/node-manager.service.js.map +1 -1
  162. package/dist/services/pipeline.service.d.ts +15 -0
  163. package/dist/services/pipeline.service.d.ts.map +1 -1
  164. package/dist/services/pipeline.service.js +53 -2
  165. package/dist/services/pipeline.service.js.map +1 -1
  166. package/dist/services/project.rpc-service.d.ts +4 -0
  167. package/dist/services/project.rpc-service.d.ts.map +1 -1
  168. package/dist/services/project.rpc-service.js +9 -0
  169. package/dist/services/project.rpc-service.js.map +1 -1
  170. package/dist/services/project.service.d.ts +9 -0
  171. package/dist/services/project.service.d.ts.map +1 -1
  172. package/dist/services/project.service.js +148 -21
  173. package/dist/services/project.service.js.map +1 -1
  174. package/dist/shared/dto/project.d.ts +1 -1
  175. package/dist/shared/dto/project.d.ts.map +1 -1
  176. package/dist/shared/dto/services.d.ts +24 -0
  177. package/dist/shared/dto/services.d.ts.map +1 -1
  178. package/dist/workers/health-monitor.service.d.ts.map +1 -1
  179. package/dist/workers/health-monitor.service.js +4 -1
  180. package/dist/workers/health-monitor.service.js.map +1 -1
  181. package/dist/workers/types.d.ts +3 -0
  182. package/dist/workers/types.d.ts.map +1 -1
  183. package/package.json +19 -18
  184. package/webapp/dist/assets/Badge-D2ZBP5iK.js +1 -0
  185. package/webapp/dist/assets/Card-vO88g06B.js +1 -0
  186. package/webapp/dist/assets/CardActions-C9h7Q2wW.js +1 -0
  187. package/webapp/dist/assets/CardContent-BA_Xmmhk.js +1 -0
  188. package/webapp/dist/assets/CardHeader-ceIs__6x.js +1 -0
  189. package/webapp/dist/assets/Chip-Ckk0xUhK.js +1 -0
  190. package/webapp/dist/assets/DialogActions-BhHM7hov.js +1 -0
  191. package/webapp/dist/assets/DialogContentText-BT2JQRmK.js +1 -0
  192. package/webapp/dist/assets/FormControlLabel-CcQByVS8.js +1 -0
  193. package/webapp/dist/assets/Grid-14PETRQW.js +1 -0
  194. package/webapp/dist/assets/InputAdornment-B8aHIsQ7.js +1 -0
  195. package/webapp/dist/assets/Skeleton-B74-Ds6O.js +37 -0
  196. package/webapp/dist/assets/Switch-DvWD2wh4.js +1 -0
  197. package/webapp/dist/assets/SwitchBase-CDU4nY8O.js +1 -0
  198. package/webapp/dist/assets/Tab-DcCOYYp5.js +1 -0
  199. package/webapp/dist/assets/TableContainer-CzTh4mu-.js +1 -0
  200. package/webapp/dist/assets/TableRow-BySEreZR.js +2 -0
  201. package/webapp/dist/assets/TextField-BLf-BHz2.js +1 -0
  202. package/webapp/dist/assets/alerts-DnRbT41C.js +1 -0
  203. package/webapp/dist/assets/apps-CdR0VH2d.js +1 -0
  204. package/webapp/dist/assets/chunk-DtcAfS_W.js +1 -0
  205. package/webapp/dist/assets/client-DU8I_lDc.js +2 -0
  206. package/webapp/dist/assets/containers-Dw-rRXV1.js +1 -0
  207. package/webapp/dist/assets/dashboard-CzgB0uZz.js +1 -0
  208. package/webapp/dist/assets/dashboard-builder-DsA0yg33.js +1 -0
  209. package/webapp/dist/assets/deployments-DtQAoIcQ.js +1 -0
  210. package/webapp/dist/assets/detail-BJR-G7JG.js +1 -0
  211. package/webapp/dist/assets/detail-nlCeSltl.js +8 -0
  212. package/webapp/dist/assets/index-ByQDwp2r.js +566 -0
  213. package/webapp/dist/assets/isMuiElement-DwF2naaF.js +1 -0
  214. package/webapp/dist/assets/logs-Kn8o4H7k.js +11 -0
  215. package/webapp/dist/assets/metrics-DN8Zu5wT.js +2 -0
  216. package/webapp/dist/assets/nodes-Bgch7AtN.js +7 -0
  217. package/webapp/dist/assets/pipelines-Cry3qm-S.js +4 -0
  218. package/webapp/dist/assets/popper-BJFSj6rc.js +1 -0
  219. package/webapp/dist/assets/preload-helper-DSXbuxSR.js +1 -0
  220. package/webapp/dist/assets/projects-Dym2GI1U.js +1 -0
  221. package/webapp/dist/assets/react-apexcharts.esm-CSGK5Cxn.js +958 -0
  222. package/webapp/dist/assets/react-apexcharts.esm-DEAWOwx5.js +1003 -0
  223. package/webapp/dist/assets/settings-va3zTcow.js +1 -0
  224. package/webapp/dist/assets/sign-in-ik35umbp.js +1 -0
  225. package/webapp/dist/assets/stacks-CVFOnxbF.js +1 -0
  226. package/webapp/dist/assets/system-info-npIXAjX2.js +1 -0
  227. package/webapp/dist/assets/topology-bDe70vLs.js +12 -0
  228. package/webapp/dist/assets/traces-DIIcT8DF.js +1 -0
  229. package/webapp/dist/assets/use-stack-context-DHLwZv1r.js +1 -0
  230. package/webapp/dist/index.html +5 -6
  231. package/webapp/dist/assets/Chip-BySxTjyN.js +0 -1
  232. package/webapp/dist/assets/DialogContentText-YQWiAVrU.js +0 -1
  233. package/webapp/dist/assets/DialogTitle-CDkgUIwp.js +0 -1
  234. package/webapp/dist/assets/FormControlLabel-Bu3CCsBM.js +0 -1
  235. package/webapp/dist/assets/Grid-BFY8hAzL.js +0 -1
  236. package/webapp/dist/assets/InputAdornment-_Dayk-3y.js +0 -3
  237. package/webapp/dist/assets/Skeleton-BGj6Sw8m.js +0 -37
  238. package/webapp/dist/assets/Switch-CA6682vv.js +0 -1
  239. package/webapp/dist/assets/TableContainer-4epq10KJ.js +0 -1
  240. package/webapp/dist/assets/TextField-C73KHMVN.js +0 -1
  241. package/webapp/dist/assets/alerts-JEQALS7Y.js +0 -1
  242. package/webapp/dist/assets/apps-DMPysEKB.js +0 -1
  243. package/webapp/dist/assets/client-DlGPter5.js +0 -110
  244. package/webapp/dist/assets/containers-CvkC7do8.js +0 -1
  245. package/webapp/dist/assets/dashboard-C0Fre9pC.js +0 -1
  246. package/webapp/dist/assets/dashboard-builder-DAghqdpE.js +0 -1
  247. package/webapp/dist/assets/deployments-Cg1lI1uT.js +0 -1
  248. package/webapp/dist/assets/detail-CyFtEson.js +0 -1
  249. package/webapp/dist/assets/detail-DqoSGKT1.js +0 -8
  250. package/webapp/dist/assets/icons-ynIWYfBP.js +0 -3
  251. package/webapp/dist/assets/index-vKrDmEA_.js +0 -259
  252. package/webapp/dist/assets/isMuiElement-BRL3YuCT.js +0 -1
  253. package/webapp/dist/assets/logs-IovIij1C.js +0 -11
  254. package/webapp/dist/assets/metrics-Dufwtwjq.js +0 -1
  255. package/webapp/dist/assets/nodes-Brvu8W3j.js +0 -7
  256. package/webapp/dist/assets/pipelines-t40X4MuC.js +0 -4
  257. package/webapp/dist/assets/prop-types-CvVtHxp4.js +0 -1
  258. package/webapp/dist/assets/react-apexcharts.esm-CLO6gala.js +0 -954
  259. package/webapp/dist/assets/settings-DTAIST3v.js +0 -1
  260. package/webapp/dist/assets/sign-in-DQEAkJum.js +0 -1
  261. package/webapp/dist/assets/stacks-BjM1f45N.js +0 -1
  262. package/webapp/dist/assets/system-info-BQSbSEK-.js +0 -1
  263. package/webapp/dist/assets/topology-6N8-Az_Z.js +0 -12
  264. package/webapp/dist/assets/traces-DVXyb-4m.js +0 -1
  265. package/webapp/dist/assets/use-stack-context-CbE8fxBA.js +0 -1
  266. /package/webapp/dist/assets/{constants-DqFQJ27U.js → constants-BgnT-Xdy.js} +0 -0
  267. /package/webapp/dist/assets/{formatters-J3Xqn6BQ.js → formatters-Do41SRmE.js} +0 -0
  268. /package/webapp/dist/assets/{fs-uP8eiZAR.js → fs-CgZLtHiQ.js} +0 -0
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./prop-types-CvVtHxp4.js";import{B as n,at as r,d as i,m as a}from"./icons-ynIWYfBP.js";import{t as o}from"./InputAdornment-_Dayk-3y.js";import{N as s,Nt as c,S as l,b as u,j as d,l as f,n as p,x as m,y as h}from"./client-DlGPter5.js";import{n as g,t as _}from"./Skeleton-BGj6Sw8m.js";import{n as v,t as y}from"./TextField-C73KHMVN.js";import{t as b}from"./Chip-BySxTjyN.js";import{t as x}from"./Switch-CA6682vv.js";import{t as S}from"./FormControlLabel-Bu3CCsBM.js";import{t as C}from"./TableContainer-4epq10KJ.js";import{A as w,B as T,M as E,S as D,_ as O,d as k,k as A,o as j,u as M,v as N,y as P,z as F}from"./index-vKrDmEA_.js";import{n as I,s as L}from"./formatters-J3Xqn6BQ.js";var R=t(e(),1),z=c(),B=`omnitron_desktop_notifications`,V=`omnitron_sound_alerts`,H=`omnitron_alert_severity`;function U(e,t){let n=localStorage.getItem(e);return n===null?t:n===`true`}function W(e,t){localStorage.setItem(e,String(t))}var G={borderRadius:2},K={p:3,"&:last-child":{pb:3}};function q({label:e,value:t,mono:n}){return(0,z.jsxs)(h,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,sx:{py:.5},children:[(0,z.jsx)(l,{variant:`body2`,color:`text.secondary`,children:e}),(0,z.jsx)(l,{variant:`body2`,fontWeight:600,sx:n?{fontFamily:`monospace`,fontSize:`0.8rem`}:void 0,children:t})]})}function J(){let e=j(e=>e.user);return e?(0,z.jsxs)(E,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(A,{title:`Profile`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},subheader:`Account information`,subheaderTypographyProps:{variant:`caption`}}),(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsxs)(h,{spacing:.5,children:[(0,z.jsx)(q,{label:`Username`,value:e.username,mono:!0}),(0,z.jsx)(q,{label:`Display Name`,value:e.displayName}),(0,z.jsx)(q,{label:`Role`,value:(0,z.jsx)(b,{label:e.role,size:`small`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,z.jsx)(q,{label:`User ID`,value:e.id,mono:!0})]})})]}):null}function Y(){let[e,t]=(0,R.useState)(``),[n,i]=(0,R.useState)(``),[c,l]=(0,R.useState)(``),[u,f]=(0,R.useState)(!1),[g,_]=(0,R.useState)(!1),[v,b]=(0,R.useState)(!1),[x,S]=(0,R.useState)(!1),[C,T]=(0,R.useState)(null),D=async r=>{if(r.preventDefault(),T(null),S(!1),!e||!n){T(`All fields are required.`);return}if(n!==c){T(`New passwords do not match.`);return}if(n.length<8){T(`New password must be at least 8 characters.`);return}b(!0);try{await p.changePassword({oldPassword:e,newPassword:n}),S(!0),t(``),i(``),l(``)}catch(e){T(e?.message??`Failed to change password`)}finally{b(!1)}};return(0,z.jsxs)(E,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(A,{title:`Change Password`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},subheader:`Update your account credentials`,subheaderTypographyProps:{variant:`caption`}}),(0,z.jsxs)(w,{sx:{...K,pt:0},children:[x&&(0,z.jsx)(m,{severity:`success`,variant:`outlined`,sx:{mb:2},onClose:()=>S(!1),children:`Password changed successfully.`}),C&&(0,z.jsx)(m,{severity:`error`,variant:`outlined`,sx:{mb:2},onClose:()=>T(null),children:C}),(0,z.jsx)(`form`,{onSubmit:D,noValidate:!0,children:(0,z.jsxs)(h,{spacing:2,children:[(0,z.jsx)(y,{size:`small`,label:`Current Password`,type:u?`text`:`password`,value:e,onChange:e=>t(e.target.value),autoComplete:`current-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,z.jsx)(o,{position:`end`,children:(0,z.jsx)(d,{size:`small`,onClick:()=>f(!u),edge:`end`,children:(0,z.jsx)(a,{open:u,sx:{fontSize:18}})})})}}}),(0,z.jsx)(y,{size:`small`,label:`New Password`,type:g?`text`:`password`,value:n,onChange:e=>i(e.target.value),autoComplete:`new-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,z.jsx)(o,{position:`end`,children:(0,z.jsx)(d,{size:`small`,onClick:()=>_(!g),edge:`end`,children:(0,z.jsx)(a,{open:g,sx:{fontSize:18}})})})}}}),(0,z.jsx)(y,{size:`small`,label:`Confirm New Password`,type:g?`text`:`password`,value:c,onChange:e=>l(e.target.value),autoComplete:`new-password`,fullWidth:!0}),(0,z.jsx)(r,{type:`submit`,variant:`contained`,size:`small`,disabled:v,startIcon:v?(0,z.jsx)(s,{size:16,color:`inherit`}):void 0,sx:{alignSelf:`flex-start`},children:v?`Changing...`:`Change Password`})]})})]})]})}function X(){let e=j(e=>e.user),t=f(),[n,a]=(0,R.useState)([]),[o,c]=(0,R.useState)(!0),[u,g]=(0,R.useState)(null),[v,y]=(0,R.useState)(null),x=(0,R.useCallback)(async()=>{if(e)try{let e=await p.getActiveSessions();a(Array.isArray(e)?e:[]),g(null)}catch(e){g(e?.message??`Failed to fetch sessions`)}finally{c(!1)}},[e,t]);(0,R.useEffect)(()=>{x()},[x]);let S=async e=>{y(e);try{await p.signOut({sessionId:e}),a(t=>t.filter(t=>t.id!==e))}catch(e){g(`Failed to revoke: ${e?.message??`Unknown error`}`)}finally{y(null)}};return(0,z.jsxs)(E,{variant:`outlined`,sx:G,children:[(0,z.jsx)(A,{title:`Active Sessions`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},subheader:o?`Loading...`:`${n.length} active session${n.length===1?``:`s`}`,subheaderTypographyProps:{variant:`caption`},action:n.filter(e=>!e.current).length>1?(0,z.jsx)(r,{size:`small`,color:`error`,variant:`text`,onClick:async()=>{for(let e of n.filter(e=>!e.current))try{await p.signOut({sessionId:e.id})}catch{}await x()},sx:{fontSize:`0.7rem`},children:`Revoke All Others`}):void 0}),u&&(0,z.jsx)(m,{severity:`error`,variant:`outlined`,sx:{mx:2,mb:1},onClose:()=>g(null),children:u}),o?(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsx)(h,{spacing:1,children:[...[,,]].map((e,t)=>(0,z.jsx)(_,{height:48},t))})}):n.length===0?(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsx)(l,{variant:`body2`,color:`text.secondary`,children:`No active sessions found.`})}):(0,z.jsx)(C,{children:(0,z.jsxs)(P,{size:`small`,children:[(0,z.jsx)(O,{children:(0,z.jsxs)(T,{children:[(0,z.jsx)(F,{children:`Session`}),(0,z.jsx)(F,{children:`IP Address`}),(0,z.jsx)(F,{children:`Created`}),(0,z.jsx)(F,{children:`Expires`}),(0,z.jsx)(F,{align:`center`,children:`Actions`})]})}),(0,z.jsx)(N,{children:n.map(e=>(0,z.jsxs)(T,{children:[(0,z.jsx)(F,{children:(0,z.jsxs)(h,{direction:`row`,spacing:1,alignItems:`center`,children:[(0,z.jsxs)(l,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:[e.id.slice(0,8),`...`]}),e.current&&(0,z.jsx)(b,{label:`current`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:20,fontSize:10}})]})}),(0,z.jsx)(F,{children:(0,z.jsx)(l,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.ipAddress??`--`})}),(0,z.jsx)(F,{children:(0,z.jsx)(l,{variant:`caption`,color:`text.secondary`,children:L(e.createdAt)})}),(0,z.jsx)(F,{children:(0,z.jsx)(l,{variant:`caption`,color:`text.secondary`,children:I(e.expiresAt)})}),(0,z.jsx)(F,{align:`center`,children:!e.current&&(0,z.jsx)(d,{size:`small`,color:`error`,disabled:v===e.id,onClick:()=>S(e.id),title:`Revoke session`,children:v===e.id?(0,z.jsx)(s,{size:16,color:`inherit`}):(0,z.jsx)(i,{sx:{fontSize:18}})})})]},e.id))})]})})]})}function Z(){let[e,t]=(0,R.useState)(()=>U(B,!1)),[r,i]=(0,R.useState)(()=>U(V,!0)),[a,o]=(0,R.useState)(()=>localStorage.getItem(H)||`error`),[s,c]=(0,R.useState)(()=>typeof Notification<`u`?Notification.permission:`unsupported`),d=async(e,n)=>{if(n&&typeof Notification<`u`&&Notification.permission===`default`){let e=await Notification.requestPermission();if(c(e),e!==`granted`){t(!1),W(B,!1);return}}t(n),W(B,n)};return(0,z.jsxs)(E,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(A,{title:`Notifications`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},subheader:`Configure alert delivery preferences`,subheaderTypographyProps:{variant:`caption`}}),(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsxs)(h,{spacing:3,children:[(0,z.jsx)(S,{control:(0,z.jsx)(x,{size:`small`,checked:e,onChange:d,disabled:s===`denied`}),label:(0,z.jsxs)(u,{children:[(0,z.jsx)(l,{variant:`body2`,fontWeight:600,children:`Desktop notifications`}),(0,z.jsx)(l,{variant:`caption`,color:`text.secondary`,children:s===`denied`?`Blocked by browser — enable in site settings`:s===`unsupported`?`Not supported`:`Show browser notifications for alerts`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,z.jsx)(S,{control:(0,z.jsx)(x,{size:`small`,checked:r,onChange:(e,t)=>{i(t),W(V,t)}}),label:(0,z.jsxs)(u,{children:[(0,z.jsx)(l,{variant:`body2`,fontWeight:600,children:`Sound alerts`}),(0,z.jsx)(l,{variant:`caption`,color:`text.secondary`,children:`Play audio cue on critical alerts`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,z.jsx)(g,{}),(0,z.jsxs)(u,{children:[(0,z.jsx)(l,{variant:`body2`,fontWeight:600,sx:{mb:1},children:`Minimum alert severity`}),(0,z.jsx)(l,{variant:`caption`,color:`text.secondary`,sx:{mb:1.5,display:`block`},children:`Only receive notifications at or above this level`}),(0,z.jsx)(v,{size:`small`,fullWidth:!0,children:(0,z.jsxs)(n,{value:a,onChange:e=>{o(e.target.value),localStorage.setItem(H,e.target.value)},children:[(0,z.jsx)(D,{value:`info`,children:`Info`}),(0,z.jsx)(D,{value:`warn`,children:`Warning`}),(0,z.jsx)(D,{value:`error`,children:`Error`}),(0,z.jsx)(D,{value:`fatal`,children:`Fatal`})]})})]})]})})]})}function Q(){return(0,z.jsxs)(k,{defaultValue:`general`,keepMounted:!0,children:[(0,z.jsx)(M,{value:`general`,label:`General`,children:(0,z.jsx)(J,{})}),(0,z.jsx)(M,{value:`security`,label:`Security`,children:(0,z.jsx)(Y,{})}),(0,z.jsx)(M,{value:`sessions`,label:`Sessions`,children:(0,z.jsx)(X,{})}),(0,z.jsx)(M,{value:`notifications`,label:`Notifications`,children:(0,z.jsx)(Z,{})})]})}export{Q as default};
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./prop-types-CvVtHxp4.js";import{at as n,m as r}from"./icons-ynIWYfBP.js";import{f as i,t as a,u as o}from"./InputAdornment-_Dayk-3y.js";import{N as s,Nt as c,S as l,j as u,x as d,y as f}from"./client-DlGPter5.js";import{t as p}from"./TextField-C73KHMVN.js";import{o as m,t as h}from"./index-vKrDmEA_.js";var g=t(e(),1),_=c();function v(){let e=o(),[t]=i(),c=m(e=>e.signIn),[v,y]=(0,g.useState)(``),[b,x]=(0,g.useState)(``),[S,C]=(0,g.useState)(!1),[w,T]=(0,g.useState)(``),[E,D]=(0,g.useState)(!1),O=t.get(`returnTo`)??`/`;return(0,_.jsxs)(f,{spacing:3,sx:{maxWidth:420,mx:`auto`,width:1},children:[(0,_.jsxs)(f,{spacing:1.5,alignItems:`center`,textAlign:`center`,children:[(0,_.jsx)(h,{size:48}),(0,_.jsx)(l,{variant:`h4`,children:`Omnitron Console`}),(0,_.jsx)(l,{variant:`body2`,color:`text.secondary`,children:`Sign in to manage your infrastructure`})]}),w&&(0,_.jsx)(d,{severity:`error`,variant:`outlined`,onClose:()=>T(``),children:w}),(0,_.jsx)(`form`,{onSubmit:async t=>{if(t.preventDefault(),!(!v.trim()||!b.trim())){T(``),D(!0);try{await c(v,b),e(decodeURIComponent(O),{replace:!0})}catch(e){T(e?.message??`Authentication failed`)}finally{D(!1)}}},noValidate:!0,children:(0,_.jsxs)(f,{spacing:2.5,children:[(0,_.jsx)(p,{fullWidth:!0,label:`Username`,autoComplete:`username`,autoFocus:!0,value:v,onChange:e=>y(e.target.value)}),(0,_.jsx)(p,{fullWidth:!0,label:`Password`,type:S?`text`:`password`,autoComplete:`current-password`,value:b,onChange:e=>x(e.target.value),slotProps:{input:{endAdornment:(0,_.jsx)(a,{position:`end`,children:(0,_.jsx)(u,{onClick:()=>C(!S),edge:`end`,children:(0,_.jsx)(r,{open:S})})})}}}),(0,_.jsx)(n,{fullWidth:!0,size:`large`,type:`submit`,variant:`contained`,disabled:E,startIcon:E?(0,_.jsx)(s,{size:20,color:`inherit`}):void 0,children:E?`Signing in...`:`Sign In`})]})})]})}export{v as default};
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./prop-types-CvVtHxp4.js";import{D as n,E as r,N as i,P as a,T as o,at as s,d as c}from"./icons-ynIWYfBP.js";import{i as l,u}from"./InputAdornment-_Dayk-3y.js";import{N as d,Nt as f,S as p,a as m,b as h,h as g,j as _,p as v,pt as y,x as b,y as x}from"./client-DlGPter5.js";import{t as S}from"./Grid-BFY8hAzL.js";import{t as C}from"./Skeleton-BGj6Sw8m.js";import{t as w}from"./TextField-C73KHMVN.js";import{t as T}from"./Chip-BySxTjyN.js";import{n as E,r as D,t as O}from"./DialogTitle-CDkgUIwp.js";import{t as k}from"./DialogContentText-YQWiAVrU.js";import{t as A}from"./FormControlLabel-Bu3CCsBM.js";import{A as j,D as M,L as N,M as P,a as F,c as ee,i as I,j as L,l as R,m as z,r as B,s as te}from"./index-vKrDmEA_.js";import{o as V}from"./formatters-J3Xqn6BQ.js";var H=t(e(),1),U=f(),ne=[{value:`local`,title:`Local`,description:`Run everything on this machine. Docker containers for infrastructure.`},{value:`remote`,title:`Remote`,description:`Deploy to a single remote server via SSH.`},{value:`cluster`,title:`Cluster`,description:`Distribute across multiple nodes.`}],re=[{label:`Type`},{label:`Nodes`},{label:`Applications`},{label:`Name`}];function W({open:e,onClose:t,onCreated:n}){let r=F(e=>e.createStack),i=F(e=>e.activeProject),[a,o]=(0,H.useState)(null),[c,l]=(0,H.useState)([]),[u,f]=(0,H.useState)([]),[_,S]=(0,H.useState)(``),[C,k]=(0,H.useState)(!1),[I,L]=(0,H.useState)(null),[R,z]=(0,H.useState)([]),[B,V]=(0,H.useState)(!1),[W,K]=(0,H.useState)([]),[q,J]=(0,H.useState)(!1),Y=(0,H.useMemo)(()=>a===`local`?re.filter(e=>e.label!==`Nodes`):re,[a]),X=ee({totalSteps:Y.length});(0,H.useEffect)(()=>{if(!e)return;let t=Y.findIndex(e=>e.label===`Nodes`);X.activeStep===t&&t!==-1&&(V(!0),v.listNodes().then(e=>{z(Array.isArray(e)?e:e?.nodes??[])}).catch(()=>z([])).finally(()=>V(!1)))},[e,X.activeStep,Y]),(0,H.useEffect)(()=>{if(!e)return;let t=Y.findIndex(e=>e.label===`Applications`);if(X.activeStep===t){J(!0);let e=F.getState().activeProject;e?g.scanRequirements({project:e}).then(e=>{let t=Object.keys(e?.apps??{});K(t.map(e=>({name:e}))),u.length===0&&f(t)}).catch(()=>{m.list().then(e=>{let t=Array.isArray(e)?e:[];K(t),u.length===0&&f(t.map(e=>e.name))}).catch(()=>K([]))}).finally(()=>J(!1)):J(!1)}},[e,X.activeStep,Y]),(0,H.useEffect)(()=>{if(!e)return;let t=Y.findIndex(e=>e.label===`Name`);X.activeStep===t&&!_&&S(`${a===`cluster`?`prod`:a===`remote`?`staging`:`dev`}-1`)},[e,X.activeStep,Y,a,_]);let Z=(0,H.useCallback)(()=>{o(null),l([]),f([]),S(``),L(null),k(!1),z([]),K([]),X.reset()},[X]),Q=(0,H.useCallback)(()=>{C||(Z(),t())},[C,Z,t]),$=Y[X.activeStep]?.label,ie=(0,H.useMemo)(()=>{switch($){case`Type`:return a!==null;case`Nodes`:return a===`remote`?c.length===1:a===`cluster`?c.length>=2:!0;case`Applications`:return u.length>0;case`Name`:return/^[a-z][a-z0-9-]*$/.test(_);default:return!1}},[$,a,c,u,_]),ae=(0,H.useCallback)(()=>{X.isLastStep?oe():X.nextStep()},[X]),oe=(0,H.useCallback)(async()=>{if(!(!i||!a)){k(!0),L(null);try{await r(i,{name:_.trim(),type:a,apps:u.length===W.length?`all`:u,nodeIds:a===`local`?void 0:c}),Z(),n()}catch(e){L(e?.message??`Failed to create stack.`)}finally{k(!1)}}},[i,a,_,u,W.length,c,r,Z,n]),se=(0,H.useCallback)(e=>{l(a===`remote`?t=>t.includes(e)?[]:[e]:t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[a]),ce=(0,H.useCallback)(e=>{f(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),le=(0,H.useCallback)(()=>{u.length===W.length?f([]):f(W.map(e=>e.name))},[u.length,W]);return(0,U.jsxs)(M,{open:e,onClose:Q,maxWidth:`sm`,fullWidth:!0,children:[(0,U.jsx)(O,{sx:{fontWeight:700},children:`Create Stack`}),(0,U.jsxs)(E,{children:[(0,U.jsx)(h,{sx:{mb:3,mt:1},children:(0,U.jsx)(te,{steps:Y,activeStep:X.activeStep,alternativeLabel:!0})}),I&&(0,U.jsx)(b,{severity:`error`,variant:`outlined`,sx:{mb:2},onClose:()=>L(null),children:I}),$===`Type`&&(0,U.jsx)(x,{spacing:1.5,children:ne.map(e=>(0,U.jsx)(P,{variant:`outlined`,onClick:()=>o(e.value),sx:{cursor:`pointer`,transition:`border-color 0.2s, background-color 0.2s`,borderColor:a===e.value?e=>e.palette.primary.main:void 0,bgcolor:a===e.value?e=>y(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>y(e.palette.primary.main,.4)}},children:(0,U.jsxs)(j,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,U.jsx)(p,{variant:`subtitle2`,sx:{fontWeight:700},children:e.title}),(0,U.jsx)(p,{variant:`caption`,color:`text.secondary`,children:e.description})]})},e.value))}),$===`Nodes`&&(0,U.jsxs)(x,{spacing:1.5,children:[(0,U.jsx)(p,{variant:`body2`,color:`text.secondary`,sx:{mb:.5},children:a===`remote`?`Select a target node for deployment.`:`Select at least 2 nodes for the cluster.`}),B?(0,U.jsx)(h,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,U.jsx)(d,{size:28})}):R.length===0?(0,U.jsx)(b,{severity:`info`,variant:`outlined`,children:`No remote nodes configured. Add nodes in the Nodes section first.`}):R.map(e=>{let t=c.includes(e.id),n=e.status===`online`;return(0,U.jsx)(P,{variant:`outlined`,onClick:()=>se(e.id),sx:{cursor:`pointer`,transition:`border-color 0.2s, background-color 0.2s`,borderColor:t?e=>e.palette.primary.main:void 0,bgcolor:t?e=>y(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>y(e.palette.primary.main,.4)}},children:(0,U.jsxs)(j,{sx:{py:1.5,"&:last-child":{pb:1.5},display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,U.jsxs)(h,{children:[(0,U.jsx)(p,{variant:`subtitle2`,sx:{fontWeight:600},children:e.name}),(0,U.jsx)(p,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:e.host})]}),(0,U.jsx)(T,{label:n?`Online`:`Offline`,color:n?`success`:`default`,size:`small`,sx:{height:20,fontSize:`0.65rem`}})]})},e.id)})]}),$===`Applications`&&(0,U.jsx)(x,{spacing:1,children:q?(0,U.jsx)(h,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,U.jsx)(d,{size:28})}):W.length===0?(0,U.jsx)(b,{severity:`info`,variant:`outlined`,children:`No applications found in the project.`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(A,{control:(0,U.jsx)(N,{checked:u.length===W.length,indeterminate:u.length>0&&u.length<W.length,onChange:le,size:`small`}),label:(0,U.jsx)(p,{variant:`subtitle2`,sx:{fontWeight:600},children:`Select All`}),sx:{mb:.5}}),W.map(e=>(0,U.jsx)(A,{control:(0,U.jsx)(N,{checked:u.includes(e.name),onChange:()=>ce(e.name),size:`small`}),label:(0,U.jsx)(p,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.name}),sx:{ml:1}},e.name))]})}),$===`Name`&&(0,U.jsxs)(x,{spacing:2.5,children:[(0,U.jsx)(w,{label:`Stack Name`,value:_,onChange:e=>S(e.target.value.toLowerCase().replace(/[^a-z0-9-]/g,``)),placeholder:`e.g., dev-1, staging, prod`,fullWidth:!0,size:`small`,helperText:`Lowercase letters, numbers, and hyphens only.`,slotProps:{input:{sx:{fontFamily:`monospace`}}}}),(0,U.jsxs)(h,{children:[(0,U.jsx)(p,{variant:`subtitle2`,sx:{fontWeight:700,mb:1},children:`Review`}),(0,U.jsxs)(x,{spacing:.5,children:[(0,U.jsx)(G,{label:`Type`,value:a??``}),a!==`local`&&(0,U.jsx)(G,{label:`Nodes`,value:c.length>0?R.filter(e=>c.includes(e.id)).map(e=>e.name).join(`, `):`None`}),(0,U.jsx)(G,{label:`Applications`,value:u.length===W.length?`All (${W.length})`:`${u.length} of ${W.length}`})]})]})]})]}),(0,U.jsxs)(D,{sx:{px:3,py:2},children:[(0,U.jsx)(s,{onClick:Q,disabled:C,children:`Cancel`}),(0,U.jsx)(h,{sx:{flex:1}}),!X.isFirstStep&&(0,U.jsx)(s,{onClick:X.prevStep,disabled:C,children:`Back`}),(0,U.jsx)(s,{variant:`contained`,onClick:ae,disabled:!ie||C,startIcon:C?(0,U.jsx)(d,{size:16}):void 0,children:X.isLastStep?`Create`:`Next`})]})]})}function G({label:e,value:t}){return(0,U.jsxs)(h,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,U.jsx)(p,{variant:`caption`,color:`text.secondary`,children:e}),(0,U.jsx)(p,{variant:`caption`,sx:{fontWeight:600,textTransform:`capitalize`},children:t})]})}var K={running:{color:`success`,label:`Running`},starting:{color:`warning`,label:`Starting`},stopping:{color:`warning`,label:`Stopping`},degraded:{color:`warning`,label:`Degraded`},error:{color:`error`,label:`Error`},stopped:{color:`default`,label:`Stopped`}},q={local:`Local`,remote:`Remote (SSH)`,cluster:`Cluster`};function J(){let e=B(),t=I(),i=F(e=>e.loading),a=F(e=>e.error),o=F(e=>e.clearError),c=F(e=>e.pendingOps),d=F(e=>e.fetchStacks),f=F(e=>e.startStack),p=F(e=>e.stopStack),m=F(e=>e.deleteStack),g=u(),[v,y]=(0,H.useState)(!1),[w,T]=(0,H.useState)(null);(0,H.useEffect)(()=>{e&&d(e)},[e,d]);let A=Object.keys(c).length>0;(0,H.useEffect)(()=>{if(!e)return;let t=setInterval(()=>d(e),A?3e3:1e4);return()=>clearInterval(t)},[e,d,A]);let j=(0,H.useCallback)(async t=>{if(e)try{await f(e,t)}catch{}},[e,f]),N=(0,H.useCallback)(async t=>{if(e)try{await p(e,t)}catch{}},[e,p]),P=(0,H.useCallback)(async()=>{if(!(!e||!w)){try{await m(e,w)}catch{}T(null)}},[e,w,m]);return e?(0,U.jsxs)(x,{spacing:3,sx:{flex:1},children:[(0,U.jsx)(R,{linkComponent:l,links:[{name:`Stacks`}],action:(0,U.jsxs)(h,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,U.jsx)(_,{size:`small`,onClick:()=>d(e),title:`Refresh`,children:(0,U.jsx)(n,{})}),(0,U.jsx)(s,{variant:`contained`,size:`small`,startIcon:(0,U.jsx)(r,{}),onClick:()=>y(!0),children:`Create`})]})}),(0,U.jsx)(W,{open:v,onClose:()=>y(!1),onCreated:()=>{y(!1),d(e)}}),a&&(0,U.jsx)(b,{severity:`error`,onClose:o,children:a}),i&&t.length===0?(0,U.jsx)(S,{container:!0,spacing:2,children:[1,2,3].map(e=>(0,U.jsx)(S,{size:{xs:12,sm:6,md:4},children:(0,U.jsx)(C,{variant:`rounded`,height:200})},e))}):t.length===0?(0,U.jsx)(h,{sx:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,U.jsx)(z,{title:`No stacks`,description:`Create your first stack to deploy applications.`})}):(0,U.jsx)(S,{container:!0,spacing:2,children:t.map(t=>(0,U.jsx)(S,{size:{xs:12,sm:6,md:4},children:(0,U.jsx)(Y,{stack:t,pendingOp:e?c[`${e}/${t.name}`]??null:null,onStart:()=>j(t.name),onStop:()=>N(t.name),onDelete:()=>T(t.name),onDetail:()=>g(`/stacks/${t.name}`)})},t.name))}),(0,U.jsxs)(M,{open:w!==null,onClose:()=>T(null),children:[(0,U.jsx)(O,{children:`Delete Stack`}),(0,U.jsx)(E,{children:(0,U.jsxs)(k,{children:[`Are you sure you want to delete stack `,(0,U.jsx)(`strong`,{children:w}),`? This action cannot be undone.`]})}),(0,U.jsxs)(D,{children:[(0,U.jsx)(s,{onClick:()=>T(null),children:`Cancel`}),(0,U.jsx)(s,{onClick:P,color:`error`,variant:`contained`,children:`Delete`})]})]})]}):(0,U.jsx)(x,{spacing:3,children:(0,U.jsx)(b,{severity:`info`,children:`No project selected. Register a project first.`})})}function Y({stack:e,pendingOp:t,onStart:n,onStop:r,onDelete:l,onDetail:u}){let f=K[e.status]??K.stopped,m=e.status===`running`,g=e.status===`stopped`,v=e.status===`starting`||e.status===`stopping`||!!t,b=!!t;return(0,U.jsxs)(P,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,cursor:`pointer`,transition:`border-color 0.2s`,"&:hover":{borderColor:e=>y(e.palette.primary.main,.3)}},variant:`outlined`,onClick:u,children:[(0,U.jsxs)(j,{sx:{flex:1},children:[(0,U.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1.5},children:[(0,U.jsx)(p,{variant:`h6`,sx:{fontWeight:700,fontSize:`1.1rem`},children:e.name}),(0,U.jsx)(T,{label:f.label,color:f.color,size:`small`,sx:{height:22,fontSize:`0.7rem`}})]}),(0,U.jsx)(p,{variant:`caption`,sx:{color:`text.secondary`,display:`block`,mb:1.5},children:q[e.type]??e.type}),(0,U.jsxs)(h,{sx:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:1},children:[(0,U.jsx)(X,{label:`Apps`,value:`${e.apps.filter(e=>e.status===`online`).length}/${e.apps.length}`}),(0,U.jsx)(X,{label:`Nodes`,value:String(e.nodes.length)}),m&&e.uptime>0&&(0,U.jsx)(X,{label:`Uptime`,value:V(e.uptime)}),e.type!==`local`&&(0,U.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,U.jsx)(a,{sx:{fontSize:14,color:`text.secondary`}}),(0,U.jsxs)(p,{variant:`caption`,sx:{color:`text.secondary`},children:[e.nodes.filter(e=>e.connected).length,`/`,e.nodes.length,` synced`]})]})]}),e.portRange&&(0,U.jsxs)(p,{variant:`caption`,sx:{color:`text.disabled`,mt:1,display:`block`,fontFamily:`monospace`},children:[`Ports: `,e.portRange.start,`–`,e.portRange.end]})]}),(0,U.jsxs)(L,{sx:{px:2,pb:1.5,justifyContent:`space-between`},onClick:e=>e.stopPropagation(),children:[(0,U.jsx)(h,{children:g&&!b&&(0,U.jsx)(_,{size:`small`,color:`error`,onClick:l,title:`Delete stack`,children:(0,U.jsx)(c,{})})}),(0,U.jsx)(h,{children:v?(0,U.jsx)(s,{size:`small`,disabled:!0,startIcon:(0,U.jsx)(d,{size:14}),children:t===`starting`||e.status===`starting`?`Starting...`:`Stopping...`}):g?(0,U.jsx)(s,{size:`small`,startIcon:(0,U.jsx)(o,{}),color:`success`,onClick:n,children:`Start`}):m?(0,U.jsx)(s,{size:`small`,startIcon:(0,U.jsx)(i,{}),color:`error`,onClick:r,children:`Stop`}):(0,U.jsx)(T,{label:f.label,size:`small`,color:f.color,sx:{height:20,fontSize:`0.65rem`}})})]})]})}function X({label:e,value:t}){return(0,U.jsxs)(h,{children:[(0,U.jsx)(p,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`,textTransform:`uppercase`},children:e}),(0,U.jsx)(p,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.85rem`},children:t})]})}export{J as default};
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./prop-types-CvVtHxp4.js";import{Nt as n,S as r,_ as i,b as a,pt as o,rt as s,x as c,y as l}from"./client-DlGPter5.js";import{t as u}from"./Grid-BFY8hAzL.js";import{n as d,t as f}from"./Skeleton-BGj6Sw8m.js";import{t as p}from"./Chip-BySxTjyN.js";import{A as m,M as h,T as g,k as _}from"./index-vKrDmEA_.js";import{r as v}from"./formatters-J3Xqn6BQ.js";var y=t(e(),1),b=n(),x={borderRadius:2,height:`100%`},S={p:3,"&:last-child":{pb:3}};function C({label:e,value:t,mono:n}){return(0,b.jsxs)(l,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,sx:{py:.5},children:[(0,b.jsx)(r,{variant:`body2`,color:`text.secondary`,children:e}),(0,b.jsx)(r,{variant:`body2`,fontWeight:600,sx:n?{fontFamily:`monospace`,fontSize:`0.8rem`}:void 0,children:t})]})}function w({label:e,used:t,total:n,color:i=`primary`}){let o=n>0?t/n*100:0,s=o>90?`error`:o>70?`warning`:i;return(0,b.jsxs)(a,{sx:{mb:1.5},children:[(0,b.jsxs)(l,{direction:`row`,justifyContent:`space-between`,sx:{mb:.5},children:[(0,b.jsx)(r,{variant:`caption`,color:`text.secondary`,children:e}),(0,b.jsxs)(r,{variant:`caption`,fontWeight:600,sx:{fontFamily:`monospace`,fontSize:`0.7rem`},children:[v(t),` / `,v(n),` (`,o.toFixed(1),`%)`]})]}),(0,b.jsx)(g,{variant:`determinate`,value:Math.min(o,100),color:s,sx:{height:6,borderRadius:3}})]})}function T(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);return n>0?r>0?`${n}d ${r}h ${i}m`:`${n}d ${i}m`:r>0?`${r}h ${i}m`:`${i}m`}function E(){let e=s(),[t,n]=(0,y.useState)(null),[g,E]=(0,y.useState)(!0),[D,O]=(0,y.useState)(null),k=(0,y.useRef)(!0),A=(0,y.useCallback)(async()=>{try{n(await i.getSnapshot()),O(null)}catch(e){O(e?.message??`Failed to fetch system info`)}finally{k.current&&=(E(!1),!1)}},[]);if((0,y.useEffect)(()=>{A();let e=setInterval(A,5e3);return()=>clearInterval(e)},[A]),g)return(0,b.jsx)(u,{container:!0,spacing:3,children:Array.from({length:6}).map((e,t)=>(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsx)(f,{variant:`rounded`,height:200})},t))});if(D&&!t)return(0,b.jsx)(c,{severity:`error`,children:D});let j=t;return j?e.palette.success.main:e.palette.error.main,(0,b.jsxs)(l,{spacing:3,children:[D&&(0,b.jsx)(c,{severity:`warning`,variant:`outlined`,children:D}),(0,b.jsxs)(u,{container:!0,spacing:3,children:[(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Daemon`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},action:(0,b.jsx)(p,{label:j?.daemon?.role??`master`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,b.jsxs)(m,{sx:{...S,pt:0},children:[(0,b.jsxs)(l,{spacing:.5,children:[(0,b.jsx)(C,{label:`PID`,value:j?.daemon?.pid??`--`,mono:!0}),(0,b.jsx)(C,{label:`Uptime`,value:j?.daemon?.uptimeMs?T(j.daemon.uptimeMs):`--`}),(0,b.jsx)(C,{label:`Node.js`,value:j?.daemon?.nodeVersion??`--`,mono:!0}),(0,b.jsx)(C,{label:`V8`,value:j?.daemon?.v8Version??`--`,mono:!0})]}),j?.daemon?.memoryUsage&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d,{sx:{my:1.5}}),(0,b.jsx)(r,{variant:`caption`,color:`text.secondary`,fontWeight:600,sx:{mb:1,display:`block`},children:`Process Memory`}),(0,b.jsx)(w,{label:`Heap`,used:j.daemon.memoryUsage.heapUsed,total:j.daemon.memoryUsage.heapTotal}),(0,b.jsx)(C,{label:`RSS`,value:v(j.daemon.memoryUsage.rss),mono:!0}),(0,b.jsx)(C,{label:`External`,value:v(j.daemon.memoryUsage.external),mono:!0})]})]})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`CPU`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},action:j?.cpu?.currentLoad==null?void 0:(0,b.jsx)(p,{label:`${j.cpu.currentLoad.toFixed(1)}%`,size:`small`,color:j.cpu.currentLoad>80?`error`:j.cpu.currentLoad>60?`warning`:`success`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,b.jsxs)(m,{sx:{...S,pt:0},children:[(0,b.jsxs)(l,{spacing:.5,children:[(0,b.jsx)(C,{label:`Model`,value:`${j?.cpu?.manufacturer??``} ${j?.cpu?.brand??``}`}),(0,b.jsx)(C,{label:`Cores`,value:`${j?.cpu?.physicalCores??0} physical / ${j?.cpu?.cores??0} logical`}),(0,b.jsx)(C,{label:`Speed`,value:j?.cpu?.speed?`${j.cpu.speed} GHz`:`--`}),j?.cpu?.temperature!=null&&(0,b.jsx)(C,{label:`Temperature`,value:`${j.cpu.temperature}°C`})]}),j?.cpu?.loadPerCore?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d,{sx:{my:1.5}}),(0,b.jsx)(r,{variant:`caption`,color:`text.secondary`,fontWeight:600,sx:{mb:1,display:`block`},children:`Load per Core`}),(0,b.jsx)(a,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`},children:j.cpu.loadPerCore.map((t,n)=>(0,b.jsxs)(a,{sx:{width:32,height:32,borderRadius:1,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`0.6rem`,fontWeight:700,fontFamily:`monospace`,bgcolor:o(t>80?e.palette.error.main:t>50?e.palette.warning.main:e.palette.success.main,.12),color:t>80?`error.main`:t>50?`warning.main`:`success.main`,border:`1px solid`,borderColor:o(t>80?e.palette.error.main:t>50?e.palette.warning.main:e.palette.success.main,.2)},children:[t.toFixed(0),`%`]},n))})]})]})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Memory`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:j?.memory&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w,{label:`RAM`,used:j.memory.used,total:j.memory.total,color:`primary`}),j.memory.swapTotal>0&&(0,b.jsx)(w,{label:`Swap`,used:j.memory.swapUsed,total:j.memory.swapTotal,color:`warning`}),(0,b.jsxs)(l,{spacing:.5,sx:{mt:1},children:[(0,b.jsx)(C,{label:`Total`,value:v(j.memory.total),mono:!0}),(0,b.jsx)(C,{label:`Available`,value:v(j.memory.available),mono:!0}),(0,b.jsx)(C,{label:`Free`,value:v(j.memory.free),mono:!0})]})]})})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Disks`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:j?.disks?.length>0?j.disks.map((e,t)=>(0,b.jsx)(a,{children:(0,b.jsx)(w,{label:`${e.mount} (${e.type})`,used:e.used,total:e.size,color:`primary`})},t)):(0,b.jsx)(r,{variant:`body2`,color:`text.secondary`,children:`No disk information available`})})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Network`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:j?.network?.interfaces?.length>0?(0,b.jsxs)(l,{spacing:1,children:[j.network.interfaces.slice(0,5).map((e,t)=>(0,b.jsxs)(a,{children:[(0,b.jsxs)(l,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,children:[(0,b.jsx)(r,{variant:`body2`,fontWeight:600,children:e.iface}),(0,b.jsx)(p,{label:e.operstate,size:`small`,color:e.operstate===`up`?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,b.jsxs)(r,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`,fontSize:`0.7rem`},children:[e.ip4||e.ip6||`--`,e.speed?` · ${e.speed} Mbps`:``]})]},t)),(j.network.rxSec>0||j.network.txSec>0)&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d,{sx:{my:.5}}),(0,b.jsxs)(l,{direction:`row`,spacing:2,children:[(0,b.jsx)(C,{label:`RX`,value:`${v(j.network.rxSec)}/s`,mono:!0}),(0,b.jsx)(C,{label:`TX`,value:`${v(j.network.txSec)}/s`,mono:!0})]})]})]}):(0,b.jsx)(r,{variant:`body2`,color:`text.secondary`,children:`No network interfaces`})})]})}),j?.docker&&(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Docker`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:(0,b.jsxs)(l,{spacing:.5,children:[(0,b.jsx)(C,{label:`Running`,value:j.docker.running}),(0,b.jsx)(C,{label:`Paused`,value:j.docker.paused}),(0,b.jsx)(C,{label:`Stopped`,value:j.docker.stopped})]})})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Operating System`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:(0,b.jsxs)(l,{spacing:.5,children:[(0,b.jsx)(C,{label:`Platform`,value:j?.os?.platform??`--`}),(0,b.jsx)(C,{label:`Distribution`,value:j?.os?.distro??`--`}),(0,b.jsx)(C,{label:`Release`,value:j?.os?.release??`--`,mono:!0}),(0,b.jsx)(C,{label:`Kernel`,value:j?.os?.kernel??`--`,mono:!0}),(0,b.jsx)(C,{label:`Architecture`,value:j?.os?.arch??`--`,mono:!0}),(0,b.jsx)(C,{label:`Hostname`,value:j?.os?.hostname??`--`,mono:!0}),(0,b.jsx)(C,{label:`Uptime`,value:j?.os?.uptime?T(j.os.uptime*1e3):`--`})]})})]})}),(0,b.jsx)(u,{size:{xs:12,md:6},children:(0,b.jsxs)(h,{variant:`outlined`,sx:x,children:[(0,b.jsx)(_,{title:`Build`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(m,{sx:{...S,pt:0},children:(0,b.jsxs)(l,{spacing:.5,children:[(0,b.jsx)(C,{label:`Console`,value:`Vite + React 19`,mono:!0}),(0,b.jsx)(C,{label:`RPC`,value:`Netron HTTP`,mono:!0}),(0,b.jsx)(C,{label:`Auth`,value:`JWT (HS256)`,mono:!0}),(0,b.jsx)(C,{label:`Design System`,value:`Prism (MUI v7)`,mono:!0}),(0,b.jsx)(C,{label:`Framework`,value:`Titan`,mono:!0}),(0,b.jsx)(C,{label:`PM`,value:`Titan-PM (child processes)`,mono:!0})]})})]})})]})]})}export{E as default};