@omnitron-dev/omnitron 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/README.md +4 -0
  2. package/dist/BUILD.json +2 -2
  3. package/dist/cli/omnitron.js +26 -2
  4. package/dist/cli/omnitron.js.map +1 -1
  5. package/dist/cluster/mesh-link.js +1 -1
  6. package/dist/cluster/slave-connector.d.ts +2 -2
  7. package/dist/cluster/slave-connector.js +1 -1
  8. package/dist/commands/deploy.d.ts +4 -4
  9. package/dist/commands/deploy.js +4 -4
  10. package/dist/commands/discover.d.ts +2 -2
  11. package/dist/commands/discover.js +2 -2
  12. package/dist/commands/fleet-asking.d.ts +2 -2
  13. package/dist/commands/fleet-asking.js +2 -2
  14. package/dist/commands/fleet-recover.d.ts +2 -0
  15. package/dist/commands/fleet-recover.d.ts.map +1 -0
  16. package/dist/commands/fleet-recover.js +30 -0
  17. package/dist/commands/fleet-recover.js.map +1 -0
  18. package/dist/commands/host-ingress.d.ts +3 -0
  19. package/dist/commands/host-ingress.d.ts.map +1 -0
  20. package/dist/commands/host-ingress.js +31 -0
  21. package/dist/commands/host-ingress.js.map +1 -0
  22. package/dist/commands/infra.d.ts +2 -2
  23. package/dist/commands/infra.js +7 -7
  24. package/dist/commands/infra.js.map +1 -1
  25. package/dist/commands/logs.d.ts +1 -1
  26. package/dist/commands/logs.js +3 -3
  27. package/dist/commands/logs.js.map +1 -1
  28. package/dist/commands/node.d.ts +2 -14
  29. package/dist/commands/node.d.ts.map +1 -1
  30. package/dist/commands/node.js +33 -22
  31. package/dist/commands/node.js.map +1 -1
  32. package/dist/commands/pipeline.d.ts.map +1 -1
  33. package/dist/commands/pipeline.js +8 -1
  34. package/dist/commands/pipeline.js.map +1 -1
  35. package/dist/commands/project.d.ts +2 -2
  36. package/dist/commands/project.js +2 -2
  37. package/dist/commands/release.d.ts +1 -1
  38. package/dist/commands/release.js +4 -4
  39. package/dist/commands/release.js.map +1 -1
  40. package/dist/commands/remote.d.ts +3 -3
  41. package/dist/commands/remote.js +3 -3
  42. package/dist/commands/tor.d.ts +1 -1
  43. package/dist/commands/tor.js +2 -2
  44. package/dist/config/types.d.ts +9 -6
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/daemon/daemon-entry.js +1 -1
  47. package/dist/daemon/daemon-entry.js.map +1 -1
  48. package/dist/daemon/daemon.d.ts +5 -19
  49. package/dist/daemon/daemon.d.ts.map +1 -1
  50. package/dist/daemon/daemon.js +54 -51
  51. package/dist/daemon/daemon.js.map +1 -1
  52. package/dist/daemon/daemon.module.d.ts.map +1 -1
  53. package/dist/daemon/daemon.module.js +3 -5
  54. package/dist/daemon/daemon.module.js.map +1 -1
  55. package/dist/daemon/daemon.rpc-service.d.ts +2 -2
  56. package/dist/daemon/daemon.rpc-service.js +6 -6
  57. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  58. package/dist/execution/data-channel.d.ts +1 -1
  59. package/dist/execution/data-channel.js +1 -1
  60. package/dist/execution/execution.service.d.ts +10 -3
  61. package/dist/execution/execution.service.d.ts.map +1 -1
  62. package/dist/execution/execution.service.js +101 -44
  63. package/dist/execution/execution.service.js.map +1 -1
  64. package/dist/infrastructure/bare-metal-plan.js +1 -1
  65. package/dist/infrastructure/bare-metal-plan.js.map +1 -1
  66. package/dist/infrastructure/config-payload.d.ts +4 -4
  67. package/dist/infrastructure/config-payload.js +4 -4
  68. package/dist/infrastructure/container-runtime.d.ts +2 -10
  69. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  70. package/dist/infrastructure/container-runtime.js +41 -20
  71. package/dist/infrastructure/container-runtime.js.map +1 -1
  72. package/dist/infrastructure/gateway-redis-db.d.ts +2 -2
  73. package/dist/infrastructure/gateway-redis-db.js +2 -2
  74. package/dist/infrastructure/host-ingress-config.d.ts +12 -0
  75. package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
  76. package/dist/infrastructure/host-ingress-config.js +197 -0
  77. package/dist/infrastructure/host-ingress-config.js.map +1 -0
  78. package/dist/infrastructure/host-ingress-lock.d.ts +4 -0
  79. package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
  80. package/dist/infrastructure/host-ingress-lock.js +36 -0
  81. package/dist/infrastructure/host-ingress-lock.js.map +1 -0
  82. package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
  83. package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
  84. package/dist/infrastructure/host-ingress-runtime.js +114 -0
  85. package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
  86. package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
  87. package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
  88. package/dist/infrastructure/host-ingress-takeover.js +142 -0
  89. package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
  90. package/dist/infrastructure/host-ingress-types.d.ts +173 -0
  91. package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
  92. package/dist/infrastructure/host-ingress-types.js +2 -0
  93. package/dist/infrastructure/host-ingress-types.js.map +1 -0
  94. package/dist/infrastructure/host-ingress.service.d.ts +47 -0
  95. package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
  96. package/dist/infrastructure/host-ingress.service.js +514 -0
  97. package/dist/infrastructure/host-ingress.service.js.map +1 -0
  98. package/dist/infrastructure/infrastructure.service.d.ts +21 -5
  99. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  100. package/dist/infrastructure/infrastructure.service.js +91 -10
  101. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  102. package/dist/infrastructure/orphan-containers.d.ts +7 -7
  103. package/dist/infrastructure/orphan-containers.js +6 -6
  104. package/dist/infrastructure/presets/minio.js +1 -1
  105. package/dist/infrastructure/presets/minio.js.map +1 -1
  106. package/dist/infrastructure/provisioning-outcome.d.ts +1 -1
  107. package/dist/infrastructure/provisioning-outcome.js +1 -1
  108. package/dist/infrastructure/service-binding.js +1 -1
  109. package/dist/infrastructure/service-resolver.d.ts +10 -4
  110. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  111. package/dist/infrastructure/service-resolver.js +88 -45
  112. package/dist/infrastructure/service-resolver.js.map +1 -1
  113. package/dist/infrastructure/shipped-config.js +4 -4
  114. package/dist/infrastructure/stack-infra-manager.d.ts +10 -1
  115. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  116. package/dist/infrastructure/stack-infra-manager.js +53 -43
  117. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  118. package/dist/infrastructure/types.d.ts +8 -6
  119. package/dist/infrastructure/types.d.ts.map +1 -1
  120. package/dist/monitoring/log-line.d.ts +3 -3
  121. package/dist/monitoring/log-line.js +3 -3
  122. package/dist/monitoring/log-manager.d.ts +3 -3
  123. package/dist/monitoring/log-manager.js +3 -3
  124. package/dist/operations.d.ts +16 -0
  125. package/dist/operations.d.ts.map +1 -0
  126. package/dist/operations.js +13 -0
  127. package/dist/operations.js.map +1 -0
  128. package/dist/orchestrator/app-handle.d.ts +3 -3
  129. package/dist/orchestrator/app-handle.js +3 -3
  130. package/dist/orchestrator/bootstrap-loader.d.ts +2 -2
  131. package/dist/orchestrator/bootstrap-loader.js +3 -3
  132. package/dist/orchestrator/bootstrap-loader.js.map +1 -1
  133. package/dist/orchestrator/bootstrap-process.d.ts +1 -1
  134. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  135. package/dist/orchestrator/bootstrap-process.js +3 -2
  136. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  137. package/dist/orchestrator/build-service.d.ts +6 -12
  138. package/dist/orchestrator/build-service.d.ts.map +1 -1
  139. package/dist/orchestrator/build-service.js +120 -83
  140. package/dist/orchestrator/build-service.js.map +1 -1
  141. package/dist/orchestrator/call-exposed-service.js +1 -1
  142. package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
  143. package/dist/orchestrator/classic-launcher.js +6 -1
  144. package/dist/orchestrator/classic-launcher.js.map +1 -1
  145. package/dist/orchestrator/file-watcher.d.ts +1 -0
  146. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  147. package/dist/orchestrator/file-watcher.js +14 -3
  148. package/dist/orchestrator/file-watcher.js.map +1 -1
  149. package/dist/orchestrator/http-routes.d.ts +4 -0
  150. package/dist/orchestrator/http-routes.d.ts.map +1 -0
  151. package/dist/orchestrator/http-routes.js +19 -0
  152. package/dist/orchestrator/http-routes.js.map +1 -0
  153. package/dist/orchestrator/orchestrator.service.d.ts +18 -4
  154. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  155. package/dist/orchestrator/orchestrator.service.js +151 -110
  156. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  157. package/dist/orchestrator/service-router.d.ts +1 -1
  158. package/dist/orchestrator/service-router.js +1 -1
  159. package/dist/orchestrator/topology-query.d.ts +1 -1
  160. package/dist/orchestrator/topology-query.js +1 -1
  161. package/dist/project/artifact-builder.js +2 -2
  162. package/dist/project/artifact-builder.js.map +1 -1
  163. package/dist/project/build-decision.d.ts +1 -1
  164. package/dist/project/build-decision.js +1 -1
  165. package/dist/project/config-resolver.js +1 -1
  166. package/dist/project/config-resolver.js.map +1 -1
  167. package/dist/project/declared-config.d.ts +2 -2
  168. package/dist/project/declared-config.js +2 -2
  169. package/dist/project/deploy-phases.d.ts +1 -1
  170. package/dist/project/deploy-phases.js +1 -1
  171. package/dist/project/exec-in-group.d.ts +1 -1
  172. package/dist/project/exec-in-group.js +1 -1
  173. package/dist/project/node-app-config.d.ts +2 -2
  174. package/dist/project/node-app-config.js +2 -2
  175. package/dist/project/node-app-config.js.map +1 -1
  176. package/dist/project/node-app-health.d.ts +1 -1
  177. package/dist/project/node-app-health.js +1 -1
  178. package/dist/project/operator-account.d.ts +9 -3
  179. package/dist/project/operator-account.d.ts.map +1 -1
  180. package/dist/project/operator-account.js +9 -9
  181. package/dist/project/operator-account.js.map +1 -1
  182. package/dist/project/registry.d.ts.map +1 -1
  183. package/dist/project/registry.js +4 -22
  184. package/dist/project/registry.js.map +1 -1
  185. package/dist/project/stack-env.d.ts +1 -1
  186. package/dist/project/stack-env.js +1 -1
  187. package/dist/project/stand-containers.d.ts +9 -2
  188. package/dist/project/stand-containers.d.ts.map +1 -1
  189. package/dist/project/stand-containers.js +17 -17
  190. package/dist/project/stand-containers.js.map +1 -1
  191. package/dist/release/artifact-store.d.ts +1 -1
  192. package/dist/release/artifact-store.d.ts.map +1 -1
  193. package/dist/release/artifact-store.js +1 -1
  194. package/dist/release/artifact-store.js.map +1 -1
  195. package/dist/release/attest-on-node.d.ts +3 -2
  196. package/dist/release/attest-on-node.d.ts.map +1 -1
  197. package/dist/release/attest-on-node.js +6 -6
  198. package/dist/release/attest-on-node.js.map +1 -1
  199. package/dist/release/attest.d.ts +3 -3
  200. package/dist/release/attest.js +1 -1
  201. package/dist/release/build-run.d.ts +2 -2
  202. package/dist/release/build-run.js +4 -4
  203. package/dist/release/build-run.js.map +1 -1
  204. package/dist/release/builder.d.ts +1 -1
  205. package/dist/release/builder.d.ts.map +1 -1
  206. package/dist/release/builder.js +1 -1
  207. package/dist/release/builder.js.map +1 -1
  208. package/dist/release/daemon-omni.d.ts +1 -1
  209. package/dist/release/daemon-omni.js +1 -1
  210. package/dist/release/definition-inputs.d.ts +1 -1
  211. package/dist/release/definition-inputs.js +1 -1
  212. package/dist/release/layout.d.ts +2 -2
  213. package/dist/release/layout.js +2 -2
  214. package/dist/release/manifest.d.ts +1 -1
  215. package/dist/release/manifest.js +1 -1
  216. package/dist/release/publish.d.ts +1 -1
  217. package/dist/release/publish.js +1 -1
  218. package/dist/release/store.d.ts +1 -1
  219. package/dist/release/store.d.ts.map +1 -1
  220. package/dist/release/store.js +3 -3
  221. package/dist/release/store.js.map +1 -1
  222. package/dist/services/alert.service.d.ts +2 -2
  223. package/dist/services/alert.service.js +2 -2
  224. package/dist/services/backup-pipeline.d.ts +1 -1
  225. package/dist/services/backup-pipeline.js +1 -1
  226. package/dist/services/backup.service.d.ts +3 -3
  227. package/dist/services/backup.service.js +3 -3
  228. package/dist/services/bundle-builder.d.ts +15 -12
  229. package/dist/services/bundle-builder.d.ts.map +1 -1
  230. package/dist/services/bundle-builder.js +124 -48
  231. package/dist/services/bundle-builder.js.map +1 -1
  232. package/dist/services/discovery.service.d.ts +1 -1
  233. package/dist/services/discovery.service.js +1 -1
  234. package/dist/services/host-operation-barrier.d.ts +8 -0
  235. package/dist/services/host-operation-barrier.d.ts.map +1 -0
  236. package/dist/services/host-operation-barrier.js +44 -0
  237. package/dist/services/host-operation-barrier.js.map +1 -0
  238. package/dist/services/host-upgrade.d.ts +129 -0
  239. package/dist/services/host-upgrade.d.ts.map +1 -0
  240. package/dist/services/host-upgrade.js +352 -0
  241. package/dist/services/host-upgrade.js.map +1 -0
  242. package/dist/services/infrastructure.rpc-service.d.ts +16 -1
  243. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  244. package/dist/services/infrastructure.rpc-service.js +71 -10
  245. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  246. package/dist/services/local-bundle.d.ts +9 -0
  247. package/dist/services/local-bundle.d.ts.map +1 -1
  248. package/dist/services/local-bundle.js +11 -2
  249. package/dist/services/local-bundle.js.map +1 -1
  250. package/dist/services/log-collector.service.d.ts +1 -1
  251. package/dist/services/log-collector.service.js +1 -1
  252. package/dist/services/maintenance-lock.d.ts +2 -2
  253. package/dist/services/maintenance-lock.d.ts.map +1 -1
  254. package/dist/services/maintenance-lock.js +1 -1
  255. package/dist/services/migration-output.d.ts +2 -2
  256. package/dist/services/migration-output.js +2 -2
  257. package/dist/services/node-deploy-lease.d.ts +19 -2
  258. package/dist/services/node-deploy-lease.d.ts.map +1 -1
  259. package/dist/services/node-deploy-lease.js +84 -10
  260. package/dist/services/node-deploy-lease.js.map +1 -1
  261. package/dist/services/node-manager.rpc-service.d.ts +6 -1
  262. package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
  263. package/dist/services/node-manager.rpc-service.js +25 -1
  264. package/dist/services/node-manager.rpc-service.js.map +1 -1
  265. package/dist/services/node-manager.service.d.ts +1 -1
  266. package/dist/services/node-manager.service.js +1 -1
  267. package/dist/services/node-upgrade.d.ts +1 -1
  268. package/dist/services/pipeline.rpc-service.d.ts +4 -0
  269. package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
  270. package/dist/services/pipeline.rpc-service.js +9 -0
  271. package/dist/services/pipeline.rpc-service.js.map +1 -1
  272. package/dist/services/pipeline.service.d.ts +2 -0
  273. package/dist/services/pipeline.service.d.ts.map +1 -1
  274. package/dist/services/pipeline.service.js +12 -0
  275. package/dist/services/pipeline.service.js.map +1 -1
  276. package/dist/services/project.rpc-service.d.ts +7 -0
  277. package/dist/services/project.rpc-service.d.ts.map +1 -1
  278. package/dist/services/project.rpc-service.js +11 -0
  279. package/dist/services/project.rpc-service.js.map +1 -1
  280. package/dist/services/project.service.d.ts +21 -11
  281. package/dist/services/project.service.d.ts.map +1 -1
  282. package/dist/services/project.service.js +74 -59
  283. package/dist/services/project.service.js.map +1 -1
  284. package/dist/services/redeploy-decision.d.ts +2 -2
  285. package/dist/services/redeploy-decision.js +1 -1
  286. package/dist/services/release.rpc-service.d.ts +1 -1
  287. package/dist/services/release.rpc-service.js +1 -1
  288. package/dist/services/remote-deployer.service.d.ts +27 -16
  289. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  290. package/dist/services/remote-deployer.service.js +269 -101
  291. package/dist/services/remote-deployer.service.js.map +1 -1
  292. package/dist/services/remote-provisioner.d.ts +2 -0
  293. package/dist/services/remote-provisioner.d.ts.map +1 -1
  294. package/dist/services/remote-provisioner.js +1 -1
  295. package/dist/services/remote-provisioner.js.map +1 -1
  296. package/dist/services/static-carry-forward.d.ts +26 -1
  297. package/dist/services/static-carry-forward.d.ts.map +1 -1
  298. package/dist/services/static-carry-forward.js +275 -1
  299. package/dist/services/static-carry-forward.js.map +1 -1
  300. package/dist/shared/dto/nodes.d.ts +2 -2
  301. package/dist/shared/dto/services.d.ts +27 -0
  302. package/dist/shared/dto/services.d.ts.map +1 -1
  303. package/dist/shared/local-infra-host.d.ts +2 -2
  304. package/dist/shared/local-infra-host.js +2 -2
  305. package/dist/shared/release-reading.d.ts +1 -1
  306. package/dist/shared/release-reading.js +1 -1
  307. package/package.json +16 -12
  308. package/webapp/dist/BUILD.json +2 -2
  309. package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
  310. package/webapp/dist/assets/{Grid-BZ7xhoHQ.js → Grid-DizFZYue.js} +1 -1
  311. package/webapp/dist/assets/{Switch-DGSAxQPM.js → Switch-Bfiqzx8l.js} +1 -1
  312. package/webapp/dist/assets/alerts-DH_RVRS3.js +1 -0
  313. package/webapp/dist/assets/apps-B96355sz.js +1 -0
  314. package/webapp/dist/assets/audit-CYGtbi4k.js +1 -0
  315. package/webapp/dist/assets/client-BmqFExWT.js +1 -0
  316. package/webapp/dist/assets/containers-B_TpThln.js +2 -0
  317. package/webapp/dist/assets/dashboard-DHf2_65N.js +1 -0
  318. package/webapp/dist/assets/dashboard-builder-CWY2pjeG.js +1 -0
  319. package/webapp/dist/assets/{deploy-release-dialog-D6C-XcKY.js → deploy-release-dialog-Dp-zpSAd.js} +1 -1
  320. package/webapp/dist/assets/deployments-tJI6O3fK.js +1 -0
  321. package/webapp/dist/assets/detail-B2zP1Hto.js +8 -0
  322. package/webapp/dist/assets/detail-CoIrwmsy.js +1 -0
  323. package/webapp/dist/assets/detail-DWaGaOtL.js +2 -0
  324. package/webapp/dist/assets/index-Dvo0iprx.css +1 -0
  325. package/webapp/dist/assets/index-vMnY_4jR.js +412 -0
  326. package/webapp/dist/assets/logs-DTRjOfX8.js +12 -0
  327. package/webapp/dist/assets/maplibre-gl-DowHoZAx.js +814 -0
  328. package/webapp/dist/assets/{metrics-CQgjz2Lz.js → metrics-UCajtdox.js} +2 -2
  329. package/webapp/dist/assets/nodes-DuTVU0f6.js +7 -0
  330. package/webapp/dist/assets/pipelines-C8BeDcAl.js +4 -0
  331. package/webapp/dist/assets/projects-Dp_zFfLY.js +1 -0
  332. package/webapp/dist/assets/react-DlmbjZJV.js +1 -0
  333. package/webapp/dist/assets/react-apexcharts.esm-C8pn45ml.js +97 -0
  334. package/webapp/dist/assets/{release-bits-Dj4EOhhb.js → release-bits-BzTKz5fM.js} +1 -1
  335. package/webapp/dist/assets/release-build-panel-DcW9YcXQ.js +1 -0
  336. package/webapp/dist/assets/releases-B4hcr1bE.js +2 -0
  337. package/webapp/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  338. package/webapp/dist/assets/settings-DIteZTbe.js +1 -0
  339. package/webapp/dist/assets/sign-in-D4kMBOHp.js +1 -0
  340. package/webapp/dist/assets/stacks-Brnf-EB7.js +1 -0
  341. package/webapp/dist/assets/{system-info-BtE3dgfw.js → system-info-CFDNVKkU.js} +1 -1
  342. package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
  343. package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
  344. package/webapp/dist/assets/{use-stack-context-CZUgPq88.js → use-stack-context-CnA5FTHu.js} +1 -1
  345. package/webapp/dist/index.html +6 -6
  346. package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +0 -1
  347. package/webapp/dist/assets/alerts-sXqHJbsa.js +0 -1
  348. package/webapp/dist/assets/apps-B_Ah8Flh.js +0 -1
  349. package/webapp/dist/assets/audit-YXihwyui.js +0 -1
  350. package/webapp/dist/assets/client-CGbBvy9k.js +0 -1
  351. package/webapp/dist/assets/containers-Di4NOTLf.js +0 -2
  352. package/webapp/dist/assets/dashboard-Cfuf95N3.js +0 -1
  353. package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +0 -1
  354. package/webapp/dist/assets/deployments-ChTq5kCw.js +0 -1
  355. package/webapp/dist/assets/detail-BsGWv7Dj.js +0 -1
  356. package/webapp/dist/assets/detail-CyVf_cw5.js +0 -2
  357. package/webapp/dist/assets/detail-D027j6aO.js +0 -8
  358. package/webapp/dist/assets/index-B8AHIPc-.css +0 -1
  359. package/webapp/dist/assets/index-DiZbrwxT.js +0 -414
  360. package/webapp/dist/assets/logs-L2b8Oqmo.js +0 -12
  361. package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +0 -801
  362. package/webapp/dist/assets/nodes-Nwia2Ty6.js +0 -7
  363. package/webapp/dist/assets/pipelines-DCu_rXOr.js +0 -4
  364. package/webapp/dist/assets/projects-Bb4aV76h.js +0 -1
  365. package/webapp/dist/assets/react-CwJFpaho.js +0 -1
  366. package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +0 -1956
  367. package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +0 -1
  368. package/webapp/dist/assets/releases-CnAt3yO6.js +0 -2
  369. package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +0 -1
  370. package/webapp/dist/assets/settings-DU-mjiwb.js +0 -1
  371. package/webapp/dist/assets/sign-in-Bcvjrr4C.js +0 -1
  372. package/webapp/dist/assets/stacks-B-e8p50I.js +0 -1
  373. package/webapp/dist/assets/topology-Cwch-uF1.js +0 -12
  374. package/webapp/dist/assets/traces-BbShR-4P.js +0 -1
@@ -1 +1 @@
1
- import{Bt as e,Jt as t,Qn as n,Wn as r,_n as i,sn as a,vn as o,zt as s}from"./index-DiZbrwxT.js";function c(e){let t=e.length===1?e[0]:null;return t&&t.name===`gates`&&t.status===`not-run`?t:null}function l(e){if(!e.complete)return{text:`no manifest`,tone:`none`};let t=c(e.gateList);if(t)return{text:/--skip-gates/.test(t.detail??``)?`skipped`:`not run`,tone:`unfinished`};let{total:n,passed:r,failed:i}=e.gates;return n===0?{text:`—`,tone:`none`}:{text:`${r}/${n}`,tone:i>0?`failed`:r<n?`unfinished`:`passed`}}var u="the daemon has no audit trail, and its `stack.start` rows are what say which release a stack runs";function d(e,t){return e?{known:!0,deployments:t}:{known:!1,why:u}}function f(e){let t=new Map;for(let n of e)n.release&&t.set(n.release,[...t.get(n.release)??[],n]);return t}var p=n();function m(e){return e==null?`—`:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(0)} KB`:e<1073741824?`${(e/1024/1024).toFixed(1)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`}function h(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t} s`;let n=Math.floor(t/60);return n<60?`${n} m ${String(t%60).padStart(2,`0`)} s`:`${Math.floor(n/60)} h ${String(n%60).padStart(2,`0`)} m`}function g(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{day:`2-digit`,month:`short`,hour:`2-digit`,minute:`2-digit`})}var _={passed:{color:`success.main`,label:`passed`},failed:{color:`error.main`,label:`failed`},"timed-out":{color:`warning.main`,label:`timed out`},killed:{color:`warning.dark`,label:`killed`},"not-run":{color:`text.disabled`,label:`did not run`}};function v(e){if(e.length===0)return`No gates recorded — a stack that requires any will refuse this release.`;let t=e.filter(e=>e.status!==`passed`);return t.length===0?`All ${e.length} gates passed.`:`${t.length} of ${e.length} gates did not pass: ${t.map(e=>`${e.name} ${_[e.status].label}`).join(`, `)}.`}function y(e){return e!=null&&e.loadAtGateEnd[1]>e.cpus}function b(e){let t=e=>e.map(e=>e.toFixed(1)).join(` / `);return`${t(e.loadAtGateStart)} → ${t(e.loadAtGateEnd)} on ${e.cpus} cores`}function x({gates:t,size:n=10,columns:r}){if(t.length===0)return(0,p.jsx)(i,{variant:`caption`,sx:{color:`text.disabled`},children:`no gates`});let o=Math.max(2,Math.round(n*.35));return(0,p.jsx)(a,{sx:r?{display:`grid`,gridTemplateColumns:`repeat(${r}, ${n}px)`,gap:`${o}px`}:{display:`flex`,flexWrap:`wrap`,gap:`${o}px`},children:t.map((t,r)=>(0,p.jsx)(e,{title:`${t.name} — ${_[t.status].label}${t.durationMs?` (${Math.round(t.durationMs/1e3)} s)`:``}${t.detail?` — ${t.detail}`:``}`,arrow:!0,children:(0,p.jsx)(a,{sx:{width:n,height:n,borderRadius:`2px`,bgcolor:_[t.status].color,...t.status===`not-run`&&{bgcolor:`transparent`,border:e=>`1px solid ${e.palette.text.disabled}`}}})},`${t.name}-${r}`))})}var S={passed:`success.main`,failed:`error.main`,unfinished:`warning.main`,none:`text.disabled`};function C({release:e,variant:t=`body2`}){let n=l(e);return(0,p.jsx)(i,{variant:t,sx:{fontWeight:600,color:S[n.tone],fontFamily:`monospace`},children:n.text})}function w({projectCommit:t,omniCommit:n,onRemote:r,project:a}){let c=[r.project===!1?a:null,r.omni===!1?`omni`:null].filter(Boolean);return(0,p.jsxs)(s,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[(0,p.jsx)(e,{title:`${a} ${t??`unknown`}`,arrow:!0,children:(0,p.jsx)(i,{variant:`caption`,sx:{fontFamily:`monospace`},children:t?.slice(0,8)??`—`})}),(0,p.jsx)(i,{variant:`caption`,sx:{color:`text.disabled`},children:`+`}),(0,p.jsx)(e,{title:`omni ${n??`unknown`}`,arrow:!0,children:(0,p.jsx)(i,{variant:`caption`,sx:{fontFamily:`monospace`},children:n?.slice(0,8)??`—`})}),c.length>0&&(0,p.jsx)(e,{title:`No remote branch contains the ${c.join(` and `)} commit — nobody else could rebuild this release`,arrow:!0,children:(0,p.jsx)(o,{label:`local only`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]})}function T({percent:e,state:n}){return(0,p.jsx)(t,{variant:`determinate`,value:Math.min(100,Math.max(0,e)),color:n===`failed`?`error`:n===`stopped`?`warning`:n===`done`?`success`:`primary`,sx:{height:6,borderRadius:3,bgcolor:e=>r(e.palette.text.primary,.08)}})}var E={running:{label:`Building`,color:`info`},done:{label:`Built`,color:`success`},failed:{label:`Failed`,color:`error`},stopped:{label:`Stopped`,color:`warning`}};export{C as a,h as c,y as d,g as f,_ as i,v as l,f as m,T as n,x as o,d as p,w as r,m as s,E as t,b as u};
1
+ import{$n as e,Bt as t,Gn as n,Vt as r,Yt as i,cn as a,vn as o,yn as s}from"./index-vMnY_4jR.js";function c(e){let t=e.length===1?e[0]:null;return t&&t.name===`gates`&&t.status===`not-run`?t:null}function l(e){if(!e.complete)return{text:`no manifest`,tone:`none`};let t=c(e.gateList);if(t)return{text:/--skip-gates/.test(t.detail??``)?`skipped`:`not run`,tone:`unfinished`};let{total:n,passed:r,failed:i}=e.gates;return n===0?{text:`—`,tone:`none`}:{text:`${r}/${n}`,tone:i>0?`failed`:r<n?`unfinished`:`passed`}}var u="the daemon has no audit trail, and its `stack.start` rows are what say which release a stack runs";function d(e,t){return e?{known:!0,deployments:t}:{known:!1,why:u}}function f(e){let t=new Map;for(let n of e)n.release&&t.set(n.release,[...t.get(n.release)??[],n]);return t}var p=e();function m(e){return e==null?`—`:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(0)} KB`:e<1073741824?`${(e/1024/1024).toFixed(1)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`}function h(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t} s`;let n=Math.floor(t/60);return n<60?`${n} m ${String(t%60).padStart(2,`0`)} s`:`${Math.floor(n/60)} h ${String(n%60).padStart(2,`0`)} m`}function g(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{day:`2-digit`,month:`short`,hour:`2-digit`,minute:`2-digit`})}var _={passed:{color:`success.main`,label:`passed`},failed:{color:`error.main`,label:`failed`},"timed-out":{color:`warning.main`,label:`timed out`},killed:{color:`warning.dark`,label:`killed`},"not-run":{color:`text.disabled`,label:`did not run`}};function v(e){if(e.length===0)return`No gates recorded — a stack that requires any will refuse this release.`;let t=e.filter(e=>e.status!==`passed`);return t.length===0?`All ${e.length} gates passed.`:`${t.length} of ${e.length} gates did not pass: ${t.map(e=>`${e.name} ${_[e.status].label}`).join(`, `)}.`}function y(e){return e!=null&&e.loadAtGateEnd[1]>e.cpus}function b(e){let t=e=>e.map(e=>e.toFixed(1)).join(` / `);return`${t(e.loadAtGateStart)} → ${t(e.loadAtGateEnd)} on ${e.cpus} cores`}function x({gates:e,size:t=10,columns:n}){if(e.length===0)return(0,p.jsx)(o,{variant:`caption`,sx:{color:`text.disabled`},children:`no gates`});let i=Math.max(2,Math.round(t*.35));return(0,p.jsx)(a,{sx:n?{display:`grid`,gridTemplateColumns:`repeat(${n}, ${t}px)`,gap:`${i}px`}:{display:`flex`,flexWrap:`wrap`,gap:`${i}px`},children:e.map((e,n)=>(0,p.jsx)(r,{title:`${e.name} — ${_[e.status].label}${e.durationMs?` (${Math.round(e.durationMs/1e3)} s)`:``}${e.detail?` — ${e.detail}`:``}`,arrow:!0,children:(0,p.jsx)(a,{sx:{width:t,height:t,borderRadius:`2px`,bgcolor:_[e.status].color,...e.status===`not-run`&&{bgcolor:`transparent`,border:e=>`1px solid ${e.palette.text.disabled}`}}})},`${e.name}-${n}`))})}var S={passed:`success.main`,failed:`error.main`,unfinished:`warning.main`,none:`text.disabled`};function C({release:e,variant:t=`body2`}){let n=l(e);return(0,p.jsx)(o,{variant:t,sx:{fontWeight:600,color:S[n.tone],fontFamily:`monospace`},children:n.text})}function w({projectCommit:e,omniCommit:n,onRemote:i,project:a}){let c=[i.project===!1?a:null,i.omni===!1?`omni`:null].filter(Boolean);return(0,p.jsxs)(t,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[(0,p.jsx)(r,{title:`${a} ${e??`unknown`}`,arrow:!0,children:(0,p.jsx)(o,{variant:`caption`,sx:{fontFamily:`monospace`},children:e?.slice(0,8)??`—`})}),(0,p.jsx)(o,{variant:`caption`,sx:{color:`text.disabled`},children:`+`}),(0,p.jsx)(r,{title:`omni ${n??`unknown`}`,arrow:!0,children:(0,p.jsx)(o,{variant:`caption`,sx:{fontFamily:`monospace`},children:n?.slice(0,8)??`—`})}),c.length>0&&(0,p.jsx)(r,{title:`No remote branch contains the ${c.join(` and `)} commit — nobody else could rebuild this release`,arrow:!0,children:(0,p.jsx)(s,{label:`local only`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]})}function T({percent:e,state:t}){return(0,p.jsx)(i,{variant:`determinate`,value:Math.min(100,Math.max(0,e)),color:t===`failed`?`error`:t===`stopped`?`warning`:t===`done`?`success`:`primary`,sx:{height:6,borderRadius:3,bgcolor:e=>n(e.palette.text.primary,.08)}})}var E={running:{label:`Building`,color:`info`},done:{label:`Built`,color:`success`},failed:{label:`Failed`,color:`error`},stopped:{label:`Stopped`,color:`warning`}};export{C as a,h as c,y as d,g as f,_ as i,v as l,f as m,T as n,x as o,d as p,w as r,m as s,E as t,b as u};
@@ -0,0 +1 @@
1
+ import{$n as e,B as t,Bt as n,Gn as r,Qt as i,an as a,bn as o,cn as s,sn as c,tr as l,vn as u,yn as d}from"./index-vMnY_4jR.js";import{c as f,l as p,n as m,o as h,t as g}from"./release-bits-BzTKz5fM.js";var _=e();function v({record:e,onStop:v,onDeploy:y,compact:b}){let x=g[e.state]??{label:e.state,color:`info`},S=e.state===`running`,C=e.history.slice(-60),w=e.request;return(0,_.jsx)(c,{variant:`outlined`,sx:{borderColor:S?`primary.main`:void 0},children:(0,_.jsxs)(a,{sx:{pb:2},children:[(0,_.jsxs)(n,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1},children:[(0,_.jsx)(d,{label:x.label,size:`small`,color:x.color,sx:{fontWeight:600}}),(0,_.jsx)(u,{variant:`subtitle2`,children:w.project}),e.releaseId&&(0,_.jsx)(u,{component:l,to:`/releases/${e.releaseId}`,variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`,textDecoration:`none`,"&:hover":{textDecoration:`underline`}},children:e.releaseId}),(0,_.jsx)(s,{sx:{flex:1}}),(0,_.jsxs)(u,{variant:`caption`,sx:{color:`text.secondary`},children:[f(e.durationMs),e.requestedBy?` · ${e.requestedBy}`:``]}),S&&v&&(0,_.jsx)(o,{size:`small`,color:`warning`,startIcon:(0,_.jsx)(t,{}),onClick:()=>v(e.buildId),children:`Stop`}),e.state===`done`&&e.releaseId&&y&&(0,_.jsx)(o,{size:`small`,variant:`contained`,onClick:()=>y(e.releaseId),children:`Deploy…`})]}),(0,_.jsx)(m,{percent:e.percent,state:e.state}),(0,_.jsxs)(n,{direction:`row`,spacing:1,sx:{alignItems:`baseline`,mt:1},children:[(0,_.jsx)(u,{variant:`body2`,sx:{fontWeight:500},children:e.phase}),(0,_.jsxs)(u,{variant:`caption`,sx:{color:`text.secondary`},children:[e.percent,`%`]})]}),(0,_.jsxs)(n,{direction:`row`,spacing:.75,sx:{mt:.5,flexWrap:`wrap`},children:[w.forStack&&(0,_.jsx)(d,{size:`small`,variant:`outlined`,label:`statics: ${w.forStack}`,sx:{height:20,fontSize:11}}),w.projectCommit&&(0,_.jsx)(d,{size:`small`,variant:`outlined`,label:`project ${w.projectCommit}`,sx:{height:20,fontSize:11}}),w.omniCommit&&(0,_.jsx)(d,{size:`small`,variant:`outlined`,label:`omni ${w.omniCommit}`,sx:{height:20,fontSize:11}}),w.skipGates&&(0,_.jsx)(d,{size:`small`,color:`warning`,variant:`outlined`,label:`gates skipped`,sx:{height:20,fontSize:11}}),(w.envKeys??[]).map(e=>(0,_.jsx)(d,{size:`small`,variant:`outlined`,label:e,sx:{height:20,fontSize:11,fontFamily:`monospace`}},e))]}),e.gates.length>0&&(0,_.jsxs)(s,{sx:{mt:1.5},children:[(0,_.jsx)(u,{variant:`caption`,sx:{color:`text.secondary`},children:p(e.gates)}),(0,_.jsx)(s,{sx:{mt:.5},children:(0,_.jsx)(h,{gates:e.gates})})]}),e.error&&(0,_.jsx)(s,{sx:{mt:1.5,p:1.25,borderRadius:1,bgcolor:e=>r(e.palette.error.main,.08)},children:(0,_.jsx)(u,{variant:`caption`,sx:{whiteSpace:`pre-wrap`,fontFamily:`monospace`,color:`error.main`},children:e.error})}),!b&&C.length>0&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(i,{sx:{my:1.5}}),(0,_.jsx)(s,{sx:{maxHeight:220,overflowY:`auto`,fontFamily:`monospace`,fontSize:12,lineHeight:1.7},children:C.map((e,t)=>(0,_.jsxs)(s,{sx:{display:`flex`,gap:1.5},children:[(0,_.jsx)(u,{component:`span`,variant:`caption`,sx:{color:`text.disabled`,fontFamily:`monospace`},children:e.at.slice(11,19)}),(0,_.jsxs)(u,{component:`span`,variant:`caption`,sx:{color:`text.disabled`,fontFamily:`monospace`,width:34,textAlign:`right`},children:[e.percent,`%`]}),(0,_.jsx)(u,{component:`span`,variant:`caption`,sx:{fontFamily:`monospace`},children:e.phase})]},`${e.at}-${t}`))})]})]})})}export{v as t};
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{t as n}from"./FormControlLabel-BbSxpQwN.js";import{t as r}from"./Switch-Bfiqzx8l.js";import{v as i}from"./client-BmqFExWT.js";import{$n as a,$t as o,Bt as s,M as c,Mt as l,On as u,P as d,Pt as f,Vt as p,Wt as m,b as h,bn as g,cn as _,ct as v,ft as y,kn as b,nn as x,nt as S,ot as C,rn as w,tn as T,tr as E,un as D,vn as O,vt as ee,y as k,yn as A,yt as j}from"./index-vMnY_4jR.js";import{a as M,d as te,f as N,m as P,o as F,r as I,s as L,u as R}from"./release-bits-BzTKz5fM.js";import{n as z,t as B}from"./deploy-release-dialog-Dp-zpSAd.js";import{t as V}from"./release-build-panel-DcW9YcXQ.js";var H=e(t(),1),U=a();function W(e){let t={},n=[];for(let r of e.split(`
2
+ `)){let e=r.trim();if(!e||e.startsWith(`#`))continue;let i=e.indexOf(`=`);if(i<=0){n.push(e);continue}let a=e.slice(0,i).trim();/^[A-Z][A-Z0-9_]*$/.test(a)?t[a]=e.slice(i+1):n.push(e)}return{env:t,bad:n}}function G({open:e,onClose:t,defaultProject:a,onStarted:c,preflight:l}){let u=v(e=>e.projects),d=v(e=>e.stacksByProject),p=v(e=>e.fetchStacks),[h,y]=(0,H.useState)(a??``),[S,C]=(0,H.useState)(``),[E,ee]=(0,H.useState)(``),[k,j]=(0,H.useState)(``),[M,te]=(0,H.useState)(``),[N,P]=(0,H.useState)(!1),[F,I]=(0,H.useState)(!1),[L,R]=(0,H.useState)(!1),[z,B]=(0,H.useState)(null),V=(0,H.useMemo)(()=>d[h]??[],[d,h]);(0,H.useEffect)(()=>{e&&(y(a??``),B(null))},[e,a]),(0,H.useEffect)(()=>{e&&h&&!d[h]&&p(h)},[e,h,d,p]),(0,H.useEffect)(()=>{if(!e||S)return;let t=V.find(e=>e.config?.release?.mode===`required`);t&&C(t.name)},[e,V,S]);let{env:G,bad:K}=(0,H.useMemo)(()=>W(M),[M]);return(0,U.jsxs)(w,{open:e,onClose:L?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,U.jsx)(o,{children:`Build a release`}),(0,U.jsx)(T,{children:(0,U.jsxs)(s,{spacing:2.5,sx:{mt:1},children:[(0,U.jsxs)(O,{variant:`body2`,sx:{color:`text.secondary`},children:[`Two commits are cloned fresh, installed, built and gated on this master. Nothing of the working tree takes part — not uncommitted edits, not an old `,(0,U.jsx)(`code`,{children:`dist`}),`, not another checkout of omni.`]}),l?.load&&l.cpus!==null&&l.load[0]>l.cpus&&(0,U.jsxs)(D,{severity:`warning`,children:[`This machine is carrying more than its cores right now — load`,` `,(0,U.jsx)(`strong`,{children:l.load.map(e=>e.toFixed(1)).join(` / `)}),` on `,l.cpus,` cores. The gates time out on a machine like this: tests that pass alone fail on connection deadlines, and a different set each run. A release built now records the machine as much as the code.`]}),(0,U.jsxs)(f,{select:!0,label:`Project`,value:h,onChange:e=>{y(e.target.value),C(``)},size:`small`,fullWidth:!0,disabled:L,children:[u.length===0&&(0,U.jsx)(m,{disabled:!0,value:``,children:`No projects registered`}),u.map(e=>(0,U.jsx)(m,{value:e.name,children:e.name},e.name))]}),(0,U.jsxs)(f,{select:!0,label:`Static bundle for`,value:S,onChange:e=>C(e.target.value),size:`small`,fullWidth:!0,disabled:L,helperText:`A frontend bakes its environment in, so the bundle belongs to one stack. A stack whose gateway serves one refuses a release built without it.`,children:[(0,U.jsx)(m,{value:``,children:(0,U.jsx)(`em`,{children:`none — backends only`})}),V.map(e=>(0,U.jsx)(m,{value:e.name,children:(0,U.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,U.jsx)(O,{variant:`body2`,children:e.name}),e.config?.release?.mode===`required`&&(0,U.jsx)(A,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}})]})},e.name))]}),(0,U.jsxs)(s,{direction:`row`,spacing:1.5,children:[(0,U.jsx)(f,{label:`Project commit`,placeholder:`HEAD`,value:E,onChange:e=>ee(e.target.value),size:`small`,fullWidth:!0,disabled:L}),(0,U.jsx)(f,{label:`omni commit`,placeholder:`HEAD`,value:k,onChange:e=>j(e.target.value),size:`small`,fullWidth:!0,disabled:L})]}),(0,U.jsx)(f,{label:`Environment for the gates`,placeholder:`TEST_DATABASE__PORT=5432`,value:M,onChange:e=>te(e.target.value),size:`small`,fullWidth:!0,multiline:!0,minRows:2,disabled:L,helperText:K.length>0?`Not a NAME=value line: ${K.slice(0,2).join(` · `)}`:`One NAME=value per line. The daemon has the system environment, not your shell’s.`,error:K.length>0}),(0,U.jsxs)(_,{children:[(0,U.jsx)(n,{control:(0,U.jsx)(r,{checked:N,onChange:e=>P(e.target.checked),size:`small`,disabled:L}),label:(0,U.jsx)(O,{variant:`body2`,children:`Skip the gates`})}),N&&(0,U.jsxs)(D,{severity:`warning`,sx:{mt:.5},children:[`Every gate is recorded as `,(0,U.jsx)(`strong`,{children:`not-run`}),`, and a stack that requires any will refuse the release. For a look at what would be built, never for a deployment.`]}),(0,U.jsx)(n,{control:(0,U.jsx)(r,{checked:F,onChange:e=>I(e.target.checked),size:`small`,disabled:L}),label:(0,U.jsx)(O,{variant:`body2`,children:`Keep the clones (about 2 GB)`})})]}),z&&(0,U.jsx)(D,{severity:`error`,children:(0,U.jsx)(O,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:z})})]})}),(0,U.jsxs)(x,{children:[(0,U.jsx)(g,{onClick:t,size:`small`,disabled:L,children:`Cancel`}),(0,U.jsx)(g,{variant:`contained`,size:`small`,disabled:!h||L||K.length>0,startIcon:L?(0,U.jsx)(b,{size:14,color:`inherit`}):void 0,onClick:async()=>{R(!0),B(null);try{c(await i.build({project:h,...E.trim()?{projectCommit:E.trim()}:{},...k.trim()?{omniCommit:k.trim()}:{},...S?{forStack:S}:{},...N?{skipGates:!0}:{},...F?{keepSource:!0}:{},...Object.keys(G).length?{env:G}:{}})),t()}catch(e){B(e.message)}finally{R(!1)}},children:L?`Starting…`:`Build`})]})]})}function K({open:e,onClose:t,onPruned:n}){let[r,a]=(0,H.useState)(5),[c,l]=(0,H.useState)(null),[u,d]=(0,H.useState)(!1),[p,m]=(0,H.useState)(null),[h,v]=(0,H.useState)(null),y=(0,H.useCallback)(async()=>{d(!0),m(null);try{l(await i.prune({keep:r}))}catch(e){m(e.message),l(null)}finally{d(!1)}},[r]);return(0,H.useEffect)(()=>{e&&(v(null),y())},[e,y]),(0,U.jsxs)(w,{open:e,onClose:u?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,U.jsx)(o,{children:`Prune releases`}),(0,U.jsx)(T,{children:(0,U.jsxs)(s,{spacing:2.5,sx:{mt:1},children:[(0,U.jsx)(f,{label:`Keep the newest`,type:`number`,size:`small`,value:r,onChange:e=>a(Math.max(0,Number(e.target.value)||0)),onBlur:()=>void y(),disabled:u,sx:{width:180}}),c?.unknown&&(0,U.jsxs)(D,{severity:`warning`,children:[`Which of these a stack is running cannot be told — `,c.unknown,`. The daemon will not remove anything until it can; `,(0,U.jsx)(`code`,{children:`omnitron release prune --yes --allow-unprotected`}),` removes them without knowing.`]}),c&&c.protectedByDeployment.length>0&&(0,U.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`},children:[`Kept whatever their age, because a stack runs them: `,c.protectedByDeployment.join(`, `),`.`]}),u&&!h&&(0,U.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,U.jsx)(b,{size:16}),(0,U.jsx)(O,{variant:`body2`,sx:{color:`text.secondary`},children:`Measuring…`})]}),h&&(0,U.jsxs)(D,{severity:`success`,children:[`Removed `,h.removed.length,` release`,h.removed.length===1?``:`s`,`, `,L(h.freedBytes),` freed;`,` `,h.kept,` kept.`]}),!h&&c&&(c.doomed.length===0?(0,U.jsxs)(D,{severity:`info`,children:[`Nothing to remove — `,c.kept,` release(s) and all of them are kept.`]}):(0,U.jsxs)(_,{children:[(0,U.jsxs)(O,{variant:`body2`,sx:{mb:1},children:[c.doomed.length,` release`,c.doomed.length===1?``:`s`,` would go, freeing `,L(c.freedBytes),`:`]}),(0,U.jsx)(_,{sx:{maxHeight:220,overflowY:`auto`},children:c.doomed.map(e=>(0,U.jsxs)(s,{direction:`row`,spacing:1.5,sx:{py:.25},children:[(0,U.jsx)(O,{variant:`caption`,sx:{fontFamily:`monospace`,flex:1},children:e.id}),(0,U.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:L(e.bytes)})]},e.id))})]})),p&&(0,U.jsx)(D,{severity:`error`,children:(0,U.jsx)(O,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:p})})]})}),(0,U.jsxs)(x,{children:[(0,U.jsx)(g,{onClick:t,size:`small`,disabled:u,children:h?`Close`:`Cancel`}),!h&&(0,U.jsxs)(g,{variant:`contained`,color:`error`,size:`small`,disabled:u||!c||c.doomed.length===0||c.unknown!==null,onClick:async()=>{d(!0),m(null);try{let e=await i.prune({keep:r,apply:!0});v(e),n()}catch(e){m(e.message)}finally{d(!1)}},children:[`Remove `,c?.doomed.length??0]})]})]})}async function ne(){let[e,t,n,r]=await Promise.allSettled([z.list(),z.builds(),z.preflight(),z.deployments(200)]),i=[];if(e.status===`rejected`&&i.push(`releases: ${e.reason?.message??`unavailable`}`),t.status===`rejected`&&i.push(`builds: ${t.reason?.message??`unavailable`}`),n.status===`rejected`&&i.push(`preflight: ${n.reason?.message??`unavailable`}`),r.status===`rejected`&&i.push(`deployments: ${r.reason?.message??`unavailable`}`),e.status===`rejected`)throw e.reason;return{releases:e.value.releases,root:e.value.root,builds:t.status===`fulfilled`?t.value:[],preflight:n.status===`fulfilled`?n.value:null,deployments:r.status===`fulfilled`?r.value:{known:!1,why:`the daemon could not say which release a stack runs: ${r.reason?.message??`unavailable`}`},partial:i.length>0?i.join(` · `):null}}function q(){let e=C(),t=y(e=>e.user?.role),[n,r]=(0,H.useState)(!1),[a,o]=(0,H.useState)(!1),[f,m]=(0,H.useState)(null),[v,b]=(0,H.useState)(null),[x,w]=(0,H.useState)(null),[T,D]=(0,H.useState)(0),[W,q]=(0,H.useState)(25),[J,re]=(0,H.useState)(!0),{data:Y,loading:ie,error:ae,refresh:X}=S(ne,{intervalMs:2e4}),oe=(Y?.builds??[]).some(e=>e.state===`running`)||v!==null,Z=S(async()=>z.builds(),{intervalMs:3e3,enabled:oe}),Q=Z.data??Y?.builds??[],se=v&&!Q.some(e=>e.buildId===v.buildId)?[v,...Q]:Q,$=(0,H.useMemo)(()=>Y?.releases??[],[Y?.releases]),ce=(0,H.useMemo)(()=>J&&e?$.filter(t=>t.project===e):$,[$,J,e]),le=(0,H.useMemo)(()=>Y?.deployments.known?P(Y.deployments.deployments):new Map,[Y?.deployments]),ue=(0,H.useCallback)(async e=>{try{await i.stopBuild({buildId:e}),await Z.refresh()}catch(e){w(e.message)}},[Z]),de=[{key:`id`,header:`Release`,render:e=>{let t=le.get(e.id)??[];return(0,U.jsxs)(s,{spacing:.5,children:[(0,U.jsx)(O,{component:E,to:`/releases/${e.id}`,variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600,textDecoration:`none`,color:`text.primary`,wordBreak:`break-all`,"&:hover":{color:`primary.main`}},children:e.id}),(0,U.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,U.jsx)(I,{projectCommit:e.projectCommit,omniCommit:e.omniCommit,onRemote:e.onRemote,project:e.project}),!e.complete&&(0,U.jsx)(p,{title:`This directory holds no manifest: the build did not finish. Its logs are still there.`,arrow:!0,children:(0,U.jsx)(A,{label:`unfinished`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})}),t.map(e=>(0,U.jsx)(p,{title:`Last deployed to ${e.stack} ${N(e.at)} · ${e.source??`unknown`}`,arrow:!0,children:(0,U.jsx)(A,{label:`on ${e.stack}`,size:`small`,color:`success`,variant:`outlined`,sx:{height:18,fontSize:10}})},`${e.project}/${e.stack}`))]})]})}},{key:`built`,header:`Built`,render:e=>(0,U.jsxs)(s,{spacing:.25,sx:{maxWidth:170},children:[(0,U.jsx)(O,{variant:`body2`,sx:{whiteSpace:`nowrap`},children:N(e.builtAt)}),(0,U.jsx)(p,{title:e.builtBy??``,arrow:!0,children:(0,U.jsx)(O,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`,display:`block`},children:e.builtBy??`—`})})]})},{key:`gates`,header:`Gates`,render:e=>(0,U.jsxs)(s,{spacing:.5,children:[(0,U.jsxs)(s,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[(0,U.jsx)(M,{release:e}),e.machine&&te(e.machine)&&(0,U.jsx)(p,{title:`The machine was carrying more than its cores while the gates ran — ${R(e.machine)}. A red gate here is evidence about the machine before it is evidence about the code.`,arrow:!0,children:(0,U.jsx)(A,{label:`loaded`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]}),(0,U.jsx)(F,{gates:e.gateList,size:8,columns:7}),e.verified.map(e=>(0,U.jsx)(p,{title:`Probes ${e.stack} ran against this release while carrying it — measured ${N(e.at)}`,arrow:!0,children:(0,U.jsxs)(O,{variant:`caption`,sx:{color:e.passed===e.total?`success.main`:`warning.main`,fontFamily:`monospace`,whiteSpace:`nowrap`},children:[`verified on `,e.stack,`: `,e.passed,`/`,e.total]})},e.stack))]})},{key:`carries`,header:`Carries`,render:e=>(0,U.jsxs)(s,{spacing:.5,sx:{alignItems:`flex-start`},children:[(0,U.jsx)(p,{title:e.artifacts.apps.join(`, `)||`none`,arrow:!0,children:(0,U.jsxs)(O,{variant:`body2`,sx:{whiteSpace:`nowrap`,color:e.complete?`text.primary`:`text.disabled`},children:[e.complete?`${e.artifacts.count} app${e.artifacts.count===1?``:`s`}`:`—`,e.artifacts.failed.length>0&&(0,U.jsxs)(O,{component:`span`,variant:`caption`,sx:{color:`error.main`,ml:.75},children:[e.artifacts.failed.length,` did not build`]})]})}),e.statics&&(0,U.jsx)(p,{title:`Static bundle built with ${e.statics.stack}'s environment — ${e.statics.files} files, ${L(e.statics.bytes)}`,arrow:!0,children:(0,U.jsx)(A,{label:`statics: ${e.statics.stack}`,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}})}),(0,U.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`,whiteSpace:`nowrap`},children:[L(e.bytes),e.keptSource&&(0,U.jsx)(p,{title:`The build's two clones are still on disk — kept on purpose, or left by a build that failed. They are not counted in this size.`,arrow:!0,children:(0,U.jsx)(_,{component:`span`,sx:{color:`warning.main`,ml:.75},children:`+ clones`})})]})]})},{key:`actions`,header:``,render:e=>(0,U.jsx)(s,{direction:`row`,sx:{justifyContent:`flex-end`},children:(0,U.jsx)(g,{size:`small`,variant:`outlined`,startIcon:(0,U.jsx)(h,{}),disabled:!e.complete,onClick:()=>m(e),sx:{whiteSpace:`nowrap`},children:`Deploy…`})})}],fe=ce.slice(T*W,T*W+W),pe=Y?.preflight?.canBuild!==!1,me=$.reduce((e,t)=>e+t.bytes,0);return(0,U.jsxs)(s,{spacing:3,children:[(0,U.jsx)(ee,{links:[{name:`Releases`}],action:(0,U.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,U.jsx)(u,{size:`small`,onClick:()=>void X(),title:`Refresh`,children:(0,U.jsx)(d,{})}),t===`admin`&&(0,U.jsx)(g,{size:`small`,startIcon:(0,U.jsx)(k,{}),onClick:()=>o(!0),children:`Prune…`}),(0,U.jsx)(p,{title:pe?``:`This master cannot run a build — see the banner`,arrow:!0,children:(0,U.jsx)(`span`,{children:(0,U.jsx)(g,{variant:`contained`,size:`small`,startIcon:(0,U.jsx)(c,{}),disabled:!pe,onClick:()=>r(!0),children:`Build`})})})]})}),Y?.preflight&&!Y.preflight.canBuild&&(0,U.jsxs)(j,{severity:`error`,variant:`outlined`,children:[`This master cannot run a release build: `,(0,U.jsx)(`strong`,{children:Y.preflight.missingTools.join(`, `)}),` `,Y.preflight.missingTools.length===1?`is`:`are`,` not on the daemon's PATH. A daemon started by launchd has the system PATH, not a shell's. It looked in: `,Y.preflight.path.slice(0,6).join(`, `),Y.preflight.path.length>6?`, …`:``]}),x&&(0,U.jsx)(j,{closable:!0,severity:`warning`,variant:`outlined`,onClose:()=>w(null),children:x}),Y?.partial&&(0,U.jsxs)(j,{severity:`warning`,variant:`outlined`,children:[`Part of this page could not be read — `,Y.partial]}),Y&&!Y.deployments.known&&(0,U.jsxs)(j,{severity:`warning`,variant:`outlined`,children:[`Which release each stack runs is unknown — `,Y.deployments.why,`. No release below is marked as deployed for that reason, not because none is, and pruning is refused until it can be told.`]}),se.length>0&&(0,U.jsx)(s,{spacing:1.5,children:se.slice(0,3).map(e=>(0,U.jsx)(V,{record:e,onStop:ue,onDeploy:e=>{let t=$.find(t=>t.id===e);t?m(t):X()}},e.buildId))}),(0,U.jsxs)(s,{direction:`row`,spacing:1.5,sx:{alignItems:`center`},children:[(0,U.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:Y?.root??``}),(0,U.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`},children:[$.length,` release`,$.length===1?``:`s`,`, `,L(me),` on disk`]}),(0,U.jsx)(_,{sx:{flex:1}}),e&&(0,U.jsx)(A,{size:`small`,variant:J?`filled`:`outlined`,label:J?`only ${e}`:`all projects`,onClick:()=>re(e=>!e),sx:{height:22,fontSize:11}})]}),(0,U.jsx)(l,{columns:de,data:fe,total:ce.length,loading:ie,loadError:ae??null,emptyMessage:`Nothing has been built on this master yet`,rowKey:e=>e.id,page:T,pageSize:W,onPageChange:D,onPageSizeChange:e=>{q(e),D(0)},dense:!0}),(0,U.jsx)(G,{open:n,onClose:()=>r(!1),defaultProject:e,preflight:Y?.preflight??null,onStarted:e=>{b(e),Z.refresh().then(()=>X())}}),(0,U.jsx)(K,{open:a,onClose:()=>o(!1),onPruned:()=>void X()}),(0,U.jsx)(B,{open:f!==null,onClose:()=>m(null),project:f?.project??e??``,release:f})]})}export{q as default};
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{t as n}from"./FormControlLabel-BbSxpQwN.js";import{t as r}from"./Switch-Bfiqzx8l.js";import{r as i,u as a}from"./client-BmqFExWT.js";import{$n as o,Bt as s,On as c,Pt as l,Qt as u,S as d,St as f,Ut as p,Wt as m,Xt as h,_n as g,a as _,an as v,bn as y,bt as b,cn as x,ft as S,i as C,in as w,kn as T,l as E,n as D,o as O,r as k,s as A,sn as j,ut as M,vn as N,wt as P,xt as F,y as I,yn as L,yt as R}from"./index-vMnY_4jR.js";import{c as z,n as B}from"./formatters-BqjL73N3.js";var V=e(t(),1),H=o(),U={borderRadius:2},W={p:3,"&:last-child":{pb:3}};function G({label:e,value:t,mono:n}){return(0,H.jsxs)(s,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,py:.5},children:[(0,H.jsx)(N,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,H.jsx)(N,{component:`div`,variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function K(){let e=S(e=>e.user);return e?(0,H.jsxs)(j,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(w,{title:`Profile`,subheader:`Account information`}),(0,H.jsx)(v,{sx:{...W,pt:0},children:(0,H.jsxs)(s,{spacing:.5,children:[(0,H.jsx)(G,{label:`Username`,value:e.username,mono:!0}),(0,H.jsx)(G,{label:`Display Name`,value:e.displayName}),(0,H.jsx)(G,{label:`Role`,value:(0,H.jsx)(L,{label:e.role,size:`small`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,H.jsx)(G,{label:`User ID`,value:e.id,mono:!0})]})})]}):null}function q(){let[e,t]=(0,V.useState)(``),[n,r]=(0,V.useState)(``),[a,o]=(0,V.useState)(``),[u,f]=(0,V.useState)(!1),[p,m]=(0,V.useState)(!1),[h,_]=(0,V.useState)(!1),[x,S]=(0,V.useState)(!1),[C,E]=(0,V.useState)(null),D=async s=>{if(s.preventDefault(),E(null),S(!1),!e||!n)E(`All fields are required.`);else if(n!==a)E(`New passwords do not match.`);else if(n.length<8)E(`New password must be at least 8 characters.`);else{_(!0);try{await i.changePassword({oldPassword:e,newPassword:n}),S(!0),t(``),r(``),o(``)}catch(e){E(e?.message??`Failed to change password`)}finally{_(!1)}}};return(0,H.jsxs)(j,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(w,{slotProps:{title:{variant:`subtitle1`,fontWeight:700},subheader:{variant:`caption`}},title:`Change Password`,subheader:`Update your account credentials`}),(0,H.jsxs)(v,{sx:{...W,pt:0},children:[x&&(0,H.jsx)(R,{closable:!0,severity:`success`,variant:`outlined`,sx:{mb:2},onClose:()=>S(!1),children:`Password changed successfully.`}),C&&(0,H.jsx)(b,{sx:{mb:2},onClose:()=>E(null),children:C}),(0,H.jsx)(`form`,{onSubmit:D,noValidate:!0,children:(0,H.jsxs)(s,{spacing:2,children:[(0,H.jsx)(l,{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,H.jsx)(g,{position:`end`,children:(0,H.jsx)(c,{size:`small`,onClick:()=>f(!u),edge:`end`,children:(0,H.jsx)(d,{open:u,sx:{fontSize:18}})})})}}}),(0,H.jsx)(l,{size:`small`,label:`New Password`,type:p?`text`:`password`,value:n,onChange:e=>r(e.target.value),autoComplete:`new-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,H.jsx)(g,{position:`end`,children:(0,H.jsx)(c,{size:`small`,onClick:()=>m(!p),edge:`end`,children:(0,H.jsx)(d,{open:p,sx:{fontSize:18}})})})}}}),(0,H.jsx)(l,{size:`small`,label:`Confirm New Password`,type:p?`text`:`password`,value:a,onChange:e=>o(e.target.value),autoComplete:`new-password`,fullWidth:!0}),(0,H.jsx)(y,{type:`submit`,variant:`contained`,size:`small`,disabled:h,startIcon:h?(0,H.jsx)(T,{size:16,color:`inherit`}):void 0,sx:{alignSelf:`flex-start`},children:h?`Changing...`:`Change Password`})]})})]})]})}function J(){let e=S(e=>e.user),t=a(),[n,r]=(0,V.useState)([]),[o,l]=(0,V.useState)(!0),[u,d]=(0,V.useState)(null),[f,p]=(0,V.useState)(null),m=(0,V.useCallback)(async()=>{if(e)try{let e=await i.getActiveSessions();r(Array.isArray(e)?e:[]),d(null)}catch(e){d(e?.message??`Failed to fetch sessions`)}finally{l(!1)}},[e,t]);(0,V.useEffect)(()=>{m()},[m]);let h=async e=>{p(e);try{await i.signOut({sessionId:e}),r(t=>t.filter(t=>t.id!==e))}catch(e){d(`Failed to revoke: ${e?.message??`Unknown error`}`)}finally{p(null)}};return(0,H.jsxs)(j,{variant:`outlined`,sx:U,children:[(0,H.jsx)(w,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle1`,fontWeight:700}},title:`Active Sessions`,subheader:o?`Loading...`:`${n.length} active session${n.length===1?``:`s`}`,action:n.filter(e=>!e.current).length>1?(0,H.jsx)(y,{size:`small`,color:`error`,variant:`text`,onClick:async()=>{for(let e of n.filter(e=>!e.current))try{await i.signOut({sessionId:e.id})}catch{}await m()},sx:{fontSize:`0.7rem`},children:`Revoke All Others`}):void 0}),u&&(0,H.jsx)(b,{sx:{mx:2,mb:1},onClose:()=>d(null),children:u}),(0,H.jsx)(P,{columns:[{id:`id`,label:`Session`,render:e=>(0,H.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,H.jsxs)(N,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:[e.id.slice(0,8),`...`]}),e.current&&(0,H.jsx)(L,{label:`current`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:20,fontSize:10}})]})},{id:`ipAddress`,label:`IP Address`,render:e=>(0,H.jsx)(N,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.ipAddress??`--`})},{id:`createdAt`,label:`Created`,render:e=>(0,H.jsx)(N,{variant:`caption`,sx:{color:`text.secondary`},children:z(e.createdAt)})},{id:`expiresAt`,label:`Expires`,render:e=>(0,H.jsx)(N,{variant:`caption`,sx:{color:`text.secondary`},children:B(e.expiresAt)})},{id:`actions`,label:`Actions`,align:`center`,render:e=>e.current?null:(0,H.jsx)(c,{size:`small`,color:`error`,disabled:f===e.id,onClick:()=>h(e.id),title:`Revoke session`,children:f===e.id?(0,H.jsx)(T,{size:16,color:`inherit`}):(0,H.jsx)(I,{sx:{fontSize:18}})})}],data:n,rowKey:e=>e.id,loading:o,loadingRows:2,dense:!0,containerSx:{border:`none`,borderRadius:0},emptyContent:(0,H.jsx)(N,{variant:`body2`,sx:{color:`text.secondary`},children:`No active sessions found.`})})]})}function Y(){let[e,t]=(0,V.useState)(()=>_(k,!1)),[i,a]=(0,V.useState)(()=>_(C,!0)),[o,c]=(0,V.useState)(()=>O()),[l,d]=(0,V.useState)(()=>typeof Notification<`u`?Notification.permission:`unsupported`),f=async(e,n)=>{if(n&&typeof Notification<`u`&&Notification.permission==="default"){let e=await Notification.requestPermission();if(d(e),e!==`granted`){t(!1),A(k,!1);return}}t(n),A(k,n)};return(0,H.jsxs)(j,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(w,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle1`,fontWeight:700}},title:`Notifications`,subheader:`Configure alert delivery preferences`}),(0,H.jsx)(v,{sx:{...W,pt:0},children:(0,H.jsxs)(s,{spacing:3,children:[(0,H.jsx)(n,{control:(0,H.jsx)(r,{size:`small`,checked:e,onChange:f,disabled:l===`denied`}),label:(0,H.jsxs)(x,{children:[(0,H.jsx)(N,{variant:`body2`,sx:{fontWeight:600},children:`Desktop notifications`}),(0,H.jsx)(N,{variant:`caption`,sx:{color:`text.secondary`},children:l===`denied`?`Blocked by browser — enable in site settings`:l===`unsupported`?`Not supported`:`Show browser notifications for alerts`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,H.jsx)(n,{control:(0,H.jsx)(r,{size:`small`,checked:i,onChange:(e,t)=>{a(t),A(C,t)}}),label:(0,H.jsxs)(x,{children:[(0,H.jsx)(N,{variant:`body2`,sx:{fontWeight:600},children:`Sound alerts`}),(0,H.jsx)(N,{variant:`caption`,sx:{color:`text.secondary`},children:`Play a tone when an alert fires at or above the minimum severity`})]}),sx:{alignItems:`flex-start`,ml:0}}),(0,H.jsx)(u,{}),(0,H.jsxs)(x,{children:[(0,H.jsx)(N,{variant:`body2`,sx:{fontWeight:600,mb:1},children:`Minimum alert severity`}),(0,H.jsx)(N,{variant:`caption`,sx:{color:`text.secondary`,mb:1.5,display:`block`},children:`Only receive notifications at or above this level`}),(0,H.jsx)(h,{size:`small`,fullWidth:!0,children:(0,H.jsx)(p,{value:o,onChange:e=>{c(e.target.value),M(D,e.target.value)},children:E.map(e=>(0,H.jsx)(m,{value:e,sx:{textTransform:`capitalize`},children:e},e))})})]})]})})]})}function X(){return(0,H.jsxs)(f,{defaultValue:`general`,keepMounted:!0,children:[(0,H.jsx)(F,{value:`general`,label:`General`,children:(0,H.jsx)(K,{})}),(0,H.jsx)(F,{value:`security`,label:`Security`,children:(0,H.jsx)(q,{})}),(0,H.jsx)(F,{value:`sessions`,label:`Sessions`,children:(0,H.jsx)(J,{})}),(0,H.jsx)(F,{value:`notifications`,label:`Notifications`,children:(0,H.jsx)(Y,{})})]})}export{X as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{$n as n,Bt as r,K as i,On as a,Pt as o,S as s,_n as c,bn as l,bt as u,ft as d,ir as f,kn as p,mt as m,nr as h,pt as g,t as _,vn as v}from"./index-vMnY_4jR.js";var y=e(t(),1),b=n();function x(){let e=f(),[t]=h(),n=d(e=>e.signIn),x=d(e=>e.initError),S=d(e=>e.clearInitError),C=_(),[w,T]=(0,y.useState)(``),[E,D]=(0,y.useState)(``),[O,k]=(0,y.useState)(!1),[A,j]=(0,y.useState)(``),[M,N]=(0,y.useState)(!1),P=m(t.get(`returnTo`));return(0,b.jsxs)(r,{spacing:3,sx:{maxWidth:420,mx:`auto`,width:1},children:[(0,b.jsxs)(r,{spacing:1.5,sx:{alignItems:`center`,textAlign:`center`},children:[(0,b.jsx)(i,{size:48}),(0,b.jsx)(v,{variant:`h4`,children:`Omnitron Console`}),(0,b.jsx)(v,{variant:`body2`,sx:{color:`text.secondary`},children:`Sign in to manage your infrastructure`})]}),x&&!A&&(0,b.jsx)(u,{severity:`warning`,onClose:S,children:x}),A&&(0,b.jsx)(u,{onClose:()=>j(``),children:A}),(0,b.jsx)(`form`,{onSubmit:async t=>{if(t.preventDefault(),w.trim()&&E.trim()){j(``),N(!0);try{await n(w,E),e(P,{replace:!0})}catch(e){D(``),j(g(e))}finally{N(!1)}}},noValidate:!0,children:(0,b.jsxs)(r,{spacing:2.5,children:[(0,b.jsx)(o,{fullWidth:!0,label:`Username`,autoComplete:`username`,autoFocus:!0,value:w,onChange:e=>T(e.target.value)}),(0,b.jsx)(o,{fullWidth:!0,label:`Password`,type:O?`text`:`password`,autoComplete:`current-password`,value:E,onChange:e=>D(e.target.value),slotProps:{input:{endAdornment:(0,b.jsx)(c,{position:`end`,children:(0,b.jsx)(a,{onClick:()=>k(!O),edge:`end`,children:(0,b.jsx)(s,{open:O})})})}}}),(0,b.jsx)(l,{fullWidth:!0,size:`large`,type:`submit`,variant:`contained`,disabled:M||!C,startIcon:M?(0,b.jsx)(p,{size:20,color:`inherit`}):void 0,children:M?`Signing in...`:C?`Sign In`:`Daemon offline`})]})})]})}export{x as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{t as n}from"./Grid-DizFZYue.js";import{t as r}from"./FormControlLabel-BbSxpQwN.js";import{_ as i,h as a,s as o}from"./client-BmqFExWT.js";import{$n as s,$t as c,B as l,Bt as u,Ct as d,Gn as f,M as p,On as m,P as h,Pt as g,V as _,_t as ee,an as v,b as y,bn as b,bt as x,cn as S,ct as C,en as w,gt as T,ir as E,j as D,kn as O,kt as k,mn as A,nn as j,on as M,ot as N,rn as te,rt as P,sn as F,st as I,tn as ne,tr as re,vn as L,vt as R,y as z,yn as B,yt as V}from"./index-vMnY_4jR.js";import{s as H}from"./formatters-BqjL73N3.js";import{t as ie}from"./deploy-release-dialog-Dp-zpSAd.js";import{n as U,t as W}from"./sync-reading-C3PnJ7AX.js";var G=e(t(),1),K=s(),ae=[{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.`}],oe=[{label:`Type`},{label:`Nodes`},{label:`Applications`},{label:`Name`}];function q({open:e,onClose:t,onCreated:n}){let s=C(e=>e.createStack),l=C(e=>e.activeProject),[d,p]=(0,G.useState)(null),[m,h]=(0,G.useState)([]),[_,y]=(0,G.useState)([]),[w,E]=(0,G.useState)(``),[D,k]=(0,G.useState)(!1),[M,N]=(0,G.useState)(null),[P,I]=(0,G.useState)([]),[re,R]=(0,G.useState)(!1),[z,H]=(0,G.useState)([]),[ie,U]=(0,G.useState)(!1),W=(0,G.useMemo)(()=>d===`local`?oe.filter(e=>e.label!==`Nodes`):oe,[d]),q=ee({totalSteps:W.length});(0,G.useEffect)(()=>{if(!e)return;let t=W.findIndex(e=>e.label===`Nodes`);q.activeStep===t&&t!==-1&&(R(!0),a.listNodes().then(e=>{let t=Array.isArray(e)?e:e?.nodes??[];I(t)}).catch(()=>I([])).finally(()=>R(!1)))},[e,q.activeStep,W]),(0,G.useEffect)(()=>{if(!e)return;let t=W.findIndex(e=>e.label===`Applications`);if(q.activeStep===t){U(!0);let e=C.getState().activeProject;e?i.scanRequirements({project:e}).then(e=>{let t=Object.keys(e?.apps??{}),n=t.map(e=>({name:e}));H(n),_.length===0&&y(t)}).catch(()=>{o.list().then(e=>{let t=Array.isArray(e)?e:[];H(t),_.length===0&&y(t.map(e=>e.name))}).catch(()=>H([]))}).finally(()=>U(!1)):U(!1)}},[e,q.activeStep,W]),(0,G.useEffect)(()=>{if(!e)return;let t=W.findIndex(e=>e.label===`Name`);q.activeStep===t&&!w&&E(`${d===`cluster`?`prod`:d===`remote`?`staging`:`dev`}-1`)},[e,q.activeStep,W,d,w]);let Y=(0,G.useCallback)(()=>{p(null),h([]),y([]),E(``),N(null),k(!1),I([]),H([]),q.reset()},[q]),X=(0,G.useCallback)(()=>{D||(Y(),t())},[D,Y,t]),Z=W[q.activeStep]?.label,Q=(0,G.useMemo)(()=>{switch(Z){case`Type`:return d!==null;case`Nodes`:return d===`remote`?m.length===1:d!==`cluster`||m.length>=2;case`Applications`:return _.length>0;case`Name`:return/^[a-z][a-z0-9-]*$/.test(w);default:return!1}},[Z,d,m,_,w]),$=(0,G.useCallback)(()=>{q.isLastStep?se():q.nextStep()},[q]),se=(0,G.useCallback)(async()=>{if(l&&d){k(!0),N(null);try{await s(l,{name:w.trim(),type:d,apps:_.length===z.length?`all`:_,nodeIds:d===`local`?void 0:m}),Y(),n()}catch(e){N(e?.message??`Failed to create stack.`)}finally{k(!1)}}},[l,d,w,_,z.length,m,s,Y,n]),ce=(0,G.useCallback)(e=>{h(d===`remote`?t=>t.includes(e)?[]:[e]:t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[d]),le=(0,G.useCallback)(e=>{y(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),ue=(0,G.useCallback)(()=>{_.length===z.length?y([]):y(z.map(e=>e.name))},[_.length,z]);return(0,K.jsxs)(te,{open:e,onClose:X,maxWidth:`sm`,fullWidth:!0,children:[(0,K.jsx)(c,{sx:{fontWeight:700},children:`Create Stack`}),(0,K.jsxs)(ne,{children:[(0,K.jsx)(S,{sx:{mb:3,mt:1},children:(0,K.jsx)(T,{steps:W,activeStep:q.activeStep,alternativeLabel:!0})}),M&&(0,K.jsx)(x,{sx:{mb:2},onClose:()=>N(null),children:M}),Z===`Type`&&(0,K.jsx)(u,{spacing:1.5,children:ae.map(e=>(0,K.jsx)(F,{variant:`outlined`,onClick:()=>p(e.value),sx:{cursor:`pointer`,transition:`border-color 0.2s, background-color 0.2s`,borderColor:d===e.value?e=>e.palette.primary.main:void 0,bgcolor:d===e.value?e=>f(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>f(e.palette.primary.main,.4)}},children:(0,K.jsxs)(v,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:700},children:e.title}),(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`},children:e.description})]})},e.value))}),Z===`Nodes`&&(0,K.jsxs)(u,{spacing:1.5,children:[(0,K.jsx)(L,{variant:`body2`,sx:{color:`text.secondary`,mb:.5},children:d===`remote`?`Select a target node for deployment.`:`Select at least 2 nodes for the cluster.`}),re?(0,K.jsx)(S,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,K.jsx)(O,{size:28})}):P.length===0?(0,K.jsx)(V,{severity:`info`,variant:`outlined`,children:`No remote nodes configured. Add nodes in the Nodes section first.`}):P.map(e=>{let t=m.includes(e.id),n=e.status===`online`;return(0,K.jsx)(F,{variant:`outlined`,onClick:()=>ce(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=>f(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>f(e.palette.primary.main,.4)}},children:(0,K.jsxs)(v,{sx:{py:1.5,"&:last-child":{pb:1.5},display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,K.jsxs)(S,{children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:600},children:e.name}),(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.host})]}),(0,K.jsx)(B,{label:n?`Online`:`Offline`,color:n?`success`:`default`,size:`small`,sx:{height:20,fontSize:`0.65rem`}})]})},e.id)})]}),Z===`Applications`&&(0,K.jsx)(u,{spacing:1,children:ie?(0,K.jsx)(S,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,K.jsx)(O,{size:28})}):z.length===0?(0,K.jsx)(V,{severity:`info`,variant:`outlined`,children:`No applications found in the project.`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(r,{control:(0,K.jsx)(A,{checked:_.length===z.length,indeterminate:_.length>0&&_.length<z.length,onChange:ue,size:`small`}),label:(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:600},children:`Select All`}),sx:{mb:.5}}),z.map(e=>(0,K.jsx)(r,{control:(0,K.jsx)(A,{checked:_.includes(e.name),onChange:()=>le(e.name),size:`small`}),label:(0,K.jsx)(L,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.name}),sx:{ml:1}},e.name))]})}),Z===`Name`&&(0,K.jsxs)(u,{spacing:2.5,children:[(0,K.jsx)(g,{label:`Stack Name`,value:w,onChange:e=>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,K.jsxs)(S,{children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:700,mb:1},children:`Review`}),(0,K.jsxs)(u,{spacing:.5,children:[(0,K.jsx)(J,{label:`Type`,value:d??``}),d!==`local`&&(0,K.jsx)(J,{label:`Nodes`,value:m.length>0?P.filter(e=>m.includes(e.id)).map(e=>e.name).join(`, `):`None`}),(0,K.jsx)(J,{label:`Applications`,value:_.length===z.length?`All (${z.length})`:`${_.length} of ${z.length}`})]})]})]})]}),(0,K.jsxs)(j,{sx:{px:3,py:2},children:[(0,K.jsx)(b,{onClick:X,disabled:D,children:`Cancel`}),(0,K.jsx)(S,{sx:{flex:1}}),!q.isFirstStep&&(0,K.jsx)(b,{onClick:q.prevStep,disabled:D,children:`Back`}),(0,K.jsx)(b,{variant:`contained`,onClick:$,disabled:!Q||D,startIcon:D?(0,K.jsx)(O,{size:16}):void 0,children:q.isLastStep?`Create`:`Next`})]})]})}function J({label:e,value:t}){return(0,K.jsxs)(S,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`},children:e}),(0,K.jsx)(L,{variant:`caption`,sx:{fontWeight:600,textTransform:`capitalize`},children:t})]})}var Y={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`}},X={local:`Local`,remote:`Remote (SSH)`,cluster:`Cluster`};function Z(){let e=N(),t=I(),r=C(e=>e.loading),i=C(e=>e.error),a=C(e=>e.clearError),o=C(e=>e.pendingOps),s=C(e=>e.fetchStacks),l=C(e=>e.startStack),f=C(e=>e.stopStack),g=C(e=>e.deleteStack),_=E(),[ee,v]=(0,G.useState)(!1),[y,x]=(0,G.useState)(null),[T,D]=(0,G.useState)(null);(0,G.useEffect)(()=>{e&&s(e)},[e,s]);let O=Object.keys(o).length>0;P(()=>void(e&&s(e)),{intervalMs:O?3e3:1e4,enabled:!!e});let A=(0,G.useCallback)(async t=>{e&&await l(e,t)},[e,l]),M=(0,G.useCallback)(async t=>{e&&await f(e,t)},[e,f]),F=(0,G.useCallback)(async()=>{if(e&&y){try{await g(e,y)}catch{}x(null)}},[e,y,g]);return e?(0,K.jsxs)(u,{spacing:3,sx:{flex:1},children:[(0,K.jsx)(R,{linkComponent:re,links:[{name:`Stacks`}],action:(0,K.jsxs)(S,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,K.jsx)(m,{size:`small`,onClick:()=>s(e),title:`Refresh`,children:(0,K.jsx)(h,{})}),(0,K.jsx)(b,{variant:`contained`,size:`small`,startIcon:(0,K.jsx)(p,{}),onClick:()=>v(!0),children:`Create`})]})}),(0,K.jsx)(q,{open:ee,onClose:()=>v(!1),onCreated:()=>{v(!1),s(e)}}),i&&(0,K.jsx)(V,{closable:!0,severity:`error`,onClose:a,children:i}),r&&t.length===0?(0,K.jsx)(n,{container:!0,spacing:2,children:[1,2,3].map(e=>(0,K.jsx)(n,{size:{xs:12,sm:6,md:4},children:(0,K.jsx)(d,{variant:`rounded`,height:200})},e))}):t.length===0?(0,K.jsx)(S,{sx:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,K.jsx)(k,{title:`No stacks`,description:`Create your first stack to deploy applications.`})}):(0,K.jsx)(n,{container:!0,spacing:2,children:t.map(t=>(0,K.jsx)(n,{size:{xs:12,sm:6,md:4},children:(0,K.jsx)(Q,{stack:t,pendingOp:e?o[`${e}/${t.name}`]??null:null,onStart:()=>A(t.name),onDeploy:()=>D(t.name),onStop:()=>M(t.name),onDelete:()=>x(t.name),onDetail:()=>_(`/stacks/${t.name}`)})},t.name))}),(0,K.jsx)(ie,{open:T!==null,onClose:()=>D(null),project:e??``,release:null,...T?{stack:T}:{}}),(0,K.jsxs)(te,{open:y!==null,onClose:()=>x(null),children:[(0,K.jsx)(c,{children:`Delete Stack`}),(0,K.jsx)(ne,{children:(0,K.jsxs)(w,{children:[`Are you sure you want to delete stack `,(0,K.jsx)(`strong`,{children:y}),`? This action cannot be undone.`]})}),(0,K.jsxs)(j,{children:[(0,K.jsx)(b,{onClick:()=>x(null),children:`Cancel`}),(0,K.jsx)(b,{onClick:F,color:`error`,variant:`contained`,children:`Delete`})]})]})]}):(0,K.jsx)(u,{spacing:3,children:(0,K.jsx)(V,{severity:`info`,children:`No project selected. Register a project first.`})})}function Q({stack:e,pendingOp:t,onStart:n,onStop:r,onDeploy:i,onDelete:a,onDetail:o}){let s=Y[e.status]??Y.stopped,c=e.config?.release?.mode===`required`,u=e.status===`running`,d=e.status===`stopped`,p=e.status===`starting`||e.status===`stopping`||!!t,h=!!t;return(0,K.jsxs)(F,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,cursor:`pointer`,transition:`border-color 0.2s`,"&:hover":{borderColor:e=>f(e.palette.primary.main,.3)}},variant:`outlined`,onClick:o,children:[(0,K.jsxs)(v,{sx:{flex:1},children:[(0,K.jsxs)(S,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1.5},children:[(0,K.jsx)(L,{variant:`h6`,sx:{fontWeight:700,fontSize:`1.1rem`},children:e.name}),(0,K.jsx)(B,{label:s.label,color:s.color,size:`small`,sx:{height:22,fontSize:`0.7rem`}})]}),(0,K.jsxs)(S,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:1.5},children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`},children:X[e.type]??e.type}),c&&(0,K.jsx)(B,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,K.jsxs)(S,{sx:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:1},children:[(0,K.jsx)($,{label:`Apps`,value:`${e.apps.filter(e=>e.status===`online`).length}/${e.apps.length}`}),(0,K.jsx)($,{label:`Nodes`,value:String(e.nodes.length)}),u&&e.uptime>0&&(0,K.jsx)($,{label:`Uptime`,value:H(e.uptime)}),e.type!==`local`&&(0,K.jsxs)(S,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,K.jsx)(_,{sx:{fontSize:14,color:`text.secondary`}}),(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.secondary`},children:[e.nodes.filter(e=>e.syncStatus&&W(U(e.syncStatus))).length,`/`,e.nodes.length,` in sync`]})]})]}),e.portRange&&(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.disabled`,mt:1,display:`block`,fontFamily:`monospace`},children:[`Ports: `,e.portRange.start,`–`,e.portRange.end]})]}),(0,K.jsxs)(M,{sx:{px:2,pb:1.5,justifyContent:`space-between`},onClick:e=>e.stopPropagation(),children:[(0,K.jsx)(S,{children:d&&!h&&(0,K.jsx)(m,{size:`small`,color:`error`,onClick:a,title:`Delete stack`,children:(0,K.jsx)(z,{})})}),(0,K.jsx)(S,{children:p?(0,K.jsx)(b,{size:`small`,disabled:!0,startIcon:(0,K.jsx)(O,{size:14}),children:t===`starting`||e.status===`starting`?`Starting...`:`Stopping...`}):d?c?(0,K.jsx)(b,{size:`small`,startIcon:(0,K.jsx)(y,{}),color:`success`,onClick:i,children:`Deploy release…`}):(0,K.jsx)(b,{size:`small`,startIcon:(0,K.jsx)(D,{}),color:`success`,onClick:n,children:`Start`}):u?(0,K.jsxs)(K.Fragment,{children:[e.type!==`local`&&(0,K.jsx)(b,{size:`small`,startIcon:(0,K.jsx)(y,{}),onClick:i,children:`Deploy…`}),(0,K.jsx)(b,{size:`small`,startIcon:(0,K.jsx)(l,{}),color:`error`,onClick:r,children:`Stop`})]}):(0,K.jsx)(B,{label:s.label,size:`small`,color:s.color,sx:{height:20,fontSize:`0.65rem`}})})]})]})}function $({label:e,value:t}){return(0,K.jsxs)(S,{children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`,textTransform:`uppercase`},children:e}),(0,K.jsx)(L,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.85rem`},children:t})]})}export{Z as default};
@@ -1 +1 @@
1
- import{t as e}from"./Grid-BZ7xhoHQ.js";import{b as t}from"./client-CGbBvy9k.js";import{Jt as n,Qn as r,St as i,Wn as a,Zt as o,_n as s,in as c,nt as l,on as u,rn as d,sn as f,vn as p,vt as m,zn as h,zt as g}from"./index-DiZbrwxT.js";import{i as _}from"./formatters-BqjL73N3.js";var v=r(),y={borderRadius:2,height:`100%`},b={p:3,"&:last-child":{pb:3}};function x({label:e,value:t,mono:n}){return(0,v.jsxs)(g,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,py:.5},children:[(0,v.jsx)(s,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,v.jsx)(s,{variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function S({label:e,used:t,total:r,color:i=`primary`}){let a=r>0?t/r*100:0,o=a>90?`error`:a>70?`warning`:i;return(0,v.jsxs)(f,{sx:{mb:1.5},children:[(0,v.jsxs)(g,{direction:`row`,sx:{justifyContent:`space-between`,mb:.5},children:[(0,v.jsx)(s,{variant:`caption`,sx:{color:`text.secondary`},children:e}),(0,v.jsxs)(s,{variant:`caption`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.7rem`},children:[_(t),` / `,_(r),` (`,a.toFixed(1),`%)`]})]}),(0,v.jsx)(n,{variant:`determinate`,value:Math.min(a,100),color:o,sx:{height:6,borderRadius:3}})]})}function C(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 w({why:e,children:t}){return e?(0,v.jsxs)(s,{variant:`body2`,sx:{color:`warning.main`},children:[`Did not answer — `,e]}):(0,v.jsx)(v.Fragment,{children:t})}function T(){let n=h(),{data:r,loading:T,error:E}=l(()=>t.getSnapshot(),{intervalMs:5e3});if(T)return(0,v.jsx)(e,{container:!0,spacing:3,children:Array.from({length:6}).map((t,n)=>(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsx)(i,{variant:`rounded`,height:200})},n))});if(E&&!r)return(0,v.jsx)(m,{severity:`error`,children:E});let D=r;return D?n.palette.success.main:n.palette.error.main,(0,v.jsxs)(g,{spacing:3,children:[E&&(0,v.jsx)(m,{severity:`warning`,variant:`outlined`,children:E}),D&&(0,v.jsxs)(s,{variant:`caption`,sx:{color:`text.secondary`},children:[`Collected `,Math.max(0,Math.round((Date.now()-D.timestamp)/1e3)),` s ago`,D.collectedMs==null?``:` in ${D.collectedMs} ms`]}),(0,v.jsxs)(e,{container:!0,spacing:3,children:[(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Daemon`,action:(0,v.jsx)(p,{label:D?.daemon?.role??`master`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,v.jsxs)(c,{sx:{...b,pt:0},children:[(0,v.jsxs)(g,{spacing:.5,children:[(0,v.jsx)(x,{label:`PID`,value:D?.daemon?.pid??`--`,mono:!0}),(0,v.jsx)(x,{label:`Uptime`,value:D?.daemon?.uptimeMs?C(D.daemon.uptimeMs):`--`}),(0,v.jsx)(x,{label:`Node.js`,value:D?.daemon?.nodeVersion??`--`,mono:!0}),(0,v.jsx)(x,{label:`V8`,value:D?.daemon?.v8Version??`--`,mono:!0})]}),D?.daemon?.memoryUsage&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(o,{sx:{my:1.5}}),(0,v.jsx)(s,{variant:`caption`,sx:{color:`text.secondary`,fontWeight:600,mb:1,display:`block`},children:`Process Memory`}),(0,v.jsx)(S,{label:`Heap`,used:D.daemon.memoryUsage.heapUsed,total:D.daemon.memoryUsage.heapTotal}),(0,v.jsx)(x,{label:`RSS`,value:_(D.daemon.memoryUsage.rss),mono:!0}),(0,v.jsx)(x,{label:`External`,value:_(D.daemon.memoryUsage.external),mono:!0})]})]})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`CPU`,action:D?.cpu?.currentLoad!=null&&!D.unanswered?.cpu?(0,v.jsx)(p,{label:`${D.cpu.currentLoad.toFixed(1)}%`,size:`small`,color:D.cpu.currentLoad>80?`error`:D.cpu.currentLoad>60?`warning`:`success`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}}):void 0}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsxs)(w,{why:D?.unanswered?.cpu,children:[(0,v.jsxs)(g,{spacing:.5,children:[(0,v.jsx)(x,{label:`Model`,value:`${D?.cpu?.manufacturer??``} ${D?.cpu?.brand??``}`}),(0,v.jsx)(x,{label:`Cores`,value:`${D?.cpu?.physicalCores??0} physical / ${D?.cpu?.cores??0} logical`}),(0,v.jsx)(x,{label:`Speed`,value:D?.cpu?.speed?`${D.cpu.speed} GHz`:`--`}),D?.cpu?.temperature!=null&&(0,v.jsx)(x,{label:`Temperature`,value:`${D.cpu.temperature}°C`})]}),D?.cpu?.loadPerCore?.length>0&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(o,{sx:{my:1.5}}),(0,v.jsx)(s,{variant:`caption`,sx:{color:`text.secondary`,fontWeight:600,mb:1,display:`block`},children:`Load per Core`}),(0,v.jsx)(f,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`},children:D.cpu.loadPerCore.map((e,t)=>(0,v.jsxs)(f,{sx:{width:32,height:32,borderRadius:1,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`0.6rem`,fontWeight:700,fontFamily:`monospace`,bgcolor:a(e>80?n.palette.error.main:e>50?n.palette.warning.main:n.palette.success.main,.12),color:e>80?`error.main`:e>50?`warning.main`:`success.main`,border:`1px solid`,borderColor:a(e>80?n.palette.error.main:e>50?n.palette.warning.main:n.palette.success.main,.2)},children:[e.toFixed(0),`%`]},t))})]})]})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Memory`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.memory,children:D?.memory&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(S,{label:`RAM`,used:D.memory.committed,total:D.memory.total,color:`primary`}),D.memory.swapTotal>0&&(0,v.jsx)(S,{label:`Swap`,used:D.memory.swapUsed,total:D.memory.swapTotal,color:`warning`}),(0,v.jsxs)(g,{spacing:.5,sx:{mt:1},children:[(0,v.jsx)(x,{label:`Total`,value:_(D.memory.total),mono:!0}),(0,v.jsx)(x,{label:`Available`,value:_(D.memory.available),mono:!0}),(0,v.jsx)(x,{label:`Free`,value:_(D.memory.free),mono:!0})]})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Disks`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.disks,children:D?.disks?.length>0?D.disks.map((e,t)=>(0,v.jsx)(f,{children:(0,v.jsx)(S,{label:`${e.mount} (${e.type})`,used:e.used,total:e.size,color:`primary`})},t)):(0,v.jsx)(s,{variant:`body2`,sx:{color:`text.secondary`},children:`No disk information available`})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Network`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.network,children:D?.network?.interfaces?.length>0?(0,v.jsxs)(g,{spacing:1,children:[D.network.interfaces.slice(0,5).map((e,t)=>(0,v.jsxs)(f,{children:[(0,v.jsxs)(g,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,v.jsx)(s,{variant:`body2`,sx:{fontWeight:600},children:e.iface}),(0,v.jsx)(p,{label:e.operstate,size:`small`,color:e.operstate===`up`?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,v.jsxs)(s,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`,fontSize:`0.7rem`},children:[e.ip4||e.ip6||`--`,e.speed?` · ${e.speed} Mbps`:``]})]},t)),(D.network.rxSec>0||D.network.txSec>0)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(o,{sx:{my:.5}}),(0,v.jsxs)(g,{direction:`row`,spacing:2,children:[(0,v.jsx)(x,{label:`RX`,value:`${_(D.network.rxSec)}/s`,mono:!0}),(0,v.jsx)(x,{label:`TX`,value:`${_(D.network.txSec)}/s`,mono:!0})]})]})]}):(0,v.jsx)(s,{variant:`body2`,sx:{color:`text.secondary`},children:`No network interfaces`})})})]})}),(D?.docker||D?.unanswered?.docker)&&(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Docker`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.docker,children:(0,v.jsxs)(g,{spacing:.5,children:[(0,v.jsx)(x,{label:`Running`,value:D.docker?.running??`--`}),(0,v.jsx)(x,{label:`Paused`,value:D.docker?.paused??`--`}),(0,v.jsx)(x,{label:`Stopped`,value:D.docker?.stopped??`--`})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Operating System`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.os,children:(0,v.jsxs)(g,{spacing:.5,children:[(0,v.jsx)(x,{label:`Platform`,value:D?.os?.platform??`--`}),(0,v.jsx)(x,{label:`Distribution`,value:D?.os?.distro??`--`}),(0,v.jsx)(x,{label:`Release`,value:D?.os?.release??`--`,mono:!0}),(0,v.jsx)(x,{label:`Kernel`,value:D?.os?.kernel??`--`,mono:!0}),(0,v.jsx)(x,{label:`Architecture`,value:D?.os?.arch??`--`,mono:!0}),(0,v.jsx)(x,{label:`Hostname`,value:D?.os?.hostname??`--`,mono:!0}),(0,v.jsx)(x,{label:`Uptime`,value:D?.os?.uptime?C(D.os.uptime*1e3):`--`})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(u,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Build`}),(0,v.jsx)(c,{sx:{...b,pt:0},children:(0,v.jsxs)(g,{spacing:.5,children:[(0,v.jsx)(x,{label:`Console`,value:`Vite + React 19`,mono:!0}),(0,v.jsx)(x,{label:`RPC`,value:`Netron HTTP`,mono:!0}),(0,v.jsx)(x,{label:`Auth`,value:`JWT (HS256)`,mono:!0}),(0,v.jsx)(x,{label:`Design System`,value:`Prism (MUI v7)`,mono:!0}),(0,v.jsx)(x,{label:`Framework`,value:`Titan`,mono:!0}),(0,v.jsx)(x,{label:`PM`,value:`Titan-PM (child processes)`,mono:!0})]})})]})})]})]})}export{T as default};
1
+ import{t as e}from"./Grid-DizFZYue.js";import{b as t}from"./client-BmqFExWT.js";import{$n as n,Bn as r,Bt as i,Ct as a,Gn as o,Qt as s,Yt as c,an as l,cn as u,in as d,nt as f,sn as p,vn as m,yn as h,yt as g}from"./index-vMnY_4jR.js";import{i as _}from"./formatters-BqjL73N3.js";var v=n(),y={borderRadius:2,height:`100%`},b={p:3,"&:last-child":{pb:3}};function x({label:e,value:t,mono:n}){return(0,v.jsxs)(i,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,py:.5},children:[(0,v.jsx)(m,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,v.jsx)(m,{variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function S({label:e,used:t,total:n,color:r=`primary`}){let a=n>0?t/n*100:0,o=a>90?`error`:a>70?`warning`:r;return(0,v.jsxs)(u,{sx:{mb:1.5},children:[(0,v.jsxs)(i,{direction:`row`,sx:{justifyContent:`space-between`,mb:.5},children:[(0,v.jsx)(m,{variant:`caption`,sx:{color:`text.secondary`},children:e}),(0,v.jsxs)(m,{variant:`caption`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.7rem`},children:[_(t),` / `,_(n),` (`,a.toFixed(1),`%)`]})]}),(0,v.jsx)(c,{variant:`determinate`,value:Math.min(a,100),color:o,sx:{height:6,borderRadius:3}})]})}function C(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 w({why:e,children:t}){return e?(0,v.jsxs)(m,{variant:`body2`,sx:{color:`warning.main`},children:[`Did not answer — `,e]}):(0,v.jsx)(v.Fragment,{children:t})}function T(){let n=r(),{data:c,loading:T,error:E}=f(()=>t.getSnapshot(),{intervalMs:5e3});if(T)return(0,v.jsx)(e,{container:!0,spacing:3,children:Array.from({length:6}).map((t,n)=>(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsx)(a,{variant:`rounded`,height:200})},n))});if(E&&!c)return(0,v.jsx)(g,{severity:`error`,children:E});let D=c;return D?n.palette.success.main:n.palette.error.main,(0,v.jsxs)(i,{spacing:3,children:[E&&(0,v.jsx)(g,{severity:`warning`,variant:`outlined`,children:E}),D&&(0,v.jsxs)(m,{variant:`caption`,sx:{color:`text.secondary`},children:[`Collected `,Math.max(0,Math.round((Date.now()-D.timestamp)/1e3)),` s ago`,D.collectedMs==null?``:` in ${D.collectedMs} ms`]}),(0,v.jsxs)(e,{container:!0,spacing:3,children:[(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Daemon`,action:(0,v.jsx)(h,{label:D?.daemon?.role??`master`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}})}),(0,v.jsxs)(l,{sx:{...b,pt:0},children:[(0,v.jsxs)(i,{spacing:.5,children:[(0,v.jsx)(x,{label:`PID`,value:D?.daemon?.pid??`--`,mono:!0}),(0,v.jsx)(x,{label:`Uptime`,value:D?.daemon?.uptimeMs?C(D.daemon.uptimeMs):`--`}),(0,v.jsx)(x,{label:`Node.js`,value:D?.daemon?.nodeVersion??`--`,mono:!0}),(0,v.jsx)(x,{label:`V8`,value:D?.daemon?.v8Version??`--`,mono:!0})]}),D?.daemon?.memoryUsage&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{sx:{my:1.5}}),(0,v.jsx)(m,{variant:`caption`,sx:{color:`text.secondary`,fontWeight:600,mb:1,display:`block`},children:`Process Memory`}),(0,v.jsx)(S,{label:`Heap`,used:D.daemon.memoryUsage.heapUsed,total:D.daemon.memoryUsage.heapTotal}),(0,v.jsx)(x,{label:`RSS`,value:_(D.daemon.memoryUsage.rss),mono:!0}),(0,v.jsx)(x,{label:`External`,value:_(D.daemon.memoryUsage.external),mono:!0})]})]})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`CPU`,action:D?.cpu?.currentLoad!=null&&!D.unanswered?.cpu?(0,v.jsx)(h,{label:`${D.cpu.currentLoad.toFixed(1)}%`,size:`small`,color:D.cpu.currentLoad>80?`error`:D.cpu.currentLoad>60?`warning`:`success`,sx:{height:22,fontSize:`0.7rem`,fontWeight:600}}):void 0}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsxs)(w,{why:D?.unanswered?.cpu,children:[(0,v.jsxs)(i,{spacing:.5,children:[(0,v.jsx)(x,{label:`Model`,value:`${D?.cpu?.manufacturer??``} ${D?.cpu?.brand??``}`}),(0,v.jsx)(x,{label:`Cores`,value:`${D?.cpu?.physicalCores??0} physical / ${D?.cpu?.cores??0} logical`}),(0,v.jsx)(x,{label:`Speed`,value:D?.cpu?.speed?`${D.cpu.speed} GHz`:`--`}),D?.cpu?.temperature!=null&&(0,v.jsx)(x,{label:`Temperature`,value:`${D.cpu.temperature}°C`})]}),D?.cpu?.loadPerCore?.length>0&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{sx:{my:1.5}}),(0,v.jsx)(m,{variant:`caption`,sx:{color:`text.secondary`,fontWeight:600,mb:1,display:`block`},children:`Load per Core`}),(0,v.jsx)(u,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`},children:D.cpu.loadPerCore.map((e,t)=>(0,v.jsxs)(u,{sx:{width:32,height:32,borderRadius:1,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`0.6rem`,fontWeight:700,fontFamily:`monospace`,bgcolor:o(e>80?n.palette.error.main:e>50?n.palette.warning.main:n.palette.success.main,.12),color:e>80?`error.main`:e>50?`warning.main`:`success.main`,border:`1px solid`,borderColor:o(e>80?n.palette.error.main:e>50?n.palette.warning.main:n.palette.success.main,.2)},children:[e.toFixed(0),`%`]},t))})]})]})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Memory`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.memory,children:D?.memory&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(S,{label:`RAM`,used:D.memory.committed,total:D.memory.total,color:`primary`}),D.memory.swapTotal>0&&(0,v.jsx)(S,{label:`Swap`,used:D.memory.swapUsed,total:D.memory.swapTotal,color:`warning`}),(0,v.jsxs)(i,{spacing:.5,sx:{mt:1},children:[(0,v.jsx)(x,{label:`Total`,value:_(D.memory.total),mono:!0}),(0,v.jsx)(x,{label:`Available`,value:_(D.memory.available),mono:!0}),(0,v.jsx)(x,{label:`Free`,value:_(D.memory.free),mono:!0})]})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Disks`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.disks,children:D?.disks?.length>0?D.disks.map((e,t)=>(0,v.jsx)(u,{children:(0,v.jsx)(S,{label:`${e.mount} (${e.type})`,used:e.used,total:e.size,color:`primary`})},t)):(0,v.jsx)(m,{variant:`body2`,sx:{color:`text.secondary`},children:`No disk information available`})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Network`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.network,children:D?.network?.interfaces?.length>0?(0,v.jsxs)(i,{spacing:1,children:[D.network.interfaces.slice(0,5).map((e,t)=>(0,v.jsxs)(u,{children:[(0,v.jsxs)(i,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,v.jsx)(m,{variant:`body2`,sx:{fontWeight:600},children:e.iface}),(0,v.jsx)(h,{label:e.operstate,size:`small`,color:e.operstate===`up`?`success`:`default`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,v.jsxs)(m,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`,fontSize:`0.7rem`},children:[e.ip4||e.ip6||`--`,e.speed?` · ${e.speed} Mbps`:``]})]},t)),(D.network.rxSec>0||D.network.txSec>0)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(s,{sx:{my:.5}}),(0,v.jsxs)(i,{direction:`row`,spacing:2,children:[(0,v.jsx)(x,{label:`RX`,value:`${_(D.network.rxSec)}/s`,mono:!0}),(0,v.jsx)(x,{label:`TX`,value:`${_(D.network.txSec)}/s`,mono:!0})]})]})]}):(0,v.jsx)(m,{variant:`body2`,sx:{color:`text.secondary`},children:`No network interfaces`})})})]})}),(D?.docker||D?.unanswered?.docker)&&(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Docker`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.docker,children:(0,v.jsxs)(i,{spacing:.5,children:[(0,v.jsx)(x,{label:`Running`,value:D.docker?.running??`--`}),(0,v.jsx)(x,{label:`Paused`,value:D.docker?.paused??`--`}),(0,v.jsx)(x,{label:`Stopped`,value:D.docker?.stopped??`--`})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Operating System`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsx)(w,{why:D?.unanswered?.os,children:(0,v.jsxs)(i,{spacing:.5,children:[(0,v.jsx)(x,{label:`Platform`,value:D?.os?.platform??`--`}),(0,v.jsx)(x,{label:`Distribution`,value:D?.os?.distro??`--`}),(0,v.jsx)(x,{label:`Release`,value:D?.os?.release??`--`,mono:!0}),(0,v.jsx)(x,{label:`Kernel`,value:D?.os?.kernel??`--`,mono:!0}),(0,v.jsx)(x,{label:`Architecture`,value:D?.os?.arch??`--`,mono:!0}),(0,v.jsx)(x,{label:`Hostname`,value:D?.os?.hostname??`--`,mono:!0}),(0,v.jsx)(x,{label:`Uptime`,value:D?.os?.uptime?C(D.os.uptime*1e3):`--`})]})})})]})}),(0,v.jsx)(e,{size:{xs:12,md:6},children:(0,v.jsxs)(p,{variant:`outlined`,sx:y,children:[(0,v.jsx)(d,{slotProps:{title:{variant:`subtitle1`,fontWeight:700}},title:`Build`}),(0,v.jsx)(l,{sx:{...b,pt:0},children:(0,v.jsxs)(i,{spacing:.5,children:[(0,v.jsx)(x,{label:`Console`,value:`Vite + React 19`,mono:!0}),(0,v.jsx)(x,{label:`RPC`,value:`Netron HTTP`,mono:!0}),(0,v.jsx)(x,{label:`Auth`,value:`JWT (HS256)`,mono:!0}),(0,v.jsx)(x,{label:`Design System`,value:`Prism (MUI v7)`,mono:!0}),(0,v.jsx)(x,{label:`Framework`,value:`Titan`,mono:!0}),(0,v.jsx)(x,{label:`PM`,value:`Titan-PM (child processes)`,mono:!0})]})})]})})]})]})}export{T as default};