@omnitron-dev/omnitron 0.1.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BUILD.json +5 -0
- package/dist/cli/omnitron.js +378 -25
- 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 -24
- 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 +18 -5
- 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.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 +26 -4
- package/dist/commands/health.js.map +1 -1
- 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 +20 -0
- package/dist/commands/inspect-graph.d.ts.map +1 -0
- package/dist/commands/inspect-graph.js +74 -0
- package/dist/commands/inspect-graph.js.map +1 -0
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +115 -11
- 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 +25 -3
- 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 +532 -192
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +40 -14
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/monit.d.ts.map +1 -1
- package/dist/commands/monit.js +12 -2
- package/dist/commands/monit.js.map +1 -1
- package/dist/commands/node.d.ts +68 -0
- package/dist/commands/node.d.ts.map +1 -1
- package/dist/commands/node.js +285 -68
- package/dist/commands/node.js.map +1 -1
- package/dist/commands/output.d.ts +45 -0
- package/dist/commands/output.d.ts.map +1 -0
- package/dist/commands/output.js +103 -0
- package/dist/commands/output.js.map +1 -0
- package/dist/commands/pipeline.d.ts.map +1 -1
- package/dist/commands/pipeline.js +26 -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 +341 -13
- 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 +62 -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 +20 -0
- package/dist/commands/tor.d.ts.map +1 -0
- package/dist/commands/tor.js +180 -0
- package/dist/commands/tor.js.map +1 -0
- package/dist/commands/up.d.ts +85 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +181 -33
- 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 +93 -11
- 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 +425 -42
- 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 +150 -2
- package/dist/daemon/daemon-client.d.ts.map +1 -1
- package/dist/daemon/daemon-client.js +311 -21
- package/dist/daemon/daemon-client.js.map +1 -1
- package/dist/daemon/daemon-entry.js +92 -38
- 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 +207 -1
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +1254 -143
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/daemon.module.d.ts.map +1 -1
- package/dist/daemon/daemon.module.js +186 -79
- package/dist/daemon/daemon.module.js.map +1 -1
- package/dist/daemon/daemon.rpc-service.d.ts +109 -1
- package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
- package/dist/daemon/daemon.rpc-service.js +451 -95
- package/dist/daemon/daemon.rpc-service.js.map +1 -1
- package/dist/daemon/pid-manager.d.ts +69 -5
- package/dist/daemon/pid-manager.d.ts.map +1 -1
- package/dist/daemon/pid-manager.js +151 -17
- 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 +103 -19
- 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 +139 -0
- package/dist/execution/execution.service.d.ts.map +1 -1
- package/dist/execution/execution.service.js +273 -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 +179 -1
- package/dist/infrastructure/container-runtime.d.ts.map +1 -1
- package/dist/infrastructure/container-runtime.js +612 -45
- 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-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 +247 -6
- package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
- package/dist/infrastructure/infrastructure.service.js +571 -96
- 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 +92 -0
- package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -0
- package/dist/infrastructure/phantom-endpoint-janitor.js +199 -0
- package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -0
- 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/index.d.ts.map +1 -1
- package/dist/infrastructure/presets/index.js +2 -0
- package/dist/infrastructure/presets/index.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 +78 -5
- 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 +23 -4
- 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 +85 -4
- package/dist/infrastructure/presets/registry.js.map +1 -1
- package/dist/infrastructure/presets/tor.d.ts +112 -0
- package/dist/infrastructure/presets/tor.d.ts.map +1 -0
- package/dist/infrastructure/presets/tor.js +185 -0
- package/dist/infrastructure/presets/tor.js.map +1 -0
- 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 +191 -12
- package/dist/infrastructure/service-resolver.d.ts.map +1 -1
- package/dist/infrastructure/service-resolver.js +521 -60
- 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 +7 -1
- package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
- package/dist/infrastructure/stack-infra-manager.js +32 -14
- package/dist/infrastructure/stack-infra-manager.js.map +1 -1
- package/dist/infrastructure/types.d.ts +278 -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/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +3 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics-bridge.d.ts +87 -0
- package/dist/observability/metrics-bridge.d.ts.map +1 -0
- package/dist/observability/metrics-bridge.js +295 -0
- package/dist/observability/metrics-bridge.js.map +1 -0
- package/dist/observability/metrics-server.d.ts +68 -0
- package/dist/observability/metrics-server.d.ts.map +1 -0
- package/dist/observability/metrics-server.js +146 -0
- package/dist/observability/metrics-server.js.map +1 -0
- package/dist/orchestrator/app-handle.d.ts +170 -3
- package/dist/orchestrator/app-handle.d.ts.map +1 -1
- package/dist/orchestrator/app-handle.js +177 -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 +148 -4
- package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
- package/dist/orchestrator/bootstrap-process.js +496 -18
- package/dist/orchestrator/bootstrap-process.js.map +1 -1
- package/dist/orchestrator/build-service.d.ts +50 -3
- package/dist/orchestrator/build-service.d.ts.map +1 -1
- package/dist/orchestrator/build-service.js +357 -85
- 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 +34 -3
- package/dist/orchestrator/classic-launcher.js.map +1 -1
- package/dist/orchestrator/file-watcher.d.ts +78 -1
- package/dist/orchestrator/file-watcher.d.ts.map +1 -1
- package/dist/orchestrator/file-watcher.js +240 -43
- package/dist/orchestrator/file-watcher.js.map +1 -1
- 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 +540 -7
- package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.service.js +2106 -242
- 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 +227 -0
- package/dist/orchestrator/process-janitor.d.ts.map +1 -0
- package/dist/orchestrator/process-janitor.js +495 -0
- package/dist/orchestrator/process-janitor.js.map +1 -0
- 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 +158 -78
- 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 +287 -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 +46 -8
- package/dist/project/registry.d.ts.map +1 -1
- package/dist/project/registry.js +238 -40
- 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 +4 -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 +92 -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 +163 -24
- 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 +487 -0
- package/dist/services/bundle-builder.d.ts.map +1 -0
- package/dist/services/bundle-builder.js +1083 -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/infrastructure.rpc-service.d.ts +297 -2
- package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
- package/dist/services/infrastructure.rpc-service.js +523 -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 +151 -0
- package/dist/services/local-bundle.d.ts.map +1 -0
- package/dist/services/local-bundle.js +233 -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 +0 -4
- package/dist/services/netron-telemetry-transport.js.map +1 -1
- package/dist/services/node-deploy-lease.d.ts +154 -0
- package/dist/services/node-deploy-lease.d.ts.map +1 -0
- package/dist/services/node-deploy-lease.js +386 -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 +355 -10
- package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
- package/dist/services/node-manager.rpc-service.js +730 -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 +806 -104
- 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 +2 -1
- package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
- package/dist/services/pipeline.rpc-service.js.map +1 -1
- package/dist/services/pipeline.service.d.ts +30 -46
- package/dist/services/pipeline.service.d.ts.map +1 -1
- package/dist/services/pipeline.service.js +125 -11
- package/dist/services/pipeline.service.js.map +1 -1
- package/dist/services/project.rpc-service.d.ts +137 -5
- package/dist/services/project.rpc-service.d.ts.map +1 -1
- package/dist/services/project.rpc-service.js +258 -22
- package/dist/services/project.rpc-service.js.map +1 -1
- package/dist/services/project.service.d.ts +680 -9
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +2914 -293
- 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 +569 -8
- package/dist/services/remote-deployer.service.d.ts.map +1 -1
- package/dist/services/remote-deployer.service.js +1618 -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 +122 -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 +85 -0
- package/dist/services/static-carry-forward.d.ts.map +1 -0
- package/dist/services/static-carry-forward.js +159 -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 +143 -9
- package/dist/shared/dto/project.d.ts.map +1 -1
- package/dist/shared/dto/services.d.ts +855 -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 +156 -26
- 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 +11 -2
- package/dist/workers/types.d.ts.map +1 -1
- package/package.json +64 -29
- package/webapp/dist/BUILD.json +5 -0
- package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +1 -0
- package/webapp/dist/assets/Grid-BZ7xhoHQ.js +1 -0
- package/webapp/dist/assets/Switch-DGSAxQPM.js +1 -0
- package/webapp/dist/assets/alerts-sXqHJbsa.js +1 -0
- package/webapp/dist/assets/apps-B_Ah8Flh.js +1 -0
- package/webapp/dist/assets/audit-YXihwyui.js +1 -0
- package/webapp/dist/assets/client-CGbBvy9k.js +1 -0
- package/webapp/dist/assets/constants-veKGFkC6.js +1 -0
- package/webapp/dist/assets/containers-Di4NOTLf.js +2 -0
- package/webapp/dist/assets/daemon-memory-CCPZ4cV_.js +1 -0
- package/webapp/dist/assets/dashboard-Cfuf95N3.js +1 -0
- package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +1 -0
- package/webapp/dist/assets/deploy-release-dialog-D6C-XcKY.js +1 -0
- package/webapp/dist/assets/deployments-ChTq5kCw.js +1 -0
- package/webapp/dist/assets/detail-BsGWv7Dj.js +1 -0
- package/webapp/dist/assets/detail-CyVf_cw5.js +2 -0
- package/webapp/dist/assets/detail-D027j6aO.js +8 -0
- package/webapp/dist/assets/formatters-BqjL73N3.js +1 -0
- package/webapp/dist/assets/index-B8AHIPc-.css +1 -0
- package/webapp/dist/assets/index-DiZbrwxT.js +414 -0
- package/webapp/dist/assets/logs-L2b8Oqmo.js +12 -0
- package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +801 -0
- package/webapp/dist/assets/metrics-CQgjz2Lz.js +2 -0
- package/webapp/dist/assets/nodes-Nwia2Ty6.js +7 -0
- package/webapp/dist/assets/pipelines-DCu_rXOr.js +4 -0
- package/webapp/dist/assets/projects-Bb4aV76h.js +1 -0
- package/webapp/dist/assets/react-CwJFpaho.js +1 -0
- package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +1956 -0
- package/webapp/dist/assets/release-bits-Dj4EOhhb.js +1 -0
- package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +1 -0
- package/webapp/dist/assets/releases-CnAt3yO6.js +2 -0
- package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/webapp/dist/assets/settings-DU-mjiwb.js +1 -0
- package/webapp/dist/assets/settled-pair-C7SjZuns.js +1 -0
- package/webapp/dist/assets/sign-in-Bcvjrr4C.js +1 -0
- package/webapp/dist/assets/stacks-B-e8p50I.js +1 -0
- package/webapp/dist/assets/sync-reading-C3PnJ7AX.js +1 -0
- package/webapp/dist/assets/system-info-BtE3dgfw.js +1 -0
- package/webapp/dist/assets/topology-Cwch-uF1.js +12 -0
- package/webapp/dist/assets/topology-DLioOiRN.css +1 -0
- package/webapp/dist/assets/traces-BbShR-4P.js +1 -0
- package/webapp/dist/assets/use-stack-context-CZUgPq88.js +1 -0
- package/webapp/dist/index.html +6 -7
- 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/Chip-BySxTjyN.js +0 -1
- package/webapp/dist/assets/DialogContentText-YQWiAVrU.js +0 -1
- package/webapp/dist/assets/DialogTitle-CDkgUIwp.js +0 -1
- package/webapp/dist/assets/FormControlLabel-Bu3CCsBM.js +0 -1
- package/webapp/dist/assets/Grid-BFY8hAzL.js +0 -1
- package/webapp/dist/assets/InputAdornment-_Dayk-3y.js +0 -3
- package/webapp/dist/assets/Skeleton-BGj6Sw8m.js +0 -37
- package/webapp/dist/assets/Switch-CA6682vv.js +0 -1
- package/webapp/dist/assets/TableContainer-4epq10KJ.js +0 -1
- package/webapp/dist/assets/TextField-C73KHMVN.js +0 -1
- package/webapp/dist/assets/alerts-JEQALS7Y.js +0 -1
- package/webapp/dist/assets/apps-DMPysEKB.js +0 -1
- package/webapp/dist/assets/client-DlGPter5.js +0 -110
- package/webapp/dist/assets/constants-DqFQJ27U.js +0 -1
- package/webapp/dist/assets/containers-CvkC7do8.js +0 -1
- package/webapp/dist/assets/dashboard-C0Fre9pC.js +0 -1
- package/webapp/dist/assets/dashboard-builder-DAghqdpE.js +0 -1
- package/webapp/dist/assets/deployments-Cg1lI1uT.js +0 -1
- package/webapp/dist/assets/detail-CyFtEson.js +0 -1
- package/webapp/dist/assets/detail-DqoSGKT1.js +0 -8
- package/webapp/dist/assets/formatters-J3Xqn6BQ.js +0 -1
- package/webapp/dist/assets/icons-ynIWYfBP.js +0 -3
- package/webapp/dist/assets/index-CHVXOsTS.css +0 -1
- package/webapp/dist/assets/index-vKrDmEA_.js +0 -259
- package/webapp/dist/assets/isMuiElement-BRL3YuCT.js +0 -1
- package/webapp/dist/assets/logs-IovIij1C.js +0 -11
- package/webapp/dist/assets/metrics-Dufwtwjq.js +0 -1
- package/webapp/dist/assets/nodes-Brvu8W3j.js +0 -7
- package/webapp/dist/assets/pipelines-t40X4MuC.js +0 -4
- package/webapp/dist/assets/prop-types-CvVtHxp4.js +0 -1
- package/webapp/dist/assets/react-apexcharts.esm-CLO6gala.js +0 -954
- package/webapp/dist/assets/settings-DTAIST3v.js +0 -1
- package/webapp/dist/assets/sign-in-DQEAkJum.js +0 -1
- package/webapp/dist/assets/stacks-BjM1f45N.js +0 -1
- package/webapp/dist/assets/system-info-BQSbSEK-.js +0 -1
- package/webapp/dist/assets/topology-6N8-Az_Z.js +0 -12
- package/webapp/dist/assets/topology-CHpVij2M.css +0 -1
- package/webapp/dist/assets/traces-DVXyb-4m.js +0 -1
- package/webapp/dist/assets/use-stack-context-CbE8fxBA.js +0 -1
- /package/webapp/dist/assets/{fs-uP8eiZAR.js → fs-Ccl3sAcp.js} +0 -0
|
@@ -7,8 +7,66 @@
|
|
|
7
7
|
*
|
|
8
8
|
* All Omnitron-managed containers are labeled with `omnitron.managed=true`.
|
|
9
9
|
*/
|
|
10
|
+
import { createHash } from 'node:crypto';
|
|
11
|
+
import { CONFIG_ROOT_PREFIX } from './shipped-config.js';
|
|
12
|
+
/** Label carrying the desired-spec fingerprint, used for config-drift detection. */
|
|
13
|
+
export const SPEC_HASH_LABEL = 'omnitron.spec-hash';
|
|
14
|
+
/**
|
|
15
|
+
* Stable fingerprint of a container's *desired* spec. Covers the fields that a
|
|
16
|
+
* config edit can change and that require a recreate to apply (image, env,
|
|
17
|
+
* ports, volumes, command/entrypoint, extraHosts). Deliberately EXCLUDES
|
|
18
|
+
* labels — the spec-hash label is derived from this, and docker-compose adds
|
|
19
|
+
* label noise — so the hash is stable across recreations of an unchanged spec.
|
|
20
|
+
*
|
|
21
|
+
* Stamped as a label at create time and compared on reconcile so that an env
|
|
22
|
+
* change (e.g. the Tor hidden-service target) triggers a recreate instead of
|
|
23
|
+
* being silently ignored because the image is unchanged.
|
|
24
|
+
*/
|
|
25
|
+
export function containerSpecHash(config) {
|
|
26
|
+
const sortedEnv = Object.keys(config.environment)
|
|
27
|
+
.sort()
|
|
28
|
+
.map((k) => [k, config.environment[k]]);
|
|
29
|
+
const normalized = JSON.stringify({
|
|
30
|
+
image: config.image,
|
|
31
|
+
env: sortedEnv,
|
|
32
|
+
// `bindHost` is part of what a port IS. Without it, changing a container
|
|
33
|
+
// from every-interface to loopback leaves the hash identical and the
|
|
34
|
+
// container published exactly as before.
|
|
35
|
+
ports: [...config.ports]
|
|
36
|
+
.map((p) => ({ h: p.host, c: p.container, b: p.bindHost ?? null }))
|
|
37
|
+
.sort((a, b) => a.h - b.h || a.c - b.c),
|
|
38
|
+
volumes: [...config.volumes]
|
|
39
|
+
.map((v) => ({ s: v.source, t: v.target, ro: !!v.readonly }))
|
|
40
|
+
.sort((a, b) => (a.t < b.t ? -1 : a.t > b.t ? 1 : 0)),
|
|
41
|
+
command: config.command ?? null,
|
|
42
|
+
entrypoint: config.entrypoint ?? null,
|
|
43
|
+
extraHosts: [...(config.extraHosts ?? [])].sort(),
|
|
44
|
+
// A health check is baked into the container at creation: docker reads
|
|
45
|
+
// `HEALTHCHECK` once and never again. Leaving it out of the hash means a
|
|
46
|
+
// corrected check never reaches anything already running — the fix lands
|
|
47
|
+
// in the code, the reconciler sees no difference, and the container goes
|
|
48
|
+
// on answering the old question forever.
|
|
49
|
+
//
|
|
50
|
+
// Measured: the gateway's probe was corrected from `curl` (absent from
|
|
51
|
+
// its image) to one that also tries wget, the node was reprovisioned,
|
|
52
|
+
// and the container kept the curl-only check and kept reporting
|
|
53
|
+
// unhealthy.
|
|
54
|
+
healthCheck: config.healthCheck ?? null,
|
|
55
|
+
// The network a container is on is not a detail of how it runs but of
|
|
56
|
+
// what it can reach. A service moved between networks and not recreated
|
|
57
|
+
// is on the old one, and its name resolves for nobody.
|
|
58
|
+
network: config.network ?? null,
|
|
59
|
+
restart: config.restart,
|
|
60
|
+
// What the mounted config files SAY, which the volume paths above cannot:
|
|
61
|
+
// an nginx.conf rewritten in place has the same path. Only when present,
|
|
62
|
+
// so a container with no config files keeps the hash it was created
|
|
63
|
+
// with and an upgrade of omnitron recreates nothing on its account.
|
|
64
|
+
...(config.configDigest ? { configDigest: config.configDigest } : {}),
|
|
65
|
+
});
|
|
66
|
+
return createHash('sha1').update(normalized).digest('hex').slice(0, 16);
|
|
67
|
+
}
|
|
10
68
|
// =============================================================================
|
|
11
|
-
// Singleton DockerAdapter (lazy-loaded)
|
|
69
|
+
// Singleton DockerAdapter (lazy-loaded, self-healing)
|
|
12
70
|
// =============================================================================
|
|
13
71
|
let _adapter = null;
|
|
14
72
|
async function getAdapter() {
|
|
@@ -18,16 +76,78 @@ async function getAdapter() {
|
|
|
18
76
|
_adapter = new DockerAdapter();
|
|
19
77
|
return _adapter;
|
|
20
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Patterns that mean "the docker daemon connection is gone" rather than
|
|
81
|
+
* "this specific operation failed". When we see one, we invalidate the
|
|
82
|
+
* cached adapter so the next call gets a fresh instance — without this,
|
|
83
|
+
* a docker-daemon restart would leave us forever trying to talk to a
|
|
84
|
+
* dead socket.
|
|
85
|
+
*/
|
|
86
|
+
const ADAPTER_DEAD_PATTERNS = /(?:cannot connect to the docker daemon|docker daemon is not running|connect ENOENT|connect ECONNREFUSED.*docker|EOF$|connection reset)/i;
|
|
87
|
+
function isAdapterDeadError(err) {
|
|
88
|
+
if (!err)
|
|
89
|
+
return false;
|
|
90
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
91
|
+
return ADAPTER_DEAD_PATTERNS.test(msg);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Run `op` against the docker adapter. If it fails with an error that
|
|
95
|
+
* indicates the daemon connection is dead, invalidate the cached adapter
|
|
96
|
+
* and retry exactly once with a fresh one — recovering automatically
|
|
97
|
+
* from docker daemon restarts.
|
|
98
|
+
*/
|
|
99
|
+
async function withAdapter(op) {
|
|
100
|
+
const adapter = await getAdapter();
|
|
101
|
+
try {
|
|
102
|
+
return await op(adapter);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
if (!isAdapterDeadError(err))
|
|
106
|
+
throw err;
|
|
107
|
+
_adapter = null;
|
|
108
|
+
const fresh = await getAdapter();
|
|
109
|
+
return await op(fresh);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
21
112
|
// =============================================================================
|
|
22
113
|
// Public API
|
|
23
114
|
// =============================================================================
|
|
115
|
+
/**
|
|
116
|
+
* How many containers this host's Docker holds, by state — every container,
|
|
117
|
+
* not only omnitron's.
|
|
118
|
+
*
|
|
119
|
+
* One `docker ps`, the CLI the rest of this file speaks, with a timeout that
|
|
120
|
+
* ends it. The system snapshot asked Docker through systeminformation's
|
|
121
|
+
* socket client instead, which sends `GET /info HTTP/1.0` and waits for the
|
|
122
|
+
* connection to close; OrbStack answers `HTTP/1.1 200` and keeps it open, so
|
|
123
|
+
* every question hung until the library's own timeout — measured 2026-09-23:
|
|
124
|
+
* no answer in 20 s where `curl` on the same socket took 0.055 s — and left
|
|
125
|
+
* its socket open behind it.
|
|
126
|
+
*/
|
|
127
|
+
export async function countContainersByState(timeoutMs = 10_000) {
|
|
128
|
+
const { execFile } = await import('node:child_process');
|
|
129
|
+
const { promisify } = await import('node:util');
|
|
130
|
+
const { stdout } = await promisify(execFile)('docker', ['ps', '-a', '--format', '{{.State}}'], {
|
|
131
|
+
encoding: 'utf-8',
|
|
132
|
+
timeout: timeoutMs,
|
|
133
|
+
});
|
|
134
|
+
const counts = { running: 0, paused: 0, stopped: 0 };
|
|
135
|
+
for (const state of String(stdout).split('\n').map((line) => line.trim()).filter(Boolean)) {
|
|
136
|
+
if (state === 'running')
|
|
137
|
+
counts.running++;
|
|
138
|
+
else if (state === 'paused')
|
|
139
|
+
counts.paused++;
|
|
140
|
+
else
|
|
141
|
+
counts.stopped++;
|
|
142
|
+
}
|
|
143
|
+
return counts;
|
|
144
|
+
}
|
|
24
145
|
/**
|
|
25
146
|
* Check if Docker daemon is available.
|
|
26
147
|
*/
|
|
27
148
|
export async function isDockerAvailable() {
|
|
28
149
|
try {
|
|
29
|
-
|
|
30
|
-
return adapter.isAvailable();
|
|
150
|
+
return await withAdapter((adapter) => adapter.isAvailable());
|
|
31
151
|
}
|
|
32
152
|
catch {
|
|
33
153
|
return false;
|
|
@@ -35,59 +155,272 @@ export async function isDockerAvailable() {
|
|
|
35
155
|
}
|
|
36
156
|
/**
|
|
37
157
|
* List all Omnitron-managed containers.
|
|
158
|
+
*
|
|
159
|
+
* `[]` when Docker cannot be asked, which is right for a listing and wrong for
|
|
160
|
+
* a health check: «nothing is running» and «Docker did not answer» are
|
|
161
|
+
* different states. `orThrow` keeps them apart.
|
|
38
162
|
*/
|
|
39
|
-
export async function listManagedContainers() {
|
|
40
|
-
const adapter = await getAdapter();
|
|
163
|
+
export async function listManagedContainers(options = {}) {
|
|
41
164
|
try {
|
|
42
|
-
|
|
43
|
-
|
|
165
|
+
const names = await withAdapter((adapter) => adapter.listContainers(true));
|
|
166
|
+
if (names.length === 0)
|
|
167
|
+
return [];
|
|
168
|
+
// One `docker inspect` for every container, not one per container.
|
|
169
|
+
//
|
|
170
|
+
// The per-container loop this replaces issued a subprocess each: on a host
|
|
171
|
+
// with 28 containers that is 28 spawns, and the console polls this every
|
|
172
|
+
// ten seconds. Measured on that host: 0.042s for one inspect, 0.225s for
|
|
173
|
+
// all 28 in a single call — so the loop cost roughly 1.2s of process
|
|
174
|
+
// churn per poll when it was working, and under load it stopped returning
|
|
175
|
+
// at all, leaving the containers page in its loading state indefinitely.
|
|
176
|
+
const inspected = await inspectContainers(names);
|
|
177
|
+
// Named and then not described: `inspectContainers` swallows its own
|
|
178
|
+
// failure, and an empty answer here is Docker going away mid-question.
|
|
179
|
+
if (options.orThrow && inspected.length === 0) {
|
|
180
|
+
throw new Error(`docker listed ${names.length} container(s) and then described none of them`);
|
|
181
|
+
}
|
|
44
182
|
const managed = [];
|
|
45
|
-
for (const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
183
|
+
for (const info of inspected) {
|
|
184
|
+
if (info?.Config?.Labels?.['omnitron.managed'] !== 'true')
|
|
185
|
+
continue;
|
|
186
|
+
const failure = describeContainerFailure(info.State);
|
|
187
|
+
managed.push({
|
|
188
|
+
name: (info.Name ?? '').replace(/^\//, ''),
|
|
189
|
+
image: info.Config?.Image ?? '',
|
|
190
|
+
status: mapInspectStatus(info.State?.Status),
|
|
191
|
+
containerId: info.Id?.slice(0, 12),
|
|
192
|
+
health: mapInspectHealth(info.State?.Health?.Status),
|
|
193
|
+
startedAt: info.State?.StartedAt,
|
|
194
|
+
ports: publishedPorts(info),
|
|
195
|
+
service: info.Config?.Labels?.['omnitron.service'],
|
|
196
|
+
project: info.Config?.Labels?.['omnitron.project'],
|
|
197
|
+
stack: info.Config?.Labels?.['omnitron.stack'],
|
|
198
|
+
app: info.Config?.Labels?.['omnitron.app'],
|
|
199
|
+
...(failure && { error: failure }),
|
|
200
|
+
});
|
|
62
201
|
}
|
|
63
202
|
return managed;
|
|
64
203
|
}
|
|
65
|
-
catch {
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (options.orThrow)
|
|
206
|
+
throw err;
|
|
66
207
|
return [];
|
|
67
208
|
}
|
|
68
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Published ports, as `"80/tcp" -> 9800`.
|
|
212
|
+
*
|
|
213
|
+
* `ContainerState.ports` was declared, documented as a name→port map, and
|
|
214
|
+
* assigned by nothing — so the console's Ports column showed `--` for every
|
|
215
|
+
* container on a host where all twelve publish ports. The data was already in
|
|
216
|
+
* hand: `docker inspect` returns it, and this reads it out of the response
|
|
217
|
+
* both call sites already have.
|
|
218
|
+
*
|
|
219
|
+
* The keys are container ports rather than the logical names a service config
|
|
220
|
+
* uses (`main`, `rpc`), because that is what Docker knows. A container that
|
|
221
|
+
* exposes a port without publishing it has a null binding and is left out —
|
|
222
|
+
* it is not reachable from the host, so listing it would overstate what is
|
|
223
|
+
* available.
|
|
224
|
+
*/
|
|
225
|
+
function publishedPorts(info) {
|
|
226
|
+
const raw = info.NetworkSettings?.Ports;
|
|
227
|
+
if (!raw)
|
|
228
|
+
return undefined;
|
|
229
|
+
const out = {};
|
|
230
|
+
for (const [containerPort, bindings] of Object.entries(raw)) {
|
|
231
|
+
// Docker lists both the IPv4 and IPv6 binding for the same publish; they
|
|
232
|
+
// carry the same host port, so the first usable one is the answer.
|
|
233
|
+
const hostPort = bindings?.find((b) => b?.HostPort)?.HostPort;
|
|
234
|
+
if (!hostPort)
|
|
235
|
+
continue;
|
|
236
|
+
const port = Number(hostPort);
|
|
237
|
+
if (Number.isInteger(port) && port > 0)
|
|
238
|
+
out[containerPort] = port;
|
|
239
|
+
}
|
|
240
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Inspect many containers in one call.
|
|
244
|
+
*
|
|
245
|
+
* `docker inspect` takes any number of names and returns a JSON array. Names
|
|
246
|
+
* that no longer exist are reported on stderr and simply absent from the
|
|
247
|
+
* array — which is the behaviour wanted here, since a container can be
|
|
248
|
+
* removed between listing and inspecting.
|
|
249
|
+
*/
|
|
250
|
+
async function inspectContainers(names) {
|
|
251
|
+
const { execFile } = await import('node:child_process');
|
|
252
|
+
const { promisify } = await import('node:util');
|
|
253
|
+
const execFileAsync = promisify(execFile);
|
|
254
|
+
try {
|
|
255
|
+
const { stdout } = await execFileAsync('docker', ['inspect', ...names], {
|
|
256
|
+
timeout: 15_000,
|
|
257
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
258
|
+
});
|
|
259
|
+
const parsed = JSON.parse(stdout || '[]');
|
|
260
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
// A non-zero exit means SOME name was unknown; docker still prints the
|
|
264
|
+
// ones it found, so the output is worth parsing rather than discarding.
|
|
265
|
+
const stdout = err.stdout;
|
|
266
|
+
if (!stdout)
|
|
267
|
+
return [];
|
|
268
|
+
try {
|
|
269
|
+
const parsed = JSON.parse(stdout);
|
|
270
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
69
277
|
/**
|
|
70
278
|
* Get state of a specific container by name.
|
|
71
279
|
*/
|
|
72
280
|
export async function getContainerState(name) {
|
|
73
|
-
const adapter = await getAdapter();
|
|
74
281
|
try {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
282
|
+
return await withAdapter(async (adapter) => {
|
|
283
|
+
const exists = await adapter.containerExists(name);
|
|
284
|
+
if (!exists)
|
|
285
|
+
return null;
|
|
286
|
+
const info = await adapter.inspectContainer(name);
|
|
287
|
+
// Network attachment: an OrbStack/dockerd restart can leave a container
|
|
288
|
+
// 'running' but detached from every network (empty Networks) with its
|
|
289
|
+
// published ports gone — reachable by nothing. Surface it so callers can
|
|
290
|
+
// recreate instead of trusting the 'running' status.
|
|
291
|
+
const networkAttached = Object.keys(info.NetworkSettings?.Networks ?? {}).length > 0;
|
|
292
|
+
const failure = describeContainerFailure(info.State);
|
|
293
|
+
return {
|
|
294
|
+
name: (info.Name ?? name).replace(/^\//, ''),
|
|
295
|
+
image: info.Config?.Image ?? '',
|
|
296
|
+
status: mapInspectStatus(info.State?.Status),
|
|
297
|
+
containerId: info.Id?.slice(0, 12),
|
|
298
|
+
health: mapInspectHealth(info.State?.Health?.Status),
|
|
299
|
+
startedAt: info.State?.StartedAt,
|
|
300
|
+
ports: publishedPorts(info),
|
|
301
|
+
specHash: info.Config?.Labels?.[SPEC_HASH_LABEL],
|
|
302
|
+
service: info.Config?.Labels?.['omnitron.service'],
|
|
303
|
+
networkAttached,
|
|
304
|
+
...(failure && { error: failure }),
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* One `-p` value.
|
|
314
|
+
*
|
|
315
|
+
* `9800:80` publishes on every INTERFACE — Docker's default, and Docker's
|
|
316
|
+
* iptables rules are inserted ahead of the host firewall's, so such a port is
|
|
317
|
+
* reachable from the network no matter what `ufw status` says.
|
|
318
|
+
*
|
|
319
|
+
* An omission therefore used to mean the widest possible answer. This is the
|
|
320
|
+
* single place a published port becomes a docker argument, and it now reads an
|
|
321
|
+
* absent `bindHost` as loopback: a container that must be reachable says so,
|
|
322
|
+
* with `bindHost: '0.0.0.0'`, in a line someone can see in a diff.
|
|
323
|
+
*
|
|
324
|
+
* `applyManagedDefaults` fills the same field in the resolver, and should —
|
|
325
|
+
* that is what puts the binding into `containerSpecHash`, so changing it
|
|
326
|
+
* recreates the container instead of leaving the old one published. But a
|
|
327
|
+
* default that every resolver must remember is a default that one of them
|
|
328
|
+
* will not: `resolveGateway` was the one return of four that did not call it,
|
|
329
|
+
* and the gateway is the container that faces outward. Measured on the dev
|
|
330
|
+
* stand: `daos-dev-gateway` published on 0.0.0.0:80 while the other ten
|
|
331
|
+
* managed containers were all on 127.0.0.1, and a browser on the LAN could
|
|
332
|
+
* sign in. Defence in depth, because the resolver-side default is the one
|
|
333
|
+
* that can be forgotten and this one cannot.
|
|
334
|
+
*/
|
|
335
|
+
export function portArg(p) {
|
|
336
|
+
const bindHost = p.bindHost ?? '127.0.0.1';
|
|
337
|
+
return `${bindHost}:${p.host}:${p.container}`;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Docker state left over from a container that is gone.
|
|
341
|
+
*
|
|
342
|
+
* An orphaned libnetwork endpoint, or a `Created` husk holding the name.
|
|
343
|
+
* Both are scrubbed and the run retried.
|
|
344
|
+
*/
|
|
345
|
+
export function isStaleContainerState(message) {
|
|
346
|
+
return /endpoint with name .* already exists|is already in use by container/i.test(message);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* A port whose previous holder has not let go yet.
|
|
350
|
+
*
|
|
351
|
+
* `docker rm` returns before the kernel releases the bind its docker-proxy
|
|
352
|
+
* held, so removing a container and immediately recreating it races that
|
|
353
|
+
* release. Measured on a node recreating postgres, redis and minio at once:
|
|
354
|
+
* all three failed this way, each left in `Created`, and `docker start` by
|
|
355
|
+
* hand a second later worked — which is what makes it a race rather than a
|
|
356
|
+
* conflict, and a retry the right answer rather than a louder error.
|
|
357
|
+
*
|
|
358
|
+
* Narrow on purpose. A missing image, a bad flag, or a port genuinely held
|
|
359
|
+
* by something else is permanent, and retrying it turns one clear error into
|
|
360
|
+
* several identical ones separated by delays.
|
|
361
|
+
*/
|
|
362
|
+
export function isPortNotYetReleased(message) {
|
|
363
|
+
return /port is already allocated|failed to set up container networking/i.test(message);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Which container holds a host port, if any.
|
|
367
|
+
*
|
|
368
|
+
* `port is already allocated` is true and useless: it names the port and
|
|
369
|
+
* withholds the only thing an operator can act on. Measured on a node where
|
|
370
|
+
* three services would not start —
|
|
371
|
+
*
|
|
372
|
+
* Bind for 127.0.0.1:5432 failed: port is already allocated
|
|
373
|
+
*
|
|
374
|
+
* — and the holder was `omnitron-postgres`, a container from an earlier
|
|
375
|
+
* naming of the same stack that the reconciler had stopped recognising and
|
|
376
|
+
* therefore stopped managing. Nothing in the failure said that, and nothing
|
|
377
|
+
* else would: the reconciler converges the containers it can name, and a
|
|
378
|
+
* container it no longer names is invisible to it while remaining very
|
|
379
|
+
* visible to the kernel.
|
|
380
|
+
*
|
|
381
|
+
* Answers null when nothing holds it, which is its own information: the
|
|
382
|
+
* bind failed for another reason.
|
|
383
|
+
*/
|
|
384
|
+
export async function containerHoldingPort(hostPort) {
|
|
385
|
+
const { execFile } = await import('node:child_process');
|
|
386
|
+
const { promisify } = await import('node:util');
|
|
387
|
+
try {
|
|
388
|
+
const { stdout } = await promisify(execFile)('docker', ['ps', '-a', '--format', '{{.Names}}\t{{.Ports}}'], { encoding: 'utf-8', timeout: 20_000 });
|
|
389
|
+
for (const line of String(stdout).split('\n')) {
|
|
390
|
+
const [name, ports] = line.split('\t');
|
|
391
|
+
if (!name || !ports)
|
|
392
|
+
continue;
|
|
393
|
+
// `127.0.0.1:5432->5432/tcp` and `0.0.0.0:5480->5432/tcp`: the host
|
|
394
|
+
// port is the one before the arrow, and it is the one that collides.
|
|
395
|
+
if (new RegExp(`:${hostPort}->`).test(ports))
|
|
396
|
+
return name;
|
|
397
|
+
}
|
|
398
|
+
return null;
|
|
86
399
|
}
|
|
87
400
|
catch {
|
|
88
401
|
return null;
|
|
89
402
|
}
|
|
90
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* Explain a bind failure by naming what is holding the port.
|
|
406
|
+
*
|
|
407
|
+
* Kept separate from the retry because it answers a different question:
|
|
408
|
+
* the retry asks "will this resolve on its own", and this asks "if not,
|
|
409
|
+
* what do I tell the operator".
|
|
410
|
+
*/
|
|
411
|
+
export async function describeBindFailure(config, original,
|
|
412
|
+
/** The lookup, as a parameter so this is answerable without a docker. */
|
|
413
|
+
lookup = containerHoldingPort) {
|
|
414
|
+
for (const port of config.ports) {
|
|
415
|
+
const holder = await lookup(port.host);
|
|
416
|
+
if (!holder || holder === config.name)
|
|
417
|
+
continue;
|
|
418
|
+
return (`${config.name} cannot take ${port.bindHost ?? '0.0.0.0'}:${port.host} — the container ` +
|
|
419
|
+
`\`${holder}\` is holding it. If that is a leftover from an earlier naming of this stack, ` +
|
|
420
|
+
`\`docker rm -f ${holder}\` releases the port and keeps its volume.`);
|
|
421
|
+
}
|
|
422
|
+
return original;
|
|
423
|
+
}
|
|
91
424
|
/**
|
|
92
425
|
* Create and start a container from a resolved config.
|
|
93
426
|
*/
|
|
@@ -95,9 +428,19 @@ export async function createContainer(config) {
|
|
|
95
428
|
const { execFile } = await import('node:child_process');
|
|
96
429
|
const { promisify } = await import('node:util');
|
|
97
430
|
const execFileAsync = promisify(execFile);
|
|
98
|
-
// Ensure
|
|
431
|
+
// Ensure the managed network exists before we try to attach to it.
|
|
432
|
+
// Idempotent — `docker network create` errors with "already exists"
|
|
433
|
+
// when present, which we treat as success. Doing this here (rather
|
|
434
|
+
// than at daemon start) keeps the provisioner self-sufficient and
|
|
435
|
+
// means single-container test setups work without a manual prep step.
|
|
436
|
+
if (config.network) {
|
|
437
|
+
await ensureNetwork(config.network);
|
|
438
|
+
}
|
|
439
|
+
// Ensure volumes exist. A `configroot:` source is a shipped directory this
|
|
440
|
+
// node has no copy of (`shipped-config.ts`), not a volume to create: it
|
|
441
|
+
// reaches `docker run`, which refuses it by name.
|
|
99
442
|
for (const vol of config.volumes) {
|
|
100
|
-
if (!vol.source.startsWith('/') && !vol.source.startsWith('.')) {
|
|
443
|
+
if (!vol.source.startsWith('/') && !vol.source.startsWith('.') && !vol.source.startsWith(CONFIG_ROOT_PREFIX)) {
|
|
101
444
|
await createVolume(vol.source);
|
|
102
445
|
}
|
|
103
446
|
}
|
|
@@ -105,9 +448,16 @@ export async function createContainer(config) {
|
|
|
105
448
|
await ensureImage(config.image);
|
|
106
449
|
// Build docker run command directly — xec adapter can hang
|
|
107
450
|
const args = ['docker', 'run', '-d', '--name', config.name];
|
|
108
|
-
//
|
|
451
|
+
// Network — explicit network avoids the default bridge, which
|
|
452
|
+
// accumulates phantom endpoints after dockerd restarts on macOS and
|
|
453
|
+
// blocks container recreation with "endpoint with name X already
|
|
454
|
+
// exists in network bridge". Falls back to docker's default when
|
|
455
|
+
// unspecified so single-container / no-stack usage still works.
|
|
456
|
+
if (config.network) {
|
|
457
|
+
args.push('--network', config.network);
|
|
458
|
+
}
|
|
109
459
|
for (const p of config.ports) {
|
|
110
|
-
args.push('-p',
|
|
460
|
+
args.push('-p', portArg(p));
|
|
111
461
|
}
|
|
112
462
|
// Environment variables
|
|
113
463
|
for (const [key, value] of Object.entries(config.environment)) {
|
|
@@ -117,8 +467,11 @@ export async function createContainer(config) {
|
|
|
117
467
|
for (const v of config.volumes) {
|
|
118
468
|
args.push('-v', `${v.source}:${v.target}${v.readonly ? ':ro' : ''}`);
|
|
119
469
|
}
|
|
120
|
-
// Labels
|
|
121
|
-
|
|
470
|
+
// Labels — stamp the desired-spec fingerprint so a later reconcile can
|
|
471
|
+
// detect config drift (env/ports/volumes/cmd change under the same image)
|
|
472
|
+
// and recreate instead of silently no-op'ing.
|
|
473
|
+
const labels = { ...(config.labels ?? {}), [SPEC_HASH_LABEL]: containerSpecHash(config) };
|
|
474
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
122
475
|
args.push('--label', `${key}=${value}`);
|
|
123
476
|
}
|
|
124
477
|
// Restart policy
|
|
@@ -163,12 +516,131 @@ export async function createContainer(config) {
|
|
|
163
516
|
if (config.command) {
|
|
164
517
|
args.push(...config.command);
|
|
165
518
|
}
|
|
166
|
-
// Execute docker run — use async execFile to avoid blocking event loop
|
|
167
|
-
|
|
519
|
+
// Execute docker run — use async execFile to avoid blocking event loop.
|
|
520
|
+
//
|
|
521
|
+
// Self-heal the two stale-state failures that otherwise wedge a managed
|
|
522
|
+
// container into an unstartable state (both seen in production on
|
|
523
|
+
// macOS/OrbStack after dockerd restarts under disk pressure):
|
|
524
|
+
// 1. "endpoint with name X already exists in network N" — an orphaned
|
|
525
|
+
// libnetwork endpoint outlived its container; docker run then leaves a
|
|
526
|
+
// half-created container with PortBindings set but NO published host
|
|
527
|
+
// port, so clients get ECONNREFUSED while inspect says "running".
|
|
528
|
+
// 2. "Conflict. The container name X is already in use" — a leftover
|
|
529
|
+
// Created-state container from a previously failed run.
|
|
530
|
+
// 3. "Bind for 127.0.0.1:5432 failed: port is already allocated" — the
|
|
531
|
+
// docker-proxy of a container `docker rm` has already returned for
|
|
532
|
+
// has not released its bind yet. A reconciler that removes and
|
|
533
|
+
// immediately recreates races that release. Measured on a node
|
|
534
|
+
// recreating three services at once: all three failed this way and
|
|
535
|
+
// were left in `Created`, and `docker start` by hand a second later
|
|
536
|
+
// worked — which is what makes it a race rather than a conflict.
|
|
537
|
+
//
|
|
538
|
+
// The first two are scrubbed; the third only needs a moment. Both are
|
|
539
|
+
// retried, with a short wait, up to three times.
|
|
540
|
+
//
|
|
541
|
+
// Deliberately narrow. A missing image, a bad flag, or a port genuinely
|
|
542
|
+
// held by something else is permanent, and retrying it turns one clear
|
|
543
|
+
// error into several identical ones separated by delays.
|
|
544
|
+
const runDocker = () => execFileAsync('docker', args.slice(1), { encoding: 'utf-8', timeout: 60_000 });
|
|
545
|
+
let stdout;
|
|
546
|
+
let lastError;
|
|
547
|
+
for (let attempt = 1; attempt <= 3; attempt += 1) {
|
|
548
|
+
try {
|
|
549
|
+
({ stdout } = await runDocker());
|
|
550
|
+
lastError = undefined;
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
catch (err) {
|
|
554
|
+
lastError = err;
|
|
555
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
556
|
+
if (isStaleContainerState(msg)) {
|
|
557
|
+
await scrubStaleContainerState(config.name, config.network);
|
|
558
|
+
continue;
|
|
559
|
+
}
|
|
560
|
+
if (isPortNotYetReleased(msg)) {
|
|
561
|
+
// The failed run leaves the container in `Created` holding the name,
|
|
562
|
+
// so the next attempt would hit the name conflict instead of the
|
|
563
|
+
// port. Remove it, then wait for the bind to go.
|
|
564
|
+
await removeContainer(config.name).catch(() => undefined);
|
|
565
|
+
await new Promise((resolve) => setTimeout(resolve, attempt * 1_000));
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
throw err;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
if (lastError || stdout === undefined) {
|
|
572
|
+
const message = lastError instanceof Error ? lastError.message : String(lastError ?? '');
|
|
573
|
+
if (isPortNotYetReleased(message)) {
|
|
574
|
+
// Waiting did not help, so something is holding the port rather than
|
|
575
|
+
// letting go of it. Name it: the docker error names the port and
|
|
576
|
+
// withholds the one thing an operator can act on.
|
|
577
|
+
throw new Error(await describeBindFailure(config, message));
|
|
578
|
+
}
|
|
579
|
+
throw lastError ?? new Error(`docker run produced no container id for ${config.name}`);
|
|
580
|
+
}
|
|
581
|
+
// Post-create guard: a container can report "running" yet have its declared
|
|
582
|
+
// host ports UNpublished when it silently reused an orphaned endpoint
|
|
583
|
+
// (PortBindings present but never wired by dockerd) — the exact failure that
|
|
584
|
+
// took Redis offline and cascaded to a login outage. Detect the mismatch and
|
|
585
|
+
// rebuild once from clean state so a successful return always means the
|
|
586
|
+
// declared ports are actually reachable.
|
|
587
|
+
if (config.ports.length > 0 && !(await arePortsPublished(config.name, config.ports))) {
|
|
588
|
+
await scrubStaleContainerState(config.name, config.network);
|
|
589
|
+
({ stdout } = await runDocker());
|
|
590
|
+
}
|
|
168
591
|
const output = (stdout ?? '').trim();
|
|
169
592
|
// Return container ID from docker run output (first line is container ID)
|
|
170
593
|
return (output || config.name).slice(0, 12);
|
|
171
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* Clear stale Docker state that blocks (re)creating a managed container: a
|
|
597
|
+
* leftover container holding the name, and an orphaned libnetwork endpoint
|
|
598
|
+
* holding the name on the managed network. Best-effort — every step may
|
|
599
|
+
* legitimately find nothing to remove.
|
|
600
|
+
*/
|
|
601
|
+
async function scrubStaleContainerState(name, network) {
|
|
602
|
+
const { execFile } = await import('node:child_process');
|
|
603
|
+
const { promisify } = await import('node:util');
|
|
604
|
+
const execFileAsync = promisify(execFile);
|
|
605
|
+
try {
|
|
606
|
+
await execFileAsync('docker', ['rm', '-f', name], { encoding: 'utf-8', timeout: 15_000 });
|
|
607
|
+
}
|
|
608
|
+
catch {
|
|
609
|
+
// No leftover container.
|
|
610
|
+
}
|
|
611
|
+
if (network) {
|
|
612
|
+
try {
|
|
613
|
+
await execFileAsync('docker', ['network', 'disconnect', '-f', network, name], {
|
|
614
|
+
encoding: 'utf-8',
|
|
615
|
+
timeout: 15_000,
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
catch {
|
|
619
|
+
// No orphaned endpoint for this name.
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* True if every declared host port shows up in `docker port <name>` (i.e.
|
|
625
|
+
* dockerd actually published it). Returns true when the check itself fails,
|
|
626
|
+
* so a transient docker hiccup never triggers a needless rebuild of a
|
|
627
|
+
* container that is in fact fine.
|
|
628
|
+
*/
|
|
629
|
+
async function arePortsPublished(name, ports) {
|
|
630
|
+
const { execFile } = await import('node:child_process');
|
|
631
|
+
const { promisify } = await import('node:util');
|
|
632
|
+
const execFileAsync = promisify(execFile);
|
|
633
|
+
try {
|
|
634
|
+
// `docker port` prints one line per published port, e.g.
|
|
635
|
+
// "6379/tcp -> 0.0.0.0:6379"; an unpublished container prints nothing.
|
|
636
|
+
const { stdout } = await execFileAsync('docker', ['port', name], { encoding: 'utf-8', timeout: 10_000 });
|
|
637
|
+
const mapped = stdout ?? '';
|
|
638
|
+
return ports.every((p) => mapped.includes(`:${p.host}`));
|
|
639
|
+
}
|
|
640
|
+
catch {
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
172
644
|
/**
|
|
173
645
|
* Start an existing stopped container.
|
|
174
646
|
*/
|
|
@@ -241,6 +713,32 @@ export async function waitForHealthy(name, timeoutMs = 60_000) {
|
|
|
241
713
|
return false;
|
|
242
714
|
}
|
|
243
715
|
}
|
|
716
|
+
/**
|
|
717
|
+
* Create a Docker bridge network if it doesn't exist.
|
|
718
|
+
*
|
|
719
|
+
* Idempotent — `docker network create` exits non-zero with a recognisable
|
|
720
|
+
* "already exists" message when the network is present; we swallow that
|
|
721
|
+
* specific case and propagate everything else. Done via execFile rather
|
|
722
|
+
* than the adapter because the adapter doesn't expose network APIs and
|
|
723
|
+
* the call is rare (once per daemon startup per network).
|
|
724
|
+
*/
|
|
725
|
+
export async function ensureNetwork(name) {
|
|
726
|
+
const { execFile } = await import('node:child_process');
|
|
727
|
+
const { promisify } = await import('node:util');
|
|
728
|
+
const execFileAsync = promisify(execFile);
|
|
729
|
+
try {
|
|
730
|
+
await execFileAsync('docker', ['network', 'create', name, '--driver', 'bridge'], {
|
|
731
|
+
encoding: 'utf-8',
|
|
732
|
+
timeout: 15_000,
|
|
733
|
+
});
|
|
734
|
+
}
|
|
735
|
+
catch (err) {
|
|
736
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
737
|
+
if (/already exists/i.test(msg))
|
|
738
|
+
return; // idempotent
|
|
739
|
+
throw err;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
244
742
|
/**
|
|
245
743
|
* Create a Docker volume if it doesn't exist.
|
|
246
744
|
*/
|
|
@@ -253,6 +751,38 @@ export async function createVolume(name) {
|
|
|
253
751
|
// Volume may already exist
|
|
254
752
|
}
|
|
255
753
|
}
|
|
754
|
+
/**
|
|
755
|
+
* Does a Docker volume exist?
|
|
756
|
+
*
|
|
757
|
+
* The question behind this one is "does this service already hold state
|
|
758
|
+
* initialised with some other password" — a Postgres data directory keeps
|
|
759
|
+
* the password it was created with and ignores `POSTGRES_PASSWORD`
|
|
760
|
+
* thereafter, so a volume is the difference between a first provision and
|
|
761
|
+
* one that would lock an application out of its own database.
|
|
762
|
+
*
|
|
763
|
+
* `docker volume inspect` rather than listing and filtering: the answer is
|
|
764
|
+
* about one name, and a list is a different question that happens to
|
|
765
|
+
* contain it.
|
|
766
|
+
*/
|
|
767
|
+
export async function volumeExists(name) {
|
|
768
|
+
const { execFile } = await import('node:child_process');
|
|
769
|
+
const { promisify } = await import('node:util');
|
|
770
|
+
try {
|
|
771
|
+
await promisify(execFile)('docker', ['volume', 'inspect', name], { timeout: 15_000 });
|
|
772
|
+
return true;
|
|
773
|
+
}
|
|
774
|
+
catch (err) {
|
|
775
|
+
// "No such volume" is an answer. Anything else — docker unreachable, a
|
|
776
|
+
// timeout, a permission error — is NOT, and the two must not be
|
|
777
|
+
// collapsed: the caller generates a credential when this says false, and
|
|
778
|
+
// generating one for a volume that does exist locks an application out
|
|
779
|
+
// of its own database. So only the message that means absence answers
|
|
780
|
+
// absence; everything else answers "assume there is state", which
|
|
781
|
+
// leaves a service on a default loudly rather than breaking it quietly.
|
|
782
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
783
|
+
return !/no such volume/i.test(message);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
256
786
|
/**
|
|
257
787
|
* Get container logs.
|
|
258
788
|
*/
|
|
@@ -272,6 +802,35 @@ export async function disposeEngine() {
|
|
|
272
802
|
// =============================================================================
|
|
273
803
|
// Helpers
|
|
274
804
|
// =============================================================================
|
|
805
|
+
/**
|
|
806
|
+
* Why a container is not running, in the words Docker already has.
|
|
807
|
+
*
|
|
808
|
+
* `ContainerState.error` has been part of the type all along and nothing ever
|
|
809
|
+
* filled it, while `docker inspect` carries both the exit code and a
|
|
810
|
+
* human-readable reason. So `omnitron doctor` could say "Container
|
|
811
|
+
* omnitron-nginx is created" and no more, when the answer was sitting one
|
|
812
|
+
* field away: "Bind for 0.0.0.0:9800 failed: port is already allocated".
|
|
813
|
+
*
|
|
814
|
+
* A container that is running, or that exited cleanly because it was asked
|
|
815
|
+
* to, has nothing to report — returning something there would turn a normal
|
|
816
|
+
* stop into a finding.
|
|
817
|
+
*/
|
|
818
|
+
function describeContainerFailure(state) {
|
|
819
|
+
if (!state)
|
|
820
|
+
return undefined;
|
|
821
|
+
if (state.Status?.toLowerCase() === 'running')
|
|
822
|
+
return undefined;
|
|
823
|
+
const parts = [];
|
|
824
|
+
if (state.Error)
|
|
825
|
+
parts.push(state.Error);
|
|
826
|
+
if (state.OOMKilled)
|
|
827
|
+
parts.push('killed by the OOM killer');
|
|
828
|
+
// Exit 0 is a clean stop; only a non-zero code is worth carrying.
|
|
829
|
+
if (typeof state.ExitCode === 'number' && state.ExitCode !== 0) {
|
|
830
|
+
parts.push(`exit code ${state.ExitCode}`);
|
|
831
|
+
}
|
|
832
|
+
return parts.length > 0 ? parts.join(' — ') : undefined;
|
|
833
|
+
}
|
|
275
834
|
function mapInspectStatus(status) {
|
|
276
835
|
if (!status)
|
|
277
836
|
return 'not_found';
|
|
@@ -301,4 +860,12 @@ function mapInspectHealth(health) {
|
|
|
301
860
|
return 'starting';
|
|
302
861
|
return 'none';
|
|
303
862
|
}
|
|
863
|
+
/**
|
|
864
|
+
* Exported for tests only.
|
|
865
|
+
*
|
|
866
|
+
* `describeContainerFailure` is a pure function over an inspect payload, and
|
|
867
|
+
* the payloads worth testing are the ones a live Docker will not produce on
|
|
868
|
+
* demand — a refused port bind, an OOM kill.
|
|
869
|
+
*/
|
|
870
|
+
export const __test__ = { describeContainerFailure, portArg };
|
|
304
871
|
//# sourceMappingURL=container-runtime.js.map
|