@omnitron-dev/omnitron 0.1.3 → 0.3.0

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