@knpkv/control-center 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +18 -8
  2. package/dist/client/.vite/manifest.json +214 -182
  3. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
  5. package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
  6. package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
  7. package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
  8. package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
  9. package/dist/client/assets/{AtlassianOAuthCallbackPage-BPoF6oKf.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
  10. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js → AuthorizedSharePage-CVBJ1NTm.js} +2 -2
  11. package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js.map → AuthorizedSharePage-CVBJ1NTm.js.map} +1 -1
  12. package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
  13. package/dist/client/assets/{BrowserCrypto-BMbjhcvP.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
  14. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
  15. package/dist/client/assets/{BrowserSessionHydrator-BC1ymLkL.js.map → BrowserSessionHydrator-CpZnNm4X.js.map} +1 -1
  16. package/dist/client/assets/{CommandSearch-WwAVDrD9.js → CommandSearch-DUeRRbV2.js} +2 -2
  17. package/dist/client/assets/{CommandSearch-WwAVDrD9.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
  18. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js → ItemsPage-BF2ZkSzh.js} +2 -2
  19. package/dist/client/assets/{ItemsPage-CKK_KkJ2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-DA6cmyqF.js → PairPage-CkaZltHd.js} +2 -2
  21. package/dist/client/assets/{PairPage-DA6cmyqF.js.map → PairPage-CkaZltHd.js.map} +1 -1
  22. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
  23. package/dist/client/assets/{PortfolioOverview-CEI4gpXi.js.map → PortfolioOverview-CEUHJmGC.js.map} +1 -1
  24. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js} +3 -3
  25. package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js.map → PullRequestReviewPanel-D1IpvHe2.js.map} +1 -1
  26. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js → ReleaseRoute-BuQybrsg.js} +2 -2
  27. package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
  28. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
  29. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
  30. package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
  31. package/dist/client/assets/{ServicesPage-_B89DAvG.js.map → ServicesPage-hw5Ee69-.js.map} +1 -1
  32. package/dist/client/assets/{TimelinePage-DvpgD8AY.js → TimelinePage-Cj3V98uI.js} +2 -2
  33. package/dist/client/assets/{TimelinePage-DvpgD8AY.js.map → TimelinePage-Cj3V98uI.js.map} +1 -1
  34. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js → WorkspaceEntityLink-C_rc8lxi.js} +2 -2
  35. package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
  36. package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
  37. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
  38. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
  39. package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
  40. package/dist/client/assets/{WorkspaceHomeLink-CkJfzO25.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
  41. package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js +3 -0
  42. package/dist/client/assets/{WorkspacePullRequestDetails-HwDgp12e.js.map → WorkspacePullRequestDetails-CizqydjN.js.map} +1 -1
  43. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
  44. package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
  45. package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
  46. package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
  47. package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
  48. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
  49. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
  50. package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
  51. package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
  52. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
  53. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
  54. package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
  55. package/dist/client/assets/{authenticatedMutationClient-DYaieXUe.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
  56. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js → authorizedShareTransport-CnclcYai.js} +2 -2
  57. package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
  58. package/dist/client/assets/client-Dq_XQE_l.js +5 -0
  59. package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
  60. package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
  61. package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
  62. package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
  63. package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
  64. package/dist/client/assets/{index-C7_FDTU7.js → index-zVjlBm9l.js} +3 -3
  65. package/dist/client/assets/{index-C7_FDTU7.js.map → index-zVjlBm9l.js.map} +1 -1
  66. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
  67. package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
  68. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js → presentPortfolio-DLEq-vEz.js} +2 -2
  69. package/dist/client/assets/{presentPortfolio-C_JsoSWg.js.map → presentPortfolio-DLEq-vEz.js.map} +1 -1
  70. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
  71. package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
  72. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
  73. package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
  74. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js → pullRequestReviewThreadReplay-CXHspFTr.js} +2 -2
  75. package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js.map → pullRequestReviewThreadReplay-CXHspFTr.js.map} +1 -1
  76. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
  77. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
  78. package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
  79. package/dist/client/assets/{releaseRoutes-t9uCfs5T.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
  80. package/dist/client/assets/{serviceOnboarding-DLINCon7.js → serviceOnboarding-D0FmodRi.js} +2 -2
  81. package/dist/client/assets/{serviceOnboarding-DLINCon7.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
  82. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
  83. package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
  84. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
  85. package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
  86. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
  87. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
  88. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js → workspaceScrollCapture-BYNfR2wo.js} +2 -2
  89. package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js.map → workspaceScrollCapture-BYNfR2wo.js.map} +1 -1
  90. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js → workspaceSettingsTransport-Br4lBmvS.js} +2 -2
  91. package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
  92. package/dist/client/build-graph.json +98 -0
  93. package/dist/client/index.html +1 -1
  94. package/dist/server/api/agent.d.ts +12 -0
  95. package/dist/server/api/agent.d.ts.map +1 -1
  96. package/dist/server/api/deliveryGraph.d.ts +20 -0
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -1
  98. package/dist/server/api/index.d.ts +1 -1
  99. package/dist/server/api/index.d.ts.map +1 -1
  100. package/dist/server/api/index.js +3 -3
  101. package/dist/server/api/session.d.ts +23 -1
  102. package/dist/server/api/session.d.ts.map +1 -1
  103. package/dist/server/api/shares.d.ts +2 -0
  104. package/dist/server/api/shares.d.ts.map +1 -1
  105. package/dist/server/assets/{BindConfig-Bj282xDC.js → BindConfig-DAASchDn.js} +315 -36
  106. package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
  107. package/dist/server/assets/{agent-ZvwskOQu.js → agent-xQhAQXly.js} +26 -6
  108. package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
  109. package/dist/server/assets/{controlCenterApi-5j3gOXgE.js → controlCenterApi-DNXK7MT1.js} +4 -3
  110. package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
  111. package/dist/server/assets/{manualPluginSynchronization-CzIhZ_Dw.js → manualPluginSynchronization-DFIeUHP9.js} +4 -3
  112. package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
  113. package/dist/server/assets/{readiness-BtntBhDj.js → readiness-31Mqc-9H.js} +2 -2
  114. package/dist/server/assets/{readiness-BtntBhDj.js.map → readiness-31Mqc-9H.js.map} +1 -1
  115. package/dist/server/assets/{relationshipInferenceMaterialization-CR6xyMNL.js → relationshipInferenceMaterialization-Dyix96px.js} +41 -14
  116. package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
  117. package/dist/server/assets/{workspaceSettings-C2Zsk6RI.js → workspaceSettings-sv8h_h2P.js} +4 -1
  118. package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
  119. package/dist/server/build-graph.json +28 -1
  120. package/dist/server/domain/confluenceTasks.d.ts +27 -0
  121. package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
  122. package/dist/server/domain/deliveryGraph.d.ts +2 -0
  123. package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
  124. package/dist/server/domain/governedAction/bindings.d.ts +2 -0
  125. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  126. package/dist/server/domain/governedAction/model.d.ts +6 -0
  127. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  128. package/dist/server/domain/index.js +2 -2
  129. package/dist/server/domain/normalizedPage.d.ts +1 -0
  130. package/dist/server/domain/normalizedPage.d.ts.map +1 -1
  131. package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
  132. package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
  133. package/dist/server/index.js +5 -5
  134. package/dist/server/server/api/Handlers.d.ts +1 -1
  135. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  136. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
  137. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
  138. package/dist/server/server/application/pipelineExecutionProjection.d.ts +1 -0
  139. package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
  140. package/dist/server/server/application/portfolioSnapshots.d.ts +4 -0
  141. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  142. package/dist/server/server/application/releasePublicationSubmissions.d.ts +32 -1
  143. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -1
  144. package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
  145. package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
  146. package/dist/server/server/cli.js +3 -3
  147. package/dist/server/server/governance/governedActionDigests.d.ts +3 -0
  148. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  149. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +1 -0
  150. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  151. package/dist/server/server/index.js +2 -2
  152. package/dist/server/server/persistence/Persistence.d.ts +10 -0
  153. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  154. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
  155. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
  156. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
  157. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +10 -0
  158. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
  159. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +2 -0
  160. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
  161. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +6 -0
  162. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
  163. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +1 -0
  164. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
  165. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +2 -0
  166. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
  167. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +6 -0
  168. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
  169. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +4 -0
  170. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  171. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +2 -0
  172. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  173. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +4 -0
  174. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  175. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +4 -0
  176. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  177. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +1 -0
  178. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  179. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +2 -0
  180. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  181. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +2 -0
  182. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  183. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +4 -0
  184. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  185. package/package.json +3 -3
  186. package/dist/client/assets/AgentPage-C3LThgPZ.js +0 -3
  187. package/dist/client/assets/AgentPage-C3LThgPZ.js.map +0 -1
  188. package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
  189. package/dist/client/assets/AtlassianOAuthCallbackPage-BPoF6oKf.js +0 -2
  190. package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +0 -2
  191. package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +0 -2
  192. package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +0 -2
  193. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +0 -2
  194. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js.map +0 -1
  195. package/dist/client/assets/ServicesPage-_B89DAvG.js +0 -2
  196. package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
  197. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +0 -3
  198. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +0 -1
  199. package/dist/client/assets/WorkspaceHomeLink-CkJfzO25.js +0 -2
  200. package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +0 -3
  201. package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
  202. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js +0 -2
  203. package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js.map +0 -1
  204. package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
  205. package/dist/client/assets/agent-api-CeONl_8w.js +0 -19
  206. package/dist/client/assets/agent-api-CeONl_8w.js.map +0 -1
  207. package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +0 -2
  208. package/dist/client/assets/client-DKS82kT_.js +0 -5
  209. package/dist/client/assets/client-DKS82kT_.js.map +0 -1
  210. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +0 -2
  211. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js.map +0 -1
  212. package/dist/client/assets/releaseRoutes-t9uCfs5T.js +0 -2
  213. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +0 -2
  214. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +0 -1
  215. package/dist/server/assets/BindConfig-Bj282xDC.js.map +0 -1
  216. package/dist/server/assets/agent-ZvwskOQu.js.map +0 -1
  217. package/dist/server/assets/controlCenterApi-5j3gOXgE.js.map +0 -1
  218. package/dist/server/assets/manualPluginSynchronization-CzIhZ_Dw.js.map +0 -1
  219. package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +0 -1
  220. package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"serviceOnboarding-DLINCon7.js","names":[],"sources":["../../../src/domain/firstPartyServices.ts","../../../src/client/services/serviceOnboarding.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\n\nimport { ProviderId } from \"./sourceRevision.js\"\n\n/** Safe provider identity rendered before a browser has access to workspace connections. */\nexport const FirstPartyServiceIdentity = Schema.Struct({\n providerId: ProviderId,\n displayName: Schema.String,\n description: Schema.String\n}).annotate({ identifier: \"FirstPartyServiceIdentity\" })\n\n/** Decoded safe first-party provider identity. */\nexport type FirstPartyServiceIdentity = typeof FirstPartyServiceIdentity.Type\n\n/** Stable provider lookup shared by public previews and the server-owned setup catalog. */\nexport const firstPartyServiceIdentityByProvider = {\n codecommit: {\n providerId: \"codecommit\",\n displayName: \"CodeCommit\",\n description: \"Read pull requests from one AWS CodeCommit repository.\"\n },\n codepipeline: {\n providerId: \"codepipeline\",\n displayName: \"CodePipeline\",\n description: \"Read pipeline and execution state from AWS CodePipeline.\"\n },\n jira: {\n providerId: \"jira\",\n displayName: \"Jira\",\n description: \"Read delivery issues from Jira Cloud.\"\n },\n confluence: {\n providerId: \"confluence\",\n displayName: \"Confluence\",\n description: \"Read release documentation from Confluence Cloud.\"\n },\n clockify: {\n providerId: \"clockify\",\n displayName: \"Clockify\",\n description: \"Read bounded time-entry evidence and govern association corrections and approvals.\"\n }\n} satisfies Readonly<Record<typeof ProviderId.Type, FirstPartyServiceIdentity>>\n\n/** Stable first-party services available to every Control Center installation. */\nexport const firstPartyServiceIdentities = [\n firstPartyServiceIdentityByProvider.codecommit,\n firstPartyServiceIdentityByProvider.codepipeline,\n firstPartyServiceIdentityByProvider.jira,\n firstPartyServiceIdentityByProvider.confluence,\n firstPartyServiceIdentityByProvider.clockify\n] satisfies ReadonlyArray<FirstPartyServiceIdentity>\n","import * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport type { AtlassianOAuthProviderIntent } from \"../../api/plugins.js\"\nimport { firstPartyServiceIdentities } from \"../../domain/firstPartyServices.js\"\nimport { PluginConnectionId, type PluginConnectionId as PluginConnectionIdType } from \"../../domain/identifiers.js\"\nimport type { ProviderId } from \"../../domain/sourceRevision.js\"\n\nconst providerFrom = (value: string | null): ProviderId | null =>\n firstPartyServiceIdentities.find(({ providerId }) => providerId === value)?.providerId ?? null\n\n/** Pairing route that remembers which service the person chose to enable. */\nexport const servicePairingPath = (providerId: ProviderId): string => `/pair?service=${providerId}`\n\n/** Service selected by an untrusted browser query parameter. */\nexport const selectedServiceProvider = (searchParams: URLSearchParams, key: \"enable\" | \"service\"): ProviderId | null =>\n providerFrom(searchParams.get(key))\n\n/** Post-pairing destination that opens the selected service setup in place. */\nexport const serviceSetupPath = (providerId: ProviderId): string => `/services?enable=${providerId}`\n\n/** Atlassian setup destination that preserves the initiating products and, when present, the completed profile. */\nexport const atlassianOAuthSetupPath = (\n providers: AtlassianOAuthProviderIntent,\n profileId: string | null = null,\n preferredSiteId: string | null = null\n): string => {\n const searchParams = new URLSearchParams({ enable: providers.includes(\"jira\") ? \"jira\" : \"confluence\" })\n if (profileId !== null) searchParams.set(\"atlassianProfile\", profileId)\n if (preferredSiteId !== null) searchParams.set(\"atlassianSite\", preferredSiteId)\n for (const provider of providers) searchParams.append(\"atlassianProvider\", provider)\n return `/services?${searchParams.toString()}`\n}\n\n/** Post-callback destination that applies a new local OAuth profile to one existing connection. */\nexport const atlassianOAuthRecoveryPath = (\n pluginConnectionId: PluginConnectionIdType,\n profileId: string\n): string => {\n const searchParams = new URLSearchParams({\n atlassianRecoveryConnection: pluginConnectionId,\n atlassianRecoveryProfile: profileId\n })\n return `/services?${searchParams.toString()}`\n}\n\n/** Existing connection selected for an exact OAuth recovery handoff. */\nexport const selectedAtlassianRecoveryConnectionId = (\n searchParams: URLSearchParams\n): PluginConnectionIdType | null => {\n const values = searchParams.getAll(\"atlassianRecoveryConnection\")\n if (values.length !== 1) return null\n const decoded = Schema.decodeUnknownResult(PluginConnectionId)(values[0])\n return Result.isSuccess(decoded) ? decoded.success : null\n}\n\n/** Completed local OAuth profile selected for an exact recovery handoff. */\nexport const selectedAtlassianRecoveryProfileId = (searchParams: URLSearchParams): string | null => {\n const values = searchParams.getAll(\"atlassianRecoveryProfile\")\n if (values.length !== 1) return null\n const [value] = values\n return value !== undefined && value.length > 0 && value.length <= 500 && value.trim() === value\n ? value\n : null\n}\n\n/** Atlassian site pinned by a bounded, untrusted browser query parameter. */\nexport const selectedAtlassianOAuthSiteId = (searchParams: URLSearchParams): string | null => {\n const sites = searchParams.getAll(\"atlassianSite\")\n if (sites.length !== 1) return null\n const [siteId] = sites\n return siteId !== undefined && siteId.length > 0 && siteId.length <= 512 && siteId.trim() === siteId ? siteId : null\n}\n\n/** Completed Atlassian profile selected by a bounded, untrusted browser query parameter. */\nexport const selectedAtlassianOAuthProfileId = (searchParams: URLSearchParams): string | null => {\n const profiles = searchParams.getAll(\"atlassianProfile\")\n if (profiles.length !== 1) return null\n const [profileId] = profiles\n return profileId !== undefined && profileId.length > 0 && profileId.length <= 500 && profileId.trim() === profileId\n ? profileId\n : null\n}\n\n/** Atlassian product intent selected by repeated, untrusted browser query parameters. */\nexport const selectedAtlassianOAuthProviders = (\n searchParams: URLSearchParams\n): AtlassianOAuthProviderIntent | null => {\n const providers = searchParams.getAll(\"atlassianProvider\")\n if (providers.length === 1 && providers[0] === \"jira\") return [\"jira\"]\n if (providers.length === 1 && providers[0] === \"confluence\") return [\"confluence\"]\n if (providers.length === 2 && providers.includes(\"jira\") && providers.includes(\"confluence\")) {\n return [\"jira\", \"confluence\"]\n }\n return null\n}\n"],"mappings":"qFAKyC,EAAc,CACrD,WAAY,EACZ,YAAa,EACb,YAAa,CACf,CAAC,CAAC,CAAC,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAMvD,IAAa,EAAsC,CACjD,WAAY,CACV,WAAY,aACZ,YAAa,aACb,YAAa,wDACf,EACA,aAAc,CACZ,WAAY,eACZ,YAAa,eACb,YAAa,0DACf,EACA,KAAM,CACJ,WAAY,OACZ,YAAa,OACb,YAAa,uCACf,EACA,WAAY,CACV,WAAY,aACZ,YAAa,aACb,YAAa,mDACf,EACA,SAAU,CACR,WAAY,WACZ,YAAa,WACb,YAAa,oFACf,CACF,EAGa,EAA8B,CACzC,EAAoC,WACpC,EAAoC,aACpC,EAAoC,KACpC,EAAoC,WACpC,EAAoC,QACtC,EC3CM,EAAgB,GACpB,EAA4B,MAAM,CAAE,gBAAiB,IAAe,CAAK,CAAC,EAAE,YAAc,KAG/E,EAAsB,GAAmC,iBAAiB,IAG1E,GAA2B,EAA+B,IACrE,EAAa,EAAa,IAAI,CAAG,CAAC,EAGvB,EAAoB,GAAmC,oBAAoB,IAG3E,GACX,EACA,EAA2B,KAC3B,EAAiC,OACtB,CACX,IAAM,EAAe,IAAI,gBAAgB,CAAE,OAAQ,EAAU,SAAS,MAAM,EAAI,OAAS,YAAa,CAAC,EACnG,IAAc,MAAM,EAAa,IAAI,mBAAoB,CAAS,EAClE,IAAoB,MAAM,EAAa,IAAI,gBAAiB,CAAe,EAC/E,IAAK,IAAM,KAAY,EAAW,EAAa,OAAO,oBAAqB,CAAQ,EACnF,MAAO,aAAa,EAAa,SAAS,GAC5C,EAGa,GACX,EACA,IAMO,aAAa,IAJK,gBAAgB,CACvC,4BAA6B,EAC7B,yBAA0B,CAC5B,CACoB,CAAA,CAAa,SAAS,IAI/B,EACX,GACkC,CAClC,IAAM,EAAS,EAAa,OAAO,6BAA6B,EAChE,GAAI,EAAO,SAAW,EAAG,OAAO,KAChC,IAAM,EAAU,EAA2B,CAAkB,CAAC,CAAC,EAAO,EAAE,EACxE,OAAO,EAAiB,CAAO,EAAI,EAAQ,QAAU,IACvD,EAGa,EAAsC,GAAiD,CAClG,IAAM,EAAS,EAAa,OAAO,0BAA0B,EAC7D,GAAI,EAAO,SAAW,EAAG,OAAO,KAChC,GAAM,CAAC,GAAS,EAChB,OAAO,IAAU,IAAA,IAAa,EAAM,OAAS,GAAK,EAAM,QAAU,KAAO,EAAM,KAAK,IAAM,EACtF,EACA,IACN,EAGa,EAAgC,GAAiD,CAC5F,IAAM,EAAQ,EAAa,OAAO,eAAe,EACjD,GAAI,EAAM,SAAW,EAAG,OAAO,KAC/B,GAAM,CAAC,GAAU,EACjB,OAAO,IAAW,IAAA,IAAa,EAAO,OAAS,GAAK,EAAO,QAAU,KAAO,EAAO,KAAK,IAAM,EAAS,EAAS,IAClH,EAGa,EAAmC,GAAiD,CAC/F,IAAM,EAAW,EAAa,OAAO,kBAAkB,EACvD,GAAI,EAAS,SAAW,EAAG,OAAO,KAClC,GAAM,CAAC,GAAa,EACpB,OAAO,IAAc,IAAA,IAAa,EAAU,OAAS,GAAK,EAAU,QAAU,KAAO,EAAU,KAAK,IAAM,EACtG,EACA,IACN,EAGa,EACX,GACwC,CACxC,IAAM,EAAY,EAAa,OAAO,mBAAmB,EAMzD,OALI,EAAU,SAAW,GAAK,EAAU,KAAO,OAAe,CAAC,MAAM,EACjE,EAAU,SAAW,GAAK,EAAU,KAAO,aAAqB,CAAC,YAAY,EAC7E,EAAU,SAAW,GAAK,EAAU,SAAS,MAAM,GAAK,EAAU,SAAS,YAAY,EAClF,CAAC,OAAQ,YAAY,EAEvB,IACT"}
1
+ {"version":3,"file":"serviceOnboarding-D0FmodRi.js","names":[],"sources":["../../../src/domain/firstPartyServices.ts","../../../src/client/services/serviceOnboarding.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\n\nimport { ProviderId } from \"./sourceRevision.js\"\n\n/** Safe provider identity rendered before a browser has access to workspace connections. */\nexport const FirstPartyServiceIdentity = Schema.Struct({\n providerId: ProviderId,\n displayName: Schema.String,\n description: Schema.String\n}).annotate({ identifier: \"FirstPartyServiceIdentity\" })\n\n/** Decoded safe first-party provider identity. */\nexport type FirstPartyServiceIdentity = typeof FirstPartyServiceIdentity.Type\n\n/** Stable provider lookup shared by public previews and the server-owned setup catalog. */\nexport const firstPartyServiceIdentityByProvider = {\n codecommit: {\n providerId: \"codecommit\",\n displayName: \"CodeCommit\",\n description: \"Read pull requests from one AWS CodeCommit repository.\"\n },\n codepipeline: {\n providerId: \"codepipeline\",\n displayName: \"CodePipeline\",\n description: \"Read pipeline and execution state from AWS CodePipeline.\"\n },\n jira: {\n providerId: \"jira\",\n displayName: \"Jira\",\n description: \"Read delivery issues from Jira Cloud.\"\n },\n confluence: {\n providerId: \"confluence\",\n displayName: \"Confluence\",\n description: \"Read release documentation from Confluence Cloud.\"\n },\n clockify: {\n providerId: \"clockify\",\n displayName: \"Clockify\",\n description: \"Read bounded time-entry evidence and govern association corrections and approvals.\"\n }\n} satisfies Readonly<Record<typeof ProviderId.Type, FirstPartyServiceIdentity>>\n\n/** Stable first-party services available to every Control Center installation. */\nexport const firstPartyServiceIdentities = [\n firstPartyServiceIdentityByProvider.codecommit,\n firstPartyServiceIdentityByProvider.codepipeline,\n firstPartyServiceIdentityByProvider.jira,\n firstPartyServiceIdentityByProvider.confluence,\n firstPartyServiceIdentityByProvider.clockify\n] satisfies ReadonlyArray<FirstPartyServiceIdentity>\n","import * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport type { AtlassianOAuthProviderIntent } from \"../../api/plugins.js\"\nimport { firstPartyServiceIdentities } from \"../../domain/firstPartyServices.js\"\nimport { PluginConnectionId, type PluginConnectionId as PluginConnectionIdType } from \"../../domain/identifiers.js\"\nimport type { ProviderId } from \"../../domain/sourceRevision.js\"\n\nconst providerFrom = (value: string | null): ProviderId | null =>\n firstPartyServiceIdentities.find(({ providerId }) => providerId === value)?.providerId ?? null\n\n/** Pairing route that remembers which service the person chose to enable. */\nexport const servicePairingPath = (providerId: ProviderId): string => `/pair?service=${providerId}`\n\n/** Service selected by an untrusted browser query parameter. */\nexport const selectedServiceProvider = (searchParams: URLSearchParams, key: \"enable\" | \"service\"): ProviderId | null =>\n providerFrom(searchParams.get(key))\n\n/** Post-pairing destination that opens the selected service setup in place. */\nexport const serviceSetupPath = (providerId: ProviderId): string => `/services?enable=${providerId}`\n\n/** Atlassian setup destination that preserves the initiating products and, when present, the completed profile. */\nexport const atlassianOAuthSetupPath = (\n providers: AtlassianOAuthProviderIntent,\n profileId: string | null = null,\n preferredSiteId: string | null = null\n): string => {\n const searchParams = new URLSearchParams({ enable: providers.includes(\"jira\") ? \"jira\" : \"confluence\" })\n if (profileId !== null) searchParams.set(\"atlassianProfile\", profileId)\n if (preferredSiteId !== null) searchParams.set(\"atlassianSite\", preferredSiteId)\n for (const provider of providers) searchParams.append(\"atlassianProvider\", provider)\n return `/services?${searchParams.toString()}`\n}\n\n/** Post-callback destination that applies a new local OAuth profile to one existing connection. */\nexport const atlassianOAuthRecoveryPath = (\n pluginConnectionId: PluginConnectionIdType,\n profileId: string\n): string => {\n const searchParams = new URLSearchParams({\n atlassianRecoveryConnection: pluginConnectionId,\n atlassianRecoveryProfile: profileId\n })\n return `/services?${searchParams.toString()}`\n}\n\n/** Existing connection selected for an exact OAuth recovery handoff. */\nexport const selectedAtlassianRecoveryConnectionId = (\n searchParams: URLSearchParams\n): PluginConnectionIdType | null => {\n const values = searchParams.getAll(\"atlassianRecoveryConnection\")\n if (values.length !== 1) return null\n const decoded = Schema.decodeUnknownResult(PluginConnectionId)(values[0])\n return Result.isSuccess(decoded) ? decoded.success : null\n}\n\n/** Completed local OAuth profile selected for an exact recovery handoff. */\nexport const selectedAtlassianRecoveryProfileId = (searchParams: URLSearchParams): string | null => {\n const values = searchParams.getAll(\"atlassianRecoveryProfile\")\n if (values.length !== 1) return null\n const [value] = values\n return value !== undefined && value.length > 0 && value.length <= 500 && value.trim() === value\n ? value\n : null\n}\n\n/** Atlassian site pinned by a bounded, untrusted browser query parameter. */\nexport const selectedAtlassianOAuthSiteId = (searchParams: URLSearchParams): string | null => {\n const sites = searchParams.getAll(\"atlassianSite\")\n if (sites.length !== 1) return null\n const [siteId] = sites\n return siteId !== undefined && siteId.length > 0 && siteId.length <= 512 && siteId.trim() === siteId ? siteId : null\n}\n\n/** Completed Atlassian profile selected by a bounded, untrusted browser query parameter. */\nexport const selectedAtlassianOAuthProfileId = (searchParams: URLSearchParams): string | null => {\n const profiles = searchParams.getAll(\"atlassianProfile\")\n if (profiles.length !== 1) return null\n const [profileId] = profiles\n return profileId !== undefined && profileId.length > 0 && profileId.length <= 500 && profileId.trim() === profileId\n ? profileId\n : null\n}\n\n/** Atlassian product intent selected by repeated, untrusted browser query parameters. */\nexport const selectedAtlassianOAuthProviders = (\n searchParams: URLSearchParams\n): AtlassianOAuthProviderIntent | null => {\n const providers = searchParams.getAll(\"atlassianProvider\")\n if (providers.length === 1 && providers[0] === \"jira\") return [\"jira\"]\n if (providers.length === 1 && providers[0] === \"confluence\") return [\"confluence\"]\n if (providers.length === 2 && providers.includes(\"jira\") && providers.includes(\"confluence\")) {\n return [\"jira\", \"confluence\"]\n }\n return null\n}\n"],"mappings":"qFAKyC,EAAc,CACrD,WAAY,EACZ,YAAa,EACb,YAAa,CACf,CAAC,CAAC,CAAC,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAMvD,IAAa,EAAsC,CACjD,WAAY,CACV,WAAY,aACZ,YAAa,aACb,YAAa,wDACf,EACA,aAAc,CACZ,WAAY,eACZ,YAAa,eACb,YAAa,0DACf,EACA,KAAM,CACJ,WAAY,OACZ,YAAa,OACb,YAAa,uCACf,EACA,WAAY,CACV,WAAY,aACZ,YAAa,aACb,YAAa,mDACf,EACA,SAAU,CACR,WAAY,WACZ,YAAa,WACb,YAAa,oFACf,CACF,EAGa,EAA8B,CACzC,EAAoC,WACpC,EAAoC,aACpC,EAAoC,KACpC,EAAoC,WACpC,EAAoC,QACtC,EC3CM,EAAgB,GACpB,EAA4B,MAAM,CAAE,gBAAiB,IAAe,CAAK,CAAC,EAAE,YAAc,KAG/E,EAAsB,GAAmC,iBAAiB,IAG1E,GAA2B,EAA+B,IACrE,EAAa,EAAa,IAAI,CAAG,CAAC,EAGvB,EAAoB,GAAmC,oBAAoB,IAG3E,GACX,EACA,EAA2B,KAC3B,EAAiC,OACtB,CACX,IAAM,EAAe,IAAI,gBAAgB,CAAE,OAAQ,EAAU,SAAS,MAAM,EAAI,OAAS,YAAa,CAAC,EACnG,IAAc,MAAM,EAAa,IAAI,mBAAoB,CAAS,EAClE,IAAoB,MAAM,EAAa,IAAI,gBAAiB,CAAe,EAC/E,IAAK,IAAM,KAAY,EAAW,EAAa,OAAO,oBAAqB,CAAQ,EACnF,MAAO,aAAa,EAAa,SAAS,GAC5C,EAGa,GACX,EACA,IAMO,aAAa,IAJK,gBAAgB,CACvC,4BAA6B,EAC7B,yBAA0B,CAC5B,CACoB,CAAA,CAAa,SAAS,IAI/B,EACX,GACkC,CAClC,IAAM,EAAS,EAAa,OAAO,6BAA6B,EAChE,GAAI,EAAO,SAAW,EAAG,OAAO,KAChC,IAAM,EAAU,EAA2B,CAAkB,CAAC,CAAC,EAAO,EAAE,EACxE,OAAO,EAAiB,CAAO,EAAI,EAAQ,QAAU,IACvD,EAGa,EAAsC,GAAiD,CAClG,IAAM,EAAS,EAAa,OAAO,0BAA0B,EAC7D,GAAI,EAAO,SAAW,EAAG,OAAO,KAChC,GAAM,CAAC,GAAS,EAChB,OAAO,IAAU,IAAA,IAAa,EAAM,OAAS,GAAK,EAAM,QAAU,KAAO,EAAM,KAAK,IAAM,EACtF,EACA,IACN,EAGa,EAAgC,GAAiD,CAC5F,IAAM,EAAQ,EAAa,OAAO,eAAe,EACjD,GAAI,EAAM,SAAW,EAAG,OAAO,KAC/B,GAAM,CAAC,GAAU,EACjB,OAAO,IAAW,IAAA,IAAa,EAAO,OAAS,GAAK,EAAO,QAAU,KAAO,EAAO,KAAK,IAAM,EAAS,EAAS,IAClH,EAGa,EAAmC,GAAiD,CAC/F,IAAM,EAAW,EAAa,OAAO,kBAAkB,EACvD,GAAI,EAAS,SAAW,EAAG,OAAO,KAClC,GAAM,CAAC,GAAa,EACpB,OAAO,IAAc,IAAA,IAAa,EAAU,OAAS,GAAK,EAAU,QAAU,KAAO,EAAU,KAAK,IAAM,EACtG,EACA,IACN,EAGa,EACX,GACwC,CACxC,IAAM,EAAY,EAAa,OAAO,mBAAmB,EAMzD,OALI,EAAU,SAAW,GAAK,EAAU,KAAO,OAAe,CAAC,MAAM,EACjE,EAAU,SAAW,GAAK,EAAU,KAAO,aAAqB,CAAC,YAAY,EAC7E,EAAU,SAAW,GAAK,EAAU,SAAS,MAAM,GAAK,EAAU,SAAS,YAAY,EAClF,CAAC,OAAQ,YAAY,EAEvB,IACT"}
@@ -1,3 +1,3 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/workspaceSettingsTransport-Dw2hueXv.js","assets/agent-api-CeONl_8w.js","assets/client-DKS82kT_.js","assets/BrowserCrypto-BMbjhcvP.js","assets/authenticatedMutationClient-DYaieXUe.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{i as r,o as i}from"./releasePaths-XoI2BHX3.js";import{d as a,i as o,o as s,u as c}from"./index-C7_FDTU7.js";import{Oa as l}from"./agent-api-CeONl_8w.js";import"./releaseRoutes-t9uCfs5T.js";var u=e(t(),1),d=l(`UnauthorizedApiError`),f=(e,t)=>t===`active-work`?i(e):r(e),p={load:async e=>{let{browserWorkspacePresentationTransport:t}=await n(async()=>{let{browserWorkspacePresentationTransport:e}=await import(`./workspaceSettingsTransport-Dw2hueXv.js`);return{browserWorkspacePresentationTransport:e}},__vite__mapDeps([0,1,2,3,4]));return t.load(e)}},m=(e,t=p)=>{let{invalidateSession:n,state:i}=a(),l=c(i),m=i._tag===`authenticated`||i._tag===`storage-unavailable`?i.session?.workspaceId??null:null,h=e!==null&&m===e?l:null,[g,_]=(0,u.useState)(null);return(0,u.useEffect)(()=>s(t=>{e===null||h===null||t.workspaceId!==e||_(n=>n?.sessionKey===h&&n.workspaceId===e&&n.revision>t.revision?n:{path:f(e,t.presentation.defaultLanding),revision:t.revision,sessionKey:h,workspaceId:e})}),[h,e]),(0,u.useEffect)(()=>{if(e===null||h===null){_(null);return}let i=new AbortController;return t.load(i.signal).then(t=>{i.signal.aborted||t.workspaceId!==e||(o(t),_(n=>n?.sessionKey===h&&n.workspaceId===e&&n.revision>t.revision?n:{path:f(e,t.presentation.defaultLanding),revision:t.revision,sessionKey:h,workspaceId:e}))},t=>{i.signal.aborted||(d(t)&&n(h),_(t=>t?.sessionKey===h&&t.workspaceId===e?t:{path:r(e),revision:0,sessionKey:h,workspaceId:e}))}),()=>i.abort()},[n,h,t,e]),g?.sessionKey===h&&g.workspaceId===e?g.path:null};export{m as t};
3
- //# sourceMappingURL=useWorkspaceDefaultLanding-CC5ImHkL.js.map
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/workspaceSettingsTransport-Br4lBmvS.js","assets/agent-api-Dl9TuGOJ.js","assets/client-Dq_XQE_l.js","assets/BrowserCrypto-3BoTVFdl.js","assets/authenticatedMutationClient-DdowMjyo.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{i as r,o as i}from"./releasePaths-XoI2BHX3.js";import{d as a,i as o,o as s,u as c}from"./index-zVjlBm9l.js";import{ja as l}from"./agent-api-Dl9TuGOJ.js";import"./releaseRoutes-B4ciNOJj.js";var u=e(t(),1),d=l(`UnauthorizedApiError`),f=(e,t)=>t===`active-work`?i(e):r(e),p={load:async e=>{let{browserWorkspacePresentationTransport:t}=await n(async()=>{let{browserWorkspacePresentationTransport:e}=await import(`./workspaceSettingsTransport-Br4lBmvS.js`);return{browserWorkspacePresentationTransport:e}},__vite__mapDeps([0,1,2,3,4]));return t.load(e)}},m=(e,t=p)=>{let{invalidateSession:n,state:i}=a(),l=c(i),m=i._tag===`authenticated`||i._tag===`storage-unavailable`?i.session?.workspaceId??null:null,h=e!==null&&m===e?l:null,[g,_]=(0,u.useState)(null);return(0,u.useEffect)(()=>s(t=>{e===null||h===null||t.workspaceId!==e||_(n=>n?.sessionKey===h&&n.workspaceId===e&&n.revision>t.revision?n:{path:f(e,t.presentation.defaultLanding),revision:t.revision,sessionKey:h,workspaceId:e})}),[h,e]),(0,u.useEffect)(()=>{if(e===null||h===null){_(null);return}let i=new AbortController;return t.load(i.signal).then(t=>{i.signal.aborted||t.workspaceId!==e||(o(t),_(n=>n?.sessionKey===h&&n.workspaceId===e&&n.revision>t.revision?n:{path:f(e,t.presentation.defaultLanding),revision:t.revision,sessionKey:h,workspaceId:e}))},t=>{i.signal.aborted||(d(t)&&n(h),_(t=>t?.sessionKey===h&&t.workspaceId===e?t:{path:r(e),revision:0,sessionKey:h,workspaceId:e}))}),()=>i.abort()},[n,h,t,e]),g?.sessionKey===h&&g.workspaceId===e?g.path:null};export{m as t};
3
+ //# sourceMappingURL=useWorkspaceDefaultLanding-BaQdg0sY.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";0VAUM,EAAiB,EAAmB,sBAAsB,EAGnD,GACX,EACA,IAEA,IAAmB,cACf,EAAwB,CAAW,EACnC,EAAkB,CAAW,EAS7B,EAA4E,CAChF,KAAM,KAAO,IAAW,CACtB,GAAM,CAAE,8DAAF,CAAE,yCAA0C,MAAM,OACtD,2HAEF,OAAO,EAAsC,KAAK,CAAM,CAC1D,CACF,EAGa,GACX,EACA,EAA4C,IAC1B,CAClB,GAAM,CAAE,oBAAmB,MAAO,GAAmB,EAAkB,EACjE,EAAqB,EAA0B,CAAc,EAC7D,EAAqB,EAAe,OAAS,iBAC/C,EAAe,OAAS,sBACxB,EAAe,SAAS,aAAe,KACvC,KACE,EAAa,IAAgB,MAAQ,IAAuB,EAC9D,EACA,KACE,CAAC,EAAQ,kBAA4C,IAAI,EA0E/D,OAxEA,mBACE,EAAgC,GAAa,CAEzC,IAAgB,MAChB,IAAe,MACf,EAAS,cAAgB,GAE3B,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,GACxB,EAAQ,SAAW,EAAS,SACrB,EACF,CACL,KAAM,EACJ,EACA,EAAS,aAAa,cACxB,EACA,SAAU,EAAS,SACnB,aACA,aACF,CACD,CACH,CAAC,EAAG,CAAC,EAAY,CAAW,CAAC,GAE/B,mBAAgB,CACd,GAAI,IAAgB,MAAQ,IAAe,KAAM,CAC/C,EAAU,IAAI,EACd,MACF,CACA,IAAM,EAAU,IAAI,gBAuCpB,OAtCA,EAAU,KAAK,EAAQ,MAAM,CAAC,CAAC,KAC5B,GAAa,CACR,EAAQ,OAAO,SAAW,EAAS,cAAgB,IACvD,EAA6B,CAAQ,EACrC,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,GACxB,EAAQ,SAAW,EAAS,SACrB,EACF,CACL,KAAM,EACJ,EACA,EAAS,aAAa,cACxB,EACA,SAAU,EAAS,SACnB,aACA,aACF,CACD,EACH,EACC,GAAY,CACP,EAAQ,OAAO,UACf,EAAe,CAAO,GAAG,EAAkB,CAAU,EACzD,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,EACjB,EACF,CACL,KAAM,EAAkB,CAAW,EACnC,SAAU,EACV,aACA,aACF,CACD,EACH,CACF,MACa,EAAQ,MAAM,CAC7B,EAAG,CAAC,EAAmB,EAAY,EAAW,CAAW,CAAC,EAEnD,GAAQ,aAAe,GAAc,EAAO,cAAgB,EAC/D,EAAO,KACP,IACN","names":[],"ignoreList":[],"sources":["../../../src/client/settings/useWorkspaceDefaultLanding.ts"],"sourcesContent":["import * as Predicate from \"effect/Predicate\"\nimport { useEffect, useState } from \"react\"\n\nimport type { WorkspacePresentationReadModel } from \"../../api/workspaceSettings.js\"\nimport type { WorkspaceId } from \"../../domain/identifiers.js\"\nimport { browserReadableSessionKey, useBrowserSession } from \"../BrowserSession.js\"\nimport { releaseParentPath, workspaceActiveWorkPath } from \"../releases/releaseRoutes.js\"\nimport { publishWorkspacePresentation, subscribeWorkspacePresentation } from \"./workspaceSettingsSignals.js\"\nimport type { WorkspacePresentationTransport } from \"./workspaceSettingsTransport.js\"\n\nconst isUnauthorized = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Resolve the configured home destination without redirecting deep links. */\nexport const workspaceDefaultLandingPath = (\n workspaceId: WorkspaceId,\n defaultLanding: WorkspacePresentationReadModel[\"presentation\"][\"defaultLanding\"]\n): string =>\n defaultLanding === \"active-work\"\n ? workspaceActiveWorkPath(workspaceId)\n : releaseParentPath(workspaceId)\n\ninterface LoadedLanding {\n readonly path: string\n readonly revision: number\n readonly sessionKey: string\n readonly workspaceId: WorkspaceId\n}\n\nconst lazyBrowserWorkspacePresentationTransport: WorkspacePresentationTransport = {\n load: async (signal) => {\n const { browserWorkspacePresentationTransport } = await import(\n \"./workspaceSettingsTransport.js\"\n )\n return browserWorkspacePresentationTransport.load(signal)\n }\n}\n\n/** Read one workspace's server-owned home destination for brand and root navigation. */\nexport const useWorkspaceDefaultLandingPath = (\n workspaceId: WorkspaceId | null,\n transport: WorkspacePresentationTransport = lazyBrowserWorkspacePresentationTransport\n): string | null => {\n const { invalidateSession, state: browserSession } = useBrowserSession()\n const readableSessionKey = browserReadableSessionKey(browserSession)\n const browserWorkspaceId = browserSession._tag === \"authenticated\" ||\n browserSession._tag === \"storage-unavailable\"\n ? browserSession.session?.workspaceId ?? null\n : null\n const sessionKey = workspaceId !== null && browserWorkspaceId === workspaceId\n ? readableSessionKey\n : null\n const [loaded, setLoaded] = useState<LoadedLanding | null>(null)\n\n useEffect(() =>\n subscribeWorkspacePresentation((settings) => {\n if (\n workspaceId === null ||\n sessionKey === null ||\n settings.workspaceId !== workspaceId\n ) return\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId &&\n current.revision > settings.revision\n ) return current\n return {\n path: workspaceDefaultLandingPath(\n workspaceId,\n settings.presentation.defaultLanding\n ),\n revision: settings.revision,\n sessionKey,\n workspaceId\n }\n })\n }), [sessionKey, workspaceId])\n\n useEffect(() => {\n if (workspaceId === null || sessionKey === null) {\n setLoaded(null)\n return\n }\n const request = new AbortController()\n transport.load(request.signal).then(\n (settings) => {\n if (request.signal.aborted || settings.workspaceId !== workspaceId) return\n publishWorkspacePresentation(settings)\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId &&\n current.revision > settings.revision\n ) return current\n return {\n path: workspaceDefaultLandingPath(\n workspaceId,\n settings.presentation.defaultLanding\n ),\n revision: settings.revision,\n sessionKey,\n workspaceId\n }\n })\n },\n (failure) => {\n if (request.signal.aborted) return\n if (isUnauthorized(failure)) invalidateSession(sessionKey)\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId\n ) return current\n return {\n path: releaseParentPath(workspaceId),\n revision: 0,\n sessionKey,\n workspaceId\n }\n })\n }\n )\n return () => request.abort()\n }, [invalidateSession, sessionKey, transport, workspaceId])\n\n return loaded?.sessionKey === sessionKey && loaded.workspaceId === workspaceId\n ? loaded.path\n : null\n}\n"],"file":"useWorkspaceDefaultLanding-CC5ImHkL.js"}
1
+ {"version":3,"mappings":";0VAUM,EAAiB,EAAmB,sBAAsB,EAGnD,GACX,EACA,IAEA,IAAmB,cACf,EAAwB,CAAW,EACnC,EAAkB,CAAW,EAS7B,EAA4E,CAChF,KAAM,KAAO,IAAW,CACtB,GAAM,CAAE,8DAAF,CAAE,yCAA0C,MAAM,OACtD,2HAEF,OAAO,EAAsC,KAAK,CAAM,CAC1D,CACF,EAGa,GACX,EACA,EAA4C,IAC1B,CAClB,GAAM,CAAE,oBAAmB,MAAO,GAAmB,EAAkB,EACjE,EAAqB,EAA0B,CAAc,EAC7D,EAAqB,EAAe,OAAS,iBAC/C,EAAe,OAAS,sBACxB,EAAe,SAAS,aAAe,KACvC,KACE,EAAa,IAAgB,MAAQ,IAAuB,EAC9D,EACA,KACE,CAAC,EAAQ,kBAA4C,IAAI,EA0E/D,OAxEA,mBACE,EAAgC,GAAa,CAEzC,IAAgB,MAChB,IAAe,MACf,EAAS,cAAgB,GAE3B,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,GACxB,EAAQ,SAAW,EAAS,SACrB,EACF,CACL,KAAM,EACJ,EACA,EAAS,aAAa,cACxB,EACA,SAAU,EAAS,SACnB,aACA,aACF,CACD,CACH,CAAC,EAAG,CAAC,EAAY,CAAW,CAAC,GAE/B,mBAAgB,CACd,GAAI,IAAgB,MAAQ,IAAe,KAAM,CAC/C,EAAU,IAAI,EACd,MACF,CACA,IAAM,EAAU,IAAI,gBAuCpB,OAtCA,EAAU,KAAK,EAAQ,MAAM,CAAC,CAAC,KAC5B,GAAa,CACR,EAAQ,OAAO,SAAW,EAAS,cAAgB,IACvD,EAA6B,CAAQ,EACrC,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,GACxB,EAAQ,SAAW,EAAS,SACrB,EACF,CACL,KAAM,EACJ,EACA,EAAS,aAAa,cACxB,EACA,SAAU,EAAS,SACnB,aACA,aACF,CACD,EACH,EACC,GAAY,CACP,EAAQ,OAAO,UACf,EAAe,CAAO,GAAG,EAAkB,CAAU,EACzD,EAAW,GAEP,GAAS,aAAe,GACxB,EAAQ,cAAgB,EACjB,EACF,CACL,KAAM,EAAkB,CAAW,EACnC,SAAU,EACV,aACA,aACF,CACD,EACH,CACF,MACa,EAAQ,MAAM,CAC7B,EAAG,CAAC,EAAmB,EAAY,EAAW,CAAW,CAAC,EAEnD,GAAQ,aAAe,GAAc,EAAO,cAAgB,EAC/D,EAAO,KACP,IACN","names":[],"ignoreList":[],"sources":["../../../src/client/settings/useWorkspaceDefaultLanding.ts"],"sourcesContent":["import * as Predicate from \"effect/Predicate\"\nimport { useEffect, useState } from \"react\"\n\nimport type { WorkspacePresentationReadModel } from \"../../api/workspaceSettings.js\"\nimport type { WorkspaceId } from \"../../domain/identifiers.js\"\nimport { browserReadableSessionKey, useBrowserSession } from \"../BrowserSession.js\"\nimport { releaseParentPath, workspaceActiveWorkPath } from \"../releases/releaseRoutes.js\"\nimport { publishWorkspacePresentation, subscribeWorkspacePresentation } from \"./workspaceSettingsSignals.js\"\nimport type { WorkspacePresentationTransport } from \"./workspaceSettingsTransport.js\"\n\nconst isUnauthorized = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Resolve the configured home destination without redirecting deep links. */\nexport const workspaceDefaultLandingPath = (\n workspaceId: WorkspaceId,\n defaultLanding: WorkspacePresentationReadModel[\"presentation\"][\"defaultLanding\"]\n): string =>\n defaultLanding === \"active-work\"\n ? workspaceActiveWorkPath(workspaceId)\n : releaseParentPath(workspaceId)\n\ninterface LoadedLanding {\n readonly path: string\n readonly revision: number\n readonly sessionKey: string\n readonly workspaceId: WorkspaceId\n}\n\nconst lazyBrowserWorkspacePresentationTransport: WorkspacePresentationTransport = {\n load: async (signal) => {\n const { browserWorkspacePresentationTransport } = await import(\n \"./workspaceSettingsTransport.js\"\n )\n return browserWorkspacePresentationTransport.load(signal)\n }\n}\n\n/** Read one workspace's server-owned home destination for brand and root navigation. */\nexport const useWorkspaceDefaultLandingPath = (\n workspaceId: WorkspaceId | null,\n transport: WorkspacePresentationTransport = lazyBrowserWorkspacePresentationTransport\n): string | null => {\n const { invalidateSession, state: browserSession } = useBrowserSession()\n const readableSessionKey = browserReadableSessionKey(browserSession)\n const browserWorkspaceId = browserSession._tag === \"authenticated\" ||\n browserSession._tag === \"storage-unavailable\"\n ? browserSession.session?.workspaceId ?? null\n : null\n const sessionKey = workspaceId !== null && browserWorkspaceId === workspaceId\n ? readableSessionKey\n : null\n const [loaded, setLoaded] = useState<LoadedLanding | null>(null)\n\n useEffect(() =>\n subscribeWorkspacePresentation((settings) => {\n if (\n workspaceId === null ||\n sessionKey === null ||\n settings.workspaceId !== workspaceId\n ) return\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId &&\n current.revision > settings.revision\n ) return current\n return {\n path: workspaceDefaultLandingPath(\n workspaceId,\n settings.presentation.defaultLanding\n ),\n revision: settings.revision,\n sessionKey,\n workspaceId\n }\n })\n }), [sessionKey, workspaceId])\n\n useEffect(() => {\n if (workspaceId === null || sessionKey === null) {\n setLoaded(null)\n return\n }\n const request = new AbortController()\n transport.load(request.signal).then(\n (settings) => {\n if (request.signal.aborted || settings.workspaceId !== workspaceId) return\n publishWorkspacePresentation(settings)\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId &&\n current.revision > settings.revision\n ) return current\n return {\n path: workspaceDefaultLandingPath(\n workspaceId,\n settings.presentation.defaultLanding\n ),\n revision: settings.revision,\n sessionKey,\n workspaceId\n }\n })\n },\n (failure) => {\n if (request.signal.aborted) return\n if (isUnauthorized(failure)) invalidateSession(sessionKey)\n setLoaded((current) => {\n if (\n current?.sessionKey === sessionKey &&\n current.workspaceId === workspaceId\n ) return current\n return {\n path: releaseParentPath(workspaceId),\n revision: 0,\n sessionKey,\n workspaceId\n }\n })\n }\n )\n return () => request.abort()\n }, [invalidateSession, sessionKey, transport, workspaceId])\n\n return loaded?.sessionKey === sessionKey && loaded.workspaceId === workspaceId\n ? loaded.path\n : null\n}\n"],"file":"useWorkspaceDefaultLanding-BaQdg0sY.js"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{Oa as n,_i as r,ai as i,pi as a}from"./agent-api-CeONl_8w.js";import{a as o,t as s}from"./client-DKS82kT_.js";import{t as c}from"./presentWorkspaceItems-DboAfwGc.js";var l=e(t(),1),u=n(`UnauthorizedApiError`),d={load:(e,t)=>r(i(function*(){return yield*(yield*s()).deliveryGraph.workspaceEntityProjections({query:{...t.query.length===0?{}:{q:t.query},...t.owner===`all`?{}:{owner:t.owner},...t.service===`all`?{}:{service:t.service},...t.status===`all`?{}:{status:t.status},...t.type===`all`?{}:{type:t.type}}})}).pipe(a(o)),{signal:e})},f=(e,t,n,r,i,a,o=d)=>{let[s,f]=(0,l.useState)(0),[p,m]=(0,l.useState)({_tag:`idle`}),h=[...t].join(`:`),g=(0,l.useMemo)(()=>({owner:n.owner,query:n.query,service:n.service,status:n.status,type:n.type}),[n.owner,n.query,n.service,n.status,n.type]),_=`${e}|${h}|${r}|${`${g.query}|${g.owner}|${g.service}|${g.status}|${g.type}`}`;(0,l.useEffect)(()=>{if(i===null){m({_tag:`idle`});return}let n=new AbortController;return m(e=>e._tag===`ready`&&e.sessionKey===i?e:{_tag:`loading`,scopeKey:_,sessionKey:i}),o.load(n.signal,g).then(r=>{n.signal.aborted||m({_tag:`ready`,items:c(e,r,t),matchedCount:r.matchedCount,ownerOptions:r.ownerOptions,ownerOptionsTruncated:r.ownerOptionsTruncated,refreshing:!1,scopeKey:_,sessionKey:i,totalCount:r.totalCount,truncated:r.truncated})},e=>{n.signal.aborted||(u(e)&&a(i),m({_tag:`failed`,scopeKey:_,sessionKey:i}))}),()=>n.abort()},[a,g,s,t,_,i,o,e]);let v=i===null?{_tag:`idle`}:p._tag===`idle`||p.sessionKey!==i?{_tag:`loading`,scopeKey:_,sessionKey:i}:p._tag===`ready`&&p.scopeKey!==_?{...p,refreshing:!0}:p._tag!==`ready`&&p.scopeKey!==_?{_tag:`loading`,scopeKey:_,sessionKey:i}:p;return{retry:(0,l.useCallback)(()=>f(e=>e+1),[]),state:v}};export{f as n,d as t};
2
- //# sourceMappingURL=useWorkspaceItems-B1X-JNwq.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{_i as n,ai as r,ja as i,pi as a}from"./agent-api-Dl9TuGOJ.js";import{a as o,t as s}from"./client-Dq_XQE_l.js";import{t as c}from"./presentWorkspaceItems-BOY3FbhO.js";var l=e(t(),1),u=i(`UnauthorizedApiError`),d={load:(e,t)=>n(r(function*(){return yield*(yield*s()).deliveryGraph.workspaceEntityProjections({query:{...t.query.length===0?{}:{q:t.query},...t.owner===`all`?{}:{owner:t.owner},...t.service===`all`?{}:{service:t.service},...t.status===`all`?{}:{status:t.status},...t.type===`all`?{}:{type:t.type}}})}).pipe(a(o)),{signal:e})},f=(e,t,n,r,i,a,o=d)=>{let[s,f]=(0,l.useState)(0),[p,m]=(0,l.useState)({_tag:`idle`}),h=[...t].join(`:`),g=(0,l.useMemo)(()=>({owner:n.owner,query:n.query,service:n.service,status:n.status,type:n.type}),[n.owner,n.query,n.service,n.status,n.type]),_=`${e}|${h}|${r}|${`${g.query}|${g.owner}|${g.service}|${g.status}|${g.type}`}`;(0,l.useEffect)(()=>{if(i===null){m({_tag:`idle`});return}let n=new AbortController;return m(e=>e._tag===`ready`&&e.sessionKey===i?e:{_tag:`loading`,scopeKey:_,sessionKey:i}),o.load(n.signal,g).then(r=>{n.signal.aborted||m({_tag:`ready`,items:c(e,r,t),matchedCount:r.matchedCount,ownerOptions:r.ownerOptions,ownerOptionsTruncated:r.ownerOptionsTruncated,refreshing:!1,scopeKey:_,sessionKey:i,totalCount:r.totalCount,truncated:r.truncated})},e=>{n.signal.aborted||(u(e)&&a(i),m({_tag:`failed`,scopeKey:_,sessionKey:i}))}),()=>n.abort()},[a,g,s,t,_,i,o,e]);let v=i===null?{_tag:`idle`}:p._tag===`idle`||p.sessionKey!==i?{_tag:`loading`,scopeKey:_,sessionKey:i}:p._tag===`ready`&&p.scopeKey!==_?{...p,refreshing:!0}:p._tag!==`ready`&&p.scopeKey!==_?{_tag:`loading`,scopeKey:_,sessionKey:i}:p;return{retry:(0,l.useCallback)(()=>f(e=>e+1),[]),state:v}};export{f as n,d as t};
2
+ //# sourceMappingURL=useWorkspaceItems-B-7JHtm0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWorkspaceItems-B1X-JNwq.js","names":[],"sources":["../../../src/client/items/useWorkspaceItems.ts"],"sourcesContent":["import * as Effect from \"effect/Effect\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\nimport { useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { WorkspaceEntityProjectionIndex } from \"../../api/deliveryGraph.js\"\nimport type {\n DeliveryEntityKind,\n DeliveryEntityService,\n DeliveryEntityStatusGroup\n} from \"../../domain/deliveryGraph.js\"\nimport type { PersonId, ReleaseId, WorkspaceId } from \"../../domain/identifiers.js\"\nimport { presentWorkspaceEntityIndex, type WorkspaceItemPresentation } from \"./presentWorkspaceItems.js\"\n\nexport type WorkspaceItemsState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\"; readonly scopeKey: string; readonly sessionKey: string }\n | { readonly _tag: \"failed\"; readonly scopeKey: string; readonly sessionKey: string }\n | {\n readonly _tag: \"ready\"\n readonly items: ReadonlyArray<WorkspaceItemPresentation>\n readonly matchedCount: number\n readonly ownerOptions: WorkspaceEntityProjectionIndex[\"ownerOptions\"]\n readonly ownerOptionsTruncated: boolean\n readonly refreshing: boolean\n readonly scopeKey: string\n readonly sessionKey: string\n readonly truncated: boolean\n readonly totalCount: number\n }\n\nexport interface WorkspaceItemsQuery {\n readonly owner: PersonId | \"all\"\n readonly query: string\n readonly service: DeliveryEntityService | \"all\"\n readonly status: DeliveryEntityStatusGroup | \"all\"\n readonly type: DeliveryEntityKind | \"all\"\n}\n\nexport interface WorkspaceItemsTransport {\n readonly load: (signal: AbortSignal, query: WorkspaceItemsQuery) => Promise<WorkspaceEntityProjectionIndex>\n}\n\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Generated-client transport for the authenticated workspace entity index. */\nexport const browserWorkspaceItemsTransport: WorkspaceItemsTransport = {\n load: (signal, query) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.deliveryGraph.workspaceEntityProjections({\n query: {\n ...(query.query.length === 0 ? {} : { q: query.query }),\n ...(query.owner === \"all\" ? {} : { owner: query.owner }),\n ...(query.service === \"all\" ? {} : { service: query.service }),\n ...(query.status === \"all\" ? {} : { status: query.status }),\n ...(query.type === \"all\" ? {} : { type: query.type })\n }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\n/** Keep one bounded workspace entity index scoped to the exact browser session. */\nexport const useWorkspaceItems = (\n workspaceId: WorkspaceId,\n routableReleaseIds: ReadonlySet<ReleaseId>,\n filters: WorkspaceItemsQuery,\n refreshKey: string,\n sessionKey: string | null,\n onSessionExpired: (sessionKey: string) => void,\n transport: WorkspaceItemsTransport = browserWorkspaceItemsTransport\n): { readonly retry: () => void; readonly state: WorkspaceItemsState } => {\n const [requestRevision, setRequestRevision] = useState(0)\n const [state, setState] = useState<WorkspaceItemsState>({ _tag: \"idle\" })\n const releaseScopeKey = [...routableReleaseIds].join(\":\")\n const query = useMemo<WorkspaceItemsQuery>(() => ({\n owner: filters.owner,\n query: filters.query,\n service: filters.service,\n status: filters.status,\n type: filters.type\n }), [filters.owner, filters.query, filters.service, filters.status, filters.type])\n const filterScopeKey = `${query.query}|${query.owner}|${query.service}|${query.status}|${query.type}`\n const scopeKey = `${workspaceId}|${releaseScopeKey}|${refreshKey}|${filterScopeKey}`\n\n useEffect(() => {\n if (sessionKey === null) {\n setState({ _tag: \"idle\" })\n return\n }\n const abort = new AbortController()\n setState((current) =>\n current._tag === \"ready\" && current.sessionKey === sessionKey\n ? current\n : { _tag: \"loading\", scopeKey, sessionKey }\n )\n transport.load(abort.signal, query).then(\n (index) => {\n if (abort.signal.aborted) return\n setState({\n _tag: \"ready\",\n items: presentWorkspaceEntityIndex(workspaceId, index, routableReleaseIds),\n matchedCount: index.matchedCount,\n ownerOptions: index.ownerOptions,\n ownerOptionsTruncated: index.ownerOptionsTruncated,\n refreshing: false,\n scopeKey,\n sessionKey,\n totalCount: index.totalCount,\n truncated: index.truncated\n })\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ _tag: \"failed\", scopeKey, sessionKey })\n }\n )\n return () => abort.abort()\n }, [onSessionExpired, query, requestRevision, routableReleaseIds, scopeKey, sessionKey, transport, workspaceId])\n\n const currentState: WorkspaceItemsState = sessionKey === null\n ? { _tag: \"idle\" }\n : state._tag === \"idle\" || state.sessionKey !== sessionKey\n ? { _tag: \"loading\", scopeKey, sessionKey }\n : state._tag === \"ready\" && state.scopeKey !== scopeKey\n ? { ...state, refreshing: true }\n : state._tag !== \"ready\" && state.scopeKey !== scopeKey\n ? { _tag: \"loading\", scopeKey, sessionKey }\n : state\n\n return {\n retry: useCallback(() => setRequestRevision((revision) => revision + 1), []),\n state: currentState\n }\n}\n"],"mappings":"kRA4CM,EAAwB,EAAmB,sBAAsB,EAG1D,EAA0D,CACrE,MAAO,EAAQ,IACb,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,cAAc,2BAA2B,CAC5D,MAAO,CACL,GAAI,EAAM,MAAM,SAAW,EAAI,CAAC,EAAI,CAAE,EAAG,EAAM,KAAM,EACrD,GAAI,EAAM,QAAU,MAAQ,CAAC,EAAI,CAAE,MAAO,EAAM,KAAM,EACtD,GAAI,EAAM,UAAY,MAAQ,CAAC,EAAI,CAAE,QAAS,EAAM,OAAQ,EAC5D,GAAI,EAAM,SAAW,MAAQ,CAAC,EAAI,CAAE,OAAQ,EAAM,MAAO,EACzD,GAAI,EAAM,OAAS,MAAQ,CAAC,EAAI,CAAE,KAAM,EAAM,IAAK,CACrD,CACF,CAAC,CACH,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ,EAGa,GACX,EACA,EACA,EACA,EACA,EACA,EACA,EAAqC,IACmC,CACxE,GAAM,CAAC,EAAiB,IAAA,EAAA,EAAA,SAAA,CAA+B,CAAC,EAClD,CAAC,EAAO,IAAA,EAAA,EAAA,SAAA,CAA0C,CAAE,KAAM,MAAO,CAAC,EAClE,EAAkB,CAAC,GAAG,CAAkB,CAAC,CAAC,KAAK,GAAG,EAClD,GAAA,EAAA,EAAA,QAAA,MAA4C,CAChD,MAAO,EAAQ,MACf,MAAO,EAAQ,MACf,QAAS,EAAQ,QACjB,OAAQ,EAAQ,OAChB,KAAM,EAAQ,IAChB,GAAI,CAAC,EAAQ,MAAO,EAAQ,MAAO,EAAQ,QAAS,EAAQ,OAAQ,EAAQ,IAAI,CAAC,EAE3E,EAAW,GAAG,EAAY,GAAG,EAAgB,GAAG,EAAW,GAAG,GAD1C,EAAM,MAAM,GAAG,EAAM,MAAM,GAAG,EAAM,QAAQ,GAAG,EAAM,OAAO,GAAG,EAAM,UAG/F,EAAA,EAAA,UAAA,KAAgB,CACd,GAAI,IAAe,KAAM,CACvB,EAAS,CAAE,KAAM,MAAO,CAAC,EACzB,MACF,CACA,IAAM,EAAQ,IAAI,gBA4BlB,OA3BA,EAAU,GACR,EAAQ,OAAS,SAAW,EAAQ,aAAe,EAC/C,EACA,CAAE,KAAM,UAAW,WAAU,YAAW,CAC9C,EACA,EAAU,KAAK,EAAM,OAAQ,CAAK,CAAC,CAAC,KACjC,GAAU,CACL,EAAM,OAAO,SACjB,EAAS,CACP,KAAM,QACN,MAAO,EAA4B,EAAa,EAAO,CAAkB,EACzE,aAAc,EAAM,aACpB,aAAc,EAAM,aACpB,sBAAuB,EAAM,sBAC7B,WAAY,GACZ,WACA,aACA,WAAY,EAAM,WAClB,UAAW,EAAM,SACnB,CAAC,CACH,EACC,GAAY,CACP,EAAM,OAAO,UACb,EAAsB,CAAO,GAAG,EAAiB,CAAU,EAC/D,EAAS,CAAE,KAAM,SAAU,WAAU,YAAW,CAAC,EACnD,CACF,MACa,EAAM,MAAM,CAC3B,EAAG,CAAC,EAAkB,EAAO,EAAiB,EAAoB,EAAU,EAAY,EAAW,CAAW,CAAC,EAE/G,IAAM,EAAoC,IAAe,KACrD,CAAE,KAAM,MAAO,EACf,EAAM,OAAS,QAAU,EAAM,aAAe,EAC9C,CAAE,KAAM,UAAW,WAAU,YAAW,EACxC,EAAM,OAAS,SAAW,EAAM,WAAa,EAC7C,CAAE,GAAG,EAAO,WAAY,EAAK,EAC7B,EAAM,OAAS,SAAW,EAAM,WAAa,EAC7C,CAAE,KAAM,UAAW,WAAU,YAAW,EACxC,EAEJ,MAAO,CACL,OAAA,EAAA,EAAA,YAAA,KAAyB,EAAoB,GAAa,EAAW,CAAC,EAAG,CAAC,CAAC,EAC3E,MAAO,CACT,CACF"}
1
+ {"version":3,"file":"useWorkspaceItems-B-7JHtm0.js","names":[],"sources":["../../../src/client/items/useWorkspaceItems.ts"],"sourcesContent":["import * as Effect from \"effect/Effect\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\nimport { useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { WorkspaceEntityProjectionIndex } from \"../../api/deliveryGraph.js\"\nimport type {\n DeliveryEntityKind,\n DeliveryEntityService,\n DeliveryEntityStatusGroup\n} from \"../../domain/deliveryGraph.js\"\nimport type { PersonId, ReleaseId, WorkspaceId } from \"../../domain/identifiers.js\"\nimport { presentWorkspaceEntityIndex, type WorkspaceItemPresentation } from \"./presentWorkspaceItems.js\"\n\nexport type WorkspaceItemsState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\"; readonly scopeKey: string; readonly sessionKey: string }\n | { readonly _tag: \"failed\"; readonly scopeKey: string; readonly sessionKey: string }\n | {\n readonly _tag: \"ready\"\n readonly items: ReadonlyArray<WorkspaceItemPresentation>\n readonly matchedCount: number\n readonly ownerOptions: WorkspaceEntityProjectionIndex[\"ownerOptions\"]\n readonly ownerOptionsTruncated: boolean\n readonly refreshing: boolean\n readonly scopeKey: string\n readonly sessionKey: string\n readonly truncated: boolean\n readonly totalCount: number\n }\n\nexport interface WorkspaceItemsQuery {\n readonly owner: PersonId | \"all\"\n readonly query: string\n readonly service: DeliveryEntityService | \"all\"\n readonly status: DeliveryEntityStatusGroup | \"all\"\n readonly type: DeliveryEntityKind | \"all\"\n}\n\nexport interface WorkspaceItemsTransport {\n readonly load: (signal: AbortSignal, query: WorkspaceItemsQuery) => Promise<WorkspaceEntityProjectionIndex>\n}\n\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\n\n/** Generated-client transport for the authenticated workspace entity index. */\nexport const browserWorkspaceItemsTransport: WorkspaceItemsTransport = {\n load: (signal, query) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.deliveryGraph.workspaceEntityProjections({\n query: {\n ...(query.query.length === 0 ? {} : { q: query.query }),\n ...(query.owner === \"all\" ? {} : { owner: query.owner }),\n ...(query.service === \"all\" ? {} : { service: query.service }),\n ...(query.status === \"all\" ? {} : { status: query.status }),\n ...(query.type === \"all\" ? {} : { type: query.type })\n }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\n/** Keep one bounded workspace entity index scoped to the exact browser session. */\nexport const useWorkspaceItems = (\n workspaceId: WorkspaceId,\n routableReleaseIds: ReadonlySet<ReleaseId>,\n filters: WorkspaceItemsQuery,\n refreshKey: string,\n sessionKey: string | null,\n onSessionExpired: (sessionKey: string) => void,\n transport: WorkspaceItemsTransport = browserWorkspaceItemsTransport\n): { readonly retry: () => void; readonly state: WorkspaceItemsState } => {\n const [requestRevision, setRequestRevision] = useState(0)\n const [state, setState] = useState<WorkspaceItemsState>({ _tag: \"idle\" })\n const releaseScopeKey = [...routableReleaseIds].join(\":\")\n const query = useMemo<WorkspaceItemsQuery>(() => ({\n owner: filters.owner,\n query: filters.query,\n service: filters.service,\n status: filters.status,\n type: filters.type\n }), [filters.owner, filters.query, filters.service, filters.status, filters.type])\n const filterScopeKey = `${query.query}|${query.owner}|${query.service}|${query.status}|${query.type}`\n const scopeKey = `${workspaceId}|${releaseScopeKey}|${refreshKey}|${filterScopeKey}`\n\n useEffect(() => {\n if (sessionKey === null) {\n setState({ _tag: \"idle\" })\n return\n }\n const abort = new AbortController()\n setState((current) =>\n current._tag === \"ready\" && current.sessionKey === sessionKey\n ? current\n : { _tag: \"loading\", scopeKey, sessionKey }\n )\n transport.load(abort.signal, query).then(\n (index) => {\n if (abort.signal.aborted) return\n setState({\n _tag: \"ready\",\n items: presentWorkspaceEntityIndex(workspaceId, index, routableReleaseIds),\n matchedCount: index.matchedCount,\n ownerOptions: index.ownerOptions,\n ownerOptionsTruncated: index.ownerOptionsTruncated,\n refreshing: false,\n scopeKey,\n sessionKey,\n totalCount: index.totalCount,\n truncated: index.truncated\n })\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ _tag: \"failed\", scopeKey, sessionKey })\n }\n )\n return () => abort.abort()\n }, [onSessionExpired, query, requestRevision, routableReleaseIds, scopeKey, sessionKey, transport, workspaceId])\n\n const currentState: WorkspaceItemsState = sessionKey === null\n ? { _tag: \"idle\" }\n : state._tag === \"idle\" || state.sessionKey !== sessionKey\n ? { _tag: \"loading\", scopeKey, sessionKey }\n : state._tag === \"ready\" && state.scopeKey !== scopeKey\n ? { ...state, refreshing: true }\n : state._tag !== \"ready\" && state.scopeKey !== scopeKey\n ? { _tag: \"loading\", scopeKey, sessionKey }\n : state\n\n return {\n retry: useCallback(() => setRequestRevision((revision) => revision + 1), []),\n state: currentState\n }\n}\n"],"mappings":"kRA4CM,EAAwB,EAAmB,sBAAsB,EAG1D,EAA0D,CACrE,MAAO,EAAQ,IACb,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,cAAc,2BAA2B,CAC5D,MAAO,CACL,GAAI,EAAM,MAAM,SAAW,EAAI,CAAC,EAAI,CAAE,EAAG,EAAM,KAAM,EACrD,GAAI,EAAM,QAAU,MAAQ,CAAC,EAAI,CAAE,MAAO,EAAM,KAAM,EACtD,GAAI,EAAM,UAAY,MAAQ,CAAC,EAAI,CAAE,QAAS,EAAM,OAAQ,EAC5D,GAAI,EAAM,SAAW,MAAQ,CAAC,EAAI,CAAE,OAAQ,EAAM,MAAO,EACzD,GAAI,EAAM,OAAS,MAAQ,CAAC,EAAI,CAAE,KAAM,EAAM,IAAK,CACrD,CACF,CAAC,CACH,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ,EAGa,GACX,EACA,EACA,EACA,EACA,EACA,EACA,EAAqC,IACmC,CACxE,GAAM,CAAC,EAAiB,IAAA,EAAA,EAAA,SAAA,CAA+B,CAAC,EAClD,CAAC,EAAO,IAAA,EAAA,EAAA,SAAA,CAA0C,CAAE,KAAM,MAAO,CAAC,EAClE,EAAkB,CAAC,GAAG,CAAkB,CAAC,CAAC,KAAK,GAAG,EAClD,GAAA,EAAA,EAAA,QAAA,MAA4C,CAChD,MAAO,EAAQ,MACf,MAAO,EAAQ,MACf,QAAS,EAAQ,QACjB,OAAQ,EAAQ,OAChB,KAAM,EAAQ,IAChB,GAAI,CAAC,EAAQ,MAAO,EAAQ,MAAO,EAAQ,QAAS,EAAQ,OAAQ,EAAQ,IAAI,CAAC,EAE3E,EAAW,GAAG,EAAY,GAAG,EAAgB,GAAG,EAAW,GAAG,GAD1C,EAAM,MAAM,GAAG,EAAM,MAAM,GAAG,EAAM,QAAQ,GAAG,EAAM,OAAO,GAAG,EAAM,UAG/F,EAAA,EAAA,UAAA,KAAgB,CACd,GAAI,IAAe,KAAM,CACvB,EAAS,CAAE,KAAM,MAAO,CAAC,EACzB,MACF,CACA,IAAM,EAAQ,IAAI,gBA4BlB,OA3BA,EAAU,GACR,EAAQ,OAAS,SAAW,EAAQ,aAAe,EAC/C,EACA,CAAE,KAAM,UAAW,WAAU,YAAW,CAC9C,EACA,EAAU,KAAK,EAAM,OAAQ,CAAK,CAAC,CAAC,KACjC,GAAU,CACL,EAAM,OAAO,SACjB,EAAS,CACP,KAAM,QACN,MAAO,EAA4B,EAAa,EAAO,CAAkB,EACzE,aAAc,EAAM,aACpB,aAAc,EAAM,aACpB,sBAAuB,EAAM,sBAC7B,WAAY,GACZ,WACA,aACA,WAAY,EAAM,WAClB,UAAW,EAAM,SACnB,CAAC,CACH,EACC,GAAY,CACP,EAAM,OAAO,UACb,EAAsB,CAAO,GAAG,EAAiB,CAAU,EAC/D,EAAS,CAAE,KAAM,SAAU,WAAU,YAAW,CAAC,EACnD,CACF,MACa,EAAM,MAAM,CAC3B,EAAG,CAAC,EAAkB,EAAO,EAAiB,EAAoB,EAAU,EAAY,EAAW,CAAW,CAAC,EAE/G,IAAM,EAAoC,IAAe,KACrD,CAAE,KAAM,MAAO,EACf,EAAM,OAAS,QAAU,EAAM,aAAe,EAC9C,CAAE,KAAM,UAAW,WAAU,YAAW,EACxC,EAAM,OAAS,SAAW,EAAM,WAAa,EAC7C,CAAE,GAAG,EAAO,WAAY,EAAK,EAC7B,EAAM,OAAS,SAAW,EAAM,WAAa,EAC7C,CAAE,KAAM,UAAW,WAAU,YAAW,EACxC,EAEJ,MAAO,CACL,OAAA,EAAA,EAAA,YAAA,KAAyB,EAAoB,GAAa,EAAW,CAAC,EAAG,CAAC,CAAC,EAC3E,MAAO,CACT,CACF"}
@@ -0,0 +1,2 @@
1
+ import{c as e,s as t}from"./index-zVjlBm9l.js";import{An as n,Dn as r,Jt as i,Mn as a,Nn as o,ga as s,ha as c,ln as l,on as u,qn as d}from"./agent-api-Dl9TuGOJ.js";import{t as f,u as p}from"./releaseRoutes-B4ciNOJj.js";import{t as m}from"./workspaceEntityPaths-xAl2jRFm.js";var h=o({hash:a,pathname:a,search:a,state:n(f)}),g=o({entityOrigin:o({_tag:r(`entity-origin/v2`),entityId:i,origin:h,workspaceId:l})}),_=e=>{if(e.includes(`?`)||e.includes(`#`))return null;let t=e.split(`/`);if(t.length!==5||t[0]!==``||t[1]!==`w`||t[3]!==`items`)return null;let n=d(l)(t[2]),r=d(i)(t[4]);return s(n)&&s(r)?{entityId:r.value,workspaceId:n.value}:null},v=e=>{let t=d(i)(e);return s(t)?t.value:null},y=e=>({hash:``,pathname:m(e),search:``,state:null}),b=e=>e.length<=2048&&(e.length===0||e.startsWith(`?`)),x=e=>e.length<=1024&&(e.length===0||e.startsWith(`#`)),S=(e,t)=>{if(e.length!==5&&e.length!==6||e[0]!==``||e[1]!==`w`||e[2]!==t||e[3]!==`releases`)return null;let n=d(u)(e[4]);return c(n)||e.length===6&&e[5]!==`preview`?null:{releaseId:n.value,workspaceId:t}},C=(e,t)=>{if(e.length>2048)return!1;let n=e.split(`/`);return n[0]!==``||n[1]!==`w`||n[2]!==t?!1:n.length===4?[`overview`,`work`,`items`,`timeline`].includes(n[3]??``):S(n,t)!==null},w=({hash:e,pathname:t,search:n,state:r})=>{let i=d(l)(t.split(`/`)[2]),a=s(i)?S(t.split(`/`),i.value):null;return{hash:e,pathname:t,search:n,state:a===null?null:p(r,a.workspaceId,a.releaseId)}},T=(e,t)=>{if(!C(e.pathname,t)||!b(e.search)||!x(e.hash))return!1;if(e.state===null)return!0;let n=S(e.pathname.split(`/`),t);return n!==null&&p(e.state,t,n.releaseId)!==null},E=(e,t)=>{let n=d(g)(e);if(c(n))return null;let r=n.value.entityOrigin;return r.workspaceId===t&&T(r.origin,t)?r.origin:null},D=(e,t,n,r)=>({entityOrigin:{_tag:`entity-origin/v2`,entityId:n,origin:E(e,t)??(T(r,t)?r:y(t)),workspaceId:t}}),O=(e,t,n)=>{let r=y(t),i=d(g)(e);if(c(i))return{isStored:!1,origin:r};let a=i.value.entityOrigin;return a.workspaceId===t&&a.entityId===n&&T(a.origin,t)?{isStored:!0,origin:a.origin}:{isStored:!1,origin:r}},k=({hash:e,pathname:t,search:n})=>`${t}${n}${e}`,A=(n,r,i,a,o)=>{let s=S(n.pathname.split(`/`),r),c=a.canonicalReleaseId,l=s===null?a.releaseMembershipsTruncated||a.releaseIds.length!==1||a.releaseIds[0]!==c||c===null||!o.has(c)?null:c:!a.releaseMembershipsTruncated&&a.releaseIds.includes(s.releaseId)&&o.has(s.releaseId)?s.releaseId:null;if(l!==null)return e(r,l,i.pathname);let u=_(i.pathname);if(u===null||u.workspaceId!==r)return t(i.pathname,i.search,i.hash);let d=new URLSearchParams(n.pathname===m(r)?n.search:``);return d.set(`object`,u.entityId),t(m(r),`?${d.toString()}`,`#item-details`)};export{A as a,O as i,w as n,k as o,D as r,_ as s,v as t};
2
+ //# sourceMappingURL=workspaceEntityRoutes-DqqDa0AB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceEntityRoutes-DqqDa0AB.js","names":[],"sources":["../../../src/client/items/workspaceEntityRoutes.ts"],"sourcesContent":["import * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\n\nimport {\n EntityId,\n type EntityId as EntityIdType,\n ReleaseId,\n type ReleaseId as ReleaseIdType,\n WorkspaceId,\n type WorkspaceId as WorkspaceIdType\n} from \"../../domain/identifiers.js\"\nimport { contextualAgentPath, contextualReleaseAgentPath } from \"../contextualAgentPath.js\"\nimport { releaseAgentPath } from \"../releases/releasePaths.js\"\nimport { type ReleaseRouteState, ReleaseRouteStateSchema, retainReleaseRouteState } from \"../releases/releaseRoutes.js\"\nimport { workspaceEntityParentPath } from \"../workspaceEntityPaths.js\"\n\nexport { workspaceEntityParentPath, workspaceEntityPath } from \"../workspaceEntityPaths.js\"\n\n/** Exact in-application location preserved while a canonical entity route is open. */\nexport interface WorkspaceEntityOrigin {\n readonly hash: string\n readonly pathname: string\n readonly search: string\n readonly state: ReleaseRouteState | null\n}\n\n/** Versioned, bounded router state for one canonical entity activation. */\nexport interface WorkspaceEntityRouteState {\n readonly entityOrigin: {\n readonly _tag: \"entity-origin/v2\"\n readonly entityId: EntityIdType\n readonly origin: WorkspaceEntityOrigin\n readonly workspaceId: WorkspaceIdType\n }\n}\n\n/** Decoded entity origin plus whether it came from trusted matching history state. */\nexport interface ResolvedWorkspaceEntityOrigin {\n readonly isStored: boolean\n readonly origin: WorkspaceEntityOrigin\n}\n\n/** Decoded target of one exact canonical workspace entity href. */\nexport interface WorkspaceEntityTarget {\n readonly entityId: EntityIdType\n readonly workspaceId: WorkspaceIdType\n}\n\n/** Release membership evidence used to select an unambiguous entity-owned agent thread. */\nexport interface WorkspaceEntityReleaseContext {\n readonly canonicalReleaseId: ReleaseIdType | null\n readonly releaseIds: ReadonlyArray<ReleaseIdType>\n readonly releaseMembershipsTruncated: boolean\n}\n\ninterface LocationParts {\n readonly hash: string\n readonly pathname: string\n readonly search: string\n readonly state?: unknown\n}\n\nconst WorkspaceEntityOriginSchema = Schema.Struct({\n hash: Schema.String,\n pathname: Schema.String,\n search: Schema.String,\n state: Schema.NullOr(ReleaseRouteStateSchema)\n})\n\nconst WorkspaceEntityRouteStateSchema = Schema.Struct({\n entityOrigin: Schema.Struct({\n _tag: Schema.Literal(\"entity-origin/v2\"),\n entityId: EntityId,\n origin: WorkspaceEntityOriginSchema,\n workspaceId: WorkspaceId\n })\n})\n\n/** Decode only an exact canonical entity path, rejecting query, hash, and extra path material. */\nexport const workspaceEntityTargetFromHref = (href: string): WorkspaceEntityTarget | null => {\n if (href.includes(\"?\") || href.includes(\"#\")) return null\n const parts = href.split(\"/\")\n if (parts.length !== 5 || parts[0] !== \"\" || parts[1] !== \"w\" || parts[3] !== \"items\") return null\n const workspaceId = Schema.decodeUnknownOption(WorkspaceId)(parts[2])\n const entityId = Schema.decodeUnknownOption(EntityId)(parts[4])\n return Option.isSome(workspaceId) && Option.isSome(entityId)\n ? { entityId: entityId.value, workspaceId: workspaceId.value }\n : null\n}\n\n/** Decode one entity route segment at the browser boundary. */\nexport const decodeEntityRouteId = (value: unknown): EntityIdType | null => {\n const decoded = Schema.decodeUnknownOption(EntityId)(value)\n return Option.isSome(decoded) ? decoded.value : null\n}\n\nconst fallbackOrigin = (workspaceId: WorkspaceIdType): WorkspaceEntityOrigin => ({\n hash: \"\",\n pathname: workspaceEntityParentPath(workspaceId),\n search: \"\",\n state: null\n})\n\nconst isSearch = (search: string): boolean => search.length <= 2_048 && (search.length === 0 || search.startsWith(\"?\"))\n\nconst isHash = (hash: string): boolean => hash.length <= 1_024 && (hash.length === 0 || hash.startsWith(\"#\"))\n\nconst releaseOriginTarget = (\n parts: ReadonlyArray<string>,\n workspaceId: WorkspaceIdType\n): { readonly releaseId: ReleaseIdType; readonly workspaceId: WorkspaceIdType } | null => {\n if (parts.length !== 5 && parts.length !== 6) return null\n if (parts[0] !== \"\" || parts[1] !== \"w\" || parts[2] !== workspaceId || parts[3] !== \"releases\") return null\n const releaseId = Schema.decodeUnknownOption(ReleaseId)(parts[4])\n if (Option.isNone(releaseId) || (parts.length === 6 && parts[5] !== \"preview\")) return null\n return { releaseId: releaseId.value, workspaceId }\n}\n\nconst isRecognizedOriginPath = (pathname: string, workspaceId: WorkspaceIdType): boolean => {\n if (pathname.length > 2_048) return false\n const parts = pathname.split(\"/\")\n if (parts[0] !== \"\" || parts[1] !== \"w\" || parts[2] !== workspaceId) return false\n if (parts.length === 4) return [\"overview\", \"work\", \"items\", \"timeline\"].includes(parts[3] ?? \"\")\n return releaseOriginTarget(parts, workspaceId) !== null\n}\n\n/** Capture an exact location while retaining only matching, bounded release origin state. */\nexport const entityOriginFromLocation = ({\n hash,\n pathname,\n search,\n state\n}: LocationParts): WorkspaceEntityOrigin => {\n const workspaceId = Schema.decodeUnknownOption(WorkspaceId)(pathname.split(\"/\")[2])\n const target = Option.isSome(workspaceId) ? releaseOriginTarget(pathname.split(\"/\"), workspaceId.value) : null\n return {\n hash,\n pathname,\n search,\n state: target === null ? null : retainReleaseRouteState(state, target.workspaceId, target.releaseId)\n }\n}\n\n/** Confirm an origin is bounded and belongs to a supported page in the exact workspace. */\nexport const isSafeWorkspaceEntityOrigin = (\n origin: WorkspaceEntityOrigin,\n workspaceId: WorkspaceIdType\n): boolean => {\n if (!isRecognizedOriginPath(origin.pathname, workspaceId) || !isSearch(origin.search) || !isHash(origin.hash)) {\n return false\n }\n if (origin.state === null) return true\n const target = releaseOriginTarget(origin.pathname.split(\"/\"), workspaceId)\n return target !== null && retainReleaseRouteState(origin.state, workspaceId, target.releaseId) !== null\n}\n\nconst reusableStoredOrigin = (\n state: unknown,\n workspaceId: WorkspaceIdType\n): WorkspaceEntityOrigin | null => {\n const decoded = Schema.decodeUnknownOption(WorkspaceEntityRouteStateSchema)(state)\n if (Option.isNone(decoded)) return null\n const marker = decoded.value.entityOrigin\n return marker.workspaceId === workspaceId && isSafeWorkspaceEntityOrigin(marker.origin, workspaceId)\n ? marker.origin\n : null\n}\n\n/**\n * Construct bounded entity route state.\n *\n * A previously validated entity origin is carried through related-entity navigation so the\n * shell's explicit Back action still returns to the root activation surface.\n */\nexport const makeWorkspaceEntityRouteState = (\n state: unknown,\n workspaceId: WorkspaceIdType,\n entityId: EntityIdType,\n origin: WorkspaceEntityOrigin\n): WorkspaceEntityRouteState => ({\n entityOrigin: {\n _tag: \"entity-origin/v2\",\n entityId,\n origin: reusableStoredOrigin(state, workspaceId) ??\n (isSafeWorkspaceEntityOrigin(origin, workspaceId) ? origin : fallbackOrigin(workspaceId)),\n workspaceId\n }\n})\n\n/** Decode safe history state for the exact workspace/entity pair or use the Items parent. */\nexport const resolveWorkspaceEntityOrigin = (\n state: unknown,\n workspaceId: WorkspaceIdType,\n entityId: EntityIdType\n): ResolvedWorkspaceEntityOrigin => {\n const fallback = fallbackOrigin(workspaceId)\n const decoded = Schema.decodeUnknownOption(WorkspaceEntityRouteStateSchema)(state)\n if (Option.isNone(decoded)) return { isStored: false, origin: fallback }\n const marker = decoded.value.entityOrigin\n return marker.workspaceId === workspaceId &&\n marker.entityId === entityId &&\n isSafeWorkspaceEntityOrigin(marker.origin, workspaceId)\n ? { isStored: true, origin: marker.origin }\n : { isStored: false, origin: fallback }\n}\n\n/** Serialize an exact validated origin for React Router navigation. */\nexport const workspaceEntityOriginHref = ({\n hash,\n pathname,\n search\n}: WorkspaceEntityOrigin): string => `${pathname}${search}${hash}`\n\n/** Resolve a release-owned agent thread only when the stored origin is an exact release route. */\nexport const workspaceEntityOriginAgentPath = (\n origin: WorkspaceEntityOrigin,\n workspaceId: WorkspaceIdType,\n routableReleaseIds: ReadonlySet<ReleaseIdType>\n): string | null => {\n const target = releaseOriginTarget(origin.pathname.split(\"/\"), workspaceId)\n return target === null || !routableReleaseIds.has(target.releaseId)\n ? null\n : releaseAgentPath(target.workspaceId, target.releaseId)\n}\n\n/** Keep entity actions in a release-owned thread, falling back to the current-page context. */\nexport const workspaceEntityAgentPath = (\n origin: WorkspaceEntityOrigin,\n workspaceId: WorkspaceIdType,\n current: Pick<LocationParts, \"hash\" | \"pathname\" | \"search\">,\n releaseContext: WorkspaceEntityReleaseContext,\n routableReleaseIds: ReadonlySet<ReleaseIdType>\n): string => {\n const originRelease = releaseOriginTarget(origin.pathname.split(\"/\"), workspaceId)\n const canonicalReleaseId = releaseContext.canonicalReleaseId\n const releaseTargetId = originRelease === null\n ? releaseContext.releaseMembershipsTruncated ||\n releaseContext.releaseIds.length !== 1 ||\n releaseContext.releaseIds[0] !== canonicalReleaseId ||\n canonicalReleaseId === null ||\n !routableReleaseIds.has(canonicalReleaseId)\n ? null\n : canonicalReleaseId\n : !releaseContext.releaseMembershipsTruncated &&\n releaseContext.releaseIds.includes(originRelease.releaseId) &&\n routableReleaseIds.has(originRelease.releaseId)\n ? originRelease.releaseId\n : null\n if (releaseTargetId !== null) {\n return contextualReleaseAgentPath(workspaceId, releaseTargetId, current.pathname)\n }\n\n const entity = workspaceEntityTargetFromHref(current.pathname)\n if (entity === null || entity.workspaceId !== workspaceId) {\n return contextualAgentPath(current.pathname, current.search, current.hash)\n }\n const itemSearch = new URLSearchParams(\n origin.pathname === workspaceEntityParentPath(workspaceId) ? origin.search : \"\"\n )\n itemSearch.set(\"object\", entity.entityId)\n return contextualAgentPath(\n workspaceEntityParentPath(workspaceId),\n `?${itemSearch.toString()}`,\n \"#item-details\"\n )\n}\n"],"mappings":"kRA8DA,IAAM,EAA8B,EAAc,CAChD,KAAM,EACN,SAAU,EACV,OAAQ,EACR,MAAO,EAAc,CAAuB,CAC9C,CAAC,EAEK,EAAkC,EAAc,CACpD,aAAc,EAAc,CAC1B,KAAM,EAAe,kBAAkB,EACvC,SAAU,EACV,OAAQ,EACR,YAAa,CACf,CAAC,CACH,CAAC,EAGY,EAAiC,GAA+C,CAC3F,GAAI,EAAK,SAAS,GAAG,GAAK,EAAK,SAAS,GAAG,EAAG,OAAO,KACrD,IAAM,EAAQ,EAAK,MAAM,GAAG,EAC5B,GAAI,EAAM,SAAW,GAAK,EAAM,KAAO,IAAM,EAAM,KAAO,KAAO,EAAM,KAAO,QAAS,OAAO,KAC9F,IAAM,EAAc,EAA2B,CAAW,CAAC,CAAC,EAAM,EAAE,EAC9D,EAAW,EAA2B,CAAQ,CAAC,CAAC,EAAM,EAAE,EAC9D,OAAO,EAAc,CAAW,GAAK,EAAc,CAAQ,EACvD,CAAE,SAAU,EAAS,MAAO,YAAa,EAAY,KAAM,EAC3D,IACN,EAGa,EAAuB,GAAwC,CAC1E,IAAM,EAAU,EAA2B,CAAQ,CAAC,CAAC,CAAK,EAC1D,OAAO,EAAc,CAAO,EAAI,EAAQ,MAAQ,IAClD,EAEM,EAAkB,IAAyD,CAC/E,KAAM,GACN,SAAU,EAA0B,CAAW,EAC/C,OAAQ,GACR,MAAO,IACT,GAEM,EAAY,GAA4B,EAAO,QAAU,OAAU,EAAO,SAAW,GAAK,EAAO,WAAW,GAAG,GAE/G,EAAU,GAA0B,EAAK,QAAU,OAAU,EAAK,SAAW,GAAK,EAAK,WAAW,GAAG,GAErG,GACJ,EACA,IACwF,CAExF,GADI,EAAM,SAAW,GAAK,EAAM,SAAW,GACvC,EAAM,KAAO,IAAM,EAAM,KAAO,KAAO,EAAM,KAAO,GAAe,EAAM,KAAO,WAAY,OAAO,KACvG,IAAM,EAAY,EAA2B,CAAS,CAAC,CAAC,EAAM,EAAE,EAEhE,OADI,EAAc,CAAS,GAAM,EAAM,SAAW,GAAK,EAAM,KAAO,UAAmB,KAChF,CAAE,UAAW,EAAU,MAAO,aAAY,CACnD,EAEM,GAA0B,EAAkB,IAA0C,CAC1F,GAAI,EAAS,OAAS,KAAO,MAAO,GACpC,IAAM,EAAQ,EAAS,MAAM,GAAG,EAGhC,OAFI,EAAM,KAAO,IAAM,EAAM,KAAO,KAAO,EAAM,KAAO,EAAoB,GACxE,EAAM,SAAW,EAAU,CAAC,WAAY,OAAQ,QAAS,UAAU,CAAC,CAAC,SAAS,EAAM,IAAM,EAAE,EACzF,EAAoB,EAAO,CAAW,IAAM,IACrD,EAGa,GAA4B,CACvC,OACA,WACA,SACA,WAC0C,CAC1C,IAAM,EAAc,EAA2B,CAAW,CAAC,CAAC,EAAS,MAAM,GAAG,CAAC,CAAC,EAAE,EAC5E,EAAS,EAAc,CAAW,EAAI,EAAoB,EAAS,MAAM,GAAG,EAAG,EAAY,KAAK,EAAI,KAC1G,MAAO,CACL,OACA,WACA,SACA,MAAO,IAAW,KAAO,KAAO,EAAwB,EAAO,EAAO,YAAa,EAAO,SAAS,CACrG,CACF,EAGa,GACX,EACA,IACY,CACZ,GAAI,CAAC,EAAuB,EAAO,SAAU,CAAW,GAAK,CAAC,EAAS,EAAO,MAAM,GAAK,CAAC,EAAO,EAAO,IAAI,EAC1G,MAAO,GAET,GAAI,EAAO,QAAU,KAAM,MAAO,GAClC,IAAM,EAAS,EAAoB,EAAO,SAAS,MAAM,GAAG,EAAG,CAAW,EAC1E,OAAO,IAAW,MAAQ,EAAwB,EAAO,MAAO,EAAa,EAAO,SAAS,IAAM,IACrG,EAEM,GACJ,EACA,IACiC,CACjC,IAAM,EAAU,EAA2B,CAA+B,CAAC,CAAC,CAAK,EACjF,GAAI,EAAc,CAAO,EAAG,OAAO,KACnC,IAAM,EAAS,EAAQ,MAAM,aAC7B,OAAO,EAAO,cAAgB,GAAe,EAA4B,EAAO,OAAQ,CAAW,EAC/F,EAAO,OACP,IACN,EAQa,GACX,EACA,EACA,EACA,KAC+B,CAC/B,aAAc,CACZ,KAAM,mBACN,WACA,OAAQ,EAAqB,EAAO,CAAW,IAC5C,EAA4B,EAAQ,CAAW,EAAI,EAAS,EAAe,CAAW,GACzF,aACF,CACF,GAGa,GACX,EACA,EACA,IACkC,CAClC,IAAM,EAAW,EAAe,CAAW,EACrC,EAAU,EAA2B,CAA+B,CAAC,CAAC,CAAK,EACjF,GAAI,EAAc,CAAO,EAAG,MAAO,CAAE,SAAU,GAAO,OAAQ,CAAS,EACvE,IAAM,EAAS,EAAQ,MAAM,aAC7B,OAAO,EAAO,cAAgB,GAC1B,EAAO,WAAa,GACpB,EAA4B,EAAO,OAAQ,CAAW,EACtD,CAAE,SAAU,GAAM,OAAQ,EAAO,MAAO,EACxC,CAAE,SAAU,GAAO,OAAQ,CAAS,CAC1C,EAGa,GAA6B,CACxC,OACA,WACA,YACmC,GAAG,IAAW,IAAS,IAe/C,GACX,EACA,EACA,EACA,EACA,IACW,CACX,IAAM,EAAgB,EAAoB,EAAO,SAAS,MAAM,GAAG,EAAG,CAAW,EAC3E,EAAqB,EAAe,mBACpC,EAAkB,IAAkB,KACtC,EAAe,6BACb,EAAe,WAAW,SAAW,GACrC,EAAe,WAAW,KAAO,GACjC,IAAuB,MACvB,CAAC,EAAmB,IAAI,CAAkB,EAC1C,KACA,EACF,CAAC,EAAe,6BACd,EAAe,WAAW,SAAS,EAAc,SAAS,GAC1D,EAAmB,IAAI,EAAc,SAAS,EAChD,EAAc,UACd,KACJ,GAAI,IAAoB,KACtB,OAAO,EAA2B,EAAa,EAAiB,EAAQ,QAAQ,EAGlF,IAAM,EAAS,EAA8B,EAAQ,QAAQ,EAC7D,GAAI,IAAW,MAAQ,EAAO,cAAgB,EAC5C,OAAO,EAAoB,EAAQ,SAAU,EAAQ,OAAQ,EAAQ,IAAI,EAE3E,IAAM,EAAa,IAAI,gBACrB,EAAO,WAAa,EAA0B,CAAW,EAAI,EAAO,OAAS,EAC/E,EAEA,OADA,EAAW,IAAI,SAAU,EAAO,QAAQ,EACjC,EACL,EAA0B,CAAW,EACrC,IAAI,EAAW,SAAS,IACxB,eACF,CACF"}
@@ -1,2 +1,2 @@
1
- import{n as e,r as t,t as n}from"./index-C7_FDTU7.js";var r=32,i=(e,t)=>!e.defaultPrevented&&e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&(t===``||t===`_self`),a=(i,a)=>{let o=t(i);for(let[t,n]of e){if(!n[3]||!n[2].includes(i.pathname))continue;let r=n[2].includes(a)?n[2]:[...n[2],a];e.set(t,[n[0],n[1],r,!0])}e.delete(o);let s=document.querySelector(n),c=[s?.scrollTop??window.scrollY,s!==null,[a],!1];if(!(c[0]<=2)&&(e.set(o,c),!(e.size<=r)))for(let t of e.keys()){e.delete(t);break}};export{i as n,a as t};
2
- //# sourceMappingURL=workspaceScrollCapture-BsjcWVsk.js.map
1
+ import{n as e,r as t,t as n}from"./index-zVjlBm9l.js";var r=32,i=(e,t)=>!e.defaultPrevented&&e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&(t===``||t===`_self`),a=(i,a)=>{let o=t(i);for(let[t,n]of e){if(!n[3]||!n[2].includes(i.pathname))continue;let r=n[2].includes(a)?n[2]:[...n[2],a];e.set(t,[n[0],n[1],r,!0])}e.delete(o);let s=document.querySelector(n),c=[s?.scrollTop??window.scrollY,s!==null,[a],!1];if(!(c[0]<=2)&&(e.set(o,c),!(e.size<=r)))for(let t of e.keys()){e.delete(t);break}};export{i as n,a as t};
2
+ //# sourceMappingURL=workspaceScrollCapture-BYNfR2wo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceScrollCapture-BsjcWVsk.js","names":[],"sources":["../../../src/client/workspaceScrollCapture.ts"],"sourcesContent":["import type { Location } from \"react-router\"\n\nimport {\n RELEASE_PREVIEW_SCROLL_SELECTOR,\n type SavedWorkspaceScrollPosition,\n savedWorkspaceScrollPositions,\n SCROLL_POSITION_TOLERANCE,\n workspaceScrollRestorationKey\n} from \"./workspaceScrollRestoration.js\"\n\nconst MAXIMUM_SAVED_WORKSPACE_SCROLL_POSITIONS = 32\n\ninterface WorkspaceNavigationClick {\n readonly altKey: boolean\n readonly button: number\n readonly ctrlKey: boolean\n readonly defaultPrevented: boolean\n readonly metaKey: boolean\n readonly shiftKey: boolean\n}\n\n/** Match the same primary, unmodified, same-tab click contract as React Router. */\nexport const shouldRememberWorkspaceScrollPosition = (event: WorkspaceNavigationClick, linkTarget: string): boolean =>\n !event.defaultPrevented &&\n event.button === 0 &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey &&\n (linkTarget === \"\" || linkTarget === \"_self\")\n\n/** Remember the current viewport before opening a canonical entity route. */\nexport const rememberWorkspaceScrollPosition = (\n location: Pick<Location, \"hash\" | \"pathname\" | \"search\">,\n entityPath: string\n): void => {\n const key = workspaceScrollRestorationKey(location)\n for (const [originKey, saved] of savedWorkspaceScrollPositions) {\n if (!saved[3] || !saved[2].includes(location.pathname)) continue\n const entityPaths = saved[2].includes(entityPath) ? saved[2] : [...saved[2], entityPath]\n savedWorkspaceScrollPositions.set(originKey, [saved[0], saved[1], entityPaths, true])\n }\n savedWorkspaceScrollPositions.delete(key)\n const previewScroller = document.querySelector<HTMLElement>(RELEASE_PREVIEW_SCROLL_SELECTOR)\n const savedPosition = [\n previewScroller?.scrollTop ?? window.scrollY,\n previewScroller !== null,\n [entityPath],\n false\n ] satisfies SavedWorkspaceScrollPosition\n if (savedPosition[0] <= SCROLL_POSITION_TOLERANCE) return\n savedWorkspaceScrollPositions.set(key, savedPosition)\n if (savedWorkspaceScrollPositions.size <= MAXIMUM_SAVED_WORKSPACE_SCROLL_POSITIONS) return\n for (const oldestKey of savedWorkspaceScrollPositions.keys()) {\n savedWorkspaceScrollPositions.delete(oldestKey)\n break\n }\n}\n"],"mappings":"sDAUA,IAAM,EAA2C,GAYpC,GAAyC,EAAiC,IACrF,CAAC,EAAM,kBACP,EAAM,SAAW,GACjB,CAAC,EAAM,QACP,CAAC,EAAM,SACP,CAAC,EAAM,SACP,CAAC,EAAM,WACN,IAAe,IAAM,IAAe,SAG1B,GACX,EACA,IACS,CACT,IAAM,EAAM,EAA8B,CAAQ,EAClD,IAAK,GAAM,CAAC,EAAW,KAAU,EAA+B,CAC9D,GAAI,CAAC,EAAM,IAAM,CAAC,EAAM,EAAE,CAAC,SAAS,EAAS,QAAQ,EAAG,SACxD,IAAM,EAAc,EAAM,EAAE,CAAC,SAAS,CAAU,EAAI,EAAM,GAAK,CAAC,GAAG,EAAM,GAAI,CAAU,EACvF,EAA8B,IAAI,EAAW,CAAC,EAAM,GAAI,EAAM,GAAI,EAAa,EAAI,CAAC,CACtF,CACA,EAA8B,OAAO,CAAG,EACxC,IAAM,EAAkB,SAAS,cAA2B,CAA+B,EACrF,EAAgB,CACpB,GAAiB,WAAa,OAAO,QACrC,IAAoB,KACpB,CAAC,CAAU,EACX,EACF,EACI,OAAc,IAAA,KAClB,EAA8B,IAAI,EAAK,CAAa,EAChD,IAA8B,MAAQ,IAC1C,IAAK,IAAM,KAAa,EAA8B,KAAK,EAAG,CAC5D,EAA8B,OAAO,CAAS,EAC9C,KACF,CACF"}
1
+ {"version":3,"file":"workspaceScrollCapture-BYNfR2wo.js","names":[],"sources":["../../../src/client/workspaceScrollCapture.ts"],"sourcesContent":["import type { Location } from \"react-router\"\n\nimport {\n RELEASE_PREVIEW_SCROLL_SELECTOR,\n type SavedWorkspaceScrollPosition,\n savedWorkspaceScrollPositions,\n SCROLL_POSITION_TOLERANCE,\n workspaceScrollRestorationKey\n} from \"./workspaceScrollRestoration.js\"\n\nconst MAXIMUM_SAVED_WORKSPACE_SCROLL_POSITIONS = 32\n\ninterface WorkspaceNavigationClick {\n readonly altKey: boolean\n readonly button: number\n readonly ctrlKey: boolean\n readonly defaultPrevented: boolean\n readonly metaKey: boolean\n readonly shiftKey: boolean\n}\n\n/** Match the same primary, unmodified, same-tab click contract as React Router. */\nexport const shouldRememberWorkspaceScrollPosition = (event: WorkspaceNavigationClick, linkTarget: string): boolean =>\n !event.defaultPrevented &&\n event.button === 0 &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey &&\n (linkTarget === \"\" || linkTarget === \"_self\")\n\n/** Remember the current viewport before opening a canonical entity route. */\nexport const rememberWorkspaceScrollPosition = (\n location: Pick<Location, \"hash\" | \"pathname\" | \"search\">,\n entityPath: string\n): void => {\n const key = workspaceScrollRestorationKey(location)\n for (const [originKey, saved] of savedWorkspaceScrollPositions) {\n if (!saved[3] || !saved[2].includes(location.pathname)) continue\n const entityPaths = saved[2].includes(entityPath) ? saved[2] : [...saved[2], entityPath]\n savedWorkspaceScrollPositions.set(originKey, [saved[0], saved[1], entityPaths, true])\n }\n savedWorkspaceScrollPositions.delete(key)\n const previewScroller = document.querySelector<HTMLElement>(RELEASE_PREVIEW_SCROLL_SELECTOR)\n const savedPosition = [\n previewScroller?.scrollTop ?? window.scrollY,\n previewScroller !== null,\n [entityPath],\n false\n ] satisfies SavedWorkspaceScrollPosition\n if (savedPosition[0] <= SCROLL_POSITION_TOLERANCE) return\n savedWorkspaceScrollPositions.set(key, savedPosition)\n if (savedWorkspaceScrollPositions.size <= MAXIMUM_SAVED_WORKSPACE_SCROLL_POSITIONS) return\n for (const oldestKey of savedWorkspaceScrollPositions.keys()) {\n savedWorkspaceScrollPositions.delete(oldestKey)\n break\n }\n}\n"],"mappings":"sDAUA,IAAM,EAA2C,GAYpC,GAAyC,EAAiC,IACrF,CAAC,EAAM,kBACP,EAAM,SAAW,GACjB,CAAC,EAAM,QACP,CAAC,EAAM,SACP,CAAC,EAAM,SACP,CAAC,EAAM,WACN,IAAe,IAAM,IAAe,SAG1B,GACX,EACA,IACS,CACT,IAAM,EAAM,EAA8B,CAAQ,EAClD,IAAK,GAAM,CAAC,EAAW,KAAU,EAA+B,CAC9D,GAAI,CAAC,EAAM,IAAM,CAAC,EAAM,EAAE,CAAC,SAAS,EAAS,QAAQ,EAAG,SACxD,IAAM,EAAc,EAAM,EAAE,CAAC,SAAS,CAAU,EAAI,EAAM,GAAK,CAAC,GAAG,EAAM,GAAI,CAAU,EACvF,EAA8B,IAAI,EAAW,CAAC,EAAM,GAAI,EAAM,GAAI,EAAa,EAAI,CAAC,CACtF,CACA,EAA8B,OAAO,CAAG,EACxC,IAAM,EAAkB,SAAS,cAA2B,CAA+B,EACrF,EAAgB,CACpB,GAAiB,WAAa,OAAO,QACrC,IAAoB,KACpB,CAAC,CAAU,EACX,EACF,EACI,OAAc,IAAA,KAClB,EAA8B,IAAI,EAAK,CAAa,EAChD,IAA8B,MAAQ,IAC1C,IAAK,IAAM,KAAa,EAA8B,KAAK,EAAG,CAC5D,EAA8B,OAAO,CAAS,EAC9C,KACF,CACF"}
@@ -1,2 +1,2 @@
1
- import{Jn as e,_i as t,ai as n,pi as r,un as i}from"./agent-api-CeONl_8w.js";import{a,t as o}from"./client-DKS82kT_.js";import{n as s,t as c}from"./BrowserCrypto-BMbjhcvP.js";import{t as l}from"./authenticatedMutationClient-DYaieXUe.js";var u={load:e=>t(n(function*(){return yield*(yield*o()).workspaceSettings.readPresentation()}).pipe(r(a)),{signal:e})},d={load:e=>t(n(function*(){return yield*(yield*o()).workspaceSettings.read()}).pipe(r(a)),{signal:e}),makeMutationId:()=>t(n(function*(){let t=yield*s;return yield*e(i)(yield*t.randomUUIDv7)}).pipe(r(c))),update:(e,i)=>t(n(function*(){return yield*(yield*l).workspaceSettings.update({payload:e})}).pipe(r(a)),{signal:i})};export{u as browserWorkspacePresentationTransport,d as browserWorkspaceSettingsTransport};
2
- //# sourceMappingURL=workspaceSettingsTransport-Dw2hueXv.js.map
1
+ import{Kn as e,_i as t,ai as n,pi as r,un 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={load:e=>t(n(function*(){return yield*(yield*o()).workspaceSettings.readPresentation()}).pipe(r(a)),{signal:e})},d={load:e=>t(n(function*(){return yield*(yield*o()).workspaceSettings.read()}).pipe(r(a)),{signal:e}),makeMutationId:()=>t(n(function*(){let t=yield*s;return yield*e(i)(yield*t.randomUUIDv7)}).pipe(r(c))),update:(e,i)=>t(n(function*(){return yield*(yield*l).workspaceSettings.update({payload:e})}).pipe(r(a)),{signal:i})};export{u as browserWorkspacePresentationTransport,d as browserWorkspaceSettingsTransport};
2
+ //# sourceMappingURL=workspaceSettingsTransport-Br4lBmvS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceSettingsTransport-Dw2hueXv.js","names":[],"sources":["../../../src/client/settings/workspaceSettingsTransport.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 UpdateWorkspaceSettingsRequest,\n WorkspacePresentationReadModel,\n WorkspaceSettingsReadModel\n} from \"../../api/workspaceSettings.js\"\nimport { WorkspaceSettingsMutationId } from \"../../domain/identifiers.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Browser boundary for authenticated settings reads and owner-authorized mutations. */\nexport interface WorkspaceSettingsTransport {\n readonly load: (signal: AbortSignal) => Promise<WorkspaceSettingsReadModel>\n readonly makeMutationId: () => Promise<WorkspaceSettingsMutationId>\n readonly update: (\n request: UpdateWorkspaceSettingsRequest,\n signal: AbortSignal\n ) => Promise<WorkspaceSettingsReadModel>\n}\n\n/** Browser boundary for collaborator-safe presentation defaults. */\nexport interface WorkspacePresentationTransport {\n readonly load: (signal: AbortSignal) => Promise<WorkspacePresentationReadModel>\n}\n\n/** Generated API transport exposing only shared presentation settings. */\nexport const browserWorkspacePresentationTransport: WorkspacePresentationTransport = {\n load: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.workspaceSettings.readPresentation()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\n/** Generated API transport with a retry-stable UUIDv7 mutation identity. */\nexport const browserWorkspaceSettingsTransport: WorkspaceSettingsTransport = {\n load: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.workspaceSettings.read()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeMutationId: () =>\n Effect.runPromise(\n Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n return yield* Schema.decodeUnknownEffect(\n WorkspaceSettingsMutationId\n )(yield* cryptoService.randomUUIDv7)\n }).pipe(Effect.provide(BrowserCrypto.layer))\n ),\n update: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.workspaceSettings.update({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n"],"mappings":"6OA+BA,IAAa,EAAwE,CACnF,KAAO,GACL,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,kBAAkB,iBAAiB,CAC1D,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ,EAGa,EAAgE,CAC3E,KAAO,GACL,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,kBAAkB,KAAK,CAC9C,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,EACF,mBACE,EACE,EAAW,WAAY,CACrB,IAAM,EAAgB,MAAO,EAC7B,OAAO,MAAO,EACZ,CACF,CAAC,CAAC,MAAO,EAAc,YAAY,CACrC,CAAC,CAAC,CAAC,KAAK,EAAe,CAAmB,CAAC,CAC7C,EACF,QAAS,EAAS,IAChB,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAAA,CACD,kBAAkB,OAAO,CAAE,QAAS,CAAQ,CAAC,CACpE,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ"}
1
+ {"version":3,"file":"workspaceSettingsTransport-Br4lBmvS.js","names":[],"sources":["../../../src/client/settings/workspaceSettingsTransport.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 UpdateWorkspaceSettingsRequest,\n WorkspacePresentationReadModel,\n WorkspaceSettingsReadModel\n} from \"../../api/workspaceSettings.js\"\nimport { WorkspaceSettingsMutationId } from \"../../domain/identifiers.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Browser boundary for authenticated settings reads and owner-authorized mutations. */\nexport interface WorkspaceSettingsTransport {\n readonly load: (signal: AbortSignal) => Promise<WorkspaceSettingsReadModel>\n readonly makeMutationId: () => Promise<WorkspaceSettingsMutationId>\n readonly update: (\n request: UpdateWorkspaceSettingsRequest,\n signal: AbortSignal\n ) => Promise<WorkspaceSettingsReadModel>\n}\n\n/** Browser boundary for collaborator-safe presentation defaults. */\nexport interface WorkspacePresentationTransport {\n readonly load: (signal: AbortSignal) => Promise<WorkspacePresentationReadModel>\n}\n\n/** Generated API transport exposing only shared presentation settings. */\nexport const browserWorkspacePresentationTransport: WorkspacePresentationTransport = {\n load: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.workspaceSettings.readPresentation()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n\n/** Generated API transport with a retry-stable UUIDv7 mutation identity. */\nexport const browserWorkspaceSettingsTransport: WorkspaceSettingsTransport = {\n load: (signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.workspaceSettings.read()\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeMutationId: () =>\n Effect.runPromise(\n Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n return yield* Schema.decodeUnknownEffect(\n WorkspaceSettingsMutationId\n )(yield* cryptoService.randomUUIDv7)\n }).pipe(Effect.provide(BrowserCrypto.layer))\n ),\n update: (request, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.workspaceSettings.update({ payload: request })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n"],"mappings":"6OA+BA,IAAa,EAAwE,CACnF,KAAO,GACL,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,kBAAkB,iBAAiB,CAC1D,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ,EAGa,EAAgE,CAC3E,KAAO,GACL,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAA2B,EAAA,CAC5B,kBAAkB,KAAK,CAC9C,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,EACF,mBACE,EACE,EAAW,WAAY,CACrB,IAAM,EAAgB,MAAO,EAC7B,OAAO,MAAO,EACZ,CACF,CAAC,CAAC,MAAO,EAAc,YAAY,CACrC,CAAC,CAAC,CAAC,KAAK,EAAe,CAAmB,CAAC,CAC7C,EACF,QAAS,EAAS,IAChB,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAAA,CACD,kBAAkB,OAAO,CAAE,QAAS,CAAQ,CAAC,CACpE,CAAC,CAAC,CAAC,KAAK,EAAe,CAAqB,CAAC,EAC7C,CAAE,QAAO,CACX,CACJ"}
@@ -23,6 +23,7 @@
23
23
  "src/domain/plugins/actions.ts",
24
24
  "src/domain/prReview.ts",
25
25
  "src/domain/prReviewRevision.ts",
26
+ "src/domain/sourceRevision.ts",
26
27
  "src/domain/utcTimestamp.ts",
27
28
  "src/api/errors.ts",
28
29
  "src/api/portfolio.ts",
@@ -266,11 +267,16 @@
266
267
  "npm:react/index.js",
267
268
  "npm:react-router/dist/production/index.js",
268
269
  "src/domain/releasePublication.ts",
270
+ "src/domain/sourceRevision.ts",
271
+ "src/client/BrowserSession.tsx",
269
272
  "src/client/contextualAgentPath.ts",
273
+ "src/client/entities/presentWorkspaceConfluencePage.ts",
274
+ "src/client/entities/useWorkspaceEntity.ts",
270
275
  "src/client/portfolio/PortfolioOverview.tsx",
271
276
  "src/client/releases/releaseRoutes.ts",
272
277
  "src/client/items/workspaceEntityRoutes.ts",
273
278
  "src/client/releases/releaseAgentThreadStorage.ts",
279
+ "src/client/releases/confluenceTemplateTransport.ts",
274
280
  "src/client/releases/releaseAgentTransport.ts",
275
281
  "src/client/AgentPage.module.css",
276
282
  "npm:react/jsx-runtime.js"
@@ -600,6 +606,22 @@
600
606
  ],
601
607
  "isEntry": false
602
608
  },
609
+ {
610
+ "dynamicImports": [],
611
+ "id": "src/client/entities/useOpenConfluenceSynchronization.ts",
612
+ "imports": [
613
+ "npm:@effect/platform-browser/dist/BrowserCrypto.js",
614
+ "npm:effect/dist/Clock.js",
615
+ "npm:effect/dist/Crypto.js",
616
+ "npm:effect/dist/Effect.js",
617
+ "npm:effect/dist/Predicate.js",
618
+ "npm:effect/dist/Result.js",
619
+ "npm:effect/dist/Schema.js",
620
+ "npm:react/index.js",
621
+ "src/client/services/connectionTestTransport.ts"
622
+ ],
623
+ "isEntry": false
624
+ },
603
625
  {
604
626
  "dynamicImports": [
605
627
  "src/client/entities/pullRequestReviewThreadReplay.ts"
@@ -691,6 +713,21 @@
691
713
  "workspace:rly/dist/patterns/index.js",
692
714
  "workspace:rly/dist/primitives/index.js",
693
715
  "npm:react/index.js",
716
+ "src/client/entities/WorkspaceConfluencePageDetails.module.css",
717
+ "src/client/entities/WorkspaceConfluenceVisualEditor.tsx",
718
+ "npm:react/jsx-runtime.js"
719
+ ],
720
+ "isEntry": false
721
+ },
722
+ {
723
+ "dynamicImports": [],
724
+ "id": "src/client/entities/WorkspaceConfluenceVisualEditor.tsx",
725
+ "imports": [
726
+ "workspace:rly/dist/primitives/index.js",
727
+ "npm:react/index.js",
728
+ "src/domain/confluenceTasks.ts",
729
+ "src/domain/sourceRevision.ts",
730
+ "src/client/releases/releaseAgentTransport.ts",
694
731
  "src/client/entities/WorkspaceRichText.tsx",
695
732
  "src/client/entities/WorkspaceConfluencePageDetails.module.css",
696
733
  "npm:react/jsx-runtime.js"
@@ -724,6 +761,7 @@
724
761
  "workspace:rly/dist/foundations/index.js",
725
762
  "workspace:rly/dist/patterns/index.js",
726
763
  "workspace:rly/dist/primitives/index.js",
764
+ "npm:effect/dist/DateTime.js",
727
765
  "npm:react/index.js",
728
766
  "npm:react-router/dist/production/index.js",
729
767
  "src/client/BrowserSession.tsx",
@@ -733,6 +771,7 @@
733
771
  "src/client/entities/WorkspaceEntityRoute.module.css",
734
772
  "src/client/entities/WorkspaceClockifyTimeEntryDetails.tsx",
735
773
  "src/client/entities/useClockifyActionSubmission.ts",
774
+ "src/client/entities/useOpenConfluenceSynchronization.ts",
736
775
  "src/client/entities/WorkspaceConfluencePageDetails.tsx",
737
776
  "src/client/entities/WorkspaceIssueDetails.tsx",
738
777
  "src/client/entities/WorkspacePipelineExecutionDetails.tsx",
@@ -1118,6 +1157,16 @@
1118
1157
  ],
1119
1158
  "isEntry": false
1120
1159
  },
1160
+ {
1161
+ "dynamicImports": [],
1162
+ "id": "src/client/releases/confluenceTemplateTransport.ts",
1163
+ "imports": [
1164
+ "npm:effect/dist/Predicate.js",
1165
+ "src/client/entities/useWorkspaceEntity.ts",
1166
+ "src/client/items/useWorkspaceItems.ts"
1167
+ ],
1168
+ "isEntry": false
1169
+ },
1121
1170
  {
1122
1171
  "dynamicImports": [],
1123
1172
  "id": "src/client/releases/loadReleaseEnvironmentSlices.ts",
@@ -1128,6 +1177,9 @@
1128
1177
  "dynamicImports": [],
1129
1178
  "id": "src/client/releases/presentReleaseWorkset.ts",
1130
1179
  "imports": [
1180
+ "src/domain/confluenceTasks.ts",
1181
+ "src/domain/releasePipelineApproval.ts",
1182
+ "src/client/entities/presentWorkspacePipelineExecution.ts",
1131
1183
  "src/client/workspaceEntityPaths.ts"
1132
1184
  ],
1133
1185
  "isEntry": false
@@ -1613,6 +1665,37 @@
1613
1665
  ],
1614
1666
  "isEntry": false
1615
1667
  },
1668
+ {
1669
+ "dynamicImports": [],
1670
+ "id": "src/client/settings/BrowserSessionsPanel.module.css",
1671
+ "imports": [],
1672
+ "isEntry": false
1673
+ },
1674
+ {
1675
+ "dynamicImports": [],
1676
+ "id": "src/client/settings/BrowserSessionsPanel.tsx",
1677
+ "imports": [
1678
+ "workspace:rly/dist/primitives/index.js",
1679
+ "npm:effect/dist/DateTime.js",
1680
+ "npm:effect/dist/Predicate.js",
1681
+ "npm:react/index.js",
1682
+ "src/client/settings/BrowserSessionsPanel.module.css",
1683
+ "src/client/settings/browserSessionTransport.ts",
1684
+ "npm:react/jsx-runtime.js"
1685
+ ],
1686
+ "isEntry": false
1687
+ },
1688
+ {
1689
+ "dynamicImports": [],
1690
+ "id": "src/client/settings/browserSessionTransport.ts",
1691
+ "imports": [
1692
+ "npm:effect/dist/Effect.js",
1693
+ "npm:effect/dist/unstable/http/FetchHttpClient.js",
1694
+ "src/api/client.ts",
1695
+ "src/client/authenticatedMutationClient.ts"
1696
+ ],
1697
+ "isEntry": false
1698
+ },
1616
1699
  {
1617
1700
  "dynamicImports": [
1618
1701
  "src/client/settings/workspaceSettingsTransport.ts"
@@ -1668,6 +1751,7 @@
1668
1751
  "src/domain/workspaceSettings.ts",
1669
1752
  "src/client/AppProviders.tsx",
1670
1753
  "src/client/BrowserSession.tsx",
1754
+ "src/client/settings/BrowserSessionsPanel.tsx",
1671
1755
  "src/client/settings/WorkspaceSettingsPage.module.css",
1672
1756
  "src/client/settings/useWorkspaceSettings.ts",
1673
1757
  "src/client/settings/workspaceSettingsTransport.ts",
@@ -1813,6 +1897,14 @@
1813
1897
  ],
1814
1898
  "isEntry": false
1815
1899
  },
1900
+ {
1901
+ "dynamicImports": [],
1902
+ "id": "src/domain/confluenceTasks.ts",
1903
+ "imports": [
1904
+ "npm:effect/dist/Schema.js"
1905
+ ],
1906
+ "isEntry": false
1907
+ },
1816
1908
  {
1817
1909
  "dynamicImports": [],
1818
1910
  "id": "src/domain/deliveryGraph.ts",
@@ -2098,6 +2190,12 @@
2098
2190
  ],
2099
2191
  "isEntry": false
2100
2192
  },
2193
+ {
2194
+ "dynamicImports": [],
2195
+ "id": "src/domain/releasePipelineApproval.ts",
2196
+ "imports": [],
2197
+ "isEntry": false
2198
+ },
2101
2199
  {
2102
2200
  "dynamicImports": [],
2103
2201
  "id": "src/domain/releasePublication.ts",
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="color-scheme" content="light dark" />
7
7
  <title>Control Center</title>
8
- <script type="module" crossorigin src="/assets/index-C7_FDTU7.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-zVjlBm9l.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/react-CZI7_Jkm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/react-dom-cJyBB_A4.js">
@@ -100,6 +100,12 @@ export declare const SubmitReleasePublicationRequest: Schema.Struct<{
100
100
  readonly markdown: Schema.String;
101
101
  readonly parentId: Schema.NullOr<Schema.String>;
102
102
  readonly publicationActionId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "GovernedActionId">>;
103
+ /** Exact synchronized Confluence page selected before its first governed release update. */
104
+ readonly targetEntityId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "EntityId">>;
105
+ /** Revision displayed to the owner before an exact-page update is submitted. */
106
+ readonly targetRevision: Schema.optionalKey<Schema.brand<Schema.String, "Revision">>;
107
+ /** Existing synchronized Confluence page copied into a new release-owned page. */
108
+ readonly templateEntityId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "EntityId">>;
103
109
  }>;
104
110
  export type SubmitReleasePublicationRequest = typeof SubmitReleasePublicationRequest.Type;
105
111
  export declare const SubmitReleasePublicationResponse: Schema.Struct<{
@@ -2469,6 +2475,12 @@ declare const AgentApiGroup_base: HttpApiGroup.HttpApiGroup<"agent", HttpApiEndp
2469
2475
  readonly markdown: Schema.String;
2470
2476
  readonly parentId: Schema.NullOr<Schema.String>;
2471
2477
  readonly publicationActionId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "GovernedActionId">>;
2478
+ /** Exact synchronized Confluence page selected before its first governed release update. */
2479
+ readonly targetEntityId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "EntityId">>;
2480
+ /** Revision displayed to the owner before an exact-page update is submitted. */
2481
+ readonly targetRevision: Schema.optionalKey<Schema.brand<Schema.String, "Revision">>;
2482
+ /** Existing synchronized Confluence page copied into a new release-owned page. */
2483
+ readonly templateEntityId: Schema.optionalKey<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "EntityId">>;
2472
2484
  }>>, never, Schema.toCodecJson<Schema.Struct<{
2473
2485
  readonly actionId: Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "GovernedActionId">;
2474
2486
  readonly state: Schema.Literals<readonly ["proposed", "authorized", "denied", "expired", "cancelled", "started", "cancel-requested", "cancel-requested-unknown", "succeeded", "failed", "unknown"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/api/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/api/agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAA;AAsBtF,OAAO,EAEL,0BAA0B,EAI3B,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAUrE,gFAAgF;AAChF,eAAO,MAAM,mCAAmC,OAAQ,CAAA;AAKxD,mEAAmE;AACnE,eAAO,MAAM,WAAW,eAIvB,CAAA;AAED,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAQjD,oDAAoD;AACpD,eAAO,MAAM,aAAa,+CAAuC,CAAA;AAEjE,iDAAiD;AACjD,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,uDAElC,CAAA;AAED,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAEvE,+EAA+E;AAC/E,eAAO,MAAM,YAAY,6CAIW,CAAA;AAEpC,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,6BAA8B,CAAA;AAE3D,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,qDAKW,CAAA;AAE5C,6CAA6C;AAC7C,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,kDAAkD;AAClD,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,2DAAmD,CAAA;AAEnF,wCAAwC;AACxC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,yDAAiD,CAAA;AAErF,kDAAkD;AAClD,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,sEAAsE;AACtE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;EAkBpC,CAAA;AAEF,mDAAmD;AACnD,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE7E,oEAAoE;AACpE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAU/B,CAAA;AAEF,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,eAG9B,CAAA;AAED,4CAA4C;AAC5C,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,+CAAgB,CAAA;AAEjD,sCAAsC;AACtC,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAA;AAEhD,qFAAqF;AACrF,eAAO,MAAM,0BAA0B,kDAA0C,CAAA;AACjF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA;AAE/E,eAAO,MAAM,+BAA+B;;;;;;IAQ1C,4FAA4F;;IAE5F,gFAAgF;;IAEhF,kFAAkF;;EAElF,CAAA;AACF,MAAM,MAAM,+BAA+B,GAAG,OAAO,+BAA+B,CAAC,IAAI,CAAA;AAEzF,eAAO,MAAM,gCAAgC;;;EAG3C,CAAA;AACF,MAAM,MAAM,gCAAgC,GAAG,OAAO,gCAAgC,CAAC,IAAI,CAAA;AAE3F,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB;;;EAGyB,CAAA;AAEzD,wCAAwC;AACxC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,kFAAkF;AAClF,eAAO,MAAM,0BAA0B;;;EAAsB,CAAA;AAE7D,wCAAwC;AACxC,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,CAAA;AAa5D,gEAAgE;AAChE,eAAO,MAAM,uBAAuB;;;;;;;;EAWkB,CAAA;AAEtD,2CAA2C;AAC3C,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUiB,CAAA;AAEtD,4CAA4C;AAC5C,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAE3E,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,sDAEW,CAAA;AAEhD,6CAA6C;AAC7C,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAE3E,gFAAgF;AAChF,eAAO,MAAM,kCAAkC,gIAE9C,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,sCAAsC,0DAKlD,CAAA;AAsDD,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUC,CAAA;AAErC,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B;;;;;EAKxC,CAAA;AAEF,qDAAqD;AACrD,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC,IAAI,CAAA;AAErF,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B;;;;EAIkB,CAAA;AAE7D,sDAAsD;AACtD,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAA;AAEvF,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B;;;;;;EAW1C,CAAA;AAEF,6DAA6D;AAC7D,MAAM,MAAM,+BAA+B,GAAG,OAAO,+BAA+B,CAAC,IAAI,CAAA;;;;AAiCzF,uEAAuE;AACvE,qBAAa,4BAA6B,SAAQ,iCAQhD;CAAG;;;;;;;;;;AAEL,qEAAqE;AACrE,qBAAa,2BACX,SAAQ,gCAA2F;CACnG;;;;;;;;;;;;AAEF,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,2BAI1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,0DAA0D;AAC1D,qBAAa,wBAAyB,SAAQ,6BAG5C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,kFAAkF;AAClF,qBAAa,0BAA2B,SAAQ,+BAK9C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,6EAA6E;AAC7E,qBAAa,uBAAwB,SAAQ,4BAQ3C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,uFAAuF;AACvF,qBAAa,4BAA6B,SAAQ,iCAIhD;CAAG;AAEL,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,0RAQE,CAAA;AAErC,iDAAiD;AACjD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AA8FvE,gFAAgF;AAChF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAaJ,CAAA;AACrC,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC,IAAI,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAC,IAAI,CAAA;AAEjF,iFAAiF;AACjF,eAAO,MAAM,gCAAgC,iCAA2B,CAAA;AAExE,2CAA2C;AAC3C,MAAM,MAAM,gCAAgC,GAAG,OAAO,gCAAgC,CAAC,IAAI,CAAA;AAE3F,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAItC,CAAA;AAEF,sCAAsC;AACtC,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAC,IAAI,CAAA;AAEjF,gFAAgF;AAChF,eAAO,MAAM,6BAA6B;;;;;;;;;EAWxC,CAAA;AAEF,gDAAgD;AAChD,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC,IAAI,CAAA;AAErF,oCAAoC;AACpC,eAAO,MAAM,8BAA8B,iCAA2B,CAAA;AAEtE,4CAA4C;AAC5C,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAA;AAEvF,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,mCAA6B,CAAA;AAEtE,6CAA6C;AAC7C,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC,IAAI,CAAA;AAEnF,wEAAwE;AACxE,eAAO,MAAM,8BAA8B;;;;EAIzC,CAAA;AAEF,uCAAuC;AACvC,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAA;AAEvF,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,mCAA6B,CAAA;AAEzE,wCAAwC;AACxC,MAAM,MAAM,+BAA+B,GAAG,OAAO,+BAA+B,CAAC,IAAI,CAAA;AAEzF,4EAA4E;AAC5E,eAAO,MAAM,0CAA0C,0IAEtD,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,0CAA0C,0IAEtD,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,4BAA4B;;;;;EAAiC,CAAA;AAE1E,wCAAwC;AACxC,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC,IAAI,CAAA;AAEnF,4EAA4E;AAC5E,eAAO,MAAM,oDAAoD,QAAS,CAAA;AAE1E,eAAO,MAAM,kCAAkC,eAI9C,CAAA;AAED,4CAA4C;AAC5C,MAAM,MAAM,kCAAkC,GAAG,OAAO,kCAAkC,CAAC,IAAI,CAAA;AAE/F,mFAAmF;AACnF,eAAO,MAAM,oCAAoC,yDAAiD,CAAA;AAElG,yCAAyC;AACzC,MAAM,MAAM,oCAAoC,GAAG,OAAO,oCAAoC,CAAC,IAAI,CAAA;AAEnG,kEAAkE;AAClE,eAAO,MAAM,oCAAoC;;;;EAI/C,CAAA;AAEF,uDAAuD;AACvD,MAAM,MAAM,oCAAoC,GAAG,OAAO,oCAAoC,CAAC,IAAI,CAAA;AAEnG,uEAAuE;AACvE,eAAO,MAAM,4BAA4B;;;EAGvC,CAAA;AAEF,qDAAqD;AACrD,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC,IAAI,CAAA;AAEnF,4FAA4F;AAC5F,eAAO,MAAM,2CAA2C,4EAIW,CAAA;AAEnE,qDAAqD;AACrD,MAAM,MAAM,2CAA2C,GAAG,OAAO,2CAA2C,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjH,gFAAgF;AAChF,qBAAa,kCACX,SAAQ,uCA8BN;CACF;AAEF,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B;;;;;;;;EAMzC,CAAA;AAEF,mEAAmE;AACnE,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKrF,0EAA0E;;;AAH5E,+EAA+E;AAC/E,qBAAa,sBAAuB,SAAQ,2BAgB1C;CAAG;AAEL,mDAAmD;AACnD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQkB,CAAA;AAErD,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IArnBrE,4FAA4F;;IAE5F,gFAAgF;;IAEhF,kFAAkF;;;;;;AA+8BpF,0EAA0E;AAC1E,qBAAa,aAAc,SAAQ,kBAiBT;CACxB"}