@knpkv/control-center 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +18 -8
  2. package/dist/client/.vite/manifest.json +214 -182
  3. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
  5. package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
  6. package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
  7. package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
  8. package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
  9. package/dist/client/assets/{AtlassianOAuthCallbackPage-BPoF6oKf.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
  10. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js → AuthorizedSharePage-CVBJ1NTm.js} +2 -2
  11. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js.map → AuthorizedSharePage-CVBJ1NTm.js.map} +1 -1
  12. package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
  13. package/dist/client/assets/{BrowserCrypto-BMbjhcvP.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
  14. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
  15. package/dist/client/assets/{BrowserSessionHydrator-BC1ymLkL.js.map → BrowserSessionHydrator-CpZnNm4X.js.map} +1 -1
  16. package/dist/client/assets/{CommandSearch-WwAVDrD9.js → CommandSearch-DUeRRbV2.js} +2 -2
  17. package/dist/client/assets/{CommandSearch-WwAVDrD9.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
  18. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js → ItemsPage-BF2ZkSzh.js} +2 -2
  19. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-DA6cmyqF.js → PairPage-CkaZltHd.js} +2 -2
  21. package/dist/client/assets/{PairPage-DA6cmyqF.js.map → PairPage-CkaZltHd.js.map} +1 -1
  22. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
  23. package/dist/client/assets/{PortfolioOverview-CEI4gpXi.js.map → PortfolioOverview-CEUHJmGC.js.map} +1 -1
  24. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js} +3 -3
  25. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js.map → PullRequestReviewPanel-D1IpvHe2.js.map} +1 -1
  26. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js → ReleaseRoute-BuQybrsg.js} +2 -2
  27. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
  28. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
  29. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
  30. package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
  31. package/dist/client/assets/{ServicesPage-_B89DAvG.js.map → ServicesPage-hw5Ee69-.js.map} +1 -1
  32. package/dist/client/assets/{TimelinePage-DvpgD8AY.js → TimelinePage-Cj3V98uI.js} +2 -2
  33. package/dist/client/assets/{TimelinePage-DvpgD8AY.js.map → TimelinePage-Cj3V98uI.js.map} +1 -1
  34. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js → WorkspaceEntityLink-C_rc8lxi.js} +2 -2
  35. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
  36. package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
  37. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
  38. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
  39. package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
  40. package/dist/client/assets/{WorkspaceHomeLink-CkJfzO25.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
  41. package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js +3 -0
  42. package/dist/client/assets/{WorkspacePullRequestDetails-HwDgp12e.js.map → WorkspacePullRequestDetails-CizqydjN.js.map} +1 -1
  43. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
  44. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
  45. package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
  46. package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
  47. package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
  48. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
  49. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
  50. package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
  51. package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
  52. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
  53. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
  54. package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
  55. package/dist/client/assets/{authenticatedMutationClient-DYaieXUe.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
  56. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js → authorizedShareTransport-CnclcYai.js} +2 -2
  57. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
  58. package/dist/client/assets/client-Dq_XQE_l.js +5 -0
  59. package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
  60. package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
  61. package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
  62. package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
  63. package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
  64. package/dist/client/assets/{index-C7_FDTU7.js → index-zVjlBm9l.js} +3 -3
  65. package/dist/client/assets/{index-C7_FDTU7.js.map → index-zVjlBm9l.js.map} +1 -1
  66. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
  67. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
  68. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js → presentPortfolio-DLEq-vEz.js} +2 -2
  69. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js.map → presentPortfolio-DLEq-vEz.js.map} +1 -1
  70. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
  71. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
  72. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
  73. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
  74. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js → pullRequestReviewThreadReplay-CXHspFTr.js} +2 -2
  75. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js.map → pullRequestReviewThreadReplay-CXHspFTr.js.map} +1 -1
  76. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
  77. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
  78. package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
  79. package/dist/client/assets/{releaseRoutes-t9uCfs5T.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
  80. package/dist/client/assets/{serviceOnboarding-DLINCon7.js → serviceOnboarding-D0FmodRi.js} +2 -2
  81. package/dist/client/assets/{serviceOnboarding-DLINCon7.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
  82. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
  83. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
  84. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
  85. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
  86. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
  87. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
  88. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js → workspaceScrollCapture-BYNfR2wo.js} +2 -2
  89. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js.map → workspaceScrollCapture-BYNfR2wo.js.map} +1 -1
  90. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js → workspaceSettingsTransport-Br4lBmvS.js} +2 -2
  91. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
  92. package/dist/client/build-graph.json +98 -0
  93. package/dist/client/index.html +1 -1
  94. package/dist/server/api/agent.d.ts +12 -0
  95. package/dist/server/api/agent.d.ts.map +1 -1
  96. package/dist/server/api/deliveryGraph.d.ts +20 -0
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -1
  98. package/dist/server/api/index.d.ts +1 -1
  99. package/dist/server/api/index.d.ts.map +1 -1
  100. package/dist/server/api/index.js +3 -3
  101. package/dist/server/api/session.d.ts +23 -1
  102. package/dist/server/api/session.d.ts.map +1 -1
  103. package/dist/server/api/shares.d.ts +2 -0
  104. package/dist/server/api/shares.d.ts.map +1 -1
  105. package/dist/server/assets/{BindConfig-Bj282xDC.js → BindConfig-DAASchDn.js} +315 -36
  106. package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
  107. package/dist/server/assets/{agent-ZvwskOQu.js → agent-xQhAQXly.js} +26 -6
  108. package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
  109. package/dist/server/assets/{controlCenterApi-5j3gOXgE.js → controlCenterApi-DNXK7MT1.js} +4 -3
  110. package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
  111. package/dist/server/assets/{manualPluginSynchronization-CzIhZ_Dw.js → manualPluginSynchronization-DFIeUHP9.js} +4 -3
  112. package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
  113. package/dist/server/assets/{readiness-BtntBhDj.js → readiness-31Mqc-9H.js} +2 -2
  114. package/dist/server/assets/{readiness-BtntBhDj.js.map → readiness-31Mqc-9H.js.map} +1 -1
  115. package/dist/server/assets/{relationshipInferenceMaterialization-CR6xyMNL.js → relationshipInferenceMaterialization-Dyix96px.js} +41 -14
  116. package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
  117. package/dist/server/assets/{workspaceSettings-C2Zsk6RI.js → workspaceSettings-sv8h_h2P.js} +4 -1
  118. package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
  119. package/dist/server/build-graph.json +28 -1
  120. package/dist/server/domain/confluenceTasks.d.ts +27 -0
  121. package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
  122. package/dist/server/domain/deliveryGraph.d.ts +2 -0
  123. package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
  124. package/dist/server/domain/governedAction/bindings.d.ts +2 -0
  125. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  126. package/dist/server/domain/governedAction/model.d.ts +6 -0
  127. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  128. package/dist/server/domain/index.js +2 -2
  129. package/dist/server/domain/normalizedPage.d.ts +1 -0
  130. package/dist/server/domain/normalizedPage.d.ts.map +1 -1
  131. package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
  132. package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
  133. package/dist/server/index.js +5 -5
  134. package/dist/server/server/api/Handlers.d.ts +1 -1
  135. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  136. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
  137. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
  138. package/dist/server/server/application/pipelineExecutionProjection.d.ts +1 -0
  139. package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
  140. package/dist/server/server/application/portfolioSnapshots.d.ts +4 -0
  141. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  142. package/dist/server/server/application/releasePublicationSubmissions.d.ts +32 -1
  143. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -1
  144. package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
  145. package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
  146. package/dist/server/server/cli.js +3 -3
  147. package/dist/server/server/governance/governedActionDigests.d.ts +3 -0
  148. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  149. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +1 -0
  150. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  151. package/dist/server/server/index.js +2 -2
  152. package/dist/server/server/persistence/Persistence.d.ts +10 -0
  153. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  154. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
  155. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
  156. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
  157. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +10 -0
  158. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
  159. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +2 -0
  160. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
  161. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +6 -0
  162. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
  163. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +1 -0
  164. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
  165. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +2 -0
  166. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
  167. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +6 -0
  168. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
  169. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +4 -0
  170. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  171. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +2 -0
  172. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  173. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +4 -0
  174. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  175. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +4 -0
  176. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  177. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +1 -0
  178. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  179. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +2 -0
  180. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  181. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +2 -0
  182. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  183. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +4 -0
  184. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  185. package/package.json +3 -3
  186. package/dist/client/assets/AgentPage-C3LThgPZ.js +0 -3
  187. package/dist/client/assets/AgentPage-C3LThgPZ.js.map +0 -1
  188. package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
  189. package/dist/client/assets/AtlassianOAuthCallbackPage-BPoF6oKf.js +0 -2
  190. package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +0 -2
  191. package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +0 -2
  192. package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +0 -2
  193. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +0 -2
  194. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js.map +0 -1
  195. package/dist/client/assets/ServicesPage-_B89DAvG.js +0 -2
  196. package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
  197. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +0 -3
  198. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +0 -1
  199. package/dist/client/assets/WorkspaceHomeLink-CkJfzO25.js +0 -2
  200. package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +0 -3
  201. package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
  202. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js +0 -2
  203. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js.map +0 -1
  204. package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
  205. package/dist/client/assets/agent-api-CeONl_8w.js +0 -19
  206. package/dist/client/assets/agent-api-CeONl_8w.js.map +0 -1
  207. package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +0 -2
  208. package/dist/client/assets/client-DKS82kT_.js +0 -5
  209. package/dist/client/assets/client-DKS82kT_.js.map +0 -1
  210. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +0 -2
  211. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js.map +0 -1
  212. package/dist/client/assets/releaseRoutes-t9uCfs5T.js +0 -2
  213. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +0 -2
  214. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +0 -1
  215. package/dist/server/assets/BindConfig-Bj282xDC.js.map +0 -1
  216. package/dist/server/assets/agent-ZvwskOQu.js.map +0 -1
  217. package/dist/server/assets/controlCenterApi-5j3gOXgE.js.map +0 -1
  218. package/dist/server/assets/manualPluginSynchronization-CzIhZ_Dw.js.map +0 -1
  219. package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +0 -1
  220. package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{f as n,m as r,o as i,p as a,t as o,u as s}from"./lib-BzlsKFNV.js";import{t as c}from"./jsx-runtime-By8HlURe.js";import{a as l,n as u,r as d,t as f}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{a as p,i as m,n as h,r as g,s as _,t as v}from"./releasePaths-XoI2BHX3.js";import{d as y}from"./index-C7_FDTU7.js";import{_ as b,d as x,g as S,i as C,l as w,o as T,s as E,t as D,v as ee}from"./patterns-5N-j-AD2-B9qgekXA.js";import{n as O,r as k,t as te}from"./primitives-nKxQGSsE-CJNmac__.js";import{Jn as ne,Oa as re,Pr as ie,Rr as ae,_i as A,ai as j,an as oe,in as se,pi as M}from"./agent-api-CeONl_8w.js";import{a as N,t as P}from"./client-DKS82kT_.js";import{n as ce,t as le}from"./BrowserCrypto-BMbjhcvP.js";import{a as ue,c as de,l as fe,n as pe,s as me}from"./releaseRoutes-t9uCfs5T.js";import{PortfolioOverviewView as he}from"./PortfolioOverview-CEI4gpXi.js";import{t as F}from"./authenticatedMutationClient-DYaieXUe.js";import{r as I,t as L}from"./ReleaseWorkset-BluAe7Sq.js";import{n as R,t as ge}from"./useCompactReleasePreview-BBBQ2fKX.js";var z=e(t(),1),_e=j(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*ne(se)(e)}),ve={create:(e,t,n,r)=>A(j(function*(){return yield*(yield*F).deliveryGraph.createRepairProposal({params:{releaseId:e,relationshipId:t.precondition.relationshipId},payload:{proposalId:n,environmentId:t.candidate.impact.environmentId,expectedRevision:t.precondition.expectedRevision,disposition:t.proposal.disposition,rationale:t.proposal.rationale}})}).pipe(M(N)),{signal:r}),draft:(e,t,n,r,i)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.repairProposalDraft({params:{releaseId:e,relationshipId:n},query:t===null?{revision:r}:{environmentId:t,revision:r}})}).pipe(M(N)),{signal:i}),list:(e,t,n)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.repairCandidates({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(N)),{signal:n}),makeProposalId:()=>A(_e.pipe(M(le)))},B={candidates:`_candidates_nbx6f_1`,draft:`_draft_nbx6f_2`,candidateHeader:`_candidateHeader_nbx6f_10`,draftHeader:`_draftHeader_nbx6f_11`,actions:`_actions_nbx6f_12`,candidate:`_candidate_nbx6f_1`,"reveal-draft":`_reveal-draft_nbx6f_1`},V=c(),H=e=>e.replaceAll(`-`,` `),ye=e=>`${H(e.relationship.sourceNodeKind)} → ${H(e.relationship.targetNodeKind)}`,U=(e,t)=>{let n=new Set,r=[];for(let e of t.flatMap(e=>e.candidates)){let t=`${e.relationship.relationshipId}:${e.relationship.revision}`;n.has(t)||(n.add(t),r.push(e))}return{releaseId:e,environmentId:null,truncated:t.some(({truncated:e})=>e)||r.length>500,candidates:r.slice(0,500)}},W=({announce:e=!1,children:t,stateTag:n})=>{let r=(0,z.useRef)(null);return(0,z.useEffect)(()=>r.current?.focus(),[n]),(0,V.jsx)(`div`,{"aria-live":e?`polite`:void 0,ref:r,role:e?`status`:void 0,tabIndex:-1,children:t})},be=({environmentIds:e,onCreated:t,releaseId:n,session:r,transport:i=ve})=>{let[a,o]=(0,z.useState)({_tag:`idle`}),s=(0,z.useRef)(null),c=r.actor._tag===`human`?r.actor.personId:r.actor.agentId;if((0,z.useEffect)(()=>(s.current?.abort(),s.current=null,o({_tag:`idle`}),()=>s.current?.abort()),[`${r.sessionId}:${r.workspaceId}:${r.permission}:${r.actor._tag}:${c}`,e.join(`:`),n]),r.permission!==`workspace-owner`)return null;let l=async(e,t,n)=>{s.current?.abort();let r=new AbortController;s.current=r;try{let n=await e(r.signal);!r.signal.aborted&&s.current===r&&t(n)}catch{!r.signal.aborted&&s.current===r&&n()}finally{s.current===r&&(s.current=null)}},p=()=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>o({_tag:`ready`,page:U(n,e)}),()=>o({_tag:`load-failed`}))},m=(e,t)=>{o({_tag:`drafting`,page:t}),l(t=>i.draft(n,e.impact.environmentId,e.relationship.relationshipId,e.relationship.revision,t),e=>o({_tag:`draft`,draft:e,page:t}),()=>o({_tag:`draft-failed`,candidate:e,page:t}))},h=t=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>{let r=U(n,e),i=r.candidates.find(e=>e.relationship.relationshipId===t.relationship.relationshipId);if(i===void 0){o({_tag:`ready`,page:r});return}m(i,r)},()=>o({_tag:`load-failed`}))},g=(e,r,a=null)=>{s.current?.abort();let c=new AbortController;s.current=c,o({_tag:`creating`,draft:e,page:r,proposalId:a}),(async()=>{let l=a;try{if(l??=await i.makeProposalId(),c.signal.aborted||s.current!==c||(o({_tag:`creating`,draft:e,page:r,proposalId:l}),await i.create(n,e,l,c.signal),c.signal.aborted||s.current!==c))return;o({_tag:`created`}),t()}catch{!c.signal.aborted&&s.current===c&&o({_tag:`create-failed`,draft:e,page:r,proposalId:l})}finally{s.current===c&&(s.current=null)}})()};if(a._tag===`idle`)return(0,V.jsx)(f,{onClick:p,children:`Find repair candidates`});if(a._tag===`loading`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`Finding incomplete relationships…`})});if(a._tag===`load-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:p,children:`Try again`}),announce:`assertive`,description:`Candidate discovery did not change the release.`,title:`Could not find candidates`,tone:`caution`})});if(a._tag===`created`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(d,{label:`Proposal created`,tone:`positive`})});if(a._tag===`drafting`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`Preparing an exact proposal…`})});if(a._tag===`draft-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:()=>h(a.candidate),children:`Refresh candidate`}),announce:`assertive`,description:`The relationship may have changed since discovery.`,title:`Candidate is stale`,tone:`caution`})});if(a._tag===`draft`||a._tag===`creating`||a._tag===`create-failed`){let e=a._tag===`creating`;return(0,V.jsx)(W,{announce:e,stateTag:a._tag,children:(0,V.jsxs)(O,{as:`section`,className:B.draft,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:B.draftHeader,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(k,{as:`h4`,variant:`card-title`,children:[H(a.draft.proposal.disposition),` relationship`]}),(0,V.jsxs)(k,{tone:`tertiary`,variant:`meta`,children:[`r`,a.draft.precondition.expectedRevision,` → r`,a.draft.precondition.expectedRevision+1]})]}),(0,V.jsx)(d,{label:`Proposal preview`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(k,{children:a.draft.proposal.rationale}),a._tag===`create-failed`?(0,V.jsx)(k,{role:`alert`,tone:`secondary`,children:`The relationship changed or the proposal was not recorded. Refresh the candidate before retrying.`}):null,(0,V.jsxs)(`div`,{className:B.actions,children:[(0,V.jsx)(f,{disabled:e,onClick:()=>o({_tag:`ready`,page:a.page}),variant:`quiet`,children:`Back`}),(0,V.jsx)(f,{loading:e,onClick:()=>g(a.draft,a.page,a._tag===`create-failed`?a.proposalId:null),variant:`primary`,children:`Create proposal`})]})]})})}return a.page.candidates.length===0?(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`No incomplete relationships need an owner decision.`})}):(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsxs)(`div`,{className:B.candidates,children:[(0,V.jsxs)(`div`,{className:B.candidateHeader,children:[(0,V.jsxs)(k,{tone:`secondary`,children:[a.page.candidates.length,a.page.truncated?`+`:``,` incomplete relationship`,a.page.candidates.length===1?``:`s`]}),(0,V.jsx)(f,{onClick:()=>o({_tag:`idle`}),variant:`quiet`,children:`Close`})]}),a.page.candidates.map(e=>(0,V.jsxs)(`button`,{className:B.candidate,onClick:()=>m(e,a.page),type:`button`,children:[(0,V.jsxs)(`span`,{children:[(0,V.jsx)(`strong`,{children:ye(e)}),(0,V.jsx)(`small`,{children:e.explanation})]}),(0,V.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]},e.relationship.relationshipId))]})})},xe=j(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*ne(oe)(e)}),Se={apply:(e,t)=>A(j(function*(){return yield*(yield*F).deliveryGraph.applyRepairProposal({params:{proposalId:e}})}).pipe(M(N)),{signal:t}),list:(e,t,n)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.listRepairProposals({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(N)),{signal:n}),makeReviewId:()=>A(xe.pipe(M(le))),review:(e,t,n,r,i)=>A(j(function*(){return yield*(yield*F).deliveryGraph.reviewRepairProposal({params:{proposalId:e},payload:{reviewId:t,decision:n,rationale:r}})}).pipe(M(N)),{signal:i})},Ce=re(`UnauthorizedApiError`),we=()=>void 0,Te=(e,t)=>{let n=ie(t.proposedAt,e.proposedAt);return n===0?t.proposalId.localeCompare(e.proposalId):n},Ee=(e,t)=>{let n=new Map,r=new Map;for(let e of t){for(let t of e.proposals)n.set(t.proposalId,t);for(let t of e.applications)r.set(t.proposalId,t)}let i=[...n.values()].sort(Te),a=i.slice(0,128),o=a.flatMap(e=>{let t=r.get(e.proposalId);return t===void 0?[]:[t]});return{releaseId:e,environmentId:null,status:null,truncated:t.some(({truncated:e})=>e)||i.length>128,proposals:a,applications:o}},De=(e,t,n,r=Se,i=we)=>{let[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)({_tag:`idle`}),l=(0,z.useRef)(null),u=(0,z.useRef)(null),d=(0,z.useRef)(new Map),f=(0,z.useRef)(s),p=t.join(`:`);(0,z.useEffect)(()=>{if(l.current?.abort(),l.current=null,u.current=null,d.current.clear(),n===null){c({_tag:`idle`});return}let a=new AbortController;return c({_tag:`loading`}),I(t,t=>r.list(e,t,a.signal)).then(t=>{if(!a.signal.aborted){let r=Ee(e,t);c({_tag:`ready`,actionFailure:null,applications:new Map(r.applications.map(e=>[e.proposalId,e])),busyProposalId:null,environmentScopeKey:p,page:r,releaseId:e,sessionKey:n})}},e=>{a.signal.aborted||(Ce(e)&&i(n),c({_tag:`failed`}))}),()=>a.abort()},[p,i,e,a,n,r]),(0,z.useEffect)(()=>()=>l.current?.abort(),[]);let m=s._tag===`ready`&&(s.environmentScopeKey!==p||s.releaseId!==e||s.sessionKey!==n)?{_tag:`loading`}:s;f.current=m;let h=(0,z.useCallback)(e=>{if(f.current._tag!==`ready`||u.current!==null)return null;let t=new AbortController;return u.current=e,l.current?.abort(),l.current=t,c(t=>t._tag===`ready`?{...t,actionFailure:null,busyProposalId:e}:t),t},[]),g=(0,z.useCallback)(e=>l.current===e?(l.current=null,u.current=null,!0):!1,[]),_=(0,z.useCallback)(async(e,t,n)=>{let i=h(e);if(i===null)return!1;try{let a=d.current.get(e),o=a?.decision===t&&a.rationale===n?a:{decision:t,rationale:n,reviewId:await r.makeReviewId()};d.current.set(e,o);let s=await r.review(e,o.reviewId,t,n,i.signal);return!g(i)||i.signal.aborted?!1:(d.current.delete(e),c(t=>t._tag!==`ready`||i.signal.aborted?t:{...t,busyProposalId:null,page:{...t.page,proposals:t.page.proposals.map(t=>t.proposalId===e?s:t)}}),!0)}catch{return!i.signal.aborted&&g(i)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]);return{apply:(0,z.useCallback)(async e=>{let t=h(e);if(t===null)return!1;try{let n=await r.apply(e,t.signal);return!g(t)||t.signal.aborted?!1:(c(r=>{if(r._tag!==`ready`||t.signal.aborted)return r;let i=new Map(r.applications);return i.set(e,n.application),{...r,applications:i,busyProposalId:null}}),!0)}catch{return!t.signal.aborted&&g(t)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]),retry:(0,z.useCallback)(()=>o(e=>e+1),[]),review:_,state:m}},G={root:`_root_1x4wx_1`,ledger:`_ledger_1x4wx_2`,proposal:`_proposal_1x4wx_3`,proposalHeader:`_proposalHeader_1x4wx_4`,decision:`_decision_1x4wx_5`,reviewEvidence:`_reviewEvidence_1x4wx_6`,reviewForm:`_reviewForm_1x4wx_7`,loading:`_loading_1x4wx_8`,panelStack:`_panelStack_1x4wx_9`,header:`_header_1x4wx_26`,peopleTrace:`_peopleTrace_1x4wx_28`,actions:`_actions_1x4wx_29`,agentIdentity:`_agentIdentity_1x4wx_30`,rationale:`_rationale_1x4wx_80`,traceArrow:`_traceArrow_1x4wx_89`,agentGlyph:`_agentGlyph_1x4wx_98`,actionFailure:`_actionFailure_1x4wx_134`,status:`_status_1x4wx_138`,srOnly:`_srOnly_1x4wx_142`,"reveal-review":`_reveal-review_1x4wx_1`},Oe=()=>void 0,ke=e=>e.slice(-6),Ae=(e,t)=>e._tag===t._tag&&(e._tag===`human`?t._tag===`human`&&e.personId===t.personId:t._tag===`agent`&&e.agentId===t.agentId),je=(e,t,n)=>{let r=t.collaborators.find(({id:t})=>t.startsWith(`${e.personId}:`));return r===void 0?{id:e.personId,name:`Person ${ke(e.personId)}`,role:n}:{...r,role:n}},K=({actor:e,release:t,role:n})=>e._tag===`human`?(0,V.jsx)(T,{person:je(e,t,n),size:`compact`}):(0,V.jsxs)(`div`,{className:G.agentIdentity,children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.agentGlyph,children:`✦`}),(0,V.jsxs)(`span`,{children:[(0,V.jsxs)(`strong`,{children:[`Agent `,ke(e.agentId)]}),(0,V.jsx)(`small`,{children:n})]})]}),Me=(e,t)=>{if(t!==void 0)return{label:`Applied · r${t.appliedRevision}`,tone:`positive`};switch(e.status){case`pending`:return{label:`Needs review`,tone:`caution`};case`approved`:return{label:`Ready to apply`,tone:`positive`};case`rejected`:return{label:`Rejected`,tone:`critical`}}},q=e=>ae(e,{day:`2-digit`,hour:`2-digit`,hour12:!1,locale:`en-GB`,minute:`2-digit`,month:`short`}),Ne=({actionFailed:e,application:t,isBusy:n,isGloballyBusy:r,mutationsEnabled:i,onApply:a,onRetry:o,onReview:s,proposal:c,release:l,session:p})=>{let[m,h]=(0,z.useState)(!1),[g,_]=(0,z.useState)(``),[v,y]=(0,z.useState)(null),b=(0,z.useRef)(null),x=Me(c,t),S=i&&c.status===`pending`&&(p.permission===`workspace-owner`||p.permission===`workspace-approver`)&&!Ae(c.origin.actor,p.actor),C=i&&c.status===`approved`&&t===void 0&&p.permission===`workspace-owner`,w=g.trim(),T=async e=>{w.length!==0&&await s(c.proposalId,e,w)&&(h(!1),_(``),y(e===`approved`?`Proposal approved.`:`Proposal rejected.`))},E=async()=>{await a(c.proposalId)&&y(`Repair applied.`)};return(0,z.useEffect)(()=>{v!==null&&b.current?.focus()},[v]),(0,V.jsxs)(O,{as:`article`,className:G.proposal,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`header`,{className:G.proposalHeader,children:[(0,V.jsxs)(`div`,{className:G.decision,children:[(0,V.jsxs)(`strong`,{children:[c.disposition[0]?.toLocaleUpperCase(`en-US`),c.disposition.slice(1)]}),(0,V.jsxs)(`code`,{children:[`r`,c.expectedRevision,` → r`,c.expectedRevision+1]})]}),(0,V.jsxs)(`div`,{className:G.status,ref:b,tabIndex:v===null?void 0:-1,children:[(0,V.jsx)(d,{label:x.label,size:`compact`,tone:x.tone}),(0,V.jsx)(`span`,{"aria-live":`polite`,className:G.srOnly,children:v??``})]})]}),(0,V.jsx)(k,{className:G.rationale,variant:`body-large`,children:c.rationale}),(0,V.jsxs)(`div`,{className:G.peopleTrace,children:[(0,V.jsx)(K,{actor:c.origin.actor,release:l,role:`Proposed · ${q(c.proposedAt)}`}),c.review===null?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:c.review.origin.actor,release:l,role:`${c.review.decision===`approved`?`Approved`:`Rejected`} · ${q(c.review.reviewedAt)}`})]}),t===void 0?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:t.origin.actor,release:l,role:`Applied revision ${t.appliedRevision} · ${q(t.appliedAt)}`})]})]}),c.review===null?null:(0,V.jsxs)(`div`,{className:G.reviewEvidence,children:[(0,V.jsx)(k,{as:`strong`,variant:`label`,children:`Review note`}),(0,V.jsx)(k,{tone:`secondary`,children:c.review.rationale})]}),e?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:o,children:`Reload decisions`}),announce:`assertive`,className:G.actionFailure,description:`The proposal may have changed. Reload the release decisions before trying again.`,title:`Action not recorded`,tone:`caution`}):null,m&&S?(0,V.jsxs)(`form`,{className:G.reviewForm,onSubmit:e=>e.preventDefault(),children:[(0,V.jsx)(te,{description:`Stored with the immutable decision.`,label:`Review note`,required:!0,children:e=>(0,V.jsx)(`textarea`,{...e,autoFocus:!0,maxLength:1e3,onChange:e=>_(e.currentTarget.value),value:g})}),(0,V.jsxs)(`div`,{className:G.actions,children:[(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`rejected`),variant:`quiet`,children:`Reject`}),(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`approved`),variant:`primary`,children:`Approve`})]})]}):(0,V.jsxs)(`div`,{className:G.actions,children:[S?(0,V.jsx)(f,{disabled:r,onClick:()=>h(!0),children:`Review proposal`}):null,C?(0,V.jsx)(f,{disabled:r&&!n,loading:n,onClick:()=>void E(),variant:`primary`,children:`Apply repair`}):null,c.status===`pending`&&Ae(c.origin.actor,p.actor)?(0,V.jsx)(k,{tone:`tertiary`,variant:`meta`,children:`Another owner or approver must review.`}):null]})]})},Pe=()=>(0,V.jsxs)(`div`,{"aria-label":`Loading release decisions`,className:G.loading,role:`status`,children:[(0,V.jsx)(l,{decorative:!1,height:`1.5rem`,label:`Loading release decisions`,width:`12rem`}),(0,V.jsx)(l,{decorative:!0,height:`11rem`,variant:`block`})]}),Fe=({mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,release:i,session:a,state:o})=>o._tag===`idle`||o._tag===`loading`?(0,V.jsx)(Pe,{}):o._tag===`failed`?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:n,children:`Try again`}),description:`Control Center could not read the governed decisions for this release.`,title:`Release decisions unavailable`,tone:`caution`}):o.page.proposals.length===0?(0,V.jsx)(u,{description:`No relationship repair is waiting for review or application.`,title:`No repair decisions`}):(0,V.jsxs)(`div`,{className:G.root,children:[(0,V.jsxs)(`header`,{className:G.header,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(k,{as:`h3`,variant:`card-title`,children:`Repair decisions`}),(0,V.jsx)(k,{tone:`secondary`,children:`One compact ledger from proposal to human decision to applied revision.`})]}),(0,V.jsx)(d,{label:`${o.page.proposals.length}${o.page.truncated?`+`:``} decision${o.page.proposals.length===1?``:`s`}`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(`div`,{className:G.ledger,children:o.page.proposals.map(s=>(0,V.jsx)(Ne,{actionFailed:o.actionFailure===s.proposalId,application:o.applications.get(s.proposalId),isBusy:o.busyProposalId===s.proposalId,isGloballyBusy:o.busyProposalId!==null,mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,proposal:s,release:i,session:a},s.proposalId))})]}),Ie=e=>{let t=e.actor._tag===`human`?e.actor.personId:e.actor.agentId;return`${e.sessionId}:${e.workspaceId}:${e.permission}:${e.actor._tag}:${t}`},Le=e=>{switch(e._tag){case`authenticated`:return{mutationsEnabled:!0,session:e.session};case`storage-unavailable`:return{mutationsEnabled:!1,session:e.session};case`anonymous`:case`blocked`:case`checking`:case`unavailable`:return{mutationsEnabled:!1,session:null}}},Re=({browserSessionState:e,onSessionExpired:t=Oe,release:n,transport:r})=>{let i=Le(e),a=De(n.id,n.targetEnvironmentIds,i.session?.sessionId??null,r,t);return i.session===null?(0,V.jsx)(Pe,{}):(0,V.jsxs)(`div`,{className:G.panelStack,children:[(0,V.jsx)(Fe,{mutationsEnabled:i.mutationsEnabled,onApply:a.apply,onRetry:a.retry,onReview:a.review,release:n,session:i.session,state:a.state}),i.mutationsEnabled?(0,V.jsx)(be,{environmentIds:n.targetEnvironmentIds,onCreated:a.retry,releaseId:n.id,session:i.session},`${n.id}:${n.targetEnvironmentIds.join(`:`)}:${Ie(i.session)}`):null]})},ze=({release:e})=>{let t=y();return(0,V.jsx)(Re,{browserSessionState:t.state,onSessionExpired:t.invalidateSession,release:e})},J={state:`_state_1mg2y_1`,back:`_back_1mg2y_8`,releaseAction:`_releaseAction_1mg2y_9`,previewDetails:`_previewDetails_1mg2y_33`,evidence:`_evidence_1mg2y_34`,full:`_full_1mg2y_35`,fullHeader:`_fullHeader_1mg2y_36`,fullTitle:`_fullTitle_1mg2y_37`,section:`_section_1mg2y_38`,evidenceHeading:`_evidenceHeading_1mg2y_47`,fullIdentity:`_fullIdentity_1mg2y_48`},Be=(e,t)=>{let n=pe(t);if(n===null||e.controller.state._tag!==`ready`)return null;let r=e.controller.state.portfolio.releases.find(e=>e.id===n);return r===void 0?null:{release:r,releaseId:n}},Ve=({workspaceId:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.focus(),[]),(0,V.jsx)(`section`,{className:J.state,"data-release-not-found":``,ref:t,tabIndex:-1,children:(0,V.jsx)(u,{action:(0,V.jsx)(o,{to:m(e),children:`Return to workspace overview`}),description:`This release does not exist in the current workspace snapshot. It may have been removed or the address may be incorrect.`,title:`Release not found`})})},Y=({context:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.querySelector(`#portfolio-title`)?.focus(),[]),(0,V.jsx)(`div`,{ref:t,children:(0,V.jsx)(he,{onPreviewRelease:()=>void 0,onRetry:e.controller.onRetry,state:e.controller.state})})},X=({release:e})=>{let t=a(),n=s(),r=(()=>{switch(e.readinessVerdict){case`blocked`:return{label:`Review blocker`,to:v(t.workspaceId,e.id)};case`held`:return{label:`Repair missing links`,to:`${g(t.workspaceId,e.id)}#release-work`};case`ready`:return{label:`Review ship evidence`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`deploying`:return{label:`Open deployment`,to:`${g(t.workspaceId,e.id)}#release-work`};case`building`:return{label:`Open build`,to:`${g(t.workspaceId,e.id)}#release-work`};case`shipped`:return{label:`View release record`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`unknown`:return null}})();return r===null?(0,V.jsx)(f,{disabled:!0,size:`principal`,stretch:!0,variant:`primary`,children:`Readiness evidence required`}):(0,V.jsx)(o,{className:J.releaseAction,state:n.state,to:r.to,children:r.label})},Z=({release:e})=>(0,V.jsxs)(O,{as:`section`,className:J.evidence,padding:`compact`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:J.evidenceHeading,children:[e.source.service===null?null:(0,V.jsx)(ee,{service:e.source.service}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(k,{as:`h2`,variant:`card-title`,children:e.source.displayName}),(0,V.jsx)(k,{tone:`secondary`,variant:`meta`,children:`Source evidence`})]})]}),(0,V.jsx)(d,{label:e.source.healthLabel,size:`compact`,tone:e.source.healthTone}),e.source.warning===null?(0,V.jsx)(k,{tone:`secondary`,children:`Detailed evidence is not evaluated in the tracer snapshot.`}):(0,V.jsx)(k,{tone:`secondary`,children:e.source.warning})]}),He=e=>`${e.serviceName} · ${e.version} · ${e.relay.codename} · ${e.id}`,Q=({release:e})=>{let t=a(),r=s(),i=n(),o=R();return(0,V.jsx)(b,{actionLabel:`Ask about this release`,agentName:`Relay`,context:He(e),onClick:()=>i(h(t.workspaceId,e.id),{state:r.state,viewTransition:!o})})},$=({release:e})=>e.collaborators.length===0?(0,V.jsx)(u,{description:`Assign an owner or approver before a governed release action can proceed.`,title:`No release collaborators assigned`}):(0,V.jsx)(S,{"aria-label":`All ${e.serviceName} release collaborators`,expanded:!0,limit:e.collaborators.length,onExpandedChange:()=>void 0,people:e.collaborators}),Ue=({selection:e})=>{let t=a(),r=ge(),o=R(),c=s(),l=n(),[u,d]=(0,z.useState)(null),[f,m]=(0,z.useState)(!0),_=fe(c.state,t.workspaceId,e.releaseId),v=me(_.origin),y=g(t.workspaceId,e.releaseId),b=h(t.workspaceId,e.releaseId),x=i(p(t.workspaceId,e.releaseId)),S=i(y),C=i(b),T=x||S||C?de(e.releaseId):void 0;(0,z.useEffect)(()=>{f||u===null||l(v,{replace:!0})},[t.workspaceId,u,f,l,v,e.releaseId]);let D=()=>{t.requestReleaseFocus(e.releaseId),d(`origin`),m(!1)};return(0,V.jsx)(w,{agentEntry:(0,V.jsx)(Q,{release:e.release}),collaborators:(0,V.jsx)($,{release:e.release}),entryMotion:_.isStored?`external`:`intrinsic`,evidence:(0,V.jsx)(Z,{release:e.release}),onOpenChange:e=>{e||D()},onOpenFullView:()=>l(y,{state:c.state,viewTransition:!o}),open:f,openFullViewLabel:`Open ${e.release.relay.codename} full view`,presentation:r?`sheet`:`dialog`,primaryAction:(0,V.jsx)(X,{release:e.release}),release:e.release.release,stages:(0,V.jsx)(E,{heading:`Release stages`,stages:e.release.stages}),...T===void 0?{}:{transitionNames:T},workset:(0,V.jsx)(`div`,{className:J.previewDetails,children:(0,V.jsx)(L,{release:e.release,workspaceId:t.workspaceId})})})},We=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ue,{selection:n})},Ge=({selection:e})=>{let t=a(),n=s(),r=(0,z.useRef)(null),c=ue(n.state,t.workspaceId,e.releaseId),l=c.pathname===_(t.workspaceId)?`Back to items`:`Back to overview`,u=e.release,d=g(t.workspaceId,e.releaseId),f=h(t.workspaceId,e.releaseId),p=i(d),m=i(f),v=p||m?de(e.releaseId):void 0;return(0,z.useEffect)(()=>r.current?.focus(),[]),(0,V.jsxs)(`article`,{className:J.full,"data-release-full-id":u.id,children:[(0,V.jsxs)(`header`,{className:J.fullHeader,children:[(0,V.jsx)(o,{className:J.back,to:me(c),children:l}),(0,V.jsxs)(`div`,{className:J.fullIdentity,children:[(0,V.jsx)(D,{algorithm:u.relay.algorithm,codename:u.relay.codename,"data-rly-release-transition-name":v?.relay,"data-rly-release-transition-part":`relay`,size:`hero`,style:v===void 0?void 0:{viewTransitionName:v.relay},symbolIndices:u.relay.symbolIndices}),u.source.freshnessDateTime===null||u.source.freshnessTime===null?(0,V.jsx)(C,{state:u.source.freshness}):(0,V.jsx)(C,{dateTime:u.source.freshnessDateTime,state:u.source.freshness,time:u.source.freshnessTime})]}),(0,V.jsxs)(`div`,{className:J.fullTitle,children:[(0,V.jsx)(k,{as:`h1`,id:`release-title`,ref:r,tabIndex:-1,variant:`verdict`,children:u.serviceName}),(0,V.jsx)(k,{as:`code`,"data-rly-release-transition-name":v?.version,"data-rly-release-transition-part":`version`,style:v===void 0?void 0:{viewTransitionName:v.version},tone:`secondary`,variant:`code`,children:u.version})]}),(0,V.jsx)(x,{"data-rly-release-transition-name":v?.verdict,"data-rly-release-transition-part":`verdict`,reason:u.readinessReason,style:v===void 0?void 0:{viewTransitionName:v.verdict},tone:u.release.tone,verdict:u.release.verdict}),(0,V.jsx)(X,{release:u})]}),(0,V.jsx)(E,{heading:`Build, verify, production`,stages:u.stages}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-people`,className:J.section,children:[(0,V.jsx)(k,{as:`h2`,id:`release-people`,variant:`section-title`,children:`People`}),(0,V.jsx)($,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-work-title`,className:J.section,id:`release-work`,children:[(0,V.jsx)(k,{as:`h2`,id:`release-work-title`,variant:`section-title`,children:`Delivery relationships`}),(0,V.jsx)(L,{release:u,workspaceId:t.workspaceId}),(0,V.jsx)(ze,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-evidence-title`,className:J.section,id:`release-evidence`,children:[(0,V.jsx)(k,{as:`h2`,id:`release-evidence-title`,variant:`section-title`,children:`Evidence`}),(0,V.jsx)(Z,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-agent`,className:J.section,children:[(0,V.jsx)(k,{as:`h2`,id:`release-agent`,variant:`section-title`,children:`Release agent`}),(0,V.jsx)(Q,{release:u})]})]})},Ke=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ge,{selection:n})};export{X as ReleaseAction,Q as ReleaseAgentEntry,Z as ReleaseEvidence,Ke as ReleaseFullRoute,We as ReleasePreviewRoute,ze as t};
2
- //# sourceMappingURL=ReleaseRoute-CbPW3qUT.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{f as n,m as r,o as i,p as a,t as o,u as s}from"./lib-BzlsKFNV.js";import{t as c}from"./jsx-runtime-By8HlURe.js";import{a as l,n as u,r as d,t as f}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{a as p,i as m,n as h,r as g,s as _,t as v}from"./releasePaths-XoI2BHX3.js";import{d as y}from"./index-zVjlBm9l.js";import{_ as b,d as x,g as S,i as C,l as w,o as T,s as E,t as D,v as ee}from"./patterns-5N-j-AD2-DLfaGePK.js";import{n as O,r as k,t as te}from"./primitives-nKxQGSsE-CJNmac__.js";import{Kn as ne,Pr as re,Rr as ie,_i as A,ai as j,an as ae,in as oe,ja as se,pi as M}from"./agent-api-Dl9TuGOJ.js";import{a as N,t as P}from"./client-Dq_XQE_l.js";import{n as ce,t as le}from"./BrowserCrypto-3BoTVFdl.js";import{a as ue,c as de,l as fe,n as pe,s as me}from"./releaseRoutes-B4ciNOJj.js";import{PortfolioOverviewView as he}from"./PortfolioOverview-CEUHJmGC.js";import{t as F}from"./authenticatedMutationClient-DdowMjyo.js";import{r as I,t as L}from"./ReleaseWorkset-BclY0Nvj.js";import{n as R,t as ge}from"./useCompactReleasePreview-BBBQ2fKX.js";var z=e(t(),1),_e=j(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*ne(oe)(e)}),ve={create:(e,t,n,r)=>A(j(function*(){return yield*(yield*F).deliveryGraph.createRepairProposal({params:{releaseId:e,relationshipId:t.precondition.relationshipId},payload:{proposalId:n,environmentId:t.candidate.impact.environmentId,expectedRevision:t.precondition.expectedRevision,disposition:t.proposal.disposition,rationale:t.proposal.rationale}})}).pipe(M(N)),{signal:r}),draft:(e,t,n,r,i)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.repairProposalDraft({params:{releaseId:e,relationshipId:n},query:t===null?{revision:r}:{environmentId:t,revision:r}})}).pipe(M(N)),{signal:i}),list:(e,t,n)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.repairCandidates({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(N)),{signal:n}),makeProposalId:()=>A(_e.pipe(M(le)))},B={candidates:`_candidates_nbx6f_1`,draft:`_draft_nbx6f_2`,candidateHeader:`_candidateHeader_nbx6f_10`,draftHeader:`_draftHeader_nbx6f_11`,actions:`_actions_nbx6f_12`,candidate:`_candidate_nbx6f_1`,"reveal-draft":`_reveal-draft_nbx6f_1`},V=c(),H=e=>e.replaceAll(`-`,` `),ye=e=>`${H(e.relationship.sourceNodeKind)} → ${H(e.relationship.targetNodeKind)}`,U=(e,t)=>{let n=new Set,r=[];for(let e of t.flatMap(e=>e.candidates)){let t=`${e.relationship.relationshipId}:${e.relationship.revision}`;n.has(t)||(n.add(t),r.push(e))}return{releaseId:e,environmentId:null,truncated:t.some(({truncated:e})=>e)||r.length>500,candidates:r.slice(0,500)}},W=({announce:e=!1,children:t,stateTag:n})=>{let r=(0,z.useRef)(null);return(0,z.useEffect)(()=>r.current?.focus(),[n]),(0,V.jsx)(`div`,{"aria-live":e?`polite`:void 0,ref:r,role:e?`status`:void 0,tabIndex:-1,children:t})},be=({environmentIds:e,onCreated:t,releaseId:n,session:r,transport:i=ve})=>{let[a,o]=(0,z.useState)({_tag:`idle`}),s=(0,z.useRef)(null),c=r.actor._tag===`human`?r.actor.personId:r.actor.agentId;if((0,z.useEffect)(()=>(s.current?.abort(),s.current=null,o({_tag:`idle`}),()=>s.current?.abort()),[`${r.sessionId}:${r.workspaceId}:${r.permission}:${r.actor._tag}:${c}`,e.join(`:`),n]),r.permission!==`workspace-owner`)return null;let l=async(e,t,n)=>{s.current?.abort();let r=new AbortController;s.current=r;try{let n=await e(r.signal);!r.signal.aborted&&s.current===r&&t(n)}catch{!r.signal.aborted&&s.current===r&&n()}finally{s.current===r&&(s.current=null)}},p=()=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>o({_tag:`ready`,page:U(n,e)}),()=>o({_tag:`load-failed`}))},m=(e,t)=>{o({_tag:`drafting`,page:t}),l(t=>i.draft(n,e.impact.environmentId,e.relationship.relationshipId,e.relationship.revision,t),e=>o({_tag:`draft`,draft:e,page:t}),()=>o({_tag:`draft-failed`,candidate:e,page:t}))},h=t=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>{let r=U(n,e),i=r.candidates.find(e=>e.relationship.relationshipId===t.relationship.relationshipId);if(i===void 0){o({_tag:`ready`,page:r});return}m(i,r)},()=>o({_tag:`load-failed`}))},g=(e,r,a=null)=>{s.current?.abort();let c=new AbortController;s.current=c,o({_tag:`creating`,draft:e,page:r,proposalId:a}),(async()=>{let l=a;try{if(l??=await i.makeProposalId(),c.signal.aborted||s.current!==c||(o({_tag:`creating`,draft:e,page:r,proposalId:l}),await i.create(n,e,l,c.signal),c.signal.aborted||s.current!==c))return;o({_tag:`created`}),t()}catch{!c.signal.aborted&&s.current===c&&o({_tag:`create-failed`,draft:e,page:r,proposalId:l})}finally{s.current===c&&(s.current=null)}})()};if(a._tag===`idle`)return(0,V.jsx)(f,{onClick:p,children:`Find repair candidates`});if(a._tag===`loading`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`Finding incomplete relationships…`})});if(a._tag===`load-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:p,children:`Try again`}),announce:`assertive`,description:`Candidate discovery did not change the release.`,title:`Could not find candidates`,tone:`caution`})});if(a._tag===`created`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(d,{label:`Proposal created`,tone:`positive`})});if(a._tag===`drafting`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`Preparing an exact proposal…`})});if(a._tag===`draft-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:()=>h(a.candidate),children:`Refresh candidate`}),announce:`assertive`,description:`The relationship may have changed since discovery.`,title:`Candidate is stale`,tone:`caution`})});if(a._tag===`draft`||a._tag===`creating`||a._tag===`create-failed`){let e=a._tag===`creating`;return(0,V.jsx)(W,{announce:e,stateTag:a._tag,children:(0,V.jsxs)(O,{as:`section`,className:B.draft,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:B.draftHeader,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(k,{as:`h4`,variant:`card-title`,children:[H(a.draft.proposal.disposition),` relationship`]}),(0,V.jsxs)(k,{tone:`tertiary`,variant:`meta`,children:[`r`,a.draft.precondition.expectedRevision,` → r`,a.draft.precondition.expectedRevision+1]})]}),(0,V.jsx)(d,{label:`Proposal preview`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(k,{children:a.draft.proposal.rationale}),a._tag===`create-failed`?(0,V.jsx)(k,{role:`alert`,tone:`secondary`,children:`The relationship changed or the proposal was not recorded. Refresh the candidate before retrying.`}):null,(0,V.jsxs)(`div`,{className:B.actions,children:[(0,V.jsx)(f,{disabled:e,onClick:()=>o({_tag:`ready`,page:a.page}),variant:`quiet`,children:`Back`}),(0,V.jsx)(f,{loading:e,onClick:()=>g(a.draft,a.page,a._tag===`create-failed`?a.proposalId:null),variant:`primary`,children:`Create proposal`})]})]})})}return a.page.candidates.length===0?(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(k,{tone:`secondary`,children:`No incomplete relationships need an owner decision.`})}):(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsxs)(`div`,{className:B.candidates,children:[(0,V.jsxs)(`div`,{className:B.candidateHeader,children:[(0,V.jsxs)(k,{tone:`secondary`,children:[a.page.candidates.length,a.page.truncated?`+`:``,` incomplete relationship`,a.page.candidates.length===1?``:`s`]}),(0,V.jsx)(f,{onClick:()=>o({_tag:`idle`}),variant:`quiet`,children:`Close`})]}),a.page.candidates.map(e=>(0,V.jsxs)(`button`,{className:B.candidate,onClick:()=>m(e,a.page),type:`button`,children:[(0,V.jsxs)(`span`,{children:[(0,V.jsx)(`strong`,{children:ye(e)}),(0,V.jsx)(`small`,{children:e.explanation})]}),(0,V.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]},e.relationship.relationshipId))]})})},xe=j(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*ne(ae)(e)}),Se={apply:(e,t)=>A(j(function*(){return yield*(yield*F).deliveryGraph.applyRepairProposal({params:{proposalId:e}})}).pipe(M(N)),{signal:t}),list:(e,t,n)=>A(j(function*(){return yield*(yield*P()).deliveryGraph.listRepairProposals({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(N)),{signal:n}),makeReviewId:()=>A(xe.pipe(M(le))),review:(e,t,n,r,i)=>A(j(function*(){return yield*(yield*F).deliveryGraph.reviewRepairProposal({params:{proposalId:e},payload:{reviewId:t,decision:n,rationale:r}})}).pipe(M(N)),{signal:i})},Ce=se(`UnauthorizedApiError`),we=()=>void 0,Te=(e,t)=>{let n=re(t.proposedAt,e.proposedAt);return n===0?t.proposalId.localeCompare(e.proposalId):n},Ee=(e,t)=>{let n=new Map,r=new Map;for(let e of t){for(let t of e.proposals)n.set(t.proposalId,t);for(let t of e.applications)r.set(t.proposalId,t)}let i=[...n.values()].sort(Te),a=i.slice(0,128),o=a.flatMap(e=>{let t=r.get(e.proposalId);return t===void 0?[]:[t]});return{releaseId:e,environmentId:null,status:null,truncated:t.some(({truncated:e})=>e)||i.length>128,proposals:a,applications:o}},De=(e,t,n,r=Se,i=we)=>{let[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)({_tag:`idle`}),l=(0,z.useRef)(null),u=(0,z.useRef)(null),d=(0,z.useRef)(new Map),f=(0,z.useRef)(s),p=t.join(`:`);(0,z.useEffect)(()=>{if(l.current?.abort(),l.current=null,u.current=null,d.current.clear(),n===null){c({_tag:`idle`});return}let a=new AbortController;return c({_tag:`loading`}),I(t,t=>r.list(e,t,a.signal)).then(t=>{if(!a.signal.aborted){let r=Ee(e,t);c({_tag:`ready`,actionFailure:null,applications:new Map(r.applications.map(e=>[e.proposalId,e])),busyProposalId:null,environmentScopeKey:p,page:r,releaseId:e,sessionKey:n})}},e=>{a.signal.aborted||(Ce(e)&&i(n),c({_tag:`failed`}))}),()=>a.abort()},[p,i,e,a,n,r]),(0,z.useEffect)(()=>()=>l.current?.abort(),[]);let m=s._tag===`ready`&&(s.environmentScopeKey!==p||s.releaseId!==e||s.sessionKey!==n)?{_tag:`loading`}:s;f.current=m;let h=(0,z.useCallback)(e=>{if(f.current._tag!==`ready`||u.current!==null)return null;let t=new AbortController;return u.current=e,l.current?.abort(),l.current=t,c(t=>t._tag===`ready`?{...t,actionFailure:null,busyProposalId:e}:t),t},[]),g=(0,z.useCallback)(e=>l.current===e?(l.current=null,u.current=null,!0):!1,[]),_=(0,z.useCallback)(async(e,t,n)=>{let i=h(e);if(i===null)return!1;try{let a=d.current.get(e),o=a?.decision===t&&a.rationale===n?a:{decision:t,rationale:n,reviewId:await r.makeReviewId()};d.current.set(e,o);let s=await r.review(e,o.reviewId,t,n,i.signal);return!g(i)||i.signal.aborted?!1:(d.current.delete(e),c(t=>t._tag!==`ready`||i.signal.aborted?t:{...t,busyProposalId:null,page:{...t.page,proposals:t.page.proposals.map(t=>t.proposalId===e?s:t)}}),!0)}catch{return!i.signal.aborted&&g(i)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]);return{apply:(0,z.useCallback)(async e=>{let t=h(e);if(t===null)return!1;try{let n=await r.apply(e,t.signal);return!g(t)||t.signal.aborted?!1:(c(r=>{if(r._tag!==`ready`||t.signal.aborted)return r;let i=new Map(r.applications);return i.set(e,n.application),{...r,applications:i,busyProposalId:null}}),!0)}catch{return!t.signal.aborted&&g(t)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]),retry:(0,z.useCallback)(()=>o(e=>e+1),[]),review:_,state:m}},G={root:`_root_1x4wx_1`,ledger:`_ledger_1x4wx_2`,proposal:`_proposal_1x4wx_3`,proposalHeader:`_proposalHeader_1x4wx_4`,decision:`_decision_1x4wx_5`,reviewEvidence:`_reviewEvidence_1x4wx_6`,reviewForm:`_reviewForm_1x4wx_7`,loading:`_loading_1x4wx_8`,panelStack:`_panelStack_1x4wx_9`,header:`_header_1x4wx_26`,peopleTrace:`_peopleTrace_1x4wx_28`,actions:`_actions_1x4wx_29`,agentIdentity:`_agentIdentity_1x4wx_30`,rationale:`_rationale_1x4wx_80`,traceArrow:`_traceArrow_1x4wx_89`,agentGlyph:`_agentGlyph_1x4wx_98`,actionFailure:`_actionFailure_1x4wx_134`,status:`_status_1x4wx_138`,srOnly:`_srOnly_1x4wx_142`,"reveal-review":`_reveal-review_1x4wx_1`},Oe=()=>void 0,ke=e=>e.slice(-6),Ae=(e,t)=>e._tag===t._tag&&(e._tag===`human`?t._tag===`human`&&e.personId===t.personId:t._tag===`agent`&&e.agentId===t.agentId),je=(e,t,n)=>{let r=t.collaborators.find(({id:t})=>t.startsWith(`${e.personId}:`));return r===void 0?{id:e.personId,name:`Person ${ke(e.personId)}`,role:n}:{...r,role:n}},K=({actor:e,release:t,role:n})=>e._tag===`human`?(0,V.jsx)(T,{person:je(e,t,n),size:`compact`}):(0,V.jsxs)(`div`,{className:G.agentIdentity,children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.agentGlyph,children:`✦`}),(0,V.jsxs)(`span`,{children:[(0,V.jsxs)(`strong`,{children:[`Agent `,ke(e.agentId)]}),(0,V.jsx)(`small`,{children:n})]})]}),Me=(e,t)=>{if(t!==void 0)return{label:`Applied · r${t.appliedRevision}`,tone:`positive`};switch(e.status){case`pending`:return{label:`Needs review`,tone:`caution`};case`approved`:return{label:`Ready to apply`,tone:`positive`};case`rejected`:return{label:`Rejected`,tone:`critical`}}},q=e=>ie(e,{day:`2-digit`,hour:`2-digit`,hour12:!1,locale:`en-GB`,minute:`2-digit`,month:`short`}),Ne=({actionFailed:e,application:t,isBusy:n,isGloballyBusy:r,mutationsEnabled:i,onApply:a,onRetry:o,onReview:s,proposal:c,release:l,session:p})=>{let[m,h]=(0,z.useState)(!1),[g,_]=(0,z.useState)(``),[v,y]=(0,z.useState)(null),b=(0,z.useRef)(null),x=Me(c,t),S=i&&c.status===`pending`&&(p.permission===`workspace-owner`||p.permission===`workspace-approver`)&&!Ae(c.origin.actor,p.actor),C=i&&c.status===`approved`&&t===void 0&&p.permission===`workspace-owner`,w=g.trim(),T=async e=>{w.length!==0&&await s(c.proposalId,e,w)&&(h(!1),_(``),y(e===`approved`?`Proposal approved.`:`Proposal rejected.`))},E=async()=>{await a(c.proposalId)&&y(`Repair applied.`)};return(0,z.useEffect)(()=>{v!==null&&b.current?.focus()},[v]),(0,V.jsxs)(O,{as:`article`,className:G.proposal,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`header`,{className:G.proposalHeader,children:[(0,V.jsxs)(`div`,{className:G.decision,children:[(0,V.jsxs)(`strong`,{children:[c.disposition[0]?.toLocaleUpperCase(`en-US`),c.disposition.slice(1)]}),(0,V.jsxs)(`code`,{children:[`r`,c.expectedRevision,` → r`,c.expectedRevision+1]})]}),(0,V.jsxs)(`div`,{className:G.status,ref:b,tabIndex:v===null?void 0:-1,children:[(0,V.jsx)(d,{label:x.label,size:`compact`,tone:x.tone}),(0,V.jsx)(`span`,{"aria-live":`polite`,className:G.srOnly,children:v??``})]})]}),(0,V.jsx)(k,{className:G.rationale,variant:`body-large`,children:c.rationale}),(0,V.jsxs)(`div`,{className:G.peopleTrace,children:[(0,V.jsx)(K,{actor:c.origin.actor,release:l,role:`Proposed · ${q(c.proposedAt)}`}),c.review===null?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:c.review.origin.actor,release:l,role:`${c.review.decision===`approved`?`Approved`:`Rejected`} · ${q(c.review.reviewedAt)}`})]}),t===void 0?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:t.origin.actor,release:l,role:`Applied revision ${t.appliedRevision} · ${q(t.appliedAt)}`})]})]}),c.review===null?null:(0,V.jsxs)(`div`,{className:G.reviewEvidence,children:[(0,V.jsx)(k,{as:`strong`,variant:`label`,children:`Review note`}),(0,V.jsx)(k,{tone:`secondary`,children:c.review.rationale})]}),e?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:o,children:`Reload decisions`}),announce:`assertive`,className:G.actionFailure,description:`The proposal may have changed. Reload the release decisions before trying again.`,title:`Action not recorded`,tone:`caution`}):null,m&&S?(0,V.jsxs)(`form`,{className:G.reviewForm,onSubmit:e=>e.preventDefault(),children:[(0,V.jsx)(te,{description:`Stored with the immutable decision.`,label:`Review note`,required:!0,children:e=>(0,V.jsx)(`textarea`,{...e,autoFocus:!0,maxLength:1e3,onChange:e=>_(e.currentTarget.value),value:g})}),(0,V.jsxs)(`div`,{className:G.actions,children:[(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`rejected`),variant:`quiet`,children:`Reject`}),(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`approved`),variant:`primary`,children:`Approve`})]})]}):(0,V.jsxs)(`div`,{className:G.actions,children:[S?(0,V.jsx)(f,{disabled:r,onClick:()=>h(!0),children:`Review proposal`}):null,C?(0,V.jsx)(f,{disabled:r&&!n,loading:n,onClick:()=>void E(),variant:`primary`,children:`Apply repair`}):null,c.status===`pending`&&Ae(c.origin.actor,p.actor)?(0,V.jsx)(k,{tone:`tertiary`,variant:`meta`,children:`Another owner or approver must review.`}):null]})]})},Pe=()=>(0,V.jsxs)(`div`,{"aria-label":`Loading release decisions`,className:G.loading,role:`status`,children:[(0,V.jsx)(l,{decorative:!1,height:`1.5rem`,label:`Loading release decisions`,width:`12rem`}),(0,V.jsx)(l,{decorative:!0,height:`11rem`,variant:`block`})]}),Fe=({mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,release:i,session:a,state:o})=>o._tag===`idle`||o._tag===`loading`?(0,V.jsx)(Pe,{}):o._tag===`failed`?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:n,children:`Try again`}),description:`Control Center could not read the governed decisions for this release.`,title:`Release decisions unavailable`,tone:`caution`}):o.page.proposals.length===0?(0,V.jsx)(u,{description:`No relationship repair is waiting for review or application.`,title:`No repair decisions`}):(0,V.jsxs)(`div`,{className:G.root,children:[(0,V.jsxs)(`header`,{className:G.header,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(k,{as:`h3`,variant:`card-title`,children:`Repair decisions`}),(0,V.jsx)(k,{tone:`secondary`,children:`One compact ledger from proposal to human decision to applied revision.`})]}),(0,V.jsx)(d,{label:`${o.page.proposals.length}${o.page.truncated?`+`:``} decision${o.page.proposals.length===1?``:`s`}`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(`div`,{className:G.ledger,children:o.page.proposals.map(s=>(0,V.jsx)(Ne,{actionFailed:o.actionFailure===s.proposalId,application:o.applications.get(s.proposalId),isBusy:o.busyProposalId===s.proposalId,isGloballyBusy:o.busyProposalId!==null,mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,proposal:s,release:i,session:a},s.proposalId))})]}),Ie=e=>{let t=e.actor._tag===`human`?e.actor.personId:e.actor.agentId;return`${e.sessionId}:${e.workspaceId}:${e.permission}:${e.actor._tag}:${t}`},Le=e=>{switch(e._tag){case`authenticated`:return{mutationsEnabled:!0,session:e.session};case`storage-unavailable`:return{mutationsEnabled:!1,session:e.session};case`anonymous`:case`blocked`:case`checking`:case`unavailable`:return{mutationsEnabled:!1,session:null}}},Re=({browserSessionState:e,onSessionExpired:t=Oe,release:n,transport:r})=>{let i=Le(e),a=De(n.id,n.targetEnvironmentIds,i.session?.sessionId??null,r,t);return i.session===null?(0,V.jsx)(Pe,{}):(0,V.jsxs)(`div`,{className:G.panelStack,children:[(0,V.jsx)(Fe,{mutationsEnabled:i.mutationsEnabled,onApply:a.apply,onRetry:a.retry,onReview:a.review,release:n,session:i.session,state:a.state}),i.mutationsEnabled?(0,V.jsx)(be,{environmentIds:n.targetEnvironmentIds,onCreated:a.retry,releaseId:n.id,session:i.session},`${n.id}:${n.targetEnvironmentIds.join(`:`)}:${Ie(i.session)}`):null]})},ze=({release:e})=>{let t=y();return(0,V.jsx)(Re,{browserSessionState:t.state,onSessionExpired:t.invalidateSession,release:e})},J={state:`_state_1mg2y_1`,back:`_back_1mg2y_8`,releaseAction:`_releaseAction_1mg2y_9`,previewDetails:`_previewDetails_1mg2y_33`,evidence:`_evidence_1mg2y_34`,full:`_full_1mg2y_35`,fullHeader:`_fullHeader_1mg2y_36`,fullTitle:`_fullTitle_1mg2y_37`,section:`_section_1mg2y_38`,evidenceHeading:`_evidenceHeading_1mg2y_47`,fullIdentity:`_fullIdentity_1mg2y_48`},Be=(e,t)=>{let n=pe(t);if(n===null||e.controller.state._tag!==`ready`)return null;let r=e.controller.state.portfolio.releases.find(e=>e.id===n);return r===void 0?null:{release:r,releaseId:n}},Ve=({workspaceId:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.focus(),[]),(0,V.jsx)(`section`,{className:J.state,"data-release-not-found":``,ref:t,tabIndex:-1,children:(0,V.jsx)(u,{action:(0,V.jsx)(o,{to:m(e),children:`Return to workspace overview`}),description:`This release does not exist in the current workspace snapshot. It may have been removed or the address may be incorrect.`,title:`Release not found`})})},Y=({context:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.querySelector(`#portfolio-title`)?.focus(),[]),(0,V.jsx)(`div`,{ref:t,children:(0,V.jsx)(he,{onPreviewRelease:()=>void 0,onRetry:e.controller.onRetry,state:e.controller.state})})},X=({release:e})=>{let t=a(),n=s(),r=(()=>{switch(e.readinessVerdict){case`blocked`:return{label:`Review blocker`,to:v(t.workspaceId,e.id)};case`held`:return{label:`Repair missing links`,to:`${g(t.workspaceId,e.id)}#release-work`};case`ready`:return{label:`Review ship evidence`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`deploying`:return{label:`Open deployment`,to:`${g(t.workspaceId,e.id)}#release-work`};case`building`:return{label:`Open build`,to:`${g(t.workspaceId,e.id)}#release-work`};case`shipped`:return{label:`View release record`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`unknown`:return null}})();return r===null?(0,V.jsx)(f,{disabled:!0,size:`principal`,stretch:!0,variant:`primary`,children:`Readiness evidence required`}):(0,V.jsx)(o,{className:J.releaseAction,state:n.state,to:r.to,children:r.label})},Z=({release:e})=>(0,V.jsxs)(O,{as:`section`,className:J.evidence,padding:`compact`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:J.evidenceHeading,children:[e.source.service===null?null:(0,V.jsx)(ee,{service:e.source.service}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(k,{as:`h2`,variant:`card-title`,children:e.source.displayName}),(0,V.jsx)(k,{tone:`secondary`,variant:`meta`,children:`Source evidence`})]})]}),(0,V.jsx)(d,{label:e.source.healthLabel,size:`compact`,tone:e.source.healthTone}),e.source.warning===null?(0,V.jsx)(k,{tone:`secondary`,children:`Detailed evidence is not evaluated in the tracer snapshot.`}):(0,V.jsx)(k,{tone:`secondary`,children:e.source.warning})]}),He=e=>`${e.serviceName} · ${e.version} · ${e.relay.codename} · ${e.id}`,Q=({release:e})=>{let t=a(),r=s(),i=n(),o=R();return(0,V.jsx)(b,{actionLabel:`Ask about this release`,agentName:`Relay`,context:He(e),onClick:()=>i(h(t.workspaceId,e.id),{state:r.state,viewTransition:!o})})},$=({release:e})=>e.collaborators.length===0?(0,V.jsx)(u,{description:`Assign an owner or approver before a governed release action can proceed.`,title:`No release collaborators assigned`}):(0,V.jsx)(S,{"aria-label":`All ${e.serviceName} release collaborators`,expanded:!0,limit:e.collaborators.length,onExpandedChange:()=>void 0,people:e.collaborators}),Ue=({selection:e})=>{let t=a(),r=ge(),o=R(),c=s(),l=n(),[u,d]=(0,z.useState)(null),[f,m]=(0,z.useState)(!0),_=fe(c.state,t.workspaceId,e.releaseId),v=me(_.origin),y=g(t.workspaceId,e.releaseId),b=h(t.workspaceId,e.releaseId),x=i(p(t.workspaceId,e.releaseId)),S=i(y),C=i(b),T=x||S||C?de(e.releaseId):void 0;(0,z.useEffect)(()=>{f||u===null||l(v,{replace:!0})},[t.workspaceId,u,f,l,v,e.releaseId]);let D=()=>{t.requestReleaseFocus(e.releaseId),d(`origin`),m(!1)};return(0,V.jsx)(w,{agentEntry:(0,V.jsx)(Q,{release:e.release}),collaborators:(0,V.jsx)($,{release:e.release}),entryMotion:_.isStored?`external`:`intrinsic`,evidence:(0,V.jsx)(Z,{release:e.release}),onOpenChange:e=>{e||D()},onOpenFullView:()=>l(y,{state:c.state,viewTransition:!o}),open:f,openFullViewLabel:`Open ${e.release.relay.codename} full view`,presentation:r?`sheet`:`dialog`,primaryAction:(0,V.jsx)(X,{release:e.release}),release:e.release.release,stages:(0,V.jsx)(E,{heading:`Release stages`,stages:e.release.stages}),...T===void 0?{}:{transitionNames:T},workset:(0,V.jsx)(`div`,{className:J.previewDetails,children:(0,V.jsx)(L,{release:e.release,workspaceId:t.workspaceId})})})},We=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ue,{selection:n})},Ge=({selection:e})=>{let t=a(),n=s(),r=(0,z.useRef)(null),c=ue(n.state,t.workspaceId,e.releaseId),l=c.pathname===_(t.workspaceId)?`Back to items`:`Back to overview`,u=e.release,d=g(t.workspaceId,e.releaseId),f=h(t.workspaceId,e.releaseId),p=i(d),m=i(f),v=p||m?de(e.releaseId):void 0;return(0,z.useEffect)(()=>r.current?.focus(),[]),(0,V.jsxs)(`article`,{className:J.full,"data-release-full-id":u.id,children:[(0,V.jsxs)(`header`,{className:J.fullHeader,children:[(0,V.jsx)(o,{className:J.back,to:me(c),children:l}),(0,V.jsxs)(`div`,{className:J.fullIdentity,children:[(0,V.jsx)(D,{algorithm:u.relay.algorithm,codename:u.relay.codename,"data-rly-release-transition-name":v?.relay,"data-rly-release-transition-part":`relay`,size:`hero`,style:v===void 0?void 0:{viewTransitionName:v.relay},symbolIndices:u.relay.symbolIndices}),u.source.freshnessDateTime===null||u.source.freshnessTime===null?(0,V.jsx)(C,{state:u.source.freshness}):(0,V.jsx)(C,{dateTime:u.source.freshnessDateTime,state:u.source.freshness,time:u.source.freshnessTime})]}),(0,V.jsxs)(`div`,{className:J.fullTitle,children:[(0,V.jsx)(k,{as:`h1`,id:`release-title`,ref:r,tabIndex:-1,variant:`verdict`,children:u.serviceName}),(0,V.jsx)(k,{as:`code`,"data-rly-release-transition-name":v?.version,"data-rly-release-transition-part":`version`,style:v===void 0?void 0:{viewTransitionName:v.version},tone:`secondary`,variant:`code`,children:u.version})]}),(0,V.jsx)(x,{"data-rly-release-transition-name":v?.verdict,"data-rly-release-transition-part":`verdict`,reason:u.readinessReason,style:v===void 0?void 0:{viewTransitionName:v.verdict},tone:u.release.tone,verdict:u.release.verdict}),(0,V.jsx)(X,{release:u})]}),(0,V.jsx)(E,{heading:`Build, verify, production`,stages:u.stages}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-people`,className:J.section,children:[(0,V.jsx)(k,{as:`h2`,id:`release-people`,variant:`section-title`,children:`People`}),(0,V.jsx)($,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-work-title`,className:J.section,id:`release-work`,children:[(0,V.jsx)(k,{as:`h2`,id:`release-work-title`,variant:`section-title`,children:`Delivery relationships`}),(0,V.jsx)(L,{release:u,workspaceId:t.workspaceId}),(0,V.jsx)(ze,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-evidence-title`,className:J.section,id:`release-evidence`,children:[(0,V.jsx)(k,{as:`h2`,id:`release-evidence-title`,variant:`section-title`,children:`Evidence`}),(0,V.jsx)(Z,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-agent`,className:J.section,children:[(0,V.jsx)(k,{as:`h2`,id:`release-agent`,variant:`section-title`,children:`Release agent`}),(0,V.jsx)(Q,{release:u})]})]})},Ke=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ge,{selection:n})};export{X as ReleaseAction,Q as ReleaseAgentEntry,Z as ReleaseEvidence,Ke as ReleaseFullRoute,We as ReleasePreviewRoute,ze as t};
2
+ //# sourceMappingURL=ReleaseRoute-BuQybrsg.js.map