@knpkv/control-center 0.3.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 (346) hide show
  1. package/README.md +70 -17
  2. package/dist/client/.vite/manifest.json +223 -178
  3. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.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-D1F1xE_2.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
  10. package/dist/client/assets/AuthorizedSharePage-CVBJ1NTm.js +2 -0
  11. package/dist/client/assets/AuthorizedSharePage-CVBJ1NTm.js.map +1 -0
  12. package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
  13. package/dist/client/assets/{BrowserCrypto-DVWR7DFd.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
  14. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
  15. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js.map +1 -0
  16. package/dist/client/assets/CommandSearch-DUeRRbV2.js +2 -0
  17. package/dist/client/assets/{CommandSearch-CP_QCbkm.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
  18. package/dist/client/assets/ItemsPage-BF2ZkSzh.js +2 -0
  19. package/dist/client/assets/{ItemsPage-BGFUkRL2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-DIgzx0K2.js → PairPage-CkaZltHd.js} +2 -2
  21. package/dist/client/assets/{PairPage-DIgzx0K2.js.map → PairPage-CkaZltHd.js.map} +1 -1
  22. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
  23. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js.map +1 -0
  24. package/dist/client/assets/PullRequestReviewPanel-D1IpvHe2.js +6 -0
  25. package/dist/client/assets/PullRequestReviewPanel-D1IpvHe2.js.map +1 -0
  26. package/dist/client/assets/ReleaseRoute-BuQybrsg.js +2 -0
  27. package/dist/client/assets/{ReleaseRoute-DXJ8Jg60.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-hw5Ee69-.js.map +1 -0
  32. package/dist/client/assets/TimelinePage-Cj3V98uI.js +2 -0
  33. package/dist/client/assets/TimelinePage-Cj3V98uI.js.map +1 -0
  34. package/dist/client/assets/WorkspaceEntityLink-C_rc8lxi.js +2 -0
  35. package/dist/client/assets/{WorkspaceEntityLink-AdZ_T-Wk.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-XbKSPths.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
  41. package/dist/client/assets/{WorkspacePullRequestDetails-BErJ5bk8.js → WorkspacePullRequestDetails-CizqydjN.js} +3 -3
  42. package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js.map +1 -0
  43. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
  44. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.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-Ccwguc3i.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
  56. package/dist/client/assets/authorizedShareTransport-CnclcYai.js +2 -0
  57. package/dist/client/assets/{authorizedShareTransport-DZHgFEkh.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-zVjlBm9l.js +11 -0
  65. package/dist/client/assets/index-zVjlBm9l.js.map +1 -0
  66. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
  67. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
  68. package/dist/client/assets/{presentPortfolio-D3ZIcnqt.js → presentPortfolio-DLEq-vEz.js} +2 -2
  69. package/dist/client/assets/presentPortfolio-DLEq-vEz.js.map +1 -0
  70. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
  71. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
  72. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
  73. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
  74. package/dist/client/assets/pullRequestReviewThreadReplay-CXHspFTr.js +2 -0
  75. package/dist/client/assets/pullRequestReviewThreadReplay-CXHspFTr.js.map +1 -0
  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-BCuIdZyA.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
  80. package/dist/client/assets/serviceOnboarding-D0FmodRi.js +2 -0
  81. package/dist/client/assets/{serviceOnboarding-Jg_0yNjf.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
  82. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
  83. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
  84. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
  85. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.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-BYNfR2wo.js +2 -0
  89. package/dist/client/assets/workspaceScrollCapture-BYNfR2wo.js.map +1 -0
  90. package/dist/client/assets/workspaceSettingsTransport-Br4lBmvS.js +2 -0
  91. package/dist/client/assets/{workspaceSettingsTransport-CZWYL5T7.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
  92. package/dist/client/build-graph.json +115 -0
  93. package/dist/client/index.html +1 -1
  94. package/dist/server/api/agent.d.ts +575 -44
  95. package/dist/server/api/agent.d.ts.map +1 -1
  96. package/dist/server/api/deliveryGraph.d.ts +474 -454
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -1
  98. package/dist/server/api/index.d.ts +2 -2
  99. package/dist/server/api/index.d.ts.map +1 -1
  100. package/dist/server/api/index.js +4 -4
  101. package/dist/server/api/liveEvents.d.ts +20 -0
  102. package/dist/server/api/liveEvents.d.ts.map +1 -1
  103. package/dist/server/api/portfolio.d.ts +23 -0
  104. package/dist/server/api/portfolio.d.ts.map +1 -1
  105. package/dist/server/api/session.d.ts +23 -1
  106. package/dist/server/api/session.d.ts.map +1 -1
  107. package/dist/server/api/shares.d.ts +4 -2
  108. package/dist/server/api/shares.d.ts.map +1 -1
  109. package/dist/server/assets/{BindConfig-DIsf2Rnh.js → BindConfig-DAASchDn.js} +2405 -322
  110. package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
  111. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js → CodePipelineStateDecoder-CNiFRgSi.js} +2 -2
  112. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js.map → CodePipelineStateDecoder-CNiFRgSi.js.map} +1 -1
  113. package/dist/server/assets/{agent-CyZ40zs1.js → agent-xQhAQXly.js} +181 -11
  114. package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
  115. package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js → controlCenterApi-DNXK7MT1.js} +6 -5
  116. package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
  117. package/dist/server/assets/{descriptor-CKtTnhef.js → descriptor-CCvNzSZL.js} +10 -10
  118. package/dist/server/assets/{descriptor-CKtTnhef.js.map → descriptor-CCvNzSZL.js.map} +1 -1
  119. package/dist/server/assets/{failures-mgYDkUZy.js → failures-CesHLYbN.js} +2 -2
  120. package/dist/server/assets/{failures-mgYDkUZy.js.map → failures-CesHLYbN.js.map} +1 -1
  121. package/dist/server/assets/{firstPartyServices-D7b8BOek.js → firstPartyServices-Cdzjcs2H.js} +2 -2
  122. package/dist/server/assets/{firstPartyServices-D7b8BOek.js.map → firstPartyServices-Cdzjcs2H.js.map} +1 -1
  123. package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js → manualPluginSynchronization-DFIeUHP9.js} +6 -5
  124. package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
  125. package/dist/server/assets/{plugins-D__oMDpI.js → plugins-DiPrfzV8.js} +2 -2
  126. package/dist/server/assets/{plugins-D__oMDpI.js.map → plugins-DiPrfzV8.js.map} +1 -1
  127. package/dist/server/assets/{readiness-BhA-Nr9c.js → readiness-31Mqc-9H.js} +3 -3
  128. package/dist/server/assets/{readiness-BhA-Nr9c.js.map → readiness-31Mqc-9H.js.map} +1 -1
  129. package/dist/server/assets/{relationshipInferenceMaterialization-DYBcaWhQ.js → relationshipInferenceMaterialization-Dyix96px.js} +1158 -169
  130. package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
  131. package/dist/server/assets/{workspaceSettings-BE713Oe8.js → workspaceSettings-sv8h_h2P.js} +2787 -2700
  132. package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
  133. package/dist/server/build-graph.json +144 -4
  134. package/dist/server/domain/actors.d.ts +12 -12
  135. package/dist/server/domain/confluenceTasks.d.ts +27 -0
  136. package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
  137. package/dist/server/domain/deliveryGraph.d.ts +51 -49
  138. package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
  139. package/dist/server/domain/governedAction/bindings.d.ts +26 -12
  140. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  141. package/dist/server/domain/governedAction/lifecycle.d.ts +8 -8
  142. package/dist/server/domain/governedAction/model.d.ts +45 -18
  143. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  144. package/dist/server/domain/governedAction/stateMachine.d.ts +34 -34
  145. package/dist/server/domain/index.js +6 -6
  146. package/dist/server/domain/normalizedIssue.d.ts +1 -1
  147. package/dist/server/domain/normalizedPage.d.ts +1 -0
  148. package/dist/server/domain/normalizedPage.d.ts.map +1 -1
  149. package/dist/server/domain/prReview.d.ts +38 -0
  150. package/dist/server/domain/prReview.d.ts.map +1 -1
  151. package/dist/server/domain/prReviewReconciliation.d.ts +56 -0
  152. package/dist/server/domain/prReviewReconciliation.d.ts.map +1 -0
  153. package/dist/server/domain/prReviewRevision.d.ts +1 -0
  154. package/dist/server/domain/prReviewRevision.d.ts.map +1 -1
  155. package/dist/server/domain/readiness/model.d.ts +3 -3
  156. package/dist/server/domain/release.d.ts +3 -3
  157. package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
  158. package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
  159. package/dist/server/domain/releasePublication.d.ts +4 -0
  160. package/dist/server/domain/releasePublication.d.ts.map +1 -0
  161. package/dist/server/index.js +8 -8
  162. package/dist/server/server/agent/AgentJobWorker.d.ts +10 -1
  163. package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -1
  164. package/dist/server/server/agent/ReleaseAgentPrompt.d.ts.map +1 -1
  165. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts +4 -3
  166. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts.map +1 -1
  167. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts +17 -1
  168. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts.map +1 -1
  169. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts +76 -2
  170. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts.map +1 -1
  171. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts +27 -0
  172. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts.map +1 -0
  173. package/dist/server/server/api/ApplicationServices.d.ts +39 -5
  174. package/dist/server/server/api/ApplicationServices.d.ts.map +1 -1
  175. package/dist/server/server/api/Handlers.d.ts +1 -1
  176. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  177. package/dist/server/server/api/RequestBoundary.d.ts.map +1 -1
  178. package/dist/server/server/application/GovernedReviewSuggestionPublicationGateway.d.ts.map +1 -1
  179. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts +4 -0
  180. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts.map +1 -1
  181. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
  182. package/dist/server/server/application/index.d.ts +1 -0
  183. package/dist/server/server/application/index.d.ts.map +1 -1
  184. package/dist/server/server/application/liveEvents.d.ts.map +1 -1
  185. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
  186. package/dist/server/server/application/pipelineExecutionProjection.d.ts +7 -6
  187. package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
  188. package/dist/server/server/application/portfolioSnapshots.d.ts +2018 -4
  189. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  190. package/dist/server/server/application/pullRequestReviews.d.ts.map +1 -1
  191. package/dist/server/server/application/releaseAgent.d.ts +11 -3
  192. package/dist/server/server/application/releaseAgent.d.ts.map +1 -1
  193. package/dist/server/server/application/releasePublicationIntent.d.ts +7 -0
  194. package/dist/server/server/application/releasePublicationIntent.d.ts.map +1 -0
  195. package/dist/server/server/application/releasePublicationMetadata.d.ts +61 -0
  196. package/dist/server/server/application/releasePublicationMetadata.d.ts.map +1 -0
  197. package/dist/server/server/application/releasePublicationSubmissions.d.ts +3730 -0
  198. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -0
  199. package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
  200. package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
  201. package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -1
  202. package/dist/server/server/cli.js +8 -8
  203. package/dist/server/server/cli.js.map +1 -1
  204. package/dist/server/server/governance/governedActionDigests.d.ts +236 -218
  205. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  206. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +3 -4
  207. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -1
  208. package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -1
  209. package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +1 -1
  210. package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +8 -8
  211. package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +2 -2
  212. package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +1 -1
  213. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +37 -30
  214. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  215. package/dist/server/server/index.js +5 -5
  216. package/dist/server/server/internal/codepipeline-state-probe.js +1 -1
  217. package/dist/server/server/persistence/Database.d.ts +1 -1
  218. package/dist/server/server/persistence/Database.d.ts.map +1 -1
  219. package/dist/server/server/persistence/Persistence.d.ts +1549 -577
  220. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  221. package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -1
  222. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
  223. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
  224. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
  225. package/dist/server/server/persistence/repositories/agentJobModels.d.ts +345 -8
  226. package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -1
  227. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +654 -192
  228. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -1
  229. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +148 -138
  230. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
  231. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +27 -25
  232. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
  233. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +117 -111
  234. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
  235. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +28 -27
  236. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
  237. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +50 -48
  238. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
  239. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +117 -111
  240. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
  241. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +259 -234
  242. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  243. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +68 -46
  244. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  245. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +668 -190
  246. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  247. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +680 -206
  248. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  249. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +38 -31
  250. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  251. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +46 -32
  252. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  253. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +46 -32
  254. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  255. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +678 -205
  256. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  257. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts +85 -4
  258. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts.map +1 -1
  259. package/dist/server/server/persistence/repositories/models.d.ts +9 -9
  260. package/dist/server/server/persistence/repositories/peopleRepository.d.ts +36 -36
  261. package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +1 -1
  262. package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +6 -6
  263. package/dist/server/server/persistence/repositories/readiness/contract.d.ts +450 -450
  264. package/dist/server/server/persistence/repositories/readiness/queue.d.ts +14 -14
  265. package/dist/server/server/persistence/repositories/readinessRepository.d.ts +7 -7
  266. package/dist/server/server/persistence/repositories/releaseRepository.d.ts +18 -18
  267. package/dist/server/server/persistence/repositories/retentionRepository.d.ts.map +1 -1
  268. package/dist/server/server/persistence/repositories/timelineRepository.d.ts +4 -4
  269. package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -1
  270. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts +9 -0
  271. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts.map +1 -0
  272. package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -1
  273. package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -1
  274. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +2 -2
  275. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -1
  276. package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -1
  277. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts +8 -0
  278. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts.map +1 -0
  279. package/dist/server/server/plugins/jira/index.d.ts +1 -1
  280. package/dist/server/server/plugins/jira/index.d.ts.map +1 -1
  281. package/dist/server/server/runtime/Bootstrap.d.ts +1 -1
  282. package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -1
  283. package/dist/server/server/runtime/ControlCenterServer.d.ts +3 -3
  284. package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -1
  285. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts +11 -1
  286. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts.map +1 -1
  287. package/dist/server/server/runtime/RetentionStartup.d.ts.map +1 -1
  288. package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -1
  289. package/dist/server/server/secrets/SecretStore.d.ts.map +1 -1
  290. package/package.json +10 -9
  291. package/dist/client/assets/AgentPage-DGL93TJU.js +0 -3
  292. package/dist/client/assets/AgentPage-DGL93TJU.js.map +0 -1
  293. package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
  294. package/dist/client/assets/AtlassianOAuthCallbackPage-D1F1xE_2.js +0 -2
  295. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js +0 -2
  296. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js.map +0 -1
  297. package/dist/client/assets/BrowserCrypto-DVWR7DFd.js +0 -2
  298. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js +0 -2
  299. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js.map +0 -1
  300. package/dist/client/assets/CommandSearch-CP_QCbkm.js +0 -2
  301. package/dist/client/assets/ItemsPage-BGFUkRL2.js +0 -2
  302. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js +0 -2
  303. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js.map +0 -1
  304. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js +0 -6
  305. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js.map +0 -1
  306. package/dist/client/assets/ReleaseRoute-DXJ8Jg60.js +0 -2
  307. package/dist/client/assets/ReleaseWorkset-Dtzalmji.js +0 -2
  308. package/dist/client/assets/ReleaseWorkset-Dtzalmji.js.map +0 -1
  309. package/dist/client/assets/ServicesPage-DGcUjd2H.js +0 -2
  310. package/dist/client/assets/ServicesPage-DGcUjd2H.js.map +0 -1
  311. package/dist/client/assets/TimelinePage-Bq1RTQlP.js +0 -2
  312. package/dist/client/assets/TimelinePage-Bq1RTQlP.js.map +0 -1
  313. package/dist/client/assets/WorkspaceEntityLink-AdZ_T-Wk.js +0 -2
  314. package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
  315. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js +0 -3
  316. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js.map +0 -1
  317. package/dist/client/assets/WorkspaceHomeLink-XbKSPths.js +0 -2
  318. package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js.map +0 -1
  319. package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
  320. package/dist/client/assets/WorkspaceSettingsPage-Fy7Wx8Y2.js +0 -2
  321. package/dist/client/assets/WorkspaceSettingsPage-Fy7Wx8Y2.js.map +0 -1
  322. package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
  323. package/dist/client/assets/agent-api-QVqt4a0O.js +0 -19
  324. package/dist/client/assets/agent-api-QVqt4a0O.js.map +0 -1
  325. package/dist/client/assets/authenticatedMutationClient-Ccwguc3i.js +0 -2
  326. package/dist/client/assets/authorizedShareTransport-DZHgFEkh.js +0 -2
  327. package/dist/client/assets/client-D27unen8.js +0 -5
  328. package/dist/client/assets/client-D27unen8.js.map +0 -1
  329. package/dist/client/assets/connectionTestTransport-BQ55d6Me.js +0 -2
  330. package/dist/client/assets/connectionTestTransport-BQ55d6Me.js.map +0 -1
  331. package/dist/client/assets/index-j5ze816l.js +0 -11
  332. package/dist/client/assets/index-j5ze816l.js.map +0 -1
  333. package/dist/client/assets/presentPortfolio-D3ZIcnqt.js.map +0 -1
  334. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js +0 -2
  335. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js.map +0 -1
  336. package/dist/client/assets/releaseRoutes-BCuIdZyA.js +0 -2
  337. package/dist/client/assets/serviceOnboarding-Jg_0yNjf.js +0 -2
  338. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js +0 -2
  339. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js.map +0 -1
  340. package/dist/client/assets/workspaceSettingsTransport-CZWYL5T7.js +0 -2
  341. package/dist/server/assets/BindConfig-DIsf2Rnh.js.map +0 -1
  342. package/dist/server/assets/agent-CyZ40zs1.js.map +0 -1
  343. package/dist/server/assets/controlCenterApi-ZUX3Y-LE.js.map +0 -1
  344. package/dist/server/assets/manualPluginSynchronization-DFlhKvav.js.map +0 -1
  345. package/dist/server/assets/relationshipInferenceMaterialization-DYBcaWhQ.js.map +0 -1
  346. package/dist/server/assets/workspaceSettings-BE713Oe8.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimelinePage-Bq1RTQlP.js","names":[],"sources":["../../../src/client/timeline/TimelineDetailSheet.module.css","../../../src/client/timeline/useTimelineDetail.ts","../../../src/client/timeline/TimelineDetailSheet.tsx","../../../src/client/timeline/TimelinePage.module.css","../../../src/client/timeline/useTimeline.ts","../../../src/client/timeline/TimelinePage.tsx"],"sourcesContent":[".body,\n.loading,\n.content,\n.identity,\n.identityMeta,\n.section,\n.ledger {\n display: grid;\n}\n\n.body,\n.loading,\n.content {\n gap: var(--rly-space-20);\n}\n\n.identity,\n.section {\n gap: var(--rly-space-12);\n}\n\n.identity {\n padding-block: var(--rly-space-12) var(--rly-space-20);\n border-block-end: 1px solid var(--rly-color-border-1);\n}\n\n.identity h2,\n.identity p,\n.section h3,\n.ledger dd {\n margin: 0;\n}\n\n.identity h2 {\n max-inline-size: 13ch;\n overflow-wrap: anywhere;\n text-wrap: balance;\n}\n\n.identityMeta {\n grid-template-columns: repeat(2, minmax(0, max-content));\n align-items: center;\n gap: var(--rly-space-8) var(--rly-space-12);\n}\n\n.ledger {\n margin: 0;\n}\n\n.ledger div {\n display: grid;\n grid-template-columns: minmax(7rem, 0.35fr) minmax(0, 1fr);\n gap: var(--rly-space-12);\n padding-block: var(--rly-space-12);\n border-block-start: 1px solid var(--rly-color-border-1);\n}\n\n.ledger dt {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n}\n\n.ledger dd {\n overflow-wrap: anywhere;\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n}\n\n.footerLink {\n min-block-size: 3rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding-inline: var(--rly-space-16);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-action-background);\n color: var(--rly-color-action-foreground);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n text-align: center;\n text-decoration: none;\n}\n\n.footerLink:focus-visible {\n outline: 2px solid var(--rly-color-focus);\n outline-offset: var(--rly-space-2);\n}\n\n@media (max-width: 30rem) {\n .identityMeta,\n .ledger div {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n","import * as Effect from \"effect/Effect\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\nimport { useCallback, useEffect, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { TimelineEvent, TimelineEventDetail } from \"../../domain/timeline.js\"\n\n/** Browser boundary for one exact owner-only Timeline event expansion. */\nexport interface TimelineDetailTransport {\n readonly load: (eventKey: TimelineEvent[\"eventKey\"], signal: AbortSignal) => Promise<TimelineEventDetail>\n}\n\nexport type TimelineDetailState =\n | { readonly _tag: \"idle\" }\n | {\n readonly _tag: \"loading\"\n readonly eventKey: TimelineEvent[\"eventKey\"]\n readonly sessionKey: string\n }\n | {\n readonly _tag: \"failed\"\n readonly eventKey: TimelineEvent[\"eventKey\"]\n readonly sessionKey: string\n }\n | {\n readonly _tag: \"ready\"\n readonly detail: TimelineEventDetail\n readonly eventKey: TimelineEvent[\"eventKey\"]\n readonly sessionKey: string\n }\n\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Generated-client transport for an owner-authorized event detail read. */\nexport const browserTimelineDetailTransport: TimelineDetailTransport = {\n load: (eventKey, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.timeline.detail({ params: { eventKey } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\n/** Keep a detail result bound to the exact event and authenticated session that requested it. */\nexport const useTimelineDetail = (\n eventKey: TimelineEvent[\"eventKey\"] | null,\n sessionKey: string | null,\n onSessionExpired: (sessionKey: string) => void,\n transport: TimelineDetailTransport = browserTimelineDetailTransport\n): { readonly retry: () => void; readonly state: TimelineDetailState } => {\n const [requestRevision, setRequestRevision] = useState(0)\n const [state, setState] = useState<TimelineDetailState>({ _tag: \"idle\" })\n\n useEffect(() => {\n if (eventKey === null || sessionKey === null) {\n setState({ _tag: \"idle\" })\n return\n }\n const abort = new AbortController()\n setState({ _tag: \"loading\", eventKey, sessionKey })\n transport.load(eventKey, abort.signal).then(\n (detail) => {\n if (!abort.signal.aborted) setState({ _tag: \"ready\", detail, eventKey, sessionKey })\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ _tag: \"failed\", eventKey, sessionKey })\n }\n )\n return () => abort.abort()\n }, [eventKey, onSessionExpired, requestRevision, sessionKey, transport])\n\n const currentState: TimelineDetailState = eventKey === null || sessionKey === null\n ? { _tag: \"idle\" }\n : state._tag === \"idle\" || state.eventKey !== eventKey || state.sessionKey !== sessionKey\n ? { _tag: \"loading\", eventKey, sessionKey }\n : state\n\n return {\n retry: useCallback(() => setRequestRevision((revision) => revision + 1), []),\n state: currentState\n }\n}\n","import { ServiceMark } from \"@knpkv/rly/patterns\"\nimport { Button, Sheet, Skeleton, StateLabel, StatePanel, Text } from \"@knpkv/rly/primitives\"\nimport * as DateTime from \"effect/DateTime\"\nimport type { ReactElement } from \"react\"\nimport { Link } from \"react-router\"\n\nimport type { TimelineEvent, TimelineEventDetail, TimelineSourceKind } from \"../../domain/timeline.js\"\nimport styles from \"./TimelineDetailSheet.module.css\"\nimport { type TimelineDetailTransport, useTimelineDetail } from \"./useTimelineDetail.js\"\n\nconst sourceLabels: Readonly<Record<TimelineSourceKind, string>> = {\n action: \"Governed action\",\n \"plugin-sync\": \"Service sync\",\n relationship: \"Delivery link\",\n system: \"Control Center\"\n}\n\nconst formatTimestamp = (event: TimelineEvent): string =>\n DateTime.formatUtc(event.occurredAt, {\n day: \"2-digit\",\n hour: \"2-digit\",\n hour12: false,\n locale: \"en-GB\",\n minute: \"2-digit\",\n month: \"short\",\n second: \"2-digit\",\n year: \"numeric\"\n })\n\n/** Non-secret durable references that make one owner-visible event attributable. */\nexport const timelineDetailLedger = (\n detail: TimelineEventDetail\n): ReadonlyArray<{ readonly label: string; readonly value: string }> => {\n const optionalEntries: ReadonlyArray<{ readonly label: string; readonly value: string | null }> = [\n { label: \"Actor\", value: detail.identifiers.actorId },\n { label: \"Agent job\", value: detail.agentJob?.jobId ?? null },\n { label: \"Action\", value: detail.identifiers.actionId },\n { label: \"Relationship\", value: detail.identifiers.relationshipId },\n { label: \"Connection\", value: detail.identifiers.pluginConnectionId },\n { label: \"Release\", value: detail.identifiers.releaseId },\n { label: \"Entity\", value: detail.identifiers.entityId }\n ]\n return [\n { label: \"Event\", value: detail.event.eventKey },\n { label: \"Type\", value: detail.event.eventType },\n ...optionalEntries.filter(\n (entry): entry is { readonly label: string; readonly value: string } => entry.value !== null\n )\n ]\n}\n\n/** Owner-only expansion of one redacted Timeline row into its durable provenance. */\nexport const TimelineDetailSheet = ({\n agentHref,\n event,\n onClose,\n onSessionExpired,\n sessionKey,\n transport\n}: {\n readonly agentHref: string\n readonly event: TimelineEvent | null\n readonly onClose: () => void\n readonly onSessionExpired: (sessionKey: string) => void\n readonly sessionKey: string | null\n readonly transport?: TimelineDetailTransport\n}): ReactElement => {\n const controller = useTimelineDetail(event?.eventKey ?? null, sessionKey, onSessionExpired, transport)\n\n return (\n <Sheet.Root\n onOpenChange={(open) => {\n if (!open) onClose()\n }}\n open={event !== null}\n >\n <Sheet.Content\n closeLabel=\"Close event details\"\n description=\"Durable provenance for this exact workspace event.\"\n title=\"Event details\"\n >\n <Sheet.Body className={styles.body}>\n {event === null || controller.state._tag === \"idle\" || controller.state._tag === \"loading\" ? (\n <div aria-busy=\"true\" aria-label=\"Loading event details\" className={styles.loading}>\n <Skeleton height=\"10rem\" />\n <Skeleton height=\"14rem\" />\n </div>\n ) : controller.state._tag === \"failed\" ? (\n <StatePanel\n action={<Button onClick={controller.retry}>Try again</Button>}\n description=\"The Timeline row remains unchanged. Its provenance could not be loaded.\"\n title=\"Event details unavailable\"\n tone=\"caution\"\n />\n ) : (\n <div className={styles.content}>\n <section aria-labelledby=\"timeline-detail-title\" className={styles.identity}>\n <Text tone=\"secondary\" variant=\"label\">\n {sourceLabels[controller.state.detail.event.sourceKind]}\n </Text>\n <Text as=\"h2\" id=\"timeline-detail-title\" variant=\"page-title\">\n {controller.state.detail.event.title}\n </Text>\n <div className={styles.identityMeta}>\n <StateLabel\n label={controller.state.detail.event.actor.kind}\n size=\"compact\"\n tone={controller.state.detail.event.actor.kind === \"agent\" ? \"progress\" : \"neutral\"}\n />\n {controller.state.detail.event.service === null ? null : (\n <ServiceMark service={controller.state.detail.event.service} size=\"compact\" />\n )}\n <Text tone=\"secondary\" variant=\"meta\">\n {controller.state.detail.event.actor.label}\n </Text>\n <Text\n as=\"time\"\n dateTime={DateTime.formatIso(controller.state.detail.event.occurredAt)}\n tone=\"secondary\"\n variant=\"meta\"\n >\n {formatTimestamp(controller.state.detail.event)} UTC\n </Text>\n </div>\n </section>\n\n <section aria-labelledby=\"timeline-provenance-title\" className={styles.section}>\n <Text as=\"h3\" id=\"timeline-provenance-title\" variant=\"section-title\">\n Provenance\n </Text>\n <dl className={styles.ledger}>\n {timelineDetailLedger(controller.state.detail).map(({ label, value }) => (\n <div key={label}>\n <dt>{label}</dt>\n <dd>{value}</dd>\n </div>\n ))}\n </dl>\n </section>\n </div>\n )}\n </Sheet.Body>\n <Sheet.Footer>\n <Link className={styles.footerLink} to={agentHref}>\n Ask Relay about this event\n </Link>\n </Sheet.Footer>\n </Sheet.Content>\n </Sheet.Root>\n )\n}\n",".page,\n.hero,\n.page {\n gap: clamp(2.5rem, 7vw, 6rem);\n}\n\n.hero {\n gap: var(--rly-space-16);\n}\n\n.hero p,\n.hero h1 {\n margin: 0;\n}\n\n.hero h1 {\n max-inline-size: 9ch;\n letter-spacing: -0.075em;\n text-wrap: balance;\n}\n\n.intro {\n max-inline-size: 46rem;\n}\n\n.askRelay {\n inline-size: fit-content;\n min-block-size: 3.5rem;\n display: inline-flex;\n align-items: center;\n padding-inline: var(--rly-space-20);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-action-background);\n color: var(--rly-color-action-foreground);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n text-decoration: none;\n}\n\n.summary {\n display: grid;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n margin: 0;\n overflow: hidden;\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n}\n\n.summary div {\n display: grid;\n gap: var(--rly-space-12);\n min-block-size: 8rem;\n padding: var(--rly-space-20);\n background: var(--rly-color-surface-1);\n}\n\n.summary div + div {\n border-inline-start: 1px solid var(--rly-color-border-1);\n}\n\n.summary dt {\n color: var(--rly-color-text-2);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n}\n\n.summary dd {\n margin: 0;\n color: var(--rly-color-text-1);\n font-size: clamp(2.5rem, 6vw, 5rem);\n font-weight: 700;\n line-height: 0.9;\n letter-spacing: -0.07em;\n}\n\n.summary div[data-source=\"action\"] {\n box-shadow: inset 0 4px var(--rly-color-service-codecommit);\n}\n.summary div[data-source=\"relationship\"] {\n box-shadow: inset 0 4px var(--rly-color-service-codepipeline);\n}\n.summary div[data-source=\"plugin-sync\"] {\n box-shadow: inset 0 4px var(--rly-color-service-jira);\n}\n.summary div[data-source=\"system\"] {\n box-shadow: inset 0 4px var(--rly-color-focus);\n}\n\n.filters {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr;\n gap: var(--rly-space-12);\n}\n\n.filters label {\n display: grid;\n gap: var(--rly-space-8);\n color: var(--rly-color-text-2);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n}\n\n.filters select,\n.filters input {\n min-block-size: 3.5rem;\n inline-size: 100%;\n padding-inline: var(--rly-space-16);\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n font: inherit;\n}\n\n.events {\n margin: 0;\n padding: 0;\n list-style: none;\n border-block-start: 1px solid var(--rly-color-border-1);\n}\n\n.rowActor {\n display: grid;\n gap: var(--rly-space-8);\n justify-items: start;\n}\n\n@media (max-width: 48rem) {\n .summary {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .summary div:nth-child(3) {\n border-inline-start: 0;\n }\n .summary div:nth-child(n + 3) {\n border-block-start: 1px solid var(--rly-color-border-1);\n }\n .filters {\n grid-template-columns: 1fr;\n }\n}\n","import * as DateTime from \"effect/DateTime\"\nimport * as Effect from \"effect/Effect\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Schema from \"effect/Schema\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { TimelineActorKind, TimelineCursor, TimelineEvent, TimelinePage } from \"../../domain/timeline.js\"\nimport { UtcTimestamp } from \"../../domain/utcTimestamp.js\"\n\n/** User-controlled Timeline filters. */\nexport interface TimelineFilters {\n readonly actorKind: TimelineActorKind | \"all\"\n readonly from: string\n readonly to: string\n}\n\n/** Browser transport boundary for Timeline tests and authenticated reads. */\nexport interface TimelineTransport {\n readonly load: (\n signal: AbortSignal,\n filters: TimelineFilters,\n cursor: TimelineCursor | null\n ) => Promise<TimelinePage>\n}\n\nexport type TimelineState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"failed\" }\n | {\n readonly _tag: \"ready\"\n readonly events: ReadonlyArray<TimelineEvent>\n readonly isLoadingMore: boolean\n readonly nextCursor: TimelineCursor | null\n }\n\nconst dateBoundary = (value: string, isEnd: boolean): TimelineCursor[\"occurredAt\"] =>\n Schema.decodeSync(UtcTimestamp)(`${value}T${isEnd ? \"23:59:59.999\" : \"00:00:00.000\"}Z`)\n\n/** Generated-client transport for the authenticated Timeline page. */\nexport const browserTimelineTransport: TimelineTransport = {\n load: (signal, filters, cursor) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.timeline.page({\n query: {\n ...(filters.actorKind === \"all\" ? {} : { actor: filters.actorKind }),\n ...(cursor === null\n ? {}\n : { beforeEventKey: cursor.eventKey, beforeOccurredAt: cursor.occurredAt }),\n ...(filters.from.length === 0 ? {} : { from: dateBoundary(filters.from, false) }),\n limit: 50,\n ...(filters.to.length === 0 ? {} : { to: dateBoundary(filters.to, true) })\n }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Load and incrementally page one exact authenticated Timeline filter set. */\nexport const useTimeline = (\n filters: TimelineFilters,\n sessionKey: string | null,\n onSessionExpired: (sessionKey: string) => void,\n transport: TimelineTransport = browserTimelineTransport\n): {\n readonly loadMore: () => void\n readonly retry: () => void\n readonly state: TimelineState\n} => {\n const [requestRevision, setRequestRevision] = useState(0)\n const [state, setState] = useState<TimelineState>({ _tag: \"idle\" })\n const activeRequest = useRef<AbortController | null>(null)\n const filterKey = `${filters.actorKind}|${filters.from}|${filters.to}`\n\n useEffect(() => {\n activeRequest.current?.abort()\n if (sessionKey === null) {\n setState({ _tag: \"idle\" })\n return\n }\n const request = new AbortController()\n activeRequest.current = request\n setState({ _tag: \"loading\" })\n transport.load(request.signal, filters, null).then(\n (page) => {\n if (!request.signal.aborted) {\n setState({ _tag: \"ready\", events: page.events, isLoadingMore: false, nextCursor: page.nextCursor })\n }\n },\n (failure) => {\n if (request.signal.aborted) return\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ _tag: \"failed\" })\n }\n )\n return () => request.abort()\n }, [filterKey, filters, onSessionExpired, requestRevision, sessionKey, transport])\n\n const loadMore = useCallback((): void => {\n if (sessionKey === null || state._tag !== \"ready\" || state.nextCursor === null || state.isLoadingMore) return\n activeRequest.current?.abort()\n const request = new AbortController()\n activeRequest.current = request\n const current = state\n setState({ ...current, isLoadingMore: true })\n transport.load(request.signal, filters, current.nextCursor).then(\n (page) => {\n if (!request.signal.aborted) {\n setState({\n _tag: \"ready\",\n events: [...current.events, ...page.events],\n isLoadingMore: false,\n nextCursor: page.nextCursor\n })\n }\n },\n (failure) => {\n if (request.signal.aborted) return\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ ...current, isLoadingMore: false })\n }\n )\n }, [filters, onSessionExpired, sessionKey, state, transport])\n\n return {\n loadMore,\n retry: useCallback(() => setRequestRevision((revision) => revision + 1), []),\n state\n }\n}\n\n/** Compact UTC timestamp for Timeline rows. */\nexport const formatTimelineTimestamp = (timestamp: TimelineEvent[\"occurredAt\"]): string =>\n new Intl.DateTimeFormat(\"en-GB\", {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n timeZone: \"UTC\"\n }).format(DateTime.toDateUtc(timestamp))\n","import { LinkProvider } from \"@knpkv/rly/foundations\"\nimport { TimelineRow as RlyTimelineRow } from \"@knpkv/rly/patterns\"\nimport { Button, StatePanel, Text } from \"@knpkv/rly/primitives\"\nimport * as DateTime from \"effect/DateTime\"\nimport { type ReactElement, type ReactNode, useMemo, useState } from \"react\"\nimport { Link, useLocation } from \"react-router\"\n\nimport type { TimelineActorKind, TimelineEvent, TimelineSourceKind } from \"../../domain/timeline.js\"\nimport { browserReadableSessionKey, type BrowserSessionState, useBrowserSession } from \"../BrowserSession.js\"\nimport { contextualAgentPath } from \"../contextualAgentPath.js\"\nimport { WorkspaceEntityLink } from \"../entities/WorkspaceEntityLink.js\"\nimport { TimelineDetailSheet } from \"./TimelineDetailSheet.js\"\nimport type { TimelineDetailTransport } from \"./useTimelineDetail.js\"\nimport styles from \"./TimelinePage.module.css\"\nimport {\n browserTimelineTransport,\n formatTimelineTimestamp,\n type TimelineFilters,\n type TimelineTransport,\n useTimeline\n} from \"./useTimeline.js\"\n\nconst actorOptions: ReadonlyArray<{ readonly label: string; readonly value: TimelineActorKind | \"all\" }> = [\n { label: \"Everyone\", value: \"all\" },\n { label: \"People\", value: \"human\" },\n { label: \"Agents\", value: \"agent\" },\n { label: \"Services\", value: \"plugin\" },\n { label: \"System\", value: \"system\" }\n]\nconst timelineSources: ReadonlyArray<TimelineSourceKind> = [\"action\", \"relationship\", \"plugin-sync\", \"system\"]\n\nconst actorFilter = (value: string): TimelineFilters[\"actorKind\"] =>\n actorOptions.find((option) => option.value === value)?.value ?? \"all\"\n\nconst sourcePresentation: Readonly<Record<TimelineSourceKind, { readonly label: string }>> = {\n action: { label: \"Governed action\" },\n \"plugin-sync\": { label: \"Service sync\" },\n relationship: { label: \"Delivery link\" },\n system: { label: \"Control Center\" }\n}\n\nconst TimelineRow = ({\n actor,\n continued,\n event\n}: {\n readonly actor?: ReactNode\n readonly continued: boolean\n readonly event: TimelineEvent\n}): ReactElement => (\n <RlyTimelineRow\n continued={continued}\n event={{\n actor: actor ?? event.actor.label,\n actorKind: event.actor.kind,\n dateTime: DateTime.formatIso(event.occurredAt),\n detail: sourcePresentation[event.sourceKind].label,\n ...(event.href === null ? {} : { href: event.href }),\n id: event.eventKey,\n ...(event.service === null ? {} : { service: event.service }),\n time: formatTimelineTimestamp(event.occurredAt),\n title: event.title\n }}\n />\n)\n\n/** Only workspace owners can deliberately expand redacted Timeline rows. */\nexport const canInspectTimelineDetails = (state: BrowserSessionState): boolean => {\n switch (state._tag) {\n case \"authenticated\":\n return state.session.permission === \"workspace-owner\"\n case \"storage-unavailable\":\n return state.session?.permission === \"workspace-owner\"\n case \"anonymous\":\n case \"blocked\":\n case \"checking\":\n case \"unavailable\":\n return false\n }\n}\n\n/** Preserve one selected event alongside the current Timeline filters for Relay. */\nexport const timelineEventAgentPath = (\n pathname: string,\n search: string,\n hash: string,\n eventKey: TimelineEvent[\"eventKey\"]\n): string => {\n const context = new URLSearchParams(search)\n context.set(\"event\", eventKey)\n return contextualAgentPath(pathname, `?${context.toString()}`, hash)\n}\n\nconst SourceSummary = ({ events }: { readonly events: ReadonlyArray<TimelineEvent> }): ReactElement => {\n const totals = useMemo(\n () =>\n new Map<TimelineSourceKind, number>([\n [\"action\", events.filter(({ sourceKind }) => sourceKind === \"action\").length],\n [\"relationship\", events.filter(({ sourceKind }) => sourceKind === \"relationship\").length],\n [\"plugin-sync\", events.filter(({ sourceKind }) => sourceKind === \"plugin-sync\").length],\n [\"system\", events.filter(({ sourceKind }) => sourceKind === \"system\").length]\n ]),\n [events]\n )\n return (\n <dl className={styles.summary}>\n {timelineSources.map((source) => {\n return (\n <div data-source={source} key={source}>\n <dt>{sourcePresentation[source].label}</dt>\n <dd>{totals.get(source) ?? 0}</dd>\n </div>\n )\n })}\n </dl>\n )\n}\n\n/** Bird's-eye view of attributable human, agent, service, and system activity. */\nexport const TimelinePage = ({\n detailTransport,\n transport = browserTimelineTransport\n}: {\n readonly detailTransport?: TimelineDetailTransport\n readonly transport?: TimelineTransport\n} = {}): ReactElement => {\n const location = useLocation()\n const browserSession = useBrowserSession()\n const sessionKey = browserReadableSessionKey(browserSession.state)\n const [filters, setFilters] = useState<TimelineFilters>({ actorKind: \"all\", from: \"\", to: \"\" })\n const [selectedEvent, setSelectedEvent] = useState<TimelineEvent | null>(null)\n const controller = useTimeline(filters, sessionKey, browserSession.invalidateSession, transport)\n const agentHref = contextualAgentPath(location.pathname, location.search, location.hash)\n const canInspect = canInspectTimelineDetails(browserSession.state)\n\n if (controller.state._tag === \"idle\" || controller.state._tag === \"loading\") {\n return (\n <StatePanel description=\"Combining durable activity across your connected services.\" title=\"Loading Timeline\" />\n )\n }\n if (controller.state._tag === \"failed\") {\n return (\n <StatePanel\n action={<Button onClick={controller.retry}>Try again</Button>}\n description=\"The Timeline could not be read.\"\n title=\"Timeline unavailable\"\n />\n )\n }\n const timelineState = controller.state\n\n return (\n <article className={styles.page}>\n <header className={styles.hero}>\n <Text as=\"p\" tone=\"secondary\" variant=\"label\">\n Timeline\n </Text>\n <Text as=\"h1\" variant=\"verdict\">\n Everything\n <br />\n that moved.\n </Text>\n <Text className={styles.intro} tone=\"secondary\" variant=\"body-large\">\n One chronological truth across people, agents, code, delivery links, and connected services.\n </Text>\n <Link className={styles.askRelay} to={agentHref}>\n Ask Relay about this Timeline\n </Link>\n </header>\n\n <SourceSummary events={timelineState.events} />\n\n <section aria-label=\"Timeline filters\" className={styles.filters}>\n <label>\n <span>Actor</span>\n <select\n value={filters.actorKind}\n onChange={(event) => setFilters({ ...filters, actorKind: actorFilter(event.currentTarget.value) })}\n >\n {actorOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n <label>\n <span>From</span>\n <input\n type=\"date\"\n value={filters.from}\n onChange={(event) => setFilters({ ...filters, from: event.currentTarget.value })}\n />\n </label>\n <label>\n <span>To</span>\n <input\n type=\"date\"\n value={filters.to}\n onChange={(event) => setFilters({ ...filters, to: event.currentTarget.value })}\n />\n </label>\n </section>\n\n {timelineState.events.length === 0 ? (\n <StatePanel description=\"Try a wider date range or another actor.\" title=\"No activity in this view\" />\n ) : (\n <LinkProvider component={WorkspaceEntityLink}>\n <ol className={styles.events}>\n {timelineState.events.map((event, index) => (\n <TimelineRow\n actor={\n canInspect ? (\n <span className={styles.rowActor}>\n <span>{event.actor.label}</span>\n <Button onClick={() => setSelectedEvent(event)} size=\"compact\" variant=\"quiet\">\n Inspect\n </Button>\n </span>\n ) : undefined\n }\n continued={index < timelineState.events.length - 1}\n event={event}\n key={event.eventKey}\n />\n ))}\n </ol>\n </LinkProvider>\n )}\n {timelineState.nextCursor === null ? null : (\n <Button disabled={timelineState.isLoadingMore} onClick={controller.loadMore} size=\"principal\" stretch>\n {timelineState.isLoadingMore ? \"Loading…\" : \"Show earlier activity\"}\n </Button>\n )}\n <TimelineDetailSheet\n agentHref={\n selectedEvent === null\n ? agentHref\n : timelineEventAgentPath(location.pathname, location.search, location.hash, selectedEvent.eventKey)\n }\n event={selectedEvent}\n onClose={() => setSelectedEvent(null)}\n onSessionExpired={browserSession.invalidateSession}\n sessionKey={sessionKey}\n {...(detailTransport === undefined ? {} : { transport: detailTransport })}\n />\n </article>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{t as n,u as r}from"./lib-BzlsKFNV.js";import{t as i}from"./jsx-runtime-By8HlURe.js";import{a,i as o,l as s,n as c,t as l}from"./workspaceScrollCapture-CJ4QUptr.js";var u=e(t(),1),d=i(),f=(e,t)=>{let n=s(e);return n===null?void 0:a(t.state,n.workspaceId,n.entityId,o(t))},p=(0,u.forwardRef)(function({href:e,onClick:t,...i},a){let o=r(),s=f(e,o);return(0,d.jsx)(n,{...i,onClick:n=>{t?.(n),s!==void 0&&c(n,n.currentTarget.target)&&l(o,e)},ref:a,state:s,to:e})});export{f as n,p as t};
2
- //# sourceMappingURL=WorkspaceEntityLink-AdZ_T-Wk.js.map
@@ -1 +0,0 @@
1
- ._state_dgh51_1{outline:none;place-items:center;min-block-size:60dvh;display:grid}._state_dgh51_1>*{inline-size:min(100%,42rem)}._loading_dgh51_12,._loadingColumns_dgh51_13,._content_dgh51_14,._deliveryPath_dgh51_15,._facts_dgh51_16,._evidence_dgh51_17,._activity_dgh51_18,._sectionHeading_dgh51_19{display:grid}._loading_dgh51_12{gap:var(--rly-space-32);min-block-size:60dvh}._loadingColumns_dgh51_13{gap:var(--rly-space-24);grid-template-columns:minmax(var(--rly-space-0), 1fr) minmax(var(--rly-space-0), 20rem)}._back_dgh51_33,._principalAction_dgh51_34,._releasePath_dgh51_35 a{color:inherit;font:var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height) var(--rly-type-label-font);text-underline-offset:var(--rly-space-4)}._back_dgh51_33:focus-visible,._principalAction_dgh51_34:focus-visible,._releasePath_dgh51_35 a:focus-visible{outline:2px solid var(--rly-color-focus);outline-offset:var(--rly-space-4)}._principalAction_dgh51_34{background:var(--rly-color-action-background);border-radius:var(--rly-radius-control);color:var(--rly-color-action-foreground);font-size:var(--rly-type-body-large-size);min-block-size:var(--rly-space-48);padding-inline:var(--rly-space-24);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}._content_dgh51_14{gap:var(--rly-space-24)}._deliveryPath_dgh51_15{gap:var(--rly-space-20)}._sectionHeading_dgh51_19{gap:var(--rly-space-4)}._pathRail_dgh51_74{align-items:stretch;gap:var(--rly-space-12);min-inline-size:var(--rly-space-0);padding-block:var(--rly-space-4);display:flex;overflow-x:auto}._pathNode_dgh51_83,._pathEmpty_dgh51_84,._releasePath_dgh51_35 li{background:var(--rly-color-surface-2);border:1px solid var(--rly-color-border-1);border-radius:var(--rly-radius-control);align-items:center;gap:var(--rly-space-12);min-block-size:var(--rly-space-48);padding:var(--rly-space-12) var(--rly-space-16);flex:none;display:flex}._pathNode_dgh51_83>span{gap:var(--rly-space-2);display:grid}._pathNode_dgh51_83 code,._pathEmpty_dgh51_84{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._releasePath_dgh51_35{margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none;display:contents}._releasePath_dgh51_35 li:before{color:var(--rly-color-text-3);content:"→";margin-inline-end:var(--rly-space-4)}._facts_dgh51_16,._evidence_dgh51_17{gap:var(--rly-space-16)}._facts_dgh51_16 dl{gap:var(--rly-space-12);margin:var(--rly-space-0);display:grid}._facts_dgh51_16 dl>div{gap:var(--rly-space-4);grid-template-columns:minmax(6rem, .65fr) minmax(var(--rly-space-0), 1fr);display:grid}._facts_dgh51_16 dt{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._facts_dgh51_16 dd{font:var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height) var(--rly-type-body-font);margin:var(--rly-space-0);overflow-wrap:anywhere}._workingCircle_dgh51_152{--entity-accent:var(--rly-color-focus);isolation:isolate;min-inline-size:var(--rly-space-0);position:relative;overflow:hidden}._workingCircle_dgh51_152:before{block-size:calc(var(--rly-space-64) * 2);border:1px solid color-mix(in srgb, var(--entity-accent) 46%, var(--rly-color-border-1));border-radius:var(--rly-radius-round);content:"";inline-size:calc(var(--rly-space-64) * 2);pointer-events:none;z-index:-1;position:absolute;inset-block-start:calc(var(--rly-space-64) * -1);inset-inline-end:calc(var(--rly-space-48) * -1)}._shell_dgh51_174[data-service=codecommit] ._workingCircle_dgh51_152{--entity-accent:var(--rly-color-service-codecommit)}._shell_dgh51_174[data-service=codepipeline] ._workingCircle_dgh51_152{--entity-accent:var(--rly-color-service-codepipeline)}._shell_dgh51_174[data-service=jira] ._workingCircle_dgh51_152{--entity-accent:var(--rly-color-service-jira)}._shell_dgh51_174[data-service=confluence] ._workingCircle_dgh51_152{--entity-accent:var(--rly-color-service-confluence)}._shell_dgh51_174[data-service=clockify] ._workingCircle_dgh51_152{--entity-accent:var(--rly-color-service-clockify)}._activity_dgh51_18{gap:var(--rly-space-24)}._timeline_dgh51_198{margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}@media (width<=44rem){._loadingColumns_dgh51_13,._facts_dgh51_16 dl>div{grid-template-columns:minmax(var(--rly-space-0), 1fr)}}@media (prefers-reduced-motion:reduce){._pathRail_dgh51_74{scroll-behavior:auto}}._document_1mruv_1,._ledger_1mruv_2,._ledgerBody_1mruv_3,._ledgerBody_1mruv_3 header,._primaryFacts_1mruv_5,._primaryFacts_1mruv_5>div,._section_1mruv_7,._sectionHeading_1mruv_8,._entry_1mruv_9,._entry_1mruv_9 dl,._entry_1mruv_9 dl>div,._attribution_1mruv_12,._attribution_1mruv_12>div,._attribution_1mruv_12 ul,._attribution_1mruv_12 li,._attribution_1mruv_12 a,._people_1mruv_17,._people_1mruv_17>div,._readOnly_1mruv_19{display:grid}._document_1mruv_1{gap:var(--rly-space-48);min-inline-size:var(--rly-space-0)}._ledger_1mruv_2{background:color-mix(in srgb, var(--rly-color-service-clockify) 8%, var(--rly-color-surface-2));border:1px solid color-mix(in srgb, var(--rly-color-service-clockify) 46%, var(--rly-color-border-1));border-radius:var(--rly-radius-control);grid-template-columns:minmax(13rem, .42fr) minmax(var(--rly-space-0), 1fr);overflow:hidden}._total_1mruv_36{background:color-mix(in srgb, var(--rly-color-service-clockify) 82%, var(--rly-color-text-1));color:var(--rly-color-surface-1);min-block-size:15rem;padding:var(--rly-space-32);flex-direction:column;align-content:center;display:flex}._total_1mruv_36 span,._total_1mruv_36 small,._ledgerBody_1mruv_3 header>span,._primaryFacts_1mruv_5 dt,._entry_1mruv_9 dt,._attribution_1mruv_12 small,._people_1mruv_17 dt{font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._total_1mruv_36 strong{font:var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height) var(--rly-type-page-title-font);letter-spacing:-.05em;margin-block:var(--rly-space-8)}._ledgerBody_1mruv_3{align-content:space-between;gap:var(--rly-space-24);padding:var(--rly-space-32)}._ledgerBody_1mruv_3 header{align-items:center;gap:var(--rly-space-16);grid-template-columns:minmax(var(--rly-space-0), 1fr) auto}._ledgerBody_1mruv_3 p{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font);margin:var(--rly-space-0);max-inline-size:46ch}._primaryFacts_1mruv_5{gap:var(--rly-space-12) var(--rly-space-24);grid-template-columns:repeat(3, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._primaryFacts_1mruv_5>div,._entry_1mruv_9 dl>div,._people_1mruv_17>div{gap:var(--rly-space-4)}._primaryFacts_1mruv_5 dt,._entry_1mruv_9 dt,._people_1mruv_17 dt{color:var(--rly-color-text-2)}._primaryFacts_1mruv_5 dd,._entry_1mruv_9 dd,._people_1mruv_17 dd{margin:var(--rly-space-0);overflow-wrap:anywhere}._section_1mruv_7{border-block-start:1px solid var(--rly-color-border-1);gap:var(--rly-space-24);padding-block-start:var(--rly-space-32)}._sectionHeading_1mruv_8{gap:var(--rly-space-4)}._entry_1mruv_9{align-items:center;gap:var(--rly-space-24);grid-template-columns:auto minmax(var(--rly-space-0), 1fr)}._entry_1mruv_9>strong{color:var(--rly-color-service-clockify);font:var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height) var(--rly-type-verdict-font)}._entry_1mruv_9 dl,._people_1mruv_17{gap:var(--rly-space-12) var(--rly-space-24);grid-template-columns:repeat(3, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._attribution_1mruv_12{border-inline-start:var(--rly-space-4) solid var(--rly-color-service-clockify);gap:var(--rly-space-20);padding:var(--rly-space-20)}._attribution_1mruv_12[data-state=missing]{background:var(--rly-color-held-tint);border-inline-start-color:var(--rly-color-held-ink)}._attribution_1mruv_12>div{gap:var(--rly-space-4)}._attribution_1mruv_12 p{color:var(--rly-color-text-2);margin:var(--rly-space-0)}._attribution_1mruv_12 ul{gap:var(--rly-space-8);margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}._attribution_1mruv_12 a{border-block-start:1px solid var(--rly-color-border-1);color:inherit;gap:var(--rly-space-4);padding-block:var(--rly-space-12);text-decoration:none}._attribution_1mruv_12 a:hover strong,._attribution_1mruv_12 a:focus-visible strong{color:var(--rly-color-service-jira)}._attribution_1mruv_12 a:focus-visible{outline:2px solid var(--rly-color-focus);outline-offset:var(--rly-space-4)}._attribution_1mruv_12 a>span{color:var(--rly-color-service-jira);font:var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height) var(--rly-type-code-font)}._attribution_1mruv_12 small{color:var(--rly-color-text-2)}._people_1mruv_17{grid-template-columns:repeat(2, minmax(var(--rly-space-0), 1fr))}._readOnly_1mruv_19{background:var(--rly-color-surface-2);border-radius:var(--rly-radius-field);align-items:center;gap:var(--rly-space-4) var(--rly-space-16);grid-template-columns:auto minmax(var(--rly-space-0), 1fr);padding:var(--rly-space-16) var(--rly-space-20)}._readOnly_1mruv_19 strong{color:var(--rly-color-service-clockify)}._readOnly_1mruv_19 span{color:var(--rly-color-text-2)}@media (width<=52rem){._ledger_1mruv_2,._entry_1mruv_9{grid-template-columns:minmax(var(--rly-space-0), 1fr)}._total_1mruv_36{min-block-size:auto}._primaryFacts_1mruv_5,._entry_1mruv_9 dl,._people_1mruv_17{grid-template-columns:minmax(var(--rly-space-0), 1fr)}}@media (prefers-reduced-motion:reduce){._document_1mruv_1 *{scroll-behavior:auto}}._document_xgn6i_1,._folio_xgn6i_2,._revision_xgn6i_3,._folioMeta_xgn6i_4,._folioMeta_xgn6i_4 dl,._folioMeta_xgn6i_4 dl>div,._section_xgn6i_7,._sectionHeading_xgn6i_8,._collections_xgn6i_9,._versions_xgn6i_10,._versions_xgn6i_10>li,._attachments_xgn6i_12,._attachments_xgn6i_12>li,._contentState_xgn6i_14,._evidenceCount_xgn6i_15{display:grid}._document_xgn6i_1{gap:var(--rly-space-48);min-inline-size:var(--rly-space-0)}._folio_xgn6i_2{background:color-mix(in srgb, var(--rly-color-service-confluence) 8%, var(--rly-color-surface-2));border:1px solid color-mix(in srgb, var(--rly-color-service-confluence) 48%, var(--rly-color-border-1));border-inline-start:var(--rly-space-8) solid var(--rly-color-service-confluence);border-radius:var(--rly-radius-control);gap:var(--rly-space-32);grid-template-columns:minmax(10rem, .42fr) minmax(var(--rly-space-0), 1fr);padding:var(--rly-space-32)}._revision_xgn6i_3{align-content:start;gap:var(--rly-space-4)}._revision_xgn6i_3 span,._folioMeta_xgn6i_4 dt,._versions_xgn6i_10 small,._attachments_xgn6i_12 small{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._revision_xgn6i_3 strong{color:var(--rly-color-service-confluence);font:var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height) var(--rly-type-page-title-font);overflow-wrap:anywhere}._folioMeta_xgn6i_4{align-content:space-between;gap:var(--rly-space-24);justify-items:start}._folioMeta_xgn6i_4 dl{gap:var(--rly-space-12) var(--rly-space-32);grid-template-columns:repeat(3, minmax(var(--rly-space-0), 1fr));inline-size:100%;margin:var(--rly-space-0)}._folioMeta_xgn6i_4 dl>div{gap:var(--rly-space-4)}._folioMeta_xgn6i_4 dd{margin:var(--rly-space-0);overflow-wrap:anywhere}._section_xgn6i_7{border-block-start:1px solid var(--rly-color-border-1);gap:var(--rly-space-24);padding-block-start:var(--rly-space-32)}._sectionHeading_xgn6i_8{gap:var(--rly-space-4)}._richText_xgn6i_87{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font);overflow-wrap:anywhere;max-inline-size:62ch}._richText_xgn6i_87>:first-child{margin-block-start:var(--rly-space-0)}._richText_xgn6i_87>:last-child{margin-block-end:var(--rly-space-0)}._richText_xgn6i_87 a{color:var(--rly-color-service-confluence)}._richText_xgn6i_87 pre{background:var(--rly-color-surface-2);border-radius:var(--rly-radius-field);padding:var(--rly-space-16);overflow:auto}._richText_xgn6i_87 blockquote{border-inline-start:2px solid var(--rly-color-service-confluence);margin-inline:var(--rly-space-0);padding-inline-start:var(--rly-space-16)}._contentState_xgn6i_14{background:var(--rly-color-surface-2);border-inline-start:var(--rly-space-4) solid var(--rly-color-service-confluence);gap:var(--rly-space-8);padding:var(--rly-space-20)}._collections_xgn6i_9{gap:var(--rly-space-40);grid-template-columns:repeat(2, minmax(var(--rly-space-0), 1fr))}._versions_xgn6i_10,._attachments_xgn6i_12{gap:var(--rly-space-0);margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}._versions_xgn6i_10>li,._attachments_xgn6i_12>li{border-block-end:1px solid var(--rly-color-border-1);gap:var(--rly-space-4);padding-block:var(--rly-space-16)}._versions_xgn6i_10>li:first-child,._attachments_xgn6i_12>li:first-child{padding-block-start:var(--rly-space-0)}._versions_xgn6i_10 strong{color:var(--rly-color-service-confluence);font:var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height) var(--rly-type-code-font)}._attachments_xgn6i_12 span{color:var(--rly-color-text-2)}._evidenceCount_xgn6i_15{align-items:end;gap:var(--rly-space-12);grid-template-columns:auto minmax(var(--rly-space-0), 1fr)}._evidenceCount_xgn6i_15 strong{color:var(--rly-color-service-confluence);font:var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height) var(--rly-type-verdict-font)}@media (width<=52rem){._folio_xgn6i_2,._collections_xgn6i_9,._folioMeta_xgn6i_4 dl{grid-template-columns:minmax(var(--rly-space-0), 1fr)}}@media (prefers-reduced-motion:reduce){._document_xgn6i_1 *{scroll-behavior:auto}}._document_1cny9_1,._section_1cny9_2,._sectionHeading_1cny9_3,._people_1cny9_4,._conversation_1cny9_5,._history_1cny9_6,._related_1cny9_7,._metadata_1cny9_8,._attribution_1cny9_9{display:grid}._document_1cny9_1{gap:var(--rly-space-48);min-inline-size:var(--rly-space-0)}._section_1cny9_2{border-block-start:1px solid var(--rly-color-border-1);gap:var(--rly-space-24);padding-block-start:var(--rly-space-32)}._sectionHeading_1cny9_3{gap:var(--rly-space-4)}._richText_1cny9_28,._commentBody_1cny9_29{overflow-wrap:anywhere}._richText_1cny9_28{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font);max-inline-size:58ch}._richText_1cny9_28>:first-child,._commentBody_1cny9_29>:first-child{margin-block-start:var(--rly-space-0)}._richText_1cny9_28>:last-child,._commentBody_1cny9_29>:last-child{margin-block-end:var(--rly-space-0)}._richText_1cny9_28 pre,._commentBody_1cny9_29 pre{background:var(--rly-color-surface-2);border-radius:var(--rly-radius-field);max-inline-size:100%;padding:var(--rly-space-16);overflow:auto}._richText_1cny9_28 blockquote,._commentBody_1cny9_29 blockquote{border-inline-start:2px solid var(--rly-color-border-2);margin-inline:var(--rly-space-0);padding-inline-start:var(--rly-space-16)}._richText_1cny9_28 a,._commentBody_1cny9_29 a{color:var(--rly-color-service-jira)}._criteria_1cny9_70{border-inline-start:var(--rly-space-4) solid var(--rly-color-service-jira);padding:var(--rly-space-8) var(--rly-space-24)}._boundaryNotice_1cny9_75,._collectionNotice_1cny9_76{border-radius:var(--rly-radius-field);margin:var(--rly-space-0);padding:var(--rly-space-12) var(--rly-space-16)}._boundaryNotice_1cny9_75{background:var(--rly-color-held-tint);color:var(--rly-color-held-ink)}._collectionNotice_1cny9_76{background:var(--rly-color-surface-2)}._people_1cny9_4,._conversation_1cny9_5,._history_1cny9_6{margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}._people_1cny9_4{gap:var(--rly-space-20);grid-template-columns:repeat(auto-fit,minmax(13rem,1fr))}._metadata_1cny9_8{gap:var(--rly-space-0) var(--rly-space-32);grid-template-columns:repeat(2, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._metadata_1cny9_8>div{border-block-end:1px solid var(--rly-color-border-1);gap:var(--rly-space-6);padding-block:var(--rly-space-16);display:grid}._metadata_1cny9_8 dt,._history_1cny9_6 dt{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._metadata_1cny9_8 dd,._history_1cny9_6 dd{font:var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height) var(--rly-type-body-font);margin:var(--rly-space-0);overflow-wrap:anywhere}._related_1cny9_7{gap:var(--rly-space-12);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}._related_1cny9_7>div{background:var(--rly-color-surface-2);border-radius:var(--rly-radius-control);gap:var(--rly-space-6);padding:var(--rly-space-16);display:grid}._related_1cny9_7 strong,._related_1cny9_7 a{font:var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height) var(--rly-type-code-font)}._related_1cny9_7 a{color:var(--rly-color-service-jira);text-underline-offset:var(--rly-space-4);inline-size:fit-content;text-decoration-thickness:1px}._related_1cny9_7 small,._attribution_1cny9_9 time{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._conversation_1cny9_5,._history_1cny9_6{gap:var(--rly-space-0)}._conversation_1cny9_5>li,._history_1cny9_6>li{border-block-end:1px solid var(--rly-color-border-1);gap:var(--rly-space-16);padding-block:var(--rly-space-24);display:grid}._conversation_1cny9_5>li:first-child,._history_1cny9_6>li:first-child{padding-block-start:var(--rly-space-0)}._attribution_1cny9_9{align-items:center;gap:var(--rly-space-16);grid-template-columns:minmax(var(--rly-space-0), 1fr) auto}._history_1cny9_6 dl{gap:var(--rly-space-12);margin:var(--rly-space-0);display:grid}._history_1cny9_6 dl>div{gap:var(--rly-space-4);grid-template-columns:minmax(7rem, .35fr) minmax(var(--rly-space-0), 1fr);display:grid}@media (width<=44rem){._document_1cny9_1{gap:var(--rly-space-40)}._metadata_1cny9_8,._history_1cny9_6 dl>div{grid-template-columns:minmax(var(--rly-space-0), 1fr)}._criteria_1cny9_70{padding-inline-end:var(--rly-space-0)}}._document_173oo_1,._hero_173oo_2,._heroHeading_173oo_3,._heroFacts_173oo_4,._heroFacts_173oo_4>div,._executionMeta_173oo_6,._section_173oo_7,._sectionHeading_173oo_8,._peopleLanes_173oo_9,._peopleLanes_173oo_9>div,._actions_173oo_11,._actions_173oo_11>li,._actions_173oo_11 header,._actions_173oo_11 header>span,._actions_173oo_11 dl,._actions_173oo_11 dl>div,._artifacts_173oo_17,._sourceArtifacts_173oo_18,._sourceArtifacts_173oo_18>li,._sourceArtifacts_173oo_18>li>span,._deliveryCounts_173oo_21{display:grid}._document_173oo_1{gap:var(--rly-space-48);min-inline-size:var(--rly-space-0)}._hero_173oo_2{background:color-mix(in srgb, var(--rly-color-service-codepipeline) 10%, var(--rly-color-surface-2));border:1px solid color-mix(in srgb, var(--rly-color-service-codepipeline) 50%, var(--rly-color-border-1));border-radius:var(--rly-radius-control);gap:var(--rly-space-24);padding:var(--rly-space-32)}._heroHeading_173oo_3{align-items:center;gap:var(--rly-space-8) var(--rly-space-16);grid-template-columns:auto minmax(var(--rly-space-0), 1fr) auto}._heroHeading_173oo_3>span,._heroFacts_173oo_4 dt,._executionMeta_173oo_6 dt,._peopleLanes_173oo_9 small,._actions_173oo_11 small,._actions_173oo_11 dt,._artifacts_173oo_17 span,._artifacts_173oo_17 small,._deliveryCounts_173oo_21 dt{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font)}._heroHeading_173oo_3 strong{font:var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height) var(--rly-type-verdict-font);overflow-wrap:anywhere}._summary_173oo_64{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font);margin:var(--rly-space-0);max-inline-size:62ch}._heroFacts_173oo_4{gap:var(--rly-space-16);grid-template-columns:repeat(4, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._heroFacts_173oo_4>div{background:var(--rly-color-surface-1);border-radius:var(--rly-radius-field);gap:var(--rly-space-8);padding:var(--rly-space-16)}._heroFacts_173oo_4 dd,._executionMeta_173oo_6 dd,._actions_173oo_11 dd,._deliveryCounts_173oo_21 dd{margin:var(--rly-space-0);overflow-wrap:anywhere}._heroFacts_173oo_4 dd{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font)}._heroFacts_173oo_4 dd small{color:var(--rly-color-text-2);font:var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height) var(--rly-type-meta-font);margin-block-start:var(--rly-space-4);display:block}._heroFacts_173oo_4 code{font:var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height) var(--rly-type-code-font)}._executionMeta_173oo_6{gap:var(--rly-space-12) var(--rly-space-24);grid-template-columns:repeat(4, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._stageRail_173oo_116{border-block:1px solid var(--rly-color-border-1);padding-block:var(--rly-space-32)}._section_173oo_7{border-block-start:1px solid var(--rly-color-border-1);gap:var(--rly-space-24);padding-block-start:var(--rly-space-32)}._sectionHeading_173oo_8{gap:var(--rly-space-4)}._peopleLanes_173oo_9{gap:var(--rly-space-16);grid-template-columns:repeat(2, minmax(var(--rly-space-0), 1fr))}._peopleLanes_173oo_9>div{border-inline-start:var(--rly-space-4) solid var(--rly-color-service-codepipeline);gap:var(--rly-space-8);padding:var(--rly-space-16)}._partial_173oo_142{background:color-mix(in srgb, var(--rly-color-service-codepipeline) 8%, var(--rly-color-surface-2));border-inline-start:var(--rly-space-4) solid var(--rly-color-service-codepipeline);margin:var(--rly-space-0);padding:var(--rly-space-16)}._actions_173oo_11{gap:var(--rly-space-16);margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}._actions_173oo_11>li{border:1px solid var(--rly-color-border-1);border-inline-start:var(--rly-space-4) solid var(--rly-color-service-codepipeline);border-radius:var(--rly-radius-control);gap:var(--rly-space-16);padding:var(--rly-space-20)}._actions_173oo_11 header{align-items:start;gap:var(--rly-space-16);grid-template-columns:minmax(var(--rly-space-0), 1fr) auto}._actions_173oo_11 header>span{gap:var(--rly-space-2)}._actions_173oo_11 header strong{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font)}._actions_173oo_11 dl{gap:var(--rly-space-8) var(--rly-space-24);grid-template-columns:repeat(4, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._actions_173oo_11 dl>div{gap:var(--rly-space-2)}._actions_173oo_11 p{margin:var(--rly-space-0)}._error_173oo_193{font-weight:700}._artifacts_173oo_17,._sourceArtifacts_173oo_18{gap:var(--rly-space-8);margin:var(--rly-space-0);padding:var(--rly-space-0);list-style:none}._artifacts_173oo_17>li{background:var(--rly-color-surface-2);border-radius:var(--rly-radius-field);align-items:center;gap:var(--rly-space-8);padding:var(--rly-space-8) var(--rly-space-12);flex-wrap:wrap;display:flex}._artifacts_173oo_17 span{text-transform:uppercase}._artifacts_173oo_17 small{margin-inline-start:auto}._sourceArtifacts_173oo_18>li{border-block-end:1px solid var(--rly-color-border-1);gap:var(--rly-space-16);grid-template-columns:minmax(var(--rly-space-0), 1fr) minmax(var(--rly-space-0), 1fr);padding-block:var(--rly-space-12)}._sourceArtifacts_173oo_18>li>span{gap:var(--rly-space-4)}._sourceArtifacts_173oo_18 code{font:var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height) var(--rly-type-code-font);overflow-wrap:anywhere}._sourceArtifacts_173oo_18 small{color:var(--rly-color-text-2)}._deliveryCounts_173oo_21{gap:var(--rly-space-12);grid-template-columns:repeat(3, minmax(var(--rly-space-0), 1fr));margin:var(--rly-space-0)}._deliveryCounts_173oo_21>div{border-block-end:1px solid var(--rly-color-border-1);padding-block-end:var(--rly-space-12)}._deliveryCounts_173oo_21 dd{font:var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height) var(--rly-type-body-large-font)}@media (width<=52rem){._heroFacts_173oo_4,._executionMeta_173oo_6,._actions_173oo_11 dl{grid-template-columns:repeat(2, minmax(var(--rly-space-0), 1fr))}}@media (width<=40rem){._heroHeading_173oo_3,._heroFacts_173oo_4,._executionMeta_173oo_6,._peopleLanes_173oo_9,._actions_173oo_11 dl,._sourceArtifacts_173oo_18>li,._deliveryCounts_173oo_21{grid-template-columns:minmax(var(--rly-space-0), 1fr)}}
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pullRequestReviewThreadReplay-oljKM7Xz.js","assets/agent-api-QVqt4a0O.js","assets/client-D27unen8.js","assets/authenticatedMutationClient-Ccwguc3i.js","assets/pullRequestReviewFailures-S74M-fOk.js","assets/WorkspacePullRequestDetails-BErJ5bk8.js","assets/rolldown-runtime-QTnfLwEv.js","assets/react-CZI7_Jkm.js","assets/preload-helper-Czpn1I53.js","assets/jsx-runtime-By8HlURe.js","assets/patterns-5N-j-AD2-BwypFm-e.js","assets/PortalProvider-BpgZwSpw-aHWGwW1o.js","assets/react-dom-cJyBB_A4.js","assets/Dialog-xSrBk0Vv-ClGyDPlc.js","assets/component-BJeeRuSu-Bu7KhcFC.js","assets/index-j5ze816l.js","assets/lib-BzlsKFNV.js","assets/releasePaths-XoI2BHX3.js","assets/index-CZ1jqlt4.css","assets/primitives-nKxQGSsE-CJNmac__.js","assets/WorkspacePullRequestDetails.module-CCFLGO4V.js","assets/WorkspacePullRequestDetails-DrPltvYZ.css","assets/WorkspacePullRequestDiff.module-DJEWRmoT.js","assets/WorkspacePullRequestDiff-HJB-ezE4.css","assets/WorkspaceRichText-D1M637Ff.js","assets/workbench-tHBnbqSx-BUtNhWVC.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{f as n,m as r,p as i,t as a,u as o}from"./lib-BzlsKFNV.js";import{t as s}from"./preload-helper-Czpn1I53.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{d as p,l as m,u as h}from"./index-j5ze816l.js";import{_ as g,a as _,c as v,f as y,g as b,m as x,o as S,p as C,s as ee,u as te,v as w}from"./patterns-5N-j-AD2-BwypFm-e.js";import{r as T}from"./primitives-nKxQGSsE-CJNmac__.js";import{Ai as E,Di as D,Ea as ne,Mi as re,Zr as O,bi as ie,ei as ae,fa as oe,hi as se,ii as k,ki as ce,pa as le,ri as A,ti as ue,xi as de,yi as fe,za as j}from"./agent-api-QVqt4a0O.js";import{a as pe,t as me}from"./client-D27unen8.js";import{t as he}from"./authenticatedMutationClient-Ccwguc3i.js";import{n as ge,t as _e}from"./workspaceEntityPaths-xAl2jRFm.js";import{c as ve,o as ye,r as be,s as xe}from"./workspaceScrollCapture-CJ4QUptr.js";import{i as Se,n as M,r as Ce}from"./presentWorkspaceItems-Bmh4oEbH.js";import{t as we}from"./WorkspaceEntityLink-AdZ_T-Wk.js";import{t as Te}from"./WorkspaceRichText-D1M637Ff.js";import{n as N,t as Ee}from"./pullRequestReviewFailures-S74M-fOk.js";var P=e(t(),1),De=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),Oe=e=>e.split(/[_\-\s]+/u).filter(Boolean).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1).toLocaleLowerCase(`en-US`)}`).join(` `),ke=e=>{let t=Math.floor(e/60),n=e%60;return t===0?`${String(n)}m`:n===0?`${String(t)}h`:`${String(t)}h ${String(n)}m`},Ae=e=>e==null?`Not synchronized`:De.format(A(e)),je=e=>e==null?null:{dateTime:O(e),label:De.format(A(e))},Me=e=>e.lifecycle._tag!==`missing`&&e.lifecycle._tag!==`rejected`&&e.lifecycle._tag!==`superseded`,Ne=(e,t)=>{let n=new Set(t.graph.nodes.flatMap(({nodeId:e,resolution:n})=>n._tag===`resolved`&&n.target._tag===`entity`&&n.target.entityId===t.entity.projection.entityId?[e]:[])),r=new Map;for(let{nodeId:e,resolution:n}of t.graph.nodes)n._tag===`resolved`&&n.target._tag===`entity`&&n.target.entityKind===`issue`&&r.set(e,n.target.entityId);let i=new Map;for(let{projection:e}of t.graph.relatedEntityProjections)e.entityState===`present`&&e.entityType===`issue`&&i.set(e.entityId,e);let a=new Map;for(let e of t.graph.relationships){if(e.kind!==`tracks-time-for`||!n.has(e.sourceNodeId)||!Me(e))continue;let t=r.get(e.targetNodeId),o=t===void 0?void 0:i.get(t);if(t===void 0||o===void 0)continue;let s=e.lifecycle._tag===`inferred`||e.confidence._tag===`inferred`,c=a.get(t);if(c===void 0){a.set(t,{evidenceClaimIds:new Set(e.evidenceClaimIds),issue:o,state:s?`inferred`:`linked`});continue}for(let t of e.evidenceClaimIds)c.evidenceClaimIds.add(t);s||(c.state=`linked`)}return[...a.entries()].map(([t,{evidenceClaimIds:n,issue:r,state:i}])=>({evidenceLabel:`${String(n.size)} evidence claim${n.size===1?``:`s`}`,href:ge(e,t),key:r.displayKey,state:i,title:r.title}))},Pe=(e,t,n)=>{let r=Ne(e,n),i=r.filter(({state:e})=>e===`inferred`).length,a=n.entity.owners.filter(({roles:e})=>e.some(e=>e.includes(`approver`))).map(({displayName:e})=>e),o=t.userId===void 0?void 0:n.entity.owners.find(({sourceIdentities:e})=>e?.some(({providerId:e,vendorPersonId:n})=>e===`clockify`&&n===t.userId)??!1);return{approvalDecidedAt:je(n.clockifyApproval?.decidedAt),approvalDetail:n.clockifyApproval===null?`No Control Center decision is recorded for this exact Clockify revision.`:n.clockifyApproval.rationale,approvalLabel:n.clockifyApproval===null?`Pending`:Oe(n.clockifyApproval.decision),approvers:a,associationDetail:r.length===0?`No current Jira relationship explains where this time belongs. The entry remains visible.`:i===0?`${String(r.length)} current Jira link${r.length===1?``:`s`}`:`${String(i)} inferred Jira link${i===1?``:`s`} — verify before reporting`,associationLabel:r.length===0?`Unattributed`:`Attributed`,billableLabel:t.billable?`Billable`:`Non-billable`,contributorLabel:o?.displayName??t.userId??`Contributor not synchronized`,description:t.description??n.entity.projection.title,durationLabel:ke(t.durationMinutes),endedAt:Ae(t.endedAt),jiraAssociations:r,lockLabel:t.locked===void 0?`Lock state not synchronized`:t.locked?`Locked`:`Unlocked`,projectLabel:t.projectId??`No Clockify project`,rollupLabel:`1 visible entry · ${String(t.durationMinutes)} exact minute${t.durationMinutes===1?``:`s`}`,sourceRevision:n.source.revision,startedAt:Ae(t.startedAt),timerLabel:t.startedAt===void 0||t.endedAt===void 0?`Timer state not synchronized`:t.endedAt===null?`Timer running`:`Completed`,totalMinutes:t.durationMinutes}},Fe=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),F=e=>e===void 0?null:{dateTime:O(e),label:Fe.format(A(e))},Ie=(e,t)=>e===void 0?`${t} not synchronized`:`${e.complete?`Complete`:`Partial`} · ${String(e.pagesFetched)} bounded page${e.pagesFetched===1?``:`s`} read`,Le=e=>e===null?`Size unavailable`:e<1024?`${String(e)} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`,Re=e=>e.map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` · `),ze=e=>{let t=new Map;for(let n of e){let e=t.get(n.sourcePersonId),r=e===void 0?n.roles:[...new Set([...e.roles,...n.roles])],i=e?.resolved===!0&&!n.resolved?e:n;t.set(n.sourcePersonId,{...i,roles:r})}return[...t.values()]},Be=(e,t)=>{let n=ze(e.contributors??[]),r=new Map(n.map(({displayName:e,sourcePersonId:t})=>[t,e])),i=e.contentState===`lazy`?`lazy`:e.content===null||e.content===void 0?`empty`:`loaded`;return{attachmentInventoryLabel:Ie(e.attachmentInventory,`Attachment inventory`),attachments:(e.attachments??[]).map(e=>({createdAt:F(e.createdAt),fileSize:Le(e.fileSize),id:e.id,mediaType:e.mediaType??`Type unavailable`,title:e.title,version:e.version===null?`Version unavailable`:`v${String(e.version)}`})),content:i===`loaded`?e.content?.markdown??null:null,contentState:i,contributors:n.map(e=>({id:e.sourcePersonId,name:e.displayName,role:`${Re(e.roles)}${e.external?` · External`:``}${e.resolved?``:` · Identity unresolved`}`})),createdAt:F(e.createdAt),historyInventoryLabel:Ie(e.versionHistory,`Revision history`),revision:e.revision,runbookEvidenceCount:t.graph.evidenceItems.length,sourceSpaceId:e.sourceSpaceId??e.spaceKey,status:e.status===`superseded`?`Superseded`:e.status===`draft`?`Draft`:`Current`,updatedAt:F(e.updatedAt),versions:(e.versions??[]).map(e=>({author:e.authorSourcePersonId===null?`Author unavailable`:r.get(e.authorSourcePersonId)??`Identity not resolved`,createdAt:F(e.createdAt),message:e.message??`No revision note`,minorEdit:e.minorEdit,number:e.number})),watcherInventoryLabel:Ie(e.watcherInventory,`Watcher inventory`)}},Ve=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),He=e=>e.split(`-`).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),I=e=>e===null?null:ne(ae(e),{onNone:()=>e,onSome:e=>Ve.format(A(e))}),L=e=>e.name??e.sourceId??`Not set`,Ue=e=>e===void 0||e.length===0?`Not set`:e.join(` · `),We=e=>({id:e,name:`Unknown collaborator`,role:`Jira collaborator`}),Ge=e=>new Map((e.collaborators??[]).map(e=>{let t=e.roles.map(He);return[e.sourcePersonId,{id:e.sourcePersonId,name:e.displayName,role:t.length===0?`Jira collaborator`:t.join(` · `),...e.avatarUrl===null?{}:{avatarSrc:e.avatarUrl}}]})),Ke=(e,t)=>({href:(()=>{if(t===null||e.key===null)return null;let n=/^(.*\/browse\/)[^/]+$/u.exec(t.pathname)?.[1];return n===void 0?null:`${t.origin}${n}${encodeURIComponent(e.key)}`})(),key:e.key??e.sourceId??`Unknown issue`,status:e.status===null?`Status unknown`:L(e.status),summary:e.summary??`Summary unavailable`}),qe=e=>{let t=e.project,n=(e.fixVersions??[]).map(L),r=(e.components??[]).map(L);return[{label:`Type`,value:e.issueType===null||e.issueType===void 0?`Not set`:L(e.issueType)},{label:`Project`,value:t==null?`Not set`:[t.key,t.name].filter(e=>e!==null).join(` · `)||`Not set`},{label:`Resolution`,value:e.resolution===null||e.resolution===void 0?`Unresolved`:L(e.resolution)},{label:`Labels`,value:Ue(e.labels)},{label:`Components`,value:Ue(r)},{label:`Fix versions`,value:Ue(n)},{label:`Created`,value:I(e.createdAt??null)??`Not available`},{label:`Updated`,value:I(e.updatedAt??null)??`Not available`},{label:`Due`,value:I(e.dueDate??null)??`Not set`}]},Je=(e,t)=>`${e??`Empty`} → ${t??`Empty`}`,Ye=(e,t)=>{let n=Ge(e),r=e=>e===null?We(`unknown-person`):n.get(e)??We(e),i=new Set(e.truncatedFields??[]),a=(e.comments??[]).map(e=>({author:r(e.authorSourcePersonId),body:e.body,id:e.sourceId,time:I(e.updatedAt??e.createdAt)})),o=(e.history??[]).map(e=>({actor:r(e.authorSourcePersonId),changes:e.changes.map(e=>({field:e.field,transition:Je(e.from,e.to)})),id:e.sourceId,time:I(e.createdAt)})),s=e.commentTotal??a.length,c=e.historyTotal??o.length,l=(e.commentsTruncated??!1)||s>a.length,u=(e.historyTruncated??!1)||c>o.length,d=[...i].filter(e=>e!==`comments`&&(e!==`history`||!u));return{acceptanceCriteria:e.acceptanceCriteria??null,collaborators:[...n.values()],commentCount:s,comments:a,commentBodiesTruncated:e.commentBodiesTruncated??(i.has(`comments`)&&!l),commentsTruncated:l,description:e.description??null,environment:e.environment??null,history:o,historyCount:c,historyTruncated:u,metadata:qe(e),parent:e.parent===null||e.parent===void 0?null:Ke(e.parent,t),subtasks:(e.subtasks??[]).map(e=>Ke(e,t)),truncationMessage:d.length===0?null:`Jira shortened ${d.map(He).join(`, `)} to keep this synchronized view bounded.`}},Xe=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),R=e=>e.replace(/([a-z])([A-Z])/gu,`$1 $2`).split(/[._\-\s]+/u).filter(e=>e.length>0).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),Ze=e=>e==null?null:{dateTime:O(e),label:Xe.format(A(e))},Qe=(e,t,n=!1)=>{if(e==null||t==null)return n?`In progress`:`Not available`;let r=Math.max(0,Math.round((k(t)-k(e))/1e3));if(r<60)return`${String(r)}s`;let i=Math.floor(r/60),a=r%60;return a===0?`${String(i)}m`:`${String(i)}m ${String(a)}s`},$e=e=>{switch(e){case`succeeded`:return`positive`;case`failed`:return`critical`;case`running`:return`progress`;case`stopped`:return`caution`;case`queued`:return`neutral`}},et=e=>({id:e.name,name:e.name,reason:`${String(e.actionCount)} action${e.actionCount===1?``:`s`}${e.actionsTruncated?` · detail is partial`:``}`,state:R(e.status),tone:$e(e.status)}),z=e=>{let t=e.split(`/`).filter(e=>e.length>0).at(-1)??e;return t.includes(`@`)?t:R(t)||e},tt=e=>{let t=new Map(e.graph.nodes.flatMap(({nodeId:e,resolution:t})=>t._tag===`resolved`&&t.target._tag===`entity`?[[e,t.target.entityId]]:[])),n=new Set(e.graph.nodes.flatMap(({nodeId:t,resolution:n})=>n._tag===`resolved`&&n.target._tag===`entity`&&n.target.entityId===e.entity.projection.entityId?[t]:[]));return new Set(e.graph.relationships.flatMap(e=>{if(e.lifecycle._tag===`missing`||e.lifecycle._tag===`rejected`||e.lifecycle._tag===`superseded`)return[];if(n.has(e.sourceNodeId)){let n=t.get(e.targetNodeId);return n===void 0?[]:[n]}if(n.has(e.targetNodeId)){let n=t.get(e.sourceNodeId);return n===void 0?[]:[n]}return[]}))},nt=e=>{let t=e.actions?.find(({category:e})=>e?.toLocaleLowerCase(`en-US`)===`deploy`);return t===void 0?`Not linked`:`${t.stageName} · ${t.region??`region unknown`}`},rt=(e,t)=>{let n=tt(t),r=e=>t.graph.relatedEntityProjections.filter(({projection:t})=>t.entityState===`present`&&t.entityType===e&&n.has(t.entityId)).length,i=(e,t)=>`${String(e)}${t?`+`:``}`,a=e.actions??[],o=[...new Set(a.flatMap(({updatedBy:e})=>e===null?[]:[z(e)]))],s=[...new Set(a.flatMap(({category:e,updatedBy:t})=>e?.toLocaleLowerCase(`en-US`)===`approval`&&t!==null?[z(t)]:[]))];return{actionCountLabel:i(e.actionCount??a.length,e.actionsTruncated??!1),actions:a.map(e=>({actor:e.updatedBy===null?null:z(e.updatedBy),artifacts:e.artifacts.map(e=>({accessLabel:`Proxy required`,direction:e.direction,name:e.name})),duration:Qe(e.startedAt,e.updatedAt,e.status===`running`),error:e.errorMessage??e.errorCode,id:e.actionExecutionId,name:e.actionName,provider:[e.owner,e.provider,e.version].filter(e=>e!==null).join(` · `)||`Provider unavailable`,region:e.region,stageName:e.stageName,status:R(e.status),summary:e.externalExecutionSummary,tone:$e(e.status)})),actionsTruncated:e.actionsTruncated??!1,approvers:s,duration:Qe(e.startedAt,e.updatedAt,e.status===`running`),executionId:e.executionId,executionMode:[e.executionMode,e.executionType].filter(e=>e!=null).join(` · `)||`Not synchronized`,operators:o.filter(e=>!s.includes(e)),pagesRead:e.actionPagesRead??0,pipelineName:e.pipelineName,pipelineVersion:e.pipelineVersion===null||e.pipelineVersion===void 0?`Unknown`:`v${String(e.pipelineVersion)}`,pullRequestCountLabel:i(r(`pull-request`),t.graph.truncated),releaseCountLabel:i(t.entity.releaseIds.length,t.entity.releaseMembershipsTruncated),runbookCountLabel:i(r(`page`),t.graph.truncated),sourceArtifacts:(e.sourceArtifacts??[]).map(e=>({accessLabel:`Proxy required`,createdAt:Ze(e.createdAt),name:e.name,revision:e.revisionId??`Revision unavailable`,summary:e.revisionSummary})),stages:(e.stages??[]).map(et),startedAt:Ze(e.startedAt),status:R(e.status),statusSummary:e.statusSummary??null,targetEnvironment:nt(e),triggerDetail:e.triggerDetail===null||e.triggerDetail===void 0?`Trigger identity unavailable`:z(e.triggerDetail),triggerRevision:e.triggerRevision,triggerType:e.triggerType===null||e.triggerType===void 0?`Unknown trigger`:R(e.triggerType),updatedAt:Ze(e.updatedAt)}},it=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),at=e=>e.split(/[._\-\s]+/u).filter(e=>e.length>0).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),ot=e=>at(e.split(`/`).filter(e=>e.length>0).at(-1)??e)||`AWS identity`,st=e=>e==null?null:{id:e,name:ot(e),role:`Pull request author`},ct=e=>e==null?null:ne(ae(e),{onNone:()=>null,onSome:e=>({dateTime:O(e),label:it.format(A(e))})}),lt=e=>{switch(e){case`approved`:return`Approved by people`;case`changes-requested`:return`Changes requested`;case`merged`:return`Merged`;case`requested`:return`Human review requested`;case`not-requested`:return`No human approval synchronized`}},ut=e=>{let t=new Map(e.graph.nodes.flatMap(({nodeId:e,resolution:t})=>t._tag===`resolved`&&t.target._tag===`entity`?[[e,t.target.entityId]]:[])),n=new Set(e.graph.nodes.flatMap(({nodeId:t,resolution:n})=>n._tag===`resolved`&&n.target._tag===`entity`&&n.target.entityId===e.entity.projection.entityId?[t]:[]));return new Set(e.graph.relationships.flatMap(e=>{if(e.lifecycle._tag===`missing`||e.lifecycle._tag===`rejected`||e.lifecycle._tag===`superseded`)return[];let r=n.has(e.sourceNodeId)?e.targetNodeId:n.has(e.targetNodeId)?e.sourceNodeId:null,i=r===null?null:t.get(r);return i==null?[]:[i]}))},dt=(e,t,n)=>{let r=ut(n),i=e=>n.graph.relatedEntityProjections.filter(({projection:t})=>t.entityState===`present`&&t.entityType===e&&r.has(t.entityId)).length,a=n.entity.releaseIds.length,o=i(`issue`),s=i(`pipeline-execution`),c=e=>`${String(e)}${n.graph.truncated?`+`:``}`;return{author:st(e.authorReference),baseRevision:e.baseRevision??null,createdAt:ct(e.createdAt),description:e.description?.trim()||null,diffScope:{pluginConnectionId:t.pluginConnectionId,vendorImmutableId:t.vendorImmutableId,revision:t.revision},filesHref:t.sourceUrl?.href??null,headRevision:e.headRevision,issueCount:o,issueCountLabel:c(o),mergeBaseRevision:e.mergeBaseRevision??null,pipelineCount:s,pipelineCountLabel:c(s),releaseCount:a,releaseCountLabel:`${String(a)}${n.entity.releaseMembershipsTruncated?`+`:``}`,reviewLabel:lt(e.reviewState),sourceBranch:e.sourceBranch,targetBranch:e.targetBranch,updatedAt:ct(e.updatedAt)}},ft=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),B=e=>e.split(`-`).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),pt={clockify:`Clockify`,codecommit:`CodeCommit`,codepipeline:`CodePipeline`,confluence:`Confluence`,jira:`Jira`},V={deployment:`Deployment`,issue:`Issue`,page:`Page`,"pipeline-execution":`Pipeline execution`,"pull-request":`Pull request`,"time-entry":`Time entry`},mt=e=>ft.format(A(e)),ht=e=>e.sourceUrl===null?null:e.sourceUrl.href,gt=(e,t)=>`/w/${encodeURIComponent(e)}/releases/${encodeURIComponent(t)}`,H=e=>e.slice(-8),_t=e=>{switch(e._tag){case`issue`:return[{label:`Priority`,value:e.priority??`Not set`},{label:`Estimate`,value:e.estimatePoints===null?`Not estimated`:`${e.estimatePoints} points`}];case`pull-request`:return[{label:`Repository`,value:e.repository},...e.lifecycle===null||e.lifecycle===void 0?[]:[{label:`State`,value:B(e.lifecycle)}],{label:`Branches`,value:`${e.sourceBranch} → ${e.targetBranch}`},{label:`Head revision`,value:e.headRevision}];case`page`:return[{label:`Space`,value:e.spaceKey},{label:`Revision`,value:e.revision}];case`pipeline-execution`:return[{label:`Pipeline`,value:e.pipelineName},{label:`Execution`,value:e.executionId},{label:`Trigger revision`,value:e.triggerRevision}];case`deployment`:return[{label:`Environment`,value:H(e.environmentId)},{label:`Revision`,value:e.revision}];case`time-entry`:return[{label:`Duration`,value:`${e.durationMinutes} min`},{label:`Billable`,value:e.billable?`Yes`:`No`}]}},vt=e=>B(e),yt=e=>({avatarFallback:e.avatarFallback,id:e.personId,name:e.displayName,role:[...new Set(e.roles.map(vt))].join(` · `)}),bt=e=>e.some(e=>e.includes(`approver`))?`approvers`:e.some(e=>e===`reviewer`||e===`watcher`)?`reviewers`:e.includes(`operator`)?`operators`:e.some(e=>e===`author`||e===`contributor`)?`authors`:`owners`,xt=e=>{let t=[`authors`,`owners`,`reviewers`,`operators`,`approvers`],n={approvers:[],authors:[],operators:[],owners:[],reviewers:[]};for(let t of e)n[bt(t.roles)].push(yt(t));let r=t.filter(e=>n[e].length>0);return{...n,emptyLabel:`No collaborator is assigned to this object.`,expandedCategories:r}},St=(e,t)=>{if(t===null)return e;let n=[...e.owners],r=[...e.authors],i=new Set([...e.approvers,...e.authors,...e.operators,...e.owners,...e.reviewers].map(e=>e.name.toLocaleLowerCase(`en-US`))),a=new Set;for(let e of t.collaborators){if(a.has(e.id))continue;a.add(e.id);let t=e.name.toLocaleLowerCase(`en-US`);i.has(t)||(e.role.includes(`Assignee`)?n.push(e):r.push(e))}let o=[];r.length>0&&o.push(`authors`),n.length>0&&o.push(`owners`);for(let t of e.expandedCategories)o.push(t);return{...e,authors:r,emptyLabel:`No collaborator was synchronized or assigned to this object.`,expandedCategories:[...new Set(o)],owners:n}},Ct=(e,t,n)=>{if(t===null)return e;let r={approvers:[...e.approvers],authors:[...e.authors],operators:[...e.operators],owners:[...e.owners],reviewers:[...e.reviewers]},i=new Set(Object.values(r).flat().map(({id:e})=>e)),a=new Set(n.flatMap(e=>(e.sourceIdentities??[]).filter(({providerId:e})=>e===`confluence`).map(({vendorPersonId:e})=>e)));for(let e of t.contributors)i.has(e.id)||a.has(e.id)||(i.add(e.id),e.role.includes(`Owner`)?r.owners.push(e):e.role.includes(`Watcher`)?r.reviewers.push(e):r.authors.push(e));let o=[`authors`,`owners`,`reviewers`,`operators`,`approvers`];return{...r,emptyLabel:`No collaborator was synchronized or assigned to this document.`,expandedCategories:o.filter(e=>r[e].length>0)}},wt=e=>{let t=e.freshness;return t===null?e.isSourceCurrent?`current`:`cached`:t._tag===`current`?e.isSourceCurrent&&t.provenance._tag===`provider`?`current`:`cached`:t._tag},Tt=e=>{let t=e.freshness;return t===null?e.entity.recordedAt:t.sourceObservedAt??t.synchronizedAt??t.pluginHealth.checkedAt},Et=(e,t,n,r)=>{if(e===void 0)return{state:`missing`,label:`Unknown graph endpoint`,reason:`The endpoint is outside this graph response.`};if(e.resolution._tag===`missing`)return{state:`missing`,label:e.resolution.missingKey,reason:`${B(e.endpointKind)} is not connected.`};let i=e.resolution.target;if(i._tag===`entity`){let e=t.get(i.entityId);return e===void 0?{state:`missing`,label:`${V[i.entityKind]} ${H(i.entityId)}`,reason:`The related object is outside this bounded response.`,service:M(i.entityKind)}:e.entityState===`deleted`?{state:`missing`,label:`${e.title} · Deleted`,reason:`The related object was deleted.`,service:M(e.entityType)}:{state:`present`,href:ge(r,e.entityId),id:e.entityId,reference:e.displayKey,service:M(e.entityType),title:e.title}}return i._tag===`release`?{state:`present`,href:gt(r,i.releaseId),id:i.releaseId,reference:`Control Center release · ${H(i.releaseId)}`,service:n,title:`Delivery release`}:{state:`present`,id:i.environmentId,reference:`Control Center environment · ${H(i.environmentId)}`,service:n,title:`Delivery environment`}},Dt=e=>{let t=e.evidenceClaimIds.length,n=e.confidence._tag===`inferred`?`${Math.round(e.confidence.score*100)}% inferred`:B(e.confidence._tag);return`${t} evidence claim${t===1?``:`s`} · ${n}`},Ot=(e,t,n)=>{let r=new Map(e.graph.nodes.map(e=>[e.nodeId,e])),i=[e.entity,...e.graph.relatedEntityProjections].map(({projection:e})=>e),a=new Map(i.map(e=>[e.entityId,e])),o=new Map(e.entity.owners.map(e=>[e.personId,e]));return e.graph.relationships.map(e=>{let i=e.recordedBy._tag===`human`?o.get(e.recordedBy.personId):void 0;return{...i===void 0?{}:{actor:yt(i)},direction:`forward`,evidence:Dt(e),id:e.relationshipId,kind:B(e.kind),lifecycle:e.lifecycle._tag,source:Et(r.get(e.sourceNodeId),a,n,t),target:Et(r.get(e.targetNodeId),a,n,t)}})},kt=e=>e.activity.events.map(e=>({actor:e.actor.label,actorKind:e.actor.kind,dateTime:O(e.occurredAt),detail:B(e.sourceKind),...e.href===null?{}:{href:e.href},id:e.eventKey,...e.service===null?{}:{service:e.service},time:mt(e.occurredAt),title:e.title})),At=(e,t,n)=>{let r=ht(e.source);if(r!==null)return{external:!0,href:r,label:`Open in ${n}`};let i=e.entity.canonicalReleaseId;return i===null?{external:!1,href:null,label:`Source link unavailable`}:{external:!1,href:gt(t,i),label:`Open delivery release`}},jt=e=>[...e.entity.ownersTruncated?[`More collaborators exist than this bounded view can show.`]:[],...e.entity.releaseMembershipsTruncated?[`More release memberships exist than this bounded delivery path can show.`]:[],...e.graph.truncated?[`The relationship graph is partial; additional delivery links exist.`]:[],...e.activity.truncated?[`The activity list is partial; older events are not shown.`]:[]],Mt=({displayKey:e,issue:t,releaseCount:n,serviceName:r,title:i})=>t===null?`${e} · ${i} · ${r}`:`${e} · ${i} · ${r} issue · ${String(n)} release${n===1?``:`s`} · ${String(t.commentCount)} synchronized comment${t.commentCount===1?``:`s`}`,Nt=(e,t)=>{let n=t.entity.projection,r=M(n.entityType),i=pt[r],a=Ce(n.details),o=n.details._tag===`issue`?Ye(n.details,t.source.sourceUrl):null,s=n.details._tag===`pull-request`?dt(n.details,t.source,t):null,c=n.details._tag===`pipeline-execution`?rt(n.details,t):null,l=n.details._tag===`page`?Be(n.details,t):null,u=n.details._tag===`time-entry`?Pe(e,n.details,t):null,d=Tt(t),f=t.entity.releaseIds.length;return{activity:kt(t),activityEmptyLabel:`No attributable activity has been recorded for this object.`,agentContext:Mt({displayKey:n.displayKey,issue:o,releaseCount:f,serviceName:i,title:n.title}),collaborators:Ct(St(xt(t.entity.owners),o),l,t.entity.owners),clockifyTimeEntry:u,confluencePage:l,contentSummary:`${V[n.entityType]} ${n.displayKey} is tracked in ${i}. ${f===0?`It is not linked to a release yet.`:`It belongs to ${f}${t.entity.releaseMembershipsTruncated?`+`:``} release${f===1?``:`s`}.`}`,displayKey:n.displayKey,evidence:{claimCount:t.graph.evidenceClaims.length,freshness:wt(t),freshnessDateTime:O(d),freshnessTime:mt(d),itemCount:t.graph.evidenceItems.length,reference:`${n.displayKey} · source revision ${t.source.revision}`},facts:[{label:`Object`,value:V[n.entityType]},{label:`Service`,value:i},..._t(n.details)],freshness:wt(t),freshnessDateTime:O(d),freshnessTime:mt(d),kindLabel:V[n.entityType],issue:o,pipelineExecution:c,pullRequest:s,partialMessages:jt(t),primaryAction:At(t,e,i),relationships:Ot(t,e,r),relationshipEmptyLabel:`No delivery relationships have been recorded for this object.`,releases:t.entity.releaseIds.map(t=>({href:gt(e,t),id:t,label:`Release ${H(t)}`})),service:r,serviceName:i,title:n.title,tone:Se(n.entityType,a).tone,verdict:a}},U={state:`_state_dgh51_1`,loading:`_loading_dgh51_12`,loadingColumns:`_loadingColumns_dgh51_13`,content:`_content_dgh51_14`,deliveryPath:`_deliveryPath_dgh51_15`,facts:`_facts_dgh51_16`,evidence:`_evidence_dgh51_17`,activity:`_activity_dgh51_18`,sectionHeading:`_sectionHeading_dgh51_19`,back:`_back_dgh51_33`,principalAction:`_principalAction_dgh51_34`,releasePath:`_releasePath_dgh51_35`,pathRail:`_pathRail_dgh51_74`,pathNode:`_pathNode_dgh51_83`,pathEmpty:`_pathEmpty_dgh51_84`,workingCircle:`_workingCircle_dgh51_152`,shell:`_shell_dgh51_174`,timeline:`_timeline_dgh51_198`},W={document:`_document_1mruv_1`,ledger:`_ledger_1mruv_2`,ledgerBody:`_ledgerBody_1mruv_3`,primaryFacts:`_primaryFacts_1mruv_5`,section:`_section_1mruv_7`,sectionHeading:`_sectionHeading_1mruv_8`,entry:`_entry_1mruv_9`,attribution:`_attribution_1mruv_12`,people:`_people_1mruv_17`,readOnly:`_readOnly_1mruv_19`,total:`_total_1mruv_36`},G=c(),Pt=({children:e,heading:t,meta:n})=>(0,G.jsxs)(`section`,{className:W.section,children:[(0,G.jsxs)(`header`,{className:W.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,variant:`section-title`,children:t}),(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:n})]}),e]}),Ft=({canApprove:e=!1,canCorrect:t=!1,onSubmit:n,submission:r={_tag:`idle`},timeEntry:i})=>{let[o,s]=(0,P.useState)(``),[c,l]=(0,P.useState)(``),u=(0,P.useRef)(`approved`),f=!t||n===void 0||r._tag===`submitting`,p=!e||n===void 0||r._tag===`submitting`;return(0,G.jsxs)(`article`,{className:W.document,"data-workspace-clockify-time-entry-detail":!0,children:[(0,G.jsxs)(`section`,{"aria-label":`Clockify time ledger`,className:W.ledger,children:[(0,G.jsxs)(`div`,{className:W.total,children:[(0,G.jsx)(`span`,{children:`Total tracked`}),(0,G.jsx)(`strong`,{children:i.durationLabel}),(0,G.jsx)(`small`,{children:i.rollupLabel})]}),(0,G.jsxs)(`div`,{className:W.ledgerBody,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsx)(`span`,{children:`Time ledger`}),(0,G.jsx)(d,{label:i.associationLabel,tone:i.jiraAssociations.length===0?`caution`:`positive`})]}),(0,G.jsx)(`p`,{children:i.description}),(0,G.jsxs)(`dl`,{className:W.primaryFacts,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Project`}),(0,G.jsx)(`dd`,{children:i.projectLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Billing`}),(0,G.jsx)(`dd`,{children:i.billableLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Contributor`}),(0,G.jsx)(`dd`,{children:i.contributorLabel})]})]})]})]}),(0,G.jsx)(Pt,{heading:`Entry`,meta:`The exact source record included in the total`,children:(0,G.jsxs)(`div`,{className:W.entry,children:[(0,G.jsx)(`strong`,{children:i.durationLabel}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Started`}),(0,G.jsx)(`dd`,{children:i.startedAt})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Ended`}),(0,G.jsx)(`dd`,{children:i.endedAt})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`State`}),(0,G.jsx)(`dd`,{children:i.timerLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Provider lock`}),(0,G.jsx)(`dd`,{children:i.lockLabel})]})]})]})}),(0,G.jsx)(Pt,{heading:`Jira attribution`,meta:`Current delivery-ledger relationships`,children:(0,G.jsxs)(`div`,{className:W.attribution,"data-state":i.jiraAssociations.length===0?`missing`:`linked`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:i.associationLabel}),(0,G.jsx)(`p`,{children:i.associationDetail})]}),i.jiraAssociations.length===0?null:(0,G.jsx)(`ul`,{children:i.jiraAssociations.map(e=>(0,G.jsx)(`li`,{children:(0,G.jsxs)(a,{to:e.href,children:[(0,G.jsx)(`span`,{children:e.key}),(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsxs)(`small`,{children:[e.state===`inferred`?`Inferred`:`Linked`,` · `,e.evidenceLabel]})]})},e.href))})]})}),(0,G.jsx)(Pt,{heading:`People`,meta:`Provider contributor and assigned approvers`,children:(0,G.jsxs)(`dl`,{className:W.people,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Contributor`}),(0,G.jsx)(`dd`,{children:i.contributorLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Approvers`}),(0,G.jsx)(`dd`,{children:i.approvers.join(` · `)||`No approval recorded`})]})]})}),(0,G.jsxs)(`aside`,{className:W.readOnly,"data-clockify-approval":!0,children:[(0,G.jsxs)(`strong`,{children:[`Control Center approval: `,i.approvalLabel]}),(0,G.jsx)(`span`,{children:i.approvalDetail}),i.approvalDecidedAt===null?null:(0,G.jsxs)(`time`,{dateTime:i.approvalDecidedAt.dateTime,children:[`Recorded `,i.approvalDecidedAt.label]})]}),(0,G.jsxs)(`section`,{"aria-label":`Governed Clockify actions`,"data-clockify-governed-actions":!0,children:[(0,G.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),f||n({_tag:`correct-association`,expectedRevision:i.sourceRevision,jiraIssueKey:o})},children:[(0,G.jsxs)(`label`,{children:[`Jira issue key`,(0,G.jsx)(`input`,{disabled:f,maxLength:100,onChange:e=>s(e.currentTarget.value),pattern:`[A-Z][A-Z0-9]*-[1-9][0-9]*`,required:!0,value:o})]}),(0,G.jsx)(`button`,{disabled:f,type:`submit`,children:`Correct association`})]}),(0,G.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),!p&&c.trim().length>0&&(n({_tag:`record-approval`,expectedRevision:i.sourceRevision,decision:u.current,rationale:c.trim()}),u.current=`approved`)},children:[(0,G.jsxs)(`label`,{children:[`Approval rationale`,(0,G.jsx)(`input`,{disabled:p,maxLength:1e3,onChange:e=>l(e.currentTarget.value),required:!0,value:c})]}),(0,G.jsx)(`button`,{disabled:p||c.trim().length===0,onClick:()=>{u.current=`approved`},type:`submit`,children:`Approve revision`}),(0,G.jsx)(`button`,{disabled:p||c.trim().length===0,onClick:()=>{u.current=`rejected`},type:`submit`,children:`Reject revision`})]}),r._tag===`failed`?(0,G.jsx)(`p`,{role:`alert`,children:`The governed action could not be submitted.`}):null,r._tag===`succeeded`?(0,G.jsxs)(`p`,{children:[`Action recorded: `,r.result.state]}):null]})]})},It={submit:(e,t,n)=>E(fe(function*(){let n=yield*he;return yield*(t._tag,n.deliveryGraph.submitClockifyAction({params:{entityId:e},payload:t}))}).pipe(D(pe)),{signal:n})},Lt=(e,t,n,r,i=It)=>{let[a,o]=(0,P.useState)({_tag:`idle`}),s=(0,P.useRef)(null);return(0,P.useEffect)(()=>(s.current?.abort(),s.current=null,o({_tag:`idle`}),()=>{s.current?.abort(),s.current=null}),[e,t]),{state:a,submit:(0,P.useCallback)(a=>{if(t===null||s.current!==null)return;let c=new AbortController;s.current=c,o({_tag:`submitting`}),i.submit(e,a,c.signal).then(e=>{s.current===c&&(s.current=null,o({_tag:`succeeded`,result:e}),r())},e=>{s.current===c&&(s.current=null,j(`UnauthorizedApiError`)(e)&&n(t),c.signal.aborted||o({_tag:`failed`}))})},[e,n,r,t,i])}},K={document:`_document_xgn6i_1`,folio:`_folio_xgn6i_2`,revision:`_revision_xgn6i_3`,folioMeta:`_folioMeta_xgn6i_4`,section:`_section_xgn6i_7`,sectionHeading:`_sectionHeading_xgn6i_8`,collections:`_collections_xgn6i_9`,versions:`_versions_xgn6i_10`,attachments:`_attachments_xgn6i_12`,contentState:`_contentState_xgn6i_14`,evidenceCount:`_evidenceCount_xgn6i_15`,richText:`_richText_xgn6i_87`},q=({children:e,heading:t,meta:n})=>(0,G.jsxs)(`section`,{className:K.section,children:[(0,G.jsxs)(`header`,{className:K.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,variant:`section-title`,children:t}),(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:n})]}),e]}),Rt=({page:e})=>{let[t,n]=(0,P.useState)(!1);return(0,G.jsxs)(`article`,{className:K.document,"data-workspace-confluence-page-detail":!0,children:[(0,G.jsxs)(`section`,{"aria-label":`Document identity`,className:K.folio,children:[(0,G.jsxs)(`div`,{className:K.revision,children:[(0,G.jsx)(`span`,{children:`Revision`}),(0,G.jsx)(`strong`,{children:e.revision})]}),(0,G.jsxs)(`div`,{className:K.folioMeta,children:[(0,G.jsx)(d,{label:e.status,tone:e.status===`Superseded`?`caution`:e.status===`Current`?`positive`:`neutral`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Space`}),(0,G.jsx)(`dd`,{children:e.sourceSpaceId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Updated`}),(0,G.jsx)(`dd`,{children:e.updatedAt===null?`Not synchronized`:(0,G.jsx)(`time`,{dateTime:e.updatedAt.dateTime,children:e.updatedAt.label})})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Created`}),(0,G.jsx)(`dd`,{children:e.createdAt===null?`Not synchronized`:(0,G.jsx)(`time`,{dateTime:e.createdAt.dateTime,children:e.createdAt.label})})]})]})]})]}),(0,G.jsx)(q,{heading:`Document`,meta:`Safely converted text; raw provider markup and media stay outside this view`,children:e.contentState===`loaded`&&e.content!==null?(0,G.jsx)(Te,{className:K.richText,value:e.content}):(0,G.jsxs)(`div`,{className:K.contentState,"data-content-state":e.contentState,children:[(0,G.jsx)(`strong`,{children:e.contentState===`lazy`?`Content has not been loaded`:`No readable body was returned`}),(0,G.jsx)(T,{tone:`secondary`,children:e.contentState===`lazy`?`The page is synchronized lazily. Open the authenticated Confluence source to read it now.`:`Revision metadata remains available in this read-only view.`})]})}),(0,G.jsx)(q,{heading:`People`,meta:e.watcherInventoryLabel,children:e.contributors.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No owner, contributor, or watcher identity was synchronized.`}):(0,G.jsx)(b,{"aria-label":`Page collaborators`,expanded:t,limit:4,onExpandedChange:n,people:e.contributors})}),(0,G.jsxs)(`div`,{className:K.collections,children:[(0,G.jsx)(q,{heading:`Revision history`,meta:e.historyInventoryLabel,children:e.versions.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No revision history was synchronized.`}):(0,G.jsx)(`ol`,{className:K.versions,children:e.versions.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsxs)(`strong`,{children:[`v`,e.number]}),(0,G.jsx)(`span`,{children:e.message}),(0,G.jsxs)(`small`,{children:[e.author,` · `,(0,G.jsx)(`time`,{dateTime:e.createdAt.dateTime,children:e.createdAt.label}),e.minorEdit?` · Minor edit`:``]})]},`${String(e.number)}-${e.createdAt.dateTime}`))})}),(0,G.jsx)(q,{heading:`Attachments`,meta:e.attachmentInventoryLabel,children:e.attachments.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No attachment metadata was synchronized.`}):(0,G.jsx)(`ul`,{className:K.attachments,children:e.attachments.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsxs)(`span`,{children:[e.mediaType,` · `,e.fileSize,` · `,e.version]}),(0,G.jsx)(`small`,{children:`Metadata only · authenticated proxy required`})]},e.id))})})]}),(0,G.jsx)(q,{heading:`Runbook evidence`,meta:`Immutable delivery evidence around this page`,children:(0,G.jsxs)(`div`,{className:K.evidenceCount,children:[(0,G.jsx)(`strong`,{children:e.runbookEvidenceCount}),(0,G.jsxs)(`span`,{children:[`evidence item`,e.runbookEvidenceCount===1?``:`s`,` in the current bounded graph`]})]})})]})},J={document:`_document_1cny9_1`,section:`_section_1cny9_2`,sectionHeading:`_sectionHeading_1cny9_3`,people:`_people_1cny9_4`,conversation:`_conversation_1cny9_5`,history:`_history_1cny9_6`,related:`_related_1cny9_7`,metadata:`_metadata_1cny9_8`,attribution:`_attribution_1cny9_9`,richText:`_richText_1cny9_28`,commentBody:`_commentBody_1cny9_29`,criteria:`_criteria_1cny9_70`,boundaryNotice:`_boundaryNotice_1cny9_75`,collectionNotice:`_collectionNotice_1cny9_76`},Y=({children:e,heading:t,meta:n})=>(0,G.jsxs)(`section`,{className:J.section,children:[(0,G.jsxs)(`header`,{className:J.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,variant:`section-title`,children:t}),n===void 0?null:(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:n})]}),e]}),zt=({empty:e,value:t})=>t===null?(0,G.jsx)(T,{tone:`secondary`,children:e}):(0,G.jsx)(Te,{className:J.richText,value:t}),Bt=({issue:e})=>(0,G.jsxs)(`article`,{className:J.document,"data-workspace-issue-detail":!0,children:[e.truncationMessage===null?null:(0,G.jsx)(T,{className:J.boundaryNotice,tone:`secondary`,children:e.truncationMessage}),(0,G.jsx)(Y,{heading:`Description`,meta:`What changes and why`,children:(0,G.jsx)(zt,{empty:`No description was synchronized from Jira.`,value:e.description})}),(0,G.jsx)(Y,{heading:`Acceptance criteria`,meta:`The finish line`,children:(0,G.jsx)(`div`,{className:J.criteria,children:(0,G.jsx)(zt,{empty:`No acceptance criteria were synchronized.`,value:e.acceptanceCriteria})})}),e.environment===null?null:(0,G.jsx)(Y,{heading:`Environment`,meta:`Where this applies`,children:(0,G.jsx)(zt,{empty:`No environment was synchronized.`,value:e.environment})}),(0,G.jsx)(Y,{heading:`People`,meta:`${String(e.collaborators.length)} collaborators`,children:e.collaborators.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No Jira collaborator was synchronized for this issue.`}):(0,G.jsx)(`ul`,{className:J.people,children:e.collaborators.map(e=>(0,G.jsx)(`li`,{children:(0,G.jsx)(S,{person:e})},e.id))})}),(0,G.jsx)(Y,{heading:`Issue details`,meta:`Synchronized fields`,children:(0,G.jsx)(`dl`,{className:J.metadata,children:e.metadata.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e.label}),(0,G.jsx)(`dd`,{children:e.value})]},e.label))})}),e.parent===null&&e.subtasks.length===0?null:(0,G.jsx)(Y,{heading:`Related Jira work`,meta:`Source hierarchy`,children:(0,G.jsxs)(`div`,{className:J.related,children:[e.parent===null?null:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:`Parent`}),e.parent.href===null?(0,G.jsx)(`strong`,{children:e.parent.key}):(0,G.jsx)(`a`,{href:e.parent.href,rel:`noreferrer`,target:`_blank`,children:e.parent.key}),(0,G.jsx)(`span`,{children:e.parent.summary}),(0,G.jsx)(`small`,{children:e.parent.status})]}),e.subtasks.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:`Subtask`}),e.href===null?(0,G.jsx)(`strong`,{children:e.key}):(0,G.jsx)(`a`,{href:e.href,rel:`noreferrer`,target:`_blank`,children:e.key}),(0,G.jsx)(`span`,{children:e.summary}),(0,G.jsx)(`small`,{children:e.status})]},e.key))]})}),(0,G.jsxs)(Y,{heading:`Comments`,meta:`${String(e.commentCount)} comments`,children:[e.commentBodiesTruncated?(0,G.jsx)(T,{className:J.collectionNotice,tone:`secondary`,children:`Jira shortened comment bodies to keep this synchronized view bounded.`}):null,e.commentsTruncated?(0,G.jsx)(T,{className:J.collectionNotice,tone:`secondary`,children:`Only the newest synchronized comments are shown.`}):null,e.comments.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No comment was synchronized for this issue.`}):(0,G.jsx)(`ol`,{className:J.conversation,children:e.comments.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsxs)(`div`,{className:J.attribution,children:[(0,G.jsx)(S,{person:e.author,size:`compact`}),e.time===null?null:(0,G.jsx)(`time`,{children:e.time})]}),(0,G.jsx)(Te,{className:J.commentBody,value:e.body??`Comment body unavailable.`})]},e.id))})]}),(0,G.jsxs)(Y,{heading:`History`,meta:`${String(e.historyCount)} changes`,children:[e.historyTruncated?(0,G.jsx)(T,{className:J.collectionNotice,tone:`secondary`,children:`Only the newest synchronized history is shown.`}):null,e.history.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No field history was synchronized for this issue.`}):(0,G.jsx)(`ol`,{className:J.history,children:e.history.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsxs)(`div`,{className:J.attribution,children:[(0,G.jsx)(S,{person:e.actor,size:`compact`}),e.time===null?null:(0,G.jsx)(`time`,{children:e.time})]}),(0,G.jsx)(`dl`,{children:e.changes.map((e,t)=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e.field}),(0,G.jsx)(`dd`,{children:e.transition})]},`${e.field}:${String(t)}`))})]},e.id))})]})]}),X={document:`_document_173oo_1`,hero:`_hero_173oo_2`,heroHeading:`_heroHeading_173oo_3`,heroFacts:`_heroFacts_173oo_4`,executionMeta:`_executionMeta_173oo_6`,section:`_section_173oo_7`,sectionHeading:`_sectionHeading_173oo_8`,peopleLanes:`_peopleLanes_173oo_9`,actions:`_actions_173oo_11`,artifacts:`_artifacts_173oo_17`,sourceArtifacts:`_sourceArtifacts_173oo_18`,deliveryCounts:`_deliveryCounts_173oo_21`,summary:`_summary_173oo_64`,stageRail:`_stageRail_173oo_116`,partial:`_partial_173oo_142`,error:`_error_173oo_193`},Vt=({children:e,heading:t,meta:n})=>(0,G.jsxs)(`section`,{className:X.section,children:[(0,G.jsxs)(`header`,{className:X.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,variant:`section-title`,children:t}),(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:n})]}),e]}),Ht=({value:e})=>e===null?(0,G.jsx)(G.Fragment,{children:`Not synchronized`}):(0,G.jsx)(`time`,{dateTime:e.dateTime,children:e.label}),Ut=({pipeline:e})=>(0,G.jsxs)(`article`,{className:X.document,"data-workspace-pipeline-execution-detail":!0,children:[(0,G.jsxs)(`section`,{"aria-label":`Execution identity`,className:X.hero,children:[(0,G.jsxs)(`div`,{className:X.heroHeading,children:[(0,G.jsx)(`span`,{children:`Execution`}),(0,G.jsx)(`strong`,{children:e.executionId}),(0,G.jsx)(d,{label:e.status,tone:e.status===`Succeeded`?`positive`:e.status===`Failed`?`critical`:e.status===`Running`?`progress`:e.status===`Stopped`?`caution`:`neutral`})]}),e.statusSummary===null?null:(0,G.jsx)(`p`,{className:X.summary,children:e.statusSummary}),(0,G.jsxs)(`dl`,{className:X.heroFacts,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Why`}),(0,G.jsxs)(`dd`,{children:[e.triggerType,(0,G.jsx)(`small`,{children:e.triggerDetail})]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsx)(`dd`,{children:(0,G.jsx)(`code`,{children:e.triggerRevision})})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Where`}),(0,G.jsx)(`dd`,{children:e.targetEnvironment})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Duration`}),(0,G.jsx)(`dd`,{children:e.duration})]})]}),(0,G.jsxs)(`dl`,{className:X.executionMeta,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Pipeline`}),(0,G.jsxs)(`dd`,{children:[e.pipelineName,` · `,e.pipelineVersion]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Started`}),(0,G.jsx)(`dd`,{children:(0,G.jsx)(Ht,{value:e.startedAt})})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Updated`}),(0,G.jsx)(`dd`,{children:(0,G.jsx)(Ht,{value:e.updatedAt})})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Mode`}),(0,G.jsx)(`dd`,{children:e.executionMode})]})]})]}),(0,G.jsx)(ee,{className:X.stageRail,emptyLabel:`No stage detail was synchronized for this execution.`,heading:`Execution path`,stages:e.stages}),(0,G.jsx)(Vt,{heading:`People`,meta:`Provider identities that operated or approved this run`,children:(0,G.jsxs)(`div`,{className:X.peopleLanes,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`small`,{children:`Operators`}),(0,G.jsx)(`strong`,{children:e.operators.join(` · `)||`Not synchronized`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`small`,{children:`Approvers`}),(0,G.jsx)(`strong`,{children:e.approvers.join(` · `)||`No approval recorded`})]})]})}),(0,G.jsxs)(Vt,{heading:`Actions`,meta:`${e.actionCountLabel} actions · ${String(e.pagesRead)} bounded pages read`,children:[e.actionsTruncated?(0,G.jsx)(`p`,{className:X.partial,children:`This is a bounded view. Additional action detail exists in CodePipeline.`}):null,e.actions.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No action detail was synchronized for this execution.`}):(0,G.jsx)(`ol`,{className:X.actions,children:e.actions.map(e=>(0,G.jsxs)(`li`,{"data-tone":e.tone,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`small`,{children:e.stageName}),(0,G.jsx)(`strong`,{children:e.name})]}),(0,G.jsx)(d,{label:e.status,tone:e.tone})]}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Provider`}),(0,G.jsx)(`dd`,{children:e.provider})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Duration`}),(0,G.jsx)(`dd`,{children:e.duration})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Actor`}),(0,G.jsx)(`dd`,{children:e.actor??`Not synchronized`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Region`}),(0,G.jsx)(`dd`,{children:e.region??`Not synchronized`})]})]}),e.summary===null?null:(0,G.jsx)(`p`,{children:e.summary}),e.error===null?null:(0,G.jsx)(`p`,{className:X.error,children:e.error}),e.artifacts.length===0?null:(0,G.jsx)(`ul`,{className:X.artifacts,children:e.artifacts.map((e,t)=>(0,G.jsxs)(`li`,{children:[(0,G.jsx)(`span`,{children:e.direction}),(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`small`,{children:e.accessLabel})]},`${e.direction}-${e.name}-${String(t)}`))})]},e.id))})]}),(0,G.jsx)(Vt,{heading:`Source artifacts`,meta:`Metadata only; content stays behind the authenticated proxy`,children:e.sourceArtifacts.length===0?(0,G.jsx)(T,{tone:`secondary`,children:`No source artifact metadata was synchronized.`}):(0,G.jsx)(`ul`,{className:X.sourceArtifacts,children:e.sourceArtifacts.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`code`,{children:e.revision})]}),(0,G.jsxs)(`span`,{children:[e.summary??`No summary`,(0,G.jsx)(`small`,{children:e.accessLabel})]})]},`${e.name}-${e.revision}`))})}),(0,G.jsxs)(Vt,{heading:`Delivery evidence`,meta:`Current accepted relationships around this exact run`,children:[(0,G.jsxs)(`dl`,{className:X.deliveryCounts,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Releases`}),(0,G.jsx)(`dd`,{children:e.releaseCountLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Pull requests`}),(0,G.jsx)(`dd`,{children:e.pullRequestCountLabel})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runbooks`}),(0,G.jsx)(`dd`,{children:e.runbookCountLabel})]})]}),(0,G.jsx)(T,{tone:`secondary`,children:`Use the delivery relationships below to open each connected object and inspect its evidence.`})]})]}),Wt=s(()=>import(`./pullRequestReviewThreadReplay-oljKM7Xz.js`),__vite__mapDeps([0,1,2,3,4])),Z=Wt.then(({generatedClientPullRequestReviewTransport:e})=>e),Gt=e=>j(e,`RateLimitedApiError`),Kt=e=>{if(!Gt(e))return re(le(1));let t=e.retryAt;return t===null?re(le(2)):se(ue,e=>re(oe(Math.max(0,k(t)-k(e)))))},qt=e=>{let t=[];for(let n of e.providers){let e=n.models[0];n.health===`available`&&n.capabilities.includes(`pr-review`)&&n.reviewProfile!==void 0&&e&&t.push({providerId:n.providerId,model:e,reviewProfile:n.reviewProfile,...n.displayName===void 0?{}:{displayName:n.displayName}})}return t},Jt={enqueue:(...e)=>Z.then(t=>t.enqueue(...e)),load:(...e)=>Z.then(t=>t.load(...e)),loadThread:(...e)=>Z.then(t=>t.loadThread(...e)),previewPublication:(...e)=>Z.then(t=>t.previewPublication(...e)),providers:(...e)=>Z.then(t=>t.providers(...e)),publishSuggestion:(...e)=>Z.then(t=>t.publishSuggestion(...e))},Q=(e,t)=>e.baseRevision===t.baseRevision&&e.entityId===t.entityId&&e.headRevision===t.headRevision&&e.sessionKey===t.sessionKey,Yt=(e,t,n,r,i)=>{e.catch(e=>{t.aborted||r.current===null||!Q(r.current,n)||(ce(ie(`Pull-request review history boundary failed`,e)),i(e=>e._tag===`ready`&&Q(e,n)?{...e,historyAction:`failed`}:e))})},Xt=(e,t,n,r,i,a)=>{t.aborted||r.current===null||!Q(r.current,n)||a(t=>t._tag===`ready`&&Q(t,n)?{...t,thread:i.current??e}:t)},Zt=(e,t)=>e._tag===`unavailable`||e.subject.baseRevision===t.baseRevision&&e.subject.headRevision===t.headRevision,Qt=(e,t,n,r,i,a,o=Jt)=>{let[s,c]=(0,P.useState)(0),[l,u]=(0,P.useState)({_tag:`idle`}),[d,f]=(0,P.useState)({_tag:`idle`}),p=(0,P.useRef)(null),m=(0,P.useRef)(null),h=(0,P.useRef)(null),g=(0,P.useRef)(null),_=(0,P.useRef)(null),v=(0,P.useRef)(null),y=(0,P.useMemo)(()=>r===null||n===null?null:{baseRevision:t,entityId:e,headRevision:n,sessionKey:r},[t,e,n,r]);(0,P.useLayoutEffect)(()=>{_.current=y},[y]),(0,P.useLayoutEffect)(()=>{v.current=null},[e,r]),(0,P.useEffect)(()=>{if(r===null||n===null){u({_tag:`idle`});return}let s={baseRevision:t,entityId:e,headRevision:n,sessionKey:r},l=v.current??void 0,d=new AbortController,f=(e,t)=>g.current!==null&&Q(g.current,s)?!1:(g.current=s,ce(de(e,t)),E(Kt(t),{signal:d.signal}).then(()=>{d.signal.aborted||c(e=>e+1)},e=>{d.signal.aborted||u({_tag:`failed`,...s})}),!0);return u(e=>e._tag===`ready`&&Q(e,s)?e:{_tag:`loading`,...s}),Wt.then(({loadPullRequestReviewSnapshot:t})=>t(o,e,i,d.signal,l,v)).then(({catalog:e,catalogNeedsRetry:t,review:n,thread:r})=>{if(!d.signal.aborted){t||(g.current=null);let i=qt(e);u(Zt(n,s)?{_tag:`ready`,...s,action:`idle`,historyAction:`idle`,provider:i[0]??null,providerPresets:i,review:n,thread:r}:{_tag:`failed`,...s}),t&&f(`Pull-request review provider catalog unavailable; retrying once`)}},e=>{if(!d.signal.aborted){if(N(e)){a(r),u({_tag:`failed`,...s});return}Ee(e)&&f(`Pull-request review snapshot load failed; retrying once`,e)||u({_tag:`failed`,...s})}}),()=>d.abort()},[t,i,e,n,a,s,r,o]),(0,P.useEffect)(()=>{if(l._tag!==`ready`||l.review._tag!==`pending`)return;let e=new AbortController;return E(re(`2 seconds`),{signal:e.signal}).then(()=>{e.signal.aborted||c(e=>e+1)},t=>{e.signal.aborted||u({_tag:`failed`,baseRevision:l.baseRevision,entityId:l.entityId,headRevision:l.headRevision,sessionKey:l.sessionKey})}),()=>e.abort()},[l]),(0,P.useEffect)(()=>()=>{p.current?.abort(),m.current?.abort(),h.current?.abort()},[]),(0,P.useEffect)(()=>{p.current?.abort(),p.current=null,m.current?.abort(),m.current=null,h.current?.abort(),h.current=null,f({_tag:`idle`})},[e,r]),(0,P.useLayoutEffect)(()=>{m.current?.abort(),m.current=null,f(e=>e._tag===`publishing`?e:{_tag:`idle`})},[t,n]);let b=(0,P.useCallback)((e,t)=>{let n=v.current??void 0;Wt.then(({refreshPullRequestReviewThread:r})=>r(o,e.entityId,t,n,v)).then(n=>{Xt(n,t,e,_,v,u)},()=>void 0)},[o]),x=(0,P.useCallback)(()=>{if(l._tag!==`ready`||l.historyAction===`loading`||l.thread===void 0||!l.thread.hasEarlier)return;let e=l,t=l.thread;p.current?.abort();let n=new AbortController;p.current=n,u({...e,historyAction:`loading`}),Yt(Wt.then(({loadEarlierPullRequestReviewThreadIntoState:r})=>r(o,e,t,n.signal,_,v,a,u)),n.signal,e,_,u)},[a,l,o]),S=(0,P.useCallback)((t,n)=>{if(l._tag!==`ready`||l.review._tag===`unavailable`)return;let r=n===void 0?l.provider:l.providerPresets?.find(e=>e.providerId===n)??null;if(r===null)return;let i=l;m.current?.abort();let s=new AbortController;m.current=s,u({...i,action:`starting`}),o.enqueue(e,r,t,s.signal).then(e=>{s.signal.aborted||u(t=>t._tag===`ready`&&Q(t,i)&&Zt(e,i)?{...t,action:`idle`,review:e}:t._tag===`ready`&&Q(t,i)?{_tag:`failed`,baseRevision:i.baseRevision,entityId:i.entityId,headRevision:i.headRevision,sessionKey:i.sessionKey}:t)},e=>{s.signal.aborted||(N(e)&&a(i.sessionKey),u(e=>e._tag===`ready`&&Q(e,i)?{...e,action:`failed`}:e))})},[e,a,l,o]),C=(0,P.useCallback)(t=>{if(l._tag!==`ready`||l.review._tag!==`completed`||l.review.jobId!==t.jobId||!l.review.report.suggestions.some(({suggestionId:e})=>e===t.suggestionId))return;let n=l;m.current?.abort();let r=new AbortController;m.current=r,f({_tag:`previewing`,selection:t}),o.previewPublication(e,t,r.signal).then(e=>{r.signal.aborted||f(e.subject.headRevision===n.headRevision?{_tag:`preview`,preview:e}:{_tag:`failed`,preview:null,selection:t})},e=>{r.signal.aborted||(N(e)&&a(n.sessionKey),f({_tag:`failed`,preview:null,selection:t}))})},[e,a,l,o]),ee=(0,P.useCallback)(t=>{if(l._tag!==`ready`)return;let n=d._tag===`preview`||d._tag===`failed`?d.preview:null;if(n===null)return;let r=l,i={jobId:n.jobId,suggestionId:n.suggestionId,revisionId:n.revisionId};h.current?.abort();let s=new AbortController;h.current=s,f({_tag:`publishing`,preview:n}),o.publishSuggestion(e,i,t,n.authorityBinding,s.signal).then(e=>{if(s.signal.aborted)return;let t=e.suggestionRevision.reviewedHead===n.suggestionRevision.reviewedHead;t&&u(t=>t._tag===`ready`&&t.review._tag===`completed`&&t.review.jobId===e.jobId?{...t,review:{...t.review,report:{...t.review.report,suggestions:t.review.report.suggestions.map(t=>t.suggestionId===e.suggestionId?{...t,state:`published`}:t)}}}:t),f(t?{_tag:`published`,headSuperseded:_.current===null||e.subject.baseRevision!==_.current.baseRevision||e.subject.headRevision!==_.current.headRevision,preview:n,publication:e}:{_tag:`receipt-conflict`,preview:n,publication:e});let i=_.current;i!==null&&i.entityId===r.entityId&&i.sessionKey===r.sessionKey&&b(i,s.signal)},e=>{s.signal.aborted||(N(e)&&a(r.sessionKey),f({_tag:`failed`,preview:n,selection:i}))})},[e,a,d,b,l,o]),te=y===null?{_tag:`idle`}:l._tag!==`idle`&&Q(l,y)?l:{_tag:`loading`,...y};return{cancelPublication:(0,P.useCallback)(()=>{m.current?.abort(),m.current=null,h.current?.abort(),h.current=null,f({_tag:`idle`})},[]),loadEarlier:x,previewPublication:C,publication:d,publishSuggestion:ee,retry:(0,P.useCallback)(()=>{g.current=null,c(e=>e+1)},[]),start:S,state:te}},$t=j(`UnauthorizedApiError`),en=j(`NotFoundApiError`),tn=(e,t)=>e._tag!==`idle`&&e.entityId===t.entityId&&e.sessionKey===t.sessionKey&&e.workspaceId===t.workspaceId,nn=(e,t)=>tn(e,t)&&(e._tag===`ready`||e._tag===`stale`)?e.inspection:null,rn=(e,t)=>!e.isSourceCurrent||e.freshness?._tag===`stale`?{_tag:`stale`,inspection:e,reason:`source-stale`,...t}:{_tag:`ready`,inspection:e,...t},an={load:(e,t)=>E(fe(function*(){return yield*(yield*me()).deliveryGraph.workspaceEntity({params:{entityId:e}})}).pipe(D(pe)),{signal:t})},on=(e,t,n,r,i,a=an)=>{let[o,s]=(0,P.useState)(0),[c,l]=(0,P.useState)({_tag:`idle`});(0,P.useEffect)(()=>{if(r===null){l({_tag:`idle`});return}let o={entityId:t,refreshKey:n,sessionKey:r,workspaceId:e},s=new AbortController;return l(e=>{let t=nn(e,o);return t===null?{_tag:`loading`,...o}:{_tag:`stale`,inspection:t,reason:`refreshing`,...o}}),a.load(t,s.signal).then(e=>{s.signal.aborted||l(rn(e,o))},e=>{if(!s.signal.aborted){if($t(e)){i(r),l({_tag:`failed`,...o});return}if(en(e)){l({_tag:`not-found`,...o});return}l(e=>{let t=nn(e,o);return t===null?{_tag:`failed`,...o}:{_tag:`stale`,inspection:t,reason:`refresh-failed`,...o}})}}),()=>s.abort()},[t,i,n,o,r,a,e]);let u=r===null?null:{entityId:t,refreshKey:n,sessionKey:r,workspaceId:e},d=u===null?{_tag:`idle`}:c._tag===`idle`||!tn(c,u)?{_tag:`loading`,...u}:c.refreshKey!==n&&(c._tag===`ready`||c._tag===`stale`)?{_tag:`stale`,inspection:c.inspection,reason:`refreshing`,...u}:c.refreshKey===n?c:{_tag:`loading`,...u};return{retry:(0,P.useCallback)(()=>s(e=>e+1),[]),state:d}},sn=(0,P.lazy)(()=>s(()=>import(`./WorkspacePullRequestDetails-BErJ5bk8.js`).then(e=>({default:e.WorkspacePullRequestDetails})),__vite__mapDeps([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,1,2,20,21,22,23,24,25]))),cn=(e,t)=>{let n=e.split(/[?#]/u,1)[0]??``;return n===_e(t)?`Back to items`:n.includes(`/releases/`)?`Back to release`:n.endsWith(`/work`)?`Back to active work`:n.endsWith(`/timeline`)?`Back to timeline`:`Back to workspace`},ln=({action:e,description:t,title:n,tone:r=`neutral`})=>{let i=(0,P.useRef)(null);return(0,P.useEffect)(()=>i.current?.focus(),[]),(0,G.jsx)(`section`,{className:U.state,"data-workspace-entity-state":r,ref:i,tabIndex:-1,children:(0,G.jsx)(u,{action:e,description:t,title:n,tone:r})})},un=()=>(0,G.jsxs)(`section`,{"aria-label":`Loading canonical entity`,className:U.loading,children:[(0,G.jsx)(l,{decorative:!1,height:`12rem`,label:`Loading canonical entity`,variant:`block`}),(0,G.jsxs)(`div`,{className:U.loadingColumns,children:[(0,G.jsx)(l,{height:`20rem`,variant:`block`}),(0,G.jsx)(l,{height:`20rem`,variant:`block`})]})]}),dn=({action:e})=>e.href===null?(0,G.jsx)(f,{disabled:!0,size:`principal`,stretch:!0,variant:`primary`,children:e.label}):e.external?(0,G.jsx)(`a`,{className:U.principalAction,href:e.href,rel:`noreferrer`,target:`_blank`,children:e.label}):(0,G.jsx)(a,{className:U.principalAction,to:e.href,children:e.label}),fn=({presentation:e})=>(0,G.jsxs)(`section`,{"aria-labelledby":`workspace-entity-path`,className:U.deliveryPath,children:[(0,G.jsxs)(`div`,{className:U.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,id:`workspace-entity-path`,variant:`section-title`,children:`Delivery path`}),(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:`Where this work lives`})]}),(0,G.jsxs)(`div`,{className:U.pathRail,children:[(0,G.jsxs)(`div`,{className:U.pathNode,children:[(0,G.jsx)(w,{service:e.service,size:`compact`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.serviceName}),(0,G.jsx)(`code`,{children:e.displayKey})]})]}),e.releases.length===0?(0,G.jsx)(`div`,{className:U.pathEmpty,children:`No release membership yet`}):(0,G.jsx)(`ol`,{className:U.releasePath,children:e.releases.map(e=>(0,G.jsx)(`li`,{children:(0,G.jsx)(a,{to:e.href,children:e.label})},e.id))})]}),(0,G.jsx)(T,{tone:`secondary`,children:e.contentSummary})]}),pn=({presentation:e})=>(0,G.jsxs)(`section`,{"aria-labelledby":`workspace-entity-facts`,className:U.facts,children:[(0,G.jsx)(T,{as:`h2`,id:`workspace-entity-facts`,variant:`card-title`,children:`At a glance`}),(0,G.jsx)(`dl`,{children:e.facts.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e.label}),(0,G.jsx)(`dd`,{children:e.value})]},e.label))})]}),mn=({presentation:e})=>(0,G.jsxs)(`section`,{"aria-labelledby":`workspace-entity-evidence`,className:U.evidence,children:[(0,G.jsx)(T,{as:`h2`,id:`workspace-entity-evidence`,variant:`card-title`,children:`Provenance`}),(0,G.jsx)(y,{freshness:e.evidence.freshness,freshnessDateTime:e.evidence.freshnessDateTime,freshnessTime:e.evidence.freshnessTime,reference:e.evidence.reference,service:e.service}),(0,G.jsxs)(T,{tone:`secondary`,variant:`meta`,children:[e.evidence.itemCount,` evidence item`,e.evidence.itemCount===1?``:`s`,` ·`,` `,e.evidence.claimCount,` claim`,e.evidence.claimCount===1?``:`s`]})]}),hn=({presentation:e})=>{let[t,n]=(0,P.useState)(e.collaborators.expandedCategories);return(0,G.jsx)(`div`,{className:U.workingCircle,children:(0,G.jsx)(v,{approvers:e.collaborators.approvers,authors:e.collaborators.authors,emptyLabel:e.collaborators.emptyLabel,expandedCategories:t,heading:`Working circle`,limit:3,onCategoryExpandedChange:(e,t)=>{n(n=>t?[...new Set([...n,e])]:n.filter(t=>t!==e))},operators:e.collaborators.operators,owners:e.collaborators.owners,reviewers:e.collaborators.reviewers,size:`compact`})})},gn=({presentation:e})=>e.relationships.length<=4?(0,G.jsx)(C,{emptyLabel:e.relationshipEmptyLabel,heading:`Delivery relationships`,relationships:e.relationships}):(0,G.jsx)(x,{emptyLabel:e.relationshipEmptyLabel,heading:`Delivery relationships`,relationships:e.relationships}),_n=({presentation:e})=>(0,G.jsxs)(`section`,{"aria-labelledby":`workspace-entity-activity`,className:U.activity,children:[(0,G.jsxs)(`div`,{className:U.sectionHeading,children:[(0,G.jsx)(T,{as:`h2`,id:`workspace-entity-activity`,variant:`section-title`,children:`Activity`}),(0,G.jsx)(T,{tone:`secondary`,variant:`meta`,children:`Quiet, attributable history`})]}),e.activity.length===0?(0,G.jsx)(T,{tone:`secondary`,children:e.activityEmptyLabel}):(0,G.jsx)(`ol`,{className:U.timeline,children:e.activity.map((t,n)=>(0,G.jsx)(_,{continued:n<e.activity.length-1,event:t},t.id))})]}),vn=e=>{switch(e.reason){case`refreshing`:return`Refreshing from the connected service. The last complete inspection remains visible.`;case`refresh-failed`:return`The latest refresh failed. The last complete inspection remains visible and may be out of date.`;case`source-stale`:return`The connected service reported stale source data. Confirm current state before acting.`}},yn=({clockifyActionCanApprove:e,clockifyActionCanCorrect:t,clockifyActionState:n,clockifyActionSubmit:r,onSessionExpired:i,presentation:a,retry:o,reviewCanEnqueue:s,reviewLoadEarlier:c,reviewPublication:d,reviewPublicationCancel:p,reviewPublicationPreview:m,reviewRetry:h,reviewStart:g,reviewState:_,reviewSuggestionPublish:v,reviewSuggestionRevisionTransport:y,sessionKey:b,stale:x})=>(0,G.jsxs)(`div`,{className:U.content,children:[x===null?null:(0,G.jsx)(u,{action:x.reason===`refreshing`?void 0:(0,G.jsx)(f,{onClick:o,children:`Retry refresh`}),announce:x.reason===`refresh-failed`?`polite`:`off`,description:vn(x),title:x.reason===`refreshing`?`Refreshing source`:`Showing retained source data`,tone:`caution`}),a.partialMessages.map(e=>(0,G.jsx)(u,{description:e,title:`Partial canonical view`,tone:`caution`},e)),a.clockifyTimeEntry===null?null:(0,G.jsx)(Ft,{canApprove:e,canCorrect:t,onSubmit:r,submission:n,timeEntry:a.clockifyTimeEntry}),a.issue===null?null:(0,G.jsx)(Bt,{issue:a.issue}),a.confluencePage===null?null:(0,G.jsx)(Rt,{page:a.confluencePage}),a.pipelineExecution===null?null:(0,G.jsx)(Ut,{pipeline:a.pipelineExecution}),a.pullRequest===null?null:(0,G.jsx)(P.Suspense,{fallback:(0,G.jsx)(l,{decorative:!1,height:`20rem`,label:`Loading pull request`,variant:`block`}),children:(0,G.jsx)(sn,{approvers:a.collaborators.approvers,onSessionExpired:i,onReviewLoadEarlier:c,onReviewPublicationCancel:p,onReviewPublicationPreview:m,onReviewRetry:h,onReviewSuggestionPublish:v,onReviewStart:g,pullRequest:a.pullRequest,reviewCanEnqueue:s,reviewPublication:d,...y===void 0?{}:{reviewSuggestionRevisionTransport:y},reviewState:_,reviewers:a.collaborators.reviewers,sessionKey:b})}),(0,G.jsx)(fn,{presentation:a})]}),bn=e=>void 0,$=()=>void 0,xn=({clockifyActionCanApprove:e=!1,clockifyActionCanCorrect:t=!1,clockifyActionState:n={_tag:`idle`},clockifyActionSubmit:r=$,onAskAgent:i,onSessionExpired:o=bn,originHref:s,originLabel:c,originState:l,retry:u,reviewCanEnqueue:d=!1,reviewLoadEarlier:m=$,reviewPublication:h={_tag:`idle`},reviewPublicationCancel:_=$,reviewPublicationPreview:v=$,reviewRetry:y=$,reviewStart:b=$,reviewState:x={_tag:`idle`},reviewSuggestionPublish:S=$,reviewSuggestionRevisionTransport:C,sessionKey:ee=null,state:w,workspaceId:T})=>{let E=(0,P.useRef)(null);if((0,P.useEffect)(()=>E.current?.focus(),[w._tag===`ready`||w._tag===`stale`?w.inspection.entity.projection.entityId:w._tag]),w._tag===`idle`)return(0,G.jsx)(ln,{action:(0,G.jsx)(a,{state:l,to:s,children:c}),description:`A readable workspace session is required before this object can be loaded.`,title:`Entity unavailable`});if(w._tag===`loading`)return(0,G.jsx)(un,{});if(w._tag===`not-found`)return(0,G.jsx)(ln,{action:(0,G.jsx)(a,{state:l,to:s,children:c}),description:`This object is not in this workspace. It may have been deleted, disconnected, or the address may be wrong.`,title:`Object not found`});if(w._tag===`failed`)return(0,G.jsx)(ln,{action:(0,G.jsx)(f,{onClick:u,children:`Retry entity`}),description:`The canonical object could not be loaded. Your current workspace location is preserved.`,title:`Could not load object`,tone:`critical`});let D=Nt(T,w.inspection),ne=w._tag===`ready`&&w.inspection.isSourceCurrent&&w.inspection.sourceActionsAvailable;return(0,G.jsx)(p,{component:we,children:(0,G.jsx)(te,{actions:(0,G.jsx)(dn,{action:D.primaryAction}),activity:(0,G.jsx)(_n,{presentation:D}),agentEntry:(0,G.jsx)(g,{actionLabel:`Ask about this object`,agentName:`Relay`,context:D.agentContext,onClick:i}),collaborators:(0,G.jsx)(hn,{presentation:D},w.inspection.entity.projection.entityId),className:U.shell,content:(0,G.jsx)(yn,{clockifyActionCanApprove:ne&&e,clockifyActionCanCorrect:ne&&t,clockifyActionState:n,clockifyActionSubmit:r,onSessionExpired:o,presentation:D,reviewCanEnqueue:d,reviewPublication:h,reviewPublicationCancel:_,reviewLoadEarlier:m,reviewPublicationPreview:v,reviewRetry:y,...C===void 0?{}:{reviewSuggestionRevisionTransport:C},reviewSuggestionPublish:S,reviewStart:b,reviewState:x,retry:u,sessionKey:ee,stale:w._tag===`stale`?w:null}),"data-service":D.service,"data-workspace-entity-id":w.inspection.entity.projection.entityId,evidence:(0,G.jsx)(mn,{presentation:D}),facts:(0,G.jsx)(pn,{presentation:D}),freshness:D.freshness,freshnessDateTime:D.freshnessDateTime,freshnessTime:D.freshnessTime,navigation:(0,G.jsx)(a,{className:U.back,state:l,to:s,children:c}),reason:`${D.displayKey} is ${D.verdict.toLocaleLowerCase(`en-US`)} in ${D.serviceName}.`,ref:E,relationships:(0,G.jsx)(gn,{presentation:D}),service:D.service,tabIndex:-1,title:D.title,tone:D.tone,verdict:D.verdict})})},Sn=({entityId:e,workspaceId:t})=>{let r=i(),a=h(),s=o(),c=n(),l=r.controller.state._tag===`ready`?r.controller.state.portfolio.generatedAt:`pending`,u=m(a.state),d=on(t,e,l,u,a.invalidateSession),f=Lt(e,u,a.invalidateSession,d.retry),p=a.state._tag===`authenticated`&&a.state.session.permission===`workspace-owner`,g=(d.state._tag===`ready`||d.state._tag===`stale`)&&d.state.inspection.entity.projection.details._tag===`pull-request`?{baseRevision:d.state.inspection.entity.projection.details.baseRevision??null,headRevision:d.state.inspection.entity.projection.details.headRevision}:null,_=Qt(e,g?.baseRevision??null,g?.headRevision??null,u,p,a.invalidateSession),v=ye(s.state,t,e),y=ve(v.origin),b=d.state._tag===`ready`||d.state._tag===`stale`?d.state.inspection.entity:{canonicalReleaseId:null,releaseIds:[],releaseMembershipsTruncated:!1},x=new Set(r.controller.state._tag===`ready`?r.controller.state.portfolio.releases.map(({id:e})=>e):[]),S=xe(v.origin,t,s,b,x);return(0,G.jsx)(xn,{clockifyActionCanApprove:a.state._tag===`authenticated`&&(a.state.session.permission===`workspace-owner`||a.state.session.permission===`workspace-approver`),clockifyActionCanCorrect:a.state._tag===`authenticated`&&a.state.session.permission===`workspace-owner`,clockifyActionState:f.state,clockifyActionSubmit:f.submit,onAskAgent:()=>c(S,{state:s.state}),onSessionExpired:a.invalidateSession,originHref:y,originLabel:cn(y,t),originState:v.origin.state,retry:d.retry,reviewCanEnqueue:p,reviewPublication:_.publication,reviewPublicationCancel:_.cancelPublication,reviewLoadEarlier:_.loadEarlier,reviewPublicationPreview:_.previewPublication,reviewRetry:_.retry,reviewSuggestionPublish:_.publishSuggestion,reviewStart:_.start,reviewState:_.state,state:d.state,sessionKey:u,workspaceId:t})},Cn=()=>{let e=i(),t=be(r().entityId);return t===null?(0,G.jsx)(ln,{action:(0,G.jsx)(a,{to:_e(e.workspaceId),children:`Back to items`}),description:`The object address is not a canonical entity identifier.`,title:`Object not found`}):(0,G.jsx)(Sn,{entityId:t,workspaceId:e.workspaceId})};export{Cn as WorkspaceEntityRoute,xn as WorkspaceEntityView};
3
- //# sourceMappingURL=WorkspaceEntityRoute-Bxxnc8us.js.map