@knpkv/control-center 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +18 -8
  2. package/dist/client/.vite/manifest.json +214 -182
  3. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
  5. package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
  6. package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
  7. package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
  8. package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
  9. package/dist/client/assets/{AtlassianOAuthCallbackPage-BPoF6oKf.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
  10. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js → AuthorizedSharePage-CVBJ1NTm.js} +2 -2
  11. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js.map → AuthorizedSharePage-CVBJ1NTm.js.map} +1 -1
  12. package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
  13. package/dist/client/assets/{BrowserCrypto-BMbjhcvP.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
  14. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
  15. package/dist/client/assets/{BrowserSessionHydrator-BC1ymLkL.js.map → BrowserSessionHydrator-CpZnNm4X.js.map} +1 -1
  16. package/dist/client/assets/{CommandSearch-WwAVDrD9.js → CommandSearch-DUeRRbV2.js} +2 -2
  17. package/dist/client/assets/{CommandSearch-WwAVDrD9.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
  18. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js → ItemsPage-BF2ZkSzh.js} +2 -2
  19. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-DA6cmyqF.js → PairPage-CkaZltHd.js} +2 -2
  21. package/dist/client/assets/{PairPage-DA6cmyqF.js.map → PairPage-CkaZltHd.js.map} +1 -1
  22. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
  23. package/dist/client/assets/{PortfolioOverview-CEI4gpXi.js.map → PortfolioOverview-CEUHJmGC.js.map} +1 -1
  24. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js} +3 -3
  25. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js.map → PullRequestReviewPanel-D1IpvHe2.js.map} +1 -1
  26. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js → ReleaseRoute-BuQybrsg.js} +2 -2
  27. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
  28. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
  29. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
  30. package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
  31. package/dist/client/assets/{ServicesPage-_B89DAvG.js.map → ServicesPage-hw5Ee69-.js.map} +1 -1
  32. package/dist/client/assets/{TimelinePage-DvpgD8AY.js → TimelinePage-Cj3V98uI.js} +2 -2
  33. package/dist/client/assets/{TimelinePage-DvpgD8AY.js.map → TimelinePage-Cj3V98uI.js.map} +1 -1
  34. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js → WorkspaceEntityLink-C_rc8lxi.js} +2 -2
  35. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
  36. package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
  37. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
  38. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
  39. package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
  40. package/dist/client/assets/{WorkspaceHomeLink-CkJfzO25.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
  41. package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js +3 -0
  42. package/dist/client/assets/{WorkspacePullRequestDetails-HwDgp12e.js.map → WorkspacePullRequestDetails-CizqydjN.js.map} +1 -1
  43. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
  44. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
  45. package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
  46. package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
  47. package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
  48. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
  49. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
  50. package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
  51. package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
  52. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
  53. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
  54. package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
  55. package/dist/client/assets/{authenticatedMutationClient-DYaieXUe.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
  56. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js → authorizedShareTransport-CnclcYai.js} +2 -2
  57. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
  58. package/dist/client/assets/client-Dq_XQE_l.js +5 -0
  59. package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
  60. package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
  61. package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
  62. package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
  63. package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
  64. package/dist/client/assets/{index-C7_FDTU7.js → index-zVjlBm9l.js} +3 -3
  65. package/dist/client/assets/{index-C7_FDTU7.js.map → index-zVjlBm9l.js.map} +1 -1
  66. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
  67. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
  68. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js → presentPortfolio-DLEq-vEz.js} +2 -2
  69. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js.map → presentPortfolio-DLEq-vEz.js.map} +1 -1
  70. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
  71. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
  72. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
  73. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
  74. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js → pullRequestReviewThreadReplay-CXHspFTr.js} +2 -2
  75. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js.map → pullRequestReviewThreadReplay-CXHspFTr.js.map} +1 -1
  76. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
  77. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
  78. package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
  79. package/dist/client/assets/{releaseRoutes-t9uCfs5T.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
  80. package/dist/client/assets/{serviceOnboarding-DLINCon7.js → serviceOnboarding-D0FmodRi.js} +2 -2
  81. package/dist/client/assets/{serviceOnboarding-DLINCon7.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
  82. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
  83. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
  84. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
  85. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
  86. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
  87. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
  88. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js → workspaceScrollCapture-BYNfR2wo.js} +2 -2
  89. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js.map → workspaceScrollCapture-BYNfR2wo.js.map} +1 -1
  90. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js → workspaceSettingsTransport-Br4lBmvS.js} +2 -2
  91. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
  92. package/dist/client/build-graph.json +98 -0
  93. package/dist/client/index.html +1 -1
  94. package/dist/server/api/agent.d.ts +12 -0
  95. package/dist/server/api/agent.d.ts.map +1 -1
  96. package/dist/server/api/deliveryGraph.d.ts +20 -0
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -1
  98. package/dist/server/api/index.d.ts +1 -1
  99. package/dist/server/api/index.d.ts.map +1 -1
  100. package/dist/server/api/index.js +3 -3
  101. package/dist/server/api/session.d.ts +23 -1
  102. package/dist/server/api/session.d.ts.map +1 -1
  103. package/dist/server/api/shares.d.ts +2 -0
  104. package/dist/server/api/shares.d.ts.map +1 -1
  105. package/dist/server/assets/{BindConfig-Bj282xDC.js → BindConfig-DAASchDn.js} +315 -36
  106. package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
  107. package/dist/server/assets/{agent-ZvwskOQu.js → agent-xQhAQXly.js} +26 -6
  108. package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
  109. package/dist/server/assets/{controlCenterApi-5j3gOXgE.js → controlCenterApi-DNXK7MT1.js} +4 -3
  110. package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
  111. package/dist/server/assets/{manualPluginSynchronization-CzIhZ_Dw.js → manualPluginSynchronization-DFIeUHP9.js} +4 -3
  112. package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
  113. package/dist/server/assets/{readiness-BtntBhDj.js → readiness-31Mqc-9H.js} +2 -2
  114. package/dist/server/assets/{readiness-BtntBhDj.js.map → readiness-31Mqc-9H.js.map} +1 -1
  115. package/dist/server/assets/{relationshipInferenceMaterialization-CR6xyMNL.js → relationshipInferenceMaterialization-Dyix96px.js} +41 -14
  116. package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
  117. package/dist/server/assets/{workspaceSettings-C2Zsk6RI.js → workspaceSettings-sv8h_h2P.js} +4 -1
  118. package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
  119. package/dist/server/build-graph.json +28 -1
  120. package/dist/server/domain/confluenceTasks.d.ts +27 -0
  121. package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
  122. package/dist/server/domain/deliveryGraph.d.ts +2 -0
  123. package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
  124. package/dist/server/domain/governedAction/bindings.d.ts +2 -0
  125. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  126. package/dist/server/domain/governedAction/model.d.ts +6 -0
  127. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  128. package/dist/server/domain/index.js +2 -2
  129. package/dist/server/domain/normalizedPage.d.ts +1 -0
  130. package/dist/server/domain/normalizedPage.d.ts.map +1 -1
  131. package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
  132. package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
  133. package/dist/server/index.js +5 -5
  134. package/dist/server/server/api/Handlers.d.ts +1 -1
  135. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  136. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
  137. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
  138. package/dist/server/server/application/pipelineExecutionProjection.d.ts +1 -0
  139. package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
  140. package/dist/server/server/application/portfolioSnapshots.d.ts +4 -0
  141. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  142. package/dist/server/server/application/releasePublicationSubmissions.d.ts +32 -1
  143. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -1
  144. package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
  145. package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
  146. package/dist/server/server/cli.js +3 -3
  147. package/dist/server/server/governance/governedActionDigests.d.ts +3 -0
  148. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  149. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +1 -0
  150. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  151. package/dist/server/server/index.js +2 -2
  152. package/dist/server/server/persistence/Persistence.d.ts +10 -0
  153. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  154. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
  155. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
  156. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
  157. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +10 -0
  158. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
  159. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +2 -0
  160. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
  161. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +6 -0
  162. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
  163. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +1 -0
  164. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
  165. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +2 -0
  166. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
  167. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +6 -0
  168. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
  169. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +4 -0
  170. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  171. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +2 -0
  172. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  173. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +4 -0
  174. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  175. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +4 -0
  176. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  177. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +1 -0
  178. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  179. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +2 -0
  180. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  181. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +2 -0
  182. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  183. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +4 -0
  184. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  185. package/package.json +3 -3
  186. package/dist/client/assets/AgentPage-C3LThgPZ.js +0 -3
  187. package/dist/client/assets/AgentPage-C3LThgPZ.js.map +0 -1
  188. package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
  189. package/dist/client/assets/AtlassianOAuthCallbackPage-BPoF6oKf.js +0 -2
  190. package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +0 -2
  191. package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +0 -2
  192. package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +0 -2
  193. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +0 -2
  194. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js.map +0 -1
  195. package/dist/client/assets/ServicesPage-_B89DAvG.js +0 -2
  196. package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
  197. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +0 -3
  198. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +0 -1
  199. package/dist/client/assets/WorkspaceHomeLink-CkJfzO25.js +0 -2
  200. package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +0 -3
  201. package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
  202. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js +0 -2
  203. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js.map +0 -1
  204. package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
  205. package/dist/client/assets/agent-api-CeONl_8w.js +0 -19
  206. package/dist/client/assets/agent-api-CeONl_8w.js.map +0 -1
  207. package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +0 -2
  208. package/dist/client/assets/client-DKS82kT_.js +0 -5
  209. package/dist/client/assets/client-DKS82kT_.js.map +0 -1
  210. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +0 -2
  211. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js.map +0 -1
  212. package/dist/client/assets/releaseRoutes-t9uCfs5T.js +0 -2
  213. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +0 -2
  214. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +0 -1
  215. package/dist/server/assets/BindConfig-Bj282xDC.js.map +0 -1
  216. package/dist/server/assets/agent-ZvwskOQu.js.map +0 -1
  217. package/dist/server/assets/controlCenterApi-5j3gOXgE.js.map +0 -1
  218. package/dist/server/assets/manualPluginSynchronization-CzIhZ_Dw.js.map +0 -1
  219. package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +0 -1
  220. package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import{Cn as e,En as t,Hr as n,Ir as r,Mn as i,Nn as a,Ur as o,ir as s,rr as c}from"./agent-api-Dl9TuGOJ.js";var l=new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),u=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(` `),d=e=>e==null?null:{dateTime:r(e),label:l.format(n(e))},f=(e,t,n=!1)=>{if(e==null||t==null)return n?`In progress`:`Not available`;let r=Math.max(0,Math.round((o(t)-o(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`},p=e=>{switch(e){case`succeeded`:return`positive`;case`failed`:return`critical`;case`running`:return`progress`;case`stopped`:return`caution`;case`queued`:return`neutral`}},m=e=>({id:e.name,name:e.name,reason:`${String(e.actionCount)} action${e.actionCount===1?``:`s`}${e.actionsTruncated?` · detail is partial`:``}`,state:u(e.status),tone:p(e.status)}),h=e=>(e??[]).map(m),g=e=>{let t=e.split(`/`).filter(e=>e.length>0).at(-1)??e;return t.includes(`@`)?t:u(t)||e},_=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[]}))},v=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`}`},y=(e,t)=>{let n=_(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?[]:[g(e)]))],s=[...new Set(a.flatMap(({category:e,updatedBy:t})=>e?.toLocaleLowerCase(`en-US`)===`approval`&&t!==null?[g(t)]:[]))];return{actionCountLabel:i(e.actionCount??a.length,e.actionsTruncated??!1),actions:a.map(e=>({actor:e.updatedBy===null?null:g(e.updatedBy),artifacts:e.artifacts.map(e=>({accessLabel:`Proxy required`,direction:e.direction,name:e.name})),duration:f(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:u(e.status),summary:e.externalExecutionSummary,tone:p(e.status)})),actionsTruncated:e.actionsTruncated??!1,approvers:s,duration:f(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:d(e.createdAt),name:e.name,revision:e.revisionId??`Revision unavailable`,summary:e.revisionSummary})),stages:h(e.stages),startedAt:d(e.startedAt),status:u(e.status),statusSummary:e.statusSummary??null,targetEnvironment:v(e),triggerDetail:e.triggerDetail===null||e.triggerDetail===void 0?`Trigger identity unavailable`:g(e.triggerDetail),triggerRevision:e.triggerRevision,triggerType:e.triggerType===null||e.triggerType===void 0?`Unknown trigger`:u(e.triggerType),updatedAt:d(e.updatedAt)}};a({checked:e,label:i,lineIndex:t.check(s(0)),lineNumber:t.check(c(0))});var b=/^(?:\s*(?:(?:[-*+]|\d+\.)\s+)?)(?:\[( |x|X)?\]|\\\[( |x|X)?\\\])\s+(.+?)\s*$/u,x=/^\s*(`{3,}|~{3,})/u,S=/^\s*(`{3,}|~{3,})\s*$/u,C=e=>{let t=[],n=null;for(let[r,i]of e.split(`
2
+ `).entries()){let e=(n===null?x:S).exec(i);if(e?.[1]!==void 0){let t=e[1],r=t[0];(r==="`"||r===`~`)&&(n===null?n={character:r,length:t.length}:n.character===r&&t.length>=n.length&&(n=null));continue}if(n!==null)continue;let a=b.exec(i);if(a?.[3]===void 0)continue;let o=a[1]??a[2];t.push({checked:o?.toLocaleLowerCase(`en-US`)===`x`,label:a[3],lineIndex:r,lineNumber:r+1})}return t},w=(e,t,n)=>{let r=e.split(`
3
+ `),i=r[t];return i===void 0||!C(i).some(e=>e.lineIndex===0)?null:(r[t]=i.replace(/(\\?)\[(?: |x|X)?(\\?)\]/u,(e,t,r)=>`${String(t)}[${n?`x`:` `}${String(r)}]`),r.join(`
4
+ `))},T=e=>{let t=C(e),n=t.filter(({checked:e})=>e).length;return{completed:n,outstanding:t.length-n,tasks:t,total:t.length}};export{y as i,w as n,h as r,T as t};
5
+ //# sourceMappingURL=confluenceTasks-DtKq8_eU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confluenceTasks-DtKq8_eU.js","names":[],"sources":["../../../src/client/entities/presentWorkspacePipelineExecution.ts","../../../src/domain/confluenceTasks.ts"],"sourcesContent":["import type { RlyStage, RlyVerdictTone } from \"@knpkv/rly/patterns\"\nimport * as DateTime from \"effect/DateTime\"\n\nimport type { WorkspaceEntityInspection } from \"../../api/deliveryGraph.js\"\nimport type { DeliveryEntityDetails } from \"../../domain/deliveryGraph.js\"\n\ntype PipelineDetails = Extract<DeliveryEntityDetails, { readonly _tag: \"pipeline-execution\" }>\ntype PipelineStatus = PipelineDetails[\"status\"]\n\nexport interface WorkspacePipelineTimestamp {\n readonly dateTime: string\n readonly label: string\n}\n\nexport interface WorkspacePipelineActionPresentation {\n readonly actor: string | null\n readonly artifacts: ReadonlyArray<{\n readonly accessLabel: string\n readonly direction: \"input\" | \"output\"\n readonly name: string\n }>\n readonly duration: string\n readonly error: string | null\n readonly id: string\n readonly name: string\n readonly provider: string\n readonly region: string | null\n readonly stageName: string\n readonly status: string\n readonly summary: string | null\n readonly tone: RlyVerdictTone\n}\n\nexport interface WorkspacePipelineExecutionPresentation {\n readonly actionCountLabel: string\n readonly actions: ReadonlyArray<WorkspacePipelineActionPresentation>\n readonly actionsTruncated: boolean\n readonly approvers: ReadonlyArray<string>\n readonly duration: string\n readonly executionId: string\n readonly executionMode: string\n readonly operators: ReadonlyArray<string>\n readonly pagesRead: number\n readonly pipelineName: string\n readonly pipelineVersion: string\n readonly pullRequestCountLabel: string\n readonly releaseCountLabel: string\n readonly runbookCountLabel: string\n readonly sourceArtifacts: ReadonlyArray<{\n readonly accessLabel: string\n readonly createdAt: WorkspacePipelineTimestamp | null\n readonly name: string\n readonly revision: string\n readonly summary: string | null\n }>\n readonly stages: ReadonlyArray<RlyStage>\n readonly startedAt: WorkspacePipelineTimestamp | null\n readonly status: string\n readonly statusSummary: string | null\n readonly targetEnvironment: string\n readonly triggerDetail: string\n readonly triggerRevision: string\n readonly triggerType: string\n readonly updatedAt: WorkspacePipelineTimestamp | null\n}\n\nconst timestampFormatter = new Intl.DateTimeFormat(\"en-GB\", {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n timeZone: \"UTC\"\n})\n\nconst titleCase = (value: string): string =>\n value\n .replace(/([a-z])([A-Z])/gu, \"$1 $2\")\n .split(/[._\\-\\s]+/u)\n .filter((part) => part.length > 0)\n .map((part) => `${part.charAt(0).toLocaleUpperCase(\"en-US\")}${part.slice(1)}`)\n .join(\" \")\n\nconst timestampFor = (value: DateTime.DateTime | null | undefined): WorkspacePipelineTimestamp | null =>\n value === null || value === undefined\n ? null\n : {\n dateTime: DateTime.formatIso(value),\n label: timestampFormatter.format(DateTime.toDateUtc(value))\n }\n\nconst durationBetween = (\n startedAt: DateTime.DateTime | null | undefined,\n updatedAt: DateTime.DateTime | null | undefined,\n running = false\n): string => {\n if (startedAt === null || startedAt === undefined || updatedAt === null || updatedAt === undefined) {\n return running ? \"In progress\" : \"Not available\"\n }\n const seconds = Math.max(\n 0,\n Math.round((DateTime.toEpochMillis(updatedAt) - DateTime.toEpochMillis(startedAt)) / 1_000)\n )\n if (seconds < 60) return `${String(seconds)}s`\n const minutes = Math.floor(seconds / 60)\n const remainder = seconds % 60\n return remainder === 0 ? `${String(minutes)}m` : `${String(minutes)}m ${String(remainder)}s`\n}\n\nconst toneFor = (status: PipelineStatus): RlyVerdictTone => {\n switch (status) {\n case \"succeeded\":\n return \"positive\"\n case \"failed\":\n return \"critical\"\n case \"running\":\n return \"progress\"\n case \"stopped\":\n return \"caution\"\n case \"queued\":\n return \"neutral\"\n }\n}\n\nconst stageFor = (stage: NonNullable<PipelineDetails[\"stages\"]>[number]): RlyStage => ({\n id: stage.name,\n name: stage.name,\n reason: `${String(stage.actionCount)} action${stage.actionCount === 1 ? \"\" : \"s\"}${\n stage.actionsTruncated ? \" · detail is partial\" : \"\"\n }`,\n state: titleCase(stage.status),\n tone: toneFor(stage.status)\n})\n\n/** Present the provider-observed stages for one immutable pipeline execution. */\nexport const presentPipelineExecutionStages = (\n stages: PipelineDetails[\"stages\"]\n): ReadonlyArray<RlyStage> => (stages ?? []).map(stageFor)\n\nconst identityLabel = (identity: string): string => {\n const leaf = identity.split(\"/\").filter((part) => part.length > 0).at(-1) ?? identity\n return leaf.includes(\"@\") ? leaf : titleCase(leaf) || identity\n}\n\nconst currentlyRelatedEntityIds = (inspection: WorkspaceEntityInspection): ReadonlySet<string> => {\n const entityIdByNode = new Map(\n inspection.graph.nodes.flatMap(({ nodeId, resolution }): ReadonlyArray<readonly [string, string]> =>\n resolution._tag === \"resolved\" && resolution.target._tag === \"entity\"\n ? [[nodeId, resolution.target.entityId]]\n : []\n )\n )\n const subjectNodeIds = new Set(\n inspection.graph.nodes.flatMap(({ nodeId, resolution }) =>\n resolution._tag === \"resolved\" && resolution.target._tag === \"entity\" &&\n resolution.target.entityId === inspection.entity.projection.entityId\n ? [nodeId]\n : []\n )\n )\n return new Set(inspection.graph.relationships.flatMap((relationship) => {\n if (\n relationship.lifecycle._tag === \"missing\" ||\n relationship.lifecycle._tag === \"rejected\" ||\n relationship.lifecycle._tag === \"superseded\"\n ) return []\n if (subjectNodeIds.has(relationship.sourceNodeId)) {\n const entityId = entityIdByNode.get(relationship.targetNodeId)\n return entityId === undefined ? [] : [entityId]\n }\n if (subjectNodeIds.has(relationship.targetNodeId)) {\n const entityId = entityIdByNode.get(relationship.sourceNodeId)\n return entityId === undefined ? [] : [entityId]\n }\n return []\n }))\n}\n\nconst targetEnvironment = (details: PipelineDetails): string => {\n const deploymentAction = details.actions?.find(({ category }) => category?.toLocaleLowerCase(\"en-US\") === \"deploy\")\n return deploymentAction === undefined\n ? \"Not linked\"\n : `${deploymentAction.stageName} · ${deploymentAction.region ?? \"region unknown\"}`\n}\n\n/** Present one immutable CodePipeline execution as a compact operator flight recorder. */\nexport const presentWorkspacePipelineExecution = (\n details: PipelineDetails,\n inspection: WorkspaceEntityInspection\n): WorkspacePipelineExecutionPresentation => {\n const related = currentlyRelatedEntityIds(inspection)\n const relatedCount = (kind: \"page\" | \"pull-request\"): number =>\n inspection.graph.relatedEntityProjections.filter(({ projection }) =>\n projection.entityState === \"present\" && projection.entityType === kind && related.has(projection.entityId)\n ).length\n const lowerBound = (count: number, truncated: boolean): string => `${String(count)}${truncated ? \"+\" : \"\"}`\n const actions = details.actions ?? []\n const actors = [...new Set(actions.flatMap(({ updatedBy }) => updatedBy === null ? [] : [identityLabel(updatedBy)]))]\n const approvers = [\n ...new Set(\n actions.flatMap(({ category, updatedBy }) =>\n category?.toLocaleLowerCase(\"en-US\") === \"approval\" && updatedBy !== null ? [identityLabel(updatedBy)] : []\n )\n )\n ]\n return {\n actionCountLabel: lowerBound(details.actionCount ?? actions.length, details.actionsTruncated ?? false),\n actions: actions.map((action) => ({\n actor: action.updatedBy === null ? null : identityLabel(action.updatedBy),\n artifacts: action.artifacts.map((artifact) => ({\n accessLabel: \"Proxy required\",\n direction: artifact.direction,\n name: artifact.name\n })),\n duration: durationBetween(action.startedAt, action.updatedAt, action.status === \"running\"),\n error: action.errorMessage ?? action.errorCode,\n id: action.actionExecutionId,\n name: action.actionName,\n provider: [action.owner, action.provider, action.version].filter((value) => value !== null).join(\" · \") ||\n \"Provider unavailable\",\n region: action.region,\n stageName: action.stageName,\n status: titleCase(action.status),\n summary: action.externalExecutionSummary,\n tone: toneFor(action.status)\n })),\n actionsTruncated: details.actionsTruncated ?? false,\n approvers,\n duration: durationBetween(details.startedAt, details.updatedAt, details.status === \"running\"),\n executionId: details.executionId,\n executionMode:\n [details.executionMode, details.executionType].filter((value) => value !== null && value !== undefined).join(\n \" · \"\n ) || \"Not synchronized\",\n operators: actors.filter((actor) => !approvers.includes(actor)),\n pagesRead: details.actionPagesRead ?? 0,\n pipelineName: details.pipelineName,\n pipelineVersion: details.pipelineVersion === null || details.pipelineVersion === undefined\n ? \"Unknown\"\n : `v${String(details.pipelineVersion)}`,\n pullRequestCountLabel: lowerBound(relatedCount(\"pull-request\"), inspection.graph.truncated),\n releaseCountLabel: lowerBound(inspection.entity.releaseIds.length, inspection.entity.releaseMembershipsTruncated),\n runbookCountLabel: lowerBound(relatedCount(\"page\"), inspection.graph.truncated),\n sourceArtifacts: (details.sourceArtifacts ?? []).map((artifact) => ({\n accessLabel: \"Proxy required\",\n createdAt: timestampFor(artifact.createdAt),\n name: artifact.name,\n revision: artifact.revisionId ?? \"Revision unavailable\",\n summary: artifact.revisionSummary\n })),\n stages: presentPipelineExecutionStages(details.stages),\n startedAt: timestampFor(details.startedAt),\n status: titleCase(details.status),\n statusSummary: details.statusSummary ?? null,\n targetEnvironment: targetEnvironment(details),\n triggerDetail: details.triggerDetail === null || details.triggerDetail === undefined\n ? \"Trigger identity unavailable\"\n : identityLabel(details.triggerDetail),\n triggerRevision: details.triggerRevision,\n triggerType: details.triggerType === null || details.triggerType === undefined\n ? \"Unknown trigger\"\n : titleCase(details.triggerType),\n updatedAt: timestampFor(details.updatedAt)\n }\n}\n","import * as Schema from \"effect/Schema\"\n\n/** One Markdown checkbox that participates in release readiness. */\nexport const ConfluenceTask = Schema.Struct({\n checked: Schema.Boolean,\n label: Schema.String,\n lineIndex: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n lineNumber: Schema.Int.check(Schema.isGreaterThan(0))\n})\n\n/** Decoded Markdown checkbox participating in release readiness. */\nexport type ConfluenceTask = typeof ConfluenceTask.Type\n\nconst taskLine = /^(?:\\s*(?:(?:[-*+]|\\d+\\.)\\s+)?)(?:\\[( |x|X)?\\]|\\\\\\[( |x|X)?\\\\\\])\\s+(.+?)\\s*$/u\nconst openingFenceLine = /^\\s*(`{3,}|~{3,})/u\nconst closingFenceLine = /^\\s*(`{3,}|~{3,})\\s*$/u\n\n/** Read task-list checkboxes while ignoring examples inside fenced code blocks. */\nexport const confluenceTasks = (markdown: string): ReadonlyArray<ConfluenceTask> => {\n const tasks: Array<ConfluenceTask> = []\n let fence: { readonly character: \"`\" | \"~\"; readonly length: number } | null = null\n for (const [lineIndex, line] of markdown.split(\"\\n\").entries()) {\n const activeFencePattern: RegExp = fence === null ? openingFenceLine : closingFenceLine\n const fenceMatch: RegExpExecArray | null = activeFencePattern.exec(line)\n if (fenceMatch?.[1] !== undefined) {\n const marker: string = fenceMatch[1]\n const character: string | undefined = marker[0]\n if (character === \"`\" || character === \"~\") {\n if (fence === null) fence = { character, length: marker.length }\n else if (fence.character === character && marker.length >= fence.length) fence = null\n }\n continue\n }\n if (fence !== null) continue\n const match = taskLine.exec(line)\n if (match?.[3] === undefined) continue\n const marker = match[1] ?? match[2]\n tasks.push({\n checked: marker?.toLocaleLowerCase(\"en-US\") === \"x\",\n label: match[3],\n lineIndex,\n lineNumber: lineIndex + 1\n })\n }\n return tasks\n}\n\n/** Change one already-parsed task without rewriting any surrounding Markdown. */\nexport const setConfluenceTaskChecked = (\n markdown: string,\n lineIndex: number,\n checked: boolean\n): string | null => {\n const lines = markdown.split(\"\\n\")\n const line = lines[lineIndex]\n if (line === undefined || !confluenceTasks(line).some((task) => task.lineIndex === 0)) return null\n lines[lineIndex] = line.replace(\n /(\\\\?)\\[(?: |x|X)?(\\\\?)\\]/u,\n (_marker, openingEscape, closingEscape) =>\n `${String(openingEscape)}[${checked ? \"x\" : \" \"}${String(closingEscape)}]`\n )\n return lines.join(\"\\n\")\n}\n\n/** Summarize task completion for UI counts and release gates. */\nexport const confluenceTaskSummary = (markdown: string) => {\n const tasks = confluenceTasks(markdown)\n const completed = tasks.filter(({ checked }) => checked).length\n return { completed, outstanding: tasks.length - completed, tasks, total: tasks.length }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{Kn as e,_i as t,ai as n,nn as r,pi as i}from"./agent-api-Dl9TuGOJ.js";import{a,t as o}from"./client-Dq_XQE_l.js";import{n as s,t as c}from"./BrowserCrypto-3BoTVFdl.js";import{t as l}from"./authenticatedMutationClient-DdowMjyo.js";var u={startAtlassianOAuthGrant:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.createAtlassianOAuthGrant({payload:{providers:e,...o===void 0?{}:{configuration:o}}})}).pipe(i(a)),{signal:r}),exchangeAtlassianOAuthGrant:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.exchangeAtlassianOAuthGrant({params:{grantId:e},payload:{code:r}})}).pipe(i(a)),{signal:o}),completeAtlassianOAuthGrant:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.completeAtlassianOAuthGrant({params:{grantId:e},payload:{cloudId:r}})}).pipe(i(a)),{signal:o}),discoverAtlassianProfiles:e=>t(n(function*(){return yield*(yield*o()).plugins.discoverAtlassianProfiles()}).pipe(i(a)),{signal:e}),discoverAwsProfiles:e=>t(n(function*(){return yield*(yield*o()).plugins.discoverAwsProfiles()}).pipe(i(a)),{signal:e}),discoverAwsResources:(e,r)=>t(n(function*(){return yield*(yield*l).plugins.discoverAwsResources({payload:e})}).pipe(i(a)),{signal:r}),overview:e=>t(n(function*(){return yield*(yield*o()).plugins.overview()}).pipe(i(a)),{signal:e}),patchAccount:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.patchProviderAccount({params:{providerAccountId:e},payload:r})}).pipe(i(a)),{signal:o}),create:(e,r)=>t(n(function*(){return yield*(yield*l).plugins.createConnection({payload:e})}).pipe(i(a)),{signal:r}),createBatch:(e,r)=>t(n(function*(){return yield*(yield*l).plugins.createConnections({payload:e})}).pipe(i(a)),{signal:r}),makeConnectionId:()=>t(n(function*(){let t=yield*s;return yield*e(r)(yield*t.randomUUIDv7)}).pipe(i(c))),setEnabled:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.setConnectionEnabled({params:{pluginConnectionId:e},payload:{isEnabled:r}})}).pipe(i(a)),{signal:o}),test:(e,r)=>t(n(function*(){return yield*(yield*l).plugins.testConnection({params:{pluginConnectionId:e}})}).pipe(i(a)),{signal:r}),synchronization:(e,r)=>t(n(function*(){return yield*(yield*o()).plugins.synchronization({params:{pluginConnectionId:e}})}).pipe(i(a)),{signal:r}),synchronize:(e,r)=>t(n(function*(){return yield*(yield*l).plugins.synchronizeConnection({params:{pluginConnectionId:e}})}).pipe(i(a)),{signal:r}),administration:(e,r)=>t(n(function*(){return yield*(yield*o()).plugins.administration({params:{pluginConnectionId:e}})}).pipe(i(a)),{signal:r}),reauthorize:(e,r,o,s)=>t(n(function*(){return yield*(yield*l).plugins.reauthorizeConnection({params:{pluginConnectionId:e},payload:{expectedRevision:r,credentials:o}})}).pipe(i(a)),{signal:s}),revoke:(e,r,o)=>t(n(function*(){return yield*(yield*l).plugins.revokeConnection({params:{pluginConnectionId:e},payload:{expectedRevision:r}})}).pipe(i(a)),{signal:o})};export{u as t};
2
+ //# sourceMappingURL=connectionTestTransport-CPK98z7H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionTestTransport-CPK98z7H.js","names":[],"sources":["../../../src/client/services/connectionTestTransport.ts"],"sourcesContent":["import * as BrowserCrypto from \"@effect/platform-browser/BrowserCrypto\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type {\n AtlassianOAuthClientConfiguration,\n AtlassianOAuthGrantExchangeResponse,\n AtlassianOAuthGrantId,\n AtlassianOAuthGrantStartResponse,\n AtlassianOAuthProviderIntent,\n AtlassianProfileDiscoveryResponse,\n AwsProfileDiscoveryResponse,\n AwsResourceDiscoveryRequest,\n AwsResourceDiscoveryResponse,\n CreatePluginConnectionRequest,\n CreatePluginConnectionResponse,\n CreatePluginConnectionsRequest,\n CreatePluginConnectionsResponse,\n PatchProviderAccountRequest,\n PluginConnectionAdministration,\n PluginConnectionSummary,\n PluginConnectionTestResult,\n PluginCredentialReplacement,\n PluginOverviewResponse,\n PluginSynchronizationState\n} from \"../../api/index.js\"\nimport type { DiscoveredAtlassianProfile, ProviderAccountSummary } from \"../../api/plugins.js\"\nimport { PluginConnectionId, type ProviderAccountId } from \"../../domain/identifiers.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Browser boundary for connection administration reads and live tests. */\nexport interface ConnectionTestTransport {\n /** Optional only for injected legacy/test transports; the browser transport always discovers profiles. */\n readonly discoverAwsProfiles?: (signal: AbortSignal) => Promise<AwsProfileDiscoveryResponse>\n readonly discoverAwsResources?: (\n request: AwsResourceDiscoveryRequest,\n signal: AbortSignal\n ) => Promise<AwsResourceDiscoveryResponse>\n readonly discoverAtlassianProfiles?: (signal: AbortSignal) => Promise<AtlassianProfileDiscoveryResponse>\n readonly startAtlassianOAuthGrant?: (\n providers: AtlassianOAuthProviderIntent,\n signal: AbortSignal,\n configuration?: AtlassianOAuthClientConfiguration\n ) => Promise<AtlassianOAuthGrantStartResponse>\n readonly exchangeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n code: string,\n signal: AbortSignal\n ) => Promise<AtlassianOAuthGrantExchangeResponse>\n readonly completeAtlassianOAuthGrant?: (\n grantId: AtlassianOAuthGrantId,\n cloudId: string,\n signal: AbortSignal\n ) => Promise<DiscoveredAtlassianProfile>\n readonly overview: (signal: AbortSignal) => Promise<PluginOverviewResponse>\n readonly patchAccount?: (\n providerAccountId: ProviderAccountId,\n patch: PatchProviderAccountRequest,\n signal: AbortSignal\n ) => Promise<ProviderAccountSummary>\n readonly create: (\n request: CreatePluginConnectionRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionResponse>\n readonly createBatch?: (\n request: CreatePluginConnectionsRequest,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionsResponse>\n readonly makeConnectionId: () => Promise<PluginConnectionId>\n readonly setEnabled: (\n pluginConnectionId: PluginConnectionId,\n isEnabled: boolean,\n signal: AbortSignal\n ) => Promise<PluginConnectionSummary>\n readonly test: (pluginConnectionId: PluginConnectionId, signal: AbortSignal) => Promise<PluginConnectionTestResult>\n readonly synchronization?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n readonly synchronize?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginSynchronizationState>\n readonly administration?: (\n pluginConnectionId: PluginConnectionId,\n signal: AbortSignal\n ) => Promise<PluginConnectionAdministration>\n readonly reauthorize?: (\n pluginConnectionId: PluginConnectionId,\n expectedRevision: number,\n credentials: ReadonlyArray<PluginCredentialReplacement>,\n signal: AbortSignal\n ) => Promise<CreatePluginConnectionResponse>\n readonly revoke?: (\n pluginConnectionId: PluginConnectionId,\n expectedRevision: number,\n signal: AbortSignal\n ) => Promise<PluginConnectionSummary>\n}\n\n/** Generated-client transport carrying cookies and the current tab's mutation proof. */\nexport const browserConnectionTestTransport: ConnectionTestTransport = {\n startAtlassianOAuthGrant: (providers, signal, configuration) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createAtlassianOAuthGrant({\n payload: { providers, ...(configuration === undefined ? {} : { configuration }) }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n exchangeAtlassianOAuthGrant: (grantId, code, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.exchangeAtlassianOAuthGrant({\n params: { grantId },\n payload: { code }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n completeAtlassianOAuthGrant: (grantId, cloudId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.completeAtlassianOAuthGrant({\n params: { grantId },\n payload: { cloudId }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAtlassianProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAtlassianProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsProfiles: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.discoverAwsProfiles()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n discoverAwsResources: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.discoverAwsResources({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n overview: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.overview()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n patchAccount: (providerAccountId, patch, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.patchProviderAccount({\n params: { providerAccountId },\n payload: patch\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n create: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnection({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n createBatch: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.createConnections({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeConnectionId: () =>\n Effect.runPromise(\n Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n return yield* Schema.decodeUnknownEffect(PluginConnectionId)(yield* cryptoService.randomUUIDv7)\n }).pipe(Effect.provide(BrowserCrypto.layer))\n ),\n setEnabled: (pluginConnectionId, isEnabled, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.setConnectionEnabled({\n params: { pluginConnectionId },\n payload: { isEnabled }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n test: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.testConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronization: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.synchronization({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n synchronize: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.synchronizeConnection({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n administration: (pluginConnectionId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.plugins.administration({ params: { pluginConnectionId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n reauthorize: (pluginConnectionId, expectedRevision, credentials, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.reauthorizeConnection({\n params: { pluginConnectionId },\n payload: { expectedRevision, credentials }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n revoke: (pluginConnectionId, expectedRevision, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.plugins.revokeConnection({\n params: { pluginConnectionId },\n payload: { expectedRevision }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n"],"mappings":"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"}