@omnitron-dev/omnitron 0.3.0 → 0.3.2

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 (1786) hide show
  1. package/README.md +579 -0
  2. package/data/operations/managed-kernel.mjs +302 -0
  3. package/data/operations/stage-kernel.mjs +125 -0
  4. package/dist/BUILD.json +4 -3
  5. package/dist/cli/exit-after-output.d.ts +3 -0
  6. package/dist/cli/exit-after-output.d.ts.map +1 -0
  7. package/dist/cli/exit-after-output.js +11 -0
  8. package/dist/cli/exit-after-output.js.map +1 -0
  9. package/dist/cli/installed.d.ts +3 -0
  10. package/dist/cli/installed.d.ts.map +1 -0
  11. package/dist/cli/installed.js +17 -0
  12. package/dist/cli/installed.js.map +1 -0
  13. package/dist/cli/omnitron.js +455 -99
  14. package/dist/cli/omnitron.js.map +1 -1
  15. package/dist/cli/output-command.d.ts +13 -0
  16. package/dist/cli/output-command.d.ts.map +1 -0
  17. package/dist/cli/output-command.js +48 -0
  18. package/dist/cli/output-command.js.map +1 -0
  19. package/dist/cluster/cluster.rpc-service.d.ts +9 -77
  20. package/dist/cluster/cluster.rpc-service.d.ts.map +1 -1
  21. package/dist/cluster/cluster.rpc-service.js +20 -107
  22. package/dist/cluster/cluster.rpc-service.js.map +1 -1
  23. package/dist/cluster/enrollment.d.ts +9 -0
  24. package/dist/cluster/enrollment.d.ts.map +1 -0
  25. package/dist/cluster/enrollment.js +49 -0
  26. package/dist/cluster/enrollment.js.map +1 -0
  27. package/dist/cluster/index.d.ts +1 -1
  28. package/dist/cluster/index.d.ts.map +1 -1
  29. package/dist/cluster/leader-election.d.ts +39 -211
  30. package/dist/cluster/leader-election.d.ts.map +1 -1
  31. package/dist/cluster/leader-election.js +235 -512
  32. package/dist/cluster/leader-election.js.map +1 -1
  33. package/dist/cluster/mesh-link.d.ts +18 -51
  34. package/dist/cluster/mesh-link.d.ts.map +1 -1
  35. package/dist/cluster/mesh-link.js +66 -78
  36. package/dist/cluster/mesh-link.js.map +1 -1
  37. package/dist/cluster/mesh.d.ts +3 -1
  38. package/dist/cluster/mesh.d.ts.map +1 -1
  39. package/dist/cluster/mesh.js +76 -60
  40. package/dist/cluster/mesh.js.map +1 -1
  41. package/dist/cluster/slave-connector.d.ts +42 -6
  42. package/dist/cluster/slave-connector.d.ts.map +1 -1
  43. package/dist/cluster/slave-connector.js +349 -196
  44. package/dist/cluster/slave-connector.js.map +1 -1
  45. package/dist/cluster/standalone-infrastructure.d.ts +3 -0
  46. package/dist/cluster/standalone-infrastructure.d.ts.map +1 -0
  47. package/dist/cluster/standalone-infrastructure.js +25 -0
  48. package/dist/cluster/standalone-infrastructure.js.map +1 -0
  49. package/dist/cluster/stop-authority.d.ts +45 -0
  50. package/dist/cluster/stop-authority.d.ts.map +1 -0
  51. package/dist/cluster/stop-authority.js +112 -0
  52. package/dist/cluster/stop-authority.js.map +1 -0
  53. package/dist/commands/access.d.ts +9 -0
  54. package/dist/commands/access.d.ts.map +1 -0
  55. package/dist/commands/access.js +45 -0
  56. package/dist/commands/access.js.map +1 -0
  57. package/dist/commands/audit.d.ts +2 -0
  58. package/dist/commands/audit.d.ts.map +1 -1
  59. package/dist/commands/audit.js +9 -4
  60. package/dist/commands/audit.js.map +1 -1
  61. package/dist/commands/backend.d.ts +17 -0
  62. package/dist/commands/backend.d.ts.map +1 -0
  63. package/dist/commands/backend.js +264 -0
  64. package/dist/commands/backend.js.map +1 -0
  65. package/dist/commands/backup.d.ts +5 -0
  66. package/dist/commands/backup.d.ts.map +1 -1
  67. package/dist/commands/backup.js +17 -2
  68. package/dist/commands/backup.js.map +1 -1
  69. package/dist/commands/cluster.d.ts.map +1 -1
  70. package/dist/commands/cluster.js +33 -42
  71. package/dist/commands/cluster.js.map +1 -1
  72. package/dist/commands/daemon-cmd.d.ts.map +1 -1
  73. package/dist/commands/daemon-cmd.js +14 -3
  74. package/dist/commands/daemon-cmd.js.map +1 -1
  75. package/dist/commands/deploy.d.ts +4 -4
  76. package/dist/commands/deploy.js +4 -4
  77. package/dist/commands/discover.d.ts +2 -2
  78. package/dist/commands/discover.js +2 -2
  79. package/dist/commands/doctor.d.ts +11 -29
  80. package/dist/commands/doctor.d.ts.map +1 -1
  81. package/dist/commands/doctor.js +47 -45
  82. package/dist/commands/doctor.js.map +1 -1
  83. package/dist/commands/files.d.ts +19 -0
  84. package/dist/commands/files.d.ts.map +1 -0
  85. package/dist/commands/files.js +226 -0
  86. package/dist/commands/files.js.map +1 -0
  87. package/dist/commands/fleet-asking.d.ts +2 -2
  88. package/dist/commands/fleet-asking.js +2 -2
  89. package/dist/commands/fleet-recover.d.ts +2 -0
  90. package/dist/commands/fleet-recover.d.ts.map +1 -0
  91. package/dist/commands/fleet-recover.js +30 -0
  92. package/dist/commands/fleet-recover.js.map +1 -0
  93. package/dist/commands/fleet-rollout.d.ts +25 -0
  94. package/dist/commands/fleet-rollout.d.ts.map +1 -0
  95. package/dist/commands/fleet-rollout.js +155 -0
  96. package/dist/commands/fleet-rollout.js.map +1 -0
  97. package/dist/commands/fleet.d.ts.map +1 -1
  98. package/dist/commands/fleet.js +1 -0
  99. package/dist/commands/fleet.js.map +1 -1
  100. package/dist/commands/health-check.d.ts.map +1 -1
  101. package/dist/commands/health-check.js +13 -6
  102. package/dist/commands/health-check.js.map +1 -1
  103. package/dist/commands/host-ingress.d.ts +3 -0
  104. package/dist/commands/host-ingress.d.ts.map +1 -0
  105. package/dist/commands/host-ingress.js +31 -0
  106. package/dist/commands/host-ingress.js.map +1 -0
  107. package/dist/commands/infra.d.ts +7 -4
  108. package/dist/commands/infra.d.ts.map +1 -1
  109. package/dist/commands/infra.js +152 -60
  110. package/dist/commands/infra.js.map +1 -1
  111. package/dist/commands/logs.d.ts +7 -24
  112. package/dist/commands/logs.d.ts.map +1 -1
  113. package/dist/commands/logs.js +117 -41
  114. package/dist/commands/logs.js.map +1 -1
  115. package/dist/commands/metrics.d.ts.map +1 -1
  116. package/dist/commands/metrics.js +7 -1
  117. package/dist/commands/metrics.js.map +1 -1
  118. package/dist/commands/migrate.d.ts +8 -0
  119. package/dist/commands/migrate.d.ts.map +1 -0
  120. package/dist/commands/migrate.js +64 -0
  121. package/dist/commands/migrate.js.map +1 -0
  122. package/dist/commands/node-reconcile.d.ts +8 -0
  123. package/dist/commands/node-reconcile.d.ts.map +1 -0
  124. package/dist/commands/node-reconcile.js +49 -0
  125. package/dist/commands/node-reconcile.js.map +1 -0
  126. package/dist/commands/node.d.ts +1 -21
  127. package/dist/commands/node.d.ts.map +1 -1
  128. package/dist/commands/node.js +35 -27
  129. package/dist/commands/node.js.map +1 -1
  130. package/dist/commands/output.d.ts +3 -9
  131. package/dist/commands/output.d.ts.map +1 -1
  132. package/dist/commands/output.js +34 -25
  133. package/dist/commands/output.js.map +1 -1
  134. package/dist/commands/pipeline.d.ts +11 -2
  135. package/dist/commands/pipeline.d.ts.map +1 -1
  136. package/dist/commands/pipeline.js +82 -15
  137. package/dist/commands/pipeline.js.map +1 -1
  138. package/dist/commands/project.d.ts +10 -2
  139. package/dist/commands/project.d.ts.map +1 -1
  140. package/dist/commands/project.js +69 -3
  141. package/dist/commands/project.js.map +1 -1
  142. package/dist/commands/release-store.js +1 -1
  143. package/dist/commands/release-store.js.map +1 -1
  144. package/dist/commands/release.d.ts +5 -12
  145. package/dist/commands/release.d.ts.map +1 -1
  146. package/dist/commands/release.js +144 -36
  147. package/dist/commands/release.js.map +1 -1
  148. package/dist/commands/remote.d.ts +3 -3
  149. package/dist/commands/remote.js +3 -3
  150. package/dist/commands/scale.d.ts +1 -4
  151. package/dist/commands/scale.d.ts.map +1 -1
  152. package/dist/commands/scale.js +39 -19
  153. package/dist/commands/scale.js.map +1 -1
  154. package/dist/commands/secret-input.d.ts +3 -0
  155. package/dist/commands/secret-input.d.ts.map +1 -0
  156. package/dist/commands/secret-input.js +36 -0
  157. package/dist/commands/secret-input.js.map +1 -0
  158. package/dist/commands/secret.d.ts +4 -2
  159. package/dist/commands/secret.d.ts.map +1 -1
  160. package/dist/commands/secret.js +12 -2
  161. package/dist/commands/secret.js.map +1 -1
  162. package/dist/commands/service-resident.d.ts +25 -0
  163. package/dist/commands/service-resident.d.ts.map +1 -0
  164. package/dist/commands/service-resident.js +236 -0
  165. package/dist/commands/service-resident.js.map +1 -0
  166. package/dist/commands/service-units.d.ts +13 -1
  167. package/dist/commands/service-units.d.ts.map +1 -1
  168. package/dist/commands/service-units.js +38 -16
  169. package/dist/commands/service-units.js.map +1 -1
  170. package/dist/commands/service.d.ts +2 -24
  171. package/dist/commands/service.d.ts.map +1 -1
  172. package/dist/commands/service.js +89 -7
  173. package/dist/commands/service.js.map +1 -1
  174. package/dist/commands/stack.d.ts +11 -6
  175. package/dist/commands/stack.d.ts.map +1 -1
  176. package/dist/commands/stack.js +212 -38
  177. package/dist/commands/stack.js.map +1 -1
  178. package/dist/commands/start.d.ts +0 -21
  179. package/dist/commands/start.d.ts.map +1 -1
  180. package/dist/commands/start.js +33 -43
  181. package/dist/commands/start.js.map +1 -1
  182. package/dist/commands/status.d.ts +1 -5
  183. package/dist/commands/status.d.ts.map +1 -1
  184. package/dist/commands/status.js +5 -1
  185. package/dist/commands/status.js.map +1 -1
  186. package/dist/commands/stop.d.ts +0 -22
  187. package/dist/commands/stop.d.ts.map +1 -1
  188. package/dist/commands/stop.js +26 -86
  189. package/dist/commands/stop.js.map +1 -1
  190. package/dist/commands/system.d.ts +4 -0
  191. package/dist/commands/system.d.ts.map +1 -0
  192. package/dist/commands/system.js +41 -0
  193. package/dist/commands/system.js.map +1 -0
  194. package/dist/commands/terminal.d.ts +7 -0
  195. package/dist/commands/terminal.d.ts.map +1 -0
  196. package/dist/commands/terminal.js +184 -0
  197. package/dist/commands/terminal.js.map +1 -0
  198. package/dist/commands/topology.d.ts +3 -0
  199. package/dist/commands/topology.d.ts.map +1 -0
  200. package/dist/commands/topology.js +107 -0
  201. package/dist/commands/topology.js.map +1 -0
  202. package/dist/commands/tor.d.ts +1 -1
  203. package/dist/commands/tor.js +2 -2
  204. package/dist/commands/up.d.ts +4 -54
  205. package/dist/commands/up.d.ts.map +1 -1
  206. package/dist/commands/up.js +41 -98
  207. package/dist/commands/up.js.map +1 -1
  208. package/dist/commands/webapp.d.ts +0 -9
  209. package/dist/commands/webapp.d.ts.map +1 -1
  210. package/dist/commands/webapp.js +116 -69
  211. package/dist/commands/webapp.js.map +1 -1
  212. package/dist/config/app-path.d.ts +4 -0
  213. package/dist/config/app-path.d.ts.map +1 -0
  214. package/dist/config/app-path.js +6 -0
  215. package/dist/config/app-path.js.map +1 -0
  216. package/dist/config/defaults.d.ts.map +1 -1
  217. package/dist/config/defaults.js +9 -3
  218. package/dist/config/defaults.js.map +1 -1
  219. package/dist/config/define-ecosystem.d.ts.map +1 -1
  220. package/dist/config/define-ecosystem.js +12 -0
  221. package/dist/config/define-ecosystem.js.map +1 -1
  222. package/dist/config/index.d.ts +3 -1
  223. package/dist/config/index.d.ts.map +1 -1
  224. package/dist/config/index.js +1 -1
  225. package/dist/config/index.js.map +1 -1
  226. package/dist/config/loader-child.d.ts +2 -0
  227. package/dist/config/loader-child.d.ts.map +1 -0
  228. package/dist/config/loader-child.js +56 -0
  229. package/dist/config/loader-child.js.map +1 -0
  230. package/dist/config/loader.d.ts +7 -2
  231. package/dist/config/loader.d.ts.map +1 -1
  232. package/dist/config/loader.js +14 -27
  233. package/dist/config/loader.js.map +1 -1
  234. package/dist/config/saved.d.ts +67 -0
  235. package/dist/config/saved.d.ts.map +1 -0
  236. package/dist/config/saved.js +81 -0
  237. package/dist/config/saved.js.map +1 -0
  238. package/dist/config/types.d.ts +105 -58
  239. package/dist/config/types.d.ts.map +1 -1
  240. package/dist/daemon/backend-candidate.d.ts +32 -0
  241. package/dist/daemon/backend-candidate.d.ts.map +1 -0
  242. package/dist/daemon/backend-candidate.js +129 -0
  243. package/dist/daemon/backend-candidate.js.map +1 -0
  244. package/dist/daemon/backend-child.d.ts +5 -0
  245. package/dist/daemon/backend-child.d.ts.map +1 -0
  246. package/dist/daemon/backend-child.js +13 -0
  247. package/dist/daemon/backend-child.js.map +1 -0
  248. package/dist/daemon/backend-control.d.ts +43 -0
  249. package/dist/daemon/backend-control.d.ts.map +1 -0
  250. package/dist/daemon/backend-control.js +155 -0
  251. package/dist/daemon/backend-control.js.map +1 -0
  252. package/dist/daemon/backend-crash-recovery.d.ts +4 -0
  253. package/dist/daemon/backend-crash-recovery.d.ts.map +1 -0
  254. package/dist/daemon/backend-crash-recovery.js +136 -0
  255. package/dist/daemon/backend-crash-recovery.js.map +1 -0
  256. package/dist/daemon/backend-handoff-types.d.ts +27 -0
  257. package/dist/daemon/backend-handoff-types.d.ts.map +1 -0
  258. package/dist/daemon/backend-handoff-types.js +33 -0
  259. package/dist/daemon/backend-handoff-types.js.map +1 -0
  260. package/dist/daemon/backend-recovery-journal.d.ts +30 -0
  261. package/dist/daemon/backend-recovery-journal.d.ts.map +1 -0
  262. package/dist/daemon/backend-recovery-journal.js +67 -0
  263. package/dist/daemon/backend-recovery-journal.js.map +1 -0
  264. package/dist/daemon/backend-recovery-monitor.d.ts +35 -0
  265. package/dist/daemon/backend-recovery-monitor.d.ts.map +1 -0
  266. package/dist/daemon/backend-recovery-monitor.js +113 -0
  267. package/dist/daemon/backend-recovery-monitor.js.map +1 -0
  268. package/dist/daemon/backend-supervisor-entry.d.ts +2 -0
  269. package/dist/daemon/backend-supervisor-entry.d.ts.map +1 -0
  270. package/dist/daemon/backend-supervisor-entry.js +3 -0
  271. package/dist/daemon/backend-supervisor-entry.js.map +1 -0
  272. package/dist/daemon/backend-supervisor-main.d.ts +2 -0
  273. package/dist/daemon/backend-supervisor-main.d.ts.map +1 -0
  274. package/dist/daemon/backend-supervisor-main.js +45 -0
  275. package/dist/daemon/backend-supervisor-main.js.map +1 -0
  276. package/dist/daemon/backend-supervisor.d.ts +61 -0
  277. package/dist/daemon/backend-supervisor.d.ts.map +1 -0
  278. package/dist/daemon/backend-supervisor.js +339 -0
  279. package/dist/daemon/backend-supervisor.js.map +1 -0
  280. package/dist/daemon/backend-upgrade.d.ts +41 -0
  281. package/dist/daemon/backend-upgrade.d.ts.map +1 -0
  282. package/dist/daemon/backend-upgrade.js +444 -0
  283. package/dist/daemon/backend-upgrade.js.map +1 -0
  284. package/dist/daemon/backend.rpc-service.d.ts +11 -0
  285. package/dist/daemon/backend.rpc-service.d.ts.map +1 -0
  286. package/dist/daemon/backend.rpc-service.js +44 -0
  287. package/dist/daemon/backend.rpc-service.js.map +1 -0
  288. package/dist/daemon/daemon-client.d.ts +12 -79
  289. package/dist/daemon/daemon-client.d.ts.map +1 -1
  290. package/dist/daemon/daemon-client.js +28 -270
  291. package/dist/daemon/daemon-client.js.map +1 -1
  292. package/dist/daemon/daemon-entry.d.ts +0 -7
  293. package/dist/daemon/daemon-entry.d.ts.map +1 -1
  294. package/dist/daemon/daemon-entry.js +2 -115
  295. package/dist/daemon/daemon-entry.js.map +1 -1
  296. package/dist/daemon/daemon-main.d.ts +9 -0
  297. package/dist/daemon/daemon-main.d.ts.map +1 -0
  298. package/dist/daemon/daemon-main.js +105 -0
  299. package/dist/daemon/daemon-main.js.map +1 -0
  300. package/dist/daemon/daemon-scheduler.d.ts +8 -5
  301. package/dist/daemon/daemon-scheduler.d.ts.map +1 -1
  302. package/dist/daemon/daemon-scheduler.js +45 -73
  303. package/dist/daemon/daemon-scheduler.js.map +1 -1
  304. package/dist/daemon/daemon-state-store.service.d.ts +5 -39
  305. package/dist/daemon/daemon-state-store.service.d.ts.map +1 -1
  306. package/dist/daemon/daemon-state-store.service.js +30 -17
  307. package/dist/daemon/daemon-state-store.service.js.map +1 -1
  308. package/dist/daemon/daemon.d.ts +50 -79
  309. package/dist/daemon/daemon.d.ts.map +1 -1
  310. package/dist/daemon/daemon.js +769 -442
  311. package/dist/daemon/daemon.js.map +1 -1
  312. package/dist/daemon/daemon.module.d.ts +13 -11
  313. package/dist/daemon/daemon.module.d.ts.map +1 -1
  314. package/dist/daemon/daemon.module.js +139 -106
  315. package/dist/daemon/daemon.module.js.map +1 -1
  316. package/dist/daemon/daemon.rpc-service.d.ts +11 -19
  317. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  318. package/dist/daemon/daemon.rpc-service.js +89 -28
  319. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  320. package/dist/daemon/darwin-owner-evidence.d.ts +57 -0
  321. package/dist/daemon/darwin-owner-evidence.d.ts.map +1 -0
  322. package/dist/daemon/darwin-owner-evidence.js +131 -0
  323. package/dist/daemon/darwin-owner-evidence.js.map +1 -0
  324. package/dist/daemon/database-startup.d.ts +7 -0
  325. package/dist/daemon/database-startup.d.ts.map +1 -0
  326. package/dist/daemon/database-startup.js +40 -0
  327. package/dist/daemon/database-startup.js.map +1 -0
  328. package/dist/daemon/entry-guard.d.ts +2 -0
  329. package/dist/daemon/entry-guard.d.ts.map +1 -0
  330. package/dist/daemon/entry-guard.js +34 -0
  331. package/dist/daemon/entry-guard.js.map +1 -0
  332. package/dist/daemon/execution-capabilities.d.ts +7 -0
  333. package/dist/daemon/execution-capabilities.d.ts.map +1 -0
  334. package/dist/daemon/execution-capabilities.js +23 -0
  335. package/dist/daemon/execution-capabilities.js.map +1 -0
  336. package/dist/daemon/execution-client.d.ts +88 -0
  337. package/dist/daemon/execution-client.d.ts.map +1 -0
  338. package/dist/daemon/execution-client.js +433 -0
  339. package/dist/daemon/execution-client.js.map +1 -0
  340. package/dist/daemon/execution-config.d.ts +7 -0
  341. package/dist/daemon/execution-config.d.ts.map +1 -0
  342. package/dist/daemon/execution-config.js +61 -0
  343. package/dist/daemon/execution-config.js.map +1 -0
  344. package/dist/daemon/execution-entry.d.ts +2 -0
  345. package/dist/daemon/execution-entry.d.ts.map +1 -0
  346. package/dist/daemon/execution-entry.js +3 -0
  347. package/dist/daemon/execution-entry.js.map +1 -0
  348. package/dist/daemon/execution-host.d.ts +133 -0
  349. package/dist/daemon/execution-host.d.ts.map +1 -0
  350. package/dist/daemon/execution-host.js +308 -0
  351. package/dist/daemon/execution-host.js.map +1 -0
  352. package/dist/daemon/execution-journal.d.ts +17 -0
  353. package/dist/daemon/execution-journal.d.ts.map +1 -0
  354. package/dist/daemon/execution-journal.js +75 -0
  355. package/dist/daemon/execution-journal.js.map +1 -0
  356. package/dist/daemon/execution-launcher.d.ts +12 -0
  357. package/dist/daemon/execution-launcher.d.ts.map +1 -0
  358. package/dist/daemon/execution-launcher.js +110 -0
  359. package/dist/daemon/execution-launcher.js.map +1 -0
  360. package/dist/daemon/execution-main.d.ts +2 -0
  361. package/dist/daemon/execution-main.d.ts.map +1 -0
  362. package/dist/daemon/execution-main.js +48 -0
  363. package/dist/daemon/execution-main.js.map +1 -0
  364. package/dist/daemon/execution-owner.d.ts +16 -0
  365. package/dist/daemon/execution-owner.d.ts.map +1 -0
  366. package/dist/daemon/execution-owner.js +97 -0
  367. package/dist/daemon/execution-owner.js.map +1 -0
  368. package/dist/daemon/execution-platform.d.ts +3 -0
  369. package/dist/daemon/execution-platform.d.ts.map +1 -0
  370. package/dist/daemon/execution-platform.js +23 -0
  371. package/dist/daemon/execution-platform.js.map +1 -0
  372. package/dist/daemon/execution-shutdown.d.ts +13 -0
  373. package/dist/daemon/execution-shutdown.d.ts.map +1 -0
  374. package/dist/daemon/execution-shutdown.js +30 -0
  375. package/dist/daemon/execution-shutdown.js.map +1 -0
  376. package/dist/daemon/managed-entry.d.ts +2 -0
  377. package/dist/daemon/managed-entry.d.ts.map +1 -0
  378. package/dist/daemon/managed-entry.js +3 -0
  379. package/dist/daemon/managed-entry.js.map +1 -0
  380. package/dist/daemon/managed-main.d.ts +2 -0
  381. package/dist/daemon/managed-main.d.ts.map +1 -0
  382. package/dist/daemon/managed-main.js +29 -0
  383. package/dist/daemon/managed-main.js.map +1 -0
  384. package/dist/daemon/managed-owner-build.d.ts +17 -0
  385. package/dist/daemon/managed-owner-build.d.ts.map +1 -0
  386. package/dist/daemon/managed-owner-build.js +108 -0
  387. package/dist/daemon/managed-owner-build.js.map +1 -0
  388. package/dist/daemon/managed-owner-entry.d.ts +2 -0
  389. package/dist/daemon/managed-owner-entry.d.ts.map +1 -0
  390. package/dist/daemon/managed-owner-entry.js +3 -0
  391. package/dist/daemon/managed-owner-entry.js.map +1 -0
  392. package/dist/daemon/managed-owner-main.d.ts +2 -0
  393. package/dist/daemon/managed-owner-main.d.ts.map +1 -0
  394. package/dist/daemon/managed-owner-main.js +53 -0
  395. package/dist/daemon/managed-owner-main.js.map +1 -0
  396. package/dist/daemon/managed-runtime.d.ts +39 -0
  397. package/dist/daemon/managed-runtime.d.ts.map +1 -0
  398. package/dist/daemon/managed-runtime.js +137 -0
  399. package/dist/daemon/managed-runtime.js.map +1 -0
  400. package/dist/daemon/network-publication.d.ts +5 -0
  401. package/dist/daemon/network-publication.d.ts.map +1 -0
  402. package/dist/daemon/network-publication.js +25 -0
  403. package/dist/daemon/network-publication.js.map +1 -0
  404. package/dist/daemon/owner-reconciliation.d.ts +58 -0
  405. package/dist/daemon/owner-reconciliation.d.ts.map +1 -0
  406. package/dist/daemon/owner-reconciliation.js +265 -0
  407. package/dist/daemon/owner-reconciliation.js.map +1 -0
  408. package/dist/daemon/pid-manager.d.ts +2 -0
  409. package/dist/daemon/pid-manager.d.ts.map +1 -1
  410. package/dist/daemon/pid-manager.js +5 -0
  411. package/dist/daemon/pid-manager.js.map +1 -1
  412. package/dist/daemon/private-control-client.d.ts +8 -0
  413. package/dist/daemon/private-control-client.d.ts.map +1 -0
  414. package/dist/daemon/private-control-client.js +41 -0
  415. package/dist/daemon/private-control-client.js.map +1 -0
  416. package/dist/daemon/recovery-state.d.ts +20 -0
  417. package/dist/daemon/recovery-state.d.ts.map +1 -0
  418. package/dist/daemon/recovery-state.js +53 -0
  419. package/dist/daemon/recovery-state.js.map +1 -0
  420. package/dist/daemon/rpc-connection.d.ts +29 -0
  421. package/dist/daemon/rpc-connection.d.ts.map +1 -0
  422. package/dist/daemon/rpc-connection.js +137 -0
  423. package/dist/daemon/rpc-connection.js.map +1 -0
  424. package/dist/daemon/runtime-installation.d.ts +58 -0
  425. package/dist/daemon/runtime-installation.d.ts.map +1 -0
  426. package/dist/daemon/runtime-installation.js +346 -0
  427. package/dist/daemon/runtime-installation.js.map +1 -0
  428. package/dist/daemon/runtime-launcher.d.ts +6 -0
  429. package/dist/daemon/runtime-launcher.d.ts.map +1 -0
  430. package/dist/daemon/runtime-launcher.js +45 -0
  431. package/dist/daemon/runtime-launcher.js.map +1 -0
  432. package/dist/daemon/schema-transition.d.ts +43 -0
  433. package/dist/daemon/schema-transition.d.ts.map +1 -0
  434. package/dist/daemon/schema-transition.js +239 -0
  435. package/dist/daemon/schema-transition.js.map +1 -0
  436. package/dist/daemon/spawn-daemon.d.ts +2 -0
  437. package/dist/daemon/spawn-daemon.d.ts.map +1 -1
  438. package/dist/daemon/spawn-daemon.js +4 -0
  439. package/dist/daemon/spawn-daemon.js.map +1 -1
  440. package/dist/daemon/startup-config.d.ts +77 -0
  441. package/dist/daemon/startup-config.d.ts.map +1 -0
  442. package/dist/daemon/startup-config.js +31 -0
  443. package/dist/daemon/startup-config.js.map +1 -0
  444. package/dist/daemon/startup-failure-journal.d.ts +3 -0
  445. package/dist/daemon/startup-failure-journal.d.ts.map +1 -0
  446. package/dist/daemon/startup-failure-journal.js +29 -0
  447. package/dist/daemon/startup-failure-journal.js.map +1 -0
  448. package/dist/daemon/state-store.d.ts +16 -24
  449. package/dist/daemon/state-store.d.ts.map +1 -1
  450. package/dist/daemon/state-store.js +51 -9
  451. package/dist/daemon/state-store.js.map +1 -1
  452. package/dist/daemon/supervisor-transition.d.ts +101 -0
  453. package/dist/daemon/supervisor-transition.d.ts.map +1 -0
  454. package/dist/daemon/supervisor-transition.js +503 -0
  455. package/dist/daemon/supervisor-transition.js.map +1 -0
  456. package/dist/daemon/system-guardian-cgroup.d.ts +16 -0
  457. package/dist/daemon/system-guardian-cgroup.d.ts.map +1 -0
  458. package/dist/daemon/system-guardian-cgroup.js +202 -0
  459. package/dist/daemon/system-guardian-cgroup.js.map +1 -0
  460. package/dist/daemon/system-guardian-unit.d.ts +9 -0
  461. package/dist/daemon/system-guardian-unit.d.ts.map +1 -0
  462. package/dist/daemon/system-guardian-unit.js +41 -0
  463. package/dist/daemon/system-guardian-unit.js.map +1 -0
  464. package/dist/database/connection.d.ts.map +1 -1
  465. package/dist/database/connection.js +2 -6
  466. package/dist/database/connection.js.map +1 -1
  467. package/dist/database/log-durability.d.ts +5 -0
  468. package/dist/database/log-durability.d.ts.map +1 -0
  469. package/dist/database/log-durability.js +28 -0
  470. package/dist/database/log-durability.js.map +1 -0
  471. package/dist/database/migrate.js +2 -15
  472. package/dist/database/migrate.js.map +1 -1
  473. package/dist/database/migration-registry-compatibility.d.ts +13 -0
  474. package/dist/database/migration-registry-compatibility.d.ts.map +1 -0
  475. package/dist/database/migration-registry-compatibility.js +108 -0
  476. package/dist/database/migration-registry-compatibility.js.map +1 -0
  477. package/dist/database/migration-runner.d.ts +8 -42
  478. package/dist/database/migration-runner.d.ts.map +1 -1
  479. package/dist/database/migration-runner.js +114 -123
  480. package/dist/database/migration-runner.js.map +1 -1
  481. package/dist/database/migrations/014_replication_receipts.d.ts +5 -0
  482. package/dist/database/migrations/014_replication_receipts.d.ts.map +1 -0
  483. package/dist/database/migrations/014_replication_receipts.js +6 -0
  484. package/dist/database/migrations/014_replication_receipts.js.map +1 -0
  485. package/dist/database/migrations/015_persistent_metrics.d.ts +5 -0
  486. package/dist/database/migrations/015_persistent_metrics.d.ts.map +1 -0
  487. package/dist/database/migrations/015_persistent_metrics.js +7 -0
  488. package/dist/database/migrations/015_persistent_metrics.js.map +1 -0
  489. package/dist/database/migrations/016_cluster_lease.d.ts +4 -0
  490. package/dist/database/migrations/016_cluster_lease.d.ts.map +1 -0
  491. package/dist/database/migrations/016_cluster_lease.js +6 -0
  492. package/dist/database/migrations/016_cluster_lease.js.map +1 -0
  493. package/dist/database/migrations/index.d.ts +1 -1
  494. package/dist/database/migrations/index.d.ts.map +1 -1
  495. package/dist/database/migrations/index.js +22 -13
  496. package/dist/database/migrations/index.js.map +1 -1
  497. package/dist/database/schema-compatibility.d.ts +34 -0
  498. package/dist/database/schema-compatibility.d.ts.map +1 -0
  499. package/dist/database/schema-compatibility.js +109 -0
  500. package/dist/database/schema-compatibility.js.map +1 -0
  501. package/dist/database/schema-expansion-policy.d.ts +10 -0
  502. package/dist/database/schema-expansion-policy.d.ts.map +1 -0
  503. package/dist/database/schema-expansion-policy.js +21 -0
  504. package/dist/database/schema-expansion-policy.js.map +1 -0
  505. package/dist/database/schema-transition-plan.d.ts +53 -0
  506. package/dist/database/schema-transition-plan.d.ts.map +1 -0
  507. package/dist/database/schema-transition-plan.js +102 -0
  508. package/dist/database/schema-transition-plan.js.map +1 -0
  509. package/dist/database/schema-worker.d.ts +2 -0
  510. package/dist/database/schema-worker.d.ts.map +1 -0
  511. package/dist/database/schema-worker.js +55 -0
  512. package/dist/database/schema-worker.js.map +1 -0
  513. package/dist/database/schema.d.ts +6 -1
  514. package/dist/database/schema.d.ts.map +1 -1
  515. package/dist/database/slave-migrations/001_replication_evidence.d.ts +4 -0
  516. package/dist/database/slave-migrations/001_replication_evidence.d.ts.map +1 -0
  517. package/dist/database/slave-migrations/001_replication_evidence.js +89 -0
  518. package/dist/database/slave-migrations/001_replication_evidence.js.map +1 -0
  519. package/dist/database/slave-migrations/index.d.ts +6 -0
  520. package/dist/database/slave-migrations/index.d.ts.map +1 -0
  521. package/dist/database/slave-migrations/index.js +10 -0
  522. package/dist/database/slave-migrations/index.js.map +1 -0
  523. package/dist/diagnostics/index.d.ts +16 -0
  524. package/dist/diagnostics/index.d.ts.map +1 -0
  525. package/dist/diagnostics/index.js +22 -0
  526. package/dist/diagnostics/index.js.map +1 -0
  527. package/dist/execution/command-failure.d.ts +7 -0
  528. package/dist/execution/command-failure.d.ts.map +1 -0
  529. package/dist/execution/command-failure.js +29 -0
  530. package/dist/execution/command-failure.js.map +1 -0
  531. package/dist/execution/data-channel.d.ts +1 -1
  532. package/dist/execution/data-channel.js +1 -1
  533. package/dist/execution/execution.service.d.ts +16 -4
  534. package/dist/execution/execution.service.d.ts.map +1 -1
  535. package/dist/execution/execution.service.js +133 -74
  536. package/dist/execution/execution.service.js.map +1 -1
  537. package/dist/files/archive-codec.d.ts +57 -0
  538. package/dist/files/archive-codec.d.ts.map +1 -0
  539. package/dist/files/archive-codec.js +454 -0
  540. package/dist/files/archive-codec.js.map +1 -0
  541. package/dist/files/archive-node.d.ts +27 -0
  542. package/dist/files/archive-node.d.ts.map +1 -0
  543. package/dist/files/archive-node.js +379 -0
  544. package/dist/files/archive-node.js.map +1 -0
  545. package/dist/files/archive-publication.d.ts +26 -0
  546. package/dist/files/archive-publication.d.ts.map +1 -0
  547. package/dist/files/archive-publication.js +224 -0
  548. package/dist/files/archive-publication.js.map +1 -0
  549. package/dist/files/file-config.d.ts +7 -0
  550. package/dist/files/file-config.d.ts.map +1 -0
  551. package/dist/files/file-config.js +11 -0
  552. package/dist/files/file-config.js.map +1 -0
  553. package/dist/files/file-node.d.ts +65 -0
  554. package/dist/files/file-node.d.ts.map +1 -0
  555. package/dist/files/file-node.js +863 -0
  556. package/dist/files/file-node.js.map +1 -0
  557. package/dist/files/file-node.rpc-service.d.ts +12 -0
  558. package/dist/files/file-node.rpc-service.d.ts.map +1 -0
  559. package/dist/files/file-node.rpc-service.js +42 -0
  560. package/dist/files/file-node.rpc-service.js.map +1 -0
  561. package/dist/files/files.rpc-service.d.ts +107 -0
  562. package/dist/files/files.rpc-service.d.ts.map +1 -0
  563. package/dist/files/files.rpc-service.js +769 -0
  564. package/dist/files/files.rpc-service.js.map +1 -0
  565. package/dist/files/structural-policy.d.ts +3 -0
  566. package/dist/files/structural-policy.d.ts.map +1 -0
  567. package/dist/files/structural-policy.js +27 -0
  568. package/dist/files/structural-policy.js.map +1 -0
  569. package/dist/health/contracts.d.ts +30 -0
  570. package/dist/health/contracts.d.ts.map +1 -0
  571. package/dist/health/contracts.js +58 -0
  572. package/dist/health/contracts.js.map +1 -0
  573. package/dist/health/heartbeat.d.ts +11 -0
  574. package/dist/health/heartbeat.d.ts.map +1 -0
  575. package/dist/health/heartbeat.js +32 -0
  576. package/dist/health/heartbeat.js.map +1 -0
  577. package/dist/health/index.d.ts +4 -0
  578. package/dist/health/index.d.ts.map +1 -0
  579. package/dist/health/index.js +2 -0
  580. package/dist/health/index.js.map +1 -0
  581. package/dist/health/readiness.d.ts +15 -0
  582. package/dist/health/readiness.d.ts.map +1 -0
  583. package/dist/health/readiness.js +170 -0
  584. package/dist/health/readiness.js.map +1 -0
  585. package/dist/index.d.ts +1 -0
  586. package/dist/index.d.ts.map +1 -1
  587. package/dist/infrastructure/apt-packages.d.ts +34 -0
  588. package/dist/infrastructure/apt-packages.d.ts.map +1 -0
  589. package/dist/infrastructure/apt-packages.js +232 -0
  590. package/dist/infrastructure/apt-packages.js.map +1 -0
  591. package/dist/infrastructure/bare-metal-plan.d.ts +10 -1
  592. package/dist/infrastructure/bare-metal-plan.d.ts.map +1 -1
  593. package/dist/infrastructure/bare-metal-plan.js +22 -1
  594. package/dist/infrastructure/bare-metal-plan.js.map +1 -1
  595. package/dist/infrastructure/bare-metal-runner.d.ts.map +1 -1
  596. package/dist/infrastructure/bare-metal-runner.js +13 -2
  597. package/dist/infrastructure/bare-metal-runner.js.map +1 -1
  598. package/dist/infrastructure/config-normalizer.d.ts +4 -3
  599. package/dist/infrastructure/config-normalizer.d.ts.map +1 -1
  600. package/dist/infrastructure/config-normalizer.js +11 -3
  601. package/dist/infrastructure/config-normalizer.js.map +1 -1
  602. package/dist/infrastructure/config-payload.d.ts +4 -4
  603. package/dist/infrastructure/config-payload.js +4 -4
  604. package/dist/infrastructure/container-runtime.d.ts +39 -13
  605. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  606. package/dist/infrastructure/container-runtime.js +276 -84
  607. package/dist/infrastructure/container-runtime.js.map +1 -1
  608. package/dist/infrastructure/gateway-redis-db.d.ts +2 -2
  609. package/dist/infrastructure/gateway-redis-db.js +2 -2
  610. package/dist/infrastructure/health-recovery.d.ts +19 -0
  611. package/dist/infrastructure/health-recovery.d.ts.map +1 -0
  612. package/dist/infrastructure/health-recovery.js +39 -0
  613. package/dist/infrastructure/health-recovery.js.map +1 -0
  614. package/dist/infrastructure/host-ingress-config.d.ts +12 -0
  615. package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
  616. package/dist/infrastructure/host-ingress-config.js +200 -0
  617. package/dist/infrastructure/host-ingress-config.js.map +1 -0
  618. package/dist/infrastructure/host-ingress-lock.d.ts +3 -0
  619. package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
  620. package/dist/infrastructure/host-ingress-lock.js +2 -0
  621. package/dist/infrastructure/host-ingress-lock.js.map +1 -0
  622. package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
  623. package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
  624. package/dist/infrastructure/host-ingress-runtime.js +114 -0
  625. package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
  626. package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
  627. package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
  628. package/dist/infrastructure/host-ingress-takeover.js +142 -0
  629. package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
  630. package/dist/infrastructure/host-ingress-types.d.ts +175 -0
  631. package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
  632. package/dist/infrastructure/host-ingress-types.js +2 -0
  633. package/dist/infrastructure/host-ingress-types.js.map +1 -0
  634. package/dist/infrastructure/host-ingress.service.d.ts +47 -0
  635. package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
  636. package/dist/infrastructure/host-ingress.service.js +514 -0
  637. package/dist/infrastructure/host-ingress.service.js.map +1 -0
  638. package/dist/infrastructure/host-inspection.d.ts +1 -0
  639. package/dist/infrastructure/host-inspection.d.ts.map +1 -1
  640. package/dist/infrastructure/host-inspection.js +3 -2
  641. package/dist/infrastructure/host-inspection.js.map +1 -1
  642. package/dist/infrastructure/infrastructure.service.d.ts +101 -34
  643. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  644. package/dist/infrastructure/infrastructure.service.js +631 -205
  645. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  646. package/dist/infrastructure/merge-config.d.ts +10 -0
  647. package/dist/infrastructure/merge-config.d.ts.map +1 -0
  648. package/dist/infrastructure/merge-config.js +27 -0
  649. package/dist/infrastructure/merge-config.js.map +1 -0
  650. package/dist/infrastructure/orphan-containers.d.ts +8 -7
  651. package/dist/infrastructure/orphan-containers.d.ts.map +1 -1
  652. package/dist/infrastructure/orphan-containers.js +7 -7
  653. package/dist/infrastructure/orphan-containers.js.map +1 -1
  654. package/dist/infrastructure/owned-container.d.ts +4 -0
  655. package/dist/infrastructure/owned-container.d.ts.map +1 -0
  656. package/dist/infrastructure/owned-container.js +13 -0
  657. package/dist/infrastructure/owned-container.js.map +1 -0
  658. package/dist/infrastructure/phantom-endpoint-janitor.d.ts +4 -1
  659. package/dist/infrastructure/phantom-endpoint-janitor.d.ts.map +1 -1
  660. package/dist/infrastructure/phantom-endpoint-janitor.js +11 -2
  661. package/dist/infrastructure/phantom-endpoint-janitor.js.map +1 -1
  662. package/dist/infrastructure/presets/minio.d.ts.map +1 -1
  663. package/dist/infrastructure/presets/minio.js +15 -25
  664. package/dist/infrastructure/presets/minio.js.map +1 -1
  665. package/dist/infrastructure/presets/postgres.d.ts.map +1 -1
  666. package/dist/infrastructure/presets/postgres.js +35 -31
  667. package/dist/infrastructure/presets/postgres.js.map +1 -1
  668. package/dist/infrastructure/presets/tor.d.ts +1 -2
  669. package/dist/infrastructure/presets/tor.d.ts.map +1 -1
  670. package/dist/infrastructure/presets/tor.js +7 -13
  671. package/dist/infrastructure/presets/tor.js.map +1 -1
  672. package/dist/infrastructure/provisioning-outcome.d.ts +8 -1
  673. package/dist/infrastructure/provisioning-outcome.d.ts.map +1 -1
  674. package/dist/infrastructure/provisioning-outcome.js +42 -9
  675. package/dist/infrastructure/provisioning-outcome.js.map +1 -1
  676. package/dist/infrastructure/service-binding.js +1 -1
  677. package/dist/infrastructure/service-resolver.d.ts +11 -5
  678. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  679. package/dist/infrastructure/service-resolver.js +109 -54
  680. package/dist/infrastructure/service-resolver.js.map +1 -1
  681. package/dist/infrastructure/shipped-config.js +4 -4
  682. package/dist/infrastructure/stack-infra-manager.d.ts +35 -5
  683. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  684. package/dist/infrastructure/stack-infra-manager.js +227 -57
  685. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  686. package/dist/infrastructure/types.d.ts +68 -9
  687. package/dist/infrastructure/types.d.ts.map +1 -1
  688. package/dist/mcp/mcp-bridge.js +1 -1
  689. package/dist/mcp/mcp-bridge.js.map +1 -1
  690. package/dist/mcp/monitoring-reading.d.ts +18 -0
  691. package/dist/mcp/monitoring-reading.d.ts.map +1 -0
  692. package/dist/mcp/monitoring-reading.js +84 -0
  693. package/dist/mcp/monitoring-reading.js.map +1 -0
  694. package/dist/mcp/tool-groups/apps.tools.d.ts.map +1 -1
  695. package/dist/mcp/tool-groups/apps.tools.js +6 -4
  696. package/dist/mcp/tool-groups/apps.tools.js.map +1 -1
  697. package/dist/mcp/tool-groups/management.tools.d.ts +2 -0
  698. package/dist/mcp/tool-groups/management.tools.d.ts.map +1 -1
  699. package/dist/mcp/tool-groups/management.tools.js +17 -38
  700. package/dist/mcp/tool-groups/management.tools.js.map +1 -1
  701. package/dist/mcp/tool-groups/monitoring.tools.d.ts.map +1 -1
  702. package/dist/mcp/tool-groups/monitoring.tools.js +45 -2
  703. package/dist/mcp/tool-groups/monitoring.tools.js.map +1 -1
  704. package/dist/mcp/unavailable-tools.js +2 -2
  705. package/dist/mcp/unavailable-tools.js.map +1 -1
  706. package/dist/migration/configuration.d.ts +8 -0
  707. package/dist/migration/configuration.d.ts.map +1 -0
  708. package/dist/migration/configuration.js +16 -0
  709. package/dist/migration/configuration.js.map +1 -0
  710. package/dist/migration/index.d.ts +25 -0
  711. package/dist/migration/index.d.ts.map +1 -0
  712. package/dist/migration/index.js +27 -0
  713. package/dist/migration/index.js.map +1 -0
  714. package/dist/migration/operation.d.ts +31 -0
  715. package/dist/migration/operation.d.ts.map +1 -0
  716. package/dist/migration/operation.js +67 -0
  717. package/dist/migration/operation.js.map +1 -0
  718. package/dist/migration/workspace.d.ts +28 -0
  719. package/dist/migration/workspace.d.ts.map +1 -0
  720. package/dist/migration/workspace.js +91 -0
  721. package/dist/migration/workspace.js.map +1 -0
  722. package/dist/monitoring/app-health.indicator.d.ts +1 -1
  723. package/dist/monitoring/app-health.indicator.d.ts.map +1 -1
  724. package/dist/monitoring/docker-health.indicator.d.ts +4 -2
  725. package/dist/monitoring/docker-health.indicator.d.ts.map +1 -1
  726. package/dist/monitoring/docker-health.indicator.js +66 -5
  727. package/dist/monitoring/docker-health.indicator.js.map +1 -1
  728. package/dist/monitoring/event-loop-watch.d.ts.map +1 -1
  729. package/dist/monitoring/event-loop-watch.js.map +1 -1
  730. package/dist/monitoring/infrastructure-health.d.ts +15 -0
  731. package/dist/monitoring/infrastructure-health.d.ts.map +1 -0
  732. package/dist/monitoring/infrastructure-health.js +2 -0
  733. package/dist/monitoring/infrastructure-health.js.map +1 -0
  734. package/dist/monitoring/log-entry.d.ts +7 -0
  735. package/dist/monitoring/log-entry.d.ts.map +1 -0
  736. package/dist/monitoring/log-entry.js +16 -0
  737. package/dist/monitoring/log-entry.js.map +1 -0
  738. package/dist/monitoring/log-journal.d.ts +40 -0
  739. package/dist/monitoring/log-journal.d.ts.map +1 -0
  740. package/dist/monitoring/log-journal.js +158 -0
  741. package/dist/monitoring/log-journal.js.map +1 -0
  742. package/dist/monitoring/log-line.d.ts +22 -17
  743. package/dist/monitoring/log-line.d.ts.map +1 -1
  744. package/dist/monitoring/log-line.js +73 -62
  745. package/dist/monitoring/log-line.js.map +1 -1
  746. package/dist/monitoring/log-manager.d.ts +37 -40
  747. package/dist/monitoring/log-manager.d.ts.map +1 -1
  748. package/dist/monitoring/log-manager.js +167 -66
  749. package/dist/monitoring/log-manager.js.map +1 -1
  750. package/dist/monitoring/log-sink-health.indicator.d.ts +10 -0
  751. package/dist/monitoring/log-sink-health.indicator.d.ts.map +1 -0
  752. package/dist/monitoring/log-sink-health.indicator.js +21 -0
  753. package/dist/monitoring/log-sink-health.indicator.js.map +1 -0
  754. package/dist/monitoring/metrics-storage.indicator.d.ts +9 -0
  755. package/dist/monitoring/metrics-storage.indicator.d.ts.map +1 -0
  756. package/dist/monitoring/metrics-storage.indicator.js +18 -0
  757. package/dist/monitoring/metrics-storage.indicator.js.map +1 -0
  758. package/dist/monitoring/process-lifetime.d.ts +11 -0
  759. package/dist/monitoring/process-lifetime.d.ts.map +1 -0
  760. package/dist/monitoring/process-lifetime.js +45 -0
  761. package/dist/monitoring/process-lifetime.js.map +1 -0
  762. package/dist/monitoring/runtime-diagnostics.d.ts +47 -0
  763. package/dist/monitoring/runtime-diagnostics.d.ts.map +1 -0
  764. package/dist/monitoring/runtime-diagnostics.js +88 -0
  765. package/dist/monitoring/runtime-diagnostics.js.map +1 -0
  766. package/dist/observability/metrics-bridge.d.ts +5 -1
  767. package/dist/observability/metrics-bridge.d.ts.map +1 -1
  768. package/dist/observability/metrics-bridge.js +11 -0
  769. package/dist/observability/metrics-bridge.js.map +1 -1
  770. package/dist/operations.d.ts +17 -0
  771. package/dist/operations.d.ts.map +1 -0
  772. package/dist/operations.js +13 -0
  773. package/dist/operations.js.map +1 -0
  774. package/dist/orchestrator/app-handle.d.ts +27 -9
  775. package/dist/orchestrator/app-handle.d.ts.map +1 -1
  776. package/dist/orchestrator/app-handle.js +42 -11
  777. package/dist/orchestrator/app-handle.js.map +1 -1
  778. package/dist/orchestrator/application-runtime-child.d.ts +2 -0
  779. package/dist/orchestrator/application-runtime-child.d.ts.map +1 -0
  780. package/dist/orchestrator/application-runtime-child.js +15 -0
  781. package/dist/orchestrator/application-runtime-child.js.map +1 -0
  782. package/dist/orchestrator/application-runtime-resolution.d.ts +4 -0
  783. package/dist/orchestrator/application-runtime-resolution.d.ts.map +1 -0
  784. package/dist/orchestrator/application-runtime-resolution.js +62 -0
  785. package/dist/orchestrator/application-runtime-resolution.js.map +1 -0
  786. package/dist/orchestrator/application-runtime.d.ts +3 -0
  787. package/dist/orchestrator/application-runtime.d.ts.map +1 -0
  788. package/dist/orchestrator/application-runtime.js +20 -0
  789. package/dist/orchestrator/application-runtime.js.map +1 -0
  790. package/dist/orchestrator/application-topology.d.ts +20 -0
  791. package/dist/orchestrator/application-topology.d.ts.map +1 -0
  792. package/dist/orchestrator/application-topology.js +90 -0
  793. package/dist/orchestrator/application-topology.js.map +1 -0
  794. package/dist/orchestrator/bootstrap-loader-child.d.ts +1 -1
  795. package/dist/orchestrator/bootstrap-loader-child.js +7 -16
  796. package/dist/orchestrator/bootstrap-loader-child.js.map +1 -1
  797. package/dist/orchestrator/bootstrap-loader.d.ts +10 -20
  798. package/dist/orchestrator/bootstrap-loader.d.ts.map +1 -1
  799. package/dist/orchestrator/bootstrap-loader.js +24 -207
  800. package/dist/orchestrator/bootstrap-loader.js.map +1 -1
  801. package/dist/orchestrator/bootstrap-process.d.ts +6 -6
  802. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  803. package/dist/orchestrator/bootstrap-process.js +40 -40
  804. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  805. package/dist/orchestrator/build-service.d.ts +8 -14
  806. package/dist/orchestrator/build-service.d.ts.map +1 -1
  807. package/dist/orchestrator/build-service.js +144 -158
  808. package/dist/orchestrator/build-service.js.map +1 -1
  809. package/dist/orchestrator/call-exposed-service.d.ts +8 -0
  810. package/dist/orchestrator/call-exposed-service.d.ts.map +1 -1
  811. package/dist/orchestrator/call-exposed-service.js +1 -1
  812. package/dist/orchestrator/classic-launcher.d.ts +3 -2
  813. package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
  814. package/dist/orchestrator/classic-launcher.js +32 -23
  815. package/dist/orchestrator/classic-launcher.js.map +1 -1
  816. package/dist/orchestrator/dependency-resolver.d.ts.map +1 -1
  817. package/dist/orchestrator/dependency-resolver.js +7 -38
  818. package/dist/orchestrator/dependency-resolver.js.map +1 -1
  819. package/dist/orchestrator/execution-contract.d.ts +67 -0
  820. package/dist/orchestrator/execution-contract.d.ts.map +1 -0
  821. package/dist/orchestrator/execution-contract.js +2 -0
  822. package/dist/orchestrator/execution-contract.js.map +1 -0
  823. package/dist/orchestrator/file-watcher.d.ts +2 -1
  824. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  825. package/dist/orchestrator/file-watcher.js +23 -5
  826. package/dist/orchestrator/file-watcher.js.map +1 -1
  827. package/dist/orchestrator/http-routes.d.ts +4 -0
  828. package/dist/orchestrator/http-routes.d.ts.map +1 -0
  829. package/dist/orchestrator/http-routes.js +19 -0
  830. package/dist/orchestrator/http-routes.js.map +1 -0
  831. package/dist/orchestrator/installed-execution.d.ts +7 -0
  832. package/dist/orchestrator/installed-execution.d.ts.map +1 -0
  833. package/dist/orchestrator/installed-execution.js +25 -0
  834. package/dist/orchestrator/installed-execution.js.map +1 -0
  835. package/dist/orchestrator/module-worker-process.d.ts.map +1 -1
  836. package/dist/orchestrator/module-worker-process.js +2 -1
  837. package/dist/orchestrator/module-worker-process.js.map +1 -1
  838. package/dist/orchestrator/orchestrator.service.d.ts +105 -80
  839. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  840. package/dist/orchestrator/orchestrator.service.js +1084 -571
  841. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  842. package/dist/orchestrator/process-janitor.d.ts +3 -0
  843. package/dist/orchestrator/process-janitor.d.ts.map +1 -1
  844. package/dist/orchestrator/process-janitor.js +5 -1
  845. package/dist/orchestrator/process-janitor.js.map +1 -1
  846. package/dist/orchestrator/runtime-package-resolution.d.ts +8 -0
  847. package/dist/orchestrator/runtime-package-resolution.d.ts.map +1 -0
  848. package/dist/orchestrator/runtime-package-resolution.js +56 -0
  849. package/dist/orchestrator/runtime-package-resolution.js.map +1 -0
  850. package/dist/orchestrator/service-router.d.ts +4 -108
  851. package/dist/orchestrator/service-router.d.ts.map +1 -1
  852. package/dist/orchestrator/service-router.js +51 -237
  853. package/dist/orchestrator/service-router.js.map +1 -1
  854. package/dist/orchestrator/topology-query.d.ts +1 -1
  855. package/dist/orchestrator/topology-query.js +1 -1
  856. package/dist/orchestrator/ts-compiler.d.ts.map +1 -1
  857. package/dist/orchestrator/ts-compiler.js +9 -17
  858. package/dist/orchestrator/ts-compiler.js.map +1 -1
  859. package/dist/project/artifact-builder.d.ts +17 -7
  860. package/dist/project/artifact-builder.d.ts.map +1 -1
  861. package/dist/project/artifact-builder.js +91 -58
  862. package/dist/project/artifact-builder.js.map +1 -1
  863. package/dist/project/bootstrap-metadata.d.ts +42 -0
  864. package/dist/project/bootstrap-metadata.d.ts.map +1 -0
  865. package/dist/project/bootstrap-metadata.js +76 -0
  866. package/dist/project/bootstrap-metadata.js.map +1 -0
  867. package/dist/project/build-decision.d.ts +1 -1
  868. package/dist/project/build-decision.js +1 -1
  869. package/dist/project/config-resolver.js +4 -4
  870. package/dist/project/config-resolver.js.map +1 -1
  871. package/dist/project/configuration-catalog.d.ts +8 -0
  872. package/dist/project/configuration-catalog.d.ts.map +1 -0
  873. package/dist/project/configuration-catalog.js +29 -0
  874. package/dist/project/configuration-catalog.js.map +1 -0
  875. package/dist/project/declared-config.d.ts +4 -2
  876. package/dist/project/declared-config.d.ts.map +1 -1
  877. package/dist/project/declared-config.js +10 -7
  878. package/dist/project/declared-config.js.map +1 -1
  879. package/dist/project/dependency-topology.d.ts +10 -0
  880. package/dist/project/dependency-topology.d.ts.map +1 -0
  881. package/dist/project/dependency-topology.js +55 -0
  882. package/dist/project/dependency-topology.js.map +1 -0
  883. package/dist/project/deploy-phases.d.ts +1 -1
  884. package/dist/project/deploy-phases.js +1 -1
  885. package/dist/project/exec-in-group.d.ts +1 -1
  886. package/dist/project/exec-in-group.js +1 -1
  887. package/dist/project/infrastructure-ownership.d.ts +5 -0
  888. package/dist/project/infrastructure-ownership.d.ts.map +1 -0
  889. package/dist/project/infrastructure-ownership.js +26 -0
  890. package/dist/project/infrastructure-ownership.js.map +1 -0
  891. package/dist/project/installed-stack-resume.d.ts +62 -0
  892. package/dist/project/installed-stack-resume.d.ts.map +1 -0
  893. package/dist/project/installed-stack-resume.js +261 -0
  894. package/dist/project/installed-stack-resume.js.map +1 -0
  895. package/dist/project/launch-failure.d.ts +3 -0
  896. package/dist/project/launch-failure.d.ts.map +1 -0
  897. package/dist/project/launch-failure.js +32 -0
  898. package/dist/project/launch-failure.js.map +1 -0
  899. package/dist/project/local-release-selection.d.ts +18 -0
  900. package/dist/project/local-release-selection.d.ts.map +1 -0
  901. package/dist/project/local-release-selection.js +36 -0
  902. package/dist/project/local-release-selection.js.map +1 -0
  903. package/dist/project/node-app-config.d.ts +10 -3
  904. package/dist/project/node-app-config.d.ts.map +1 -1
  905. package/dist/project/node-app-config.js +22 -30
  906. package/dist/project/node-app-config.js.map +1 -1
  907. package/dist/project/node-app-health.d.ts +1 -1
  908. package/dist/project/node-app-health.js +1 -1
  909. package/dist/project/node-stack-stop.d.ts +83 -0
  910. package/dist/project/node-stack-stop.d.ts.map +1 -0
  911. package/dist/project/node-stack-stop.js +219 -0
  912. package/dist/project/node-stack-stop.js.map +1 -0
  913. package/dist/project/operator-account.d.ts +9 -3
  914. package/dist/project/operator-account.d.ts.map +1 -1
  915. package/dist/project/operator-account.js +9 -9
  916. package/dist/project/operator-account.js.map +1 -1
  917. package/dist/project/public-stack.d.ts +4 -0
  918. package/dist/project/public-stack.d.ts.map +1 -0
  919. package/dist/project/public-stack.js +29 -0
  920. package/dist/project/public-stack.js.map +1 -0
  921. package/dist/project/registry.d.ts +18 -27
  922. package/dist/project/registry.d.ts.map +1 -1
  923. package/dist/project/registry.js +248 -77
  924. package/dist/project/registry.js.map +1 -1
  925. package/dist/project/requirements-scanner.d.ts +4 -8
  926. package/dist/project/requirements-scanner.d.ts.map +1 -1
  927. package/dist/project/requirements-scanner.js +39 -146
  928. package/dist/project/requirements-scanner.js.map +1 -1
  929. package/dist/project/stack-diagnosis.d.ts +18 -0
  930. package/dist/project/stack-diagnosis.d.ts.map +1 -0
  931. package/dist/project/stack-diagnosis.js +94 -0
  932. package/dist/project/stack-diagnosis.js.map +1 -0
  933. package/dist/project/stack-env.d.ts +1 -1
  934. package/dist/project/stack-env.js +1 -1
  935. package/dist/project/stack-health.d.ts +12 -0
  936. package/dist/project/stack-health.d.ts.map +1 -0
  937. package/dist/project/stack-health.js +27 -0
  938. package/dist/project/stack-health.js.map +1 -0
  939. package/dist/project/stack-observation.d.ts +8 -0
  940. package/dist/project/stack-observation.d.ts.map +1 -0
  941. package/dist/project/stack-observation.js +126 -0
  942. package/dist/project/stack-observation.js.map +1 -0
  943. package/dist/project/stack-placement.d.ts +11 -0
  944. package/dist/project/stack-placement.d.ts.map +1 -0
  945. package/dist/project/stack-placement.js +57 -0
  946. package/dist/project/stack-placement.js.map +1 -0
  947. package/dist/project/stack-stop-review.d.ts +14 -0
  948. package/dist/project/stack-stop-review.d.ts.map +1 -0
  949. package/dist/project/stack-stop-review.js +22 -0
  950. package/dist/project/stack-stop-review.js.map +1 -0
  951. package/dist/project/stack-targets.d.ts +24 -0
  952. package/dist/project/stack-targets.d.ts.map +1 -0
  953. package/dist/project/stack-targets.js +67 -0
  954. package/dist/project/stack-targets.js.map +1 -0
  955. package/dist/project/stand-containers.d.ts +9 -2
  956. package/dist/project/stand-containers.d.ts.map +1 -1
  957. package/dist/project/stand-containers.js +17 -17
  958. package/dist/project/stand-containers.js.map +1 -1
  959. package/dist/project/topology-control.d.ts +41 -0
  960. package/dist/project/topology-control.d.ts.map +1 -0
  961. package/dist/project/topology-control.js +133 -0
  962. package/dist/project/topology-control.js.map +1 -0
  963. package/dist/project/topology-plan.d.ts +11 -0
  964. package/dist/project/topology-plan.d.ts.map +1 -0
  965. package/dist/project/topology-plan.js +154 -0
  966. package/dist/project/topology-plan.js.map +1 -0
  967. package/dist/project/topology-services.d.ts +7 -0
  968. package/dist/project/topology-services.d.ts.map +1 -0
  969. package/dist/project/topology-services.js +36 -0
  970. package/dist/project/topology-services.js.map +1 -0
  971. package/dist/project/topology-state.d.ts +27 -0
  972. package/dist/project/topology-state.d.ts.map +1 -0
  973. package/dist/project/topology-state.js +71 -0
  974. package/dist/project/topology-state.js.map +1 -0
  975. package/dist/project/workspace-kind.d.ts +3 -0
  976. package/dist/project/workspace-kind.d.ts.map +1 -0
  977. package/dist/project/workspace-kind.js +13 -0
  978. package/dist/project/workspace-kind.js.map +1 -0
  979. package/dist/readiness.d.ts +4 -0
  980. package/dist/readiness.d.ts.map +1 -0
  981. package/dist/readiness.js +3 -0
  982. package/dist/readiness.js.map +1 -0
  983. package/dist/release/application-closure.d.ts +4 -0
  984. package/dist/release/application-closure.d.ts.map +1 -0
  985. package/dist/release/application-closure.js +61 -0
  986. package/dist/release/application-closure.js.map +1 -0
  987. package/dist/release/archive.d.ts +3 -0
  988. package/dist/release/archive.d.ts.map +1 -0
  989. package/dist/release/archive.js +3 -0
  990. package/dist/release/archive.js.map +1 -0
  991. package/dist/release/artifact-inspection.d.ts +50 -0
  992. package/dist/release/artifact-inspection.d.ts.map +1 -0
  993. package/dist/release/artifact-inspection.js +169 -0
  994. package/dist/release/artifact-inspection.js.map +1 -0
  995. package/dist/release/artifact-store.d.ts +1 -1
  996. package/dist/release/artifact-store.d.ts.map +1 -1
  997. package/dist/release/artifact-store.js +1 -1
  998. package/dist/release/artifact-store.js.map +1 -1
  999. package/dist/release/artifact-volumes.d.ts +10 -0
  1000. package/dist/release/artifact-volumes.d.ts.map +1 -0
  1001. package/dist/release/artifact-volumes.js +112 -0
  1002. package/dist/release/artifact-volumes.js.map +1 -0
  1003. package/dist/release/attest-on-node.d.ts +3 -2
  1004. package/dist/release/attest-on-node.d.ts.map +1 -1
  1005. package/dist/release/attest-on-node.js +6 -6
  1006. package/dist/release/attest-on-node.js.map +1 -1
  1007. package/dist/release/attest.d.ts +3 -3
  1008. package/dist/release/attest.js +1 -1
  1009. package/dist/release/build-run.d.ts +14 -17
  1010. package/dist/release/build-run.d.ts.map +1 -1
  1011. package/dist/release/build-run.js +264 -77
  1012. package/dist/release/build-run.js.map +1 -1
  1013. package/dist/release/builder.d.ts +9 -3
  1014. package/dist/release/builder.d.ts.map +1 -1
  1015. package/dist/release/builder.js +19 -5
  1016. package/dist/release/builder.js.map +1 -1
  1017. package/dist/release/closure-library-path.d.ts +26 -0
  1018. package/dist/release/closure-library-path.d.ts.map +1 -0
  1019. package/dist/release/closure-library-path.js +160 -0
  1020. package/dist/release/closure-library-path.js.map +1 -0
  1021. package/dist/release/definition-inputs.d.ts +7 -4
  1022. package/dist/release/definition-inputs.d.ts.map +1 -1
  1023. package/dist/release/definition-inputs.js +146 -15
  1024. package/dist/release/definition-inputs.js.map +1 -1
  1025. package/dist/release/framework-source.d.ts +22 -0
  1026. package/dist/release/framework-source.d.ts.map +1 -0
  1027. package/dist/release/framework-source.js +54 -0
  1028. package/dist/release/framework-source.js.map +1 -0
  1029. package/dist/release/frozen-installation.d.ts +23 -0
  1030. package/dist/release/frozen-installation.d.ts.map +1 -0
  1031. package/dist/release/frozen-installation.js +159 -0
  1032. package/dist/release/frozen-installation.js.map +1 -0
  1033. package/dist/release/import-artifacts.d.ts +9 -0
  1034. package/dist/release/import-artifacts.d.ts.map +1 -0
  1035. package/dist/release/import-artifacts.js +60 -0
  1036. package/dist/release/import-artifacts.js.map +1 -0
  1037. package/dist/release/infrastructure.d.ts +6 -0
  1038. package/dist/release/infrastructure.d.ts.map +1 -0
  1039. package/dist/release/infrastructure.js +74 -0
  1040. package/dist/release/infrastructure.js.map +1 -0
  1041. package/dist/release/installed-artifacts.d.ts +12 -0
  1042. package/dist/release/installed-artifacts.d.ts.map +1 -0
  1043. package/dist/release/installed-artifacts.js +199 -0
  1044. package/dist/release/installed-artifacts.js.map +1 -0
  1045. package/dist/release/installed-graph.d.ts +28 -0
  1046. package/dist/release/installed-graph.d.ts.map +1 -0
  1047. package/dist/release/installed-graph.js +138 -0
  1048. package/dist/release/installed-graph.js.map +1 -0
  1049. package/dist/release/installed-origin.d.ts +42 -0
  1050. package/dist/release/installed-origin.d.ts.map +1 -0
  1051. package/dist/release/installed-origin.js +130 -0
  1052. package/dist/release/installed-origin.js.map +1 -0
  1053. package/dist/release/installed-release.d.ts +23 -0
  1054. package/dist/release/installed-release.d.ts.map +1 -0
  1055. package/dist/release/installed-release.js +141 -0
  1056. package/dist/release/installed-release.js.map +1 -0
  1057. package/dist/release/layout.d.ts +29 -34
  1058. package/dist/release/layout.d.ts.map +1 -1
  1059. package/dist/release/layout.js +164 -53
  1060. package/dist/release/layout.js.map +1 -1
  1061. package/dist/release/load.d.ts +3 -0
  1062. package/dist/release/load.d.ts.map +1 -1
  1063. package/dist/release/load.js +50 -8
  1064. package/dist/release/load.js.map +1 -1
  1065. package/dist/release/local-installation.d.ts +20 -0
  1066. package/dist/release/local-installation.d.ts.map +1 -0
  1067. package/dist/release/local-installation.js +298 -0
  1068. package/dist/release/local-installation.js.map +1 -0
  1069. package/dist/release/manifest.d.ts +87 -12
  1070. package/dist/release/manifest.d.ts.map +1 -1
  1071. package/dist/release/manifest.js +31 -7
  1072. package/dist/release/manifest.js.map +1 -1
  1073. package/dist/release/migration-programs.d.ts +12 -0
  1074. package/dist/release/migration-programs.d.ts.map +1 -0
  1075. package/dist/release/migration-programs.js +45 -0
  1076. package/dist/release/migration-programs.js.map +1 -0
  1077. package/dist/release/migrations.d.ts +12 -1
  1078. package/dist/release/migrations.d.ts.map +1 -1
  1079. package/dist/release/migrations.js +124 -9
  1080. package/dist/release/migrations.js.map +1 -1
  1081. package/dist/release/origin.d.ts +33 -0
  1082. package/dist/release/origin.d.ts.map +1 -0
  1083. package/dist/release/origin.js +253 -0
  1084. package/dist/release/origin.js.map +1 -0
  1085. package/dist/release/owner-admission.d.ts +15 -0
  1086. package/dist/release/owner-admission.d.ts.map +1 -0
  1087. package/dist/release/owner-admission.js +37 -0
  1088. package/dist/release/owner-admission.js.map +1 -0
  1089. package/dist/release/owner-executable.d.ts +3 -0
  1090. package/dist/release/owner-executable.d.ts.map +1 -0
  1091. package/dist/release/owner-executable.js +40 -0
  1092. package/dist/release/owner-executable.js.map +1 -0
  1093. package/dist/release/package-gates.d.ts +9 -0
  1094. package/dist/release/package-gates.d.ts.map +1 -0
  1095. package/dist/release/package-gates.js +42 -0
  1096. package/dist/release/package-gates.js.map +1 -0
  1097. package/dist/release/package-resolution.d.ts +4 -0
  1098. package/dist/release/package-resolution.d.ts.map +1 -0
  1099. package/dist/release/package-resolution.js +28 -0
  1100. package/dist/release/package-resolution.js.map +1 -0
  1101. package/dist/release/portable-archive.d.ts +12 -0
  1102. package/dist/release/portable-archive.d.ts.map +1 -0
  1103. package/dist/release/portable-archive.js +96 -0
  1104. package/dist/release/portable-archive.js.map +1 -0
  1105. package/dist/release/publish.d.ts +1 -1
  1106. package/dist/release/publish.js +1 -1
  1107. package/dist/release/registry-download.d.ts +2 -0
  1108. package/dist/release/registry-download.d.ts.map +1 -0
  1109. package/dist/release/registry-download.js +157 -0
  1110. package/dist/release/registry-download.js.map +1 -0
  1111. package/dist/release/registry-framework.d.ts +39 -0
  1112. package/dist/release/registry-framework.d.ts.map +1 -0
  1113. package/dist/release/registry-framework.js +279 -0
  1114. package/dist/release/registry-framework.js.map +1 -0
  1115. package/dist/release/registry-transport.d.ts +27 -0
  1116. package/dist/release/registry-transport.d.ts.map +1 -0
  1117. package/dist/release/registry-transport.js +96 -0
  1118. package/dist/release/registry-transport.js.map +1 -0
  1119. package/dist/release/repository-identity.d.ts +12 -0
  1120. package/dist/release/repository-identity.d.ts.map +1 -0
  1121. package/dist/release/repository-identity.js +62 -0
  1122. package/dist/release/repository-identity.js.map +1 -0
  1123. package/dist/release/runtime-extractor.d.ts +4 -0
  1124. package/dist/release/runtime-extractor.d.ts.map +1 -0
  1125. package/dist/release/runtime-extractor.js +15 -0
  1126. package/dist/release/runtime-extractor.js.map +1 -0
  1127. package/dist/release/runtime-provenance.d.ts +40 -0
  1128. package/dist/release/runtime-provenance.d.ts.map +1 -0
  1129. package/dist/release/runtime-provenance.js +229 -0
  1130. package/dist/release/runtime-provenance.js.map +1 -0
  1131. package/dist/release/source.d.ts +12 -0
  1132. package/dist/release/source.d.ts.map +1 -0
  1133. package/dist/release/source.js +168 -0
  1134. package/dist/release/source.js.map +1 -0
  1135. package/dist/release/store.d.ts +14 -5
  1136. package/dist/release/store.d.ts.map +1 -1
  1137. package/dist/release/store.js +73 -17
  1138. package/dist/release/store.js.map +1 -1
  1139. package/dist/release/target-runtime.d.ts +19 -0
  1140. package/dist/release/target-runtime.d.ts.map +1 -0
  1141. package/dist/release/target-runtime.js +41 -0
  1142. package/dist/release/target-runtime.js.map +1 -0
  1143. package/dist/release/vendored-framework.d.ts +28 -0
  1144. package/dist/release/vendored-framework.d.ts.map +1 -0
  1145. package/dist/release/vendored-framework.js +98 -0
  1146. package/dist/release/vendored-framework.js.map +1 -0
  1147. package/dist/release/workspace-source.d.ts +3 -0
  1148. package/dist/release/workspace-source.d.ts.map +1 -0
  1149. package/dist/release/workspace-source.js +33 -0
  1150. package/dist/release/workspace-source.js.map +1 -0
  1151. package/dist/runtime/context.d.ts +29 -0
  1152. package/dist/runtime/context.d.ts.map +1 -0
  1153. package/dist/runtime/context.js +111 -0
  1154. package/dist/runtime/context.js.map +1 -0
  1155. package/dist/runtime/identity.d.ts +15 -0
  1156. package/dist/runtime/identity.d.ts.map +1 -0
  1157. package/dist/runtime/identity.js +33 -0
  1158. package/dist/runtime/identity.js.map +1 -0
  1159. package/dist/runtime/index.d.ts +3 -0
  1160. package/dist/runtime/index.d.ts.map +1 -0
  1161. package/dist/runtime/index.js +3 -0
  1162. package/dist/runtime/index.js.map +1 -0
  1163. package/dist/services/access.rpc-service.d.ts +41 -0
  1164. package/dist/services/access.rpc-service.d.ts.map +1 -0
  1165. package/dist/services/access.rpc-service.js +248 -0
  1166. package/dist/services/access.rpc-service.js.map +1 -0
  1167. package/dist/services/alert.service.d.ts +3 -3
  1168. package/dist/services/alert.service.d.ts.map +1 -1
  1169. package/dist/services/alert.service.js +3 -3
  1170. package/dist/services/anonymous-input.d.ts +0 -21
  1171. package/dist/services/anonymous-input.d.ts.map +1 -1
  1172. package/dist/services/anonymous-input.js +1 -27
  1173. package/dist/services/anonymous-input.js.map +1 -1
  1174. package/dist/services/audit.service.d.ts +10 -30
  1175. package/dist/services/audit.service.d.ts.map +1 -1
  1176. package/dist/services/audit.service.js +72 -18
  1177. package/dist/services/audit.service.js.map +1 -1
  1178. package/dist/services/auth-context.d.ts +2 -0
  1179. package/dist/services/auth-context.d.ts.map +1 -1
  1180. package/dist/services/auth-context.js +4 -1
  1181. package/dist/services/auth-context.js.map +1 -1
  1182. package/dist/services/auth.rpc-service.d.ts +3 -1
  1183. package/dist/services/auth.rpc-service.d.ts.map +1 -1
  1184. package/dist/services/auth.rpc-service.js +13 -3
  1185. package/dist/services/auth.rpc-service.js.map +1 -1
  1186. package/dist/services/auth.service.d.ts +11 -21
  1187. package/dist/services/auth.service.d.ts.map +1 -1
  1188. package/dist/services/auth.service.js +125 -139
  1189. package/dist/services/auth.service.js.map +1 -1
  1190. package/dist/services/backup-pipeline.d.ts +1 -1
  1191. package/dist/services/backup-pipeline.js +1 -1
  1192. package/dist/services/backup-storage.d.ts +14 -0
  1193. package/dist/services/backup-storage.d.ts.map +1 -0
  1194. package/dist/services/backup-storage.js +195 -0
  1195. package/dist/services/backup-storage.js.map +1 -0
  1196. package/dist/services/backup.rpc-service.d.ts +2 -0
  1197. package/dist/services/backup.rpc-service.d.ts.map +1 -1
  1198. package/dist/services/backup.rpc-service.js +9 -0
  1199. package/dist/services/backup.rpc-service.js.map +1 -1
  1200. package/dist/services/backup.service.d.ts +36 -129
  1201. package/dist/services/backup.service.d.ts.map +1 -1
  1202. package/dist/services/backup.service.js +177 -156
  1203. package/dist/services/backup.service.js.map +1 -1
  1204. package/dist/services/bundle-builder.d.ts +27 -12
  1205. package/dist/services/bundle-builder.d.ts.map +1 -1
  1206. package/dist/services/bundle-builder.js +192 -101
  1207. package/dist/services/bundle-builder.js.map +1 -1
  1208. package/dist/services/bundle-overrides.d.ts +25 -0
  1209. package/dist/services/bundle-overrides.d.ts.map +1 -0
  1210. package/dist/services/bundle-overrides.js +96 -0
  1211. package/dist/services/bundle-overrides.js.map +1 -0
  1212. package/dist/services/daemon-authority.d.ts +16 -0
  1213. package/dist/services/daemon-authority.d.ts.map +1 -0
  1214. package/dist/services/daemon-authority.js +54 -0
  1215. package/dist/services/daemon-authority.js.map +1 -0
  1216. package/dist/services/daemon-principal.d.ts +31 -0
  1217. package/dist/services/daemon-principal.d.ts.map +1 -0
  1218. package/dist/services/daemon-principal.js +37 -0
  1219. package/dist/services/daemon-principal.js.map +1 -0
  1220. package/dist/services/deploy.service.d.ts +13 -57
  1221. package/dist/services/deploy.service.d.ts.map +1 -1
  1222. package/dist/services/deploy.service.js +15 -263
  1223. package/dist/services/deploy.service.js.map +1 -1
  1224. package/dist/services/discovery.service.d.ts +1 -1
  1225. package/dist/services/discovery.service.js +1 -1
  1226. package/dist/services/event-broadcaster.rpc-service.d.ts +7 -1
  1227. package/dist/services/event-broadcaster.rpc-service.d.ts.map +1 -1
  1228. package/dist/services/event-broadcaster.rpc-service.js +89 -11
  1229. package/dist/services/event-broadcaster.rpc-service.js.map +1 -1
  1230. package/dist/services/fleet.rpc-service.d.ts +0 -6
  1231. package/dist/services/fleet.rpc-service.d.ts.map +1 -1
  1232. package/dist/services/fleet.rpc-service.js +0 -13
  1233. package/dist/services/fleet.rpc-service.js.map +1 -1
  1234. package/dist/services/health-check.service.d.ts +1 -1
  1235. package/dist/services/health-check.service.d.ts.map +1 -1
  1236. package/dist/services/health-check.service.js +30 -5
  1237. package/dist/services/health-check.service.js.map +1 -1
  1238. package/dist/services/host-operation-barrier.d.ts +8 -0
  1239. package/dist/services/host-operation-barrier.d.ts.map +1 -0
  1240. package/dist/services/host-operation-barrier.js +44 -0
  1241. package/dist/services/host-operation-barrier.js.map +1 -0
  1242. package/dist/services/host-upgrade.d.ts +181 -0
  1243. package/dist/services/host-upgrade.d.ts.map +1 -0
  1244. package/dist/services/host-upgrade.js +503 -0
  1245. package/dist/services/host-upgrade.js.map +1 -0
  1246. package/dist/services/infrastructure.rpc-service.d.ts +24 -2
  1247. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  1248. package/dist/services/infrastructure.rpc-service.js +178 -36
  1249. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  1250. package/dist/services/kernel-catalog.d.ts +14 -0
  1251. package/dist/services/kernel-catalog.d.ts.map +1 -0
  1252. package/dist/services/kernel-catalog.js +172 -0
  1253. package/dist/services/kernel-catalog.js.map +1 -0
  1254. package/dist/services/kernel-distribution.d.ts +5 -0
  1255. package/dist/services/kernel-distribution.d.ts.map +1 -0
  1256. package/dist/services/kernel-distribution.js +49 -0
  1257. package/dist/services/kernel-distribution.js.map +1 -0
  1258. package/dist/services/kernel-rollout.service.d.ts +55 -0
  1259. package/dist/services/kernel-rollout.service.d.ts.map +1 -0
  1260. package/dist/services/kernel-rollout.service.js +394 -0
  1261. package/dist/services/kernel-rollout.service.js.map +1 -0
  1262. package/dist/services/local-bundle.d.ts +9 -0
  1263. package/dist/services/local-bundle.d.ts.map +1 -1
  1264. package/dist/services/local-bundle.js +14 -3
  1265. package/dist/services/local-bundle.js.map +1 -1
  1266. package/dist/services/log-collector.rpc-service.d.ts +5 -11
  1267. package/dist/services/log-collector.rpc-service.d.ts.map +1 -1
  1268. package/dist/services/log-collector.rpc-service.js +6 -6
  1269. package/dist/services/log-collector.rpc-service.js.map +1 -1
  1270. package/dist/services/log-collector.service.d.ts +39 -109
  1271. package/dist/services/log-collector.service.d.ts.map +1 -1
  1272. package/dist/services/log-collector.service.js +286 -261
  1273. package/dist/services/log-collector.service.js.map +1 -1
  1274. package/dist/services/log-query.d.ts +6 -0
  1275. package/dist/services/log-query.d.ts.map +1 -0
  1276. package/dist/services/log-query.js +46 -0
  1277. package/dist/services/log-query.js.map +1 -0
  1278. package/dist/services/maintenance-lock.d.ts +2 -2
  1279. package/dist/services/maintenance-lock.d.ts.map +1 -1
  1280. package/dist/services/maintenance-lock.js +1 -1
  1281. package/dist/services/managed-rollout.d.ts +54 -0
  1282. package/dist/services/managed-rollout.d.ts.map +1 -0
  1283. package/dist/services/managed-rollout.js +124 -0
  1284. package/dist/services/managed-rollout.js.map +1 -0
  1285. package/dist/services/metrics.rpc-service.d.ts +23 -0
  1286. package/dist/services/metrics.rpc-service.d.ts.map +1 -0
  1287. package/dist/services/metrics.rpc-service.js +73 -0
  1288. package/dist/services/metrics.rpc-service.js.map +1 -0
  1289. package/dist/services/migration-output.d.ts +2 -2
  1290. package/dist/services/migration-output.js +2 -2
  1291. package/dist/services/migration-process.d.ts +32 -0
  1292. package/dist/services/migration-process.d.ts.map +1 -0
  1293. package/dist/services/migration-process.js +71 -0
  1294. package/dist/services/migration-process.js.map +1 -0
  1295. package/dist/services/migration-target.d.ts +57 -0
  1296. package/dist/services/migration-target.d.ts.map +1 -0
  1297. package/dist/services/migration-target.js +221 -0
  1298. package/dist/services/migration-target.js.map +1 -0
  1299. package/dist/services/node-deploy-lease.d.ts +19 -2
  1300. package/dist/services/node-deploy-lease.d.ts.map +1 -1
  1301. package/dist/services/node-deploy-lease.js +84 -10
  1302. package/dist/services/node-deploy-lease.js.map +1 -1
  1303. package/dist/services/node-health.repository.d.ts +2 -59
  1304. package/dist/services/node-health.repository.d.ts.map +1 -1
  1305. package/dist/services/node-health.repository.js.map +1 -1
  1306. package/dist/services/node-host-key.d.ts +9 -0
  1307. package/dist/services/node-host-key.d.ts.map +1 -0
  1308. package/dist/services/node-host-key.js +17 -0
  1309. package/dist/services/node-host-key.js.map +1 -0
  1310. package/dist/services/node-manager.rpc-service.d.ts +50 -38
  1311. package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
  1312. package/dist/services/node-manager.rpc-service.js +233 -38
  1313. package/dist/services/node-manager.rpc-service.js.map +1 -1
  1314. package/dist/services/node-manager.service.d.ts +4 -1
  1315. package/dist/services/node-manager.service.d.ts.map +1 -1
  1316. package/dist/services/node-manager.service.js +79 -28
  1317. package/dist/services/node-manager.service.js.map +1 -1
  1318. package/dist/services/node-registration.d.ts +17 -0
  1319. package/dist/services/node-registration.d.ts.map +1 -0
  1320. package/dist/services/node-registration.js +73 -0
  1321. package/dist/services/node-registration.js.map +1 -0
  1322. package/dist/services/node-upgrade.d.ts +1 -1
  1323. package/dist/services/node-upgrade.service.d.ts +2 -28
  1324. package/dist/services/node-upgrade.service.d.ts.map +1 -1
  1325. package/dist/services/node-upgrade.service.js +2 -3
  1326. package/dist/services/node-upgrade.service.js.map +1 -1
  1327. package/dist/services/pipeline-definition.d.ts +14 -0
  1328. package/dist/services/pipeline-definition.d.ts.map +1 -0
  1329. package/dist/services/pipeline-definition.js +77 -0
  1330. package/dist/services/pipeline-definition.js.map +1 -0
  1331. package/dist/services/pipeline.rpc-service.d.ts +14 -3
  1332. package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
  1333. package/dist/services/pipeline.rpc-service.js +45 -12
  1334. package/dist/services/pipeline.rpc-service.js.map +1 -1
  1335. package/dist/services/pipeline.service.d.ts +30 -44
  1336. package/dist/services/pipeline.service.d.ts.map +1 -1
  1337. package/dist/services/pipeline.service.js +402 -333
  1338. package/dist/services/pipeline.service.js.map +1 -1
  1339. package/dist/services/project.rpc-service.d.ts +219 -14
  1340. package/dist/services/project.rpc-service.d.ts.map +1 -1
  1341. package/dist/services/project.rpc-service.js +314 -31
  1342. package/dist/services/project.rpc-service.js.map +1 -1
  1343. package/dist/services/project.service.d.ts +195 -67
  1344. package/dist/services/project.service.d.ts.map +1 -1
  1345. package/dist/services/project.service.js +2029 -705
  1346. package/dist/services/project.service.js.map +1 -1
  1347. package/dist/services/redeploy-decision.d.ts +2 -2
  1348. package/dist/services/redeploy-decision.js +1 -1
  1349. package/dist/services/release.rpc-service.d.ts +6 -19
  1350. package/dist/services/release.rpc-service.d.ts.map +1 -1
  1351. package/dist/services/release.rpc-service.js +35 -12
  1352. package/dist/services/release.rpc-service.js.map +1 -1
  1353. package/dist/services/release.service.d.ts +2 -47
  1354. package/dist/services/release.service.d.ts.map +1 -1
  1355. package/dist/services/release.service.js +26 -2
  1356. package/dist/services/release.service.js.map +1 -1
  1357. package/dist/services/remote-deployer.service.d.ts +65 -126
  1358. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  1359. package/dist/services/remote-deployer.service.js +671 -466
  1360. package/dist/services/remote-deployer.service.js.map +1 -1
  1361. package/dist/services/remote-provisioner.d.ts +3 -1
  1362. package/dist/services/remote-provisioner.d.ts.map +1 -1
  1363. package/dist/services/remote-provisioner.js +2 -2
  1364. package/dist/services/remote-provisioner.js.map +1 -1
  1365. package/dist/services/replication-evidence.d.ts +24 -0
  1366. package/dist/services/replication-evidence.d.ts.map +1 -0
  1367. package/dist/services/replication-evidence.js +61 -0
  1368. package/dist/services/replication-evidence.js.map +1 -0
  1369. package/dist/services/replication-history.d.ts +80 -0
  1370. package/dist/services/replication-history.d.ts.map +1 -0
  1371. package/dist/services/replication-history.js +279 -0
  1372. package/dist/services/replication-history.js.map +1 -0
  1373. package/dist/services/replication-reconciliation.d.ts +74 -0
  1374. package/dist/services/replication-reconciliation.d.ts.map +1 -0
  1375. package/dist/services/replication-reconciliation.js +351 -0
  1376. package/dist/services/replication-reconciliation.js.map +1 -0
  1377. package/dist/services/slave-storage.service.d.ts +2 -19
  1378. package/dist/services/slave-storage.service.d.ts.map +1 -1
  1379. package/dist/services/slave-storage.service.js +19 -6
  1380. package/dist/services/slave-storage.service.js.map +1 -1
  1381. package/dist/services/static-carry-forward.d.ts +28 -3
  1382. package/dist/services/static-carry-forward.d.ts.map +1 -1
  1383. package/dist/services/static-carry-forward.js +285 -4
  1384. package/dist/services/static-carry-forward.js.map +1 -1
  1385. package/dist/services/sync-summary.d.ts.map +1 -1
  1386. package/dist/services/sync-summary.js +1 -18
  1387. package/dist/services/sync-summary.js.map +1 -1
  1388. package/dist/services/sync.rpc-service.d.ts +17 -20
  1389. package/dist/services/sync.rpc-service.d.ts.map +1 -1
  1390. package/dist/services/sync.rpc-service.js +23 -37
  1391. package/dist/services/sync.rpc-service.js.map +1 -1
  1392. package/dist/services/sync.service.d.ts +53 -157
  1393. package/dist/services/sync.service.d.ts.map +1 -1
  1394. package/dist/services/sync.service.js +239 -337
  1395. package/dist/services/sync.service.js.map +1 -1
  1396. package/dist/services/system-info.rpc-service.d.ts +3 -1
  1397. package/dist/services/system-info.rpc-service.d.ts.map +1 -1
  1398. package/dist/services/system-info.rpc-service.js +5 -5
  1399. package/dist/services/system-info.rpc-service.js.map +1 -1
  1400. package/dist/services/system-info.service.d.ts +3 -1
  1401. package/dist/services/system-info.service.d.ts.map +1 -1
  1402. package/dist/services/system-info.service.js +17 -9
  1403. package/dist/services/system-info.service.js.map +1 -1
  1404. package/dist/services/telemetry.rpc-service.d.ts +4 -23
  1405. package/dist/services/telemetry.rpc-service.d.ts.map +1 -1
  1406. package/dist/services/telemetry.rpc-service.js +4 -32
  1407. package/dist/services/telemetry.rpc-service.js.map +1 -1
  1408. package/dist/services/telemetry.service.d.ts +2 -30
  1409. package/dist/services/telemetry.service.d.ts.map +1 -1
  1410. package/dist/services/telemetry.service.js +25 -131
  1411. package/dist/services/telemetry.service.js.map +1 -1
  1412. package/dist/services/terminal-ssh.d.ts +16 -0
  1413. package/dist/services/terminal-ssh.d.ts.map +1 -0
  1414. package/dist/services/terminal-ssh.js +101 -0
  1415. package/dist/services/terminal-ssh.js.map +1 -0
  1416. package/dist/services/terminal.rpc-service.d.ts +84 -0
  1417. package/dist/services/terminal.rpc-service.d.ts.map +1 -0
  1418. package/dist/services/terminal.rpc-service.js +508 -0
  1419. package/dist/services/terminal.rpc-service.js.map +1 -0
  1420. package/dist/services/trace-collector.rpc-service.js +3 -3
  1421. package/dist/services/trace-collector.rpc-service.js.map +1 -1
  1422. package/dist/services/wait-for-postgres.d.ts +1 -1
  1423. package/dist/services/wait-for-postgres.d.ts.map +1 -1
  1424. package/dist/services/wait-for-postgres.js +13 -28
  1425. package/dist/services/wait-for-postgres.js.map +1 -1
  1426. package/dist/shared/build-stamp.d.ts +4 -1
  1427. package/dist/shared/build-stamp.d.ts.map +1 -1
  1428. package/dist/shared/build-stamp.js +14 -6
  1429. package/dist/shared/build-stamp.js.map +1 -1
  1430. package/dist/shared/describe-error.d.ts +1 -21
  1431. package/dist/shared/describe-error.d.ts.map +1 -1
  1432. package/dist/shared/describe-error.js +1 -38
  1433. package/dist/shared/describe-error.js.map +1 -1
  1434. package/dist/shared/dto/access.d.ts +55 -0
  1435. package/dist/shared/dto/access.d.ts.map +1 -0
  1436. package/dist/shared/dto/access.js +2 -0
  1437. package/dist/shared/dto/access.js.map +1 -0
  1438. package/dist/shared/dto/audit.d.ts +32 -0
  1439. package/dist/shared/dto/audit.d.ts.map +1 -0
  1440. package/dist/shared/dto/audit.js +3 -0
  1441. package/dist/shared/dto/audit.js.map +1 -0
  1442. package/dist/shared/dto/auth.d.ts +2 -0
  1443. package/dist/shared/dto/auth.d.ts.map +1 -1
  1444. package/dist/shared/dto/auth.js +5 -1
  1445. package/dist/shared/dto/auth.js.map +1 -1
  1446. package/dist/shared/dto/backend.d.ts +50 -0
  1447. package/dist/shared/dto/backend.d.ts.map +1 -0
  1448. package/dist/shared/dto/backend.js +3 -0
  1449. package/dist/shared/dto/backend.js.map +1 -0
  1450. package/dist/shared/dto/backups.d.ts +99 -0
  1451. package/dist/shared/dto/backups.d.ts.map +1 -1
  1452. package/dist/shared/dto/cluster.d.ts +44 -0
  1453. package/dist/shared/dto/cluster.d.ts.map +1 -0
  1454. package/dist/shared/dto/cluster.js +3 -0
  1455. package/dist/shared/dto/cluster.js.map +1 -0
  1456. package/dist/shared/dto/files.d.ts +328 -0
  1457. package/dist/shared/dto/files.d.ts.map +1 -0
  1458. package/dist/shared/dto/files.js +2 -0
  1459. package/dist/shared/dto/files.js.map +1 -0
  1460. package/dist/shared/dto/health.d.ts +59 -0
  1461. package/dist/shared/dto/health.d.ts.map +1 -1
  1462. package/dist/shared/dto/installed-release.d.ts +40 -0
  1463. package/dist/shared/dto/installed-release.d.ts.map +1 -0
  1464. package/dist/shared/dto/installed-release.js +2 -0
  1465. package/dist/shared/dto/installed-release.js.map +1 -0
  1466. package/dist/shared/dto/kernel-catalog.d.ts +11 -0
  1467. package/dist/shared/dto/kernel-catalog.d.ts.map +1 -0
  1468. package/dist/shared/dto/kernel-catalog.js +2 -0
  1469. package/dist/shared/dto/kernel-catalog.js.map +1 -0
  1470. package/dist/shared/dto/logs.d.ts +21 -0
  1471. package/dist/shared/dto/logs.d.ts.map +1 -1
  1472. package/dist/shared/dto/metrics.d.ts +4 -64
  1473. package/dist/shared/dto/metrics.d.ts.map +1 -1
  1474. package/dist/shared/dto/metrics.js +0 -15
  1475. package/dist/shared/dto/metrics.js.map +1 -1
  1476. package/dist/shared/dto/nodes.d.ts +98 -24
  1477. package/dist/shared/dto/nodes.d.ts.map +1 -1
  1478. package/dist/shared/dto/pipelines.d.ts +22 -1
  1479. package/dist/shared/dto/pipelines.d.ts.map +1 -1
  1480. package/dist/shared/dto/project.d.ts +289 -30
  1481. package/dist/shared/dto/project.d.ts.map +1 -1
  1482. package/dist/shared/dto/releases.d.ts +59 -0
  1483. package/dist/shared/dto/releases.d.ts.map +1 -0
  1484. package/dist/shared/dto/releases.js +2 -0
  1485. package/dist/shared/dto/releases.js.map +1 -0
  1486. package/dist/shared/dto/services.d.ts +201 -37
  1487. package/dist/shared/dto/services.d.ts.map +1 -1
  1488. package/dist/shared/dto/services.js +15 -6
  1489. package/dist/shared/dto/services.js.map +1 -1
  1490. package/dist/shared/dto/stack-diagnosis.d.ts +20 -0
  1491. package/dist/shared/dto/stack-diagnosis.d.ts.map +1 -0
  1492. package/dist/shared/dto/stack-diagnosis.js +8 -0
  1493. package/dist/shared/dto/stack-diagnosis.js.map +1 -0
  1494. package/dist/shared/dto/stack-execution.d.ts +65 -0
  1495. package/dist/shared/dto/stack-execution.d.ts.map +1 -0
  1496. package/dist/shared/dto/stack-execution.js +33 -0
  1497. package/dist/shared/dto/stack-execution.js.map +1 -0
  1498. package/dist/shared/dto/system-info.d.ts +11 -0
  1499. package/dist/shared/dto/system-info.d.ts.map +1 -1
  1500. package/dist/shared/dto/system-info.js +7 -1
  1501. package/dist/shared/dto/system-info.js.map +1 -1
  1502. package/dist/shared/dto/terminal.d.ts +40 -0
  1503. package/dist/shared/dto/terminal.d.ts.map +1 -0
  1504. package/dist/shared/dto/terminal.js +2 -0
  1505. package/dist/shared/dto/terminal.js.map +1 -0
  1506. package/dist/shared/dto/topology.d.ts +96 -0
  1507. package/dist/shared/dto/topology.d.ts.map +1 -0
  1508. package/dist/shared/dto/topology.js +2 -0
  1509. package/dist/shared/dto/topology.js.map +1 -0
  1510. package/dist/shared/emergency-output.d.ts +3 -0
  1511. package/dist/shared/emergency-output.d.ts.map +1 -0
  1512. package/dist/shared/emergency-output.js +22 -0
  1513. package/dist/shared/emergency-output.js.map +1 -0
  1514. package/dist/shared/env-config.d.ts +2 -0
  1515. package/dist/shared/env-config.d.ts.map +1 -1
  1516. package/dist/shared/env-config.js +1 -0
  1517. package/dist/shared/env-config.js.map +1 -1
  1518. package/dist/shared/events.d.ts +2 -0
  1519. package/dist/shared/events.d.ts.map +1 -1
  1520. package/dist/shared/events.js.map +1 -1
  1521. package/dist/shared/execution-identity.d.ts +39 -0
  1522. package/dist/shared/execution-identity.d.ts.map +1 -0
  1523. package/dist/shared/execution-identity.js +160 -0
  1524. package/dist/shared/execution-identity.js.map +1 -0
  1525. package/dist/shared/file-policy.d.ts +5 -0
  1526. package/dist/shared/file-policy.d.ts.map +1 -0
  1527. package/dist/shared/file-policy.js +18 -0
  1528. package/dist/shared/file-policy.js.map +1 -0
  1529. package/dist/shared/framework-source.d.ts +11 -0
  1530. package/dist/shared/framework-source.d.ts.map +1 -0
  1531. package/dist/shared/framework-source.js +31 -0
  1532. package/dist/shared/framework-source.js.map +1 -0
  1533. package/dist/shared/fresh-module-reader.d.ts +40 -0
  1534. package/dist/shared/fresh-module-reader.d.ts.map +1 -0
  1535. package/dist/shared/fresh-module-reader.js +257 -0
  1536. package/dist/shared/fresh-module-reader.js.map +1 -0
  1537. package/dist/shared/host-boot-identity.d.ts +12 -0
  1538. package/dist/shared/host-boot-identity.d.ts.map +1 -0
  1539. package/dist/shared/host-boot-identity.js +89 -0
  1540. package/dist/shared/host-boot-identity.js.map +1 -0
  1541. package/dist/shared/kernel-file-lock.d.ts +3 -0
  1542. package/dist/shared/kernel-file-lock.d.ts.map +1 -0
  1543. package/dist/shared/kernel-file-lock.js +53 -0
  1544. package/dist/shared/kernel-file-lock.js.map +1 -0
  1545. package/dist/shared/linux-file-lock.d.ts +4 -0
  1546. package/dist/shared/linux-file-lock.d.ts.map +1 -0
  1547. package/dist/shared/linux-file-lock.js +36 -0
  1548. package/dist/shared/linux-file-lock.js.map +1 -0
  1549. package/dist/shared/local-infra-host.d.ts +2 -2
  1550. package/dist/shared/local-infra-host.js +2 -2
  1551. package/dist/shared/log-ingestion-reading.d.ts +9 -0
  1552. package/dist/shared/log-ingestion-reading.d.ts.map +1 -0
  1553. package/dist/shared/log-ingestion-reading.js +32 -0
  1554. package/dist/shared/log-ingestion-reading.js.map +1 -0
  1555. package/dist/shared/log-levels.d.ts +19 -0
  1556. package/dist/shared/log-levels.d.ts.map +1 -0
  1557. package/dist/shared/log-levels.js +23 -0
  1558. package/dist/shared/log-levels.js.map +1 -0
  1559. package/dist/shared/metrics-storage-reading.d.ts +8 -0
  1560. package/dist/shared/metrics-storage-reading.d.ts.map +1 -0
  1561. package/dist/shared/metrics-storage-reading.js +27 -0
  1562. package/dist/shared/metrics-storage-reading.js.map +1 -0
  1563. package/dist/shared/pnpm.d.ts.map +1 -1
  1564. package/dist/shared/pnpm.js +7 -0
  1565. package/dist/shared/pnpm.js.map +1 -1
  1566. package/dist/shared/pool-scale.d.ts +10 -0
  1567. package/dist/shared/pool-scale.d.ts.map +1 -0
  1568. package/dist/shared/pool-scale.js +25 -0
  1569. package/dist/shared/pool-scale.js.map +1 -0
  1570. package/dist/shared/private-files.d.ts +10 -22
  1571. package/dist/shared/private-files.d.ts.map +1 -1
  1572. package/dist/shared/private-files.js +95 -82
  1573. package/dist/shared/private-files.js.map +1 -1
  1574. package/dist/shared/relay-reading.d.ts +19 -0
  1575. package/dist/shared/relay-reading.d.ts.map +1 -0
  1576. package/dist/shared/relay-reading.js +22 -0
  1577. package/dist/shared/relay-reading.js.map +1 -0
  1578. package/dist/shared/release-reading.d.ts +124 -32
  1579. package/dist/shared/release-reading.d.ts.map +1 -1
  1580. package/dist/shared/release-reading.js +208 -28
  1581. package/dist/shared/release-reading.js.map +1 -1
  1582. package/dist/shared/roles.d.ts +19 -18
  1583. package/dist/shared/roles.d.ts.map +1 -1
  1584. package/dist/shared/roles.js +21 -26
  1585. package/dist/shared/roles.js.map +1 -1
  1586. package/dist/shared/runtime-artifact.d.ts +20 -0
  1587. package/dist/shared/runtime-artifact.d.ts.map +1 -0
  1588. package/dist/shared/runtime-artifact.js +83 -0
  1589. package/dist/shared/runtime-artifact.js.map +1 -0
  1590. package/dist/shared/stack-reading.d.ts +18 -0
  1591. package/dist/shared/stack-reading.d.ts.map +1 -0
  1592. package/dist/shared/stack-reading.js +15 -0
  1593. package/dist/shared/stack-reading.js.map +1 -0
  1594. package/dist/shared/sync-reading.d.ts +30 -38
  1595. package/dist/shared/sync-reading.d.ts.map +1 -1
  1596. package/dist/shared/sync-reading.js +90 -29
  1597. package/dist/shared/sync-reading.js.map +1 -1
  1598. package/dist/shared/tokens.d.ts +3 -1
  1599. package/dist/shared/tokens.d.ts.map +1 -1
  1600. package/dist/shared/tokens.js +1 -0
  1601. package/dist/shared/tokens.js.map +1 -1
  1602. package/dist/supervisor/restart-policy.d.ts.map +1 -1
  1603. package/dist/supervisor/restart-policy.js +7 -5
  1604. package/dist/supervisor/restart-policy.js.map +1 -1
  1605. package/dist/webapp/console-container.d.ts +7 -0
  1606. package/dist/webapp/console-container.d.ts.map +1 -0
  1607. package/dist/webapp/console-container.js +23 -0
  1608. package/dist/webapp/console-container.js.map +1 -0
  1609. package/dist/webapp/webapp.service.d.ts.map +1 -1
  1610. package/dist/webapp/webapp.service.js +71 -24
  1611. package/dist/webapp/webapp.service.js.map +1 -1
  1612. package/dist/workers/health-monitor.service.d.ts.map +1 -1
  1613. package/dist/workers/health-monitor.service.js +8 -1
  1614. package/dist/workers/health-monitor.service.js.map +1 -1
  1615. package/dist/workers/types.d.ts +2 -0
  1616. package/dist/workers/types.d.ts.map +1 -1
  1617. package/package.json +109 -43
  1618. package/webapp/dist/BUILD.json +4 -3
  1619. package/webapp/dist/assets/access-48hkC2-P.js +1 -0
  1620. package/webapp/dist/assets/access-jWkHxGc7.js +1 -0
  1621. package/webapp/dist/assets/admin-data-table-BKSDI8sU.js +1 -0
  1622. package/webapp/dist/assets/alert-expression-CSblScoa.js +1 -0
  1623. package/webapp/dist/assets/alert-notify-settings-C_CHZrFm.js +1 -0
  1624. package/webapp/dist/assets/alert-uBG6r9NW.js +1 -0
  1625. package/webapp/dist/assets/alerts-CuPQ9YQJ.js +1 -0
  1626. package/webapp/dist/assets/app-address-BCXfN59F.js +1 -0
  1627. package/webapp/dist/assets/apps-Drio028B.js +1 -0
  1628. package/webapp/dist/assets/audit-npSFJECe.js +1 -0
  1629. package/webapp/dist/assets/auth-CcgjP7hR.js +1 -0
  1630. package/webapp/dist/assets/card-DkH32gMY.js +1 -0
  1631. package/webapp/dist/assets/chart-BpGXlCJc.js +2 -0
  1632. package/webapp/dist/assets/charts-BY7qI6s2.js +41 -0
  1633. package/webapp/dist/assets/charts-CpBdHU_A.js +56 -0
  1634. package/webapp/dist/assets/client-DFnuv2z3.js +3 -0
  1635. package/webapp/dist/assets/code-editor-DK6Tmmxv.js +4 -0
  1636. package/webapp/dist/assets/comparison-bars-BtC0dHjF.js +1 -0
  1637. package/webapp/dist/assets/confirm-dialog-BbGsAz7_.js +1 -0
  1638. package/webapp/dist/assets/console-keyboard-D3YCA0yU.js +1 -0
  1639. package/webapp/dist/assets/constants-CyhngVXh.js +1 -0
  1640. package/webapp/dist/assets/containers-Bl8gAyZX.js +3 -0
  1641. package/webapp/dist/assets/context-FIuwpd9_.js +1 -0
  1642. package/webapp/dist/assets/controls-C5W8gHU4.js +1 -0
  1643. package/webapp/dist/assets/daemon-memory-BiEtr9jr.js +1 -0
  1644. package/webapp/dist/assets/dashboard-UHlet3H9.js +1 -0
  1645. package/webapp/dist/assets/dashboard-builder-67PZFqhE.js +1 -0
  1646. package/webapp/dist/assets/dayjs.min-DHwAvH5f.js +1 -0
  1647. package/webapp/dist/assets/deploy-release-dialog-BOXcD5Wo.js +1 -0
  1648. package/webapp/dist/assets/deployments-qV20Ak0P.js +1 -0
  1649. package/webapp/dist/assets/detail-B4TiBfxU.js +8 -0
  1650. package/webapp/dist/assets/detail-B85-Wees.js +2 -0
  1651. package/webapp/dist/assets/detail-CYS81K6Y.js +1 -0
  1652. package/webapp/dist/assets/dist-BUDn8hLh.js +11 -0
  1653. package/webapp/dist/assets/dist-Ci5pYRbx.js +1 -0
  1654. package/webapp/dist/assets/dist-DQmjHv4-.js +1 -0
  1655. package/webapp/dist/assets/dist-De9Fty7a.js +1 -0
  1656. package/webapp/dist/assets/dist-DsGmKwmk.js +23 -0
  1657. package/webapp/dist/assets/empty-content-7jOFhG4C.js +1 -0
  1658. package/webapp/dist/assets/error-boundary-CLLI8PWw.js +3 -0
  1659. package/webapp/dist/assets/event-fields-CiyqrRO8.js +1 -0
  1660. package/webapp/dist/assets/files-DigwXndm.js +2 -0
  1661. package/webapp/dist/assets/formatters-RnRy4bXm.js +1 -0
  1662. package/webapp/dist/assets/icons-OboZgWSt.js +1 -0
  1663. package/webapp/dist/assets/index-uq8Dkk4c.js +1 -0
  1664. package/webapp/dist/assets/label-B1SF0RTL.js +1 -0
  1665. package/webapp/dist/assets/log-level-filter-Bcn31D1F.js +1 -0
  1666. package/webapp/dist/assets/log-location-DuBjh6HQ.js +1 -0
  1667. package/webapp/dist/assets/logs-BqHOufk8.js +4 -0
  1668. package/webapp/dist/assets/metric-chart-M-kI-XOt.js +1 -0
  1669. package/webapp/dist/assets/metric-series-WxePniyw.js +1 -0
  1670. package/webapp/dist/assets/metrics-QIQaF7iS.js +1 -0
  1671. package/webapp/dist/assets/model-ZEXEHm0l.js +2 -0
  1672. package/webapp/dist/assets/mui-6ssfcZcz.js +1 -0
  1673. package/webapp/dist/assets/mui-AnEgAVjz.js +52 -0
  1674. package/webapp/dist/assets/mui-B1jrje6Z.js +1 -0
  1675. package/webapp/dist/assets/mui-BIz4LSVs.js +1 -0
  1676. package/webapp/dist/assets/mui-BTN91yBK.js +28 -0
  1677. package/webapp/dist/assets/mui-BXSXx9c9.js +124 -0
  1678. package/webapp/dist/assets/mui-BwsIrivo.js +37 -0
  1679. package/webapp/dist/assets/mui-C_hromOc.js +1 -0
  1680. package/webapp/dist/assets/mui-Cd711nOk.js +4 -0
  1681. package/webapp/dist/assets/mui-CdB_p2lt.js +10 -0
  1682. package/webapp/dist/assets/mui-DyT2n1lx.js +1 -0
  1683. package/webapp/dist/assets/mui-agG5dued.js +1 -0
  1684. package/webapp/dist/assets/mui-y44PQOfG.js +1 -0
  1685. package/webapp/dist/assets/nodes-BJPk02vv.js +7 -0
  1686. package/webapp/dist/assets/omnitron-logo-koMCbsCv.js +1 -0
  1687. package/webapp/dist/assets/operation-status-Bm1x1wTz.js +1 -0
  1688. package/webapp/dist/assets/page-breadcrumbs-fR7Jmpp4.js +1 -0
  1689. package/webapp/dist/assets/pipelines-T6Ch9LTw.js +3 -0
  1690. package/webapp/dist/assets/popper-m_9b0JRf.js +1 -0
  1691. package/webapp/dist/assets/preload-helper-DzCYNvzR.js +1 -0
  1692. package/webapp/dist/assets/project.store--G5pIF-J.js +1 -0
  1693. package/webapp/dist/assets/projects-YoBzcQ24.js +1 -0
  1694. package/webapp/dist/assets/react-BN8qLIAi.js +9 -0
  1695. package/webapp/dist/assets/react-CEuifcaQ.js +1 -0
  1696. package/webapp/dist/assets/react-apexcharts.esm-DoOt-pu4.js +1 -0
  1697. package/webapp/dist/assets/realtime.store-CBDO4Abj.js +1 -0
  1698. package/webapp/dist/assets/release-bits-B2a_wbft.js +1 -0
  1699. package/webapp/dist/assets/release-build-panel-BQmIdKW9.js +1 -0
  1700. package/webapp/dist/assets/release-deployment-state-DRrEI2pP.js +1 -0
  1701. package/webapp/dist/assets/release-wire-f2VuBoBF.js +1 -0
  1702. package/webapp/dist/assets/releases-Bp3CDgmo.js +2 -0
  1703. package/webapp/dist/assets/rolldown-runtime-CNOWq4Kh.js +1 -0
  1704. package/webapp/dist/assets/search-input-C0MHI8vO.js +1 -0
  1705. package/webapp/dist/assets/services-BddvcFi8.js +1 -0
  1706. package/webapp/dist/assets/settings-B3egRvbI.js +1 -0
  1707. package/webapp/dist/assets/settled-pair-B-wgSZl6.js +1 -0
  1708. package/webapp/dist/assets/shared-styles-C0vN3I7_.js +1 -0
  1709. package/webapp/dist/assets/shell-command-C3pXf1vi.js +1 -0
  1710. package/webapp/dist/assets/sign-in-9q-Nfy83.js +1 -0
  1711. package/webapp/dist/assets/skeleton-BmWDJWF9.js +1 -0
  1712. package/webapp/dist/assets/snackbar-DSPmjMyi.js +1 -0
  1713. package/webapp/dist/assets/stack-health-status-BIv2C10x.js +1 -0
  1714. package/webapp/dist/assets/stack-start-notice-BVnMOwRQ.js +1 -0
  1715. package/webapp/dist/assets/stacks-IZ1mfizi.js +1 -0
  1716. package/webapp/dist/assets/storage-CKXnhqkt.js +1 -0
  1717. package/webapp/dist/assets/store-bqUBn2A4.js +1 -0
  1718. package/webapp/dist/assets/sync-reading-CN0jPKAg.js +1 -0
  1719. package/webapp/dist/assets/system-info-BFKNM-hf.js +1 -0
  1720. package/webapp/dist/assets/table-BOWT6Y9d.js +1 -0
  1721. package/webapp/dist/assets/table-viewport-Bp4pq-c_.js +1 -0
  1722. package/webapp/dist/assets/tabs-k5NPGLnJ.js +1 -0
  1723. package/webapp/dist/assets/terminal-BrP-ENHg.css +1 -0
  1724. package/webapp/dist/assets/terminal-QWBau-Us.js +62 -0
  1725. package/webapp/dist/assets/terminal-input-b7f2VoE_.js +2 -0
  1726. package/webapp/dist/assets/topology-CPey5dP6.js +8 -0
  1727. package/webapp/dist/assets/topology-metadata-dialog-BivuU2y6.js +2 -0
  1728. package/webapp/dist/assets/topology-routes.worker-BoYrIzAH.js +1 -0
  1729. package/webapp/dist/assets/traces-By0rdfDC.js +1 -0
  1730. package/webapp/dist/assets/use-copy-to-clipboard-BWYpToS3.js +1 -0
  1731. package/webapp/dist/assets/use-polled-resource-B22hhr5L.js +1 -0
  1732. package/webapp/dist/assets/use-stack-context-UkBsF-l7.js +1 -0
  1733. package/webapp/dist/assets/webapp-BnxOVfrc.css +1 -0
  1734. package/webapp/dist/assets/webapp-D-UhjFhS.js +35 -0
  1735. package/webapp/dist/console-version.json +1 -0
  1736. package/webapp/dist/index.html +54 -7
  1737. package/dist/release/daemon-omni.d.ts +0 -41
  1738. package/dist/release/daemon-omni.d.ts.map +0 -1
  1739. package/dist/release/daemon-omni.js +0 -59
  1740. package/dist/release/daemon-omni.js.map +0 -1
  1741. package/dist/services/netron-telemetry-transport.d.ts +0 -42
  1742. package/dist/services/netron-telemetry-transport.d.ts.map +0 -1
  1743. package/dist/services/netron-telemetry-transport.js +0 -93
  1744. package/dist/services/netron-telemetry-transport.js.map +0 -1
  1745. package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +0 -1
  1746. package/webapp/dist/assets/Grid-BZ7xhoHQ.js +0 -1
  1747. package/webapp/dist/assets/Switch-DGSAxQPM.js +0 -1
  1748. package/webapp/dist/assets/alerts-sXqHJbsa.js +0 -1
  1749. package/webapp/dist/assets/apps-B_Ah8Flh.js +0 -1
  1750. package/webapp/dist/assets/audit-YXihwyui.js +0 -1
  1751. package/webapp/dist/assets/client-CGbBvy9k.js +0 -1
  1752. package/webapp/dist/assets/constants-veKGFkC6.js +0 -1
  1753. package/webapp/dist/assets/containers-Di4NOTLf.js +0 -2
  1754. package/webapp/dist/assets/daemon-memory-CCPZ4cV_.js +0 -1
  1755. package/webapp/dist/assets/dashboard-Cfuf95N3.js +0 -1
  1756. package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +0 -1
  1757. package/webapp/dist/assets/deploy-release-dialog-D6C-XcKY.js +0 -1
  1758. package/webapp/dist/assets/deployments-ChTq5kCw.js +0 -1
  1759. package/webapp/dist/assets/detail-BsGWv7Dj.js +0 -1
  1760. package/webapp/dist/assets/detail-CyVf_cw5.js +0 -2
  1761. package/webapp/dist/assets/detail-D027j6aO.js +0 -8
  1762. package/webapp/dist/assets/formatters-BqjL73N3.js +0 -1
  1763. package/webapp/dist/assets/fs-Ccl3sAcp.js +0 -1
  1764. package/webapp/dist/assets/index-B8AHIPc-.css +0 -1
  1765. package/webapp/dist/assets/index-DiZbrwxT.js +0 -414
  1766. package/webapp/dist/assets/logs-L2b8Oqmo.js +0 -12
  1767. package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +0 -801
  1768. package/webapp/dist/assets/metrics-CQgjz2Lz.js +0 -2
  1769. package/webapp/dist/assets/nodes-Nwia2Ty6.js +0 -7
  1770. package/webapp/dist/assets/pipelines-DCu_rXOr.js +0 -4
  1771. package/webapp/dist/assets/projects-Bb4aV76h.js +0 -1
  1772. package/webapp/dist/assets/react-CwJFpaho.js +0 -1
  1773. package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +0 -1956
  1774. package/webapp/dist/assets/release-bits-Dj4EOhhb.js +0 -1
  1775. package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +0 -1
  1776. package/webapp/dist/assets/releases-CnAt3yO6.js +0 -2
  1777. package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +0 -1
  1778. package/webapp/dist/assets/settings-DU-mjiwb.js +0 -1
  1779. package/webapp/dist/assets/settled-pair-C7SjZuns.js +0 -1
  1780. package/webapp/dist/assets/sign-in-Bcvjrr4C.js +0 -1
  1781. package/webapp/dist/assets/stacks-B-e8p50I.js +0 -1
  1782. package/webapp/dist/assets/sync-reading-C3PnJ7AX.js +0 -1
  1783. package/webapp/dist/assets/system-info-BtE3dgfw.js +0 -1
  1784. package/webapp/dist/assets/topology-Cwch-uF1.js +0 -12
  1785. package/webapp/dist/assets/traces-BbShR-4P.js +0 -1
  1786. package/webapp/dist/assets/use-stack-context-CZUgPq88.js +0 -1
@@ -1,31 +1,28 @@
1
- /**
2
- * InfrastructureService — Self-healing infrastructure provisioner
3
- *
4
- * Manages the complete lifecycle of infrastructure containers:
5
- * 1. Desired state declared in omnitron.config.ts
6
- * 2. Reconciliation loop diffs desired vs actual state
7
- * 3. Creates/starts/recreates containers as needed
8
- * 4. Continuous health monitoring with auto-restart
9
- * 5. Post-provisioning setup (create databases, buckets, etc.)
10
- *
11
- * Replaces: docker-compose.dev.yml + dev.sh + .env.dev
12
- *
13
- * Architecture:
14
- * InfrastructureConfig → ServiceResolver → ResolvedContainer[]
15
- * ResolvedContainer[] → ContainerRuntime → Docker CLI
16
- * Health Loop → detect failure → auto-restart (exponential backoff)
17
- */
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { RecoveryMutation, RecoveryBusyError } from '../daemon/recovery-state.js';
18
11
  import { computeBackoff } from '@omnitron-dev/titan/utils';
12
+ import { describeError } from '@omnitron-dev/titan/diagnostics';
13
+ import { isDeepStrictEqual } from 'node:util';
19
14
  import { resolveInfrastructure, resolveOmnitronPg, getManagedNetwork } from './service-resolver.js';
15
+ import { ownedContainerId } from './owned-container.js';
16
+ import { observeUnhealthy } from './health-recovery.js';
17
+ import { normalizeInfraConfig } from './config-normalizer.js';
18
+ import { createDefaultRegistry } from './presets/index.js';
20
19
  import { PhantomEndpointJanitor } from './phantom-endpoint-janitor.js';
21
20
  import { LOCAL_INFRA_HOST } from '../shared/local-infra-host.js';
22
- import { isDockerAvailable, getContainerState, createContainer, startContainer, removeContainer, ensureImage, waitForHealthy, createVolume, containerSpecHash, } from './container-runtime.js';
23
- import { summariseProvisioning, describeProvisioning } from './provisioning-outcome.js';
21
+ import { isDockerAvailable, getContainerState, createContainer, startContainer, removeContainer, ensureImage, waitForHealthy, createVolume, containerSpecHash, containerResources, containerResourcesMatch, } from './container-runtime.js';
22
+ import { summariseProvisioning, describeProvisioning, retainProvisioningObservation } from './provisioning-outcome.js';
24
23
  import { OMNITRON_PG_PORT, OMNITRON_PG_USER, OMNITRON_PG_PASSWORD, OMNITRON_PG_DATABASE, } from '../database/connection.js';
25
24
  const RECONCILE_INTERVAL = 30_000; // 30s health sweep
26
25
  const STARTUP_TIMEOUT = 120_000; // 2min max per service
27
- /** Consecutive 'unhealthy' ticks before recreate. 2 ticks @ 30s = 60s grace. */
28
- const UNHEALTHY_RESTART_THRESHOLD = 2;
29
26
  /** Restart circuit-breaker: first failed-restart backoff, doubled each failure. */
30
27
  const RESTART_BACKOFF_BASE = 30_000; // 30s
31
28
  /** Restart circuit-breaker: backoff ceiling (30s → 1m → 2m … capped here). */
@@ -64,13 +61,13 @@ export function restartBackoffMs(failures) {
64
61
  * Measured: `omnitron-pg`, created before published ports were bound to
65
62
  * loopback, survived on 0.0.0.0:5480 through the fix that reached all eleven
66
63
  * other managed containers, and still answered `nc -vz <lan-address> 5480`
67
- * from another machine months later, while `daos-dev-postgres` beside it in
64
+ * from another machine months later, while `sample-dev-postgres` beside it in
68
65
  * `docker ps` was correctly on 127.0.0.1.
69
66
  *
70
67
  * `reconcileName` is the subtlety. The control-plane database is ONE
71
68
  * container per host — it owns port 5480 — but each daemon resolves a name
72
- * carrying its own project prefix, so a daemon on the `daos/dev` stack
73
- * computes `daos-dev-pg` while the container that exists is `omnitron-pg`.
69
+ * carrying its own project prefix, so a daemon on the `sample/dev` stack
70
+ * computes `sample-dev-pg` while the container that exists is `omnitron-pg`.
74
71
  * Reconciling the running container against a spec under the OTHER name
75
72
  * creates a second one and collides on the port; the first version of this
76
73
  * did exactly that and corrected nothing. The name to reconcile is therefore
@@ -94,6 +91,7 @@ export class InfrastructureService {
94
91
  presetRegistry;
95
92
  serviceOverrides;
96
93
  needsControlPlaneDatabase;
94
+ retiredStacks = new Set();
97
95
  desiredContainers = [];
98
96
  /** What the most recent reconcile did to each service. */
99
97
  lastActions = new Map();
@@ -102,15 +100,8 @@ export class InfrastructureService {
102
100
  healthTimer = null;
103
101
  state = { services: {}, ready: false };
104
102
  normalizedServices;
105
- /**
106
- * Per-service consecutive-unhealthy counter. Restart only fires after
107
- * UNHEALTHY_RESTART_THRESHOLD ticks in a row to avoid flapping during
108
- * cold-start / transient health-check timeouts. Reset to 0 on a healthy
109
- * observation. Without this, a service that briefly fails one health
110
- * probe (network blip, slow query) would be torn down and recreated,
111
- * making transient pressure look like outages.
112
- */
113
- unhealthyTicks = new Map();
103
+ /** Distinct completed probes and elapsed grace, bound to one native incarnation. */
104
+ unhealthyEvidence = new Map();
114
105
  /**
115
106
  * Per-service restart circuit-breaker. A container whose (re)create keeps
116
107
  * failing — an image that won't pull, or infra stuck on an unrecoverable
@@ -127,6 +118,8 @@ export class InfrastructureService {
127
118
  * once we know Docker is reachable; torn down in `teardown()`.
128
119
  */
129
120
  phantomJanitor = null;
121
+ handoffMonitoring = false;
122
+ janitorNetworks = [];
130
123
  constructor(logger, config, normalizedServices, presetRegistry,
131
124
  /**
132
125
  * Stack overrides. A service marked `disabled` here is not provisioned,
@@ -148,8 +141,14 @@ export class InfrastructureService {
148
141
  this.presetRegistry = presetRegistry;
149
142
  this.serviceOverrides = serviceOverrides;
150
143
  this.needsControlPlaneDatabase = needsControlPlaneDatabase;
151
- this.normalizedServices = normalizedServices ?? {};
144
+ this.presetRegistry ??= createDefaultRegistry();
145
+ if (!normalizedServices) {
146
+ normalizedServices = normalizeInfraConfig(config, this.presetRegistry);
147
+ }
148
+ this.normalizedServices = normalizedServices;
152
149
  this.desiredContainers = resolveInfrastructure(config, normalizedServices, serviceOverrides);
150
+ for (const desired of this.desiredContainers)
151
+ containerResources(desired);
153
152
  this.omnitronPgContainer = resolveOmnitronPg();
154
153
  }
155
154
  /**
@@ -166,24 +165,25 @@ export class InfrastructureService {
166
165
  * benign collision — the shared service was actually fine).
167
166
  *
168
167
  * The intended semantics for shared infrastructure is "all apps that
169
- * declare `postgres` use the same container", so the first
170
- * declaration wins. When subsequent declarations differ in shape
171
- * (image / env / ports), log a structured warning so the operator
172
- * can reconcile intent vs. config.
168
+ * declare `postgres` use the same container", so
169
+ * identical declarations are shared. Conflicting specifications refuse
170
+ * the plan before anything is provisioned.
173
171
  */
174
172
  addAppContainers(containers) {
173
+ for (const desired of containers)
174
+ containerResources(desired);
175
+ if (this.monitoringRelinquished)
176
+ throw new Error('Infrastructure monitoring ownership has been relinquished');
177
+ if (this.ownershipFrozen)
178
+ throw new Error('Infrastructure ownership is frozen');
175
179
  for (const c of containers) {
176
180
  const existing = this.desiredContainers.find((d) => d.name === c.name);
177
181
  if (!existing) {
178
182
  this.desiredContainers.push(c);
179
183
  continue;
180
184
  }
181
- if (!shallowContainerEqual(existing, c)) {
182
- this.logger.warn({
183
- container: c.name,
184
- existingImage: existing.image,
185
- duplicateImage: c.image,
186
- }, 'Duplicate container declaration with differing shape — keeping first; check for conflicting app infrastructure requirements (T#76)');
185
+ if (containerSpecHash(existing) !== containerSpecHash(c)) {
186
+ throw new Error(`Conflicting infrastructure declarations for ${c.name}; use one shared specification or distinct service names`);
187
187
  }
188
188
  // else: identical declaration, silent dedupe — this is the common case
189
189
  }
@@ -193,7 +193,62 @@ export class InfrastructureService {
193
193
  * Ensures Docker is available, pulls images, creates/starts containers,
194
194
  * runs post-provisioning setup, and starts the health monitor.
195
195
  */
196
- async provision() {
196
+ async provision(definition) {
197
+ if (this.monitoringRelinquished)
198
+ throw new Error('Infrastructure monitoring ownership has been relinquished');
199
+ if (this.ownershipFrozen)
200
+ throw new Error('Infrastructure ownership is frozen');
201
+ if (this.provisioning) {
202
+ if (definition)
203
+ throw new Error('Infrastructure provisioning is already in progress; retry the new declaration after it finishes');
204
+ return this.provisioning;
205
+ }
206
+ const task = this.provisionDefinition(definition);
207
+ this.provisioning = task;
208
+ try {
209
+ return await task;
210
+ }
211
+ finally {
212
+ if (this.provisioning === task)
213
+ this.provisioning = undefined;
214
+ }
215
+ }
216
+ /** Resolve a plan without installing another monitor or changing the current definition. */
217
+ resolveDefinition(config, services, overrides) {
218
+ return new InfrastructureService(this.logger, config, services, this.presetRegistry, overrides, this.needsControlPlaneDatabase);
219
+ }
220
+ async provisionDefinition(definition) {
221
+ const monitored = this.healthTimer !== null;
222
+ this.definitionChanging = true;
223
+ try {
224
+ try {
225
+ // An old sweep must finish before fresh declarations can authorize native work.
226
+ const drained = await Promise.allSettled([...this.activeSweeps, ...this.reconcileTasks.values()]);
227
+ if (drained.some(result => result.status === 'rejected'))
228
+ throw new Error('In-flight infrastructure reconciliation failed; inspect it before retrying provisioning');
229
+ await this.phantomJanitor?.drain();
230
+ if (definition && this.ownershipFrozen)
231
+ throw new Error('Infrastructure ownership changed before the new declaration was applied');
232
+ if (definition)
233
+ this.replaceDefinitionFrom(definition);
234
+ this.state.ready = false;
235
+ }
236
+ finally {
237
+ this.definitionChanging = false;
238
+ }
239
+ return await this.provisionOwned();
240
+ }
241
+ finally {
242
+ // Failed Docker admission must not silently abandon previously owned services.
243
+ if (monitored && !this.ownershipFrozen && !this.monitoringRelinquished) {
244
+ this.startHealthMonitor();
245
+ this.phantomJanitor?.start();
246
+ }
247
+ }
248
+ }
249
+ async provisionOwned() {
250
+ for (const desired of [...this.desiredContainers, ...this.controlPlaneContainers()])
251
+ containerResources(desired);
197
252
  // 1. Verify Docker is available
198
253
  if (!(await isDockerAvailable())) {
199
254
  throw new Error('Docker is not available. Omnitron requires Docker to manage infrastructure.\n' +
@@ -218,20 +273,17 @@ export class InfrastructureService {
218
273
  // 0.0.0.0:5480 on a host whose firewall allows only SSH.
219
274
  //
220
275
  // The control plane's database belongs to the control plane.
221
- this.logger.debug('This daemon keeps its own state in SQLite — not provisioning a control-plane database');
276
+ this.logger.debug('Control-plane database provisioning is outside this infrastructure allocation');
222
277
  }
223
278
  else if (decision.action === 'reconcile') {
224
279
  this.usingGlobalOmnitronPg = true;
225
280
  // A stack-prefixed leftover cannot run beside the global one — they
226
281
  // share port 5480 — so it goes before anything else touches that port.
227
282
  if (this.omnitronPgContainer.name !== decision.reconcileName) {
228
- const stalePg = await getContainerState(this.omnitronPgContainer.name);
283
+ const stalePg = await getContainerState(this.omnitronPgContainer.name, { orThrow: true, fullId: true });
229
284
  if (stalePg) {
230
- try {
231
- await removeContainer(this.omnitronPgContainer.name);
232
- this.logger.info({ service: this.omnitronPgContainer.name }, 'Removed stale stack-prefixed PG container');
233
- }
234
- catch { /* already gone */ }
285
+ await removeContainer(ownedContainerId(this.omnitronPgContainer, stalePg));
286
+ this.logger.info({ service: this.omnitronPgContainer.name }, 'Removed stale stack-prefixed PG container');
235
287
  }
236
288
  }
237
289
  // The same reconcile, and so the same drift check, as every app
@@ -240,7 +292,7 @@ export class InfrastructureService {
240
292
  // recreated into.
241
293
  // Name AND volume, not one of them. `resolveOmnitronPg` derives both
242
294
  // from the container prefix, so overriding only the name produced a
243
- // container called `omnitron-pg` mounting `daos-dev-pg-data` — the
295
+ // container called `omnitron-pg` mounting `sample-dev-pg-data` — the
244
296
  // global identity on a stack-scoped volume, and the stack's own
245
297
  // `omnitron-pg-data` left dangling where a `docker volume prune` would
246
298
  // take it silently. The two names are one decision and must move
@@ -307,8 +359,9 @@ export class InfrastructureService {
307
359
  // a Docker daemon restart / host suspend doesn't leave us
308
360
  // unable to recreate containers ("endpoint with name X
309
361
  // already exists in network ...").
362
+ this.janitorNetworks = [getManagedNetwork()];
310
363
  this.phantomJanitor = new PhantomEndpointJanitor({
311
- networks: [getManagedNetwork()],
364
+ networks: this.janitorNetworks,
312
365
  intervalMs: 60_000,
313
366
  logger: this.logger,
314
367
  });
@@ -343,9 +396,166 @@ export class InfrastructureService {
343
396
  * attempted" by reading `state.services` alone: the second leaves no entry,
344
397
  * and an absent entry is indistinguishable from an absent problem.
345
398
  */
399
+ /** Internal immutable plan. Never expose environment or command values through RPC. */
400
+ getDesiredContainers() {
401
+ return structuredClone(this.desiredContainers);
402
+ }
346
403
  getDesiredServices() {
347
404
  return this.desiredContainers.map((c) => ({ name: c.name, image: c.image }));
348
405
  }
406
+ /**
407
+ * Transfer monitoring ownership to a freshly resolved declaration. This never
408
+ * provisions containers: retained specs must match; additions must already be
409
+ * running with exact native ownership and spec labels. Freeze and drain all
410
+ * earlier monitor/reconcile work before acknowledging a handoff.
411
+ */
412
+ async refreshOwnershipFrom(candidate) {
413
+ if (this.ownershipFrozen || this.provisioning)
414
+ throw new Error('Infrastructure ownership refresh or provisioning already in progress');
415
+ this.ownershipFrozen = true;
416
+ try {
417
+ const drained = await Promise.allSettled([...this.activeSweeps, ...this.reconcileTasks.values()]);
418
+ if (drained.some(result => result.status === 'rejected'))
419
+ throw new Error('In-flight infrastructure reconciliation failed; retry ownership refresh');
420
+ const current = new Map(this.desiredContainers.map(c => [c.name, c]));
421
+ const next = new Map(candidate.desiredContainers.map(c => [c.name, c]));
422
+ if (next.size !== candidate.desiredContainers.length)
423
+ throw new Error('Duplicate desired container identity');
424
+ const adopted = [];
425
+ for (const [name, desired] of next) {
426
+ const prior = current.get(name);
427
+ if (prior) {
428
+ if (containerSpecHash(prior) !== containerSpecHash(desired) || !sameRecord(prior.labels, desired.labels)) {
429
+ throw new Error(`Ownership refresh cannot change retained service spec: ${name}`);
430
+ }
431
+ continue;
432
+ }
433
+ const actual = await getContainerState(name);
434
+ const labels = desired.labels;
435
+ if (!labels['omnitron.project'] || !labels['omnitron.stack'] || labels['omnitron.managed'] !== 'true' ||
436
+ actual?.status !== 'running' || actual.networkAttached === false || actual.specHash !== containerSpecHash(desired) || !containerResourcesMatch(desired, actual) ||
437
+ Object.entries(labels).some(([key, value]) => actual.labels?.[key] !== value)) {
438
+ throw new Error(`Cannot adopt service without matching running native ownership and spec: ${name}`);
439
+ }
440
+ adopted.push(name);
441
+ }
442
+ const released = [...current.keys()].filter(name => !next.has(name));
443
+ this.replaceDefinitionFrom(candidate);
444
+ return { released, adopted };
445
+ }
446
+ finally {
447
+ this.ownershipFrozen = false;
448
+ }
449
+ }
450
+ /** Freeze and drain Docker mutations before another backend takes monitoring ownership. */
451
+ async prepareHandoff() {
452
+ if (this.ownershipFrozen)
453
+ throw new Error('Infrastructure ownership is already frozen');
454
+ this.ownershipFrozen = true;
455
+ this.handoffMonitoring = this.healthTimer !== null;
456
+ try {
457
+ const settled = await Promise.allSettled([...this.activeSweeps, ...this.reconcileTasks.values(), ...(this.provisioning ? [this.provisioning] : [])]);
458
+ if (settled.some(result => result.status === 'rejected'))
459
+ throw new Error('Infrastructure reconciliation failed while draining');
460
+ await this.phantomJanitor?.drain();
461
+ const observations = await InfrastructureService.validateHandoffContainers(this.desiredContainers, this.needsControlPlaneDatabase && !this.usingGlobalOmnitronPg ? this.omnitronPgContainer : undefined, this.state, { protocol: 1 });
462
+ this.dispose();
463
+ const snapshot = this.ownershipSnapshot(this.handoffMonitoring);
464
+ snapshot.nativeState = { protocol: 1, observations };
465
+ return snapshot;
466
+ }
467
+ catch (error) {
468
+ this.resumeAfterHandoff();
469
+ throw error;
470
+ }
471
+ }
472
+ captureRecoveryState() {
473
+ if (this.ownershipFrozen || this.provisioning || this.activeSweeps.size || this.reconcileTasks.size) {
474
+ throw new RecoveryBusyError('Infrastructure ownership is changing; a recovery snapshot is not ready');
475
+ }
476
+ return this.ownershipSnapshot(this.healthTimer !== null);
477
+ }
478
+ ownershipSnapshot(monitoring) {
479
+ return structuredClone({
480
+ nativeState: { protocol: 1 },
481
+ retiredStacks: [...this.retiredStacks],
482
+ config: this.config, containers: this.desiredContainers, normalizedServices: this.normalizedServices,
483
+ ...(this.serviceOverrides && { serviceOverrides: this.serviceOverrides }),
484
+ state: this.state, usingGlobalOmnitronPg: this.usingGlobalOmnitronPg,
485
+ needsControlPlaneDatabase: this.needsControlPlaneDatabase, monitoring,
486
+ controlPlaneContainer: this.omnitronPgContainer, janitorNetworks: this.janitorNetworks,
487
+ // Protocol1 rollback readers retain the old field but restart their
488
+ // confirmation window; poll counts cannot encode native observations.
489
+ unhealthyTicks: [], unhealthyEvidence: [...this.unhealthyEvidence], restartBackoff: [...this.restartBackoff],
490
+ });
491
+ }
492
+ resumeAfterHandoff() {
493
+ if (this.monitoringRelinquished)
494
+ return;
495
+ this.ownershipFrozen = false;
496
+ if (this.handoffMonitoring)
497
+ this.startHealthMonitor();
498
+ if (!this.phantomJanitor && this.janitorNetworks.length) {
499
+ this.phantomJanitor = new PhantomEndpointJanitor({ networks: this.janitorNetworks, intervalMs: 60_000, logger: this.logger });
500
+ this.phantomJanitor.start();
501
+ }
502
+ this.handoffMonitoring = false;
503
+ }
504
+ /** Read and validate existing containers. Never provision, start or recreate during adoption. */
505
+ static async adoptHandoff(logger, snapshot) {
506
+ await InfrastructureService.validateHandoffContainers(snapshot.containers, snapshot.needsControlPlaneDatabase && !snapshot.usingGlobalOmnitronPg ? snapshot.controlPlaneContainer : undefined, snapshot.state, snapshot.nativeState);
507
+ const service = new InfrastructureService(logger, snapshot.config, snapshot.normalizedServices, undefined, snapshot.serviceOverrides, snapshot.needsControlPlaneDatabase);
508
+ service.desiredContainers = structuredClone(snapshot.containers);
509
+ for (const key of snapshot.retiredStacks ?? [])
510
+ service.retiredStacks.add(key);
511
+ service.omnitronPgContainer = structuredClone(snapshot.controlPlaneContainer);
512
+ service.janitorNetworks = [...snapshot.janitorNetworks];
513
+ service.unhealthyEvidence = new Map(snapshot.unhealthyEvidence ?? []);
514
+ service.restartBackoff = new Map(snapshot.restartBackoff);
515
+ Object.assign(service.state, structuredClone(snapshot.state));
516
+ service.usingGlobalOmnitronPg = snapshot.usingGlobalOmnitronPg;
517
+ service.handoffMonitoring = snapshot.monitoring;
518
+ service.ownershipFrozen = true;
519
+ return service;
520
+ }
521
+ static async validateHandoffContainers(containers, controlPlane, state, nativeState) {
522
+ if (nativeState && nativeState.protocol !== 1)
523
+ throw new Error('Unsupported infrastructure native observation protocol');
524
+ const desiredContainers = [...containers, ...(controlPlane ? [controlPlane] : [])];
525
+ const expected = nativeState?.observations && new Map(nativeState.observations.map(entry => [entry.name, entry.containerId]));
526
+ if (expected && (expected.size !== nativeState.observations.length || expected.size !== desiredContainers.length ||
527
+ desiredContainers.some(desired => !expected.has(desired.name))))
528
+ throw new Error('Incomplete infrastructure native observations');
529
+ const observations = [];
530
+ for (const desired of desiredContainers) {
531
+ const actual = await getContainerState(desired.name, { orThrow: true, fullId: true });
532
+ const previous = state.services[desired.name];
533
+ // A failed creation owns no native container. Preserve that failure and
534
+ // its desired declaration; it must not make every backend upgrade fail.
535
+ // Missing previously observed or supposedly running resources still fail
536
+ // closed, as do legacy snapshots without the explicit protocol.
537
+ const failedCreation = nativeState?.protocol === 1 && previous?.status === 'exited' &&
538
+ !previous.containerId && typeof previous.error === 'string' && previous.error.length > 0;
539
+ if (!actual) {
540
+ if (!failedCreation || (expected && expected.get(desired.name) !== null))
541
+ throw new Error(`Infrastructure identity or specification changed during handoff: ${desired.name}`);
542
+ observations.push({ name: desired.name, containerId: null });
543
+ continue;
544
+ }
545
+ // Protocol 1 exported Docker's 12-character display ID. Keep its wire
546
+ // shape for rollback, while comparing a full prior state ID when present.
547
+ const matches = (id) => id?.length === 12
548
+ ? actual.containerId?.startsWith(id) : id === actual.containerId;
549
+ if (!actual.containerId || actual.specHash !== containerSpecHash(desired) || !containerResourcesMatch(desired, actual) ||
550
+ (expected && !matches(expected.get(desired.name))) ||
551
+ (previous?.containerId && !matches(previous.containerId)) ||
552
+ Object.entries(desired.labels).some(([key, value]) => actual.labels?.[key] !== value)) {
553
+ throw new Error(`Infrastructure identity or specification changed during handoff: ${desired.name}`);
554
+ }
555
+ observations.push({ name: desired.name, containerId: actual.containerId.slice(0, 12) });
556
+ }
557
+ return observations;
558
+ }
349
559
  /**
350
560
  * Services whose socket is new since this reconcile began.
351
561
  *
@@ -358,9 +568,9 @@ export class InfrastructureService {
358
568
  .map(([name]) => name);
359
569
  }
360
570
  /**
361
- * Stop all managed infrastructure containers.
571
+ * Release process-owned monitoring resources without changing infrastructure.
362
572
  */
363
- async teardown() {
573
+ dispose() {
364
574
  this.stopHealthMonitor();
365
575
  // T#75: stop the janitor BEFORE removing containers so a final
366
576
  // tick can't race the teardown's `docker rm` and produce noisy
@@ -369,19 +579,89 @@ export class InfrastructureService {
369
579
  this.phantomJanitor.stop();
370
580
  this.phantomJanitor = null;
371
581
  }
582
+ }
583
+ /** Permanently release this entire observer, preserving every native resource. */
584
+ async relinquishMonitoring() {
585
+ if (this.monitoringRelinquished)
586
+ return [...this.relinquishedNames];
587
+ if (this.ownershipFrozen)
588
+ throw new Error('Infrastructure ownership is already frozen');
589
+ this.ownershipFrozen = true;
590
+ this.handoffMonitoring = false;
591
+ this.stopHealthMonitor();
592
+ const settled = await Promise.allSettled([
593
+ ...this.activeSweeps, ...this.reconcileTasks.values(), ...(this.provisioning ? [this.provisioning] : []),
594
+ ]);
595
+ // An already admitted provision may have created its janitor while being
596
+ // drained. Take the current reference only after that actor has completed.
597
+ await this.phantomJanitor?.drain();
598
+ // Rejected tasks are also finished. Their diagnostic remains in the state;
599
+ // relinquishing authority neither retries nor reverses their native work.
600
+ const failed = settled.filter(result => result.status === 'rejected').length;
601
+ if (failed)
602
+ this.logger.warn({ failed }, 'Infrastructure monitoring released after earlier reconciliation failures');
603
+ this.relinquishedNames = [...new Set([...this.desiredContainers, ...this.controlPlaneContainers()].map(item => item.name))];
604
+ this.monitoringRelinquished = true;
605
+ this.dispose();
606
+ this.janitorNetworks = [];
607
+ return [...this.relinquishedNames];
608
+ }
609
+ /** Stop reconciliation for exactly one allocation, retaining every other scope. */
610
+ async retireStack(scope) {
611
+ if (this.monitoringRelinquished)
612
+ throw new Error('Infrastructure monitoring ownership has been relinquished');
613
+ if (this.ownershipFrozen)
614
+ throw new Error('Infrastructure ownership is frozen');
615
+ const key = `${scope.project}/${scope.stack}`;
616
+ this.retiredStacks.add(key);
617
+ await Promise.allSettled([...this.activeSweeps, ...this.reconcileTasks.values()]);
618
+ this.desiredContainers = this.desiredContainers.filter(container => this.containerScope(container) !== key);
619
+ }
620
+ resumeStack(scope) {
621
+ if (this.monitoringRelinquished)
622
+ throw new Error('Infrastructure monitoring ownership has been relinquished');
623
+ if (this.ownershipFrozen)
624
+ throw new Error('Infrastructure ownership is frozen');
625
+ this.retiredStacks.delete(`${scope.project}/${scope.stack}`);
626
+ }
627
+ containerScope(container) {
628
+ return `${container.labels?.['omnitron.project']}/${container.labels?.['omnitron.stack']}`;
629
+ }
630
+ /** Exact names this local infrastructure owner would remove, without exposing credentials in container specs. */
631
+ getTeardownNames() {
632
+ return [...[...this.desiredContainers].reverse(), ...this.controlPlaneContainers()].map(container => container.name);
633
+ }
634
+ /** Explicit infrastructure removal; process disposal alone preserves containers. */
635
+ async teardown() {
636
+ if (this.monitoringRelinquished)
637
+ throw new Error('Infrastructure monitoring ownership has been relinquished');
638
+ if (this.ownershipFrozen)
639
+ throw new Error('Infrastructure ownership is frozen');
640
+ this.ownershipFrozen = true;
641
+ this.stopHealthMonitor();
642
+ await Promise.allSettled([...this.activeSweeps, ...this.reconcileTasks.values(), ...(this.provisioning ? [this.provisioning] : [])]);
643
+ await this.phantomJanitor?.drain();
644
+ this.dispose();
372
645
  // Remove all containers in parallel for fast shutdown — the control-plane
373
646
  // database only where this service keeps one (`controlPlaneContainers`).
374
- const allContainers = [...[...this.desiredContainers].reverse(), ...this.controlPlaneContainers()];
375
- await Promise.allSettled(allContainers.map(async (c) => {
376
- try {
377
- await removeContainer(c.name);
378
- this.logger.info({ service: c.name }, 'Container removed');
379
- }
380
- catch {
381
- // Already removed
382
- }
647
+ const allContainers = [...this.desiredContainers, ...this.controlPlaneContainers()];
648
+ // Validate every target before removing the first. Absence is an idempotent success.
649
+ const reviewed = await Promise.all(allContainers.map(async (desired) => {
650
+ const actual = await getContainerState(desired.name, { orThrow: true, fullId: true });
651
+ return actual ? ownedContainerId(desired, actual) : null;
652
+ }));
653
+ const results = await Promise.allSettled(reviewed.map(async (id, index) => {
654
+ if (!id)
655
+ return;
656
+ await removeContainer(id, { graceful: true });
657
+ this.logger.info({ service: allContainers[index].name }, 'Container removed');
383
658
  }));
384
659
  this.state.ready = false;
660
+ const failures = results.flatMap((result, index) => result.status === 'rejected'
661
+ ? [new Error(`${allContainers[index].name}: ${String(result.reason)}`, { cause: result.reason })] : []);
662
+ if (failures.length) {
663
+ throw new AggregateError(failures, `Infrastructure stop incomplete: ${failures.map(error => error.message).join('; ')}`);
664
+ }
385
665
  }
386
666
  /**
387
667
  * Get current infrastructure state.
@@ -389,24 +669,34 @@ export class InfrastructureService {
389
669
  getState() {
390
670
  return this.state;
391
671
  }
392
- /**
393
- * Serve the stack's definition as it is now.
394
- *
395
- * A node's daemon builds this service on its first `provisionStack` and
396
- * reuses it for every later one — rightly: a second service would be a
397
- * second janitor and a second health monitor over one set of containers.
398
- * But the definition it was built with stayed its definition. A later
399
- * deployment that enabled a service, changed an image or dropped a
400
- * `disabled` reached the node's host services — `reconcileHostServices`
401
- * reads each call's own — and not its containers, until something restarted
402
- * the daemon. Replaced whole, as the constructor sets it; `setConfigRoots`
403
- * and `addAppContainers` then work on this set, as on a first call.
404
- */
405
- redefine(config, normalizedServices, serviceOverrides) {
406
- this.config = config;
407
- this.normalizedServices = normalizedServices;
408
- this.serviceOverrides = serviceOverrides;
409
- this.desiredContainers = resolveInfrastructure(config, normalizedServices, serviceOverrides);
672
+ /** Called only after older native work has drained and new observations are held. */
673
+ replaceDefinitionFrom(candidate) {
674
+ if (candidate.needsControlPlaneDatabase !== this.needsControlPlaneDatabase)
675
+ throw new Error('Infrastructure declaration cannot change control-plane database ownership');
676
+ const next = new Map(candidate.desiredContainers.map(container => [container.name, container]));
677
+ if (next.size !== candidate.desiredContainers.length)
678
+ throw new Error('Duplicate desired container identity');
679
+ for (const container of this.desiredContainers) {
680
+ const replacement = next.get(container.name);
681
+ if (replacement && !sameRecord(container.labels, replacement.labels))
682
+ throw new Error(`Infrastructure declaration cannot change retained ownership: ${container.name}`);
683
+ }
684
+ const previousServices = this.normalizedServices;
685
+ for (const container of this.desiredContainers) {
686
+ const replacement = next.get(container.name);
687
+ if (!replacement || containerSpecHash(container) !== containerSpecHash(replacement)) {
688
+ delete this.state.services[container.name];
689
+ this.unhealthyEvidence.delete(container.name);
690
+ this.restartBackoff.delete(container.name);
691
+ this.lastActions.delete(container.name);
692
+ }
693
+ }
694
+ this.config = candidate.config;
695
+ this.normalizedServices = candidate.normalizedServices;
696
+ this.serviceOverrides = candidate.serviceOverrides;
697
+ this.desiredContainers = [...candidate.desiredContainers];
698
+ this.invalidateChangedSetup(previousServices);
699
+ this.state.ready = summariseProvisioning(this.desiredContainers, this.state.services).ready;
410
700
  }
411
701
  /**
412
702
  * Get normalized services (from preset system).
@@ -427,6 +717,15 @@ export class InfrastructureService {
427
717
  return [];
428
718
  return Object.keys(pg.databases);
429
719
  }
720
+ /** The bucket inventory declared to the same MinIO provisioner. */
721
+ getMinioBuckets() {
722
+ const buckets = this.normalizedServices['minio']?._presetConfig?.['buckets'] ?? this.config.minio?.buckets;
723
+ if (buckets === undefined)
724
+ return [];
725
+ if (!Array.isArray(buckets) || buckets.some(bucket => typeof bucket !== 'string'))
726
+ throw new Error('Invalid declared MinIO bucket inventory');
727
+ return [...new Set(buckets)];
728
+ }
430
729
  /**
431
730
  * Resolved container name for an infra service (e.g. 'postgres' →
432
731
  * 'acme-dev-postgres'). Taken from the already-resolved desired containers
@@ -467,12 +766,16 @@ export class InfrastructureService {
467
766
  }
468
767
  case 'minio': {
469
768
  const minio = this.config.minio;
470
- if (!minio)
769
+ const name = this.getResolvedContainerName('minio');
770
+ const resolved = this.desiredContainers.find(container => container.name === name);
771
+ if (!resolved && !minio)
471
772
  return null;
773
+ // Use the provisioner's resolved specification for both declaration forms.
774
+ // Reading only legacy `minio` loses credentials when `services.minio` overrides it.
472
775
  return {
473
- endpoint: `http://${LOCAL_INFRA_HOST}:${minio.ports?.api ?? 9000}`,
474
- accessKey: minio.accessKey ?? 'minioadmin',
475
- secretKey: typeof minio.secretKey === 'string' ? minio.secretKey : 'minioadmin',
776
+ endpoint: `http://${LOCAL_INFRA_HOST}:${resolved?.ports.find(port => port.container === 9000)?.host ?? minio?.ports?.api ?? 9000}`,
777
+ accessKey: resolved?.environment['MINIO_ROOT_USER'] ?? minio?.accessKey ?? 'minioadmin',
778
+ secretKey: resolved?.environment['MINIO_ROOT_PASSWORD'] ?? (typeof minio?.secretKey === 'string' ? minio.secretKey : 'minioadmin'),
476
779
  forcePathStyle: true,
477
780
  };
478
781
  }
@@ -502,6 +805,13 @@ export class InfrastructureService {
502
805
  * own restart-policy in the mix) occasional duplicate containers.
503
806
  */
504
807
  reconciling = new Set();
808
+ reconcileTasks = new Map();
809
+ activeSweeps = new Set();
810
+ ownershipFrozen = false;
811
+ definitionChanging = false;
812
+ monitoringRelinquished = false;
813
+ provisioning;
814
+ relinquishedNames = [];
505
815
  /**
506
816
  * Where this node keeps each service's config files, once a master sent them.
507
817
  *
@@ -534,22 +844,31 @@ export class InfrastructureService {
534
844
  return;
535
845
  this.desiredContainers = resolveInfrastructure(this.config, this.normalizedServices, this.serviceOverrides, roots, { redis, staticRoots, ...(staticLinkRoots && { staticLinkRoots }) });
536
846
  }
537
- async reconcileService(desired) {
847
+ reconcileService(desired) {
848
+ return this.withContainerReconciliation(desired, () => this.reconcileServiceLocked(desired));
849
+ }
850
+ async withContainerReconciliation(desired, operation) {
538
851
  // T#58: per-name lock around the whole inspect→decide→act loop.
539
- if (this.reconciling.has(desired.name)) {
852
+ if (this.ownershipFrozen || this.definitionChanging || this.retiredStacks.has(this.containerScope(desired)) || this.reconciling.has(desired.name)) {
540
853
  this.logger.debug({ service: desired.name }, 'Reconcile already in flight — skipping');
541
854
  return;
542
855
  }
543
856
  this.reconciling.add(desired.name);
544
857
  try {
545
- await this.reconcileServiceLocked(desired);
858
+ const task = operation();
859
+ this.reconcileTasks.set(desired.name, task);
860
+ await task;
546
861
  }
547
862
  finally {
548
863
  this.reconciling.delete(desired.name);
864
+ this.reconcileTasks.delete(desired.name);
549
865
  }
550
866
  }
551
867
  async reconcileServiceLocked(desired) {
552
- const actual = await getContainerState(desired.name);
868
+ const actual = await getContainerState(desired.name, { orThrow: true, fullId: true });
869
+ if (this.ownershipFrozen || this.definitionChanging || this.retiredStacks.has(this.containerScope(desired)))
870
+ return;
871
+ const id = actual && ownedContainerId(desired, actual);
553
872
  const action = this.computeAction(desired, actual);
554
873
  // A container that was created, started or recreated is listening on a
555
874
  // NEW socket. Applications already running hold pools pointing at the
@@ -568,12 +887,12 @@ export class InfrastructureService {
568
887
  break;
569
888
  case 'start':
570
889
  this.logger.info({ service: desired.name }, 'Starting existing service');
571
- await startContainer(action.containerId);
572
- await this.waitHealthy(desired.name);
890
+ await startContainer(id);
891
+ await this.waitHealthy(id);
573
892
  break;
574
893
  case 'recreate':
575
894
  this.logger.info({ service: desired.name, reason: action.reason }, 'Recreating service');
576
- await removeContainer(desired.name);
895
+ await removeContainer(id);
577
896
  await this.createAndStart(desired);
578
897
  break;
579
898
  case 'remove':
@@ -583,15 +902,48 @@ export class InfrastructureService {
583
902
  break;
584
903
  }
585
904
  // Update state
586
- const newState = await getContainerState(desired.name);
905
+ const newState = await getContainerState(desired.name, { orThrow: true, fullId: true });
587
906
  if (newState) {
588
- this.state.services[desired.name] = newState;
907
+ this.recordContainerObservation(desired, newState);
908
+ }
909
+ }
910
+ async recoverUnhealthyLocked(desired, actual, previous) {
911
+ // Recheck immediately before destruction: queued polls, recovery and
912
+ // replacement while inspecting must not authorize a stale decision.
913
+ const confirmed = await getContainerState(desired.name, { orThrow: true, fullId: true });
914
+ if (this.ownershipFrozen || this.definitionChanging || this.retiredStacks.has(this.containerScope(desired)))
915
+ return;
916
+ if (!confirmed || confirmed.containerId !== actual.containerId || confirmed.startedAt !== actual.startedAt ||
917
+ Date.parse(confirmed.healthCheck?.completedAt ?? '') < Date.parse(actual.healthCheck.completedAt) ||
918
+ !observeUnhealthy(previous, confirmed, Date.now()).restart) {
919
+ this.unhealthyEvidence.delete(desired.name);
920
+ this.logger.info({ service: desired.name }, 'Health recovery decision changed before restart; keeping the container');
921
+ }
922
+ else {
923
+ this.unhealthyEvidence.delete(desired.name);
924
+ const failures = (this.restartBackoff.get(desired.name)?.failures ?? 0) + 1;
925
+ const backoffMs = restartBackoffMs(failures);
926
+ // Count attempts until an observed healthy container recovers.
927
+ // A successful create alone cannot erase repeated health failure.
928
+ this.restartBackoff.set(desired.name, { failures, nextAttemptAt: Date.now() + backoffMs });
929
+ this.logger.warn({ service: desired.name, nativeCheck: confirmed.healthCheck, failures, backoffMs }, 'Confirmed sustained native health failure — restarting container');
930
+ try {
931
+ await removeContainer(ownedContainerId(desired, confirmed));
932
+ await this.createAndStart(desired);
933
+ }
934
+ catch (err) {
935
+ this.logger.error({ service: desired.name, error: describeError(err, 0, Object.values(desired.environment)), failures, backoffMs }, 'Health restart failed; recovery backoff retained');
936
+ }
589
937
  }
590
938
  }
591
939
  computeAction(desired, actual) {
940
+ containerResources(desired);
592
941
  if (!actual) {
593
942
  return { type: 'create', service: desired.name, config: desired };
594
943
  }
944
+ if (!containerResourcesMatch(desired, actual)) {
945
+ return { type: 'recreate', service: desired.name, config: desired, reason: 'resource limits differ from Docker inspection' };
946
+ }
595
947
  if (actual.status === 'running') {
596
948
  // Running but detached from all networks (OrbStack/dockerd-restart
597
949
  // artifact): the container is unreachable and its published ports are
@@ -638,7 +990,7 @@ export class InfrastructureService {
638
990
  // A container that is not running still carries the spec it was created
639
991
  // with, and `start` runs THAT spec. The drift checks above were only
640
992
  // asked of a running container, so one created wrong was started wrong
641
- // for as long as it existed: Nominatim on daos/test, created at 05:37
993
+ // for as long as it existed: Nominatim on sample/test, created at 05:37
642
994
  // with a mount the master had not rewritten, was «started» by every
643
995
  // reconcile after the fix that corrected its desired spec — «exec:
644
996
  // /opt/nominatim-tools/cis-entrypoint.sh: no such file» each time
@@ -673,6 +1025,7 @@ export class InfrastructureService {
673
1025
  };
674
1026
  }
675
1027
  async createAndStart(desired) {
1028
+ containerResources(desired);
676
1029
  // Ensure volumes exist
677
1030
  for (const vol of desired.volumes) {
678
1031
  if (!vol.source.startsWith('/') && !vol.source.startsWith('.')) {
@@ -690,41 +1043,30 @@ export class InfrastructureService {
690
1043
  this.logger.info({ service: desired.name }, 'Non-critical service — skipping health wait');
691
1044
  }
692
1045
  else {
693
- await this.waitHealthy(desired.name);
1046
+ await this.waitHealthy(id);
694
1047
  }
695
1048
  }
696
1049
  async waitHealthy(name) {
697
1050
  // Poll Docker health via async CLI — avoids blocking event loop
698
- const { exec } = await import('node:child_process');
1051
+ const { execFile } = await import('node:child_process');
699
1052
  const { promisify } = await import('node:util');
700
- const execAsync = promisify(exec);
1053
+ const inspect = promisify(execFile);
701
1054
  const startTime = Date.now();
702
- const pollInterval = 2000;
703
1055
  while (Date.now() - startTime < STARTUP_TIMEOUT) {
704
1056
  try {
705
- const { stdout } = await execAsync(`docker inspect --format='{{.State.Health.Status}}' ${name} 2>/dev/null || echo "none"`, { encoding: 'utf-8', timeout: 5000 });
706
- const output = (stdout ?? '').trim().replace(/'/g, '');
707
- if (output === 'healthy') {
708
- this.logger.info({ service: name, elapsed: Date.now() - startTime }, 'Service healthy');
1057
+ const { stdout } = await inspect('docker', ['inspect', '--format', '{{json .State}}', '--', name], { encoding: 'utf8', timeout: 5000 });
1058
+ const state = JSON.parse(stdout);
1059
+ if (state.Health?.Status === 'healthy' || (state.Status === 'running' && (!state.Health || state.Health.Status === 'none')))
1060
+ return;
1061
+ if (state.Status === 'exited' || state.Status === 'dead') {
1062
+ this.logger.warn({ service: name, status: state.Status }, 'Container not running');
709
1063
  return;
710
- }
711
- if (output === 'none' || output === '') {
712
- const { stdout: statusOut } = await execAsync(`docker inspect --format='{{.State.Status}}' ${name} 2>/dev/null || echo "missing"`, { encoding: 'utf-8', timeout: 5000 });
713
- const status = (statusOut ?? '').trim().replace(/'/g, '');
714
- if (status === 'running') {
715
- this.logger.info({ service: name, elapsed: Date.now() - startTime }, 'Service running (no health check)');
716
- return;
717
- }
718
- if (status === 'exited' || status === 'dead' || status === 'missing') {
719
- this.logger.warn({ service: name, status }, 'Container not running');
720
- return;
721
- }
722
1064
  }
723
1065
  }
724
1066
  catch {
725
1067
  // docker CLI failed — retry
726
1068
  }
727
- await new Promise((r) => setTimeout(r, pollInterval));
1069
+ await new Promise((r) => setTimeout(r, 2000));
728
1070
  }
729
1071
  this.logger.warn({ service: name, timeout: STARTUP_TIMEOUT }, 'Service did not become healthy within timeout');
730
1072
  }
@@ -738,41 +1080,40 @@ export class InfrastructureService {
738
1080
  * Generic post-provision: iterate all services, call preset hooks.
739
1081
  * Replaces hardcoded createPostgresDatabases() / createMinioBuckets().
740
1082
  */
741
- async runPresetPostProvisionHooks() {
1083
+ requiresPostProvision(desired) {
1084
+ const requirement = this.normalizedServices[desired.labels['omnitron.service'] ?? ''];
1085
+ if (!requirement?._preset)
1086
+ return false;
1087
+ const preset = this.presetRegistry?.get(requirement._preset);
1088
+ return !preset || Boolean(preset.postProvision);
1089
+ }
1090
+ recordContainerObservation(desired, actual) {
1091
+ this.state.services[desired.name] = retainProvisioningObservation(actual, this.state.services[desired.name], this.requiresPostProvision(desired));
1092
+ }
1093
+ invalidateChangedSetup(previous) {
1094
+ for (const container of this.desiredContainers) {
1095
+ const name = container.labels['omnitron.service'] ?? '';
1096
+ const state = this.state.services[container.name];
1097
+ if (state && this.requiresPostProvision(container) && !isDeepStrictEqual(previous[name], this.normalizedServices[name])) {
1098
+ state.provisioning = 'pending';
1099
+ state.error = 'Declared service setup changed and must be verified';
1100
+ this.state.ready = false;
1101
+ }
1102
+ }
1103
+ }
1104
+ async runPresetPostProvisionHooks(only) {
742
1105
  const { execFile } = await import('node:child_process');
743
1106
  const { promisify } = await import('node:util');
744
1107
  const execFileAsync = promisify(execFile);
745
- // A preset hook is what creates the databases inside Postgres and the
746
- // buckets inside MinIO — the containers are running either way, so a
747
- // failure here is invisible until an application cannot find its
748
- // database.
749
- //
750
- // `this.presetRegistry!` asserted a dependency the constructor declares
751
- // OPTIONAL, so a caller that did not pass one — which the type permits —
752
- // got `Cannot read properties of undefined (reading 'get')` from a line
753
- // that reads as internal, after every container was already up.
754
- // Measured on a node provisioning a stack, where the containers stayed
755
- // and the databases were never made.
756
- if (!this.presetRegistry) {
757
- const withPresets = Object.entries(this.normalizedServices)
758
- .filter(([, r]) => r._preset)
759
- .map(([name]) => name);
760
- if (withPresets.length > 0) {
761
- this.logger.error({ services: withPresets }, 'No preset registry, so post-provision steps were skipped — these services are running but their databases and buckets were not created');
762
- }
763
- return;
764
- }
765
1108
  for (const [serviceName, requirement] of Object.entries(this.normalizedServices)) {
766
1109
  if (!requirement._preset)
767
1110
  continue;
768
- const preset = this.presetRegistry.get(requirement._preset);
769
- if (!preset?.postProvision)
1111
+ const preset = this.presetRegistry?.get(requirement._preset);
1112
+ if (preset && !preset.postProvision)
770
1113
  continue;
771
- const container = this.desiredContainers.find((c) => c.name.endsWith(`-${serviceName}`));
772
- if (!container)
1114
+ const container = this.desiredContainers.find((c) => c.labels['omnitron.service'] === serviceName);
1115
+ if (!container || (only && container.name !== only.name))
773
1116
  continue;
774
- const cName = container.name;
775
- await waitForHealthy(cName, 30_000);
776
1117
  // Resolve secrets from requirement
777
1118
  const secrets = {};
778
1119
  if (requirement.secrets) {
@@ -780,24 +1121,47 @@ export class InfrastructureService {
780
1121
  secrets[k] = typeof v === 'string' ? v : '';
781
1122
  }
782
1123
  }
783
- const execInCont = async (command) => {
784
- const { stdout } = await execFileAsync('docker', ['exec', cName, ...command], {
785
- encoding: 'utf-8',
786
- timeout: 10_000,
787
- });
788
- return (stdout ?? '').trim();
789
- };
1124
+ const safeError = (error) => describeError(error, 0, Object.values(secrets));
790
1125
  try {
1126
+ const actual = await getContainerState(container.name, { orThrow: true, fullId: true });
1127
+ if (!actual)
1128
+ throw new Error('Declared service container is absent');
1129
+ const cName = ownedContainerId(container, actual);
1130
+ this.state.services[container.name] = { ...actual, provisioning: 'pending', error: 'Declared service setup is in progress' };
1131
+ if (!preset)
1132
+ throw new Error(`Preset '${requirement._preset}' is unavailable; declared service setup cannot be verified`);
1133
+ if (!await waitForHealthy(cName, 30_000))
1134
+ throw new Error('Container did not become healthy before declared service setup');
791
1135
  await preset.postProvision({
792
- containerName: cName,
1136
+ containerName: container.name,
793
1137
  userConfig: requirement._presetConfig ?? {},
794
1138
  secrets,
795
- execInContainer: execInCont,
1139
+ execInContainer: async (command) => {
1140
+ try {
1141
+ const { stdout } = await execFileAsync('docker', ['exec', cName, ...command], { encoding: 'utf-8', timeout: 10_000 });
1142
+ return (stdout ?? '').trim();
1143
+ }
1144
+ catch (error) {
1145
+ // Raw subprocess causes include credential arguments. Preserve only the sanitized cause.
1146
+ // eslint-disable-next-line preserve-caught-error
1147
+ throw new Error('Declared service setup command failed', { cause: safeError(error) });
1148
+ }
1149
+ },
796
1150
  logger: this.logger,
797
1151
  });
1152
+ const confirmed = await getContainerState(container.name, { orThrow: true, fullId: true });
1153
+ if (!confirmed || confirmed.status !== 'running' || confirmed.health === 'unhealthy' ||
1154
+ confirmed.containerId !== actual.containerId || confirmed.startedAt !== actual.startedAt)
1155
+ throw new Error('Container generation changed during declared service setup');
1156
+ this.state.services[container.name] = { ...confirmed, provisioning: 'ready' };
798
1157
  }
799
1158
  catch (err) {
800
- this.logger.error({ service: serviceName, preset: requirement._preset, error: err.message }, 'Post-provision hook failed');
1159
+ const error = `Post-provisioning '${serviceName}': ${safeError(err)}`;
1160
+ this.state.services[container.name] = {
1161
+ ...(this.state.services[container.name] ?? { name: container.name, image: container.image, status: 'not_found' }),
1162
+ provisioning: 'failed', error,
1163
+ };
1164
+ this.logger.error({ service: serviceName, preset: requirement._preset, error }, 'Post-provision hook failed');
801
1165
  }
802
1166
  }
803
1167
  }
@@ -838,6 +1202,8 @@ export class InfrastructureService {
838
1202
  // Private — Health Monitor (Self-Healing)
839
1203
  // ===========================================================================
840
1204
  startHealthMonitor() {
1205
+ if (this.monitoringRelinquished || this.ownershipFrozen || this.healthTimer)
1206
+ return;
841
1207
  this.healthTimer = setInterval(() => {
842
1208
  this.healthSweep().catch((err) => {
843
1209
  this.logger.error({ error: err.message }, 'Health sweep failed');
@@ -858,7 +1224,7 @@ export class InfrastructureService {
858
1224
  *
859
1225
  * `provision()` asked `needsControlPlaneDatabase`; the health sweep and the
860
1226
  * teardown asked only `usingGlobalOmnitronPg`. So on a node the sweep found
861
- * `<prefix>-pg` «not running» every 30 s and created it: daos/test got one on
1227
+ * `<prefix>-pg` «not running» every 30 s and created it: sample/test got one on
862
1228
  * 2026-09-20, and again on 2026-09-25 forty seconds after it was removed —
863
1229
  * on the default credentials, for a database nothing reads.
864
1230
  */
@@ -866,11 +1232,27 @@ export class InfrastructureService {
866
1232
  return this.needsControlPlaneDatabase && !this.usingGlobalOmnitronPg ? [this.omnitronPgContainer] : [];
867
1233
  }
868
1234
  async healthSweep() {
1235
+ if (this.ownershipFrozen || this.provisioning || this.activeSweeps.size)
1236
+ return;
1237
+ const task = this.healthSweepOwned();
1238
+ this.activeSweeps.add(task);
1239
+ try {
1240
+ await task;
1241
+ }
1242
+ finally {
1243
+ this.activeSweeps.delete(task);
1244
+ }
1245
+ }
1246
+ async healthSweepOwned() {
869
1247
  // The control-plane database alongside the app containers, where this
870
1248
  // service keeps one.
871
1249
  const allContainers = [...this.controlPlaneContainers(), ...this.desiredContainers];
872
1250
  for (const desired of allContainers) {
873
- const actual = await getContainerState(desired.name);
1251
+ const actual = await getContainerState(desired.name, { orThrow: true, fullId: true });
1252
+ if (this.ownershipFrozen || this.definitionChanging)
1253
+ return;
1254
+ if (this.retiredStacks.has(this.containerScope(desired)))
1255
+ continue;
874
1256
  // T#58: Docker's own `--restart=always` / `--restart=on-failure`
875
1257
  // policy puts the container into the 'restarting' state for the
876
1258
  // brief window between exit and re-entry. If we recreate during
@@ -879,11 +1261,12 @@ export class InfrastructureService {
879
1261
  // may end up duplicated under a renamed transient. Let Docker
880
1262
  // finish; the next 30s tick will see 'running' and skip.
881
1263
  if (actual?.status === 'restarting') {
1264
+ this.unhealthyEvidence.delete(desired.name);
882
1265
  this.logger.debug({ service: desired.name }, "Service is restarting via Docker's own policy — yielding to it (T#58)");
883
1266
  continue;
884
1267
  }
885
1268
  if (!actual || actual.status !== 'running') {
886
- this.unhealthyTicks.delete(desired.name);
1269
+ this.unhealthyEvidence.delete(desired.name);
887
1270
  // Circuit-breaker: while a service is inside its backoff window, skip
888
1271
  // the restart so a permanently-failing container can't hammer the
889
1272
  // supervisor every tick and starve the daemon's event loop.
@@ -895,7 +1278,6 @@ export class InfrastructureService {
895
1278
  this.logger.warn({ service: desired.name, status: actual?.status ?? 'not_found' }, 'Service not running — auto-restarting');
896
1279
  try {
897
1280
  await this.reconcileService(desired);
898
- this.restartBackoff.delete(desired.name);
899
1281
  }
900
1282
  catch (err) {
901
1283
  const failures = (this.restartBackoff.get(desired.name)?.failures ?? 0) + 1;
@@ -905,65 +1287,109 @@ export class InfrastructureService {
905
1287
  }
906
1288
  }
907
1289
  else if (actual.health === 'unhealthy') {
908
- const ticks = (this.unhealthyTicks.get(desired.name) ?? 0) + 1;
909
- this.unhealthyTicks.set(desired.name, ticks);
910
- if (ticks < UNHEALTHY_RESTART_THRESHOLD) {
911
- this.logger.warn({ service: desired.name, consecutiveUnhealthy: ticks, threshold: UNHEALTHY_RESTART_THRESHOLD }, 'Service unhealthy — waiting for confirmation before restart');
1290
+ const previous = this.unhealthyEvidence.get(desired.name);
1291
+ const observation = observeUnhealthy(previous, actual, Date.now());
1292
+ if (observation.evidence)
1293
+ this.unhealthyEvidence.set(desired.name, observation.evidence);
1294
+ else
1295
+ this.unhealthyEvidence.delete(desired.name);
1296
+ const backoff = this.restartBackoff.get(desired.name);
1297
+ if (backoff && Date.now() < backoff.nextAttemptAt) {
1298
+ this.logger.debug({ service: desired.name, retryInMs: backoff.nextAttemptAt - Date.now() }, 'Service unhealthy — recovery backoff remains active');
1299
+ }
1300
+ else if (!observation.restart) {
1301
+ this.logger.warn({ service: desired.name, reason: observation.reason, nativeCheck: actual.healthCheck }, 'Service unhealthy — waiting for confirmed native failure');
912
1302
  }
913
1303
  else {
914
- this.unhealthyTicks.delete(desired.name);
915
- this.logger.warn({ service: desired.name, consecutiveUnhealthy: ticks }, 'Service unhealthy past threshold — restarting container');
916
- try {
917
- await removeContainer(desired.name);
918
- await this.createAndStart(desired);
919
- }
920
- catch (err) {
921
- this.logger.error({ service: desired.name, error: err.message }, 'Health restart failed');
922
- }
1304
+ await this.withContainerReconciliation(desired, () => this.recoverUnhealthyLocked(desired, actual, previous));
923
1305
  }
924
1306
  }
925
1307
  else {
926
- // Healthy or starting — clear any accumulated unhealthy ticks and
927
- // reset the restart circuit-breaker (it may have recovered on its own
928
- // via Docker's restart policy).
929
- this.unhealthyTicks.delete(desired.name);
930
- this.restartBackoff.delete(desired.name);
1308
+ // A starting container is not evidence of recovery. Retain backoff
1309
+ // until a running container is healthy (or declares no native probe).
1310
+ this.unhealthyEvidence.delete(desired.name);
1311
+ if ((actual.health === 'healthy' || actual.health === 'none') && this.state.services[desired.name]?.provisioning !== 'failed')
1312
+ this.restartBackoff.delete(desired.name);
931
1313
  }
932
1314
  // Update state
933
- const newState = await getContainerState(desired.name);
1315
+ const newState = await getContainerState(desired.name, { orThrow: true, fullId: true });
934
1316
  if (newState) {
935
- this.state.services[desired.name] = newState;
1317
+ this.recordContainerObservation(desired, newState);
1318
+ const state = this.state.services[desired.name];
1319
+ if (state.status === 'running' && state.health !== 'unhealthy' &&
1320
+ (state.provisioning === 'pending' || state.provisioning === 'failed') &&
1321
+ Date.now() >= (this.restartBackoff.get(desired.name)?.nextAttemptAt ?? 0)) {
1322
+ await this.runPresetPostProvisionHooks(desired);
1323
+ if (this.state.services[desired.name]?.provisioning === 'ready') {
1324
+ if (this.state.services[desired.name]?.health === 'healthy' || this.state.services[desired.name]?.health === 'none')
1325
+ this.restartBackoff.delete(desired.name);
1326
+ }
1327
+ else {
1328
+ const failures = (this.restartBackoff.get(desired.name)?.failures ?? 0) + 1;
1329
+ this.restartBackoff.set(desired.name, { failures, nextAttemptAt: Date.now() + restartBackoffMs(failures) });
1330
+ }
1331
+ }
936
1332
  }
937
1333
  }
1334
+ this.state.ready = summariseProvisioning(this.desiredContainers, this.state.services).ready;
938
1335
  this.state.lastReconciled = new Date().toISOString();
939
1336
  }
940
1337
  }
941
- /**
942
- * T#76: shallow equality on the fields that drive container
943
- * identity. Two declarations that differ only in incidental fields
944
- * (label maps, restart policy adornments) should still be treated
945
- * as the same shared container; differences in image / env / port
946
- * mapping legitimately deserve an operator-facing warning.
947
- */
948
- function shallowContainerEqual(a, b) {
949
- if (a.image !== b.image)
950
- return false;
951
- if (!sameRecord(a.environment, b.environment))
952
- return false;
953
- if (a.ports.length !== b.ports.length)
954
- return false;
955
- for (let i = 0; i < a.ports.length; i++) {
956
- if (a.ports[i].host !== b.ports[i].host || a.ports[i].container !== b.ports[i].container)
957
- return false;
958
- }
959
- if (a.volumes.length !== b.volumes.length)
960
- return false;
961
- for (let i = 0; i < a.volumes.length; i++) {
962
- if (a.volumes[i].source !== b.volumes[i].source || a.volumes[i].target !== b.volumes[i].target)
963
- return false;
964
- }
965
- return true;
966
- }
1338
+ __decorate([
1339
+ RecoveryMutation(),
1340
+ __metadata("design:type", Function),
1341
+ __metadata("design:paramtypes", [Array]),
1342
+ __metadata("design:returntype", void 0)
1343
+ ], InfrastructureService.prototype, "addAppContainers", null);
1344
+ __decorate([
1345
+ RecoveryMutation(),
1346
+ __metadata("design:type", Function),
1347
+ __metadata("design:paramtypes", [InfrastructureService]),
1348
+ __metadata("design:returntype", Promise)
1349
+ ], InfrastructureService.prototype, "provision", null);
1350
+ __decorate([
1351
+ RecoveryMutation(),
1352
+ __metadata("design:type", Function),
1353
+ __metadata("design:paramtypes", [InfrastructureService]),
1354
+ __metadata("design:returntype", Promise)
1355
+ ], InfrastructureService.prototype, "refreshOwnershipFrom", null);
1356
+ __decorate([
1357
+ RecoveryMutation(),
1358
+ __metadata("design:type", Function),
1359
+ __metadata("design:paramtypes", []),
1360
+ __metadata("design:returntype", Promise)
1361
+ ], InfrastructureService.prototype, "relinquishMonitoring", null);
1362
+ __decorate([
1363
+ RecoveryMutation(),
1364
+ __metadata("design:type", Function),
1365
+ __metadata("design:paramtypes", [Object]),
1366
+ __metadata("design:returntype", Promise)
1367
+ ], InfrastructureService.prototype, "retireStack", null);
1368
+ __decorate([
1369
+ RecoveryMutation(),
1370
+ __metadata("design:type", Function),
1371
+ __metadata("design:paramtypes", []),
1372
+ __metadata("design:returntype", Promise)
1373
+ ], InfrastructureService.prototype, "teardown", null);
1374
+ __decorate([
1375
+ RecoveryMutation(),
1376
+ __metadata("design:type", Function),
1377
+ __metadata("design:paramtypes", [Map,
1378
+ Map, Object, Map]),
1379
+ __metadata("design:returntype", void 0)
1380
+ ], InfrastructureService.prototype, "setConfigRoots", null);
1381
+ __decorate([
1382
+ RecoveryMutation(),
1383
+ __metadata("design:type", Function),
1384
+ __metadata("design:paramtypes", [Object]),
1385
+ __metadata("design:returntype", Promise)
1386
+ ], InfrastructureService.prototype, "reconcileServiceLocked", null);
1387
+ __decorate([
1388
+ RecoveryMutation(),
1389
+ __metadata("design:type", Function),
1390
+ __metadata("design:paramtypes", [Object, Object, Object]),
1391
+ __metadata("design:returntype", Promise)
1392
+ ], InfrastructureService.prototype, "recoverUnhealthyLocked", null);
967
1393
  function sameRecord(a, b) {
968
1394
  const ka = Object.keys(a ?? {});
969
1395
  const kb = Object.keys(b ?? {});