@omnitron-dev/omnitron 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1299) hide show
  1. package/README.md +4 -0
  2. package/dist/BUILD.json +5 -0
  3. package/dist/cli/omnitron.js +375 -29
  4. package/dist/cli/omnitron.js.map +1 -1
  5. package/dist/cluster/cluster.rpc-service.d.ts +40 -0
  6. package/dist/cluster/cluster.rpc-service.d.ts.map +1 -1
  7. package/dist/cluster/cluster.rpc-service.js +49 -3
  8. package/dist/cluster/cluster.rpc-service.js.map +1 -1
  9. package/dist/cluster/config-sync.d.ts.map +1 -1
  10. package/dist/cluster/config-sync.js.map +1 -1
  11. package/dist/cluster/leader-election.d.ts +90 -2
  12. package/dist/cluster/leader-election.d.ts.map +1 -1
  13. package/dist/cluster/leader-election.js +176 -22
  14. package/dist/cluster/leader-election.js.map +1 -1
  15. package/dist/cluster/mesh-link.d.ts +136 -0
  16. package/dist/cluster/mesh-link.d.ts.map +1 -0
  17. package/dist/cluster/mesh-link.js +212 -0
  18. package/dist/cluster/mesh-link.js.map +1 -0
  19. package/dist/cluster/mesh.d.ts +59 -0
  20. package/dist/cluster/mesh.d.ts.map +1 -0
  21. package/dist/cluster/mesh.js +117 -0
  22. package/dist/cluster/mesh.js.map +1 -0
  23. package/dist/cluster/slave-connector.d.ts +193 -9
  24. package/dist/cluster/slave-connector.d.ts.map +1 -1
  25. package/dist/cluster/slave-connector.js +409 -37
  26. package/dist/cluster/slave-connector.js.map +1 -1
  27. package/dist/commands/audit.d.ts +65 -0
  28. package/dist/commands/audit.d.ts.map +1 -0
  29. package/dist/commands/audit.js +233 -0
  30. package/dist/commands/audit.js.map +1 -0
  31. package/dist/commands/backup.d.ts +4 -0
  32. package/dist/commands/backup.d.ts.map +1 -1
  33. package/dist/commands/backup.js +255 -33
  34. package/dist/commands/backup.js.map +1 -1
  35. package/dist/commands/cluster.d.ts.map +1 -1
  36. package/dist/commands/cluster.js +78 -47
  37. package/dist/commands/cluster.js.map +1 -1
  38. package/dist/commands/daemon-cmd.d.ts +7 -1
  39. package/dist/commands/daemon-cmd.d.ts.map +1 -1
  40. package/dist/commands/daemon-cmd.js +87 -21
  41. package/dist/commands/daemon-cmd.js.map +1 -1
  42. package/dist/commands/daemon-required.d.ts +34 -0
  43. package/dist/commands/daemon-required.d.ts.map +1 -0
  44. package/dist/commands/daemon-required.js +92 -0
  45. package/dist/commands/daemon-required.js.map +1 -0
  46. package/dist/commands/deploy.d.ts +70 -8
  47. package/dist/commands/deploy.d.ts.map +1 -1
  48. package/dist/commands/deploy.js +99 -64
  49. package/dist/commands/deploy.js.map +1 -1
  50. package/dist/commands/discover.d.ts +25 -4
  51. package/dist/commands/discover.d.ts.map +1 -1
  52. package/dist/commands/discover.js +155 -102
  53. package/dist/commands/discover.js.map +1 -1
  54. package/dist/commands/doctor.d.ts +293 -0
  55. package/dist/commands/doctor.d.ts.map +1 -0
  56. package/dist/commands/doctor.js +1706 -0
  57. package/dist/commands/doctor.js.map +1 -0
  58. package/dist/commands/env.d.ts +8 -1
  59. package/dist/commands/env.d.ts.map +1 -1
  60. package/dist/commands/env.js +13 -8
  61. package/dist/commands/env.js.map +1 -1
  62. package/dist/commands/exec.d.ts.map +1 -1
  63. package/dist/commands/exec.js +3 -2
  64. package/dist/commands/exec.js.map +1 -1
  65. package/dist/commands/fleet-asking.d.ts +87 -0
  66. package/dist/commands/fleet-asking.d.ts.map +1 -0
  67. package/dist/commands/fleet-asking.js +176 -0
  68. package/dist/commands/fleet-asking.js.map +1 -0
  69. package/dist/commands/fleet-recover.d.ts +2 -0
  70. package/dist/commands/fleet-recover.d.ts.map +1 -0
  71. package/dist/commands/fleet-recover.js +30 -0
  72. package/dist/commands/fleet-recover.js.map +1 -0
  73. package/dist/commands/fleet.d.ts +18 -0
  74. package/dist/commands/fleet.d.ts.map +1 -1
  75. package/dist/commands/fleet.js +314 -74
  76. package/dist/commands/fleet.js.map +1 -1
  77. package/dist/commands/health-check.d.ts +8 -6
  78. package/dist/commands/health-check.d.ts.map +1 -1
  79. package/dist/commands/health-check.js +26 -23
  80. package/dist/commands/health-check.js.map +1 -1
  81. package/dist/commands/health.d.ts.map +1 -1
  82. package/dist/commands/health.js +22 -8
  83. package/dist/commands/health.js.map +1 -1
  84. package/dist/commands/host-ingress.d.ts +3 -0
  85. package/dist/commands/host-ingress.d.ts.map +1 -0
  86. package/dist/commands/host-ingress.js +31 -0
  87. package/dist/commands/host-ingress.js.map +1 -0
  88. package/dist/commands/infra.d.ts +42 -1
  89. package/dist/commands/infra.d.ts.map +1 -1
  90. package/dist/commands/infra.js +418 -49
  91. package/dist/commands/infra.js.map +1 -1
  92. package/dist/commands/init.d.ts.map +1 -1
  93. package/dist/commands/init.js +21 -36
  94. package/dist/commands/init.js.map +1 -1
  95. package/dist/commands/inspect-graph.d.ts.map +1 -1
  96. package/dist/commands/inspect-graph.js +2 -6
  97. package/dist/commands/inspect-graph.js.map +1 -1
  98. package/dist/commands/inspect.d.ts.map +1 -1
  99. package/dist/commands/inspect.js +110 -14
  100. package/dist/commands/inspect.js.map +1 -1
  101. package/dist/commands/k8s.d.ts.map +1 -1
  102. package/dist/commands/k8s.js +23 -18
  103. package/dist/commands/k8s.js.map +1 -1
  104. package/dist/commands/kb.d.ts.map +1 -1
  105. package/dist/commands/kb.js +88 -29
  106. package/dist/commands/kb.js.map +1 -1
  107. package/dist/commands/list.d.ts.map +1 -1
  108. package/dist/commands/list.js +21 -9
  109. package/dist/commands/list.js.map +1 -1
  110. package/dist/commands/log-health.d.ts +120 -0
  111. package/dist/commands/log-health.d.ts.map +1 -0
  112. package/dist/commands/log-health.js +212 -0
  113. package/dist/commands/log-health.js.map +1 -0
  114. package/dist/commands/logs.d.ts +96 -2
  115. package/dist/commands/logs.d.ts.map +1 -1
  116. package/dist/commands/logs.js +522 -196
  117. package/dist/commands/logs.js.map +1 -1
  118. package/dist/commands/metrics.d.ts.map +1 -1
  119. package/dist/commands/metrics.js +35 -17
  120. package/dist/commands/metrics.js.map +1 -1
  121. package/dist/commands/monit.d.ts.map +1 -1
  122. package/dist/commands/monit.js +3 -2
  123. package/dist/commands/monit.js.map +1 -1
  124. package/dist/commands/node.d.ts +56 -0
  125. package/dist/commands/node.d.ts.map +1 -1
  126. package/dist/commands/node.js +297 -69
  127. package/dist/commands/node.js.map +1 -1
  128. package/dist/commands/output.d.ts +10 -0
  129. package/dist/commands/output.d.ts.map +1 -1
  130. package/dist/commands/output.js +41 -1
  131. package/dist/commands/output.js.map +1 -1
  132. package/dist/commands/pipeline.d.ts.map +1 -1
  133. package/dist/commands/pipeline.js +33 -19
  134. package/dist/commands/pipeline.js.map +1 -1
  135. package/dist/commands/project.d.ts +19 -0
  136. package/dist/commands/project.d.ts.map +1 -1
  137. package/dist/commands/project.js +125 -27
  138. package/dist/commands/project.js.map +1 -1
  139. package/dist/commands/release-store.d.ts +28 -0
  140. package/dist/commands/release-store.d.ts.map +1 -0
  141. package/dist/commands/release-store.js +158 -0
  142. package/dist/commands/release-store.js.map +1 -0
  143. package/dist/commands/release.d.ts +61 -0
  144. package/dist/commands/release.d.ts.map +1 -0
  145. package/dist/commands/release.js +555 -0
  146. package/dist/commands/release.js.map +1 -0
  147. package/dist/commands/reload.d.ts +16 -0
  148. package/dist/commands/reload.d.ts.map +1 -1
  149. package/dist/commands/reload.js +21 -5
  150. package/dist/commands/reload.js.map +1 -1
  151. package/dist/commands/remote.d.ts +40 -0
  152. package/dist/commands/remote.d.ts.map +1 -1
  153. package/dist/commands/remote.js +146 -35
  154. package/dist/commands/remote.js.map +1 -1
  155. package/dist/commands/restart.d.ts +16 -0
  156. package/dist/commands/restart.d.ts.map +1 -1
  157. package/dist/commands/restart.js +21 -5
  158. package/dist/commands/restart.js.map +1 -1
  159. package/dist/commands/scale.d.ts.map +1 -1
  160. package/dist/commands/scale.js +4 -3
  161. package/dist/commands/scale.js.map +1 -1
  162. package/dist/commands/secret.d.ts +54 -0
  163. package/dist/commands/secret.d.ts.map +1 -1
  164. package/dist/commands/secret.js +236 -34
  165. package/dist/commands/secret.js.map +1 -1
  166. package/dist/commands/service-units.d.ts +181 -0
  167. package/dist/commands/service-units.d.ts.map +1 -0
  168. package/dist/commands/service-units.js +291 -0
  169. package/dist/commands/service-units.js.map +1 -0
  170. package/dist/commands/service.d.ts +39 -0
  171. package/dist/commands/service.d.ts.map +1 -0
  172. package/dist/commands/service.js +370 -0
  173. package/dist/commands/service.js.map +1 -0
  174. package/dist/commands/spinner.d.ts +29 -0
  175. package/dist/commands/spinner.d.ts.map +1 -0
  176. package/dist/commands/spinner.js +44 -0
  177. package/dist/commands/spinner.js.map +1 -0
  178. package/dist/commands/stack.d.ts +49 -1
  179. package/dist/commands/stack.d.ts.map +1 -1
  180. package/dist/commands/stack.js +325 -12
  181. package/dist/commands/stack.js.map +1 -1
  182. package/dist/commands/start.d.ts +16 -0
  183. package/dist/commands/start.d.ts.map +1 -1
  184. package/dist/commands/start.js +20 -3
  185. package/dist/commands/start.js.map +1 -1
  186. package/dist/commands/status.d.ts +9 -0
  187. package/dist/commands/status.d.ts.map +1 -1
  188. package/dist/commands/status.js +45 -29
  189. package/dist/commands/status.js.map +1 -1
  190. package/dist/commands/stop.d.ts +16 -0
  191. package/dist/commands/stop.d.ts.map +1 -1
  192. package/dist/commands/stop.js +34 -6
  193. package/dist/commands/stop.js.map +1 -1
  194. package/dist/commands/tor.d.ts +14 -7
  195. package/dist/commands/tor.d.ts.map +1 -1
  196. package/dist/commands/tor.js +113 -33
  197. package/dist/commands/tor.js.map +1 -1
  198. package/dist/commands/up.d.ts +85 -1
  199. package/dist/commands/up.d.ts.map +1 -1
  200. package/dist/commands/up.js +180 -32
  201. package/dist/commands/up.js.map +1 -1
  202. package/dist/commands/webapp.d.ts.map +1 -1
  203. package/dist/commands/webapp.js +2 -1
  204. package/dist/commands/webapp.js.map +1 -1
  205. package/dist/config/defaults.d.ts +16 -0
  206. package/dist/config/defaults.d.ts.map +1 -1
  207. package/dist/config/defaults.js +26 -3
  208. package/dist/config/defaults.js.map +1 -1
  209. package/dist/config/define-ecosystem.d.ts.map +1 -1
  210. package/dist/config/define-ecosystem.js +2 -0
  211. package/dist/config/define-ecosystem.js.map +1 -1
  212. package/dist/config/index.d.ts +1 -1
  213. package/dist/config/index.d.ts.map +1 -1
  214. package/dist/config/index.js +1 -1
  215. package/dist/config/index.js.map +1 -1
  216. package/dist/config/loader.d.ts +45 -1
  217. package/dist/config/loader.d.ts.map +1 -1
  218. package/dist/config/loader.js +64 -6
  219. package/dist/config/loader.js.map +1 -1
  220. package/dist/config/omnitron-config.schema.d.ts.map +1 -1
  221. package/dist/config/omnitron-config.schema.js +16 -0
  222. package/dist/config/omnitron-config.schema.js.map +1 -1
  223. package/dist/config/types.d.ts +416 -44
  224. package/dist/config/types.d.ts.map +1 -1
  225. package/dist/daemon/config-reload.d.ts +27 -0
  226. package/dist/daemon/config-reload.d.ts.map +1 -0
  227. package/dist/daemon/config-reload.js +42 -0
  228. package/dist/daemon/config-reload.js.map +1 -0
  229. package/dist/daemon/daemon-client.d.ts +136 -2
  230. package/dist/daemon/daemon-client.d.ts.map +1 -1
  231. package/dist/daemon/daemon-client.js +307 -21
  232. package/dist/daemon/daemon-client.js.map +1 -1
  233. package/dist/daemon/daemon-entry.js +90 -30
  234. package/dist/daemon/daemon-entry.js.map +1 -1
  235. package/dist/daemon/daemon-scheduler.d.ts +4 -0
  236. package/dist/daemon/daemon-scheduler.d.ts.map +1 -1
  237. package/dist/daemon/daemon-scheduler.js +137 -7
  238. package/dist/daemon/daemon-scheduler.js.map +1 -1
  239. package/dist/daemon/daemon-state-store.service.d.ts +263 -0
  240. package/dist/daemon/daemon-state-store.service.d.ts.map +1 -0
  241. package/dist/daemon/daemon-state-store.service.js +446 -0
  242. package/dist/daemon/daemon-state-store.service.js.map +1 -0
  243. package/dist/daemon/daemon.d.ts +194 -4
  244. package/dist/daemon/daemon.d.ts.map +1 -1
  245. package/dist/daemon/daemon.js +1160 -157
  246. package/dist/daemon/daemon.js.map +1 -1
  247. package/dist/daemon/daemon.module.d.ts.map +1 -1
  248. package/dist/daemon/daemon.module.js +163 -85
  249. package/dist/daemon/daemon.module.js.map +1 -1
  250. package/dist/daemon/daemon.rpc-service.d.ts +90 -1
  251. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  252. package/dist/daemon/daemon.rpc-service.js +439 -97
  253. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  254. package/dist/daemon/pid-manager.d.ts +16 -3
  255. package/dist/daemon/pid-manager.d.ts.map +1 -1
  256. package/dist/daemon/pid-manager.js +31 -4
  257. package/dist/daemon/pid-manager.js.map +1 -1
  258. package/dist/daemon/spawn-daemon.d.ts +73 -0
  259. package/dist/daemon/spawn-daemon.d.ts.map +1 -0
  260. package/dist/daemon/spawn-daemon.js +101 -0
  261. package/dist/daemon/spawn-daemon.js.map +1 -0
  262. package/dist/daemon/state-store.d.ts +65 -3
  263. package/dist/daemon/state-store.d.ts.map +1 -1
  264. package/dist/daemon/state-store.js +100 -58
  265. package/dist/daemon/state-store.js.map +1 -1
  266. package/dist/database/connection.d.ts +71 -0
  267. package/dist/database/connection.d.ts.map +1 -0
  268. package/dist/database/connection.js +129 -0
  269. package/dist/database/connection.js.map +1 -0
  270. package/dist/database/dialect.d.ts +60 -0
  271. package/dist/database/dialect.d.ts.map +1 -0
  272. package/dist/database/dialect.js +80 -0
  273. package/dist/database/dialect.js.map +1 -0
  274. package/dist/database/migrate.d.ts +5 -2
  275. package/dist/database/migrate.d.ts.map +1 -1
  276. package/dist/database/migrate.js +23 -33
  277. package/dist/database/migrate.js.map +1 -1
  278. package/dist/database/migration-runner.d.ts +50 -0
  279. package/dist/database/migration-runner.d.ts.map +1 -0
  280. package/dist/database/migration-runner.js +143 -0
  281. package/dist/database/migration-runner.js.map +1 -0
  282. package/dist/database/migrations/006_login_throttle.d.ts +17 -0
  283. package/dist/database/migrations/006_login_throttle.d.ts.map +1 -0
  284. package/dist/database/migrations/006_login_throttle.js +33 -0
  285. package/dist/database/migrations/006_login_throttle.js.map +1 -0
  286. package/dist/database/migrations/007_sync_ingested.d.ts +21 -0
  287. package/dist/database/migrations/007_sync_ingested.d.ts.map +1 -0
  288. package/dist/database/migrations/007_sync_ingested.js +39 -0
  289. package/dist/database/migrations/007_sync_ingested.js.map +1 -0
  290. package/dist/database/migrations/008_node_health_version_text.d.ts +24 -0
  291. package/dist/database/migrations/008_node_health_version_text.d.ts.map +1 -0
  292. package/dist/database/migrations/008_node_health_version_text.js +35 -0
  293. package/dist/database/migrations/008_node_health_version_text.js.map +1 -0
  294. package/dist/database/migrations/009_node_health_unmeasured.d.ts +40 -0
  295. package/dist/database/migrations/009_node_health_unmeasured.d.ts.map +1 -0
  296. package/dist/database/migrations/009_node_health_unmeasured.js +63 -0
  297. package/dist/database/migrations/009_node_health_unmeasured.js.map +1 -0
  298. package/dist/database/migrations/010_metrics_raw_had_no_reader.d.ts +22 -0
  299. package/dist/database/migrations/010_metrics_raw_had_no_reader.d.ts.map +1 -0
  300. package/dist/database/migrations/010_metrics_raw_had_no_reader.js +26 -0
  301. package/dist/database/migrations/010_metrics_raw_had_no_reader.js.map +1 -0
  302. package/dist/database/migrations/011_alerts_nobody_had_to_write.d.ts +56 -0
  303. package/dist/database/migrations/011_alerts_nobody_had_to_write.d.ts.map +1 -0
  304. package/dist/database/migrations/011_alerts_nobody_had_to_write.js +79 -0
  305. package/dist/database/migrations/011_alerts_nobody_had_to_write.js.map +1 -0
  306. package/dist/database/migrations/012_a_disk_nobody_watched.d.ts +26 -0
  307. package/dist/database/migrations/012_a_disk_nobody_watched.d.ts.map +1 -0
  308. package/dist/database/migrations/012_a_disk_nobody_watched.js +40 -0
  309. package/dist/database/migrations/012_a_disk_nobody_watched.js.map +1 -0
  310. package/dist/database/migrations/013_an_alarm_delivered.d.ts +14 -0
  311. package/dist/database/migrations/013_an_alarm_delivered.d.ts.map +1 -0
  312. package/dist/database/migrations/013_an_alarm_delivered.js +28 -0
  313. package/dist/database/migrations/013_an_alarm_delivered.js.map +1 -0
  314. package/dist/database/migrations/index.d.ts +21 -0
  315. package/dist/database/migrations/index.d.ts.map +1 -0
  316. package/dist/database/migrations/index.js +47 -0
  317. package/dist/database/migrations/index.js.map +1 -0
  318. package/dist/database/schema.d.ts +27 -11
  319. package/dist/database/schema.d.ts.map +1 -1
  320. package/dist/database/sqlite-date-binding.d.ts +71 -0
  321. package/dist/database/sqlite-date-binding.d.ts.map +1 -0
  322. package/dist/database/sqlite-date-binding.js +174 -0
  323. package/dist/database/sqlite-date-binding.js.map +1 -0
  324. package/dist/execution/data-channel.d.ts +48 -0
  325. package/dist/execution/data-channel.d.ts.map +1 -0
  326. package/dist/execution/data-channel.js +55 -0
  327. package/dist/execution/data-channel.js.map +1 -0
  328. package/dist/execution/execution.service.d.ts +146 -0
  329. package/dist/execution/execution.service.d.ts.map +1 -1
  330. package/dist/execution/execution.service.js +330 -10
  331. package/dist/execution/execution.service.js.map +1 -1
  332. package/dist/index.d.ts +1 -1
  333. package/dist/index.d.ts.map +1 -1
  334. package/dist/infrastructure/bare-metal-plan.d.ts +208 -0
  335. package/dist/infrastructure/bare-metal-plan.d.ts.map +1 -0
  336. package/dist/infrastructure/bare-metal-plan.js +363 -0
  337. package/dist/infrastructure/bare-metal-plan.js.map +1 -0
  338. package/dist/infrastructure/bare-metal-runner.d.ts +65 -0
  339. package/dist/infrastructure/bare-metal-runner.d.ts.map +1 -0
  340. package/dist/infrastructure/bare-metal-runner.js +354 -0
  341. package/dist/infrastructure/bare-metal-runner.js.map +1 -0
  342. package/dist/infrastructure/config-payload.d.ts +149 -0
  343. package/dist/infrastructure/config-payload.d.ts.map +1 -0
  344. package/dist/infrastructure/config-payload.js +235 -0
  345. package/dist/infrastructure/config-payload.js.map +1 -0
  346. package/dist/infrastructure/container-runtime.d.ts +170 -10
  347. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  348. package/dist/infrastructure/container-runtime.js +565 -52
  349. package/dist/infrastructure/container-runtime.js.map +1 -1
  350. package/dist/infrastructure/gateway-reachability.d.ts +85 -0
  351. package/dist/infrastructure/gateway-reachability.d.ts.map +1 -0
  352. package/dist/infrastructure/gateway-reachability.js +116 -0
  353. package/dist/infrastructure/gateway-reachability.js.map +1 -0
  354. package/dist/infrastructure/gateway-redis-db.d.ts +29 -0
  355. package/dist/infrastructure/gateway-redis-db.d.ts.map +1 -0
  356. package/dist/infrastructure/gateway-redis-db.js +32 -0
  357. package/dist/infrastructure/gateway-redis-db.js.map +1 -0
  358. package/dist/infrastructure/host-ingress-config.d.ts +12 -0
  359. package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
  360. package/dist/infrastructure/host-ingress-config.js +197 -0
  361. package/dist/infrastructure/host-ingress-config.js.map +1 -0
  362. package/dist/infrastructure/host-ingress-lock.d.ts +4 -0
  363. package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
  364. package/dist/infrastructure/host-ingress-lock.js +36 -0
  365. package/dist/infrastructure/host-ingress-lock.js.map +1 -0
  366. package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
  367. package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
  368. package/dist/infrastructure/host-ingress-runtime.js +114 -0
  369. package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
  370. package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
  371. package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
  372. package/dist/infrastructure/host-ingress-takeover.js +142 -0
  373. package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
  374. package/dist/infrastructure/host-ingress-types.d.ts +173 -0
  375. package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
  376. package/dist/infrastructure/host-ingress-types.js +2 -0
  377. package/dist/infrastructure/host-ingress-types.js.map +1 -0
  378. package/dist/infrastructure/host-ingress.service.d.ts +47 -0
  379. package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
  380. package/dist/infrastructure/host-ingress.service.js +514 -0
  381. package/dist/infrastructure/host-ingress.service.js.map +1 -0
  382. package/dist/infrastructure/host-inspection.d.ts +223 -0
  383. package/dist/infrastructure/host-inspection.d.ts.map +1 -0
  384. package/dist/infrastructure/host-inspection.js +501 -0
  385. package/dist/infrastructure/host-inspection.js.map +1 -0
  386. package/dist/infrastructure/infrastructure-gate.d.ts.map +1 -1
  387. package/dist/infrastructure/infrastructure.service.d.ts +223 -7
  388. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  389. package/dist/infrastructure/infrastructure.service.js +500 -93
  390. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  391. package/dist/infrastructure/known-machines.d.ts +76 -0
  392. package/dist/infrastructure/known-machines.d.ts.map +1 -0
  393. package/dist/infrastructure/known-machines.js +94 -0
  394. package/dist/infrastructure/known-machines.js.map +1 -0
  395. package/dist/infrastructure/node-credentials.d.ts +45 -0
  396. package/dist/infrastructure/node-credentials.d.ts.map +1 -0
  397. package/dist/infrastructure/node-credentials.js +80 -0
  398. package/dist/infrastructure/node-credentials.js.map +1 -0
  399. package/dist/infrastructure/orphan-containers.d.ts +99 -0
  400. package/dist/infrastructure/orphan-containers.d.ts.map +1 -0
  401. package/dist/infrastructure/orphan-containers.js +106 -0
  402. package/dist/infrastructure/orphan-containers.js.map +1 -0
  403. package/dist/infrastructure/phantom-endpoint-janitor.d.ts +20 -0
  404. package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -1
  405. package/dist/infrastructure/phantom-endpoint-janitor.js +56 -6
  406. package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -1
  407. package/dist/infrastructure/presets/gateway-openresty.d.ts.map +1 -1
  408. package/dist/infrastructure/presets/gateway-openresty.js +29 -3
  409. package/dist/infrastructure/presets/gateway-openresty.js.map +1 -1
  410. package/dist/infrastructure/presets/minio.d.ts.map +1 -1
  411. package/dist/infrastructure/presets/minio.js +36 -3
  412. package/dist/infrastructure/presets/minio.js.map +1 -1
  413. package/dist/infrastructure/presets/postgres.d.ts.map +1 -1
  414. package/dist/infrastructure/presets/postgres.js +69 -2
  415. package/dist/infrastructure/presets/postgres.js.map +1 -1
  416. package/dist/infrastructure/presets/redis.d.ts.map +1 -1
  417. package/dist/infrastructure/presets/redis.js +13 -0
  418. package/dist/infrastructure/presets/redis.js.map +1 -1
  419. package/dist/infrastructure/presets/registry.d.ts.map +1 -1
  420. package/dist/infrastructure/presets/registry.js +81 -12
  421. package/dist/infrastructure/presets/registry.js.map +1 -1
  422. package/dist/infrastructure/presets/tor.d.ts +38 -0
  423. package/dist/infrastructure/presets/tor.d.ts.map +1 -1
  424. package/dist/infrastructure/presets/tor.js +78 -69
  425. package/dist/infrastructure/presets/tor.js.map +1 -1
  426. package/dist/infrastructure/presets/torrc.d.ts +54 -0
  427. package/dist/infrastructure/presets/torrc.d.ts.map +1 -0
  428. package/dist/infrastructure/presets/torrc.js +153 -0
  429. package/dist/infrastructure/presets/torrc.js.map +1 -0
  430. package/dist/infrastructure/presets/types.d.ts +17 -0
  431. package/dist/infrastructure/presets/types.d.ts.map +1 -1
  432. package/dist/infrastructure/provisioning-outcome.d.ts +85 -0
  433. package/dist/infrastructure/provisioning-outcome.d.ts.map +1 -0
  434. package/dist/infrastructure/provisioning-outcome.js +122 -0
  435. package/dist/infrastructure/provisioning-outcome.js.map +1 -0
  436. package/dist/infrastructure/server-registry.d.ts +27 -0
  437. package/dist/infrastructure/server-registry.d.ts.map +1 -1
  438. package/dist/infrastructure/server-registry.js +60 -5
  439. package/dist/infrastructure/server-registry.js.map +1 -1
  440. package/dist/infrastructure/service-binding.d.ts +60 -0
  441. package/dist/infrastructure/service-binding.d.ts.map +1 -0
  442. package/dist/infrastructure/service-binding.js +90 -0
  443. package/dist/infrastructure/service-binding.js.map +1 -0
  444. package/dist/infrastructure/service-credentials.d.ts +105 -0
  445. package/dist/infrastructure/service-credentials.d.ts.map +1 -0
  446. package/dist/infrastructure/service-credentials.js +141 -0
  447. package/dist/infrastructure/service-credentials.js.map +1 -0
  448. package/dist/infrastructure/service-resolver.d.ts +166 -12
  449. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  450. package/dist/infrastructure/service-resolver.js +535 -82
  451. package/dist/infrastructure/service-resolver.js.map +1 -1
  452. package/dist/infrastructure/shipped-config.d.ts +43 -0
  453. package/dist/infrastructure/shipped-config.d.ts.map +1 -0
  454. package/dist/infrastructure/shipped-config.js +159 -0
  455. package/dist/infrastructure/shipped-config.js.map +1 -0
  456. package/dist/infrastructure/stack-infra-manager.d.ts +16 -1
  457. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  458. package/dist/infrastructure/stack-infra-manager.js +81 -53
  459. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  460. package/dist/infrastructure/types.d.ts +263 -6
  461. package/dist/infrastructure/types.d.ts.map +1 -1
  462. package/dist/mcp/mcp-bridge.d.ts.map +1 -1
  463. package/dist/mcp/mcp-bridge.js.map +1 -1
  464. package/dist/mcp/tool-groups/apps.tools.d.ts +2 -1
  465. package/dist/mcp/tool-groups/apps.tools.d.ts.map +1 -1
  466. package/dist/mcp/tool-groups/apps.tools.js +2 -2
  467. package/dist/mcp/tool-groups/apps.tools.js.map +1 -1
  468. package/dist/mcp/tool-groups/infra.tools.d.ts +16 -2
  469. package/dist/mcp/tool-groups/infra.tools.d.ts.map +1 -1
  470. package/dist/mcp/tool-groups/infra.tools.js +51 -41
  471. package/dist/mcp/tool-groups/infra.tools.js.map +1 -1
  472. package/dist/mcp/tool-groups/kb.tools.d.ts.map +1 -1
  473. package/dist/mcp/tool-groups/kb.tools.js +4 -6
  474. package/dist/mcp/tool-groups/kb.tools.js.map +1 -1
  475. package/dist/mcp/tool-groups/management.tools.d.ts +20 -3
  476. package/dist/mcp/tool-groups/management.tools.d.ts.map +1 -1
  477. package/dist/mcp/tool-groups/management.tools.js +158 -125
  478. package/dist/mcp/tool-groups/management.tools.js.map +1 -1
  479. package/dist/mcp/tool-groups/monitoring.tools.d.ts +10 -1
  480. package/dist/mcp/tool-groups/monitoring.tools.d.ts.map +1 -1
  481. package/dist/mcp/tool-groups/monitoring.tools.js +65 -18
  482. package/dist/mcp/tool-groups/monitoring.tools.js.map +1 -1
  483. package/dist/mcp/unavailable-tools.d.ts +35 -0
  484. package/dist/mcp/unavailable-tools.d.ts.map +1 -0
  485. package/dist/mcp/unavailable-tools.js +59 -0
  486. package/dist/mcp/unavailable-tools.js.map +1 -0
  487. package/dist/monitoring/app-health.indicator.d.ts.map +1 -1
  488. package/dist/monitoring/app-health.indicator.js +12 -0
  489. package/dist/monitoring/app-health.indicator.js.map +1 -1
  490. package/dist/monitoring/desktop-notifier.d.ts +26 -0
  491. package/dist/monitoring/desktop-notifier.d.ts.map +1 -0
  492. package/dist/monitoring/desktop-notifier.js +49 -0
  493. package/dist/monitoring/desktop-notifier.js.map +1 -0
  494. package/dist/monitoring/docker-health.indicator.d.ts +17 -1
  495. package/dist/monitoring/docker-health.indicator.d.ts.map +1 -1
  496. package/dist/monitoring/docker-health.indicator.js +38 -8
  497. package/dist/monitoring/docker-health.indicator.js.map +1 -1
  498. package/dist/monitoring/event-loop-stall.indicator.d.ts +26 -0
  499. package/dist/monitoring/event-loop-stall.indicator.d.ts.map +1 -0
  500. package/dist/monitoring/event-loop-stall.indicator.js +47 -0
  501. package/dist/monitoring/event-loop-stall.indicator.js.map +1 -0
  502. package/dist/monitoring/event-loop-watch.d.ts +124 -0
  503. package/dist/monitoring/event-loop-watch.d.ts.map +1 -0
  504. package/dist/monitoring/event-loop-watch.js +179 -0
  505. package/dist/monitoring/event-loop-watch.js.map +1 -0
  506. package/dist/monitoring/host-disk.d.ts +6 -0
  507. package/dist/monitoring/host-disk.d.ts.map +1 -0
  508. package/dist/monitoring/host-disk.js +26 -0
  509. package/dist/monitoring/host-disk.js.map +1 -0
  510. package/dist/monitoring/log-line.d.ts +188 -0
  511. package/dist/monitoring/log-line.d.ts.map +1 -0
  512. package/dist/monitoring/log-line.js +458 -0
  513. package/dist/monitoring/log-line.js.map +1 -0
  514. package/dist/monitoring/log-manager.d.ts +89 -8
  515. package/dist/monitoring/log-manager.d.ts.map +1 -1
  516. package/dist/monitoring/log-manager.js +246 -77
  517. package/dist/monitoring/log-manager.js.map +1 -1
  518. package/dist/observability/metrics-bridge.d.ts.map +1 -1
  519. package/dist/observability/metrics-server.d.ts.map +1 -1
  520. package/dist/operations.d.ts +16 -0
  521. package/dist/operations.d.ts.map +1 -0
  522. package/dist/operations.js +13 -0
  523. package/dist/operations.js.map +1 -0
  524. package/dist/orchestrator/app-handle.d.ts +157 -2
  525. package/dist/orchestrator/app-handle.d.ts.map +1 -1
  526. package/dist/orchestrator/app-handle.js +165 -3
  527. package/dist/orchestrator/app-handle.js.map +1 -1
  528. package/dist/orchestrator/app-health.d.ts +33 -0
  529. package/dist/orchestrator/app-health.d.ts.map +1 -0
  530. package/dist/orchestrator/app-health.js +74 -0
  531. package/dist/orchestrator/app-health.js.map +1 -0
  532. package/dist/orchestrator/app-traffic.d.ts +14 -0
  533. package/dist/orchestrator/app-traffic.d.ts.map +1 -0
  534. package/dist/orchestrator/app-traffic.js +33 -0
  535. package/dist/orchestrator/app-traffic.js.map +1 -0
  536. package/dist/orchestrator/bootstrap-loader-child.d.ts +19 -0
  537. package/dist/orchestrator/bootstrap-loader-child.d.ts.map +1 -0
  538. package/dist/orchestrator/bootstrap-loader-child.js +43 -0
  539. package/dist/orchestrator/bootstrap-loader-child.js.map +1 -0
  540. package/dist/orchestrator/bootstrap-loader.d.ts +72 -0
  541. package/dist/orchestrator/bootstrap-loader.d.ts.map +1 -1
  542. package/dist/orchestrator/bootstrap-loader.js +350 -5
  543. package/dist/orchestrator/bootstrap-loader.js.map +1 -1
  544. package/dist/orchestrator/bootstrap-process.d.ts +99 -4
  545. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  546. package/dist/orchestrator/bootstrap-process.js +332 -20
  547. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  548. package/dist/orchestrator/build-service.d.ts +6 -12
  549. package/dist/orchestrator/build-service.d.ts.map +1 -1
  550. package/dist/orchestrator/build-service.js +120 -83
  551. package/dist/orchestrator/build-service.js.map +1 -1
  552. package/dist/orchestrator/call-exposed-service.d.ts +7 -0
  553. package/dist/orchestrator/call-exposed-service.d.ts.map +1 -0
  554. package/dist/orchestrator/call-exposed-service.js +50 -0
  555. package/dist/orchestrator/call-exposed-service.js.map +1 -0
  556. package/dist/orchestrator/classic-launcher.d.ts +1 -0
  557. package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
  558. package/dist/orchestrator/classic-launcher.js +40 -4
  559. package/dist/orchestrator/classic-launcher.js.map +1 -1
  560. package/dist/orchestrator/file-watcher.d.ts +79 -1
  561. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  562. package/dist/orchestrator/file-watcher.js +193 -7
  563. package/dist/orchestrator/file-watcher.js.map +1 -1
  564. package/dist/orchestrator/http-routes.d.ts +4 -0
  565. package/dist/orchestrator/http-routes.d.ts.map +1 -0
  566. package/dist/orchestrator/http-routes.js +19 -0
  567. package/dist/orchestrator/http-routes.js.map +1 -0
  568. package/dist/orchestrator/module-worker-process.d.ts.map +1 -1
  569. package/dist/orchestrator/module-worker-process.js +10 -0
  570. package/dist/orchestrator/module-worker-process.js.map +1 -1
  571. package/dist/orchestrator/orchestrator.service.d.ts +385 -11
  572. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  573. package/dist/orchestrator/orchestrator.service.js +1738 -364
  574. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  575. package/dist/orchestrator/owned-pids.d.ts +83 -0
  576. package/dist/orchestrator/owned-pids.d.ts.map +1 -0
  577. package/dist/orchestrator/owned-pids.js +93 -0
  578. package/dist/orchestrator/owned-pids.js.map +1 -0
  579. package/dist/orchestrator/port-conflict.d.ts +102 -0
  580. package/dist/orchestrator/port-conflict.d.ts.map +1 -0
  581. package/dist/orchestrator/port-conflict.js +131 -0
  582. package/dist/orchestrator/port-conflict.js.map +1 -0
  583. package/dist/orchestrator/process-janitor.d.ts +78 -4
  584. package/dist/orchestrator/process-janitor.d.ts.map +1 -1
  585. package/dist/orchestrator/process-janitor.js +246 -30
  586. package/dist/orchestrator/process-janitor.js.map +1 -1
  587. package/dist/orchestrator/ps-metrics.d.ts +37 -0
  588. package/dist/orchestrator/ps-metrics.d.ts.map +1 -0
  589. package/dist/orchestrator/ps-metrics.js +60 -0
  590. package/dist/orchestrator/ps-metrics.js.map +1 -0
  591. package/dist/orchestrator/service-router.d.ts +58 -2
  592. package/dist/orchestrator/service-router.d.ts.map +1 -1
  593. package/dist/orchestrator/service-router.js +157 -25
  594. package/dist/orchestrator/service-router.js.map +1 -1
  595. package/dist/orchestrator/topology-query.d.ts +49 -0
  596. package/dist/orchestrator/topology-query.d.ts.map +1 -0
  597. package/dist/orchestrator/topology-query.js +54 -0
  598. package/dist/orchestrator/topology-query.js.map +1 -0
  599. package/dist/project/artifact-builder.d.ts +174 -3
  600. package/dist/project/artifact-builder.d.ts.map +1 -1
  601. package/dist/project/artifact-builder.js +454 -42
  602. package/dist/project/artifact-builder.js.map +1 -1
  603. package/dist/project/build-decision.d.ts +58 -0
  604. package/dist/project/build-decision.d.ts.map +1 -0
  605. package/dist/project/build-decision.js +59 -0
  606. package/dist/project/build-decision.js.map +1 -0
  607. package/dist/project/config-resolver.d.ts +6 -4
  608. package/dist/project/config-resolver.d.ts.map +1 -1
  609. package/dist/project/config-resolver.js +128 -74
  610. package/dist/project/config-resolver.js.map +1 -1
  611. package/dist/project/declared-config.d.ts +42 -0
  612. package/dist/project/declared-config.d.ts.map +1 -0
  613. package/dist/project/declared-config.js +60 -0
  614. package/dist/project/declared-config.js.map +1 -0
  615. package/dist/project/dependency-analyzer.d.ts.map +1 -1
  616. package/dist/project/dependency-analyzer.js.map +1 -1
  617. package/dist/project/deploy-phases.d.ts +35 -0
  618. package/dist/project/deploy-phases.d.ts.map +1 -0
  619. package/dist/project/deploy-phases.js +75 -0
  620. package/dist/project/deploy-phases.js.map +1 -0
  621. package/dist/project/exec-in-group.d.ts +49 -0
  622. package/dist/project/exec-in-group.d.ts.map +1 -0
  623. package/dist/project/exec-in-group.js +100 -0
  624. package/dist/project/exec-in-group.js.map +1 -0
  625. package/dist/project/node-app-config.d.ts +101 -0
  626. package/dist/project/node-app-config.d.ts.map +1 -0
  627. package/dist/project/node-app-config.js +134 -0
  628. package/dist/project/node-app-config.js.map +1 -0
  629. package/dist/project/node-app-health.d.ts +76 -0
  630. package/dist/project/node-app-health.d.ts.map +1 -0
  631. package/dist/project/node-app-health.js +119 -0
  632. package/dist/project/node-app-health.js.map +1 -0
  633. package/dist/project/operator-account.d.ts +293 -0
  634. package/dist/project/operator-account.d.ts.map +1 -0
  635. package/dist/project/operator-account.js +373 -0
  636. package/dist/project/operator-account.js.map +1 -0
  637. package/dist/project/registry.d.ts +45 -8
  638. package/dist/project/registry.d.ts.map +1 -1
  639. package/dist/project/registry.js +214 -64
  640. package/dist/project/registry.js.map +1 -1
  641. package/dist/project/requirements-scanner.d.ts +1 -0
  642. package/dist/project/requirements-scanner.d.ts.map +1 -1
  643. package/dist/project/requirements-scanner.js +28 -3
  644. package/dist/project/requirements-scanner.js.map +1 -1
  645. package/dist/project/stack-env.d.ts +37 -0
  646. package/dist/project/stack-env.d.ts.map +1 -0
  647. package/dist/project/stack-env.js +85 -0
  648. package/dist/project/stack-env.js.map +1 -0
  649. package/dist/project/stand-containers.d.ts +11 -0
  650. package/dist/project/stand-containers.d.ts.map +1 -0
  651. package/dist/project/stand-containers.js +27 -0
  652. package/dist/project/stand-containers.js.map +1 -0
  653. package/dist/project/working-tree.d.ts +62 -0
  654. package/dist/project/working-tree.d.ts.map +1 -0
  655. package/dist/project/working-tree.js +101 -0
  656. package/dist/project/working-tree.js.map +1 -0
  657. package/dist/release/artifact-store.d.ts +360 -0
  658. package/dist/release/artifact-store.d.ts.map +1 -0
  659. package/dist/release/artifact-store.js +1040 -0
  660. package/dist/release/artifact-store.js.map +1 -0
  661. package/dist/release/attest-on-node.d.ts +93 -0
  662. package/dist/release/attest-on-node.d.ts.map +1 -0
  663. package/dist/release/attest-on-node.js +207 -0
  664. package/dist/release/attest-on-node.js.map +1 -0
  665. package/dist/release/attest.d.ts +135 -0
  666. package/dist/release/attest.d.ts.map +1 -0
  667. package/dist/release/attest.js +199 -0
  668. package/dist/release/attest.js.map +1 -0
  669. package/dist/release/build-run.d.ts +151 -0
  670. package/dist/release/build-run.d.ts.map +1 -0
  671. package/dist/release/build-run.js +609 -0
  672. package/dist/release/build-run.js.map +1 -0
  673. package/dist/release/builder.d.ts +57 -0
  674. package/dist/release/builder.d.ts.map +1 -0
  675. package/dist/release/builder.js +120 -0
  676. package/dist/release/builder.js.map +1 -0
  677. package/dist/release/daemon-omni.d.ts +41 -0
  678. package/dist/release/daemon-omni.d.ts.map +1 -0
  679. package/dist/release/daemon-omni.js +59 -0
  680. package/dist/release/daemon-omni.js.map +1 -0
  681. package/dist/release/definition-inputs.d.ts +34 -0
  682. package/dist/release/definition-inputs.d.ts.map +1 -0
  683. package/dist/release/definition-inputs.js +90 -0
  684. package/dist/release/definition-inputs.js.map +1 -0
  685. package/dist/release/delivered.d.ts +53 -0
  686. package/dist/release/delivered.d.ts.map +1 -0
  687. package/dist/release/delivered.js +81 -0
  688. package/dist/release/delivered.js.map +1 -0
  689. package/dist/release/layout.d.ts +61 -0
  690. package/dist/release/layout.d.ts.map +1 -0
  691. package/dist/release/layout.js +114 -0
  692. package/dist/release/layout.js.map +1 -0
  693. package/dist/release/load.d.ts +44 -0
  694. package/dist/release/load.d.ts.map +1 -0
  695. package/dist/release/load.js +84 -0
  696. package/dist/release/load.js.map +1 -0
  697. package/dist/release/manifest.d.ts +299 -0
  698. package/dist/release/manifest.d.ts.map +1 -0
  699. package/dist/release/manifest.js +176 -0
  700. package/dist/release/manifest.js.map +1 -0
  701. package/dist/release/migrations.d.ts +32 -0
  702. package/dist/release/migrations.d.ts.map +1 -0
  703. package/dist/release/migrations.js +51 -0
  704. package/dist/release/migrations.js.map +1 -0
  705. package/dist/release/publish.d.ts +71 -0
  706. package/dist/release/publish.d.ts.map +1 -0
  707. package/dist/release/publish.js +102 -0
  708. package/dist/release/publish.js.map +1 -0
  709. package/dist/release/store.d.ts +174 -0
  710. package/dist/release/store.d.ts.map +1 -0
  711. package/dist/release/store.js +257 -0
  712. package/dist/release/store.js.map +1 -0
  713. package/dist/services/alert.rpc-service.d.ts +11 -15
  714. package/dist/services/alert.rpc-service.d.ts.map +1 -1
  715. package/dist/services/alert.rpc-service.js +29 -14
  716. package/dist/services/alert.rpc-service.js.map +1 -1
  717. package/dist/services/alert.service.d.ts +96 -59
  718. package/dist/services/alert.service.d.ts.map +1 -1
  719. package/dist/services/alert.service.js +455 -70
  720. package/dist/services/alert.service.js.map +1 -1
  721. package/dist/services/anonymous-input.d.ts +26 -0
  722. package/dist/services/anonymous-input.d.ts.map +1 -0
  723. package/dist/services/anonymous-input.js +44 -0
  724. package/dist/services/anonymous-input.js.map +1 -0
  725. package/dist/services/audit.rpc-service.d.ts +27 -0
  726. package/dist/services/audit.rpc-service.d.ts.map +1 -0
  727. package/dist/services/audit.rpc-service.js +57 -0
  728. package/dist/services/audit.rpc-service.js.map +1 -0
  729. package/dist/services/audit.service.d.ts +165 -0
  730. package/dist/services/audit.service.d.ts.map +1 -0
  731. package/dist/services/audit.service.js +242 -0
  732. package/dist/services/audit.service.js.map +1 -0
  733. package/dist/services/auth-context.d.ts +21 -1
  734. package/dist/services/auth-context.d.ts.map +1 -1
  735. package/dist/services/auth-context.js +51 -5
  736. package/dist/services/auth-context.js.map +1 -1
  737. package/dist/services/auth.rpc-service.d.ts +0 -1
  738. package/dist/services/auth.rpc-service.d.ts.map +1 -1
  739. package/dist/services/auth.rpc-service.js +23 -9
  740. package/dist/services/auth.rpc-service.js.map +1 -1
  741. package/dist/services/auth.service.d.ts +47 -33
  742. package/dist/services/auth.service.d.ts.map +1 -1
  743. package/dist/services/auth.service.js +155 -23
  744. package/dist/services/auth.service.js.map +1 -1
  745. package/dist/services/backup-pipeline.d.ts +97 -0
  746. package/dist/services/backup-pipeline.d.ts.map +1 -0
  747. package/dist/services/backup-pipeline.js +286 -0
  748. package/dist/services/backup-pipeline.js.map +1 -0
  749. package/dist/services/backup-schedule.d.ts +69 -0
  750. package/dist/services/backup-schedule.d.ts.map +1 -0
  751. package/dist/services/backup-schedule.js +132 -0
  752. package/dist/services/backup-schedule.js.map +1 -0
  753. package/dist/services/backup.rpc-service.d.ts +31 -2
  754. package/dist/services/backup.rpc-service.d.ts.map +1 -1
  755. package/dist/services/backup.rpc-service.js +53 -0
  756. package/dist/services/backup.rpc-service.js.map +1 -1
  757. package/dist/services/backup.service.d.ts +458 -14
  758. package/dist/services/backup.service.d.ts.map +1 -1
  759. package/dist/services/backup.service.js +1368 -170
  760. package/dist/services/backup.service.js.map +1 -1
  761. package/dist/services/bundle-build-worker.d.ts +19 -0
  762. package/dist/services/bundle-build-worker.d.ts.map +1 -0
  763. package/dist/services/bundle-build-worker.js +40 -0
  764. package/dist/services/bundle-build-worker.js.map +1 -0
  765. package/dist/services/bundle-builder.d.ts +490 -0
  766. package/dist/services/bundle-builder.d.ts.map +1 -0
  767. package/dist/services/bundle-builder.js +1159 -0
  768. package/dist/services/bundle-builder.js.map +1 -0
  769. package/dist/services/bundle-worker-protocol.d.ts +19 -0
  770. package/dist/services/bundle-worker-protocol.d.ts.map +1 -0
  771. package/dist/services/bundle-worker-protocol.js +32 -0
  772. package/dist/services/bundle-worker-protocol.js.map +1 -0
  773. package/dist/services/deploy.rpc-service.d.ts +4 -1
  774. package/dist/services/deploy.rpc-service.d.ts.map +1 -1
  775. package/dist/services/deploy.rpc-service.js +10 -0
  776. package/dist/services/deploy.rpc-service.js.map +1 -1
  777. package/dist/services/deploy.service.d.ts +14 -24
  778. package/dist/services/deploy.service.d.ts.map +1 -1
  779. package/dist/services/deploy.service.js +46 -5
  780. package/dist/services/deploy.service.js.map +1 -1
  781. package/dist/services/discovery.rpc-service.d.ts +2 -1
  782. package/dist/services/discovery.rpc-service.d.ts.map +1 -1
  783. package/dist/services/discovery.rpc-service.js.map +1 -1
  784. package/dist/services/discovery.service.d.ts +32 -28
  785. package/dist/services/discovery.service.d.ts.map +1 -1
  786. package/dist/services/discovery.service.js +108 -133
  787. package/dist/services/discovery.service.js.map +1 -1
  788. package/dist/services/event-broadcaster.rpc-service.d.ts +36 -23
  789. package/dist/services/event-broadcaster.rpc-service.d.ts.map +1 -1
  790. package/dist/services/event-broadcaster.rpc-service.js +70 -32
  791. package/dist/services/event-broadcaster.rpc-service.js.map +1 -1
  792. package/dist/services/event-broadcaster.service.d.ts.map +1 -1
  793. package/dist/services/event-broadcaster.service.js.map +1 -1
  794. package/dist/services/fleet.rpc-service.d.ts +2 -1
  795. package/dist/services/fleet.rpc-service.d.ts.map +1 -1
  796. package/dist/services/fleet.rpc-service.js +3 -1
  797. package/dist/services/fleet.rpc-service.js.map +1 -1
  798. package/dist/services/fleet.service.d.ts +32 -34
  799. package/dist/services/fleet.service.d.ts.map +1 -1
  800. package/dist/services/fleet.service.js +66 -10
  801. package/dist/services/fleet.service.js.map +1 -1
  802. package/dist/services/health-check.rpc-service.d.ts +2 -1
  803. package/dist/services/health-check.rpc-service.d.ts.map +1 -1
  804. package/dist/services/health-check.rpc-service.js.map +1 -1
  805. package/dist/services/health-check.service.d.ts +50 -36
  806. package/dist/services/health-check.service.d.ts.map +1 -1
  807. package/dist/services/health-check.service.js +179 -182
  808. package/dist/services/health-check.service.js.map +1 -1
  809. package/dist/services/host-operation-barrier.d.ts +8 -0
  810. package/dist/services/host-operation-barrier.d.ts.map +1 -0
  811. package/dist/services/host-operation-barrier.js +44 -0
  812. package/dist/services/host-operation-barrier.js.map +1 -0
  813. package/dist/services/host-upgrade.d.ts +129 -0
  814. package/dist/services/host-upgrade.d.ts.map +1 -0
  815. package/dist/services/host-upgrade.js +352 -0
  816. package/dist/services/host-upgrade.js.map +1 -0
  817. package/dist/services/infrastructure.rpc-service.d.ts +312 -2
  818. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  819. package/dist/services/infrastructure.rpc-service.js +584 -11
  820. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  821. package/dist/services/kubernetes.rpc-service.d.ts +2 -1
  822. package/dist/services/kubernetes.rpc-service.d.ts.map +1 -1
  823. package/dist/services/kubernetes.rpc-service.js.map +1 -1
  824. package/dist/services/kubernetes.service.d.ts +5 -39
  825. package/dist/services/kubernetes.service.d.ts.map +1 -1
  826. package/dist/services/kubernetes.service.js +29 -5
  827. package/dist/services/kubernetes.service.js.map +1 -1
  828. package/dist/services/local-bundle.d.ts +160 -0
  829. package/dist/services/local-bundle.d.ts.map +1 -0
  830. package/dist/services/local-bundle.js +242 -0
  831. package/dist/services/local-bundle.js.map +1 -0
  832. package/dist/services/lockout.d.ts +28 -0
  833. package/dist/services/lockout.d.ts.map +1 -0
  834. package/dist/services/lockout.js +41 -0
  835. package/dist/services/lockout.js.map +1 -0
  836. package/dist/services/log-collector.rpc-service.d.ts +16 -0
  837. package/dist/services/log-collector.rpc-service.d.ts.map +1 -1
  838. package/dist/services/log-collector.rpc-service.js +16 -0
  839. package/dist/services/log-collector.rpc-service.js.map +1 -1
  840. package/dist/services/log-collector.service.d.ts +172 -54
  841. package/dist/services/log-collector.service.d.ts.map +1 -1
  842. package/dist/services/log-collector.service.js +492 -102
  843. package/dist/services/log-collector.service.js.map +1 -1
  844. package/dist/services/log-retention.d.ts +50 -0
  845. package/dist/services/log-retention.d.ts.map +1 -0
  846. package/dist/services/log-retention.js +52 -0
  847. package/dist/services/log-retention.js.map +1 -0
  848. package/dist/services/maintenance-lock.d.ts +162 -0
  849. package/dist/services/maintenance-lock.d.ts.map +1 -0
  850. package/dist/services/maintenance-lock.js +316 -0
  851. package/dist/services/maintenance-lock.js.map +1 -0
  852. package/dist/services/master-address.d.ts +107 -0
  853. package/dist/services/master-address.d.ts.map +1 -0
  854. package/dist/services/master-address.js +154 -0
  855. package/dist/services/master-address.js.map +1 -0
  856. package/dist/services/migration-output.d.ts +16 -0
  857. package/dist/services/migration-output.d.ts.map +1 -0
  858. package/dist/services/migration-output.js +22 -0
  859. package/dist/services/migration-output.js.map +1 -0
  860. package/dist/services/netron-telemetry-transport.d.ts.map +1 -1
  861. package/dist/services/netron-telemetry-transport.js.map +1 -1
  862. package/dist/services/node-deploy-lease.d.ts +171 -0
  863. package/dist/services/node-deploy-lease.d.ts.map +1 -0
  864. package/dist/services/node-deploy-lease.js +460 -0
  865. package/dist/services/node-deploy-lease.js.map +1 -0
  866. package/dist/services/node-health.repository.d.ts +63 -4
  867. package/dist/services/node-health.repository.d.ts.map +1 -1
  868. package/dist/services/node-health.repository.js +108 -67
  869. package/dist/services/node-health.repository.js.map +1 -1
  870. package/dist/services/node-manager.rpc-service.d.ts +360 -10
  871. package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
  872. package/dist/services/node-manager.rpc-service.js +754 -34
  873. package/dist/services/node-manager.rpc-service.js.map +1 -1
  874. package/dist/services/node-manager.service.d.ts +267 -95
  875. package/dist/services/node-manager.service.d.ts.map +1 -1
  876. package/dist/services/node-manager.service.js +805 -103
  877. package/dist/services/node-manager.service.js.map +1 -1
  878. package/dist/services/node-upgrade.d.ts +129 -0
  879. package/dist/services/node-upgrade.d.ts.map +1 -0
  880. package/dist/services/node-upgrade.js +161 -0
  881. package/dist/services/node-upgrade.js.map +1 -0
  882. package/dist/services/node-upgrade.service.d.ts +232 -0
  883. package/dist/services/node-upgrade.service.d.ts.map +1 -0
  884. package/dist/services/node-upgrade.service.js +468 -0
  885. package/dist/services/node-upgrade.service.js.map +1 -0
  886. package/dist/services/pipeline.rpc-service.d.ts +6 -1
  887. package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
  888. package/dist/services/pipeline.rpc-service.js +9 -0
  889. package/dist/services/pipeline.rpc-service.js.map +1 -1
  890. package/dist/services/pipeline.service.d.ts +17 -46
  891. package/dist/services/pipeline.service.d.ts.map +1 -1
  892. package/dist/services/pipeline.service.js +84 -9
  893. package/dist/services/pipeline.service.js.map +1 -1
  894. package/dist/services/project.rpc-service.d.ts +140 -5
  895. package/dist/services/project.rpc-service.d.ts.map +1 -1
  896. package/dist/services/project.rpc-service.js +260 -22
  897. package/dist/services/project.rpc-service.js.map +1 -1
  898. package/dist/services/project.service.d.ts +687 -15
  899. package/dist/services/project.service.d.ts.map +1 -1
  900. package/dist/services/project.service.js +2846 -337
  901. package/dist/services/project.service.js.map +1 -1
  902. package/dist/services/redeploy-decision.d.ts +176 -0
  903. package/dist/services/redeploy-decision.d.ts.map +1 -0
  904. package/dist/services/redeploy-decision.js +142 -0
  905. package/dist/services/redeploy-decision.js.map +1 -0
  906. package/dist/services/release.rpc-service.d.ts +159 -0
  907. package/dist/services/release.rpc-service.d.ts.map +1 -0
  908. package/dist/services/release.rpc-service.js +395 -0
  909. package/dist/services/release.rpc-service.js.map +1 -0
  910. package/dist/services/release.service.d.ts +114 -0
  911. package/dist/services/release.service.d.ts.map +1 -0
  912. package/dist/services/release.service.js +208 -0
  913. package/dist/services/release.service.js.map +1 -0
  914. package/dist/services/remote-deployer.service.d.ts +580 -8
  915. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  916. package/dist/services/remote-deployer.service.js +1786 -169
  917. package/dist/services/remote-deployer.service.js.map +1 -1
  918. package/dist/services/remote-ops.service.d.ts +51 -9
  919. package/dist/services/remote-ops.service.d.ts.map +1 -1
  920. package/dist/services/remote-ops.service.js +235 -39
  921. package/dist/services/remote-ops.service.js.map +1 -1
  922. package/dist/services/remote-provisioner.d.ts +124 -0
  923. package/dist/services/remote-provisioner.d.ts.map +1 -0
  924. package/dist/services/remote-provisioner.js +258 -0
  925. package/dist/services/remote-provisioner.js.map +1 -0
  926. package/dist/services/secrets.rpc-service.d.ts +51 -2
  927. package/dist/services/secrets.rpc-service.d.ts.map +1 -1
  928. package/dist/services/secrets.rpc-service.js +81 -2
  929. package/dist/services/secrets.rpc-service.js.map +1 -1
  930. package/dist/services/secrets.service.d.ts +108 -9
  931. package/dist/services/secrets.service.d.ts.map +1 -1
  932. package/dist/services/secrets.service.js +313 -48
  933. package/dist/services/secrets.service.js.map +1 -1
  934. package/dist/services/slave-storage.service.d.ts +107 -0
  935. package/dist/services/slave-storage.service.d.ts.map +1 -1
  936. package/dist/services/slave-storage.service.js +171 -2
  937. package/dist/services/slave-storage.service.js.map +1 -1
  938. package/dist/services/static-carry-forward.d.ts +110 -0
  939. package/dist/services/static-carry-forward.d.ts.map +1 -0
  940. package/dist/services/static-carry-forward.js +433 -0
  941. package/dist/services/static-carry-forward.js.map +1 -0
  942. package/dist/services/sync-policy.d.ts +167 -0
  943. package/dist/services/sync-policy.d.ts.map +1 -0
  944. package/dist/services/sync-policy.js +161 -0
  945. package/dist/services/sync-policy.js.map +1 -0
  946. package/dist/services/sync-summary.d.ts +39 -0
  947. package/dist/services/sync-summary.d.ts.map +1 -0
  948. package/dist/services/sync-summary.js +62 -0
  949. package/dist/services/sync-summary.js.map +1 -0
  950. package/dist/services/sync.rpc-service.d.ts +19 -7
  951. package/dist/services/sync.rpc-service.d.ts.map +1 -1
  952. package/dist/services/sync.rpc-service.js +36 -5
  953. package/dist/services/sync.rpc-service.js.map +1 -1
  954. package/dist/services/sync.service.d.ts +350 -18
  955. package/dist/services/sync.service.d.ts.map +1 -1
  956. package/dist/services/sync.service.js +864 -116
  957. package/dist/services/sync.service.js.map +1 -1
  958. package/dist/services/system-info.rpc-service.d.ts +2 -1
  959. package/dist/services/system-info.rpc-service.d.ts.map +1 -1
  960. package/dist/services/system-info.rpc-service.js.map +1 -1
  961. package/dist/services/system-info.service.d.ts +56 -68
  962. package/dist/services/system-info.service.d.ts.map +1 -1
  963. package/dist/services/system-info.service.js +240 -127
  964. package/dist/services/system-info.service.js.map +1 -1
  965. package/dist/services/telemetry.rpc-service.d.ts.map +1 -1
  966. package/dist/services/telemetry.rpc-service.js +9 -3
  967. package/dist/services/telemetry.rpc-service.js.map +1 -1
  968. package/dist/services/telemetry.service.d.ts +4 -2
  969. package/dist/services/telemetry.service.d.ts.map +1 -1
  970. package/dist/services/telemetry.service.js +4 -2
  971. package/dist/services/telemetry.service.js.map +1 -1
  972. package/dist/services/trace-collector.rpc-service.d.ts +2 -1
  973. package/dist/services/trace-collector.rpc-service.d.ts.map +1 -1
  974. package/dist/services/trace-collector.rpc-service.js.map +1 -1
  975. package/dist/services/trace-collector.service.d.ts +2 -41
  976. package/dist/services/trace-collector.service.d.ts.map +1 -1
  977. package/dist/services/trace-collector.service.js +27 -7
  978. package/dist/services/trace-collector.service.js.map +1 -1
  979. package/dist/services/wait-for-postgres.d.ts +28 -0
  980. package/dist/services/wait-for-postgres.d.ts.map +1 -0
  981. package/dist/services/wait-for-postgres.js +77 -0
  982. package/dist/services/wait-for-postgres.js.map +1 -0
  983. package/dist/shared/alert-expression.d.ts +60 -0
  984. package/dist/shared/alert-expression.d.ts.map +1 -0
  985. package/dist/shared/alert-expression.js +124 -0
  986. package/dist/shared/alert-expression.js.map +1 -0
  987. package/dist/shared/audit-outcome.d.ts +39 -0
  988. package/dist/shared/audit-outcome.d.ts.map +1 -0
  989. package/dist/shared/audit-outcome.js +45 -0
  990. package/dist/shared/audit-outcome.js.map +1 -0
  991. package/dist/shared/build-freshness.d.ts +59 -0
  992. package/dist/shared/build-freshness.d.ts.map +1 -0
  993. package/dist/shared/build-freshness.js +113 -0
  994. package/dist/shared/build-freshness.js.map +1 -0
  995. package/dist/shared/build-stamp.d.ts +26 -0
  996. package/dist/shared/build-stamp.d.ts.map +1 -0
  997. package/dist/shared/build-stamp.js +36 -0
  998. package/dist/shared/build-stamp.js.map +1 -0
  999. package/dist/shared/describe-error.d.ts +22 -0
  1000. package/dist/shared/describe-error.d.ts.map +1 -0
  1001. package/dist/shared/describe-error.js +39 -0
  1002. package/dist/shared/describe-error.js.map +1 -0
  1003. package/dist/shared/dto/alerts.d.ts +101 -0
  1004. package/dist/shared/dto/alerts.d.ts.map +1 -0
  1005. package/dist/shared/dto/alerts.js +9 -0
  1006. package/dist/shared/dto/alerts.js.map +1 -0
  1007. package/dist/shared/dto/auth.d.ts +49 -0
  1008. package/dist/shared/dto/auth.d.ts.map +1 -0
  1009. package/dist/shared/dto/auth.js +14 -0
  1010. package/dist/shared/dto/auth.js.map +1 -0
  1011. package/dist/shared/dto/backups.d.ts +16 -0
  1012. package/dist/shared/dto/backups.d.ts.map +1 -0
  1013. package/dist/shared/dto/backups.js +9 -0
  1014. package/dist/shared/dto/backups.js.map +1 -0
  1015. package/dist/shared/dto/deploy.d.ts +28 -0
  1016. package/dist/shared/dto/deploy.d.ts.map +1 -0
  1017. package/dist/shared/dto/deploy.js +8 -0
  1018. package/dist/shared/dto/deploy.js.map +1 -0
  1019. package/dist/shared/dto/discovery.d.ts +24 -0
  1020. package/dist/shared/dto/discovery.d.ts.map +1 -0
  1021. package/dist/shared/dto/discovery.js +9 -0
  1022. package/dist/shared/dto/discovery.js.map +1 -0
  1023. package/dist/shared/dto/fleet.d.ts +35 -0
  1024. package/dist/shared/dto/fleet.d.ts.map +1 -0
  1025. package/dist/shared/dto/fleet.js +8 -0
  1026. package/dist/shared/dto/fleet.js.map +1 -0
  1027. package/dist/shared/dto/health.d.ts +26 -0
  1028. package/dist/shared/dto/health.d.ts.map +1 -0
  1029. package/dist/shared/dto/health.js +9 -0
  1030. package/dist/shared/dto/health.js.map +1 -0
  1031. package/dist/shared/dto/kubernetes.d.ts +44 -0
  1032. package/dist/shared/dto/kubernetes.d.ts.map +1 -0
  1033. package/dist/shared/dto/kubernetes.js +9 -0
  1034. package/dist/shared/dto/kubernetes.js.map +1 -0
  1035. package/dist/shared/dto/logs.d.ts +77 -0
  1036. package/dist/shared/dto/logs.d.ts.map +1 -0
  1037. package/dist/shared/dto/logs.js +10 -0
  1038. package/dist/shared/dto/logs.js.map +1 -0
  1039. package/dist/shared/dto/metrics.d.ts +65 -0
  1040. package/dist/shared/dto/metrics.d.ts.map +1 -0
  1041. package/dist/shared/dto/metrics.js +17 -0
  1042. package/dist/shared/dto/metrics.js.map +1 -0
  1043. package/dist/shared/dto/nodes.d.ts +347 -0
  1044. package/dist/shared/dto/nodes.d.ts.map +1 -0
  1045. package/dist/shared/dto/nodes.js +8 -0
  1046. package/dist/shared/dto/nodes.js.map +1 -0
  1047. package/dist/shared/dto/pipelines.d.ts +53 -0
  1048. package/dist/shared/dto/pipelines.d.ts.map +1 -0
  1049. package/dist/shared/dto/pipelines.js +9 -0
  1050. package/dist/shared/dto/pipelines.js.map +1 -0
  1051. package/dist/shared/dto/project.d.ts +142 -8
  1052. package/dist/shared/dto/project.d.ts.map +1 -1
  1053. package/dist/shared/dto/services.d.ts +858 -7
  1054. package/dist/shared/dto/services.d.ts.map +1 -1
  1055. package/dist/shared/dto/system-info.d.ts +93 -0
  1056. package/dist/shared/dto/system-info.d.ts.map +1 -0
  1057. package/dist/shared/dto/system-info.js +9 -0
  1058. package/dist/shared/dto/system-info.js.map +1 -0
  1059. package/dist/shared/dto/traces.d.ts +49 -0
  1060. package/dist/shared/dto/traces.d.ts.map +1 -0
  1061. package/dist/shared/dto/traces.js +9 -0
  1062. package/dist/shared/dto/traces.js.map +1 -0
  1063. package/dist/shared/env-config.d.ts +74 -0
  1064. package/dist/shared/env-config.d.ts.map +1 -0
  1065. package/dist/shared/env-config.js +99 -0
  1066. package/dist/shared/env-config.js.map +1 -0
  1067. package/dist/shared/events.d.ts +45 -39
  1068. package/dist/shared/events.d.ts.map +1 -1
  1069. package/dist/shared/events.js +6 -0
  1070. package/dist/shared/events.js.map +1 -1
  1071. package/dist/shared/format.d.ts +1 -1
  1072. package/dist/shared/format.d.ts.map +1 -1
  1073. package/dist/shared/format.js +4 -0
  1074. package/dist/shared/format.js.map +1 -1
  1075. package/dist/shared/local-infra-host.d.ts +28 -0
  1076. package/dist/shared/local-infra-host.d.ts.map +1 -0
  1077. package/dist/shared/local-infra-host.js +28 -0
  1078. package/dist/shared/local-infra-host.js.map +1 -0
  1079. package/dist/shared/node-check.d.ts +37 -0
  1080. package/dist/shared/node-check.d.ts.map +1 -0
  1081. package/dist/shared/node-check.js +41 -0
  1082. package/dist/shared/node-check.js.map +1 -0
  1083. package/dist/shared/paths.d.ts +29 -0
  1084. package/dist/shared/paths.d.ts.map +1 -0
  1085. package/dist/shared/paths.js +54 -0
  1086. package/dist/shared/paths.js.map +1 -0
  1087. package/dist/shared/pnpm.d.ts +29 -0
  1088. package/dist/shared/pnpm.d.ts.map +1 -0
  1089. package/dist/shared/pnpm.js +57 -0
  1090. package/dist/shared/pnpm.js.map +1 -0
  1091. package/dist/shared/private-files.d.ts +29 -0
  1092. package/dist/shared/private-files.d.ts.map +1 -0
  1093. package/dist/shared/private-files.js +109 -0
  1094. package/dist/shared/private-files.js.map +1 -0
  1095. package/dist/shared/redact-env.d.ts +24 -0
  1096. package/dist/shared/redact-env.d.ts.map +1 -0
  1097. package/dist/shared/redact-env.js +36 -0
  1098. package/dist/shared/redact-env.js.map +1 -0
  1099. package/dist/shared/release-reading.d.ts +85 -0
  1100. package/dist/shared/release-reading.d.ts.map +1 -0
  1101. package/dist/shared/release-reading.js +81 -0
  1102. package/dist/shared/release-reading.js.map +1 -0
  1103. package/dist/shared/roles.d.ts +58 -3
  1104. package/dist/shared/roles.d.ts.map +1 -1
  1105. package/dist/shared/roles.js +55 -0
  1106. package/dist/shared/roles.js.map +1 -1
  1107. package/dist/shared/rpcauth.d.ts +13 -0
  1108. package/dist/shared/rpcauth.d.ts.map +1 -0
  1109. package/dist/shared/rpcauth.js +23 -0
  1110. package/dist/shared/rpcauth.js.map +1 -0
  1111. package/dist/shared/shell-escape.d.ts +9 -0
  1112. package/dist/shared/shell-escape.d.ts.map +1 -0
  1113. package/dist/shared/shell-escape.js +11 -0
  1114. package/dist/shared/shell-escape.js.map +1 -0
  1115. package/dist/shared/sync-reading.d.ts +45 -0
  1116. package/dist/shared/sync-reading.d.ts.map +1 -0
  1117. package/dist/shared/sync-reading.js +42 -0
  1118. package/dist/shared/sync-reading.js.map +1 -0
  1119. package/dist/shared/tokens.d.ts +19 -0
  1120. package/dist/shared/tokens.d.ts.map +1 -1
  1121. package/dist/shared/tokens.js +28 -0
  1122. package/dist/shared/tokens.js.map +1 -1
  1123. package/dist/webapp/webapp.service.d.ts +33 -2
  1124. package/dist/webapp/webapp.service.d.ts.map +1 -1
  1125. package/dist/webapp/webapp.service.js +143 -31
  1126. package/dist/webapp/webapp.service.js.map +1 -1
  1127. package/dist/workers/health-monitor-process.d.ts.map +1 -1
  1128. package/dist/workers/health-monitor-process.js +10 -0
  1129. package/dist/workers/health-monitor-process.js.map +1 -1
  1130. package/dist/workers/health-monitor.service.d.ts +45 -3
  1131. package/dist/workers/health-monitor.service.d.ts.map +1 -1
  1132. package/dist/workers/health-monitor.service.js +152 -25
  1133. package/dist/workers/health-monitor.service.js.map +1 -1
  1134. package/dist/workers/system-worker-manager.d.ts +43 -0
  1135. package/dist/workers/system-worker-manager.d.ts.map +1 -1
  1136. package/dist/workers/system-worker-manager.js +150 -3
  1137. package/dist/workers/system-worker-manager.js.map +1 -1
  1138. package/dist/workers/types.d.ts +8 -2
  1139. package/dist/workers/types.d.ts.map +1 -1
  1140. package/package.json +68 -30
  1141. package/webapp/dist/BUILD.json +5 -0
  1142. package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
  1143. package/webapp/dist/assets/Grid-DizFZYue.js +1 -0
  1144. package/webapp/dist/assets/Switch-Bfiqzx8l.js +1 -0
  1145. package/webapp/dist/assets/alerts-DH_RVRS3.js +1 -0
  1146. package/webapp/dist/assets/apps-B96355sz.js +1 -0
  1147. package/webapp/dist/assets/audit-CYGtbi4k.js +1 -0
  1148. package/webapp/dist/assets/client-BmqFExWT.js +1 -0
  1149. package/webapp/dist/assets/constants-veKGFkC6.js +1 -0
  1150. package/webapp/dist/assets/containers-B_TpThln.js +2 -0
  1151. package/webapp/dist/assets/daemon-memory-CCPZ4cV_.js +1 -0
  1152. package/webapp/dist/assets/dashboard-DHf2_65N.js +1 -0
  1153. package/webapp/dist/assets/dashboard-builder-CWY2pjeG.js +1 -0
  1154. package/webapp/dist/assets/deploy-release-dialog-Dp-zpSAd.js +1 -0
  1155. package/webapp/dist/assets/deployments-tJI6O3fK.js +1 -0
  1156. package/webapp/dist/assets/detail-B2zP1Hto.js +8 -0
  1157. package/webapp/dist/assets/detail-CoIrwmsy.js +1 -0
  1158. package/webapp/dist/assets/detail-DWaGaOtL.js +2 -0
  1159. package/webapp/dist/assets/formatters-BqjL73N3.js +1 -0
  1160. package/webapp/dist/assets/index-Dvo0iprx.css +1 -0
  1161. package/webapp/dist/assets/index-vMnY_4jR.js +412 -0
  1162. package/webapp/dist/assets/logs-DTRjOfX8.js +12 -0
  1163. package/webapp/dist/assets/maplibre-gl-DowHoZAx.js +814 -0
  1164. package/webapp/dist/assets/metrics-UCajtdox.js +2 -0
  1165. package/webapp/dist/assets/nodes-DuTVU0f6.js +7 -0
  1166. package/webapp/dist/assets/pipelines-C8BeDcAl.js +4 -0
  1167. package/webapp/dist/assets/projects-Dp_zFfLY.js +1 -0
  1168. package/webapp/dist/assets/react-DlmbjZJV.js +1 -0
  1169. package/webapp/dist/assets/react-apexcharts.esm-C8pn45ml.js +97 -0
  1170. package/webapp/dist/assets/release-bits-BzTKz5fM.js +1 -0
  1171. package/webapp/dist/assets/release-build-panel-DcW9YcXQ.js +1 -0
  1172. package/webapp/dist/assets/releases-B4hcr1bE.js +2 -0
  1173. package/webapp/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  1174. package/webapp/dist/assets/settings-DIteZTbe.js +1 -0
  1175. package/webapp/dist/assets/settled-pair-C7SjZuns.js +1 -0
  1176. package/webapp/dist/assets/sign-in-D4kMBOHp.js +1 -0
  1177. package/webapp/dist/assets/stacks-Brnf-EB7.js +1 -0
  1178. package/webapp/dist/assets/sync-reading-C3PnJ7AX.js +1 -0
  1179. package/webapp/dist/assets/system-info-CFDNVKkU.js +1 -0
  1180. package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
  1181. package/webapp/dist/assets/topology-DLioOiRN.css +1 -0
  1182. package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
  1183. package/webapp/dist/assets/use-stack-context-CnA5FTHu.js +1 -0
  1184. package/webapp/dist/index.html +6 -6
  1185. package/dist/commands/dev.d.ts +0 -23
  1186. package/dist/commands/dev.d.ts.map +0 -1
  1187. package/dist/commands/dev.js +0 -76
  1188. package/dist/commands/dev.js.map +0 -1
  1189. package/dist/config/define-app.d.ts +0 -6
  1190. package/dist/config/define-app.d.ts.map +0 -1
  1191. package/dist/config/define-app.js +0 -38
  1192. package/dist/config/define-app.js.map +0 -1
  1193. package/dist/infrastructure/gateway-generator.d.ts +0 -63
  1194. package/dist/infrastructure/gateway-generator.d.ts.map +0 -1
  1195. package/dist/infrastructure/gateway-generator.js +0 -253
  1196. package/dist/infrastructure/gateway-generator.js.map +0 -1
  1197. package/dist/monitoring/health.service.d.ts +0 -14
  1198. package/dist/monitoring/health.service.d.ts.map +0 -1
  1199. package/dist/monitoring/health.service.js +0 -50
  1200. package/dist/monitoring/health.service.js.map +0 -1
  1201. package/dist/monitoring/metrics.service.d.ts +0 -14
  1202. package/dist/monitoring/metrics.service.d.ts.map +0 -1
  1203. package/dist/monitoring/metrics.service.js +0 -40
  1204. package/dist/monitoring/metrics.service.js.map +0 -1
  1205. package/dist/orchestrator/bootstrap-runner.d.ts +0 -15
  1206. package/dist/orchestrator/bootstrap-runner.d.ts.map +0 -1
  1207. package/dist/orchestrator/bootstrap-runner.js +0 -152
  1208. package/dist/orchestrator/bootstrap-runner.js.map +0 -1
  1209. package/dist/orchestrator/topology-proxy.d.ts +0 -65
  1210. package/dist/orchestrator/topology-proxy.d.ts.map +0 -1
  1211. package/dist/orchestrator/topology-proxy.js +0 -209
  1212. package/dist/orchestrator/topology-proxy.js.map +0 -1
  1213. package/dist/orchestrator/topology-relay.d.ts +0 -111
  1214. package/dist/orchestrator/topology-relay.d.ts.map +0 -1
  1215. package/dist/orchestrator/topology-relay.js +0 -255
  1216. package/dist/orchestrator/topology-relay.js.map +0 -1
  1217. package/dist/services/auth-middleware.d.ts +0 -47
  1218. package/dist/services/auth-middleware.d.ts.map +0 -1
  1219. package/dist/services/auth-middleware.js +0 -158
  1220. package/dist/services/auth-middleware.js.map +0 -1
  1221. package/dist/services/environment.rpc-service.d.ts +0 -22
  1222. package/dist/services/environment.rpc-service.d.ts.map +0 -1
  1223. package/dist/services/environment.rpc-service.js +0 -65
  1224. package/dist/services/environment.rpc-service.js.map +0 -1
  1225. package/dist/services/environment.service.d.ts +0 -87
  1226. package/dist/services/environment.service.d.ts.map +0 -1
  1227. package/dist/services/environment.service.js +0 -220
  1228. package/dist/services/environment.service.js.map +0 -1
  1229. package/dist/services/metrics-collector.service.d.ts +0 -103
  1230. package/dist/services/metrics-collector.service.d.ts.map +0 -1
  1231. package/dist/services/metrics-collector.service.js +0 -235
  1232. package/dist/services/metrics-collector.service.js.map +0 -1
  1233. package/dist/services/metrics.rpc-service.d.ts +0 -41
  1234. package/dist/services/metrics.rpc-service.d.ts.map +0 -1
  1235. package/dist/services/metrics.rpc-service.js +0 -90
  1236. package/dist/services/metrics.rpc-service.js.map +0 -1
  1237. package/dist/services/metrics.service.d.ts +0 -72
  1238. package/dist/services/metrics.service.d.ts.map +0 -1
  1239. package/dist/services/metrics.service.js +0 -185
  1240. package/dist/services/metrics.service.js.map +0 -1
  1241. package/dist/supervisor/omnitron-supervisor.d.ts +0 -21
  1242. package/dist/supervisor/omnitron-supervisor.d.ts.map +0 -1
  1243. package/dist/supervisor/omnitron-supervisor.js +0 -43
  1244. package/dist/supervisor/omnitron-supervisor.js.map +0 -1
  1245. package/dist/webapp/static-server.d.ts +0 -24
  1246. package/dist/webapp/static-server.d.ts.map +0 -1
  1247. package/dist/webapp/static-server.js +0 -152
  1248. package/dist/webapp/static-server.js.map +0 -1
  1249. package/webapp/dist/assets/Badge-D2ZBP5iK.js +0 -1
  1250. package/webapp/dist/assets/Card-vO88g06B.js +0 -1
  1251. package/webapp/dist/assets/CardActions-C9h7Q2wW.js +0 -1
  1252. package/webapp/dist/assets/CardContent-BA_Xmmhk.js +0 -1
  1253. package/webapp/dist/assets/CardHeader-ceIs__6x.js +0 -1
  1254. package/webapp/dist/assets/Chip-Ckk0xUhK.js +0 -1
  1255. package/webapp/dist/assets/DialogActions-BhHM7hov.js +0 -1
  1256. package/webapp/dist/assets/DialogContentText-BT2JQRmK.js +0 -1
  1257. package/webapp/dist/assets/FormControlLabel-CcQByVS8.js +0 -1
  1258. package/webapp/dist/assets/Grid-14PETRQW.js +0 -1
  1259. package/webapp/dist/assets/InputAdornment-B8aHIsQ7.js +0 -1
  1260. package/webapp/dist/assets/Skeleton-B74-Ds6O.js +0 -37
  1261. package/webapp/dist/assets/Switch-DvWD2wh4.js +0 -1
  1262. package/webapp/dist/assets/SwitchBase-CDU4nY8O.js +0 -1
  1263. package/webapp/dist/assets/Tab-DcCOYYp5.js +0 -1
  1264. package/webapp/dist/assets/TableContainer-CzTh4mu-.js +0 -1
  1265. package/webapp/dist/assets/TableRow-BySEreZR.js +0 -2
  1266. package/webapp/dist/assets/TextField-BLf-BHz2.js +0 -1
  1267. package/webapp/dist/assets/alerts-DnRbT41C.js +0 -1
  1268. package/webapp/dist/assets/apps-CdR0VH2d.js +0 -1
  1269. package/webapp/dist/assets/chunk-DtcAfS_W.js +0 -1
  1270. package/webapp/dist/assets/client-DU8I_lDc.js +0 -2
  1271. package/webapp/dist/assets/constants-BgnT-Xdy.js +0 -1
  1272. package/webapp/dist/assets/containers-Dw-rRXV1.js +0 -1
  1273. package/webapp/dist/assets/dashboard-CzgB0uZz.js +0 -1
  1274. package/webapp/dist/assets/dashboard-builder-DsA0yg33.js +0 -1
  1275. package/webapp/dist/assets/deployments-DtQAoIcQ.js +0 -1
  1276. package/webapp/dist/assets/detail-BJR-G7JG.js +0 -1
  1277. package/webapp/dist/assets/detail-nlCeSltl.js +0 -8
  1278. package/webapp/dist/assets/formatters-Do41SRmE.js +0 -1
  1279. package/webapp/dist/assets/index-ByQDwp2r.js +0 -566
  1280. package/webapp/dist/assets/index-CHVXOsTS.css +0 -1
  1281. package/webapp/dist/assets/isMuiElement-DwF2naaF.js +0 -1
  1282. package/webapp/dist/assets/logs-Kn8o4H7k.js +0 -11
  1283. package/webapp/dist/assets/metrics-DN8Zu5wT.js +0 -2
  1284. package/webapp/dist/assets/nodes-Bgch7AtN.js +0 -7
  1285. package/webapp/dist/assets/pipelines-Cry3qm-S.js +0 -4
  1286. package/webapp/dist/assets/popper-BJFSj6rc.js +0 -1
  1287. package/webapp/dist/assets/preload-helper-DSXbuxSR.js +0 -1
  1288. package/webapp/dist/assets/projects-Dym2GI1U.js +0 -1
  1289. package/webapp/dist/assets/react-apexcharts.esm-CSGK5Cxn.js +0 -958
  1290. package/webapp/dist/assets/react-apexcharts.esm-DEAWOwx5.js +0 -1003
  1291. package/webapp/dist/assets/settings-va3zTcow.js +0 -1
  1292. package/webapp/dist/assets/sign-in-ik35umbp.js +0 -1
  1293. package/webapp/dist/assets/stacks-CVFOnxbF.js +0 -1
  1294. package/webapp/dist/assets/system-info-npIXAjX2.js +0 -1
  1295. package/webapp/dist/assets/topology-CHpVij2M.css +0 -1
  1296. package/webapp/dist/assets/topology-bDe70vLs.js +0 -12
  1297. package/webapp/dist/assets/traces-DIIcT8DF.js +0 -1
  1298. package/webapp/dist/assets/use-stack-context-DHLwZv1r.js +0 -1
  1299. /package/webapp/dist/assets/{fs-CgZLtHiQ.js → fs-Ccl3sAcp.js} +0 -0
@@ -7,29 +7,134 @@
7
7
  * Into concrete Docker container definitions:
8
8
  * { name: 'omnitron-postgres', image: 'postgres:17-alpine', ports: [...], env: [...] }
9
9
  */
10
- /**
11
- * Container naming: {project}-{stack}-{service}
12
- * Examples: myproj-dev-postgres, myproj-dev-redis, myproj-test-minio
13
- * Omnitron's own containers: omnitron-pg, omnitron-nginx (no project/stack prefix)
14
- *
15
- * Docker labels for stack grouping (Docker Desktop groups containers visually):
16
- * com.docker.compose.project = omnitron-{project}-{stack}
17
- * com.docker.compose.service = {service}
18
- * omnitron.project = {project}
19
- * omnitron.stack = {stack}
20
- */
10
+ import fs from 'node:fs';
11
+ import { AsyncLocalStorage } from 'node:async_hooks';
12
+ import { configFilesHash } from './config-payload.js';
13
+ import { gatewayStaticLinkName } from '../services/static-carry-forward.js';
14
+ import { CONFIG_ROOT_PREFIX, shippedMountPath } from './shipped-config.js';
15
+ import { bindService } from './service-binding.js';
16
+ const infrastructureScopes = new AsyncLocalStorage();
21
17
  let CONTAINER_PREFIX = 'omnitron';
18
+ /** Concurrent operations own their names/networks/volumes; ownerless work starts clean. */
19
+ export function withInfrastructureScope(project, stack, work) {
20
+ if ((project === undefined) !== (stack === undefined))
21
+ throw new Error('Infrastructure ownership requires project and stack together');
22
+ const labels = project === undefined
23
+ ? {}
24
+ : {
25
+ 'omnitron.project': project,
26
+ 'omnitron.stack': stack,
27
+ 'com.docker.compose.project': `omnitron-${project}-${stack}`,
28
+ };
29
+ return infrastructureScopes.run({ prefix: project === undefined ? 'omnitron' : `${project}-${stack}`, labels }, work);
30
+ }
22
31
  /** Set the container prefix for project-scoped infrastructure */
23
32
  export function setContainerPrefix(project, env) {
24
- CONTAINER_PREFIX = `${project}-${env}`;
33
+ const scope = infrastructureScopes.getStore();
34
+ if (scope)
35
+ scope.prefix = `${project}-${env}`;
36
+ else
37
+ CONTAINER_PREFIX = `${project}-${env}`;
25
38
  }
26
39
  /** Get current prefix */
27
40
  export function getContainerPrefix() {
28
- return CONTAINER_PREFIX;
41
+ return infrastructureScopes.getStore()?.prefix ?? CONTAINER_PREFIX;
42
+ }
43
+ /**
44
+ * A named volume two services of one stack mount by the same name:
45
+ * `source: 'shared:gateway-socket'` is `<prefix>-gateway-socket` wherever it
46
+ * is declared.
47
+ *
48
+ * Every other named volume is its service's — `<prefix>-<service>-<key>`,
49
+ * whatever its `source` says — so nothing a stack could write gave two
50
+ * containers one volume. The onion needed exactly that: Tor resolved
51
+ * `sample-test-gateway` once, at start, and on 2026-09-26 a deploy gave the
52
+ * gateway's old address to Nominatim; for ~10 minutes the onion served
53
+ * Nominatim's Apache and nobody could sign in. A unix socket on a volume
54
+ * both containers mount has no address to go stale.
55
+ */
56
+ export const SHARED_VOLUME_PREFIX = 'shared:';
57
+ /** A declared volume as docker mounts it for `service`: shared, bound, or the service's own. */
58
+ function resolveNamedOrBound(service, key, vol) {
59
+ if (typeof vol === 'string')
60
+ return { source: `${getContainerPrefix()}-${service}-${key}`, target: vol };
61
+ const shared = vol.source.startsWith(SHARED_VOLUME_PREFIX) ? vol.source.slice(SHARED_VOLUME_PREFIX.length) : null;
62
+ if (shared !== null && !/^[a-z0-9][a-z0-9_.-]*$/.test(shared)) {
63
+ // Docker would refuse the name anyway; saying which declaration it was is
64
+ // the useful part.
65
+ throw new Error(`Volume "${key}" of ${service}: "${vol.source}" does not name a shared volume (lower-case letters, digits, «_.-»)`);
66
+ }
67
+ const isBindMount = vol.source.startsWith('/') || vol.source.startsWith('.');
68
+ const entry = {
69
+ source: shared !== null
70
+ ? `${getContainerPrefix()}-${shared}`
71
+ : isBindMount
72
+ ? vol.source
73
+ : `${getContainerPrefix()}-${service}-${key}`,
74
+ target: vol.target,
75
+ };
76
+ if (vol.readonly)
77
+ entry.readonly = vol.readonly;
78
+ return entry;
79
+ }
80
+ /**
81
+ * Where to PUBLISH the gateway, which is not where it listens.
82
+ *
83
+ * After preset expansion `ports` holds CONTAINER ports — openresty's
84
+ * `defaultPorts.http` is 80, because that is what the image listens on — and
85
+ * a port named in the config becomes a HOST mapping under
86
+ * `docker.portMappings`. Reading `ports.http` takes the first for the second,
87
+ * so a stack asking for 8080 gets a gateway published on 80.
88
+ *
89
+ * Measured on the dev stand: `omnitron.config.ts` declares
90
+ * `gateway.ports.http = 8080` and its own comment says ":8080" three times,
91
+ * while `sample-dev-gateway` published `80/tcp -> 0.0.0.0:80`. The consequence
92
+ * is quiet rather than loud — a browser arriving on :80 sends
93
+ * `Origin: http://localhost` with no port, which is not in the gateway's
94
+ * allow-list, so the portal cannot call the API through it at all. The portal
95
+ * is reachable on 7080, so nothing complained.
96
+ *
97
+ * `resolveServiceRequirement` has read it correctly all along:
98
+ * `host: docker.portMappings?.[name] ?? containerPort`. Same expression here,
99
+ * because it is the same question — and a port the preset does not declare
100
+ * really is a container port, which is why the fallback is not a mistake.
101
+ */
102
+ export function gatewayHostPort(service, legacy) {
103
+ return service?.docker?.portMappings?.['http'] ?? service?.ports?.['http'] ?? legacy?.port ?? 8080;
29
104
  }
30
105
  function containerName(service) {
31
- return `${CONTAINER_PREFIX}-${service}`;
106
+ return `${getContainerPrefix()}-${service}`;
32
107
  }
108
+ /**
109
+ * How one managed container reaches another.
110
+ *
111
+ * Every container omnitron provisions joins the stack's named network, and
112
+ * the network exists so they can address each other by name — the comment on
113
+ * `networkName` below says exactly that. The gateway did not: it was given
114
+ * `host.docker.internal` and the HOST-published port, and went out to the
115
+ * host and back.
116
+ *
117
+ * That works on a developer's Mac, where `host.docker.internal` reaches the
118
+ * host's loopback. It cannot work on a Linux node, where `host-gateway`
119
+ * resolves to the docker0 bridge address and omnitron publishes every managed
120
+ * port on `127.0.0.1` — deliberately, so a container is not reachable from
121
+ * the LAN. Measured on the test node: the gateway sat on 172.19.0.2, redis on
122
+ * 172.19.0.4 of the same network, and every request the gateway served spent
123
+ * 200ms on `lua tcp socket connect timed out, upstream: 172.17.0.1:6379`
124
+ * before failing open. The hardening that bound the ports closed this path,
125
+ * and the only evidence was a warning nobody was reading.
126
+ *
127
+ * The port is the CONTAINER port for the same reason the host is a container
128
+ * name: a stack whose redis is published on 6380 still listens on 6379
129
+ * inside. Host and port are one decision and are answered here together,
130
+ * because answering half of it is how a correct name ends up on the wrong
131
+ * port.
132
+ */
133
+ export function containerEndpoint(service, containerPort) {
134
+ return { host: containerName(service), port: containerPort };
135
+ }
136
+ /** Redis, as a container on the stack network sees it. */
137
+ export const REDIS_CONTAINER_PORT = 6379;
33
138
  /**
34
139
  * Convention-derived managed network name.
35
140
  *
@@ -55,7 +160,7 @@ function containerName(service) {
55
160
  * adjacent infrastructure.
56
161
  */
57
162
  export function getManagedNetwork() {
58
- return `${CONTAINER_PREFIX}_default`;
163
+ return `${getContainerPrefix()}_default`;
59
164
  }
60
165
  /**
61
166
  * Stamp the managed network onto a container spec when it doesn't already
@@ -65,6 +170,32 @@ export function getManagedNetwork() {
65
170
  export function applyManagedDefaults(spec) {
66
171
  if (spec.network === undefined)
67
172
  spec.network = getManagedNetwork();
173
+ // Published ports bind to loopback unless a container asks otherwise.
174
+ //
175
+ // Docker's default is every interface, and Docker's iptables rules are
176
+ // inserted ahead of ufw's — so a published port is reachable from the
177
+ // internet no matter what the host firewall says. Measured on the test
178
+ // server, whose ufw allows 22/tcp and nothing else:
179
+ //
180
+ // nc -vz 37.27.130.185 9700 → timed out (ufw, as configured)
181
+ // nc -vz 37.27.130.185 5480 → OPEN (docker, straight past it)
182
+ //
183
+ // 5480 is omnitron's own Postgres. An operator who reads their firewall
184
+ // rules and concludes the database is private is reading a control that
185
+ // does not cover it, which is the worst kind of wrong: a check that
186
+ // answers confidently about something it cannot see.
187
+ //
188
+ // The applications that use these containers run on the same host and
189
+ // reach them over loopback. Anything further away comes through
190
+ // omnitron's own transport, which is authenticated. So the default costs
191
+ // nothing and the exposure had no beneficiary.
192
+ //
193
+ // A container that genuinely must be reachable says so by setting
194
+ // `bindHost` — a deliberate line in a config, reviewable in a diff.
195
+ for (const port of spec.ports ?? []) {
196
+ if (port.bindHost === undefined)
197
+ port.bindHost = '127.0.0.1';
198
+ }
68
199
  return spec;
69
200
  }
70
201
  /**
@@ -75,20 +206,29 @@ export function applyManagedDefaults(spec) {
75
206
  let STACK_LABELS = {};
76
207
  /** Set stack labels for subsequent container creation calls */
77
208
  export function setStackLabels(project, stack) {
78
- STACK_LABELS = {
209
+ const labels = {
79
210
  'omnitron.project': project,
80
211
  'omnitron.stack': stack,
81
212
  // Docker Desktop groups containers by com.docker.compose.project label
82
213
  'com.docker.compose.project': `omnitron-${project}-${stack}`,
83
214
  };
215
+ const scope = infrastructureScopes.getStore();
216
+ if (scope)
217
+ scope.labels = labels;
218
+ else
219
+ STACK_LABELS = labels;
84
220
  }
85
221
  /** Clear stack labels (for internal/global containers) */
86
222
  export function clearStackLabels() {
87
- STACK_LABELS = {};
223
+ const scope = infrastructureScopes.getStore();
224
+ if (scope)
225
+ scope.labels = {};
226
+ else
227
+ STACK_LABELS = {};
88
228
  }
89
229
  /** Get current stack labels */
90
230
  function stackLabels() {
91
- return { ...STACK_LABELS };
231
+ return { ...(infrastructureScopes.getStore()?.labels ?? STACK_LABELS) };
92
232
  }
93
233
  // =============================================================================
94
234
  // Service Requirement → ResolvedContainer (generic resolver for ALL services)
@@ -102,47 +242,111 @@ function stackLabels() {
102
242
  * - Service is disabled by stack override
103
243
  * - Stack override provides an external address
104
244
  */
105
- export function resolveServiceRequirement(serviceName, requirement, override, appName) {
106
- // Skip disabled or external services
107
- if (override?.disabled)
108
- return null;
109
- if (override?.external)
245
+ /**
246
+ * An HTTP probe that works in the image it runs in.
247
+ *
248
+ * `curl -sf` was the generic form, and alpine-based images do not ship curl.
249
+ * Measured on the gateway: `/bin/sh: curl: not found`, exit 1, every ten
250
+ * seconds forever — a container serving traffic correctly (the onion in
251
+ * front of it answered 200) reported `unhealthy` for its whole life, and
252
+ * `provisionStack` reported the stack NOT ready because of it.
253
+ *
254
+ * The lesson was already learned once in this file: `resolveOmnitronNginx`
255
+ * uses wget with a comment saying curl is not in the image. It was learned
256
+ * for one container and not for the generic path every other service takes.
257
+ *
258
+ * Tries curl, then wget, then falls back to failing. Both spellings, because
259
+ * busybox wget and GNU wget disagree about flags but agree about these:
260
+ * `-q` quiet, `-O -` to stdout, `-T` timeout.
261
+ */
262
+ /**
263
+ * Which port an HTTP health check should knock on.
264
+ *
265
+ * The probe was `http://localhost<path>` — port 80, always. The gateway
266
+ * listens on 8080, so the check connected to nothing:
267
+ *
268
+ * wget: can't connect to remote host: Connection refused
269
+ *
270
+ * on a container that was serving correctly on its own port, through an
271
+ * onion address that answered 200. Every service whose port is not 80 had
272
+ * an unanswerable health check, and an unanswerable check is a permanent
273
+ * negative — `provisionStack` reported the stack not ready because of it.
274
+ *
275
+ * A check may name its port, as the jsonrpc one already does. Otherwise the
276
+ * service's own: `http` by convention, then whatever single port it
277
+ * declares — a service with one port cannot mean another.
278
+ */
279
+ function healthPort(check, ports) {
280
+ const named = check.port;
281
+ if (named && ports?.[named])
282
+ return ports[named];
283
+ if (ports?.['http'])
284
+ return ports['http'];
285
+ const declared = Object.values(ports ?? {});
286
+ if (declared.length === 1)
287
+ return declared[0];
288
+ // Several ports and no way to choose: 80 is the convention, and saying so
289
+ // here is better than an arbitrary pick that happens to work once.
290
+ return 80;
291
+ }
292
+ function httpProbe(url) {
293
+ return (`curl -sf --max-time 5 ${url} >/dev/null 2>&1 ` +
294
+ `|| wget -q -O /dev/null -T 5 ${url} >/dev/null 2>&1 ` +
295
+ '|| exit 1');
296
+ }
297
+ export function resolveServiceRequirement(serviceName, requirement, override, appName,
298
+ /** Where each service's shipped config directory is on THIS machine — see `shipped-config.ts`. */
299
+ configRoots) {
300
+ // A container only for a service this stack runs as one — not one it
301
+ // disables, reaches elsewhere, or runs on the node as a system service
302
+ // (`bindService`).
303
+ const binding = bindService(requirement, override);
304
+ if (binding.provisioning !== 'docker')
110
305
  return null;
111
306
  const baseDocker = requirement.docker;
112
307
  if (!baseDocker)
113
- return null; // No Docker config = external-only
308
+ return null;
114
309
  // Deep-merge: base → networkMode variant → stack override
115
310
  let docker = { ...baseDocker };
116
- if (requirement.networkMode && baseDocker.variants?.[requirement.networkMode]) {
117
- docker = deepMergeDocker(docker, baseDocker.variants[requirement.networkMode]);
311
+ // The stack's answer first: an application declares the network that is
312
+ // right on a laptop, and a stack is the scope that knows when it is not.
313
+ const networkMode = override?.networkMode ?? requirement.networkMode;
314
+ if (networkMode && baseDocker.variants?.[networkMode]) {
315
+ docker = deepMergeDocker(docker, baseDocker.variants[networkMode]);
118
316
  }
119
317
  if (override?.docker) {
120
318
  docker = deepMergeDocker(docker, override.docker);
121
319
  }
122
320
  // Resolve image
123
321
  const image = docker.image ?? docker.build?.tag ?? `${serviceName}:latest`;
124
- // Map ports: requirement.ports defines container ports, docker.portMappings overrides host ports
125
- const ports = Object.entries(requirement.ports).map(([name, containerPort]) => ({
322
+ // The ports the service listens on in this stack's network are the
323
+ // container's (`bindService`); `docker.portMappings` says where each is published.
324
+ const ports = Object.entries(binding.ports).map(([name, containerPort]) => ({
126
325
  host: docker.portMappings?.[name] ?? containerPort,
127
326
  container: containerPort,
128
327
  }));
129
328
  // Resolve volumes
329
+ const shippedRoots = new Set();
130
330
  const volumes = Object.entries(docker.volumes ?? {}).map(([name, vol]) => {
131
- if (typeof vol === 'string') {
132
- return { source: `${CONTAINER_PREFIX}-${serviceName}-${name}`, target: vol };
331
+ if (typeof vol !== 'string' && vol.source.startsWith(CONFIG_ROOT_PREFIX)) {
332
+ // The node's copy of a directory the master shipped. Unresolved — no
333
+ // copy arrived — it stays as it is, and docker refuses it by name.
334
+ const local = shippedMountPath(vol.source, configRoots);
335
+ if (local)
336
+ shippedRoots.add(local.root);
337
+ const entry = {
338
+ source: local?.path ?? vol.source,
339
+ target: vol.target,
340
+ };
341
+ if (vol.readonly)
342
+ entry.readonly = vol.readonly;
343
+ return entry;
133
344
  }
134
- const isBindMount = vol.source.startsWith('/') || vol.source.startsWith('.');
135
- const entry = {
136
- source: isBindMount ? vol.source : `${CONTAINER_PREFIX}-${serviceName}-${name}`,
137
- target: vol.target,
138
- };
139
- if (vol.readonly)
140
- entry.readonly = vol.readonly;
141
- return entry;
345
+ return resolveNamedOrBound(serviceName, name, vol);
142
346
  });
143
347
  // Convert IServiceHealthCheck → ContainerHealthCheck
144
- const healthCheck = docker.healthCheck ?? convertHealthCheck(requirement.healthCheck, requirement.ports);
145
- return applyManagedDefaults({
348
+ const healthCheck = docker.healthCheck ?? convertHealthCheck(requirement.healthCheck, binding.ports);
349
+ const spec = applyManagedDefaults({
146
350
  name: containerName(serviceName),
147
351
  image,
148
352
  ports,
@@ -170,12 +374,25 @@ export function resolveServiceRequirement(serviceName, requirement, override, ap
170
374
  // stamps in the project-wide bridge.
171
375
  ...(typeof docker.network === 'string' ? { network: docker.network } : {}),
172
376
  });
377
+ // The content of what it mounts from shipped directories, so a changed
378
+ // script recreates the container — the same reason as the gateway's.
379
+ for (const root of shippedRoots) {
380
+ const digest = mountedConfigDigest(root, spec.volumes);
381
+ if (digest)
382
+ spec.configDigest = spec.configDigest
383
+ ? configFilesHash([
384
+ { path: 'a', content: spec.configDigest, mode: '644' },
385
+ { path: 'b', content: digest, mode: '644' },
386
+ ])
387
+ : digest;
388
+ }
389
+ return spec;
173
390
  }
174
391
  /**
175
392
  * Resolve all app-declared infrastructure services into ResolvedContainer[].
176
393
  * Respects dependsOn ordering — dependencies come first.
177
394
  */
178
- export function resolveAppInfrastructure(infrastructure, overrides, appName) {
395
+ export function resolveAppInfrastructure(infrastructure, overrides, appName, configRoots) {
179
396
  const containers = [];
180
397
  const resolved = new Set();
181
398
  const pending = new Map(Object.entries(infrastructure));
@@ -191,7 +408,7 @@ export function resolveAppInfrastructure(infrastructure, overrides, appName) {
191
408
  resolve(dep, depReq);
192
409
  }
193
410
  const override = overrides?.[`${appName}/${name}`] ?? overrides?.[name];
194
- const container = resolveServiceRequirement(name, req, override, appName);
411
+ const container = resolveServiceRequirement(name, req, override, appName, configRoots);
195
412
  if (container)
196
413
  containers.push(container);
197
414
  };
@@ -204,45 +421,57 @@ export function resolveAppInfrastructure(infrastructure, overrides, appName) {
204
421
  function convertHealthCheck(check, ports) {
205
422
  if (!check)
206
423
  return undefined;
207
- const parseInterval = (s) => s ?? '30s';
424
+ // One helper per default, not one helper for every duration field. A
425
+ // single `(s) => s ?? '30s'` used to serve all three, which gave `timeout`
426
+ // the interval's default: probes ran with a 30s deadline where the type
427
+ // and the documentation both promise 10s, so an unresponsive service was
428
+ // marked unhealthy up to three times later than stated — and with the
429
+ // deadline equal to the gap between probes, they can overlap.
430
+ const everyDefault = (s) => s ?? '30s';
431
+ const deadlineDefault = (s) => s ?? '10s';
208
432
  switch (check.type) {
209
433
  case 'command':
210
434
  return {
211
435
  test: ['CMD-SHELL', check.target],
212
- interval: parseInterval(check.interval),
213
- timeout: parseInterval(check.timeout),
436
+ interval: everyDefault(check.interval),
437
+ timeout: deadlineDefault(check.timeout),
214
438
  retries: check.retries ?? 5,
215
- startPeriod: parseInterval(check.startPeriod),
439
+ startPeriod: everyDefault(check.startPeriod),
216
440
  };
217
441
  case 'tcp':
218
442
  return {
219
443
  test: ['CMD-SHELL', `nc -z localhost ${check.target} || exit 1`],
220
- interval: parseInterval(check.interval),
221
- timeout: parseInterval(check.timeout),
444
+ interval: everyDefault(check.interval),
445
+ timeout: deadlineDefault(check.timeout),
222
446
  retries: check.retries ?? 5,
223
- startPeriod: parseInterval(check.startPeriod),
447
+ startPeriod: everyDefault(check.startPeriod),
224
448
  };
225
449
  case 'http':
226
450
  return {
227
- test: ['CMD-SHELL', `curl -sf http://localhost${check.target} || exit 1`],
228
- interval: parseInterval(check.interval),
229
- timeout: parseInterval(check.timeout),
451
+ test: ['CMD-SHELL', httpProbe(`http://localhost:${healthPort(check, ports)}${check.target}`)],
452
+ interval: everyDefault(check.interval),
453
+ timeout: deadlineDefault(check.timeout),
230
454
  retries: check.retries ?? 5,
231
- startPeriod: parseInterval(check.startPeriod),
455
+ startPeriod: everyDefault(check.startPeriod),
232
456
  };
233
457
  case 'jsonrpc': {
234
458
  const portName = check.jsonrpc?.port ?? 'rpc';
235
459
  const port = ports?.[portName] ?? portName;
236
460
  const method = check.jsonrpc?.method ?? check.target;
237
461
  const auth = check.jsonrpc?.auth;
238
- const authStr = auth ? `-u ${auth.user}:${auth.password} ${auth.type === 'digest' ? '--digest' : ''}` : '';
462
+ const authStr = auth && auth.type !== 'cookie'
463
+ ? `-u ${auth.user}:${auth.password} ${auth.type === 'digest' ? '--digest' : ''}`
464
+ : '';
239
465
  const rpcPath = check.jsonrpc?.path ?? '/json_rpc';
240
466
  return {
241
- test: ['CMD-SHELL', `curl -sf ${authStr} -X POST http://localhost:${port}${rpcPath} -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"health","method":"${method}"}' || exit 1`],
242
- interval: parseInterval(check.interval),
243
- timeout: parseInterval(check.timeout),
467
+ test: [
468
+ 'CMD-SHELL',
469
+ `curl -sf ${authStr} -X POST http://localhost:${port}${rpcPath} -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"health","method":"${method}"}' || exit 1`,
470
+ ],
471
+ interval: everyDefault(check.interval),
472
+ timeout: deadlineDefault(check.timeout),
244
473
  retries: check.retries ?? 5,
245
- startPeriod: parseInterval(check.startPeriod),
474
+ startPeriod: everyDefault(check.startPeriod),
246
475
  };
247
476
  }
248
477
  default:
@@ -261,8 +490,11 @@ function deepMergeDocker(base, overlay) {
261
490
  if (base.labels || overlay.labels) {
262
491
  merged.labels = { ...base.labels, ...overlay.labels };
263
492
  }
264
- if (overlay.volumes === undefined && base.volumes) {
265
- merged.volumes = base.volumes;
493
+ // By key, like the environment: an overlay that adds a volume keeps the
494
+ // base's. Replaced wholesale, a stack that gave Tor one more mount would
495
+ // have taken away `/var/lib/tor` — its onion keys, and with them its address.
496
+ if (base.volumes || overlay.volumes) {
497
+ merged.volumes = { ...base.volumes, ...overlay.volumes };
266
498
  }
267
499
  if (overlay.resources === undefined && base.resources) {
268
500
  merged.resources = base.resources;
@@ -283,7 +515,7 @@ export function resolveOmnitronPg(options) {
283
515
  const user = options?.user ?? 'omnitron';
284
516
  const password = options?.password ?? 'omnitron';
285
517
  return applyManagedDefaults({
286
- name: `${CONTAINER_PREFIX}-pg`,
518
+ name: `${getContainerPrefix()}-pg`,
287
519
  image,
288
520
  ports: [{ host: port, container: 5432 }],
289
521
  environment: {
@@ -291,15 +523,17 @@ export function resolveOmnitronPg(options) {
291
523
  POSTGRES_PASSWORD: password,
292
524
  POSTGRES_DB: 'omnitron',
293
525
  },
294
- volumes: [
295
- { source: `${CONTAINER_PREFIX}-pg-data`, target: '/var/lib/postgresql/data' },
296
- ],
526
+ volumes: [{ source: `${getContainerPrefix()}-pg-data`, target: '/var/lib/postgresql/data' }],
297
527
  command: [
298
528
  'postgres',
299
- '-c', 'max_connections=50',
300
- '-c', 'shared_buffers=64MB',
301
- '-c', 'log_statement=none',
302
- '-c', 'log_min_duration_statement=500',
529
+ '-c',
530
+ 'max_connections=50',
531
+ '-c',
532
+ 'shared_buffers=64MB',
533
+ '-c',
534
+ 'log_statement=none',
535
+ '-c',
536
+ 'log_min_duration_statement=500',
303
537
  ],
304
538
  healthCheck: {
305
539
  test: ['CMD-SHELL', `pg_isready -U ${user} -d omnitron`],
@@ -327,6 +561,59 @@ export function resolveOmnitronPg(options) {
327
561
  *
328
562
  * Port 9800 (public) → nginx → port 9801 (internal daemon HTTP)
329
563
  */
564
+ /**
565
+ * A digest of every file a container mounts from under `root`.
566
+ *
567
+ * `configFilesHash` was written for this — its docblock says it is «folded
568
+ * into the container's spec hash by the caller, so a changed template
569
+ * recreates the container» — and had no caller. So a node wrote each new
570
+ * nginx.conf over the old one and kept serving the old one: the gateway
571
+ * renders its template once, at start, and a reconcile that compares volume
572
+ * PATHS saw nothing to do. The test gateway was recreated only when its
573
+ * static bundle changed, which carried the config along by accident.
574
+ *
575
+ * Taken from the volumes themselves rather than a list of file names, so a
576
+ * mount added later is covered without anyone remembering this function.
577
+ * Read from disk on the machine that will run the container: on a node that
578
+ * is the copy just written from the master's payload, on a master the
579
+ * project's own files. Synchronous, because the resolver is — and small: the
580
+ * sample gateway's files are 65 KB, read once per provision.
581
+ *
582
+ * `undefined` when there is nothing under `root` to read, or it cannot be
583
+ * read — the spec hash then stays what it was without this.
584
+ */
585
+ export function mountedConfigDigest(root, volumes) {
586
+ const prefix = root.endsWith('/') ? root : `${root}/`;
587
+ const files = [];
588
+ const visit = (abs) => {
589
+ const stat = fs.statSync(abs);
590
+ if (stat.isDirectory()) {
591
+ for (const name of fs.readdirSync(abs).sort())
592
+ visit(`${abs}/${name}`);
593
+ }
594
+ else if (stat.isFile()) {
595
+ // latin1 maps bytes to code units one to one, so the digest sees the
596
+ // bytes the container will, text or not.
597
+ files.push({
598
+ path: abs.slice(prefix.length),
599
+ content: fs.readFileSync(abs, 'latin1'),
600
+ mode: (stat.mode & 0o777).toString(8),
601
+ });
602
+ }
603
+ };
604
+ try {
605
+ for (const v of volumes) {
606
+ // The root itself too: a service may mount its whole shipped directory
607
+ // (`shipped-config.ts`), where the gateway mounts files inside it.
608
+ if (v.source === root || v.source.startsWith(prefix))
609
+ visit(v.source);
610
+ }
611
+ }
612
+ catch {
613
+ return undefined;
614
+ }
615
+ return files.length > 0 ? configFilesHash(files) : undefined;
616
+ }
330
617
  /**
331
618
  * Resolve API gateway container (OpenResty + Lua).
332
619
  *
@@ -337,6 +624,34 @@ export function resolveOmnitronPg(options) {
337
624
  * @param redisConfig Stack's Redis connection info (host, port, password)
338
625
  * @param projectRoot Absolute path to project root (for resolving configDir)
339
626
  */
627
+ /**
628
+ * The gateway's config as the stack declares it: every field `resolveGateway`
629
+ * reads, the preset's block first and the legacy `infrastructure.gateway`
630
+ * after. The stack manager used to hand it two of them — `configDir` and
631
+ * `staticDir` — so `env`, declared on `GatewayServiceConfig` as «passed to the
632
+ * gateway container», reached nothing, and `volumes`, which carries the
633
+ * onion's socket, would have reached nothing either.
634
+ */
635
+ export function gatewayConfigOf(presetConfig, legacy, port, redisDb) {
636
+ const pick = (key) => presetConfig?.[key] ?? legacy?.[key];
637
+ const staticDir = pick('staticDir');
638
+ const env = pick('env');
639
+ const volumes = pick('volumes');
640
+ return {
641
+ port,
642
+ configDir: pick('configDir') ?? 'infra/nginx',
643
+ redisDb,
644
+ ...(staticDir ? { staticDir } : {}),
645
+ ...(env ? { env } : {}),
646
+ ...(volumes ? { volumes } : {}),
647
+ };
648
+ }
649
+ /** Only the OpenResty preset owns the shipped template contract.
650
+ * A service called "gateway" can declare a completely different container.
651
+ */
652
+ export function usesGatewayTemplate(service) {
653
+ return service?._preset === 'openresty';
654
+ }
340
655
  export function resolveGateway(config, redisConfig, projectRoot) {
341
656
  const image = config.image ?? 'openresty/openresty:alpine';
342
657
  const port = config.port ?? 8080;
@@ -345,15 +660,56 @@ export function resolveGateway(config, redisConfig, projectRoot) {
345
660
  // Resolve absolute path to config directory
346
661
  // Use join via string concatenation (ESM-safe, avoids sync require)
347
662
  const absConfigDir = projectRoot.endsWith('/') ? projectRoot + configDir : projectRoot + '/' + configDir;
663
+ // The frontend, if this stack serves one. Absolute already means "a path on
664
+ // the machine that will run this", which is how a node names its own copy;
665
+ // a relative path is resolved against the project, like the config is.
666
+ const staticDir = config.staticDir;
667
+ const absStaticDir = !staticDir
668
+ ? null
669
+ : staticDir.startsWith('/')
670
+ ? staticDir
671
+ : `${projectRoot.replace(/\/$/, '')}/${staticDir.replace(/^\.\//, '')}`;
672
+ /**
673
+ * Mount the ROOT and serve through the link, when the node sent one.
674
+ *
675
+ * The build directory's path changes with every release, and it is the ONLY
676
+ * field of this spec that does — `mountedConfigDigest` is rooted at the
677
+ * config directory and the node's config root
678
+ * (`~/.omnitron/stack-config/<project>/<stack>/<service>`) is stable. So the
679
+ * container was recreated for every deployment, and that cost **1 s of 000**
680
+ * on the gateway, measured on release 4 (81 s of deploy). Mounting the root
681
+ * instead makes the mount a constant, and the swap of
682
+ * `current-<project>-<stack>` inside it is what changes — atomically, with
683
+ * `rename(2)`, picked up with no reload because nginx resolves `root` per
684
+ * request and this config sets no `open_file_cache`.
685
+ *
686
+ * Only when the node says so. On a master `staticDir` is a path inside the
687
+ * project — sample declares `apps/portal/dist` — and mounting ITS parent would
688
+ * put `src/`, `node_modules` and `vite.config.ts` under the web root, while
689
+ * `current-…` would not exist there at all and the entrypoint would fall
690
+ * back to proxying a Vite that is not running.
691
+ */
692
+ const linkRoot = config.staticLinkRoot;
693
+ const linkName = config.staticLinkName;
694
+ const servesThroughLink = Boolean(linkRoot && linkName);
695
+ const portalMount = servesThroughLink ? linkRoot : absStaticDir;
696
+ const portalRoot = servesThroughLink ? `/var/www/portal/${linkName}` : '/var/www/portal';
348
697
  // Default upstream host — host.docker.internal for Docker, overridable for bare-metal/cluster
349
698
  const upstreamHost = 'host.docker.internal';
350
- return {
699
+ const spec = applyManagedDefaults({
351
700
  name: containerName('gateway'),
352
701
  image,
353
702
  ports: [{ host: port, container: 80 }],
354
703
  environment: {
355
- // Redis for maintenance mode + future PoW/rate-limit state
356
- REDIS_HOST: 'host.docker.internal',
704
+ // Redis for maintenance mode + future PoW/rate-limit state.
705
+ //
706
+ // `redisConfig.host`, not a literal: this took the host as a parameter
707
+ // alongside the port, the db and the password, and then ignored that
708
+ // one field. Three of the four came from the caller and the fourth was
709
+ // hard-coded to the developer's machine, which is why nothing in the
710
+ // signature hinted that the gateway could not reach its Redis anywhere
711
+ // else.
712
+ REDIS_HOST: redisConfig.host,
357
713
  REDIS_PORT: String(redisConfig.port),
358
714
  REDIS_DB: String(redisDb),
359
715
  ...(redisConfig.password ? { REDIS_PASSWORD: redisConfig.password } : {}),
@@ -362,14 +718,24 @@ export function resolveGateway(config, redisConfig, projectRoot) {
362
718
  UPSTREAM_MAIN_PORT: '3001',
363
719
  UPSTREAM_STORAGE_HOST: upstreamHost,
364
720
  UPSTREAM_STORAGE_PORT: '3002',
365
- UPSTREAM_PRICEVERSE_HOST: upstreamHost,
366
- UPSTREAM_PRICEVERSE_PORT: '3003',
367
- UPSTREAM_PAYSYS_HOST: upstreamHost,
368
- UPSTREAM_PAYSYS_PORT: '3004',
721
+ UPSTREAM_PRICING_HOST: upstreamHost,
722
+ UPSTREAM_PRICING_PORT: '3003',
723
+ UPSTREAM_PAYMENTS_HOST: upstreamHost,
724
+ UPSTREAM_PAYMENTS_PORT: '3004',
369
725
  UPSTREAM_MESSAGING_HOST: upstreamHost,
370
726
  UPSTREAM_MESSAGING_PORT: '3005',
371
727
  UPSTREAM_MESSAGING_WS_HOST: upstreamHost,
372
728
  UPSTREAM_MESSAGING_WS_PORT: '3006',
729
+ UPSTREAM_GEO_HOST: upstreamHost,
730
+ UPSTREAM_GEO_PORT: '3007',
731
+ // Where the entrypoint serves `/` from. `/var/www/portal` unless the
732
+ // node mounted the root, in which case the link inside it — so the
733
+ // gateway is pointed at a new build by a symlink swap and not by a new
734
+ // container.
735
+ PORTAL_ROOT: portalRoot,
736
+ // User-supplied env overrides/additions (e.g. PORTAL_DEV_UPSTREAM). Merged
737
+ // last so config can override a preset default when intended.
738
+ ...(config.env ?? {}),
373
739
  },
374
740
  volumes: [
375
741
  // nginx.conf template — rendered by entrypoint via envsubst
@@ -380,10 +746,20 @@ export function resolveGateway(config, redisConfig, projectRoot) {
380
746
  { source: `${absConfigDir}/lua`, target: '/etc/nginx/lua', readonly: true },
381
747
  // Maintenance mode HTML page
382
748
  { source: `${absConfigDir}/maintenance.html`, target: '/etc/nginx/html/maintenance.html', readonly: true },
749
+ // The built frontend, when the stack declares one. `/var/www/portal` is
750
+ // the path nginx.conf serves `/` from whenever `PORTAL_DEV_UPSTREAM` is
751
+ // unset, which is every deployment that has no Vite beside it.
752
+ ...(portalMount ? [{ source: portalMount, target: '/var/www/portal', readonly: true }] : []),
753
+ // What the stack adds — the onion's unix socket above all, on a
754
+ // `shared:` volume the Tor container mounts too.
755
+ ...Object.entries(config.volumes ?? {}).map(([key, vol]) => resolveNamedOrBound('gateway', key, vol)),
383
756
  ],
384
757
  entrypoint: ['/bin/sh', '/docker-entrypoint.sh'],
385
758
  healthCheck: {
386
- test: ['CMD-SHELL', '[ -S /usr/local/openresty/nginx/logs/nginx.pid ] || kill -0 $(cat /usr/local/openresty/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null || exit 1'],
759
+ test: [
760
+ 'CMD-SHELL',
761
+ '[ -S /usr/local/openresty/nginx/logs/nginx.pid ] || kill -0 $(cat /usr/local/openresty/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null || exit 1',
762
+ ],
387
763
  interval: '10s',
388
764
  timeout: '5s',
389
765
  retries: 3,
@@ -397,7 +773,11 @@ export function resolveGateway(config, redisConfig, projectRoot) {
397
773
  restart: 'unless-stopped',
398
774
  extraHosts: ['host.docker.internal:host-gateway'],
399
775
  resources: config.resources,
400
- };
776
+ });
777
+ const configDigest = mountedConfigDigest(absConfigDir, spec.volumes);
778
+ if (configDigest)
779
+ spec.configDigest = configDigest;
780
+ return spec;
401
781
  }
402
782
  // =============================================================================
403
783
  // Omnitron Admin Console (separate from API gateway)
@@ -416,9 +796,9 @@ export function resolveOmnitronNginx(options) {
416
796
  volumes.push({ source: webappDist, target: '/usr/share/nginx/html', readonly: true });
417
797
  }
418
798
  return applyManagedDefaults({
419
- name: `${CONTAINER_PREFIX}-nginx`,
799
+ name: `${getContainerPrefix()}-nginx`,
420
800
  image,
421
- ports: [{ host: port, container: 80 }],
801
+ ports: [{ host: port, container: 80, bindHost: options?.bindHost ?? '127.0.0.1' }],
422
802
  environment: {
423
803
  OMNITRON_API_HOST: 'host.docker.internal',
424
804
  OMNITRON_API_PORT: String(internalPort),
@@ -431,8 +811,13 @@ export function resolveOmnitronNginx(options) {
431
811
  // base image, so the previous CMD-SHELL test was permanently
432
812
  // unhealthy on a vanilla alpine nginx until someone bind-mounted curl
433
813
  // in. wget is always present.
814
+ //
815
+ // Probe 127.0.0.1 (not `localhost`): musl resolves `localhost` to ::1
816
+ // first, but nginx only `listen 80;` on IPv4, so an IPv6 probe gets
817
+ // ECONNREFUSED and the container is reported permanently unhealthy even
818
+ // though the console is serving fine over IPv4.
434
819
  healthCheck: {
435
- test: ['CMD-SHELL', 'wget -q --spider http://localhost/ || exit 1'],
820
+ test: ['CMD-SHELL', 'wget -q --spider http://127.0.0.1/ || exit 1'],
436
821
  interval: '10s',
437
822
  timeout: '5s',
438
823
  retries: 3,
@@ -461,10 +846,78 @@ export function resolveOmnitronNginx(options) {
461
846
  * Resolve an InfrastructureConfig into concrete container specs.
462
847
  * Uses preset-normalized services map — all services go through resolveServiceRequirement().
463
848
  */
464
- export function resolveInfrastructure(_config, normalizedServices) {
849
+ export function resolveInfrastructure(_config, normalizedServices,
850
+ /**
851
+ * Stack overrides — `disabled`, `external`, per-service docker changes.
852
+ *
853
+ * This did not take them, and `resolveAppInfrastructure` was called
854
+ * without them, so `serviceOverrides` was honoured for services an
855
+ * APPLICATION declares and read by nothing for the ones a stack declares.
856
+ * An operator writing `tiles: { disabled: true }` got tiles.
857
+ *
858
+ * Measured on the test server: a stack that disabled the geocoder and the
859
+ * tile server provisioned both — a geocoding database that can reach tens
860
+ * of gigabytes, on a host chosen for a payment system.
861
+ */
862
+ overrides,
863
+ /**
864
+ * Where a service's config files live on THIS machine, by service name.
865
+ *
866
+ * The gateway is not an ordinary preset container: it needs four bind
867
+ * mounts, an entrypoint and fifteen upstream variables, and `resolveGateway`
868
+ * is the only thing that produces them. On a master they come from the
869
+ * project root; on a node there is no project, so the files are sent over
870
+ * and written locally, and this names where.
871
+ *
872
+ * Without it a node built its gateway through the generic preset path —
873
+ * whose own `defaultDocker` comment says "Volumes and entrypoint configured
874
+ * by resolveGateway" — and got bare openresty: an empty `Mounts` array, a
875
+ * null entrypoint, zero UPSTREAM variables, and an onion serving
876
+ * `Welcome to OpenResty!`.
877
+ */
878
+ configRoots, gatewayContext) {
465
879
  if (!normalizedServices || Object.keys(normalizedServices).length === 0) {
466
880
  return [];
467
881
  }
468
- return resolveAppInfrastructure(normalizedServices);
882
+ const gatewayRoot = configRoots?.get('gateway');
883
+ if (!gatewayRoot ||
884
+ !normalizedServices['gateway'] ||
885
+ !usesGatewayTemplate(normalizedServices['gateway']) ||
886
+ !gatewayContext) {
887
+ return resolveAppInfrastructure(normalizedServices, overrides, undefined, configRoots);
888
+ }
889
+ // One resolver for the gateway, wherever it runs. The rest go through the
890
+ // generic path, which is right for them — with the node's copies of what
891
+ // they mount from shipped directories (`shipped-config.ts`).
892
+ const { gateway: _gateway, ...rest } = normalizedServices;
893
+ const containers = resolveAppInfrastructure(rest, overrides, undefined, configRoots);
894
+ const port = gatewayHostPort(normalizedServices['gateway'], undefined);
895
+ // The stack's whole gateway block — its env and its volumes as on a master
896
+ // (`gatewayConfigOf`) — with the two paths a node names for itself. This
897
+ // road passed port, configDir and staticDir only: on 2026-09-26 the node
898
+ // built sample/test's gateway without GATEWAY_UNIX_SOCKET and without the
899
+ // shared socket volume, Tor pointed at a socket nobody listened on, and the
900
+ // onion was down for ~11 minutes. f0e19089 had fixed the master's road.
901
+ const { staticDir: _declaredStaticDir, ...declared } = gatewayConfigOf(normalizedServices['gateway']._presetConfig, undefined, port, gatewayContext.redis.db);
902
+ const staticRoot = gatewayContext.staticRoots?.get('gateway');
903
+ const staticLinkRoot = gatewayContext.staticLinkRoots?.get('gateway');
904
+ containers.push(resolveGateway({
905
+ ...declared,
906
+ configDir: '.',
907
+ // Absolute: a node names its own copy, not a path relative to a
908
+ // project it does not have.
909
+ ...(staticRoot ? { staticDir: staticRoot } : {}),
910
+ // The project and the stack are not parameters here and do not need
911
+ // to be: `setStackLabels` has already put them where every container
912
+ // of this stack reads them, and the link is spelled by the one
913
+ // function that spells it anywhere.
914
+ ...(staticLinkRoot
915
+ ? {
916
+ staticLinkRoot,
917
+ staticLinkName: gatewayStaticLinkName(stackLabels()['omnitron.project'] ?? '', stackLabels()['omnitron.stack'] ?? ''),
918
+ }
919
+ : {}),
920
+ }, gatewayContext.redis, gatewayRoot));
921
+ return containers;
469
922
  }
470
923
  //# sourceMappingURL=service-resolver.js.map