@omnitron-dev/omnitron 0.1.3 → 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
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DtcAfS_W.js";import{n as t,u as n}from"./client-DU8I_lDc.js";import{t as r}from"./Skeleton-B74-Ds6O.js";import{i,n as a,t as o}from"./TextField-BLf-BHz2.js";import{B as s,Dt as c,Et as l,O as u,Sn as d,U as f,Vn as p,Vt as m,hn as h,ht as g,jn as _,k as v,qt as y,r as b,s as x,xn as S}from"./index-ByQDwp2r.js";import{t as C}from"./Card-vO88g06B.js";import{t as w}from"./CardContent-BA_Xmmhk.js";import{t as T}from"./CardHeader-ceIs__6x.js";import{t as E}from"./Chip-Ckk0xUhK.js";import{t as D}from"./Switch-DvWD2wh4.js";import{a as O,i as k,n as A,r as j,t as M}from"./TableRow-BySEreZR.js";import{t as N}from"./TableContainer-CzTh4mu-.js";import{t as P}from"./FormControlLabel-CcQByVS8.js";import{n as F,s as I}from"./formatters-Do41SRmE.js";import{t as L}from"./InputAdornment-B8aHIsQ7.js";var R=e(p(),1),z=_(),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)(g,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,sx:{py:.5},children:[(0,z.jsx)(m,{variant:`body2`,color:`text.secondary`,children:e}),(0,z.jsx)(m,{variant:`body2`,fontWeight:600,sx:n?{fontFamily:`monospace`,fontSize:`0.8rem`}:void 0,children:t})]})}function J(){let e=h(e=>e.user);return e?(0,z.jsxs)(C,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(T,{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)(g,{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)(E,{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,n]=(0,R.useState)(``),[r,i]=(0,R.useState)(``),[a,s]=(0,R.useState)(``),[u,d]=(0,R.useState)(!1),[p,m]=(0,R.useState)(!1),[h,_]=(0,R.useState)(!1),[y,x]=(0,R.useState)(!1),[S,E]=(0,R.useState)(null),D=async o=>{if(o.preventDefault(),E(null),x(!1),!e||!r){E(`All fields are required.`);return}if(r!==a){E(`New passwords do not match.`);return}if(r.length<8){E(`New password must be at least 8 characters.`);return}_(!0);try{await t.changePassword({oldPassword:e,newPassword:r}),x(!0),n(``),i(``),s(``)}catch(e){E(e?.message??`Failed to change password`)}finally{_(!1)}};return(0,z.jsxs)(C,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(T,{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:[y&&(0,z.jsx)(b,{severity:`success`,variant:`outlined`,sx:{mb:2},onClose:()=>x(!1),children:`Password changed successfully.`}),S&&(0,z.jsx)(b,{severity:`error`,variant:`outlined`,sx:{mb:2},onClose:()=>E(null),children:S}),(0,z.jsx)(`form`,{onSubmit:D,noValidate:!0,children:(0,z.jsxs)(g,{spacing:2,children:[(0,z.jsx)(o,{size:`small`,label:`Current Password`,type:u?`text`:`password`,value:e,onChange:e=>n(e.target.value),autoComplete:`current-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,z.jsx)(L,{position:`end`,children:(0,z.jsx)(l,{size:`small`,onClick:()=>d(!u),edge:`end`,children:(0,z.jsx)(f,{open:u,sx:{fontSize:18}})})})}}}),(0,z.jsx)(o,{size:`small`,label:`New Password`,type:p?`text`:`password`,value:r,onChange:e=>i(e.target.value),autoComplete:`new-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,z.jsx)(L,{position:`end`,children:(0,z.jsx)(l,{size:`small`,onClick:()=>m(!p),edge:`end`,children:(0,z.jsx)(f,{open:p,sx:{fontSize:18}})})})}}}),(0,z.jsx)(o,{size:`small`,label:`Confirm New Password`,type:p?`text`:`password`,value:a,onChange:e=>s(e.target.value),autoComplete:`new-password`,fullWidth:!0}),(0,z.jsx)(v,{type:`submit`,variant:`contained`,size:`small`,disabled:h,startIcon:h?(0,z.jsx)(c,{size:16,color:`inherit`}):void 0,sx:{alignSelf:`flex-start`},children:h?`Changing...`:`Change Password`})]})})]})]})}function X(){let e=h(e=>e.user),i=n(),[a,o]=(0,R.useState)([]),[u,d]=(0,R.useState)(!0),[f,p]=(0,R.useState)(null),[_,y]=(0,R.useState)(null),x=(0,R.useCallback)(async()=>{if(e)try{let e=await t.getActiveSessions();o(Array.isArray(e)?e:[]),p(null)}catch(e){p(e?.message??`Failed to fetch sessions`)}finally{d(!1)}},[e,i]);(0,R.useEffect)(()=>{x()},[x]);let S=async e=>{y(e);try{await t.signOut({sessionId:e}),o(t=>t.filter(t=>t.id!==e))}catch(e){p(`Failed to revoke: ${e?.message??`Unknown error`}`)}finally{y(null)}};return(0,z.jsxs)(C,{variant:`outlined`,sx:G,children:[(0,z.jsx)(T,{title:`Active Sessions`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},subheader:u?`Loading...`:`${a.length} active session${a.length===1?``:`s`}`,subheaderTypographyProps:{variant:`caption`},action:a.filter(e=>!e.current).length>1?(0,z.jsx)(v,{size:`small`,color:`error`,variant:`text`,onClick:async()=>{for(let e of a.filter(e=>!e.current))try{await t.signOut({sessionId:e.id})}catch{}await x()},sx:{fontSize:`0.7rem`},children:`Revoke All Others`}):void 0}),f&&(0,z.jsx)(b,{severity:`error`,variant:`outlined`,sx:{mx:2,mb:1},onClose:()=>p(null),children:f}),u?(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsx)(g,{spacing:1,children:[...[,,]].map((e,t)=>(0,z.jsx)(r,{height:48},t))})}):a.length===0?(0,z.jsx)(w,{sx:{...K,pt:0},children:(0,z.jsx)(m,{variant:`body2`,color:`text.secondary`,children:`No active sessions found.`})}):(0,z.jsx)(N,{children:(0,z.jsxs)(O,{size:`small`,children:[(0,z.jsx)(A,{children:(0,z.jsxs)(M,{children:[(0,z.jsx)(j,{children:`Session`}),(0,z.jsx)(j,{children:`IP Address`}),(0,z.jsx)(j,{children:`Created`}),(0,z.jsx)(j,{children:`Expires`}),(0,z.jsx)(j,{align:`center`,children:`Actions`})]})}),(0,z.jsx)(k,{children:a.map(e=>(0,z.jsxs)(M,{children:[(0,z.jsx)(j,{children:(0,z.jsxs)(g,{direction:`row`,spacing:1,alignItems:`center`,children:[(0,z.jsxs)(m,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:[e.id.slice(0,8),`...`]}),e.current&&(0,z.jsx)(E,{label:`current`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:20,fontSize:10}})]})}),(0,z.jsx)(j,{children:(0,z.jsx)(m,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.ipAddress??`--`})}),(0,z.jsx)(j,{children:(0,z.jsx)(m,{variant:`caption`,color:`text.secondary`,children:I(e.createdAt)})}),(0,z.jsx)(j,{children:(0,z.jsx)(m,{variant:`caption`,color:`text.secondary`,children:F(e.expiresAt)})}),(0,z.jsx)(j,{align:`center`,children:!e.current&&(0,z.jsx)(l,{size:`small`,color:`error`,disabled:_===e.id,onClick:()=>S(e.id),title:`Revoke session`,children:_===e.id?(0,z.jsx)(c,{size:16,color:`inherit`}):(0,z.jsx)(s,{sx:{fontSize:18}})})})]},e.id))})]})})]})}function Z(){let[e,t]=(0,R.useState)(()=>U(B,!1)),[n,r]=(0,R.useState)(()=>U(V,!0)),[o,s]=(0,R.useState)(()=>localStorage.getItem(H)||`error`),[c,l]=(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(l(e),e!==`granted`){t(!1),W(B,!1);return}}t(n),W(B,n)};return(0,z.jsxs)(C,{variant:`outlined`,sx:{...G,maxWidth:480},children:[(0,z.jsx)(T,{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)(g,{spacing:3,children:[(0,z.jsx)(P,{control:(0,z.jsx)(D,{size:`small`,checked:e,onChange:d,disabled:c===`denied`}),label:(0,z.jsxs)(y,{children:[(0,z.jsx)(m,{variant:`body2`,fontWeight:600,children:`Desktop notifications`}),(0,z.jsx)(m,{variant:`caption`,color:`text.secondary`,children:c===`denied`?`Blocked by browser — enable in site settings`:c===`unsupported`?`Not supported`:`Show browser notifications for alerts`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,z.jsx)(P,{control:(0,z.jsx)(D,{size:`small`,checked:n,onChange:(e,t)=>{r(t),W(V,t)}}),label:(0,z.jsxs)(y,{children:[(0,z.jsx)(m,{variant:`body2`,fontWeight:600,children:`Sound alerts`}),(0,z.jsx)(m,{variant:`caption`,color:`text.secondary`,children:`Play audio cue on critical alerts`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,z.jsx)(u,{}),(0,z.jsxs)(y,{children:[(0,z.jsx)(m,{variant:`body2`,fontWeight:600,sx:{mb:1},children:`Minimum alert severity`}),(0,z.jsx)(m,{variant:`caption`,color:`text.secondary`,sx:{mb:1.5,display:`block`},children:`Only receive notifications at or above this level`}),(0,z.jsx)(a,{size:`small`,fullWidth:!0,children:(0,z.jsxs)(i,{value:o,onChange:e=>{s(e.target.value),localStorage.setItem(H,e.target.value)},children:[(0,z.jsx)(x,{value:`info`,children:`Info`}),(0,z.jsx)(x,{value:`warn`,children:`Warning`}),(0,z.jsx)(x,{value:`error`,children:`Error`}),(0,z.jsx)(x,{value:`fatal`,children:`Fatal`})]})})]})]})})]})}function Q(){return(0,z.jsxs)(d,{defaultValue:`general`,keepMounted:!0,children:[(0,z.jsx)(S,{value:`general`,label:`General`,children:(0,z.jsx)(J,{})}),(0,z.jsx)(S,{value:`security`,label:`Security`,children:(0,z.jsx)(Y,{})}),(0,z.jsx)(S,{value:`sessions`,label:`Sessions`,children:(0,z.jsx)(X,{})}),(0,z.jsx)(S,{value:`notifications`,label:`Notifications`,children:(0,z.jsx)(Z,{})})]})}export{Q as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DtcAfS_W.js";import{t}from"./TextField-BLf-BHz2.js";import{Dt as n,Et as r,Ln as i,U as a,Vn as o,Vt as s,_n as c,gn as l,hn as u,ht as d,jn as f,k as p,pt as m,r as h,t as g,zn as _}from"./index-ByQDwp2r.js";import{t as v}from"./InputAdornment-B8aHIsQ7.js";var y=e(o(),1),b=f();function x(){let e=i(),[o]=_(),f=u(e=>e.signIn),x=g(),[S,C]=(0,y.useState)(``),[w,T]=(0,y.useState)(``),[E,D]=(0,y.useState)(!1),[O,k]=(0,y.useState)(``),[A,j]=(0,y.useState)(!1),M=c(o.get(`returnTo`));return(0,b.jsxs)(d,{spacing:3,sx:{maxWidth:420,mx:`auto`,width:1},children:[(0,b.jsxs)(d,{spacing:1.5,alignItems:`center`,textAlign:`center`,children:[(0,b.jsx)(m,{size:48}),(0,b.jsx)(s,{variant:`h4`,children:`Omnitron Console`}),(0,b.jsx)(s,{variant:`body2`,color:`text.secondary`,children:`Sign in to manage your infrastructure`})]}),O&&(0,b.jsx)(h,{severity:`error`,variant:`outlined`,onClose:()=>k(``),children:O}),(0,b.jsx)(`form`,{onSubmit:async t=>{if(t.preventDefault(),!(!S.trim()||!w.trim())){k(``),j(!0);try{await f(S,w),e(M,{replace:!0})}catch(e){T(``),k(l(e))}finally{j(!1)}}},noValidate:!0,children:(0,b.jsxs)(d,{spacing:2.5,children:[(0,b.jsx)(t,{fullWidth:!0,label:`Username`,autoComplete:`username`,autoFocus:!0,value:S,onChange:e=>C(e.target.value)}),(0,b.jsx)(t,{fullWidth:!0,label:`Password`,type:E?`text`:`password`,autoComplete:`current-password`,value:w,onChange:e=>T(e.target.value),slotProps:{input:{endAdornment:(0,b.jsx)(v,{position:`end`,children:(0,b.jsx)(r,{onClick:()=>D(!E),edge:`end`,children:(0,b.jsx)(a,{open:E})})})}}}),(0,b.jsx)(p,{fullWidth:!0,size:`large`,type:`submit`,variant:`contained`,disabled:A||!x,startIcon:A?(0,b.jsx)(n,{size:20,color:`inherit`}):void 0,children:A?`Signing in...`:x?`Sign In`:`Daemon offline`})]})})]})}export{x as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DtcAfS_W.js";import{g as t,m as n,o as r}from"./client-DU8I_lDc.js";import{t as i}from"./Grid-14PETRQW.js";import{t as a}from"./Skeleton-B74-Ds6O.js";import{o,t as s}from"./TextField-BLf-BHz2.js";import{$ as c,An as l,B as u,Bt as d,Dt as f,En as p,Et as m,Fn as h,Gt as g,Jt as _,Kt as v,Ln as y,Q as b,Qt as x,Ut as S,Vn as C,Vt as w,Wt as T,Yt as E,_t as D,an as O,bn as ee,ct as k,fn as A,ht as j,i as te,jn as M,k as N,mn as P,on as F,pn as I,qt as L,r as R,st as z,tn as B,tt as ne,vn as re,yn as ie}from"./index-ByQDwp2r.js";import{t as V}from"./Card-vO88g06B.js";import{t as H}from"./CardContent-BA_Xmmhk.js";import{t as U}from"./Chip-Ckk0xUhK.js";import{t as ae}from"./SwitchBase-CDU4nY8O.js";import{n as W,r as G,t as K}from"./DialogActions-BhHM7hov.js";import{t as q}from"./FormControlLabel-CcQByVS8.js";import{o as oe}from"./formatters-Do41SRmE.js";import{t as se}from"./CardActions-C9h7Q2wW.js";import{t as ce}from"./DialogContentText-BT2JQRmK.js";var J=M(),le=d((0,J.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`),ue=d((0,J.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`),de=d((0,J.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);function fe(e){return F(`MuiCheckbox`,e)}var Y=O(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]),X=e(C()),pe=e=>{let{classes:t,indeterminate:n,color:r,size:i}=e,a=x({root:[`root`,n&&`indeterminate`,`color${T(r)}`,`size${T(i)}`]},fe,t);return{...t,...a}},me=_(ae,{shouldForwardProp:e=>E(e)||e===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${T(n.size)}`],n.color!==`default`&&t[`color${T(n.color)}`]]}})(v(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:`default`,disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(S()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(S()).map(([t])=>({props:{color:t},style:{[`&.${Y.checked}, &.${Y.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${Y.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:`transparent`}}}}]}))),he=(0,J.jsx)(ue,{}),ge=(0,J.jsx)(le,{}),_e=(0,J.jsx)(de,{}),ve=X.forwardRef(function(e,t){let n=g({props:e,name:`MuiCheckbox`}),{checkedIcon:r=he,color:i=`primary`,icon:a=ge,indeterminate:s=!1,indeterminateIcon:c=_e,inputProps:u,size:d=`medium`,disableRipple:f=!1,className:p,slots:m={},slotProps:h={},..._}=n,v=s?c:a,y=s?c:r,b={...n,disableRipple:f,color:i,indeterminate:s,size:d},x=pe(b),S=h.input??u,[C,w]=D(`root`,{ref:t,elementType:me,className:l(x.root,p),shouldForwardComponentProp:!0,externalForwardedProps:{slots:m,slotProps:h,..._},ownerState:b,additionalProps:{type:`checkbox`,icon:X.cloneElement(v,{fontSize:v.props.fontSize??d}),checkedIcon:X.cloneElement(y,{fontSize:y.props.fontSize??d}),disableRipple:f,slots:m,slotProps:{input:o(typeof S==`function`?S(b):S,{"data-indeterminate":s})}}});return(0,J.jsx)(C,{...w,classes:x})}),ye=[{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.`}],Z=[{label:`Type`},{label:`Nodes`},{label:`Applications`},{label:`Name`}];function be({open:e,onClose:i,onCreated:a}){let o=P(e=>e.createStack),c=P(e=>e.activeProject),[l,u]=(0,X.useState)(null),[d,p]=(0,X.useState)([]),[m,h]=(0,X.useState)([]),[g,_]=(0,X.useState)(``),[v,y]=(0,X.useState)(!1),[b,x]=(0,X.useState)(null),[S,C]=(0,X.useState)([]),[T,E]=(0,X.useState)(!1),[D,O]=(0,X.useState)([]),[ee,k]=(0,X.useState)(!1),A=(0,X.useMemo)(()=>l===`local`?Z.filter(e=>e.label!==`Nodes`):Z,[l]),M=ie({totalSteps:A.length});(0,X.useEffect)(()=>{if(!e)return;let t=A.findIndex(e=>e.label===`Nodes`);M.activeStep===t&&t!==-1&&(E(!0),n.listNodes().then(e=>{C(Array.isArray(e)?e:e?.nodes??[])}).catch(()=>C([])).finally(()=>E(!1)))},[e,M.activeStep,A]),(0,X.useEffect)(()=>{if(!e)return;let n=A.findIndex(e=>e.label===`Applications`);if(M.activeStep===n){k(!0);let e=P.getState().activeProject;e?t.scanRequirements({project:e}).then(e=>{let t=Object.keys(e?.apps??{});O(t.map(e=>({name:e}))),m.length===0&&h(t)}).catch(()=>{r.list().then(e=>{let t=Array.isArray(e)?e:[];O(t),m.length===0&&h(t.map(e=>e.name))}).catch(()=>O([]))}).finally(()=>k(!1)):k(!1)}},[e,M.activeStep,A]),(0,X.useEffect)(()=>{if(!e)return;let t=A.findIndex(e=>e.label===`Name`);M.activeStep===t&&!g&&_(`${l===`cluster`?`prod`:l===`remote`?`staging`:`dev`}-1`)},[e,M.activeStep,A,l,g]);let F=(0,X.useCallback)(()=>{u(null),p([]),h([]),_(``),x(null),y(!1),C([]),O([]),M.reset()},[M]),I=(0,X.useCallback)(()=>{v||(F(),i())},[v,F,i]),z=A[M.activeStep]?.label,ne=(0,X.useMemo)(()=>{switch(z){case`Type`:return l!==null;case`Nodes`:return l===`remote`?d.length===1:l===`cluster`?d.length>=2:!0;case`Applications`:return m.length>0;case`Name`:return/^[a-z][a-z0-9-]*$/.test(g);default:return!1}},[z,l,d,m,g]),ae=(0,X.useCallback)(()=>{M.isLastStep?oe():M.nextStep()},[M]),oe=(0,X.useCallback)(async()=>{if(!(!c||!l)){y(!0),x(null);try{await o(c,{name:g.trim(),type:l,apps:m.length===D.length?`all`:m,nodeIds:l===`local`?void 0:d}),F(),a()}catch(e){x(e?.message??`Failed to create stack.`)}finally{y(!1)}}},[c,l,g,m,D.length,d,o,F,a]),se=(0,X.useCallback)(e=>{p(l===`remote`?t=>t.includes(e)?[]:[e]:t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[l]),ce=(0,X.useCallback)(e=>{h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),le=(0,X.useCallback)(()=>{m.length===D.length?h([]):h(D.map(e=>e.name))},[m.length,D]);return(0,J.jsxs)(te,{open:e,onClose:I,maxWidth:`sm`,fullWidth:!0,children:[(0,J.jsx)(G,{sx:{fontWeight:700},children:`Create Stack`}),(0,J.jsxs)(W,{children:[(0,J.jsx)(L,{sx:{mb:3,mt:1},children:(0,J.jsx)(re,{steps:A,activeStep:M.activeStep,alternativeLabel:!0})}),b&&(0,J.jsx)(R,{severity:`error`,variant:`outlined`,sx:{mb:2},onClose:()=>x(null),children:b}),z===`Type`&&(0,J.jsx)(j,{spacing:1.5,children:ye.map(e=>(0,J.jsx)(V,{variant:`outlined`,onClick:()=>u(e.value),sx:{cursor:`pointer`,transition:`border-color 0.2s, background-color 0.2s`,borderColor:l===e.value?e=>e.palette.primary.main:void 0,bgcolor:l===e.value?e=>B(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>B(e.palette.primary.main,.4)}},children:(0,J.jsxs)(H,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,J.jsx)(w,{variant:`subtitle2`,sx:{fontWeight:700},children:e.title}),(0,J.jsx)(w,{variant:`caption`,color:`text.secondary`,children:e.description})]})},e.value))}),z===`Nodes`&&(0,J.jsxs)(j,{spacing:1.5,children:[(0,J.jsx)(w,{variant:`body2`,color:`text.secondary`,sx:{mb:.5},children:l===`remote`?`Select a target node for deployment.`:`Select at least 2 nodes for the cluster.`}),T?(0,J.jsx)(L,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,J.jsx)(f,{size:28})}):S.length===0?(0,J.jsx)(R,{severity:`info`,variant:`outlined`,children:`No remote nodes configured. Add nodes in the Nodes section first.`}):S.map(e=>{let t=d.includes(e.id),n=e.status===`online`;return(0,J.jsx)(V,{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=>B(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>B(e.palette.primary.main,.4)}},children:(0,J.jsxs)(H,{sx:{py:1.5,"&:last-child":{pb:1.5},display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,J.jsxs)(L,{children:[(0,J.jsx)(w,{variant:`subtitle2`,sx:{fontWeight:600},children:e.name}),(0,J.jsx)(w,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:e.host})]}),(0,J.jsx)(U,{label:n?`Online`:`Offline`,color:n?`success`:`default`,size:`small`,sx:{height:20,fontSize:`0.65rem`}})]})},e.id)})]}),z===`Applications`&&(0,J.jsx)(j,{spacing:1,children:ee?(0,J.jsx)(L,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,J.jsx)(f,{size:28})}):D.length===0?(0,J.jsx)(R,{severity:`info`,variant:`outlined`,children:`No applications found in the project.`}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(q,{control:(0,J.jsx)(ve,{checked:m.length===D.length,indeterminate:m.length>0&&m.length<D.length,onChange:le,size:`small`}),label:(0,J.jsx)(w,{variant:`subtitle2`,sx:{fontWeight:600},children:`Select All`}),sx:{mb:.5}}),D.map(e=>(0,J.jsx)(q,{control:(0,J.jsx)(ve,{checked:m.includes(e.name),onChange:()=>ce(e.name),size:`small`}),label:(0,J.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.name}),sx:{ml:1}},e.name))]})}),z===`Name`&&(0,J.jsxs)(j,{spacing:2.5,children:[(0,J.jsx)(s,{label:`Stack Name`,value:g,onChange:e=>_(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,J.jsxs)(L,{children:[(0,J.jsx)(w,{variant:`subtitle2`,sx:{fontWeight:700,mb:1},children:`Review`}),(0,J.jsxs)(j,{spacing:.5,children:[(0,J.jsx)(Q,{label:`Type`,value:l??``}),l!==`local`&&(0,J.jsx)(Q,{label:`Nodes`,value:d.length>0?S.filter(e=>d.includes(e.id)).map(e=>e.name).join(`, `):`None`}),(0,J.jsx)(Q,{label:`Applications`,value:m.length===D.length?`All (${D.length})`:`${m.length} of ${D.length}`})]})]})]})]}),(0,J.jsxs)(K,{sx:{px:3,py:2},children:[(0,J.jsx)(N,{onClick:I,disabled:v,children:`Cancel`}),(0,J.jsx)(L,{sx:{flex:1}}),!M.isFirstStep&&(0,J.jsx)(N,{onClick:M.prevStep,disabled:v,children:`Back`}),(0,J.jsx)(N,{variant:`contained`,onClick:ae,disabled:!ne||v,startIcon:v?(0,J.jsx)(f,{size:16}):void 0,children:M.isLastStep?`Create`:`Next`})]})]})}function Q({label:e,value:t}){return(0,J.jsxs)(L,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,J.jsx)(w,{variant:`caption`,color:`text.secondary`,children:e}),(0,J.jsx)(w,{variant:`caption`,sx:{fontWeight:600,textTransform:`capitalize`},children:t})]})}var xe={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`}},Se={local:`Local`,remote:`Remote (SSH)`,cluster:`Cluster`};function Ce(){let e=A(),t=I(),n=P(e=>e.loading),r=P(e=>e.error),o=P(e=>e.clearError),s=P(e=>e.pendingOps),l=P(e=>e.fetchStacks),u=P(e=>e.startStack),d=P(e=>e.stopStack),f=P(e=>e.deleteStack),g=y(),[_,v]=(0,X.useState)(!1),[b,x]=(0,X.useState)(null);(0,X.useEffect)(()=>{e&&l(e)},[e,l]);let S=Object.keys(s).length>0;(0,X.useEffect)(()=>{if(!e)return;let t=setInterval(()=>l(e),S?3e3:1e4);return()=>clearInterval(t)},[e,l,S]);let C=(0,X.useCallback)(async t=>{if(e)try{await u(e,t)}catch{}},[e,u]),w=(0,X.useCallback)(async t=>{if(e)try{await d(e,t)}catch{}},[e,d]),T=(0,X.useCallback)(async()=>{if(!(!e||!b)){try{await f(e,b)}catch{}x(null)}},[e,b,f]);return e?(0,J.jsxs)(j,{spacing:3,sx:{flex:1},children:[(0,J.jsx)(ee,{linkComponent:h,links:[{name:`Stacks`}],action:(0,J.jsxs)(L,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,J.jsx)(m,{size:`small`,onClick:()=>l(e),title:`Refresh`,children:(0,J.jsx)(ne,{})}),(0,J.jsx)(N,{variant:`contained`,size:`small`,startIcon:(0,J.jsx)(c,{}),onClick:()=>v(!0),children:`Create`})]})}),(0,J.jsx)(be,{open:_,onClose:()=>v(!1),onCreated:()=>{v(!1),l(e)}}),r&&(0,J.jsx)(R,{severity:`error`,onClose:o,children:r}),n&&t.length===0?(0,J.jsx)(i,{container:!0,spacing:2,children:[1,2,3].map(e=>(0,J.jsx)(i,{size:{xs:12,sm:6,md:4},children:(0,J.jsx)(a,{variant:`rounded`,height:200})},e))}):t.length===0?(0,J.jsx)(L,{sx:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,J.jsx)(p,{title:`No stacks`,description:`Create your first stack to deploy applications.`})}):(0,J.jsx)(i,{container:!0,spacing:2,children:t.map(t=>(0,J.jsx)(i,{size:{xs:12,sm:6,md:4},children:(0,J.jsx)(we,{stack:t,pendingOp:e?s[`${e}/${t.name}`]??null:null,onStart:()=>C(t.name),onStop:()=>w(t.name),onDelete:()=>x(t.name),onDetail:()=>g(`/stacks/${t.name}`)})},t.name))}),(0,J.jsxs)(te,{open:b!==null,onClose:()=>x(null),children:[(0,J.jsx)(G,{children:`Delete Stack`}),(0,J.jsx)(W,{children:(0,J.jsxs)(ce,{children:[`Are you sure you want to delete stack `,(0,J.jsx)(`strong`,{children:b}),`? This action cannot be undone.`]})}),(0,J.jsxs)(K,{children:[(0,J.jsx)(N,{onClick:()=>x(null),children:`Cancel`}),(0,J.jsx)(N,{onClick:T,color:`error`,variant:`contained`,children:`Delete`})]})]})]}):(0,J.jsx)(j,{spacing:3,children:(0,J.jsx)(R,{severity:`info`,children:`No project selected. Register a project first.`})})}function we({stack:e,pendingOp:t,onStart:n,onStop:r,onDelete:i,onDetail:a}){let o=xe[e.status]??xe.stopped,s=e.status===`running`,c=e.status===`stopped`,l=e.status===`starting`||e.status===`stopping`||!!t,d=!!t;return(0,J.jsxs)(V,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,cursor:`pointer`,transition:`border-color 0.2s`,"&:hover":{borderColor:e=>B(e.palette.primary.main,.3)}},variant:`outlined`,onClick:a,children:[(0,J.jsxs)(H,{sx:{flex:1},children:[(0,J.jsxs)(L,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1.5},children:[(0,J.jsx)(w,{variant:`h6`,sx:{fontWeight:700,fontSize:`1.1rem`},children:e.name}),(0,J.jsx)(U,{label:o.label,color:o.color,size:`small`,sx:{height:22,fontSize:`0.7rem`}})]}),(0,J.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`,display:`block`,mb:1.5},children:Se[e.type]??e.type}),(0,J.jsxs)(L,{sx:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:1},children:[(0,J.jsx)($,{label:`Apps`,value:`${e.apps.filter(e=>e.status===`online`).length}/${e.apps.length}`}),(0,J.jsx)($,{label:`Nodes`,value:String(e.nodes.length)}),s&&e.uptime>0&&(0,J.jsx)($,{label:`Uptime`,value:oe(e.uptime)}),e.type!==`local`&&(0,J.jsxs)(L,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,J.jsx)(k,{sx:{fontSize:14,color:`text.secondary`}}),(0,J.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[e.nodes.filter(e=>e.connected).length,`/`,e.nodes.length,` synced`]})]})]}),e.portRange&&(0,J.jsxs)(w,{variant:`caption`,sx:{color:`text.disabled`,mt:1,display:`block`,fontFamily:`monospace`},children:[`Ports: `,e.portRange.start,`–`,e.portRange.end]})]}),(0,J.jsxs)(se,{sx:{px:2,pb:1.5,justifyContent:`space-between`},onClick:e=>e.stopPropagation(),children:[(0,J.jsx)(L,{children:c&&!d&&(0,J.jsx)(m,{size:`small`,color:`error`,onClick:i,title:`Delete stack`,children:(0,J.jsx)(u,{})})}),(0,J.jsx)(L,{children:l?(0,J.jsx)(N,{size:`small`,disabled:!0,startIcon:(0,J.jsx)(f,{size:14}),children:t===`starting`||e.status===`starting`?`Starting...`:`Stopping...`}):c?(0,J.jsx)(N,{size:`small`,startIcon:(0,J.jsx)(b,{}),color:`success`,onClick:n,children:`Start`}):s?(0,J.jsx)(N,{size:`small`,startIcon:(0,J.jsx)(z,{}),color:`error`,onClick:r,children:`Stop`}):(0,J.jsx)(U,{label:o.label,size:`small`,color:o.color,sx:{height:20,fontSize:`0.65rem`}})})]})]})}function $({label:e,value:t}){return(0,J.jsxs)(L,{children:[(0,J.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`,textTransform:`uppercase`},children:e}),(0,J.jsx)(w,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.85rem`},children:t})]})}export{Ce as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DtcAfS_W.js";import{v as t}from"./client-DU8I_lDc.js";import{t as n}from"./Grid-14PETRQW.js";import{t as r}from"./Skeleton-B74-Ds6O.js";import{O as i,Vn as a,Vt as o,Zt as s,ht as c,jn as l,o as u,qt as d,r as f,tn as p}from"./index-ByQDwp2r.js";import{t as m}from"./Card-vO88g06B.js";import{t as h}from"./CardContent-BA_Xmmhk.js";import{t as g}from"./CardHeader-ceIs__6x.js";import{t as _}from"./Chip-Ckk0xUhK.js";import{r as v}from"./formatters-Do41SRmE.js";var y=e(a(),1),b=l(),x={borderRadius:2,height:`100%`},S={p:3,"&:last-child":{pb:3}};function C({label:e,value:t,mono:n}){return(0,b.jsxs)(c,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,sx:{py:.5},children:[(0,b.jsx)(o,{variant:`body2`,color:`text.secondary`,children:e}),(0,b.jsx)(o,{variant:`body2`,fontWeight:600,sx:n?{fontFamily:`monospace`,fontSize:`0.8rem`}:void 0,children:t})]})}function w({label:e,used:t,total:n,color:r=`primary`}){let i=n>0?t/n*100:0,a=i>90?`error`:i>70?`warning`:r;return(0,b.jsxs)(d,{sx:{mb:1.5},children:[(0,b.jsxs)(c,{direction:`row`,justifyContent:`space-between`,sx:{mb:.5},children:[(0,b.jsx)(o,{variant:`caption`,color:`text.secondary`,children:e}),(0,b.jsxs)(o,{variant:`caption`,fontWeight:600,sx:{fontFamily:`monospace`,fontSize:`0.7rem`},children:[v(t),` / `,v(n),` (`,i.toFixed(1),`%)`]})]}),(0,b.jsx)(u,{variant:`determinate`,value:Math.min(i,100),color:a,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(),[a,l]=(0,y.useState)(null),[u,E]=(0,y.useState)(!0),[D,O]=(0,y.useState)(null),k=(0,y.useRef)(!0),A=(0,y.useCallback)(async()=>{try{l(await t.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]),u)return(0,b.jsx)(n,{container:!0,spacing:3,children:Array.from({length:6}).map((e,t)=>(0,b.jsx)(n,{size:{xs:12,md:6},children:(0,b.jsx)(r,{variant:`rounded`,height:200})},t))});if(D&&!a)return(0,b.jsx)(f,{severity:`error`,children:D});let j=a;return j?e.palette.success.main:e.palette.error.main,(0,b.jsxs)(c,{spacing:3,children:[D&&(0,b.jsx)(f,{severity:`warning`,variant:`outlined`,children:D}),(0,b.jsxs)(n,{container:!0,spacing:3,children:[(0,b.jsx)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Daemon`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},action:(0,b.jsx)(_,{label:j?.daemon?.role??`master`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,b.jsxs)(h,{sx:{...S,pt:0},children:[(0,b.jsxs)(c,{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)(i,{sx:{my:1.5}}),(0,b.jsx)(o,{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)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`CPU`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700},action:j?.cpu?.currentLoad==null?void 0:(0,b.jsx)(_,{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)(h,{sx:{...S,pt:0},children:[(0,b.jsxs)(c,{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)(i,{sx:{my:1.5}}),(0,b.jsx)(o,{variant:`caption`,color:`text.secondary`,fontWeight:600,sx:{mb:1,display:`block`},children:`Load per Core`}),(0,b.jsx)(d,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`},children:j.cpu.loadPerCore.map((t,n)=>(0,b.jsxs)(d,{sx:{width:32,height:32,borderRadius:1,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`0.6rem`,fontWeight:700,fontFamily:`monospace`,bgcolor:p(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:p(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)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Memory`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{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)(c,{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)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Disks`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{sx:{...S,pt:0},children:j?.disks?.length>0?j.disks.map((e,t)=>(0,b.jsx)(d,{children:(0,b.jsx)(w,{label:`${e.mount} (${e.type})`,used:e.used,total:e.size,color:`primary`})},t)):(0,b.jsx)(o,{variant:`body2`,color:`text.secondary`,children:`No disk information available`})})]})}),(0,b.jsx)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Network`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{sx:{...S,pt:0},children:j?.network?.interfaces?.length>0?(0,b.jsxs)(c,{spacing:1,children:[j.network.interfaces.slice(0,5).map((e,t)=>(0,b.jsxs)(d,{children:[(0,b.jsxs)(c,{direction:`row`,justifyContent:`space-between`,alignItems:`center`,children:[(0,b.jsx)(o,{variant:`body2`,fontWeight:600,children:e.iface}),(0,b.jsx)(_,{label:e.operstate,size:`small`,color:e.operstate===`up`?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,b.jsxs)(o,{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)(i,{sx:{my:.5}}),(0,b.jsxs)(c,{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)(o,{variant:`body2`,color:`text.secondary`,children:`No network interfaces`})})]})}),j?.docker&&(0,b.jsx)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Docker`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{sx:{...S,pt:0},children:(0,b.jsxs)(c,{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)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Operating System`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{sx:{...S,pt:0},children:(0,b.jsxs)(c,{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)(n,{size:{xs:12,md:6},children:(0,b.jsxs)(m,{variant:`outlined`,sx:x,children:[(0,b.jsx)(g,{title:`Build`,titleTypographyProps:{variant:`subtitle1`,fontWeight:700}}),(0,b.jsx)(h,{sx:{...S,pt:0},children:(0,b.jsxs)(c,{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};