@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.
- package/README.md +4 -0
- package/dist/BUILD.json +2 -2
- package/dist/cli/omnitron.js +26 -2
- package/dist/cli/omnitron.js.map +1 -1
- package/dist/cluster/mesh-link.js +1 -1
- package/dist/cluster/slave-connector.d.ts +2 -2
- package/dist/cluster/slave-connector.js +1 -1
- package/dist/commands/deploy.d.ts +4 -4
- package/dist/commands/deploy.js +4 -4
- package/dist/commands/discover.d.ts +2 -2
- package/dist/commands/discover.js +2 -2
- package/dist/commands/fleet-asking.d.ts +2 -2
- package/dist/commands/fleet-asking.js +2 -2
- package/dist/commands/fleet-recover.d.ts +2 -0
- package/dist/commands/fleet-recover.d.ts.map +1 -0
- package/dist/commands/fleet-recover.js +30 -0
- package/dist/commands/fleet-recover.js.map +1 -0
- package/dist/commands/host-ingress.d.ts +3 -0
- package/dist/commands/host-ingress.d.ts.map +1 -0
- package/dist/commands/host-ingress.js +31 -0
- package/dist/commands/host-ingress.js.map +1 -0
- package/dist/commands/infra.d.ts +2 -2
- package/dist/commands/infra.js +7 -7
- package/dist/commands/infra.js.map +1 -1
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/logs.js +3 -3
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/node.d.ts +2 -14
- package/dist/commands/node.d.ts.map +1 -1
- package/dist/commands/node.js +33 -22
- package/dist/commands/node.js.map +1 -1
- package/dist/commands/pipeline.d.ts.map +1 -1
- package/dist/commands/pipeline.js +8 -1
- package/dist/commands/pipeline.js.map +1 -1
- package/dist/commands/project.d.ts +2 -2
- package/dist/commands/project.js +2 -2
- package/dist/commands/release.d.ts +1 -1
- package/dist/commands/release.js +4 -4
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/remote.d.ts +3 -3
- package/dist/commands/remote.js +3 -3
- package/dist/commands/tor.d.ts +1 -1
- package/dist/commands/tor.js +2 -2
- package/dist/config/types.d.ts +9 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/daemon/daemon-entry.js +1 -1
- package/dist/daemon/daemon-entry.js.map +1 -1
- package/dist/daemon/daemon.d.ts +5 -19
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +54 -51
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/daemon.module.d.ts.map +1 -1
- package/dist/daemon/daemon.module.js +3 -5
- package/dist/daemon/daemon.module.js.map +1 -1
- package/dist/daemon/daemon.rpc-service.d.ts +2 -2
- package/dist/daemon/daemon.rpc-service.js +6 -6
- package/dist/daemon/daemon.rpc-service.js.map +1 -1
- package/dist/execution/data-channel.d.ts +1 -1
- package/dist/execution/data-channel.js +1 -1
- package/dist/execution/execution.service.d.ts +10 -3
- package/dist/execution/execution.service.d.ts.map +1 -1
- package/dist/execution/execution.service.js +101 -44
- package/dist/execution/execution.service.js.map +1 -1
- package/dist/infrastructure/bare-metal-plan.js +1 -1
- package/dist/infrastructure/bare-metal-plan.js.map +1 -1
- package/dist/infrastructure/config-payload.d.ts +4 -4
- package/dist/infrastructure/config-payload.js +4 -4
- package/dist/infrastructure/container-runtime.d.ts +2 -10
- package/dist/infrastructure/container-runtime.d.ts.map +1 -1
- package/dist/infrastructure/container-runtime.js +41 -20
- package/dist/infrastructure/container-runtime.js.map +1 -1
- package/dist/infrastructure/gateway-redis-db.d.ts +2 -2
- package/dist/infrastructure/gateway-redis-db.js +2 -2
- package/dist/infrastructure/host-ingress-config.d.ts +12 -0
- package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-config.js +197 -0
- package/dist/infrastructure/host-ingress-config.js.map +1 -0
- package/dist/infrastructure/host-ingress-lock.d.ts +4 -0
- package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-lock.js +36 -0
- package/dist/infrastructure/host-ingress-lock.js.map +1 -0
- package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
- package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-runtime.js +114 -0
- package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
- package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
- package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-takeover.js +142 -0
- package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
- package/dist/infrastructure/host-ingress-types.d.ts +173 -0
- package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-types.js +2 -0
- package/dist/infrastructure/host-ingress-types.js.map +1 -0
- package/dist/infrastructure/host-ingress.service.d.ts +47 -0
- package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress.service.js +514 -0
- package/dist/infrastructure/host-ingress.service.js.map +1 -0
- package/dist/infrastructure/infrastructure.service.d.ts +21 -5
- package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
- package/dist/infrastructure/infrastructure.service.js +91 -10
- package/dist/infrastructure/infrastructure.service.js.map +1 -1
- package/dist/infrastructure/orphan-containers.d.ts +7 -7
- package/dist/infrastructure/orphan-containers.js +6 -6
- package/dist/infrastructure/presets/minio.js +1 -1
- package/dist/infrastructure/presets/minio.js.map +1 -1
- package/dist/infrastructure/provisioning-outcome.d.ts +1 -1
- package/dist/infrastructure/provisioning-outcome.js +1 -1
- package/dist/infrastructure/service-binding.js +1 -1
- package/dist/infrastructure/service-resolver.d.ts +10 -4
- package/dist/infrastructure/service-resolver.d.ts.map +1 -1
- package/dist/infrastructure/service-resolver.js +88 -45
- package/dist/infrastructure/service-resolver.js.map +1 -1
- package/dist/infrastructure/shipped-config.js +4 -4
- package/dist/infrastructure/stack-infra-manager.d.ts +10 -1
- package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
- package/dist/infrastructure/stack-infra-manager.js +53 -43
- package/dist/infrastructure/stack-infra-manager.js.map +1 -1
- package/dist/infrastructure/types.d.ts +8 -6
- package/dist/infrastructure/types.d.ts.map +1 -1
- package/dist/monitoring/log-line.d.ts +3 -3
- package/dist/monitoring/log-line.js +3 -3
- package/dist/monitoring/log-manager.d.ts +3 -3
- package/dist/monitoring/log-manager.js +3 -3
- package/dist/operations.d.ts +16 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +13 -0
- package/dist/operations.js.map +1 -0
- package/dist/orchestrator/app-handle.d.ts +3 -3
- package/dist/orchestrator/app-handle.js +3 -3
- package/dist/orchestrator/bootstrap-loader.d.ts +2 -2
- package/dist/orchestrator/bootstrap-loader.js +3 -3
- package/dist/orchestrator/bootstrap-loader.js.map +1 -1
- package/dist/orchestrator/bootstrap-process.d.ts +1 -1
- package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
- package/dist/orchestrator/bootstrap-process.js +3 -2
- package/dist/orchestrator/bootstrap-process.js.map +1 -1
- package/dist/orchestrator/build-service.d.ts +6 -12
- package/dist/orchestrator/build-service.d.ts.map +1 -1
- package/dist/orchestrator/build-service.js +120 -83
- package/dist/orchestrator/build-service.js.map +1 -1
- package/dist/orchestrator/call-exposed-service.js +1 -1
- package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
- package/dist/orchestrator/classic-launcher.js +6 -1
- package/dist/orchestrator/classic-launcher.js.map +1 -1
- package/dist/orchestrator/file-watcher.d.ts +1 -0
- package/dist/orchestrator/file-watcher.d.ts.map +1 -1
- package/dist/orchestrator/file-watcher.js +14 -3
- package/dist/orchestrator/file-watcher.js.map +1 -1
- package/dist/orchestrator/http-routes.d.ts +4 -0
- package/dist/orchestrator/http-routes.d.ts.map +1 -0
- package/dist/orchestrator/http-routes.js +19 -0
- package/dist/orchestrator/http-routes.js.map +1 -0
- package/dist/orchestrator/orchestrator.service.d.ts +18 -4
- package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.service.js +151 -110
- package/dist/orchestrator/orchestrator.service.js.map +1 -1
- package/dist/orchestrator/service-router.d.ts +1 -1
- package/dist/orchestrator/service-router.js +1 -1
- package/dist/orchestrator/topology-query.d.ts +1 -1
- package/dist/orchestrator/topology-query.js +1 -1
- package/dist/project/artifact-builder.js +2 -2
- package/dist/project/artifact-builder.js.map +1 -1
- package/dist/project/build-decision.d.ts +1 -1
- package/dist/project/build-decision.js +1 -1
- package/dist/project/config-resolver.js +1 -1
- package/dist/project/config-resolver.js.map +1 -1
- package/dist/project/declared-config.d.ts +2 -2
- package/dist/project/declared-config.js +2 -2
- package/dist/project/deploy-phases.d.ts +1 -1
- package/dist/project/deploy-phases.js +1 -1
- package/dist/project/exec-in-group.d.ts +1 -1
- package/dist/project/exec-in-group.js +1 -1
- package/dist/project/node-app-config.d.ts +2 -2
- package/dist/project/node-app-config.js +2 -2
- package/dist/project/node-app-config.js.map +1 -1
- package/dist/project/node-app-health.d.ts +1 -1
- package/dist/project/node-app-health.js +1 -1
- package/dist/project/operator-account.d.ts +9 -3
- package/dist/project/operator-account.d.ts.map +1 -1
- package/dist/project/operator-account.js +9 -9
- package/dist/project/operator-account.js.map +1 -1
- package/dist/project/registry.d.ts.map +1 -1
- package/dist/project/registry.js +4 -22
- package/dist/project/registry.js.map +1 -1
- package/dist/project/stack-env.d.ts +1 -1
- package/dist/project/stack-env.js +1 -1
- package/dist/project/stand-containers.d.ts +9 -2
- package/dist/project/stand-containers.d.ts.map +1 -1
- package/dist/project/stand-containers.js +17 -17
- package/dist/project/stand-containers.js.map +1 -1
- package/dist/release/artifact-store.d.ts +1 -1
- package/dist/release/artifact-store.d.ts.map +1 -1
- package/dist/release/artifact-store.js +1 -1
- package/dist/release/artifact-store.js.map +1 -1
- package/dist/release/attest-on-node.d.ts +3 -2
- package/dist/release/attest-on-node.d.ts.map +1 -1
- package/dist/release/attest-on-node.js +6 -6
- package/dist/release/attest-on-node.js.map +1 -1
- package/dist/release/attest.d.ts +3 -3
- package/dist/release/attest.js +1 -1
- package/dist/release/build-run.d.ts +2 -2
- package/dist/release/build-run.js +4 -4
- package/dist/release/build-run.js.map +1 -1
- package/dist/release/builder.d.ts +1 -1
- package/dist/release/builder.d.ts.map +1 -1
- package/dist/release/builder.js +1 -1
- package/dist/release/builder.js.map +1 -1
- package/dist/release/daemon-omni.d.ts +1 -1
- package/dist/release/daemon-omni.js +1 -1
- package/dist/release/definition-inputs.d.ts +1 -1
- package/dist/release/definition-inputs.js +1 -1
- package/dist/release/layout.d.ts +2 -2
- package/dist/release/layout.js +2 -2
- package/dist/release/manifest.d.ts +1 -1
- package/dist/release/manifest.js +1 -1
- package/dist/release/publish.d.ts +1 -1
- package/dist/release/publish.js +1 -1
- package/dist/release/store.d.ts +1 -1
- package/dist/release/store.d.ts.map +1 -1
- package/dist/release/store.js +3 -3
- package/dist/release/store.js.map +1 -1
- package/dist/services/alert.service.d.ts +2 -2
- package/dist/services/alert.service.js +2 -2
- package/dist/services/backup-pipeline.d.ts +1 -1
- package/dist/services/backup-pipeline.js +1 -1
- package/dist/services/backup.service.d.ts +3 -3
- package/dist/services/backup.service.js +3 -3
- package/dist/services/bundle-builder.d.ts +15 -12
- package/dist/services/bundle-builder.d.ts.map +1 -1
- package/dist/services/bundle-builder.js +124 -48
- package/dist/services/bundle-builder.js.map +1 -1
- package/dist/services/discovery.service.d.ts +1 -1
- package/dist/services/discovery.service.js +1 -1
- package/dist/services/host-operation-barrier.d.ts +8 -0
- package/dist/services/host-operation-barrier.d.ts.map +1 -0
- package/dist/services/host-operation-barrier.js +44 -0
- package/dist/services/host-operation-barrier.js.map +1 -0
- package/dist/services/host-upgrade.d.ts +129 -0
- package/dist/services/host-upgrade.d.ts.map +1 -0
- package/dist/services/host-upgrade.js +352 -0
- package/dist/services/host-upgrade.js.map +1 -0
- package/dist/services/infrastructure.rpc-service.d.ts +16 -1
- package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
- package/dist/services/infrastructure.rpc-service.js +71 -10
- package/dist/services/infrastructure.rpc-service.js.map +1 -1
- package/dist/services/local-bundle.d.ts +9 -0
- package/dist/services/local-bundle.d.ts.map +1 -1
- package/dist/services/local-bundle.js +11 -2
- package/dist/services/local-bundle.js.map +1 -1
- package/dist/services/log-collector.service.d.ts +1 -1
- package/dist/services/log-collector.service.js +1 -1
- package/dist/services/maintenance-lock.d.ts +2 -2
- package/dist/services/maintenance-lock.d.ts.map +1 -1
- package/dist/services/maintenance-lock.js +1 -1
- package/dist/services/migration-output.d.ts +2 -2
- package/dist/services/migration-output.js +2 -2
- package/dist/services/node-deploy-lease.d.ts +19 -2
- package/dist/services/node-deploy-lease.d.ts.map +1 -1
- package/dist/services/node-deploy-lease.js +84 -10
- package/dist/services/node-deploy-lease.js.map +1 -1
- package/dist/services/node-manager.rpc-service.d.ts +6 -1
- package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
- package/dist/services/node-manager.rpc-service.js +25 -1
- package/dist/services/node-manager.rpc-service.js.map +1 -1
- package/dist/services/node-manager.service.d.ts +1 -1
- package/dist/services/node-manager.service.js +1 -1
- package/dist/services/node-upgrade.d.ts +1 -1
- package/dist/services/pipeline.rpc-service.d.ts +4 -0
- package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
- package/dist/services/pipeline.rpc-service.js +9 -0
- package/dist/services/pipeline.rpc-service.js.map +1 -1
- package/dist/services/pipeline.service.d.ts +2 -0
- package/dist/services/pipeline.service.d.ts.map +1 -1
- package/dist/services/pipeline.service.js +12 -0
- package/dist/services/pipeline.service.js.map +1 -1
- package/dist/services/project.rpc-service.d.ts +7 -0
- package/dist/services/project.rpc-service.d.ts.map +1 -1
- package/dist/services/project.rpc-service.js +11 -0
- package/dist/services/project.rpc-service.js.map +1 -1
- package/dist/services/project.service.d.ts +21 -11
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +74 -59
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/redeploy-decision.d.ts +2 -2
- package/dist/services/redeploy-decision.js +1 -1
- package/dist/services/release.rpc-service.d.ts +1 -1
- package/dist/services/release.rpc-service.js +1 -1
- package/dist/services/remote-deployer.service.d.ts +27 -16
- package/dist/services/remote-deployer.service.d.ts.map +1 -1
- package/dist/services/remote-deployer.service.js +269 -101
- package/dist/services/remote-deployer.service.js.map +1 -1
- package/dist/services/remote-provisioner.d.ts +2 -0
- package/dist/services/remote-provisioner.d.ts.map +1 -1
- package/dist/services/remote-provisioner.js +1 -1
- package/dist/services/remote-provisioner.js.map +1 -1
- package/dist/services/static-carry-forward.d.ts +26 -1
- package/dist/services/static-carry-forward.d.ts.map +1 -1
- package/dist/services/static-carry-forward.js +275 -1
- package/dist/services/static-carry-forward.js.map +1 -1
- package/dist/shared/dto/nodes.d.ts +2 -2
- package/dist/shared/dto/services.d.ts +27 -0
- package/dist/shared/dto/services.d.ts.map +1 -1
- package/dist/shared/local-infra-host.d.ts +2 -2
- package/dist/shared/local-infra-host.js +2 -2
- package/dist/shared/release-reading.d.ts +1 -1
- package/dist/shared/release-reading.js +1 -1
- package/package.json +16 -12
- package/webapp/dist/BUILD.json +2 -2
- package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
- package/webapp/dist/assets/{Grid-BZ7xhoHQ.js → Grid-DizFZYue.js} +1 -1
- package/webapp/dist/assets/{Switch-DGSAxQPM.js → Switch-Bfiqzx8l.js} +1 -1
- package/webapp/dist/assets/alerts-DH_RVRS3.js +1 -0
- package/webapp/dist/assets/apps-B96355sz.js +1 -0
- package/webapp/dist/assets/audit-CYGtbi4k.js +1 -0
- package/webapp/dist/assets/client-BmqFExWT.js +1 -0
- package/webapp/dist/assets/containers-B_TpThln.js +2 -0
- package/webapp/dist/assets/dashboard-DHf2_65N.js +1 -0
- package/webapp/dist/assets/dashboard-builder-CWY2pjeG.js +1 -0
- package/webapp/dist/assets/{deploy-release-dialog-D6C-XcKY.js → deploy-release-dialog-Dp-zpSAd.js} +1 -1
- package/webapp/dist/assets/deployments-tJI6O3fK.js +1 -0
- package/webapp/dist/assets/detail-B2zP1Hto.js +8 -0
- package/webapp/dist/assets/detail-CoIrwmsy.js +1 -0
- package/webapp/dist/assets/detail-DWaGaOtL.js +2 -0
- package/webapp/dist/assets/index-Dvo0iprx.css +1 -0
- package/webapp/dist/assets/index-vMnY_4jR.js +412 -0
- package/webapp/dist/assets/logs-DTRjOfX8.js +12 -0
- package/webapp/dist/assets/maplibre-gl-DowHoZAx.js +814 -0
- package/webapp/dist/assets/{metrics-CQgjz2Lz.js → metrics-UCajtdox.js} +2 -2
- package/webapp/dist/assets/nodes-DuTVU0f6.js +7 -0
- package/webapp/dist/assets/pipelines-C8BeDcAl.js +4 -0
- package/webapp/dist/assets/projects-Dp_zFfLY.js +1 -0
- package/webapp/dist/assets/react-DlmbjZJV.js +1 -0
- package/webapp/dist/assets/react-apexcharts.esm-C8pn45ml.js +97 -0
- package/webapp/dist/assets/{release-bits-Dj4EOhhb.js → release-bits-BzTKz5fM.js} +1 -1
- package/webapp/dist/assets/release-build-panel-DcW9YcXQ.js +1 -0
- package/webapp/dist/assets/releases-B4hcr1bE.js +2 -0
- package/webapp/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/webapp/dist/assets/settings-DIteZTbe.js +1 -0
- package/webapp/dist/assets/sign-in-D4kMBOHp.js +1 -0
- package/webapp/dist/assets/stacks-Brnf-EB7.js +1 -0
- package/webapp/dist/assets/{system-info-BtE3dgfw.js → system-info-CFDNVKkU.js} +1 -1
- package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
- package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
- package/webapp/dist/assets/{use-stack-context-CZUgPq88.js → use-stack-context-CnA5FTHu.js} +1 -1
- package/webapp/dist/index.html +6 -6
- package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +0 -1
- package/webapp/dist/assets/alerts-sXqHJbsa.js +0 -1
- package/webapp/dist/assets/apps-B_Ah8Flh.js +0 -1
- package/webapp/dist/assets/audit-YXihwyui.js +0 -1
- package/webapp/dist/assets/client-CGbBvy9k.js +0 -1
- package/webapp/dist/assets/containers-Di4NOTLf.js +0 -2
- package/webapp/dist/assets/dashboard-Cfuf95N3.js +0 -1
- package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +0 -1
- package/webapp/dist/assets/deployments-ChTq5kCw.js +0 -1
- package/webapp/dist/assets/detail-BsGWv7Dj.js +0 -1
- package/webapp/dist/assets/detail-CyVf_cw5.js +0 -2
- package/webapp/dist/assets/detail-D027j6aO.js +0 -8
- package/webapp/dist/assets/index-B8AHIPc-.css +0 -1
- package/webapp/dist/assets/index-DiZbrwxT.js +0 -414
- package/webapp/dist/assets/logs-L2b8Oqmo.js +0 -12
- package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +0 -801
- package/webapp/dist/assets/nodes-Nwia2Ty6.js +0 -7
- package/webapp/dist/assets/pipelines-DCu_rXOr.js +0 -4
- package/webapp/dist/assets/projects-Bb4aV76h.js +0 -1
- package/webapp/dist/assets/react-CwJFpaho.js +0 -1
- package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +0 -1956
- package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +0 -1
- package/webapp/dist/assets/releases-CnAt3yO6.js +0 -2
- package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +0 -1
- package/webapp/dist/assets/settings-DU-mjiwb.js +0 -1
- package/webapp/dist/assets/sign-in-Bcvjrr4C.js +0 -1
- package/webapp/dist/assets/stacks-B-e8p50I.js +0 -1
- package/webapp/dist/assets/topology-Cwch-uF1.js +0 -12
- package/webapp/dist/assets/traces-BbShR-4P.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as e,Qn as t,Wn as n,Zt as r,_n as i,er as a,in as o,on as s,sn as c,vn as l,yn as u,zt as d}from"./index-DiZbrwxT.js";import{c as f,l as p,n as m,o as h,t as g}from"./release-bits-Dj4EOhhb.js";var _=t();function v({record:t,onStop:v,onDeploy:y,compact:b}){let x=g[t.state]??{label:t.state,color:`info`},S=t.state===`running`,C=t.history.slice(-60),w=t.request;return(0,_.jsx)(s,{variant:`outlined`,sx:{borderColor:S?`primary.main`:void 0},children:(0,_.jsxs)(o,{sx:{pb:2},children:[(0,_.jsxs)(d,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1},children:[(0,_.jsx)(l,{label:x.label,size:`small`,color:x.color,sx:{fontWeight:600}}),(0,_.jsx)(i,{variant:`subtitle2`,children:w.project}),t.releaseId&&(0,_.jsx)(i,{component:a,to:`/releases/${t.releaseId}`,variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`,textDecoration:`none`,"&:hover":{textDecoration:`underline`}},children:t.releaseId}),(0,_.jsx)(c,{sx:{flex:1}}),(0,_.jsxs)(i,{variant:`caption`,sx:{color:`text.secondary`},children:[f(t.durationMs),t.requestedBy?` · ${t.requestedBy}`:``]}),S&&v&&(0,_.jsx)(u,{size:`small`,color:`warning`,startIcon:(0,_.jsx)(e,{}),onClick:()=>v(t.buildId),children:`Stop`}),t.state===`done`&&t.releaseId&&y&&(0,_.jsx)(u,{size:`small`,variant:`contained`,onClick:()=>y(t.releaseId),children:`Deploy…`})]}),(0,_.jsx)(m,{percent:t.percent,state:t.state}),(0,_.jsxs)(d,{direction:`row`,spacing:1,sx:{alignItems:`baseline`,mt:1},children:[(0,_.jsx)(i,{variant:`body2`,sx:{fontWeight:500},children:t.phase}),(0,_.jsxs)(i,{variant:`caption`,sx:{color:`text.secondary`},children:[t.percent,`%`]})]}),(0,_.jsxs)(d,{direction:`row`,spacing:.75,sx:{mt:.5,flexWrap:`wrap`},children:[w.forStack&&(0,_.jsx)(l,{size:`small`,variant:`outlined`,label:`statics: ${w.forStack}`,sx:{height:20,fontSize:11}}),w.projectCommit&&(0,_.jsx)(l,{size:`small`,variant:`outlined`,label:`project ${w.projectCommit}`,sx:{height:20,fontSize:11}}),w.omniCommit&&(0,_.jsx)(l,{size:`small`,variant:`outlined`,label:`omni ${w.omniCommit}`,sx:{height:20,fontSize:11}}),w.skipGates&&(0,_.jsx)(l,{size:`small`,color:`warning`,variant:`outlined`,label:`gates skipped`,sx:{height:20,fontSize:11}}),(w.envKeys??[]).map(e=>(0,_.jsx)(l,{size:`small`,variant:`outlined`,label:e,sx:{height:20,fontSize:11,fontFamily:`monospace`}},e))]}),t.gates.length>0&&(0,_.jsxs)(c,{sx:{mt:1.5},children:[(0,_.jsx)(i,{variant:`caption`,sx:{color:`text.secondary`},children:p(t.gates)}),(0,_.jsx)(c,{sx:{mt:.5},children:(0,_.jsx)(h,{gates:t.gates})})]}),t.error&&(0,_.jsx)(c,{sx:{mt:1.5,p:1.25,borderRadius:1,bgcolor:e=>n(e.palette.error.main,.08)},children:(0,_.jsx)(i,{variant:`caption`,sx:{whiteSpace:`pre-wrap`,fontFamily:`monospace`,color:`error.main`},children:t.error})}),!b&&C.length>0&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(r,{sx:{my:1.5}}),(0,_.jsx)(c,{sx:{maxHeight:220,overflowY:`auto`,fontFamily:`monospace`,fontSize:12,lineHeight:1.7},children:C.map((e,t)=>(0,_.jsxs)(c,{sx:{display:`flex`,gap:1.5},children:[(0,_.jsx)(i,{component:`span`,variant:`caption`,sx:{color:`text.disabled`,fontFamily:`monospace`},children:e.at.slice(11,19)}),(0,_.jsxs)(i,{component:`span`,variant:`caption`,sx:{color:`text.disabled`,fontFamily:`monospace`,width:34,textAlign:`right`},children:[e.percent,`%`]}),(0,_.jsx)(i,{component:`span`,variant:`caption`,sx:{fontFamily:`monospace`},children:e.phase})]},`${e.at}-${t}`))})]})]})})}export{v as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./FormControlLabel-BrH2diyl.js";import{t as r}from"./Switch-DGSAxQPM.js";import{v as i}from"./client-CGbBvy9k.js";import{Bt as a,Dn as o,M as s,Nt as c,On as l,P as u,Qn as d,Qt as f,Ut as p,_n as m,_t as h,b as g,ct as _,en as v,er as y,ft as b,jt as x,ln as S,nn as C,nt as w,ot as T,sn as E,tn as D,vn as O,vt as k,y as A,yn as j,zt as M}from"./index-DiZbrwxT.js";import{a as N,d as P,f as F,m as ee,o as I,r as L,s as R,u as z}from"./release-bits-Dj4EOhhb.js";import{n as B,t as V}from"./deploy-release-dialog-D6C-XcKY.js";import{t as H}from"./release-build-panel-D6OCVlhT.js";var U=e(t(),1),W=d();function G(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();if(!/^[A-Z][A-Z0-9_]*$/.test(a)){n.push(e);continue}t[a]=e.slice(i+1)}return{env:t,bad:n}}function K({open:e,onClose:t,defaultProject:a,onStarted:o,preflight:s}){let u=_(e=>e.projects),d=_(e=>e.stacksByProject),h=_(e=>e.fetchStacks),[g,y]=(0,U.useState)(a??``),[b,x]=(0,U.useState)(``),[w,T]=(0,U.useState)(``),[k,A]=(0,U.useState)(``),[N,P]=(0,U.useState)(``),[F,ee]=(0,U.useState)(!1),[I,L]=(0,U.useState)(!1),[R,z]=(0,U.useState)(!1),[B,V]=(0,U.useState)(null),H=(0,U.useMemo)(()=>d[g]??[],[d,g]);(0,U.useEffect)(()=>{e&&(y(a??``),V(null))},[e,a]),(0,U.useEffect)(()=>{e&&g&&!d[g]&&h(g)},[e,g,d,h]),(0,U.useEffect)(()=>{if(!e||b)return;let t=H.find(e=>e.config?.release?.mode===`required`);t&&x(t.name)},[e,H,b]);let{env:K,bad:q}=(0,U.useMemo)(()=>G(N),[N]);return(0,W.jsxs)(C,{open:e,onClose:R?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(f,{children:`Build a release`}),(0,W.jsx)(v,{children:(0,W.jsxs)(M,{spacing:2.5,sx:{mt:1},children:[(0,W.jsxs)(m,{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,W.jsx)(`code`,{children:`dist`}),`, not another checkout of omni.`]}),s?.load&&s.cpus!==null&&s.load[0]>s.cpus&&(0,W.jsxs)(S,{severity:`warning`,children:[`This machine is carrying more than its cores right now — load`,` `,(0,W.jsx)(`strong`,{children:s.load.map(e=>e.toFixed(1)).join(` / `)}),` on `,s.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,W.jsxs)(c,{select:!0,label:`Project`,value:g,onChange:e=>{y(e.target.value),x(``)},size:`small`,fullWidth:!0,disabled:R,children:[u.length===0&&(0,W.jsx)(p,{disabled:!0,value:``,children:`No projects registered`}),u.map(e=>(0,W.jsx)(p,{value:e.name,children:e.name},e.name))]}),(0,W.jsxs)(c,{select:!0,label:`Static bundle for`,value:b,onChange:e=>x(e.target.value),size:`small`,fullWidth:!0,disabled:R,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,W.jsx)(p,{value:``,children:(0,W.jsx)(`em`,{children:`none — backends only`})}),H.map(e=>(0,W.jsx)(p,{value:e.name,children:(0,W.jsxs)(M,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,W.jsx)(m,{variant:`body2`,children:e.name}),e.config?.release?.mode===`required`&&(0,W.jsx)(O,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}})]})},e.name))]}),(0,W.jsxs)(M,{direction:`row`,spacing:1.5,children:[(0,W.jsx)(c,{label:`Project commit`,placeholder:`HEAD`,value:w,onChange:e=>T(e.target.value),size:`small`,fullWidth:!0,disabled:R}),(0,W.jsx)(c,{label:`omni commit`,placeholder:`HEAD`,value:k,onChange:e=>A(e.target.value),size:`small`,fullWidth:!0,disabled:R})]}),(0,W.jsx)(c,{label:`Environment for the gates`,placeholder:`TEST_DATABASE__PORT=5432`,value:N,onChange:e=>P(e.target.value),size:`small`,fullWidth:!0,multiline:!0,minRows:2,disabled:R,helperText:q.length>0?`Not a NAME=value line: ${q.slice(0,2).join(` · `)}`:`One NAME=value per line. The daemon has the system environment, not your shell’s.`,error:q.length>0}),(0,W.jsxs)(E,{children:[(0,W.jsx)(n,{control:(0,W.jsx)(r,{checked:F,onChange:e=>ee(e.target.checked),size:`small`,disabled:R}),label:(0,W.jsx)(m,{variant:`body2`,children:`Skip the gates`})}),F&&(0,W.jsxs)(S,{severity:`warning`,sx:{mt:.5},children:[`Every gate is recorded as `,(0,W.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,W.jsx)(n,{control:(0,W.jsx)(r,{checked:I,onChange:e=>L(e.target.checked),size:`small`,disabled:R}),label:(0,W.jsx)(m,{variant:`body2`,children:`Keep the clones (about 2 GB)`})})]}),B&&(0,W.jsx)(S,{severity:`error`,children:(0,W.jsx)(m,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:B})})]})}),(0,W.jsxs)(D,{children:[(0,W.jsx)(j,{onClick:t,size:`small`,disabled:R,children:`Cancel`}),(0,W.jsx)(j,{variant:`contained`,size:`small`,disabled:!g||R||q.length>0,startIcon:R?(0,W.jsx)(l,{size:14,color:`inherit`}):void 0,onClick:async()=>{z(!0),V(null);try{o(await i.build({project:g,...w.trim()?{projectCommit:w.trim()}:{},...k.trim()?{omniCommit:k.trim()}:{},...b?{forStack:b}:{},...F?{skipGates:!0}:{},...I?{keepSource:!0}:{},...Object.keys(K).length?{env:K}:{}})),t()}catch(e){V(e.message)}finally{z(!1)}},children:R?`Starting…`:`Build`})]})]})}function q({open:e,onClose:t,onPruned:n}){let[r,a]=(0,U.useState)(5),[o,s]=(0,U.useState)(null),[u,d]=(0,U.useState)(!1),[p,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),y=(0,U.useCallback)(async()=>{d(!0),h(null);try{s(await i.prune({keep:r}))}catch(e){h(e.message),s(null)}finally{d(!1)}},[r]);return(0,U.useEffect)(()=>{e&&(_(null),y())},[e,y]),(0,W.jsxs)(C,{open:e,onClose:u?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(f,{children:`Prune releases`}),(0,W.jsx)(v,{children:(0,W.jsxs)(M,{spacing:2.5,sx:{mt:1},children:[(0,W.jsx)(c,{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}}),o?.unknown&&(0,W.jsxs)(S,{severity:`warning`,children:[`Which of these a stack is running cannot be told — `,o.unknown,`. The daemon will not remove anything until it can; `,(0,W.jsx)(`code`,{children:`omnitron release prune --yes --allow-unprotected`}),` removes them without knowing.`]}),o&&o.protectedByDeployment.length>0&&(0,W.jsxs)(m,{variant:`caption`,sx:{color:`text.secondary`},children:[`Kept whatever their age, because a stack runs them: `,o.protectedByDeployment.join(`, `),`.`]}),u&&!g&&(0,W.jsxs)(M,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,W.jsx)(l,{size:16}),(0,W.jsx)(m,{variant:`body2`,sx:{color:`text.secondary`},children:`Measuring…`})]}),g&&(0,W.jsxs)(S,{severity:`success`,children:[`Removed `,g.removed.length,` release`,g.removed.length===1?``:`s`,`, `,R(g.freedBytes),` freed;`,` `,g.kept,` kept.`]}),!g&&o&&(o.doomed.length===0?(0,W.jsxs)(S,{severity:`info`,children:[`Nothing to remove — `,o.kept,` release(s) and all of them are kept.`]}):(0,W.jsxs)(E,{children:[(0,W.jsxs)(m,{variant:`body2`,sx:{mb:1},children:[o.doomed.length,` release`,o.doomed.length===1?``:`s`,` would go, freeing `,R(o.freedBytes),`:`]}),(0,W.jsx)(E,{sx:{maxHeight:220,overflowY:`auto`},children:o.doomed.map(e=>(0,W.jsxs)(M,{direction:`row`,spacing:1.5,sx:{py:.25},children:[(0,W.jsx)(m,{variant:`caption`,sx:{fontFamily:`monospace`,flex:1},children:e.id}),(0,W.jsx)(m,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:R(e.bytes)})]},e.id))})]})),p&&(0,W.jsx)(S,{severity:`error`,children:(0,W.jsx)(m,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:p})})]})}),(0,W.jsxs)(D,{children:[(0,W.jsx)(j,{onClick:t,size:`small`,disabled:u,children:g?`Close`:`Cancel`}),!g&&(0,W.jsxs)(j,{variant:`contained`,color:`error`,size:`small`,disabled:u||!o||o.doomed.length===0||o.unknown!==null,onClick:async()=>{d(!0),h(null);try{let e=await i.prune({keep:r,apply:!0});_(e),n()}catch(e){h(e.message)}finally{d(!1)}},children:[`Remove `,o?.doomed.length??0]})]})]})}async function te(){let[e,t,n,r]=await Promise.allSettled([B.list(),B.builds(),B.preflight(),B.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 ne(){let e=T(),t=b(e=>e.user?.role),[n,r]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[p,_]=(0,U.useState)(null),[v,S]=(0,U.useState)(null),[C,D]=(0,U.useState)(0),[G,ne]=(0,U.useState)(25),[J,re]=(0,U.useState)(!0),{data:Y,loading:ie,error:ae,refresh:X}=w(te,{intervalMs:2e4}),oe=(Y?.builds??[]).some(e=>e.state===`running`)||p!==null,Z=w(async()=>B.builds(),{intervalMs:3e3,enabled:oe}),Q=Z.data??Y?.builds??[],se=p&&!Q.some(e=>e.buildId===p.buildId)?[p,...Q]:Q,$=(0,U.useMemo)(()=>Y?.releases??[],[Y?.releases]),ce=(0,U.useMemo)(()=>J&&e?$.filter(t=>t.project===e):$,[$,J,e]),le=(0,U.useMemo)(()=>Y?.deployments.known?ee(Y.deployments.deployments):new Map,[Y?.deployments]),ue=(0,U.useCallback)(async e=>{try{await i.stopBuild({buildId:e}),await Z.refresh()}catch(e){S(e.message)}},[Z]),de=[{key:`id`,header:`Release`,render:e=>{let t=le.get(e.id)??[];return(0,W.jsxs)(M,{spacing:.5,children:[(0,W.jsx)(m,{component:y,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,W.jsxs)(M,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,W.jsx)(L,{projectCommit:e.projectCommit,omniCommit:e.omniCommit,onRemote:e.onRemote,project:e.project}),!e.complete&&(0,W.jsx)(a,{title:`This directory holds no manifest: the build did not finish. Its logs are still there.`,arrow:!0,children:(0,W.jsx)(O,{label:`unfinished`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})}),t.map(e=>(0,W.jsx)(a,{title:`Last deployed to ${e.stack} ${F(e.at)} · ${e.source??`unknown`}`,arrow:!0,children:(0,W.jsx)(O,{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,W.jsxs)(M,{spacing:.25,sx:{maxWidth:170},children:[(0,W.jsx)(m,{variant:`body2`,sx:{whiteSpace:`nowrap`},children:F(e.builtAt)}),(0,W.jsx)(a,{title:e.builtBy??``,arrow:!0,children:(0,W.jsx)(m,{variant:`caption`,noWrap:!0,sx:{color:`text.secondary`,display:`block`},children:e.builtBy??`—`})})]})},{key:`gates`,header:`Gates`,render:e=>(0,W.jsxs)(M,{spacing:.5,children:[(0,W.jsxs)(M,{direction:`row`,spacing:.75,sx:{alignItems:`center`},children:[(0,W.jsx)(N,{release:e}),e.machine&&P(e.machine)&&(0,W.jsx)(a,{title:`The machine was carrying more than its cores while the gates ran — ${z(e.machine)}. A red gate here is evidence about the machine before it is evidence about the code.`,arrow:!0,children:(0,W.jsx)(O,{label:`loaded`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]}),(0,W.jsx)(I,{gates:e.gateList,size:8,columns:7}),e.verified.map(e=>(0,W.jsx)(a,{title:`Probes ${e.stack} ran against this release while carrying it — measured ${F(e.at)}`,arrow:!0,children:(0,W.jsxs)(m,{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,W.jsxs)(M,{spacing:.5,sx:{alignItems:`flex-start`},children:[(0,W.jsx)(a,{title:e.artifacts.apps.join(`, `)||`none`,arrow:!0,children:(0,W.jsxs)(m,{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,W.jsxs)(m,{component:`span`,variant:`caption`,sx:{color:`error.main`,ml:.75},children:[e.artifacts.failed.length,` did not build`]})]})}),e.statics&&(0,W.jsx)(a,{title:`Static bundle built with ${e.statics.stack}'s environment — ${e.statics.files} files, ${R(e.statics.bytes)}`,arrow:!0,children:(0,W.jsx)(O,{label:`statics: ${e.statics.stack}`,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}})}),(0,W.jsxs)(m,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`,whiteSpace:`nowrap`},children:[R(e.bytes),e.keptSource&&(0,W.jsx)(a,{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,W.jsx)(E,{component:`span`,sx:{color:`warning.main`,ml:.75},children:`+ clones`})})]})]})},{key:`actions`,header:``,render:e=>(0,W.jsx)(M,{direction:`row`,sx:{justifyContent:`flex-end`},children:(0,W.jsx)(j,{size:`small`,variant:`outlined`,startIcon:(0,W.jsx)(g,{}),disabled:!e.complete,onClick:()=>f(e),sx:{whiteSpace:`nowrap`},children:`Deploy…`})})}],fe=ce.slice(C*G,C*G+G),pe=Y?.preflight?.canBuild!==!1,me=$.reduce((e,t)=>e+t.bytes,0);return(0,W.jsxs)(M,{spacing:3,children:[(0,W.jsx)(h,{links:[{name:`Releases`}],action:(0,W.jsxs)(M,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,W.jsx)(o,{size:`small`,onClick:()=>void X(),title:`Refresh`,children:(0,W.jsx)(u,{})}),t===`admin`&&(0,W.jsx)(j,{size:`small`,startIcon:(0,W.jsx)(A,{}),onClick:()=>l(!0),children:`Prune…`}),(0,W.jsx)(a,{title:pe?``:`This master cannot run a build — see the banner`,arrow:!0,children:(0,W.jsx)(`span`,{children:(0,W.jsx)(j,{variant:`contained`,size:`small`,startIcon:(0,W.jsx)(s,{}),disabled:!pe,onClick:()=>r(!0),children:`Build`})})})]})}),Y?.preflight&&!Y.preflight.canBuild&&(0,W.jsxs)(k,{severity:`error`,variant:`outlined`,children:[`This master cannot run a release build: `,(0,W.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?`, …`:``]}),v&&(0,W.jsx)(k,{closable:!0,severity:`warning`,variant:`outlined`,onClose:()=>S(null),children:v}),Y?.partial&&(0,W.jsxs)(k,{severity:`warning`,variant:`outlined`,children:[`Part of this page could not be read — `,Y.partial]}),Y&&!Y.deployments.known&&(0,W.jsxs)(k,{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,W.jsx)(M,{spacing:1.5,children:se.slice(0,3).map(e=>(0,W.jsx)(H,{record:e,onStop:ue,onDeploy:e=>{let t=$.find(t=>t.id===e);t?f(t):X()}},e.buildId))}),(0,W.jsxs)(M,{direction:`row`,spacing:1.5,sx:{alignItems:`center`},children:[(0,W.jsx)(m,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:Y?.root??``}),(0,W.jsxs)(m,{variant:`caption`,sx:{color:`text.secondary`},children:[$.length,` release`,$.length===1?``:`s`,`, `,R(me),` on disk`]}),(0,W.jsx)(E,{sx:{flex:1}}),e&&(0,W.jsx)(O,{size:`small`,variant:J?`filled`:`outlined`,label:J?`only ${e}`:`all projects`,onClick:()=>re(e=>!e),sx:{height:22,fontSize:11}})]}),(0,W.jsx)(x,{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:C,pageSize:G,onPageChange:D,onPageSizeChange:e=>{ne(e),D(0)},dense:!0}),(0,W.jsx)(K,{open:n,onClose:()=>r(!1),defaultProject:e,preflight:Y?.preflight??null,onStarted:e=>{_(e),Z.refresh().then(()=>X())}}),(0,W.jsx)(q,{open:c,onClose:()=>l(!1),onPruned:()=>void X()}),(0,W.jsx)(V,{open:d!==null,onClose:()=>f(null),project:d?.project??e??``,release:d})]})}export{ne as default};
|
|
@@ -1 +0,0 @@
|
|
|
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),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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./FormControlLabel-BrH2diyl.js";import{t as r}from"./Switch-DGSAxQPM.js";import{r as i,u as a}from"./client-CGbBvy9k.js";import{Ct as o,Dn as s,Ht as c,Nt as l,On as u,Qn as d,S as f,Ut as p,Yt as m,Zt as h,_n as g,a as _,bt as v,ft as y,gn as b,i as x,in as S,l as C,n as w,o as T,on as E,r as D,rn as O,s as k,sn as A,ut as j,vn as M,vt as N,xt as P,y as F,yn as I,yt as L,zt as R}from"./index-DiZbrwxT.js";import{c as z,n as B}from"./formatters-BqjL73N3.js";var V=e(t(),1),H=d(),U={borderRadius:2},W={p:3,"&:last-child":{pb:3}};function G({label:e,value:t,mono:n}){return(0,H.jsxs)(R,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,py:.5},children:[(0,H.jsx)(g,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,H.jsx)(g,{component:`div`,variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function K(){let e=y(e=>e.user);return e?(0,H.jsxs)(E,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(O,{title:`Profile`,subheader:`Account information`}),(0,H.jsx)(S,{sx:{...W,pt:0},children:(0,H.jsxs)(R,{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)(M,{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)(``),[c,d]=(0,V.useState)(!1),[p,m]=(0,V.useState)(!1),[h,g]=(0,V.useState)(!1),[_,v]=(0,V.useState)(!1),[y,x]=(0,V.useState)(null),C=async s=>{if(s.preventDefault(),x(null),v(!1),!e||!n){x(`All fields are required.`);return}if(n!==a){x(`New passwords do not match.`);return}if(n.length<8){x(`New password must be at least 8 characters.`);return}g(!0);try{await i.changePassword({oldPassword:e,newPassword:n}),v(!0),t(``),r(``),o(``)}catch(e){x(e?.message??`Failed to change password`)}finally{g(!1)}};return(0,H.jsxs)(E,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(O,{slotProps:{title:{variant:`subtitle1`,fontWeight:700},subheader:{variant:`caption`}},title:`Change Password`,subheader:`Update your account credentials`}),(0,H.jsxs)(S,{sx:{...W,pt:0},children:[_&&(0,H.jsx)(N,{closable:!0,severity:`success`,variant:`outlined`,sx:{mb:2},onClose:()=>v(!1),children:`Password changed successfully.`}),y&&(0,H.jsx)(L,{sx:{mb:2},onClose:()=>x(null),children:y}),(0,H.jsx)(`form`,{onSubmit:C,noValidate:!0,children:(0,H.jsxs)(R,{spacing:2,children:[(0,H.jsx)(l,{size:`small`,label:`Current Password`,type:c?`text`:`password`,value:e,onChange:e=>t(e.target.value),autoComplete:`current-password`,fullWidth:!0,slotProps:{input:{endAdornment:(0,H.jsx)(b,{position:`end`,children:(0,H.jsx)(s,{size:`small`,onClick:()=>d(!c),edge:`end`,children:(0,H.jsx)(f,{open:c,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)(b,{position:`end`,children:(0,H.jsx)(s,{size:`small`,onClick:()=>m(!p),edge:`end`,children:(0,H.jsx)(f,{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)(I,{type:`submit`,variant:`contained`,size:`small`,disabled:h,startIcon:h?(0,H.jsx)(u,{size:16,color:`inherit`}):void 0,sx:{alignSelf:`flex-start`},children:h?`Changing...`:`Change Password`})]})})]})]})}function J(){let e=y(e=>e.user),t=a(),[n,r]=(0,V.useState)([]),[c,l]=(0,V.useState)(!0),[d,f]=(0,V.useState)(null),[p,m]=(0,V.useState)(null),h=(0,V.useCallback)(async()=>{if(e)try{let e=await i.getActiveSessions();r(Array.isArray(e)?e:[]),f(null)}catch(e){f(e?.message??`Failed to fetch sessions`)}finally{l(!1)}},[e,t]);(0,V.useEffect)(()=>{h()},[h]);let _=async e=>{m(e);try{await i.signOut({sessionId:e}),r(t=>t.filter(t=>t.id!==e))}catch(e){f(`Failed to revoke: ${e?.message??`Unknown error`}`)}finally{m(null)}};return(0,H.jsxs)(E,{variant:`outlined`,sx:U,children:[(0,H.jsx)(O,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle1`,fontWeight:700}},title:`Active Sessions`,subheader:c?`Loading...`:`${n.length} active session${n.length===1?``:`s`}`,action:n.filter(e=>!e.current).length>1?(0,H.jsx)(I,{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 h()},sx:{fontSize:`0.7rem`},children:`Revoke All Others`}):void 0}),d&&(0,H.jsx)(L,{sx:{mx:2,mb:1},onClose:()=>f(null),children:d}),(0,H.jsx)(o,{columns:[{id:`id`,label:`Session`,render:e=>(0,H.jsxs)(R,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,H.jsxs)(g,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:[e.id.slice(0,8),`...`]}),e.current&&(0,H.jsx)(M,{label:`current`,size:`small`,color:`primary`,variant:`outlined`,sx:{height:20,fontSize:10}})]})},{id:`ipAddress`,label:`IP Address`,render:e=>(0,H.jsx)(g,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.ipAddress??`--`})},{id:`createdAt`,label:`Created`,render:e=>(0,H.jsx)(g,{variant:`caption`,sx:{color:`text.secondary`},children:z(e.createdAt)})},{id:`expiresAt`,label:`Expires`,render:e=>(0,H.jsx)(g,{variant:`caption`,sx:{color:`text.secondary`},children:B(e.expiresAt)})},{id:`actions`,label:`Actions`,align:`center`,render:e=>e.current?null:(0,H.jsx)(s,{size:`small`,color:`error`,disabled:p===e.id,onClick:()=>_(e.id),title:`Revoke session`,children:p===e.id?(0,H.jsx)(u,{size:16,color:`inherit`}):(0,H.jsx)(F,{sx:{fontSize:18}})})}],data:n,rowKey:e=>e.id,loading:c,loadingRows:2,dense:!0,containerSx:{border:`none`,borderRadius:0},emptyContent:(0,H.jsx)(g,{variant:`body2`,sx:{color:`text.secondary`},children:`No active sessions found.`})})]})}function Y(){let[e,t]=(0,V.useState)(()=>_(D,!1)),[i,a]=(0,V.useState)(()=>_(x,!0)),[o,s]=(0,V.useState)(()=>T()),[l,u]=(0,V.useState)(()=>typeof Notification<`u`?Notification.permission:`unsupported`),d=async(e,n)=>{if(n&&typeof Notification<`u`&&Notification.permission==="default"){let e=await Notification.requestPermission();if(u(e),e!==`granted`){t(!1),k(D,!1);return}}t(n),k(D,n)};return(0,H.jsxs)(E,{variant:`outlined`,sx:{...U,maxWidth:480},children:[(0,H.jsx)(O,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle1`,fontWeight:700}},title:`Notifications`,subheader:`Configure alert delivery preferences`}),(0,H.jsx)(S,{sx:{...W,pt:0},children:(0,H.jsxs)(R,{spacing:3,children:[(0,H.jsx)(n,{control:(0,H.jsx)(r,{size:`small`,checked:e,onChange:d,disabled:l===`denied`}),label:(0,H.jsxs)(A,{children:[(0,H.jsx)(g,{variant:`body2`,sx:{fontWeight:600},children:`Desktop notifications`}),(0,H.jsx)(g,{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),k(x,t)}}),label:(0,H.jsxs)(A,{children:[(0,H.jsx)(g,{variant:`body2`,sx:{fontWeight:600},children:`Sound alerts`}),(0,H.jsx)(g,{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)(h,{}),(0,H.jsxs)(A,{children:[(0,H.jsx)(g,{variant:`body2`,sx:{fontWeight:600,mb:1},children:`Minimum alert severity`}),(0,H.jsx)(g,{variant:`caption`,sx:{color:`text.secondary`,mb:1.5,display:`block`},children:`Only receive notifications at or above this level`}),(0,H.jsx)(m,{size:`small`,fullWidth:!0,children:(0,H.jsx)(c,{value:o,onChange:e=>{s(e.target.value),j(w,e.target.value)},children:C.map(e=>(0,H.jsx)(p,{value:e,sx:{textTransform:`capitalize`},children:e},e))})})]})]})})]})}function X(){return(0,H.jsxs)(P,{defaultValue:`general`,keepMounted:!0,children:[(0,H.jsx)(v,{value:`general`,label:`General`,children:(0,H.jsx)(K,{})}),(0,H.jsx)(v,{value:`security`,label:`Security`,children:(0,H.jsx)(q,{})}),(0,H.jsx)(v,{value:`sessions`,label:`Sessions`,children:(0,H.jsx)(J,{})}),(0,H.jsx)(v,{value:`notifications`,label:`Notifications`,children:(0,H.jsx)(Y,{})})]})}export{X as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{Dn as n,K as r,Nt as i,On as a,Qn as o,S as s,_n as c,ft as l,gn as u,ir as d,mt as f,nr as p,pt as m,t as h,yn as g,yt as _,zt as v}from"./index-DiZbrwxT.js";var y=e(t(),1),b=o();function x(){let e=p(),[t]=d(),o=l(e=>e.signIn),x=l(e=>e.initError),S=l(e=>e.clearInitError),C=h(),[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=f(t.get(`returnTo`));return(0,b.jsxs)(v,{spacing:3,sx:{maxWidth:420,mx:`auto`,width:1},children:[(0,b.jsxs)(v,{spacing:1.5,sx:{alignItems:`center`,textAlign:`center`},children:[(0,b.jsx)(r,{size:48}),(0,b.jsx)(c,{variant:`h4`,children:`Omnitron Console`}),(0,b.jsx)(c,{variant:`body2`,sx:{color:`text.secondary`},children:`Sign in to manage your infrastructure`})]}),x&&!A&&(0,b.jsx)(_,{severity:`warning`,onClose:S,children:x}),A&&(0,b.jsx)(_,{onClose:()=>j(``),children:A}),(0,b.jsx)(`form`,{onSubmit:async t=>{if(t.preventDefault(),w.trim()&&E.trim()){j(``),N(!0);try{await o(w,E),e(P,{replace:!0})}catch(e){D(``),j(m(e))}finally{N(!1)}}},noValidate:!0,children:(0,b.jsxs)(v,{spacing:2.5,children:[(0,b.jsx)(i,{fullWidth:!0,label:`Username`,autoComplete:`username`,autoFocus:!0,value:w,onChange:e=>T(e.target.value)}),(0,b.jsx)(i,{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)(u,{position:`end`,children:(0,b.jsx)(n,{onClick:()=>k(!O),edge:`end`,children:(0,b.jsx)(s,{open:O})})})}}}),(0,b.jsx)(g,{fullWidth:!0,size:`large`,type:`submit`,variant:`contained`,disabled:M||!C,startIcon:M?(0,b.jsx)(a,{size:20,color:`inherit`}):void 0,children:M?`Signing in...`:C?`Sign In`:`Daemon offline`})]})})]})}export{x as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./Grid-BZ7xhoHQ.js";import{t as r}from"./FormControlLabel-BrH2diyl.js";import{_ as i,h as a,s as o}from"./client-CGbBvy9k.js";import{$t as s,B as c,Dn as l,M as u,Nt as d,On as f,Ot as p,P as m,Qn as h,Qt as ee,St as g,V as _,Wn as v,_n as y,_t as b,an as x,b as S,ct as C,en as w,er as T,gt as E,ht as D,in as O,j as k,nn as te,nr as A,on as j,ot as M,pn as N,rt as ne,sn as P,st as F,tn as I,vn as L,vt as R,y as z,yn as B,yt as re,zt as V}from"./index-DiZbrwxT.js";import{s as H}from"./formatters-BqjL73N3.js";import{t as U}from"./deploy-release-dialog-D6C-XcKY.js";import{n as W,t as G}from"./sync-reading-C3PnJ7AX.js";var K=e(t(),1),q=h(),ie=[{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.`}],ae=[{label:`Type`},{label:`Nodes`},{label:`Applications`},{label:`Name`}];function J({open:e,onClose:t,onCreated:n}){let s=C(e=>e.createStack),c=C(e=>e.activeProject),[l,u]=(0,K.useState)(null),[p,m]=(0,K.useState)([]),[h,g]=(0,K.useState)([]),[_,b]=(0,K.useState)(``),[x,S]=(0,K.useState)(!1),[T,k]=(0,K.useState)(null),[A,M]=(0,K.useState)([]),[ne,F]=(0,K.useState)(!1),[z,H]=(0,K.useState)([]),[U,W]=(0,K.useState)(!1),G=(0,K.useMemo)(()=>l===`local`?ae.filter(e=>e.label!==`Nodes`):ae,[l]),J=E({totalSteps:G.length});(0,K.useEffect)(()=>{if(!e)return;let t=G.findIndex(e=>e.label===`Nodes`);J.activeStep===t&&t!==-1&&(F(!0),a.listNodes().then(e=>{let t=Array.isArray(e)?e:e?.nodes??[];M(t)}).catch(()=>M([])).finally(()=>F(!1)))},[e,J.activeStep,G]),(0,K.useEffect)(()=>{if(!e)return;let t=G.findIndex(e=>e.label===`Applications`);if(J.activeStep===t){W(!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),h.length===0&&g(t)}).catch(()=>{o.list().then(e=>{let t=Array.isArray(e)?e:[];H(t),h.length===0&&g(t.map(e=>e.name))}).catch(()=>H([]))}).finally(()=>W(!1)):W(!1)}},[e,J.activeStep,G]),(0,K.useEffect)(()=>{if(!e)return;let t=G.findIndex(e=>e.label===`Name`);J.activeStep===t&&!_&&b(`${l===`cluster`?`prod`:l===`remote`?`staging`:`dev`}-1`)},[e,J.activeStep,G,l,_]);let X=(0,K.useCallback)(()=>{u(null),m([]),g([]),b(``),k(null),S(!1),M([]),H([]),J.reset()},[J]),Z=(0,K.useCallback)(()=>{x||(X(),t())},[x,X,t]),Q=G[J.activeStep]?.label,oe=(0,K.useMemo)(()=>{switch(Q){case`Type`:return l!==null;case`Nodes`:return l===`remote`?p.length===1:l!==`cluster`||p.length>=2;case`Applications`:return h.length>0;case`Name`:return/^[a-z][a-z0-9-]*$/.test(_);default:return!1}},[Q,l,p,h,_]),$=(0,K.useCallback)(()=>{J.isLastStep?se():J.nextStep()},[J]),se=(0,K.useCallback)(async()=>{if(c&&l){S(!0),k(null);try{await s(c,{name:_.trim(),type:l,apps:h.length===z.length?`all`:h,nodeIds:l===`local`?void 0:p}),X(),n()}catch(e){k(e?.message??`Failed to create stack.`)}finally{S(!1)}}},[c,l,_,h,z.length,p,s,X,n]),ce=(0,K.useCallback)(e=>{m(l===`remote`?t=>t.includes(e)?[]:[e]:t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[l]),le=(0,K.useCallback)(e=>{g(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),ue=(0,K.useCallback)(()=>{h.length===z.length?g([]):g(z.map(e=>e.name))},[h.length,z]);return(0,q.jsxs)(te,{open:e,onClose:Z,maxWidth:`sm`,fullWidth:!0,children:[(0,q.jsx)(ee,{sx:{fontWeight:700},children:`Create Stack`}),(0,q.jsxs)(w,{children:[(0,q.jsx)(P,{sx:{mb:3,mt:1},children:(0,q.jsx)(D,{steps:G,activeStep:J.activeStep,alternativeLabel:!0})}),T&&(0,q.jsx)(re,{sx:{mb:2},onClose:()=>k(null),children:T}),Q===`Type`&&(0,q.jsx)(V,{spacing:1.5,children:ie.map(e=>(0,q.jsx)(j,{variant:`outlined`,onClick:()=>u(e.value),sx:{cursor:`pointer`,transition:`border-color 0.2s, background-color 0.2s`,borderColor:l===e.value?e=>e.palette.primary.main:void 0,bgcolor:l===e.value?e=>v(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>v(e.palette.primary.main,.4)}},children:(0,q.jsxs)(O,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,q.jsx)(y,{variant:`subtitle2`,sx:{fontWeight:700},children:e.title}),(0,q.jsx)(y,{variant:`caption`,sx:{color:`text.secondary`},children:e.description})]})},e.value))}),Q===`Nodes`&&(0,q.jsxs)(V,{spacing:1.5,children:[(0,q.jsx)(y,{variant:`body2`,sx:{color:`text.secondary`,mb:.5},children:l===`remote`?`Select a target node for deployment.`:`Select at least 2 nodes for the cluster.`}),ne?(0,q.jsx)(P,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,q.jsx)(f,{size:28})}):A.length===0?(0,q.jsx)(R,{severity:`info`,variant:`outlined`,children:`No remote nodes configured. Add nodes in the Nodes section first.`}):A.map(e=>{let t=p.includes(e.id),n=e.status===`online`;return(0,q.jsx)(j,{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=>v(e.palette.primary.main,.06):void 0,"&:hover":{borderColor:e=>v(e.palette.primary.main,.4)}},children:(0,q.jsxs)(O,{sx:{py:1.5,"&:last-child":{pb:1.5},display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,q.jsxs)(P,{children:[(0,q.jsx)(y,{variant:`subtitle2`,sx:{fontWeight:600},children:e.name}),(0,q.jsx)(y,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.host})]}),(0,q.jsx)(L,{label:n?`Online`:`Offline`,color:n?`success`:`default`,size:`small`,sx:{height:20,fontSize:`0.65rem`}})]})},e.id)})]}),Q===`Applications`&&(0,q.jsx)(V,{spacing:1,children:U?(0,q.jsx)(P,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,q.jsx)(f,{size:28})}):z.length===0?(0,q.jsx)(R,{severity:`info`,variant:`outlined`,children:`No applications found in the project.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(r,{control:(0,q.jsx)(N,{checked:h.length===z.length,indeterminate:h.length>0&&h.length<z.length,onChange:ue,size:`small`}),label:(0,q.jsx)(y,{variant:`subtitle2`,sx:{fontWeight:600},children:`Select All`}),sx:{mb:.5}}),z.map(e=>(0,q.jsx)(r,{control:(0,q.jsx)(N,{checked:h.includes(e.name),onChange:()=>le(e.name),size:`small`}),label:(0,q.jsx)(y,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.name}),sx:{ml:1}},e.name))]})}),Q===`Name`&&(0,q.jsxs)(V,{spacing:2.5,children:[(0,q.jsx)(d,{label:`Stack Name`,value:_,onChange:e=>b(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,q.jsxs)(P,{children:[(0,q.jsx)(y,{variant:`subtitle2`,sx:{fontWeight:700,mb:1},children:`Review`}),(0,q.jsxs)(V,{spacing:.5,children:[(0,q.jsx)(Y,{label:`Type`,value:l??``}),l!==`local`&&(0,q.jsx)(Y,{label:`Nodes`,value:p.length>0?A.filter(e=>p.includes(e.id)).map(e=>e.name).join(`, `):`None`}),(0,q.jsx)(Y,{label:`Applications`,value:h.length===z.length?`All (${z.length})`:`${h.length} of ${z.length}`})]})]})]})]}),(0,q.jsxs)(I,{sx:{px:3,py:2},children:[(0,q.jsx)(B,{onClick:Z,disabled:x,children:`Cancel`}),(0,q.jsx)(P,{sx:{flex:1}}),!J.isFirstStep&&(0,q.jsx)(B,{onClick:J.prevStep,disabled:x,children:`Back`}),(0,q.jsx)(B,{variant:`contained`,onClick:$,disabled:!oe||x,startIcon:x?(0,q.jsx)(f,{size:16}):void 0,children:J.isLastStep?`Create`:`Next`})]})]})}function Y({label:e,value:t}){return(0,q.jsxs)(P,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,q.jsx)(y,{variant:`caption`,sx:{color:`text.secondary`},children:e}),(0,q.jsx)(y,{variant:`caption`,sx:{fontWeight:600,textTransform:`capitalize`},children:t})]})}var X={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`}},Z={local:`Local`,remote:`Remote (SSH)`,cluster:`Cluster`};function Q(){let e=M(),t=F(),r=C(e=>e.loading),i=C(e=>e.error),a=C(e=>e.clearError),o=C(e=>e.pendingOps),c=C(e=>e.fetchStacks),d=C(e=>e.startStack),f=C(e=>e.stopStack),h=C(e=>e.deleteStack),_=A(),[v,y]=(0,K.useState)(!1),[x,S]=(0,K.useState)(null),[E,D]=(0,K.useState)(null);(0,K.useEffect)(()=>{e&&c(e)},[e,c]);let O=Object.keys(o).length>0;ne(()=>void(e&&c(e)),{intervalMs:O?3e3:1e4,enabled:!!e});let k=(0,K.useCallback)(async t=>{e&&await d(e,t)},[e,d]),j=(0,K.useCallback)(async t=>{e&&await f(e,t)},[e,f]),N=(0,K.useCallback)(async()=>{if(e&&x){try{await h(e,x)}catch{}S(null)}},[e,x,h]);return e?(0,q.jsxs)(V,{spacing:3,sx:{flex:1},children:[(0,q.jsx)(b,{linkComponent:T,links:[{name:`Stacks`}],action:(0,q.jsxs)(P,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,q.jsx)(l,{size:`small`,onClick:()=>c(e),title:`Refresh`,children:(0,q.jsx)(m,{})}),(0,q.jsx)(B,{variant:`contained`,size:`small`,startIcon:(0,q.jsx)(u,{}),onClick:()=>y(!0),children:`Create`})]})}),(0,q.jsx)(J,{open:v,onClose:()=>y(!1),onCreated:()=>{y(!1),c(e)}}),i&&(0,q.jsx)(R,{closable:!0,severity:`error`,onClose:a,children:i}),r&&t.length===0?(0,q.jsx)(n,{container:!0,spacing:2,children:[1,2,3].map(e=>(0,q.jsx)(n,{size:{xs:12,sm:6,md:4},children:(0,q.jsx)(g,{variant:`rounded`,height:200})},e))}):t.length===0?(0,q.jsx)(P,{sx:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,q.jsx)(p,{title:`No stacks`,description:`Create your first stack to deploy applications.`})}):(0,q.jsx)(n,{container:!0,spacing:2,children:t.map(t=>(0,q.jsx)(n,{size:{xs:12,sm:6,md:4},children:(0,q.jsx)(oe,{stack:t,pendingOp:e?o[`${e}/${t.name}`]??null:null,onStart:()=>k(t.name),onDeploy:()=>D(t.name),onStop:()=>j(t.name),onDelete:()=>S(t.name),onDetail:()=>_(`/stacks/${t.name}`)})},t.name))}),(0,q.jsx)(U,{open:E!==null,onClose:()=>D(null),project:e??``,release:null,...E?{stack:E}:{}}),(0,q.jsxs)(te,{open:x!==null,onClose:()=>S(null),children:[(0,q.jsx)(ee,{children:`Delete Stack`}),(0,q.jsx)(w,{children:(0,q.jsxs)(s,{children:[`Are you sure you want to delete stack `,(0,q.jsx)(`strong`,{children:x}),`? This action cannot be undone.`]})}),(0,q.jsxs)(I,{children:[(0,q.jsx)(B,{onClick:()=>S(null),children:`Cancel`}),(0,q.jsx)(B,{onClick:N,color:`error`,variant:`contained`,children:`Delete`})]})]})]}):(0,q.jsx)(V,{spacing:3,children:(0,q.jsx)(R,{severity:`info`,children:`No project selected. Register a project first.`})})}function oe({stack:e,pendingOp:t,onStart:n,onStop:r,onDeploy:i,onDelete:a,onDetail:o}){let s=X[e.status]??X.stopped,u=e.config?.release?.mode===`required`,d=e.status===`running`,p=e.status===`stopped`,m=e.status===`starting`||e.status===`stopping`||!!t,h=!!t;return(0,q.jsxs)(j,{sx:{height:`100%`,display:`flex`,flexDirection:`column`,cursor:`pointer`,transition:`border-color 0.2s`,"&:hover":{borderColor:e=>v(e.palette.primary.main,.3)}},variant:`outlined`,onClick:o,children:[(0,q.jsxs)(O,{sx:{flex:1},children:[(0,q.jsxs)(P,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1.5},children:[(0,q.jsx)(y,{variant:`h6`,sx:{fontWeight:700,fontSize:`1.1rem`},children:e.name}),(0,q.jsx)(L,{label:s.label,color:s.color,size:`small`,sx:{height:22,fontSize:`0.7rem`}})]}),(0,q.jsxs)(P,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:1.5},children:[(0,q.jsx)(y,{variant:`caption`,sx:{color:`text.secondary`},children:Z[e.type]??e.type}),u&&(0,q.jsx)(L,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:`0.6rem`}})]}),(0,q.jsxs)(P,{sx:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:1},children:[(0,q.jsx)($,{label:`Apps`,value:`${e.apps.filter(e=>e.status===`online`).length}/${e.apps.length}`}),(0,q.jsx)($,{label:`Nodes`,value:String(e.nodes.length)}),d&&e.uptime>0&&(0,q.jsx)($,{label:`Uptime`,value:H(e.uptime)}),e.type!==`local`&&(0,q.jsxs)(P,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,q.jsx)(_,{sx:{fontSize:14,color:`text.secondary`}}),(0,q.jsxs)(y,{variant:`caption`,sx:{color:`text.secondary`},children:[e.nodes.filter(e=>e.syncStatus&&G(W(e.syncStatus))).length,`/`,e.nodes.length,` in sync`]})]})]}),e.portRange&&(0,q.jsxs)(y,{variant:`caption`,sx:{color:`text.disabled`,mt:1,display:`block`,fontFamily:`monospace`},children:[`Ports: `,e.portRange.start,`–`,e.portRange.end]})]}),(0,q.jsxs)(x,{sx:{px:2,pb:1.5,justifyContent:`space-between`},onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(P,{children:p&&!h&&(0,q.jsx)(l,{size:`small`,color:`error`,onClick:a,title:`Delete stack`,children:(0,q.jsx)(z,{})})}),(0,q.jsx)(P,{children:m?(0,q.jsx)(B,{size:`small`,disabled:!0,startIcon:(0,q.jsx)(f,{size:14}),children:t===`starting`||e.status===`starting`?`Starting...`:`Stopping...`}):p?u?(0,q.jsx)(B,{size:`small`,startIcon:(0,q.jsx)(S,{}),color:`success`,onClick:i,children:`Deploy release…`}):(0,q.jsx)(B,{size:`small`,startIcon:(0,q.jsx)(k,{}),color:`success`,onClick:n,children:`Start`}):d?(0,q.jsxs)(q.Fragment,{children:[e.type!==`local`&&(0,q.jsx)(B,{size:`small`,startIcon:(0,q.jsx)(S,{}),onClick:i,children:`Deploy…`}),(0,q.jsx)(B,{size:`small`,startIcon:(0,q.jsx)(c,{}),color:`error`,onClick:r,children:`Stop`})]}):(0,q.jsx)(L,{label:s.label,size:`small`,color:s.color,sx:{height:20,fontSize:`0.65rem`}})})]})]})}function $({label:e,value:t}){return(0,q.jsxs)(P,{children:[(0,q.jsx)(y,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`,textTransform:`uppercase`},children:e}),(0,q.jsx)(y,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,fontSize:`0.85rem`},children:t})]})}export{Q as default};
|