@omnitron-dev/omnitron 0.2.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 +5 -0
- package/dist/cli/omnitron.js +375 -29
- package/dist/cli/omnitron.js.map +1 -1
- package/dist/cluster/cluster.rpc-service.d.ts +40 -0
- package/dist/cluster/cluster.rpc-service.d.ts.map +1 -1
- package/dist/cluster/cluster.rpc-service.js +49 -3
- package/dist/cluster/cluster.rpc-service.js.map +1 -1
- package/dist/cluster/config-sync.d.ts.map +1 -1
- package/dist/cluster/config-sync.js.map +1 -1
- package/dist/cluster/leader-election.d.ts +90 -2
- package/dist/cluster/leader-election.d.ts.map +1 -1
- package/dist/cluster/leader-election.js +176 -22
- package/dist/cluster/leader-election.js.map +1 -1
- package/dist/cluster/mesh-link.d.ts +136 -0
- package/dist/cluster/mesh-link.d.ts.map +1 -0
- package/dist/cluster/mesh-link.js +212 -0
- package/dist/cluster/mesh-link.js.map +1 -0
- package/dist/cluster/mesh.d.ts +59 -0
- package/dist/cluster/mesh.d.ts.map +1 -0
- package/dist/cluster/mesh.js +117 -0
- package/dist/cluster/mesh.js.map +1 -0
- package/dist/cluster/slave-connector.d.ts +193 -9
- package/dist/cluster/slave-connector.d.ts.map +1 -1
- package/dist/cluster/slave-connector.js +409 -37
- package/dist/cluster/slave-connector.js.map +1 -1
- package/dist/commands/audit.d.ts +65 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +233 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/backup.d.ts +4 -0
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +255 -33
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/cluster.d.ts.map +1 -1
- package/dist/commands/cluster.js +78 -47
- package/dist/commands/cluster.js.map +1 -1
- package/dist/commands/daemon-cmd.d.ts +7 -1
- package/dist/commands/daemon-cmd.d.ts.map +1 -1
- package/dist/commands/daemon-cmd.js +87 -21
- package/dist/commands/daemon-cmd.js.map +1 -1
- package/dist/commands/daemon-required.d.ts +34 -0
- package/dist/commands/daemon-required.d.ts.map +1 -0
- package/dist/commands/daemon-required.js +92 -0
- package/dist/commands/daemon-required.js.map +1 -0
- package/dist/commands/deploy.d.ts +70 -8
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +99 -64
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/discover.d.ts +25 -4
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +155 -102
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/doctor.d.ts +293 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +1706 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +8 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +13 -8
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +3 -2
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/fleet-asking.d.ts +87 -0
- package/dist/commands/fleet-asking.d.ts.map +1 -0
- package/dist/commands/fleet-asking.js +176 -0
- package/dist/commands/fleet-asking.js.map +1 -0
- 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/fleet.d.ts +18 -0
- package/dist/commands/fleet.d.ts.map +1 -1
- package/dist/commands/fleet.js +314 -74
- package/dist/commands/fleet.js.map +1 -1
- package/dist/commands/health-check.d.ts +8 -6
- package/dist/commands/health-check.d.ts.map +1 -1
- package/dist/commands/health-check.js +26 -23
- package/dist/commands/health-check.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +22 -8
- package/dist/commands/health.js.map +1 -1
- 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 +42 -1
- package/dist/commands/infra.d.ts.map +1 -1
- package/dist/commands/infra.js +418 -49
- package/dist/commands/infra.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -36
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/inspect-graph.d.ts.map +1 -1
- package/dist/commands/inspect-graph.js +2 -6
- package/dist/commands/inspect-graph.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +110 -14
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/k8s.d.ts.map +1 -1
- package/dist/commands/k8s.js +23 -18
- package/dist/commands/k8s.js.map +1 -1
- package/dist/commands/kb.d.ts.map +1 -1
- package/dist/commands/kb.js +88 -29
- package/dist/commands/kb.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +21 -9
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/log-health.d.ts +120 -0
- package/dist/commands/log-health.d.ts.map +1 -0
- package/dist/commands/log-health.js +212 -0
- package/dist/commands/log-health.js.map +1 -0
- package/dist/commands/logs.d.ts +96 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +522 -196
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +35 -17
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/monit.d.ts.map +1 -1
- package/dist/commands/monit.js +3 -2
- package/dist/commands/monit.js.map +1 -1
- package/dist/commands/node.d.ts +56 -0
- package/dist/commands/node.d.ts.map +1 -1
- package/dist/commands/node.js +297 -69
- package/dist/commands/node.js.map +1 -1
- package/dist/commands/output.d.ts +10 -0
- package/dist/commands/output.d.ts.map +1 -1
- package/dist/commands/output.js +41 -1
- package/dist/commands/output.js.map +1 -1
- package/dist/commands/pipeline.d.ts.map +1 -1
- package/dist/commands/pipeline.js +33 -19
- package/dist/commands/pipeline.js.map +1 -1
- package/dist/commands/project.d.ts +19 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +125 -27
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/release-store.d.ts +28 -0
- package/dist/commands/release-store.d.ts.map +1 -0
- package/dist/commands/release-store.js +158 -0
- package/dist/commands/release-store.js.map +1 -0
- package/dist/commands/release.d.ts +61 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +555 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/reload.d.ts +16 -0
- package/dist/commands/reload.d.ts.map +1 -1
- package/dist/commands/reload.js +21 -5
- package/dist/commands/reload.js.map +1 -1
- package/dist/commands/remote.d.ts +40 -0
- package/dist/commands/remote.d.ts.map +1 -1
- package/dist/commands/remote.js +146 -35
- package/dist/commands/remote.js.map +1 -1
- package/dist/commands/restart.d.ts +16 -0
- package/dist/commands/restart.d.ts.map +1 -1
- package/dist/commands/restart.js +21 -5
- package/dist/commands/restart.js.map +1 -1
- package/dist/commands/scale.d.ts.map +1 -1
- package/dist/commands/scale.js +4 -3
- package/dist/commands/scale.js.map +1 -1
- package/dist/commands/secret.d.ts +54 -0
- package/dist/commands/secret.d.ts.map +1 -1
- package/dist/commands/secret.js +236 -34
- package/dist/commands/secret.js.map +1 -1
- package/dist/commands/service-units.d.ts +181 -0
- package/dist/commands/service-units.d.ts.map +1 -0
- package/dist/commands/service-units.js +291 -0
- package/dist/commands/service-units.js.map +1 -0
- package/dist/commands/service.d.ts +39 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +370 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/spinner.d.ts +29 -0
- package/dist/commands/spinner.d.ts.map +1 -0
- package/dist/commands/spinner.js +44 -0
- package/dist/commands/spinner.js.map +1 -0
- package/dist/commands/stack.d.ts +49 -1
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +325 -12
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +20 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +45 -29
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts +16 -0
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +34 -6
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tor.d.ts +14 -7
- package/dist/commands/tor.d.ts.map +1 -1
- package/dist/commands/tor.js +113 -33
- package/dist/commands/tor.js.map +1 -1
- package/dist/commands/up.d.ts +85 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +180 -32
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/webapp.d.ts.map +1 -1
- package/dist/commands/webapp.js +2 -1
- package/dist/commands/webapp.js.map +1 -1
- package/dist/config/defaults.d.ts +16 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +26 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/define-ecosystem.d.ts.map +1 -1
- package/dist/config/define-ecosystem.js +2 -0
- package/dist/config/define-ecosystem.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +45 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +64 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/config/omnitron-config.schema.d.ts.map +1 -1
- package/dist/config/omnitron-config.schema.js +16 -0
- package/dist/config/omnitron-config.schema.js.map +1 -1
- package/dist/config/types.d.ts +416 -44
- package/dist/config/types.d.ts.map +1 -1
- package/dist/daemon/config-reload.d.ts +27 -0
- package/dist/daemon/config-reload.d.ts.map +1 -0
- package/dist/daemon/config-reload.js +42 -0
- package/dist/daemon/config-reload.js.map +1 -0
- package/dist/daemon/daemon-client.d.ts +136 -2
- package/dist/daemon/daemon-client.d.ts.map +1 -1
- package/dist/daemon/daemon-client.js +307 -21
- package/dist/daemon/daemon-client.js.map +1 -1
- package/dist/daemon/daemon-entry.js +90 -30
- package/dist/daemon/daemon-entry.js.map +1 -1
- package/dist/daemon/daemon-scheduler.d.ts +4 -0
- package/dist/daemon/daemon-scheduler.d.ts.map +1 -1
- package/dist/daemon/daemon-scheduler.js +137 -7
- package/dist/daemon/daemon-scheduler.js.map +1 -1
- package/dist/daemon/daemon-state-store.service.d.ts +263 -0
- package/dist/daemon/daemon-state-store.service.d.ts.map +1 -0
- package/dist/daemon/daemon-state-store.service.js +446 -0
- package/dist/daemon/daemon-state-store.service.js.map +1 -0
- package/dist/daemon/daemon.d.ts +194 -4
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +1160 -157
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/daemon.module.d.ts.map +1 -1
- package/dist/daemon/daemon.module.js +163 -85
- package/dist/daemon/daemon.module.js.map +1 -1
- package/dist/daemon/daemon.rpc-service.d.ts +90 -1
- package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
- package/dist/daemon/daemon.rpc-service.js +439 -97
- package/dist/daemon/daemon.rpc-service.js.map +1 -1
- package/dist/daemon/pid-manager.d.ts +16 -3
- package/dist/daemon/pid-manager.d.ts.map +1 -1
- package/dist/daemon/pid-manager.js +31 -4
- package/dist/daemon/pid-manager.js.map +1 -1
- package/dist/daemon/spawn-daemon.d.ts +73 -0
- package/dist/daemon/spawn-daemon.d.ts.map +1 -0
- package/dist/daemon/spawn-daemon.js +101 -0
- package/dist/daemon/spawn-daemon.js.map +1 -0
- package/dist/daemon/state-store.d.ts +65 -3
- package/dist/daemon/state-store.d.ts.map +1 -1
- package/dist/daemon/state-store.js +100 -58
- package/dist/daemon/state-store.js.map +1 -1
- package/dist/database/connection.d.ts +71 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +129 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/dialect.d.ts +60 -0
- package/dist/database/dialect.d.ts.map +1 -0
- package/dist/database/dialect.js +80 -0
- package/dist/database/dialect.js.map +1 -0
- package/dist/database/migrate.d.ts +5 -2
- package/dist/database/migrate.d.ts.map +1 -1
- package/dist/database/migrate.js +23 -33
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/migration-runner.d.ts +50 -0
- package/dist/database/migration-runner.d.ts.map +1 -0
- package/dist/database/migration-runner.js +143 -0
- package/dist/database/migration-runner.js.map +1 -0
- package/dist/database/migrations/006_login_throttle.d.ts +17 -0
- package/dist/database/migrations/006_login_throttle.d.ts.map +1 -0
- package/dist/database/migrations/006_login_throttle.js +33 -0
- package/dist/database/migrations/006_login_throttle.js.map +1 -0
- package/dist/database/migrations/007_sync_ingested.d.ts +21 -0
- package/dist/database/migrations/007_sync_ingested.d.ts.map +1 -0
- package/dist/database/migrations/007_sync_ingested.js +39 -0
- package/dist/database/migrations/007_sync_ingested.js.map +1 -0
- package/dist/database/migrations/008_node_health_version_text.d.ts +24 -0
- package/dist/database/migrations/008_node_health_version_text.d.ts.map +1 -0
- package/dist/database/migrations/008_node_health_version_text.js +35 -0
- package/dist/database/migrations/008_node_health_version_text.js.map +1 -0
- package/dist/database/migrations/009_node_health_unmeasured.d.ts +40 -0
- package/dist/database/migrations/009_node_health_unmeasured.d.ts.map +1 -0
- package/dist/database/migrations/009_node_health_unmeasured.js +63 -0
- package/dist/database/migrations/009_node_health_unmeasured.js.map +1 -0
- package/dist/database/migrations/010_metrics_raw_had_no_reader.d.ts +22 -0
- package/dist/database/migrations/010_metrics_raw_had_no_reader.d.ts.map +1 -0
- package/dist/database/migrations/010_metrics_raw_had_no_reader.js +26 -0
- package/dist/database/migrations/010_metrics_raw_had_no_reader.js.map +1 -0
- package/dist/database/migrations/011_alerts_nobody_had_to_write.d.ts +56 -0
- package/dist/database/migrations/011_alerts_nobody_had_to_write.d.ts.map +1 -0
- package/dist/database/migrations/011_alerts_nobody_had_to_write.js +79 -0
- package/dist/database/migrations/011_alerts_nobody_had_to_write.js.map +1 -0
- package/dist/database/migrations/012_a_disk_nobody_watched.d.ts +26 -0
- package/dist/database/migrations/012_a_disk_nobody_watched.d.ts.map +1 -0
- package/dist/database/migrations/012_a_disk_nobody_watched.js +40 -0
- package/dist/database/migrations/012_a_disk_nobody_watched.js.map +1 -0
- package/dist/database/migrations/013_an_alarm_delivered.d.ts +14 -0
- package/dist/database/migrations/013_an_alarm_delivered.d.ts.map +1 -0
- package/dist/database/migrations/013_an_alarm_delivered.js +28 -0
- package/dist/database/migrations/013_an_alarm_delivered.js.map +1 -0
- package/dist/database/migrations/index.d.ts +21 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/migrations/index.js +47 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/schema.d.ts +27 -11
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/sqlite-date-binding.d.ts +71 -0
- package/dist/database/sqlite-date-binding.d.ts.map +1 -0
- package/dist/database/sqlite-date-binding.js +174 -0
- package/dist/database/sqlite-date-binding.js.map +1 -0
- package/dist/execution/data-channel.d.ts +48 -0
- package/dist/execution/data-channel.d.ts.map +1 -0
- package/dist/execution/data-channel.js +55 -0
- package/dist/execution/data-channel.js.map +1 -0
- package/dist/execution/execution.service.d.ts +146 -0
- package/dist/execution/execution.service.d.ts.map +1 -1
- package/dist/execution/execution.service.js +330 -10
- package/dist/execution/execution.service.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/infrastructure/bare-metal-plan.d.ts +208 -0
- package/dist/infrastructure/bare-metal-plan.d.ts.map +1 -0
- package/dist/infrastructure/bare-metal-plan.js +363 -0
- package/dist/infrastructure/bare-metal-plan.js.map +1 -0
- package/dist/infrastructure/bare-metal-runner.d.ts +65 -0
- package/dist/infrastructure/bare-metal-runner.d.ts.map +1 -0
- package/dist/infrastructure/bare-metal-runner.js +354 -0
- package/dist/infrastructure/bare-metal-runner.js.map +1 -0
- package/dist/infrastructure/config-payload.d.ts +149 -0
- package/dist/infrastructure/config-payload.d.ts.map +1 -0
- package/dist/infrastructure/config-payload.js +235 -0
- package/dist/infrastructure/config-payload.js.map +1 -0
- package/dist/infrastructure/container-runtime.d.ts +170 -10
- package/dist/infrastructure/container-runtime.d.ts.map +1 -1
- package/dist/infrastructure/container-runtime.js +565 -52
- package/dist/infrastructure/container-runtime.js.map +1 -1
- package/dist/infrastructure/gateway-reachability.d.ts +85 -0
- package/dist/infrastructure/gateway-reachability.d.ts.map +1 -0
- package/dist/infrastructure/gateway-reachability.js +116 -0
- package/dist/infrastructure/gateway-reachability.js.map +1 -0
- package/dist/infrastructure/gateway-redis-db.d.ts +29 -0
- package/dist/infrastructure/gateway-redis-db.d.ts.map +1 -0
- package/dist/infrastructure/gateway-redis-db.js +32 -0
- package/dist/infrastructure/gateway-redis-db.js.map +1 -0
- 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/host-inspection.d.ts +223 -0
- package/dist/infrastructure/host-inspection.d.ts.map +1 -0
- package/dist/infrastructure/host-inspection.js +501 -0
- package/dist/infrastructure/host-inspection.js.map +1 -0
- package/dist/infrastructure/infrastructure-gate.d.ts.map +1 -1
- package/dist/infrastructure/infrastructure.service.d.ts +223 -7
- package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
- package/dist/infrastructure/infrastructure.service.js +500 -93
- package/dist/infrastructure/infrastructure.service.js.map +1 -1
- package/dist/infrastructure/known-machines.d.ts +76 -0
- package/dist/infrastructure/known-machines.d.ts.map +1 -0
- package/dist/infrastructure/known-machines.js +94 -0
- package/dist/infrastructure/known-machines.js.map +1 -0
- package/dist/infrastructure/node-credentials.d.ts +45 -0
- package/dist/infrastructure/node-credentials.d.ts.map +1 -0
- package/dist/infrastructure/node-credentials.js +80 -0
- package/dist/infrastructure/node-credentials.js.map +1 -0
- package/dist/infrastructure/orphan-containers.d.ts +99 -0
- package/dist/infrastructure/orphan-containers.d.ts.map +1 -0
- package/dist/infrastructure/orphan-containers.js +106 -0
- package/dist/infrastructure/orphan-containers.js.map +1 -0
- package/dist/infrastructure/phantom-endpoint-janitor.d.ts +20 -0
- package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -1
- package/dist/infrastructure/phantom-endpoint-janitor.js +56 -6
- package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -1
- package/dist/infrastructure/presets/gateway-openresty.d.ts.map +1 -1
- package/dist/infrastructure/presets/gateway-openresty.js +29 -3
- package/dist/infrastructure/presets/gateway-openresty.js.map +1 -1
- package/dist/infrastructure/presets/minio.d.ts.map +1 -1
- package/dist/infrastructure/presets/minio.js +36 -3
- package/dist/infrastructure/presets/minio.js.map +1 -1
- package/dist/infrastructure/presets/postgres.d.ts.map +1 -1
- package/dist/infrastructure/presets/postgres.js +69 -2
- package/dist/infrastructure/presets/postgres.js.map +1 -1
- package/dist/infrastructure/presets/redis.d.ts.map +1 -1
- package/dist/infrastructure/presets/redis.js +13 -0
- package/dist/infrastructure/presets/redis.js.map +1 -1
- package/dist/infrastructure/presets/registry.d.ts.map +1 -1
- package/dist/infrastructure/presets/registry.js +81 -12
- package/dist/infrastructure/presets/registry.js.map +1 -1
- package/dist/infrastructure/presets/tor.d.ts +38 -0
- package/dist/infrastructure/presets/tor.d.ts.map +1 -1
- package/dist/infrastructure/presets/tor.js +78 -69
- package/dist/infrastructure/presets/tor.js.map +1 -1
- package/dist/infrastructure/presets/torrc.d.ts +54 -0
- package/dist/infrastructure/presets/torrc.d.ts.map +1 -0
- package/dist/infrastructure/presets/torrc.js +153 -0
- package/dist/infrastructure/presets/torrc.js.map +1 -0
- package/dist/infrastructure/presets/types.d.ts +17 -0
- package/dist/infrastructure/presets/types.d.ts.map +1 -1
- package/dist/infrastructure/provisioning-outcome.d.ts +85 -0
- package/dist/infrastructure/provisioning-outcome.d.ts.map +1 -0
- package/dist/infrastructure/provisioning-outcome.js +122 -0
- package/dist/infrastructure/provisioning-outcome.js.map +1 -0
- package/dist/infrastructure/server-registry.d.ts +27 -0
- package/dist/infrastructure/server-registry.d.ts.map +1 -1
- package/dist/infrastructure/server-registry.js +60 -5
- package/dist/infrastructure/server-registry.js.map +1 -1
- package/dist/infrastructure/service-binding.d.ts +60 -0
- package/dist/infrastructure/service-binding.d.ts.map +1 -0
- package/dist/infrastructure/service-binding.js +90 -0
- package/dist/infrastructure/service-binding.js.map +1 -0
- package/dist/infrastructure/service-credentials.d.ts +105 -0
- package/dist/infrastructure/service-credentials.d.ts.map +1 -0
- package/dist/infrastructure/service-credentials.js +141 -0
- package/dist/infrastructure/service-credentials.js.map +1 -0
- package/dist/infrastructure/service-resolver.d.ts +166 -12
- package/dist/infrastructure/service-resolver.d.ts.map +1 -1
- package/dist/infrastructure/service-resolver.js +535 -82
- package/dist/infrastructure/service-resolver.js.map +1 -1
- package/dist/infrastructure/shipped-config.d.ts +43 -0
- package/dist/infrastructure/shipped-config.d.ts.map +1 -0
- package/dist/infrastructure/shipped-config.js +159 -0
- package/dist/infrastructure/shipped-config.js.map +1 -0
- package/dist/infrastructure/stack-infra-manager.d.ts +16 -1
- package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
- package/dist/infrastructure/stack-infra-manager.js +81 -53
- package/dist/infrastructure/stack-infra-manager.js.map +1 -1
- package/dist/infrastructure/types.d.ts +263 -6
- package/dist/infrastructure/types.d.ts.map +1 -1
- package/dist/mcp/mcp-bridge.d.ts.map +1 -1
- package/dist/mcp/mcp-bridge.js.map +1 -1
- package/dist/mcp/tool-groups/apps.tools.d.ts +2 -1
- package/dist/mcp/tool-groups/apps.tools.d.ts.map +1 -1
- package/dist/mcp/tool-groups/apps.tools.js +2 -2
- package/dist/mcp/tool-groups/apps.tools.js.map +1 -1
- package/dist/mcp/tool-groups/infra.tools.d.ts +16 -2
- package/dist/mcp/tool-groups/infra.tools.d.ts.map +1 -1
- package/dist/mcp/tool-groups/infra.tools.js +51 -41
- package/dist/mcp/tool-groups/infra.tools.js.map +1 -1
- package/dist/mcp/tool-groups/kb.tools.d.ts.map +1 -1
- package/dist/mcp/tool-groups/kb.tools.js +4 -6
- package/dist/mcp/tool-groups/kb.tools.js.map +1 -1
- package/dist/mcp/tool-groups/management.tools.d.ts +20 -3
- package/dist/mcp/tool-groups/management.tools.d.ts.map +1 -1
- package/dist/mcp/tool-groups/management.tools.js +158 -125
- package/dist/mcp/tool-groups/management.tools.js.map +1 -1
- package/dist/mcp/tool-groups/monitoring.tools.d.ts +10 -1
- package/dist/mcp/tool-groups/monitoring.tools.d.ts.map +1 -1
- package/dist/mcp/tool-groups/monitoring.tools.js +65 -18
- package/dist/mcp/tool-groups/monitoring.tools.js.map +1 -1
- package/dist/mcp/unavailable-tools.d.ts +35 -0
- package/dist/mcp/unavailable-tools.d.ts.map +1 -0
- package/dist/mcp/unavailable-tools.js +59 -0
- package/dist/mcp/unavailable-tools.js.map +1 -0
- package/dist/monitoring/app-health.indicator.d.ts.map +1 -1
- package/dist/monitoring/app-health.indicator.js +12 -0
- package/dist/monitoring/app-health.indicator.js.map +1 -1
- package/dist/monitoring/desktop-notifier.d.ts +26 -0
- package/dist/monitoring/desktop-notifier.d.ts.map +1 -0
- package/dist/monitoring/desktop-notifier.js +49 -0
- package/dist/monitoring/desktop-notifier.js.map +1 -0
- package/dist/monitoring/docker-health.indicator.d.ts +17 -1
- package/dist/monitoring/docker-health.indicator.d.ts.map +1 -1
- package/dist/monitoring/docker-health.indicator.js +38 -8
- package/dist/monitoring/docker-health.indicator.js.map +1 -1
- package/dist/monitoring/event-loop-stall.indicator.d.ts +26 -0
- package/dist/monitoring/event-loop-stall.indicator.d.ts.map +1 -0
- package/dist/monitoring/event-loop-stall.indicator.js +47 -0
- package/dist/monitoring/event-loop-stall.indicator.js.map +1 -0
- package/dist/monitoring/event-loop-watch.d.ts +124 -0
- package/dist/monitoring/event-loop-watch.d.ts.map +1 -0
- package/dist/monitoring/event-loop-watch.js +179 -0
- package/dist/monitoring/event-loop-watch.js.map +1 -0
- package/dist/monitoring/host-disk.d.ts +6 -0
- package/dist/monitoring/host-disk.d.ts.map +1 -0
- package/dist/monitoring/host-disk.js +26 -0
- package/dist/monitoring/host-disk.js.map +1 -0
- package/dist/monitoring/log-line.d.ts +188 -0
- package/dist/monitoring/log-line.d.ts.map +1 -0
- package/dist/monitoring/log-line.js +458 -0
- package/dist/monitoring/log-line.js.map +1 -0
- package/dist/monitoring/log-manager.d.ts +89 -8
- package/dist/monitoring/log-manager.d.ts.map +1 -1
- package/dist/monitoring/log-manager.js +246 -77
- package/dist/monitoring/log-manager.js.map +1 -1
- package/dist/observability/metrics-bridge.d.ts.map +1 -1
- package/dist/observability/metrics-server.d.ts.map +1 -1
- 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 +157 -2
- package/dist/orchestrator/app-handle.d.ts.map +1 -1
- package/dist/orchestrator/app-handle.js +165 -3
- package/dist/orchestrator/app-handle.js.map +1 -1
- package/dist/orchestrator/app-health.d.ts +33 -0
- package/dist/orchestrator/app-health.d.ts.map +1 -0
- package/dist/orchestrator/app-health.js +74 -0
- package/dist/orchestrator/app-health.js.map +1 -0
- package/dist/orchestrator/app-traffic.d.ts +14 -0
- package/dist/orchestrator/app-traffic.d.ts.map +1 -0
- package/dist/orchestrator/app-traffic.js +33 -0
- package/dist/orchestrator/app-traffic.js.map +1 -0
- package/dist/orchestrator/bootstrap-loader-child.d.ts +19 -0
- package/dist/orchestrator/bootstrap-loader-child.d.ts.map +1 -0
- package/dist/orchestrator/bootstrap-loader-child.js +43 -0
- package/dist/orchestrator/bootstrap-loader-child.js.map +1 -0
- package/dist/orchestrator/bootstrap-loader.d.ts +72 -0
- package/dist/orchestrator/bootstrap-loader.d.ts.map +1 -1
- package/dist/orchestrator/bootstrap-loader.js +350 -5
- package/dist/orchestrator/bootstrap-loader.js.map +1 -1
- package/dist/orchestrator/bootstrap-process.d.ts +99 -4
- package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
- package/dist/orchestrator/bootstrap-process.js +332 -20
- 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.d.ts +7 -0
- package/dist/orchestrator/call-exposed-service.d.ts.map +1 -0
- package/dist/orchestrator/call-exposed-service.js +50 -0
- package/dist/orchestrator/call-exposed-service.js.map +1 -0
- package/dist/orchestrator/classic-launcher.d.ts +1 -0
- package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
- package/dist/orchestrator/classic-launcher.js +40 -4
- package/dist/orchestrator/classic-launcher.js.map +1 -1
- package/dist/orchestrator/file-watcher.d.ts +79 -1
- package/dist/orchestrator/file-watcher.d.ts.map +1 -1
- package/dist/orchestrator/file-watcher.js +193 -7
- 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/module-worker-process.d.ts.map +1 -1
- package/dist/orchestrator/module-worker-process.js +10 -0
- package/dist/orchestrator/module-worker-process.js.map +1 -1
- package/dist/orchestrator/orchestrator.service.d.ts +385 -11
- package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.service.js +1738 -364
- package/dist/orchestrator/orchestrator.service.js.map +1 -1
- package/dist/orchestrator/owned-pids.d.ts +83 -0
- package/dist/orchestrator/owned-pids.d.ts.map +1 -0
- package/dist/orchestrator/owned-pids.js +93 -0
- package/dist/orchestrator/owned-pids.js.map +1 -0
- package/dist/orchestrator/port-conflict.d.ts +102 -0
- package/dist/orchestrator/port-conflict.d.ts.map +1 -0
- package/dist/orchestrator/port-conflict.js +131 -0
- package/dist/orchestrator/port-conflict.js.map +1 -0
- package/dist/orchestrator/process-janitor.d.ts +78 -4
- package/dist/orchestrator/process-janitor.d.ts.map +1 -1
- package/dist/orchestrator/process-janitor.js +246 -30
- package/dist/orchestrator/process-janitor.js.map +1 -1
- package/dist/orchestrator/ps-metrics.d.ts +37 -0
- package/dist/orchestrator/ps-metrics.d.ts.map +1 -0
- package/dist/orchestrator/ps-metrics.js +60 -0
- package/dist/orchestrator/ps-metrics.js.map +1 -0
- package/dist/orchestrator/service-router.d.ts +58 -2
- package/dist/orchestrator/service-router.d.ts.map +1 -1
- package/dist/orchestrator/service-router.js +157 -25
- package/dist/orchestrator/service-router.js.map +1 -1
- package/dist/orchestrator/topology-query.d.ts +49 -0
- package/dist/orchestrator/topology-query.d.ts.map +1 -0
- package/dist/orchestrator/topology-query.js +54 -0
- package/dist/orchestrator/topology-query.js.map +1 -0
- package/dist/project/artifact-builder.d.ts +174 -3
- package/dist/project/artifact-builder.d.ts.map +1 -1
- package/dist/project/artifact-builder.js +454 -42
- package/dist/project/artifact-builder.js.map +1 -1
- package/dist/project/build-decision.d.ts +58 -0
- package/dist/project/build-decision.d.ts.map +1 -0
- package/dist/project/build-decision.js +59 -0
- package/dist/project/build-decision.js.map +1 -0
- package/dist/project/config-resolver.d.ts +6 -4
- package/dist/project/config-resolver.d.ts.map +1 -1
- package/dist/project/config-resolver.js +128 -74
- package/dist/project/config-resolver.js.map +1 -1
- package/dist/project/declared-config.d.ts +42 -0
- package/dist/project/declared-config.d.ts.map +1 -0
- package/dist/project/declared-config.js +60 -0
- package/dist/project/declared-config.js.map +1 -0
- package/dist/project/dependency-analyzer.d.ts.map +1 -1
- package/dist/project/dependency-analyzer.js.map +1 -1
- package/dist/project/deploy-phases.d.ts +35 -0
- package/dist/project/deploy-phases.d.ts.map +1 -0
- package/dist/project/deploy-phases.js +75 -0
- package/dist/project/deploy-phases.js.map +1 -0
- package/dist/project/exec-in-group.d.ts +49 -0
- package/dist/project/exec-in-group.d.ts.map +1 -0
- package/dist/project/exec-in-group.js +100 -0
- package/dist/project/exec-in-group.js.map +1 -0
- package/dist/project/node-app-config.d.ts +101 -0
- package/dist/project/node-app-config.d.ts.map +1 -0
- package/dist/project/node-app-config.js +134 -0
- package/dist/project/node-app-config.js.map +1 -0
- package/dist/project/node-app-health.d.ts +76 -0
- package/dist/project/node-app-health.d.ts.map +1 -0
- package/dist/project/node-app-health.js +119 -0
- package/dist/project/node-app-health.js.map +1 -0
- package/dist/project/operator-account.d.ts +293 -0
- package/dist/project/operator-account.d.ts.map +1 -0
- package/dist/project/operator-account.js +373 -0
- package/dist/project/operator-account.js.map +1 -0
- package/dist/project/registry.d.ts +45 -8
- package/dist/project/registry.d.ts.map +1 -1
- package/dist/project/registry.js +214 -64
- package/dist/project/registry.js.map +1 -1
- package/dist/project/requirements-scanner.d.ts +1 -0
- package/dist/project/requirements-scanner.d.ts.map +1 -1
- package/dist/project/requirements-scanner.js +28 -3
- package/dist/project/requirements-scanner.js.map +1 -1
- package/dist/project/stack-env.d.ts +37 -0
- package/dist/project/stack-env.d.ts.map +1 -0
- package/dist/project/stack-env.js +85 -0
- package/dist/project/stack-env.js.map +1 -0
- package/dist/project/stand-containers.d.ts +11 -0
- package/dist/project/stand-containers.d.ts.map +1 -0
- package/dist/project/stand-containers.js +27 -0
- package/dist/project/stand-containers.js.map +1 -0
- package/dist/project/working-tree.d.ts +62 -0
- package/dist/project/working-tree.d.ts.map +1 -0
- package/dist/project/working-tree.js +101 -0
- package/dist/project/working-tree.js.map +1 -0
- package/dist/release/artifact-store.d.ts +360 -0
- package/dist/release/artifact-store.d.ts.map +1 -0
- package/dist/release/artifact-store.js +1040 -0
- package/dist/release/artifact-store.js.map +1 -0
- package/dist/release/attest-on-node.d.ts +93 -0
- package/dist/release/attest-on-node.d.ts.map +1 -0
- package/dist/release/attest-on-node.js +207 -0
- package/dist/release/attest-on-node.js.map +1 -0
- package/dist/release/attest.d.ts +135 -0
- package/dist/release/attest.d.ts.map +1 -0
- package/dist/release/attest.js +199 -0
- package/dist/release/attest.js.map +1 -0
- package/dist/release/build-run.d.ts +151 -0
- package/dist/release/build-run.d.ts.map +1 -0
- package/dist/release/build-run.js +609 -0
- package/dist/release/build-run.js.map +1 -0
- package/dist/release/builder.d.ts +57 -0
- package/dist/release/builder.d.ts.map +1 -0
- package/dist/release/builder.js +120 -0
- package/dist/release/builder.js.map +1 -0
- package/dist/release/daemon-omni.d.ts +41 -0
- package/dist/release/daemon-omni.d.ts.map +1 -0
- package/dist/release/daemon-omni.js +59 -0
- package/dist/release/daemon-omni.js.map +1 -0
- package/dist/release/definition-inputs.d.ts +34 -0
- package/dist/release/definition-inputs.d.ts.map +1 -0
- package/dist/release/definition-inputs.js +90 -0
- package/dist/release/definition-inputs.js.map +1 -0
- package/dist/release/delivered.d.ts +53 -0
- package/dist/release/delivered.d.ts.map +1 -0
- package/dist/release/delivered.js +81 -0
- package/dist/release/delivered.js.map +1 -0
- package/dist/release/layout.d.ts +61 -0
- package/dist/release/layout.d.ts.map +1 -0
- package/dist/release/layout.js +114 -0
- package/dist/release/layout.js.map +1 -0
- package/dist/release/load.d.ts +44 -0
- package/dist/release/load.d.ts.map +1 -0
- package/dist/release/load.js +84 -0
- package/dist/release/load.js.map +1 -0
- package/dist/release/manifest.d.ts +299 -0
- package/dist/release/manifest.d.ts.map +1 -0
- package/dist/release/manifest.js +176 -0
- package/dist/release/manifest.js.map +1 -0
- package/dist/release/migrations.d.ts +32 -0
- package/dist/release/migrations.d.ts.map +1 -0
- package/dist/release/migrations.js +51 -0
- package/dist/release/migrations.js.map +1 -0
- package/dist/release/publish.d.ts +71 -0
- package/dist/release/publish.d.ts.map +1 -0
- package/dist/release/publish.js +102 -0
- package/dist/release/publish.js.map +1 -0
- package/dist/release/store.d.ts +174 -0
- package/dist/release/store.d.ts.map +1 -0
- package/dist/release/store.js +257 -0
- package/dist/release/store.js.map +1 -0
- package/dist/services/alert.rpc-service.d.ts +11 -15
- package/dist/services/alert.rpc-service.d.ts.map +1 -1
- package/dist/services/alert.rpc-service.js +29 -14
- package/dist/services/alert.rpc-service.js.map +1 -1
- package/dist/services/alert.service.d.ts +96 -59
- package/dist/services/alert.service.d.ts.map +1 -1
- package/dist/services/alert.service.js +455 -70
- package/dist/services/alert.service.js.map +1 -1
- package/dist/services/anonymous-input.d.ts +26 -0
- package/dist/services/anonymous-input.d.ts.map +1 -0
- package/dist/services/anonymous-input.js +44 -0
- package/dist/services/anonymous-input.js.map +1 -0
- package/dist/services/audit.rpc-service.d.ts +27 -0
- package/dist/services/audit.rpc-service.d.ts.map +1 -0
- package/dist/services/audit.rpc-service.js +57 -0
- package/dist/services/audit.rpc-service.js.map +1 -0
- package/dist/services/audit.service.d.ts +165 -0
- package/dist/services/audit.service.d.ts.map +1 -0
- package/dist/services/audit.service.js +242 -0
- package/dist/services/audit.service.js.map +1 -0
- package/dist/services/auth-context.d.ts +21 -1
- package/dist/services/auth-context.d.ts.map +1 -1
- package/dist/services/auth-context.js +51 -5
- package/dist/services/auth-context.js.map +1 -1
- package/dist/services/auth.rpc-service.d.ts +0 -1
- package/dist/services/auth.rpc-service.d.ts.map +1 -1
- package/dist/services/auth.rpc-service.js +23 -9
- package/dist/services/auth.rpc-service.js.map +1 -1
- package/dist/services/auth.service.d.ts +47 -33
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +155 -23
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/backup-pipeline.d.ts +97 -0
- package/dist/services/backup-pipeline.d.ts.map +1 -0
- package/dist/services/backup-pipeline.js +286 -0
- package/dist/services/backup-pipeline.js.map +1 -0
- package/dist/services/backup-schedule.d.ts +69 -0
- package/dist/services/backup-schedule.d.ts.map +1 -0
- package/dist/services/backup-schedule.js +132 -0
- package/dist/services/backup-schedule.js.map +1 -0
- package/dist/services/backup.rpc-service.d.ts +31 -2
- package/dist/services/backup.rpc-service.d.ts.map +1 -1
- package/dist/services/backup.rpc-service.js +53 -0
- package/dist/services/backup.rpc-service.js.map +1 -1
- package/dist/services/backup.service.d.ts +458 -14
- package/dist/services/backup.service.d.ts.map +1 -1
- package/dist/services/backup.service.js +1368 -170
- package/dist/services/backup.service.js.map +1 -1
- package/dist/services/bundle-build-worker.d.ts +19 -0
- package/dist/services/bundle-build-worker.d.ts.map +1 -0
- package/dist/services/bundle-build-worker.js +40 -0
- package/dist/services/bundle-build-worker.js.map +1 -0
- package/dist/services/bundle-builder.d.ts +490 -0
- package/dist/services/bundle-builder.d.ts.map +1 -0
- package/dist/services/bundle-builder.js +1159 -0
- package/dist/services/bundle-builder.js.map +1 -0
- package/dist/services/bundle-worker-protocol.d.ts +19 -0
- package/dist/services/bundle-worker-protocol.d.ts.map +1 -0
- package/dist/services/bundle-worker-protocol.js +32 -0
- package/dist/services/bundle-worker-protocol.js.map +1 -0
- package/dist/services/deploy.rpc-service.d.ts +4 -1
- package/dist/services/deploy.rpc-service.d.ts.map +1 -1
- package/dist/services/deploy.rpc-service.js +10 -0
- package/dist/services/deploy.rpc-service.js.map +1 -1
- package/dist/services/deploy.service.d.ts +14 -24
- package/dist/services/deploy.service.d.ts.map +1 -1
- package/dist/services/deploy.service.js +46 -5
- package/dist/services/deploy.service.js.map +1 -1
- package/dist/services/discovery.rpc-service.d.ts +2 -1
- package/dist/services/discovery.rpc-service.d.ts.map +1 -1
- package/dist/services/discovery.rpc-service.js.map +1 -1
- package/dist/services/discovery.service.d.ts +32 -28
- package/dist/services/discovery.service.d.ts.map +1 -1
- package/dist/services/discovery.service.js +108 -133
- package/dist/services/discovery.service.js.map +1 -1
- package/dist/services/event-broadcaster.rpc-service.d.ts +36 -23
- package/dist/services/event-broadcaster.rpc-service.d.ts.map +1 -1
- package/dist/services/event-broadcaster.rpc-service.js +70 -32
- package/dist/services/event-broadcaster.rpc-service.js.map +1 -1
- package/dist/services/event-broadcaster.service.d.ts.map +1 -1
- package/dist/services/event-broadcaster.service.js.map +1 -1
- package/dist/services/fleet.rpc-service.d.ts +2 -1
- package/dist/services/fleet.rpc-service.d.ts.map +1 -1
- package/dist/services/fleet.rpc-service.js +3 -1
- package/dist/services/fleet.rpc-service.js.map +1 -1
- package/dist/services/fleet.service.d.ts +32 -34
- package/dist/services/fleet.service.d.ts.map +1 -1
- package/dist/services/fleet.service.js +66 -10
- package/dist/services/fleet.service.js.map +1 -1
- package/dist/services/health-check.rpc-service.d.ts +2 -1
- package/dist/services/health-check.rpc-service.d.ts.map +1 -1
- package/dist/services/health-check.rpc-service.js.map +1 -1
- package/dist/services/health-check.service.d.ts +50 -36
- package/dist/services/health-check.service.d.ts.map +1 -1
- package/dist/services/health-check.service.js +179 -182
- package/dist/services/health-check.service.js.map +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 +312 -2
- package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
- package/dist/services/infrastructure.rpc-service.js +584 -11
- package/dist/services/infrastructure.rpc-service.js.map +1 -1
- package/dist/services/kubernetes.rpc-service.d.ts +2 -1
- package/dist/services/kubernetes.rpc-service.d.ts.map +1 -1
- package/dist/services/kubernetes.rpc-service.js.map +1 -1
- package/dist/services/kubernetes.service.d.ts +5 -39
- package/dist/services/kubernetes.service.d.ts.map +1 -1
- package/dist/services/kubernetes.service.js +29 -5
- package/dist/services/kubernetes.service.js.map +1 -1
- package/dist/services/local-bundle.d.ts +160 -0
- package/dist/services/local-bundle.d.ts.map +1 -0
- package/dist/services/local-bundle.js +242 -0
- package/dist/services/local-bundle.js.map +1 -0
- package/dist/services/lockout.d.ts +28 -0
- package/dist/services/lockout.d.ts.map +1 -0
- package/dist/services/lockout.js +41 -0
- package/dist/services/lockout.js.map +1 -0
- package/dist/services/log-collector.rpc-service.d.ts +16 -0
- package/dist/services/log-collector.rpc-service.d.ts.map +1 -1
- package/dist/services/log-collector.rpc-service.js +16 -0
- package/dist/services/log-collector.rpc-service.js.map +1 -1
- package/dist/services/log-collector.service.d.ts +172 -54
- package/dist/services/log-collector.service.d.ts.map +1 -1
- package/dist/services/log-collector.service.js +492 -102
- package/dist/services/log-collector.service.js.map +1 -1
- package/dist/services/log-retention.d.ts +50 -0
- package/dist/services/log-retention.d.ts.map +1 -0
- package/dist/services/log-retention.js +52 -0
- package/dist/services/log-retention.js.map +1 -0
- package/dist/services/maintenance-lock.d.ts +162 -0
- package/dist/services/maintenance-lock.d.ts.map +1 -0
- package/dist/services/maintenance-lock.js +316 -0
- package/dist/services/maintenance-lock.js.map +1 -0
- package/dist/services/master-address.d.ts +107 -0
- package/dist/services/master-address.d.ts.map +1 -0
- package/dist/services/master-address.js +154 -0
- package/dist/services/master-address.js.map +1 -0
- package/dist/services/migration-output.d.ts +16 -0
- package/dist/services/migration-output.d.ts.map +1 -0
- package/dist/services/migration-output.js +22 -0
- package/dist/services/migration-output.js.map +1 -0
- package/dist/services/netron-telemetry-transport.d.ts.map +1 -1
- package/dist/services/netron-telemetry-transport.js.map +1 -1
- package/dist/services/node-deploy-lease.d.ts +171 -0
- package/dist/services/node-deploy-lease.d.ts.map +1 -0
- package/dist/services/node-deploy-lease.js +460 -0
- package/dist/services/node-deploy-lease.js.map +1 -0
- package/dist/services/node-health.repository.d.ts +63 -4
- package/dist/services/node-health.repository.d.ts.map +1 -1
- package/dist/services/node-health.repository.js +108 -67
- package/dist/services/node-health.repository.js.map +1 -1
- package/dist/services/node-manager.rpc-service.d.ts +360 -10
- package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
- package/dist/services/node-manager.rpc-service.js +754 -34
- package/dist/services/node-manager.rpc-service.js.map +1 -1
- package/dist/services/node-manager.service.d.ts +267 -95
- package/dist/services/node-manager.service.d.ts.map +1 -1
- package/dist/services/node-manager.service.js +805 -103
- package/dist/services/node-manager.service.js.map +1 -1
- package/dist/services/node-upgrade.d.ts +129 -0
- package/dist/services/node-upgrade.d.ts.map +1 -0
- package/dist/services/node-upgrade.js +161 -0
- package/dist/services/node-upgrade.js.map +1 -0
- package/dist/services/node-upgrade.service.d.ts +232 -0
- package/dist/services/node-upgrade.service.d.ts.map +1 -0
- package/dist/services/node-upgrade.service.js +468 -0
- package/dist/services/node-upgrade.service.js.map +1 -0
- package/dist/services/pipeline.rpc-service.d.ts +6 -1
- 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 +17 -46
- package/dist/services/pipeline.service.d.ts.map +1 -1
- package/dist/services/pipeline.service.js +84 -9
- package/dist/services/pipeline.service.js.map +1 -1
- package/dist/services/project.rpc-service.d.ts +140 -5
- package/dist/services/project.rpc-service.d.ts.map +1 -1
- package/dist/services/project.rpc-service.js +260 -22
- package/dist/services/project.rpc-service.js.map +1 -1
- package/dist/services/project.service.d.ts +687 -15
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +2846 -337
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/redeploy-decision.d.ts +176 -0
- package/dist/services/redeploy-decision.d.ts.map +1 -0
- package/dist/services/redeploy-decision.js +142 -0
- package/dist/services/redeploy-decision.js.map +1 -0
- package/dist/services/release.rpc-service.d.ts +159 -0
- package/dist/services/release.rpc-service.d.ts.map +1 -0
- package/dist/services/release.rpc-service.js +395 -0
- package/dist/services/release.rpc-service.js.map +1 -0
- package/dist/services/release.service.d.ts +114 -0
- package/dist/services/release.service.d.ts.map +1 -0
- package/dist/services/release.service.js +208 -0
- package/dist/services/release.service.js.map +1 -0
- package/dist/services/remote-deployer.service.d.ts +580 -8
- package/dist/services/remote-deployer.service.d.ts.map +1 -1
- package/dist/services/remote-deployer.service.js +1786 -169
- package/dist/services/remote-deployer.service.js.map +1 -1
- package/dist/services/remote-ops.service.d.ts +51 -9
- package/dist/services/remote-ops.service.d.ts.map +1 -1
- package/dist/services/remote-ops.service.js +235 -39
- package/dist/services/remote-ops.service.js.map +1 -1
- package/dist/services/remote-provisioner.d.ts +124 -0
- package/dist/services/remote-provisioner.d.ts.map +1 -0
- package/dist/services/remote-provisioner.js +258 -0
- package/dist/services/remote-provisioner.js.map +1 -0
- package/dist/services/secrets.rpc-service.d.ts +51 -2
- package/dist/services/secrets.rpc-service.d.ts.map +1 -1
- package/dist/services/secrets.rpc-service.js +81 -2
- package/dist/services/secrets.rpc-service.js.map +1 -1
- package/dist/services/secrets.service.d.ts +108 -9
- package/dist/services/secrets.service.d.ts.map +1 -1
- package/dist/services/secrets.service.js +313 -48
- package/dist/services/secrets.service.js.map +1 -1
- package/dist/services/slave-storage.service.d.ts +107 -0
- package/dist/services/slave-storage.service.d.ts.map +1 -1
- package/dist/services/slave-storage.service.js +171 -2
- package/dist/services/slave-storage.service.js.map +1 -1
- package/dist/services/static-carry-forward.d.ts +110 -0
- package/dist/services/static-carry-forward.d.ts.map +1 -0
- package/dist/services/static-carry-forward.js +433 -0
- package/dist/services/static-carry-forward.js.map +1 -0
- package/dist/services/sync-policy.d.ts +167 -0
- package/dist/services/sync-policy.d.ts.map +1 -0
- package/dist/services/sync-policy.js +161 -0
- package/dist/services/sync-policy.js.map +1 -0
- package/dist/services/sync-summary.d.ts +39 -0
- package/dist/services/sync-summary.d.ts.map +1 -0
- package/dist/services/sync-summary.js +62 -0
- package/dist/services/sync-summary.js.map +1 -0
- package/dist/services/sync.rpc-service.d.ts +19 -7
- package/dist/services/sync.rpc-service.d.ts.map +1 -1
- package/dist/services/sync.rpc-service.js +36 -5
- package/dist/services/sync.rpc-service.js.map +1 -1
- package/dist/services/sync.service.d.ts +350 -18
- package/dist/services/sync.service.d.ts.map +1 -1
- package/dist/services/sync.service.js +864 -116
- package/dist/services/sync.service.js.map +1 -1
- package/dist/services/system-info.rpc-service.d.ts +2 -1
- package/dist/services/system-info.rpc-service.d.ts.map +1 -1
- package/dist/services/system-info.rpc-service.js.map +1 -1
- package/dist/services/system-info.service.d.ts +56 -68
- package/dist/services/system-info.service.d.ts.map +1 -1
- package/dist/services/system-info.service.js +240 -127
- package/dist/services/system-info.service.js.map +1 -1
- package/dist/services/telemetry.rpc-service.d.ts.map +1 -1
- package/dist/services/telemetry.rpc-service.js +9 -3
- package/dist/services/telemetry.rpc-service.js.map +1 -1
- package/dist/services/telemetry.service.d.ts +4 -2
- package/dist/services/telemetry.service.d.ts.map +1 -1
- package/dist/services/telemetry.service.js +4 -2
- package/dist/services/telemetry.service.js.map +1 -1
- package/dist/services/trace-collector.rpc-service.d.ts +2 -1
- package/dist/services/trace-collector.rpc-service.d.ts.map +1 -1
- package/dist/services/trace-collector.rpc-service.js.map +1 -1
- package/dist/services/trace-collector.service.d.ts +2 -41
- package/dist/services/trace-collector.service.d.ts.map +1 -1
- package/dist/services/trace-collector.service.js +27 -7
- package/dist/services/trace-collector.service.js.map +1 -1
- package/dist/services/wait-for-postgres.d.ts +28 -0
- package/dist/services/wait-for-postgres.d.ts.map +1 -0
- package/dist/services/wait-for-postgres.js +77 -0
- package/dist/services/wait-for-postgres.js.map +1 -0
- package/dist/shared/alert-expression.d.ts +60 -0
- package/dist/shared/alert-expression.d.ts.map +1 -0
- package/dist/shared/alert-expression.js +124 -0
- package/dist/shared/alert-expression.js.map +1 -0
- package/dist/shared/audit-outcome.d.ts +39 -0
- package/dist/shared/audit-outcome.d.ts.map +1 -0
- package/dist/shared/audit-outcome.js +45 -0
- package/dist/shared/audit-outcome.js.map +1 -0
- package/dist/shared/build-freshness.d.ts +59 -0
- package/dist/shared/build-freshness.d.ts.map +1 -0
- package/dist/shared/build-freshness.js +113 -0
- package/dist/shared/build-freshness.js.map +1 -0
- package/dist/shared/build-stamp.d.ts +26 -0
- package/dist/shared/build-stamp.d.ts.map +1 -0
- package/dist/shared/build-stamp.js +36 -0
- package/dist/shared/build-stamp.js.map +1 -0
- package/dist/shared/describe-error.d.ts +22 -0
- package/dist/shared/describe-error.d.ts.map +1 -0
- package/dist/shared/describe-error.js +39 -0
- package/dist/shared/describe-error.js.map +1 -0
- package/dist/shared/dto/alerts.d.ts +101 -0
- package/dist/shared/dto/alerts.d.ts.map +1 -0
- package/dist/shared/dto/alerts.js +9 -0
- package/dist/shared/dto/alerts.js.map +1 -0
- package/dist/shared/dto/auth.d.ts +49 -0
- package/dist/shared/dto/auth.d.ts.map +1 -0
- package/dist/shared/dto/auth.js +14 -0
- package/dist/shared/dto/auth.js.map +1 -0
- package/dist/shared/dto/backups.d.ts +16 -0
- package/dist/shared/dto/backups.d.ts.map +1 -0
- package/dist/shared/dto/backups.js +9 -0
- package/dist/shared/dto/backups.js.map +1 -0
- package/dist/shared/dto/deploy.d.ts +28 -0
- package/dist/shared/dto/deploy.d.ts.map +1 -0
- package/dist/shared/dto/deploy.js +8 -0
- package/dist/shared/dto/deploy.js.map +1 -0
- package/dist/shared/dto/discovery.d.ts +24 -0
- package/dist/shared/dto/discovery.d.ts.map +1 -0
- package/dist/shared/dto/discovery.js +9 -0
- package/dist/shared/dto/discovery.js.map +1 -0
- package/dist/shared/dto/fleet.d.ts +35 -0
- package/dist/shared/dto/fleet.d.ts.map +1 -0
- package/dist/shared/dto/fleet.js +8 -0
- package/dist/shared/dto/fleet.js.map +1 -0
- package/dist/shared/dto/health.d.ts +26 -0
- package/dist/shared/dto/health.d.ts.map +1 -0
- package/dist/shared/dto/health.js +9 -0
- package/dist/shared/dto/health.js.map +1 -0
- package/dist/shared/dto/kubernetes.d.ts +44 -0
- package/dist/shared/dto/kubernetes.d.ts.map +1 -0
- package/dist/shared/dto/kubernetes.js +9 -0
- package/dist/shared/dto/kubernetes.js.map +1 -0
- package/dist/shared/dto/logs.d.ts +77 -0
- package/dist/shared/dto/logs.d.ts.map +1 -0
- package/dist/shared/dto/logs.js +10 -0
- package/dist/shared/dto/logs.js.map +1 -0
- package/dist/shared/dto/metrics.d.ts +65 -0
- package/dist/shared/dto/metrics.d.ts.map +1 -0
- package/dist/shared/dto/metrics.js +17 -0
- package/dist/shared/dto/metrics.js.map +1 -0
- package/dist/shared/dto/nodes.d.ts +347 -0
- package/dist/shared/dto/nodes.d.ts.map +1 -0
- package/dist/shared/dto/nodes.js +8 -0
- package/dist/shared/dto/nodes.js.map +1 -0
- package/dist/shared/dto/pipelines.d.ts +53 -0
- package/dist/shared/dto/pipelines.d.ts.map +1 -0
- package/dist/shared/dto/pipelines.js +9 -0
- package/dist/shared/dto/pipelines.js.map +1 -0
- package/dist/shared/dto/project.d.ts +142 -8
- package/dist/shared/dto/project.d.ts.map +1 -1
- package/dist/shared/dto/services.d.ts +858 -7
- package/dist/shared/dto/services.d.ts.map +1 -1
- package/dist/shared/dto/system-info.d.ts +93 -0
- package/dist/shared/dto/system-info.d.ts.map +1 -0
- package/dist/shared/dto/system-info.js +9 -0
- package/dist/shared/dto/system-info.js.map +1 -0
- package/dist/shared/dto/traces.d.ts +49 -0
- package/dist/shared/dto/traces.d.ts.map +1 -0
- package/dist/shared/dto/traces.js +9 -0
- package/dist/shared/dto/traces.js.map +1 -0
- package/dist/shared/env-config.d.ts +74 -0
- package/dist/shared/env-config.d.ts.map +1 -0
- package/dist/shared/env-config.js +99 -0
- package/dist/shared/env-config.js.map +1 -0
- package/dist/shared/events.d.ts +45 -39
- package/dist/shared/events.d.ts.map +1 -1
- package/dist/shared/events.js +6 -0
- package/dist/shared/events.js.map +1 -1
- package/dist/shared/format.d.ts +1 -1
- package/dist/shared/format.d.ts.map +1 -1
- package/dist/shared/format.js +4 -0
- package/dist/shared/format.js.map +1 -1
- package/dist/shared/local-infra-host.d.ts +28 -0
- package/dist/shared/local-infra-host.d.ts.map +1 -0
- package/dist/shared/local-infra-host.js +28 -0
- package/dist/shared/local-infra-host.js.map +1 -0
- package/dist/shared/node-check.d.ts +37 -0
- package/dist/shared/node-check.d.ts.map +1 -0
- package/dist/shared/node-check.js +41 -0
- package/dist/shared/node-check.js.map +1 -0
- package/dist/shared/paths.d.ts +29 -0
- package/dist/shared/paths.d.ts.map +1 -0
- package/dist/shared/paths.js +54 -0
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/pnpm.d.ts +29 -0
- package/dist/shared/pnpm.d.ts.map +1 -0
- package/dist/shared/pnpm.js +57 -0
- package/dist/shared/pnpm.js.map +1 -0
- package/dist/shared/private-files.d.ts +29 -0
- package/dist/shared/private-files.d.ts.map +1 -0
- package/dist/shared/private-files.js +109 -0
- package/dist/shared/private-files.js.map +1 -0
- package/dist/shared/redact-env.d.ts +24 -0
- package/dist/shared/redact-env.d.ts.map +1 -0
- package/dist/shared/redact-env.js +36 -0
- package/dist/shared/redact-env.js.map +1 -0
- package/dist/shared/release-reading.d.ts +85 -0
- package/dist/shared/release-reading.d.ts.map +1 -0
- package/dist/shared/release-reading.js +81 -0
- package/dist/shared/release-reading.js.map +1 -0
- package/dist/shared/roles.d.ts +58 -3
- package/dist/shared/roles.d.ts.map +1 -1
- package/dist/shared/roles.js +55 -0
- package/dist/shared/roles.js.map +1 -1
- package/dist/shared/rpcauth.d.ts +13 -0
- package/dist/shared/rpcauth.d.ts.map +1 -0
- package/dist/shared/rpcauth.js +23 -0
- package/dist/shared/rpcauth.js.map +1 -0
- package/dist/shared/shell-escape.d.ts +9 -0
- package/dist/shared/shell-escape.d.ts.map +1 -0
- package/dist/shared/shell-escape.js +11 -0
- package/dist/shared/shell-escape.js.map +1 -0
- package/dist/shared/sync-reading.d.ts +45 -0
- package/dist/shared/sync-reading.d.ts.map +1 -0
- package/dist/shared/sync-reading.js +42 -0
- package/dist/shared/sync-reading.js.map +1 -0
- package/dist/shared/tokens.d.ts +19 -0
- package/dist/shared/tokens.d.ts.map +1 -1
- package/dist/shared/tokens.js +28 -0
- package/dist/shared/tokens.js.map +1 -1
- package/dist/webapp/webapp.service.d.ts +33 -2
- package/dist/webapp/webapp.service.d.ts.map +1 -1
- package/dist/webapp/webapp.service.js +143 -31
- package/dist/webapp/webapp.service.js.map +1 -1
- package/dist/workers/health-monitor-process.d.ts.map +1 -1
- package/dist/workers/health-monitor-process.js +10 -0
- package/dist/workers/health-monitor-process.js.map +1 -1
- package/dist/workers/health-monitor.service.d.ts +45 -3
- package/dist/workers/health-monitor.service.d.ts.map +1 -1
- package/dist/workers/health-monitor.service.js +152 -25
- package/dist/workers/health-monitor.service.js.map +1 -1
- package/dist/workers/system-worker-manager.d.ts +43 -0
- package/dist/workers/system-worker-manager.d.ts.map +1 -1
- package/dist/workers/system-worker-manager.js +150 -3
- package/dist/workers/system-worker-manager.js.map +1 -1
- package/dist/workers/types.d.ts +8 -2
- package/dist/workers/types.d.ts.map +1 -1
- package/package.json +68 -30
- package/webapp/dist/BUILD.json +5 -0
- package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
- package/webapp/dist/assets/Grid-DizFZYue.js +1 -0
- package/webapp/dist/assets/Switch-Bfiqzx8l.js +1 -0
- 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/constants-veKGFkC6.js +1 -0
- package/webapp/dist/assets/containers-B_TpThln.js +2 -0
- package/webapp/dist/assets/daemon-memory-CCPZ4cV_.js +1 -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-Dp-zpSAd.js +1 -0
- 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/formatters-BqjL73N3.js +1 -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-UCajtdox.js +2 -0
- 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-BzTKz5fM.js +1 -0
- 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/settled-pair-C7SjZuns.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/sync-reading-C3PnJ7AX.js +1 -0
- package/webapp/dist/assets/system-info-CFDNVKkU.js +1 -0
- package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
- package/webapp/dist/assets/topology-DLioOiRN.css +1 -0
- package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
- package/webapp/dist/assets/use-stack-context-CnA5FTHu.js +1 -0
- package/webapp/dist/index.html +6 -6
- package/dist/commands/dev.d.ts +0 -23
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -76
- package/dist/commands/dev.js.map +0 -1
- package/dist/config/define-app.d.ts +0 -6
- package/dist/config/define-app.d.ts.map +0 -1
- package/dist/config/define-app.js +0 -38
- package/dist/config/define-app.js.map +0 -1
- package/dist/infrastructure/gateway-generator.d.ts +0 -63
- package/dist/infrastructure/gateway-generator.d.ts.map +0 -1
- package/dist/infrastructure/gateway-generator.js +0 -253
- package/dist/infrastructure/gateway-generator.js.map +0 -1
- package/dist/monitoring/health.service.d.ts +0 -14
- package/dist/monitoring/health.service.d.ts.map +0 -1
- package/dist/monitoring/health.service.js +0 -50
- package/dist/monitoring/health.service.js.map +0 -1
- package/dist/monitoring/metrics.service.d.ts +0 -14
- package/dist/monitoring/metrics.service.d.ts.map +0 -1
- package/dist/monitoring/metrics.service.js +0 -40
- package/dist/monitoring/metrics.service.js.map +0 -1
- package/dist/orchestrator/bootstrap-runner.d.ts +0 -15
- package/dist/orchestrator/bootstrap-runner.d.ts.map +0 -1
- package/dist/orchestrator/bootstrap-runner.js +0 -152
- package/dist/orchestrator/bootstrap-runner.js.map +0 -1
- package/dist/orchestrator/topology-proxy.d.ts +0 -65
- package/dist/orchestrator/topology-proxy.d.ts.map +0 -1
- package/dist/orchestrator/topology-proxy.js +0 -209
- package/dist/orchestrator/topology-proxy.js.map +0 -1
- package/dist/orchestrator/topology-relay.d.ts +0 -111
- package/dist/orchestrator/topology-relay.d.ts.map +0 -1
- package/dist/orchestrator/topology-relay.js +0 -255
- package/dist/orchestrator/topology-relay.js.map +0 -1
- package/dist/services/auth-middleware.d.ts +0 -47
- package/dist/services/auth-middleware.d.ts.map +0 -1
- package/dist/services/auth-middleware.js +0 -158
- package/dist/services/auth-middleware.js.map +0 -1
- package/dist/services/environment.rpc-service.d.ts +0 -22
- package/dist/services/environment.rpc-service.d.ts.map +0 -1
- package/dist/services/environment.rpc-service.js +0 -65
- package/dist/services/environment.rpc-service.js.map +0 -1
- package/dist/services/environment.service.d.ts +0 -87
- package/dist/services/environment.service.d.ts.map +0 -1
- package/dist/services/environment.service.js +0 -220
- package/dist/services/environment.service.js.map +0 -1
- package/dist/services/metrics-collector.service.d.ts +0 -103
- package/dist/services/metrics-collector.service.d.ts.map +0 -1
- package/dist/services/metrics-collector.service.js +0 -235
- package/dist/services/metrics-collector.service.js.map +0 -1
- package/dist/services/metrics.rpc-service.d.ts +0 -41
- package/dist/services/metrics.rpc-service.d.ts.map +0 -1
- package/dist/services/metrics.rpc-service.js +0 -90
- package/dist/services/metrics.rpc-service.js.map +0 -1
- package/dist/services/metrics.service.d.ts +0 -72
- package/dist/services/metrics.service.d.ts.map +0 -1
- package/dist/services/metrics.service.js +0 -185
- package/dist/services/metrics.service.js.map +0 -1
- package/dist/supervisor/omnitron-supervisor.d.ts +0 -21
- package/dist/supervisor/omnitron-supervisor.d.ts.map +0 -1
- package/dist/supervisor/omnitron-supervisor.js +0 -43
- package/dist/supervisor/omnitron-supervisor.js.map +0 -1
- package/dist/webapp/static-server.d.ts +0 -24
- package/dist/webapp/static-server.d.ts.map +0 -1
- package/dist/webapp/static-server.js +0 -152
- package/dist/webapp/static-server.js.map +0 -1
- package/webapp/dist/assets/Badge-D2ZBP5iK.js +0 -1
- package/webapp/dist/assets/Card-vO88g06B.js +0 -1
- package/webapp/dist/assets/CardActions-C9h7Q2wW.js +0 -1
- package/webapp/dist/assets/CardContent-BA_Xmmhk.js +0 -1
- package/webapp/dist/assets/CardHeader-ceIs__6x.js +0 -1
- package/webapp/dist/assets/Chip-Ckk0xUhK.js +0 -1
- package/webapp/dist/assets/DialogActions-BhHM7hov.js +0 -1
- package/webapp/dist/assets/DialogContentText-BT2JQRmK.js +0 -1
- package/webapp/dist/assets/FormControlLabel-CcQByVS8.js +0 -1
- package/webapp/dist/assets/Grid-14PETRQW.js +0 -1
- package/webapp/dist/assets/InputAdornment-B8aHIsQ7.js +0 -1
- package/webapp/dist/assets/Skeleton-B74-Ds6O.js +0 -37
- package/webapp/dist/assets/Switch-DvWD2wh4.js +0 -1
- package/webapp/dist/assets/SwitchBase-CDU4nY8O.js +0 -1
- package/webapp/dist/assets/Tab-DcCOYYp5.js +0 -1
- package/webapp/dist/assets/TableContainer-CzTh4mu-.js +0 -1
- package/webapp/dist/assets/TableRow-BySEreZR.js +0 -2
- package/webapp/dist/assets/TextField-BLf-BHz2.js +0 -1
- package/webapp/dist/assets/alerts-DnRbT41C.js +0 -1
- package/webapp/dist/assets/apps-CdR0VH2d.js +0 -1
- package/webapp/dist/assets/chunk-DtcAfS_W.js +0 -1
- package/webapp/dist/assets/client-DU8I_lDc.js +0 -2
- package/webapp/dist/assets/constants-BgnT-Xdy.js +0 -1
- package/webapp/dist/assets/containers-Dw-rRXV1.js +0 -1
- package/webapp/dist/assets/dashboard-CzgB0uZz.js +0 -1
- package/webapp/dist/assets/dashboard-builder-DsA0yg33.js +0 -1
- package/webapp/dist/assets/deployments-DtQAoIcQ.js +0 -1
- package/webapp/dist/assets/detail-BJR-G7JG.js +0 -1
- package/webapp/dist/assets/detail-nlCeSltl.js +0 -8
- package/webapp/dist/assets/formatters-Do41SRmE.js +0 -1
- package/webapp/dist/assets/index-ByQDwp2r.js +0 -566
- package/webapp/dist/assets/index-CHVXOsTS.css +0 -1
- package/webapp/dist/assets/isMuiElement-DwF2naaF.js +0 -1
- package/webapp/dist/assets/logs-Kn8o4H7k.js +0 -11
- package/webapp/dist/assets/metrics-DN8Zu5wT.js +0 -2
- package/webapp/dist/assets/nodes-Bgch7AtN.js +0 -7
- package/webapp/dist/assets/pipelines-Cry3qm-S.js +0 -4
- package/webapp/dist/assets/popper-BJFSj6rc.js +0 -1
- package/webapp/dist/assets/preload-helper-DSXbuxSR.js +0 -1
- package/webapp/dist/assets/projects-Dym2GI1U.js +0 -1
- package/webapp/dist/assets/react-apexcharts.esm-CSGK5Cxn.js +0 -958
- package/webapp/dist/assets/react-apexcharts.esm-DEAWOwx5.js +0 -1003
- package/webapp/dist/assets/settings-va3zTcow.js +0 -1
- package/webapp/dist/assets/sign-in-ik35umbp.js +0 -1
- package/webapp/dist/assets/stacks-CVFOnxbF.js +0 -1
- package/webapp/dist/assets/system-info-npIXAjX2.js +0 -1
- package/webapp/dist/assets/topology-CHpVij2M.css +0 -1
- package/webapp/dist/assets/topology-bDe70vLs.js +0 -12
- package/webapp/dist/assets/traces-DIIcT8DF.js +0 -1
- package/webapp/dist/assets/use-stack-context-DHLwZv1r.js +0 -1
- /package/webapp/dist/assets/{fs-CgZLtHiQ.js → fs-Ccl3sAcp.js} +0 -0
|
@@ -7,29 +7,134 @@
|
|
|
7
7
|
* Into concrete Docker container definitions:
|
|
8
8
|
* { name: 'omnitron-postgres', image: 'postgres:17-alpine', ports: [...], env: [...] }
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* com.docker.compose.service = {service}
|
|
18
|
-
* omnitron.project = {project}
|
|
19
|
-
* omnitron.stack = {stack}
|
|
20
|
-
*/
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
12
|
+
import { configFilesHash } from './config-payload.js';
|
|
13
|
+
import { gatewayStaticLinkName } from '../services/static-carry-forward.js';
|
|
14
|
+
import { CONFIG_ROOT_PREFIX, shippedMountPath } from './shipped-config.js';
|
|
15
|
+
import { bindService } from './service-binding.js';
|
|
16
|
+
const infrastructureScopes = new AsyncLocalStorage();
|
|
21
17
|
let CONTAINER_PREFIX = 'omnitron';
|
|
18
|
+
/** Concurrent operations own their names/networks/volumes; ownerless work starts clean. */
|
|
19
|
+
export function withInfrastructureScope(project, stack, work) {
|
|
20
|
+
if ((project === undefined) !== (stack === undefined))
|
|
21
|
+
throw new Error('Infrastructure ownership requires project and stack together');
|
|
22
|
+
const labels = project === undefined
|
|
23
|
+
? {}
|
|
24
|
+
: {
|
|
25
|
+
'omnitron.project': project,
|
|
26
|
+
'omnitron.stack': stack,
|
|
27
|
+
'com.docker.compose.project': `omnitron-${project}-${stack}`,
|
|
28
|
+
};
|
|
29
|
+
return infrastructureScopes.run({ prefix: project === undefined ? 'omnitron' : `${project}-${stack}`, labels }, work);
|
|
30
|
+
}
|
|
22
31
|
/** Set the container prefix for project-scoped infrastructure */
|
|
23
32
|
export function setContainerPrefix(project, env) {
|
|
24
|
-
|
|
33
|
+
const scope = infrastructureScopes.getStore();
|
|
34
|
+
if (scope)
|
|
35
|
+
scope.prefix = `${project}-${env}`;
|
|
36
|
+
else
|
|
37
|
+
CONTAINER_PREFIX = `${project}-${env}`;
|
|
25
38
|
}
|
|
26
39
|
/** Get current prefix */
|
|
27
40
|
export function getContainerPrefix() {
|
|
28
|
-
return CONTAINER_PREFIX;
|
|
41
|
+
return infrastructureScopes.getStore()?.prefix ?? CONTAINER_PREFIX;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A named volume two services of one stack mount by the same name:
|
|
45
|
+
* `source: 'shared:gateway-socket'` is `<prefix>-gateway-socket` wherever it
|
|
46
|
+
* is declared.
|
|
47
|
+
*
|
|
48
|
+
* Every other named volume is its service's — `<prefix>-<service>-<key>`,
|
|
49
|
+
* whatever its `source` says — so nothing a stack could write gave two
|
|
50
|
+
* containers one volume. The onion needed exactly that: Tor resolved
|
|
51
|
+
* `sample-test-gateway` once, at start, and on 2026-09-26 a deploy gave the
|
|
52
|
+
* gateway's old address to Nominatim; for ~10 minutes the onion served
|
|
53
|
+
* Nominatim's Apache and nobody could sign in. A unix socket on a volume
|
|
54
|
+
* both containers mount has no address to go stale.
|
|
55
|
+
*/
|
|
56
|
+
export const SHARED_VOLUME_PREFIX = 'shared:';
|
|
57
|
+
/** A declared volume as docker mounts it for `service`: shared, bound, or the service's own. */
|
|
58
|
+
function resolveNamedOrBound(service, key, vol) {
|
|
59
|
+
if (typeof vol === 'string')
|
|
60
|
+
return { source: `${getContainerPrefix()}-${service}-${key}`, target: vol };
|
|
61
|
+
const shared = vol.source.startsWith(SHARED_VOLUME_PREFIX) ? vol.source.slice(SHARED_VOLUME_PREFIX.length) : null;
|
|
62
|
+
if (shared !== null && !/^[a-z0-9][a-z0-9_.-]*$/.test(shared)) {
|
|
63
|
+
// Docker would refuse the name anyway; saying which declaration it was is
|
|
64
|
+
// the useful part.
|
|
65
|
+
throw new Error(`Volume "${key}" of ${service}: "${vol.source}" does not name a shared volume (lower-case letters, digits, «_.-»)`);
|
|
66
|
+
}
|
|
67
|
+
const isBindMount = vol.source.startsWith('/') || vol.source.startsWith('.');
|
|
68
|
+
const entry = {
|
|
69
|
+
source: shared !== null
|
|
70
|
+
? `${getContainerPrefix()}-${shared}`
|
|
71
|
+
: isBindMount
|
|
72
|
+
? vol.source
|
|
73
|
+
: `${getContainerPrefix()}-${service}-${key}`,
|
|
74
|
+
target: vol.target,
|
|
75
|
+
};
|
|
76
|
+
if (vol.readonly)
|
|
77
|
+
entry.readonly = vol.readonly;
|
|
78
|
+
return entry;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Where to PUBLISH the gateway, which is not where it listens.
|
|
82
|
+
*
|
|
83
|
+
* After preset expansion `ports` holds CONTAINER ports — openresty's
|
|
84
|
+
* `defaultPorts.http` is 80, because that is what the image listens on — and
|
|
85
|
+
* a port named in the config becomes a HOST mapping under
|
|
86
|
+
* `docker.portMappings`. Reading `ports.http` takes the first for the second,
|
|
87
|
+
* so a stack asking for 8080 gets a gateway published on 80.
|
|
88
|
+
*
|
|
89
|
+
* Measured on the dev stand: `omnitron.config.ts` declares
|
|
90
|
+
* `gateway.ports.http = 8080` and its own comment says ":8080" three times,
|
|
91
|
+
* while `sample-dev-gateway` published `80/tcp -> 0.0.0.0:80`. The consequence
|
|
92
|
+
* is quiet rather than loud — a browser arriving on :80 sends
|
|
93
|
+
* `Origin: http://localhost` with no port, which is not in the gateway's
|
|
94
|
+
* allow-list, so the portal cannot call the API through it at all. The portal
|
|
95
|
+
* is reachable on 7080, so nothing complained.
|
|
96
|
+
*
|
|
97
|
+
* `resolveServiceRequirement` has read it correctly all along:
|
|
98
|
+
* `host: docker.portMappings?.[name] ?? containerPort`. Same expression here,
|
|
99
|
+
* because it is the same question — and a port the preset does not declare
|
|
100
|
+
* really is a container port, which is why the fallback is not a mistake.
|
|
101
|
+
*/
|
|
102
|
+
export function gatewayHostPort(service, legacy) {
|
|
103
|
+
return service?.docker?.portMappings?.['http'] ?? service?.ports?.['http'] ?? legacy?.port ?? 8080;
|
|
29
104
|
}
|
|
30
105
|
function containerName(service) {
|
|
31
|
-
return `${
|
|
106
|
+
return `${getContainerPrefix()}-${service}`;
|
|
32
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* How one managed container reaches another.
|
|
110
|
+
*
|
|
111
|
+
* Every container omnitron provisions joins the stack's named network, and
|
|
112
|
+
* the network exists so they can address each other by name — the comment on
|
|
113
|
+
* `networkName` below says exactly that. The gateway did not: it was given
|
|
114
|
+
* `host.docker.internal` and the HOST-published port, and went out to the
|
|
115
|
+
* host and back.
|
|
116
|
+
*
|
|
117
|
+
* That works on a developer's Mac, where `host.docker.internal` reaches the
|
|
118
|
+
* host's loopback. It cannot work on a Linux node, where `host-gateway`
|
|
119
|
+
* resolves to the docker0 bridge address and omnitron publishes every managed
|
|
120
|
+
* port on `127.0.0.1` — deliberately, so a container is not reachable from
|
|
121
|
+
* the LAN. Measured on the test node: the gateway sat on 172.19.0.2, redis on
|
|
122
|
+
* 172.19.0.4 of the same network, and every request the gateway served spent
|
|
123
|
+
* 200ms on `lua tcp socket connect timed out, upstream: 172.17.0.1:6379`
|
|
124
|
+
* before failing open. The hardening that bound the ports closed this path,
|
|
125
|
+
* and the only evidence was a warning nobody was reading.
|
|
126
|
+
*
|
|
127
|
+
* The port is the CONTAINER port for the same reason the host is a container
|
|
128
|
+
* name: a stack whose redis is published on 6380 still listens on 6379
|
|
129
|
+
* inside. Host and port are one decision and are answered here together,
|
|
130
|
+
* because answering half of it is how a correct name ends up on the wrong
|
|
131
|
+
* port.
|
|
132
|
+
*/
|
|
133
|
+
export function containerEndpoint(service, containerPort) {
|
|
134
|
+
return { host: containerName(service), port: containerPort };
|
|
135
|
+
}
|
|
136
|
+
/** Redis, as a container on the stack network sees it. */
|
|
137
|
+
export const REDIS_CONTAINER_PORT = 6379;
|
|
33
138
|
/**
|
|
34
139
|
* Convention-derived managed network name.
|
|
35
140
|
*
|
|
@@ -55,7 +160,7 @@ function containerName(service) {
|
|
|
55
160
|
* adjacent infrastructure.
|
|
56
161
|
*/
|
|
57
162
|
export function getManagedNetwork() {
|
|
58
|
-
return `${
|
|
163
|
+
return `${getContainerPrefix()}_default`;
|
|
59
164
|
}
|
|
60
165
|
/**
|
|
61
166
|
* Stamp the managed network onto a container spec when it doesn't already
|
|
@@ -65,6 +170,32 @@ export function getManagedNetwork() {
|
|
|
65
170
|
export function applyManagedDefaults(spec) {
|
|
66
171
|
if (spec.network === undefined)
|
|
67
172
|
spec.network = getManagedNetwork();
|
|
173
|
+
// Published ports bind to loopback unless a container asks otherwise.
|
|
174
|
+
//
|
|
175
|
+
// Docker's default is every interface, and Docker's iptables rules are
|
|
176
|
+
// inserted ahead of ufw's — so a published port is reachable from the
|
|
177
|
+
// internet no matter what the host firewall says. Measured on the test
|
|
178
|
+
// server, whose ufw allows 22/tcp and nothing else:
|
|
179
|
+
//
|
|
180
|
+
// nc -vz 37.27.130.185 9700 → timed out (ufw, as configured)
|
|
181
|
+
// nc -vz 37.27.130.185 5480 → OPEN (docker, straight past it)
|
|
182
|
+
//
|
|
183
|
+
// 5480 is omnitron's own Postgres. An operator who reads their firewall
|
|
184
|
+
// rules and concludes the database is private is reading a control that
|
|
185
|
+
// does not cover it, which is the worst kind of wrong: a check that
|
|
186
|
+
// answers confidently about something it cannot see.
|
|
187
|
+
//
|
|
188
|
+
// The applications that use these containers run on the same host and
|
|
189
|
+
// reach them over loopback. Anything further away comes through
|
|
190
|
+
// omnitron's own transport, which is authenticated. So the default costs
|
|
191
|
+
// nothing and the exposure had no beneficiary.
|
|
192
|
+
//
|
|
193
|
+
// A container that genuinely must be reachable says so by setting
|
|
194
|
+
// `bindHost` — a deliberate line in a config, reviewable in a diff.
|
|
195
|
+
for (const port of spec.ports ?? []) {
|
|
196
|
+
if (port.bindHost === undefined)
|
|
197
|
+
port.bindHost = '127.0.0.1';
|
|
198
|
+
}
|
|
68
199
|
return spec;
|
|
69
200
|
}
|
|
70
201
|
/**
|
|
@@ -75,20 +206,29 @@ export function applyManagedDefaults(spec) {
|
|
|
75
206
|
let STACK_LABELS = {};
|
|
76
207
|
/** Set stack labels for subsequent container creation calls */
|
|
77
208
|
export function setStackLabels(project, stack) {
|
|
78
|
-
|
|
209
|
+
const labels = {
|
|
79
210
|
'omnitron.project': project,
|
|
80
211
|
'omnitron.stack': stack,
|
|
81
212
|
// Docker Desktop groups containers by com.docker.compose.project label
|
|
82
213
|
'com.docker.compose.project': `omnitron-${project}-${stack}`,
|
|
83
214
|
};
|
|
215
|
+
const scope = infrastructureScopes.getStore();
|
|
216
|
+
if (scope)
|
|
217
|
+
scope.labels = labels;
|
|
218
|
+
else
|
|
219
|
+
STACK_LABELS = labels;
|
|
84
220
|
}
|
|
85
221
|
/** Clear stack labels (for internal/global containers) */
|
|
86
222
|
export function clearStackLabels() {
|
|
87
|
-
|
|
223
|
+
const scope = infrastructureScopes.getStore();
|
|
224
|
+
if (scope)
|
|
225
|
+
scope.labels = {};
|
|
226
|
+
else
|
|
227
|
+
STACK_LABELS = {};
|
|
88
228
|
}
|
|
89
229
|
/** Get current stack labels */
|
|
90
230
|
function stackLabels() {
|
|
91
|
-
return { ...STACK_LABELS };
|
|
231
|
+
return { ...(infrastructureScopes.getStore()?.labels ?? STACK_LABELS) };
|
|
92
232
|
}
|
|
93
233
|
// =============================================================================
|
|
94
234
|
// Service Requirement → ResolvedContainer (generic resolver for ALL services)
|
|
@@ -102,47 +242,111 @@ function stackLabels() {
|
|
|
102
242
|
* - Service is disabled by stack override
|
|
103
243
|
* - Stack override provides an external address
|
|
104
244
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
245
|
+
/**
|
|
246
|
+
* An HTTP probe that works in the image it runs in.
|
|
247
|
+
*
|
|
248
|
+
* `curl -sf` was the generic form, and alpine-based images do not ship curl.
|
|
249
|
+
* Measured on the gateway: `/bin/sh: curl: not found`, exit 1, every ten
|
|
250
|
+
* seconds forever — a container serving traffic correctly (the onion in
|
|
251
|
+
* front of it answered 200) reported `unhealthy` for its whole life, and
|
|
252
|
+
* `provisionStack` reported the stack NOT ready because of it.
|
|
253
|
+
*
|
|
254
|
+
* The lesson was already learned once in this file: `resolveOmnitronNginx`
|
|
255
|
+
* uses wget with a comment saying curl is not in the image. It was learned
|
|
256
|
+
* for one container and not for the generic path every other service takes.
|
|
257
|
+
*
|
|
258
|
+
* Tries curl, then wget, then falls back to failing. Both spellings, because
|
|
259
|
+
* busybox wget and GNU wget disagree about flags but agree about these:
|
|
260
|
+
* `-q` quiet, `-O -` to stdout, `-T` timeout.
|
|
261
|
+
*/
|
|
262
|
+
/**
|
|
263
|
+
* Which port an HTTP health check should knock on.
|
|
264
|
+
*
|
|
265
|
+
* The probe was `http://localhost<path>` — port 80, always. The gateway
|
|
266
|
+
* listens on 8080, so the check connected to nothing:
|
|
267
|
+
*
|
|
268
|
+
* wget: can't connect to remote host: Connection refused
|
|
269
|
+
*
|
|
270
|
+
* on a container that was serving correctly on its own port, through an
|
|
271
|
+
* onion address that answered 200. Every service whose port is not 80 had
|
|
272
|
+
* an unanswerable health check, and an unanswerable check is a permanent
|
|
273
|
+
* negative — `provisionStack` reported the stack not ready because of it.
|
|
274
|
+
*
|
|
275
|
+
* A check may name its port, as the jsonrpc one already does. Otherwise the
|
|
276
|
+
* service's own: `http` by convention, then whatever single port it
|
|
277
|
+
* declares — a service with one port cannot mean another.
|
|
278
|
+
*/
|
|
279
|
+
function healthPort(check, ports) {
|
|
280
|
+
const named = check.port;
|
|
281
|
+
if (named && ports?.[named])
|
|
282
|
+
return ports[named];
|
|
283
|
+
if (ports?.['http'])
|
|
284
|
+
return ports['http'];
|
|
285
|
+
const declared = Object.values(ports ?? {});
|
|
286
|
+
if (declared.length === 1)
|
|
287
|
+
return declared[0];
|
|
288
|
+
// Several ports and no way to choose: 80 is the convention, and saying so
|
|
289
|
+
// here is better than an arbitrary pick that happens to work once.
|
|
290
|
+
return 80;
|
|
291
|
+
}
|
|
292
|
+
function httpProbe(url) {
|
|
293
|
+
return (`curl -sf --max-time 5 ${url} >/dev/null 2>&1 ` +
|
|
294
|
+
`|| wget -q -O /dev/null -T 5 ${url} >/dev/null 2>&1 ` +
|
|
295
|
+
'|| exit 1');
|
|
296
|
+
}
|
|
297
|
+
export function resolveServiceRequirement(serviceName, requirement, override, appName,
|
|
298
|
+
/** Where each service's shipped config directory is on THIS machine — see `shipped-config.ts`. */
|
|
299
|
+
configRoots) {
|
|
300
|
+
// A container only for a service this stack runs as one — not one it
|
|
301
|
+
// disables, reaches elsewhere, or runs on the node as a system service
|
|
302
|
+
// (`bindService`).
|
|
303
|
+
const binding = bindService(requirement, override);
|
|
304
|
+
if (binding.provisioning !== 'docker')
|
|
110
305
|
return null;
|
|
111
306
|
const baseDocker = requirement.docker;
|
|
112
307
|
if (!baseDocker)
|
|
113
|
-
return null;
|
|
308
|
+
return null;
|
|
114
309
|
// Deep-merge: base → networkMode variant → stack override
|
|
115
310
|
let docker = { ...baseDocker };
|
|
116
|
-
|
|
117
|
-
|
|
311
|
+
// The stack's answer first: an application declares the network that is
|
|
312
|
+
// right on a laptop, and a stack is the scope that knows when it is not.
|
|
313
|
+
const networkMode = override?.networkMode ?? requirement.networkMode;
|
|
314
|
+
if (networkMode && baseDocker.variants?.[networkMode]) {
|
|
315
|
+
docker = deepMergeDocker(docker, baseDocker.variants[networkMode]);
|
|
118
316
|
}
|
|
119
317
|
if (override?.docker) {
|
|
120
318
|
docker = deepMergeDocker(docker, override.docker);
|
|
121
319
|
}
|
|
122
320
|
// Resolve image
|
|
123
321
|
const image = docker.image ?? docker.build?.tag ?? `${serviceName}:latest`;
|
|
124
|
-
//
|
|
125
|
-
|
|
322
|
+
// The ports the service listens on in this stack's network are the
|
|
323
|
+
// container's (`bindService`); `docker.portMappings` says where each is published.
|
|
324
|
+
const ports = Object.entries(binding.ports).map(([name, containerPort]) => ({
|
|
126
325
|
host: docker.portMappings?.[name] ?? containerPort,
|
|
127
326
|
container: containerPort,
|
|
128
327
|
}));
|
|
129
328
|
// Resolve volumes
|
|
329
|
+
const shippedRoots = new Set();
|
|
130
330
|
const volumes = Object.entries(docker.volumes ?? {}).map(([name, vol]) => {
|
|
131
|
-
if (typeof vol
|
|
132
|
-
|
|
331
|
+
if (typeof vol !== 'string' && vol.source.startsWith(CONFIG_ROOT_PREFIX)) {
|
|
332
|
+
// The node's copy of a directory the master shipped. Unresolved — no
|
|
333
|
+
// copy arrived — it stays as it is, and docker refuses it by name.
|
|
334
|
+
const local = shippedMountPath(vol.source, configRoots);
|
|
335
|
+
if (local)
|
|
336
|
+
shippedRoots.add(local.root);
|
|
337
|
+
const entry = {
|
|
338
|
+
source: local?.path ?? vol.source,
|
|
339
|
+
target: vol.target,
|
|
340
|
+
};
|
|
341
|
+
if (vol.readonly)
|
|
342
|
+
entry.readonly = vol.readonly;
|
|
343
|
+
return entry;
|
|
133
344
|
}
|
|
134
|
-
|
|
135
|
-
const entry = {
|
|
136
|
-
source: isBindMount ? vol.source : `${CONTAINER_PREFIX}-${serviceName}-${name}`,
|
|
137
|
-
target: vol.target,
|
|
138
|
-
};
|
|
139
|
-
if (vol.readonly)
|
|
140
|
-
entry.readonly = vol.readonly;
|
|
141
|
-
return entry;
|
|
345
|
+
return resolveNamedOrBound(serviceName, name, vol);
|
|
142
346
|
});
|
|
143
347
|
// Convert IServiceHealthCheck → ContainerHealthCheck
|
|
144
|
-
const healthCheck = docker.healthCheck ?? convertHealthCheck(requirement.healthCheck,
|
|
145
|
-
|
|
348
|
+
const healthCheck = docker.healthCheck ?? convertHealthCheck(requirement.healthCheck, binding.ports);
|
|
349
|
+
const spec = applyManagedDefaults({
|
|
146
350
|
name: containerName(serviceName),
|
|
147
351
|
image,
|
|
148
352
|
ports,
|
|
@@ -170,12 +374,25 @@ export function resolveServiceRequirement(serviceName, requirement, override, ap
|
|
|
170
374
|
// stamps in the project-wide bridge.
|
|
171
375
|
...(typeof docker.network === 'string' ? { network: docker.network } : {}),
|
|
172
376
|
});
|
|
377
|
+
// The content of what it mounts from shipped directories, so a changed
|
|
378
|
+
// script recreates the container — the same reason as the gateway's.
|
|
379
|
+
for (const root of shippedRoots) {
|
|
380
|
+
const digest = mountedConfigDigest(root, spec.volumes);
|
|
381
|
+
if (digest)
|
|
382
|
+
spec.configDigest = spec.configDigest
|
|
383
|
+
? configFilesHash([
|
|
384
|
+
{ path: 'a', content: spec.configDigest, mode: '644' },
|
|
385
|
+
{ path: 'b', content: digest, mode: '644' },
|
|
386
|
+
])
|
|
387
|
+
: digest;
|
|
388
|
+
}
|
|
389
|
+
return spec;
|
|
173
390
|
}
|
|
174
391
|
/**
|
|
175
392
|
* Resolve all app-declared infrastructure services into ResolvedContainer[].
|
|
176
393
|
* Respects dependsOn ordering — dependencies come first.
|
|
177
394
|
*/
|
|
178
|
-
export function resolveAppInfrastructure(infrastructure, overrides, appName) {
|
|
395
|
+
export function resolveAppInfrastructure(infrastructure, overrides, appName, configRoots) {
|
|
179
396
|
const containers = [];
|
|
180
397
|
const resolved = new Set();
|
|
181
398
|
const pending = new Map(Object.entries(infrastructure));
|
|
@@ -191,7 +408,7 @@ export function resolveAppInfrastructure(infrastructure, overrides, appName) {
|
|
|
191
408
|
resolve(dep, depReq);
|
|
192
409
|
}
|
|
193
410
|
const override = overrides?.[`${appName}/${name}`] ?? overrides?.[name];
|
|
194
|
-
const container = resolveServiceRequirement(name, req, override, appName);
|
|
411
|
+
const container = resolveServiceRequirement(name, req, override, appName, configRoots);
|
|
195
412
|
if (container)
|
|
196
413
|
containers.push(container);
|
|
197
414
|
};
|
|
@@ -204,45 +421,57 @@ export function resolveAppInfrastructure(infrastructure, overrides, appName) {
|
|
|
204
421
|
function convertHealthCheck(check, ports) {
|
|
205
422
|
if (!check)
|
|
206
423
|
return undefined;
|
|
207
|
-
|
|
424
|
+
// One helper per default, not one helper for every duration field. A
|
|
425
|
+
// single `(s) => s ?? '30s'` used to serve all three, which gave `timeout`
|
|
426
|
+
// the interval's default: probes ran with a 30s deadline where the type
|
|
427
|
+
// and the documentation both promise 10s, so an unresponsive service was
|
|
428
|
+
// marked unhealthy up to three times later than stated — and with the
|
|
429
|
+
// deadline equal to the gap between probes, they can overlap.
|
|
430
|
+
const everyDefault = (s) => s ?? '30s';
|
|
431
|
+
const deadlineDefault = (s) => s ?? '10s';
|
|
208
432
|
switch (check.type) {
|
|
209
433
|
case 'command':
|
|
210
434
|
return {
|
|
211
435
|
test: ['CMD-SHELL', check.target],
|
|
212
|
-
interval:
|
|
213
|
-
timeout:
|
|
436
|
+
interval: everyDefault(check.interval),
|
|
437
|
+
timeout: deadlineDefault(check.timeout),
|
|
214
438
|
retries: check.retries ?? 5,
|
|
215
|
-
startPeriod:
|
|
439
|
+
startPeriod: everyDefault(check.startPeriod),
|
|
216
440
|
};
|
|
217
441
|
case 'tcp':
|
|
218
442
|
return {
|
|
219
443
|
test: ['CMD-SHELL', `nc -z localhost ${check.target} || exit 1`],
|
|
220
|
-
interval:
|
|
221
|
-
timeout:
|
|
444
|
+
interval: everyDefault(check.interval),
|
|
445
|
+
timeout: deadlineDefault(check.timeout),
|
|
222
446
|
retries: check.retries ?? 5,
|
|
223
|
-
startPeriod:
|
|
447
|
+
startPeriod: everyDefault(check.startPeriod),
|
|
224
448
|
};
|
|
225
449
|
case 'http':
|
|
226
450
|
return {
|
|
227
|
-
test: ['CMD-SHELL', `
|
|
228
|
-
interval:
|
|
229
|
-
timeout:
|
|
451
|
+
test: ['CMD-SHELL', httpProbe(`http://localhost:${healthPort(check, ports)}${check.target}`)],
|
|
452
|
+
interval: everyDefault(check.interval),
|
|
453
|
+
timeout: deadlineDefault(check.timeout),
|
|
230
454
|
retries: check.retries ?? 5,
|
|
231
|
-
startPeriod:
|
|
455
|
+
startPeriod: everyDefault(check.startPeriod),
|
|
232
456
|
};
|
|
233
457
|
case 'jsonrpc': {
|
|
234
458
|
const portName = check.jsonrpc?.port ?? 'rpc';
|
|
235
459
|
const port = ports?.[portName] ?? portName;
|
|
236
460
|
const method = check.jsonrpc?.method ?? check.target;
|
|
237
461
|
const auth = check.jsonrpc?.auth;
|
|
238
|
-
const authStr = auth
|
|
462
|
+
const authStr = auth && auth.type !== 'cookie'
|
|
463
|
+
? `-u ${auth.user}:${auth.password} ${auth.type === 'digest' ? '--digest' : ''}`
|
|
464
|
+
: '';
|
|
239
465
|
const rpcPath = check.jsonrpc?.path ?? '/json_rpc';
|
|
240
466
|
return {
|
|
241
|
-
test: [
|
|
242
|
-
|
|
243
|
-
|
|
467
|
+
test: [
|
|
468
|
+
'CMD-SHELL',
|
|
469
|
+
`curl -sf ${authStr} -X POST http://localhost:${port}${rpcPath} -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"health","method":"${method}"}' || exit 1`,
|
|
470
|
+
],
|
|
471
|
+
interval: everyDefault(check.interval),
|
|
472
|
+
timeout: deadlineDefault(check.timeout),
|
|
244
473
|
retries: check.retries ?? 5,
|
|
245
|
-
startPeriod:
|
|
474
|
+
startPeriod: everyDefault(check.startPeriod),
|
|
246
475
|
};
|
|
247
476
|
}
|
|
248
477
|
default:
|
|
@@ -261,8 +490,11 @@ function deepMergeDocker(base, overlay) {
|
|
|
261
490
|
if (base.labels || overlay.labels) {
|
|
262
491
|
merged.labels = { ...base.labels, ...overlay.labels };
|
|
263
492
|
}
|
|
264
|
-
|
|
265
|
-
|
|
493
|
+
// By key, like the environment: an overlay that adds a volume keeps the
|
|
494
|
+
// base's. Replaced wholesale, a stack that gave Tor one more mount would
|
|
495
|
+
// have taken away `/var/lib/tor` — its onion keys, and with them its address.
|
|
496
|
+
if (base.volumes || overlay.volumes) {
|
|
497
|
+
merged.volumes = { ...base.volumes, ...overlay.volumes };
|
|
266
498
|
}
|
|
267
499
|
if (overlay.resources === undefined && base.resources) {
|
|
268
500
|
merged.resources = base.resources;
|
|
@@ -283,7 +515,7 @@ export function resolveOmnitronPg(options) {
|
|
|
283
515
|
const user = options?.user ?? 'omnitron';
|
|
284
516
|
const password = options?.password ?? 'omnitron';
|
|
285
517
|
return applyManagedDefaults({
|
|
286
|
-
name: `${
|
|
518
|
+
name: `${getContainerPrefix()}-pg`,
|
|
287
519
|
image,
|
|
288
520
|
ports: [{ host: port, container: 5432 }],
|
|
289
521
|
environment: {
|
|
@@ -291,15 +523,17 @@ export function resolveOmnitronPg(options) {
|
|
|
291
523
|
POSTGRES_PASSWORD: password,
|
|
292
524
|
POSTGRES_DB: 'omnitron',
|
|
293
525
|
},
|
|
294
|
-
volumes: [
|
|
295
|
-
{ source: `${CONTAINER_PREFIX}-pg-data`, target: '/var/lib/postgresql/data' },
|
|
296
|
-
],
|
|
526
|
+
volumes: [{ source: `${getContainerPrefix()}-pg-data`, target: '/var/lib/postgresql/data' }],
|
|
297
527
|
command: [
|
|
298
528
|
'postgres',
|
|
299
|
-
'-c',
|
|
300
|
-
'
|
|
301
|
-
'-c',
|
|
302
|
-
'
|
|
529
|
+
'-c',
|
|
530
|
+
'max_connections=50',
|
|
531
|
+
'-c',
|
|
532
|
+
'shared_buffers=64MB',
|
|
533
|
+
'-c',
|
|
534
|
+
'log_statement=none',
|
|
535
|
+
'-c',
|
|
536
|
+
'log_min_duration_statement=500',
|
|
303
537
|
],
|
|
304
538
|
healthCheck: {
|
|
305
539
|
test: ['CMD-SHELL', `pg_isready -U ${user} -d omnitron`],
|
|
@@ -327,6 +561,59 @@ export function resolveOmnitronPg(options) {
|
|
|
327
561
|
*
|
|
328
562
|
* Port 9800 (public) → nginx → port 9801 (internal daemon HTTP)
|
|
329
563
|
*/
|
|
564
|
+
/**
|
|
565
|
+
* A digest of every file a container mounts from under `root`.
|
|
566
|
+
*
|
|
567
|
+
* `configFilesHash` was written for this — its docblock says it is «folded
|
|
568
|
+
* into the container's spec hash by the caller, so a changed template
|
|
569
|
+
* recreates the container» — and had no caller. So a node wrote each new
|
|
570
|
+
* nginx.conf over the old one and kept serving the old one: the gateway
|
|
571
|
+
* renders its template once, at start, and a reconcile that compares volume
|
|
572
|
+
* PATHS saw nothing to do. The test gateway was recreated only when its
|
|
573
|
+
* static bundle changed, which carried the config along by accident.
|
|
574
|
+
*
|
|
575
|
+
* Taken from the volumes themselves rather than a list of file names, so a
|
|
576
|
+
* mount added later is covered without anyone remembering this function.
|
|
577
|
+
* Read from disk on the machine that will run the container: on a node that
|
|
578
|
+
* is the copy just written from the master's payload, on a master the
|
|
579
|
+
* project's own files. Synchronous, because the resolver is — and small: the
|
|
580
|
+
* sample gateway's files are 65 KB, read once per provision.
|
|
581
|
+
*
|
|
582
|
+
* `undefined` when there is nothing under `root` to read, or it cannot be
|
|
583
|
+
* read — the spec hash then stays what it was without this.
|
|
584
|
+
*/
|
|
585
|
+
export function mountedConfigDigest(root, volumes) {
|
|
586
|
+
const prefix = root.endsWith('/') ? root : `${root}/`;
|
|
587
|
+
const files = [];
|
|
588
|
+
const visit = (abs) => {
|
|
589
|
+
const stat = fs.statSync(abs);
|
|
590
|
+
if (stat.isDirectory()) {
|
|
591
|
+
for (const name of fs.readdirSync(abs).sort())
|
|
592
|
+
visit(`${abs}/${name}`);
|
|
593
|
+
}
|
|
594
|
+
else if (stat.isFile()) {
|
|
595
|
+
// latin1 maps bytes to code units one to one, so the digest sees the
|
|
596
|
+
// bytes the container will, text or not.
|
|
597
|
+
files.push({
|
|
598
|
+
path: abs.slice(prefix.length),
|
|
599
|
+
content: fs.readFileSync(abs, 'latin1'),
|
|
600
|
+
mode: (stat.mode & 0o777).toString(8),
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
};
|
|
604
|
+
try {
|
|
605
|
+
for (const v of volumes) {
|
|
606
|
+
// The root itself too: a service may mount its whole shipped directory
|
|
607
|
+
// (`shipped-config.ts`), where the gateway mounts files inside it.
|
|
608
|
+
if (v.source === root || v.source.startsWith(prefix))
|
|
609
|
+
visit(v.source);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
catch {
|
|
613
|
+
return undefined;
|
|
614
|
+
}
|
|
615
|
+
return files.length > 0 ? configFilesHash(files) : undefined;
|
|
616
|
+
}
|
|
330
617
|
/**
|
|
331
618
|
* Resolve API gateway container (OpenResty + Lua).
|
|
332
619
|
*
|
|
@@ -337,6 +624,34 @@ export function resolveOmnitronPg(options) {
|
|
|
337
624
|
* @param redisConfig Stack's Redis connection info (host, port, password)
|
|
338
625
|
* @param projectRoot Absolute path to project root (for resolving configDir)
|
|
339
626
|
*/
|
|
627
|
+
/**
|
|
628
|
+
* The gateway's config as the stack declares it: every field `resolveGateway`
|
|
629
|
+
* reads, the preset's block first and the legacy `infrastructure.gateway`
|
|
630
|
+
* after. The stack manager used to hand it two of them — `configDir` and
|
|
631
|
+
* `staticDir` — so `env`, declared on `GatewayServiceConfig` as «passed to the
|
|
632
|
+
* gateway container», reached nothing, and `volumes`, which carries the
|
|
633
|
+
* onion's socket, would have reached nothing either.
|
|
634
|
+
*/
|
|
635
|
+
export function gatewayConfigOf(presetConfig, legacy, port, redisDb) {
|
|
636
|
+
const pick = (key) => presetConfig?.[key] ?? legacy?.[key];
|
|
637
|
+
const staticDir = pick('staticDir');
|
|
638
|
+
const env = pick('env');
|
|
639
|
+
const volumes = pick('volumes');
|
|
640
|
+
return {
|
|
641
|
+
port,
|
|
642
|
+
configDir: pick('configDir') ?? 'infra/nginx',
|
|
643
|
+
redisDb,
|
|
644
|
+
...(staticDir ? { staticDir } : {}),
|
|
645
|
+
...(env ? { env } : {}),
|
|
646
|
+
...(volumes ? { volumes } : {}),
|
|
647
|
+
};
|
|
648
|
+
}
|
|
649
|
+
/** Only the OpenResty preset owns the shipped template contract.
|
|
650
|
+
* A service called "gateway" can declare a completely different container.
|
|
651
|
+
*/
|
|
652
|
+
export function usesGatewayTemplate(service) {
|
|
653
|
+
return service?._preset === 'openresty';
|
|
654
|
+
}
|
|
340
655
|
export function resolveGateway(config, redisConfig, projectRoot) {
|
|
341
656
|
const image = config.image ?? 'openresty/openresty:alpine';
|
|
342
657
|
const port = config.port ?? 8080;
|
|
@@ -345,15 +660,56 @@ export function resolveGateway(config, redisConfig, projectRoot) {
|
|
|
345
660
|
// Resolve absolute path to config directory
|
|
346
661
|
// Use join via string concatenation (ESM-safe, avoids sync require)
|
|
347
662
|
const absConfigDir = projectRoot.endsWith('/') ? projectRoot + configDir : projectRoot + '/' + configDir;
|
|
663
|
+
// The frontend, if this stack serves one. Absolute already means "a path on
|
|
664
|
+
// the machine that will run this", which is how a node names its own copy;
|
|
665
|
+
// a relative path is resolved against the project, like the config is.
|
|
666
|
+
const staticDir = config.staticDir;
|
|
667
|
+
const absStaticDir = !staticDir
|
|
668
|
+
? null
|
|
669
|
+
: staticDir.startsWith('/')
|
|
670
|
+
? staticDir
|
|
671
|
+
: `${projectRoot.replace(/\/$/, '')}/${staticDir.replace(/^\.\//, '')}`;
|
|
672
|
+
/**
|
|
673
|
+
* Mount the ROOT and serve through the link, when the node sent one.
|
|
674
|
+
*
|
|
675
|
+
* The build directory's path changes with every release, and it is the ONLY
|
|
676
|
+
* field of this spec that does — `mountedConfigDigest` is rooted at the
|
|
677
|
+
* config directory and the node's config root
|
|
678
|
+
* (`~/.omnitron/stack-config/<project>/<stack>/<service>`) is stable. So the
|
|
679
|
+
* container was recreated for every deployment, and that cost **1 s of 000**
|
|
680
|
+
* on the gateway, measured on release 4 (81 s of deploy). Mounting the root
|
|
681
|
+
* instead makes the mount a constant, and the swap of
|
|
682
|
+
* `current-<project>-<stack>` inside it is what changes — atomically, with
|
|
683
|
+
* `rename(2)`, picked up with no reload because nginx resolves `root` per
|
|
684
|
+
* request and this config sets no `open_file_cache`.
|
|
685
|
+
*
|
|
686
|
+
* Only when the node says so. On a master `staticDir` is a path inside the
|
|
687
|
+
* project — sample declares `apps/portal/dist` — and mounting ITS parent would
|
|
688
|
+
* put `src/`, `node_modules` and `vite.config.ts` under the web root, while
|
|
689
|
+
* `current-…` would not exist there at all and the entrypoint would fall
|
|
690
|
+
* back to proxying a Vite that is not running.
|
|
691
|
+
*/
|
|
692
|
+
const linkRoot = config.staticLinkRoot;
|
|
693
|
+
const linkName = config.staticLinkName;
|
|
694
|
+
const servesThroughLink = Boolean(linkRoot && linkName);
|
|
695
|
+
const portalMount = servesThroughLink ? linkRoot : absStaticDir;
|
|
696
|
+
const portalRoot = servesThroughLink ? `/var/www/portal/${linkName}` : '/var/www/portal';
|
|
348
697
|
// Default upstream host — host.docker.internal for Docker, overridable for bare-metal/cluster
|
|
349
698
|
const upstreamHost = 'host.docker.internal';
|
|
350
|
-
|
|
699
|
+
const spec = applyManagedDefaults({
|
|
351
700
|
name: containerName('gateway'),
|
|
352
701
|
image,
|
|
353
702
|
ports: [{ host: port, container: 80 }],
|
|
354
703
|
environment: {
|
|
355
|
-
// Redis for maintenance mode + future PoW/rate-limit state
|
|
356
|
-
|
|
704
|
+
// Redis for maintenance mode + future PoW/rate-limit state.
|
|
705
|
+
//
|
|
706
|
+
// `redisConfig.host`, not a literal: this took the host as a parameter
|
|
707
|
+
// alongside the port, the db and the password, and then ignored that
|
|
708
|
+
// one field. Three of the four came from the caller and the fourth was
|
|
709
|
+
// hard-coded to the developer's machine, which is why nothing in the
|
|
710
|
+
// signature hinted that the gateway could not reach its Redis anywhere
|
|
711
|
+
// else.
|
|
712
|
+
REDIS_HOST: redisConfig.host,
|
|
357
713
|
REDIS_PORT: String(redisConfig.port),
|
|
358
714
|
REDIS_DB: String(redisDb),
|
|
359
715
|
...(redisConfig.password ? { REDIS_PASSWORD: redisConfig.password } : {}),
|
|
@@ -362,14 +718,24 @@ export function resolveGateway(config, redisConfig, projectRoot) {
|
|
|
362
718
|
UPSTREAM_MAIN_PORT: '3001',
|
|
363
719
|
UPSTREAM_STORAGE_HOST: upstreamHost,
|
|
364
720
|
UPSTREAM_STORAGE_PORT: '3002',
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
721
|
+
UPSTREAM_PRICING_HOST: upstreamHost,
|
|
722
|
+
UPSTREAM_PRICING_PORT: '3003',
|
|
723
|
+
UPSTREAM_PAYMENTS_HOST: upstreamHost,
|
|
724
|
+
UPSTREAM_PAYMENTS_PORT: '3004',
|
|
369
725
|
UPSTREAM_MESSAGING_HOST: upstreamHost,
|
|
370
726
|
UPSTREAM_MESSAGING_PORT: '3005',
|
|
371
727
|
UPSTREAM_MESSAGING_WS_HOST: upstreamHost,
|
|
372
728
|
UPSTREAM_MESSAGING_WS_PORT: '3006',
|
|
729
|
+
UPSTREAM_GEO_HOST: upstreamHost,
|
|
730
|
+
UPSTREAM_GEO_PORT: '3007',
|
|
731
|
+
// Where the entrypoint serves `/` from. `/var/www/portal` unless the
|
|
732
|
+
// node mounted the root, in which case the link inside it — so the
|
|
733
|
+
// gateway is pointed at a new build by a symlink swap and not by a new
|
|
734
|
+
// container.
|
|
735
|
+
PORTAL_ROOT: portalRoot,
|
|
736
|
+
// User-supplied env overrides/additions (e.g. PORTAL_DEV_UPSTREAM). Merged
|
|
737
|
+
// last so config can override a preset default when intended.
|
|
738
|
+
...(config.env ?? {}),
|
|
373
739
|
},
|
|
374
740
|
volumes: [
|
|
375
741
|
// nginx.conf template — rendered by entrypoint via envsubst
|
|
@@ -380,10 +746,20 @@ export function resolveGateway(config, redisConfig, projectRoot) {
|
|
|
380
746
|
{ source: `${absConfigDir}/lua`, target: '/etc/nginx/lua', readonly: true },
|
|
381
747
|
// Maintenance mode HTML page
|
|
382
748
|
{ source: `${absConfigDir}/maintenance.html`, target: '/etc/nginx/html/maintenance.html', readonly: true },
|
|
749
|
+
// The built frontend, when the stack declares one. `/var/www/portal` is
|
|
750
|
+
// the path nginx.conf serves `/` from whenever `PORTAL_DEV_UPSTREAM` is
|
|
751
|
+
// unset, which is every deployment that has no Vite beside it.
|
|
752
|
+
...(portalMount ? [{ source: portalMount, target: '/var/www/portal', readonly: true }] : []),
|
|
753
|
+
// What the stack adds — the onion's unix socket above all, on a
|
|
754
|
+
// `shared:` volume the Tor container mounts too.
|
|
755
|
+
...Object.entries(config.volumes ?? {}).map(([key, vol]) => resolveNamedOrBound('gateway', key, vol)),
|
|
383
756
|
],
|
|
384
757
|
entrypoint: ['/bin/sh', '/docker-entrypoint.sh'],
|
|
385
758
|
healthCheck: {
|
|
386
|
-
test: [
|
|
759
|
+
test: [
|
|
760
|
+
'CMD-SHELL',
|
|
761
|
+
'[ -S /usr/local/openresty/nginx/logs/nginx.pid ] || kill -0 $(cat /usr/local/openresty/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null || exit 1',
|
|
762
|
+
],
|
|
387
763
|
interval: '10s',
|
|
388
764
|
timeout: '5s',
|
|
389
765
|
retries: 3,
|
|
@@ -397,7 +773,11 @@ export function resolveGateway(config, redisConfig, projectRoot) {
|
|
|
397
773
|
restart: 'unless-stopped',
|
|
398
774
|
extraHosts: ['host.docker.internal:host-gateway'],
|
|
399
775
|
resources: config.resources,
|
|
400
|
-
};
|
|
776
|
+
});
|
|
777
|
+
const configDigest = mountedConfigDigest(absConfigDir, spec.volumes);
|
|
778
|
+
if (configDigest)
|
|
779
|
+
spec.configDigest = configDigest;
|
|
780
|
+
return spec;
|
|
401
781
|
}
|
|
402
782
|
// =============================================================================
|
|
403
783
|
// Omnitron Admin Console (separate from API gateway)
|
|
@@ -416,9 +796,9 @@ export function resolveOmnitronNginx(options) {
|
|
|
416
796
|
volumes.push({ source: webappDist, target: '/usr/share/nginx/html', readonly: true });
|
|
417
797
|
}
|
|
418
798
|
return applyManagedDefaults({
|
|
419
|
-
name: `${
|
|
799
|
+
name: `${getContainerPrefix()}-nginx`,
|
|
420
800
|
image,
|
|
421
|
-
ports: [{ host: port, container: 80 }],
|
|
801
|
+
ports: [{ host: port, container: 80, bindHost: options?.bindHost ?? '127.0.0.1' }],
|
|
422
802
|
environment: {
|
|
423
803
|
OMNITRON_API_HOST: 'host.docker.internal',
|
|
424
804
|
OMNITRON_API_PORT: String(internalPort),
|
|
@@ -431,8 +811,13 @@ export function resolveOmnitronNginx(options) {
|
|
|
431
811
|
// base image, so the previous CMD-SHELL test was permanently
|
|
432
812
|
// unhealthy on a vanilla alpine nginx until someone bind-mounted curl
|
|
433
813
|
// in. wget is always present.
|
|
814
|
+
//
|
|
815
|
+
// Probe 127.0.0.1 (not `localhost`): musl resolves `localhost` to ::1
|
|
816
|
+
// first, but nginx only `listen 80;` on IPv4, so an IPv6 probe gets
|
|
817
|
+
// ECONNREFUSED and the container is reported permanently unhealthy even
|
|
818
|
+
// though the console is serving fine over IPv4.
|
|
434
819
|
healthCheck: {
|
|
435
|
-
test: ['CMD-SHELL', 'wget -q --spider http://
|
|
820
|
+
test: ['CMD-SHELL', 'wget -q --spider http://127.0.0.1/ || exit 1'],
|
|
436
821
|
interval: '10s',
|
|
437
822
|
timeout: '5s',
|
|
438
823
|
retries: 3,
|
|
@@ -461,10 +846,78 @@ export function resolveOmnitronNginx(options) {
|
|
|
461
846
|
* Resolve an InfrastructureConfig into concrete container specs.
|
|
462
847
|
* Uses preset-normalized services map — all services go through resolveServiceRequirement().
|
|
463
848
|
*/
|
|
464
|
-
export function resolveInfrastructure(_config, normalizedServices
|
|
849
|
+
export function resolveInfrastructure(_config, normalizedServices,
|
|
850
|
+
/**
|
|
851
|
+
* Stack overrides — `disabled`, `external`, per-service docker changes.
|
|
852
|
+
*
|
|
853
|
+
* This did not take them, and `resolveAppInfrastructure` was called
|
|
854
|
+
* without them, so `serviceOverrides` was honoured for services an
|
|
855
|
+
* APPLICATION declares and read by nothing for the ones a stack declares.
|
|
856
|
+
* An operator writing `tiles: { disabled: true }` got tiles.
|
|
857
|
+
*
|
|
858
|
+
* Measured on the test server: a stack that disabled the geocoder and the
|
|
859
|
+
* tile server provisioned both — a geocoding database that can reach tens
|
|
860
|
+
* of gigabytes, on a host chosen for a payment system.
|
|
861
|
+
*/
|
|
862
|
+
overrides,
|
|
863
|
+
/**
|
|
864
|
+
* Where a service's config files live on THIS machine, by service name.
|
|
865
|
+
*
|
|
866
|
+
* The gateway is not an ordinary preset container: it needs four bind
|
|
867
|
+
* mounts, an entrypoint and fifteen upstream variables, and `resolveGateway`
|
|
868
|
+
* is the only thing that produces them. On a master they come from the
|
|
869
|
+
* project root; on a node there is no project, so the files are sent over
|
|
870
|
+
* and written locally, and this names where.
|
|
871
|
+
*
|
|
872
|
+
* Without it a node built its gateway through the generic preset path —
|
|
873
|
+
* whose own `defaultDocker` comment says "Volumes and entrypoint configured
|
|
874
|
+
* by resolveGateway" — and got bare openresty: an empty `Mounts` array, a
|
|
875
|
+
* null entrypoint, zero UPSTREAM variables, and an onion serving
|
|
876
|
+
* `Welcome to OpenResty!`.
|
|
877
|
+
*/
|
|
878
|
+
configRoots, gatewayContext) {
|
|
465
879
|
if (!normalizedServices || Object.keys(normalizedServices).length === 0) {
|
|
466
880
|
return [];
|
|
467
881
|
}
|
|
468
|
-
|
|
882
|
+
const gatewayRoot = configRoots?.get('gateway');
|
|
883
|
+
if (!gatewayRoot ||
|
|
884
|
+
!normalizedServices['gateway'] ||
|
|
885
|
+
!usesGatewayTemplate(normalizedServices['gateway']) ||
|
|
886
|
+
!gatewayContext) {
|
|
887
|
+
return resolveAppInfrastructure(normalizedServices, overrides, undefined, configRoots);
|
|
888
|
+
}
|
|
889
|
+
// One resolver for the gateway, wherever it runs. The rest go through the
|
|
890
|
+
// generic path, which is right for them — with the node's copies of what
|
|
891
|
+
// they mount from shipped directories (`shipped-config.ts`).
|
|
892
|
+
const { gateway: _gateway, ...rest } = normalizedServices;
|
|
893
|
+
const containers = resolveAppInfrastructure(rest, overrides, undefined, configRoots);
|
|
894
|
+
const port = gatewayHostPort(normalizedServices['gateway'], undefined);
|
|
895
|
+
// The stack's whole gateway block — its env and its volumes as on a master
|
|
896
|
+
// (`gatewayConfigOf`) — with the two paths a node names for itself. This
|
|
897
|
+
// road passed port, configDir and staticDir only: on 2026-09-26 the node
|
|
898
|
+
// built sample/test's gateway without GATEWAY_UNIX_SOCKET and without the
|
|
899
|
+
// shared socket volume, Tor pointed at a socket nobody listened on, and the
|
|
900
|
+
// onion was down for ~11 minutes. f0e19089 had fixed the master's road.
|
|
901
|
+
const { staticDir: _declaredStaticDir, ...declared } = gatewayConfigOf(normalizedServices['gateway']._presetConfig, undefined, port, gatewayContext.redis.db);
|
|
902
|
+
const staticRoot = gatewayContext.staticRoots?.get('gateway');
|
|
903
|
+
const staticLinkRoot = gatewayContext.staticLinkRoots?.get('gateway');
|
|
904
|
+
containers.push(resolveGateway({
|
|
905
|
+
...declared,
|
|
906
|
+
configDir: '.',
|
|
907
|
+
// Absolute: a node names its own copy, not a path relative to a
|
|
908
|
+
// project it does not have.
|
|
909
|
+
...(staticRoot ? { staticDir: staticRoot } : {}),
|
|
910
|
+
// The project and the stack are not parameters here and do not need
|
|
911
|
+
// to be: `setStackLabels` has already put them where every container
|
|
912
|
+
// of this stack reads them, and the link is spelled by the one
|
|
913
|
+
// function that spells it anywhere.
|
|
914
|
+
...(staticLinkRoot
|
|
915
|
+
? {
|
|
916
|
+
staticLinkRoot,
|
|
917
|
+
staticLinkName: gatewayStaticLinkName(stackLabels()['omnitron.project'] ?? '', stackLabels()['omnitron.stack'] ?? ''),
|
|
918
|
+
}
|
|
919
|
+
: {}),
|
|
920
|
+
}, gatewayContext.redis, gatewayRoot));
|
|
921
|
+
return containers;
|
|
469
922
|
}
|
|
470
923
|
//# sourceMappingURL=service-resolver.js.map
|