@omnitron-dev/omnitron 0.3.5 → 0.4.6

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 (267) hide show
  1. package/README.md +296 -6
  2. package/bin/{pnpmfile-sdk.mjs → pnpmfile-sdk.js} +13 -0
  3. package/bin/sdk.d.ts +19 -0
  4. package/bin/sdk.js +932 -0
  5. package/dist/BUILD.json +2 -2
  6. package/dist/cli/omnitron.js +14 -6
  7. package/dist/cli/omnitron.js.map +1 -1
  8. package/dist/commands/stack.d.ts +2 -5
  9. package/dist/commands/stack.d.ts.map +1 -1
  10. package/dist/commands/stack.js +32 -0
  11. package/dist/commands/stack.js.map +1 -1
  12. package/dist/commands/status.d.ts.map +1 -1
  13. package/dist/commands/status.js +1 -0
  14. package/dist/commands/status.js.map +1 -1
  15. package/dist/daemon/daemon-client.d.ts +3 -15
  16. package/dist/daemon/daemon-client.d.ts.map +1 -1
  17. package/dist/daemon/daemon-client.js +4 -0
  18. package/dist/daemon/daemon-client.js.map +1 -1
  19. package/dist/daemon/daemon.d.ts +5 -11
  20. package/dist/daemon/daemon.d.ts.map +1 -1
  21. package/dist/daemon/daemon.js +28 -42
  22. package/dist/daemon/daemon.js.map +1 -1
  23. package/dist/daemon/daemon.rpc-service.d.ts +3 -15
  24. package/dist/daemon/daemon.rpc-service.d.ts.map +1 -1
  25. package/dist/daemon/daemon.rpc-service.js +27 -3
  26. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  27. package/dist/daemon/darwin-owner-evidence.js +1 -1
  28. package/dist/daemon/darwin-owner-evidence.js.map +1 -1
  29. package/dist/daemon/execution-capabilities.d.ts +1 -1
  30. package/dist/daemon/execution-capabilities.d.ts.map +1 -1
  31. package/dist/daemon/execution-capabilities.js +3 -3
  32. package/dist/daemon/execution-capabilities.js.map +1 -1
  33. package/dist/daemon/execution-client.d.ts +4 -0
  34. package/dist/daemon/execution-client.d.ts.map +1 -1
  35. package/dist/daemon/execution-client.js +28 -6
  36. package/dist/daemon/execution-client.js.map +1 -1
  37. package/dist/daemon/execution-host.d.ts +4 -11
  38. package/dist/daemon/execution-host.d.ts.map +1 -1
  39. package/dist/daemon/execution-host.js +3 -9
  40. package/dist/daemon/execution-host.js.map +1 -1
  41. package/dist/daemon/execution-owner.d.ts.map +1 -1
  42. package/dist/daemon/execution-owner.js +2 -16
  43. package/dist/daemon/execution-owner.js.map +1 -1
  44. package/dist/daemon/execution-shutdown.d.ts +1 -1
  45. package/dist/daemon/execution-shutdown.d.ts.map +1 -1
  46. package/dist/daemon/managed-owner-build.d.ts +4 -0
  47. package/dist/daemon/managed-owner-build.d.ts.map +1 -1
  48. package/dist/daemon/managed-owner-build.js +14 -2
  49. package/dist/daemon/managed-owner-build.js.map +1 -1
  50. package/dist/daemon/managed-runtime.js +1 -1
  51. package/dist/daemon/managed-runtime.js.map +1 -1
  52. package/dist/daemon/owner-reconciliation.d.ts.map +1 -1
  53. package/dist/daemon/owner-reconciliation.js +1 -2
  54. package/dist/daemon/owner-reconciliation.js.map +1 -1
  55. package/dist/daemon/system-guardian-cgroup.js +1 -1
  56. package/dist/daemon/system-guardian-cgroup.js.map +1 -1
  57. package/dist/infrastructure/existing-containers.d.ts +25 -0
  58. package/dist/infrastructure/existing-containers.d.ts.map +1 -0
  59. package/dist/infrastructure/existing-containers.js +183 -0
  60. package/dist/infrastructure/existing-containers.js.map +1 -0
  61. package/dist/infrastructure/infrastructure.service.d.ts +14 -1
  62. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  63. package/dist/infrastructure/infrastructure.service.js +118 -9
  64. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  65. package/dist/infrastructure/stack-infra-manager.d.ts +8 -2
  66. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  67. package/dist/infrastructure/stack-infra-manager.js +46 -9
  68. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  69. package/dist/monitoring/log-journal.d.ts.map +1 -1
  70. package/dist/monitoring/log-journal.js +1 -2
  71. package/dist/monitoring/log-journal.js.map +1 -1
  72. package/dist/operations.d.ts +1 -0
  73. package/dist/operations.d.ts.map +1 -1
  74. package/dist/operations.js +1 -0
  75. package/dist/operations.js.map +1 -1
  76. package/dist/orchestrator/bootstrap-loader.d.ts +2 -0
  77. package/dist/orchestrator/bootstrap-loader.d.ts.map +1 -1
  78. package/dist/orchestrator/bootstrap-loader.js +2 -1
  79. package/dist/orchestrator/bootstrap-loader.js.map +1 -1
  80. package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
  81. package/dist/orchestrator/classic-launcher.js +2 -1
  82. package/dist/orchestrator/classic-launcher.js.map +1 -1
  83. package/dist/orchestrator/execution-contract.d.ts +2 -3
  84. package/dist/orchestrator/execution-contract.d.ts.map +1 -1
  85. package/dist/orchestrator/file-watcher.d.ts +11 -23
  86. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  87. package/dist/orchestrator/file-watcher.js +57 -42
  88. package/dist/orchestrator/file-watcher.js.map +1 -1
  89. package/dist/orchestrator/orchestrator.service.d.ts +10 -5
  90. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  91. package/dist/orchestrator/orchestrator.service.js +117 -20
  92. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  93. package/dist/project/bootstrap-metadata.d.ts +1 -1
  94. package/dist/project/bootstrap-metadata.d.ts.map +1 -1
  95. package/dist/project/bootstrap-metadata.js +3 -2
  96. package/dist/project/bootstrap-metadata.js.map +1 -1
  97. package/dist/project/node-stack-stop.d.ts +2 -1
  98. package/dist/project/node-stack-stop.d.ts.map +1 -1
  99. package/dist/project/node-stack-stop.js +5 -1
  100. package/dist/project/node-stack-stop.js.map +1 -1
  101. package/dist/release/closure-library-path.d.ts +8 -2
  102. package/dist/release/closure-library-path.d.ts.map +1 -1
  103. package/dist/release/closure-library-path.js +72 -28
  104. package/dist/release/closure-library-path.js.map +1 -1
  105. package/dist/release/local-installation.d.ts +2 -0
  106. package/dist/release/local-installation.d.ts.map +1 -1
  107. package/dist/release/local-installation.js +1 -1
  108. package/dist/release/local-installation.js.map +1 -1
  109. package/dist/release/portable-archive.d.ts +3 -0
  110. package/dist/release/portable-archive.d.ts.map +1 -1
  111. package/dist/release/portable-archive.js +13 -7
  112. package/dist/release/portable-archive.js.map +1 -1
  113. package/dist/release/registry-framework.d.ts +25 -0
  114. package/dist/release/registry-framework.d.ts.map +1 -1
  115. package/dist/release/registry-framework.js +51 -3
  116. package/dist/release/registry-framework.js.map +1 -1
  117. package/dist/release/target-runtime.d.ts +4 -0
  118. package/dist/release/target-runtime.d.ts.map +1 -1
  119. package/dist/release/target-runtime.js +9 -0
  120. package/dist/release/target-runtime.js.map +1 -1
  121. package/dist/services/host-upgrade.d.ts +2 -0
  122. package/dist/services/host-upgrade.d.ts.map +1 -1
  123. package/dist/services/host-upgrade.js +6 -2
  124. package/dist/services/host-upgrade.js.map +1 -1
  125. package/dist/services/infrastructure.rpc-service.d.ts +8 -0
  126. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  127. package/dist/services/infrastructure.rpc-service.js +90 -10
  128. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  129. package/dist/services/kernel-rollout.service.d.ts.map +1 -1
  130. package/dist/services/kernel-rollout.service.js +1 -2
  131. package/dist/services/kernel-rollout.service.js.map +1 -1
  132. package/dist/services/migration-process.d.ts +1 -0
  133. package/dist/services/migration-process.d.ts.map +1 -1
  134. package/dist/services/migration-process.js +4 -2
  135. package/dist/services/migration-process.js.map +1 -1
  136. package/dist/services/pipeline-definition.d.ts.map +1 -1
  137. package/dist/services/pipeline-definition.js +32 -6
  138. package/dist/services/pipeline-definition.js.map +1 -1
  139. package/dist/services/pipeline.service.d.ts +7 -1
  140. package/dist/services/pipeline.service.d.ts.map +1 -1
  141. package/dist/services/pipeline.service.js +106 -13
  142. package/dist/services/pipeline.service.js.map +1 -1
  143. package/dist/services/project.rpc-service.d.ts +6 -5
  144. package/dist/services/project.rpc-service.d.ts.map +1 -1
  145. package/dist/services/project.rpc-service.js +13 -0
  146. package/dist/services/project.rpc-service.js.map +1 -1
  147. package/dist/services/project.service.d.ts +24 -6
  148. package/dist/services/project.service.d.ts.map +1 -1
  149. package/dist/services/project.service.js +327 -59
  150. package/dist/services/project.service.js.map +1 -1
  151. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  152. package/dist/services/remote-deployer.service.js +3 -0
  153. package/dist/services/remote-deployer.service.js.map +1 -1
  154. package/dist/shared/dto/backend.d.ts +3 -0
  155. package/dist/shared/dto/backend.d.ts.map +1 -1
  156. package/dist/shared/dto/backend.js.map +1 -1
  157. package/dist/shared/dto/pipelines.d.ts +54 -5
  158. package/dist/shared/dto/pipelines.d.ts.map +1 -1
  159. package/dist/shared/dto/pipelines.js +0 -7
  160. package/dist/shared/dto/pipelines.js.map +1 -1
  161. package/dist/shared/dto/project.d.ts +60 -0
  162. package/dist/shared/dto/project.d.ts.map +1 -1
  163. package/dist/shared/dto/services.d.ts +26 -17
  164. package/dist/shared/dto/services.d.ts.map +1 -1
  165. package/dist/shared/dto/services.js.map +1 -1
  166. package/dist/workers/system-worker-manager.d.ts +1 -2
  167. package/dist/workers/system-worker-manager.d.ts.map +1 -1
  168. package/dist/workers/system-worker-manager.js +5 -3
  169. package/dist/workers/system-worker-manager.js.map +1 -1
  170. package/package.json +17 -16
  171. package/webapp/dist/BUILD.json +2 -2
  172. package/webapp/dist/assets/{access-DUjabwNX.js → access-B2gXuoMG.js} +1 -1
  173. package/webapp/dist/assets/{access-BvKK9dEv.js → access-I0f72P9m.js} +1 -1
  174. package/webapp/dist/assets/{admin-data-table-BKSDI8sU.js → admin-data-table-CAEL2f-m.js} +1 -1
  175. package/webapp/dist/assets/{alert-uBG6r9NW.js → alert-BdJ2uaY0.js} +1 -1
  176. package/webapp/dist/assets/{alerts-CzN6OqX5.js → alerts-DeVkMXWo.js} +1 -1
  177. package/webapp/dist/assets/{apps-G_Lm6m4F.js → apps-9SuDvyGQ.js} +1 -1
  178. package/webapp/dist/assets/{audit-CLMpdBzG.js → audit-DT8cY7Ys.js} +1 -1
  179. package/webapp/dist/assets/backend-status.store-BbBE9cn8.js +4 -0
  180. package/webapp/dist/assets/{card-DkH32gMY.js → card-DaUEmUI5.js} +1 -1
  181. package/webapp/dist/assets/{chart-BpGXlCJc.js → chart-BKXP2ter.js} +1 -1
  182. package/webapp/dist/assets/{client-DFnuv2z3.js → client-CgyTwq9g.js} +1 -1
  183. package/webapp/dist/assets/{code-editor-DK6Tmmxv.js → code-editor-JVuQ4m-z.js} +1 -1
  184. package/webapp/dist/assets/{comparison-bars-BtC0dHjF.js → comparison-bars-Ds5Dt1oj.js} +1 -1
  185. package/webapp/dist/assets/{confirm-dialog-BbGsAz7_.js → confirm-dialog-BayExVbF.js} +1 -1
  186. package/webapp/dist/assets/{console-keyboard-D3YCA0yU.js → console-keyboard-uSLt92dB.js} +1 -1
  187. package/webapp/dist/assets/{containers-BsFwprq4.js → containers-DkXTgcrY.js} +1 -1
  188. package/webapp/dist/assets/{controls-C5W8gHU4.js → controls-CqeGPnaF.js} +1 -1
  189. package/webapp/dist/assets/{dashboard-BN7rKE5n.js → dashboard-By5yPuOf.js} +1 -1
  190. package/webapp/dist/assets/{dashboard-builder-BXFxWjXP.js → dashboard-builder-C0hvBwkd.js} +1 -1
  191. package/webapp/dist/assets/{deploy-progress-CUUwlYtQ.js → deploy-progress-B39cvvCE.js} +1 -1
  192. package/webapp/dist/assets/{deploy-release-dialog-58lGZDNk.js → deploy-release-dialog-CnzaO_xL.js} +1 -1
  193. package/webapp/dist/assets/{deployments-DEzjHerg.js → deployments-BXP943hA.js} +1 -1
  194. package/webapp/dist/assets/{detail-pXPk4O0E.js → detail-B84RgiOb.js} +1 -1
  195. package/webapp/dist/assets/{detail-Dj3gxaH0.js → detail-CVXDks9-.js} +1 -1
  196. package/webapp/dist/assets/{detail-CBn9pjJU.js → detail-D9DixtaK.js} +1 -1
  197. package/webapp/dist/assets/{empty-content-7jOFhG4C.js → empty-content-eyDOuOVp.js} +1 -1
  198. package/webapp/dist/assets/{error-boundary-CLLI8PWw.js → error-boundary-CQmDr_HS.js} +1 -1
  199. package/webapp/dist/assets/{event-fields-CiyqrRO8.js → event-fields-C7p2a2HY.js} +1 -1
  200. package/webapp/dist/assets/{files-DigwXndm.js → files-BsfGT3t6.js} +2 -2
  201. package/webapp/dist/assets/{icons-OboZgWSt.js → icons-B9Ct8PJ9.js} +1 -1
  202. package/webapp/dist/assets/index-BEfv96EF.js +1 -0
  203. package/webapp/dist/assets/{label-B1SF0RTL.js → label-avMhe08g.js} +1 -1
  204. package/webapp/dist/assets/{log-level-filter-Bcn31D1F.js → log-level-filter-oaUGdbpk.js} +1 -1
  205. package/webapp/dist/assets/{logs-DrsBbLfb.js → logs-iC1OEDv3.js} +1 -1
  206. package/webapp/dist/assets/{metric-chart-M-kI-XOt.js → metric-chart-CSa_qv4F.js} +1 -1
  207. package/webapp/dist/assets/{metrics-D5cDZTEo.js → metrics-CKCmcGKw.js} +1 -1
  208. package/webapp/dist/assets/{mui-Cd711nOk.js → mui-B3fJdIMc.js} +1 -1
  209. package/webapp/dist/assets/{mui-CdB_p2lt.js → mui-Bdr6Ks5j.js} +1 -1
  210. package/webapp/dist/assets/{mui-Db5J-QUd.js → mui-CADnFGCx.js} +1 -1
  211. package/webapp/dist/assets/{mui-AnEgAVjz.js → mui-CMWGTMXv.js} +1 -1
  212. package/webapp/dist/assets/{mui-DyT2n1lx.js → mui-CN3dT7bb.js} +1 -1
  213. package/webapp/dist/assets/{mui-BwsIrivo.js → mui-CPEkFAPo.js} +1 -1
  214. package/webapp/dist/assets/{mui-dLCwWoMw.js → mui-D3qAWvfZ.js} +1 -1
  215. package/webapp/dist/assets/{mui-D5m7fDCh.js → mui-D7tBU80e.js} +1 -1
  216. package/webapp/dist/assets/{mui-59N0OVRa.js → mui-DaJavAoc.js} +1 -1
  217. package/webapp/dist/assets/{mui-BXSXx9c9.js → mui-SNRRJ_vi.js} +1 -1
  218. package/webapp/dist/assets/{nodes-CwwZZuu4.js → nodes-DtLyXH0V.js} +1 -1
  219. package/webapp/dist/assets/{operation-status-Bm1x1wTz.js → operation-status-DHyYOT7G.js} +1 -1
  220. package/webapp/dist/assets/{page-breadcrumbs-fR7Jmpp4.js → page-breadcrumbs-3R8RZ3nA.js} +1 -1
  221. package/webapp/dist/assets/pipelines-Do2NAAqK.js +3 -0
  222. package/webapp/dist/assets/{project.store-DuCgv6Eq.js → project.store-D5IR3fo9.js} +1 -1
  223. package/webapp/dist/assets/{projects-TBAdpCeX.js → projects-BqlGbzeG.js} +1 -1
  224. package/webapp/dist/assets/{realtime.store-hfxZD2DU.js → realtime.store-C8D235-B.js} +1 -1
  225. package/webapp/dist/assets/{release-bits-BJ6i23y0.js → release-bits-IehuBssK.js} +1 -1
  226. package/webapp/dist/assets/{release-build-panel-BNXkwNE1.js → release-build-panel-C48hP_9w.js} +1 -1
  227. package/webapp/dist/assets/{release-deployment-state-gN8ZT3aq.js → release-deployment-state-BfmxZP4Y.js} +1 -1
  228. package/webapp/dist/assets/{releases-CXXKUh-v.js → releases-Cm0RV5Xu.js} +1 -1
  229. package/webapp/dist/assets/{search-input-C0MHI8vO.js → search-input-SWD1dXxD.js} +1 -1
  230. package/webapp/dist/assets/settings-DwuEPQGg.js +1 -0
  231. package/webapp/dist/assets/sign-in-CQ-WeS5A.js +1 -0
  232. package/webapp/dist/assets/{skeleton-BmWDJWF9.js → skeleton-BnVxAoeX.js} +1 -1
  233. package/webapp/dist/assets/{snackbar-DSPmjMyi.js → snackbar-CRX6eqRT.js} +1 -1
  234. package/webapp/dist/assets/{stack-health-status-BIv2C10x.js → stack-health-status-DfErRNb1.js} +1 -1
  235. package/webapp/dist/assets/{stack-start-notice-D-AH_bzn.js → stack-start-notice-NkYDjR-f.js} +1 -1
  236. package/webapp/dist/assets/{stacks-WY_ynkON.js → stacks-BOGCfW90.js} +1 -1
  237. package/webapp/dist/assets/{store-bqUBn2A4.js → store-DtTtbc9H.js} +1 -1
  238. package/webapp/dist/assets/{system-info-DXMwo6gl.js → system-info-Cw-xywgI.js} +1 -1
  239. package/webapp/dist/assets/{table-BOWT6Y9d.js → table-D-so_B1p.js} +1 -1
  240. package/webapp/dist/assets/{table-viewport-Bp4pq-c_.js → table-viewport-DdZ1yAKm.js} +1 -1
  241. package/webapp/dist/assets/{tabs-k5NPGLnJ.js → tabs-DGqBkXh_.js} +1 -1
  242. package/webapp/dist/assets/{terminal-QWBau-Us.js → terminal-Bbl0XNeB.js} +1 -1
  243. package/webapp/dist/assets/{topology-C_Qp1RqW.js → topology-DmrRy7nN.js} +1 -1
  244. package/webapp/dist/assets/{topology-metadata-dialog-BivuU2y6.js → topology-metadata-dialog-Dpfp4YF1.js} +1 -1
  245. package/webapp/dist/assets/{traces-By0rdfDC.js → traces-CKHsOabJ.js} +1 -1
  246. package/webapp/dist/assets/{use-stack-context-8yaHaN8L.js → use-stack-context-BuraYaeY.js} +1 -1
  247. package/webapp/dist/assets/webapp-D8h_eabt.js +35 -0
  248. package/webapp/dist/console-version.json +1 -1
  249. package/webapp/dist/index.html +34 -34
  250. package/webapp/dist/logo.svg +1 -80
  251. package/bin/sdk.d.mts +0 -8
  252. package/bin/sdk.mjs +0 -580
  253. package/dist/monitoring/process-lifetime.d.ts +0 -11
  254. package/dist/monitoring/process-lifetime.d.ts.map +0 -1
  255. package/dist/monitoring/process-lifetime.js +0 -45
  256. package/dist/monitoring/process-lifetime.js.map +0 -1
  257. package/dist/shared/host-boot-identity.d.ts +0 -12
  258. package/dist/shared/host-boot-identity.d.ts.map +0 -1
  259. package/dist/shared/host-boot-identity.js +0 -89
  260. package/dist/shared/host-boot-identity.js.map +0 -1
  261. package/webapp/dist/assets/index-Bo9An3pJ.js +0 -1
  262. package/webapp/dist/assets/omnitron-logo-koMCbsCv.js +0 -1
  263. package/webapp/dist/assets/pipelines-BrfTjf6Y.js +0 -3
  264. package/webapp/dist/assets/settings-B3egRvbI.js +0 -1
  265. package/webapp/dist/assets/sign-in-9q-Nfy83.js +0 -1
  266. package/webapp/dist/assets/webapp-BO_WoB_z.js +0 -35
  267. package/webapp/dist/favicon.png +0 -0
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{B as r,V as i,g as a,h as o,x as ee,z as s}from"./client-DFnuv2z3.js";import{F as c,H as l,I as te,Q as u,V as d,X as f,Y as ne,Z as p,at as m,c as h,ct as g,d as re,f as _,g as v,h as ie,m as y,ot as b,p as ae,s as oe,st as x}from"./mui-BXSXx9c9.js";import{B as S,a as se,o as C,z as w}from"./mui-Cd711nOk.js";import{l as T,u as E}from"./mui-AnEgAVjz.js";import{_ as D,v as O}from"./mui-BwsIrivo.js";import{h as ce,i as k,m as A,t as j}from"./project.store-DuCgv6Eq.js";import{G as M,m as le}from"./icons-OboZgWSt.js";import{i as ue,n as N,r as P,t as de}from"./deploy-progress-CUUwlYtQ.js";import{l as fe,o as pe,r as me,u as F}from"./release-bits-BJ6i23y0.js";function I({open:e,onClose:t,project:n,release:o,stack:s}){let l=i(),te=r(),u=e=>{let r=k.getState();r.activeProject!==n&&r.selectProject(n,te.pathname),t(),l(`/stacks/${encodeURIComponent(e)}`)},f=k(e=>e.stacksByProject),h=k(e=>e.fetchStacks),g=k(e=>e.startStack),_=f[n]??[],v=k(e=>e.stackReadErrors[n]),[y,b]=(0,L.useState)(!1),[S,C]=(0,L.useState)([]),[E,O]=(0,L.useState)(``),[A,j]=(0,L.useState)(s??``),[M,N]=(0,L.useState)(null),[P,F]=(0,L.useState)(!1),[I,z]=(0,L.useState)(!1),B=(0,L.useRef)(0),[V,H]=(0,L.useState)(!1),[U,W]=(0,L.useState)({records:[],available:!0}),[G,K]=(0,L.useState)(!1),[q,J]=(0,L.useState)(null);(0,L.useEffect)(()=>{e&&_.length===0&&h(n)},[e,n,_.length,h]),(0,L.useEffect)(()=>{if(!e||o)return;let t=!0;return b(!0),C([]),O(``),ue.list().then(({releases:e})=>{if(!t)return;let r=e.filter(e=>e.project===n&&e.complete);C(r)}).catch(e=>{t&&J(`The release store could not be read: ${e.message}`)}).finally(()=>{t&&b(!1)}),()=>{t=!1}},[e,o,n]);let Y=o??S.find(e=>e.id===E)??null,X=o?.id??E.trim(),Z=JSON.stringify([n,A,X]),Q=M?.key===Z?M:null;(0,L.useEffect)(()=>{e&&(j(s??``),N(null),J(null))},[e,s,o?.id]),(0,L.useEffect)(()=>{let t=++B.current;if(N(null),z(!1),H(!1),W({records:[],available:!0}),K(!1),J(null),F(!1),!e||!X||!A)return;let r=!0;F(!0);let i=window.setTimeout(()=>{a(`checkRelease`,{project:n,stack:A,release:X}).then(e=>{r&&N({...e,key:Z})}).catch(e=>{r&&N({key:Z,ok:!1,because:`The daemon could not answer: ${e.message}`})}).finally(()=>{r&&F(!1)})},250);return()=>{r=!1,B.current=t+1,window.clearTimeout(i)}},[e,n,A,X,Z]);let he=async()=>{let e=B.current;z(!0),J(null);try{let t=await a(`checkRelease`,{project:n,stack:A,release:X,prepare:!0});e===B.current&&N({...t,key:Z})}catch(t){e===B.current&&J(t.message)}finally{e===B.current&&z(!1)}},ge=async()=>{if(!X||!A||!Q?.ok)return;H(!0),J(null);let e=B.current;try{let t=await ce({project:n,stack:A,release:X},()=>g(n,A,{release:X}),()=>ee.getDeployProgress({project:n,stack:A}),(t,n,r)=>{B.current===e&&W({records:t,available:r})});if(B.current!==e)return;if(t.state!==`confirmed`){J(t.message),K(t.state!==`failed`);return}u(A)}catch(t){B.current===e&&J(t.message)}finally{B.current===e&&H(!1)}},_e=_.find(e=>e.name===A),$=Q?.state===`unprepared`||Q?.state===`missing`,ve=_e?.config?.release?.mode===`required`;return(0,R.jsxs)(ie,{open:e,onClose:V?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,R.jsx)(oe,{children:`Deploy a release`}),(0,R.jsx)(re,{children:(0,R.jsxs)(D,{spacing:2.5,sx:{mt:1},children:[!o&&(0,R.jsx)(ne,{freeSolo:!0,size:`small`,disabled:V||I,loading:y,options:S.map(e=>e.id),value:E||null,inputValue:E,onChange:(e,t)=>O(t??``),onInputChange:(e,t)=>O(t),renderInput:e=>(0,R.jsx)(se,{...e,label:`Release ID`,placeholder:`Select or enter a release ID`})}),Y&&(0,R.jsxs)(d,{children:[(0,R.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600},children:Y.id}),(0,R.jsxs)(D,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mt:.75},children:[(0,R.jsx)(me,{projectCommit:Y.projectCommit,omniCommit:Y.omniCommit,onRemote:Y.onRemote,project:Y.project}),(0,R.jsx)(p,{size:`small`,variant:`outlined`,label:`${Y.artifacts.count} app${Y.artifacts.count===1?``:`s`}`,sx:{height:20,fontSize:11}}),Y.statics&&(0,R.jsx)(p,{size:`small`,variant:`outlined`,label:`statics: ${Y.statics.stack}`,sx:{height:20,fontSize:11}})]})]}),(0,R.jsxs)(se,{select:!0,label:`Stack`,value:A,onChange:e=>j(e.target.value),size:`small`,fullWidth:!0,disabled:V||I,helperText:_e?.type===`local`?`Local stacks keep the selected release across restarts. Stop their applications before changing it.`:void 0,children:[_.length===0&&(0,R.jsx)(T,{disabled:!0,value:``,children:v?`Stack inventory unavailable`:f[n]?`This project has no stacks`:`Reading stack inventory…`}),_.map(e=>(0,R.jsx)(T,{value:e.name,disabled:!!e.config?.managedOrigin,children:(0,R.jsxs)(D,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,R.jsx)(w,{variant:`body2`,children:e.name}),(0,R.jsx)(p,{label:e.type,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}}),e.config?.release?.mode===`required`&&(0,R.jsx)(p,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,R.jsx)(d,{sx:{flex:1}}),(0,R.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:e.status})]})},e.name))]}),Y&&Y.gates.total>0&&(0,R.jsxs)(d,{children:[(0,R.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:fe(Y.gateList)}),(0,R.jsx)(d,{sx:{mt:.5},children:(0,R.jsx)(pe,{gates:Y.gateList})})]}),(P||I)&&(0,R.jsxs)(D,{direction:`row`,spacing:1,role:`status`,sx:{alignItems:`center`},children:[(0,R.jsx)(x,{size:16}),(0,R.jsx)(w,{variant:`body2`,sx:{color:`text.secondary`},children:I?`Preparing and verifying release files…`:`Checking this release against the stack…`})]}),Q&&!I&&(0,R.jsx)(m,{severity:Q.ok?`success`:Q.state?`info`:`error`,children:(0,R.jsx)(w,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:Q.because})}),v&&(0,R.jsxs)(m,{severity:`warning`,children:[`Stack inventory unavailable · `,v]}),V&&!U.records.length&&(0,R.jsx)(w,{variant:`body2`,role:`status`,color:`text.secondary`,children:U.available?`Start submitted. Waiting for target observations…`:`Transfer observations unavailable. Waiting for the stack reply…`}),(0,R.jsx)(de,{records:U.records,unavailable:!U.available}),ve&&(0,R.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[A,` requires an immutable release.`]}),q&&(0,R.jsx)(m,{severity:G?`warning`:`error`,children:(0,R.jsx)(w,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:q})})]})}),(0,R.jsxs)(ae,{children:[(0,R.jsx)(c,{onClick:V?()=>u(A):t,size:`small`,children:V?`Open stack`:I?`Close`:`Cancel`}),(0,R.jsx)(c,{variant:`contained`,size:`small`,startIcon:V?(0,R.jsx)(x,{size:14,color:`inherit`}):(0,R.jsx)(le,{}),disabled:!X||!A||V||I||P||!G&&!$&&Q?.ok!==!0,onClick:G?()=>u(A):$?he:ge,children:V?`Deploying…`:I?`Preparing…`:G?`Inspect stack`:Q?.state===`missing`?`Fetch and verify`:$?`Prepare release`:`Deploy`})]})]})}var L,R;function z(){return(z=e((()=>{L=t(),s(),b(),l(),f(),te(),u(),g(),v(),y(),_(),h(),E(),O(),C(),S(),A(),o(),P(),j(),M(),F(),N(),R=n()})))()}export{z as n,I as t};
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{B as r,V as i,g as a,h as o,x as ee,z as s}from"./client-CgyTwq9g.js";import{F as c,H as l,I as te,Q as u,V as d,X as f,Y as ne,Z as p,at as m,c as h,ct as g,d as re,f as _,g as v,h as ie,m as y,ot as b,p as ae,s as oe,st as x}from"./mui-SNRRJ_vi.js";import{B as S,a as se,o as C,z as w}from"./mui-B3fJdIMc.js";import{l as T,u as E}from"./mui-CMWGTMXv.js";import{_ as D,v as O}from"./mui-CPEkFAPo.js";import{h as ce,i as k,m as A,t as j}from"./project.store-D5IR3fo9.js";import{G as M,m as le}from"./icons-B9Ct8PJ9.js";import{i as ue,n as N,r as P,t as de}from"./deploy-progress-B39cvvCE.js";import{l as fe,o as pe,r as me,u as F}from"./release-bits-IehuBssK.js";function I({open:e,onClose:t,project:n,release:o,stack:s}){let l=i(),te=r(),u=e=>{let r=k.getState();r.activeProject!==n&&r.selectProject(n,te.pathname),t(),l(`/stacks/${encodeURIComponent(e)}`)},f=k(e=>e.stacksByProject),h=k(e=>e.fetchStacks),g=k(e=>e.startStack),_=f[n]??[],v=k(e=>e.stackReadErrors[n]),[y,b]=(0,L.useState)(!1),[S,C]=(0,L.useState)([]),[E,O]=(0,L.useState)(``),[A,j]=(0,L.useState)(s??``),[M,N]=(0,L.useState)(null),[P,F]=(0,L.useState)(!1),[I,z]=(0,L.useState)(!1),B=(0,L.useRef)(0),[V,H]=(0,L.useState)(!1),[U,W]=(0,L.useState)({records:[],available:!0}),[G,K]=(0,L.useState)(!1),[q,J]=(0,L.useState)(null);(0,L.useEffect)(()=>{e&&_.length===0&&h(n)},[e,n,_.length,h]),(0,L.useEffect)(()=>{if(!e||o)return;let t=!0;return b(!0),C([]),O(``),ue.list().then(({releases:e})=>{if(!t)return;let r=e.filter(e=>e.project===n&&e.complete);C(r)}).catch(e=>{t&&J(`The release store could not be read: ${e.message}`)}).finally(()=>{t&&b(!1)}),()=>{t=!1}},[e,o,n]);let Y=o??S.find(e=>e.id===E)??null,X=o?.id??E.trim(),Z=JSON.stringify([n,A,X]),Q=M?.key===Z?M:null;(0,L.useEffect)(()=>{e&&(j(s??``),N(null),J(null))},[e,s,o?.id]),(0,L.useEffect)(()=>{let t=++B.current;if(N(null),z(!1),H(!1),W({records:[],available:!0}),K(!1),J(null),F(!1),!e||!X||!A)return;let r=!0;F(!0);let i=window.setTimeout(()=>{a(`checkRelease`,{project:n,stack:A,release:X}).then(e=>{r&&N({...e,key:Z})}).catch(e=>{r&&N({key:Z,ok:!1,because:`The daemon could not answer: ${e.message}`})}).finally(()=>{r&&F(!1)})},250);return()=>{r=!1,B.current=t+1,window.clearTimeout(i)}},[e,n,A,X,Z]);let he=async()=>{let e=B.current;z(!0),J(null);try{let t=await a(`checkRelease`,{project:n,stack:A,release:X,prepare:!0});e===B.current&&N({...t,key:Z})}catch(t){e===B.current&&J(t.message)}finally{e===B.current&&z(!1)}},ge=async()=>{if(!X||!A||!Q?.ok)return;H(!0),J(null);let e=B.current;try{let t=await ce({project:n,stack:A,release:X},()=>g(n,A,{release:X}),()=>ee.getDeployProgress({project:n,stack:A}),(t,n,r)=>{B.current===e&&W({records:t,available:r})});if(B.current!==e)return;if(t.state!==`confirmed`){J(t.message),K(t.state!==`failed`);return}u(A)}catch(t){B.current===e&&J(t.message)}finally{B.current===e&&H(!1)}},_e=_.find(e=>e.name===A),$=Q?.state===`unprepared`||Q?.state===`missing`,ve=_e?.config?.release?.mode===`required`;return(0,R.jsxs)(ie,{open:e,onClose:V?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,R.jsx)(oe,{children:`Deploy a release`}),(0,R.jsx)(re,{children:(0,R.jsxs)(D,{spacing:2.5,sx:{mt:1},children:[!o&&(0,R.jsx)(ne,{freeSolo:!0,size:`small`,disabled:V||I,loading:y,options:S.map(e=>e.id),value:E||null,inputValue:E,onChange:(e,t)=>O(t??``),onInputChange:(e,t)=>O(t),renderInput:e=>(0,R.jsx)(se,{...e,label:`Release ID`,placeholder:`Select or enter a release ID`})}),Y&&(0,R.jsxs)(d,{children:[(0,R.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600},children:Y.id}),(0,R.jsxs)(D,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mt:.75},children:[(0,R.jsx)(me,{projectCommit:Y.projectCommit,omniCommit:Y.omniCommit,onRemote:Y.onRemote,project:Y.project}),(0,R.jsx)(p,{size:`small`,variant:`outlined`,label:`${Y.artifacts.count} app${Y.artifacts.count===1?``:`s`}`,sx:{height:20,fontSize:11}}),Y.statics&&(0,R.jsx)(p,{size:`small`,variant:`outlined`,label:`statics: ${Y.statics.stack}`,sx:{height:20,fontSize:11}})]})]}),(0,R.jsxs)(se,{select:!0,label:`Stack`,value:A,onChange:e=>j(e.target.value),size:`small`,fullWidth:!0,disabled:V||I,helperText:_e?.type===`local`?`Local stacks keep the selected release across restarts. Stop their applications before changing it.`:void 0,children:[_.length===0&&(0,R.jsx)(T,{disabled:!0,value:``,children:v?`Stack inventory unavailable`:f[n]?`This project has no stacks`:`Reading stack inventory…`}),_.map(e=>(0,R.jsx)(T,{value:e.name,disabled:!!e.config?.managedOrigin,children:(0,R.jsxs)(D,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,R.jsx)(w,{variant:`body2`,children:e.name}),(0,R.jsx)(p,{label:e.type,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}}),e.config?.release?.mode===`required`&&(0,R.jsx)(p,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,R.jsx)(d,{sx:{flex:1}}),(0,R.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:e.status})]})},e.name))]}),Y&&Y.gates.total>0&&(0,R.jsxs)(d,{children:[(0,R.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:fe(Y.gateList)}),(0,R.jsx)(d,{sx:{mt:.5},children:(0,R.jsx)(pe,{gates:Y.gateList})})]}),(P||I)&&(0,R.jsxs)(D,{direction:`row`,spacing:1,role:`status`,sx:{alignItems:`center`},children:[(0,R.jsx)(x,{size:16}),(0,R.jsx)(w,{variant:`body2`,sx:{color:`text.secondary`},children:I?`Preparing and verifying release files…`:`Checking this release against the stack…`})]}),Q&&!I&&(0,R.jsx)(m,{severity:Q.ok?`success`:Q.state?`info`:`error`,children:(0,R.jsx)(w,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:Q.because})}),v&&(0,R.jsxs)(m,{severity:`warning`,children:[`Stack inventory unavailable · `,v]}),V&&!U.records.length&&(0,R.jsx)(w,{variant:`body2`,role:`status`,color:`text.secondary`,children:U.available?`Start submitted. Waiting for target observations…`:`Transfer observations unavailable. Waiting for the stack reply…`}),(0,R.jsx)(de,{records:U.records,unavailable:!U.available}),ve&&(0,R.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[A,` requires an immutable release.`]}),q&&(0,R.jsx)(m,{severity:G?`warning`:`error`,children:(0,R.jsx)(w,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:q})})]})}),(0,R.jsxs)(ae,{children:[(0,R.jsx)(c,{onClick:V?()=>u(A):t,size:`small`,children:V?`Open stack`:I?`Close`:`Cancel`}),(0,R.jsx)(c,{variant:`contained`,size:`small`,startIcon:V?(0,R.jsx)(x,{size:14,color:`inherit`}):(0,R.jsx)(le,{}),disabled:!X||!A||V||I||P||!G&&!$&&Q?.ok!==!0,onClick:G?()=>u(A):$?he:ge,children:V?`Deploying…`:I?`Preparing…`:G?`Inspect stack`:Q?.state===`missing`?`Fetch and verify`:$?`Prepare release`:`Deploy`})]})]})}var L,R;function z(){return(z=e((()=>{L=t(),s(),b(),l(),f(),te(),u(),g(),v(),y(),_(),h(),E(),O(),C(),S(),A(),o(),P(),j(),M(),F(),N(),R=n()})))()}export{z as n,I as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{P as r,h as i,u as a,x as o,z as s}from"./client-DFnuv2z3.js";import{F as c,I as l,Q as u,St as d,Z as f,xt as ee}from"./mui-BXSXx9c9.js";import{B as p,z as m}from"./mui-Cd711nOk.js";import{C as h,it as g,rt as _,w as v}from"./mui-AnEgAVjz.js";import{_ as y,v as b}from"./mui-BwsIrivo.js";import{r as x,t as S}from"./alert-uBG6r9NW.js";import{c as C,s as w}from"./access-BvKK9dEv.js";import{n as T,t as E}from"./use-polled-resource-B22hhr5L.js";import{g as D,i as O,m as k,t as A}from"./project.store-DuCgv6Eq.js";import{G as j,M}from"./icons-OboZgWSt.js";import{n as N,t as P}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as F,t as I}from"./admin-data-table-BKSDI8sU.js";import{r as L,t as R}from"./formatters-RnRy4bXm.js";import{n as z,t as B}from"./use-stack-context-8yaHaN8L.js";import{n as te,r as V}from"./tabs-k5NPGLnJ.js";import{i as ne,n as H,r as U,t as W}from"./deploy-progress-CUUwlYtQ.js";function G(){let{activeProject:e,activeStack:t}=z();return(0,J.jsx)(K,{},JSON.stringify([e,t]))}function K(){let{activeProject:e,activeStack:t,matchesNamespace:n,extractStack:i}=z(),s=O(t=>t.projects.find(t=>t.name===e)),{can:l}=C(),u=l(`OmnitronRelease.deployments`),d=l(`OmnitronDeploy.getHistory`),p=l(`OmnitronProject.getDeployProgress`),[g,v]=(0,q.useState)(`stacks`),b=u&&(g===`stacks`||!d)?`stacks`:d?`legacy`:null,[x,w]=(0,q.useState)(!1),[E,k]=(0,q.useState)(!1),[A,j]=(0,q.useState)(0),[N,F]=(0,q.useState)(25),B=T(async()=>{if(!l(`OmnitronAudit.available`))throw Error(`Checking recorded stack starts requires access to audit availability.`);let e=await ne.deployments();if(!e.known)throw Error(e.why);return e},{intervalMs:15e3,enabled:b===`stacks`}),V=T(()=>a.getHistory({limit:Y}),{intervalMs:15e3,enabled:b===`legacy`}),H=T(()=>o.getDeployProgress(e?{project:e,...t&&{stack:t}}:void 0),{intervalMs:3e3,enabled:p,resourceKey:JSON.stringify([e,t,p])}),U=(B.data?.known?B.data.deployments:[]).filter(e=>n(`${e.project}/${e.stack}/_`)).sort((e,t)=>t.at.localeCompare(e.at)),G=(V.data??[]).filter(e=>n(e.app)),K=p?H.data??[]:[],{transfers:X,unscoped:Z}=e?D(K,s??{name:e},t):{transfers:K,unscoped:[]},re=b===`stacks`?U.length:G.length,Q=Math.min(A,Math.max(0,Math.ceil(re/N)-1)),ie=B.error,ae=async()=>{k(!0);try{await Promise.all([b===`stacks`&&B.refresh(),b===`legacy`&&V.refresh(),p&&H.refresh()])}finally{k(!1)}},$=e=>{F(e),j(0)};return(0,J.jsxs)(y,{spacing:2,sx:{minWidth:0},children:[(0,J.jsx)(P,{links:[{name:`Deployments`}],action:(0,J.jsxs)(y,{direction:`row`,spacing:1,useFlexGap:!0,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(_,{"data-console-command":`refresh`,"aria-label":`Refresh deployments`,size:`small`,onClick:ae,disabled:E,"aria-busy":E,children:(0,J.jsx)(M,{})}),l(`OmnitronProject.listStacks`)&&(0,J.jsx)(c,{component:r,to:`/stacks`,size:`small`,children:`Stacks`}),l(`OmnitronRelease.list`)&&(0,J.jsx)(c,{component:r,to:`/releases`,size:`small`,variant:`outlined`,children:l(`OmnitronProject.startStack`)?`Deploy a release`:`Releases`})]})}),p&&H.error&&(0,J.jsxs)(S,{severity:`warning`,variant:`outlined`,children:[`Transfer observations unavailable: `,H.error,`. Retained observations may be stale.`]}),p&&H.loading&&(0,J.jsx)(m,{role:`status`,variant:`caption`,children:`Reading transfer observations…`}),p&&!H.loading&&!H.error&&X.length===0&&(0,J.jsx)(m,{role:`status`,variant:`caption`,color:`text.secondary`,children:`No attributed transfer observations for this workspace.`}),(0,J.jsx)(W,{records:X,unavailable:!!H.error}),Z.length>0&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(c,{size:`small`,onClick:()=>w(e=>!e),"aria-expanded":x,"aria-controls":`unscoped-transfers`,sx:{alignSelf:`flex-start`},children:[x?`Hide`:`Show`,` unscoped observations · `,Z.length]}),(0,J.jsxs)(ee,{id:`unscoped-transfers`,in:x,unmountOnExit:!0,children:[(0,J.jsx)(m,{variant:`caption`,color:`text.secondary`,children:`These controller reports have no recorded project or stack.`}),(0,J.jsx)(W,{records:Z,unavailable:!!H.error})]})]}),u&&d&&(0,J.jsx)(te,{value:b??`stacks`,onChange:e=>{v(e),j(0)},"aria-label":`Deployment records`,tabs:[{value:`stacks`,label:B.data&&!B.error?`Stack starts · ${U.length}`:`Stack starts`},{value:`legacy`,label:V.data&&!V.error?`App history · ${G.length}`:`App history`}]}),b===`stacks`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[`Latest recorded start per stack namespace. `,l(`OmnitronAudit.list`)&&(0,J.jsxs)(J.Fragment,{children:[`Full event history is in `,(0,J.jsx)(h,{component:r,to:`/audit`,children:`Audit`}),`.`]})]}),(0,J.jsx)(I,{minWidth:600,scrollLabel:`Recorded stack starts`,columns:[{key:`stack`,header:`Stack`,render:t=>{let n=i(`${t.project}/${t.stack}/_`)??t.stack;return e&&l(`OmnitronProject.getStack`)?(0,J.jsxs)(y,{children:[(0,J.jsx)(h,{component:r,to:`/stacks/${encodeURIComponent(n)}`,children:n}),(t.project!==e||t.stack!==n)&&(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[t.project,`/`,t.stack]})]}):(0,J.jsxs)(m,{variant:`body2`,children:[t.project,`/`,t.stack]})}},{key:`release`,header:`Recorded source`,render:e=>e.release?l(`OmnitronRelease.get`)?(0,J.jsx)(h,{component:r,to:`/releases/${encodeURIComponent(e.release)}`,sx:{overflowWrap:`anywhere`},children:e.release}):e.release:(0,J.jsx)(m,{variant:`body2`,children:e.releaseUnnamed?`Release identity missing from record`:`Working tree / source not recorded`})},{key:`at`,header:`Recorded at`,render:e=>R(e.at)},{key:`source`,header:`Trigger`,render:e=>e.source??`Not recorded`},{key:`actorId`,header:`Actor`,render:e=>(0,J.jsx)(m,{variant:`caption`,sx:{overflowWrap:`anywhere`},children:e.actorId??`Not recorded`})}],data:U.slice(Q*N,(Q+1)*N),total:U.length,loading:B.loading,loadError:ie,emptyMessage:`No stack start recorded for this workspace`,rowKey:e=>`${e.project}/${e.stack}`,page:Q,pageSize:N,onPageChange:j,onPageSizeChange:$,dense:!0})]}):b===`legacy`&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[`Retained records from the retired per-app path. Its version labels and success statuses do not prove an artifact was installed. The latest `,Y,` controller records are filtered to this workspace.`]}),(0,J.jsx)(I,{minWidth:680,scrollLabel:`Legacy application operation records`,columns:[{key:`app`,header:`Application`,render:e=>(0,J.jsx)(m,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:e.app})},{key:`version`,header:`Requested label`,render:e=>(0,J.jsx)(m,{variant:`caption`,sx:{fontFamily:`monospace`,overflowWrap:`anywhere`},children:e.version})},{key:`strategy`,header:`Requested strategy`,render:e=>e.strategy},{key:`status`,header:`Recorded outcome`,render:e=>(0,J.jsx)(f,{size:`small`,variant:`outlined`,label:e.status})},{key:`startedAt`,header:`Started`,render:e=>R(e.startedAt)},{key:`duration`,header:`Duration`,render:e=>{let t=e.completedAt?Date.parse(e.completedAt)-Date.parse(e.startedAt):NaN;return Number.isFinite(t)&&t>=0?L(t):`Not recorded`}},{key:`deployedBy`,header:`Recorded actor`,render:e=>e.deployedBy??`Not recorded`}],data:G.slice(Q*N,(Q+1)*N),total:G.length,loading:V.loading,loadError:V.error,emptyMessage:`No legacy app operation in this history window`,rowKey:e=>e.id,page:Q,pageSize:N,onPageChange:j,onPageSizeChange:$,dense:!0})]})]})}var q,J,Y;function X(){return(X=e((()=>{q=t(),s(),v(),p(),b(),u(),l(),g(),d(),j(),F(),x(),V(),N(),i(),U(),H(),E(),B(),w(),A(),k(),J=n(),Y=200})))()}X();export{G as default};
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{P as r,h as i,u as a,x as o,z as s}from"./client-CgyTwq9g.js";import{F as c,I as l,Q as u,St as d,Z as f,xt as ee}from"./mui-SNRRJ_vi.js";import{B as p,z as m}from"./mui-B3fJdIMc.js";import{C as h,it as g,rt as _,w as v}from"./mui-CMWGTMXv.js";import{_ as y,v as b}from"./mui-CPEkFAPo.js";import{r as x,t as S}from"./alert-BdJ2uaY0.js";import{c as C,s as w}from"./access-I0f72P9m.js";import{n as T,t as E}from"./use-polled-resource-B22hhr5L.js";import{g as D,i as O,m as k,t as A}from"./project.store-D5IR3fo9.js";import{G as j,M}from"./icons-B9Ct8PJ9.js";import{n as N,t as P}from"./page-breadcrumbs-3R8RZ3nA.js";import{n as F,t as I}from"./admin-data-table-CAEL2f-m.js";import{r as L,t as R}from"./formatters-RnRy4bXm.js";import{n as z,t as B}from"./use-stack-context-BuraYaeY.js";import{n as te,r as V}from"./tabs-DGqBkXh_.js";import{i as ne,n as H,r as U,t as W}from"./deploy-progress-B39cvvCE.js";function G(){let{activeProject:e,activeStack:t}=z();return(0,J.jsx)(K,{},JSON.stringify([e,t]))}function K(){let{activeProject:e,activeStack:t,matchesNamespace:n,extractStack:i}=z(),s=O(t=>t.projects.find(t=>t.name===e)),{can:l}=C(),u=l(`OmnitronRelease.deployments`),d=l(`OmnitronDeploy.getHistory`),p=l(`OmnitronProject.getDeployProgress`),[g,v]=(0,q.useState)(`stacks`),b=u&&(g===`stacks`||!d)?`stacks`:d?`legacy`:null,[x,w]=(0,q.useState)(!1),[E,k]=(0,q.useState)(!1),[A,j]=(0,q.useState)(0),[N,F]=(0,q.useState)(25),B=T(async()=>{if(!l(`OmnitronAudit.available`))throw Error(`Checking recorded stack starts requires access to audit availability.`);let e=await ne.deployments();if(!e.known)throw Error(e.why);return e},{intervalMs:15e3,enabled:b===`stacks`}),V=T(()=>a.getHistory({limit:Y}),{intervalMs:15e3,enabled:b===`legacy`}),H=T(()=>o.getDeployProgress(e?{project:e,...t&&{stack:t}}:void 0),{intervalMs:3e3,enabled:p,resourceKey:JSON.stringify([e,t,p])}),U=(B.data?.known?B.data.deployments:[]).filter(e=>n(`${e.project}/${e.stack}/_`)).sort((e,t)=>t.at.localeCompare(e.at)),G=(V.data??[]).filter(e=>n(e.app)),K=p?H.data??[]:[],{transfers:X,unscoped:Z}=e?D(K,s??{name:e},t):{transfers:K,unscoped:[]},re=b===`stacks`?U.length:G.length,Q=Math.min(A,Math.max(0,Math.ceil(re/N)-1)),ie=B.error,ae=async()=>{k(!0);try{await Promise.all([b===`stacks`&&B.refresh(),b===`legacy`&&V.refresh(),p&&H.refresh()])}finally{k(!1)}},$=e=>{F(e),j(0)};return(0,J.jsxs)(y,{spacing:2,sx:{minWidth:0},children:[(0,J.jsx)(P,{links:[{name:`Deployments`}],action:(0,J.jsxs)(y,{direction:`row`,spacing:1,useFlexGap:!0,sx:{flexWrap:`wrap`,alignItems:`center`},children:[(0,J.jsx)(_,{"data-console-command":`refresh`,"aria-label":`Refresh deployments`,size:`small`,onClick:ae,disabled:E,"aria-busy":E,children:(0,J.jsx)(M,{})}),l(`OmnitronProject.listStacks`)&&(0,J.jsx)(c,{component:r,to:`/stacks`,size:`small`,children:`Stacks`}),l(`OmnitronRelease.list`)&&(0,J.jsx)(c,{component:r,to:`/releases`,size:`small`,variant:`outlined`,children:l(`OmnitronProject.startStack`)?`Deploy a release`:`Releases`})]})}),p&&H.error&&(0,J.jsxs)(S,{severity:`warning`,variant:`outlined`,children:[`Transfer observations unavailable: `,H.error,`. Retained observations may be stale.`]}),p&&H.loading&&(0,J.jsx)(m,{role:`status`,variant:`caption`,children:`Reading transfer observations…`}),p&&!H.loading&&!H.error&&X.length===0&&(0,J.jsx)(m,{role:`status`,variant:`caption`,color:`text.secondary`,children:`No attributed transfer observations for this workspace.`}),(0,J.jsx)(W,{records:X,unavailable:!!H.error}),Z.length>0&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(c,{size:`small`,onClick:()=>w(e=>!e),"aria-expanded":x,"aria-controls":`unscoped-transfers`,sx:{alignSelf:`flex-start`},children:[x?`Hide`:`Show`,` unscoped observations · `,Z.length]}),(0,J.jsxs)(ee,{id:`unscoped-transfers`,in:x,unmountOnExit:!0,children:[(0,J.jsx)(m,{variant:`caption`,color:`text.secondary`,children:`These controller reports have no recorded project or stack.`}),(0,J.jsx)(W,{records:Z,unavailable:!!H.error})]})]}),u&&d&&(0,J.jsx)(te,{value:b??`stacks`,onChange:e=>{v(e),j(0)},"aria-label":`Deployment records`,tabs:[{value:`stacks`,label:B.data&&!B.error?`Stack starts · ${U.length}`:`Stack starts`},{value:`legacy`,label:V.data&&!V.error?`App history · ${G.length}`:`App history`}]}),b===`stacks`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[`Latest recorded start per stack namespace. `,l(`OmnitronAudit.list`)&&(0,J.jsxs)(J.Fragment,{children:[`Full event history is in `,(0,J.jsx)(h,{component:r,to:`/audit`,children:`Audit`}),`.`]})]}),(0,J.jsx)(I,{minWidth:600,scrollLabel:`Recorded stack starts`,columns:[{key:`stack`,header:`Stack`,render:t=>{let n=i(`${t.project}/${t.stack}/_`)??t.stack;return e&&l(`OmnitronProject.getStack`)?(0,J.jsxs)(y,{children:[(0,J.jsx)(h,{component:r,to:`/stacks/${encodeURIComponent(n)}`,children:n}),(t.project!==e||t.stack!==n)&&(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[t.project,`/`,t.stack]})]}):(0,J.jsxs)(m,{variant:`body2`,children:[t.project,`/`,t.stack]})}},{key:`release`,header:`Recorded source`,render:e=>e.release?l(`OmnitronRelease.get`)?(0,J.jsx)(h,{component:r,to:`/releases/${encodeURIComponent(e.release)}`,sx:{overflowWrap:`anywhere`},children:e.release}):e.release:(0,J.jsx)(m,{variant:`body2`,children:e.releaseUnnamed?`Release identity missing from record`:`Working tree / source not recorded`})},{key:`at`,header:`Recorded at`,render:e=>R(e.at)},{key:`source`,header:`Trigger`,render:e=>e.source??`Not recorded`},{key:`actorId`,header:`Actor`,render:e=>(0,J.jsx)(m,{variant:`caption`,sx:{overflowWrap:`anywhere`},children:e.actorId??`Not recorded`})}],data:U.slice(Q*N,(Q+1)*N),total:U.length,loading:B.loading,loadError:ie,emptyMessage:`No stack start recorded for this workspace`,rowKey:e=>`${e.project}/${e.stack}`,page:Q,pageSize:N,onPageChange:j,onPageSizeChange:$,dense:!0})]}):b===`legacy`&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(m,{variant:`caption`,color:`text.secondary`,children:[`Retained records from the retired per-app path. Its version labels and success statuses do not prove an artifact was installed. The latest `,Y,` controller records are filtered to this workspace.`]}),(0,J.jsx)(I,{minWidth:680,scrollLabel:`Legacy application operation records`,columns:[{key:`app`,header:`Application`,render:e=>(0,J.jsx)(m,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:e.app})},{key:`version`,header:`Requested label`,render:e=>(0,J.jsx)(m,{variant:`caption`,sx:{fontFamily:`monospace`,overflowWrap:`anywhere`},children:e.version})},{key:`strategy`,header:`Requested strategy`,render:e=>e.strategy},{key:`status`,header:`Recorded outcome`,render:e=>(0,J.jsx)(f,{size:`small`,variant:`outlined`,label:e.status})},{key:`startedAt`,header:`Started`,render:e=>R(e.startedAt)},{key:`duration`,header:`Duration`,render:e=>{let t=e.completedAt?Date.parse(e.completedAt)-Date.parse(e.startedAt):NaN;return Number.isFinite(t)&&t>=0?L(t):`Not recorded`}},{key:`deployedBy`,header:`Recorded actor`,render:e=>e.deployedBy??`Not recorded`}],data:G.slice(Q*N,(Q+1)*N),total:G.length,loading:V.loading,loadError:V.error,emptyMessage:`No legacy app operation in this history window`,rowKey:e=>e.id,page:Q,pageSize:N,onPageChange:j,onPageSizeChange:$,dense:!0})]})]})}var q,J,Y;function X(){return(X=e((()=>{q=t(),s(),v(),p(),b(),u(),l(),g(),d(),j(),F(),x(),V(),N(),i(),U(),H(),E(),B(),w(),A(),k(),J=n(),Y=200})))()}X();export{G as default};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,P as i,_ as a,c as o,h as s,v as c,z as l}from"./client-DFnuv2z3.js";import{a as u,o as d}from"./mui-agG5dued.js";import{Vt as f,Yt as p}from"./mui-BTN91yBK.js";import{_n as m,gn as h}from"./mui-CdB_p2lt.js";import{D as g,E as _,F as v,H as y,I as b,M as x,O as S,Q as C,St as w,T,V as E,Z as D,j as O,xt as ee}from"./mui-BXSXx9c9.js";import{B as te,F as ne,I as re,M as ie,a as ae,c as oe,j as k,o as se,s as ce,z as A}from"./mui-Cd711nOk.js";import{A as le,E as ue,T as de,it as fe,k as pe,rt as me}from"./mui-AnEgAVjz.js";import{_ as j,v as he}from"./mui-BwsIrivo.js";import{r as M,t as N}from"./alert-uBG6r9NW.js";import{n as ge,t as P}from"./chart-BpGXlCJc.js";import{n as F,s as _e}from"./access-BvKK9dEv.js";import{n as ve,r as I,t as L}from"./use-polled-resource-B22hhr5L.js";import{a as ye,c as be,l as xe,n as Se,s as Ce,t as we}from"./app-address-BCXfN59F.js";import{F as Te,G as Ee,M as R,P as De,c as Oe,k as z,z as B}from"./icons-OboZgWSt.js";import{n as V,r as ke,t as Ae}from"./constants-CyhngVXh.js";import{n as je,t as Me}from"./table-BOWT6Y9d.js";import{n as Ne,t as Pe}from"./page-breadcrumbs-fR7Jmpp4.js";import{n as Fe,t as H}from"./skeleton-BmWDJWF9.js";import{i as U,s as Ie}from"./formatters-RnRy4bXm.js";import{c as Le,n as Re,s as ze,t as Be}from"./log-level-filter-Bcn31D1F.js";import{n as Ve,t as He}from"./use-stack-context-8yaHaN8L.js";function Ue({appName:e,refreshToken:t,onLogs:n}){let{data:r,error:i,loading:a,refresh:s}=ve(async()=>{let t=await o.getHealth({name:e}),n=t.apps[e];if(!n)throw Error(`The daemon returned no health answer for this application.`);return{...n,timestamp:t.timestamp}},{intervalMs:5e3,resourceKey:e});(0,We.useEffect)(()=>{t>0&&s()},[t,s]);let c=r!==null&&(!Number.isFinite(r.timestamp)||Date.now()-r.timestamp>=3e4||r.timestamp>Date.now()+5e3),l=r!==null&&!i&&!c,u=l?r.status:`unverified`,d=u===`healthy`?`success`:u===`unhealthy`?`error`:`warning`,f=r?[...r.checks].sort((e,t)=>({fail:0,warn:1,pass:2})[e.status]-{fail:0,warn:1,pass:2}[t.status]):[];return(0,W.jsx)(O,{variant:`outlined`,component:`section`,"aria-label":`Application readiness`,sx:{minWidth:0},children:(0,W.jsxs)(g,{sx:{p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(j,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:1.5},children:[(0,W.jsx)(A,{variant:`subtitle2`,children:`Readiness`}),(0,W.jsx)(D,{size:`small`,variant:`outlined`,color:d,label:a&&!r?`Checking`:u}),r&&Number.isFinite(r.timestamp)&&(0,W.jsxs)(A,{variant:`caption`,color:`text.secondary`,children:[l?`Checked`:`Last observation`,` `,new Date(r.timestamp).toLocaleTimeString()]}),(0,W.jsx)(v,{size:`small`,onClick:n,sx:{ml:`auto`},children:`View logs`})]}),(i||c)&&(0,W.jsxs)(N,{severity:`warning`,variant:`outlined`,sx:{mb:1.5},children:[i??`Health observation is stale. Waiting for a fresh answer.`,r?` The checks below are the last observation, not a current health verdict.`:``]}),!r&&!i&&(0,W.jsx)(A,{variant:`body2`,color:`text.secondary`,children:`Waiting for the application health probe.`}),r&&f.length===0&&(0,W.jsxs)(A,{variant:`body2`,color:`text.secondary`,children:[`The application reported `,r.status,` without individual checks. Add named readiness checks to its bootstrap.`]}),(0,W.jsx)(j,{spacing:1.5,children:f.map((t,n)=>(0,W.jsxs)(E,{sx:{display:`grid`,gridTemplateColumns:`auto minmax(0, 1fr)`,gap:1,alignItems:`start`},children:[(0,W.jsx)(D,{size:`small`,variant:`outlined`,label:t.status,color:t.status===`pass`?`success`:t.status===`fail`?`error`:`warning`}),(0,W.jsxs)(E,{sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,W.jsx)(A,{variant:`body2`,sx:{fontWeight:600},children:t.name.startsWith(`${e}/`)?t.name.slice(e.length+1):t.name}),(0,W.jsx)(A,{variant:`body2`,color:`text.secondary`,children:t.message??`No diagnostic message was supplied by the application.`})]})]},`${t.name}-${n}`))})]})})}var We,W;function Ge(){return(Ge=e((()=>{We=t(),y(),x(),S(),he(),C(),b(),te(),M(),s(),L(),W=n()})))()}function G({children:e,value:t,index:n}){let[r,i]=(0,Y.useState)(t===n);return(0,Y.useEffect)(()=>{t===n&&i(!0)},[t,n]),r?(0,X.jsx)(E,{sx:{pt:2,display:t===n?`block`:`none`},children:e}):null}function K({label:e,value:t,sub:n,color:r}){return(0,X.jsx)(O,{variant:`outlined`,sx:{flex:1,minWidth:140,bgcolor:r?f(r,.04):void 0,borderColor:r?f(r,.2):void 0},children:(0,X.jsxs)(g,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`caption`,sx:{color:`text.secondary`,textTransform:`uppercase`,letterSpacing:.5,fontSize:10},children:e}),(0,X.jsx)(A,{variant:`h5`,sx:{fontWeight:700,color:r??`text.primary`,mt:.25},children:t}),n&&(0,X.jsx)(A,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:n})]})})}function Ke({app:e,diagnostics:t,diagLoading:n}){let r=m(),i=t&&t.memory.heapTotal>0?Math.round(t.memory.heapUsed/t.memory.heapTotal*100):0,a=t!=null&&t.memory.heapTotal>0,o=be(e,t),s=o?` of ${o.name}`:``;return(0,X.jsxs)(j,{spacing:3,children:[(0,X.jsxs)(j,{direction:`row`,spacing:2,sx:{flexWrap:`wrap`},children:[(0,X.jsx)(K,{label:`CPU`,value:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`,color:e.cpu>80?r.palette.error.main:void 0}),(0,X.jsx)(K,{label:`Memory`,value:U(e.memory),sub:t?a?`Heap${s}: ${U(t.memory.heapUsed)} / ${U(t.memory.heapTotal)}`:`RSS${s}: ${U(t.memory.rss)}`:void 0}),(0,X.jsx)(K,{label:`Uptime`,value:Ie(e.uptime)}),(0,X.jsx)(K,{label:`Restarts`,value:e.restarts,color:e.restarts>0?r.palette.warning.main:void 0}),(0,X.jsx)(K,{label:`Instances`,value:e.instances})]}),t&&(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsx)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:a?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,mb:.5},children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.secondary`},children:[`Heap Usage`,s]}),(0,X.jsxs)(A,{variant:`caption`,sx:{fontWeight:600},children:[i,`%`]})]}),(0,X.jsx)(de,{variant:`determinate`,value:i,sx:{height:6,borderRadius:3,bgcolor:f(r.palette.primary.main,.08),"& .MuiLinearProgress-bar":{borderRadius:3,bgcolor:i>85?r.palette.error.main:r.palette.primary.main}}}),(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,mt:.5},children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.disabled`},children:[`RSS`,s,`: `,U(t.memory.rss)]}),(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.disabled`},children:[`External: `,U(t.memory.external)]})]})]}):(0,X.jsxs)(j,{spacing:.5,children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.secondary`},children:[`Memory (RSS)`,s]}),(0,X.jsx)(A,{variant:`h6`,sx:{fontWeight:600},children:U(t.memory.rss)})]})})}),e.processes&&e.processes.length>0&&(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{p:0,"&:last-child":{pb:0}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,px:2,pt:1.5,pb:1},children:`Process Topology`}),(0,X.jsx)(Me,{columns:[{id:`name`,label:`Process`,render:e=>(0,X.jsxs)(j,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,X.jsx)(Oe,{sx:{fontSize:8,color:e.status===`online`?r.palette.success.main:e.status===`stopped`?r.palette.text.disabled:r.palette.error.main}}),(0,X.jsx)(A,{variant:`body2`,sx:{fontWeight:600},children:e.name})]})},{id:`type`,label:`Type`,render:e=>(0,X.jsx)(D,{label:e.type,size:`small`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`status`,label:`Status`,render:e=>(0,X.jsx)(D,{label:e.status,size:`small`,color:V[e.status]||`default`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`pid`,label:`PID`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.pid??`—`})},{id:`uptime`,label:`Uptime`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:Ie(e.uptime)})},{id:`cpu`,label:`CPU`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`})},{id:`memory`,label:`Memory`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:U(e.memory)})},{id:`restarts`,label:`Restarts`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12,color:e.restarts!==null&&e.restarts>0?r.palette.warning.main:void 0},children:e.restarts??`—`})}],data:e.processes,rowKey:e=>e.name,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),t&&t.services.length>0&&(()=>{let e=[...new Set(t.services)];return(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Exposed Services`}),(0,X.jsx)(j,{direction:`row`,spacing:.75,useFlexGap:!0,sx:{flexWrap:`wrap`},children:e.map(e=>(0,X.jsx)(D,{label:e,size:`small`,variant:`outlined`,sx:{fontSize:11,height:24}},e))})]})})})(),(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Details`}),(0,X.jsxs)(j,{spacing:.75,children:[(0,X.jsx)(q,{label:`Mode`,value:e.mode}),(0,X.jsx)(q,{label:`PID`,value:e.pid??`—`,mono:!0}),(0,X.jsx)(q,{label:`Port`,value:e.port??`—`,mono:!0}),(0,X.jsx)(q,{label:`Critical`,value:e.critical?`Yes`:`No`})]})]})})]})}function q({label:e,value:t,mono:n}){return(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,X.jsx)(A,{variant:`body2`,sx:{color:`text.secondary`,fontSize:13},children:e}),(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:13,...n&&{fontFamily:`monospace`}},children:t})]})}function qe(e){let t=typeof e==`string`?new Date(e):e;return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function Je(e){let t=typeof e==`string`?new Date(e):e;return`${t.toLocaleString(`en-US`,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function Ye({log:e,isNew:t}){let[n,r]=(0,Y.useState)(!1),i=Object.hasOwn(Ae,e.level)?Ae[e.level]:`#6b7280`,a=Object.hasOwn(Z,e.level)?Z[e.level]:`transparent`,o=e.labels||e.traceId||e.spanId||e.metadata;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(E,{onClick:()=>o&&r(e=>!e),sx:{display:`grid`,gridTemplateColumns:`90px 36px 1fr`,gap:1,alignItems:`baseline`,px:1.5,py:`3px`,bgcolor:n?`rgba(255,255,255,0.04)`:a,borderLeft:`2px solid ${n?i:`transparent`}`,cursor:o?`pointer`:`default`,transition:`background-color 0.15s ease`,animation:t?`${tt} 0.3s ease-out`:void 0,"&:hover":{bgcolor:`rgba(255,255,255,0.04)`}},children:[(0,X.jsx)(ne,{title:Je(e.timestamp),placement:`top-start`,arrow:!0,enterDelay:400,children:(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:11,color:`#7c8493`,lineHeight:`20px`,whiteSpace:`nowrap`,letterSpacing:`-0.02em`},children:qe(e.timestamp)})}),(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:10,fontWeight:700,color:i,lineHeight:`20px`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:Le(e.level)}),(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:11.5,lineHeight:`20px`,overflow:`hidden`,color:e.level===`error`||e.level===`fatal`?`#fca5a5`:`#c9d1d9`,textOverflow:`ellipsis`,whiteSpace:n?`pre-wrap`:`nowrap`,wordBreak:n?`break-all`:void 0},children:e.message})]}),(0,X.jsx)(ee,{in:n,unmountOnExit:!0,children:(0,X.jsx)(E,{sx:{ml:`14px`,mr:1.5,mb:.5,p:1.5,bgcolor:`rgba(255,255,255,0.025)`,borderRadius:1,borderLeft:`2px solid ${f(i,.3)}`},children:(0,X.jsxs)(E,{component:`pre`,sx:{fontFamily:Q,fontSize:11,color:`#8b949e`,m:0,whiteSpace:`pre-wrap`,wordBreak:`break-all`,lineHeight:1.7},children:[e.traceId&&(0,X.jsxs)(`span`,{children:[(0,X.jsx)(`span`,{style:{color:`#7c8493`},children:`traceId: `}),(0,X.jsx)(`span`,{style:{color:`#d2a8ff`},children:e.traceId}),`
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,P as i,_ as a,c as o,h as s,v as c,z as l}from"./client-CgyTwq9g.js";import{a as u,o as d}from"./mui-agG5dued.js";import{Vt as f,Yt as p}from"./mui-BTN91yBK.js";import{_n as m,gn as h}from"./mui-Bdr6Ks5j.js";import{D as g,E as _,F as v,H as y,I as b,M as x,O as S,Q as C,St as w,T,V as E,Z as D,j as O,xt as ee}from"./mui-SNRRJ_vi.js";import{B as te,F as ne,I as re,M as ie,a as ae,c as oe,j as k,o as se,s as ce,z as A}from"./mui-B3fJdIMc.js";import{A as le,E as ue,T as de,it as fe,k as pe,rt as me}from"./mui-CMWGTMXv.js";import{_ as j,v as he}from"./mui-CPEkFAPo.js";import{r as M,t as N}from"./alert-BdJ2uaY0.js";import{n as ge,t as P}from"./chart-BKXP2ter.js";import{n as F,s as _e}from"./access-I0f72P9m.js";import{n as ve,r as I,t as L}from"./use-polled-resource-B22hhr5L.js";import{a as ye,c as be,l as xe,n as Se,s as Ce,t as we}from"./app-address-BCXfN59F.js";import{F as Te,G as Ee,M as R,P as De,c as Oe,k as z,z as B}from"./icons-B9Ct8PJ9.js";import{n as V,r as ke,t as Ae}from"./constants-CyhngVXh.js";import{n as je,t as Me}from"./table-D-so_B1p.js";import{n as Ne,t as Pe}from"./page-breadcrumbs-3R8RZ3nA.js";import{n as Fe,t as H}from"./skeleton-BnVxAoeX.js";import{i as U,s as Ie}from"./formatters-RnRy4bXm.js";import{c as Le,n as Re,s as ze,t as Be}from"./log-level-filter-oaUGdbpk.js";import{n as Ve,t as He}from"./use-stack-context-BuraYaeY.js";function Ue({appName:e,refreshToken:t,onLogs:n}){let{data:r,error:i,loading:a,refresh:s}=ve(async()=>{let t=await o.getHealth({name:e}),n=t.apps[e];if(!n)throw Error(`The daemon returned no health answer for this application.`);return{...n,timestamp:t.timestamp}},{intervalMs:5e3,resourceKey:e});(0,We.useEffect)(()=>{t>0&&s()},[t,s]);let c=r!==null&&(!Number.isFinite(r.timestamp)||Date.now()-r.timestamp>=3e4||r.timestamp>Date.now()+5e3),l=r!==null&&!i&&!c,u=l?r.status:`unverified`,d=u===`healthy`?`success`:u===`unhealthy`?`error`:`warning`,f=r?[...r.checks].sort((e,t)=>({fail:0,warn:1,pass:2})[e.status]-{fail:0,warn:1,pass:2}[t.status]):[];return(0,W.jsx)(O,{variant:`outlined`,component:`section`,"aria-label":`Application readiness`,sx:{minWidth:0},children:(0,W.jsxs)(g,{sx:{p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(j,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:1.5},children:[(0,W.jsx)(A,{variant:`subtitle2`,children:`Readiness`}),(0,W.jsx)(D,{size:`small`,variant:`outlined`,color:d,label:a&&!r?`Checking`:u}),r&&Number.isFinite(r.timestamp)&&(0,W.jsxs)(A,{variant:`caption`,color:`text.secondary`,children:[l?`Checked`:`Last observation`,` `,new Date(r.timestamp).toLocaleTimeString()]}),(0,W.jsx)(v,{size:`small`,onClick:n,sx:{ml:`auto`},children:`View logs`})]}),(i||c)&&(0,W.jsxs)(N,{severity:`warning`,variant:`outlined`,sx:{mb:1.5},children:[i??`Health observation is stale. Waiting for a fresh answer.`,r?` The checks below are the last observation, not a current health verdict.`:``]}),!r&&!i&&(0,W.jsx)(A,{variant:`body2`,color:`text.secondary`,children:`Waiting for the application health probe.`}),r&&f.length===0&&(0,W.jsxs)(A,{variant:`body2`,color:`text.secondary`,children:[`The application reported `,r.status,` without individual checks. Add named readiness checks to its bootstrap.`]}),(0,W.jsx)(j,{spacing:1.5,children:f.map((t,n)=>(0,W.jsxs)(E,{sx:{display:`grid`,gridTemplateColumns:`auto minmax(0, 1fr)`,gap:1,alignItems:`start`},children:[(0,W.jsx)(D,{size:`small`,variant:`outlined`,label:t.status,color:t.status===`pass`?`success`:t.status===`fail`?`error`:`warning`}),(0,W.jsxs)(E,{sx:{minWidth:0,overflowWrap:`anywhere`},children:[(0,W.jsx)(A,{variant:`body2`,sx:{fontWeight:600},children:t.name.startsWith(`${e}/`)?t.name.slice(e.length+1):t.name}),(0,W.jsx)(A,{variant:`body2`,color:`text.secondary`,children:t.message??`No diagnostic message was supplied by the application.`})]})]},`${t.name}-${n}`))})]})})}var We,W;function Ge(){return(Ge=e((()=>{We=t(),y(),x(),S(),he(),C(),b(),te(),M(),s(),L(),W=n()})))()}function G({children:e,value:t,index:n}){let[r,i]=(0,Y.useState)(t===n);return(0,Y.useEffect)(()=>{t===n&&i(!0)},[t,n]),r?(0,X.jsx)(E,{sx:{pt:2,display:t===n?`block`:`none`},children:e}):null}function K({label:e,value:t,sub:n,color:r}){return(0,X.jsx)(O,{variant:`outlined`,sx:{flex:1,minWidth:140,bgcolor:r?f(r,.04):void 0,borderColor:r?f(r,.2):void 0},children:(0,X.jsxs)(g,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`caption`,sx:{color:`text.secondary`,textTransform:`uppercase`,letterSpacing:.5,fontSize:10},children:e}),(0,X.jsx)(A,{variant:`h5`,sx:{fontWeight:700,color:r??`text.primary`,mt:.25},children:t}),n&&(0,X.jsx)(A,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:n})]})})}function Ke({app:e,diagnostics:t,diagLoading:n}){let r=m(),i=t&&t.memory.heapTotal>0?Math.round(t.memory.heapUsed/t.memory.heapTotal*100):0,a=t!=null&&t.memory.heapTotal>0,o=be(e,t),s=o?` of ${o.name}`:``;return(0,X.jsxs)(j,{spacing:3,children:[(0,X.jsxs)(j,{direction:`row`,spacing:2,sx:{flexWrap:`wrap`},children:[(0,X.jsx)(K,{label:`CPU`,value:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`,color:e.cpu>80?r.palette.error.main:void 0}),(0,X.jsx)(K,{label:`Memory`,value:U(e.memory),sub:t?a?`Heap${s}: ${U(t.memory.heapUsed)} / ${U(t.memory.heapTotal)}`:`RSS${s}: ${U(t.memory.rss)}`:void 0}),(0,X.jsx)(K,{label:`Uptime`,value:Ie(e.uptime)}),(0,X.jsx)(K,{label:`Restarts`,value:e.restarts,color:e.restarts>0?r.palette.warning.main:void 0}),(0,X.jsx)(K,{label:`Instances`,value:e.instances})]}),t&&(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsx)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:a?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,mb:.5},children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.secondary`},children:[`Heap Usage`,s]}),(0,X.jsxs)(A,{variant:`caption`,sx:{fontWeight:600},children:[i,`%`]})]}),(0,X.jsx)(de,{variant:`determinate`,value:i,sx:{height:6,borderRadius:3,bgcolor:f(r.palette.primary.main,.08),"& .MuiLinearProgress-bar":{borderRadius:3,bgcolor:i>85?r.palette.error.main:r.palette.primary.main}}}),(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,mt:.5},children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.disabled`},children:[`RSS`,s,`: `,U(t.memory.rss)]}),(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.disabled`},children:[`External: `,U(t.memory.external)]})]})]}):(0,X.jsxs)(j,{spacing:.5,children:[(0,X.jsxs)(A,{variant:`caption`,sx:{color:`text.secondary`},children:[`Memory (RSS)`,s]}),(0,X.jsx)(A,{variant:`h6`,sx:{fontWeight:600},children:U(t.memory.rss)})]})})}),e.processes&&e.processes.length>0&&(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{p:0,"&:last-child":{pb:0}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,px:2,pt:1.5,pb:1},children:`Process Topology`}),(0,X.jsx)(Me,{columns:[{id:`name`,label:`Process`,render:e=>(0,X.jsxs)(j,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,X.jsx)(Oe,{sx:{fontSize:8,color:e.status===`online`?r.palette.success.main:e.status===`stopped`?r.palette.text.disabled:r.palette.error.main}}),(0,X.jsx)(A,{variant:`body2`,sx:{fontWeight:600},children:e.name})]})},{id:`type`,label:`Type`,render:e=>(0,X.jsx)(D,{label:e.type,size:`small`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`status`,label:`Status`,render:e=>(0,X.jsx)(D,{label:e.status,size:`small`,color:V[e.status]||`default`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`pid`,label:`PID`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.pid??`—`})},{id:`uptime`,label:`Uptime`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:Ie(e.uptime)})},{id:`cpu`,label:`CPU`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`})},{id:`memory`,label:`Memory`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12},children:U(e.memory)})},{id:`restarts`,label:`Restarts`,align:`right`,render:e=>(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:12,color:e.restarts!==null&&e.restarts>0?r.palette.warning.main:void 0},children:e.restarts??`—`})}],data:e.processes,rowKey:e=>e.name,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),t&&t.services.length>0&&(()=>{let e=[...new Set(t.services)];return(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Exposed Services`}),(0,X.jsx)(j,{direction:`row`,spacing:.75,useFlexGap:!0,sx:{flexWrap:`wrap`},children:e.map(e=>(0,X.jsx)(D,{label:e,size:`small`,variant:`outlined`,sx:{fontSize:11,height:24}},e))})]})})})(),(0,X.jsx)(O,{variant:`outlined`,children:(0,X.jsxs)(g,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,X.jsx)(A,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Details`}),(0,X.jsxs)(j,{spacing:.75,children:[(0,X.jsx)(q,{label:`Mode`,value:e.mode}),(0,X.jsx)(q,{label:`PID`,value:e.pid??`—`,mono:!0}),(0,X.jsx)(q,{label:`Port`,value:e.port??`—`,mono:!0}),(0,X.jsx)(q,{label:`Critical`,value:e.critical?`Yes`:`No`})]})]})})]})}function q({label:e,value:t,mono:n}){return(0,X.jsxs)(j,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,X.jsx)(A,{variant:`body2`,sx:{color:`text.secondary`,fontSize:13},children:e}),(0,X.jsx)(A,{variant:`body2`,sx:{fontSize:13,...n&&{fontFamily:`monospace`}},children:t})]})}function qe(e){let t=typeof e==`string`?new Date(e):e;return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function Je(e){let t=typeof e==`string`?new Date(e):e;return`${t.toLocaleString(`en-US`,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function Ye({log:e,isNew:t}){let[n,r]=(0,Y.useState)(!1),i=Object.hasOwn(Ae,e.level)?Ae[e.level]:`#6b7280`,a=Object.hasOwn(Z,e.level)?Z[e.level]:`transparent`,o=e.labels||e.traceId||e.spanId||e.metadata;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(E,{onClick:()=>o&&r(e=>!e),sx:{display:`grid`,gridTemplateColumns:`90px 36px 1fr`,gap:1,alignItems:`baseline`,px:1.5,py:`3px`,bgcolor:n?`rgba(255,255,255,0.04)`:a,borderLeft:`2px solid ${n?i:`transparent`}`,cursor:o?`pointer`:`default`,transition:`background-color 0.15s ease`,animation:t?`${tt} 0.3s ease-out`:void 0,"&:hover":{bgcolor:`rgba(255,255,255,0.04)`}},children:[(0,X.jsx)(ne,{title:Je(e.timestamp),placement:`top-start`,arrow:!0,enterDelay:400,children:(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:11,color:`#7c8493`,lineHeight:`20px`,whiteSpace:`nowrap`,letterSpacing:`-0.02em`},children:qe(e.timestamp)})}),(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:10,fontWeight:700,color:i,lineHeight:`20px`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:Le(e.level)}),(0,X.jsx)(A,{component:`span`,sx:{fontFamily:Q,fontSize:11.5,lineHeight:`20px`,overflow:`hidden`,color:e.level===`error`||e.level===`fatal`?`#fca5a5`:`#c9d1d9`,textOverflow:`ellipsis`,whiteSpace:n?`pre-wrap`:`nowrap`,wordBreak:n?`break-all`:void 0},children:e.message})]}),(0,X.jsx)(ee,{in:n,unmountOnExit:!0,children:(0,X.jsx)(E,{sx:{ml:`14px`,mr:1.5,mb:.5,p:1.5,bgcolor:`rgba(255,255,255,0.025)`,borderRadius:1,borderLeft:`2px solid ${f(i,.3)}`},children:(0,X.jsxs)(E,{component:`pre`,sx:{fontFamily:Q,fontSize:11,color:`#8b949e`,m:0,whiteSpace:`pre-wrap`,wordBreak:`break-all`,lineHeight:1.7},children:[e.traceId&&(0,X.jsxs)(`span`,{children:[(0,X.jsx)(`span`,{style:{color:`#7c8493`},children:`traceId: `}),(0,X.jsx)(`span`,{style:{color:`#d2a8ff`},children:e.traceId}),`
2
2
  `]}),e.spanId&&(0,X.jsxs)(`span`,{children:[(0,X.jsx)(`span`,{style:{color:`#7c8493`},children:`spanId: `}),(0,X.jsx)(`span`,{style:{color:`#d2a8ff`},children:e.spanId}),`
3
3
  `]}),e.labels&&(0,X.jsxs)(`span`,{children:[(0,X.jsx)(`span`,{style:{color:`#7c8493`},children:`labels: `}),(0,X.jsx)(`span`,{style:{color:`#7ee787`},children:JSON.stringify(e.labels,null,2)}),`
4
4
  `]}),e.metadata&&(0,X.jsxs)(`span`,{children:[(0,X.jsx)(`span`,{style:{color:`#7c8493`},children:`metadata:`}),`
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,P as i,V as a,z as o}from"./client-DFnuv2z3.js";import{D as s,F as c,H as l,I as u,M as d,O as ee,Q as f,V as p,Z as m,c as te,ct as h,d as ne,f as g,g as _,h as re,j as v,l as ie,m as y,p as b,s as x,st as ae,u as S}from"./mui-BXSXx9c9.js";import{B as C,z as w}from"./mui-Cd711nOk.js";import{E as T,T as oe,it as E,rt as D}from"./mui-AnEgAVjz.js";import{_ as O,v as k}from"./mui-BwsIrivo.js";import{n as se,r as A,t as j}from"./alert-uBG6r9NW.js";import{n as M,s as N}from"./access-BvKK9dEv.js";import{r as ce,t as le}from"./use-polled-resource-B22hhr5L.js";import{i as P,n as ue,r as de,t as F}from"./project.store-DuCgv6Eq.js";import{B as fe,G as I,M as pe,k as me,m as L,p as he,z as ge}from"./icons-OboZgWSt.js";import{n as R,t as _e}from"./operation-status-Bm1x1wTz.js";import{n as z,t as B}from"./table-BOWT6Y9d.js";import{n as V,t as ve}from"./page-breadcrumbs-fR7Jmpp4.js";import{s as ye}from"./formatters-RnRy4bXm.js";import{n as be,r as xe,t as Se}from"./stack-health-status-BIv2C10x.js";import{a as H,c as Ce,r as U,s as W}from"./sync-reading-CN0jPKAg.js";import{n as G,t as we}from"./deploy-release-dialog-58lGZDNk.js";import{n as Te,t as K}from"./release-deployment-state-gN8ZT3aq.js";import{a as Ee,c as De,i as Oe,l as ke,n as Ae,o as je,r as Me,s as Ne,t as Pe,u as Fe}from"./stack-start-notice-D-AH_bzn.js";function Ie({operation:e}){if(!e||e.supersededAt)return null;let t=e.phase===`failed`,n=e.phase===`stopped`,r=e.nodes.filter(e=>e.outcome===`stopped`).length;if(n&&!e.nodes.length)return null;let i=e.nodes.map(e=>(0,q.jsxs)(p,{sx:{display:`flex`,flexWrap:`wrap`,columnGap:1.5,mt:.75},children:[(0,q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,overflowWrap:`anywhere`},children:e.node}),(0,q.jsx)(w,{variant:`body2`,children:e.outcome===`unknown`?`Awaiting confirmation`:e.outcome}),e.authority&&(0,q.jsxs)(w,{variant:`caption`,sx:{overflowWrap:`anywhere`},children:[e.authority.clusterId,` · epoch `,e.authority.epoch,` · `,e.authority.nodeId]}),e.reason&&(0,q.jsx)(w,{variant:`caption`,sx:{width:`100%`,overflowWrap:`anywhere`},children:e.reason})]},e.node));return n?(0,q.jsxs)(p,{component:`details`,sx:{mb:2,minWidth:0,typography:`body2`,"& summary":{cursor:`pointer`}},children:[(0,q.jsxs)(`summary`,{children:[`Stop confirmed · `,r,`/`,e.nodes.length,` nodes`]}),i]}):(0,q.jsx)(j,{severity:t?`error`:`info`,sx:{mb:2,minWidth:0},children:(0,q.jsxs)(p,{role:`status`,"aria-live":`polite`,sx:{minWidth:0},children:[(0,q.jsxs)(w,{variant:`subtitle2`,children:[t?e.intentCommitted?`Stop not confirmed`:`Stop declined before execution`:e.phase===`preparing`?`Checking stop ownership`:`Stopping stack`,e.nodes.length>0&&` · ${r}/${e.nodes.length} nodes confirmed`]}),!t&&(0,q.jsx)(oe,{"aria-label":`Stack stop in progress`,sx:{mt:1,mb:1.5}}),e.error&&(0,q.jsx)(w,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:e.error}),i]})})}var q;function Le(){return(Le=e((()=>{l(),C(),T(),A(),q=n()})))()}function Re({children:e,gap:t=Be,fill:n,sx:r,ref:i,...a}){return(0,ze.jsx)(O,{ref:i,spacing:t,sx:{...n&&{flex:1},...r},...a,children:e})}var ze,Be;function Ve(){return(Ve=e((()=>{t(),k(),ze=n(),Be=3})))()}function He({project:e,stack:t,requiresRelease:n,managed:r,selected:i,onDeploy:a,onWorkingTree:o}){return(0,J.jsxs)(p,{sx:{mb:2,minWidth:0},children:[!r&&(0,J.jsxs)(O,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:1},children:[i&&(0,J.jsx)(m,{label:`Selected: `+i,size:`small`,variant:`outlined`}),n&&(0,J.jsx)(m,{label:`Release required`,size:`small`,variant:`outlined`}),(0,J.jsx)(p,{sx:{flex:1}}),o&&(0,J.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,J.jsx)(c,{size:`small`,onClick:o,children:`Use working tree…`})}),(0,J.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,J.jsx)(c,{size:`small`,startIcon:(0,J.jsx)(L,{}),onClick:a,children:`Deploy release…`})})]}),(0,J.jsx)(K,{project:e,stack:t},`${e}/${t}`)]})}var J;function Ue(){return(Ue=e((()=>{l(),u(),f(),k(),N(),I(),Te(),J=n()})))()}function We(){let{name:e}=r(),t=a(),n=ue(),o=de(),l=P(e=>!!(n&&e.stacksByProject[n])),u=P(e=>n?e.stackReadErrors[n]:null),d=P(e=>e.fetchStacks),ee=P(e=>e.resumeInstalledStack),f=P(e=>e.startStack),te=P(e=>e.stopStack),h=P(e=>e.deleteStack),g=`${n}/${e}`,_=P(e=>e.stackNotices[g]),y=P(e=>e.clearStackNotice),S=P(e=>e.pendingOps),[C,T]=(0,Z.useState)(!1),[oe,E]=(0,Z.useState)(!1),[O,k]=(0,Z.useState)(!1),[A,N]=(0,Z.useState)(!1),[le,F]=(0,Z.useState)(!1),I=o.find(t=>t.name===e),R=n&&e?S[`${n}/${e}`]??null:null,z=Object.keys(S).length>0;ce(()=>void(n&&d(n)),{intervalMs:z?3e3:1e4,enabled:!!n,resourceKey:n});let V=(0,Z.useCallback)(async()=>{n&&e&&await f(n,e)},[n,e,f]),xe=(0,Z.useCallback)(async()=>{if(n&&e){try{await h(n,e),t(`/stacks`)}catch{}T(!1)}},[n,e,h,t]);if(!I&&n&&u)return(0,Q.jsxs)(j,{severity:`error`,children:[`Stack inventory unavailable · `,u,` `,(0,Q.jsx)(c,{onClick:()=>void d(n),children:`Retry`})]});if(!I&&n&&!l)return(0,Q.jsx)(_e,{active:!0,label:`Reading stack inventory`});if(!I)return(0,Q.jsx)(Re,{children:(0,Q.jsxs)(j,{severity:`warning`,children:[`Stack "`,e,`" not found.`,` `,(0,Q.jsx)(c,{size:`small`,onClick:()=>t(`/stacks`),children:`Back to Stacks`})]})});let H=[{id:`name`,label:`App`,render:e=>(0,Q.jsx)(p,{sx:{fontWeight:600},children:e.name})},{id:`status`,label:`Process`,render:e=>(0,Q.jsx)(m,{label:e.status,size:`small`,color:e.status===`online`?`success`:e.status===`crashed`||e.status===`errored`?`error`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`health`,label:`Health`,render:e=>(0,Q.jsx)(Se,{status:e.health})},{id:`pid`,label:`PID`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.pid??`—`})},{id:`instances`,label:`Instances`,render:e=>e.instances},{id:`uptime`,label:`Uptime`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.uptime>0?ye(e.uptime):`—`})}],Ce=[{id:`host`,label:`Host`,render:e=>(0,Q.jsxs)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:[e.host,`:`,e.port,e.label&&(0,Q.jsxs)(w,{component:`span`,variant:`caption`,sx:{ml:1,color:`text.secondary`},children:[`(`,e.label,`)`]})]})},{id:`role`,label:`Role`,render:e=>(0,Q.jsx)(m,{label:e.role,size:`small`,sx:{height:18,fontSize:`0.6rem`}})},{id:`daemonRole`,label:`Daemon`,render:e=>(0,Q.jsx)(m,{label:e.daemonRole,size:`small`,color:e.daemonRole===`master`?`primary`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`connected`,label:`Status`,render:e=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(p,{component:`span`,sx:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`success.main`:`warning.main`,mr:.5}}),e.connected?`Inventory observed`:`Inventory unavailable`]})},{id:`lastSeen`,label:`Last Seen`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.75rem`},children:e.lastSeen?new Date(e.lastSeen).toLocaleTimeString():`—`})}],U=I.config?.release?.mode===`required`,W=[`running`,`degraded`,`error`,`unknown`,`stopping`].includes(I.status),G=I.status===`stopped`,Te=I.status===`starting`||I.status===`stopping`||!!R,K=!!R;return(0,Q.jsxs)(Re,{children:[(0,Q.jsx)(ve,{linkComponent:i,links:[{name:`Stacks`,href:`/stacks`},{name:I.name}],action:(0,Q.jsxs)(p,{sx:{display:`flex`,gap:1,alignItems:`center`,flexWrap:`wrap`},children:[G&&!K&&(0,Q.jsx)(M,{permission:`OmnitronProject.deleteStack`,children:(0,Q.jsx)(D,{size:`small`,color:`error`,onClick:()=>T(!0),title:`Delete stack`,"aria-label":`Delete stack ${I.name}`,sx:{marginInlineEnd:1},children:(0,Q.jsx)(he,{})})}),(0,Q.jsx)(m,{label:I.status.charAt(0).toUpperCase()+I.status.slice(1),size:`small`,sx:{bgcolor:$[I.status]??$.stopped,color:`white`,fontWeight:600}}),(0,Q.jsx)(M,{permission:`OmnitronProject.diagnoseStack`,children:(0,Q.jsx)(c,{size:`small`,onClick:()=>k(!0),children:`Diagnose`})}),(0,Q.jsx)(D,{size:`small`,"aria-label":`Refresh stack`,title:`Refresh stack`,onClick:()=>n&&d(n),children:(0,Q.jsx)(pe,{})}),Te?(0,Q.jsx)(c,{variant:`outlined`,size:`small`,disabled:!0,startIcon:(0,Q.jsx)(ae,{size:14}),children:R===`resuming`?`Resuming installed apps…`:R===`starting`||I.status===`starting`?`Starting…`:`Stopping…`}):n&&e&&ke(I)?(0,Q.jsx)(Ne,{stack:I,onResume:()=>void ee(n,e),onReviewStop:()=>E(!0)}):G?U&&!I.selectedRelease?(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(L,{}),color:`success`,variant:`contained`,size:`small`,onClick:()=>N(!0),children:`Deploy release…`})}):(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(me,{}),color:`success`,variant:`contained`,size:`small`,onClick:V,children:`Start`})}):W?(0,Q.jsx)(M,{permission:`OmnitronProject.reviewStackStop`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(ge,{}),color:`error`,variant:`outlined`,size:`small`,onClick:()=>E(!0),children:I.stopOperation?.phase===`failed`&&!I.stopOperation.supersededAt?`Review retry…`:`Review stop…`})}):null]})}),oe&&n&&e&&(0,Q.jsx)(Ee,{project:n,stack:e,onClose:()=>E(!1),onConfirm:(t,r)=>{E(!1),te(n,e,t,r)}},`${n}/${e}`),O&&n&&e&&(0,Q.jsx)(Me,{project:n,stack:e,onClose:()=>k(!1)},`${n}/${e}`),(0,Q.jsx)(Ie,{operation:I.stopOperation}),(0,Q.jsx)(De,{stack:I}),(0,Q.jsx)(Pe,{stack:I}),(0,Q.jsx)(be,{stack:I}),u&&(0,Q.jsxs)(j,{severity:`warning`,children:[`Showing the last stack inventory · `,u]}),_&&_!==u&&(0,Q.jsx)(se,{sx:{mb:2},onClose:()=>y(g),children:_}),n&&e&&(0,Q.jsx)(He,{project:n,stack:e,requiresRelease:!!U,managed:!!I.config.managedOrigin,selected:I.selectedRelease?.id,onWorkingTree:I.selectedRelease&&G&&!K&&!U?()=>F(!0):void 0,onDeploy:()=>N(!0)}),I.type!==`local`&&W&&(0,Q.jsx)(v,{variant:`outlined`,sx:{mb:2,p:2},children:(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:2},children:[(0,Q.jsx)(L,{sx:{fontSize:20,color:`primary.main`}}),(0,Q.jsxs)(p,{sx:{flex:1},children:[(0,Q.jsxs)(w,{variant:`body2`,sx:{fontWeight:600},children:[I.nodes.filter(e=>e.connected).length,`/`,I.nodes.length,` node inventories observed`]}),(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[I.type===`remote`?`SSH`:`Cluster`,` deployment — `,Ge(I.nodes)]})]}),I.nodes.some(e=>!e.connected)&&(0,Q.jsx)(m,{label:`${I.nodes.filter(e=>!e.connected).length} unobserved`,size:`small`,color:`warning`,sx:{height:22,fontSize:`0.65rem`}})]})}),(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Applications (`,I.apps.length,`)`]}),(0,Q.jsx)(B,{scrollLabel:`Stack applications`,sx:{minWidth:640},columns:H,data:I.apps,rowKey:e=>e.handleKey,dense:!0,containerSx:{border:`none`,borderRadius:0},emptyContent:(0,Q.jsx)(w,{variant:`caption`,sx:{color:`text.disabled`},children:`No apps configured`})})]})}),(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Overview`}),(0,Q.jsx)(Y,{label:`Type`,value:I.type===`local`?`Local`:I.type===`remote`?`Remote (SSH)`:`Cluster`}),(0,Q.jsx)(Y,{label:`Apps`,value:`${I.apps.filter(e=>e.status===`online`).length} / ${I.apps.length}`}),(0,Q.jsx)(Y,{label:`Nodes`,value:`${I.nodes.filter(e=>e.connected).length} / ${I.nodes.length}`}),I.uptime>0&&(0,Q.jsx)(Y,{label:`Uptime`,value:ye(I.uptime)}),I.portRange&&(0,Q.jsx)(Y,{label:`Port Range`,value:`${I.portRange.start}–${I.portRange.end}`,mono:!0}),I.type===`local`?I.startedAt&&(0,Q.jsx)(Y,{label:`Started`,value:new Date(I.startedAt).toLocaleString()}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{label:`Started`,value:I.startedAt?`${new Date(I.startedAt).toLocaleString()}, as its nodes report`:`unknown — no node reported an app of it running`}),I.attachedAt&&(0,Q.jsx)(Y,{label:`Attached`,value:`${new Date(I.attachedAt).toLocaleString()} — by this master`})]})]})}),(0,Q.jsx)(qe,{stack:I}),I.type!==`local`&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:1},children:[(0,Q.jsx)(fe,{sx:{fontSize:16}}),(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Sync Status`})]}),I.nodes.map(e=>(0,Q.jsx)(Ke,{node:e},e.host)),I.nodes.length===0&&(0,Q.jsx)(w,{variant:`caption`,sx:{color:`text.disabled`},children:`No nodes configured`})]})}),I.nodes.length>0&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Nodes (`,I.nodes.length,`)`]}),(0,Q.jsx)(B,{scrollLabel:`Stack nodes`,sx:{minWidth:560},columns:Ce,data:I.nodes,rowKey:e=>e.host,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(we,{open:A,onClose:()=>N(!1),project:n??``,release:null,...e?{stack:e}:{}})}),(0,Q.jsxs)(re,{open:le,onClose:()=>F(!1),children:[(0,Q.jsx)(x,{children:`Start from the working tree?`}),(0,Q.jsx)(ne,{children:(0,Q.jsxs)(ie,{children:[I.name,` will start from its registered project directory. Future restarts will use that directory until you select a release.`]})}),(0,Q.jsxs)(b,{children:[(0,Q.jsx)(c,{onClick:()=>F(!1),children:`Cancel`}),(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{variant:`contained`,disabled:!G||K||U,onClick:()=>{F(!1),n&&e&&f(n,e,{workingTree:!0})},children:`Start from working tree`})})]})]}),(0,Q.jsxs)(re,{open:C,onClose:()=>T(!1),children:[(0,Q.jsx)(x,{children:`Delete Stack`}),(0,Q.jsx)(ne,{children:(0,Q.jsxs)(ie,{children:[`Are you sure you want to delete stack `,(0,Q.jsx)(`strong`,{children:I.name}),`? This action cannot be undone. All infrastructure configuration for this stack will be removed.`]})}),(0,Q.jsxs)(b,{children:[(0,Q.jsx)(c,{onClick:()=>T(!1),children:`Cancel`}),(0,Q.jsx)(M,{permission:`OmnitronProject.deleteStack`,children:(0,Q.jsx)(c,{onClick:xe,color:`error`,variant:`contained`,children:`Delete`})})]})]})]})}function Y({label:e,value:t,mono:n}){return(0,Q.jsxs)(p,{sx:{display:`flex`,justifyContent:`space-between`,py:.5},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,Q.jsx)(w,{variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function Ge(e){let t=e.map(e=>e.syncStatus?H(e.syncStatus):null),n=t.filter(e=>e?.state===`behind`).length,r=t.filter(e=>e?.state===`catching-up`).length,i=t.filter(e=>e?.state===`unknown`).length,a=t.filter(e=>e===null).length;return n+r+i+a===0?`replication in sync`:[n>0&&`${n} of ${e.length} behind`,r>0&&`${r} catching up`,i>0&&`${i} queue age unavailable`,a>0&&`${a} not reporting`].filter(Boolean).join(`, `)}function Ke({node:e}){let t=e.syncStatus,n=t?H(t):null;return(0,Q.jsxs)(p,{sx:{py:.75},children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,Q.jsx)(p,{sx:{width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`success.main`:`warning.main`}}),(0,Q.jsxs)(p,{children:[(0,Q.jsxs)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,fontWeight:600},children:[e.host,`:`,e.port]}),(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`},children:[e.daemonRole,e.label?` — ${e.label}`:``]})]})]}),t&&n?(0,Q.jsxs)(p,{sx:{textAlign:`right`},children:[(0,Q.jsx)(m,{label:Ce(n),size:`small`,color:W(n),variant:`outlined`,sx:{height:20,fontSize:`0.6rem`,fontWeight:600}}),t.lastSyncAt&&(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.disabled`,display:`block`,fontSize:`0.5rem`,mt:.25},children:[`last sync `,new Date(t.lastSyncAt).toLocaleTimeString()]})]}):(0,Q.jsx)(m,{label:e.connected?`Inventory observed`:`Inventory unavailable`,size:`small`,color:e.connected?`success`:`warning`,variant:`outlined`,sx:{height:20,fontSize:`0.6rem`}})]}),t?.lastError&&(0,Q.jsx)(w,{variant:`caption`,sx:{color:`error.main`,fontSize:`0.55rem`,mt:.25,display:`block`,ml:2.5},children:t.lastError})]})}function qe({stack:e}){let t=e.config?.infrastructure,n=e.infrastructure?.services??{},r=t&&Object.keys(t).length>0,i=Object.keys(n).length>0;if(!r&&!i)return null;let a=t?.postgres,o=t?.redis,c=t?.minio;return(0,Q.jsxs)(Q.Fragment,{children:[a&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`PostgreSQL`}),(0,Q.jsx)(X,{name:`postgres`,runtime:n})]}),(0,Q.jsx)(Y,{label:`Port`,value:String(a.port??5432),mono:!0}),a.databases&&Object.keys(a.databases).length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Databases (`,Object.keys(a.databases).length,`)`]}),Object.entries(a.databases).map(([e,t])=>(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e}),t?.migrate&&(0,Q.jsx)(m,{label:`migrate`,size:`small`,sx:{height:16,fontSize:`0.55rem`}})]},e))]})]})}),o&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Redis`}),(0,Q.jsx)(X,{name:`redis`,runtime:n})]}),(0,Q.jsx)(Y,{label:`Port`,value:String(o.port??6379),mono:!0}),o.databases&&Object.keys(o.databases).length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`DB Allocations (`,Object.keys(o.databases).length,`)`]}),Object.entries(o.databases).map(([e,t])=>{let n=e.includes(`:`);return(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:n?e.split(`:`)[1]:e}),(0,Q.jsxs)(p,{sx:{display:`flex`,gap:.5,alignItems:`center`},children:[n&&(0,Q.jsx)(m,{label:e.split(`:`)[0],size:`small`,variant:`outlined`,sx:{height:16,fontSize:`0.5rem`}}),(0,Q.jsxs)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.75rem`,color:`text.secondary`,minWidth:28,textAlign:`right`},children:[`DB `,t]})]})]},e)})]})]})}),c&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`MinIO / S3`}),(0,Q.jsx)(X,{name:`minio`,runtime:n})]}),c.ports&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{label:`API Port`,value:String(c.ports.api??9e3),mono:!0}),(0,Q.jsx)(Y,{label:`Console Port`,value:String(c.ports.console??9001),mono:!0})]}),c.buckets&&c.buckets.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Buckets (`,c.buckets.length,`)`]}),c.buckets.map(e=>(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,pl:1,py:.25},children:e},e))]})]})})]})}function X({name:e,runtime:t}){let n=t[e];return n?(0,Q.jsxs)(O,{spacing:.5,sx:{alignItems:`flex-end`,minWidth:0,maxWidth:320},children:[(0,Q.jsx)(m,{label:n.provisioning===`pending`?`Setup pending`:n.status,size:`small`,color:n.status===`error`?`error`:n.provisioning===`pending`?`warning`:n.status===`running`?`success`:`default`}),n.error&&(0,Q.jsx)(w,{variant:`caption`,color:`error.main`,sx:{overflowWrap:`anywhere`},children:n.error})]}):(0,Q.jsx)(m,{label:`Stopped`,size:`small`,sx:{height:18,fontSize:`0.6rem`}})}var Z,Q,$;function Je(){return(Je=e((()=>{xe(),Fe(),je(),Oe(),Le(),Ae(),N(),Z=t(),o(),l(),k(),d(),ee(),C(),f(),u(),h(),E(),_(),te(),g(),S(),y(),A(),V(),Ve(),z(),I(),F(),G(),R(),Ue(),le(),U(),Q=n(),$={running:`#22c55e`,starting:`#eab308`,stopping:`#eab308`,degraded:`#f97316`,error:`#ef4444`,stopped:`#6b7280`}})))()}Je();export{We as default};
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,P as i,V as a,z as o}from"./client-CgyTwq9g.js";import{D as s,F as c,H as l,I as u,M as d,O as ee,Q as f,V as p,Z as m,c as te,ct as h,d as ne,f as g,g as _,h as re,j as v,l as ie,m as y,p as b,s as x,st as ae,u as S}from"./mui-SNRRJ_vi.js";import{B as C,z as w}from"./mui-B3fJdIMc.js";import{E as T,T as oe,it as E,rt as D}from"./mui-CMWGTMXv.js";import{_ as O,v as k}from"./mui-CPEkFAPo.js";import{n as se,r as A,t as j}from"./alert-BdJ2uaY0.js";import{n as M,s as N}from"./access-I0f72P9m.js";import{r as ce,t as le}from"./use-polled-resource-B22hhr5L.js";import{i as P,n as ue,r as de,t as F}from"./project.store-D5IR3fo9.js";import{B as fe,G as I,M as pe,k as me,m as L,p as he,z as ge}from"./icons-B9Ct8PJ9.js";import{n as R,t as _e}from"./operation-status-DHyYOT7G.js";import{n as z,t as B}from"./table-D-so_B1p.js";import{n as V,t as ve}from"./page-breadcrumbs-3R8RZ3nA.js";import{s as ye}from"./formatters-RnRy4bXm.js";import{n as be,r as xe,t as Se}from"./stack-health-status-DfErRNb1.js";import{a as H,c as Ce,r as U,s as W}from"./sync-reading-CN0jPKAg.js";import{n as G,t as we}from"./deploy-release-dialog-CnzaO_xL.js";import{n as Te,t as K}from"./release-deployment-state-BfmxZP4Y.js";import{a as Ee,c as De,i as Oe,l as ke,n as Ae,o as je,r as Me,s as Ne,t as Pe,u as Fe}from"./stack-start-notice-NkYDjR-f.js";function Ie({operation:e}){if(!e||e.supersededAt)return null;let t=e.phase===`failed`,n=e.phase===`stopped`,r=e.nodes.filter(e=>e.outcome===`stopped`).length;if(n&&!e.nodes.length)return null;let i=e.nodes.map(e=>(0,q.jsxs)(p,{sx:{display:`flex`,flexWrap:`wrap`,columnGap:1.5,mt:.75},children:[(0,q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,overflowWrap:`anywhere`},children:e.node}),(0,q.jsx)(w,{variant:`body2`,children:e.outcome===`unknown`?`Awaiting confirmation`:e.outcome}),e.authority&&(0,q.jsxs)(w,{variant:`caption`,sx:{overflowWrap:`anywhere`},children:[e.authority.clusterId,` · epoch `,e.authority.epoch,` · `,e.authority.nodeId]}),e.reason&&(0,q.jsx)(w,{variant:`caption`,sx:{width:`100%`,overflowWrap:`anywhere`},children:e.reason})]},e.node));return n?(0,q.jsxs)(p,{component:`details`,sx:{mb:2,minWidth:0,typography:`body2`,"& summary":{cursor:`pointer`}},children:[(0,q.jsxs)(`summary`,{children:[`Stop confirmed · `,r,`/`,e.nodes.length,` nodes`]}),i]}):(0,q.jsx)(j,{severity:t?`error`:`info`,sx:{mb:2,minWidth:0},children:(0,q.jsxs)(p,{role:`status`,"aria-live":`polite`,sx:{minWidth:0},children:[(0,q.jsxs)(w,{variant:`subtitle2`,children:[t?e.intentCommitted?`Stop not confirmed`:`Stop declined before execution`:e.phase===`preparing`?`Checking stop ownership`:`Stopping stack`,e.nodes.length>0&&` · ${r}/${e.nodes.length} nodes confirmed`]}),!t&&(0,q.jsx)(oe,{"aria-label":`Stack stop in progress`,sx:{mt:1,mb:1.5}}),e.error&&(0,q.jsx)(w,{variant:`body2`,sx:{overflowWrap:`anywhere`},children:e.error}),i]})})}var q;function Le(){return(Le=e((()=>{l(),C(),T(),A(),q=n()})))()}function Re({children:e,gap:t=Be,fill:n,sx:r,ref:i,...a}){return(0,ze.jsx)(O,{ref:i,spacing:t,sx:{...n&&{flex:1},...r},...a,children:e})}var ze,Be;function Ve(){return(Ve=e((()=>{t(),k(),ze=n(),Be=3})))()}function He({project:e,stack:t,requiresRelease:n,managed:r,selected:i,onDeploy:a,onWorkingTree:o}){return(0,J.jsxs)(p,{sx:{mb:2,minWidth:0},children:[!r&&(0,J.jsxs)(O,{direction:`row`,useFlexGap:!0,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`,mb:1},children:[i&&(0,J.jsx)(m,{label:`Selected: `+i,size:`small`,variant:`outlined`}),n&&(0,J.jsx)(m,{label:`Release required`,size:`small`,variant:`outlined`}),(0,J.jsx)(p,{sx:{flex:1}}),o&&(0,J.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,J.jsx)(c,{size:`small`,onClick:o,children:`Use working tree…`})}),(0,J.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,J.jsx)(c,{size:`small`,startIcon:(0,J.jsx)(L,{}),onClick:a,children:`Deploy release…`})})]}),(0,J.jsx)(K,{project:e,stack:t},`${e}/${t}`)]})}var J;function Ue(){return(Ue=e((()=>{l(),u(),f(),k(),N(),I(),Te(),J=n()})))()}function We(){let{name:e}=r(),t=a(),n=ue(),o=de(),l=P(e=>!!(n&&e.stacksByProject[n])),u=P(e=>n?e.stackReadErrors[n]:null),d=P(e=>e.fetchStacks),ee=P(e=>e.resumeInstalledStack),f=P(e=>e.startStack),te=P(e=>e.stopStack),h=P(e=>e.deleteStack),g=`${n}/${e}`,_=P(e=>e.stackNotices[g]),y=P(e=>e.clearStackNotice),S=P(e=>e.pendingOps),[C,T]=(0,Z.useState)(!1),[oe,E]=(0,Z.useState)(!1),[O,k]=(0,Z.useState)(!1),[A,N]=(0,Z.useState)(!1),[le,F]=(0,Z.useState)(!1),I=o.find(t=>t.name===e),R=n&&e?S[`${n}/${e}`]??null:null,z=Object.keys(S).length>0;ce(()=>void(n&&d(n)),{intervalMs:z?3e3:1e4,enabled:!!n,resourceKey:n});let V=(0,Z.useCallback)(async()=>{n&&e&&await f(n,e)},[n,e,f]),xe=(0,Z.useCallback)(async()=>{if(n&&e){try{await h(n,e),t(`/stacks`)}catch{}T(!1)}},[n,e,h,t]);if(!I&&n&&u)return(0,Q.jsxs)(j,{severity:`error`,children:[`Stack inventory unavailable · `,u,` `,(0,Q.jsx)(c,{onClick:()=>void d(n),children:`Retry`})]});if(!I&&n&&!l)return(0,Q.jsx)(_e,{active:!0,label:`Reading stack inventory`});if(!I)return(0,Q.jsx)(Re,{children:(0,Q.jsxs)(j,{severity:`warning`,children:[`Stack "`,e,`" not found.`,` `,(0,Q.jsx)(c,{size:`small`,onClick:()=>t(`/stacks`),children:`Back to Stacks`})]})});let H=[{id:`name`,label:`App`,render:e=>(0,Q.jsx)(p,{sx:{fontWeight:600},children:e.name})},{id:`status`,label:`Process`,render:e=>(0,Q.jsx)(m,{label:e.status,size:`small`,color:e.status===`online`?`success`:e.status===`crashed`||e.status===`errored`?`error`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`health`,label:`Health`,render:e=>(0,Q.jsx)(Se,{status:e.health})},{id:`pid`,label:`PID`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.pid??`—`})},{id:`instances`,label:`Instances`,render:e=>e.instances},{id:`uptime`,label:`Uptime`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.uptime>0?ye(e.uptime):`—`})}],Ce=[{id:`host`,label:`Host`,render:e=>(0,Q.jsxs)(p,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:[e.host,`:`,e.port,e.label&&(0,Q.jsxs)(w,{component:`span`,variant:`caption`,sx:{ml:1,color:`text.secondary`},children:[`(`,e.label,`)`]})]})},{id:`role`,label:`Role`,render:e=>(0,Q.jsx)(m,{label:e.role,size:`small`,sx:{height:18,fontSize:`0.6rem`}})},{id:`daemonRole`,label:`Daemon`,render:e=>(0,Q.jsx)(m,{label:e.daemonRole,size:`small`,color:e.daemonRole===`master`?`primary`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`connected`,label:`Status`,render:e=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(p,{component:`span`,sx:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`success.main`:`warning.main`,mr:.5}}),e.connected?`Inventory observed`:`Inventory unavailable`]})},{id:`lastSeen`,label:`Last Seen`,render:e=>(0,Q.jsx)(p,{sx:{fontFamily:`monospace`,fontSize:`0.75rem`},children:e.lastSeen?new Date(e.lastSeen).toLocaleTimeString():`—`})}],U=I.config?.release?.mode===`required`,W=[`running`,`degraded`,`error`,`unknown`,`stopping`].includes(I.status),G=I.status===`stopped`,Te=I.status===`starting`||I.status===`stopping`||!!R,K=!!R;return(0,Q.jsxs)(Re,{children:[(0,Q.jsx)(ve,{linkComponent:i,links:[{name:`Stacks`,href:`/stacks`},{name:I.name}],action:(0,Q.jsxs)(p,{sx:{display:`flex`,gap:1,alignItems:`center`,flexWrap:`wrap`},children:[G&&!K&&(0,Q.jsx)(M,{permission:`OmnitronProject.deleteStack`,children:(0,Q.jsx)(D,{size:`small`,color:`error`,onClick:()=>T(!0),title:`Delete stack`,"aria-label":`Delete stack ${I.name}`,sx:{marginInlineEnd:1},children:(0,Q.jsx)(he,{})})}),(0,Q.jsx)(m,{label:I.status.charAt(0).toUpperCase()+I.status.slice(1),size:`small`,sx:{bgcolor:$[I.status]??$.stopped,color:`white`,fontWeight:600}}),(0,Q.jsx)(M,{permission:`OmnitronProject.diagnoseStack`,children:(0,Q.jsx)(c,{size:`small`,onClick:()=>k(!0),children:`Diagnose`})}),(0,Q.jsx)(D,{size:`small`,"aria-label":`Refresh stack`,title:`Refresh stack`,onClick:()=>n&&d(n),children:(0,Q.jsx)(pe,{})}),Te?(0,Q.jsx)(c,{variant:`outlined`,size:`small`,disabled:!0,startIcon:(0,Q.jsx)(ae,{size:14}),children:R===`resuming`?`Resuming installed apps…`:R===`starting`||I.status===`starting`?`Starting…`:`Stopping…`}):n&&e&&ke(I)?(0,Q.jsx)(Ne,{stack:I,onResume:()=>void ee(n,e),onReviewStop:()=>E(!0)}):G?U&&!I.selectedRelease?(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(L,{}),color:`success`,variant:`contained`,size:`small`,onClick:()=>N(!0),children:`Deploy release…`})}):(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(me,{}),color:`success`,variant:`contained`,size:`small`,onClick:V,children:`Start`})}):W?(0,Q.jsx)(M,{permission:`OmnitronProject.reviewStackStop`,children:(0,Q.jsx)(c,{startIcon:(0,Q.jsx)(ge,{}),color:`error`,variant:`outlined`,size:`small`,onClick:()=>E(!0),children:I.stopOperation?.phase===`failed`&&!I.stopOperation.supersededAt?`Review retry…`:`Review stop…`})}):null]})}),oe&&n&&e&&(0,Q.jsx)(Ee,{project:n,stack:e,onClose:()=>E(!1),onConfirm:(t,r)=>{E(!1),te(n,e,t,r)}},`${n}/${e}`),O&&n&&e&&(0,Q.jsx)(Me,{project:n,stack:e,onClose:()=>k(!1)},`${n}/${e}`),(0,Q.jsx)(Ie,{operation:I.stopOperation}),(0,Q.jsx)(De,{stack:I}),(0,Q.jsx)(Pe,{stack:I}),(0,Q.jsx)(be,{stack:I}),u&&(0,Q.jsxs)(j,{severity:`warning`,children:[`Showing the last stack inventory · `,u]}),_&&_!==u&&(0,Q.jsx)(se,{sx:{mb:2},onClose:()=>y(g),children:_}),n&&e&&(0,Q.jsx)(He,{project:n,stack:e,requiresRelease:!!U,managed:!!I.config.managedOrigin,selected:I.selectedRelease?.id,onWorkingTree:I.selectedRelease&&G&&!K&&!U?()=>F(!0):void 0,onDeploy:()=>N(!0)}),I.type!==`local`&&W&&(0,Q.jsx)(v,{variant:`outlined`,sx:{mb:2,p:2},children:(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:2},children:[(0,Q.jsx)(L,{sx:{fontSize:20,color:`primary.main`}}),(0,Q.jsxs)(p,{sx:{flex:1},children:[(0,Q.jsxs)(w,{variant:`body2`,sx:{fontWeight:600},children:[I.nodes.filter(e=>e.connected).length,`/`,I.nodes.length,` node inventories observed`]}),(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[I.type===`remote`?`SSH`:`Cluster`,` deployment — `,Ge(I.nodes)]})]}),I.nodes.some(e=>!e.connected)&&(0,Q.jsx)(m,{label:`${I.nodes.filter(e=>!e.connected).length} unobserved`,size:`small`,color:`warning`,sx:{height:22,fontSize:`0.65rem`}})]})}),(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Applications (`,I.apps.length,`)`]}),(0,Q.jsx)(B,{scrollLabel:`Stack applications`,sx:{minWidth:640},columns:H,data:I.apps,rowKey:e=>e.handleKey,dense:!0,containerSx:{border:`none`,borderRadius:0},emptyContent:(0,Q.jsx)(w,{variant:`caption`,sx:{color:`text.disabled`},children:`No apps configured`})})]})}),(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Overview`}),(0,Q.jsx)(Y,{label:`Type`,value:I.type===`local`?`Local`:I.type===`remote`?`Remote (SSH)`:`Cluster`}),(0,Q.jsx)(Y,{label:`Apps`,value:`${I.apps.filter(e=>e.status===`online`).length} / ${I.apps.length}`}),(0,Q.jsx)(Y,{label:`Nodes`,value:`${I.nodes.filter(e=>e.connected).length} / ${I.nodes.length}`}),I.uptime>0&&(0,Q.jsx)(Y,{label:`Uptime`,value:ye(I.uptime)}),I.portRange&&(0,Q.jsx)(Y,{label:`Port Range`,value:`${I.portRange.start}–${I.portRange.end}`,mono:!0}),I.type===`local`?I.startedAt&&(0,Q.jsx)(Y,{label:`Started`,value:new Date(I.startedAt).toLocaleString()}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{label:`Started`,value:I.startedAt?`${new Date(I.startedAt).toLocaleString()}, as its nodes report`:`unknown — no node reported an app of it running`}),I.attachedAt&&(0,Q.jsx)(Y,{label:`Attached`,value:`${new Date(I.attachedAt).toLocaleString()} — by this master`})]})]})}),(0,Q.jsx)(qe,{stack:I}),I.type!==`local`&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:1},children:[(0,Q.jsx)(fe,{sx:{fontSize:16}}),(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Sync Status`})]}),I.nodes.map(e=>(0,Q.jsx)(Ke,{node:e},e.host)),I.nodes.length===0&&(0,Q.jsx)(w,{variant:`caption`,sx:{color:`text.disabled`},children:`No nodes configured`})]})}),I.nodes.length>0&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Nodes (`,I.nodes.length,`)`]}),(0,Q.jsx)(B,{scrollLabel:`Stack nodes`,sx:{minWidth:560},columns:Ce,data:I.nodes,rowKey:e=>e.host,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(we,{open:A,onClose:()=>N(!1),project:n??``,release:null,...e?{stack:e}:{}})}),(0,Q.jsxs)(re,{open:le,onClose:()=>F(!1),children:[(0,Q.jsx)(x,{children:`Start from the working tree?`}),(0,Q.jsx)(ne,{children:(0,Q.jsxs)(ie,{children:[I.name,` will start from its registered project directory. Future restarts will use that directory until you select a release.`]})}),(0,Q.jsxs)(b,{children:[(0,Q.jsx)(c,{onClick:()=>F(!1),children:`Cancel`}),(0,Q.jsx)(M,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(c,{variant:`contained`,disabled:!G||K||U,onClick:()=>{F(!1),n&&e&&f(n,e,{workingTree:!0})},children:`Start from working tree`})})]})]}),(0,Q.jsxs)(re,{open:C,onClose:()=>T(!1),children:[(0,Q.jsx)(x,{children:`Delete Stack`}),(0,Q.jsx)(ne,{children:(0,Q.jsxs)(ie,{children:[`Are you sure you want to delete stack `,(0,Q.jsx)(`strong`,{children:I.name}),`? This action cannot be undone. All infrastructure configuration for this stack will be removed.`]})}),(0,Q.jsxs)(b,{children:[(0,Q.jsx)(c,{onClick:()=>T(!1),children:`Cancel`}),(0,Q.jsx)(M,{permission:`OmnitronProject.deleteStack`,children:(0,Q.jsx)(c,{onClick:xe,color:`error`,variant:`contained`,children:`Delete`})})]})]})]})}function Y({label:e,value:t,mono:n}){return(0,Q.jsxs)(p,{sx:{display:`flex`,justifyContent:`space-between`,py:.5},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,Q.jsx)(w,{variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function Ge(e){let t=e.map(e=>e.syncStatus?H(e.syncStatus):null),n=t.filter(e=>e?.state===`behind`).length,r=t.filter(e=>e?.state===`catching-up`).length,i=t.filter(e=>e?.state===`unknown`).length,a=t.filter(e=>e===null).length;return n+r+i+a===0?`replication in sync`:[n>0&&`${n} of ${e.length} behind`,r>0&&`${r} catching up`,i>0&&`${i} queue age unavailable`,a>0&&`${a} not reporting`].filter(Boolean).join(`, `)}function Ke({node:e}){let t=e.syncStatus,n=t?H(t):null;return(0,Q.jsxs)(p,{sx:{py:.75},children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,Q.jsx)(p,{sx:{width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`success.main`:`warning.main`}}),(0,Q.jsxs)(p,{children:[(0,Q.jsxs)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,fontWeight:600},children:[e.host,`:`,e.port]}),(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`},children:[e.daemonRole,e.label?` — ${e.label}`:``]})]})]}),t&&n?(0,Q.jsxs)(p,{sx:{textAlign:`right`},children:[(0,Q.jsx)(m,{label:Ce(n),size:`small`,color:W(n),variant:`outlined`,sx:{height:20,fontSize:`0.6rem`,fontWeight:600}}),t.lastSyncAt&&(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.disabled`,display:`block`,fontSize:`0.5rem`,mt:.25},children:[`last sync `,new Date(t.lastSyncAt).toLocaleTimeString()]})]}):(0,Q.jsx)(m,{label:e.connected?`Inventory observed`:`Inventory unavailable`,size:`small`,color:e.connected?`success`:`warning`,variant:`outlined`,sx:{height:20,fontSize:`0.6rem`}})]}),t?.lastError&&(0,Q.jsx)(w,{variant:`caption`,sx:{color:`error.main`,fontSize:`0.55rem`,mt:.25,display:`block`,ml:2.5},children:t.lastError})]})}function qe({stack:e}){let t=e.config?.infrastructure,n=e.infrastructure?.services??{},r=t&&Object.keys(t).length>0,i=Object.keys(n).length>0;if(!r&&!i)return null;let a=t?.postgres,o=t?.redis,c=t?.minio;return(0,Q.jsxs)(Q.Fragment,{children:[a&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`PostgreSQL`}),(0,Q.jsx)(X,{name:`postgres`,runtime:n})]}),(0,Q.jsx)(Y,{label:`Port`,value:String(a.port??5432),mono:!0}),a.databases&&Object.keys(a.databases).length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Databases (`,Object.keys(a.databases).length,`)`]}),Object.entries(a.databases).map(([e,t])=>(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e}),t?.migrate&&(0,Q.jsx)(m,{label:`migrate`,size:`small`,sx:{height:16,fontSize:`0.55rem`}})]},e))]})]})}),o&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Redis`}),(0,Q.jsx)(X,{name:`redis`,runtime:n})]}),(0,Q.jsx)(Y,{label:`Port`,value:String(o.port??6379),mono:!0}),o.databases&&Object.keys(o.databases).length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`DB Allocations (`,Object.keys(o.databases).length,`)`]}),Object.entries(o.databases).map(([e,t])=>{let n=e.includes(`:`);return(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:n?e.split(`:`)[1]:e}),(0,Q.jsxs)(p,{sx:{display:`flex`,gap:.5,alignItems:`center`},children:[n&&(0,Q.jsx)(m,{label:e.split(`:`)[0],size:`small`,variant:`outlined`,sx:{height:16,fontSize:`0.5rem`}}),(0,Q.jsxs)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.75rem`,color:`text.secondary`,minWidth:28,textAlign:`right`},children:[`DB `,t]})]})]},e)})]})]})}),c&&(0,Q.jsx)(v,{variant:`outlined`,children:(0,Q.jsxs)(s,{children:[(0,Q.jsxs)(p,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,Q.jsx)(w,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`MinIO / S3`}),(0,Q.jsx)(X,{name:`minio`,runtime:n})]}),c.ports&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{label:`API Port`,value:String(c.ports.api??9e3),mono:!0}),(0,Q.jsx)(Y,{label:`Console Port`,value:String(c.ports.console??9001),mono:!0})]}),c.buckets&&c.buckets.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Buckets (`,c.buckets.length,`)`]}),c.buckets.map(e=>(0,Q.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,pl:1,py:.25},children:e},e))]})]})})]})}function X({name:e,runtime:t}){let n=t[e];return n?(0,Q.jsxs)(O,{spacing:.5,sx:{alignItems:`flex-end`,minWidth:0,maxWidth:320},children:[(0,Q.jsx)(m,{label:n.provisioning===`pending`?`Setup pending`:n.status,size:`small`,color:n.status===`error`?`error`:n.provisioning===`pending`?`warning`:n.status===`running`?`success`:`default`}),n.error&&(0,Q.jsx)(w,{variant:`caption`,color:`error.main`,sx:{overflowWrap:`anywhere`},children:n.error})]}):(0,Q.jsx)(m,{label:`Stopped`,size:`small`,sx:{height:18,fontSize:`0.6rem`}})}var Z,Q,$;function Je(){return(Je=e((()=>{xe(),Fe(),je(),Oe(),Le(),Ae(),N(),Z=t(),o(),l(),k(),d(),ee(),C(),f(),u(),h(),E(),_(),te(),g(),S(),y(),A(),V(),Ve(),z(),I(),F(),G(),R(),Ue(),le(),U(),Q=n(),$={running:`#22c55e`,starting:`#eab308`,stopping:`#eab308`,degraded:`#f97316`,error:`#ef4444`,stopped:`#6b7280`}})))()}Je();export{We as default};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,O as i,S as a,h as o,l as s,z as c}from"./client-DFnuv2z3.js";import{Vt as l,Yt as u}from"./mui-BTN91yBK.js";import{D as d,F as f,H as p,I as m,M as h,O as g,Q as _,V as v,Z as y,at as b,ct as x,i as S,j as C,ot as w,r as T,st as E}from"./mui-BXSXx9c9.js";import{A as D,B as O,C as k,D as A,F as j,I as M,O as ee,S as te,a as ne,b as re,d as N,f as ie,k as ae,o as oe,w as se,x as ce,y as le,z as P}from"./mui-Cd711nOk.js";import{B as ue,it as de,l as fe,rt as pe,u as me,z as F}from"./mui-AnEgAVjz.js";import{_ as I,v as L}from"./mui-BwsIrivo.js";import{r as he,t as R}from"./alert-uBG6r9NW.js";import{c as z,l as ge,n as B,s as V,u as _e}from"./access-BvKK9dEv.js";import{n as ve,t as ye}from"./use-polled-resource-B22hhr5L.js";import{b as H,i as U,m as W,p as be,t as xe,x as Se}from"./project.store-DuCgv6Eq.js";import{G as Ce,M as we,m as Te}from"./icons-OboZgWSt.js";import{n as Ee,t as De}from"./operation-status-Bm1x1wTz.js";import{n as Oe,t as ke}from"./page-breadcrumbs-fR7Jmpp4.js";import{i as Ae,r as je}from"./deploy-progress-CUUwlYtQ.js";import{c as Me,d as Ne,f as Pe,i as G,o as Fe,p as Ie,s as K,u as Le}from"./release-bits-BJ6i23y0.js";import{n as Re,t as ze}from"./deploy-release-dialog-58lGZDNk.js";import{n as Be,t as Ve}from"./release-build-panel-BNXkwNE1.js";import{n as He,t as Ue}from"./release-deployment-state-gN8ZT3aq.js";function We(e,t){return s.invoke(`daemon`,`OmnitronRelease`,`attestOnNode`,[{release:e,stack:t}],{timeout:6e5})}function Ge({output:e}){let[t,n]=(0,q.useState)(!1);return(0,J.jsxs)(v,{sx:{pl:2,mb:.5},children:[(0,J.jsx)(f,{size:`small`,onClick:()=>n(e=>!e),sx:{minWidth:0,p:0,fontSize:11,textTransform:`none`},children:t?`hide what it printed`:`what it printed`}),t&&(0,J.jsx)(v,{component:`pre`,sx:{m:0,mt:.5,p:1,maxHeight:240,overflow:`auto`,borderRadius:1,bgcolor:`action.hover`,fontFamily:`monospace`,fontSize:11,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:e})]})}function Ke({attestation:e}){let t=e.cleanup;if(!t&&!e.legalTextsUnread)return null;let n=Object.entries(t?.removed??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`),r=Object.entries(t?.retired??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`);return(0,J.jsxs)(v,{sx:{mt:.75,pl:1},"data-testid":`cleanup-${e.stack}`,children:[t&&(0,J.jsx)(P,{variant:`caption`,sx:{display:`block`,color:t.failed||t.run===null?`warning.main`:`text.secondary`},children:t.run===null?`cleanup not run — ${t.notRun??`the run had no name to remove by`}`:`cleanup: run ${t.run} removed ${n.length?n.join(`, `):`nothing — it had made nothing to remove`}`+(t.failed?` — FAILED: ${t.failed}`:``)}),r.length>0&&(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`retired: `,r.join(`, `),` — blocked in place, their real-chain addresses still watched`]}),(t?.leftBehind??[]).map(e=>(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`left behind: `,e.what,` — `,e.why.join(`; `)||`no reason given`]},e.what)),e.legalTextsUnread&&(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`legal texts could not be read — `,e.legalTextsUnread]})]})}function qe({releaseId:e,project:t,attestations:n,onChanged:r}){let{can:a}=z(),o=a(`OmnitronRelease.attestOnNode`),s=a(`OmnitronProject.listStacks`),c=U(e=>e.stacksByProject),l=U(e=>e.fetchStacks),u=(0,q.useMemo)(()=>(c[t]??[]).filter(e=>e.type!==`local`),[c,t]),[p,m]=(0,q.useState)(``),[h,g]=(0,q.useState)(!1),[_,x]=(0,q.useState)(null),[S,w]=(0,q.useState)(null),[T,D]=(0,q.useState)(null),[O,k]=(0,q.useState)(!1);(0,q.useEffect)(()=>{o&&s&&!c[t]&&l(t)},[o,s,t,c,l]),(0,q.useEffect)(()=>{!p&&u.length>0&&m(u[0].name)},[u,p]);let A=!!(T&&n.some(e=>e.stack===T.stack&&e.storedAt!==T.previous));(0,q.useEffect)(()=>{if(!T)return;if(A){D(null);return}let e=setInterval(r,5e3),t=setTimeout(()=>{k(!0),D(null)},6e5);return()=>{clearInterval(e),clearTimeout(t)}},[T,A,r]);let M=(0,q.useCallback)(async()=>{if(!p)return;let t=n.find(e=>e.stack===p)?.storedAt;k(!1),g(!0),w(null),x(null);try{x(await We(e,p)),r()}catch(e){let n=e.message;i(e)?D({stack:p,previous:t}):w(n)}finally{g(!1)}},[e,p,n,r]);return(0,J.jsx)(C,{variant:`outlined`,children:(0,J.jsxs)(d,{children:[(0,J.jsxs)(I,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,J.jsx)(P,{variant:`subtitle2`,children:`Verified on stacks`}),(0,J.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:`probes a running stack measured against this release`}),(0,J.jsx)(v,{sx:{flex:1}}),o&&s&&u.length>0&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ne,{select:!0,size:`small`,value:p,onChange:e=>m(e.target.value),disabled:h||T!==null,sx:{minWidth:120},children:u.map(e=>(0,J.jsx)(fe,{value:e.name,children:e.name},e.name))}),(0,J.jsx)(j,{title:`Uploads this release's own scripts to the stack's node and runs the probes there, under the node's deploy lease. The stack should be carrying this release — an attestation older than the last deployment is refused.`,arrow:!0,children:(0,J.jsx)(`span`,{children:(0,J.jsx)(f,{size:`small`,variant:`outlined`,onClick:()=>void M(),disabled:h||T!==null||!p,startIcon:h||T!==null?(0,J.jsx)(E,{size:14}):void 0,children:h?`Running on the node…`:T===null?`Run the probes`:`Awaiting result…`})})})]})]}),T!==null&&(0,J.jsxs)(b,{severity:`info`,sx:{mb:1.5},children:[`The gateway did not return a result. Checking for a new attestation on `,T.stack,` before another run.`]}),O&&(0,J.jsx)(b,{severity:`warning`,sx:{mb:1.5},children:`No new attestation was recorded within ten minutes. Inspect the node logs before retrying.`}),_&&(0,J.jsxs)(b,{severity:_.passed===_.gates?`success`:`warning`,sx:{mb:1.5},children:[_.passed,` of `,_.gates,` probes passed on `,_.node,` — probes from`,` `,_.scriptsFrom===`release`?`the release itself`:`the release's commit`,typeof _.sourceFiles==`number`&&(_.sourceFiles>0?`, with ${_.sourceFiles} application source files from that commit`:`, with no application sources — probes that read code said NOT RUN`),`.`,_.accounts?Je[_.accounts]:``]}),S&&(0,J.jsx)(b,{severity:`error`,sx:{mb:1.5},children:(0,J.jsx)(P,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:S})}),n.length===0?(0,J.jsxs)(P,{variant:`body2`,sx:{color:`text.secondary`},children:[`No stack has attested this release. A stack whose policy declares `,(0,J.jsx)(`code`,{children:`verifiedOn`}),` refuses it until one does.`]}):(0,J.jsx)(I,{spacing:2,children:n.map(e=>{let t=e.gates.filter(e=>e.status===`passed`).length;return(0,J.jsxs)(v,{children:[(0,J.jsxs)(I,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,J.jsx)(y,{label:e.stack,size:`small`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,J.jsxs)(P,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,color:t===e.gates.length?`success.main`:`error.main`},children:[t,`/`,e.gates.length]}),(0,J.jsx)(Fe,{gates:e.gates,size:9}),(0,J.jsx)(v,{sx:{flex:1}}),(0,J.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[`measured `,Ie(e.at),e.onNode.hosts.length>0?` on ${e.onNode.hosts.join(`, `)}`:``]}),e.onNode.claimed&&(0,J.jsx)(j,{title:e.onNode.matched===!0?`The producer confirmed it ran on one of the stack's nodes.`:`The producer could not confirm the machine it ran on.`,arrow:!0,children:(0,J.jsx)(y,{label:e.onNode.matched===!0?`on the node`:`node unconfirmed`,size:`small`,color:e.onNode.matched===!0?`success`:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]}),e.gates.some(e=>e.status!==`passed`)&&(0,J.jsx)(v,{sx:{mt:.75,pl:1},children:e.gates.filter(e=>e.status!==`passed`).map(e=>(0,J.jsxs)(v,{children:[(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[(0,J.jsx)(v,{component:`span`,sx:{color:G[e.status].color,fontWeight:600},children:G[e.status].label}),` `,(0,J.jsx)(v,{component:`span`,sx:{fontFamily:`monospace`},children:e.name}),e.detail?` — ${e.detail}`:``]}),e.output&&(0,J.jsx)(Ge,{output:e.output})]},e.name))}),(0,J.jsx)(Ke,{attestation:e})]},e.stack)})})]})})}var q,J,Je;function Y(){return(Y=e((()=>{V(),q=t(),w(),p(),m(),h(),g(),_(),x(),me(),L(),oe(),M(),O(),o(),xe(),Le(),J=n(),Je={provisioned:` Accounts were created by the run and removed at its end.`,"not-declared":` No accounts were provisioned — the stack does not declare release.attest.provision, so probes that sign in said NOT RUN.`,"producer-cannot":` No accounts were provisioned — the stack allows it, but this release's producer predates --provision.`}})))()}function Ye({source:e}){return!e||e.state===`invalid`?(0,X.jsx)(P,{variant:`caption`,color:`warning.main`,sx:{overflowWrap:`anywhere`},children:e?.reason??`Per-application provenance unavailable from this daemon`}):(0,X.jsxs)(v,{component:`details`,sx:{minWidth:0,overflowWrap:`anywhere`,"& > summary":{cursor:`pointer`,fontSize:12,color:`text.secondary`,borderRadius:.5,"&:focus-visible":{outline:`2px solid`,outlineColor:`primary.main`,outlineOffset:2}}},children:[(0,X.jsx)(v,{component:`summary`,children:e.via.length?`Imported · ${e.producerApp}`:`Built in this release`}),(0,X.jsxs)(I,{spacing:.75,sx:{mt:1},children:[(0,X.jsx)(P,{variant:`caption`,children:e.releaseId}),(0,X.jsxs)(P,{variant:`caption`,children:[`Project · `,e.project.repo,(0,X.jsx)(`br`,{}),e.project.commit]}),e.packageDirectory&&(0,X.jsxs)(P,{variant:`caption`,children:[`Package · `,e.packageDirectory]}),(0,X.jsxs)(P,{variant:`caption`,children:[`SDK · `,e.framework.repo,(0,X.jsx)(`br`,{}),e.framework.commit]}),(0,X.jsx)(P,{variant:`caption`,children:Se(e.target)}),e.via.map((e,t)=>(0,X.jsxs)(P,{variant:`caption`,children:[`Via `,e.release,`/`,e.app,(0,X.jsx)(`br`,{}),`Manifest · `,e.manifestSha256]},`${t}:${e.manifestSha256}:${e.app}`)),(0,X.jsx)(P,{variant:`caption`,color:`text.secondary`,children:`Recorded build inputs; current execution is shown in Deployment state.`})]})]})}var X;function Xe(){return(Xe=e((()=>{p(),L(),O(),W(),X=n()})))()}function Ze(){let{id:e=``}=r();return(0,Q.jsx)(Qe,{id:e},e)}function Qe({id:e}){let{can:t}=z(),n=t(`OmnitronRelease.builds`),r=t(`OmnitronRelease.getLog`),i=(0,Z.useRef)(0),[o,s]=(0,Z.useState)(null),[c,u]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),{data:_,loading:b,error:x,refresh:S}=ve(async()=>{let[t,r]=await Promise.all([Ae.get(e),n?Ae.builds().then(e=>({records:e,error:null})).catch(e=>({records:[],error:e.message})):{records:[],error:null}]);return{detail:t,builds:r}},{intervalMs:15e3,enabled:!!e,resourceKey:JSON.stringify([e,n])}),w=(0,Z.useCallback)(async t=>{let n=++i.current;s(t),m(null),g(null);try{let r=await a.getLog({id:e,name:t,lines:400});n===i.current&&m({name:r.name,tail:r.tail})}catch(e){n===i.current&&g(e.message)}finally{n===i.current&&s(null)}},[e]);if(b&&!_)return(0,Q.jsx)(ge,{});if(x&&!_)return(0,Q.jsxs)(I,{spacing:3,children:[(0,Q.jsx)(ke,{links:[{name:`Releases`,href:`/releases`},{name:e}]}),(0,Q.jsx)(R,{severity:`error`,variant:`outlined`,children:x})]});let E=_.detail,D=E.manifest,O=_.builds.records.find(t=>t.releaseId===e)??null;return(0,Q.jsxs)(I,{spacing:3,children:[(0,Q.jsx)(ke,{links:[{name:`Releases`,href:`/releases`},{name:e}],action:(0,Q.jsxs)(I,{direction:`row`,spacing:1,children:[(0,Q.jsx)(pe,{"data-console-command":`refresh`,size:`small`,onClick:()=>void S(),title:`Refresh`,children:(0,Q.jsx)(we,{})}),(0,Q.jsx)(B,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(f,{variant:`contained`,size:`small`,startIcon:(0,Q.jsx)(Te,{}),disabled:!E.complete,onClick:()=>u(!0),children:`Deploy…`})})]})}),x&&(0,Q.jsxs)(R,{severity:`warning`,children:[`Last confirmed manifest · `,x]}),_?.builds.error&&(0,Q.jsxs)(R,{severity:`warning`,children:[`Build activity unavailable · `,_.builds.error]}),!E.complete&&(0,Q.jsx)(R,{severity:E.manifestError?`error`:`warning`,variant:`outlined`,children:E.manifestError??`This directory holds no manifest: the build did not finish, and what is here is its logs. Nothing can be deployed from it.`}),O&&(0,Q.jsx)(Ve,{record:O,compact:O.state!==`running`}),(0,Q.jsx)(Ue,{project:E.project},E.project),(0,Q.jsxs)(F,{container:!0,spacing:2,children:[(0,Q.jsx)(F,{size:{xs:12,md:6},children:(0,Q.jsx)(C,{variant:`outlined`,sx:{height:`100%`},children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Built from`}),(0,Q.jsx)(I,{spacing:1.5,children:[[`project`,E.projectCommit,E.projectRepo,E.onRemote.project],[`omni`,E.omniCommit,E.omniRepo,E.onRemote.omni]].map(([e,t,n,r])=>(0,Q.jsxs)(v,{children:[(0,Q.jsxs)(I,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,Q.jsx)(P,{variant:`body2`,sx:{fontWeight:600,minWidth:56},children:e===`project`?E.project:`omni`}),(0,Q.jsx)(P,{variant:`body2`,sx:{fontFamily:`monospace`},children:t?.slice(0,12)??`—`}),r===!1&&(0,Q.jsx)(j,{title:H({project:r,omni:!0},e===`project`?E.project:`omni`).detail,children:(0,Q.jsx)(y,{label:`Git: unpublished source`,size:`small`,color:`warning`,variant:`outlined`})}),r===null&&(0,Q.jsx)(j,{title:H({project:r,omni:!0},e===`project`?E.project:`omni`).detail,children:(0,Q.jsx)(y,{label:`Git: unverified`,size:`small`,variant:`outlined`})})]}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:n??`—`}),E.manifest?.[e]?.ref&&(0,Q.jsxs)(P,{component:`div`,variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:[`Required ref: `,E.manifest[e].ref]})]},e))})]})})}),(0,Q.jsx)(F,{size:{xs:12,md:6},children:(0,Q.jsx)(C,{variant:`outlined`,sx:{height:`100%`},children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Built with`}),(0,Q.jsxs)(I,{spacing:.75,children:[E.manifestSha256&&(0,Q.jsxs)(v,{component:`details`,sx:{overflowWrap:`anywhere`},children:[(0,Q.jsx)(P,{component:`summary`,variant:`caption`,sx:{cursor:`pointer`,color:`text.secondary`},children:`Manifest SHA-256`}),(0,Q.jsx)(P,{component:`code`,variant:`caption`,sx:{userSelect:`all`},children:E.manifestSha256})]}),(0,Q.jsxs)(P,{variant:`body2`,children:[Ie(E.builtAt),` · `,E.builtBy??`—`]}),(0,Q.jsxs)(P,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:13},children:[`omnitron `,E.builtWith??`—`]}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:Se(D?.builtWith?.target)}),(0,Q.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[D&&(0,Q.jsxs)(Q.Fragment,{children:[be(D),` · `]}),K(E.bytes),` on disk at `,E.root]}),E.statics&&(0,Q.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[`statics for `,(0,Q.jsx)(`strong`,{children:E.statics.stack}),` — `,E.statics.files,` files,`,` `,K(E.statics.bytes),` from `,D?.statics?.dir]}),E.machine&&(0,Q.jsxs)(P,{variant:`caption`,sx:{color:Pe(E.machine)?`warning.main`:`text.secondary`},children:[`machine while the gates ran: `,Ne(E.machine),Pe(E.machine)?` — load exceeded core count; inspect the gate logs for failure causes`:``]})]})]})})})]}),(0,Q.jsx)(C,{variant:`outlined`,children:(0,Q.jsxs)(d,{children:[(0,Q.jsxs)(I,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,Q.jsx)(P,{variant:`subtitle2`,children:`Gates`}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:E.gates.total===0?`none recorded — a stack that requires any refuses this release`:`${E.gates.passed} of ${E.gates.total} passed`}),(0,Q.jsx)(v,{sx:{flex:1}}),(0,Q.jsx)(Fe,{gates:E.gateList})]}),E.gateList.length>0&&(0,Q.jsx)(ce,{children:(0,Q.jsxs)(ae,{size:`small`,children:[(0,Q.jsx)(le,{children:(0,Q.jsxs)(N,{children:[(0,Q.jsx)(k,{children:`Gate`}),(0,Q.jsx)(k,{children:`Outcome`}),(0,Q.jsx)(k,{align:`right`,children:`Took`}),(0,Q.jsx)(k,{children:`Detail`})]})}),(0,Q.jsx)(A,{children:E.gateList.map((e,t)=>(0,Q.jsxs)(N,{children:[(0,Q.jsxs)(k,{sx:{fontFamily:`monospace`,fontSize:13},children:[e.name,e.checks!=null&&(0,Q.jsxs)(P,{component:`span`,variant:`caption`,sx:{color:`text.secondary`,ml:1},children:[e.checks,` checks`]})]}),(0,Q.jsx)(k,{children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:G[e.status].color,fontWeight:600},children:G[e.status].label})}),(0,Q.jsx)(k,{align:`right`,children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.durationMs?Me(e.durationMs):`—`})}),(0,Q.jsx)(k,{children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`,whiteSpace:`pre-wrap`},children:e.detail??``})})]},`${e.name}-${t}`))})]})})]})}),E.complete&&(0,Q.jsx)(qe,{releaseId:E.id,project:E.project,attestations:E.attestations,onChanged:S}),(0,Q.jsx)(C,{variant:`outlined`,children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Artifacts`}),(D?.artifacts??[]).length===0?(0,Q.jsx)(P,{variant:`body2`,sx:{color:`text.secondary`},children:`None.`}):(0,Q.jsx)(ce,{children:(0,Q.jsxs)(ae,{size:`small`,sx:{minWidth:540},children:[(0,Q.jsx)(le,{children:(0,Q.jsxs)(N,{children:[(0,Q.jsx)(k,{children:`App`}),(0,Q.jsx)(k,{children:`Source`}),(0,Q.jsx)(k,{align:`right`,children:`Size`}),(0,Q.jsx)(k,{children:`sha256`})]})}),(0,Q.jsx)(A,{children:(D?.artifacts??[]).map(e=>(0,Q.jsxs)(N,{children:[(0,Q.jsxs)(k,{sx:{verticalAlign:`top`,maxWidth:200,overflowWrap:`anywhere`},children:[(0,Q.jsx)(P,{variant:`body2`,sx:{fontWeight:600},children:e.app}),(0,Q.jsx)(P,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:e.version})]}),(0,Q.jsx)(k,{sx:{verticalAlign:`top`,maxWidth:360},children:(0,Q.jsx)(Ye,{source:E.artifactSources?.find(t=>t.app===e.app)})}),(0,Q.jsx)(k,{align:`right`,sx:{fontFamily:`monospace`,fontSize:13},children:K(e.bytes)}),(0,Q.jsx)(k,{children:(0,Q.jsx)(j,{title:e.sha256||`none recorded`,arrow:!0,children:(0,Q.jsx)(P,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:e.sha256?`${e.sha256.slice(0,16)}…`:`—`})})})]},`${e.app}-${e.version}`))})]})}),(D?.artifactFailures??[]).map(e=>(0,Q.jsx)(R,{severity:`error`,variant:`outlined`,sx:{mt:1},children:(0,Q.jsxs)(P,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:[(0,Q.jsx)(`strong`,{children:e.app}),` did not build — `,e.error.split(`
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,O as i,S as a,h as o,l as s,z as c}from"./client-CgyTwq9g.js";import{Vt as l,Yt as u}from"./mui-BTN91yBK.js";import{D as d,F as f,H as p,I as m,M as h,O as g,Q as _,V as v,Z as y,at as b,ct as x,i as S,j as C,ot as w,r as T,st as E}from"./mui-SNRRJ_vi.js";import{A as D,B as O,C as k,D as A,F as j,I as M,O as ee,S as te,a as ne,b as re,d as N,f as ie,k as ae,o as oe,w as se,x as ce,y as le,z as P}from"./mui-B3fJdIMc.js";import{B as ue,it as de,l as fe,rt as pe,u as me,z as F}from"./mui-CMWGTMXv.js";import{_ as I,v as L}from"./mui-CPEkFAPo.js";import{r as he,t as R}from"./alert-BdJ2uaY0.js";import{c as z,l as ge,n as B,s as V,u as _e}from"./access-I0f72P9m.js";import{n as ve,t as ye}from"./use-polled-resource-B22hhr5L.js";import{b as H,i as U,m as W,p as be,t as xe,x as Se}from"./project.store-D5IR3fo9.js";import{G as Ce,M as we,m as Te}from"./icons-B9Ct8PJ9.js";import{n as Ee,t as De}from"./operation-status-DHyYOT7G.js";import{n as Oe,t as ke}from"./page-breadcrumbs-3R8RZ3nA.js";import{i as Ae,r as je}from"./deploy-progress-B39cvvCE.js";import{c as Me,d as Ne,f as Pe,i as G,o as Fe,p as Ie,s as K,u as Le}from"./release-bits-IehuBssK.js";import{n as Re,t as ze}from"./deploy-release-dialog-CnzaO_xL.js";import{n as Be,t as Ve}from"./release-build-panel-C48hP_9w.js";import{n as He,t as Ue}from"./release-deployment-state-BfmxZP4Y.js";function We(e,t){return s.invoke(`daemon`,`OmnitronRelease`,`attestOnNode`,[{release:e,stack:t}],{timeout:6e5})}function Ge({output:e}){let[t,n]=(0,q.useState)(!1);return(0,J.jsxs)(v,{sx:{pl:2,mb:.5},children:[(0,J.jsx)(f,{size:`small`,onClick:()=>n(e=>!e),sx:{minWidth:0,p:0,fontSize:11,textTransform:`none`},children:t?`hide what it printed`:`what it printed`}),t&&(0,J.jsx)(v,{component:`pre`,sx:{m:0,mt:.5,p:1,maxHeight:240,overflow:`auto`,borderRadius:1,bgcolor:`action.hover`,fontFamily:`monospace`,fontSize:11,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:e})]})}function Ke({attestation:e}){let t=e.cleanup;if(!t&&!e.legalTextsUnread)return null;let n=Object.entries(t?.removed??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`),r=Object.entries(t?.retired??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`);return(0,J.jsxs)(v,{sx:{mt:.75,pl:1},"data-testid":`cleanup-${e.stack}`,children:[t&&(0,J.jsx)(P,{variant:`caption`,sx:{display:`block`,color:t.failed||t.run===null?`warning.main`:`text.secondary`},children:t.run===null?`cleanup not run — ${t.notRun??`the run had no name to remove by`}`:`cleanup: run ${t.run} removed ${n.length?n.join(`, `):`nothing — it had made nothing to remove`}`+(t.failed?` — FAILED: ${t.failed}`:``)}),r.length>0&&(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`retired: `,r.join(`, `),` — blocked in place, their real-chain addresses still watched`]}),(t?.leftBehind??[]).map(e=>(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`left behind: `,e.what,` — `,e.why.join(`; `)||`no reason given`]},e.what)),e.legalTextsUnread&&(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`legal texts could not be read — `,e.legalTextsUnread]})]})}function qe({releaseId:e,project:t,attestations:n,onChanged:r}){let{can:a}=z(),o=a(`OmnitronRelease.attestOnNode`),s=a(`OmnitronProject.listStacks`),c=U(e=>e.stacksByProject),l=U(e=>e.fetchStacks),u=(0,q.useMemo)(()=>(c[t]??[]).filter(e=>e.type!==`local`),[c,t]),[p,m]=(0,q.useState)(``),[h,g]=(0,q.useState)(!1),[_,x]=(0,q.useState)(null),[S,w]=(0,q.useState)(null),[T,D]=(0,q.useState)(null),[O,k]=(0,q.useState)(!1);(0,q.useEffect)(()=>{o&&s&&!c[t]&&l(t)},[o,s,t,c,l]),(0,q.useEffect)(()=>{!p&&u.length>0&&m(u[0].name)},[u,p]);let A=!!(T&&n.some(e=>e.stack===T.stack&&e.storedAt!==T.previous));(0,q.useEffect)(()=>{if(!T)return;if(A){D(null);return}let e=setInterval(r,5e3),t=setTimeout(()=>{k(!0),D(null)},6e5);return()=>{clearInterval(e),clearTimeout(t)}},[T,A,r]);let M=(0,q.useCallback)(async()=>{if(!p)return;let t=n.find(e=>e.stack===p)?.storedAt;k(!1),g(!0),w(null),x(null);try{x(await We(e,p)),r()}catch(e){let n=e.message;i(e)?D({stack:p,previous:t}):w(n)}finally{g(!1)}},[e,p,n,r]);return(0,J.jsx)(C,{variant:`outlined`,children:(0,J.jsxs)(d,{children:[(0,J.jsxs)(I,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,J.jsx)(P,{variant:`subtitle2`,children:`Verified on stacks`}),(0,J.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:`probes a running stack measured against this release`}),(0,J.jsx)(v,{sx:{flex:1}}),o&&s&&u.length>0&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ne,{select:!0,size:`small`,value:p,onChange:e=>m(e.target.value),disabled:h||T!==null,sx:{minWidth:120},children:u.map(e=>(0,J.jsx)(fe,{value:e.name,children:e.name},e.name))}),(0,J.jsx)(j,{title:`Uploads this release's own scripts to the stack's node and runs the probes there, under the node's deploy lease. The stack should be carrying this release — an attestation older than the last deployment is refused.`,arrow:!0,children:(0,J.jsx)(`span`,{children:(0,J.jsx)(f,{size:`small`,variant:`outlined`,onClick:()=>void M(),disabled:h||T!==null||!p,startIcon:h||T!==null?(0,J.jsx)(E,{size:14}):void 0,children:h?`Running on the node…`:T===null?`Run the probes`:`Awaiting result…`})})})]})]}),T!==null&&(0,J.jsxs)(b,{severity:`info`,sx:{mb:1.5},children:[`The gateway did not return a result. Checking for a new attestation on `,T.stack,` before another run.`]}),O&&(0,J.jsx)(b,{severity:`warning`,sx:{mb:1.5},children:`No new attestation was recorded within ten minutes. Inspect the node logs before retrying.`}),_&&(0,J.jsxs)(b,{severity:_.passed===_.gates?`success`:`warning`,sx:{mb:1.5},children:[_.passed,` of `,_.gates,` probes passed on `,_.node,` — probes from`,` `,_.scriptsFrom===`release`?`the release itself`:`the release's commit`,typeof _.sourceFiles==`number`&&(_.sourceFiles>0?`, with ${_.sourceFiles} application source files from that commit`:`, with no application sources — probes that read code said NOT RUN`),`.`,_.accounts?Je[_.accounts]:``]}),S&&(0,J.jsx)(b,{severity:`error`,sx:{mb:1.5},children:(0,J.jsx)(P,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:S})}),n.length===0?(0,J.jsxs)(P,{variant:`body2`,sx:{color:`text.secondary`},children:[`No stack has attested this release. A stack whose policy declares `,(0,J.jsx)(`code`,{children:`verifiedOn`}),` refuses it until one does.`]}):(0,J.jsx)(I,{spacing:2,children:n.map(e=>{let t=e.gates.filter(e=>e.status===`passed`).length;return(0,J.jsxs)(v,{children:[(0,J.jsxs)(I,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,J.jsx)(y,{label:e.stack,size:`small`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,J.jsxs)(P,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,color:t===e.gates.length?`success.main`:`error.main`},children:[t,`/`,e.gates.length]}),(0,J.jsx)(Fe,{gates:e.gates,size:9}),(0,J.jsx)(v,{sx:{flex:1}}),(0,J.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[`measured `,Ie(e.at),e.onNode.hosts.length>0?` on ${e.onNode.hosts.join(`, `)}`:``]}),e.onNode.claimed&&(0,J.jsx)(j,{title:e.onNode.matched===!0?`The producer confirmed it ran on one of the stack's nodes.`:`The producer could not confirm the machine it ran on.`,arrow:!0,children:(0,J.jsx)(y,{label:e.onNode.matched===!0?`on the node`:`node unconfirmed`,size:`small`,color:e.onNode.matched===!0?`success`:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]}),e.gates.some(e=>e.status!==`passed`)&&(0,J.jsx)(v,{sx:{mt:.75,pl:1},children:e.gates.filter(e=>e.status!==`passed`).map(e=>(0,J.jsxs)(v,{children:[(0,J.jsxs)(P,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[(0,J.jsx)(v,{component:`span`,sx:{color:G[e.status].color,fontWeight:600},children:G[e.status].label}),` `,(0,J.jsx)(v,{component:`span`,sx:{fontFamily:`monospace`},children:e.name}),e.detail?` — ${e.detail}`:``]}),e.output&&(0,J.jsx)(Ge,{output:e.output})]},e.name))}),(0,J.jsx)(Ke,{attestation:e})]},e.stack)})})]})})}var q,J,Je;function Y(){return(Y=e((()=>{V(),q=t(),w(),p(),m(),h(),g(),_(),x(),me(),L(),oe(),M(),O(),o(),xe(),Le(),J=n(),Je={provisioned:` Accounts were created by the run and removed at its end.`,"not-declared":` No accounts were provisioned — the stack does not declare release.attest.provision, so probes that sign in said NOT RUN.`,"producer-cannot":` No accounts were provisioned — the stack allows it, but this release's producer predates --provision.`}})))()}function Ye({source:e}){return!e||e.state===`invalid`?(0,X.jsx)(P,{variant:`caption`,color:`warning.main`,sx:{overflowWrap:`anywhere`},children:e?.reason??`Per-application provenance unavailable from this daemon`}):(0,X.jsxs)(v,{component:`details`,sx:{minWidth:0,overflowWrap:`anywhere`,"& > summary":{cursor:`pointer`,fontSize:12,color:`text.secondary`,borderRadius:.5,"&:focus-visible":{outline:`2px solid`,outlineColor:`primary.main`,outlineOffset:2}}},children:[(0,X.jsx)(v,{component:`summary`,children:e.via.length?`Imported · ${e.producerApp}`:`Built in this release`}),(0,X.jsxs)(I,{spacing:.75,sx:{mt:1},children:[(0,X.jsx)(P,{variant:`caption`,children:e.releaseId}),(0,X.jsxs)(P,{variant:`caption`,children:[`Project · `,e.project.repo,(0,X.jsx)(`br`,{}),e.project.commit]}),e.packageDirectory&&(0,X.jsxs)(P,{variant:`caption`,children:[`Package · `,e.packageDirectory]}),(0,X.jsxs)(P,{variant:`caption`,children:[`SDK · `,e.framework.repo,(0,X.jsx)(`br`,{}),e.framework.commit]}),(0,X.jsx)(P,{variant:`caption`,children:Se(e.target)}),e.via.map((e,t)=>(0,X.jsxs)(P,{variant:`caption`,children:[`Via `,e.release,`/`,e.app,(0,X.jsx)(`br`,{}),`Manifest · `,e.manifestSha256]},`${t}:${e.manifestSha256}:${e.app}`)),(0,X.jsx)(P,{variant:`caption`,color:`text.secondary`,children:`Recorded build inputs; current execution is shown in Deployment state.`})]})]})}var X;function Xe(){return(Xe=e((()=>{p(),L(),O(),W(),X=n()})))()}function Ze(){let{id:e=``}=r();return(0,Q.jsx)(Qe,{id:e},e)}function Qe({id:e}){let{can:t}=z(),n=t(`OmnitronRelease.builds`),r=t(`OmnitronRelease.getLog`),i=(0,Z.useRef)(0),[o,s]=(0,Z.useState)(null),[c,u]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),{data:_,loading:b,error:x,refresh:S}=ve(async()=>{let[t,r]=await Promise.all([Ae.get(e),n?Ae.builds().then(e=>({records:e,error:null})).catch(e=>({records:[],error:e.message})):{records:[],error:null}]);return{detail:t,builds:r}},{intervalMs:15e3,enabled:!!e,resourceKey:JSON.stringify([e,n])}),w=(0,Z.useCallback)(async t=>{let n=++i.current;s(t),m(null),g(null);try{let r=await a.getLog({id:e,name:t,lines:400});n===i.current&&m({name:r.name,tail:r.tail})}catch(e){n===i.current&&g(e.message)}finally{n===i.current&&s(null)}},[e]);if(b&&!_)return(0,Q.jsx)(ge,{});if(x&&!_)return(0,Q.jsxs)(I,{spacing:3,children:[(0,Q.jsx)(ke,{links:[{name:`Releases`,href:`/releases`},{name:e}]}),(0,Q.jsx)(R,{severity:`error`,variant:`outlined`,children:x})]});let E=_.detail,D=E.manifest,O=_.builds.records.find(t=>t.releaseId===e)??null;return(0,Q.jsxs)(I,{spacing:3,children:[(0,Q.jsx)(ke,{links:[{name:`Releases`,href:`/releases`},{name:e}],action:(0,Q.jsxs)(I,{direction:`row`,spacing:1,children:[(0,Q.jsx)(pe,{"data-console-command":`refresh`,size:`small`,onClick:()=>void S(),title:`Refresh`,children:(0,Q.jsx)(we,{})}),(0,Q.jsx)(B,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(f,{variant:`contained`,size:`small`,startIcon:(0,Q.jsx)(Te,{}),disabled:!E.complete,onClick:()=>u(!0),children:`Deploy…`})})]})}),x&&(0,Q.jsxs)(R,{severity:`warning`,children:[`Last confirmed manifest · `,x]}),_?.builds.error&&(0,Q.jsxs)(R,{severity:`warning`,children:[`Build activity unavailable · `,_.builds.error]}),!E.complete&&(0,Q.jsx)(R,{severity:E.manifestError?`error`:`warning`,variant:`outlined`,children:E.manifestError??`This directory holds no manifest: the build did not finish, and what is here is its logs. Nothing can be deployed from it.`}),O&&(0,Q.jsx)(Ve,{record:O,compact:O.state!==`running`}),(0,Q.jsx)(Ue,{project:E.project},E.project),(0,Q.jsxs)(F,{container:!0,spacing:2,children:[(0,Q.jsx)(F,{size:{xs:12,md:6},children:(0,Q.jsx)(C,{variant:`outlined`,sx:{height:`100%`},children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Built from`}),(0,Q.jsx)(I,{spacing:1.5,children:[[`project`,E.projectCommit,E.projectRepo,E.onRemote.project],[`omni`,E.omniCommit,E.omniRepo,E.onRemote.omni]].map(([e,t,n,r])=>(0,Q.jsxs)(v,{children:[(0,Q.jsxs)(I,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,Q.jsx)(P,{variant:`body2`,sx:{fontWeight:600,minWidth:56},children:e===`project`?E.project:`omni`}),(0,Q.jsx)(P,{variant:`body2`,sx:{fontFamily:`monospace`},children:t?.slice(0,12)??`—`}),r===!1&&(0,Q.jsx)(j,{title:H({project:r,omni:!0},e===`project`?E.project:`omni`).detail,children:(0,Q.jsx)(y,{label:`Git: unpublished source`,size:`small`,color:`warning`,variant:`outlined`})}),r===null&&(0,Q.jsx)(j,{title:H({project:r,omni:!0},e===`project`?E.project:`omni`).detail,children:(0,Q.jsx)(y,{label:`Git: unverified`,size:`small`,variant:`outlined`})})]}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:n??`—`}),E.manifest?.[e]?.ref&&(0,Q.jsxs)(P,{component:`div`,variant:`caption`,sx:{color:`text.secondary`,overflowWrap:`anywhere`},children:[`Required ref: `,E.manifest[e].ref]})]},e))})]})})}),(0,Q.jsx)(F,{size:{xs:12,md:6},children:(0,Q.jsx)(C,{variant:`outlined`,sx:{height:`100%`},children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Built with`}),(0,Q.jsxs)(I,{spacing:.75,children:[E.manifestSha256&&(0,Q.jsxs)(v,{component:`details`,sx:{overflowWrap:`anywhere`},children:[(0,Q.jsx)(P,{component:`summary`,variant:`caption`,sx:{cursor:`pointer`,color:`text.secondary`},children:`Manifest SHA-256`}),(0,Q.jsx)(P,{component:`code`,variant:`caption`,sx:{userSelect:`all`},children:E.manifestSha256})]}),(0,Q.jsxs)(P,{variant:`body2`,children:[Ie(E.builtAt),` · `,E.builtBy??`—`]}),(0,Q.jsxs)(P,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:13},children:[`omnitron `,E.builtWith??`—`]}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:Se(D?.builtWith?.target)}),(0,Q.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[D&&(0,Q.jsxs)(Q.Fragment,{children:[be(D),` · `]}),K(E.bytes),` on disk at `,E.root]}),E.statics&&(0,Q.jsxs)(P,{variant:`caption`,sx:{color:`text.secondary`},children:[`statics for `,(0,Q.jsx)(`strong`,{children:E.statics.stack}),` — `,E.statics.files,` files,`,` `,K(E.statics.bytes),` from `,D?.statics?.dir]}),E.machine&&(0,Q.jsxs)(P,{variant:`caption`,sx:{color:Pe(E.machine)?`warning.main`:`text.secondary`},children:[`machine while the gates ran: `,Ne(E.machine),Pe(E.machine)?` — load exceeded core count; inspect the gate logs for failure causes`:``]})]})]})})})]}),(0,Q.jsx)(C,{variant:`outlined`,children:(0,Q.jsxs)(d,{children:[(0,Q.jsxs)(I,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,Q.jsx)(P,{variant:`subtitle2`,children:`Gates`}),(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`},children:E.gates.total===0?`none recorded — a stack that requires any refuses this release`:`${E.gates.passed} of ${E.gates.total} passed`}),(0,Q.jsx)(v,{sx:{flex:1}}),(0,Q.jsx)(Fe,{gates:E.gateList})]}),E.gateList.length>0&&(0,Q.jsx)(ce,{children:(0,Q.jsxs)(ae,{size:`small`,children:[(0,Q.jsx)(le,{children:(0,Q.jsxs)(N,{children:[(0,Q.jsx)(k,{children:`Gate`}),(0,Q.jsx)(k,{children:`Outcome`}),(0,Q.jsx)(k,{align:`right`,children:`Took`}),(0,Q.jsx)(k,{children:`Detail`})]})}),(0,Q.jsx)(A,{children:E.gateList.map((e,t)=>(0,Q.jsxs)(N,{children:[(0,Q.jsxs)(k,{sx:{fontFamily:`monospace`,fontSize:13},children:[e.name,e.checks!=null&&(0,Q.jsxs)(P,{component:`span`,variant:`caption`,sx:{color:`text.secondary`,ml:1},children:[e.checks,` checks`]})]}),(0,Q.jsx)(k,{children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:G[e.status].color,fontWeight:600},children:G[e.status].label})}),(0,Q.jsx)(k,{align:`right`,children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.durationMs?Me(e.durationMs):`—`})}),(0,Q.jsx)(k,{children:(0,Q.jsx)(P,{variant:`caption`,sx:{color:`text.secondary`,whiteSpace:`pre-wrap`},children:e.detail??``})})]},`${e.name}-${t}`))})]})})]})}),E.complete&&(0,Q.jsx)(qe,{releaseId:E.id,project:E.project,attestations:E.attestations,onChanged:S}),(0,Q.jsx)(C,{variant:`outlined`,children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Artifacts`}),(D?.artifacts??[]).length===0?(0,Q.jsx)(P,{variant:`body2`,sx:{color:`text.secondary`},children:`None.`}):(0,Q.jsx)(ce,{children:(0,Q.jsxs)(ae,{size:`small`,sx:{minWidth:540},children:[(0,Q.jsx)(le,{children:(0,Q.jsxs)(N,{children:[(0,Q.jsx)(k,{children:`App`}),(0,Q.jsx)(k,{children:`Source`}),(0,Q.jsx)(k,{align:`right`,children:`Size`}),(0,Q.jsx)(k,{children:`sha256`})]})}),(0,Q.jsx)(A,{children:(D?.artifacts??[]).map(e=>(0,Q.jsxs)(N,{children:[(0,Q.jsxs)(k,{sx:{verticalAlign:`top`,maxWidth:200,overflowWrap:`anywhere`},children:[(0,Q.jsx)(P,{variant:`body2`,sx:{fontWeight:600},children:e.app}),(0,Q.jsx)(P,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:e.version})]}),(0,Q.jsx)(k,{sx:{verticalAlign:`top`,maxWidth:360},children:(0,Q.jsx)(Ye,{source:E.artifactSources?.find(t=>t.app===e.app)})}),(0,Q.jsx)(k,{align:`right`,sx:{fontFamily:`monospace`,fontSize:13},children:K(e.bytes)}),(0,Q.jsx)(k,{children:(0,Q.jsx)(j,{title:e.sha256||`none recorded`,arrow:!0,children:(0,Q.jsx)(P,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:e.sha256?`${e.sha256.slice(0,16)}…`:`—`})})})]},`${e.app}-${e.version}`))})]})}),(D?.artifactFailures??[]).map(e=>(0,Q.jsx)(R,{severity:`error`,variant:`outlined`,sx:{mt:1},children:(0,Q.jsxs)(P,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:[(0,Q.jsx)(`strong`,{children:e.app}),` did not build — `,e.error.split(`
2
2
  `)[0]]})},e.app))]})}),(0,Q.jsx)(C,{variant:`outlined`,children:(0,Q.jsxs)(d,{children:[(0,Q.jsx)(P,{variant:`subtitle2`,sx:{mb:1.5},children:`Build logs`}),E.logs.length===0?(0,Q.jsx)(P,{variant:`body2`,sx:{color:`text.secondary`},children:`This build wrote no logs.`}):(0,Q.jsx)(I,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},children:E.logs.map(e=>(0,Q.jsx)(y,{label:`${e.name} · ${K(e.bytes)}`,size:`small`,variant:p?.name===e.name?`filled`:`outlined`,disabled:!r,onClick:()=>void w(e.name),sx:{fontFamily:`monospace`,fontSize:11}},e.name))}),(0,Q.jsx)(De,{active:r&&!!o,label:`Reading ${o??``}`}),r&&h&&(0,Q.jsx)(R,{severity:`warning`,variant:`outlined`,sx:{mt:1.5},children:h}),r&&p&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(T,{sx:{my:1.5}}),(0,Q.jsx)(v,{sx:{maxHeight:420,overflow:`auto`,p:1.5,borderRadius:1,bgcolor:e=>l(e.palette.text.primary,.04)},children:(0,Q.jsx)(P,{variant:`caption`,sx:{fontFamily:`monospace`,whiteSpace:`pre`,display:`block`},children:p.tail})})]})]})}),(0,Q.jsx)(B,{permission:`OmnitronProject.startStack`,children:(0,Q.jsx)(ze,{open:c,onClose:()=>u(!1),project:E.project,release:E})})]})}var Z,Q;function $(){return($=e((()=>{Z=t(),c(),p(),m(),h(),g(),_(),S(),ue(),de(),L(),D(),ee(),se(),te(),re(),ie(),M(),O(),u(),he(),Oe(),_e(),Ce(),Re(),Y(),Be(),He(),Xe(),W(),Le(),ye(),V(),Ee(),o(),je(),Q=n()})))()}$();export{Ze as default};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{t}from"./react-BN8qLIAi.js";import{Vt as n,Yt as r}from"./mui-BTN91yBK.js";import{H as i,V as a}from"./mui-BXSXx9c9.js";import{B as o,z as s}from"./mui-Cd711nOk.js";import{_ as c,v as l}from"./mui-BwsIrivo.js";function u({icon:e,color:t=`primary.main`,size:r=64}){return(0,f.jsx)(a,{sx:{width:r,height:r,borderRadius:`50%`,display:`flex`,alignItems:`center`,justifyContent:`center`,bgcolor:e=>{let r=t.split(`.`),i=e.palette;for(let e of r)i=i?.[e];return n(typeof i==`string`?i:e.palette.primary.main,.08)}},children:e})}function d({illustration:e,icon:t,iconColor:n=`primary.main`,iconSize:r=64,title:i=`No data`,description:o,action:l,actions:d,maxWidth:p=400,filled:m=!1,sx:h,illustrationSx:g,slotProps:_,compact:v=!1}){let y=t?(0,f.jsx)(u,{icon:t,color:n,size:r}):e?(0,f.jsx)(a,{sx:g,children:e}):null,b=[...d??[],...l?[l]:[]];return(0,f.jsx)(c,{sx:{alignItems:`center`,justifyContent:`center`,textAlign:`center`,py:v?4:8,px:2,...!v&&{flex:1,alignSelf:`stretch`,minHeight:`calc(100vh - 240px)`},...m&&{height:`100%`},...h},children:(0,f.jsxs)(a,{sx:{maxWidth:p,display:`flex`,flexDirection:`column`,alignItems:`center`,gap:v?1.5:2.5},children:[y,(0,f.jsxs)(c,{spacing:.5,sx:{alignItems:`center`},children:[i&&(0,f.jsx)(s,{variant:v?`subtitle1`:`h6`,sx:{color:`text.secondary`,fontWeight:600,..._?.title},children:i}),o&&(0,f.jsx)(s,{variant:`body2`,sx:{color:`text.disabled`,lineHeight:1.6,..._?.description},children:o})]}),b.length>0&&(0,f.jsx)(c,{direction:`row`,spacing:1,sx:{mt:v?.5:1,flexWrap:`wrap`,justifyContent:`center`,..._?.actions},children:b.map((e,t)=>(0,f.jsx)(a,{children:e},t))})]})})}var f;function p(){return(p=e((()=>{i(),l(),o(),r(),f=t()})))()}export{p as n,d as t};
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{t}from"./react-BN8qLIAi.js";import{Vt as n,Yt as r}from"./mui-BTN91yBK.js";import{H as i,V as a}from"./mui-SNRRJ_vi.js";import{B as o,z as s}from"./mui-B3fJdIMc.js";import{_ as c,v as l}from"./mui-CPEkFAPo.js";function u({icon:e,color:t=`primary.main`,size:r=64}){return(0,f.jsx)(a,{sx:{width:r,height:r,borderRadius:`50%`,display:`flex`,alignItems:`center`,justifyContent:`center`,bgcolor:e=>{let r=t.split(`.`),i=e.palette;for(let e of r)i=i?.[e];return n(typeof i==`string`?i:e.palette.primary.main,.08)}},children:e})}function d({illustration:e,icon:t,iconColor:n=`primary.main`,iconSize:r=64,title:i=`No data`,description:o,action:l,actions:d,maxWidth:p=400,filled:m=!1,sx:h,illustrationSx:g,slotProps:_,compact:v=!1}){let y=t?(0,f.jsx)(u,{icon:t,color:n,size:r}):e?(0,f.jsx)(a,{sx:g,children:e}):null,b=[...d??[],...l?[l]:[]];return(0,f.jsx)(c,{sx:{alignItems:`center`,justifyContent:`center`,textAlign:`center`,py:v?4:8,px:2,...!v&&{flex:1,alignSelf:`stretch`,minHeight:`calc(100vh - 240px)`},...m&&{height:`100%`},...h},children:(0,f.jsxs)(a,{sx:{maxWidth:p,display:`flex`,flexDirection:`column`,alignItems:`center`,gap:v?1.5:2.5},children:[y,(0,f.jsxs)(c,{spacing:.5,sx:{alignItems:`center`},children:[i&&(0,f.jsx)(s,{variant:v?`subtitle1`:`h6`,sx:{color:`text.secondary`,fontWeight:600,..._?.title},children:i}),o&&(0,f.jsx)(s,{variant:`body2`,sx:{color:`text.disabled`,lineHeight:1.6,..._?.description},children:o})]}),b.length>0&&(0,f.jsx)(c,{direction:`row`,spacing:1,sx:{mt:v?.5:1,flexWrap:`wrap`,justifyContent:`center`,..._?.actions},children:b.map((e,t)=>(0,f.jsx)(a,{children:e},t))})]})})}var f;function p(){return(p=e((()=>{i(),l(),o(),r(),f=t()})))()}export{p as n,d as t};
@@ -1,3 +1,3 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{F as r,H as i,I as a,St as o,V as s,xt as c}from"./mui-BXSXx9c9.js";import{B as l,z as u}from"./mui-Cd711nOk.js";import{it as d,rt as f}from"./mui-AnEgAVjz.js";import{d as p,j as m,s as h}from"./controls-C5W8gHU4.js";function g(e){for(let t of[/at\s+(?:async\s+)?([^\s(]+)\s+\((.+?):(\d+):(\d+)\)/,/at\s+(.+?):(\d+):(\d+)/]){let n=e.match(t);if(n){let[,e,t,r,i]=n,a=i!==void 0,o=a?e:null,s=a?t:e,c=parseInt(a?r:t,10),l=parseInt(a?i:r,10),u=!s.includes(`node_modules`)&&s.includes(`src/`);return{functionName:o||null,filePath:_(s),lineNumber:isNaN(c)?null:c,columnNumber:isNaN(l)?null:l,isAppCode:u}}}return null}function _(e){let t=e.replace(/\?.*$/,``),n=t.indexOf(`/src/`);if(n!==-1)return t.slice(n+1);let r=t.split(`/`);return r.length>3?r.slice(-3).join(`/`):t}function v(e){if(!e)return{primary:null,frames:[],raw:``};let t=e.split(`
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{F as r,H as i,I as a,St as o,V as s,xt as c}from"./mui-SNRRJ_vi.js";import{B as l,z as u}from"./mui-B3fJdIMc.js";import{it as d,rt as f}from"./mui-CMWGTMXv.js";import{d as p,j as m,s as h}from"./controls-CqeGPnaF.js";function g(e){for(let t of[/at\s+(?:async\s+)?([^\s(]+)\s+\((.+?):(\d+):(\d+)\)/,/at\s+(.+?):(\d+):(\d+)/]){let n=e.match(t);if(n){let[,e,t,r,i]=n,a=i!==void 0,o=a?e:null,s=a?t:e,c=parseInt(a?r:t,10),l=parseInt(a?i:r,10),u=!s.includes(`node_modules`)&&s.includes(`src/`);return{functionName:o||null,filePath:_(s),lineNumber:isNaN(c)?null:c,columnNumber:isNaN(l)?null:l,isAppCode:u}}}return null}function _(e){let t=e.replace(/\?.*$/,``),n=t.indexOf(`/src/`);if(n!==-1)return t.slice(n+1);let r=t.split(`/`);return r.length>3?r.slice(-3).join(`/`):t}function v(e){if(!e)return{primary:null,frames:[],raw:``};let t=e.split(`
2
2
  `),n=[];for(let e of t){let t=g(e.trim());t&&n.push(t)}return{primary:n.find(e=>e.isAppCode)??n[0]??null,frames:n,raw:e}}function y(e){let{primary:t}=v(e.stack);if(!t)return`Unknown location`;let n=[];if(t.functionName&&n.push(`in ${t.functionName}`),t.filePath){let e=t.lineNumber?`${t.filePath}:${t.lineNumber}`:t.filePath;n.push(`(${e})`)}return n.join(` `)||`Unknown location`}function b({error:e,parsedStack:t,resetErrorBoundary:n,sx:i,showDetails:a}){let[o,l]=(0,x.useState)(!1),[d,m]=(0,x.useState)(!1),g=a??(typeof process<`u`&&!1),_=async()=>{try{let n=[`Error: ${e.message}`,`Location: ${y(e)}`,``,`Stack Trace:`,t.raw].join(`
3
3
  `);await navigator.clipboard.writeText(n),m(!0),setTimeout(()=>m(!1),2e3)}catch{}};return(0,S.jsxs)(s,{sx:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:200,p:3,textAlign:`center`,...i},children:[(0,S.jsx)(u,{variant:`h6`,color:`error`,gutterBottom:!0,children:`Something went wrong`}),(0,S.jsx)(u,{variant:`body2`,sx:{color:`text.secondary`,mb:1,maxWidth:400},children:e.message||`An unexpected error occurred`}),g&&t.primary&&(0,S.jsxs)(u,{variant:`caption`,sx:{color:`text.secondary`,mb:2,fontFamily:`monospace`},children:[t.primary.filePath,t.primary.lineNumber&&`:${t.primary.lineNumber}`,t.primary.functionName&&` (${t.primary.functionName})`]}),(0,S.jsxs)(s,{sx:{display:`flex`,gap:1,mb:2},children:[(0,S.jsx)(r,{variant:`outlined`,onClick:n,children:`Try Again`}),g&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(f,{size:`small`,onClick:()=>l(!o),"aria-label":o?`Hide stack trace`:`Show stack trace`,"aria-expanded":o,sx:{transform:o?`rotate(180deg)`:`rotate(0deg)`,transition:`transform 0.2s`},children:(0,S.jsx)(h,{})}),(0,S.jsx)(f,{size:`small`,onClick:_,title:`Copy error details`,children:(0,S.jsx)(p,{fontSize:`small`})}),d&&(0,S.jsx)(u,{variant:`caption`,sx:{color:`success.main`,alignSelf:`center`},children:`Copied!`})]})]}),g&&(0,S.jsx)(c,{in:o,children:(0,S.jsx)(s,{sx:{mt:1,p:2,bgcolor:`action.hover`,borderRadius:1,maxWidth:600,maxHeight:300,overflow:`auto`,textAlign:`left`},children:(0,S.jsx)(u,{variant:`caption`,component:`pre`,sx:{fontFamily:`monospace`,m:0},children:t.frames.map((e,t)=>(0,S.jsxs)(s,{component:`span`,sx:{display:`block`,color:e.isAppCode?`error.main`:`text.secondary`,fontWeight:e.isAppCode?600:400},children:[e.functionName||`(anonymous)`,` at `,e.filePath||`unknown`,e.lineNumber&&`:${e.lineNumber}`]},t))})})})]})}var x,S,C;function w(){return(w=e((()=>{x=t(),i(),a(),l(),o(),d(),m(),S=n(),C=class extends x.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){let n=v(e.stack);this.setState({errorInfo:t}),this.props.onError?.(e,t,n)}componentDidUpdate(e){let{resetKeys:t}=this.props,{hasError:n}=this.state;if(n&&t){let n=e.resetKeys;(n===void 0||n.length!==t.length||t.some((e,t)=>e!==n[t]))&&this.resetErrorBoundary()}}resetErrorBoundary=()=>{this.props.onReset?.(),this.setState({hasError:!1,error:null,errorInfo:null})};render(){let{hasError:e,error:t,errorInfo:n}=this.state,{children:r,fallback:i,sx:a,showDetails:o}=this.props;if(e&&t){let e={error:t,errorInfo:n,parsedStack:v(t.stack),resetErrorBoundary:this.resetErrorBoundary};return typeof i==`function`?i(e):i||(0,S.jsx)(b,{...e,sx:a,showDetails:o})}return r}}})))()}export{w as n,C as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,V as i}from"./mui-BXSXx9c9.js";import{B as a,z as o}from"./mui-Cd711nOk.js";function s({values:e}){return(0,l.jsx)(i,{component:`dl`,sx:{m:0,display:`grid`,gridTemplateColumns:{xs:`minmax(0, 1fr)`,sm:`120px minmax(0, 1fr)`},columnGap:2,rowGap:.5},children:e.map(([e,t])=>(0,l.jsxs)(c.Fragment,{children:[(0,l.jsx)(o,{component:`dt`,sx:{fontFamily:u,fontSize:11,color:`text.secondary`,overflowWrap:`anywhere`,pt:{xs:.5,sm:0}},children:e}),(0,l.jsx)(i,{component:`dd`,sx:{m:0,minWidth:0,fontFamily:u,fontSize:11.5,lineHeight:1.65,color:`text.primary`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:typeof t==`string`?t:JSON.stringify(t,null,2)})]},e))})}var c,l,u;function d(){return(d=e((()=>{c=t(),r(),a(),l=n(),u=`'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', monospace`})))()}export{d as n,s as t};
1
+ import{n as e}from"./rolldown-runtime-CNOWq4Kh.js";import{i as t,t as n}from"./react-BN8qLIAi.js";import{H as r,V as i}from"./mui-SNRRJ_vi.js";import{B as a,z as o}from"./mui-B3fJdIMc.js";function s({values:e}){return(0,l.jsx)(i,{component:`dl`,sx:{m:0,display:`grid`,gridTemplateColumns:{xs:`minmax(0, 1fr)`,sm:`120px minmax(0, 1fr)`},columnGap:2,rowGap:.5},children:e.map(([e,t])=>(0,l.jsxs)(c.Fragment,{children:[(0,l.jsx)(o,{component:`dt`,sx:{fontFamily:u,fontSize:11,color:`text.secondary`,overflowWrap:`anywhere`,pt:{xs:.5,sm:0}},children:e}),(0,l.jsx)(i,{component:`dd`,sx:{m:0,minWidth:0,fontFamily:u,fontSize:11.5,lineHeight:1.65,color:`text.primary`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:typeof t==`string`?t:JSON.stringify(t,null,2)})]},e))})}var c,l,u;function d(){return(d=e((()=>{c=t(),r(),a(),l=n(),u=`'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', monospace`})))()}export{d as n,s as t};